From ebe8304566b936682f64f1c58571ade6fa0aa252 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Wed, 17 Apr 2019 17:08:01 -0700 Subject: [PATCH] Updated to MeshCommander 0.7.5 --- agents/MeshCmd-signed.exe | Bin 3466336 -> 5163872 bytes agents/MeshCmd64-signed.exe | Bin 3442784 -> 5140320 bytes agents/meshcmd.js | 26 +- agents/meshcmd.min.js | 2 +- public/commander.htm | 2311 +++++++++++++++++++---------------- 5 files changed, 1267 insertions(+), 1072 deletions(-) diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index 9400b575844f1e8b9583c1ba7a03945e2d8d6543..4856ae35af0d0217993501c9327983dbc6f0b5ec 100644 GIT binary patch delta 2247383 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

II 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

-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%0Dw?^ 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 v#C9+=PwP&>fdVn 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%0Dr4ff4D~mdzejvxilaS}^&;iM@f- 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�<%!3{3unSjN?wJ@uo&rw(uiVE)q*q$CobZZT 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%0A8Mgq{Dx z(Ph2G9x&;QB-QYRIaCPPG ztCE{Pq8o9?4)F7}T@H;vs%_T-F3qwvhzG0wFoFh2|L;!estt&63VxXU=KlG?jdggX z?)G^0@i(jVqrF2TbQrWGEV(}g;nS+u{V3|JfOeiLfJOk}8G3a;_wD*r{Wj=&9$Bk= ze1QaDShI}=*{2b(zCDAu5IY846aCNOwBF6pQc@o5T=@U|d)!jfjs<%T1+wbsCG3L6 zigwbtTP{m;6=U5_Qfr4k%mc)GdFiB_GYTkG;FcZ$EJJ@mceK8^%5GfIE~Lb9{=1yl zjmj%49Dej2bFNUqapAEWC!bpjRxT*VW#jwr>Bzo4Tsgn;#PDsTAyqyXqN7<`c>HmI zB)YY3A-Y++JceCZ<)F&t*Nd%--CJQdtGJzPVeKeF`Q8ReWsJqldYmG^47M1DKAxy=p3zgJO`+-Y(_0(@o<|^I;+F}s5>v(uKkNUJ=1#CQvrfe3eaRPhn4?T zVhFaGD?ETHYeo~tTxlSYJHuoHDeofa^$ZsA@-=U=zD)Ne@apEy+zrD{?>6t}m%wxY z8<^rnRpgtC4o2!$!}iYHkNj#KtJXXcc|28ic_w>2PLk)>313}&b%mRx?})CjoIyrM zE*@<+@ZrU}W;1F`6#y0MUZIFu*b;!}%6xc9G==X>V_Q0RP3IA*RB_b%CiU{^M32*7 z8Jz0Mt%_A}dtMd>EvtTgS9@#(HqQfQ&2Py-m?VFz(9F^{6>0~0uKekic|9* zo*w>!F|+twp@m<-fCgiuiaYb2o$a=E0Gr>ldH|=Rx2Q#I(Z%;t>p!Ns<&D!%em}Jm zR}8F5ZjePInn|^>E0auY#_&6$APcplAX$^#C7pVd(I`f28XUc4G&1gBwjYclHJV&~ zcU!)Ln2oAF8Ew9h7(>n0-yBUHnU3FY8wJ*I?UXrkdtGR*L~Pcz;V+SaZ& z3(cu&1*g_KH+7UA##QF=zOP>m|HAIWy!ruTmgWE1*15TL;xIR+ z7S?ExfhD%_Z{_44gce6+^*zihC%9MlUN5Sb(6yT}56N6Ip(o=kN7c|I*y?%h3kb&S zS$K#Akd3Ptx7L`8)>`xowAT(O9_jST&Ixzw7UwIX@oQ}J zO6?jq$-*R0p8sRy&1#j4j14w14A-~r6bojPc?FRr9wD#MiPy(ig-aUMI7de=dtob7 zH)0DDng*0($13@$P?4H{M$%t&Edq$uG4ss5w(IKmx*>pd1WOssy%SvZnaJ{?KVuCC zH-Jp?lEqkGA<3JvO!qKv$mPa&lZ$Lr9gg=b?zf`1V&e=V*5lxjr2R&Li^y>Rqr{(G zQ&K@dPst31M(mGuc>H*N%DoQ%e=w_xhvx*19VoZk5)JH> z3YzdM%(G%N^j_(FWG8~M+2}-!J;cv6!>ycsI4T!R{TX+=jW#@^RSZHDjf!QA5k?90 z#Do%08XtgeJQ1u1(wnJn&5|Xv`Y|h38nF)x=EBX?uBer3F=|{bU^R!OntG{{Ix+C1 z>k_?}ltA#tHX)*NxstHys-^)TxzbsN$^a+n4bIwC@F@d<>T28~C*$cfhX4T#8IOqT z%fvn_Jl})tRO?LpvXKMAb236T!EGM8>zyD{Lq6vh$bN|=E8=@1_h!7j&Ur$d;OLo? z?x1pzDLga*Q+0f>j%2;vy5{o&t2^D^TtY-|HIu>p|M24;_cwgQe{C{I z>~A~&xcTpW@tai~tDseGt z3Iokdj&PhO&eN7!fSBo-IobxIb~P(IK?TuYHP=+7Aj$g*=N}j1R+NjPY`P-1*@bU%v?tj;etychX0-_;|>EvKS-4}S*7bR(MoEZPz{_A<^1{bhl1 z%Hb+7%=y#TQ@slTveJQui&im>cYllPHg^dEdkcj@@ujtg{q6h(Z{W{=wm#PFqjj<6 zmRXyq#Nr!!`e=MNnH~NeS0Y{DQ*%F)qX4sxz--i+MXsU~6H&0AEo)ES4 za;GOMyXql;o16Q4XtLA!9iW>wSY+!BH)F7Lw-ZPk*&Q&9Wt)MGKA5Ly@?f;ObO#yZ zF|fbt(h|;b`$puPQztFb4`LwX1Wr^)V6T;@pjz|2*o27iAoC+5O_omq7G(hp z86u&5D2{#V30NJDvfTMqDk~VBN;sIq!?_zKVZP+ecth0_Sc`C?qqX2yZ|=0FAK1kc z22u(nC-e+4uR%r@xwEqz)jdOIoto5F%DpsNT5!qwN;S9~a|`C=1icm#5^f>1JCGn)PnNv&R!z%=!IGP&1X58afKR9uSfx7TB7#7jGv0`M=@7u& z1KSuL1RyG9w9Aj{C_+D)-oTgw6B$dWv|8LM7sUa{u7Zti$ zf^jwMZjY^Y;$nNoG9A8Cdqd>JX50jxE!1=%@JLE)qtcZ-otv(`sT2s#VcaUE3wwJf z0z1gu#Wx(5Zy2||e7ibN#(?We92~&-;j8d+l!Bt4CDB^xlH>sE)DI(eM_ul)kKkNg zT)LgK$X*y2%LH_X2p5;`YM(2PZ7ZnmtuUCjKRsWKg4rFyXys69ADe_;DHmli!o|cVGOt6`88Q!~`Cv^h z1;--2Ou9I1e{E;V9a(hw87%s&-?bfGXHo=hIR_^yWFpSfH4Ds-L86(m5(QB|#+~(r zE~$uOgc^oT+;^y5JNL9hZmx?nPebOC8@%I&+9?QQGIk8psTknI-X?!Ozj^)<3|fae7rAaY9?Knk%Gn2Y zlPfBXSfP{S8-vajW>Wo#ZO!czl#hxgf*o*nTQ3EYza}Rke4z37EIj@_wTI@8^>9#T z-wp5q;8Xo@Xk*FT=dj9;N)&U3zNr=&=?=_so+JzKZv3H14`djdOtUGg_&HzbT^BGM z^=|WHZKp^_U^!1H8C0-h!fX0}w@swe=DZO;w&~^ZLL}llG14@IlecMn##rI}O+t>t zZV@kGV-FbiaEWfX-=HWK6VEPtO_O%R=QCv57*BIT5kAcI>bc#wswmD4ab2@jo zaYl3kp*9OjTN{7q&4U1i?kt*a!uRkY8{gw-RVH@#7IV7;V1ZEck{a}|M2N->a{X`K zZQQ=puEPRul)pe<>o%mt@b}VWwg7iZ?LL32>4?}1_mrc+X>JCArX1J!62u!^;n^AO zFk>9UD8OY}HB0^Oem^dfc}S%nXA4briLU#H$cM_kqrg!{B;^(Ob6xfN@m|bYTwzDi z=~Yd^%l8$-W9O=B>WkynYYQN`hD+^1zs(4z^Vz<;+#0bOG$YvI=Fa}Zt3?8pON}mY z=f&Q};2*Prw1Jo0^|**k;r-JoyFi5N2Hf(GA3hYBylt z!!KoHt#KZF7f-slHA~|#406=127_*&Qt+<_@>(pIxJE60r60Ds)2JxqCkDYQ5fMDv z4k~=DWh&WC^+ZPlLl&B;x%Zl3$kD8Ju1OI;|6}vQ|C)ZBy>-^{TDU+4rIgvVbF*|P z9I7}iWLK=u&fu@AORrdZnyt1 z*KN7~Q!A)LE)J>kqq+5hIq=8<3vt{?t{2b^tpUrO837u?`)xrXYp3nsss^l9NLx}(3~6_>>}*o;c$0EFl*kh zl#u-f{vV@6Eki%ye3nl1P!x~ylJfoV3kXbh27?{sMK&Bf_fGyGZ)^HIxLh+#kPvY7 zPJV^y3s=V!(F*RtgxiknZC3UL#pasv>Qb&CQ?@$YhUQixI9kl;)}rFLAP1QAS&Q`y zbb`kOdv73?yeXc0k6=>=X}$o3m6d>FZ_|hh?a`g#{c`(a*cSzfMl5vS5(-9!@)@gs^0at!|Jp z1w7ac5jj`EIZP8?+S?$@D5`$cVCtj6b?&cv9%qrYf1gWhl9%Ocr7rnvfweV zhi)BLIy6D$w@~YEm!kKp!zs2^vo_=zBjvFMSw>6Mex!{B#~2=n4~SxOp|4)u&%Z}< zWlS`o*N#Khjq8K2Z}*zu0$Yx1)x#zfI-?upvXe%p+|2ZRIBQp0SkM(TDC(H9Q?~uq z^?}^HsdkmlyHqe~0aKkBgwn26A*A}^r0Q7qoAr1dS zSDzhS(vRfmbgoBG@zjOXFC)l8wPp5}gLi}#+;V?VyJTCN1648aXc!n$%0`B zHqMNeg8BE92((Y7i}gWtwD8*-hIkNA%rHd?R77vB5&~+^c`$g8c{=t(B|7Ry)?<9D zv|I;Ir?8kSp?I1)=ct&h9Cdk6y+3x&p-?ELMhT0AU{xc(H^sH-ByE+uusw`Y#MGAM z#OK4zhDMnb1%W4MG3bXrxdcbUM_VjZojtO);TprV4_lP@zv?^X{iSX9Z2jl^dOH+27p+2xj$XqJpab*m6e| z+k9y*|5&Tj+3NT5m%?|@n%P_Sa4c!kQqT%b>g7UFmE*EQ1?WL0ejd4+JIt;;-Vt`4 zseilJYrK_!UewfcD3H!qE*q7)=F5MN)-$KnJn5j2Dw$sti0a11u2VKXg~?3kT)YJ@ z5pBe$1|GV)*VupNnWL4!W5(2O3M`YMneP_fvS51V5N{1PM=$TX3v=J9X`;J0%sVnM z;IMcj=^OliC%`ge;I^Q?&FVb}AQRWI99t*_m47VR2OJG@K3lD|MY=UK=Hy$jA>LFk z>KIU|jw>{sQX?o2JNL2X)dCT*xPG!3jaHO-iH4f=@R)@M(W_)QkJqOLAMrz|WmYs) zoxQgE>h`~s+KuAP?Fz>3i!!F0pjZ;Zu{7G{1ZWh^V+b2Nh_*W2DF1H#z$~kVg#Wt5)tyD>^#c zqie?^;f_^rMZIAf@Rb<*c6%hRW-fPI-qXzWT`&;RB%Sj=ok^dG&#GR3_H{Y#n_5nrE)=v$n4zenAW|B$7x0O1+I>HC(;Qk$Ckeh$pa-D#XZDB4h#XY&ueN7&?;zmd>Nb# zYqCDootJyQ+v+ZCwL1Mlr-eUBI-ZoQ-+z+B;fkrk!F)Z=EZK86Na7=C;6NrPo->|& zx9eBiv?oVMdd3=VKtVBX48}wse(91Hr^k2t%sbFt#}pX zH7jxLZg>x?>QS=7atfA)$Cc%G!<*r|gX`H2fKZ;uvyr1{Tdu@&h}mVB?B8}N#Q+;B zVR?ZOek4KnN4YsYMjgk$i@*1BSUGe`(aADb?&4_3kj;YvIu4wW5(!Pa z6kMz%D1(c1qRU}j|YN<#LsZhwa7gak&A38J6GDG({;cr&h7 zxY%5q0hJ5GAqA!Hj~9n_t?aC+n25(0I{3hl)RDcKl^MRGa9|TaPg2^EsQyP1n+!v7 z)=UOuh%?Bw%Sg)o(MswNY%DTj5xP>vGdzMaZ>bz*>zFbWvAws*hq7ta`5yfT*2s!l zWb3r;f=vyU;TVdCl0xCy92I3+>FTu^S?rmPx@{bFPPlaRn z{IfT!D+bfLVS&jD?WPd?opQm)fR%XD7OtnaUQsF^y^jmdv(j}GML^uTESbf&MW0>5 z$wJr_%I@N>6vvbN1p1T>OJG6Asw-ID&rYi62(tIPyCwVIX%UsCMXY-qP+GeL7!jUH z&@_NqHSJ*0!DMn4 z;eC!&TiSs5zT>|DOzvfdK~dB zrS}1)NZHEV%G&a0>t#28Lg(+mvDJV841?FwTeQ+c09AI6axPw_x9#8CggqyCffjuAXmYj7gsWE z{|eM_+yr~8pD!gvYvPf0byWcNMq=wzu+Z=}`S!GJz ztPF>ni~CRgkHsi+rZT+~QuT6R?Z|v_m}vki%zY?S*scucEAD21Svy{K6CDgoHXuwW zA9*u!r>&`mox6&aEk(F(L)#RJL6FJS3;rKe5kPz@yYrWlub@#Nx`GC`*s9AkeBlqK z;uHCSH}65UO{l{4BPmH9DHs;skQ6?e(j#ktst)6=+o)r~uOy$&QpF#=Yi3u`X_>5i!tIh^2n<`|F zb!()Ug60c5NFT@;dR`fIr@K?g0J(ojZmtIiZW21exCxZG2-k6>dN7Y<$Yu!J7d?za zIlPG1i%k=3vIv#ok_U7;0(+6DsH#vNs|U#+6D%TRdJQR$vHH8HJh-ZQD| zc6Q<$EiT+={KD?H$Vdz(i4|aU2I;2X&90Y<*<5Mi9m^%BZ4m5N`T!x;Es_y}B0yU# zercEX@iaLSA7TV?5W>7eveHbhyI?s}E&&VnU(aF(C+$Y*nsNUPCL@Tz3x;2aMT~Bw zIP3?!S%8jR_)24n#i10H<9bHJ-k3Bj)y^v6)KPH^4`fJqL-c?$;Jln}f$xToxQ}t7 z`hTc+_X>w1d!>Srw)8^K4O~won>rqRJ0+-j7?};ZVZ!(@tq89huC%@CdA$3eRtvPK z%~%C9q90NQ%jAXy-Z8M#YWaii=Plppp&kugbH7d6b?uN5bFIQ#;C4~fQhZ*2@5d7K z0K1?XLDa3O_l?`D8n2l{{nb~%Xmz%|t&72>5R2F}iJ*+3qRsEDpMJGowBIN^FF4Oq zPorwd3JM|6GtS>M7;kq=){}W7UnM{)nq>V~LP&wCZj0aF5MBpMHqDu%8D+L}LnDo6 zb`xOsYlj;ZhIwc3q9S^|*i-%2!_pNC@RkeJ{_RrXg5dCXs8^pyX4P(;`L}xDdS_E; zR`?v~H@-e{0o2C0kJI@rhF%$yBcHpU^tq6fs8spbF^7W(6NWtyj^zy4Y4QIJy(T3W z3W&=}Qw#Juw6}vLOh(fY8oEDpJxf>I9U!D@uO0wojPb3cW#IX~pi-nVnK0A_uv%^vIoS5>r8qh`FOET}3 zK46$XN{fUedcyL8>e%)c9GPk&ZQ;A(2#^&exSsE+_1^z*PH_L6-nPhv}Qg}2coET|-mEQjomy|*`|km z#>BG~3oqXnjwcB$6*Q<9tnWBc(mBPgiHdB|BPjrqr;cIl?-{H?!oTnI6#?64+ z985jvtb7#AH?f1Gt(mCfXsVK}2nNcIVm@GqPyYalM+M66oQMYzyMsa!#2XoX8~P$& z%O<jFDA##!x ze$4z1WWW#?@mvSrLx9KyM7$5jb78O|4|>P>rNZOjvge{Tj~)F>0cR>6rUhYyaP1v0 zObdxlD?%;Ix^+y=O7vND#7A_~+LkmPMzTr?35d4Trf*3MXX)c1#@0kJ!b_>ptQ}(k z{BZd7*-KJ)POR!j+hsv7b+lyBhByLqNj|C!xy^waEjg8gGk`s8%2ubdB-Gnw%T`vg z?een71)P>YvT59R@$H}?ZSND{K!l(lmE)^Ll+QnbSrEe2Kw=O_0ZDLV%_1kcwQI9| z_9o0g`J|yat`YUdO?NNMwH0@gN`ETKD;0u=Vx>BrxXQ7WNudB0R}P`FS|b#RXJ4N4 z5im4HS1xcF&4D{EO*xN>e@Ct1o4X^9W^T43xxkMP z2`uRqSvX0O%RnR$RnC_v*x$rJNk|3jQ#>Tuw0e^eK|b)Lju(cP^0wg=7{c~lp7+hc z;vi^9qqxGT9am`t)KllazpHtrgO(Ag?`=wQ<=(3-%Zd`8pdvo+>J87{A?-Iforx1! zwWx)GqMI>EEL08a%jY*-oiJi#-X}7}!Ap_z*8l5oro^Vdef!8_(mvPu$w5mjsTXB#|7La{@MLaUi60-2` z;V9e~t^0MP7GXrcaks@)4d>1O<#>7!d{^5|XU+ijS2J3gX?G20X8U-_pS2FLy2XI@rcy+cXY9yn zT8ruDX`e9%GwA=YTR;RSN0(bp;#>*ouqs%WXzq15LkbrGG7q+)ao8q{hS11@9o-M} ze6##EVQ|`sf0taO&n@uJx@;IDU?KS~_|gB9J%`mb$EtQ^c|qIF zAWzk23)Jq?>~=8ED3p}akBzL3HMqd}A|%A_+|=}l%TSes=p|lH+~V-|=;z&#V*v6= zLbGs=fQtRO6W+3ZJgDrbMeV4x{qleTN=f^fmn9w&Y1R+x)u~4XBz(6j9P# z-d~6`8w%|gtARPk!7+)eW zYsuIwZx2qoJt}caBppx!XB2(o)%2SxwYpD2k!7NVlX!xOR>ia>I5_uE2MC}UWWge% zFowj)E2y}r$%KGx2ean@v5~1TsDj}N%Ljy}7R@EGDpnZK+&2Kws7{;kVTMHkM>M^`>j}cBlKfZvsyM@ajOH&BgyZl zTE$Amit+5sqUBbdzyXu2AVqJcYQ+z5F$2Ou+Gc8Ihp5N8q%qeCkmAmNgSI1#S6w-Y zENaYoDbacmMMEDzzY6;0f@+F8b;{@;7%4KM8j7I`rmF+SLzH@OArhjou|sEtg2D(z zqRtTGLH~ESV8#p6+Z{P%qd_joI9Wvf_^ZG6;;%7X5f9_uW{FXC0Ml;T5_OzKrBHWs zT&&Sd6F-{*yr<*4P`<%)!gS62py)p-fR8>_{JZEyLO?_t1`D^n^*e?_S0bQ$wN4_j z5%eijVJ}CL(aQ2{|Jibk06;w@H6r|b)>(^onI4^@pR2qMwN8krfT_c|x0_>NDJwJDK117jq@5`knabl>o2#Ua!Qz$enonrC)pTgLo0p z+b%2rf4m6k<$msq0RPO1x~pB!qa80gnq5e(S-+?;h>Z=Q47BEcXYboIX4S#jxEOi* z9U2bn9RcZ56$Rm0Ow|=hM|E6>I?>BfjEn?S#@bWC@~DpElS40>3u@#<>X*;Q`qKe* zC~%9_Txu1cpxdp(a`6tsG>h$j=}4JX&%XrkrF08tQ+B~R=uqGGCQ3$50ZJ<_@Tf^V z$89Tq5AeJ7B+&Y;8l>=h7; zF|NT!M`xZ!3`X8_;soJ~Rt`X{5O#oIb>4PMKBkVH+TxMuSL)|ZS(n#;tKe~b8&eyg zD&)MzSnfIAj!5y)WmfuO{zV|Wp!5SiNqWvGo}{{NHqi*$_@Njg?S}+{h29n{W@#-V z83|Ot4W0{Ljp_+PWJSZue3(GTnxkmj)=Ez&I}espk(+L0MyjZ=<59s2OA5Szj2&{y zU*5QLK6w1efB(ggs;hlUHnrWspA3Oaz>fKQ8PH8@ltP}^WvcbBCVbx8N*9-ugCx$- zjk0{gX&(3-Ljb`>+V#%2uWprH3B9G8XO=VK&m6D${_doj%f7Q8;)n9f#dj^L(!Wjk z?%CGU->oR~=`KF=!^8^7k4dY}o`3*Mj!Z>TQOIM=se&0@1l^|5F((orUF0mgeV_|i z_Gf@fVu%9T6Z-x#QU4b6GWNI~RwnR?nl>zKts2iAHgJGntdLg|rQC$PxIt4vk2Hij zZFvoyflr^B)WNQsgjLH|W;*+apXt zXDQT0Lp$uj=|_U{vaXD%UF*Sc)mmTK&%Fo&E_H>@Ba(jm6>v=>_zlqh%07RuA$>*p zm)n`vAtt{Bv&yO)Mj=^#@_6}#K37BkuauRs&4BcP7eEpX`Sn%strivLg<9CI&*E)tmPTPz=LlrbZf z1gn8QO1ZZ8ecC1Rj>JF~^Jo|L9y)I~nKG#nD8}e^3gxKy4=9E@Vn;XkT9!BupRL|* z0z5wX;mg{G-=d508BXJ!-H-Rm&xs5BmcQCxe-cmWu8-Ea1@OE?X z)twFRP9GTi_gm&Af{w=r_`h3}_skE+(O8Va^Rggvnv@>i99JNnMTsa$YiooY4m=#! zh?6h@h%*G1*?btP80J)I+GCZ7W;VB6^^eno&M<$%Kn|)p52ud|7*pddE~L46s*kNy zAj{bpN(Ly!`3n!QqR1Rn8NrbOpO|oa^DYZp&Vje2-WRtDTeC5^V6sd5kcy^RoSYxI zjpVB;sxT#;YV)R(%4&(^4XL7TEt2KN*;=4#B2HU9b^HOP0|*N6se%P#`(j_wTZC97EHp^QfBSUue#0Kn`0g}|WA(8@q;AgoQ7htt%5&@hv=GdwJYx~g(lRo$Bpyp&&asw-Iu z|2S-%X{2|+!`9@t&>$(P)r_Q{$vc+Ybx24S`dRcg(vl{4q50a_IU7RfO?V@xlw($f zt4>s`Jkpyia9+KgR~k4>7FV0Vr@{T}OOZ0P&&=H#vAWoK#BX%2xm;z|MK5K&s_Cs# z{eX&C=)fbZ&Y2mqzGwNSCEn8i%@P#IhZE$>^DX|~l~nP){@o^1i&Qck1y6Fv&Zt&7 z-bZpstxr7D@MBtF-mzi<*pyA{Stu7zvP=f()Z`#6u2L3l^Q8%hm3Eh3VAXt~J2xg9 ziFxZ&C4ZfP8SG?2_*Cdh3)$6XMV~1!AU6PQR8Tzaz@`JE!nnqo@EI8&yS~5ybaDQa z=^SQa6IQL=7*kr5rxP^8RqBj-VpCIrGFh>S5-$a!jC&jvus0RR6Hq)NJ!ZNzmAN8W zfIOGlfz30$p-RWnqzC?P^*YOo5%C#Ujp^sTDQlSELr}(A_KclzFUEHVN*PM>CS9q} zz3Km!cOwvQ51HCx+FN6J)OA1e9fGUSR?C*H28B>?(rMeyR&6V7thM^gYz*i#!_*@7e= z$=rGR0kuW#=(uD7jnkCcezA7XvO`b=Y!6}aIoA#a*}+UFTKU0Se!BvWJD6cb+yaCr z@K%p6hzFhK2k|EGlXTeu37W2!vaO}O6vsF)Ra>)w+j7N?puf5qr2(8q860Maw26wr zlTHKuVC z+pY)MY!VESKWG%>p*>4A#tf|9b8Nk7y83*B!7Lt>jh4_e+Ew@=^&mkTHgPeg<4Irx z!8td%Bz&`}6@3;GjioDz~Y5I2I-$s%V*$SZ`$U{}L+ zP7XSpyJ^H8)~^$_T6_@tJ9FCYO&!pact<*7c(0d;QjT9>Y5lz^+iIb*)4Uj?rP6}* z99Q?1(ZbEX4-dojW>pX6qDo1gO&PfL#jWxUjs5`uvlOw8Ey)a2pOj;G~}O!>wmN2kRF#!(fPfPFFhaT=RJxi8b6-@A=?V@j)P1wiK2I zyjrWgF}9}DVXJ$ew^;1$VrD)Z&7SRV4_mKFB@>dD*b_jBk&dVJsyH6c7WI%7CE4gz zTwm;$Tba(-KVbhZbs678Z%9+6v2BQ-;yMs3U3I01qAV38*?ZH8Z11XDJ6a;^YFcOp z3_5=ORHm))i%Ctx=~AeK<#BK6yt_kJ*aYFLS8^)S4^k9`g;QfZasa@zb@ghe_;-8* z=?`uKm00w(njw36RS~NdZ{Jj-e*KtTW^__V>gb(%nXlmlsxbUJ8JkVxG7{3IKGn=~ z<@#X>|KDd>Ri3<1KoEvo$)$3aSzeJZpzcEZ-IV zK)f_e^|~1y5QcRZw@S-cL2P23ak7B7bUcI)^~(>X&!l@Vw;b9BR4(9!7*8E9xHP14yYOx)^^4}yJ=kX)Sb^14WuD+yByY+hpQyB!PncCx`%w2*`92)S z!dy0$5>wdXchX`86XJrWKbK637IAL5k+44lF^8bnMCNG`|2LO`H_?e)e6wr+Zc4@*FTiNYPb^ zyFI_wD_pN!BGj8cYz1_Er8ixH-G}-WOT}tb2*`%;zo!cw@r+2r0ZfvTEu9L26MrkK zA+kk$pzq9~nDXtdR@pua{u6dUXHvjsOz=GZFexX9+Z^hKfMS+!WsJ%$3l%Y<6O`~a zj4!|~ahGGJC3fpnT?2(Dez<)j*W9LcDDu_B)_ump(AcE1J|EW07RK$|xFF!%TLW~Y zHE7SmHH|FBZ@{-y$Dp6U-W**;K|G zz2WfL;9b{q2^7rQK;A)VNxd`-KhZVl`m#82VjY|vW5u>AV@B7Vby!Cz*ZPuEENN*M z!-Z}B39-iLQbmv4kXl@zf@hBl1`pa%@8*i1<#sL%)d`{w@As<<`}}6L$y*zWJ%jMh zf*l*YDi&rnL=%X7I6Q|ynTDq@=`SR*7@fV)p#g%2UG(!YFY~nHhad8;(ifBqa-VPOeF)R2eL_D#u%T^?U&2W#eaN384@$vAx2@rI zakVFhZ0R;JYFOt#2i)q#t{Q92%_yiKuzrdq#PF*#Q&~@%izPt{L$~;Q44goV?HKZB zK`WJDY&8f)mdlkA2ubLgIpZklp3F#+YY)t&pGtO$t}v8-vfW`qNJ{Y*Zkw{RVRoYW zAF2gaRM(0Lwv0f93!V$D z##2x%TiJHn4M?ql0sXAsU;5J=z-UT+2v%lNkYYYZxMm-{F<=Megd)fNOwF&0XXaOM ze%8A7>^l0DC5FI99A53;$J^r#)3k$FRToFnRt|X;r6e*=ZVS_-Q~{oEne*IqxE7bh z3|463;A2*$mZ1DV#)KA;fSxVI&p@8k7*YA`wM#cB^umK38q9(sp;*ZmVa6xck0gue z9XFU}&Q>K~#TCjoNLKCPpzn(VefJTi)`5}PU+PAvsyC`O0x>9bU~*s6v4}Mz^YyYlL*Jq=k!nfcIV_6PXc0-0`L_51MG8hm&bf+f z<{8=uO0&u)O4`KGn%RkwkrPuKIKpc|1uGR!#BMLvd08Q2fb9G{167#4>E-56A>BKU z>R5o5w%cNg;FJ`G2(_zSn<)}kiXpARA}_MSr4nKuA0|ifXzEC1y>TLst(G&kTw*w) zRL&Q93nXw&LCeo#A{0I#>E9ww^%qy}P=v_-=Aq}vBsr`;w;&iOCE|UmauuYuyl62| z%Bw1F?k*KNhBgPDrT#<&v4daW#A{(UwR7H?C$>&>H_eJgS+G%s9;i|(^4KOXIUE5G zO}9s7A5n0J8>r@*U{lai6YSt`GUr;(hPtqd2h|-4&KQ>}7^lV?Bw_U{$J-I=vk-e* zs;jK*mqsZ%NNPunGdqGy`(*T{T7jF6dSrJXX=Gl6RRdD1s4R-30H9R%)TH-8eP*)# zwa@A9tD_HHzdL1%$qiTAL#6oi41O=R8TYS#x<2soEc+qXU`7wcRcpM3J<#4{;q>uu z{y#5%^WV)!?3>i-ecf9kaR%FfSY-jyR9SA=m~ajsbtLOO3*Ft_$x&9C?(r3u=<)K; zzWA*fWQ?-mAq*a0h1*o$gt&2hCKE6`Zv9_h{Gbv)JYPTD>t13TjqlIJu6y`;U~SQU z!R?j3o-)B8n8BU%^V<4d;*$E3(6E%P_qN}Icei_Z88`sL&6VNp=EB^?@8PPJAGoW3 z;QaCT`Y(R`+gxJ^Sd{WXn^H39Q{X73I-YxM|8HOX=HH&0vF0OWnY31HaqwSue&}0j zAs(;){KXG{_n2D4J9?_R?+1CzuvJGyxMZ~xJkKeR{vJ~0L6ooP|H1>)ZyLB(q!bT0Z{0 z|Mkn?{KNVMvXjwyHQFE_=e~LI8;^hYFTVWs$N&5{gG#~`M8PYd#2|``z5z9e9(+o`T*^w zRuZ~u`;XtLO)!i4azYF1{8w)+TnzWdO-lJJd>TTC@nHPXjL`aCF{KByTD*4%IXGDXi;#}NO6wFx;t5!~Hds z?&IJ5r!Ri{@sCcw{2NtvSDk_<(5WC&c%!0WNHby98-X68(tyWH@k-%NX~}9t1r(os z_Yh?TDCVT!7#k=M*o6$hP^TDg$JN*|DJQ+>H8vr z$;_;hHeTe-ykx{Tyu*3VdCqg519euNwRG@{2-5q`yifxIsqLAzE_=Y7s$^XNjWPx1 z#!VgQ^O>%#>F9Uu&=x|jbd1g9I;B?cw0YAnPlL}@_mc`&2GXEa&<5XG(;@T1Icf^a z@oY0JPaXK)2n1B5`n(Y`H%6_JN0^q1A_Fk__o6|B;g4Eik0uY&;pA2Ht;4-}c_ANi zm3irTd7AaN2G9!;Mxg=28a`IC02!a-<@QbCu{`_-|NEEUuNaKZ!P;)8-DOQHE+l}F zE-r2zWTyS8YsZs7RY{azD5=TzqG<=lW5soFVbhPr0H>?chSnPp%J`8bRjKY;*AN>IuGG!Tm=&=iDZR&j{E{l zr=@$`RIZ=9jilX~(TXx8;BWMiQG0+AD|C*ga^~F7v1q4P>W*-H^S-72I6RsPa;BBj z>mRo8#}+48kPwk8Ix}lxLLBwE@9(s>zF|}X{Hq;PhJMmp_RufxjLGq4-Tu`gxAQhK zbf@oWYk(nqG_>1{_`sNW(n2}4MXi?=WIw*<57b}8`mt7O$ST_uvn*wh3%(Q@w!Xnm zSgpP96b+vpPx;K3!Or?dF+mnY{ct;3h!|xf;RG=UqZCjoV)MwsY25{aiVIJg(>(}m zs=Xx!O4xMyIaWFXJC;sKw%M~Hf`1i>hc<-fDoHU& zus(~4BgqAp_#9y7HUDol3*c2rLxWN9Ye-=nq(-A?ibA2dszSY!>Krv(QJ%nE42l|& zq)?bIq0LxmZM3gkT5PmmX<6!gka`rgOiagncUw3oQt)Z%0d=a1F~xi5JW)D?5RYZq zQveV$sYIm8C6Ph%uXnvLk94Wkokr>A*6*NU1%zmC4ymvK#Ofz#~^y;=QCE#mX)hsMPL1BdY+RX$d{*s=n^EQ=dp75 z`|a@mE_Y!#;ZgjVq3O}PoBxB_=ePO31K>fhXAmETIMhznDr%nz@Y2B{moR)-r`}+C z+`=^a;DuzW>j4KZp;3tjD~5dZkXQIRK?*E>rFsO?7$f=Y;V=-P^h?FLA^-= z@JXO6oN^?k zhJHFl6R*ba@eWVLSGznO=0;zQ&tNlD9pFv>C>8VMq&-dXFe1wCJ^D5%NKSqbD>YI5 zQ)+ibB-9uUk!345MDCU~Z`N?x#uie0urtPBNr5p>IW5&$zO+D9Kspj2eC@qC6Aw*0eRU3}~6SrXiQ% zKc2w0Qt&J(=4ZuTOnx^%o1p*gQdL-OPc|D3-yEx`fLL69n72}~98Q5ynuM%6+A0+Q zPCpC=`}ut>>kdpqMxLLgu$mE&%N{fID8_qhOw-r!?~8U$IIued++UC8aMJ+6H{9^2G(&hi``@e35knM+SeyMSqA1?=3LAQTB4Z2v0{jRYH@f= z9cqAP@_I=~htPeKq_4Ws)F#nIzc_Ek+&b=bKJ3T}7Kw`Vnb=b)IHk!wkI;U)(S%Z@ z%2+l<{gIgTatseLy_fBDi*K+=wN1uvy`)gb?kv>tJOVPw@|HBBrT}FNHUu4-CTn|4 zV_>m-&*m!|w)7=>sMGf(tyGKq=mMu2CP&~5uuh=&H%s&H)?cr^q^Q8U^=Y~Ir<-=J;$LRxkYd?lZ z6520u_iNSpMko=u-fsh>9L)Zy`n^xH(1T$0F$^` ztFD}oAOvy*SadLO=>{)$<5B#Nvm$M+sDGEhej&7$B$;_9&24g9{=n*|AtBzx$jiaR zL;x|FSI&jCmii(Qn)#c^!EAtuB_=o_5~i&g?($?h7RR#thruZQ9NAdLS%&Vzs_$A+ zi=iW$Z`*bmnDAU=2vP+}0m`8qErz%HXGL(l1f%I70|gZkRx)+8DG^vP9$>Ca3Z|UD z!Vk1;i1Gm0`f(2QX#{_0(7BQ}yjGSvo885(|?9?o`F z1^+Y+;rZ}918J6~5!W;iF~4V3i<4Ljt4Um6rbTSINfYg{_E^QpaUzC-Db^egiSUJs z>YyLJQt4T#?Ih+lfJ;mZ2@e%P*f8#Fwl-|*$Xu5=zmC_a=ETDp-!M!gYe|ru;i3>B zp%%yFmba~e?iC=Bn!k6^yGhxU>}KV;jGf4{BxSLui!E(8C%`ph1&KnM`>-&@=*LGS zjH}d9ETr2ya*1+9W#Q3$U{v}~85OK2h%pCK*kK;%(ALVf(T5`)As@yiilNk`{@ZYn zI19iKBHtuM#M+9B3vn9Ew-Elfwl%sx*&+hSlhd&#e?U*}khIE*sa4n&RIRlTd+u!* zMWiX>sT7K^ZxCbk#}FOe6K7}g{{y*|EjG$0OQ)Nij&^Pj;zb%jdO2N4N<}F$b5K%; zsGysMo>7Q|X={%Ic}FF#U^WlIN!cqY$cNagrcJ@A<*g}M>F@-HhUACDp`1z?B6~QE zMxX^JTuAC)#^R^gl7omvmptWntCfq}q%V07RC0OVu|pR}>M4ZROp`f{$>kOiV$?N{ zfRsP1bs~JPPB9EUtu5K&))G_2wp*8#YR2e;j7W86^1V?fOWj%wo8pG`2 zS&k2aId=TV;Jlb)xNuHm;3oGd6>D!v3dJlqF~?I85>Brg zF+~V2Wn{^4yW;cwsVF2yS*dxk-EY3ls)vKa9+4aHKz_w9nG5-S{lZ>E9Oj|f`wInPJu=g z+{;jGWK@aGm%57NExI!BJ{#b_>2388H81Fm`Fl10&qk^4N{6#!E0hVOXeW6~X~sa8{iz*P%{#f&VpcU+!@vRpGFP)uXVu7B0U;m z5{9w%_Ib7HP0}b8t9ZQIkllHh^m5FC_Ru3;YHr27qGFdtm)r^(1 z+Jn%QG^`jbEku*2PY)j#uhv1WGtf>TtGVm8gI2ngk{*a+su%xPIT9cK@IU|RcdEQ~ zw4fY_E@%XW;Mwj}u3uxf=xj(2lA~Wm&Eq5LVp@F~M8tad+28o`ZXE1(;Q04ywcgAAr_i!-ku%jz!*+F2lV!Wu7qg@G@gurB4fnA1*jUu~Jeqp{66Yj@b~t@q!%2MPXC4u|hFbX4Az48K=OBRXX1Qj25O&thd#g}7K)+(lrxIm;f8^{*d!)Ewi2G=nL)JbWI z_>R|Ig)@vPC5I6gA7BZwh4v0L)RMl66gZd|{{Qb(Y6`DV|w`b%LT+G+!TctH&7^0X|f)H;WSmTt5#E#iaavsFb>04@?5$3fQWSEL7B^;ism zp)80F?qBONhr5n8lKJ*4U%rO*!pd{Hr)y>vAU^!!i=#VCP!F z>dC=EAZ8fK*EUa9Rov$}u4-6VKl5=)JKtD5I$t$}F#6pea(B{J`smPpaAY+t-b^U2 zd>N5Pw~O7-M`?of<6t5-4H_<~ewu|G)|W=O*hR)+i;OJ0@PvgGh*G8^7mSeBhN{g! z+D34nxRa1O4a%<{I{6-X>v|%6uEQwm2+nUDPC}n9b-WG~w8dxDd&Qs@423=KoFtpm zHwf~m*Y|6ovD!-Jtk@3t3;?xo4i9$8VZA_*DFCQ-CoO?yBLFJ!kRtkoMS{*w0!?Gy z!mZ)qp2bN5R;{pmpJw94f+0i{LW?>OP$C|U5V!6Hs~!{Frdufi_p&;kk;!H6+SX+) zIIbB|&t<~JWG#@uyck|nD8d6vfpF%8M)QfLU>H_R^@BB2cx_n4HGUkY7AM^9?JPrY zsb(THsRB%MPKeE(t==OnJ}QTCYb{DBw71j9RViQ1Q}MRZF1uOgMmo)K$Zgov9^;h4 zr@KQ0egmj#gt(aJA{%Iuc3h{SyK*e&)n1}*qATiU#iorsCKK$`+-MX+=Ry#8hFr+( z{`%|w&DVST{I33>C{3&p|6Zdc-HJC7Ad3$m)DGaprcI@4uaP!@OtS?L$COaArlI^! zA}z#0{E#pNs6cMC?@Xj%*|S;4@}yEx{kmJ@@!H6;Ty z(02olDbWs_f|6cnz)O-W!A584D#&qq6BQH0w+TaRMO8xO!{RJP&bf*H^ZMxc+q3X? zDTf70WFhikEPR@Y-OHu26km9rFHv_p*e3EtxBW`-qesh8_x1eIE>}?9K0ew zaeusYb4%y@yS>+|ExH^2Sl$p6RB5u-?1%k4qxIv#`s%L?tsf88(@Z>}^|hxrWbT6A z3)V7i#vD)#(FC;K4lN~3gEl+UvqY1j&;j+4`g`Q=7Oeokz@$H1i`1kN0KfyHZX)Vj zPM7T>5PXp|W=^t%0jH*Ah)z*0tTt<`djiX`bw`2MgrAU|QMMkdSz>-4LAIw5ucqrq zGf_Lkqhd_6>S%(PTL>U} zf(XP3s9!?egU+HZjKWLwR+M}6QxIyHia(8N{+|4Y&H{mV&fpdjLQgM0prkC{y+3^2 zvG_3m+$+v^+pV8UvP57Sy!EiMVR2jSs{^2QAAc}sQoSIZ^La#b{mOZ@ex#aZ@?V_e@)Hn<(iivdxg|wMr zr!IY3*VoCmUZqFqZ&?MI*Fkv_H99a!?iLLz4O7h;l4n%j0xIyp6(W5UY=0{tg~9n` zZLAc)*2!2j6a9Q`tZ`z$X|0U6kal1R{}Ixu{fa@6s3RaQZSU)=9y+i*9;yBulU7nT zhRBvbEX=@pUf*r2*^h3j)&HI?EzEr+^0kIC1U&ePVhFU3DuxiFLKFlbxHmv4n1^XT zfEf?KqD7;IQGvk?rUu@XY>{#iQ=z49dhy6YuCUKTT2Tp900)Y02~3gE_0swn_R;Pr z3Ud7i6f8-E>H?C2h)X^o3IWZNt@qp^ffsF|RpS&Djpkq>#B%HmO$WS9dVh-w>EC z4=!+EUX^r{I7;~cipK?ogucuf*Hd!riSx)X2aD#5IixDW6e?^_Ngn9q2``u$RI^)U z)I(-IE~;&ywA$|?>P^m@iz&=f^i$816zc#jt@SMx(RBFRnIM2pP4%D(taqwAMX=D^ z^NQPuaGm%NZe}AAr3>>)Zls>&q$pW)UOyKM7nXy%(mO;h)7JqU){&>Ox6(y|6hPd5 zP48A&Kig()Bs1&{Z5jhf&Jua%TPoY=+qLwL$;shm!C|v)73R6FvH8fn)u-m8r;P{o z#9!rHLP6%qm^?e_lfG)EvCNJaL|PB8KNkn8FpIAAnQ@?0n_o}NWmo$1@F0mJqyPpE zLw1RUgyGrJsO_30wHzOV zrx|XtKq39Ho}D-g?_P4M9a}Y?MaB))hVvY9V?PYO$qzRU&?U%a_hueD80`fTx3$F5x*T$xHgpG3WYKy%1 z)_eB1fkR?jsxw$XF~SjQXLW|$B;KcLO=OO&Xv%JAMN@f1&|wCivt-sG1vz1K(}N~b zr8tbW1;L)?NpTzmKzVP4!>Qvt`mNxWtBK#Nln4YMNqL?NL$;js(6LZP8W6i}*gf&^ zvNa)Tg=;vBJzHEj6iTJ3q@10=2Uu{@#O)7z3r!eCH)Z}@^g9wOeH!he&1(jCo?wIp ziT&RKA?G9=uJ@67$fG)&C*Z~156FJI)5dw*F9V8o%cWf@0$_S`$2PedH z8d-SHLoDHOpru`}*zyqUg@{!FBE$UxTq0*TP)A5x3voo&&!nTKu$pf7q1{#d%mE-3 zeHBoGR5wEYO~>PXb`<}9#r#7Xh2wb9JH>H1f6<*gCsbn;w%*$3w6KZ)0gmd1rqL1V zRD>#NBuM;}ZreU;B zwBdIco9IAnbxxghAoqN^3&hrz7_?hLK1Tq9bUH)7j7-4_LeVyo@*CpsD*vVCsQe|P z5p(+aE$>3{`<^lRZH<`cv<&ZkiaxxC6DO=d`Q*k(_>Iev2LErA4G*sFH`GrtEW+r? zra6pOa2N|H+lL$XYo^I<_MbPi@1#R)YqcLnhHYF-BCBKAIZF~f!>m{57Fa6CeCn!Oz z_h7kS?XK-?Vt@{j8!60ewz9G1jb%`u(e9LryLDtDmJaEJWA9r>3U#8d#{h$rU@oHJ zTyWFi*7aMxZLFihJ%JSF5z+4A!@9<1j3!lK%a1dVIje_H3gJ@zKxWtvwJIrh{Pol^ zRMxOL`DKsSG1QOgPsosP(0O)M4ht~=8U|JXsk|-)G%5*+`xCrZu2(=tI>c|}^!nFc z{Lq$*o)#I?W0`T)y23GX$GXBx8rscMX@m4 zp}0rXgVpZHKP0}f@-+d5=kP%yLhiKsu9;&>T{`82WXDK2@$*u|Qt24PwQ6Eph6Q># zSrDQVvmZxCYLHxKR=6QGtcqqs841n1c$n5fUnZG{aR~@RDgu{BB`dwl% zNDOg_pz?~6Gplu_l`&Q^KBRXuuHl64fVPjS5qMp1XN;Ip5K&)p_?+LBiAX)nr>Gz< zod4lRf{EgY(uyGWSbF%`-}>s;Q9g9MSPx(DdsL;9Mj=duwY;kWShDKgz`faq=UwKw6I#7AZbb8z$?RyoCp_X(r9qqk*-EnSx%PU zB8sg#QC})i6Gq6`*5JkDkOm9Ki|SxoT2gljJqaRg0lhSrG&JHICV{3=;D)NsV^|k= zI)gP_`WED)*K{QZ>7YH{T^55Uo*;Q~DIxys9W?T@^+BE=2_JnOZ6tM`7`dQ`B+=%QOHCY7ZnAlvQz2t;L0L4y=cK zdqTt#A53sf)J@Q+DNq?(L?q8kv8Dw|s=dJnpcAW$ECgp|j4f!q(TKVzh9#tMi}*8n z+IZvlEX4SLDH)>qB3vk%{-x@4&_)jIia|A zfSOpjlxr|R(kM7hwb*weG1U=yyIy<|%Pp`DLe>UmElf*m8Y!kMtoHX(^rE1Nt}2l!e^Y)XZ|);U)E<19zZ(Oq~iX zk6?KjL7y{~RsOUp-YXbf7*8x-jPUbrg4v_aap z2JPCEbOLhDJ`P*3tN|Pmag8`p_^b?7GC-^OS_z8;MG<#Aq8^;%flFFbOc&eNtKUh-gj0_K z2igjwpRTOC&IjoqimV71p>1`B=8nO<`oNZ~NMI3~dz#*YjJMB7l2(pPi1!+tl!0rXl4)teKb3b2N=2%5F9&tdHfOaP4_Gv$c-d0j z^JY&SjbMovO(4b;rC?(2a*stF|2k?#VmW=n~xS%A^WrQ)pLVM-L&xhO-6 z_GtJMDgH0$KTZE{XS;*ow)yZ9&a!e|LhgZyXYgV918@g=_txm?!W!4Se;)O&n+;)$ z0v8!1f)ySLQagSo50`PN!2wFZD$KT4McGpQl~_JEd}PtRXXekt@2Xg5W>rR)%eZfGtGzWxV@p!Ei+8Q{a72QORQ7%fDRUAJxmiQ#^wd>RhY-v`Yv(> z)qClnkAU{NQ4F^Ho!v{7Xr>QwDcZ)p?Wm@Y2t za00URG++xBT~>OWNauB}m@TV<&gX^PH2ql}LA5>zYV`&20Ce3|+Uo=rLCt-{V->45 zGG0Np>XclWZk_8<71%IhagQRiQpK)~@5GD=$2rG#w<2>or}J94e0G)hHdu&$yvk3H z>M9wx^Eb4&ciRAHEu&-nVn?{Ze6>{#J%hTLSlWW;f~@`e3I1Q;bMy!-y!~x>>Kc@` zlkh->PE3gCH<*8adU#=V#iy!{i9_ontIztV3RiRqnC$2rRlsfFvI(cHy-~Ab9usZD z=0lp2P&h3_GcLxeQKUFoUFc2qlde$a1qCWESOTVAz@uVLQpQ!(`!N29flK_NJGc== zHv|tiyj60~wP-%DW^4rVaLc*1{Bk@m*inYM@wqNll#K;KqA3+C5wXOM)J^8J*wPly zyB0;+_tpMZx2fSa+x> zeH`tM3|QFb=QXRC@M8%Y1d1L8CdPV`vg_4n*8zTB8K76u%g^`jER<&9`5uVM?u6;0dV#!3#Y{?7PN;%DJs!-huQFA@ncs|L;7PfyQ zGgvP?BMSOJVLNG8Bej8cgMvA^$$Mzg61nyNeEBOVg{Gbv;?wXNa$qk3ZbjX%^ zILG}lfFAM9=ZYpKF3G3;HLZ|XX za4}K~fJV^Y3#Gk@JQspqCA5_}H+>SCgArlR(JsU3rg9Mv-aJcdQ|>;;1Xi2^OMxXY zHNM$-_}|vP{GPf&awc#jU;ndo<%IB}$scdupG)6oHRh7`CyT>M$lLnl$Je z^QH+mVy|EeD~E|Cbq%$e!rD|;{KXeM+Y1ULQ#B@k&P_8DAZLez%JKySo;rclghKSb zMz5TxT4#|XBj-Xtkw5h`9j@^bXZ29FP&SJ+Yqo<~CX>yocKbDHlNcRluqE^fEa^&O zn-wB&#c(nODYDSYw;M&QWt_&FGKaP?lf8V3z}tj3_sZ0*M#Vu^qqJB#Ywt;VuTo8Q z#Lg5<$3>I?c~ugmy$k-0Ya;~7{j8Yoo-)ub8|FK}JYnT1SK->&&+(}>I`ts1Tan2{ zj7N*kqQC%48DzP9OJRTSJJtq1Qc$TWrlG{#C~?fVJBNbp~O+5bZV5XfW#bg zmBAwET9B_kZ6{z$^ER$wXVIaL*~Y*e=?6``1}_pD*cg@CHZ-YV&paec?4E}0sPT$} zby>XX+}}PNm~M1GenIMc6BcDNSK`Q$6&-^vRSB{(y0Tf{hFV;BqlRTmLY_(JOOSPa zD?VWq=pph6N|Ql*Z9vQ|8p9r4@ua&|wC|muI_a8iMcWu62Z%d?&la>bwFN_Dkc>}K z5ycs33DWXWVLQD)CbPcD$HB!9gW_C;EH?uR|m4}mAPrr#n(FIxW za9U;5YqWV#!wPHT)C6@dtHkutYWA~PH5QRgv{Qik=BQXqw7e!VE;syer_2fKD<1jy ze=5j{`E6LetXRiGGtuU=Njsxl8#mvZQ|NDNA@$9CTAGS7^&SpJJeDJn6Q&^qUk>gR zl4eDpc~V(^nl3HOY%F!McQ5ZBPL&)IQtS4 zoFI(!w=)WWDJB;Es}zJ$4Xu%NYgg14I* zn-SoI+8*mcoiNwK-D>U}Bl1l@k~WrBg=u^CM%HjznItd_^uUoRTod zq#_niLB+Es1oUB9bB4N%`7D1%qCOwFa_hUW1^m2k9^E{oDDM@x1ZGplXZ*SC7g2tE ztfV=sez(TCfs}{(+!NNv&iPzl`g^1i(81TxYF=IPhQ*Y%weabrt#z`~R(CC(5%YJz zljZuT_qO1>8DEdOT!KJOOv^hjMgT*4NQKUJE?eaxl!X33Vx*f@eec)b*j?I#_eLoP)I@gtG!)uGvo0OHu$Mg<8c)JUgoA z6lVl`KiX!w@NDdiP?IyZAkb!E?Ue4&pR)z;tPBWOOZto|+$7E4O?rq?)|%crMKN|0 zz%p>u*_=CbvUOA?223;Nh<8+W^Q^;54(-I22@1*Y62m~uA#xlc-BecwHeui*31=KS z`3gqt)d3Z=MJ!sCJxp`fD}UDBpR$Ea65s}7CjO1mSF(V3KR7ecSd_Hk=bh)o|CYs( zg^S5jo49N36aDD3fh`6xu)Ss>%vph z%pEn^s1)GKk!4WdALJ78j8Q6(f2U@chy!9tJu7Go(~$HXwixzud#8m?4{3Y)a$bFY zOm{(i2i{!67cbn&jUtLEi)~#)x^e)nN!bFpH$)AR@^E|5SWrKLeL!9`1k8OUDsZ53z&C6ckXH*c=<5qPdmoV8(9OUzn(3e zbXaXKM;D2*Gy8vOrbtaHOw;^Xvj4>!uAa@DY^ls;>>7car}z-6^L~=W?WuB5*?!0K z;#(_GYe(|pT8dPQ5d18sxuYo^QY8W-2!U8|gA0iYD0jlY&v`j1m4wL0y=PfTwMtn( zs}|M>CcXA0RE|Y$T}hbR11;xKakzz=ISMs6VtsVP9x_JJ#>vJG{$tVZ%l5t#zhR_y z-fch>IfT-H-SEo7%ID{nUj+7FPFH7Pm?(EXy7G&11Z`oJDY$916Y|3u=qfHGds3fk z<3UpKp(ZUEdi8>yrpipQpdO2!#tX~f&{VKIppY2EY7uIrl>QYlN~^p-vo))+NNqS> zKUul*pEHXz>n}Va(txY|^JS45&|&t*`!6^ILxa*;omM6UQa3mq_PuA1k6B=rQVTUP zwDU&nPohAZWBHQ8kJ*M$W8|C!GmIpbtS*j8#SPPGrkk88XVb_6#$aSo30uwqYgDYy zejH2Gh@Oq_R1FuKRgVTUT&QDW0a98LX~4944{%F^x>@Ds*lJe(4?IS>>2a4Vg(pRe|4it>X2~3weaOremrR#uXOEH-OCm0jrQ#pECfBND^ z!g|1VA|{X*Xfw_3!6%mVqmxmU8aPE*ZCrv_(X3fD07+LWva%*wGAm~_ISO1ZggZVZ z8Aat_k&XI5GU{{lL#ifWeUBlDwv*l9WMk}0S*Lx`P?-EE#IFh>LBBRRrZUV7(-ElQ@E}2lp z)qV2K-NMdhf0L679ff|0>D7P)K&3V};J^x)p#c}vUhVH*+g8RofjNGAFP;xC_TBTT zjd#Uoh7t=+HejkUl?bvKf=uLQTkk~zl1A-gxEb?0L03EIv@ZoxRow=JAZD$Z=K0Ag z_;*N_bzJP@${LB5!kHsTkNJNb)B8E<^F4d+BNfh>zD`Xl$IaoK z&}k@|TpM~vteq`J*cQAUb69y3dl8P_adowUVWv?IsU9e;c-U9U{}vueABQt=BS+8c z`sd8avFTmoUs-5Zpn;2;v)D~DeK3f}I*8LRvBg*`~n+^si@XsV0_AY$uP zL4)?UEnYVG8q!}Cwzu|1m7kw+Qz?SIN1;~k7QCLhcY9L@1hluRMjN>~?RD%Nq5noo z3|hGn^Zgk^UK~_K`BHPp*ILErs2oUjPM`7i<2ulcytS>b1{JgVjGML(FOu-Dwp5)7 zF}kG(waUwx!0zh@U!dfftS!ux>yeIV{A<$1< z@%1+!%*oKuN@sMtt+f=cXCf=-zq+gs*)pHA@ah-cn;yJ-F-52~H8Z*fY9rM@sW6M* zsV?&H?9;8=geGw#H{XUgf3SP31XPq;t|b2d>06Ft+uw8+nPU?NmxCH)Eaoq0_!wTU z;m*-Q0fspxO;spW_+&HNeQg=dHar6Ih)m$Wu&Vxkv|l z%%hm@qs9euK4qi^7MjWn9-mf=|DKEim<)bxJ9RL-cQ5xAa3%ux{Nr{}1-2KY3(o9( zme`W^uO%Ep^T&}Pr7zEov=($)dal6zgpc3C@PE9j!@O9^8#qL|b|BdyGBUjQ2B|jQ zGGnT-*&?ewM=k(#Gl)4p`Pi<`o37DNH&A;D>M6a328gv5TrXFhT6HT6{-ej2?E?)IkO0Fccb=c(Y9 z5k}DzggQyKoN%H~w;OL}-^(4N)A8Vf`IGmnXmwU*iTr98@Dkf~F)>Z|dOUXb?yZ)vgypC$!wL2#eQ6j$jUyoD#>B(Vy7tHP4VhHrX# zv|#H9q67zgv<^gdWsmyH{s5>ylPg!|F@{3e*AgD}huIdPLm^Qq6^OPymOhxFsIFoC zO(v8JW|jaTfQ)$PUuLz-l7sTVK88q!IMU;C7u7#{R#xd3Q;e|--r$C>B{XJ2~yEP!Km-Nk6MhkfK zl-de4NRl)h9XFOqQ^XQ9Lz8NHML$;RBIaUwfXo`TRo(-kQafrJwK(S)&O~H~)t^U# zlnDF^Vk@1GCIxO^JPY|Vy~Sx1x-e*CdCsMwrP8x2r51#5_28lZxtICJD%{94Qv6*I z!&4$K0!nb}SnYQQsTy+3oS7u_)1+aTf0B20)06d`)=7`+`qp+hTn)C!U^&~2c>ajm ziqu9xFh{1I)h!jPR)#9^FT@r{K=YKm8!@xtCdE+uR9Mv#2|(CHOo!t3h4(E5jQWlCSPS-q6#7pXGUzN5M8S;W1~cz;h{iK{9b00(j|^LL0VdD^f2QLzB;BY<%Ic{j6iMc3Oey-%(k-v zlc5qLVD;U;H_v?=SNH1T)k&|m#mtGbMQ00>=-?2xkh}{Up(LPmU)m-bi<+RP$WE$tHbi|ft_&Gzp7+Vaio;X2wgR`70@|hRGYE958?kXR- zxScYpC>}HO%Lx-mMw&|dK;-S;iOODNFWpD)dc}<)EjVAzoacR9wn~O ztW^4H-{toa#>OY;UQ6-uTPGUyI7UBPml3K$<(JTG)CbG9;;nPQl?e zR^HzDObyDRbvo;OP9DJMXEhOHO6SvO#jvp%vRMizc0)-leYo~nM1Oe4$VDIrN$y$7 zQ?V%O#6)7#wUvX|>HLI^$5KY=>P`C`_U_wCLO?OYhGqBV!ozsODF!|`Oype!H(m_gpUQY+!B7fe)$)L{p$m0YL1PYWluN>^=Ekb5 znX#6Nhzd#y{Q^5D`e(EzB0eZlsxY4OZthLGz8_J6$0$}76*d$cdCphAq+N#lKx(n> zH<6#4&PJ7O8p#o@=8FLi)vXDN*)Yd9mz`8*UDw+kO8G`UkxHJ$zI5HjHdckEb4SwV z9=Z4mYn*OYyd6+4VOxNJS>ws}@rJS(V+?E@!7L=lNCE?J)bUV=$C(z4$^j**UPVpy zY>K>S*%9)>n{%yRl2z(PFsC3mNMP5>IjuM{Xm^0V+(8GNUK(QDUTHlzDER$uFX{^vOCKr>1ox!kn)Pb04FOSL;(qQ zRo*LVU*M<(10VgOV31Gm2Rgh#*bXtMfqFAMHp?I2eJsBX=bj5P#0zlRM_jty|>(`VlXGW(M1(6k+o z@%&hbitZL_N)+d!fE0bn zbP@{axT%mf*Lgu${RK`1vPqa@IL3@zngSv0k4-_Y3&il8g1!*}P#aKs{`75pNe>VA z_CGQR+YVl!qCV5idr}bAnX(`Z2hPZE`2mVx&Hdc0`5J;YtI*q;JtFuwmR;q^s$!nD zk^*%wmmDH-4h?$@W;a(}TE-N|2JA_hIq;8ITPlGJv-vfHB-#+>Ud43me`wmARc8h?TiYKI) zshOr{X!$@;t+oJ4A10=qy+7QAnw5v#&8d%~M&={AC?KqI75%icz_{QJl`A&8qT{(J zk z0avw=w;!E-I^?B$=|RwDq{Jhi?dg~0gA|^=)gbf067Na#j)QTb=Fw8HEpyYzpUvVc zP)Vm6=CnYI1-$UF7KxALb+q;avMge7EvfZvMEg}*XE{S zj#HuQ1sOI_b%xvCX~nPBo)Ikqs^z9?f}1Uh>us!`NFiZ?KtgB3Ohj$9(a{g ztlV<=%;jp8&TR8qilN!s23ZfqOm-xzv-QORLZ1M1SIN)s$3yBgO^4Bfiyc%Dp+ua? zFa$xHF)T9l(5RU9!lf1%7BnDh0zq*Lvd6h<(!x~_(y2QLZwAyrW1+2${+-|l6CIQ1 zyT*x0U!MipnozN`P-Qg*{{pBtfT?0xS3z(!!r(}RVaq3(G4nemvd1(b7%9jB$ELVZ z^qzvcVPtE@4%b0)0rx1tl2(wy!l6DCk?*1pJkbsb50D;9XoQCpzS(b`cJUE#$)SsS zpke)&gb*5cSyt8(sw6?=iUUcj!}V!XZ7#DctT`k%S4;H>PZ=hnw+U+_YR$wTW3@IK zJQzEQcp43GrIGOqZxZu{hor+j!jMK>T|ginMBfV@-tzM}WEae@EgV4-yqQj~T-fAm z1oKR(C@mAkS1o{6)vp=O4ou-))0tXzuL_w4_J5cw&>kT|<(t~U!zp#=jYk)d#U!f9 zC~mwsQ$z;~x}l3EBosjrk0;J-v`%qMNrcf7Pa2>B=5qDh%3vhDZ7TJ}AvLue$3{(G zA}zSWQ?iHgMVf+D>;l;48`^41i9_m^3c~LAskNehb`$D|JSVW|!%~_ty4f4~YC?3^)~Ua{gNbv77|}NFW_c zpDqh1^OGWxu9a*NuU4-*3#N)`>)*wmhaAI-ru>f)1F#z(HLKE2yNhuAwW_e0B2m1m zcSN~Zr1r2rw5Fb6a+${~$9jmGq2Xfq_2!KDv?(md_|TI@C!e-pRNt`TXNB~5M%+g? zHavhLIxS=vHU^0_A;Wk^n@H>&DLos?xFcd!ret*mrkgDYab6RCwC&f(e_%lw)otR$ zst6Rbf1dYpn0MT(Ii#Mncf%Kp?Qxm%!`Q{vKFLRW5t zI?MhCc3rw@vA5$%mq7&)B86md0S&QWmN#mJcQ}3Q4dm@1OdDpI+|KXqiw_pD9-`U}XgbDelWtRPyt$*^xFMY3p zS=kNr>u0|mZ+lLqZGSKmRc_NKe)_|xW7X_4;~)96KmFqOtEHRtSnJ!4gEr3t6MqdO zz*Dk{BPYoPgJVA@Nua|$h{e*j@ET7L8$|da*S%i)x6J%b4VHpb(~b~05S;IV;j)fB_1Zep&`2F<3Gqy@?3yx}5C87ysg`-yAobfB%6c_pkq*_}RuI{$l_&I$b;pOz|Ng6gXHbk#T32ZVi)w2h^~143IDq8x9SRut;XiJF z@xv?jqTxWpO`R)8?pS?|< zQmRK6hfOY*ydR0>snjo?kc0E*o0pc9mHVdj7V@Z8e|GeyH^pJ+@IA+aS&|!lwpzv4 z>-mRw#(ua&I4K2)H@NoiydL|V?}R;bjHm5u*h06r)K^A%Y2&9}<+t|w7@x6zgF;Vg z@xpRk>h&YmZtLqikDm9ZQ8tYZ2!V^*@F_Elr~N$MXj9UEOZ|K!?&Icx!*43pCf`Vv zEq-ZvTX5Rae)*+b>Ng+XyxY;x_U?-}*8xT?WSv?B zB(;sQwW?)TtVCRiU(d77zco7`mk)1CQb84pd4&pJHViS4u{5@)aUfpc`9J|wEXazF zxbNJ%@K&$(tgpPu3dMM10P`x@3}nRIKD?e6ya$|9gaE`1VVdAw zSy{(gD__*gM-3y2fl!$-$)DQ@H|O3}h?wdp-mIOJ`3qJE-MH`|!8`GDY^Od-3|9x* z#^^Zn^Vi4SkcFPMQK{8Br~vkX8-1DyQ{x9ueLj@%-^MA z%Wv1)*9`aV_Qp1U&Tj4By>1I0)w6G9QJ=hgWK zZqgmON&oc*Zt=5<`XZZ`63oaeJ{zwLlsGG!6OEjA2;HBy;*pNCq!T%(1b8N` z5@(dfGh)xy!<9XVALG=$-Q6ziEZ(kGeg3hfIXUmGhB+C16Q2^A4nIEco2~1|=l#65 zG^meO)tq;AHrAAEZ!Fs4(!#1OE?Kxo=l#65u(jBnlGXcSZ7ppL;@YZ4R`ByZD}oc? zXrWdL+Y7z1#^ECr1ZfG+4ZFw+#^n)1wYuSTa98y6a7do8+as17+y69Jwbc#HpQGZ@ zs@0>MXrwwPccVtCeuza|vAyI*$XMCYS|wk#9(<$+>BXnc4_&V_%$k(>JC8qn6`M)q zFBs{rX2Ww_0aeM&@p4GHD)oZV(v-be>ACeI)2dSAniQ;4VZu~y9cz?!Z{7k4M^*05 z>Gt{(Ei(yV`TL$fE&jCmGsT~2{><=ac73UXG3hPwXMMfX+g|UScKBJFf3Nd5pX>0s z&g^>UV9hPzY1$F8fZIzQvxNG${i)(VKKk#uXiArC+qO=4uxQ~v@HgvZy>oKUpH{_x z+LOK*O)(yiwj`_8wqo3pANqTBO!*I{|Q~s z7Pf#(w!5V0>doQ=>+!jR#iBo?Fz3MT?*jQCsApMPfb44O^m3ny3qWSKY@L(oF*e*? zw2ntF*@mBFM>6`6A;fOrN6ET=-7v>eWop>)pq%qGlNyP7g-H#-m#k^Wtmz$=bCN}^ z+@#VX4YSDyJAAOy;)}bJOzI}FeLVlSmyRav`(R!ht9^7AROJVQvA|2op3oClzD(+v zRp0zs*ab_$qQ2UD(*BPteDv?tubU=0*a`)lag;{iI={5-|4AR%UOFE$ym^$|y?){d zjUOHP|DzX(!?bmt-1DEGozS5)bc;&-pZ)tuqwr}zPoq@C2cs{#UX6MCaU(MBXL~8Y zh`Oe^T`D2BydyoPspJ}U~qY()$9XCbeXYzRj4zaY0tXDS)CzB5nh-g6K zz)1T&FdXk>BpL^~WjN84nbF-Yw$U@yCS_JqaKiOtI(QFNMincH`=>OUrQN5=hFLYO z--r(*7tsR`5+hCw+l7%Rwgyg;vL#(z@^;1Qow;uKXm4c=d%%;EMsO37RdXE-U#2r z{^Gy;>Nmd}&cL~N^pg0$UuMn4JV8@)*QC7y5q%cE6}7fgn_-5P>TV+% z5=!qUOio7LbBJ`S4@z;g52A-9@r&du)3is4zgNLYZVjhCesNpk=W9`qBmxTl*`Asl;ZDv(cI$ffF zB7suMd?|LM;CcC!PGCwlOV*ECwTr|M*LUMH$#c=3cZ$OQLt!ms1q}XrjiDw>$2UeDIwJXwqRnJx=Y>lw3vU#OG zamLDx9dfJCXfbEX<7?ZQ4m2chE49b5bMaD7tz|H0yqPOfu*&yV;>~DI2ZNB+h?$RjJ0AtHA9ImUaQx-@G{45EmdM3B{$eL8;y;nlN<@+aGiu=99K3k zh>Z8UOV-^}T|$dK9kJ6%`g@4*^e#8G3^vqhaGQJ#QUQOmh54Yp zY3N8gpo6sc^0?sXeU4e#Mw##%*|}-MYon5eKXCL#brAm^CJQAL6b=|c1XO}LrbHeY z!ufBFyd2uIM^hDoFn*(jtvd-BjxS1mIu$6l6DI|v)ReBd_c}l3z_J1f5^!B#w9z2XU zL$n=OxMu#blHPCE7UihRBRG6vd+Y2}N5Q}MYV-p)C#!Epp8QOOLeC%mEj$mufG!KRoNOKk zgf-=)yst$UceaR$f}gqEV!2S9QFIt&n9TqU<|;^4i2B{Z@G`f?t9?`r2k#|T0F9xh zL{8P#E4NyMSF&2}D_rle0$t5uP&?J6>)G%pDroF>{Dt)5aLz5yU`|fXD^1^S`;qCw zh4Cp)+TMQLgCfb1|mqrK+}kA4-O6=ng4^! zmz+p77qIJ8f@p`++qH(fkBpL^_uaY6<6)G}_LpPit8X#l$XSbK3T!~S$h?x&0x!?+ z_F&%uo0v?=Q)LH)>WNu1GMjb#j<;e{yga=2RJBAwX9-JGYXfr-#t-F}BHPQn5x;~M zqqsa?0cP7(3v%XU<4&ftV;;$FtJ~e|lMTWPQK#?XCPVx;LXm*@tVmR1Bl~1>!R{8^ zoK|MsYuhB*j_qAjA-ra7sQsBefReAGx?2#ID6Ct0>);IPp+i`LEym-PCo|0h>L^SH zN{AA@H^brXoLUwX_SFcN3-D=PZM^PJ?X`M~o9#LIU3a~meQ)?sx>8H4CodQ0@1wxD z?QM;wawG9~Zu_llceT@A*t|3Ms=CK}^tOh|%F3f$oWI?8eG=Uq8)|Ja#T6>oh5dOY z8gl9U;YKm1-K(Q1(QMudbi+|c@rZ}up=J;do|5kdfOo>G*F7}_NU~Q8rzB6?;k-2p z>JbaEN18bJS>qo-Z{u(Dk+n9xNd9wwu9D`;wpqR8^c#$*MN=G$n+$j0yC-H~&|nE? zwjH5SIz8`zK8FUQK(3_Ou>1aqCQ{W)%&u`#v<2I9+x=Ge)u1)(Z+GW>{&!YqiupfL zkKE)AM3t~zN{Bh^UhA=QZl+Ch2atINs}fO#L5f6JXl;!G z+m5i%%37hc8eQq~VCvM252gQ{kaT;dHxF)Xw+qQ$WC^u9u>irg&Wif8P@)FAC%lCU z^sK7%0Isd{9|Awxb`Va#i4|xRq`NKI?HmY>`5p@xZPsU^5gJ(v%cr<2XmlGz6#zwZ z=LJ~|>l>>B&pM4PBB>f3ykZBXz%N#sP|9RPUM1z4!QuJ^iN5ySKd>*W$Wn$T3IORw z@|N^BO|z+aW_{2?)sUOzq*D0s7ylE@qc!-XUgwa%fEA4@n*uBnn-G%*@^6J3wO+uI zWzcaek50B+9_Q_vbYeDImN(;X8_I(m%Pp8xTdqU0I`pTpBSTT)mWC=>s zHdopfW1A($;{=M%E8SZBCJQlhqQdgX!P&%6JE)-ZHjF*h8{`|VZCH>fkHn@uqPpyn zuJmrk_yKFLp}gTXuvq@i}U~=d59yS0b%5B5c;6f{!J+N3uT?Waai6c6ov153wON)Q*5Hk z)s0Y`Ql~f@Un8+A&(waemcj# zs(i7K+Of_pS}Ysx-r6uWp+w1KNDmo@nzE2vb&Ij%uj%^mB6yb17(t|SS8m(Eo@NO|(wyK4O)0?O@1 z*(M$;@8RO?$Z#v1VLHA$+=eT+g@Eb}UVYL9gDeQH zj;k20*g7F+Y;TQJh@%*rm~8`JSZi3lAtx#JKu}fps(P_^sX*QQAJH{Af@9fMAhw~# zt$?l+TaNWdLJK_b_mVMuEus4H-)pro2&R+sfZErC&=Cc??#K))5M?w*842=ER#l67Eg(Si3=p8o@FV zfHFMGt1}Z`nc9_65)NLzVseD$?1x$>>;sTwRmYyy3Iy{=eHK@pg-IlRZslfqh(h{~ zqW5csGn@~hXJJyN<6*38kHg5kH4n`x7?nOX)SV1Zrik%e`iXh?JMAijl9*ZLCA_k# zw%CffWZNWE7nz?n{`P9RV1SEj-^FQB?2R98C1Rm{k^117a0>PS9tlt|xeH)n#XcTr z%WdMsldVRB1|%UqHD4q#q}&GGo(aly(y{&2r_@$_1mPpO-O&ZBJ5*sjH_Z3L{tx<9 zTiF@=fSB`Xs9*9xObHJpFqNZLRhjj*lG3q4YMEPYJDWN(bEsAwfRFgw^APY3!^j!5 ztPIyIT}9WVKp0_RODUNuf+za+6_g8~#w9z)HFw@Piw1i!f4BE~zqO8Tk-?~_=olaq zE^2vXlQ^@4qsa#`G8DimYXA_m?e>O}!%CeRY8c7!REh;;n6xl4A|jrb^OlFvAXdc* zh9Y?LEv6*UcGQ@=kB9>8rKq}BS^;BLtfNYLQMQmQYUG3ReC>fOakhJ40UbNx^$RQ0 z;YQk;rdkJ7fhHGQlxhoWO*+dOvMC@jey2)&uH|{Gl`NdVgQx^p8KXP)KW_z!OeFZ4 zr1WWSjyXQ{zB3r?(0Ujx)Cr4fX};KY0hz#jPuf{k!a>p@Vv(bTT8suU@({Z){E0@x zj?M9l&~6%=XvYAhM&%rat%z?~ln+-@TXCTZZw;05Ra7}h_(E}Vy&=|z`e6|lhsFyb zh#B;xhb*VIxG{YcneV4>2`ZK;>(2)ZA3hhG8 zUZ5z-7N)Vn6e`b%^9p6aZo~k`w5GI6c7nY@QtWV}BAnVV`hEDI^6xEBAN;tc{u+Dy z^-hQl=-zdsm2WY%w&-qenIOfF?lIbJ@f_(pg#&kt{l9#3Ri!74u;Y0y&)^A5*eO=t zUaqcO6URx|gcxuI@q?Y~x#D5s+3rVsnDdT?$&|H!R)?2xKn%VP3+#|}QTxKE##Fq})pw8HoY?Z=AN|pnzgFQe+SAG{wv{PJ z+2_$N;6dn|qeNE37Tm64SD0h6$pQ)@cYS+-+?FKdH<|C+_LHt1!N!6v9z&%l?^VtZ z(*e=Qk5qFSql<;PjLrroR^7l%$2_n|IK;A8g53G=;55+YWL)>oUN01c1|AZs+>gaA3suY?Li?huhCe~0R&i~#NX8YmW z-LJl1y;4I+-&`!U0a*?CALEu&VnAifeO42GV`G^5huF{yCQ$(y*`0-%;e z9N|2xRn9c=hiRulnP4L&dR0<~K`Q-YmeRzPRDJwX`pAJ-m{Ak|Ec&=SUwwG-N1)0p zEys;mSB?i0ddKxdzdZFne6bs#Ka8H{%Z~azlbK_kotuGj|^ZM#LRcZ;V~OZW10@y_UnlVyhQh+0HQ%ov35Df|xjcPd$giIxBU;L!QWu1`vW}y3R44?+&Gb ziVtFRBsX|uW$-64m~wijg8{+HcIk_~Ce~rF-YU3j042nu$Mj!NXK^>K@c^8B{#lpd z(E~7EI3Iu`bN%y~>X%yKpETE>In}`-i}~SsWoYccbSJFDFGKmV;@8NKY2=`eq z2Cl4YujVr&q@t>6E26IJtxiYZRQ(2E(>SP>)>_}YnTy|fc|4H-CHylA~Y zX;YZoZQ=*5;`az3_lFrpdNZ&d%tbnq{YX%L%K|p@EMo?6-rDH-ZdP`|()f&~IDpk` zD^qV0(5|kQf{({NvGjS<0|)<^ou!>O!WCiOap=R&E7t)9<4$+4g0A+uDMN47NckZ= zq>ZxK9BhRAWxA2v;k|NS-@eX z4IB5!+fB7u#PqD$JADO0gw(rshs-@lu=DIWo&EX{D535Q?sxB3XR1iZCzjm~NpgA1 zu7$LGd`&l_Ho1wJJ+WPPn`nIo>+Pl?%^b3WWhv?T&JfVFEC zampqv7;@Q?BSW4hI5qL<4ZTC&^qhydc!3wEogg(4$(?NTMv#%N_%qwPpTAn|4*Hw8 z-ZW4E<6N`PaCl1SOC}nU+SWbhSG{8?VbL|LnXnC$VivoZow|e=YdAERS5Y|LDcgs! zAXK>`BS2?M_@_8frp4x-*%%rRF9l=9i%VEPl1GFbC7Ak50KW=__A7MpUhD=on+ft6 zxBlvD^s;#isRLf~26A{@qOPti5=RNoZmwmWuoyvLDd=6H7>Kt8ArWfG+e@V~J*Z)- zRa0kAAey2=QSgq5Z4F3`Z=t|^k72x!5wa-Ibea`aIfKSo%GPT@G@m^*+nJ`VR=Xd8 zSkV&{@aQz;K9%vol-<#ylYK5yOgK4+aFEeaiZCp&GZ`5!HW+j^4C73+gTb6PvAFl$ z!nN+c#)0;x<8>0_KKd#|1FQ+9n}qhqtrr3Fv-|~~vP5tbKw~MXZsa_$(gEH?e$(|t zeB=gB&tvs-{aMSKAmHTECjqRf2Jr$793){MI#f*XS#QkTq8!Q8#MP`bz!T^uZDJ^~ zM7|E{n$5_ginKQW9hrjfR+l#|9X-HK&`j)-g)#Vsj$|Afo4`g)!_xlE#uCauva^l? zBhtv?5n@YL=wJ%xR}4xLu{!%PCX1m@&0DvG3-);$CAE*?qaL&8pF?K0ro=pONV?u| zjVfkpWeg6xsclc;j|Vn zVCzU*(;J3lP&Wq1RGu5|x?bJIlG9)i+;DjIKZf}sXZ7g|(_>%J0j<)p2&^leLY_wQ z55=h4t(7fKxSu`H7GDd(GDp7y=dJim?Li~T6EexcUcjoh`&DFU;2rR?w8AqAi&q3LV%V^f@|OsiMR^v7Ez-4!*`#1ZT6dQf8zkb>?dtrkZ_6 z$if0Fk)JY%%fSGh0vsGZUS}Ng2^Eguo0?M%EZ# z(x=n{)TpDAVC`ah?khjF=z@l=x5crzuqr>$8+8o&ZXN0I-JbKOzB8ObL5FGR)Eauk zTsHYoc}^Rzp`XMZ<=+eVL%K#4&u3Y@^n}qDAktA|NkpAaM;z2L6HmQhu zFBZ0@{T|=KwIk=YEvrN};p>|!zO|kxL@+L>raqpoZwT)K|iF_pmi80^jp{-tT zIOh9=>h`WjVXr*^AIf@ppfKeF)PFbb`}qMByuK>*6MvG6tcZZoXRV?@t8BH; z|KtZT`Fl0!nI_%TkbvbJQND~uQZexGhYoQhzJ;mDzKYXBszR}&&~cF=3aQza2{2j^ zl7>CZEnEjB<}JI=j(MfCL5(goLK8$?CtSyC|MsRThC$7rqZ%Mt-U-UFV=q+n+5y%t zrip(S3ZePC6esV$nLCd)^{;3qUaaiCeUR=$NQ{j=7wQteaAIPrs@T&h-lM3=Grs4; z&Nt8yC{n!p#%SLpVClMtvh`1^kavCy$qtjMpy5{F=G%>J{(td=0+l}Jdy7#SivjqX zt$67?Ya$fzd!w-3Six-vPxO!rThm>rVm0v>O6g>@qnw#ReWMfc2wK5xAAP_Z06m@aOSpm)=I<0jVB-)4d`V^ zQL0tWZ{2@G8SeV)wU=Knwr=CFa~)iF$lBAJgm$N`1Ej9abAh{W=)8)P>Xt1UC3uSL z>vV?OVk?Gp+A_$&8YU_B8J#sm*~$V8tFnKbFOs#F8$0{g8#^;;)w&n+ z_5_Tez5uOTv4>mE-m6_)$FPO>Ug7S)Blc58m0M9{Yu&^WYU|LEy*Kk1rDYX@@3}i| zXF^0q7A|r{Bsg#RlV zNY7HLg~2fc)INRLoy%@@H&!^Fm_dqPPHcU3DJf1$5U{&Lj27Hykmxx z5hBW|my$_*jm6wn3At)!^*Uy(WFC%pT^rC3!cGA{GpD*pVdpjF#b)G?&dv3Md zPD2|#+cmyEKFs!dUb$(U$1N_C>-B9$A(K!H<%bB);73jt#6(#upKr_<=N{{9^_swwl0V811&2VDLZtU%&Y6 zUnM+@`Y}7Y^uw?I@mD{r0tJp5MyLZDjqD2u>eSFAN@Q7^_jmBaiX`9ePoq$~yCniq zN}fFB^VP;6e8F*Lqs6fT$@md**+a$iEBk70oNwTqUw2dBL)Tt*o~%PoK@#!4iR0#y*TDf@|1lRe+tIw0zQV)kiD6RS1x+*hdQX>~vqq zt&kS-X{;|s8}*8u5dm_HA+5oj-q15`Vv;G(U|>nVHM>S1cvH@^ z$FZuNWuitMLkuR-LJ`OUBi%ECs4<_kNGoLVO~)&prt}3g7Y;?7^8-Z1H`=|WT+vw` zroKHxW7!KA_2bwXt$?!+~4{1$#T#L`Se*J>kSYc|Lmh8D~4ztpgisC9|0DZK!Ka zK+4j>4Dhlnq5qzmS(7aYaxl0d97)m{styA5FZ49IhGb*tjFW4w?p3(8YjYiXV1wq$ z^6BQB(zQ9aViIe)I)B!9p)(mJ_s-^%cg`x_yeu46_g787&2I25mDz|9%~Sf29jV|> zazS2T_ZElO<)Ks#clsOJj?lv> zabBhf!viu3JK7E2(9U&r%aMFFi@|mj`Os}n*P0R3v^`X-hRH$mMeyi$N zyix4wSr3Q;-_2m)l^)C?@|WIH)q8t?zyxzBIYDaxYZZaBqqEcd!|MF@k}2>vs=sCO z=_oL$x6KDEec~a^{KxZ(Wo!CHBPG}J(UNlZd zww4YOT_{#1tS%w4l2VD`9NFE%AQjg+Tfl#?hfip&Ps2i`VcuX1UZBiyVnw}%!~}wa z9mABi;gHCSXRSo%Gi7xpxS*^%KHqozKH*imfsWbe1&nNoU@o6^E3bV8%fp2dy(6D!oL_tk2gzZ?Dps6cke&%oMY*LyjtgX6LIF zF+`oR<5*JIg6VC)35$;dB_eJ`-&ZoOOP!PF-gGA6Qk-}l1zxt;f^DIA{5!XrZY3Z7 z-oN)Jxz*|nb?6WDByuf>m{5%gbQ|8B?{+Fk*mifS zU@zi}+QW?HH*ug5@tGM2*SNK7m}}?mo8CN}1^Qd@LfsYTHJl!VA6UPbZS%PP@I}h& z#A_7`85|^iUn5%C&DO|8a0I6`Q<1e(0Q1@TZ4dFBs$VR2PTObd37N49hy24H$If@J za)NxdRdz*IFRb5w_}QO+`LB_mgFmyPCOC9+BymS4(3T3{cpufE7uK5$Q;w^p&83+9 zlD0I(;M>2op28Z+>q@g{DfQA(gScD^=m{w>jOP<(!UKG*>7xsXA5#V<6z}OvO`%EJ zCug&w*rjUjxGdulM1@AAL;-8<_E}1S&>{C?CNapdkU0z_<7QcXd(FPmv<+7#R)hF)R2}5=$cNI8mh$|I z7qkE?14&P)Jx>mpFHLPkM&(re4%UM>U=kF20*u9O!_jV{Se)QRUgv2jR^vO?iac}w zSv)aD)hdSTEeS&{JnBzFrZGC(a$RyJli!2AT4QG!>*Pauc)QJsAl7P0wSBRR@AVJa z7M@wohp-#EoMGV0DMU315Q!Pe^rS^bl`Ur+OnQWa81(p0UG)_THKdoC`FS^t}Jd2 z>;8X>i*I&6#^T1{A?e`!HCfy-XIS+p+r7Y0#~y&utj{#CS{lj=e@$@em>Y-tRvcV> zd2F^boD+%VWEMGbc_yT6F@kK(*qt=Hz(vY-&*~@13jq+oh>V6xLW3qPA+fzbn`0}FOyphlDE|FRyUcz;;V`4TaYxg>SVi2O!Vs`g$p&;nKNqJJ0~AiS!0e-ZNQm zn2HICx6{udF5XJ@RwHAMzSHc&jqOar(&G3j$R}numUW#&(3kom2(|TaRs?cd?Z2T% z`m!#PDHsB788$qw;gxrWbDdtDl5$IK&n)LBbcy5N%fC3##B!~T$eB}necB3FRca%V z{y|1u&6`Oo4ur9(*2v^0gfx?e(Hy!UAta+vf#u!GlaH!OzFTL(hKenXl8sbSabH;I zx5%{iHOiaMki1gH{jR4>dF8o&d*eFJVk1y~u`#sBiYe${y17|Ll6mj-s`M~^?74rX z>grQ!KaYM3$x0JJJoya6jj~+AgAi#5Fj)2u%qpWZleW5klRt#^qgK1i`Yn1$yS$5 z*vw^P5rz8UnE7N&LenSPJpvTe!qUPe37A_66aw^RoNu8rH(q;P^AavR=FN>zXg3eT z=S3$W69Qdd{e+S=*u#ueM?b4RB6DDwCfmc~vq*@nQ0Wk+Lr$-Pe?mxT zx+Y-~)|mnR*b{NlU_{_jqWDxdo3y2Mui4XEi`_ye%UgMqFpb!Rhy;>~l1QE+unnIWrh-4}bZODPq=7)Cu{;_WUy+(CqjVXMgv6 zYUH*qWU|-0(03zu9wkjA+)OP2ji6JTXr+>$53X*!9>)R%8GMPLT^~&yy<zTg^WoCwV5_@!M_NyaM}d$Wa#K`6O+RRr?%Y(J@Ar1*XR(8y^4)%a*hT54 zGw6(7AXkmW2k^}pv;j1ZZwAwFC8&d#yLi_=Y-}vPP z|Kh`+{pFXx^;|~IKTqmws^`~O+{ZbAeM^>_0ebBOCnw0WqUI>+xY+8?F7=1QP0bC@ zCRWD7ugw4G*Z%g%pwE4H(9O?@MZV$)cx~ImAOF{1{zhO!@PbcaS^KgzvSSip@BuSx zzSn!FcAV02@x=7#BBIjAJ`=&5AFop^b@;mT&U#Gr@gvVp^)T;3kSoa(`6Q|^fB0wr z;g|GeH-x$Fe&GRAU3YHl27gZ}FNV02qH_VuLc2HaGMZhBqTQbOVI?!(iL4x*C$+2x zT8csGubJ?Ti@FIPxfzZZ1V*9?L-~H0_;Q`viy4mZ);B^6Zb|)Ths%{xAPL-e44|-v zo+9zQY|KK`AD~$15K!_17`7oH<%X3uVP&&IcAcu0e_8nM1?8DFXQQw7I_(8nTiErQ z+mtE^wr}k5t;4ZIYN8*}^sFjDI=W%bMvgneS(Ob;lJ5v`Z}=LTUmM!Im5r9e_eJZ4 zWUxPVLi*(-o;@!8fs5wUE^fj_No%i``XFw!bM!PK4T{t^p|rt+w=E=)qLffR}|5_>a7SGA!VUR1&p!2rSwp?7wN|&y=>;% z<>hD`g@TYVA@vzM4;`?0I%5ef+$O|tLKtN)^l%{5hcDRM0?uESAj{t1LK}sq)b-{DIQD2`u^oL&#CpfZzsjf`C?0cE%B^<0+~gso^A~QaIg8 z>}NO^igp`#01WBlQ_1sd%V7C(nQcHp)aXFs8IGz9ulfEtqN_04z!9+Bh2Ew@J}XX$ z7N}|Jikqw8c%K8st6%-*GbcOK5JUFXh?c2}mlk4_CdF))$O-GiFofb|>}4URhxS-l zF&3Vo9Q#54P&d2FErCS0M zUPFzcLL-YR+@q;BL5QV~kf(~uuidqs&21$5X?vxvS4!Z01Ou3|*k2h)qt!*lQLPcDKhjZW8hc97_z5>1nyM$Y;-?3k z?Yud%LA0UOC;*!~u^6b0T$L)F$-+@ZU5d5SwkNH2lzXfb$6zK_;b`?Ul_(_$+N%~i z^o^j01RYW+$)?@HtF3NtN7apXqfDc(?SJnHR`dc`0Ms+q9*11;i> zPH+1`{#2EVy&D!0`BQg`#$W?+$RO~!=B=iO&viJh;E4CHojXj-ceZeIyt@XI5yCoe z9;XFH6Nv~$tTq+%Z!3nFj#j{HhFYe!F3dOjr|esyA`BG^i_`=*g23vvj!1iefPTfB zuwH;`nF^7-*p9*#Yln_F(-C zKM16Z7t5s^0vv5YhaMH8PS8P=2P8~4wPDJ(C{W+6j-favI=#WCaOem!W^n}Qc42C6 z4n$(F8CI-bS{rG!#5O%$UD}*MFLPGntK%1@wrFTVM;_iJrRb(%Z{x;gp$#&6xo?eT ztRt89tcPuG10whGVsvP2i!x1GTmxEu&;)A_x`kYi$#3_gb{dFB#J||GVsO=>m9hU`JUrIK&Th9d+pXSUI?W2eIC5@t z)$B^#9c?XA`F)|EBYT>bnFsyQkYgB|cG!tI+6N<4Ppak!aguo2jhUM;HTFgwB#Xl^ zuR{}g**Gb+M%XF;AA4{1TW6Q0_aR6pcDkK*x2vkBvfcT{>=iIPYL!D|FbVBZ8Wa=|Mn?b}=g@l6aPfD!)%8SeTfMuJWZI2Umv zK!7yRKz`3!d+oj7_Z&+4s;deCTo-~Q@|<_r!`f>->sil|M}c`8zE2iBiMUNwer@rkoprydGnYP*@4VkhN(Cj-f zVkx8lNfd)r%$XI7v+ykFfP0TIp^qz`j6&-;K5tq@DwT|j$KyB~OR#J50kkl2gdb7m z{NwsW!?$k_E|9jyWS`JY4X5MAkk5lwA$p5JlOAHrx7>JM?S%p)vW!)`=VJGf;d8gd zXRR@21q9E8J}A)bJ zs+83EXM23exys#VD}BgHbx4vr_jbO7s#q z0dMmtwNcwPqnAN{JsSnJ&fYcc3(Zfg+OYVj4BssHg{egmJ0`XG`y84^@XpNfNPb6y zAW`wlD!#_&=mN3u&=M#QVcu^P2(;a`$MVL_wc$N+qCNKIkDZ1oq8ZiXF4z-M5P0wI zIEj&qXQvh^(@n7*Dn}{i+=noe>ifu>$vY0EljLNmZ}XoLu4|0Y?Nq%$uB2im+a3=< zs(m23MW`GhT@Ii~OLkmxKI3NDk+30r{!w_|QZbA4LOKM)>2l~RSj}}|ylSwLad6d? zO63xtuqDIc@EeAyy4DDY&dMLHXWgfuwC~5Y*X--Sg#yA`06q9TNA@>wWspU5@vsgij(y<+KPW9)rD5Ro~ z1`T6k0ST8Cs5melEchg90h>ERVDxKusq}wVD&7BdP{<(#nz}o=c0^CQ%VjF;y_B)JevJ+9L?}E zD>qFAf(?nEc4p${@cAxsiUarnz_LMH&c0o$Dr|p;+Kc&H(#`b2kkgu#)XdqyuN1c+ zsj#)2-8V^`a@WdRAsoHsY`4YbY^B1=^*~|@f{HP0@7VX2QqfR%hZr|aH{8)8W#o(} z^m+;Kp%U?z_SgZ9t(pI!;RkdOi9i*CEBCDKJlsOP2&e711`WyUMF&o{0}xj@Q^pP@ zXlwegg=4~Jlx&B*g4!M-8~Si`vtH~;(KhCu3lTgl36@Q@RF+AL+Vx5>1hIGjTGE#L!cR8*M4I*3Gv_L?87Sm2LHCuWoJ;v_^s~3V1RP zO9SKn;8j%|`bsvhk`>}c^@I4a9!*by%S@k=gB^N$-_VC3Y zfAQUi@BYb`f39lip#w^eC+!SvF~wRsCFM;bu~To&XW1E;VDSiy+9NO`k4$^iMOKV! zCJfn7_NSLkQNH8Lo#Cu6_*2UHB?ZJ!=KR#i3r`t85&zLyA&-l$myuYskiE6AIb|_y zPp@Pz5|JQ%K4?8|5K@e}P0iGq83(P~`lFJDxj^1K(SrjFlcw#+B#6UD4Q;8UGt|pD zqt%6h&=oAB%g!r$axfg4g`cjVt5onPWW(nW(wa_e$D`*?h`c(1Z!mMMaysxRf#6LG z1wRC97GT8|jVccv?>Q-kiw8LF&EGPd8+c=nwS^v;08YRzU7XCzh>=nnkz)kwy>fkk z8WTw?uhqt{2zZCBYzeB5;?F)RWNHd~TZO8$$^w&KJSfi40;;|~O0D#OqH)w%IQhsA zf)$~f>YP)I6d}C=*peC5Q_G4f`GE({j+mZsH?H^88fufRGkghmucQiQ70(veFQ*Ff z^fWpb1{v_~+z@X|;>9UBnX;v{pfK+E5a^vRYS&bPOiItD{gHZdDN(`+{{ccZ@vP{g za8Kcg=mE^Vvy?m*)Zf4;fCk?RKRzVB&_&T~5L-KCW<2{sitniw)OT_2N&&U(=1`cr2m-TU&Un|~$)M4m&K?ZEfYz_P0J*?yz$&y(m`y+85yTzXH@D84AD`dY?nj+e(P3fVqu>7Y{x4|V~Z5ycp) zh9K&iS|bg}3iTm0k?Tsr&porOs&=%uIqvJAf3&`HXe`^fCWb73uB;b6_hvSIE;+oR zH^&zu=X8INJJHIkQZO^1a^e<)qyW|f-r)q9dr&CzrgRT=wB)VGV_hMBpSZSKta6q} z|DeWf+pP{-sUC{^;kq)Wf!@a>LZx zP(vX?hYkz(Fir8`vPo17hW!LMR*Z=;3RI}H7(E>lM-@ixObg0Es9UgO*g#GWnRs)z zBcW_C)7H7eb4r>bs4W4I+e~hNsAQ? zmpTiV_zU)e9q)N{n<5(>P7OEFm(-q;H?Tq%d-{dhwaxMM)8%_^d|_<>TnG;=in$l5 z#dy~1AS>>$SWIyi9?{;oeV@*SWlL`}J;vrpsfG17GX%V4DO5iFesg8 z&_0N$k7lO`)cP!uycXpnf7hVF@uTK~M!nz&=G(WPIM~TjD&kzAZMEzEw2o`GQQ@me z871cbK>9#2B`u4JP*pNctTT1u$#h)}+vjIf?n;t`Z6#DT4kaB%<|XL{Sh|lTQ*{2< ztcncFM>fS!HIwf3m5wv%RsVi*?7O7lM`u$$Bbn0tl(H$Usmuy_5~jFoLCMWe0ZXnR z-jBn@bfTsCb3s;(xL_;W@u2ELBd}tfVgkmLjV)`a)WmyoMAOu{4m!8}*shJ>xM06N zQg@B-)*8hXHs9oYa`h$?fl?%c#M@Xl zRpdAGV8q1p3~MyGF)=!gh7l&Pe7N4Y-SjNO@6*X@5^kK7P9K}!n8lw!Jqf)ZtmRd$WuxkWoJ|&9Wsr z9gX^vjKi25i#>de6(z#MOY2J956^f<@Wg}NfbvkpF*;O>_7 zxXBGw7%*(>^bk>S5gu!j@>s3(q6Oml!jen=CJAk)1-Ynx1x^)5v~umj|F27R-M3>~ zDvg)(kmg2rG{E8)?KLtJ^qM)N7W@gm_O612-_dMh#20;!4v zb1S#o&wAYaM3nc|U?w5{v@u^lG}$a@km9;BW<}Vb<@S!WN^xVvI=kt$xHf_g7=-DL>PIPO~1F9~mDX0a+M^AFPt#=Fd`3#E6$#k#R zG+$GB-=l`C8QJt=k%btJLs?KCgH&s7nx$A^Ux*CRdwaWH(R{ldIuibq0?OWWv~e=f zd3RxDQPNBu1|HbYA*+2rmc4hrKXKbXxahql1QQ_fIQoe~lvz}Or`@ssENol*Y!gav zEvOWcgS~sT@0h<$-5PD1mfj;Mp;Ed*i$ME1$Md33#1ze>2Prr-57jJ zAtGyge{Q9l0Rh2`saOV>vSNji)5HEwd4im-iShuDvsSST_C=7a%HMWJOD1W!~@6G z{16{5)fL|MU+pQFKn?`j&M_LG@t|EvAXzxlE0}KZe=8O7{Eu=>W>M!`qamZ#qy~m! zS}urp?CF+PtB0A%HQG8=6n==zTURGS&QL6^tYo3{e0JETZmhg*wJ*aIe^gPW{`|+t za9G#e{8;Nuyrm@7%+z4$8qLGm=Ucg8W#{VYs?9UK=*~B`r-T=i^-yC)_Z2?&orZkP z)xi!G?tn!V#fPUe{&@tKRYsJxv9v+~dy9=D_%(-Z;ew~yB2!C8ap#WdjYun{YG;~1 zwR{U)+p3e(Ix6%yrUwTNfuf2P(+#oh%dI|? z)>q_W>#ck{4c|}NF>O-40mCwaj@yk^JXonr@?*|u|7;CSD_kD6*TPUl5E1nQpHJ~`3*N2z6VTv ztSYd6v!|of`Nh!~xpN^w+GSl)%CEN18 zvHbizww+pk9Etu3HHAr$^K_?&{>t3!S3Bcweklz+Uw*D`O&nO0-p+^B{B(b!)Sl;u zQ!;}WBdIwcX9&oxbHS5QYF@#M2$pHYSU6H=gN--L*c<${jpW|$bECfy0G?ctlm&`^?#Yx__ z`g{!S<8L~1Giset@QlC{sAOx%f+jP+#nHL3$=QI$*cJl3Mf_=*@8v~SdRCpTNn658 zdTrR9S(E+1Asf;V8dr-(uqx%9#O@rI6V(d0*k2qWX~WoV0E!)Hbhgv=lzhe!%>|Ey z@L|CG`wMb-QTwfK=yTV*Pfx8kbnAzwYlg}w|I&}d5IthFa^R8Dv?F#zu`%-vmC*_g z^mJXj?!ctpKs@7*-qhGpi_>I7Zb@3647^}I(ZplBVf}_i4E$FmAJr77hYx*4)h@@# z&#d}OwQw)?p@PpoCo^gXS$fHYHI>t|$;YSn>Tut_2r%bSNf#it3v-(3{)X}3^Lu$` zXEbdMRZROml8<)s?U~GfgU)~dq&o%GUf0DXFvEUU1EB?~tF7(;LTVM$87D-^#@W6a zqARDIcZZm|oSG;sRr4MwS(C_v^i)|=(txPMTV$hmf@$q{)?Nsfi#eRLYZT zL(jpX*|Qgnq^)8tFBD9zO`0NPo{yvWl6ibMWGw_I9*VVr7>ufqy16s)BJraX@0wMK z2dstsfS(BPXtPVp1-YQ98F-C(#aqWJ54I4PM?9dk@uK{#=;B%EA*ZcXePYE#w5tl$x4KuggYE*m{f>eo>al;sK&x zgo7~gAyKI9q50YBF~>jX%kou#oCZnENN$|BpfMoe9! z5Mp@lmQE0Ry=9(Ubtc|i)rlW}Yvw(+APbCC^F4(>w%BrEX?jqnJ;nUnDej$U38eDy zr$ZD|s}tT%c>`McOjxu>8Zq|mb3k0cO&f#N=QBcr-;xDJb)>&Y9CeAe$ik>1v|GD$~%>d^|aBnwP!FV}7C z!c%_XYz0-5MW@^%Kd3Fkmx;eak;)uRZ4NRRXNJ$L{>o?V9QcmyvW{` zmE&@BP{B+<2k;_hkOklHrqOG#E*_64oPV0=$tbkR0Fc7*%XJUh@@`O@v7rvK7YBRK zZxwdx7yM_yn?uB@&-x1=jp3s{d~ju$9{&38Joz=C@no)$fiqRUPI%4-bkiqc7Z zFRdB50<0^;ZY7}_Yl@-*!YNBQJ8!>OeqPwM01;GvdpwqGkCAp1k@Vw+QfWq{IUkDL z{1cxi3*oKUr&33z$G+QS?Ur)0>dQDjjMQUa?u~5&_R!MsDi$qUHlMx)019vz!^Z;8 zYigSX-cTf5r8)9qm2P!?u|#{Y)lWrZ{+yk-EOJ z>hZijyqq{EttDhC7X~eO*`(1MREn)L1qCcVGdBfws;cj-l8MJ9M3icckTNVTSd6Vm(J2z`gu;LX6b!S&RD>K0oOIZ7Qa0T(A9ZE-Xw1K}g?^A3 zv?_12njR$lmE%bj8emuK=MD6>L|r4Pr(Gp6G82{4YR*II`mSb#(&yq-{>aEpQCYtQ zW1${ZlYW$S^_Olg!q4zGSUc~$^~DGsSF^ZL!_g{QZcFd&`V_1YtJg|O`&D~)w17~z zNqe_?+mFmOeyF-3M7!&*$m}+j>Rk>U}%AwZ=l{_$BUvow%@{6I9lATMbvu@ zJn}Wr_ar*N?lNL-lPrq|JgG;B?Fb4;j6iN3cv>&~x+xcuoAu2W)yoMu`x8^F@OcTE ze*RRkAk%jnec9$m`4Uq@u=-5*5kKpVE|jHek6M5~ouXkJ;#q)WM9CEppKHf8D?`QT z<|pu>k4=Y;>U3O#U?IDOV1+DV^2TrnWhFaR@GUEurmIQ*LwkN%6CQn=nM7j4kd%F7 z8)O-6PRF<2TlHd6|L-34j3$;a9rsHcD!Gv`fjwkx@KhT4xfbu^3v1LgbnQw|a4)lH zInDQx@-|2hpdDQ+KyOjZApa$L#p$TfC1yT-P2*3-a(i#i7H7Wq7DYj8uEo zKVtDdI&Elyv<(8Os}B+oJ{;bLpEFY3HypNj7`(FmR+^#h*R_EAlVL2L4jCECTK(9T zQwFa|7VqQpHhy$*gP`ciI}A;K=nVLrsVWw)ZSWfDzx;SZJ<7Q-OF9%BNxsu6)rLI#1ny?YLn&p1@H+3hbgaAHM{fuKa$U}Z0Kwwnk%wO zULfW^UaeR}=NcZ&{lfNYCov58WhHKeby2ORn#)ksR(v`Ao|k#A6gh+;!o!VBKy#2q zrLl{xCl6Mc!uxZ3AaguhT{xxnk0!$bjp2K5*gQ=>Ll+Hxl{{tR*Sd?HPC^xj*zr4WzrQ-UI6Mzxk1=NtzmH;=+~=gD2mfF^{HrvOnM!9}7~3t>eSr{`bH9*1z!j;pN}_ z^4EUVW(O`|(16ka{%8Nu_kQ7fsq0Wl&+){Xoa*BbKl;NjzxD86{?jLa;oPB!PV`DzxV%q@oV3YF=0Jv^@~(+4>TOExM+98fI!mz`|6T^aprq}_7~IFSym7K z>3{v@UtTj{#r0?8T580^zO{|jy|nhyh|LyzZS~=A{K@ye{mZm!>#I?a?GStDZ$13? z|L+&S@ULqE7pC2bwOzD9gl*P0trn0O7fF5i^MCN=UwT;opP&4>hl~I7$-mNQH5yaQ z_v!0|**qqVW$%=#l6>zc(14IE2}K~A;|KEZdc468hz(QJgHAY#SI3v8U^Hl6 z#my}rl(WqCfz++*{lUexw7n4?y`|k)gwOPSWXVBkoMrm^ueQl6T`pg@_N?}iSgdW4 zGV!s`wS>V98skLd4W5t;e%Ue(Y>xmKdSYEXC(s68VKwM) z(IO9+zbbUuH)@x@k zM#3FQ1UP6^=N=yv;^-iBVSFJx@0zIaSEmt30%Q*ANT%FgSg$B1MwW zYE=_z(IRKnygkA&$b&G8!vmaHQ}2P5h#D7;{e}^jtfk=4p@)RcFLUu+AV4-8|$8pXk*Ne4)ruQ+iKj1s}fEg3$auM`Gpglfk$e%e;5-v zfGHI(AKunXGK)rY)(P`N6Mdm$m{zB?JxU)m)^}P=&tA`^54JxCmu&+UCploqTL6Vu zoPhmTbRq>uNkcx%cV}+bm2`Ywx{M`WOnR}IX$Y8>r}d|kS7>#~VsMfu#vYg*Rv+cG zHjGk%e2^r{_-x)8N9sC2b_4$=ZAoP^`Ua0kHkqk`jO(LT*>187b|Cl&5b!G%kL+ zWeWHnMR~Vx!)kJxmErg8mUo+v&i@EU63igV5&B^&npnH7cwWssUBuOUedSMS9N>) zwx);+mNjD!BX_-ww&mS8oR0RUCpbG?9U$$JI;<*3gidGQEdQ3NaZ;2)n z9*f8)mxmlgr~>G4>gD48hd=tGFTb<&5}iX%q}EV$w-`gFA!vO@DKPA};wKG_d+2|u zvl(H!J5}K&^yMq8%#VoD3-n_jyFJGsGgUZIY&$ zOjrIKaeM|JZ1?(T1xt?>T&mTc^tM`$Y^dfPJBkIKKiHZ&oku(%YGQ{iLub7>B`E91 zJ%eNAZpHFSb;4(1Xy8iXQH?;qL+}#Qlg;+|!~gidKKb@~?4j1Ut5^z9RyxRW(p08Q z_P9Ps%EEZ~qyOc}w;C-(lcy+)sd7ZhQ@3nJC%Sdg69_k~)2GOyq#>SKIjkQkJw{k_ zXW%rpjl8hmhbO(8p9#tO%5LOs9EQy0(QuGkuAI;HaO(6CFRl^Xk^6C1MgA-lwqEYj z6&xXmX%%09;$SKj4^R^|k89Bi1myRtn?2EP?O_F zXdIYd0$@5Gyb~nlpP#;H%7Nqw1+n1_;|qwbj7ojMya*Fpt`0J>zzLqiESKpmBNSGd zh)hyfe5hwAWav4Y)0-ZI-`y}R>Q|lAVO$)B?`2UJOD5^iD$qKF1Gq!G`Avi3TO?E1 zrUX9?!fioehhCHP7O;K@xZva}?dk40@rKvq!^;*kSBs|}>Zqaj@7>AI?5>quXP-VJ zYu60-J&uRiMJEResFM^EWrDZHe^>@2gjC>4qdKb`j>=*Y{=HblW_B05H&1S1BcR#lYb} zJDAaLM73Pqp80+{snVNNd;gsBmN`Ot>&3f#n!&f)KKN&%O8tk0xtpwBWj({&b`Nib zNE_lYdvkCoSI*};o7zqHl-hHBneBUodaZ{KOPPbG^W@&QN5KQ%^Coh? z%GF`7q@GW&w?8DK12s?Lyy(5h+y>s0PfmPRZdP_h87WS}xK7@ZyzoZ9Nv1X7_vMsJ zL(hYChdW=Wz2&IO>+YO*z;c$5xU3)WVxx%zfx@12;ibcC%2+8^xm`w8c&zn>%l7Yl z6&ukxUSNU|M9h1TI^of3xte!PkE+e1@x<~{W0)SG;YNny;zOMqdoE_%3`-pdy*ZL_ zCrJac8t0MSK+XiW?WPcw`2AOtWATtgYg?XPX(F4=ydptpC_1#M@`3oh-`GyS7*^}+ z5IX;Ar7(PrR_B8eqjlNvBy|&r)^OPk>fRh?G+M(=4c_dydI5A?vV=4AGFgq9ZC}VT zcuw8pUWW~5GL>Nn{R&Qvy<7EZk0JX^a`WkRjE<1fnu^(;&UlDsVOwm&SMhX4Xih(C z52rl<>T`m8;-RX-uPv^VB#s%4YAQ#6CKfyXAK(POUi(X!QZ*Obj2i(i(~$t9((TVd z&^jC+(CUKcT4PqvY8$Ss53dnsqqiVQScw6FFkvmBWr!(lve3eamaY< zgmiG#>DVo0K+$Qo4yY;xsKfy}f&iB(#pb=)y?#hdLpP&F78GQqdRn<$JRla0&$Ql{ z6VDDUog<`Kt*5)8V_-wX^hd_g`w zTZpRT1a5f%6FhL8noiY8g%FHX_eI_`m{~63Ah#szj?h(*4hrqTja=v#Fxz8W!t z<}vAw!yd?6qGW9Bu(hp`I%m!(Oi-Mvv!G+$zz+4hmhq5I&c&_R?Wby)W9=@?c_C@y zzQd2C)y{PN2;Buz3B57ai3$GOR;Q6b_9tM*rx42=OU3po>_pVZ+F7XFReP8@bvr?j zEshr#cOU}I%tSNENX(8G=k2Guo?lT_qLDN551kkiBxjQ2;}(&?{y<1 z5AUmaxNJlVQKx)w;cn}KX^C1*)(M~25o}J3c}5@ig0TPU81gAEC?b}M@2`v7(B~9h zT~(!rwW$o~hP3?bfCp={8fbMe;)5GwwjL_Kj)jCcmsDh?E?En$W0>E)0WZQ=oRYI* zzf0biAD_DLc%IiMBHp#^1oQ3Km=jDr zt#ruNl+>M+|8#)hENYusQGd%Cwzr|ZiOll*)w65^dS38Iu$ovGu^>|tO`0r}`GCCo z10kOdd7ZV=98Cmb3C*21Qc}{&@l1PT#`1b z?^Hi)-oxKPh*iZY@nyBW_b3)FUn+F$8lO}vq`JY%_z1X=(^_7_OGK4I=IAAri~tDX z`m6m}iGlF4>g|j0hBOugIviYXQI8>V8I494Z(%E|SDV6W=HJh9zlgLJSk3V!6quOu zJoU#pg09O)#gbwQ=p7q4z_jW4f7K)d;ebLMzx3GP;uP)g(v;;b2sw)~#eco=qhd_9 zaxtR_L~P$^5TP?8m3nft2d`Hzk$QG$M3B`b{x?k&H1oFYJWqzgI@;QH$%&7O#h_t^ z2c9fiUA$KO1^1@X3-#Eh@I=K>V$qq4mPW2ASr+35SWk@Z>c+KRI8S9(dC0T&n!42B zH!@|ulNRB7fDid;r-vkU6pN6u(6mF)<%dyms@{$|r-xx!exA2iIbxHBnj}p+-)RvE zK}8XPiCVJF;Uhb849#<^fJ{#t`DHUef?&thVAeVjEv>wF;$TmKCXz)WoSYzwA$n}z z^qP5Kn=)IhhJKBo$(0jXENYY)3F^$%wZKcuC3S~|62%=yK?b6}QSxHe3JfPDAq1R~ zjgUZubIN1A7%UE3ob7BctlHc-}%te{=?V?@fgG0I~PPuDs}r1EX|1yPD3Gt#^B zH`mh(l#-6x*0uJ!m=>|J^Jh99QUFu7CPF-_l2e1vUqWX8khqtYp#uAC zg_Idd&Us}|chS^KvAvCeeU8J%kgxXVayrLGL&0ste*_q5p7Czdm(Wr|>VcyY zSWTs}UI4;p;s^d+Tf9r>`kp~PCH@oP$ya+U5@;AbHGmI`2*#7}yZkvnq}Zl65Mnqp zWUBM%g`XGSS0lI%{)ZEz_^)=E#hB0#J5R`;+HCtHH!;pgC3oojlG+n4?syB3W+Y|C zn+zVJv77z&irk{;1%rcgvH)xj17nH61U7SW*++~D4=rm-?hwc3jA_lFrnaT{!?9># z%7Xv;Vnf=)kkHhZk+R2XxY+0KOIam12re0Kq0w1JOJdXwyKk(M)7hGK*kL!S_@ARO zQ#ijmo4KS`6E|!eCKcOFK7#X+@+hsH9k&)H-#6kL3)sT$2s~|9@t|y3ZVn(>@2ZE5 zKYa3MIE0PC8YplSO|Bd3Z!X}1&L-1dXj4SH-|rM%P8GT61rqxyNMjQ|eEG*;{MJz8 zOgAZ-d9{aq>RDk6wmyAGch0{{4sW@%5<#_CSO+$wAd9K^of~>I3t5gP{Uj<{|LD>k zFWgCplQeIy-27=So z;`mCPp7D1f@qh>^flEmN6zB~D^8n?jlOO?u;5ENXRpauPeWO!eqRm6xx(93kP!4hz zCqmwUTv#b6=HA*$Yoxk23U|W-c=Ie5@RRYOfG^z{XCtIz8+Zo=5}nBImbh*K>Rdtud6+%M@f7%Cr6E zZj89G^yu^u@t}|T(sJf3HQiX_E4ulf&}XVRW*jdZ9q#F&n8%Z=$;I*T>2DqaB3P(P zgpsXx3qFsu2i>gUjLVx)(+k3%aqCghl(Vf=>|=nkD#)B1uIN)OLDTR8=%P?t_AF+Y zs#irQr$%3bw|#r40K&nA>Ta#qhR__K%a|E(wAZDbG`VY>OL>sRqcEDXvAh@uQN z+AO}gZ*iTuMw!TAwi>hMvV!V*V&L{uUuO{?RcS#O)p%)zZS6Q&%t3%aoM%a&@k$ay zquLw59z?#k5(8GZm6wV;h!|8%ixTEOdXq35FUPY z?a6lu8ls+hxSU$*0|hKV2pG4(yn=`E|M-h)S5zH&s}e=nv#&7E%GG z_qJ7aAbVbwkE-fpM3`VsR(hGnO$=e+{HPIUovO8y zk|PySb94Ks$j3G6*dEM53Ho@801+}-2k+MQA}#4}mz-PW*$TD>0&Vq8wmLbeGB0n6 z{?!y-r53~0&Hdn#KS9spl=n*7CG|;K?a`L^--$TjT)?^WmID^#D=XzWIdtC^zUE+* z(wQ?(Rb_bg^fIE1R5IfUHbM{w^K-zBR8;``1%^m(Zy=rB00VS6{C4H{$=xG%#vrk) zY~64`98H`woDv~7q_pJ9IQW+(@KRY`yEMkPVJ8?1`v@2io1SFd%2?|GM%|oyH{84v zkfj?}(SEuCYG$8u$s%XQHArvaaW5_a2n#*LJp`xE_QY6-)cO3beb9?9F))ap14CJ{ zM|)K(kMi)(R;aOJx%<@(+crERo=QhV2aaGU5xOp|z~uiqEbT*SXs;U)YvZA`gp7C> z*2pPp^!3!nd4=@x)Yr>%ecO|HkDVpVn~Ue4vG24eTmM(ibnaM^{`q0#;&6bs%VJb{ zuymr;8+~k>YYs;3(>uz)6~!ovBP(TIsrE0c&H2n_6&u2rAHZP8I?KoWnqQYGOIWCk z0(Mm8E_^X0SEEZgEBGZNV18CMdlrb`9p{@Q8k&)IcC-tucWM5-(U2eh@fY}xW~``| zLR$lii*RASZHh^V>^S{W&eyrzDzWwqczJKiwQ5(O_0Bw=@`;}PY`?~@=w0gPdic>R zs(}B4y(hoq)OYtzVVLK_qgltv$X96jy}lWIBvFD#q(mTYfBPeR~c0A;aOQplSDIXh%1yHR$m5Tx-kRE~|mFHhJkZmk040Z4J?NNE_kMhhKt$fd%2e>Tr z;eSk!kX7q}53VJh3;1IVU~4ADVJnkjlE8i8$(E>WR!rUy;DG!h830@BC?x+-=2vGyF zKYT`kIP)(-OOlFyB-~?c1}DN06oTkrU)lgq0~hs!i;Sys33456VT$OKTcO!a1$IoZ zy&ea3jggrgh25P7infxMDR@fwD5s|fVd|?TpGh7Edpd4xeY^DLHvdLkh$yd>nf-J| z_OB_Tt5dRO(YipcFQy+o{Ea{O-gi`GE$b0u`pFcm0Jccan#^iV$Fe6ZhUVjGSL@>i z_jkFC*rq)ypU6Sc8Uqv7;BX;Ss&UW#3H9?EhjC~Z#phub=v8OLSXR6>? z`X%{%2P$vGL?K_93D-Yl+Z?CBO8XRhFL1UM^_!1O+Vya5hH_5zZc8%Y6#g;)iiaur z)peVN`&Z<6UNWS@uc1k}5s>XJa=K+mlY!9@s-(4+y^6`q;mHA!0j%b%AMTBR@RAI- z0m;+M54%k6FZ?vsZe|N)uujOO&I!*JLD@^dvy5sRlttgg%XB!&S`Xa5mLiSfFMG&H zDy?`LmSFbgAIkL^G%%&@G6XpT?_oO6J+c>wQcpuSajg;6;*AmWDoqsDnd7d<<;90Q zX(wl)juOg-bD`S8b>k!(tz;C0BXKl_S)QRx(PVSdv^ACnm`Zag7${Xh>-cP~0WZxj zu+eF^>~?vtyq!bMX#aM7R;#M4UQFCiEuc@ok+%Y1_zbHGJ5g3T1qdPUoXuuizL|A^ z_kEgmCgfwN=}4@Q zySVU`C{{e6s-@|_){6w34B9}+8y+ftRt_3e(E*78xl$%iJr|V}g_0#@Q%Ui6PcbSM zk55-7bdoI)Hy^7O2sF=f53Lizd#oErP zNP^zN!H1V4(_G-l6(kT;6pG#m;*o2MB;hIS#>RWLZI64XG^GLzKV}4xFX9`u< z^4Z=RZ%WCIq6;>dwwnez$M&=T3z*CL1I^+9m4y_w?B?!&{UynlcH5sd=H>(K5a4pm`Q5j93~4HVT(y9#g#L{I5@MBXe3}fvIU5`o1?PA$j52 z*{rq2lBZjj-_*4Q zI?(M~&2t1#egJY-;+@PK!2AXC&kePQ2O7}=V#Vu`^lTj4*1z52W zt*o#S*8Vm^Db9d56b_3qorkov#(JEv;l&NLI=&!dq4qArGNg{L8%JIu+wtA@+K8Rg zF*y0bxPJb3G(gIRh?Id4vHSs?4kMUjG6&*p2E>s}sfE0`GOl(mN~b1SzI?s4i`2>~ zs~~vX=e|IHtPu@bH_D5n>X9{yUSH=fMtz5E87-qSv{%Ii77c@f1#h?+9Ev~+dSpE| z7xI@|ZxI);&^h%aQnHhk-vS5{rNqd^1zO9EQ!ElzF+!nbqp}pHP?m6nt!~BLbxX6= z8h-T$8QB~%oegyjVClu#U~uv<*8k4akOGpr`-<5BX@-rC?MKJ-s*)H|ySBA=#3P*ik<{L!OQK}15#8OAO zb$v()P93u`_bVe-7M8VPG`y+7`O(=4ex$0Pnnb7@?d#_YMG<ZXfR)bP2*m#*-2zFuO@UKLzxB9`rl3~!D)b0o+=9|x zegrhG!DkaFb=GAInl-ppAwfp}r|yq^p$l9x)}QTR{+&lhz~I^i#m5|}7#|DiV$1Tm z>H$NUO(^)*h&;(t=-h4Lo4C&F&4)L?^yC*!d)A=5O8X2eEiOwZrA^FA^@b`gM59wK zjuDT8)Juc%4i>KQNDUM-%fLk`k!lrlEm4lvwe}QOigUu$Q_ZJbyHK5ywp3n~2e6IC z`33&qHK=~#r*M;z$BD}2L-L7KUdRKa+}>XoLqKVxvheLt9PveFg12fvz{9Wn_LJX| zJQYx|mK!@)X5qCm&MJx@dMMuh6Gk@?Rfq9TW}Yh25t5ZnXjWd547^}yLFDo%*hcDz z;FIuh(9}n4xZj1>MP`$gVP*?GTV1Pos4?^|ly>a`q8_J~2hna8>;xxADOWY`Y31`% z(ROyeTi@4ul)I^7u5OJKdI!p-QEcIfez#|Cj}+%nm6`Bn<~?1c@9XZ|DmNYb2)cSX z4c=6eLyp?cFKlja%Z0g)kb~n4f}wns6ocq|vqko5()jOsa-Gg9s!gS0t)f4qM%K5hN@biMlj*e&!sfhVbXQpInTd})L~O01LWE^sN2^4m`u5#cCF%eK#x zjc7We>_xmP5F|ed`1rv-CGBPwBlBMjm6Sh$_!s-)@RD7T+`D07G(ox{4qA984*0ZLxR>5q=&6YDIUkbJwjrnRexKPow# zM)_y@0;_nfifjol9WG9ba%iLxI>ou>rg#8Ak!(#;24X7Bv${7n*Tx2$-2yCQMWfiR ztTUDr1}#khx1XLO6ZKeob6>;*5PfQ-};7M1G3#RY002CNf}?z}LMt2pTyVyUW& zi-nz6bU$GssX1aUqOk1A6W)4Rgaae}EGtq>?L;&h!=-4NVs6aAwSKx`eBa=EHF{d7 z&K{%KVw6&+BJjiu99)K9rw(vD6qy?z8N`%Q&Ry{J&-`Uxq-?+Z`CI)|BB%$e3vYITZx!APxl z5Cb#E)H?WHUewXhPwn4j|pA!oaPFR`Y4;iKJI=-(kqbs;NdR zeU=w^j&lc13T!e@L6zsQVUBb#i_bGdJ!Av{bq&8??TpnyA&F z10;bL^5b0xT62rg`Nr3(x%%#U<5rSm;9J;*M9m?? z2T@S;x`i92N%6BI21#OS1zEbz!@OH==Hd5@0#|hgaKv&GX}pUQ)KQK%9Ry!Qm}hu> zXe5X$L{rxURWM@YE~f!yDBeYh_;6yXFMVa~i$=*ts!?^r%RTK$WQw7h9^5&0EfRxN zWJN+c+&?9}-l+0R7CMDGZe?A@Gt86k|tuaE2pW3P|)Y$!)WKMO}Wa_P>T& z*cAj($Gc=$s+(JIqy(C;exfzFyQluP3r@=lTD|r8oH&tF58s)^) z6!N7c^|UArkT(>`b6)Of){Ch&I0Kz_b#HlZbx=GZ2jU3AC89W@>0+{?Ekud40881Y z-YsntA^jXI{253hz!!=!Pe*&Y9#bfGNXpVQ>NKcv?!?!@9Q7bZKgw+@1xb^+pVfl5 zMxLu@jl%|;UW@jw)9%X;o4FGh#ZDhboSmT+f!{O{vyoxAt=V&h1fFga1lefdg0qb^ z=XR6_Y;7Pfn5RJ3H1rWMnFM(PQ`wqwB!q2y)FjvuL!>feDx%y*^x4KFXco@M5-VPY zmmp;@b(ggTis!7NHK{^yP^si9HP=GjH8Igyp$fQJDAB4y(Yk6Ckq`6zo|x}ACaq2k z+{{i%YiBE(weO;UFE^E-p+?%p_R9i3)+yQexvdp$306`=;?Lp7^S5E))=C7^$wk## zMu(6A^A#fO?wKcLR3k=wFwoI_L%#c5d^?7}Z9VNo)pl&KdY&}LO}df0Wm7T2av5>L z-z!lGu zW?-Vv{y*&=BwVA^#+W%~OIHg`XG7SA7BoQ4GYKhpU&U{^{z|glyGMOv%6B)-5y}d^5$q6*j8f~v)n6%P4 zu)f+xX7m-I6@I>@CDSP24=|d5xOmX-&6T(9$vw>Vo}JV*in4N&uDMG2lFNyLZ?Twg zk;N8O&~fhBS;8*%J?A>!3e}J73Yd2bH~h>U6ry80?NAK`X@PksiV)L8&XjCId(}Iy zSlI>2ju+0c8Sm7;jOu}>r#pMonlIWGfK)I745fQIm+NMVS*^(+UDHOyyk1YfbsA#H z`z6gRvT`yyV(2ZrRmUf42XzmqD(YtPXT@ zYj^BMKB2gVjxn{5ZE2<2$S}RCJkwfHB#Z|nQl1t%i?FHBd2i{&ywy3YkS)*I9v8|z zhyG=5SBwsMZedYj%DqA*AL~qOVs=_=V3Ozy97Oc5W0-qu2y|y7(Qy)$@w2nqj$Qfp zya}U3UW42hWJjYdv9M$rBgR+vn&pMlcN;r1tf}_MR3|1ZO}1a$z;uo|>2Rs9lh0p| z1oNq`&>jo2iqXe0e&g3X{Kw}!Tr!If=IbeM@JMaWb?(DvSAhqCi1)%U?V8<6a1lKu zK+LBcIG)L2s>&H*bfsigEiyKqRC4e0?qT&??T^+1H5-i^oFVB*tYH|L&YQ-3=kpv8 zogju_Lj^{u&9rGBxNiH84w&L-#A{AVF#l8!(y*1tZ(^Ur-^fG*4cr;#^4RVgF9no*7Bk(fCr~Gj?R-3cWk{qlSPH zTDM&=gJd}C37rRU8`fivfo(Mn*Z>FR&G7Khisxf=f_!1-{NU0hii4=bv3yBfDLnIVaU9k zK6XQGr-Qw_MtAr_fmNNL(soXJ?k%7(U@MhLad0UriV^aKOJ@lSE^$1tNVQ8H^|F*X zvA5T$`7ir@MTy$S9F@3%0}=|=7glzNh($fQBgJV@4%8FVMrtG%74y@fhT43)_PI!~ zlsinkbsOH=&$i8EwpkN76vJ7~i_VT?Mp$I63K_8%YSj8QEA*xnTmJ8%8E>k^rA0Rd zx?xNp4?5-LqzEcxCaNf?<>}Z0&5p-74@gZP{VOBi4F=2(h`EY$TVJsL1XQh%oNKkV zu^Ju)7hVFzlo&LV;z_2{K*rWXh@9cab&?%!E=2XW3`jcvr#b)I_F7J9ijFxxJqTqF zBnO1Fs{wDifE?FA(_Raf`e#A z`sexWu!eWWhnPnxe$t9}<%~=q)-raoM@yr;24->f8hpL{Hf9$4$?)v#oKwyYVG@AK znLIIf(JXT}l~CrStxc1ilBNt}o{{?j-6@rcw+BJ*NpYN4n8vnZj#eg;Mmeq%L8s<0 zAHVKQRxB`;Na`i#=ueykS4FIHB8P7|LqQVqrRh%DxVOf6u1sf+Xe*ekg@&*giznnB zP#*dbkxyFOrIp?5DK5Q}U~r*7Dpq*h_MEHeAOxm|v+w9GI7B${@zq%7vN zfXmwt9r2*-%s+VDB&HNBpH_)!@wug|M#VHc*!v@$6t<$|sXMCC226O3H&fVo>+;gz zKlt|Aw>lE>WH|}*c2Rc2q@jxdb6o)JLFMp{=|)UJXTsGph?W|KJfc)RYGE;4I*&b$ zmuF*OG_JN5p8R!po93+BrU0n7@^&ybM6-ymv9SClrlFjgsB)qxb@I?!q!cuAeO19T z>QnfCf>X~xEHI-7!g;-5!ptTb2O*BlA=SH(@IW3NBV&HEkr`%_HYOS)0$d&vq1aZ& zp^(g+#oRfnMaD~`MJA)j(s_{4yV0UPa0es@vaFMSixVlt1k$e2ew8^iYGDsEUN-aGJOx{(U`b4UkSxx&lX3d zxZFusVdRa>Iko84f)Gc;@`K|;s$kfphU*2a`A>yQ(1pcCFQGB(!70c2%PDKcLN%5+ zi-<)@$Q5xOR@2W40Z%SRj0L;|JrmG~^jtZoYRQF~(me~bU5~UGBLQTap*4X-+<-7dnbn~LuT$&=m-t;-O z4;;lOB%6@I0=cd}$d@c{?|O!oUV#TScOqwlQtNB626LKS>xC&8IDvoWvRZJtmS4%} zor~%7!`*-LdIwda-=+KZhLsSrNLG#4+!K(P-^fac=T4&U&7~>=9>)Iu7vF9Q>&eyc zpfPY+uBwE6-R{#SS>Q~U!Zkq3(++d;u+t=ZYBq}waU#pf6>C%syYiYKj?-lP{oxY9 z-u8K8svDRVmsT!X2I=P_1I;{(@bd*Oj64CA-dG9Vp1e(AFDC;Ym{wskmn3oJMUd|5 z(bu&7FgyssA}>G@s*{nx&!}*+i?T5jB4qi_jkFpNBezaCLDX2~^P()w?(A-^f*^2m zfS)d{|8S0a5L}_S`63Tuy+o=BRM%mb>!dh}bjCUSiCfyWcz;;?0slt==4otdkvnuD zKV|xf=uzIvA3(!tL=cXp*?VaY9?$jb@A31Q>lWQJy)5Ua@x?VSYU%l*l9jkNbtk$W zoy-B^($^h~&6auojO`s`B{7#IboN)?unl|^#6<<W{?0%9;&c_eHx!mZA5d{zh)`0!w&ldChw`}N-r;u zW!B`hD*K?%y1W35fZ6TL@-aqc=KIz6p$~e8y>(c69Nqd({WIIB+K{pwjZ8u}J*I8Ow!P?r=F83zn43+_n3K}sq=_=e&EXB;#>r#8I6+|#S8iz? zy|?Exi6rLa=(w?;1!XvG`z!LbhP|>`&UJ`vd z33HwPfBbHZ?B~&&`Rf0Daz*Ra|HrX$3Swt2*Ulh4HhW{`my@$!zua~@-pbumjHH-v z(>K)@tY_xR_?Xs9QTq)6?y&f~`W^MkpD{8V$Bzw7Yh*B{*VC(1_B*x8q?UfPJU@TB zeSy-%{sv{@r1eI@`N|od&CYK1)~RhCd>|KmM?xdIgf)hOD1b0G+aliC8Mw(flTbM4 z$q7)5v7>ATA{?)jTJz65CyJWlrk5{~msSDa^7G{n>(9?`*5AzBZfwuatB;DBaxc#V z;a@CZ<35lfoqAL5^K5l>u^Adhs&{5;r{N737^o1s9D*Z~7Txc-$CIZ>;WxSBp(AR! zL5nnZ>QP6pTGNRVfy*zIlmn1&$75gP)tSwG-KiIhgZ*MKCC^TeY$>ecw!{|MHygl zq`A=-9lEBict(vQiLPLYV?Eep8v@5!LSaRiP<;U2AIGZZxPTb_j&SVl%W>j8Z$tOG zuCL9$NhmFnMjn-%cTat9l{B3&>y1=lkOu%bVLL>OkwtF0SZuw7zuu zVSVlci+Fu}-|$1haN~58nc}dBeB$!jy;i+S(hk z=Ah%nqFcYK*MWcW=3^_IL}h;f&EooG&{_-aRUUQpqd(^*s34PUE93KWKIc6vLu6ZW zXLsRwdo*;cZoHP<)_Rsz%h#y4Tw0jQy64|lTbFcbb;}>h^vJpWjk3e6F)Osvkd9rHQBzP7iPiFS^-QaNb?!udz>T&mPK}Zu5+Q?Z@LVlNn4@ItwK{pTU`V`nmTS*e?K0@M3{m<_ z8mX<;XR;pt;$VV@E~6>+v$-kFKZJBk$Ag9srk!rvn_lUiN$^Mu#mK3=jl=2tlP5B% zgZ;6=o_s+WDn=z#ZWCP>DU0ZlD)7n7Z#p;3>Pe94ki=$bb$HOEq0!KKup1XyCQ)Go z^+DK!5ySVf(Hl83ozVl1bDgPgK77$;ZsGCKi%i)^Mz3L*TwsF*<16&MxMbRz!~<`R zFL5pxru$&Hn9!9s`;#UgWmb)}y6AiFf(adqZA;uzPxWXa%j#J&64N_4#*a9_3LZ~1 zZa_4rhS6YXn12NsAM~@hI7cw3>6DDldO6RB=6~q-EH*P#;U}1djlHj3hXjosshy|o zE-YQd@Ck<%1c=z)w+e|o8kbTMd1k%OAfO?c>2C~hY0#`rPz)FJ9|9S*JVY@BIM%f- zINb!jdopS)A0p)cje6sX9f=bNc(t%=C@6LTTJ`2RT|$VcT`I^)X+^D+x3n%nBOihi z)JnHR`Fe)e=Q|}H%Y}@RH=r?Fn%9_ zgj3pHWl@PRFwWwvt6vIl#5DhXf6IgR@6*RYdW_6{Siy9Zt5MH29R$INOnykX5Nl@R zx;fU9B<}`!DIdZiR5x8XJ02kuS4qK*Z%hF?ToDDO_2IHcl8|ekimEwe$`!ILtu*86 zcNg12=GGL7)2UeIHW{Qx-Y(wO=RZDcBJ>cC`#*fSf1to)0x^%`5t;ULGjqH4X8vpC z0d&6mLWDBQ;)C5ZCINCigy6Eg&y_*%_Dp%>)pBct_}$d~+JNG=@n^S0!)!(Ctx|B! z@SK`6sF(X&A84XvjQ}>Cxpc)7w}w#*P(_Q`I$9EQMhLJfx!OZS-{GNF2R6&7S&Et?;$;M^G9uf8f-5N_ z${FKK>HK@>__+{G{eE&6FbSjD)_lG^4xAdyM;4=1(u?(C|K^4m8`YG_sl*T|v2A>h zlpU9u4Sy2#K>W!pO#<@B?rVm@iU>zM6fmxp8vA{nQJw z4sHxo2Tq)-Uzrxwnrh(zG(t)qhk%G2opFN608R|3Gi}gEmNURUJ-&o2j=B%Q1jN)W z$}={;<}Fo3B=R^emuh)Jg>wapE$2Qr)Q}SuPjNv;B0p?;$iDxKbrdZqad>l)!f|u= z^mNPXLB<)0v9A=DJ6+cOfMQ5YmI}X5ghV+MH~0K>ugetq>R)1dRJQkK)4->IV@2najoC2H zk?*8=Bq()yEe@d7NnXrLF^X+ha~8LNbl8`iKnAI@Pugdx)?NFf16lr<>9CsNv9mB2X#Mmh=jKH z#?-)&T&UJSo`SLsrLu0UY3c%yfoK*F-Z@4iuC5jkf0mSzIk^G}W!0))0H?xw-6mgf zVRmhEeErRam{NOWd*xF5wB#EqK9D+`UGKSA($?Vb-eW;_n}5FFu$aa*jHJ&jDDbB* zZx~cvv1MLCSk^YxFp88ctCx008j+KN7cTWwN2J2UF?PyZazMtEQ`Jq39@kd<{}hI* zwVcJ_IOUgd__W<`qwD!olWZ)FHOpC$jZ|htvLm#$#Vtzo~LgSoUV=kY%) z{Y*AMZK4q%u(R83dwFVKa8$Gyxr}asxbSesrNchr^JPSAq};{#tuD=Li6*C5uFM^- zaqB7RVznA4TRs;~ub1cAZ<7<(`Lkvh_LU1Tzj7O?tMC!I<~p1P{QvM&Trv`mh6l=N z)}+qtx(}gju&qNzk{oxn?XW1P3(<`BCzQhTG+t9WyVmpK^BnfxjEvLpO0)HF&(lf{ zAFxB)E1xgxDwq9Yx*O2RmJ3!`uI344Fd}(E<;iE*l1@MQ#+r%7hVtBCBi0jn+s|;R zuj(~nL8QkGoR;zZ&EO6g8G(v7nAL_ACGLX~$;67fYe6?D8UB z10>y2W1wLyym)l6hn?l22b)YE2gNO1#c&&Hwl@9J4g{CP&X1cFl!a)-Sro>od;kAV5ZA)d(E)+q4)`_J< z*t0JgW*^0vBDASf;gAWYBc)=6hp}$5s1QJbR&=`&8zQ@eJ2Kd5=4?5x#Rk|V=wTT z@ix|b&y*nrTA?*@llU2|W&wt(wGmW0SlesKr;yE3T`t=VBZ3oHQM&1q6?}&j^R#28mc=>X>OEFmiSYGK1+fi@ViH*AbsA4I6i9{sKBsS zuLzX@imy*DtzVbcg4Wx4gHH`nu#G+k221i{9bB!o>3iN}5BAqAc z59>zE2i?n!7z_!WB~60CmEei9x*CntvW4J)V^k-ZREcyUTd>8;A$(TdFSu-IIk?+x zNu|hG7O%+E@9e=F7Qt5-3^+8XmYI8{s8uvMQ6tL@a!LO+Dcvxo4Wh|p9?hlxX1Urs zI}7fN6j0^!`ze1bAp&Z&jQN7{0gL-^H|2a)yOmNktBoHNBz2Ril~Q3Rxf?4t2Z5^f z^0K=P7TbL%L99J5*tLIfzYMT|+wBgHt$uEtB3fyTZfg%Wu{?~y*_?@h4Tbyy0$$zwi)`DJ*g&e!(H zaN`>u-%ShIxLmu3vAi??o+86Dz-Ka_=X7eA9w*Mnl{4b_O(>T^oj0bWLc3Kp35Vd3 zp%YP|*t4oShUm%g`Ty|?KwVlecQJeiBnO4D^M=IwWU??g0(<>PB?=Dtj4~}l@QJpY#|6FyxL%-|7W;#E zB=XrTq%rF&=H+wJS1lDcDgYgqa=~B+6MB5thwLSFDy{7KvcjQVXZKvc^KMQg4NoW% zu%XZNE89u(sHo}Vr8zMh%Tiyhh;h0D*?(?UH*wpYJ`~glJDl!Q%$J59Z`gP{6uyv= zkU|X&^SE*D=%hoZbwj^jR5%O6q3k4&mezx<%Q)TzY_&P^1G`DpRaN;{N$|TDgAAVEM2r*m z_<%#k{5zb=QY2KEYDh1s>_RI&RpFITj|G@&gqq9q;lec4rFjqvj6x*~Z}VETH?j<+ zj*M90`RzSm!_g5}Z;`m5oumRv;rZfuxT9f%MD1$!~O@JwU} zN$+E}1>F;UN9{-ckm6SWPD9cya=RdZ%;9Mdf-}rOa1q3AW68wKSe`+3k=>fQZav-R zX`>NKywbEW6t~hdI2TkVOgPbZV_hER+PTqh?%rANC>8A4Y%(%2`*F`E-!zK$w3T&W ziuPlHjStrxb7DEgXZ`x3r@~Z4)c4 zI&w~OE6d}He9r%^`h!dAMq1?^VMF4E#@@Xf@iL9+$9;A+WO*B}N4!qHN9rhbbxLh1 zRGt%R*iB(~oWt|I2y@zw%3-KKbS?Qnq~=03tOGG($rV!WqB0zp-*V6qb26_C^Rb;b#d>12?uyB^b4!YPCa4DhD^|t@?eEOuE(;4i zqgveOisYqyjvkqC4loH_vgbpb-Y_L%5Z4>M7Ux8caBgL~H^o%-CassZB%}9K+%0`U z+D9k_Wm-f!L`{{K`UPad_dJ`g9`h!6#szg@_Aq&;Map%ICFi^XXuHa?5%LS%A~Z1X zF7XOj6X=xQFMAEW>^eQQXz&NxyPPB)*66i%xTn#1`Ye1RI~R7IHt$}zYKpmWFDwsb zH#zfTA6AS>H|zqa@dm9L_*fgy0z5#RXz5K=o3e?7 z6kUt36UXCT&ZDB1__v&~wT3euXTSiD&f*fvnidSshablkmymFPL`f_}$069N6XVc$ zy?`z8idE3eT9E9!Pv7$VG|k|^y5O9N-ebU*e}G~0(9yn>E{fgmQ1($wDmPK|Ru5@4 zqC=sjm4#+Ka)Pubk(RW$ggMP%d<6ZO_|bJv=?A{hRaRytdxI~g&<+>df__bv2QQhI zWR7$a%g#C@QWZG3Y0H}T_t@@0(KYEkB2}WfBZzy^4L1`NS2{zHWgXU>#|}`S!B91h7nByl_^F=d3dWEE|ATBc!MfdZ+Rb$x!&d zC04Nu#+)kVT;8??X293b1+$$9X$Yn>nD|5Mt9PWW?vfWb(@o`@ePZ6n!X+=kbURmQp8 zh$SPV{(QAJq+J9hkX<&F?Ft>H**>KCZJUJIG>c{@o#v8blr}KSBtZG&=2h!}>N&NV zB7jEXS-A_{9Q-1$r>d<_oC)bWm8}uI$M<)~*!&pAqGr%oGhl_eT6$?BNRaxBsh+sdtzp$I{^J zZX%q87?vDbCEpYr;M>~ zc9HA0% zJTb2~GZDe+fu4ir%JnB?q^`xK=d~D5{UIZ1=fxRf52dPY=S@rPfqau4CHMr6svfp80-)Vt*?d5Ya{?n z5Z$&Z(PvWo86LVpk-xmP_c+MRL9ftr`nh#7FC9NDSi*;e;BjxYZ-NZxPOxZB1VlC5 zyTJI%IKe|TbNE1X4D{sw(gqy>A=hvLF?x7XdqQGUT8CK?r5Hs}n`LDDt&QGlfN8Kx zc{2|e$E9N-P$j@q7$bmYBz#RV#5kH#fjf%+yMA>7Pwp<5?t zSU0yKt2y+JPY_ZbFqb%RTIXbYp@Xcn{KZZdhh_WDV-I8=lWpGx1Ol-W*y__VA6JR zThXynQ{`q{luS)oko$uyIb%CSN3e-@saGOADKA-o+QL!nBp~%m!M7mt4=6LzsIB}eiyrt!%Nf}b*3&bZ}i(G@TjuMG?g`yo5*m9Pf zAyIEtpz;%xtFq78gCRNOPsXC?YuIB5Z80uN({uqC*}wwit0P%zFkhlA>Wr94 z55`aaN&mzAz_3L5n?FV6V?bLy3SY7*Pm7{Ph&S^XOf`xTxH zHPauisPczJHgJU(j%+wsWBDQAE0F7WS_mPgbnF6eDmj#tL=Ed|ixFxTX;lxk8l*)?XLgn$fm%fU4kz2Ap( zb+DZ8RL=I1$&@pCbAEV+v`jJ}hueK=6|tYQCDat8ht0<8huW?P zD^VCEF@8k*Bum%*+1ZE2_A87~T@dAFtYLI>pYt4qtRvF1QIzS9W!w50PqH?%VY%!^tTQW+r5n!6lgwOf4+VXp=DHja6?#SR!pVIXkxVDgOYc0 z-+yl+5qv|UWPyT^ZU>+snUC8<0V>ts?s{m> zUJ@!Rxb$JJP_0-G^uELUIsNIZhX%4rYeBR-LdBc@)Yb#%e|tfEdOaY-&i4D9_25`i zMV=jA4|IUbh^8$F?f(($;r1uF9?~{fVA5!Xk9;HBRweZMMtdDBaa>hGuBE5`*&gu- z`NSEK5*SA?`bX*jn9&Z3a=>{Bn^M!Ia`WyM^5{ltFjg^8WNQMPFyn*wYlR{0lTj~R z&@ehcvHCN_mgj1jhS>>9(-*E%+|DS7U(|lP5mS@)_)Ov|Dm0r-Ntb#N4!?WnmukU(hS60SPAGS+uiDVnR|wXSo)RH-MEVNdt)}PYU-(h9U_p zb=L&b1Ix>U(|8EJe~MZRC#6&;o~pC(De+%=BC+o0$MMxqf#Q)1no~Wbi{%qKcXxnA zG~Jt)IKU!YtC?)UbHgu4^@zVAZ$~5yX<^k9<03l@t@MzspaZ}#|6HRpe}1eK^zkV!;k(*gB#zC!GurTC`AA7B5eiouS3(Z!B?M6@&)X+{7aDFZu(hIEO_j zOJx;fId11+RiGQ+$+3S9KK%PtQEwVGFD=M5Q!MOMGSxtIk+9Csq-IKWN$>gP359CC%0{Ld2~g-E`k1KFo*qP+9i-3PTT3%HmXDYZN^ z%E14BYNR$Pxd#lnIY6Z7gf<6+eD{=Nf4~ih+!V^SsfLQk3<+F{Zzg(Ycu=Z`Q@3Hu z(AE)Eo0~E~@ckSGJJm})J*C72_n`l7)BKbH!m)Il-oF-Aq)<#eG8;uRX=qz^YHiEb z?>^DC44KSUX{wi{{wX__HK{+UYOXIzZDSIRin7&QV5y@+>H;&{sXQhL9|O^v`bkx8isr&wBW(wrTzSfilY3PONk^T) z)<`fFBisoS%Es=moPpF4ok>O|(nbW(a{t^PwQI4~l6K%Oc=Uv-IJk+#9nNMKMF~?4 z(+ZFtt~_)P3bwYVShdF%#zVNDgJ}bdeAp-15mfbP=`IG@$lnly08 z+@B$@!Kg?uTCAJ$Ie{vGXNX1cV0_Q=*Um+8xIqFmnZ!S!J&M*$?_BXny-*U^X$5<4 zk-X=rRWWe$?r8FaoBH}VMsxy$LfY7-Md8APi1%9gBxg0u6zEPRW}kPmHkRKc`i&QA zfpBaUrg(m|K!gtHOd6*K@^8hDXGd7CL=Eh}nmbV~jdIF-`H)B(;ZR>tz7xPMxfo^W za8wX{XMI?i3-j(}Z<-P^wZx~fa~zMFY2pLM_$Q^WE`#6;w6fGNYDlq){kUMNmA(gw z)f=za!(;~+=NStsQ7Hi;+WUlvcZ`;?F^L$5B5gl*9!Xr{L zwW0SW3Y{*(s$VhP4;5!jP?k*L23suGz^WvXD622|6c2%3NO0>`{6{9etzYzyv&@llS_`e-O3*Ob_SBFI>czz<0;m!<&L ze=VVRzINCJdCQ`H-w>Qa*&-N{U^8#2Dp5v2Pf7;XiZc^cKzc6RL^c88F+zT{+ub0k zY^i+{M&@9`h)*i!LySgZ(i`e>p#zSrUy!F}j5(*bXTBw)wxW&!N#0%+qU`U9T^qto zmSCuvCbr)co$I$A{`UWdC@d=yY-pOjCaF@0O_$JhczWOHrBF(XV(t8Pp?BU}-ygeu zu{n0LuqB4Y-03X>q0f>;X0Car@f)-**#v9eYKsaCD&v;P8k*FAnM1%y+wi{n%o5$d zVjqhcX>2=suJMp>UOFYK{bmaF)4`HE&g4S}5X*l@5v~Z6Ru%LX76xlZv@T8{JMP*~ zXC~85o5jPo2b2}#AiTwxgtTo%_4O1m;3f1vB-G5{_$nPeic>EbK_AIxY-4$A_y1$> z-C`rnw);NFk%J>y7ayIOBOPh1sQa{KJI9Ht$mX1(a$<{QSMgpwELIgSh!i);8IsN7 zWv1E9OA>s6AA|rg3>!jRfr3O(-U0zKWFUzBAjQd}kpRkDkN}Pi#7LqfzyT6Cfs7#e z{ny%ifBXBYirq8k=qUoGG2LXTE~@tqW5E*Qyi2qzcIvN<~_W(e!ci zMRTS6^V$u^$*blfjRa>BlnXc{Cl8f9@R_+Vl$Y%0{wdIT7M=%)tPu z9dU7rGQHuAD=)iWUf|pZml=$w)?}yk9)0l zzpLt7JT=8L8_Z;7SB@QoT_iUl1ENT2j)PmM8|zoh6P}w8Yrx<8Q7q5m0qI83sH8;L z^ScGuO=An9XK=$c4MbB+GKZS0jnyI_2)&(-4om>3+Jj&&%VC|Q^4xkIe+c`>E6*ba z3zjUFkT`Cfu;VaW9a}zGWkAw^MW%Dp{v->;zVEsK(#Z6)LHGppaf^4?&UhYv^I9{c~NurfJ-BROV9Mqr-2=FY3q zAf>%@7;qQju&5t}kDOQG2+RBpms9pYxL zeWv8TzLOyo^gGHY0s!)$gUqw!tawydcx!g40fHcE|CU;pYf$t=cNA#5@s>s9OsONm zC(G|!*(9vYLRe9qpqlE7fYXA|!E_=5<_*dVpC=(gs@LuoE(GFRFU<}0x1m;p2W#H& zyR_dt-~pefCKCm(@6`-%SZ0M6NYL2z(s#h&N0l{~me`ebqmHfUSxdf!8w(dKAHCi0 zwD-X!WgfMd-+Z!9w4KVsU)J0Yvzb?W+Y7jsQXCWq#qJ2u+oHMX*rf-zz?`9oR3@SB z`eL#Ji(3?)iOv-)Nc&EhNxzl&siWY$MQ&zf$Zzlr4$N+oyeK0Rd z5AX#HH+8r2G-RQIO4lOD9ewp5JYoVvT7q)#N?k06$|5Y!TY#e$n3G9(2XqvC^l5ej zy3q8QxP%BvD&pxW&0ACtxkvHoZ9)yDd_5?hB@_ybg2E4l*O(GW?P>^-gMREG6M0k( z%(Lh$MhZ>H;?ckn&oV2-$WM)JF%1Ng#Ot15-v+|W58-0sL4+_-Il7`Sl2+1ko01_z zgWKXRsfJe>G7&x(xL>f9tW4MTJ~(40um^h?xU4;{iUD-S>ql&(-0dK& z54puVke#RSa2fvnSCZdjBuvV1i29ZTnX4zc6UyT-)`p)Ox0=x+ldRC(tvrWlV2E@k zN1fk&^fSexf90L&*sh@MVG>toxc+Q475-}rr*%uW$sK#ev0 z&>4GZLTb1?hOR+N%V&8l4YngSL0RDnqUB`6aosGjcCg#Aq_E3(qP11L!>z z_Zv?Q=WNm+%*JOhJ>8 zHjZwXj|nR!g{A$>?GABr1eC<@sg#k$(|mXITmR;hpDwf=)|E(Q$RV>5@wA2cbu1|u z6<;-8yVQ!OxP*Jke%Y3&$iB4{*RREhhf&`P{$ zo{b`(em#uofH4QT`cfgjEn?=#a|rrUR9Yc-{vni}F#&Wg`Jh;f7ZymIg$oVz#+BoF z(SbkPk6oFE5Uau*zOOeWA>2a0`2=4ro8GYOR+td%s`d5)HbodVtNup_c*8X+t7xl> ze-nNe(x@UK03!z4B>uuCj*uS;%(2V z2=gWeUjBJT7po6md^`hrIsPeiXvIt&d|U|4wPyPSkw4p@~Zrb9Gw!AP?mY zxk%y{j01p9N5As}kAJ2x4lEWYa$(saN!>hw(y*4)X{j&;v1h0uS}w)&W+XdB@Tp9G zDgXGGj9K+obyF>6e&$snIE4yR7A2yaP^xOOkLJK^Qx3M)L~8|hD&ZL@7S2toF=09_ zvRamVm6bJFo+z$t(B8}|=D}5**W7N|2ZHXYa3|`7a?{AioHI#!Te<%}OZ3Fk9>sP= z$vj27g@`lA>fO!7+~#Jl(Sd_v%XV)JVi+@kS)P;^_|}7GpcWb>F9KvQLxkl*#I$9u z4rJdHsm9-xHL7>e?wZrO8Mk)I3fsyG(OqVR?}X;np!j%GG793@_DU&*N)&L3Qx4#U zBrB$#)bGShAVE5CJ)DIyc8am&HgYusMidCz;d+(6F4d2Ljko4MCijI25n=+zX>dla z?0oHX;X(&5B==HHIYvm8tg%nXGETi%dxrMkg2UCNVvjs`y5Z|1rXazm%niyy^@hm4 z&p)!c0ojxDKq~o{Lgta{{2K;PA)v$0ar$F{>tch%-zRYGh3zyCP{9F=E}G3mMUBdL zP%BoH4#i3)lrsYgYcD@{Z+8JxAzfhzZP(;!a{ZbC7@|RDTd7}B{*{*(i{RTdVe4n7 zWq!S|H`W`f)vx>@W!tsaWpv=c1$lJk656T+YcK8Yq@UH#_|LNIBydFdTwz!MXM7!~ zlqWw{DQt6md>?HHU0z{{%BkYpCTKD%R5^}iGH^oHgY%z<0)9gg-hc~3D{^$kmU$;j z>bj=CO;o9DkG9V;S_T`($BiLS?&;}gCU=D;_iFKz@2|yFGAH>BvwTc;Q~$m`D_;fH zd2N&UIT=VfB;tvUcHKLtk7bABmLA5SKb$794El1P+s#YRS?TL!IoGIQ>=?#$soRf~#S}Yr zo`K90fl;s#az9Clpa~hIR21t<3K^)1z1Q0Z z+@q4Lw8J@?_herUpTVBt1T(fPz()zZl#OMtlw~3#yYv)NC*E*}WDL#^POZWf=6smv zX4xWQZGyE3xMCKWBfCHqsTo|IWVfh$$5)Xc(n<*Q>_o$je7002pkuPl03MzRB^_j^Zvr^n!5na!gaj?pSU+xbe39>y`ymtz z0muf)4Ia5HweoQaQ3LEKOkED~hWjd29g-=YWB*HhQfq;a-Cxvf8cO$u*|=`ZcZkLAWseC1`7U%UcAG%LEe}GS4`L>pCyKk zKGo0DqqAfkIopx&h4A*J=0tERB)n-ggD*NfJT9t$*tGvSXmY|s2x#!>wmCeswUTEE zL$x?TB~Jq*96MC8hxXs~n>>`9pX>ppI>ez=%L?%ZDOuZUM6%nQ57@+aol z#$iKD=nV{{!p?;$IH}U%DecPSW%C^rqkO#5p)@zVIeI45EYH0_GFQ5Dq^y-+4at~^ z(RFtAlb0a391+TMsPjb)7BeGDK zP}PPRL{lrV3M8^SxWY&&6o8df{h6i-N5Al&J^BX2uK7}6ehGeM`38QbwR9FaaibeN zXGK|;mGANMirZJdS=xdyXe=D##rgGZ^S}#p!Fl>@idyvN?AV0xPFU389m#l#L^gc} z2UY>^92JB?D65p)5`DS)EU@S}#}(Vhxh-q@8H;mH(ibE?Cg6fp4$k7JttoHrpP$I* zE`d^Jg~WE;s(%;-l?SWi8<#H#&drd#NVuVNTwd=^aMc%h~`n~s+o?+YO>YiIq%CUq;1J<{!8zwp=v)@xhB&*GgwGACs0s zv^bn{Yj=(2mos6nD0$A?gU1Jgx(*QT4eoRXC5HGVc8;4j9B(YgL#tWD<@Cc|ZbdlL z30U$yPcc)1^eU=UZ2#5$23Wx2VX|g*ZqNibYdi{Hz6oynoUlSbE)Xpzd8rCCQW$%t z@*@05)>Cih(F=Lo=WR4!(9wbv)Vs}3tqiuc-RSgI?}1mnY`yOIJRejqbe6`ad_tP1 zSR~^?_YJ;VpJ{~qGs^qqA6RU`5-wI(-K6UJJ52@dL zxp2FA+R#Ot5Vi@?P2_t6y>a`)J;Haa8vQ9bFf1mtyRYbH!L?S9G45#KW?LEnz{O2L zGV)H5joLt1iPuMMSvipY9LFxRxj>|<0qRU;btY`voAdKTK^uN<14dZE3*{gEXBL21 z*8l4xRN6zGj(w=pLFS8+OwzXfwg8lq#OKZj=fno$ zUQ@e};B_R*J-jk`3lCUi*)m0>S1+I&?zgU=;g7xC3@l-=##QXSTRfU1YYynvIk;W1 zfJC2glJHf(Q<&G9ITPsf+!shzOLf$M{^#6YbYH4b&X&5>?)6Te-WrM1mU~3#29`TF z?d|)6m#vhgXGR>fMIAbU0$q{6@#buPk;7+|5qUQ+W;*vBcdy)bUo3vUH_LY>wtp(> zQ4&FQrdC){KAY9nZL8V;EwOp)P1MOTso2W#gKX0Xm-N}|_*stYSrD|BoebnrxkfB| zhwn#?7?YliP_yg<1Bn-AH_l__f3Pfp>FdVIH)cMf9wvG`o(gW>?^jnPvJ2wZLu;zf zhZqmRV|%HYf-c#(Fg-(Z(}#PRuI^}HXiO@(^BL0d+Doe%w>>?7e8HIq0z*h;S*y6* zTho`?SNhwm7~Jd;ENmlG7AT}M^qyP{=?=5$mf=_i*0i*6nq=ejX^DvmX*Kbw+V_U8 zHSzPIuRa8?JG@CVU|D)rlfCy;oVj%#lwLtsa$;YQL$TNNi`evKTOv!b^yM9e<%*-w z+P$;R_Re6jPZcf=F2ypUs}79$~{a8_s=y<8)A;OP~;kVUsn;DZh*&{7rQ!864| zHCV<$2X-J6PQz$rI)CHzFdoHa;HBO>&~C))qNOzN^jJisgMU8RTK7{nVQ0wnI}E|0bK&6xBIdFB)s` z6AH`0YDTzHU05rdIOUDco{d12i{!$4T4m$qrcy7dfFCtaVso_NNm9P$1^b8*P9 zdsCAs0YECA^Gw@Vdiv--D{)*NvuuA!M4_C}``y-Hn-`F2rMFGTEYe)7$BhCwp_}wU zkL{9PL8W_f!;j15@mkZ&CX7a*{6-ahf8`83p6xTfztwoK0-gFc5(H*qYL zjZ@>nP5-qXfa0dO3t$y4P6#BMAMc%C@)p;Eq}Vo4dP{$2a!4xiroyxw6G^*r!YG!y zTE!d(lS?OeG*Gc$D&Ni`607T%fjKT78*I2LCZtv80N5BV-@F}eD9OgjoD+W*Fx@hN zoXLl|UP*bCh9_oB?KDAG?mdjzajN4Dz~Vg$G6(k_8d*vs^G`M2c7*IkRrNSQ~cB=D(Aq8tGcg{|z|(8Fc`sdSW=QoYyE?UibTD>qy`3=*zNM$8@ILqZ5Y<5SOR8hX9Iz5^L0)2KyY;TJInLPt>NGg4L(Nb=$E z*($@F*x%ZpYa2$t_dh@WMv=UYy1Ue-4~w%(Zf+02?IguOZLYG{fu#Gm*BG|Q101gh z%z-_q*#bN3CKu}E64s=^YT40PUl~&NI8!q-*=qUQ^p@5f2Xh3S>3vZVjd)4I*_3|v zfON^udUIb+WPls9zfvgbK)T;&pUv)@1IzpamZL#WoDjfqPiq=25ws>Lwll8Q8V4eo zy;sgQ2$1=N*o5i(7`A2uz6sk$83zJ>V`<;CuolA1qUX7 zXowP$5SbC+m#@`f7H`a|C`oW*#{MI%tTT+v?38pC<@7>*@88aIrO8~o;REAPK7z57zmkVD$-IuZg_mT!+r;B zB@aM~)>3#Opm52q?YF`twjkzp(NyO9qkvx7l$Z&>i+st@L}>UcrO=b>Z2}e5`H>^! zspJ~5?biH@aPxSU6N!msF-^k#jqP)E@av=;o(ZhvlO7Ptq``PdJ0+CI%-e|(4n?S0 z`qYE@CIO+83i9x?)@{Wpgyd|phuLo@HWeD$1hWugH<&K z|8u4{?FmTiitGT1wFourmEAq`BcuWkPp+PXpjNGz(C;<6A0t?5rITKMS?J7#Lq3m$ zh9kp(3~e^x_&oHDVXy0Hxx*NZl14r%d*_!Rcq~tX%4WXg3V&C3{G}1lUgpF_KRZaH zuS`6P}8%y?4uL8s+_}TB>X7m&K1vkjk$hzaMIs}#1{UL zweH#QSzu##+$}^==_WGRet~Hh9Q4kHJ4|EgZS`+Z4(@FZ6zp%$^}2)hpxd8&)`e3_ zi9Vu>n?RQo_B5!iK{O7fbefcY4>z}tjBdl?FS6O1k&F?MGKi9=|A!k~$)OWOmc7m5 zDW$7Ank|512Ew^z!)@*{1Y^Ba(!ClTsAla4G*e|54(2a7=b<%dz1E<`dG)mBS%)HD z=YC^2c)ksnm*z|L#0KD78>%CCX6AEg1aIi^Veo)b`4+~SbCEUcG zzP?@I-&-*0&|3C-t1HLw+VefK5YM*z`)gYy4mQheK_i;cF#Ql$*~(zHItC;# zuZN)-ksy8HTPpsfB%lkhqRxZOLF0J4-`wi8hR?PKTO|Ftcxex|DI@@wcPvGZ(uZR6 zUURX(-JgHXam}}=qDM9^_6sAY5=Mr9*x#dOtnGcsyN6(4o2r%a@KIpTIvq}LC;&*!B zFQ!k5x;EQNPhDFD&sbLdID4b=a|m=9OxVk$-<9Bi>S`9-xd47KUCa_*9$!ZHf4tpiwE{*jdb&~KlVTH2li^!k+;dN}%~@a( zvRB2@CkhJgl+MbfRZo}n!({6?K}OPY^Sc-}$sr?UEDY|ErF;5gEDuBS- zF)#CI#YaSv%Dg9gEclBHBQBIG4gQuXUI*Z*ZeW^$TXbi6oz+pPMo!pWgz^Hu3|QEF zrm2|O$a2lkyeJF{iB6}sb|9adhhUV{^41-7)%#YnTvi{3M~O2`bcEGW6UslQ;xr&eQ^OlY0fVnORnz$LpFnEYSJhD!=;0^JZ9|$7$zLLWe-YN7VtvxcVUwH(9x@ z*N{>&95&m)a<-i54^>%YJgu3bQP%hXZ>6yFbANpv~Lo(7By*;p+FqXOCM? zxh0=*mF+*rCGLCf*(e$f6kydP&T{KE7fhXXWI;2j2!||CIorx)#A5#0kgJot`O%dg zD27vRk|J4mG?Q+KU-rf_1uGO0v)r1e)>OAon$DJd9_^Uo30qAb;%KE%$!hXNQYE1u zCbT36!!Jk|MbrbwmM#w=wK{==fTm$t{g@9zMUxwH3NZ~=W^!_#RXCErNd4WT(^DEL zTf^35g_G(uK{3Tvz4%>k%`v_mADowj+aE6I|1hoB^5!v1AryHMmhCiH*WM~FUD!hi zXDbc~FQ7Tc`Ok!63y20k>V7Yuby@gS=4>hRr!ylm+rh&bdcG!%eDtQo_@-iATnrQW zVC-XZCpEkl!^_?hH_bW6IAq+n^5|O z%udB(wvg8Ho8xsDm^tzmz5^m-a!an!7#&)w-pVo_Oj1zsfzwgVjFj@XocUT~wJfbq ze)jvY|J7yDO?@QvB*k(#b8@n|J^dk_Q=A$MQ(Tqp+;8RTyrbhy{x-}-CRc?1Z_}!x zdE+7^&Ocn2)N(cS28wn8ZJTiMJ#u}T$a`c1QC((|&CgaeWJi@&ZTsmd)Cid8d!i1g z6)&a_R&zOt3@GY| zka&>=tvpmsXp`R8_jG;pf_Ajx2WEaF!XQp)%FqRI*_si_I6%+^fklQCF z;g%!%EC2fApDN-ySprA;aoT~6H7y<$^;b9Sdd+xt;u?-EVHR!LUZ4{HybX#f*Hs=t zGRU?jtMEPmKNvm#&k4<|u#;#xf>}F)@*YU(l9xO<+&Lg83dXmAu2|c_3p!bqs+L~H zvQc?P@<`%>EGvtAylnQ+SIiU3@Ui;h1bl4iQ?XJuvPYG{O1%po+o!Q=dSU=x59mOGU-N@L;}9|^kN)-TvmfCD~2>4On89RX2&>X{7Agz z!uQXgZDm!(iFHu()ud88z1Cg+AU{V`I;D2mJnK*=9ewq8pL{U-3;*cJ*TvC10sfPg z%8t=O4LD_GrG#IIr$S!C!FeQw9}kJ7XHzu@r_pNNMcflVuM_tp(~b4yJk|ZT_|B9U zvAGEopn^>M?DXz2V5G+ijl59qa zPkO-hu7bN09TlS=C#heHb90SPckf^+(@*^yGtwtoi6q|BWYqcJ!nF)i=LF@tH~Q z0u%rk7npdm?LT-ipukj>7RPqPtZD!u3khc~9AnCbf^*$BF%q*N>4y|{S(G%|`n4zT zf5WhDR$}qcNyU82!;OCDpFIBB*DF-E@#U{Z3;*Mj_eOvD|9_m!lqVbg_`)~g<j_L|D;s$h8t z8p%)ll$+RF`=kVQoPBT87`R`P)HxRq34y%CQpsMrd(0sg<~{cT_^uq3G5fxDzgL26RE3t zlMy>rkOk%nza`_ycd8OvfPJVWXd?8`mk}%Yu)5}g2W9$$zP9K~t^n)^>5nij!%jCT zF-wJE$dK6nG3*i%=Ms7iQllKX14dpE0SFE^BG75rJ?h#S5lMNeLyK7@dldEC!-EPQR&wr-E z1{qdz(Ey5%$YEq|41XVtrVt|N2Oj*XrE>H{d%u`hh=q^tH4% z8EnMQnHf(5ZvAll>J5FmVS7t3$KxU;j>$_bf>ANx}FJ*oW?L zu-iR3P(cI{NFs{rG2HX_v@ID{wtrI@EKgDh?&WROL-pI2}^cJf)aNYN+*6 z?El4guE6e$7TS;B(~x4}>?d5xuJq6eg6j(eMYlI-udVgYXb22dE{XO}jsD92{>>l! zlO{i-|K{VzU;F1MHD$I0p)MD-Kki zr7js=Ju!5RcPB|!$s>4_dF0z%7iE^c@y0-&l?KdeHe-?%RH7F%xM(^n zUoWWXe{^YV5yx5ik|%4y5E+=1|kgp?aL!7=SmJFRoHYwe-QkpP~2l z~2O9B6sqJ@7tK zIV`a(=@bS4S>O;iQIC%>8m1nt-(BZZ86t-lpDi3N9PMpV&iTL_j;QAh)D57pIaZkF zCdC0|u%Z*ecoDfeoDKoBrJyQlIHA(w(Fy?FdR5UR`wT#*Q2I7TDf$wu&O!WpXdxh= z?i}cb1dXMITZ&u7wXE6Bb%`v+)A+_zn3cDgnu9VLR!we;qtG=4??$ZaFLtkhJLqk%SP3kodg1lNAt#b9 zq?3hPYbXY5Z)$6njj44hB{>MVgORCQ={>PU-63yT-*x0pYN9!3J13O5Q;oiaNNJyw zkY1b6#tis*6S9sDc4mafX&$BK4p`$$M>A^K5=6XlSE$-Vj(=r9$rJLWw50Fi zBe-`PlK?rm;6XsQULsHe9~9MNmAIt|&&_pyhl@j9A!v0DwX)Ngh34ob&)osFR*!tS zUEd2tY63iVGCDT*w(^_vlF++b-}@B&-9v!Uv-!1d$rD}4DR?|H9-~R8R67fcDcG!F z{X{JyK>oUuby!E4UEGdnJ*cgL2OoU+xk0Z5;P``xFk?Um#wb@FM_71Ne?H6HwrSw*fGd z_W~$w7oHiNqNY*2zcPB%Bmj}XS(}DbK>#bjW(9+R2H=i&J}%n8TwWSJw;`=R1y)<# zF9AiNw?Nwy6GDj)0E=AMDH24D1bknV_1dKrL`;k8qH%@KV^!ocnF7X&fXZUHOp#|u zD_XQ#Dzt|=ozOVi!)#!ZRB&@LiqKkZA-ZXDGZU$kiU+4$m{t`HZRFGm>F5oj*)m)D zNBy``n8uQuwjd?RL%4_<5Jddr7dx<|dOty|AXFmW3^-dDS8O=8vPnh@Ul*X1RR}9o zEl;@dQyYEyoC{tFUM}kgy2t&Cnc?d%R6lo^OeH;a5wV`Btd!+$?4qB)V2&j|j=3P#&qIFFh~n69 z3tm^OH+;K$wh151=51$tVQ%APeu_GkYuKF9!_$RJ*hVaS62a(udOF&2QgSIXc6Lg< zlhtmH8M!A$Vg#OQWL{MY-w&(j%F?cdwN@7tM}Cvf78i`Ox(pvq)-?QEPEAPZRQt6n zOC233XDVQ!tcShu*6>`VYVR=wB#w zf?~H7iGC6kw#AcZyX-(DcSgm03-p4AxON{VkNR^2-4*rQG_Ur(h`OEZ)&ec9A-1y@ zj$m17W$W%-J+o%n(^z=P4YkB+N(CnsaG3j`(yP4Eo5NoYP446=MTAfad&0t@s}xzJ zQ`-$ar{X@JSPnF*pODA=%|CqfUQwmQ$RF1&^wD@R>*cF2_8Rdm>YcLEw9m2FN05x* zZCl!ZszxMuwn`^QP_U6yo`%KBS&bYjG6G5SK9dm`f~#Ji63?l(vGXiK5vR1Q7Cfxi zb0WG*R#4Ke-jKZ0B1st@Sc*}!!NmhLUh5h2T5uIrUtRj(6uq^BVj;`kUmKGt*KzWQ z^u~3(xS+V>U~>_CR)e7>AtW7n4R;rPMQ$xsBTV)}d+4iU;x7{oc|e;X_K<^(x9*rh z8NWa<6apn)biUjQrf`n<-m1|;w8K(SZb+v!_dYOWu1 z)zuDp1}hjafu?aNZkMFJ-ck~7UY|^c0|0qo_bS9UF`&xclWzLfeqq|GR>p4UZN^jsN!1 z`#%PyhW0GHqmUCn^>Y!&5FB^3Y}L+XXejXEN(EDor6(5~3RHL6N&tcu$(55-f$GxOE~ zku{0O9&zX7$gND!p0Q{3U>0=^1NA4k<9oYDC*(M2*$`Eap#7vVLxN7dBNjy1Qiih~ zoypiswo4*4H8c!Dk1;)DT8&5&8Lv}UwbPHI>5&G`rZ=Cw@ z$EaFj$0M*P!pGE5`>U<_Wp<=|ei7x(%)JtgcY5aFL}gmPanLYUCwoWQ7FC5RyG#GF zJgz)Z$0C+qO!Mq*o|?5BTaR%Fr{W{0Q=G2m2Z+beM7WA}5&#lFI-~>;h+FS5fOax) z;`&!fxz}&Bt}R=9-?|>WY=7F>4(wMvEumK!7VDLGaWuq>;E2M_6TH+)bt-GM-<=IP ztBVfQE4DuMN|t-kO>2b?h_cHI;e5X@2lx!_w<3JAO|Dg2@mUY7pz zJQFC6N-;*MpTj2eKuBb4zUM5iu(&al6E6lg?l@i3q{y)}qhpZ5!zSwqwB*^?(t}mVe3()u2Xhh(I%t zNCbY)R90I2)Oq2uQ$hb>o$IMk&7N87q9E+86BHJ(NkIuyCAQ@?rF@4D=-+5r!fNX{W^-!qsHv5x+yQTajpw1vgH4< zzTg@yD0G%Tu1pFHJr9&e$y9T~Fru=rSGnkM%Cu}EC=x$}v$w(OBrt;EZ%on(Ktaw|i zLx17&jn%iL!u6d9whyFrMZ&q1^{5GqRuL4Z%Dl5IRFXD4Zr zBBPr7ebQu=Q&Cf7ReG*GZCgZooiDG+JR%Nck#AFEHF?MZbU~9D9iF*kpTS&f(wr%h z+VPSq9jp3hCKESZoTr&W0i%Ss`?(0Mg$7 z#qb*V-gt`i=nrEK-V&&S^5CB%tu@9_C>QK$hv>a@Ucy<(7Cr`f)s$A)@W?v!7LuTn zR%7&E{Jkgd{lcycV>-3yCYh8D1=|UGCsHtSeM2BZf>6GPtut-P3;=A@`Pbz|(lc&{vf$ zry!=vi4($s=Q(Dk9`3o z=(04aYB8hVhs(>TL6shSu}#6#UCD}{lIjS2W(;kFg7qSX-O==4{)$G{mbsk>fcMIt zrKdcH0U|siJ+Vm|xUed<Cqz{O9zO<%?$vu%dVTbKSe0nX5#3jk?f9J`MjV^!p@sExEqd$1^qt;dQRjbfIL%qy+T#F7zzxjVY z`uYzXj(+F&>H4kk)+O1u295~2shsZ0;ZDI3sne1wHY-r2gBxEJfN27aO7Q49b|(ld zlW+%_Btsb!2+Bo{3UwTo!*iGxJl6;nCf-1FB4-xuSyaB>h9QnAOBr*7hl%k<)gL^5Z#jUiCfYTvHA`Jq zB|#VtUnPiHA6me3LO_M^qZj}7-~7sV zs`bjX=783Ul1P_~U!H0piGtTp{R?Wti`AvkXaD@;_rG(IXnXG}(*7>nkzx3EX@>}@ zwB*k_d)3=hD_a7~y&I=gCNSNcS1P7gD>)Z8$$pUS?oP`Fh;gmXrQ=ASl z&OJWm0W;EBu3Z2Wh^a12&qO;ISTti|z%}foIN#mJ=y!0l2Q9J16`o$>ixGkH1sIR? zAQLqLE<@#E`J4iefup2UEx}=eL34I+Ehh&i<90iy#^gOSB~}O}YO?S}LQGNR8t_>? zQN;y=YcPrkvL+)&YQ06WU+_;R8G$iWU#RI@n9#R@l7@MGMM)q{M9YZV%UVqqztDJ^Bbru4wWY$7E_$`E$+FANhI3$b9jbpbB$-NY%QIls^X>PdjTtK(Hrs9$G=X$K+Pl&PcZY%aLCV{r5*}sWCCR2(8 z*vKTh#JTfxH>I54Zl5*Q>EdX>4qgxkaLg8NsMQyx4`us0+_LA(1)VL zVp%9i3JXk3$yWfQ8uzk?)c`2lY?yB@l|}{DV1s_Gg4rMRHhNG!oHn0roo!x4DOE?4 znG|6(st-5i=B!+*lQFT5+L_GG#`dszSg>UA!bqif34lx*f16Jjpczn2jkqSH%MEjG z7AE6|D|?o9Qh#3{oST=^rpB6A%>AAyBSoqzw6D4F@F@64eiPB_a70u@=Li`F^Kf=} zO|Digbr4oX!L))yd4tUP+L=*ilcNcRlaI|35;v)7o$vgD;lsdWIIrwcKf7r3mEuh& zrOFZFU<)g1+d%B3O(;%_*14bVS&Y3!bR{j!aM)wKp;5602;^3YP7IBP7!KSD#i0Xm z!&OL5d?>4ph6gl~lfZyIMQ}2ytp-cc%dr2KUAmJW)Y``@O`{%c>E}PwV-FE9{8uPg zpzZNQHc~4<&mAK87LqA zz}Vyy5Rtdfd#l&-78#jbvb4z5o4M!c_O&p?ZqHU5F;aG!P}9^$|J)yH3( zLvMB|OJr`KZk4)IDz5BV5c!v*zxn?>`r7E~|9bS5(fj}P;~%FrcM4z4gu-M=8516S zNnCY9AenlK1&WxpbRRDV9Z~%KZO88Z-W+O`y|>axuy!hemhNj3Fba%w&w_o>Mt<-E z?vSre77h`cHrw4+|2~#d-}1zFozaW0KK|N|WDogt^!I=D@%t0jmcb=oaBWBTgGYaA z^zQaky+&*?FwUbi_pfTe;!)<%C=YC878pTSa;IlPR(t^QbSTn|2VHsO z=9?Aclel!DVLA}e4wjB~h#44r6n_s(8a2Op#u#NZ-EuTcQbp(VoeY&x#T!XslsOD? z_C#^%V8*b095A`o?93g2B{KZVo$(+7v=>3+5hH*gT!TmhbW-C5S&J#07|bt-izQD& zj5P)=CRwoXxyFkGlrRb1!PCQ^rS_8@e#B-z{8-K;t+5t;c`HpdavA4H+a! zg|$P!z!~me@FT7Ix&W$mxMQtoo}`Q8cjUXK9s~+#%%Q~3nQ13;qa!Y-*a2js6;UG& z2|wirm|4l+ZPv&=y|9%pJ!mrWPGYoRl%cOB?0}n*)!joG*E`lAV z1gFWn3raBdPDK|aptr&LajZ{*1~eM6WISU+&)!g(FFzrubt_&cpVzglPS3HC2VkK? zuR&5ZlzwCUy~T(EO-@4)iFTn4w>?LKVl3(h%5OT?JhXvR{aW*a_0nb!YPBlM+bFq8 zbat6n;0Yz(pkK;?IW+sw+%1e+fykaw>I-fo`56T;WSg|S!#n_zAjxeMMS}%UxPLyD z8wm#*Kw2gXdU*-u(w5q0dpFMIQVi9!Rc+{88vQ4K_~=J|v7RZY9Mt4jc-Xd2>-=r% z&>ku0`L8@EZfW6V%fjQ#H;=&c9l;1u0Ss{%kTKK7Pw-=jzF|(N{N~eC-$Vm3xO58vWz{?eY6h-{ng(cjX1QE=Rxl zKRx-$pMOjKlCr5v>Z2Eb@yYw6pZh0|f9MC+|GmHc_%Dop`RBj+m4zxt)pC=xSf?=`<%nydf>XnNBAzv9ehti$+(s?(1QVnJ$Jf$5BDNd%&r z^UDEexO6QmZJ-74Lj<)E9~P~b#4n;?3Rmvi295F*N}M?8bs{elg%+ypi>Ytj(k_)e zsIGNI+Rvw9f~3iF2o+30_oArH;S77%~M#@y2Kd8>_lTf027~hW&NWkk8_i z_gr%*rw$CvlaF>|7}Bc#)0Dx18s#R~XM3^Gq-hNf+|EEm-k%r8t)b`qsaNS}&`{X5 zdvo!_-=p_|99S1)_^hFx5Na)dl9iY@EK!$CJS&&Sq}nR%*k;D@tRd;$;T8;8n@f?q zEaQBy0{XYRt+@&|oHFtv+e#`gA4nMMmf?B;(CU>y)leW=5Ob&V`jEhe=Zy!6^g|_7 zCy`MD2>{u0GW-NP8zCK~6@Voy@&Hw`r;8^=R>t7Q28|IUFSSl)t0Qxqby_#ljacH` zN8>u>Bs@KY>}zy;64cv)iRywW`#Y6XE@wAld>du*DJiH6&5-(H$|zQ@LN+~{YFgyQ zY6(kD2VzK7!*}IJtXklX-$_Nm3Lb323DG^?ES(3GWTAv~8|M3D{RO)TpivD54hpGM z$-YHVCNf^7w~`@E0=g9R|L{ceJPidK@qPZYAP-;WX4`#cSM`tRd_?J>NlAv4SfOxT z%GX5==%OVrkKqKMOZl*^aFou7C)=UJHP#nG(Jx?I9vF&Je36M*6^NE<0?#GY$stR} z)@F2`;fv!g6D988{t^uK&Y|5bJ14%)k!~CoVf=Wur_d84X6emN%*$1uvj=UY=(FX1KYy#{A;r2$C^KeiHqI#>7Rk5>-U@8Z4}PRBw_Ybl>)g+ zJia$mL^?h3QTV_!ISqkg3M5tY#PT!hIP<*!n4>Z_BAZg5Dlijm2K2d^6MM7A2=x<~ zcyOWFKQ$F71U09@iVV?p#)FX;BNjw8Bv5>!Ryb~47A_eMJY?h#0Mjiv&-bph$7;hc zL`ib%)p6tV3P>)iy(R~0MEBV%*~0i|K=b1o;BT4fN7n%`7hWQy2;H&ep)H&>r*`xk z-+lA}lPc&eVg}pP7IK~jR{a}tSC{Km(>Q)N(LQYl4tQfqDxE!<%;z^(V(JbB$;;#3 z4nw=m^$hR-(CeGGFg+Scz?;L$2y^xiMPFIc&{D&Bg~y@rEMG1i?mO4k{eexhho1Ui z^OlU6x^Le$e07P`%pU}{E3d6j+q@siKdm9C9~fs#>f6iFpe2$r_in8FKc>9gr%SGr zghj0v@8aLZMm0JZ2%SV`^_EC;dZ3BC0j_a66~c5+Hfg9tE6(NhdB2ryjt?!~dLbYK zKTFLyEFC@f^TJcF<$^4O5cyc7*S`pU|IJ?U5PsjcF}c(Vn?9NK7(b8sD)W0idFLuQ zFk~zESf4UXxWFs1cr6F_qleQ?`Fo6Rvkahz#35EwdXCr*k^qb8Rxj5Yl;zK@=@;2) z=W{8-C@#MzwdVrJQ1oCIj@M{;?43TnEw{nS^3u9B9K|Vf%KMY?|kiNew#okKJc)hezr!)B&xqG&dytA^Dl0v zINpvTlCAL|m59}kGDu!nx}*0poe`u6v-z^=r8q4-a->-b^JK7!G-s&wBZu$m=^$IMVHyT z-$ZYLp4YNJJwB9zAr)VBxswLdCYDrV4ZPZd$@14JBWJPc~EEXi5tX z`K-MZ!wAcii9+d!qD(!#yj=06IR(d?kfOHpvSu|2Ne1I74<5$6p4fw`O`$S)4!=&? z%sOD=#k5b8ct*ZY+fzI+I+rEONBtxe+xH+7W3hhZqvoxHM2`pi6D?eoL@Zf6uA>#p zE5*2HmyGBG<5`j>reg_b9|7SP(gDv0{aei%hp=Glk=BV|+vBZ?<&5ffpsamOED#){gdu21qF%haf%Z3b#G|N%Bwjfk@a=%ih zIUt-p5%5kAlob!mG)L~)Dt61@5CzQ>%O}^mv01aF$hH##*zX~QIw@aUN!LoaiJ6(*(0MI-F|1Sdp3MV zqVN_alqR10oNpr={HD184?n-=cKsamDQyrLsq4%sWhanFN1Q}Cd3YeOY6?N!&|DP7SknT z8P0f9eEs0Ihld-h+lQCPc>o&gm7rkWSn1xH#42L4#`11fY->NjJ}(mlbjz5hPd<&` zwJDT+FVw}K<<}F*<&-oR$h+}8S7#40)%s$`3ukL%spYr{AqE17k@Fy-uq^`_$(ib# zSnQ3btEv)_;-2~g#T!>b6mq#}2k0tlK#RCx&D2uun@!F;@tfKKmUIYZ7sF81G6HLO z4MvruB{jH?weL>euF~i3FqM=h8}yeZ`I*AyAkLcwhzW8%(A2OLNDi4K(*U7(m$t_n zb@EJPh6pg&m2fY#&Xx>3rd|kP)z+D*8ajVGzHLm*;QQxebztl!^{vPscCcLdIiYl{ zp6ZZ#^wfgKn185B_#R1}CH|1SGbXst_R-)k3NK zWr4IqYl3rK#JV?I6Nqz#!u;~J?=VH$TwYQZV@1^5X%A1Vde#88!kVM*;2a)ipqjSz zS-3TL>y*bxX;uuQ+wuK>%gN)8Vk{K>u)viO{~H?y-vjS^PiREDV2%{5S;!tHA7>V#N_8rT_K7H7>(o>xUnc=P2#<9Q0`sC(hmv0e8d?loPyGZ=LGU{euF+=!WZT3dvq+dLi& zy3YzDJH}LzH4r3{_z4=iFm(Hq9c~`kniJzYsyP5-X_T0QlYwSFb(ZZLCfOe5ftz+A zY9~vnX_Ft41SpIKlPcXo_d-)g99QD=Y~n$as`h@{W0?x`lOlWb(h>CRx- z>Giv<&1VZY`m=Mo`r5!XT(_1}Wn}%eKOonFX1@7me}&Q4+f9)3a1=QNNy9!wJ>)42 zPr7{uH`1q@gO6ym>EFoJb!?nurcapyVMS==%KGmYZl1sNKRX$G&An7UJN)Q&_kOjw zkpQKd2WohK`}ks;z6gYis==!Lo;Ui?|17@9X7`u_E;OkzLAnZ$d`Gc7A+>9?3R?R3 z*>aj(A+RtUr5T-|JbqkMZ#ULJ2qwGx$tY7>ZmK0%uwO5?uMcIiZA@a{fbD2Qx)AkX z8J^v%NmqxBxsx6bB}Ui7LSy!J7qV)Q?N@qIc*}-IcZ*IzzLMWCyKq%e84r5$2|`QT zW)B*>>?MOt>=!%zW~bZgu5P!Q9sc@ab?NwaQw^Ld3OntIDGJvUWzq%pX*bG39`G?8 zJI**5{=kmfPk{m7Nwy-u4!mWgWj-Di6BqtK(KM=0bu}dFw;? zwN#}Fm=`5!f^d8bVXR8}(jN6slX8(O$KTy;KI_{ky7XY25?RS?MH1L5eWpx}ImuA* zaJ)Piv^xFmezTpWsQgHBAz3gVqhe~if6yE>_FP*=;Y&+DY1oh)oB|I=$FBxE$@@ma z?;^AJgJe!eWFQCITm9R$oio5F#LOb~ib4K_RVYk|5SSIfk#t-DGuEEF&K`dYsnozf zqGKA_ePss@W_3(yWD={}PE&))7W=I;6=z-@SgJxY76;A%)&^6plm*lR`*K1!$LNCD z!4<>XsUle_Te`ZTr}kV4Z5+u3vliu0?jC^P70WwHtCf|h1|n)D8Fb#=3G)ulU*PWh zm=b%KHwOh67VI^7@k2*^2X zVqu#^!lt*+i+1*%?@x}cNUUGEU*=MsC)vzB57W4(5wF#SxW=V6QE-bn8$hr@ePf`u zpA~35kl3BXac4QtET|axUY54qUGng65;xis0f0g}4AeiZB?15Q}^q9}bVn{JQZbl@v7*l8H4~QB`_?7)ccsFjPu4PeFnBMN%sg z{#$CyFXO(2%Pd*zpsPA=3Lh{qkrWvQtwj6sW-$~?;dk5;6UMk&K3*OfB2=4c&#|mB zJhTuhYW9>`?_cdH88@iQgPv^i^=tg2H zrs!0OKHx5EPWONb*+xrQms>#|#%Vvfx zSW07j_WPu*^PFPQY1ospJbT6!Cvz%ynpIi;$a1+^f>JdVchla@Ql=9?`sLNZOy_fZ zxQtWfsF26IqZ?{yhOI=j{r7T4_GS%~m2HvQZX>9t!mSe92$RJ$piT@*mdyc4P$>M! zQ%JjK3Iys(mPt9BN}6@dX6KZ{;$Xe8&l8v=kS5oNX4`9Hso9R`c;#9EuL$5lHCvNk zq2S{kyZi{RnAwee$F@J*$tT=}CmPzp%CaCFbsF?&;v@fG>*8CDnTrfqS;JLYD~T{PozE@Wxv;Tw?#KdZf-~Aq>s}AIohe~&wa))gsUi*CLatPN|H(* zr6W^zI#<|(%Cw4S$!o`gdQ?Zh{@q89 zH1<4n&rbeuO8$%$gxq6Qw&QKrP|Yq@Dx8kholN%hr*3%4S|#81aP;E~-+aHQZC(cr zqxZ%M-zqW3CB?t9gcwPPHSTAx?<^z9U5 z0Jv%Bh)H@A(OVmBeg61^B4dDGzb}ED({{lZ#nU{o*A|!03TFC$EQG|~T7FhOY6cXI z*Dt~xl;rlui^dZA0~91uoI$o&lN{Ss0)nTUT%xarg%rgdyo#3xWekFP&b;TBB~{)u zCYzcV<$YK&6Ppk(`D%dgLnw+hwCvmz?vhfEME5<6X;&AE6KiD9>CzL+)QKS?qFz() z4gFX)N>?ieF~>qG;dpm3Xu}C@%IN~tEUm?uqrb%XEO0+?@ChQFl;TzbluVim$x75z zOT0%{h1ihiaJu4<)p6~9HeYeRL(OdTAOGQ_uhj-4t~HvNOW_uqN}*0rndIe2n_)z( zGt=mK%B+Wq2KobcRqP5gQI1ZDt|?ax3Juh3i^uwDde4};7mz&>LQLiYj-SgNnq$h7 zu=I+PQnp2>TeQ`{6fk3EPV5mho5>z$QVuhH*O_Tfn4BaKdr8ni>DpdprD*tHoF%1v z7>;GMP1A)uu0aK`Vni3InZa1j%9kpCK4-b~Ex>7K`+Z`NXA7Q{4Mf~bBYPI*$Bb@N z?g6HSdlCpJ(#7lXQj1NrkxIdX%xD_v9Wf5j!RsQ0mbp?&d<`i@G(l3zP$G@kQQO_A z^^@4lUhsj@Iiu*li{F4q=Ez_KCF|m+@A&fxLe};dO7=1AqRO{l& zP|Xr>Qh*t#Ugo*4EH|Q9idIS`ViC{C4ifOAg;NcwXeN$Gi)+rA`v{cMo_2XS!*Q~K z(o}Rl7vEawrn0z(ICcX0eI2IYj8*m`rG<098cv%kej&sr_7>Hps;!hQe;qlWRw?;4 zOU4`>9dPNF3KL5q60Y*Yf!=tGNjlS>lbx|%HW?`_w@)O*i@bt!oA9%rdWbSVs<5ZY z&#S6%lZkT(DU8Gm5xCobnf6wzgT#$KXH6H`VYSIb zMX#C&!~+GG4!l@z^ErxzHF5FQ_LLPn8`#|5U}r&;(%y;^|8z@T$yf81x&@$u;*N~b zqOXdS-^e!l^QW2_+B zI!cIEcP7hLP+GC2A_I!|WvvYz(mQK&ReiWmT8>Q0#Tln%a0@X9^E656ga=8&7ih4? zeJ?WY&u;H=Dy|M!w!Rf~G*+j`;1=Eh@NrCpf~*`%3v*V_>$QC)}h>XA(Yq zDS*+Ijy8XpAs=O?cs+y-OX#y0rLh53r=NqU}i=c3hMnF4>W-V=`v;&~=8R2yI_cF8ABlD9GlJ+GtAj zH^c*`dnnM|XxPBIk6DC}&nYz^Lm;8oed80; z;?3t?VlZC;akv9-VcK19PS=GmxpP;<6_b!^HH)~MW;V*Lh|4)g?6*j+^Ta06aEe1D zKLjP#0@=R=&K5iZlLu<8)q3(H9PDIDEZ-L87GH1~ zg?)p%$p%Abyd!oaGf{J@wE@ZrJfzNaO;L_Gvfb%zFE!5*Z2X+AQrLwQfmraJ(!;S3 zp^9hp{l*C|l%IujEkB}0>px=*h;iTnHm*&KD3IphUP(!dL6k2SmVzP3q)d2-`E$$< z?E3@tv{8!-=Jf`kijfbWZno)?V)QHfNtdTbSwej%PQYb zkvzhO<#a4JEYECjK|z0S+bck!92s#>EP2lTX5YE2K726m!K|+pGjldiWEIv*pV43g zOesp*^ zynXFSas+#sfq>LS)*5C0P{Q(|1;`P@M)KQ|5m^un4-F4+d$+s%G%o4Q3vQ?kJUJ*A zEWL<5M7bp*h2LFSJ3KgL)htngM-NA}#`8**iu7K>C)mMhVAFSrURk`c$>&~#(|Dfr z`^<5jQffGM$D@tOUhekrDaBJjgJYWU#r2AGL4%v^$6n)r@ZOzaFjZ^qYQHhmu<;8j zytNBt->;tc*AXTD;5CZVll-j!Yvo6Tq?9J4rzJa5We0tbjF46?laaxxouuHZhs3uO z8=9{_(^;zA>-8RFhmad>;xybGcV1d*Ay)Du`@j4&8uz-F(42#Hn7>=s%}>*G0ANlS zB&OG~$F~$k2%PnARP?jGhUCTeT`!=m46@S4*2sz7=(GP678$86mgiT;kuYt#pe?dm z)Y8+6#MPor$#TTnCOYi5lN@EML;mnQ?tQc&#RDX?OCEzhxPNS)*@-}0i-Vf%h8@lG zu&OSEOEf~SL2x$&+AjXtCGr|RJHjI{y>!8$xs2w$!EE=F-sFFbY7GXaenP5NP zE6nd#fVsL`(a&YnV!R+|I|2s7NRt#nqOCF_KW{HAy)KNlwB>)>DJWmCU?^YNAx5yU z*9c3Eli~euvFxjGJk<-9d_tNDotm<+bVzt^#e-P*2LiOBhUGsb4Y))2} z8rRCB0`$Ev+*el{Sxaq6ufWTbol|q>o*pKDiyH}_y(xxh7kkb{RdLCV)!gYP0%+bb z3LzA_v?cL-AP??v%fVj2w#I6qmUaFQQ&m+%$~W87PwJ|rc z6A_0&M1hT4LKxRUd%{)t&W42j)U+M#x#$3oTJgB5XZqx1lNP7lmE)Vu_U+TnXN!lQ z(6D9yUOLoK%w;3=CZ>Skm6DE?ogLyF7j_ zxS94l2x~wbg`|5_v1r(8u_NagDY9xuS_vgW70at@?5T_sYy(wRs#N9dZa&#|>9+HoN(^(# zn9yZ%d|3*n`H&T5g{-A}K=}eYGSXT($1Tck%h0uvxz`{%YRDAxt!c|q$A7VW7WP&4;Uk@dfM^Ka8 z@gjGp>0#|eJuU#*w6JQ@g&w$03Pk*SU}pDbqUtV8?c&jF-EUT1@!Tj)_+nLEbHq;L zDuxxxU&f4*T(-^oAZyVPElQzFW0ERMST!^iXHz#y?i377dvp$E#_ZB$08h!A0YWt7 zpG&ixiZ!?6GAMdt>HqMycEM5;R+eqt&Rc*g2+)!Tn|<>Oq{3mu>2Jo^GCUMxUT5gB zrBm|?r{K*t)N8W+V}YV*Dpm$}BqMa(JQbfO9fO__&LoS9Yr4os4Oz64>R#K@Mie&6{+l zluEZC!Y!?mb1mZi#9XtE3aQj1Y# zs^9HSOQu}0C7XTkDO|uVfqKqm!1g-IN^I7#bo=~kgx$jUFxR@UACUKpvxF%uD2@+* z+Sk|nZR)|6@rGDowsW#ihCH%uQqMVk!DKg?O#E2jB9%dA7ly z4yAW#T)#&ow`^aBG#Q?76Uew)lXh<5K3NlS9TBc-Lip>r(&m_;8x%&duMnAPA|YAt zC9#AYi=nal61>d#Ls{DQ74csvlZio}td+tkVznk-KGmuGNz;l@LdC({8S3GV6eoB+ zH~vh8t2h=@*7JxspO^7a&bKZ+s9uDw1GJnCrj7uzxcrL|(IZ#vLMgiEr)bKt<+V5Q zLPOm12yXR8lbjbTJeaw*fV8g}jf3-jSk~A}{XsbNcUQmqBCA1FL_k#a(9PeN zUbskvTxK;9&PGfsN>6lEInM;Prcffm9gZ zx2j8y&ESn$;*uq7@=eM&M~&AT!HPSu7=wfJYX%q`alW&2zqIN#fn+!=@2hG#$qE}u ze3~$dwZSOSK4>_Kgs&WSL$U)+t2)EFdMKC3|H-&u!RU7sBUGh$ko)%01&gO57^Qej z%>d!dS|!yDOi6)f*Oq#Jv2$pJF8l*z0{5+0%0{L61dVs~h;`AZxEvjYENMoCgp`v2 zJups92+`Nc7yI$GV<_N)Ix3EfO~&jfC`h$>vK&}D?X9GllW-z#jDtY|D&En+IU&kt20zxYmqDC<{`l|1J+-ZJbxfZ^a7)g%g*&5=MuM zm0`LIWaYDQoLBfPr=~hAXKSbE0-ut<_ViLq#+jD^qJ3Gy;d@$|;|VqXr0v|RNyf|& zFbJDnqwc2LwKZ4NrlTRv_JKEPWL_x;ld6{S4GE=mp;!Trf>=ptNJbu9p&|*0UrZ59 z?hCF;UyCEnU9cS61x5e?lUc?A;YRSRZOa9-Tw-s#)w;5t&UG^GP__Zy40rjov5G;MWq$LXhh~_ z9G!@TWrcSon>>>kh0OCIzl=7k;hz_mP$+_IB#`wH7&1~aD4B&ERQ=M};~dOr@J+oq zDIica596enqV{e;=|3WzbP>^vN=7^clqP5RM}daaY ztw8DTKTg_YYSjJZM?dk$VCjUc{$sGTN7a7}mj3?>Seih)IKJ5MVY(N@8=<=-V3KE| z(JC>@DwbzpXG{HO|GwUT)-Qq6u?%6HegLaUw!GN6xmX%Dh|~k1UZaFnCNM;X?f7gW@t+95~f0C>_uYJH+}mv&(u1RmHA zl}-X|XXOAmfln=6v}{0o;KvS>t+1Uh+dz*uv>z1EpzSjNm71mI(Hr!O`bGHx{hldd zi)&Et0-!j7ZuRzzVCVASY*A4hxa0P#z4P{mdz6$7?c2+ITGh50z`H+l0&?r*CG7>U zVJ^&V^j2>m8iiV;2sq`X#ihO7D<-$E(h>m0ZuDQF!YDJh;8|cMeHUM4LPJ>1zX{aq zMM?|f8G*{|#kQu9b+L$@@(_6juxdwik12iB5#ChoqjRB)1N@1z284zgAYyrpOpb^Ag%OsJ0Sut$ru~&C$%s8w1ZEaP}oZ z!q4G(v7F@q&;5|tbN&LrwF>U4*u&u>t{Cg)!S#cnRzRHP!OTA4=pLk%dyGG{uyl97 zASK|aD!aJcI}KGOeSjd6HVosUspRuutLyR$=EL3*^6lVRN*^UyPP*w8H%6q!9Z8L$E+?{n_{K2(_31A%XNX~msGJ~ zuMeT67~Jih&jS-Xe!X$}^!56dH;WxM_c!I_Zd%K+aHm}+wL`J9(j~2UP1fFSPI83+ z3S>T6pa?bZ^CF*H=a=&9w-<_o>E*Wr;jbPV(0ip#=${Q1yX`YdNn%nfKB(8a_t%<#-bK}i7r9~**y0&`FTflVE(Y8Ev-$1viJk9) zDBNk#tQhi<3s8Hlz18pTd$g^k?9K^|Z>OZa#%!fIJ*Xwo(#psnd88g!r)b#)W}I~n ziRCD{mdoDOFH*i``i#Ae`V*Iq>?P6zgctE^JGGjA$0_N4)2S68o(Uyj6;W*G$rD+6IJTd zxuqlSHGi{qUqp%R^tT3UeV1m}1*I^pZNkvCkqc`2UAdGdr1*;JZ+mI3mrJ_8V7MvU zKx1_}1-n~C|GGUGXt2P-1;oIVjs`qcc&Juqv3J&K;~(gWX^5L+l*Uad{b#gs`R^E! zGJI8&@Sd%vQcDaeActwaFVY*x)iBnxMXSu1i<1UPQl3XlEvznxPWmWc&S1tKZYH^oHy8!=|fY%sHzwIB*p_R9|%Aee@R{f7*dR-A>b$ z%kJQsqcgv?tBVDNgMO&qXmGvV?YCPygXRJIyVxIgt>L;<+pnfRz)qtGORQ4B_F{{f zXYGe>(AARrXWRYZ+QjO<}hJptdKo<`o&wm6h8NbzQby{xdjEn%0|=M(#on>qF^$f_4G>}J=6ET z9qH#2wj=$H@9b`wLUUn$hnFhaU6x|2(SE+w7;L(9c0cZ&G0mzjnE7%yr1Qg`57xGO zO*K%B>4nm^_?sJTM0HCFv{91K+EGkDm%gqa$IfQAKiHChx{|`a`%0BJMU7W)R=by8 zsKBuJIW8|aVTsF&a=dE$S^n;AH*ESn^7|E2j#zn7-7whk{EP4My?5BwV#v|SmvVWl zKMZmZoKcG1^<}hkJ}_yXu&09q|GgctkAps$qS}jV`$cUJr+hel)+OGB>TRDz!R4yA zCfr4|cn$pm)0*#5tM=is&sH?%+a6@1rYt5eZS$b2CZ}mh-y)L>Pbkz)vs=kwWh;{9 zt#FPEbZwP&1%&NnY7_VWO6$?U73PmSP0?aJU zsw`L{xv(fVft!S9u=oH(pZd?3WOk&0L<}uBs3F?53`l%{h~N>lL=WIGL*z3mVtND+ zD+uZkR>#V`1r3&j0#}s3X?mcGM1N%&6Avnf3bR=96IO4I zh$K1&0#t~x42bEPR-qspY570hB)f1-t&q*+iFcat6_I=h+-rA4!gp-PtG%7W@;hWp z?dNBge z$HFBL60w}yi4Z7*frR9TeRU5sVh^yKhuC+X%TvzIQsd+Uk#3L@p2xGFmHD7D*>q>k z@qE|=5<)o;h9@E`?7&wggx{W{8K0aS^=qpLJB1tNX_5u-_50xOUjNn zUkwlOrq*^lN1_g*AaSu#q_aOf19_e60W#HgQwK(ZIjdpXH>n44-g)DT0W~4Eky9aL zzVXrsS{!o0t_c^(qIji+mz*OJH6%%WPqVxln#?e~SsI!msTLTa0ka$ESd}`!xJ@IR z)TUNw%XT}ojAxW1)fEY~1QFG5Q318l4BCI8vyW_9cJ2oEyJ2rZX2%uKo~6H=@t}d$ zkF9Z9>HATkd=4LxFzmjPKmt8QdtH*MEv4_EkP0+X&%RJAHdxtI3WRZ}(gPGFX%$CV zRr0<%mTm>x=R{G|j(i34e7_qrncq1})2IeuMJO?QasJO@E~YXF#7G}uSlXcyc8axP z(2S*HI8x%MD^0DE%C7&DQ8Lt@ZE4vFX31)^v>G~MQt+qKURVe~rD(5?WGT6@j%CRXTTYsx5QjrCGv? zf*hfJvYM5rr`{I|hpG|2p$5eNho7@5(qds7G@FMaG>(Y$x^zRN(u878W*V-$#=O#d z*~64@Q_jC6*G#O`rS>+c%V6zT0p;@1-OV0W(^%N&gj^p_Md zMYIx6#4A<8h6T$n7;qv?@?+&&!ZA_>6S9LN%MBVA9lZ;C)cDN9`Ty8^)8JUs>%Om8 zB8LrV&C8>zC60734;{5*SJkPr{ z`YuD#`IHY+bJ5-J^FGUY&iX&+sBC>cpxCM@o31e(7`H^Z(cX!mSWkraNr3j;OwHwW>R9J9KBis8O+qj6qR$hE9qX za!${0Q3O`#1sult`DI@0PT^%@t6sCPpw)O((?YAq-O0jHXxFZDKoW12&7ZHnhyPD% z6)}L2lWGs)fEbD~&mM#TbIwN*JX1Ke@-BS+EpbBef7&L=Qn9W3|C$>n1;fMQ`+=WB ze1cR!NV@Muj+HYkbUp~KoERmpxzU$$`gq)sWVzvkfA6@Vqx@AWK!!+x_lrT1EDP2n zyPGkwLGk)Cfd?o9XID~nOqHDlx9d|RxR0p?WXHe;7iYJ?f=DlPMr0TePofiT3FQ#= zfROD|=w3k)U^rfA8Ux4k`)eXq3Wc~_NC^+76HzaU9D_23G;33eG)G)W0U`Boe z+^VvB@2Mp$uD%D7igywJ13Gbmnk|LG;{5P%ba<>D@W)=8Hi*~V33AYsixP_Odo0gU z-4bF*HBCTvpm9yrv@mVjw5w=vn!PEz(1g@-61ZRKT>OQ(VyR*{vHw9Kfb2kp$j_Z6 zbMMV)#h5kAS-T+VY79-g>!05ZvBlFwcUs$>wc=6cm6=*D8TU9_EB6+x7-T)$?`^n> zZ3iSFu?fHfSc^5w04_<>;+US2B9lJ}NwInm5Xq)tejqN1RZpDTo9L@h66fB!v*#fC zSjo@N+jggQ2XvFAe}ukp=nl%zgRewWO$1AL761~OFu5w1Dlw9%wtT1`vk;p`v)!KT z5PNkVG69SeH_cqzIS{A}oB*GpZh43v;v?k%Y=8@?x*QbF6^Hr|77_Oe)Gsl6D^}4p zZ8*aL+1X_!VM=YWt1hSj8Tqw~TCG&FAaaX${TfZV>IMitDj?H4*n)dh6&K;S(P5L( zswzP|`$L&DBuHJ*YEE73Mjqn7wJW(8^aEo+v@V*LKKm*>2hr~ zPAVa6)}bg$nKx@P2VN`0+KGt$(!Lm_+VN_ z&?u>x<$2t)%QzdW@n`A$t|n6*Syi=kZ&#>%W#|+7E|aDku7ls(h%}IaC-{=FHEEEM z-Pt`^%nl@a1xy;L_Bl-YRQi-3pzTzkG)WQXu~yt-90gIS{3c;4mMs;|LawjmO^Ojv zAXqgVJx8-RpjE#veeSXMPBzgCQ}9V*H$f4uO4KZ^@H&OZarWBLX0{qpEnH}FeTGd#R_lAvS?}`FUefLtLLvo?vrR^&`|D75Z4sgoGke_K znYq!Fg-HxPaqLv#`V_X2j94S4K2160_~~2nkP%%F-exfz*u;VnAZ>Mgr{@Ntk7Xsf zgMc5@T$AV%li}{yg?nn48QD}1guGZ@FUVxTopS0Gd~wu#M#*!OieJe^FqR9rPXz`= zmF8;Fu%S8*faq+;9X#gDlmCp2i`liYkdLO+?DYfv3g9A@g6!@nrCmmYIh0v$U z9Saax2YRcduXJ!06A&l+<%D&+L6!Z4K}zn+4AkR(SAaQE=7bnkLnA8LQX_!O_>1L- zI)!{!2MLkVo&m`|C1X$$D(U0rJk=KvgkUT%XjL=7T?N=nb>N#;^L@(BFVKds2&Sc) zt~+2X;Eqb&bOH?w9s&LtRYK2%K`?*)`b7fA!B+@x4^nsxBd6ai3b6Ik zJ|?L5hFjBGndLw*$L{G?98Vi445Fr*zREw(j3?U@`zUakml?BWC{?4z@Zx+`1z(FX zB%AmeIO<~6v<${3hmn<=nh%=&X}QD72)d0UUFBJD}Obm z?$QS$!j%v_OiYj^0Q^8&sg!}}rea2bxW^30u38iJxJAlDIMY#}lb`M0ry3G|HTlp2 zTQu&KX$d*oCD9Nc3EK@;(%oOGn4xXQEyn5wo%{K}$W!jxrR%E|AM2Hu$*=YY

tH1an#459*Ma&lw+3U5Q1?cF2n1cZq%| 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%0AjcT|%M-W~LDi-6G#@ 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 delta 662407 zcmWi=x6bTblqH70d(`sMNE&%Na??Ew=!z~8KwtE}XfnDYi@xYd1r-RwK#39o8bx{q zjiL_v1*AmDyudt)&L1pX;9lUvNAjG#*IsMw`!D|Yzx#`S@&EkuKmOVI$6x+0{|E8E z{f~eA4}bChJ^rV^`{SSd-5-DAF97}$;O_zaO8|cb@Gk@WD**p0z`q9YuLJxW0RJYy zzXkAb1N?n}e+S^-1^D*>{sF+h5AYuV{D%Pl5x{>8@SgzurvU#Mz<&<#UjY1<0RI)h zKLq%%0sb3+{}$lC1NiU%_V51qNBUp?lfU}M{|Ml(|Msu`@!$Nf|MOpFGyJ#z^#A&s zKmPbDv)|dl`rH5WpZ(2W|M8dS!mmxh2$er({ez zn$5_%nq9w>kg~P=P?Ig?Fq%Pn%yBuFt8yn_Y{`qba3Fhk-foDOF7wH6xOVc#i>O86J~q`ZE3(;lquu2A=#F8E?Esl9odt! z(M7jSk()Ns&f|Iy`6m8i+-Wasq7zFI)GQRQ6N+l$JDV-XEuX+;I7AE5)IG zzLA98O?&BoP!>iTZIF1))OG7hSBPj-Q%r^XXId~mvlfyFb_Du;s zbfY9p!sF}K4ta$&hPjq){*aEh`uBYxd#k-tQx)20{dqjFrlQDAp-$Yz)zuCRX?QWl z_!GQ<)LJK(dGDB85|NGz;NI{Iy8%P2-l;ZnnB34LW}*ixGMMnZxp-likU7klbi| zaM8tc5xPt%XN;lMo?1F{-BbRB?ji0`dGUUW6L!mZDP+ZSJx%m&POg@q?A+x9`$!ZR z!$ksvo?mM;i$(9Ucw49q6Xq=LR?8fv5NGu4r)Mwhh>BQR5$Z!+Y_q@cqf0nV9xpgw zgY6KfK;Mu=SUtD2Pk#S$<#6LIM>`hB(#%F({f6!zeSCAZEDF`<`1E~RQoShZhMo!* zP59aO$YEkG#-Nzc=@`;KepAN^bxhJ^a z;I*I~+}~Hvw|93aD|cBfRI#p;JJSv#?C8C7EW5*s(h-W~!8g1Bm$B@-h>-84n$LI} zTx%TalacI($+Y=Hwf)T%ha14mel(iv`;y`$yk3P*+ezo;I#tcEyO!S!0fk*&6fkwl z&pJz=^`rQdZ8%k#`L^F~$X1j$ouk$24PA@6QoU=ObAKVeWZ1T}VsI=xWyACRHt5hm z9>ao_e5R+RB}_1?=x4s&DBWk^S>m$gsk{z7uXF@y=C6x%K?$ij(~ zupESW7W-wX`=jyQ5Am^tAo3_a-x$t;AddPy5i4jP+XLN9ba?o4geRom+!ZnoC-(S= zbdEHxbt;5MHQYotviDrClWA0wGJ12;zAiUBiduZU1niyj2~T{|2p{s7J>)r6>hY}> zx$^kjSI@Wy%DC5yC{sg!H6oLc=8v698$3|1mVQjrKJVSH&yZ(HfolPloRpXGd|Kqx z)*?mzcv5Zgxbyn<60O4*;!B2p3w`1%=Z{_yAE+=rIzgp#e7h&eLr4!&#hcXXP|InF zMX1S2i3QKE`Q={{%Q?U2@SQ#hU*Xu@Y)=mxO<2`8awYicQE1yJR!O#emSI+;sY?^` zY^O~bmE$f}FX2I@KZ}lFkW6_(#V2W|uk$?j428~d6G2+}b*y~EwqTJv_KwDI3_=;Iz8U+?zk^1euRM`au1d z+kbv`zMpiIONt0}%&}A-Zz`?~lCZq?$;2SE^{s+da0pajc-8W#iHP9Fb7mMQQSQLQ z=x<1D-g)x<$y$;`cp3ja1IAy<$gIXMT#>vs9 z5ob9HW&LcGOhi(Mms37t!E2UjdPX;E_*G$ub2yB5`a|PRWCuJgIgZbH`C2q|61)9y zK0Z#o&LXDIm$Nkwcl&5Vj_yWdF1_dxNz$|NjHIp)TO*=B@I1yp35y7_=&qaPs^1yQ z8Yr^mwl7R*WaG(I-cX{-%Yv8h-QEg!y!v0`2&8}S)*BJ%O_$!^LTvinH5|I!9;;xy zxM%RFBlOUSgoYFCo448FwWGW}cZ2ko$%^v4+n(5JIuSQ>nivH2$0FpW#M0PzR`Pbi zqbvDGIX;~$dD|)})q(rmjWJsED~C1{=UsRZzH5q0Y#-}h6$_f(O2ks~I#Qz|1XTHj z6P{#5((47r$X3HB10*t1m*JoMe3}^a81sli29rK)aXI^Fd8yu}iM?f^m)cgWSA0~N zhhRG(!4p{@i;c`v{(0xE^>Vvv%mQQ0GOPO=_Ndu+sq>_4zU$?iF=udL4==5|M`p zs^GZ>;_;e2NYjcv#mMl^khHOE z7s>gEN-rn^AJlPmn)yC=GOI=_wK!v_auDL65+d)L@#GL!%$2ruxZvt9#l5 z?m{I+C+`J%2OkN!`S%lNH{M^&AY0fE{!<@$gM*26dbGlgLgWWYy7J z*#iy-Y?_Mb3tOQseZK8byg!)&zeGyVuc%$t!vo{VJBAzLb@|btk#jb#*}~wFVMj}i z=?9gwB3j(GZh?MO+aucsZ(DT;Ks?emgpJAfGW6ZE)*M!18$}* zhpNEj#xL*FheVCPrbVldi{fyK>=}@gY^`1KA~L z3<}DNH}>&xTDc}%zed)jduL-Vj^zmVN$!)$t6tEC3r8OUW&+`~rk?7e2%z3e)omgHtbKmi}S!t`Z zfI^nSkC4-bz{~OVId-FHjON@f+GsAX+M_N~DZ0KHt}j1jUVv2>(`HYsi9wlQKj!ko zxb;RH<~z~CN+;o2VQ1$ouaN1WQ;5|Q_7@>nPQ)N5PL7Uhc$uH+n|w&17?`Q}5)Nfn z?Hvs}UU`U^SfFSB$O&a2bAHk&a_#OM=wlr!J{1#j{-ge-- z)OWmJN!*c`(f1L3=&beb)zt{AvT+}y&Qu*zu@8B7mfd^|MYrf!NpDs`X(K^tP~p6- zu4Q27n~Qq$k$^H1VKP&d*n5FJRp%^6or~{4c;UqN?Wis_Q$2t0Gi(R85lX`Qpwi~c z-`jPd6-r^Q7RyOA-2%$bn2|Tn)^`-1ru4Dwg`=00es~{v@v#IyJe>hAsyI1BA?>^DTN$_%oVwdWCzlaBrZ4mnY(sQ zCk$Vf>tFI?h8nCyFb5Oo!RqqDt13 z=myz5|6yv6=iP?$QAR4uM%&dGq&g=KdU!795U!Lhs*oX>{=6;|a{(au44(Hptt! zrY>f=9Ya!Y&@pQx%KrP?1WrE2KZT{tlWl5xgV_ z9ts(9YsT3EuRb|cxa~}N@%*JIB#vx>#rd@P(mpvNm-N&Pf}<6y+Tw_8!olyP9$Jo? zS0yj-=LHIV;XHY`H|rhZL?dJ=v<%KlgN0YwxAB^1MAGU+PSBD%9^d+_=}?Ls(6iO# z!mv6~dO!i{pZHfmw$eM^9ei55hY|1Y>(N}GJ6O9vqu13Vh!ZjFueH*;aBM3VUoH#; z-OpthGUcD^*(ubVhQ6o?3rCD%Y!c_1>D@4Xy1L>$LUAi@>A6L{D?JF$_>T7RrHr9Kor4%@5?g*=X7+`zHfG7*=8B@E54bLp z;7+y@G}7Bh-^&l6T4*ngwZlUZUSBz*D|QyPgj;qs))#Dk;kp9bHyr8pyMZH#a7#-+ zLe3d)SShH`M$mXi&73~5%0_Kt|7w)3FuZI3BtJ@6yy&)&teTnbTXJ~4fkHHgO8w$$ zK`CA}!m3M%(JdQP*k*<4r;Mo$$s{xn&gnVrw^N{=JZyR_lUUNn4^+nRh7t}65k&b| zBjP&9L$zgX4WYSwo*QyJHV$ao!|%mOQ!Ge0Mm4Ny3dWOxIMktblX)AGI%QoKX~C1J zQk60GrL-hR&*&5xi3h_M0_)E2M$F8t(|T`ejn`u->%}ib^w?*?CG__F)V!FtSRR#I zMFT2FRfGy56H*(0mGbpdqDlpu`Y@qy=6h*3LXn7QcEXz}gOwq8+IFvd;cY|@=;n=c|1mt?YJd{Plt61XK5SQE2 z0k7n)$))0_UzW7vq1Z}c?TOQYPK3h`qSbD(;1Iux$L?wQOZ6InKBiTMY<&I6hVcw# zXsC$5Im4naTELjO!_&Ia&58h#IoX1Dv+=uHzD(J($6(p&*9nW1EmySGh6uh{p3y%y z%KL={?BS@d({Bd0&#D8@;ZaKc`9{9^G?4YRl_ZiI@2{(Jx@B2#yF_(7yqoqFv3F!3 zZG0mt7X^Ox43_ho+%fG2st~CD?QBsc zlrp|^sI(hCNHQ^=b=1@$=si5%WJv|!y2#j|TjG8ivZ7D<5Z#LC_uQ=;+6bY%AvF5z z3NhkEpq-sC!#<5`-`v&wNmPtQ$gTF8u!#T_S17U{js_@t0h{gRDw({a{{YGl3d zNGs0XJD1-8wP@EC5?kH20|p0HHV36hx+D7!#ANw-Jsg>c6HZk*v$_+j>mlRqzRM(d zf;$Wd)o9VS{_I2MJy)0PD0xi~h6l8YQRGbIbNl&5_pjf^uj;Np<=uJ-ffCFN0sJ@$ zYkPUnj(RXNol^(Zw~r5$JrC%vtT>+24GQF}Ana`MTko5hgE3#id-83F$?aPDQfDk* z7hfFUW68w#y1W-H?wvVmJd>ZU4(&QJ(OvTV>8RqpNmnGP!3JYCpN4T~5EfRwAe^6% z=H(J=gG|#ol_%1FrLkNJbSAgjR6O7HEG~%dH%ii5D2c!*0+pQ37_xl{wE@#Y`sRFg zi|5-$DQN`<2?_XVqly!BYcjoJ<;SS<1Dz;gb!Il|Jx)&c3h!w?1}wDb-?@B1@;z6u z<$%NBn^7%zSC*CcoSyZBfc{{j%yZ*DyWRDqKhLQ7D&*WTJ1f%W_v*;)2eYxg`fT4uygO$~+Gai^`U}AkjfMK8) zm~tCRJ{@5R$U6V?dq3P$4l6KGAY07{DtXv1R6@&PLUA8~2I4iB*!TV3;r=mCRL+bu z3TIL1*#ipwLahqMXX&m_-zt3YCDjGH$SG^E;>nQwvAM{EtNHsgM zZ5f;0ZH4+)*!Tvc9Mz3}9ZK$cV`Y3PO|V8~_N8#b`JRBAchN&U7t}1W5MrX=gzgxV zgi!nZz-kvbg1eD14!54!5^1wxovKsV0a^eM`$Mk$`W(T+nB)}IGH%DI_3j`DDNE`v zwh+9DpO*otutGOiad5~W0J7a}4WeGEmYyOi^TcmdAeZfW1Il_gzf|7DrAMs3vxM#4 zuANmpQuGA&=jaxji~Z$MK#s0%_v5gLerKCD!91>u>Y*8z$mOZ%lI0$Rvm2D-q(bZM(gf^C_CA zQaHkUC^TY_^LD;u@}bFiLqoH^PLw!Y_F7Gx@IwCl12}qjxf81Rv=YvY^Er~p?G0m1}@&=QtyXCZ&0xEkAq zSBMrWDQF^b>*^jVK(_l#_F<_yV#Z{jRL(T>8o#)=-0*n(f=Ki`Vs*nRzz=dtBrjai zvw@81vzSr-cnzpr5)%sdX0_DlIeVIJZ0aDUWZ~TF5vZu?63)84(l7YoY1HDD7FN?_ zn-kFAV^c+x0cGEcX|7Z))Z4BG2667B`rUAZvZ6%53NJc0%JkC*y!G_7W>PqOHt`?{ z>eufnqYGvjaQjGnhRVyc^u3%y`^`UbmI=!+wg;?or8|p&!0`NuHQW36y;-Q_ThfYf!NRvFFzX25KQi9_-==0+8uBB&~Ht6fNvW1^c3fvkN9m#nm>cn=O3 zCQOTL_ID%Wq5JGOF-qKn`@H&8r`6};k=HssMO`{+gPDAo9SuzX(N4~x750R#(va5@q%z$~uG#pmYp$$@0-6O;GiW+ii>Ynw*`;?j6E_^GfcEi3!`qkgrjdSskNGF~1H; zjpPSStRH-Hk8Sgun#Fj{O1v!UMHrJaPzLlLb$XU>b1eF9|=NW!0u>J z42d{JSz+%LH5dfPxF%2(sWwkPyo^JGQ5f47Z_koLWh6#rN^B4H*P&M<(rlbNN`RM= zFJ>x``N9~OZe{QEn`&dr11jM6?>6cyF$xxoaJMwV#Ux&?-@rizDO|QF*uqkPODJrS@;GndWdcewWYT_-X5IsCn?;EVe1Sucy22a|woJOw&I*nYY|+ zH&l%+OyY6nYZFP8%B1JJUMxDrwTXF%b_yQSi@&~?MqqU7Gv(N8LH<@YjlYM(x{AGi zgCL{1fOH-mhEd;-YduJF|JyHcRbRG_q4aZn8SWS1B!ndDCS+qSOnu}wkR}Dbm;~fu&*m8 zWjsAGK_<#KF{wX|6a{Dm-bMRB=$z0WP3xoSN{6nD*qka`XgE$Tch2WmS>ba33=K|W ze)FWbBf{2Npq#)uKcVrwaG*LB{p&eBAkGna0#B?L%^Kij)T?m~So_Y$k>5a#dIvI> zgDYWpBY4Aa8ASC2UN=~H;N|q4GaUm6@iVZIH56Cs0!_k-yP;_I8oXq;)0Lg)-_~#G zx?Vx0nnZaS1vWE>K=0>Jw?WUF@%u*7NQ`mCBFx9z<%l`-57HLSyXV?K+QzHl4(MSM zGD`F=yFLxFMiSC)+-cvolBS0dmK?eG7>r9sRr3-oj^7`^-!kEL4Zc|NgP#DYQv{p4 zaos628fNz6V~t)xY=~Gm_zmM;Ww=xmn7AT_2 z(u)4RUy#*j#QWSOoT`SPl?MC8)Ply=tOI;RFRMX3&94vxuQcfseGQp@c;EbJlJ?QY zFn3R~6TQ2~T;Xm444NvuU*3ZD)$9Gpx$BJ(ALrhGZcio>OUCf`c%Jq`66e`bQFila ztx_gIeYHEv-WDQAB|Qp#og#T=x7AV``(y9&CNz~d+NlCzCr`=7jdvuHf$oD;CMC&! zeQLORG<5z1p{meiK;u5?&4%1O)x8I3mp_sWyy1SByKIg%JAx^Ro*s|Vfncm}OokW5 zI%9bd>l`)JX4vOc1qR?eA7Hu;@2&1y-ND~?XTG9zeLU2})3w8_AgpLyiK-vA=Mjt8&dQ?S& zg1V8?Npev#NG@;O;z`03xbz5;e?#^)@?_EOK#rTCW}nIIXfMdK!2E}ITzaLA;=~9# z=AVmNM6+jmCg?x$5&eRaeBgyLCcRWKzKtiv&^S*}pMnZ1YrbtBRqsm@ViL})eGP%? z#>T~o=n%Iy=o&pa;bj1lsm>e>#)0IO*IDj!AbD9tA#Rc7dod;O&CC907KL(C z_@@ZA<96O#ukibW!H7fASPkmnL`aM6>YE#zOY59!SgJ&nI#Jep>@fv=&e2Sd1&inc zry?6sk}Ef*?Kx%mdbwF7MMj!xN#P&hMJHF&ikW&S&58YuVCDht!@WV00>@4XP4VK<&+xCY}f^S zTolR#d!S1qd_jC|m9z3LF$bs_y`#2zC>e1&h;IL08 z0=mnv8O}TvFajIX&11ezxk&}A=PJhRYB#KT?Umhyx&uQn^NGD~EX_$`*pbl<@C7I3 z53}koUlO+?+_!ntCh#Dw7NRg3xFhX`21GviGF?Ef_m^JXQS+m>ZhQWsv%V*79+)vr zb?UTNUfT4yaObTyUs_*z*@54G6|H*w_C_s`v^R<MTs@dJ+h{;2#B%T;ixv(T{*-G?Ei0U`N(sE=|nB&^L}iq6|1 zvK@vUR6T;aCQSf;ojlcxPC;T(JO+@f$%Lod4Y_vC(c7f8a?4VX0Y5=5MmmGK^Jw?^ z0R`TD1lT^=jqHAKrFFfZHhMyW-NY*G)U%M#Wk1cdCq)Bq5bL?o9BNabqsZs}`6BBQ z;MM+!@PL889~xbkcgr8{-oqp@`BD#YU%oqSFh&O#eiSLRMg05m_Bjp2Gsnn!QU&m# zJ=rS-&S~(WeEzi0;Kvf#0OAI%HL#cv1!b|WK5X=%FFcd6=~sj*EMRd$gb|Rfzej=O zFrm1rMK|3s?bpZ+zc$Z}`k5T_CLtI?GMY`*fDaoiT?)&sw^EY4gW}Jre8n(B;9i#A z&S?9KdG9MW9(y?#AaD47Mh}Ml)osI;T zv6DasK!(8>RPAjR@WCBEI(iU`jE@w=ia-kM!I_KvX`V(k=%ut{DKbn>qCbJD|KnZ> zj{6izWot!42@yc^tHM%vdX(i#rVsh;OV8Mei_sNjO&F}$CC$mx)(cdsw`ssOT0B9V z#D3M+`K?G&VMK-`XTa)B;rX>~E~*ULxA=Y*wr0ostoB*oa;LF)7mX>NU zy$b!wqa09>Kb6_R!n;wv9c~3ZdLa^tJ%glYib6Gz47Ex({!Qoe8e{|o9k*btzD&I_ zcgDd)4KN?;M3;h)r^iQ)4hD7~MguURU} zyl%G`e#XH)fXD|h&1bGMGymPVKzAwq-^G01xzogo1ax^bczR^dLh%ksTNH04f7k`2 zmDezSsbIdx^GS9R+nq-pL=argVK$4rK2#Wxi_7Bs=pT?Qy?pmcl7_yWGm9{_yTW6a zMl}egebGn!VhHgr7{)J{0pfnx44b3M_}W`ARx^HaK+~}QTv^Iq%@`C2c9}0=1r`Xp zu5keV${g1VmJZy1b+R*|Yg5H|*FULZ6#4CVJYDq4(n z;}(-@KoaevolJoenm@Xjj=_Qn6mx%)1B7$h8|skjo7?Uq;aSoJ zI^(m`I->YlE(q$YSfCrtCHpT<&-pCJw+q2^MFoTNMW z(hdiH&8OZPlFi|1;5Ku7lhyr*2kC3Aw>ib6ctnYi7d1$J@uWr^aqVYSFVNPusm1pC z{9u|lcOTL}c5@rE2}Win5w%{0!n8ZmOoZ(J`g)i}cXCbfk^#NPH~N@vCFd z*h0kho-vNig?{Ve~PUk2pw zKOP)xAhS3dp7vbg3q&`>;boJ!Vk1y+7E1L9WJbiW318P$?S;3Jq8dGaO$kJHv$NW3 zo+R%A&FIpTf(rjg`OcsO-ewkw%QaUdX^vS(yGb+OV24|_x-~yv{7>Ae5uAmP!o}@e z9$?st-Ao1+_#^BD=IE4*ju=s(2c_Wxan2ZKOA$p?lpyv~2eVLIaV7;wq}JnWq(Nw6 zh;a<}UcInr?y_SAr`?m}c} zNVnqh)Vy4F(RU^7HV|_u$9#_u>jC@aOEw`u^jR+Q$t(O0ymL^lQ2QpM zqd1s~zhAYrlGsgaxF5y20fTRELpBpa`%!7dj~NBbsmhD}7!mX#z+R8+Gl6`4z&NBG z7D!LRX8~_XNbW)IrRW=M8~TA#!*B0k-bGh`LKb<{)$HtO^!tbf}Yi|c)1=~K^ra`i?6yu6^BI*90+>8cx8Mw zGO%G^A&&&su9tE4JZJCu4cT@QEoglXAm{D^8-*!WCHVlR`-OasvgZ{3|q-Z4bSgSzgw^j29lc{QPa1?9LAayV0)`!i|%?qr4$e-uove(rZIDD{+S!) z{eDhii{qy6eL)UMjCkTp0DdUZtT<($iPn{2eP5oA-f>}N9@klkic)^oa7=d4**ls% z1;5XDktMMI#6$G_&UM(%PIGsr;my1=pb-{K{}o;>h-EYHPcFh=#4SP?I@4prBkSwX z{toP)#wV~Rmp^3cvYCD6`v977qO#5BUUnw|Up=#eJfyY7 zmMwEdnKB`o(z??2~m>#kM!Y&TfKJV5|xfatXKbD)dY=m^?i6LiLY`ZY3zfR4Wq zGV)bAy82v6LHr_E18S?Dp@;NSd!mC546*MEgqfA@JVAQR$G|YO^FItsJjIx*BG8cD+oU5z)n?#S{Q1{x+@YGXF^oqz-bnhs-0g8+TlP47H4@y`x|`_ZT&${1SL zhh_T|M0CAOByCSoz3Bbg)KvQJI7$wDfZt$+ZhsMRp@(35_Vyvb;-&&Ij*Ad%+Xu z3omjrK-55&&&eE6`Ed%_1p_V&LIUB=u4$!gbOiX9W~JVTA3u+gjvtd65!t3V*rqI> zYH#2>vS@O2UGn~1uw{>sjSUU_Vv+HfO;_+81-DEOp9#L9lM5m1-n#1YW?2=6T|Dhl zn0cB#9=yM8W?WAuwZrQ*Z?(SWi%C4A{Rei_fMt$91PXdz;r8OSFHyqL^X$2@*dz0? zFSFb~QG&fE3EV*)EMB`q!WP>8YVAF@?pF|-a1WW@sJH3zhx=dSyS{H zZ~;e2gDt&^mlK#NcmN%{yyYhGQcO7_mvB#9SV`s`(=+1&*71Qojrp{% z_|Tn2J{lQelVxMFPbdRfyMKedQf)dQd<5gq6+x~`3kB0;Y0{X)Y~4URL^X|5Q_TIo zC;Vep=Hq0Myj5(fsgz%$yGiO%6~EA2A&wHd=L1c=Ur#fSrD!ZB3}f?#pyYS;1veJ( z2*=R-eT@yWOK2m7`gz*-EMK$YSs-%&+Dw`(XBo?Y$vV>@sLH*t@a!V@d@(IXbuiJUzlt zv}t}FY47FEvKb+8Z*>R;`PR3%aOm#~-v~-gB9;?NkWaK_1>^*mlxY=*hQPVu6ENT>N>^NpqWtG^{()hjxXN6kE~C;t8Jm{2RI5ngA6b?6>-q;fL0`yux$ML8=Pj~rcf+rJZ+V#mo zEwBl`py=w1L6+hC4aq0io#_3|hd?cgfT0U?7>OgulNoQu zGVfw`KQM^bi+iwDCk>kjx8Q`DztM{yc z1=?jO4q?$+Hs`=ME7bA*juecOUo!|j^6y`V5M11OpJC85N8; zg{l`+#Ws@l^3n23{8USH2yBsq|0^Ny&=h-Vh|wk;2v@R_9mY|O*t-L@mem0R60Ffo z*jYt8Q9Owy$`ebIHgyH2;{`m`rvGJU-35^0ema=AfjR<&Gm3F!?E;I~7E6Fa*lB9; z|5J1xOO9eu5d9z)7-5%K3E@3xhZi0sK)|Mcy>G|FM0Ctzs#=Ek?#;}TU;|J`wLwP> zqDbRx65?fgHMKNRuIyl+vS37|hp5MPmivu)F$Z7gO2g}?-^bVPS|Q`Bl@jiU6Wn$w zd%t=gdv5hB{c9(q{kZo)mA(>P_8{?>XSj25M7s`;Eca`>ZK4R~Dzr)E#{~var;X9_ zbw`Jf`Jy0KV^RB~^uztc#r~V;3o~Xv7MoUU{X?zcHph(#Y!Rf(*5c5WDNUcUdG>c`^h->UiEYGv*?$n4}+ z@%jAlubS%nSF?$RmA>!+p9tELtY-eYaW@~<*tFH{Cf}CKSr~{*$2Dlo$=^*_VL0a= z@{U|paiJmHt~n|8Y2NvtVUO0z+-aHU&$l-Zs608b>#yg}g-g>grt9w%Yd$?fI=$G;IxR`k% zarPSI330PT>C6+$0tjh;nf8)RaNhjNnb^8OKNe9GL9qK{ho3yT;lm-j>K6*?_odLT zE2N(oA}y*+s0n29zU}><)s6!voCND8aBef<>F_t*zX@3CJkMhBC4$iS4)@mQuRLV_ zv47Bu2DwG1x7TG}Z*rF(ThB+MM}f=mBsH_ESN-o6g+qu}pL~89KLUJKEig*XrPZn3 z{?4iRg#idd>D5-u@x@s`D!$maYx;`;i)8vzoD!+z>ij_tb90siiy#X{D@mqa*UZkt zqZ)?er8Zz+5byD!Vjo9DPmNxCq|IFW`^PzqyEl*YsM?kta^^sMC&gvt11WF z=~GUMYJ{^R_rN2ti$`xpK;N7(z_+6~UW^qXsfEW|l5vMS?HK8tc}afVL3x+7{>dpw z?J;Y{ewtoZJ;8!dk02QY{vB?AR*ZSKB&Sh4ceNWeg7tmxSQRX7#TCjRcKMyC$oM%KZL zv|kV^E{EMA5=t?iZu#eJPo;2%8`!c@l=PR~^48(k;q;BXA2obX;k>ieV7DkTb-qJ9 zEYs(?f9{*<%VaMKg7R{_+UyWVe&c5Ra_S}f@OKN;AwvTHUWDbWujPk)EoA*wtq=@e z388~@#0YCB{E_t%DZVw}g^4f8I=aW_&4ZnbyM~k+K?lHccr;-}csv8}(zImL6jX18 zCL8JZo6``X=Q0;`-G;VJ74!YuI;+YLgqW|d!Gc$9M_JATn^soAZVx?S;0sZQ1-G}rHH8QUvht5L z-yir)r}zEAtS8S&C9{|YA*D`<2MSOv8ZgaaKWVdAxZwopAV-D|+oU_PIrhOSU!PxI z?ID30G*#9ugv5!;Fh}m1Kk1G+s*Q>~xnK_5FCfz|kA{(zXJ1EldD9rR`MYXzNn*Z9 z8m*(bb{7Lv*zMCX9yV2g*U(pWxojPIJ;yXlO!(C6@XLMm{fX~EBEY1c??;@%_OPls zSDHb5@I`b~rqzF(1w!$#DWQyFXqslEN`WyTZB{CGPNCQK)4#jAeS+Z>AGcL!b9KVl)e=>gi{=}lygUgmrZOu`h{C8zChqokXGP28VWgu}Hz)2d_lhzNb}F^-#4nlh z=X#4OZ5Enm3=91AHZCr+Gr5OebR3c@35x%X89m;+wh+VB(K^cskh$j>$mtBm{n z$~#6qC?}xu<5;;or65v)NyA7x@cq-@N)HAV)~7b}SzOeSj!&l)eovHA1^4muc<)HB zb`mX-4<#71>z`ayuBy=KjorZ;t|lQw7POFX+vn(zk3oj`3m_|@iE^*1(P4CJRe^Dp&&car^-LY~l>?;%|?5f5s;J;RSrIO(d>Q z#vnB&d%J%cUm^t4e=gxSlGIB;!HldD*4`!L7O*gGf}UJe)!ZtQtpU3TN5}-B^y6{Q zm*4?G8+vUlpX^>am0Veg^!0_*7s)r))*{X}Yi+%X&{ zzvmZZD$@pMgW0+>=?DMt5C?(DbA3TPR1v^?5d(MPjFzW=sisuxhzmj14_QT*z^eUz zkutshl9k)NxNfDs7);l8=xvdGx2pas@Ymbp9lg zxJ4px#5VWN7TND1zfs^eebU;78y{wSQRcN`qJWPPCSGCYzO=30I%>sD8vKN9OFZqzjodFi1KJnu|QYPt|!jrQki1O=cYA~e~wG{njt_!3dK7DiWE9} znGXP{KswN8w_Jd5AmJPyUqQ$SkneZC7Znr$6l+SuYu*t1CW7dp=2sQ7KDcL(H+FN> z2FomV;=|vJKFt2(p-TygR(CwADPyC1t`$K}{D_46yLAME%DMl72gSFv*$CoD@Ke~q z_0Nuao&)tdchfir*yMYCPZ+-ek*885ei8Km&DXXDtd4c~jY<&Kx!>YPjJ}zz!=x|Q%)u#g%iHTvx?@##=hw7%ze4SwIA zmIvMg1jRhamt9pa#d}X*AIH94=WRb4y&?VG_?h8i)>C8tH^$Soa)uXd)ZZ6!ke|uC zfdP$VEgEcTvN+|g7UseKK$ z1)IA?gNy%oVVwV}2FGskw{fHt-c}DNhgh^kq;-42>eH1rO{?Q-lRN5@kC|>@DNwJ3 z8tDi4#oLhu1|gC@`r0r1=}dlNeBZ44R5BS>JyA5KvjI_qKQYfhs z#gOBAYxl;eVAY9eJL84{K-9Ch#iu|w!L4-ZCgA{PF3zJSr=?`M@7k< zb?5;$!hXR3j;)&6Z%2nd*k^p@a;Cn*bXvyB2=DnV|2^Y|&&DSW!i)>oeQEsD+L&mv zr_+V$^>(k!r{U4^ZULll{37w4C^HXK1Enmmn>Kp)U&@f4_e~x!qIk}$;p0l$YYcM! z4M$3uh$xWRTc0te6CM~M8Q!g)%lB9PdS5Zl`;{uVx%_fNtFxG!n*A@Po`v{->6ntQ z`z^b(dUWLNeP5o103zYG+)h)aSt2+Hq_lz@c~xa^+?^A&&}juUkSuV|{7Ie^d{fBx zW?Y@Hk`N>Tqt%=!w$3SI%T0xL1E(--iwZN|<8bO3(vRU`{uhbI^LJ7=fV08gJozd; zEeh}b!{%s8uIOp-69~N#s9wJpx62|NLR%hwMfKW5&86QH&4J}0a34l*Rnk`8E(2I$ zq#wK<^87Tzh?u8W??#q|NDsflN$S$P5R%(_7@|b;HxKWHe?d+Hx%bK&maO3EPgUeA z)_nCaR3nSxaYtskx#JHQC~Zyf6GX&~rGXeEymwjo_NPS(93#)$M)(H13Ik1@N)I`Pbmb`(}7-(a4a0#s%y37;eN3OIY9x)+u)%)jTVukN!*U zO8On~GRK=o@gUn3bWR@ZuTe(9Hr4sn{TomX+xOcqDIaUUOb8{F7b_rb)ovR8{LhoS zAKH>F1Zj}0xDPi#hw7yIm~T_~9@oE$o}UtUqqPTQ8ajez@otiy<83&RHfNICWWqTK zQ*=_J65<3N+C9h(3+q*R9VK=c@?O4by%Rc`uAe*YMl^N~bcgKbZoBkwR(Y;}a7ca> zC?mF2A!R^XDN*oZa|?HJe@b`@?AM-4GXy`b$4i#KwCuaN!ahIjOuU}hdmwOF2T>d< zt#J{(-#F55XHwbMg)77rJh}o5dmL}LaAD;IdsLAMkS&#|^!wT{Oj*UNR=rB+p&HKW z+KQpA01V2@H{%O`+SmE@n)YpPPgQuKEb6@}X7^H(0*}5ZQU|fO~*PC@sGl@fQ#N`ohOZNRD#4_1%G89eUiZcVU6f zg`y?G0U6?NZ~%HmbB_}wSD}qG2PRdV`6|Ar7kidS>hJPwg?240M_9L#*C0G<$v)CvvMGPKhur*yheE)g8sHI z1ogMc@O%T5?*PiZr(<;`!tJoM+{9M{m!DGaKW)bQ3fW1u{V#(1%~!|xlOq<<*?0m2 z5P`!}C@?n^pX^Ht?Ar+|UfUothZBEVkIRwjGLexE*&&iG7=x^==Y?KQZ|I2py(*)o zPJ96mVx)hJcX5fttGurNW3Te~bP6jO4W{~){n^VvjFNH{O{9#_rd}EA+4=TifoA{{qg|J%i!)SG`(= zi2?2-trh6oL=}>n)`nle=Ug~^Hq9setd}4id57!K8noE!4^k=1TGyj@ZSiXr2ZDdU zIyR2c+@z-x8PoHr&-5bGNS3&;wk2$eXp+mgBk9kF*ngNXmOH_P;OE!I992mhaFCi` zuKGP-L%PcKirDPff}Lf?@9_mMT&!X-8v#8EqOyOY9cIkxt0zxd8~)qk>`D7p%pkRQ9qJXXX=U`%HyKOw&0?qU14 z9636&!M+s2`FeOsS@_+2uHuVu^s)5$p8xLl@_F?H>tixrTd`Gzug(p35bbU@1oRVY zcW-8NH)6lLd9<~Ft2t?ojb_Ly1!Kodg1@IrI`IzwEYI#eyROGG#q4f~p55Qtko+cN zu@c{FHUYfc6VDA=3ECj11jL>HV*!e^GJ`{FKf(tJ;VOj}wOFO8tc1DJbm`qeA*IH2 zQnmDm+g2G}ke>v-ZVnkUyqnjxG#vQwI1aE=H}k1n zd(58)JjH9=qWu&$%IROWQGx{cZ1b%!$`j#qCduvS24TVbofpMcS%N!q8BB+Aa}1}4WyR>ewNm{d+!F*j%#j# znT~dcGmVnS{O!Ec{If@2Nr*XduqxxtOxk8oUx0p5H=T5hKFNU)XPW-3dD&F(Fz}G9_viqCx_I0j20aQyFrSPWb!3b5C*5FlR=@A~WOf4+W6AkxD_ zMr)taC-l5r$O7FZWGdJ6%S*wu@}9W|SHVLIf@QbNXvi-(X8q~6T7I_aS_650S7~E` zwcrpf%msUUX(O*ZLDC4}-h7dCJhFtBs|)Z$8Kgm?iOTCf+j{=dML|5k*0(*gPd&FS z-~`Fx%Z+cRZ6YkS{7dle@<^kNT}Ee*(ZlVM*~va$*^XQozcz^Fk9U5Bw8^w0Za*hByI?WUy(x1AcYZ%dAH zrgvV0$o8**5KD+K?dRO3Z?${#%4cAhAN>itQPH9L+Kl#cVXvC7Q8WI)3AKR@tTi7* zCd&bkhw>BH#9+;>Zg}W0!Es>sq${RtGLrDmFX(VI^fz)1i1jgyws@QPdNus4lXRs; zIa)4omp;v+r4-b-(_s=LVk-;np# z#A=iSRC?&o!H)A}LLxQUNCVgc%U|8A-ur2B`^Jr>F}2bPa5(@P@v{u~UH4wZ9b|bb zAf)Tp%p0k=OPaDC_M0kwIzkr{vkSns#~~NA4T_Z@7x*mx?eRj|{@ZHt=`^lii9XHX z_QKO-s3JdccCD=}YgL-R6QRA3TySl|eMx2?;AFvf&-Wi~gsfvh0gss0Dl3a$%Rau6 zjc)1j8)a7-kdQ#?uObzweQqHC^?n?Z%~|05{`w)NA+6M2Kk}fSj5xqt&0-ew0x+=7 zZ}$e=N+SxKOZ9Kv*;?HNv0Qnb_d5C`;Yzm?SRYT>ETmy-xrA?F>s+j z^utwvlu^G4XVI3v9bZ=hA^SU3EATxtta<7Er{Gfus;+dSfJ>oXe0XVyyoH220jt(O zG`Y|v%pxN7<`M?y<%cVYQzu(fu5Wum2iP)C4F6i6m}1Y01-f2K6$6BUDJ(L4Q`5w3SXD4=()|aVo8R+k{Y2Ie? zmjEOZlK33Lrk(We=eQklQVNlg zWj_1XBePSz+vP*JC4G+0?ZAkYiaSuy5IGKu3l(bvJr@@J|JSDJfg_xa0v$91V$?sHb#24r`Sn>4K*&tny)}CEKc|h{!^eyNjP^uLBT7MsGd11m1w0w?V z_*}=FPe-mVbN$(6XQARxRt-=QKXD4~#y??a6&!sWKJ2b43#Kz6C~&F?zesG{38WWr zZU6cb|24>Z?3TVlO-O^ly?2y6<{A}_CGLh#(Sz>m`Lms;dp+`XwUfr@se8=JKgOf` z*ue7!BDnvb1;u!D`uaIvgtx2i@6!Nii9_WG{X#UidWjxnv?V`R2L&w34fA;q2Qr51 z!wITecH0?e&0UF&Clbh!B7`Wdw5d#pRzm7ZNS+l~7InBYHXkULcvQ4fSxO7jwgjA% z6rr>G9F=e>5+4JAQ7@DH8=t>>isY>jQknu+q|VMB7T;GVeMp6}R-U^^wox;JA7S$c4Duj>67(6!vUy$?Wshq`@ zlM}_|5Zt)kt@i#Gje26=)F`I#20Yjq4)}qut>_);^%D&G2r0`07&A@w{~C5k1cvdw zw*9iP6MeHO&MDc3RkZW2=9MYD)CXfTcx8V;DkI|N_befxX6=mIzMT0<(HuApRNn*K z5nRJ>ZSx0#1aOgr&tbumG?S-@iBSW)eX8z5K%~*1aEbr+SMC&9rK=n^_e&dFxz~V9{#>Z z;inZ`tg!FA;qc339R>G?;^_^QbGhS6N{|yKi$2S+kco?~?$ZGxer+Uz?UeaDeZD$T z7@Up6v@hMy{ReR-0E1HQ{Z4ByM33$9m!C`xn~;J8e%?HB5#;?efT3E~j2~AaL2x$B z5fro?G&N(`B|S0%e*_-+?XNEx7DggLw?_W>teUfYPZ3i%gmiKV_zxqUY^!LT4CIy-(@=a766|Ryprj@xZ`=43#}(4S-*hmU}YYt2mYJ>Y?x@T&mGZB0f=?ehXR*Zb;q-U zPor*1u@pAq+tM>Gj5ymU(_gIa6U+g8(%roM@4DCx84TGG`Qgs{o2?i4W2w4IX!`x} zMNy3-z4H5o@W4F^3NRFlN7MBr=Z0(3oco_fzV!hupFdnaKbE@QIJl2>kg1u#5x+dX zk}HC|a;m@3PPTM!(#j3Tk_~g#z5^8+5}|L`pVBXY0L08@SHoN!Ki~D%)k-9JMZo?cn@If%4`opM{_gY$UcV!u z#qUX9R=~oNmV#{N4Xgyh*A^7bF2Kc})eC&qUV15R@47ymNNga5J=nL%!6FDskMEbi z4BqDn8_qWEQEt=`SXFIB^LKL&2`;PaZ$#=BNUn1aQ4J4$`gh`mllL}eD-}4-^3hJy zeE_Bk3YR#9F`My_Ayr&q!c%I4kEt!gVSjWM*z~EgcRH~_r%&~A6xn<~(oLk`b4@NlY9pO8u<`5WxAIvx(SY#L9|21T7#JUP21+ORGDgI?aoMW9cF!j-(s$zgXR zJ-w65-HW)t`R@OO42QGW72ZITQbkfr3JAX)sk?qmh5}!72O-nh1iLJ53iRU(;T-OE zFTl-X%V<}=7dWmzphH(s*6>?&TOuRbfTbxBc*}0gn;A~V{0)~A2K8$Mgk6^_;p<92 zIrjL=@xpD}DM4{OqZqCwSY1!ucssn-WN4&VDjbJ*W#f$^3-My7PgvYWW&x+};oN9J z0Wv`uOV<2$k(qLsF{$S)zAg0VUl7X#N>Uc3^strI0W;S@Ly-O4-i1t|rni3|e}Ryc zdz-CJzn0%g$=^GHIkR;OnK5UsA_%OlI zxNHtIHPNf{dW^#NpA+mQ*8n1wd zgc*ZR@LHh00wiON{H!|g{r#je9Gwq0_^RB=+k{4b;HzcZEHC@7^Q50Yd3tAl$wJJY zcV9=uFFYe(bokNmpEZTs?O4uil#EK2CvPzq{L7_KamB4q7B#*?bm!KMvknHj!NQO{ zOeSXaVx0&a4f7nVtIo4=FAPfnOEY9I=%#r+KQdUYs}P6&ky_pW{_ejZ^b9MZi(+66 z!@Fwtg2(*+zm^1R>+I7ezhpH({#e|KQ~@Oa_deH8HR3jsZ{LaiNiTa|eHw~)8f(5) zS(kI%+&u<^`AlOSJTB&|7RzGMy)0EnPyV>(b6@^4pbJ>UI}{DB;R>L`o-ttUuR#sEtalbB*!hnaF8*2FeL;c5JCV-pLh4R8IU5X0kkgR zwf^|+I+MrWDJ;V!$i;Kp0ph;=Trv|f@IR=(;1^UM zbNA%=l6yCsP=Qo-k=)@bOe(cI?0{$S?`_%y6cclt*Tp_1ay?^Xa~p%{lr?hrSz)K+cddijMsVR11yMqZ5nYCjF~>j>q*H!C=D5?c9hf3zA|m89 z*FW|RMto3*9yi+}ailcCSHC0ekuw!t?n54D5h6x=Z0h@Jy4mntDX^pDfmwB0s>-gW1WbyL(;Kb{^$l_ix<=s z-0rZYv`n9ZO`O>7YaEgtP+lRr`kl%&e!;bjnIW6Ddlgg0I6%$h0n#C_2Y%hSlsD&S z08HtE8u6(JIRN!icoM6Rtf8$8+;-3>k|o+36uFmr(0=yCiw$mJf4x9u9h+N#6Q-^P zQZUs+1{;8Pb7k{uG8#e6zZwh}*@_M7C`ao#+e-6XDFq+chGx234oAovz;J+%P`xe| z@E3{NYO{a`wy3m%Za64^tdw}*9OHkH%yn~vYJ`FDt{DE`EstD~ZTzpnXTo z@G@ff7u6otnZ~e<{Jrl(%-_!6`wF3w1dj5bu*xY^C-O;n){s;xsEm69M``m76{p{+ z9!^wZwY~D=p=^jlBLRHJDIEhBt$dz!@zC##9t3~52Y~Y`42eMzTR62Jk9_bh;RX@< zqUPI#`H?p_zjZhTP*G4jB;ENq^V`-zkc^L;Bf<3%`Vr^;K5_lviLwsS1bL~H(GmyA z$?xb_AfHP~4eLbeFVfB$T|EAb}RpebR zdBKlEop~xpaxk&FVjrdqdiy}0v=W%{_91tFg@-ZaJ<}lyAV~0g_c7lg*3<+q8%#Fx zo%xtLEZ~+v>|j0N04)Fh7dsYcG(`k(4{7iYW;<`dE+9ZP2Mdt78+epFLSzerp&cIf z%Tw2>WqzyPO1B@9kmpdLUliSr6_;S+%QSiLA-uX#aFXc29GkVRm$E5kF(|oili}nJfPmDb3 zZCHMk8nkD)35ne9%I!+u7fz*qXc}+jDIAkmqQmsDjd3S6gI#XU>dg@$K7ODLTU}|W z!2kKm-qoV-2gv^VVIkiB&dz}4(~%lMO#Qi6@JqjC58%PI!#jwqQD&pL-$tj|@ox84 z8$yAfE%p)aeDUuuX8V*&wI-U*IOb;VLd$#g7U-7qLhNLi_xl$p_}sv*F{B>tU;E@- z?8X+B`2mc#GvUi3w(4k}ng>?q&y!;PT*{z{fI~lod^=&WmpRY%go>ga45E+PD}zlD>2`hS_n4lLpkU%lDkOBUm2Gs+Uusf@bDQnQ%20lH63+CU)hqPJ`G9FSo*LhNi zpRo+y?y)I#Wg{ zT*y(m1Y8akuXZ7)@{ukxcW;<>7k+7G0MLHAY$3exzx;EY&=y>MiI7!+(963}=K`cM z|A)a@(%&WeXtL|KW9X(I`C^UX9TxkVU@i6;JI_t`>v+7VEpu5>8J_?!agv>xKl6{yzA7$)I>ioQJN++qhv zF5IP)6pG+|Acg2^{m~8^lov;FR5v2|}@2T{`lYJ!Quglg?pmrex zg^!+uq0N=bGU4u!B{AAtm?{n+;%*0|$;%0Lrch?V;IQm6(weEA04`l3(Rb(Vb7y$4i5qyBDOwl{L!dMm@th(Nv=n-qMqjrjH-P2B&H zrhjh@xPD7>nwB_ph(JE}Q;yDKZ4k=mB4YbMVG?A$>uHaPVSB2lF>+9K+%B$r}=>5h(XR~?Roy)$4OFC z+KxVZI#(CO?R-JMl$BuYSQh%4YpD#&=It7D~daEdTDor)d? z$@oy7Sl_IdVfJ|NGHb9)O6Xy8kQlYQtzU}8E4wsWaFYTa@_)tAE|)1M?|x+0KWNzUCBq&Wp4L?xz|8}n0;?Lpjn}lc49suE$9U4%7o2$FpL*k*}p`_*}t)_q$a zIx;f-6}{RoOoQNB!Yu0KLb~*iy~E>O3cK1sE=er*3H>pER-vgpyL~Q?}R7Z=>j+gf19(%YNv07amq0N-Nnx5PhLn%4i~*5 zvg1SO42aWZ3nf-lhrNOD9{t^49;E139ALB-N<=mO-axb!IUB4-_!kbKTl8V4q1zii z#g3{CUIk?3v}SKU5(FR*Fk;5&9W40__|*@6{=G@Ic4rp3nLMWl89@c`O;P6A~~8B&p!yWeec2irX%;vWv+BU1xaf!BV& z_l^D&xwy3fEg}V%*;msI7tk%Q&wv-Lo4FMN@&-K2I9T6z@rKwVz+&GOl+v5WHMRl@ zVHrvKVTbBye*{!qyEI^gnUpr~1BaKLGX-7Nz%X3H)#aG-5COlxy*2E;Cvq!#_Tqfa zfO2*5cGm_2g0Is+jqf?1I^BF7m-)ycDEDRpx%>7;sy;)}gHztcakqSekAd>HL#QG` zv6tqr8-?(;cy=*bGeG<#s&sJl)?xj*xeAg&6`6KFpg(K3h7m5!{MjTbq_h^Q(N2a( zO@gx<=p_xUeq7Y*)ZSjj{|M+-DIQ8&v$>4*oMk{qc1}T0Ya_Vn4w11JxZ346CiH)q zVAyqLLG8|2mEZ~qu;2yW;2#NhK=C&_g(`o`p|EB8o@^mwX&JcOn!2wo&)T4w%HEE* z{z5sZ$rClrQM94{o}@T^fcP-R0K-7=FXlku;sRl4gBmfEk_jlI71xUI3Gz<{9s)0_ zHt2h?Klo=XRT5dTQrjlnZAWe{FSghdZiZ1JW@x-zFj?aRcPC@G@4ldg*6&P|DDYN& z2_f?TB!Rs0H&hmEp(T+M$QTlOP>KQNkydkj0D_Ms;%U!%leG`lVW+5`WwBPvV?^Dat?U?k zLp0DOzlN%1HqnaO2#O?2$$oW;o$`09U)*t+kbjjm5fJ1~*7j}AozuS6H_&n2LuEA8 zBRC@jFUvH&g*w;N^&4MGab3UP$31XO0v{1nB}-U|k`CHGik1{PsQOI=N5V9C4t;;d zZ{dwQEKng(#eOUJ2&(E-LvRdgrVaCy_VZECZ~uznLf3K05kFtK zi@TeR2hEFZtgdOwBp7b+Xl-RyR3DnCLo0$dgJPCbxt%Ohc0tZH=ZKnSX32D( zG3sV=`3Mf*8#^K#X8_#b70O>S?Lsv7i_?)JSqtc~b2>lHrdc7Fp@}@vFs#>Uo%i>P zuveh)`f0LH;B_=F_nv<)MAn$)cw7s(mO4qxYae#Y?4p0jS$*@UCVJ3RmO)IH{+;sz zxw9??uOh|$r|~sC;2>^KGPZBP1*Rk(+J!$kAKDM@XGZOOyKx8$2sfxC6{J7(^QLkM zu-U0z!BeQUMFut)ll%KQf+Ad4RbTd*C}5Tg8(+{` z&<5BGd^7%}!hEpF3%&tG@DnHMhrj51&q6~*tvP1OJ+};sw467z{7QcyE4_tKFEs$u zV9?7>-MRhpXdmWlHyp#8PA_1jZJLN*N3U->paeS54)`2fgqYlsMl-EjCfAcq+ix)T*FQw~bK7Fw^{}->b5krdJTVLfj?HzM~hPIt1 z0LT6fhaKQsTwI#~gk2@^j0PG272yEw@x!2|VNreA&m;!enP2Ny3T>|tK%KkN8k*75 zb7kkC2SD{lgnnUwSv|OEweG*6iRw@y!Cp3Ae?!X9t5Oa~(3MpB3Dq|N3JE|?%})Vg zBJbA7(1#=8={Ly|2&VGMQv{CsFO1q6l!b8yIZEND=`*wWEm#kC6u};yG(~l3n+pXl zsjfcSm#=@2VI-q?-y2fcBk>Bi6Xf#)Om+ME>(b1$uj) zFE-c{cLw8(?^EmDgfePRgoDcijEE?tBK*hlCgsA`3a4a{qvaCOx{U9P=<5@rP1&I= zx@Mw~aD3Irtr2$2pWS6(oaY}11Q=9F?KS)cuQyXe_xBdZoSJf# zV?n;xOv9Q;Afbf<<~nz2Q7Dd+SIW-SD8Jo1fF$x+P(G|G6Cl|h*7K5$etvoFW#_k3 zkqr7Gz=R*pf6x=%NW}!MY&+3GI|??|*8B+}B2ld|5@0I(CDkdvPo8B|P;lTL`6D-> zhoxz8=QF$7>&rqk9*|*C_kO|-hr`)0#sTh-IoRt`2f2H2L9QVgkW!5GQIIFyMD0pG z>V^3HZC8e7_UQuy3JM>zBFR8cAbL3oG^oyQEP8^D;a?VPSCm4W*0o{h4-D=C@L==f zBVG%%-o7HU0ygJ5=+7UIS;#k#;n2KUv~g37B_3xmxzQM>rVe>!D_)t~IxBJ732){P zgDnFBes7&A&TbY_n;TTP{k-}vN7V;;gG6C75LYSz{At5k^)rs-HLn`jIptSds+S1y zu?ta$r`o`#Drm%P2;qAt*#K?OzYO&p*C(uLocvPYO`N^y<3HB!5-PXIfdB4eEVC0< zQCp@BaNXxm-;hX$8%F07cgYyFp(ENZQ$Gq+fLS#BRqnNq;lje6LnB^?(Q`X)OfC&y zNXCC88nFOtB7hn^N@ZmFxeE_8c!4p~+J@?tSJ=fsJ-h@~tKHY#-(QRFA0I;FjX16l z5f34~^l+ZXsovEP;d6*|p0$Apd)jKDO(h?(vpE$ShSVwPp%HRS;}G&vGwAbuLp5Ij zxN&*jfjy@kHSO0aPZknesRwzUm^sBN#UO1P+)-tuDCjGD{O#3{@E-oKyI(O6j z3UBa$e1{Mx1W-D#sv*+i9JkZAu)d`{e2}>C?*8Wb?>yi)TN?5~#DMG<&}w_JyBEA! znh#bIIVeWQ&Tr^dp#Ar(gK*18Vkz(NhEYP&6z=tT8$$C$7`2(t4 zHiotYWlYx)`S=Ns0Prd>8V{)1sw-844;_|J)9hTHh;~2~T}|a}m)?fK>D%?p`e;Bv z{(dtJfMs9;OEaJ--B+9P_NW6AUHLb5U=;|2ZCEk&4E+Kfu74Dr$JV0S8bu$722s$a z0Yrizl6#0CK{Ap$|Et%k)*a`L6RQ4F*!%m|nltV9_WpTgPe3&sZ_gnGd^zmom{djb z8Oi;Wo*82<6SH=IB#HUfgX9LMvii?RtTdC{3Zp|z8&5Ax4dehNqVS;-o4x!4N$ z;Nwrc^OEG>g<&4uw!YeEn-(~0@g__fHMmzG;EZ&4F+RaKa zh=jEH_eXC9dsspG?f1(HH_h0dZFdjZ<2GW@c!ufZHd<BzjYImU)Kc(47y#2^v{CsMj5y5@$LHcF0v&bNmdZ4zo}4Tzwp1 z!(BCpO?hg4oFGe3(OF+T2+KR67@oQg86n-ADn9tZST<&pjskvN^yhCYqGoIF& zQ~)U7YycbgWTs=PvZy3xnEBeFZvNeYxcl5+AYt|0>xU`(u5}<2>o5k}o;DhioNmxO-FCNFKW;*E`s`e({nTzv*SDWc zT9R*f5~Il6pNnbxUB*}I8qX4M%v-{ z;FU94Z*S^%HF~aSG;ckj({Kqs8{ZerTT~4oq2=3@DbqWK2WC}7ujHliL=t-~nspEl z%rbto*ZY}!dE3i)Ish(gIQ!5HX6Q%q<4Nw}FSbwZSGY|G(S#blF#`B{4ENSp>&w}c zZJBk4PF8|$lW5y4{-Q3gzjfyM*`4z6wDu%74%&!qc87|O+^A_jt}LGbe8 zy58BDr1v&~Xa6tm!uwgdW0UBW-`(r4F0h7Oh7-cZcco;$g>|ac*Ok99B8{KWFx60v zJhpg$BKdY$GE+p_Bi@k_(|z3TyLb9tHZk>~G7h07Uk(kaddY0_UncPif56!dHtbT5 zPTFxWyP>|;@t%2b(Y0CX@9i&7us43)Ge5jOzsk+=zD=uI=#(vY3gFatp3}W^ErwAF?(Z% z^@G%ol!)q>t+WeO0J(1@{&$|!-Tr(_iN{ygFfTzOfTr(cvL{mN^Vvf>ElK8dvx~1l zITtK@mi^)53V#aXCnzkl$=&R0=pIc(uyvLifgIYGzIjmkZ%Q@#tIa#j85QN>Oe{!U zFG3%iKrMZ`J111Cy=(29p@yd5|GPUs$yCjgH6HAUf*N=$cO{kr-?eJJuzNFj4&=8@ zed%TThe*zpEC}RF z5$WSRh-ib@=T zF>c;WN(G-GSI8`$A?=%;NQ)0d!8RV@Wn}J>I8kwt?63bohy^Ay?64~Z_--t1IJ5qO<&M5CA9aq>Vs`Z9piMVXIBp=yXx*Z>f z$D>SF>Yhg{X0i{k8!+hq9{Hp`BE|o`30&|~=uq^k-@V`cJ#k>Xvq`bX34q%-Z}O6d z9UBkNhxOut`*=;?L%ul1$AFkxiqGtRRrmW>_T&N#74RigPUFx&z%_?h!r)}|FA_uDlJr|)^( zo9DdC{Ahpj&cD}NC@ea7KyOCQO4H|~fiuNl5*Z}SOKDq?kI())!Ry=xoM*jOQ=(75 zyJ656wgR-xa_O{6#LefAr)5XP$M`_r@@t?U&=J*~K`j)#++Wr{6cf+Ic>uk}_FHkW3l{>>2$``(gF{NSs! z2h1{kyh`{ZhRNylepef}Phqn?>Jk zJxSdwu{-^FX&Hm7@pU>F!cp_AEyd>!sofn!^9uK6mhSRvSl(F;^Eg%vt1(AiySQAT zxc^|*ag$asHRgTK{={^b(C(z77Wkc7Swk;bdr!&zcTv0v9i?~Nz~mBdcU)zm99Q*f zt^ZO)&UAJ@lSgfDn>)@t6?p09Rq&7>6t8N}Cx5IT=T5&{#m^u=*AXr8|H8ronyi_Z z!E?ik-NFl6Y9%Omc49(M`BFDa4TwQ5lm6` zlT#O5Xk)tBY18{~yWDV1+;5jwlLLO9=QxCc;~dav2sOWbV(>$Yfc~@g$qFdO_wG_7 z=EK5XtD!0U*on@$YdK>JzWtZ#q>D&;Z|fuln5X}^{XEKUu9pYp5Bw}K%j^#5d0Tx( zhzex>QbxWN-U$`(D#E-}8oDt5rSKn|1mBBl9XC0)lG)8`cR6~nnW8$fGg#6YF|{D< zJc|$Gw1%rnF{TIqhqUn|dB!9nwd!g|gDjIB%;i(%rTv$;pf`OD&3g|g=-pD<56Cd_ zxHGlFV31XLD`<(IzY1|0`8RrbIc@%Ki#~SCj+u5Ikvhi7KtejF5@flA{hry4eEpV( z2bs)I^1n^wmA3esVAqs-WuuV=VGf~78bUNKe|{)P8I|}bjAO5G7JlCtb$(ri>6jA58C{nYYqUxhhOL#eO)FRpkCrLgAAJ`Y_b?qh zVrE$9rW>R4stBpor_XyD9@XIo%JKDY^0u?f;pg49@KKwJjc>HMXC@u^0h6T11t^LlHZcq&?F z`}Q(&^HY*@^Lh%b{T5HaO^Vl2or4~6FRw)TZLbASaTv~jr zpK5R=`El*a;AdEbj(?BqWsWglQn`e>FvsEH%8d+h02Cl>!TD=0Tt|-j*q6OaM^91D zes75(l-Le>3Y>`aLI0>0agz8TO4EGR~ie zN~o{>9VNdi0RM8YQfqBL@yNqF((CCtaHj67E&X?GnYZ9Re$QrjpgQ;jdIZd@q45bm zeZL&{cZ@xRFO&Nb3&}y!bYmN-z6Kss0>nSShN|sgb_fGFBk~Lt{EOvwJ|6HI73DYW z_^oz-fu)p2Iah}z5TAJaDV{@)^2wMX=zBfFRu54uxMossF*a(#j&HZqX1z|rop$zk zrnsnJn?s;E?&Lhj%Y5c=h5iiux^g^xj`9Dh*@>jB$l}`btVXTztfdn@zmKB69^^j@ zK(Od;Nl)e{fQccZb`(rX;^`t0ns4Y>oQ_O(-Ld2z_V`K$aQYk#hDLW_Uc4bN7$m4_4`1s$$sZwVfrjyg+y_gUlw9FAAD=} zx7}=ta1lRVmL2ubeiNRR5AleZeRYtCT4IJ>H?XLvL}sTo^X2RRmEbUrKph~Ex3Af+ zL!Bu5cw;=%%ba6*X>D--_(Onp3%FcHCPQFWzP-*RZ}UqN#ZWo~~E*e!*Fgkj(w-efst< z%lgHhx=&dYlD&Fol%P%2{zKD9S`M9r`D-uyb+r?PTbhH`w;a+7$L7>CncP+}%Q4-n z0J%2|3m?aaM@alIgkt^p-Ug*R0p71-p(qJEDN+k$uy*asI;~HN;4j{?l+d4S+{`7f z(=jdHulmah%6w?frE5nQ?Zt`WTh<4=W-lo`mvg8^ex2jO=7Xw z3Qc)t?nQyjb>Lx7MtF-!JeT+EC?H>Rbyzob7tgzrC|a zB=5!)9)#gQKMol1jxZbgubm#yb_vHUY4$tr^gx@xq~DQs5ivumgSvd3&QwI9K|;cN zIN!PLXpRG7?Q`{axQC3Zw7>7;n$x)Hq$mayP&pW**tld>?8*E^-45{K)Zv}K;tuW) z=_`BT7_eS;6&;t|a(|t{dptH^2#>)W#tJBV#$`hQ0sRv!#OWXmj&1eIn&7EcGK7H3 ztyuQ2mS*5zoxjat1s^&MS4-3B<<8ntW8{-p$My7oe68QJ@9-LVXSlUzT{J(DiC~HR zUDWMva8vDizPAeKaPGoXIM2l){^oVJ__w3N9W>*4{XZIQZt1U?h4bC3N^jZaC-COd z=kyo694yH|DhNx>vI}qDzKKI2h{xMH<(FvRCwClgEqkEhX_dX^9O4w^jypASWo}KL zXBJX z)~It{wU6Bg0J3ipg`yD2yawZUK=X(|CV7_M>E-Mv64!w#n}kCa_RFL& zFGM7NtgAj94u8(VJutC(cASn17XVusF70BaJSp{N!M323b@|lsn+9e@#XGZD# z344%IN#XZqA3vUXFc5K}q1%M>^UWGP+wSEP(kv<>WhmTTAa}L4zfNp-<3&jisNIJ& zJWLk&0=KA9i3~IGID8%&OVd6#w1fo>`mp03h_`>(PlD0I!5~0MJ;2Q>rQ-HD}{cg!lgQ zdySgt6WZTmc}qg=guJK2Tiq#bWA&B!X3V3Z9qgC%%`~iVjf2hS(r`E+^m2JDGoe=siG! zC&%?|yF9RBEbWfg^H)_8KlSs@(88TY`O+i*{d(!R?q4fY+E?T(8oJPdpoxM((wW&C z;^+_CbWvOw+d;&XnmEWOUO*O^%8cy#y1FeE{t<%)!cQo<aMa_5~CG1p3Q4oR{GIDbg=)T0$>JDaybeRSXK$FCL|o z!yvTX&y?Q z?!aR<*+dUO4|4ikNf(z@k1KWZK!Bj9bNIX?viprnQTpuOQKJpW#J)H2EbrE@wC>Yh zSE7l*4A(=XO_7wp4=B{#=a7`ovfiI}gNMg10!RzQqBMSQ`{&K{ey{TFjuG_cBe)JOB99J`#CaO80$HYwt95vn)e>08JJ#-i_zR5B_t)266Lo&TbFq z+ukNq;3tB=uU52DsPI=3K!u3~Ub+lo>}gAL-mYf=MTC*Qyu$`QCkdDg*-{`g_?0upUAyM%umAW8N3WGTzBl07T!z|C`NI z4QfMi5*>+p341^Opb;h^ejq&iPf8H&4<}HjaJ>ZuziWMoFAZS``r-#Hy*qyK_dw8R4lBFAr=*aw8oiA0|FQ&v$lfxU z<=`dWn6FCCFv`c?UtfwIJmym>wvnyFcz!yIZHXvdQ^=x~vnl`T9|6!S zq;GfDJ%ELX+-KKydn_Z3eVY=P80c3LgGY9M$ZcWONL-t?&HdxysAV|`Txirn!fU-J zfVe|-cpUgA~(LCbXiZvu3;!K`%_Q(`I5){9kkdHh7-)IR)+S! z)NOERw`K#by4EI2r=e;Vzh>Ui`U-K?vLGkIGL0NZS~mG!sj05buS6}j*B{0b99R}C z`7Moi3fTyA<%AiO+rJq6_wc7scrUwn*g??f_+zOM>l702^o!r>sGfCVeFPEj?B@Hg zFplN{?&*g08mk{EKBYZha8^nCLg zSiZ!hQ`OG?`}NuRz`9>-O_~1Lyi2cGJkW*L&F;GS_hhbCNk#9w(N)fqzz0X$?q+w0 zWDgrn3MBMtP3cX$`DyzA2^8TV|LOV%nxI31)@XS5rW;fA#=2FK&EzGvHF?b%>AhbL z-uwDj6HfxIH>GT?y#a>Or`;Zb<4FE`x)^uM!Zq~n+6PvB!l=G8L+|97c42=^LU>lo z+1ADO^vqyn3u4llP>CE3KWPT?>BVOa?+Zs%1&*>|Qmh+5}M+&ieduK}bZLGiQ zsGd?_=6zB&fVEX0`$UM_m->Nkz@_-q(!{1yI?oosNrrLZeKm-kTIOq955%%Fn zoq!*)d3{I4fit@B!m`>}oadiy6Q7-pV_-#9Qc`leIIx=8;rR?#vpLGKYaZjhna^<}*v zDZB;8GW}*YXrX#~3W+Oo$b^9)Jn!f2{cb-u%uZZc@zx)F#Qen(O)wx@ob!?m zitskX3^16DXdP6gj*rq6qcPMU1~2~JpG{DU$L>$EjEFfK$lo)8MMT)m^7qi^%_De@ zdJ=HXbcM+A%Qs)+EuBY>eMLK%7qhqOD*n$3iQVbST>EWtzi&G2^h}(Ua6rJdKY)_? zU&N9)rP{wY=eB3PTXDVZ&C6=j`;%cq^!JE;2e9XNdNyyv zHP6ZTh~(K98=C&&u<3-tzPTq=fZU3 zFZtzl`7+9d|GlSt`kiiny?t4l#M;3I2QmoVJZ#)&i;3*dv@)%Vowhy&QJ5FC(ZjJ` zm)n)e#@l=5RR4YJj{Z~X_s&I6azFRi-ypyC;N`LdjOv3|=={@ygYQ@%Za;=w8RqHY z8a|HJRUdhDDdc~|s71mav(Y{tcIi%?_u>V(Z9|WQUR=aIeg;-B&xDekaWp7U%ic^D z!z2gS)P3Z!izAB$`(dw_LY`P$Rr7*|a$Lc#^fcTx^GZH9P-zk_CAe_knF6ikPv<`W z9d|$kJeJqV@DhqR02sqX0wL*^*`|4!c9wBI!}Wnv(0cqpd7u4d|LkSzsrHl`1fo7T=u6y6fc`QULm-?Ai0Ppa<>gt|6WD-KV;sO zq&F`rjteg=|0IW>em^t!p6UHUsbmD>w{|Cw5*?&;kFbM$to?+1i`ggmBy4j?EaT8i z@pB)5f@Dxt889}N|Cqxb{>|=wf)cK;hsU$+5RZ+*g=wn?jUV${&G^5?0iV#G5+bRJ zBvPA=nB>AK8aO{rSWw%*JpQ(fd~>*l6O9pQuT~u2jO9Zhh)pj{nS87LCdkd^drBGU zX_g1qW-9(guA9TBKsK&sYHgf8P`=5(os2xzQvw`GtgL(Gk0$POc8IbfIY#p1sHK*T zMFUVAbL4T>A<%ZX8QT%udHAE(-^s;Ur9H{AnfaE<1A{Ag*10^lUaS;c1GX|uo_tA; z)iv6Wu8`hraotRHk&d6|>I-YYFKy>*4cLc&{1wN)4CsB5=FVRuzJn0<{w~>j_~;-a zh)Hz2ygy7X60ZTy5&wxuMq1#caoJPQwj?X#&KTm|=>po(!^2&zMx<{Kf8M%;DwKy7 zRoWhIqvMPDtW{>dJa)>2U7)&&xT#I&U0wIDtL`tl6tg>}A6QZ`_G})%4^u+s{CyYv z$W{!x!bABwbOk-1k~4_3^Okn!UZ=X#0m{O~}_BEmIGjmFDI*kt^=o z{YtO`R(iLz?{{YV_)(|yDCt#I$d&tt`)KG~K{MdYf)+-#lT>)u7who7?g$5RAysQo zd|s?lL2|-jAt{6XG~?_EETJo5}1cjw~!S*6${U zS6EI$q-u%ez6FX_F@K#x*zX!EXhN^ZzO#zb64@K?EIL)6;ahmG)Xu+FQ+;}Vy#{p~ z^fScs!##d~H*p8IXS@`bcU474+%ctvZ>_anH`>=b;-JHSr(;Xqdza{X{3JUQ=S+vE z#A{~1KqE4Z#~(z?F~`B?tEt=T{&g^!)$G3Ef69CRS{0dJ2`kV%#B-*B@c#rG6&lNBb8t3$Sp$+DoA-W=qiu=B{80Kg_zHpz(Ft+%M zVULbk#3jC*T%BL=-r1i`#sB8`ws_XEf2xi-EFA5hsYmy8Az5D{fhiZ)L5KA(?-9O( zYT>gR8$!?)l!fk@@B&*Ho%steQG^(li}(^`Mn);eY{_An z*H-mw7F&aA!BdT&r?3_#`TR7Onp2p)uBM)Z4~%qF(RA?Ht?}j;k|&rpTGMn??!!l( zH{ZVMr|!ePxZ8L-SNw&Oo=tdp6g8v;y7Hv&9LxWD6lnY>`NvmB`1Dlb$xqqHOkV1Y zH1fuh9_Z~ejSlm9VG*S~sbZ%fewu{lN&mfQ+6et_x7=kHYEIALC3U?MWD)JJ^|fIi zjZU2XR>iXaVRX9(!z&+&urv|uxLZ>>OieK(SI_^W=t z16;&!@!V*KMx(MAE-PW@;CI5B<=7<|d{%73>*0xc%{qgA5WLhvUp6Q+Ntl6NW;m*{ z44?2QDZfVUKQJ8b#cH^Y1jILEZoNrK4>NqP`%ClXg(t_09+%Bm=0b23@8V z<6$iBdoneRgb&ggKr!h??(d|x|1df!nQmvO`0Qg{Ax}&Cd>9i~z?Z#r`>1Omdczu<9 zMKdV5)gui@J3}nTa;Ppv8&}qL_$KjBhp=+I0@jofhC+< zc^Oc?+zoZmao-r6EY;lqQD1*Ym19!}UmTcx>IMX4_+>}g9HhY5U9aJ}vbyQ>J4nxT znl5sGNYdZ5H#4;uLHV6RtKKX0Q3R&UPhLv?h+<8_AK!zH7Tzav@(sC*w*RI~0B_fi zZJTAUf_LKV415~?`eJxU&=zTok{tk8U8J0S&oaN22Pse`0BL%qzP)|RDF0PgU(+B7gEr)lDPl+Zgx*T;O-rfD%RX3=D z?LWyoJhfW^^$rGz&-;FWO8fIMEiUs0GX&aVP@c#cPJ?)aZetG(Nj6?UBk&62f#Mu{* z%db_#pIusUr%}lj1E;tDKC6J1`^xo&G*i4(`?yKpb~&rnW<@vmT7Adck0ySOAE*hl=3be@h^M8)|Ixi;D zAm%fNx>xm%W2(rH86`WNj!^#j^g}`!dLp{~u|HJpM6u-HJ5B$RU4h!ey0CjnC7xWD z_5<3zL4$EbU9-AQZ(Fcy{AV>T*tp%#g)`p)>Pl{yLwc}4GZ=@2f6nXu({5{22~_xC z52qnMy^YJa4^-L}R-zw<@b{7o&K_q~Us%_p14DPjGgDSU3?gLgkS*oW;jewR?*Zc-(}GjaqQ-*Yh{$t|_%|z+lq`sVHSK7~>}= z5~sic>mpku0wHu)LM-)+YoCy|g&nh5bOw*0XTggD%^_y==&hlfM8*2iv>Bu}o(w&UD_6#ZKM? zr<9;(w=FrwA@!Sg?f@;%-}QFq?~kKWy4(l;Pp#byqO`tr>LLtuUmWJSX4HJ+rCF#q zmXXGYn};eRjI(y*$3A1>r$H3CT>)qfs^5yyb(Z~D*3hy^nTxl7tH!#(?*HrH0Dbbq ztQ@N&jl>cx((D)h7%(3R(q;6t!Dv2pzBo$>1)gBG=B0 z9K9HFRNPPf4*uWLTcNYQ<_{UD9fkb3Fz*ia(stM0K?CzG0noH+!G+a=Yw2gLLbcZ? z_og=m{s*x;0v^tUt^#{+M8G|R<^%nB`I^yvenN*pT$D&~X+9h3g^+Kf#hLnkIK(ju z>a`G`xpwhFFdn&5qtxzUjO@Fg-W2B4K<7&Rr903({@}2ZT||)=QUy;i(^*3|1VJ>w z`S*Iw2CQy)CzY>O=G>k;nXe#s{~_&CeDObs=7)N74}+Obuz+{;n-BWZ!9Vnn%HFoG zFnkT3IWay*$SL;F_5*0B&zeB`t>do~;g*tKEj*yy#=YrTqIwL4-Y*0;y0tdd2W#jS9y)}gpYG};pdkGIA0WneBBp-yMQ2WlcCT~> z0WR3~eP@>MT`s+>;<#V!`L$n9+hC)JtK3LQCD!62TpAbAq$_f$yFY*3{mM4+$8I)k zy}dEF>jhip@=Eo1Tsd{GxbejuL1FfM-JO^iE>jr&4)qooa)W(_p|8!^&P zpuD@2d?v2GWISH#0sBPHP*6%4t9^+tIiQ>9>YGaWARk5I{O!Lt;zVFTrHT*jBiLCk zmf`(2Ej_kB+6^{uv!ukqU?S-_KV!oBKH2xTdY#l?AKhDHHOW*lq3{tnXAC{W3_y_z zo<(MIK1qEloG+r`GOTWD_Q0W8*X5_vH}do(J^oijetLw*dU}*_wF{=)o*;0%koP#L+{bOvgwalGkNinz_u-zP+rERP%NU=sG1{-h z)L)iyH2AHPtUMRiwEBKh=I)z0Y7UTath9-ikv)7Q}7r03}?{g@Nl!bU6 zDA43K0ASrP0SAAV8P+i42ns8bj9>PCW0X_7 zj>@#0gnT>wb^O%6FWKh~d0S$r`Hy&lo5E;```oGR=F4|VmFnjX+}s8xC-1Co*k|f% zupvZKOyR3qT{up-qNjbWL%pLAZ~O0a9^=%4@p3o%<*CSE;fMP`Kvy(kic^~P2|&EwQ}j( zLfpkDrkl)FP^t~ooaCo0Z~J9dP;|e2#dE7^S)P20<`eqN`$fr_**~|}gLP^&YKFhZ z<|g)h2rVZfp2s**4#Hbz`0M$hIXCkI-qy9goX1dj+>GbOt`Em)kK5+WIO#e2@Y*jZ zq@({Pe9V02TM-FIG{b-?_gK)Jt)Y11$aI8)K#q4`_DZ35mbOb^ij024ErqasCcviX9u?@dUOS`Q1Sf8KUl7B^&T>f^X~73$m*U`cgd2S z)!)E>BP9h2puWGZfc2i9!JXWxXJxadO;LUFNO+8tuI}T2-e+x zrygOV)QSEpO+sHG*#4Od6Xe-!mBwa;DnzR|Pb_us&} zp@QTISJmPUJMebO!Yaj<4b8OjP=80uu@)`YRH|e8tH9rhUO1l-3b&hg^8y$NoK`hZ z^{4xKTwRf{bq#P6$L0iWuM6vi*n7_aaYgfyU3)Fx&W+nX&BropbUnJxyq8k}n?Hfr zwMiO3Gq{L<3$>$%kh`SmE3yT_3p@s+;d;L>{sMsD+4I(LooY5mGiSzWIBwjBfv<(` zuFEAdCnQJgcZ@oz0Fvmm9MbwrM_%o%3h&-M>scG$YvvGFv^=NJL;4^}(W!1carXAR zBWH6AeCw$%Bq$N~M}hZ5q_;Zzut@sKL zPtm&&(ir380!(Miy32tH{yR%EZ@Rp6R{|Q4ol7HR7?aT-byTm;QvD*@cn<8^pYfW7 z_7aw({-f7%|Dpu!KY`U{*j+vjd+qwX1Ac4b;?&HAeXg-ztKyTYl-%q9w>~l937fH| zo8OP|Dy9WtE4IXm5_`!c~BfYIgaVOYDK zRp%(wC?DrBW%EbXqhGm2MqaLgJiU7l@r3Ua1V?e?;XyJs8YAjAR0YmR6Usl+JYOH8 z+8zErJ4h`qu*{&ntq&~Lcg79J_!`OT3M5LoVIf~yUOS{}_0K1fU*T@O7wap>wZqh+ zV=MWSEE9&Kopl_!BDs=P`S9fj1b=Z4pw{z+F)nY7>1UH?$& z_RIlg4ThJw*lJLwkZyI$xn+!#@QmSfAd{|&fnzZiT}EB=t=Oi`K1Hh|39rH3abK5n z!|Jp}#&INk`g2cz%gpt~rR!9LeA8CHPZ_4I%6RH}&4qZi@s6@qs9VDRc?oZA>^tml zH}N>L7%QZfw+2U94K24wsv!!mk`Shzm0o#nU)^AkNYWQ&l}W0tzjW!aC#8N4hVE@d z?fXm`4fvfWSg=Rtat5*F*9U3OZKHK?!Qr|sZv>Qrb?trrClh~Hg_q92S|%mFynOU~ zoGE@#2UdOr<^I++xBC#*ybha)&6vewY7h5w;K!Js7vw|zd~t|XY5yKKK>VA*2jcDk zLes%R(+I#?y9QjDjT=;J@^pCTjK+d!>jaPUxVaY~{{O&lMkLRF(mw@a7e~ZireiOn z=2r0#gQxyr?t*=XptTp@IYo^c0)pq^T%ME<_t8L+rwRX1M-&QQZjauj+F$t}1hgOd z7hBMIFlA&Wv~xh}4OBhGINayt$DPA7RcHrM|9euZ<-@Ac13_9?$qx&9b+_^s?o)`t zxXnEkVz1pxz(+xXd*97ibgtPNxMr;F2UhoQFRD7@OzpU9RiDuUZ5m`WpNMiSXq-Ne z;)0jHd>XiBtWw{T0Ms{ZQymi#j^yK?aou4hR&J!H$`wM%1E!3bJ8NR(e>ldQIKztK zX=TuHrV!2*cxlyecnLrILrFd3 zFO<;%FL#(MVL4R~2)=@D+;-fPzBNlApDy>KR%WQFGS^i$dXWBW2uF3K5aQ4U5Avig z_AkdBcBfAv87=PlkNuL;m}U>hmKd%oW@yM48lOP0H|=&J8P(GW$*Z zz|`4of1J-JoR>rU5MP!Fw1Q0fNlpyUQsUsp`{?hAc43h!IrmG&6a@WLS$^L}tPK?U zRHWB(v`P9;OZF%G6iXqMtvV}6r_-B^pT-GePm@X;e2hJdSwO71AMY3HeUR*prp=w(-WOY&i5JY+yr(sEmfrLr1XJJ>e^2W78y-H% za=Kc7;GJE&VY(n<{uVDrKYsF;E27VuT35-)(HoJ}{Jj4T z5KbLVeYBdhV!IGMANdIcv-Ct|l2k@|x zrr_Ai?iHNg>{1URd1BFvI0{vVi&c0cbQc=1NB%m~=I6PlAg(IU7Y$ppgdhMFop47n ziY?9*M0Y2NAEt_7@_bsh%;&+k-h0aDHyzvbe*1>G7|fEIU3FJb{_Z*HdVOLi2=AWX z;X%6JPg$~;`SC?wh~7zmwV>WL>j#!_IxLr(HcVN6{OI|@V%f^97Cs!;GCz{v}208dY|U` z!t4~ln{{Pm#GXGJcYI=r6LStVQy@F7Nd8b|TLcug0VKQTQz|9YnROJe<$b!M!MiK^ zXkVLY#@)dp{LZsK_h!Ak>-*zrl>XbKr+v2B2o|xZc8&MxaQi)3_B_V-XEaO)@zdRb zFmNv6qsQ*Ajl;b32ibbwmN>Wh}x% z-Shj22=0n{>j?_S%7fl4@^r?}lPMOr6s9iiemgAV{rGQBH2WjP9gGX@vjKY&f?-uTv!Hlqif*7D?g^W5uqbqje9E-`lk z-~Hy<^q;xqQ;XLQM)*+|P55Am2^r1huA%O+9PY22d&-$thtAr^RTxrD9nQI9p#s@p zl}~0X{IK#UJtWAbR>-vS)gG}JE*7Si=Dyad6*f8POnH6JUCR@Ar2FIc7TAls4FmcQ zta#D%Xr3W%DZ|e!o4oo9!to`zIiwKv)fpl^7%lsbx%WbSdqJQf(B;xyy&Fk@XgQg^ zRv7ri2e1z0yKUspQ!2BMv$?9xnc}uz2J}mio*$=?xfBxf{#*M(5*VFTawK-7S73V~O1@`DZE3hlgmk8rWbQ zv}gL${9qMbfP<*Bc06-d&Y6BkdM{0WVy$X1aQbTZ{RZ6LFID}J!JzDIhSeHyw{N1D zppgzD0gsgPMnDv}F?Ba2aRV;g)g_PTM+DXfZPwIUy7P+ug(Iw0M*x21BUD^+MDzU8 zy*^62!IZsZDV%%A_ijYw%E#*h`&C<^kSB?wW-@dp^P)>T`KLLhJ+#m^HYPM<$Mc6A zd$my!fFi;TPa> z1oiV#e7X)f#BBFP53v#^$kX>M1|wAM>L43>=u zO>Hn+E*@qYc7B)Nw{k*lTtL|PRv6Jn%qEFK1Vnn8T9Bcyvm<#&0f&$8P}3*Ak@|JL z)30#bJ!h`#jlbuIf_3j0uoYP(56kERo{RZ&Ax#$aeQ9y_&bq|^$D15@bRL<5&96>s z+jm%P>?iM%N%yLa&JApF} zS#;ow=jA}0v_r5A@{EXqpIiVYijBb`_9aeki2Xur8+Zwh)9&$Hy=XUir23kRc{;pT zsiY7dxE;8vo+8DeP}yIS%cBa#iQmEft=h62uP>ArzkuA5B6+qCf3o0c)J%6j{`WkY z8*p(^j%XSg^<}$z?99}X6sr<<*LeBABTutsq%HHZ>r22D3~MU2fH+&*zTHQ^cxT}+ z#3m=%5e%-oh^ddsC2jG_o%$Z?uh2(fZQf+t-I!~OkKgzE7i>E^!EwPAn2*Bi1|lOP zy!EPwVWZujjTpCJL&`|*V#cX;b!>*CGw?L4Ot zO6_xVBV}fwzxuqp-#$2T)q4W}6qfZ~1}LoTS-brel-TlWyMQkWHo>g6M)An(o(Kpx zd)=^6S&~*hKDPja=jCem#>O;Dig5hK7s{}+4MHG<-da1GqsU^>H*HPp)^$L*tRXCQOS4&sf?L3 z2e*h-o{@5yA6PY_04e5{LA8XH;j9B?J- zM9dQV1qBjCivxY4TlRh5&*XXfBVM^r_IN)4-RAQt2GQB&cro{yR#dny7z+=RrLP>M zq!vx8#azX?N+9sI8>V;ggIxHAXYzhxY3WAgB1g!3?~IX;@iFfYU9;F13%@W)VlZrH zvPB{YH<8Q}D zUA1i13~k)(52?3HaBSGNwQb_*kSg^~*4^^Xx(1z>*_^LODc0R-&$=`kxHbh(C=%Er}al)Jr@&g;v%IuBTowcy-aA0LADA>|zBaI`aI zj6G}&#_Ws(Fc}I9vz_lYeZRcoDiqka{C<#&`X$ABI`8U-N-2Ooh8w?A-|sthn-0kT zzwmQ)5x|zIQi=y22N={tDGHdLEwE+JU+!w)9SfB6j@s0Ko0k?X7yA2XN|tlT1#tF{prP&^?ZI)nw|``o*@yjoAyzC` z6H7Y-V;~twDvBDKI(F{Ym2hIJ|I>^xWFCZX?yL<=_}meI}O5^L8-$kzh!2 zw-0dH_%wlbLY?VmkxIop&-i2_0oLC2Q*DKY)?)WH* zGYq@&6aTb8q+4(h$n7#+SmX8%u@n#zW;=YoPmd?2Jo>0O+WD?EdA2~G;Bmf7ocus7 zEO*t_ZgkOe)&^(M9o~zPmhMLf1A^}C9HhVGD}kbcZnBiQKGGy%%j##aUmna*1$71G zj!o~R!wH^odO5#yDET^)Cw^CLlkES$&U3x&GYxFKsi!wc`rN z+mP5fa5o6Kr4UwAWQ4Ts#XoFYU!0~v8%81IiVQ|yvT@KlkilITUW=vtrY(M8kor0= z8ZyG%D@XO^Tqv+xF42V$|2{)@7Cufp>?{W~KZ;Y!vd2T{XtW8JOxn;I=1g~p^drqHtK*;ntkCu3r2ad`fw&G#IB6(WYmvF*tP#yNH06-ilRruhm^ zw`t^omv`;qS>a*dqz|7llQ+{l!1 ziu1P>xz<;>zTuRotP6i>qM;h-^E~b58;V|=LNiCS5p$3ie?nNi3h(JY%ZGA=8BE$? zZIL|VNd149T=`bfa=aEdgt9jdVaxh@Yx*Y2PzAu31DO1{=pMpbFZarUgn3fomZ-Y9rz+P7&CS(+uI+hX}(uar17-wgk6^XRop@~mn8&j zK#C7VRpPio9!HM8Of7~=24OV@Jhwdktl1Zm0pV8qyKTMYckpE<;rb;{etPjt%#oO% zhyJBQ!pUcxfhGA8GZ)F3QpcB(l-*EtRCXz-?ls+9&n_cpxhQ|^`skRmFfBP^HYv{D zUQKC9howF71-_e@!|^Q;aR&o?awRb~0@>(Cm@1e&M)*Mu|s;A$bJYH`;r64>6@jB6M z&#i23sbSYd!jC(hyV=X0$TZY5rRp0vz=<-l+xATRTGq0aK?`dWOL}4qT$=BnFVQm-CO)F_CyQH8D#>j9uJ5jNI<1 z2JR!z08l1Y_jl(+fMqkH7}}(_FfI#)mVT>IHxEWYVgT>V(w>}Cm=S%kb9EOl3z5O5 zbcMLpYH&xw@!ZnzAz%ty&;G9brPaVG`x5ER*xlLU3c>>gGVeVdpGnCAAg=Ixhwks^ zJ0>K%pJzW$355y$$GPG00F~UG0@A%rw*D5;u;x5BC*z~@Z~5s$I|3%~WL=usjwMuc zzqHQUd-XdyTj)=*m4W|+O!(ow&CJC>T6S0YR@?_i3v!V|5&~Bvx}G6BcJ({#sd9VK zM+3=BzK^dUtG=9hZ}%GF_1Zi(b+$y12|QToJ+Sx^gK>8m|KnCq@BBcoG(^*8LEM&t zjOI_~*q+F9f60JTmcXf)2ORW-F#`G0_w>8FY6*4fpkHNzKS)>ApLH0 zQyS^#dH2M^yg2R*u7?U8-{Y7I&~rY-*d5yDk<~e)ln0xdfC|Nv7v;^j?pG@M8=iN~ zfVlm8DtiiANc+mzx1AR!Pa5QjQ+wKWAM$wG<0`ap#{43Go8yN%rzMEsKvr#fo%-?X zPux{|`HcDMnoa@xuEEs7{gS-ePj&Xq(fw}{6Ju%@NYt3^zMS;MuOBFf`QlW5!fStL z_c$M_;Ur|T>FR90YM+N^{y#{MuKK0yT4bsnUWW3{GoQ_Un)!Fgs|!)A|JBPMrU z_t6-p754F~64(CXy2Piis1Y@S@9p87_7QqL__GBop;`tO-+b)Uk6s|f8S}SY{&se6 zs9Fo8ZdrEbpg2Gh=k*33*NpeXjPJ+WkpG8uPwj1_;5fB8x|6F*ohIt;l98oJ0%S45-k`CP3U0zs_EO_;6L=E%2=&}5Xf5a z*Y|LHw8d6g$JbWojCx$Ovk21Q=Y_X6HC#AZlYTjcTSWIFQe;8^t5U^R)B*3Pm(kv9 z@zJ!LvvknZ==20 ziXqRDmRKCXqUBsfm~Op*&r3U4NPq3`__X)AO#xNV4X$+?D@VEeMTdKSE#y{dqZ1T8 ze#U*;dk12MowRu?+jR8{>NLMa@KH({?+2~u_wFA>;klHYG7hMmn-sy0ptPgXkBPO% z19CY9q6`~@%A^_KaSd@D@X2LmHJ08jUzAf!L-0I7vtBJelI9%7Me|M5cvO*4`~M z{0RXtPI{p6kD4SI0xeT~Rk*ms2K|fjAC+M&rn)H4SI&k7-MSGxg`k);D zndOg1Zs!>kCk}l&Tq}CBGi1!&pfL7(r{%Q82Ao}UzlUy~1bL@fMn)HYCLL`8>fjZc zxQKL-4G#|qkt2W8JKAr|!rS&0rKkfb8kKuR-&^hfgAf1%!C=sF0Qs~J#I@~zK64Tj zCOZNgvSbr*x;ab~do5G(q?;}e*B7W!|II3#z_t0{wP6YHBl66NOY!%NlGQxo!Oy=g zv|?<3XQ43#*71!ox-ktb*B_4Xd#eBArz+)NnU&m_SAwdwWzRTl3vBS>nk$DKkf2Y}QJ)*EKQ^=( zFr)B4;V*~@aP`a^dX6bKU#WzrLPNNlpKQ;6GwSer5a-c^_eaUe_5gX$NB@h7k)!C_ zJ^fYbv6NOk$?|5_!dq3N#J-SsllZ{neMa(4uecpnQgIU;)EuL#;=z3HARBKSAQ2QP z+|kn(7lU8d0Vdu3w9O-hHbO1Q(zg(r>%m92Nal3OF04qefGoZ*f1NWO>7`jdys|iP z7Y%KUDz|V4+)`lTj5hSjyoYyJ$`aU`d!dVd^8eS=}u~aS6A)p?0(G8M%XR5d18GD zIoq}-!+);py%TAQ_NC^Sc;3)j-D~w2O z&$JTU1OpxRGN&%i^WY-^t*)tp7ZEvqs*jYl=5OS_y*Uog>vJLG(=^%ye%zz!WcgJH zpkZg8aRTF+n2W_M?1!0EeE1b>;B=tTT< zsKKP;iNa5jsd3F`Rp6b?q2&H-U)LY(5n=zmH03am-T6G_2ccb%3o-6QO{3a@@Lx^6~&wC3gdN8VOkh}z;){kR$@ zhCIaQPSpKhPd!Qrg))6O5kgnylKdl(dZuiw*gd38q(iajH>xKd@XeV=YC>*QiWQDT3R-(UGq85}Rp z(T%B(-v-{3HaV+WSh^;06);0+9CZ{-B9|1+lKm%=14r%03oED3m5~`cf`2Y=yVkNk z-D?H;O>hA~Y4LB3Jx0d-JUe_4(ZrM6lNue}p%)qfR?OU$s)`cdq&f4JU##2FJ^J7q zz!`B;=N~$6DRw{S^bqclTH>A{fILo3v}xb8xO|tRCGWXFK7qVzFI_I&5Ak944qcN} zdo29aANhv{m9Y1QaRMD=WuhxOLNvBB^G!>O{#%!sxkEA-Qn|ZR5>YUReuLA;ByGh& z`Ph-a+uM7~ugrW`hJ6r!mV6)F-e878%O>vqqNL`S7b3@zH5>1opIpfm?Wi+6DPuRk zwxU$_^^k?o(Igf?0{(`K_I+UJ8~;uMbb9$+vOVYHMK!12k9v#T4S!1hj}ziZKl-5Q zIoAf{)<=$(r*(T`tf!A>sqXto&>g~ESZ~2GLHMX zJfF@-PK3I%Y!S@$mvDUPNS?m?*W|-GIO`P(AI)V8U&HYg!sg>P!c#}r@^dev+x6)90ftTXjl$i71g`wUJUVC7(FXN>lyN((is0QQi z5M-Z{+RaJf*d7uVSk+k%^>Vl3@{0Vg7&*i9`0fu8gUSOu+!zx-&^Zhtvmp>= zDZyDAZ5Lf1bab9I<9ipq6J0S2_6Y6C|D`TMK4drb{(R z36`PTRlYoHl5ZCtFAVaUi;-|9{<^~SFTe}X!w&rVWK*5iYkgk3wfK?tC*AiL#eRec z?4018)FHF|>}mnbI|f*-UMQ*n4akSJEj5s0X^kQ ze0y{GxWgOe!k?w@OpEL8@6>D^pul`u+p3pz=gWS8zQWeBkFH&)d%I+Yyr{Xw9AC=2 zN~#E@9CawVpv>d?v&uknh~M5J4)JFg_}BTV{w7uTdBBYyE#Ymz=G#sF z{B|@i!{9X$vt3w6YNElZO!G@%V*j5 zF;cHGD*sFdvAWKu#`jdPw0<4Jmldz*_Vl! zp8<1BhVqZf*#`mV;a$RaTzlt7U1Pl>GF^Oj>M+ci_>fB8Aw9h##pG${pdR?-@-l$z zHk|yOA+n#w5`PX0vM#G0byw>9tW1L1!2~kjT90-v6cwB0MtAkh7k9)&#U7DG8yu&I z`}lCqw*fpfVDH!y3_oDPb8I5tOew*TXS+d!H+$+sAd0)H!&Mht%;}hra&oS`e zA$-uV12<(uN5|sOb^;A_v@He2&BQmt=Xb?X5-dHfhObc1g`;-$>n_E30+~7UcLG1+ zVb_7W%RV2DcR&VIdd51(bu7`K(Jjr3z-hXlz$v97iRvmuzl_RMwhF8&0oc=a}9Wa^Ot!~^L@C6>5M%Yd9EG`7ycTkt3BjxQdel`7_)z1Ova(_s@0u; z{rFa~rO5=kv7DDoR1!=LNJ`j6R4rJ1dh!6*@)t@r_k9`e;m1GidM$GS=J>Hu|3waY zX-3`2{yM59yO#j3eWTY3FNqJAz=jUbTpfi&frX9JOU5oH3t$rJiv`H4g0=6rUI*D% zz*UY-+9ngs8!Pc#hQz+&Ya%TC{R>j4iF)@fbg%L4E)kPs`mL6eEMYp_FwAM?!hdPh z8Q`IQL{$5!)7`K^`_-7N)`GYdzwvCqX6_AF#PsKE2eg-!fy_`>(INT4C?&g(EyCiC&xW26TT< z<{eRZiTOb%Q;6QEp6+C4d_;#SqILS84`VpX3%B!6C@v4_XBG>!u-=Pe^2 zSQFcT3y3ZQ2ojM~uCfW7rdiNSJJq-JHNQ@afv#i6=v@GsoZ);A;eJALi0-%`3Qmo& zBojRdjh`NP$!wfWddL46sB(wqmDVvCzd6TU7W^^R_2S(kL9pIZfE=1n^!LzP&6*PC z#6EB|6wqL3NWVTGn|tVxuVt~M2B5iD>SD+^EPhvNwM6TCZS~!yOoIz0g`WjWwuexIAWpcLq#Ds1#)v{L6b^EAkLCo_b5<8!l+1oQ3 zH{3*efcrQ(>=_0ap%O&|!GQUD_o;l!J|KG)u{6Uu-8=KlR}UDWvv549-o5&%J?CC@kTkh)j&%JaR&&A_>Ib1z#M};e+KA9mk5yPUn z$#dXNv+t>G*sEQoQGpiAwzfgbeP+^0i`E`7F`}B29 zwJ=H-kHFr_iLdNIy~Gc9{^)k9Ke@yC{7{q1136fogs5Z^_iW^jYT{WL2*2!Nc%S|4 zkN2)n9cB0T`Ua>~Y%!tN5<(=dTvxowwDR@JumbQA;Tnq)X~y>=exF`&k>T_0u1H8Q z0-*|cl$2fyO&xRQi7O49fU$n8e!Ik9+GG6ZZrx56t9s7~=G@o&Fn2(gYp48gYC=&# zt#qWE!Oylw6Qn!v8HiSTAE9I;8|HhYIxVlGt=*n}VqF0dOw#vHW;Er%PGQSYz0Te_ zKe|+?7%f*tC|&P;Z2K>lnE8!*x32>89^{_B-%&iAzvEV$_YXy1e|7R#PiSQ+9RlQu zUc>OHa<9OSj2{0;!@FBxt->ZmjXE*KAm3c zkCH4O3`@G~glG0FU$)RDV^7q_&!FwDNEjvkzAXddzewznRENKxasWLtvWV8N>3qn5 zPQ=~Q8#?I72GB#ZV@>0NCa_059p;f;%ntL38I0@$@o^8ex-1~bfdG(*ihTIKm%ZMF zu=(Bgo=i27CFHk~x+UL}e3I39li=S#q@F0+Ip)=7{)?j@lIp+Ddw=;*52&%fu|whJ zgQBpbKIR>wdKYk1%VzY!{&W-E2)ypSVuZHNA2z=D++8M%YkT0fo0#9-q5U}kqFpaj z%(p+7bCypfd_M};wk3kPSZ^QS2H?~7YC^LgnO;)FI%+o1%IVl){G zzYg9Wv)Q_Q&yRN)f=)p1uHl2zTdB5L>|cXJ-K^GI&dOcv>mT0%@a;l6dmi1%qGI-= zcMb0tHhsH&Tc1uWhiK`q%%AJajjX%5YguF8E$5%YIH7R-=@tqa(4nCkNsu#h9oZk5 z6@%<*{M&jxMM3V)!I@8S$AE@@{d>%I=9gZ77%p|?db{o<9}bP@aHFJ6r`Jw2t|u?( z_l1Hd)`{N>rd?aV2iS4{L29RakX-jNcsh_`5AL_Ln)*=^ZoD@Ugy_-A*VC(Db@tcb z4=BovF0YXe&<6cQdpZ)g{ki2;%f7{TV30_zu-2K=@(UK6?BHdo;u*pl_wuS-YsRFH z*-IIV{zUraXaPL0@OuxM8pmoR!nNP1{+xmD(jub?fU~b6uvU zXA}w@em+P->d!9wv+MTIbe)l6btdp$@3#coXdeOap0C_G$J^nGy*t?y$*6y@;cOrN z=O^wf%A;{`>GaS0zO{R}@8$~aB5fP4576Y4Z!~tE^YMU2-C#pnP!#Wpc^W6=2HwdS z&^wRq_4xBA?(~t84p5|fX$}PHw{hr;b!on1v*=9n@}doK39yrn#rwZwybg{z_H<|n zt0F)+X=|G6m4@Ob2Pe=+s(q3%*85(DphTi(KSSS>c_4NGC2>0_uWlv8K6s{KV)JB? zdw=R__Ke|ZlZF+xS7c!FhI@X~*6E8}`-&|BK7!e%&%s~N+8D?=7NW+8o@B}A z{$)KSBz(FK-Y;)&#S~I8!#D@tdwGP%GQ6W;E9Kp$oBMZpBeemS)AeB9p!Xq+|6rEE z@$kX)T;h=$#Nq~1^E49k+pAt?7eiC6l#Mfpm@O9^8c*pM>cjBUd zQCvuUn*5dYz@ctLr<{Tj@oAt9q=QAo(WKXZZ{bRI+V0F7`m)N2$|8++sXltWGAxs2 z*-v`kjQ37T>68BvV9@SIy5?cpdRM1(e{hrJ+vKa+{tD-FTTe!$90K;TU6}zMKxEWd z^O~Fk*AW>og1| z%(&ZBN03O{S|CZR-$Ttbb3?1AgCr28Hz5^r6zmyH+T$n@7ZqT zJ>1S(b57lQSZ)$mFBqJhhxq&^uCeAixAdvb5n?!T<+&^TtDI9Uu%+CF2I z9G!(=)QY2c+FeV9wVar*IUE*uw)n|R_|#bEHj$aNh4>vXc=DS5^Q_niS%Uv7vXKG$ zSU6)00cXR&trA9mr-fv9b8!i?u(ty3B8J1|)bKMTMjQYv@_de&68-PcP4@=p>Cf9n zEQgodYRvfA|GeG&%Z8f5-R^TeKbEmO@m+n@t@ZRYnNzyxxE(sX`{@3mQafi+LJnPI zKqd}zTE&{L4m`HZzCGJr8x?s6eJc?gNA_tIqdi<5JK?$T`aI18imNpmWa;_IpPcJ7 zR#b#d?wZ6?JWXuST#<-#>Rp~69Ddb2t#4Jd5)!+jb9(XU*WZO4&U<+iiBwp{Cj&6Z z1MvWS0xcCm!zWD<&9Qr4stn~b>Fd`t+mcW^88`LNPl-S@ z9}v?i@}h?jj4H%^e&3Cdub=0OWUFqTOB7Q+Hwd1LF8l zMtHgo;V^U9xf<76iDonSt5SDVL~#nK*l%k5O&U8?6p2}X^O>f(=OTZj9$ERGT>n$| zhw*%5e~5atEc4#*M7$kMyv(dxz1KSgsgk1|8DD(ydiHl89<+a^gEY|vPp5u5|Gb+j z1u_YnR8o)SO}o-#MOs-iU_#pN%*p#pwUf!A*ehJz`Rv#B4(2PQ;3=egKVq!3_!4N> z=b0cKDr0sa#TypKSEE&zw#S|mw!7`NSO0t6_s|=NVjD?ziJN59=v0ZwsYBQE&jdh^0Tn95;6cDe}EP{N2Rrz?Q%jXqDdL8`L*&$3F&8mUXxv0}?EV-Se< z{_ly-CZD0de>pz-HP?lVX6%#0ex^iQQqiXbUdX)1&PlkzJ4x)Nvy9vQjV*_{;zqfqIWBW34e+3|y zryMx0SyVx#x9+v1eeB&XT3m%+*pM}uFoH~kToKav0jpsg<6LKN84Y_qfAsHTvbXy4 z@%GNm>qz8U22|)Hy7%9Fg$xTz2?h23XTzGdn_@xDjgS zaKp0M6h$=fGvLnQR_2Qv!xzKd9mq=S=k6)=kzB>HLc@|kwOquL{#5x3?eH)2o^U@o zIKN|%A57N}qvKup7A_qtz|9Q8F?%z*1Iy2fGU}nt_`i#oK;{w*?Q6YNMuCvM4>Xk+ zsrVrj_1YFLt1a+gNf*hTVLDjB`(Wa0l~T8wdph`I2*9{ffa!fyqxmW4B)-1TS9gX- z_2}#+XUa!5==+d2#$R2(!@H+8qWv&@+vpzIUl@LjkCg?Z+r0W0(t9VjMa)fN(WrRd zB>OmlT9HE|9T2Kyqz6sG^7$KA;^U((zstK?yv{gPozlq{#oLKy#45Z(S`(j6uk?GR z$@j@!FetnQ(isk>?z6gr@IkM;jxoCVQ-J>U^Y;k!p|$se@N;S-Y}Qw9Vs?OBQ#)ji zPC4a!88RF`1IM$zGu+r&c3<5DlgtTd(i7~_b1G#wRE~BHgyMd0Et*gpUj4d7u+XQJ zuYIF|iV|y=c!^`fND=#yl*iv4K6o~F820eO^!k_>zvdndgZ8pMuj%rYcZ0{Y7xX}x z>E0@2G$82ASod~NxQTn9FxUw!^tK;-+fDc^PQt}|uXAD~>ZQaVOhix~bo9;* z%l{0-`B3~ML`&a9FLgQhM85ttnJ`KG)^D@Aw-*myZSeMlU8*U#Fk?`p*ZOV0eJbhs z$GK)pKP65mPh#h*q^Io4ds0Ligw`eL_59$;!(|#4XmU(c)t|#-yRcsXbqf7KhTt509 zffMmu>Bkm;hIoE_*B(1|E6v1O7cJUHK{+#4dC2d0bwEQuOFJii_`^P=)r@mLp3_is zf4n$W>6F4D5f6`mI3TF?WQS4~yIQKREn!y#d%Ma$uKe!(?_$Y~Xg%nT-f2x<2?V1z zOM7meACoXRzxKP^+_=Qm`wnIMLfo}lCh5uma?EcFalQ`Cwh80cOc zh$_7T>Iznkbcs%+67rj+`4hG4(D6&GZW7%LMla*f`XNEstB0n#ZMT+cPnGtnzM|3k zmytccYY`9ByFQ5&C)dH!@WVNi-r0HCx4!JJNOwAysD78*lihF+I0-h1OhoX1Oe%}wueH2cL zB0kv{hf%$7$+qv&?Wf?~K~`X9F88RR%2{QG1&%UpX2Xn{Ot@!1t**!a9NsqPifiex zgF97#2JiQY7qU;O3X(2;4HH(~viA4&%oW%x<1w!!rxYyy1d3WzyxFAPvLr?w@_Q-% z?e$^Cf(KY>sU(&V4(^N7k2~U#h{Vh3p>}8pF6iVfBCfVKJ$tD}bfL~;N;rTOGJLfZ zz;J?zKM>kXWc?mr&IR>J^e?IK%Fo{Cf|~;ib;wN>R*zT7)-OB2SG)xaX1KYmc=JoG z0B5w`7QU$Y{$cKaMHy;ONIyRq6?=2wkB7zt=jghJ7xpLXcKLkXeh3qMO7tO4KWNvk zzf``-5B^r+>&`oWCPg0YhkVCQ&$BVqXUPgI%d<3VsG#ThaJ#?3a$Ps+RI7V)J^v=k ze^#yOk;Hm=;$%s3ff3l628|UrFi(3XBYSB9YS(r^TkL*qJ&B?CJ`FfK1PyGp25w@3 zF9S+$rS9MN_IA?i``}Z*tH#Q2XlUQvePvG!3y>m4iFCOSlc=^Q#Uw_ZDd7YaHAbK` z>-U2KtMjdG*B0XGqGo|ddB8Vn$XBpZT}ivJ(|zT51h?dC@1tw&eCS$x4)37sL6*2q z#r-escEkBSKy4-4*yo0=TQem+&z#hUEzop5)vj+`4t7S&IJfWXfO+kURrkQf!ZP~k zFBf#Ye0vvA98T6+26=dOxSHtdmK@izy_;R4qLKVdafzjPc-Y5hp6ld8MH5BYU;kb= zP&O+r!h`2UkFPnZzasVAYnY3_z>3um?-mG}JE+T&<6b8j9%?Z6KKHZYt&@2%zQA0kxZALEC1}xg}vfsoG2Xqq$lCF?#>l(U|nakNyBCqvMd8)Me|AHXpG~UwLE0^3|bD3Qz1mu0i(nbt0VO&knOs zv@b^SLego?G68B`g#RV9IT?)xQ%B@lkF&oGY+bg$z3}EWJaYPDeN83)BIc53e0#Nc z`YO1UGN(^ zPwd=_=@55u-EAD4`ZDdpM7`7fM&tG``oB=)_O5JJWk6yMu2orrBJ+u!8MvS0saSX!pEw$@loL zm5X@puz(>;0=&kOWpNpCdgssK^?~Fso_20O-=+CNul}Af0+L1Yb0@Y+Z9U((^4#+r z`g9O4FYSF2jc)#2S^`vo_nvJN(|Oz1XYFDSXh;1e1-di{j&^+Fj((=l3*<@J@!oV$ z?qTad1j5Dk)K>-p2>4_9iw)CAf)B&|L2dR4z2z}l9K3CHu3sn2BaqKgUcZs?)-zqI zolHO;&`1(PKdu~`k-efY&Zy#9F`^hPB;S9X?PQjA5Ez_kd z9G{``OgRqw-|v1^YfJ7wy_wMa6Be94D@=PWjL8wkQ;8A)ABqZ;m6_s%k@}1+{6kr& zK05j9OCBL_OmCKU`5F0a&zEJ8Iy!UUxe7;_>0uYz# zZqUyB^(=EUWQ9Jr#Y!y87`jLeS#}10lj!7{n)=ku>Y1W}r^WCv&TZ0d&wyZD0?1BX z?r~^zRCb7kT=ZoF2e{YZ@B{qtsSfj?;27$%tqh#V2j;=$9^|0vx5^$VtP0hi^hI4`h%GK2BmH)q@Wg4uB*{W<*Vjj=_eH z7Ba8H|Ad3kKAjkQiyrJo5qZr`zV2BW_8=RZ+8cM{R@!*xlDkTlC?b3Nr*2F@6#`= zUkIMbhee^xD*$FkK|kzKwpP$P_?>A%mo9P0zjf^dXaJ)hZRJ7yiQVN2I(XSh7_eCu zG{C2Ux`N64y zvkJ`L!#xj#&`gqrksl%pcK9p7k;>Vl6yo#MYuZR?~vRL%UzQR8SXQ{m71FE z*Rrts?3A9w2kcX9uxa5MMU2<&Lmlc?g$0Xllz^x<=N350FRD8#?HJYm-O_t4p<%P2Zx@^ zi9Hk&-LTV*ag^*@PR5L9+|psqY?&Uj>Bre-ypR&a2wmrP=zW zkfI&^P%1kiGG$C!xz9OTI@`;JIp24T z=h=b%x#o08JD?lE0~tTT96G$;iR!=TT_){32DKhnIagdvNQE$TOp)8Pc0D*S^E`He zLKb4@)%W+FN-46co%ndt%50?^=Dd@p<@Hh2`VShHGcZaii4PQw*RVMj;btfE0G{}9&2Kcln+%l z$7Tm70BU=;!XUXPu{Oa5}n38CmSw=q&ZL0lR&b0}pN~c6# zR1QD^AYb+_ugduYj871o*Z!mam1Gh)>U_k@sJK)C`&JK!v!(0Nllom10A>~qb-L%~ z<|OY)^d9PF;Fg|_Ga4r-%>w`T(&ZuUr`PGCev9*^i!SdAr!OxQ6}NNY`P4@q>4N+$ zI>z6^88x|FUVJKTZD`y706TCWpJ~C^ZZGT z`4O20nByisHWu*J#$)ud%kM6|UWb{=b;^UZ`kktAsrHW)US%(^?g7lkyVvf!&5(kJ zrFE~%mH{W-6L9~Imn;*wC_A>4@*$~PaSKJv3;ph)7&lVBM&$Nkp{ge2?{Yc->K-#v z#5?8XJSg&VWc5M0KJiU=xC5ey1AVrl3=`<^U4JfT0W`|XH7QQ{Y!*;ds#H ze5|&0`YnHDP@j@xexaP(*LfT9YV<|;!?z9Jffu{CT_%xB=J-&@i^Sap`w6&_WOm-O zQ%8~+7)IG!OSUZO+sL+}bYzsyNkSIRp7q&_&XQd_76udTdQ(Pg8OxWZ?Zr)yT3MEw zdj1QB!xmg!cmG0}FN96^fX?HGeqFx5+LUIBqq?gWXXC%tW7pt@CX{qlLe@LadIuS1>n$f%{(&}t4!)l*zz{2cxw%xtOll8aR z&jwXTt~tTcTrNhWPhK0GWaNk(r`_q#W)>UyjU)kik003?&4~fQDv9HL%!3c76sA~f z;=9xPd8JU_3rGN7@DtqgP<>{@tNGCbPrqMdyOtY|%_vP4EAM41P_5s0{r75aXRsBz zS7)nD5geG{HitS>Pv!l6c?uQ}=xLjp^iiLR@qx?WF@JvdYQ{*#VHhQHHu3Vwpk5lZ z`1^Imifbm@rAn;qR>sZgBSv{BlgRvIo)`p-ZGW&(}JpCx+E16|hfr&@if zCQjMBRKkLSwyw{1kh;&-T)dxSJ8gaSVTu9@-!kzPSWYm2`yjQyzB`ba%inrX*Y+xe zh}9;I3&Hvq`pzIY?>N48dfY-D;nHvk^Zqgf_d37U_l~IlmX*?!22^)>#!r6j2}gPa z5_~7?jWd4`2Vv_xHr&J{);+u?a|7y1H<<^)_JwG6qjLRVAAuu9vtFIY?hZ}Km(2mh z8DIh#olj&aW!)fiA>AkDKpp3T#>8O>X_{IcjEjO`&Djl+fnG%&5d$2%y<3FVJ%F36RX&2!t>M*4wy?=btMbT3J?mb{AKSWrZ2%l<7&}k%TrPoY=7B$+)ti)nosRd zFt4iiATM{MQ@=(@*!2bRw8Phl+VkhucvF!$lu+!S{DBCvJqm#Mot&}MnvT$)6?d?R zyfoc#HNE!9bX7%iaZReT%jcvje~d0)m-xK%L}jT_%9248j2@>K?H&Blph4o5F{#sw z>hby2qIC=3!uOGnt8d>oaxb*L|IA<*(Zt@gvNp{jAiX`+bRm(%Y&M+O6PR>Rc|wH7 zZpfvi>~49ND;c_Y5S@!ZsBRgx_%u?{n_yqWPM;3^c3hz5Cq(UQ_2gchh2YAKY|froV>OpG3Ez-m_0+wY^< z5B=wfb>rZ^AOGzk|BG&fr75^1JK6#8a2@+(0&nekD1*>G-oH2EYn=6`d8}IOG+1W= z^2KqIJskFvv6i11lhC7H*^s+FPhiV z-7sJNdmPA|`OGGojY3OMDEx53%qtV8qY!A$6DF2s#$I%bac~o=c8{k8^yPtDU!)-Y zyJUKS9=ZS6KaWpJ)`|A%^Wz-?aHWdlS)uyPabKS&)@t<&d_{~43ZSeqlkoZdneP5L z_IrSGt`x=|#K5<*7Wm&5xpuJ`#tZHbF;&Y@T!&%4tHK51B<=R;<3M`1$i+)fN!V9v zct4uB>N02v9-n%9|H3RJCvk zGWqZw+pt|KhXR6bWr+a>HhbK4r6}hlf=~-BK=?lO0q%JE`voWFkT?cdhp~+JI*guy z@?b9Rz=9d7{EoVs@NNn>u7&{uVypE%ZMR+#J$VGkxPlZNHzN3eK&8fZQCRVr29Ir=}A?iiy+= zITf1T8XS-p1|b%x^Is^fVP2Mn9gM^S$6`4Y5|u(6pFaL&CDT@{c(wP-bUh}&OeKJJ)k6e#ApI^r6FCf#nPD1CDz z@z8*JJa^|#A4cF%Q5?GJSG!AyIJ;>93Yf<_p%7m`UG zM`*rdw-O&T96lv^PsydO^P~5XY0OOfJo)qIo7G+W$DS;wOS=~`mM~uD=*~aPhuofV z7I;DNcTGm=tT^}j_A?RKUB_cPnlLfZ=yLze6hYG6^`LRMi4x$(<`aYqtOYVm4Aaur z+Z7O7*X<`TrzA0^E(I-)vbp5v$A1@w?!ycJ4xzY>O`~p|eR;k4cdd3DBF$OM>*({h z?_Vxn(KsG0u) zCYAM)#n=jcztvTIiP{ar^*>SGsFOPt0OOxbLj5OgEblIYCl6X_@2}67x*619snyy; z4tpcmr~AJ2rA6S>@5ThX2`Mtdnt&NZJArl}?+0APQh2I~sC;mfC{pROYqM3Pno~xu zflK0)BOT9y$2-UKUt*u!LU`XVF5K=K293D+NGI=-JwjfRljO|NAS5J_dIdzVCad-I zR8Kr!ydqD6vgCmN?%wENDjQ#&_Xn%}kjm&w_8b7CcH+9e#dXBVy9RFZA+zq0slX?; zL&;>sxytzSVa67oAUctmp74Yj&X-Da`;_A5G;E)5_U&Rpi7X#%x~qP zvHquMH`h6p-SN~$HIigEVXu7H{VTbBf9Geqx9YV`Z{v;lWTgW(;Wuu-o=@nFalL=X z73$_kl}xls==wH(h+irgk6&M&AF1Tq#60K2bB{&jx2$UeiF%5`tiS&ljCFdFFai91 z!s-%zS***#c8D#kv4vxxFWf?d$2p$8uYbcrzY*cETe0fV6*GIq?i01}SDe1sKJ0tz zyWpehu_VE$Vah`Y*i5r{7qYM34k>^l?u=A3fvy}fX2*bMe`)mbA;}V4?eFl9(S#X{ zL_^~mg7}VUAQLUH_U^Y?eg#t|n9-F#(C$MEtaiGOf_stQYgZ>+wfubY^m9$L8o~(P zq6iOa_a6sbp72G@>Jx$L{V01x2t5xtW#*Lj>MgYIRREEyHns2zPTjlwTtvv=a zi6k)Mo2fhcE3bjz;Mi#)R;1~~ws()VQ{U)Xww%XjGnl`_<9hY1z3#mQVc%xW`SH8+ zP?lbY`aCr5{&)n^L%A=9=2i8zxacJNWlQ<-xSIknL}z7xdx$*Rbxo;VF7ByTpQ<`O zgc@aB)A~45c*-7jWF5EkxhO2cr7)b|likkyO#QU9c$rmJUK8>AH8b&z9f|$-^bn{_rC}) zp_T1RFEeI886JzTRqwn(wOigAanD-!LXHfhBr7BiLAnnY8TY!Uc|+50;*Q=1PNyje zY_~MF?kF}@u&=`l!Xxf^dhUcGFVnyM3%TUISlkV}fQs>AX(Dwks1ru=WidGsVsra+JSCgm0#Y_{7&|`f&WWKL_XhfR}L$`rPh*fRJie&uv#-YKO%8wny4$B0;l(D0 zBVNLD5IIjj3!{Rx_5O?@5c5R{%v<|ID95VDs7(ba?@sgwcn1 zaFE>Kk8jtJeL#6*MmsAaS_IyzC>ngO3)J8dL9Ft`M{Z*r20RCMZO|fzw#1Pxs(o28zY7L@Lg|sEmN<3L*AuE`a>H2p_ zRnlxA3;-g0YzPp`Q{VCK$3j<3KMktkK1VKjT*l}AToAhkAOvskDpgP6g%DUcG7wf}{nLjaC?D(yvs zf+5qeLiJ%&z zQOIJ?OIlT^|8WMXW5*4H3)5zV3&5zsF|aVG_U1-;=7@aMek603oouet-HAkc5qRNQ zT8GNgzZ)KV=ZgLS*tQ_j8S7R7(QP0lm|BQT&2KUJ`&*LVFC~Qw3i|f_H9qQ?bbp^$ z>FyW&Q2)V7ec!*^8AI*U1;kxpOODqYZm`Iuuh#u|lGKaS;UC!tQeOQBkwkx~lI4Wm zk@zNak&$1rb-cAZx!r$68F7FMsaS8TY4e9l{Q+w{tl&%fSGC86FhIcotZ03*z6k!F z1}H22{S#r5Yt+cgd&{PBw;L#wCg(h7kIVDAIFR-FriENN)vwyz&&W4i!rFIhVuyEU zd(S?O<22OSt>1P^OvPur9QOGzf6qknw-b*cb&a0YF6E>g#_E@8KO6bnXuE zE<1mR^-D>7uq@6j)85Q?u?5D-?Xrt5j&(WU5_I&auG>e-kH-q>o7(~5c=e^Ivq^2M zm$h?b9M6dKH=QP|H%=r<*8Fw%*X42o9gE-L>@#cl=m7_vS{Wi3fA}8FM_{bL4W3Si z)~?4$!1nSq`+LTCUv4MmFf**StfKu8vP1pAh(n7uIBNHbR|2n{?qX}*0KCJ1A8Tco z;ekeSsqdq?J;*7S34TP znkse=VxeN(#s7pKbdz25?$%%Y(Wa6VUPUODp~>T=KHIb+YV=IFiy9L#&* z_0SsH6XRK15{t(QNr4cvs`5(6!H{r;khe;I(vz^cJ zjBbm0{nHmy-t`zFXExX>!*#DDL_-Mg4iZdqFiFXyuMz4UXVF!%ox24q8{SaJ8d7?c zd<()^aH*bPC-4ZA<`^}!3@KH|J2#;*bz|vGUH}xKAfP$hqu_HaJe;sAz;tj$a8mix zJ}mir_l$)v7GCamJBMwHjks)Yva`;pz6?TF?Moz+!-&Mm!woIOHfXfVPa#+HiKo?p zs`Q)~#;~4Ziq3yB&l;k_c=b;qJs_STlmIsOr@u6_cgYDR z1@;YGviDsz>43*ewWvE;;8pA22-jNHe%ED%V_0%+#PkDgr@RVov=zN@6?(!!x9>X( z^A?Q$Q6D^9h3A|%zhfngTH*^2Y;d46kQ#vsc88!0{>Bc`LcUOZzUWu~ zwC2v*d(p)QIrC7~T6nUuU{FOXEu#bfy=zxyHMEN0LqVdSjHSPn$~gB5v>Rs-vB=K6=$j^amxV%b?xbUeuL#q- zB(rBv`eqg;hz`yhmm`wfRE%>iIU!PeiC?BN(`I?arCM1+toR8J=h-gEvjc0f#L*~Y z9AxfCy4;_@PwG1U;XyOTZm(MpD6Sm+CI3=%<|&wt?S>+hab4MQAp)fZe44#K!?zv~ zkJ5YQOltSPy-QoG`%>QBfjM9ge~Ps57g0M!N{XIjPS@AkHV5Q#VZ!Ty-9aR&AZvDX z&(_zkOY|pox3DYC4!ht?GZ*#G8dj~;>bicUiZ6C=43^mGR%`75X5Mg^I4^Q7s%JFh}D{6m25+!&b7rcDqm9}}-f?`-l$nA_*->lxij zC-e&%gKxq0#lo)1U>{$ZrGq8d{!l)n@0TqgHUc0c6I?0&9&nGkAR2H8blnQngfMFj z_sG-Vg*NFe=gs4vwYaY z>%14L*|GNWY5%KUg(NjB#RAh+1^&%bXnmwF?*Mf{fC`Ja@L$#;i*f={}NFwQ@KCH4H?DkAgG<8uWmrJ$v z3BW9UuD|bZ?K*M7+URVU!DxgAn6c)HB+cf&hC`Cj727N-rCP&_e9L|MiT|#(MCZZY zO5_L(%^cn3>YC>wr~JCB>IlaZtA00cy0tl~$(OeTguHQ}?z5;Q1=SjQ?O~~~VUY7|&S1=T-^Y)A$#L4cytxF8YBXnY{3}Xq|3pz*=QOS= zbND72``S7TTpO+6?asJ7#p#vbr0YrI$?J?|U~XbMNbq&BdSOo&A2cHG9PqX}G_F(W zeC9mXB|}fZp8-t!w$J2H|7LW2au*oTw;uH_z3-f7@ZRA65gj94BDa4=l*R0n1`4dV zqh~<;fKpwj)w*eksehIoazn+8xskMLQ}}hxYIqQgPhS*HmU6q0-X0p@Aq!Mq*C>>j z^WM&1W$^VG=h@;5fMLSRHS0&oE}M~D(t7(Dobva*pX;`jNkUhZgM8twvmk4f*VASF@yfrw``-yvxAgkK)*~($JN=x!eo&D&5{u{lb$^!l z4R&uVFv?)28-oe$))Lw~)xPShr}gvg9BH0Gk-mCZz(MbycGxDd(yMo617C&Q`&Kxz zJ#gaCbi3m_xsFGTD6v?-H&2el{5v_;JRyvGN`pz~9fCz24?os4o}xV_vQWO(>_F80 zlRQ66X0C3F-!6|=Jl^VbG;7Lvis*04TT7kew1QMA@PUG-{3eBEN7YVenUgWychM|u zJff!Z<4C?eS~sGV2Q}?)Y@k=?L;B)8c{DDy0Q|EPmg9Q`%Ti?ChR@9j3ahhx<8%ib zk_+xkx5Z8Z4y&Q!JOjj>>iyDRSdAd7zA+b^bMyLoXqPfm<$lh-7w`zbr~*DQ{!1WXurQMHi_qJ#r!9oiO<&lIHu-c z$@x%Gc={F`icB^FQ3vUqsSMbViZ#@n~IL7MIX)_cG!EQl}?EQ}BmbUG+Fk&*I32vN)#*e2f;z zn4Hbqd~^If@Z?O7tCUvB`tm+uNu){s<-^Cgi*^Tmd3_=3nuMCQ^Y2l{{Fci-i1rJ? z;r#izlvko8|2ZimQ=!Jf9hk4*(e*xDocFv)y~)o0HxT0gysuab zipP$R;&zMtAoRE~CZ%Q<11Js^Z!qBJy+!{E2?ZvD%AYnpu@9m<|yR z0`^n7AlRGUE-OV#hvPj=p>RMFrQsa|SLbV8(34kyHy%h%Rb3o&_1=HYN9aLhl^zW` z6v|{IS$cTp)ac>J4$jUZIz9SmOvfCoPk5_YNM4phSbsl}SAny1zHh^G2B9WUuyii8 zy%YQE0@nyHZ@IC&e!{GtbdZ2lA+Hd%I+dI!&JyrIHs0(${1>V}hgJxFikIvJd<6K= zCX3aP4To#)$N+f287VG6Yu`T6^t5w-ZTgrIB3AlIFJ|lsWW3OWrNA%>NKaR_aym)% z@q46ngg#!DSzj2VGtrW3>Gru}%WG=f!`44wwHE&oOIkm%?mBKeFa@={<7>}I5U5I*Swzi^B^sLh%>9`?ymG}r%*}d?>rbd zvmCK)FdO6^7pwg%o7dM)li#)^Eudk3o7;E&prU6uvow65rF#|C4TkD#`#k#qdrGHL zn}+M@D(e|#&gqRNM_O2Ke}hU-N~#a5A7*eP80B5Q{en;QbB7nzxoDFe!UGzHNFN&I zPwrUfIr0uDP{_r{E4-KeuN>6cUbjy00euQTeIuMsObt7(B-|hCAaY=NcP?Sr*k}yM zh&)Bv#BxDAp~m*NLx``u2@N#gYgmdgDbAXC&Sk#m&k^f)Fn`{C>^obMz2FZ&sd9TsUpXoa=Dcm3t0u|Ap9Nslbm^6d!@}L z%c_HU+PTkP_=I65lUmjN;SxcrU9p#0dA)#9==@#u!4v0@|0pxR`e82dlH*6g-=paB zo8M*8dB^ugVaB%)hvY?Tlz=L0lp)iFg9Xi8UCirXFcFAG&VC(s_fkH<;lq>r?=&rC z@xs#oleLd4Wq)V1WP(dAfft5Tg;gG^TlJY))lKCcG1o9Ht=fuv2Yz#Zy>a6|#%cgs zb7_*4Y^QVXz!R+ppRMrUsOk$3s@1%4uU1D(`g#Kkk$E{Gl7uGqS9}-mbPd9YtiM;U zelvUe(->B{KX*ot(}50ttt1<@^|WyIH~U6Ozh8&`6({0$P;;h zR|stO?;9_R7uI*HgRwe|chZ`NKknJ7x`D@?;bx^=z{RXHBf0@EIh!0)+=uKNVQ z^r5RUP~nnvcYbdE!i>VL6NJlP3Iaz{%sW4K!YwKo1WS)*#4yy*GV?0H++b-&X1z8jo9PEafh(|QU(BH@sEIS$9of6UUGKj?*9gp-f7~zg2WO*= ztkkc-W+^pW7t}VW?sq;_Z{PAq3bwG@@sAer6}SIb=tnwhH|jpoOly3(@%l@kG%1?j z{quc<$*~Be^!0ehQ>}{?oYrW9nU2t;B)Fr$S^FXG~`l zf;d`vQA}G@8?shY2~mI>JMZ&9e-J{dZ7%sD9B?xc;LTqR>in;cz`r3y$(V7+`Qtxe419-W=6c8?r7Tm%=05A&mT+t zjwwM6Z@oSXJN)W~(WwtoLMqdeP}6ZX6SWEp_u@N%4IMQLn34LA>b`d4B@M1G}+!NkX*aH{gp$HBEc zqh+PPdmK-x)86dEqmUiA*13__5FxN*ly&rrcKV{I$2A;;yH|JC-&Ylf<$+o0vkSm( zQ}^va9{c+Z-K!V*0|r zuL7K&(lhV|to+BxVHdqV9A-=xH?iKU<-vAu#l_B$YsS)}mDvmyr zN?c=uv!v$8oXG+6rMn^US3rf;t|fLEILgBQu~RmlI{lE>F}WLk|D!&lqYJQNr`^f8 z>(@wP9t)o2&2yYU5S;E_9ITQ25|}~w1l3QCK-i<853z_x z?qmNEx}C=N*a>Tx{$uoVUkSztIhPw6Ih&n<3nMYUG%NatpU$~W$JE3cekp|=XSy%c zH$J@-l>9Q^h1fn_9&V8KuP0B6Ewkt04Sb8Y#6%#uR@Cwk7+LT{HcHepuNAa(($d;g zfpXzbw7~O{|2>H;x1 zGoSM8>LL^>8=N|F2wrGj*8dP5IDT*5?(#({0&bcwK+389Hs|;8VcqBY$o9m?fmNV$ z0cLa=JjCo5ukEB}b(0tW<<&ilI0WCMlK9uE9C_AGJKaCb~cKUNNFfND2%1(73}NfmYFld&8P2k*<)QhA%s|XypRsd11T%< zGR3ZN*nf^`Lq3jzpe@nvwjQwuto~f{F2GXT*S{TDInztoQ8*xBM)o?2@m%*OLM&Bu z$6lkYx34?N1|;)EytSdl%tpUsI&ioVklEE@Wj1c`B#C^$SIGN&QN&3-==OEh(=!hB z2Gx{~sa%`87mHA=$*(>9yUiQ(kwf_2Kj+I3?ef`~pPP)ru(-R47DO>>Z&14z$mPZD zu9inK^g=MnAT+(m)!-&}2ApK)z3JgX9ST|Ue)cVA+-F2rc|{aiKX(3yCz68dt-iw` z#)EC#ydpd)GiAU0-F8fLSAzQnIF0fm<$C;H#FRafa>zCO<2)C8jL&|bH~Ul0(dsuO zLU!Bk{EJV|?rn#0p^L98Qx2HUq|2R4*@G6GUKjas%P0m$wbNRkG0bzHhn8^ejx6n8 zX=8}7xV&lk_;;uR{hDm!WA}!rcR3~_VQpXN^pMd9D%t;i?+Sp&wYRqLV8hIk@rMcZ z)bsOqz5Fh{Y`a_}HM3RI(@a^@Pi^=*lYx#-77X z=W2sL&Zg<}xW9NHIfD}SkmNTsT=_)fCkL4Dq0$>xnYoU>KcL1dkZJYaBkWu=$UFDA zIets}doys(GcPO^$YDNHT zl!p-;Wo><^xq?*OF9U<%-MAMMqSOzCsqtsVI028Z!{Xe7{dV~G1hG&Gh*p9*vkyZOz|mFfbP8I&?xL{h-tH8!x;vox_5R2u!V2;vJ4Z> zuqQ03(`^2F%7MWHQo6an;g`Z{aYDWd@-p)grY#E74>8K$>tC9r99k6Lc0lKyIj;|r zKL@KXKC{aQ6G;aPN3{S^_qCpUWKtQcfa22J%nT$-^um3lXtpOOy3P=zKWbbgf9e9V z?vL&Y4hFTR>q!_p+rJuPD2WaW!)J`VU%fxzmz=tPnhK8qAugGe(`9sb=Z|w-p+7gn zn-~QLfoTCfdAy1oc4$r2@q|VMqFb0F9k<4tqCaP|MN-=#zqQF=nLklgALcWIc*7W8 zYrz>uH0BxN)mFJg2yjWv4D#=^T2uRNy7>3Yp>ALPcTdsOyWUFa`lY8ZTc z$nEsE$#pQoVUZ+<-D1$vHmOFx{MXCz_@DpzfBki9)A}AxbLNblJlh|mgf2xwQY2GJigxX9Wb~6%pFzHS)1}H|8d+*cf zQl-ZwqXl@=FVjBF_8I0L>-R@wsPnCxe|RS5s7R!Fr&%sRJ9W!Vw;bOnM+V6<-EnD5 z+jjpKjPF>z9*@TH0p$YT9Ji3ozw2+`IUHKM;<}Jh=gYTL^zJc7@(%7TrO zM=EPT*CuJ#*RGG9*L}68M2x&vZ^G;6bbVlQBNv9MB$G_`H2vjMnQgl=xYZJTfySS{ z{w|NEN`6nUP7@Fn&v4*47nfEs3lxC%_CsYVew@t+qv9Tz0fcpXz1Iz+iA}R$I`%sA z^cvRBt$A~TM))7&vPl8^q2eKGu+UfM)=C@9@4TqEs3)o4*VG~WF+`GQ!{0}Dqs2`l z`fOycj9uIHZENBDq@{7jbMBf`Cz~?|r4ZzAw~MaNJbu~U3-BwWYg&ZS0?VAC}|4sWjz;H&TT z{17}ElmXwAstF(!62LZ!Oi@lkWz8iP{v6Kbq-nc*I;LFI+QjjQ5VVvXC&`@amiux_ zM=2AKa%#7>kFgGJ*6zT39J|s_yj`R;J^wPyo->>tKK1ms-4EIBSJtedK9eVI^ts2n zL-^#>t3Q`%2@8su-N#}&j&@BMD6zeFH& zffvD?VDZpazgtJNDdpzckjXILgOoKLMFvSMN9mt-z9dd+52`S~G^^{)9hYKvG*q?f zG1r>1UK-Y&$0EfcOCUcKNlC?92>%`T|}g*C-#MCQ7Y`DE6me zj|ek&XU~IAxou1BFQwA$v4v3na6V|#~*e!KBmb2!EXr8xn^CKauP)V?&qsREfc;pJVk z$}W9$M)`>c5#-ykvwI9bXN!MXY-ovmy*E?jq?b9o+_5)n@b5u*EYRKKJ&K%C$GAFo z#ue5h8g16Z{`)1@4s1TNkI;M7=?pH;9x25~bGYG2d${5w{ZCi`S%R%%f zLF`?)cfnt<-6&Q}FW^*az0+x#i=VsmuSJT?v&;DL!(jbO#{l!fw&ks?PmO!|r2ax= zDn!g?9fPIuSmCAYv@NsS=@tzmqt1AP_`J5yju$HpQeE0%lAY`Z?o#Q4O#g*$bbVAv zX+38m?V@^Kr<6$*vURW9UAoCs^vSzi9fRxlI+Wfq;p^>T!%70xh4}Mcw9~6TtJdj7 zk51RwpHDrpsZjaA4tcbe8#XbO`)WBT!0w4wi9t}#$MNlwr_|D9%*GIc{^jyMPiCw!wo^tgrR z`8>S3o=zd=1rtoW%`_hk}+8M4_Tvz`FsGs6Ae<~>`6v0Q;X}Fm|>4%>m zG{xQL1iOIIyyVXB_j;V3+3P-htV%HV$;hf%Xo>v=GRDVPU{~{)I_sM)W_D@cA&$5J z07weIWcRvP>v~YWuY<9K*yqg`cQoNVODP(wT|cqNCrBiP z<&$fk*?4E47G|J($1u+c|6{4}^fq;o?CwyETEHD9J-122gbb z+ZlL58%$+yfuscf0Z_&4A|4jqaFp}+p`Xi#$lhtEJvrNtq(H8N?~<+rCnk#^TeKJc z?*-jWd8xPT_dCb&&>#2^)9*sBgg<^7iVwJa=5|oIgTq&fNsNSlC@tqc{l=S&)0d;M zi|Y91O|LmrH*4*HoZ@U(gSlfX$ebtC81u{iabF_)^&}NOKiIFU3qeUrXItjJ8LV55SHvC38WUeaxN2|H|9xS~0~JXEHCt)$c957>?wdncTo z)|lzazgX);b-t=|{nP01OU@QpFHYXcK*yovh^3Gph-)=fq z)o;)A$(eGTtBm}36d0E`%wVxbQ!=|PZzX}P$Bu`)4=mu&FDM>&?H%y9W|&#T0V>Sy z0u{0j!nTZry?k2P!jB%j$hWR(SLe_k;_2tb@GM}A@mdB|lim_b|Ls1$tdU!HQBhp| z63v@9Lli&nA~&TyPxSH^-(%1YevH^C&?gm0Po0=h6BB!WXs^bh$<^l{m$&fIU?x$lU|vRt?>ySis9@>38ynuUhV%H|X}}$+&KCrvqa~6UV+02e=8qCO{wz1%9BWoD#T6%obEX)G9sF2{`hv5LfrClb98B-ybW?%)%e`%%ik#j(V2& z$KB;V`p%)>l^VdG+SZKDAry%A_Qo(<`bFYeI&FCTX4L5tysVX*E%v!_gG;0aBn7^8 z!|dByi8m|!bZ9Nb9u(d06W{3`4#d-6W1{D>k!a;C?Nb(;hjEXsIwVO8FNpTzn-64+l zGQj=Xe(bFKxZpG9)B!i*@bHJI!+0mDYxz6db>0mRV zgY0M@4Q#NF+2Hjj$J^G9+R?4*&u>KL@Ot&hZC~Q2o1ee8>lOFRZ2S0*xIp4@WM7Cx zfHz+J&TCm5?m8Z$-@j=1Z5D<3=P}OXRrKs{@k3ao$HGcUzbET@kay~S(jL6~ES0&v zy`;*wKEdl=HJXn960GV=bAwR~Qs{uH2JV239RO$RfEmU^STE<>Xnt6>(2ZXk2%%;f zA7lT7v%CA^?|+^(IQ90z_&l!{9L$32OIei9{^eXHhLQUpiwfmYI$chKc3#kcnWMM? z=7I`F7cLIR_Zy*I2SGTQ8E-W+GnEfztH18>uC`!{-i{h!TP@tTMyCg~0WZp-&7-G= zPTY>C|19_Xdlq%^&PMTmhMZzCc=wVC zQ0F0>KN2_mhIBf3BxP^cOjCFronO`SBe@Kfpy?w#IYVinng}eSKFuN z56u<9ZH`j6?w5U1+Nr=X5S%_vM=I+Z9EKHIKP-`N|4EoDCf_64Oj~9CPOTs;D(mdEnqn500@7b0U5{uZXj)A35uk z{H!B)W6`@Ll|gC<;{oY&Ex2N{LewI>nY;7`ELFPf5H%!--KIZxyrW~~G5=UjAgNzo z5Qou5qT_b;9x6O3o_O;Ae$VyR2qL;G`R)fo@mCmpiP@!$`|=j;=fgyuska6a80v~K z<|oa@Hq6W@{pPM4`Cjns?*W)}UZoh3x9-hk=&9Ng~r?sR2;6nMUpf ziNCbt+a`QHmzwVUV4`8;0c1D~huD6rFp2YOc)&P9JMY?H3HCJ$*+aT~L z3vf>JzpncP2gfre1fIxaM9{f!o!Ry4oyanPls7N|jhB#vqj9-)TgY$P{(6^{NW$5h zZXs~+nNfX8ZW~Yfp^{M-kYB&sO1@2tszz~qJwEW-SEfcd^uqECq1_W}xOFF&JQCZV zsdZEUuH$$gYdic##8Jt(QK!$3NOf@Bu6@hCiodLmW?sO^=OactzYW!Jj<1Cf0l4+} z;BItuycb~qTgR7-f4Q6feIdmXYbbrh^W$_f*ml+D)4MxH-&dEOlLHDg8`$(GS&J6i zoIoAATPVWqTQMigMk-Roi5wmTBxPWl1%%cRHk zvzg5CV$9~z^N0coWeV)|s-$B1`a1a+boiUhBY9A@g;2eNrRZ%Uzx|ztM}zG-NNIbO zFwg^BS64*j{TZF16~h4Zat~Q1vp>p9E61qCnoRJ&yWytO6c8?$-RB=UZqux3HV^yz z{4$X%jS;jF(A2i0^DFnu!VbH%?pFk8k=)e7p07pZX94eP{A%W}^TS4gOuNsq3Fm=G+J6h)dOgx~Jf#qX@EQ@v=< zt9D84P~K0$Pgvi?BNRwef-mz4JTd)Re+Yt)$x{%lKe}F95?lksL@iDU&-zNr|3M|71g#V`h#c?B{Y$s2$B>Ldjt`XBoghM zzh1K%ul4R%_twz^d#^R;7&|cA=1X-54^VEXi5?%A9rh|yns7kZ6Bs#@%H?st1x`19 zB!N{OaW(G~wk*eI(m~ZJ*9_s_*grhaQ&m29HX?{iU)5hUWFOs7Tu)A8@w*(nqdPv* zH+(!%F(~1KJ|ma@YhD_P=-n|zB;(X#;M$DW{HWu!oITIqW49r-Ri@t|;$b^}aoojy zSuvRcDD_Mho5mZeWqyxL{JT+Dfk)<<)53+UqQkrjw?f7o)8A7ws;pS8J5ccD=A};F zLv+2Y(=HXt+05;Q@$+7*K2Y2t$k-iCyHigx=m-QU@q5B`BXch=_B5nNVV44YTo4E1Pks8= z=MkE>qf-d+=~V$HGDYegu0drd%bLL^eniZ-du=SA!?Jasb4qwn2kOUsDGoD6x7kDc z9Ck}-YGGLyrChH46*!1NMBirI5f-4(_~nVUT{9|!S`DD^~rp2kQrPf6Au7DYK-U)JgI=;gXSZijvql0 zwD|pXt#H+-ns;s)I0x7!Jh=yDK3>r3+`Kyq4`yV7Gc^1XJo=D`DBkaSu7mzsYux!3 z_hj%{NgPYeMILTcr#_k6S+S@-5@xSBhQ`7Xh&#&_yuUz(l zm@8aS@Dk)JUezEn9}oF1Qp(#yGBDNhm-2YV}j|%e}C!u$ts`6t_n_G zw`!y~Z=)(3;MWdDxI~^RH!82=#&G~S>!3W0Z~a$lF!an#bsZ@ILTzGJlhzPohL@iW z{~@vrMQ5Up3uvNm19eT|Um&?(_kPsUeIQ^^I#G4KFLCf@6b2T|b@1xraVfhjK@^Ug z$)4bFZvBLil#`cXFMut4x@;+PI6%?6{cV}`9YsTZS}2>oQAR-w?sT~n%LP7*{O4Ts zi@0v&H1~XVIDVOi3SYT%Ejpa`+YP^mCFw2i8IdNc(cbvvFt{Mc?0FMdS}t$dOb+ka z59{|HGNY$f(&y-t6Wf9V17)bEzn@5=P1abh1Qg_9rwxD!Psl`O#ko>`Qfmg`BP{6~ zHch#tStWJj3mXhpMxs)sv#`VE7zz8`mc?(NN z?y5$IIwzxGBGzXrykWBrsEU)NNm*rhPf)@i(FO5~|M=ZzS5VyYozWl;!dpVVZ_}2% z=G%b|DeVQ|`Co3IKp^+Ab;Y)5K(l^{#>-L0FzE*=?T>ZU=MhK;%KyBhqzk+U4hD9} z-#uZ*-f4{=8H5stsNCD8yTle3AQfu>d$LQj?`e<#?6tpskE!booWQldc%Co8SERpK z$JtZ2KgK8@SLgQS=ZmS>pmiW34`w0gFSl!Z^TtO?KVXw%z|Cwvhgpd)|B>vp3lFGm zdWFNyX@dP0-97tNYt)q^_Ag~^x4nga+`16)eyYbfN5##2?61ck@0>|5p|sqRqbH$3PCdVw9IhQ%k3eC%Zt7gS=2|mtF}>swCCX5QFzmWumUf z{jn0Io#Q>-j1B3J4r#)Bn<(vc4^U+`-FH6fd@=l{B&7RfNK8Id%;htGh35P>ZX=B~ z`g;Y?othCNmF}0HlI`l4s7jz64X2;6dq)F}x1W64QaC6slF1m|-Z;;U?u>=XIGv*% zw75y63-^0iCF@xK^>)RC9``FdW;e9zHYhSCX@iSR%D zMx~lfDK+aPhoOxm;LI^+bK8S3G394ZXGw7dz-$Yvzq<;o#`rzE9w|^=6I|%?I9|iY zbOE}{edzb9PC%`Z;-p@o>_Lm>Tk-T*aVTtrBIkty&(D}-Zx&H1HU8sF7hRgVqKZ_w zK8EvQcWeR6_g42p%GwEs2?bA*jo={)m}%>8#xG*0-DOwP5}v#8A5DS5LW}JMgAjSp z_jApjI%AXA2(J$c$8Zk`m1g|$-4(aM;z;V3Wje}VQ9rK{`+nb={~rN*q7zaT&Sei$ z7iN6?)tj2zn^$g4ROU*kBa~kt5Brm5{&~`^gm&jGTZuYzseAO-bH?w5^Nd7n+#0M@RwwJ_QC}9Z7wSjA zkw6!4V;LOf6Zl%|;L}{qHVb4{)X2-vk_ifFgz08o*dkV5ZcjVNx8^%CgsGFNj;a0V z&Tpm#z9PE(l{dNOPa=`8g#(Y3Y5P{br|g!rSI?kepWNVh|s!~lIC5eNyR~RS{#BgVru_K9Hr#ZlZ<3$%l@El zs;B;G@}SBXGMukEF_G0KHP;ap%y+pj!&Zv($4&j_clNU;zu;Y6Ouk2@Qx$}19h&eK z=j%ih1v&4eu|8sVQ78LTMP@sSdb-tDzgm)ud2-L?M{*Z`E=3?^U946E6p>YPR=@^5 zh}evi>R}n;f%I&Tm7~`_Nj6LpoBee6;-7`)hXTpe&m~LF?Bj#`+<#q|d!npAh3B?D3b;`&j;~xjV1-?t4$qj_P(#8T#=zw(Yn! zRzdK5NQb0)pZJqW`mn_1ii_&(y}}ph>omvR?_R2hdwNAI_ArMy()~$GguvrhINa}P z`&?BEK#7pDnqPU;z{Tf|V2wn@w0HM=+2`KNQY!^Q)F+wGB0{qOG2#(>3wN1-0cM*2 zq|^aT%Bf!BtX@95$@Vd#B+l{aL*&7L?Win`+feOQGrpmo`zK>#=y-B0AjeXsLVcCQ zB|JvF`DjrjA^FJ9uF;#*jlm+BfRMCARzu{M4;I*C9hh)3NsO-nvGeO+ zM1IdyFdQ*8JvI8oIP&`e{zCTexHGOzo6@A^2hJ0XuBo3?BTt6MT&wA zFNTf}32~}x5koGk`p|7Ouz`gIcL?I!#$l$rX8(a6RU~AW{*Lqt8@^ov3`4S0EsTm> zcOR4E^P>qM*8|!MReS(+@1Hqj*X}kO9tz_DgaFAe@bVyFSqPab zfV}&!>_fHoYPXdJlcr9FzIS5kX||1FeEtU>g>{;TBtDm96+d6@eZA}k7!{nD*ZSuJ zJrh1R%&JEnKt9xemrEZO^J6O-ilRn+UgSO)Cwr#a^4DRrzK1EwhgT-1t=;wZ5|5>d+7z$GaF}jZDjowHW)@@qjfY}d%Rmudy0@R z*j|K#@t5_-;Vo!~zox_44MT3zd3C1?MI7UsG>*IZ%-C_Yj`~jKbX|Ecm`4>&9hw77 zIBDfwKFmz%x^&FFqjqfi1Wdz|CrDK=fBRj+8|SG5(h&}UU;YuBUX!#z1XC!h-gkw( zRrkNzcX?A+`Hn~2`XVCuwwB}WX3;+_fal|5F6?-zLhX0I(#m`H`Wlc+M0hYvyZ%V? zS-V|?AO!^7@vU;Py5M}usE`rmx~D*HKdb<&^isg@NcmQfBT9%;xD{iFvrTg3et*Bv zApbu%d3v31$A{XaI5R5LTkkKWc$yU!V+{Pr(TD(7ccj~PofTD7uyhxayA8p*Jv`6e zo}f2ewFl=Lg|7tPvUoWiPUC(T314hDgX;zHiIG91h07)KJF`24Dus5jer4(?pyPx)?+L+lM$YEbU}+Gv#_+SPrdRUGaU=i53J= z;9)D}P%y*sfw!J~LRHu%<;rfpetRan)_%hlRAA8z@3Y0J^Ek?PfX|sR+ZIKKcD3cN znSf{&od~e-K_?|uVO$W4GfUWJP=7{olRJ4i_My10O#)`!DI33gwi#51U9$MW{gm#p ze|~CF>vqht&_qK;SLl-)r|=#$moUW4$K1(mpHHeb$0vSGf;&FBj4TYvQ|rfZGOVZA zY+T4BDTlSnOW;)VBVKn3`&Y)H{$TD{Ri5r5zciRnq47T~v}y_ehb?5w-P) z_~&^GABu+cWI8T?NRlY7=nYB!vBu|M>h4~(3&lg zv#%&U{!;l5N&Hb9e@I;C;$r}KrsUO)L(=-qzQK3|wq1OWZkeMXvt6YcKjaj6lcoK;R2PXqWE6$Y;Wzq1sf$BTou6#MTHn75Y!lp$P}^lQ8I_cZrFOhN9NpWou)okezS9hJQ}>`;t( z==7~bUwARh?THCR4f3|Xb#;axLh00Hw~ubG6Eg1yCm(r)_XWz3wKVwBFPGBz{O^S2 z@LM}y?%U_JBghAO0Nub_tb+?=7*U!=q z&sYB_LbiZ8C~?YZz+lWX)8}nRy8UODz`G54(sy+6YY*y$U5vGhxE%Cf*FT;YN55Dw z@Li2zY^a|%QO#xVD)@~gvDdZ_tYxvS5fS$&c(vU`v%Mk9L|*9bt9mWT$`j|?ihDNQ zgQN?%C_I(M&sTmcZF)oqo^9v6e zKD_ltk19#goXnGK73HxqiH0n=ym0qm(1635BIY0axT*emig_5`M%%fs{&N8y5R60x zbLV;QmQjAi?Xr^@UqyH0qB8oGY@x{pk6Y9L$({nwxqp-ow=EPcC;z=yebJ-H%hb8_ z`jnA6GoS-9W{77rKB|duBn6X^X14AFjya5#|8;(MP?P%EpE1(rn$LZD_=aUs+UMm# zyX;k0<7zqYIeYQ@OQ(@A55Wys3+Www>Cmrw`m}$A%M3fj7j!D)!PbWZ@bgL$sZRx7 z0U;FR{8dql@p#QRVnn80-XfjdM_-)>8w7~}NRd&l*_Y9BL=5<4dsidXdg^pseBwx_ zq<@kVDHL$*r+s;#A&)8xdpielN!&{KzH>eczzk`F>#M)PvxiI0Q6UsrAr7m*=T59- zLb3aL^@70dCtmz`_s@76iOv%K>I7Smn!e7o!D6kA(y+r;%S|{*1vbwGY(Lyd>c&@# zu#h}SXKn?a))U@8^979xsAS3MA!+Yogso>B=WQodQsVHpu0Z}fI2I@qlb`GEjLbXg zAy~AXjPudXAK;C?lD_#XF~5>tkV4tw?V4Bh;Wu%rG_HUY6M9|Y?Ht-ig{EKash626 zMh5#BCgPv7Y>^JF`=O?Z4&lc<)x1Sm(8zUdR%pM*DpSgX=Pw-KPNt0`3v+!vA7Al1 zyru-a#9s5|bNH9RaLGlMiCbKB>-8ez71Q}&Yr*yxpJ0M67P3-!G93hS3`{|Ga|>SC z!-jpge=*yGcTQmhdPwD)8(&PG-mfS7sqGI4AQLv;R>%I6cNo|59~b{*egl%Bc;)mE zDnG*`{%*E^UJ|jjR`C?EY{(&4=cS&hjK}?D8jRgWWmq-PZZ|!Rp#k&t2i${lczVhP zPAN``;SbukV22jV0WJ)*iaTa83p#NM(faU@F0NELK_7lshsV4muV>Co!}m=McaO^a zBkp=Rc|RijiT#1Z;rPyLj7_DV(rtA|cseQ-Wo;}lBk%5OCUs5KIM9M|_~>LTs%hsA zUsb+$5hNVrf%|TUq^lhKwDPtTeJWJpu<(7H{8WesL`FQl8xHakxW!eOARZvSzK3|zG(wZiR;UM2qO{c(R%aSbMq`=!|qfbw?A zh8i1NrR{Fz1ip4??S7a{RfYbXt>@B_S0CyVFi>rk1`&Jzmq7~lG3-muE{Ll}{>KU) z&b}1bI_T{F3j(b1i7|(4(4UM^ppNhNz$n7SuAt(xb~S0UnYwd=-SgK*iF3oM;q7EN zGT?82ZuzRiZ$emIA9&iDUmgC8FqN);n_TKvW-aP3{y54GC$e$IpS3eBdKtc#laDmP z`@`J`@?}Zc(viBdc)}^N+#lfxm2VR8-KX)z3Nb4<(ad{a+?3H&Md!_ZFe;#@S_36h zsdOuZP^rEQjd4FLNYx&9-#UMM>uW1^z_0vC!G=HfcTKK}(umXfD8G-W?O@R;?zfH( zz>_v&AyF^BLo3&mcf^RjC1Z%8Js(|s(ZGjX2m;yC;pB}q;&sDxHE&??*9rZwJL*Fm zW!=1dev|)D_vQi*@AXQCoJnp{9R4L4&wiz&@WCT`EKYukNW&>-4)A$|;pI2KfLVF^ zcj%b~!*X^~1Eft&GEZm6d;LP8PkmN_lStcAW%qgRJd}rg-YM&J>>uq{AY=c2G6xpp z*Y8lzSYHYLJu&>f*S7Qf_59ncuS2$?0o#jXZCmDUd$>CkwYf6Ob&rueVgz0sJ)g71 zy5JWdEk%nlqtu{gt4DcvdvA*bY^B>@yI`zHqhtGn+HvSLesQe}NZY8L_-UQB|NmY6 z7t~YxHy#&N|HvWX!VOr5g${X=YOku{^0jq`=T9m5dY-F+f5QNsH5I zd8ft(@bT|IG}k5Je$}$&wa$Gm)ZApRK&pR*`-NccL4sEb99?f_7|8l6sxU;n?z(Uc z@QV%;!2I@J_ucp$=t=kr1i$MMo6V+|?bq&Icpg95;k6-o_O??W!a4E;pF}jW zz%lHcBB%&=_1p>avG=qz2Qh+57RucfXTS!RVR{IuutY1Bc#8>;E3qlsrVfy+ocTYO z!xFXU$>Lo@M|4w`Tb3_^@J<%ubyZ(9Oc>@-YN|6|7?JhjnO6>~%0>s3Y!}Edo~4po zs?HF3GJ*L(UNqIuB6*p9kriExP!EgyMTqya|2-dr6JGA`V1Sx64!8?$34c}ay1e(M z4B$vr+(7Dk!9LF1(7j{*R%k!m`#AqrczQ4iVVJF3Gz8198AtsyjT!SgS@)^d;Gn zJv_~@{w1r^LO61lE(nwHzSH^lZ$uxLy_%g7dL!@ECf?17ga5cw&pY^FMe{=7kGeOz z^fhVoXc4_Qf?uK(d7Pi0cydYv@cSios^O`yjPw2PeRag~wiPZ)AD|!!kpD1PYs-Ml z@`i-b$!{;+h-H>Fb=8Zf+wJRo=*#wQLh?{?60(=aY#`eN1` zI5!<+y={-B%b;Et*MJr&XRdK1?CHBRPCpJdza!Wi8%~vO>-_`_Ld)`g)R>E8UG8{? zUr5k&ub-$;5qv!BScz9xQhBMkO8j*?XCqS~2RQdC{{j4r79z!i#ORK3a6#bGtjbTD zgN3Li1Tu49Y0|lV$-JGRaG2J6&=(*+x#lLf3pn54k=H!X z)y#wIY;jrDozEOZ_xcrQJSOsXH#d7?S@6k+OCc#Yd^pClj`qhx!C72fP?zJCMVYU| zd2PJ!E)aMH_%7f69@%z(B}6t0t2ntQ;#b#4zTkIF1lKOZA;sW0{5`bM#g zDERS2&Sre}yc)vQbW4S$R3&(n#_fSvIH8t;P5hVob;GuvX^LLnk@uGAVVwe{vpuk4w`g|K1F7HXqpE~nW;X}pN>t(RDX{8H>|-^CbbdHb%Pyzhy> z^0NKJY=$GSnjlCe^6cy&G%VBq$f&vO8tzdQ!TGVNHy^9{?Q!ctX<|NWCQ$FmCm0%g3`^{|O$l#ppc7{3zGdDgcI5^3Q|Jw~A zYotYd%y;9;xHeEbnAed>p)>&=gqqI6#|iitNivG2|dP4n1$U(*5xW ziL@8>Q?@Cb`+MGmdKL{T?NhR+->*57g7gOt?2qzz%O7%kDgL<9!0(Sq81g3>pi#tSphb{4I`hiFBG6f#j{(#rxg@%odu zh}~=^2ReI@Waj3VfHACL2R5rIdMc^VEFWWg9C@23Vj|*znSj7#a%t`7_!XPjSL;_& zwMTYpD}j#oS%dCFom3OU=OoiMNA^I2(5;59HXww3ehCBzPQe{j^{KmeD)H=~3tWZEv~S!Gc~ znxhE^V&cy^z==v}+&b~vI-S%!J!o8!t#m^L(k^!Wc5$B+{^|x!)}co>ptd40Ow)o> zp0T-W&?fy{H5Pn#nP?|BOAp?>Z60A2Zw%3$g$zg`Yx+<4J8F-}OoWY+kiuO#5=a zhTSym*AQfyH2yRKfxq)PNwV`zGHYnIg7Dixe`*Bw8hRO2ib%iA!f2eG>*5)I7pw38H2?FSj`=HQSrS*+|Pr-d#O*O24) zeBC`l<^k(sW)27+rV+jsW4Z*Ny>I;vGYM6k&~VqaJnUL>rvjc|l2-CZWOy3>6d_cv z&gcI5uGLVLsX^c|D;N6|5fd)7pZM8>DJ_rjWkpx%)V0GkdWU%IdG+x6N)?S*@+*|m z3ttk)qS|M-TpZH!Z8%8#zMUQ~QRIkPu!i=#r5Wm_Kjh*5bi4h5tv1od-N`<#u=&mN zH!~jGB`J4oCp7tWu!uT!=Wbk;y`+Q6*0$nd$ac>l2~5mQ*ce6WKZ)mR$gubd9j^$7OFGhBsu4}dTzN?_{ zV*HVgr;pP@HDTLkD^TFLCFt?^(rSfZU+?P0K-%g*yMW|*RR zR=x|JU$ZX5dOzBI`i8#XDK}STr^WIW!PU1!5`V-iVIm8*V=SvcSe1rEGUInUj@1E+ zYkmi#3d$R|3xA6*7j*e<-YwkHM|KCT1~NvQ_*}LpYv1&yY0oeQ8fg3zB_L(H?FK9h zJDQghC5D0~y1V{iIL9B7VshKae1~gt_QyX3ZdbOi91NyVcxn(V;JFjT#(1E>OYKo^ z_kuP1eJ&u2k$r>MckuB%)lzBD%yCRZcO#8u1<++8{ketYu{J+?LcFC z1|Li~#rr!opJYa#`=39yS!LOOqjS4aVxOASrt|R~+2#~ssQ5cJC}Gfy;M+qL0Rk<| zZIp!RSE^K~lgf)ln3@zC7xNK|Ly}Fv_*Za;3dt$ISYoChenb6aR6ncFi zl2>JVL--(ef34}m?20SIrEneX8@0C+-%4`jqwdlK7U_DekI`r@yEm6KZSg^+Y!%^I zDeRCVNiqgvcQ)j+6EM~K7bLa|GM_VQY3O>5pL0Pyl$48ry8od*uN6x@|JF3CVtS7@~LW+T7oUz_(~ ze}dy%d=7%Peb6bn(DqnVH|Ho`sS-fj-FhqWWLqm77ns-PzH5Xn4wL~#ZCaBcUgvYC zQbc+2-1N#zFUS&oP7uSfEm&BDF;8zyK0pCv;i zrQ#4bjr@AEwj>D7EYlo1SmXEYxjvQUj#^ua^|B0$g&AT_3U5TAyjK(co^P=rFM5AA zN~h#sRo>@iI_p1WB!#c?LYH7oocc$Fz=kkEp{t!h`;V}pS0oIA%u7UOd6-jQ?Qf@7 zqmp^|kn%m)yZ-RTW^3xkxdd780leDp%U0k&fz3YNtf7{H`>Uq6pmF3FJZwgO)yTx2 zFg#t*jmcKjM83K&5k+sArmX@k0k4rk5^=0oO#bX-n%jo`@$gI z)N?BBA$qXRwx_^@K}81&cRfkVxZNMXlgZ9H)m|q!&Ov^iwCn$Hasn_ne~Ha49M^@%_Ps%xx^SF|w zkKK=UHtxloU{W5oCi{c>d4{DpOh)H;ijES8l-dX1Z&lfjy|^+@otFHJ6>p&9XRcW^ zY`5k%cTtq2$+Q>M^JjJkpn3sMNc*%q1A$jA?^0R-=PbiA( zA%j;zZMDJj{|I?)PSTR<8UL0Rp7^0A;dymKgZv8A2bN6+t$6{EmlJDs%HnOSh7HjG4ANx z=c<$Y=)j$qCyDv@&*IfNBK&si7PhOd!hy|O8s+9w@+poA){(-vWz=a`j=w*v<<{iz zy%kR^w^-tGda}rjrP>ogx9^(R8@-PqB%JohclyP5ryA2mx*)MmNYPNK7(EPLw594^ z-IV|iJ3RT1!`7dsm{4o#z1!Q%yFbPpz$z$VExEgR zXi~GE_nz8Z4H@Y}_xf1E*STBwqg3>K?-8A!QPW zf>M=!2B>}X53MOSOI-53-l9Ih<;6>E+eu1!AH2@WoAZq@^SN@(A&)dV zD88gL$?$a4;L^DaaLhn}aNb+f)vF6iz(s%DUuXmkFMk}Pg6GZPr&imJa^SeaD_Wr) z7I*!Df?J)RkfY-T17J>PsiVF=#{l49)$k}Zhh&S?Imct$XNX~)^}JoN?L9(%bTxBd zg>1#&3NX!7rlNP6n6ijpp7zcCYPV0_?Kk=PM_tq(H>ij~G@*GE#|%HGPsPAP^+4|S z9j&d--vK=9bAYe*#hJQ)i}L>Bo(SUX(Z|>>kI6s1%oC12XK?Bi8LyAwpsdOh7{}k< z{BhH8dUm0c0_89tPd}4AXYFa9z7CSk|7}aktirRH44r=Rg~%F<8FiF~2zAY{!+q*g zoN{{38uW`f-dv1XEjC@IRNXyEAR-$U!Dm{(V~Y5qg?muFchmhP15;H>TpCcS_gV6UU$E#HO$Maj{4BaQsqyZ&h{|+_hT2X#b>D%XVeLB8-s51PK zag1EydeKDR{AJ#uwEO7K;r#CbUHXn(ZWvQSyTr}0Uw-h>S(sL?dYq-}Npp2dizi(f zozg7BT>RMnz12idV`i04xiIIi3Jy)iXk5Ev{%~)5_qfq>b9>d<4`J7Q@2+Nhce|QU z?(~|TGjA&VLHg^Z)9v}h$UO2OF0FHuS0~lllUI-Eo%jB(cF}HsNH7Qbp^$V-=}!{} zRim6l=Y?x_8f;V4?~#r9T~iw*a{m1}?atj!3)svBxPGlJWg5yr`~yo;ESPSok1wWFR^-^c0jAcv%EL_gyD?X|rYd?zoKcz`~wQ9kEDU}NH4#hJbDwZES2 zV>Wqr_J&x@sPGndLj*u7lh2K-tMAYf30_hz0dz(D> z?I}jhcpH zR8!c8j~daqeMk_;3@R>p6krBnBLtm=nxgX@i_qwHIAmH0-n7Aj%90n0!V=Icy_lu>c%Z@ z+Mp2Ver0rkz%SbGVr+3O`4Oy>{X=5q)E)dg<}pOyzM@w7CTdGBxTHaQcExsaMp2_W zqrlWnncTTz4SFGw7=QZD_EL^O2dpb$d%eX8-1SU=Op?bdjU5tv0Ra~T})Ayf^u3;*Ps zJeuct`nIRQ-+fx^Pmi@T+!4o-=dn{qI;i)zee-aS9mqLNGiZ&c4#V;3a&Zu)1)B{w zYYo|v>N#vYP*A~KV{F@Whl66+${|<&hb)N(^dun7c^1djWmdb7n0LAZf~4i0c-L~7 z|8_dI@!6l`qd4TNv9c|!zhG;&YG_i|%SEpXjL(Ik1y_##5i|}c$wx}SU@htOEOYNP znSb&1{vC(}*?f1n->))?(&MK^Lu2-X&;2oW_c$P+gm|aicTw%2caM>zJnziy6G%dE zHvTN)V~^>!U0!0{9hxHu5%hjCgWu+SHeC@-{FD`B6gs54+|+N*#d3ez><(|#9w8t^ zBd4oMT{vjmdI5AX8ywa!(FHU__&kln`AE*@LSJBquPxDXsPu6y*WZ53k21c5;ICcS z8@2B;s?gx@d#w7*enLbPxo^0@AX2oMNO zxpjHGQPehs!8OW%i!7!wuX z#kFqi=787RR?wFd% z3OgxLzF9_7VC3K?;Y(tEAD30rG}VnEG=9Jhdtf9Iygg1|@a;Gh-;j6_OOY?V8sFjy zl0u-Q-(ec!nfavpKHiP(4l_2FeF*T zu+o^JWYJvbOZ~~o=r9bv$^%S1|Ct4(^o)IVxnCB(;^t{QPx@23NL8Gezyylf>wV5X zH|gk7V|bwUBI2XU*L!TYo#G-edkfbp*WdutX<|ZX02lg_&4|YC1TzV;lAxFuFMVZd z2pvu%JBm0Ps1MgISt7xQ^RL#Ps1Ad|Gb&<}h6mBtfv8Blzt5j1hoDYMKWBP%s`1|Q&JS*nXC)x`o+0fT zeJou|A@%YLJ)Hl7f^B}E1UOL#&BgfVd^GaTF$as~&sUkiM+^?(cP(-6$UpDhL*-8| z>;o^H5G9lDU)zu2gr5{+sK;$9ePmlQsm;26ACDc7S=hl1?6Lf&6l9J2RKhk9>@A*T zww^Nr|NQr(7Q%X)jnU-YHJ`IPewsC8^`@+bkDLm(fT5r}s>UKf)s%;{^K=8`>UH^S z?W)|RPju<7%csEK>2iFJJgE^Cy^qQxeN&?M(Ytkvc4dPr$06H$YA#uxJp1u;f+(U0 z^5fr#T4&;`#Vw@NPM!m#5XaHrphBLWFIvq^#!Y_%udHq}Z=A(AB~wX`&CHwD&JFi zjD*$-xqK+!iLp$}{e&82pMq-j`Z6M2)$9c!#XASk7=HH(hd)gCH7V);B*?MQmOL8{ zHoO2k^=Ukoz)%MGNQWnQA9tw*jwn0cu^0-s^$kz0XZ}ajR!uB<9R^v38Ix z-AE>f?z9^8$H?4fHtAN0zC4!NsN)ojQ#6?f+nDiL0Dj3j;r6!_NL;_Jef2r8L3*#@ zJ#`*X#SAv9yC(h}!gaUN~zJyr|^-gX<5f z3hO;QcG>G*R45)V_O0<0AMc%mLNhroh+{pdFoS-K$DiGbi6lJ%Niq`_C>7iNHgBvk z$u7EQ$=G0$OFohlvxUrM?A9M!*qxip=^MJ;6laxR9?I>9kmeqg3Az{$cjl$Hnl)|{ zjtM-l*%`@RG~J?~`yZH(5`T-5=NpYOYE@VFultHgIPIjpwtrQisvavzELBnOBXQ?O z>y}gB<6HbC)Tp_l@Sr9hJF;vIX7KsAj?5#xph+{EM^H;|TwsUTE2pmT^go}Lzfj}L z{2~+1eC`qh>C^8M^34XiE9s8U8MpAi5;6|%8KO*-Dv=O@d6fs#1yW!qEz`$+@}8mO zJx>l@tx03YGG&{gv$;Q3nVIkHCW$D>U7wopNqu5PCZ}nwn7OD#^zm{-k%-5|J(3uk z{3=`#e^%Q_2-Ve$lzvgM+b3`nvvfwRS&CM@Y`xXi2)6t@K#5gHryL{OFX2lN5Mu8csM*TjvPB;LCM4?e3%H~RRf^9V!i zB-r&L%iPBP>N9WU?~S}rc$AOJqRx09_VAd5Kcc$$ofT26y1tUr?}=+h5ytQGq0n{s zrU(AzKN=VH-BW;BDI$lfLEH3cBKmhep^maSRa(;4q~0J{HQ4|0K0n z6d;2CO#0@rdGjcCy&|OBq&BwtJ0l;VInTKLq%TBoZp!KC{v6{{j4CyMjv(m!EWAAK zx8wiJ*AhMm|7AGIwfTFS>cn!8yaIN?g$OjXBx+7vUHF8f~d$bXR` zfmw!`@9NJ*cw{(SdlNaXU-Mk2d;vj(y*H61_zE;2JeByO#oweq8W_9C;1b`X^XYHc zd*+oDO6GS}7z{{kIqqU_%4q)i*pL^0uCt`^hkZ!_x~Lwx(@dG&QsNWuTFK}PXLLxD16Nc{G*IJ0&!D!NB^Q-j$}A8>5!^_C%ZT&QhmqrO}H5K zkC(NQco;~7GW<|3SS?2v2kf}uzpp(Qu}r%zUwLl|-%)*DcefXtS6p@SPqnJAp~T|Bf5 zn_@w(82narRMn=QZDg04-DTITxaI6OWau5jmWRJ?+v#EQ=1E{YAdQbM#RH&Cb3Rhf zUP*LUT+4JTJWF*T$+^l2Vnz&yKJRwE)lrUmzL(}4PkuOp2~>j!Gndw%EgRq6ACfqN z*;-6C*H#&SQixanQFJC-ifU01{U8SP-B46S1f&O@p@2vyy}~4ay`tuCy{a-zxc8ih zy$=+Ei#{E%f&#+xa^3#)aC(GR9Zi@p_~4IZe$2d2M0Q{;0 z0A!uH?)ftTJJ}yuZD`tH=`IkXj|(Xt1nHwQ+AeU47X@0~S?^V8uJpL>6yXa?`f~l9 z#X_!t#31$QaG5MEqlwFLIZo%xE&D(4x2!B=0ARa1&=HEa%emrc?A#uGSxkd~r6CJ3 za6BWu`KPz%fg)XSJdDQnOqSkf_x$)Hmx;!WSK9pLB|6OhZUh6~zgZ@~JbB{& zj1XVtTl+0x2qaKH@Dat+7e2Nxj#GWrB3%8PzMaV(^Ge4{PP(cxO<#buDgde(qk=Z? zKW_A!eM^_zOZ@DtKk!`?P`$C7bkEtdcV|13fkB6v*is|wjZ=f=D7SBJ#N1yLHUWt` z2JJ>Y_BYOjIaYc^bs?|pp5*};Q|FD%if~d-PVT9{j=t=_Uad6nR69@lPBs4A@+oyvMWz z0h@O388{<{(e++AQ_o5W-8&xIO__cYgxmRl@{R_-FX_VqPl}Uw5H4>7GbQgO6OU7` zsach|I)kusQ z_k*_C)PsEzx$=mP6}NZmA6UbF^WNSM2Vjcl$XSQF#N>4cYuo+STaE_`{RO;v$rIEU*rGxMr%q2?PsRy(R`p>Uvqj^` zIzPca5w#!P=ew+(PC@mm?yHZshAP`dvfKRyJQqf_*VqJ+#XGz~-I;bS?AQCCaKDn` z)^P_~9qy|E*XR}&#vGG~)!h10C2p@rBuyuLb@=*@*V!&9=5iy0pI9;oQsF9#6-w8i zP7uL6>BGulfNp`_eZT-zy&W~)# zAGgtjlHrP}MX8e1PP#4gOmYd-T+@Wo`G88D>>mmSSTi_BG#`Fkk^@N|xIXzL&p?u} z(oJO!ePP+xcvAlia%v@6KAEW4e7FIw>(WBZ$_{YwY^HO04&M7?kXCYatdI&?h~%6B zRB#N4r;So+QFKU$9dD|%St2BE&o*SU;F~J)a=3iOU^=YiZS-C#`mU%x0yTYe-Bwm> z_Q~z*i~9Eh&eTOz^I}@2ukn-7rWj|OsCMwEA8y%6F8i6%J#XwTW{2yOlq@m2>`13D zqow6(JYiLP&Y(!iIR;^V@de_$CXd0>Rs7fclaKe;ZhB*;Jl7{O8kO?m%1FtSnlSjPc z&iNA(B%nSo5yjK$B{?Q>jam$b$_I^&pq7|pYI_)nt_ zhMhof#ImPRI&m~Om>qz^8_ZIHVAhY{Gfuc<%hd(A@idEsdlmThr`#@OXhuYUNyKXM4cN$%%) zMB5AEp+GX*;mJJ+bg`@1>Q+6IWl!U;`AF!$XNjw+)?J-w0pzG;t>-Pmy^-=0af!Fq z!_SW$ly&E`_6d(_`rB<%&i(3Bwh*|$OGNxzeuF+->0icstjPYk4%rr3?>Q~MKN%Sh zw9odfuUJTW)9&6X)&fhw>AYf%~Df`54<(W%b7Ct@*uEj>)D16svT&S1({~u@VW0b6I6hy@xuof?WT$3#H?tN~r|on( z&C4z`1=(b2AK7nwoOVF7#QWm_U+sp1UfWCdmmy_Km)p?JZFnhV%jmQ$nyBb{3inY| zwp=v2(o?P8{+(nYP<_82D;pdP6Bh>%RjTww#kPz&Zz=QsWl6KNpqF2$1U!p&;6oP@NBV4HIVq%tqiFK4jutsY4sgOnH`o5y3;gf`0N(yD}##dZ1F7{4c2o6exV zo)2Zig<}0{6}OVDsyeB{`?=)hPRB5qNEmFs@iCsuFhmCN+YV_zB@m0s(SOOI)}M5~ zQ5&N3u_R#6X>>cNEj#l zX>`QqRvdo*^MAajDISVTsZ9DdBobR1K$g8+dt)%O=6;s+q?DCFB_V?yljooLx1TWA zUj@p;u=dq5*Lg-XK@${(%PN)}qW+LbsXx>7*zjkoCky9gqt8z`a*u&Do1#T||GguG z1K9yThLk%kb}BW}l$+^o-Gs}fmFQ<|yMmeBmh4CL01v~;k#E+J{+2(9zbjjPW#On! z)tWl7au-TauO)mp-<6;Bd^m4BFCP4pcfA8?k?Bo1m`Vd=ZO{__atiaxy4CW!vD%o@ zt1Pt%Me2oh?Fa^4@bTLP$_JTIF=HTImmJCy>|C3j*NxHj?_V`G4zFLK0!K27_exu1 z+&k>AL93rs7hY81(wX8J9j2YtGioifmUNL{a=w4Gm*sclugRY7(um(h>~8*S-{K%i zrMmC{sJ=>Z5&Lc}L-v1tLtsK&Ef~W8N~so!Z}_#6zqBn!&`ywb)%b>mxZ50g%`}*aizzTOK{^)U@=0uD>bG?pNnFV zZPhm)oS8ziNS*o^Xe;CD{LC1-@y89?0`vAY9vC4e2 zjap7rC2Z%0JBcH`44PEFs%cV->tVM6VFLab(Zt6o-q$6<^uW`t<^lWn6oF0$ zcH#E$jxZ0bbBJNtUwkChZg{SP?6Bbt99kzN${ZC@{Nn7+4p~Us+dI-;bL7DSYQ}A8 zjb($z6EVEE3!2FIENWEk*b|Dg!cBhp+Gv9h29!VDu<;EN+4F$e@$HJAE65~^a$-VR zy!gV&+?(JJr9{V?NAf3_5U24QxEJk^e}2p0&Zp)5LH8BoU89*fHS<~h3xDD?d2

0y*zCpIwIt=Dx5-qZ)I?o&+>~ErZOF4d+TDwENBaXd)#-%E0PakGCiNBc z)52^T3g#b}10*MxUCCsiKXmwy;yT4w471YZ9++jH4wUY`Q$=YCgt;LfnNzO>pj!}L zA<^g8XN3>tBU@i1w7SN#jaBgN^LsxG%C^MkEI(IQyyxNm?rzKOa{_<$wzAjn#d|QY zSC%cFF#hMk(o{R&1Zj3`UILib=MD6!yKC3m3+iOt~yGnfV zy=s;GJF%Jd8X-lO9VNgLm*@FZ$T!=|xk8$miY*QG0#_SzCH}e>JXSro7vyH{I^}-6 zNZ-;15ZHa44G-Yg?)gQx@F%NwjLB~ox&~)#+Uy<6oG?bbFYp? z@Cb0#8w2+f1{eHz=-bLv=lOl_+xvalNaHkZkfFA!@)y5;YDsQ6$EC-Iz4!H_6<|KO zYXbsPnDIytM8#c;_1Gjb{tso1SB+3weaXH{x&M*B?qQVDBWEhx-K048FALxYdR=@5kt4+EkaBbH z|DT9R?vJoxAW-_9@OOTn5AyE$g8%eYZQnPGV#NW~RwX5JxRL^?@ZOmJVn_hkiJVq` zCtp`~cn*2k*;CH%-basmL<}!R_I%vC(QRjs7&#|YM=MX@KVm6lyscdG$C{x4l8qK2 z{LT!qeo!9Q|4yM7z3S*%D3bjjC#8f;fC1t4tpOJhVv|%-{lea1h>4Q>)dX8p_RkkQ zB22sbsjVIHdF%4F=I04{NnouEU$+UO>=?soS+^*99f-JpfL`sr;j8{|H7kLL_?tv# ze1^FH@+{Wj^B2;&U%u-gv;oxv1WJh433|LTdY5;dE{q3JMg!Q5mihMUtE)Z zJ)|d0r@-L@#Y}-G?mNwesh~xEu@bXt_+ScsZ08de;`9xrGk{2mB=&EP+O+!#{@vbu zup8z=KQQP^*bTMd%j|c$fQ1yvb40~bbt?Po*YZ|&#!BIP*)kTdc7G69 z<^KqQ*?E%wP;%*^$)pFIsng`i9@F!_n5WnzGBW7;?UEEZseZ+$JJ;dz_XHC5@{Dye zJqo|q(}Kk!uZ2_jaj(Jg(i4J+=D~v$?z@-ZK|Mh&3DK0l|2 zH%I}+>9SimTZC*!DGxyC_c9;}a(LAZ*NQvY9{P4UF6{Y&KnnZ0!#zbc`xyt6HNkgK z5^ow!bY_<+`S1lMZ)ONDXusZ~r}LtYj*8;@dw(ON>b(6uc2o~8)t93)Sj`@+*Y!KH zyiQyF)a)CCD&bB%uimbByyLKZ9To*2vHGCi52v=jGzIF4f{3Cieb#S_i-vtZ|8!~& zqY`I@ZNllhI0nFi9LYexmBWk#5SP`%Ss#o&`IHN z+t8TouX44q2+HC^@vpc?LeW}{0_V>7{>Qj9jnm1|?G8W5s1y;)b_OE6_Q-9qf=cS~ zbuZL{rIFwL_1(;5k10))L938T4$X|EhT33hm0nWcK0d(J$M-|qpyVZJdEJ-3eCM3k zM=+MMW`t9pQGS&zJ^#74b<8Y(d8kCh#p0Trj`c_tl@Afua;a9M_!Ecl*$qiP9hu@e z6z3${C9gw|X5B+67M4H03~8jN#c2-b}G&sWeqD{&db1*&0JSP1kHd+K%P zZ&zwx#42QUlihI1gQNf6U_n$O>dmAacvwaqI^x`&QU>mk;al}gsD18)dP@j*hpJLPTl^>Da?)LWA2Jv<w z+T}u%eKt|1r{JJ@x}KX~^@|^=A$?W$ zb~E&wPT%GG#&1G-qnv%YS{@A9!LxFbY`EYcRmq*o+J5IZ(LYiAQ~L+1>F}^sYdjv1H}VW*uL;TT0_MXcidv_1Z=} z?IG~X2B==!hf6$WA3L3DX!-#9xO&>c?{646BfRDZ3V-O=Jw@0xRGu2V3h!?*0gQX$ z2`WA)`AoOlTGO-N{z42#&TS3l1VtHLIF`4w-1WwB{v9ZUx`}WeUQ(O2LLQpWkiNqfAd;$*Bc{?g@02L7rW^M$|S$wu-yaxZ6;fw=5xfeWq_yT9pIyk0~f8*ALt zlK4&%p<#Xu=il!T8(cC+spN|&74T9^<*?~?nB7q-SS4}xK7}eEN?+t&b}MuyQTy&~ z)Q2LImrH@e5=vi_ce`87dQnO4w9oA~$F2xOUHXD(Q%QQPe-yt5hn)7MLP-yuQp@yO$lqQwhw>-2YtG7|H2mtAprvkEd3xV%w@Bxt>J9xDnMUv( zvR42+i)^md^2HysX}t9XjK$@cbMn`uE3FB;-^~(Ur)NchslNRNI}qD`#t*-ah=$07 z_i+m8T`yHs=(N8}w|#0HKJ>`Ax6Xdp-sj$y&DTfF%z#JV>bC@xj4!TC`{$VzqFV`~ zYG>_#Nve>?{P}oWl&+>bzy7OF(eryhbRLpd70NEFi< zM6tNwSc9V60qQ=F7lNHsw9KR~?lMc~cQwUpp#b{VYhUK51byi{lJqfST=W~>M8wg- zzW##aKxUv$B*Dr3`IDcAT+=OQVA(~MSDU=1`@9hR;x?HZi;o3`fLOoW zY+Yh_8k&~kg_9`4Aq9~kLO(+UVEpu=ZpkuX;JD8nx2+Af)b~!#UbDQo1q~0|gF7=D z(LybaQ9FM**hi4aGc|U9=PO*ZL9sltgO=TXnF|l-gM98Dm)*l3`tHo-*ZHFa(TqX; zDC~t0TFF~@>!BWdya@T(QJ(RbXJ*fyui5uJ=p$k;*Mc3hse`^;?hOtI(z#(c;y#?h z!p#0oito9vwCF<{&jXq7MYj{AF+MeH9SzMZy;F9)oqsI|ax#Kf%T!#qJ3Z(jkU*Wz zjTnD?q%^&q3WKYivb(Fne$JmIAMCzDS+1Z`fYp%1o`bt}O1a0CHS58(s{;UT@c-=r zZ*HZ-bj(}8d5Wjw5;%!&vOP1PkIN0)go0?R$BTCJ-Q%}XziEz+tJ3@HOG@NAnq|_L zk!@ATPVkQ<*N)lwGH7}G7(GZ#zs_D>$(>&{?By`Kk~$O>d1AGer9$xMxyb}HXwK>~ zc|C4^Z^)z-r5J#SthE;%Z@f|58TqXjzcTJo3U+G~a){$)NU&gII_m&ASbBA>cdK2zBr&he63e+zFY=lAQb zVmg7QZJfnOQIXG-Cd}je5=~bMkf{Eix9DnGG<2wnfAVL(2&D>eSO;VlaS0-NzSDEu z9ks}B;}DtI`Q|rA(_BB>iP-CDV^I$)md%9v>T?wcPwMZ>pZe2y)@6@zcSP{5v0(Ry z18XEV9emfTf0yGA=o&RsKGY8P5>#mf%C&%P`rk26PoH~b>JE=lK<-++r()lrF3sr- z<*?osUDcL8K)pBO^Ij2>RuIxt+^o?qzvlH}?|-<}YNsm75dLmI*-BZG7+{t3ap<5` zgP4h|u$5i5c~C~Ac!A$cLxyV+S|!=U&UsO?x{G=956(KnxL?aOO}RdwA;KMbe&@9( zkaeE}$2yWlYm!OfyG|$uxocGzedXzI(Qf(sG+Z2QyNx`kaUQ7oq`=tr+d3SDY+9!4 z_gUd!G}e3KmC{dix=-K7$e#GmLBjj#!!`3lk4$uUv-6-nx7)LMp&>{}AUI!f8_RMd z1A?n`pP!Q)l9_m)vf{9Sn`uRVs%OgLlga$Ymg&8n9j?F3{}QuXJr5?WOosrC(h~+& z?OlQRkD1Y-<-cIn4UMPT*bP+J-alL+c)=fn7=akD=j}{MD}HNCx`|5k0OggJA_Op1 zLCVGs3TuP=@|O<`84r8m*$`|24s8)(0lH(|hyT8v?i;?RJMh4hHBh;_UYZ;P3Ej$@9cS{H z!;(L9x%pX_g@w50%a#`QbG@arrbX^w^AM0{<7D319)V)X`T+%VkPctiQsp$0 z|HAthnDLUFK;MPF0Bcr5#W4#L=ZTTgeg&@lMMBE-HqC*5b{A)ab{+F>aO`M;E_ZuS z)kwvrMD-y*NGIc0zJCoQmN5LVf6V*H%TT-_Xwwk#oUL5@$`?E<=O=f52}b*uGx-)7 zWGO`g$!}_8oL_p{JLISFHebwZo{v-NvY{h6p79)85{=iN2t>F3Aa!e)J^AksxV2}O zp59IpKJ+uq81A<}V_9q*_Ho^R8gA5<{TMy}dk;v=d2s^0j+ZYgiostq3+Ffrg!I6k z#PoZCITd6^(TTJw@O6I&SP|nl$`n~2JUxR;?6{WFRtj-JLsPNtwzuzlp?>*igD+I6 z>)3)crHg{Y_?ZOS_bDX5_1p+w(bY69i2QGt*Ux>c8d%HW{vF*=BpqJdup03jN}+ty zQCwrvG*60Qwwf!s}UiztDwaAyAjvr+C#Z}j>0kmXSuP)^ObvJ zJ#HJAWeJgN-ZyC{>n5%L?rdE8``2|a>Fbr|@1JvC|9y{Tt)Prnh5|E&cd!oMm(D^8#09Rm8a_@6e?#?2J~l_wX|kZs|1-rC@7!&@sJ}Or zWE3eoQATm3zv|;1IVuFuyBo-&9Fxlmp|?u>%E&Q6MQCsxJ^?R$eYtfk9xUAq5yIue z9di3IhQufSek2SboOm3$Am$!#=X@6a61+Dbs6H0M5UiQ6Nw1FLE-RnY=PSFhIvnP1 zSsZ%KhTr+JXFGc0`GNo0?X@2vRmQsU^=yR+p2#n_8UZhg$MQtH%eNTda&m~q>G=Ny z)=#~}X~f|mhH%KBNn?Um*M6{n^uE*HCovc~c%oJAa#MIf&-EQo%RnL%xPQPiz zN>!I5D#+KgD*0r0=T=lJd;d)fJ2cH?3886@7Q+dl7xEd?ZEsn7-g+kNL6;7=1|4=! z?eN04rGJ0Fd6rYS1OAO<7a=_adcvEoucfSDjnjq{i?H$|CHjN`8Clt1*B(_@W};y+ zo`>i2$@jzQypPHcoGBM}xoo9AP8RJ~NP9us%aa~=I;7wBa9KB$h;^)qLq3g{=zX)B z^X*$DVd{UXl(#uZGUd<{{89y;D1ZMtr%WYN^RPnG-#OrTWBG`OB_w0pq8;Os4v82MQVL`$bt^9ufH4 z=ai%c%mNMDf3c6nd8UVqC>v;t?_q3Q(MP(U5E05R|68D^YgvmL z6C0vf@HSba5BVJ!4O5Z5&<=^*+%C9hGTkqpIy`yh`Z!JEMQ<8ef7voO{-HrkCe?J7 zP1~Lik6h?Ou1!$wd4<~3WVfTp1r|G5s$Omyt79W%8QeVKT{mSJ zV5#f~ofPEA2RuWJk_N2|SeoPmBN-(;&ow~D=x+8o22;Dc^P3)jPAYupC6x%Q!{w5E zst)=bQ};9; z%P|XjNtef3!ESK-V3**U92@ZA6V;(I-k#}gI91j|Bm2K3zipQ-w^!yrB249SivCItR=$qj+#(6@8jp?%LL*2{XUT)u z9Y@N{BrxL+wUPAF4~yc?ClIPs+a^;dmR;NQj!LEw=q8oW#lF0p&#+>{$M+0=JJCi^ z@_V~OcPUtR!J>Ew$)VR!4PGdtux957{H?p_g8lT$dqUJ2glc~p2Qk!~25B}9a5$wE z)6T)MSUUli;wN>e=Q42>+`wlhyCpew^_^o^skr*KuCgz(71I(HPHAu+Jn}*prWHaa z@K~nvoJ6W*2;gj{ujO=~7vs-&Pq=_(0-xah2j}3VeH@-Sh7u<5#@zk4k^^&8+7FeB zU-T3-K+1^shnbzl&;!P^*S9;U+o`?j!2-OB{%o%i=~0@>Xg|aeafNN`+4>ugl z^bU8I?S+r=pd0AYp7!PYl>Wxp!=L#|$g}4>%Ni1&4%a#Q$URmDRZHKAiADjj?UK=7 zGHlmNG$Y0OcRJi~Nb28Y{NlX`OMNbVBc}_*s1P@i)@cG0(*C zvhlQ6d`sq}i0ZQ&qoX_CHmODyP(8$fEquePXotqv?v4X60H4%u_dhAt^dhb$?WO-2 zWw84|sU9Df^U|yHqJ1juk;6dtAhp`$*%Y9Qf#f66lGs!ZK*Cqv_0z#>G9}agQ=cV! zTg!Pq5+L#7i!jU6MzXaL#K=yxr_~nj!Vli}uqW+Vog?l2La~??KA7yQ@GriT*S%44 zwFI0v1`HyX^R2)N|5oh*_+t0^758R;yhOY0XDE4Q)phpUulpcEyEQx#4)Aew%B}mh zyZxSdW_%L2CoY%!R(&}hV19{|YEcF%Gr~6^q015Mc7ht(u-^bhGDk2a(;{N%3f1-$ujS>i9Ce7bq z!2a?o?=F=+^Xt2#?iXefEz#7ay=i`)G9<#K?q7f+%*fOCwBH&DE28eKqQ7BxuLsu zzu0AZn+*;$eo%t`(Q_Gn+;dV?Sx!}E)va8L7Z_0ZL`t8 zfwXsGW+(1_hS)2rST1*<%Ylc8z-zZa=K=4@tedQ_o(_QuMFhZ>_T37`}U5 zcD&k zcM8EoMNTeMMesnnKah0w^>QhrPsn{Y(3QE|u7AYsqF#Q0)?Dk@xtH1O6a&wc(6Qb` zC_qtm`|T=O;B|ZMzUId(%k~!+8npJkCB?$46}C`z8fQ5_*a8!m5)Id#lf>eayO~EV z9PZH-XI#?yyE0jazF_R$wZr>zB3NC%C%f-=3MP5S{|_e}y2F1NE@S~R4Au!X?qscs zCsKYL;NPMt1?S>BG7-y3$o0<;%FIME`$)@<1Kn+=2(XAACsoI1>>1}Y^d7_eN15m; zP7?EPSfahaC2Xr6&v(2g?q?Ydh(&P(vKeOc_1mWBHRFpS?^K>y@`JYRBMBI2d9x`V zip;B*$BwkvfHFkHhQJRwGE0qWdl%e^k9SMy88UC{^-(=~k`A%rf=Kh5?=~Eq)BbNP zsa23bkXKotfCnKuggDE{yMf5HE18?d&`2e*nJ&!2SZAp7MZ7Jw3ib90Ly%nx^Ha=YO(MoS#Xy zsxtcBmb3PU{!pYPDPOM}NQ23^q204QUd_|lUw7eiDmN7$)iQjpCNvKY`_R;*m6}jZ zPP5I6RwG;&0{2sr8jbt#6CF9B6lE@fUWo5;@@NDxiiJ0|Ake#e|AlP$+2ziOe&x96 z;-5h~J5g7dS!1d?rOzU88gmE0?>+svzwVffw>!A?rx`z9Su#}jx2>oFav5;HzvD+H zrvq7^og!62IBmsegC+o8l)Fqg)4u6%4gLU(R@~ z2i|eZrK5Oxf3De}RTioSw)NBL-#&bW&=kZE8nK&(w%5JYpfV8J1CZK`j8{oiEB(g& zqAT%wet733hVRb`G^x0484<&rt_I;(*o*S(cs|(h&n~MgW{NzEzweDiw8uC*l7|!Y z8IqYy&3~tm8b5o!vymhghWY&rpNJ?DUBpQwoaeiJCOP^J(X*sSR&-Ogx8ZN_f&Pv$ znUmVuJkpT5cREQ6*U&E9!==sAlnB8Y08kjdcS z1%%p>J$zqi+BD<)(6cs@auL7e@L||{YA@=MHfOepWc&>9vtnXdvQgY2z0bdEBgiYG z@7I%T#Q(DhP=|c|YhhoG&SwcN{g16)y*&PSFfz)j;}rPBLnFR(KSddw z@yxz>yjmM4p>%b=a>psQ*QXktjjvco;{Kc)Dz5hZOz~BGz3wn2N!!-L}by=LK7S5`{o= zSxX#ubTSlU$1kSL-~xd;TpjY>2Ph&E+Ytg>0-mc3p{2dqsQH2KJ)H- z>P{d?;Qo^b$QD2NTkVw!3_z#E;L#(n7N%;cbKToyx>pxDn3UbMAzx^+b4TY@&^h$k zf5Bx^BrV<%lGN`lD44{tbuF)5?NgBdUKNWIOPJm@-JsrzE%RRo9XuXD?LprL-$7r>p|`Sk9&%qDqxtjFxHp=xI( z7t^~HGI~I$S%8Q-^{?LYBn;hOne`yvlf1EyxM^->Mdh4pYfn~x0{mH?Ac&XJL!#?f z4)X#UyYQfk3DlR!of+Pa8bId<45|fr^oLpK@%%@UGOVoYwF}(9 zxpC;RnB490Opcd=B)3?3`~bcH@b*G;IIGXsj`b>prmxB`r#7|x{OwWhkRIK3I9+i+RzGc-sN&oh zyk=|Z!K@E=M+*y@*~NuXCjkg^0^0k`HJ7yurInI<*Bj-l`;VO^d{w3^xr#R}uzRZH z1B57Q31`^u&ID!;opD5#M4_#P4*R6G$)oF;082Q~p*UORGfWN5y0Y{XqHBv*z;8Xqp{||m?^h|a6__*9|L#w_ z^;9HS&7*xzBzm<{cj;O84AINXHG!}gdI*T-;2!^KFBD{$nnrXI zNCE#)UT;5`)(CZ^xQN!1eQ|`Li17(G3n*3}sZ)L4KW?4HJf@+$iO~vF@|nRCcC1Cv zU~l-L$kbrn$lxM**tZQmvI+OrHZnp9 ziK@&bX>QT)%IRY1>j;~)PQH_V14?OEz&+RY^-7%Eh98FaL+ho~vB8#y@BMCyd>*@0 zBYA(F*|r!>meHA|{V@v6W^Z8;Y6``p8_j|tW!uRb?+t)uR zB3=-^?RMKY+P|z{U1S!yKXwiF(W5WF!MZN*MCP28d4C|EI754VpR6OzAhY72B$HyO zq6Zphjz>VByH8TTqAtBYxsOi9mnb$az1J$`{5uutZd?i_{Fz5y9$qBo5Zzy>;P`nU z;9hCI_W!uA0+?Vp9s1IEkX`?3jqUl(hEY6%y;iGNDSFZJ*{EB+miLfhyOsO&_2h7V zYebDida*ZmR{lQb-N^56rl0bBLNeb;+|iE;Sc5m`X5{?FT$mqb_`if68p&qg_D95# zoxXr(3-ur)^e(!DX$nz$Gg|Fzn1{Zz_!C%I;yJB1f5JN)2DE^y z_Be$3@GQ+u()Qafyv)t7qpmdI8zlTA$7%$zk88WX$aGIVuIh;>t50!x@~!rydMng_ zkFs-XxsN@bwd8TD>}GoBqllD_e~p#m{wufymY8Gv*@*i0$%yAlm{&U>6F%>Q?FscS zjyTgq(kWH$o=Y&Z6EcLm^Eq3GCm<8B94>!Vc+)RXor;y@87DNIksWEkGXj zQ>=w|nj)={qM}x_FOG*VB!M2b*~m>17pw->R!SbE8xHz!joS6s_gI=`KP!$+gmqw( zt=sg%X@7h>&m`}%O6yQMj6Sra1b?XpOqHia1$0E=^7)k5P8s0l!+VR!1b}RMeJu2j zlCHd?J?fx+Ij>3HM-WDI7fDi=-Q{M0R*8q6_8%fBG#@drWoF!+YJpnTxl@-t)pF`* z@p_Z7>Su(eW#8H3={RWQAFtDUmfk}3{5jlTMYnm;nFsg@J<$?UaPb5h8OehvJ-iwZ zs7XN-2U353sO2ao&gXr}7il@i6;20SpZrJ{r*?^bFLiynCa`}RNZmH=eRe?8bp7v% z2C3>BC8or^_rJ&ZcRe=2x_B@Y1__iG&x{I<*Z27h)bJ$Y<;Ow7ajZ;WjUHO{@%f|g zngJJES8{87RCjwwcCJ%_R5e#uNiBMB=o4q-@!;)`B)aLvb<=k1)ZbG97Q-0tJO4@G zgYy7F_C3){C!EP==!Eox|8W-ta@>Sg+8|Mb`Dt5`|KI8q!EqD zHTX+l&SS~5cuV{bLAl#fG}N=@{BLl;P~k({Z}?q1?`}=U%=WBKt!T#H^VjuqK&T1a z6!Jxuo!pIeBADphc1wDtkVgk=A5k;?)ytp4=8S#Swr3fXfe+54EqBN{xnov6{Nujq z9>H*4rOJ%xC6&(8JAk_<`;JTU+cl}#(G`aaV?MxCIX#eg!o#69z6cuw%dQUymoKFQ zl|SBx1C#OU)52=q3j(H19CkXy>`5;9{#|{%D1Zcfx1gHeWhO2G+T{CxPET6kAKRQi z8q%jarvIZ8EGJ)W=reqhWW4G+^}mKGIFK}-T$pM3z#h>Cl0RqaMm;gaTy&RjU&jwO zqgsmp3-k+q^BEibwGtiDZm~&PUu?*FMtlcE=W?G#Sf$+wVqz@!fHz(V zo|jpkm*9|Uu#(>!;B{ZZrmCya5Z`JVQVnJe+dQGwdiH{tpFLo5jA@K# zODr9z3vep@~a}phj=*5 zXR(c|oL_CJKez0(uX*jJ&^Qea!`t%Ct^x6zI&pP^W1+WDRB{>Lh)_PgF;qxzyLEFO z^Oh#$o;~~makXp~9pNXXBY*QV|MQD}UuRQ_1jr+WeID5*aGg{aZ{qPQqMv*J=H5>k zmXDR^OfB8rO5fkvFy8I_a`i1`KO5i?eB5OrM^EZSr27npHGogWBekYMf?08iCh;FF z@x*}&AwPEgLtNNDjKuu6U8`8-xn*ev-7_P%V6yjRGyM13?<2eTZ5-@k$HD&@uZaQ@ z#%;}t+ypmT^Od+^vCZ)JnUQ%Fl8AR_d2>RD%%Yr#kh> z{Ll^;T{I@3hVF?jZo&Ls8yV;Y^l67$1IqRr-+^B%TV&7H;Han0|@@Ud8Ny<^TM3xAfd@qLk^$lY4FH z@jCWo-$O{(gVvF*tbOHRR4Y!d)w9@$iPxJESHS$ut*(b|1NBe9V!(QW~Bh-2ERV!al@bJB`{rhZ+6A8cl)iNu?<>0qX zj4YdgW!~%{+tsgzkUua~U@AR!i&lAits^bo4#TeG4cc{3q6RHIk9@eePSh8mJVG+R zJ^MsSVxvzN$VyBp?~V*8%=A~Y0Gu74eecWqVJv@tcZ5oOQK$WVM3U`+MaSc{;}56P z8%Ve54M?tk|6RWd0@{ar_&)G*fe=zfJ(gd8n%(Q+$)@p5XeoS}_CcYKnZ8x!4XZ50 zkB|NLDcX^F^IpkB1yIU<{sJf@m@)_pV+pbaVMMIe6i1dQ; z;DMd4JzDA|!+h%pJbJJydo;@6AU#2x9>XJ0fLK;OKWzRp0m{V$VJ!%YwVe)Tvqhg0 zL{N+afO0(?7rh~nrl9;?1egqHfUX#8QZvzTYLXa`S<5u2x!H;lG`~B`$ zNIDWm)KRQMmvOi8xA@!(yjChnceZjU9#uwo9O3)j(zBR{J$2kBFqD>%wj)mBBj}5S z^>~W$7GP z8Q!eJ^?r$68TVV-d}#+yrFso)A$>e_dIYcbyKRGi6rIPin_3V>KZpT24M9W!lE{b| zh@253PVTR}J$qGtRkp7sIH!B>wHk>%-XJD!b2n}Wrz{2^XmmrY*FOuKvF%mg`E3Vq z!^(XAvV&M+dc@sGJD$kH!Dge$YC7=8Va4w_NGvh1uK+j>lqYvymd)2YQSNW1S#tg@ z)lgPH^RbtX`=|fHQ^|rKXSa<&e0*1pC)VHT_Unz;hw*nC{N`0TK$1J zZ*#*TNzrGI;f1gt=11qcAH!P7!+>3!_+#jOfKZ5j1t-$)>veZO@L71GFacZz0$)0y zW&9El5N-9`phmyz+PS|^^dbA~H*$)-B24DCFc~01udA!N6IfCKRIt9cgrzlLeIuj#T79I6_>XU2M4y~*fImlO%q{4$ zF)*+ULzG{$ly)I^8kIHTe<@tl5@35_BW49~-FWnRj=byowf&t*@dPj@M5t`0S+UX+ z_3=bx20r?{@rADs3^GVHGI&P^QsV-L@N)h_Oz2CV9eqnch|X1X?C*3k->5SB0sI+) zsz>7RJxcAM3eT_&@RQ)G*l&11X>Hflq=?3wuFFZ-dM;jR8yrRb+DJi|zG0~_rMIzsiB_LFy72tw##b=^hUP{K=vrx{J}=x4`|Mp7P-^V`M|(l9 z(JEy&tsvdacp!3;1F=Bwe*gF1pj|bF>DD)6Mc$rhUfZ{|H0r1BBEpo55EzO$xE2I|qvG&!G2upIJ9Pi>ZHh)0ny(TlZ52+4&{ z_NadF9q#`FsERuxlYcDx_P$gvObV3>pU!ZVOyVj?EgIzS2Lr z5eO6igX2vMq=M$|A5B3k0;vvsp~rv&w#F+hv~AxeSdJPCTkd-%WXkU)LRUQzD-gR| z+g4dr9 zXsGi(LHZ3sBY2r}-C*3jAz+|f-L?8wPEJv%YU$=43zgg z+7TB4{1jX}qsf~W5l|Ztzj9yg!Q=uDags$?*oUKSI1Z_HykUO^_&ohi`*FBcKhG#x z0Es-1A9(C1JkV$EEjiqFV1b6D^WY`oX+nnvNW`NQP33F@TT`2ozv7-uJ1F09P|l>x zVjjktPQVZtGq_;c8UfkkLlXHbC;IRXPjSdXx&Y#39PsDLvyBhQYq32vy?Bp@c~JiO zmgY^eK0uysH~}@Nu9~V^_nZE%NDkq_nl#5Zn`(oH1{1A6z%FM44R+&p6vT(C<@dIFg9)_wK@u0{PX1_7^Pf9@94=h?$ON})v#{3GHf1sz>{ZHCW*fr`Hm z64Y1D{W$=afo%R{7&!00MuBuUgXm|YU>KALt);Trh#E9En43I~_*c4) zm7QDlcy_NNuuh|dQAa`*Vh2X^sg=JV;{!_H6zu*Un}!*IRYi0`P!>Lui?UDQGsuSd zhs_vk=bv-*dZe<{86oh#3se!pdylfLP)$tVnS=M(>oh>b{(*hxTXAmSUp1S-eVhJ@ zt!q~WGjJBZ;U_OaTI8F~wtyBXm*EOCe5BIGn@UMbG3ay?w&B1}8yTKrcz*qRlhj*J zL*55!cw!P%-b>_T1=0JtzJanymS*7*3Dz~$4cd3yG$c4!&1@$C>*ZPu#%y3Y=%hyr z=CgErA2QGTzmR>KdHVobJZLi>>NeRZ(r=R@d@8OHAdClYVGPQH^!m35K^}cIB?7m^ z5rCoYX}q3m_%6Hn1TJZ3P$JPfrol#Wz@zh9!bS!J{TTb6F;Lg=Nrj*f)$}+p%iR=ks=~BE!2Yry{SLkNNiait-hcv$ly+k|3xEGNPa%b0O3Gc_XC6a+x=iZ zkSi}>>-#FZT?2Et@qI=)2kST$0Nfqf%x&q9Uu~0JkV|^a4tAzc^bk8)!sT^wNcdgB zcJ2bHh~~Z(@BHRiCAPfY5VRf1$G0U~Aa-idKg=Le|e^KGr-YG31%SV`%+? zoQGweof`u#`l1LJ!c@Z>Pb9tA6*ixk6)hPzQ{JCQxa`p ztGOj^b9qTvU4m8|c_dM=@T40RiY7&`p9Bvih^?7>xMrV#G5})^+F8es!*A;=ilqC4 z1=!K}s%}MSUZy3Pz9_3R2mY5d;Ra>p^quo;d#j}@6(L5$j6aG@0qF_WpsX+F!V(|g zSO#ys=>vcLYYNBD5;7(X+C0I_HwU;|FgC51a?eDv1bR73xTaf7((|dW_iytmp9{;n z5WOmHa*FK|GWMk*dVin)2Pj+koUfKEl?W}$85yRqC;Zm^n{--=XLV{WMJO1mX z?O4tbvf9~Q!j~bEZ&75*$3yty?u9UQA}aYZSnuvT8{A`8w0F#oY@57GZ8=+&wv)Ok z`lR@DCa!bppDe#dr7s-^pwzIiv`5Yg;d5_}hfCpt8tg6b1jOSg3){&YrGTTw6}Qj5 z2{z=b$KZCSDoL7ey^hT|?EZ)fAZS(Fl^?{7ppC^f%MaUt)hgRjVt?kf0GTmGYj#I& zH^2BxAg?MzBkpx0A3%5D6n269(r#)U=G}^3xJI~ zxBeFc-d50MFJYQ@#&L$R@;vvJiOV+UtDL=8>%*uqyN_kaf96mpF^~w&$=~1Je|CQ1 zmx$9d`X(_yoQj40?fxk1XR8TlSK=QklS@WFV6jvZau2054O;a(pHZVh1Fn83nfnM7 z2@pfq{2p@hBX6ELCyr!c!;IL!@;qQ{%CmkS)3v?{2@NeBLu=yIVt*yTKIs-U4A~0L z9zzb~yS@(-?H6e+P6-stj=Ki?z#LFm?$D0bjV$Zl)b<=eAaZ3GTX4w0FSItiF*SJ9 z6(4HhK~%hC*p160HdYcEKB9^%!5g%Oe|sYg3`$(y+d z0G||1fL`#J269-!@Z#SryxR=UTeo5s#JHzXQ~P^=FULwR2MJVePvCRF0r0HgYIcPq z(?g@Rm4PS@IyC$O5V0uenVvf!#LjTaU5K=Y_A~nk3$Ti|#r=oWdebobfy287@GXI_ zyOW92T&DNZ((dsm>|tFFr+l@)999XeKXTMslYDQUmf73*x$1{Hw47NuG|qj;bljYh zQeU?K)N+rzeM@2Q5YG7W1XB{EZ1Do_{1gc&M&ddj3m{ryO5IJHefW1)iJE5YnIF(x zP|4M8=lOM=*)Q#TQ7-fgLW=YAZytV9kOe_C2q`U)E<0G1PXi9_5}!4MZNBC^*2A3w zb`f3654h?u#@B>72ueRnh{r)4td?LLU%gEPG^r;^&k#BNK)3U|h&15tuxuR{GZO}C z6kT%sHa1qORolQIW9`#F7g9*mX!xzc&scW%5O8T8v0FRfeOlM3rPB!=lpOiyHGlO5 zP;+CySt~=i-W<5qEMnkbC>Y+>kHr@YJO@7mG(Jv{zTcn_?;K72vOUKzsjW5TYEAhT zuuSBOdF(#OF=76JgR4Yn$vF4Tynm4T2kI7^HtU$a{7#U>S(dN>SN-F$5R7=1BG8*8 z%m+ImhhQLExyb|AW!cs$`BZvrDU4N{s2oz!54M-B?jxXiS}8YTsS3)mP(aAIsGS=s zjYNL&=bx)1eaRp<9LCI&q>v~KA|UU!YT!pCf5P*ZOA)3x=I3ede)<$`J$ljcE^iRb z&6HplyG?`fs9mGbC!PQ|{(}W>LHxeQ{J#4^x?60f_mvIlwN@j7t) z_D2JS`{|F109rbOW^)xJZZJoAV^f@auJ8rr-!cX82l^R3OL=DkDQq^`QxtjFQBmv9 zVB$2X!enKuC~d~jn{OT4oU=<8M;#q4Sl&Lb`}$o8j|51J0mR@UuCjt*pSsrk!IQ2t zA6_72t@Vyy)+0l2)_=D=kt4=?3c_%-&Q4JuL59$Ez@;jDMj(a@5m5X?X(@OsKENCk zOD5a~gzON!H2?h2SjLjQx1MCNW7gDVLvSk`8jq{%< zU<--)RZNkV!>f8h{NS}}j#K(=c0%DK58`8ktO~LRSn5O}-d&i|54VlMd`bas*B8Kw5_ai!Ghusa{{Ffa7AVb!0uN6Qwr-b;waIyZ_!8zP zPjRbKTWEN1chX!nFJPmQZUgImce&qBg+o425}9hOagOG&L?_0lDu?|eA2R-_RUIIFgk zdNuT6jm;I@L14UCjqE)`S9791G1{3KOP{639A5DP=O^3|@xtyAaxuKfA z7-wxwekbolROrgurRSW-K5L7)%5?xm*$wf+v2k5cxCrI}4YUxZ16LV7nB8VF9lK9z z$DWjLzFmEGy-1BAKlyh}Kj8BEF7(Ulsl$vRJUwa;Wa~an&$x-zvZ$-aLiP6z-V{F@ zi?5`Ct1er4HzOsIh4n@tf&qvgD0={~Fn*wj+`^Oyv5xy+-$wnO`hD4|k8IMXVj>}u zoXA3))?aXP{`1jTT3_$dLuaIPDUKZoc6(8la0aml_>8IM>8{)`D;AWd>#r&I&S4j= zg^S`XNuVd^zryZ`8?fM}(0zt|HLpB|kd~Uu2#Yy?5%}D>yJ&lce77FM_tjknnlxPT zQQ7JbL3rv0j~GWzta4ZBOTx0Z;LuYZtik} z4^ZFrvINnWcs`W6t{mbYG&>QQj0(DxeGD?ZyQJ(J$Le{=Db1Yr-*WEs19ic8oBSL3Q_NSg zFmAu}soFh2Zr#U!N^}djIXKsbKx7POc1RQX8KH!fI?^0o~? zrg4_q;c{!A8Kw0iU-XDyLnp2hL=1h`)7d>%KqFO3O%oP|t*t~}B6O@4IrgN%806cB zrkD$ivkUy|F|R3Jq7Ex>aG(kMvINor(O=SApvBoNQ^f;!>+JZc5+1IQHBOS^Af5LLc zLxVW0nuq#{$033$W$>sS10>4G%aDh zNz!IPl6Qc9Lu7d?TJjaH`20i}8$Qa2KYPMoH|uArDKpr0u947{fS(nb0@c%XT~JR!uP9W1^Ku8I-= zHF!Qpl2;PP?+}C?cNkZ-ZwdXTmjdg&s%P%K=GeR+kPM)ile=WQ#8J8gG zkQO5t0o+Hh{Ye)L{T3*d_%j7}d?4GocM@CE7ZEC5}3x39X| zH4lc4De;;hiGh?TzpQV#vf$zDy-(|V&z{cnr{?l){I!V+3Ok6aAFHosf1oIf{4@^m zoUvcbWkA~>Rxd}uM4#E{f$KY;qds2=M1=BhminaGqy4Wx9Y|(;5QW4yj2}o1=bjKw zoB0fqWh=(|VZKyPSf((_>+AN}goK|=72WgM2JAtIg9kjWb3I3pB_JA?{{sjyu5hl+n z9w9A17jVAyf8T(9QE3Wo^V^qjma0KVE-iH)#3ZbqFhTYA+C6mtbT^0C?+Vx{I`Uv_ zAP)p_ZpHUpJYOrR{%-kAkb%Q80|f@UYBt|-BUI@b8=9R)Oa~`C)#~+gC&M{{cyPV1 z{uIP*o0)$5)_dbw<`DV7=n2}Aq76Ql>XWYa5;lJ?_Un9(%iNh%*cg4lRUm@H@Z#%` zstjMQ=gn9sNCjx0)pVe`KfSGWWemT=99n%2hW0q({%tA7@Yq>y{N(pg?8#yrv{ZOV7p7fwsArZ5n4bK0(JZ)HvD%O$*^pZ_X&`1 zBEG0@0jdex`cICojTcl#@7|`x{htU4fz)`$IR)5k$!~E43cBs2hp1$1NhfSHI7pY* zBuPP2B}jgq3|$|^t`h<=?o1RVwNBXWl+vCLq&oDS1_xMr)1^f*oj(8w^>BahBz#`S z4Tj3t>ygNfuJ9@M-6E;_1A#k4&WUU80SuS(fa8GZRq#GlZkSkty$$c1ZH-GuklhWU zw37T>btv+F&P0+rLR_`vn;gHQMau6NQdPGf?f_S>9+&g$0T6E*c*JNwOY`M=X6oji zOM>F({YczJ2-*H8&NhuP z1OGYql<<6r7`-jRqDm|rSa;w4p5zcsQd6k=8*0En2j3_?--TxZB!g@> zys6LIaVsko4>5r)Bl-!v7Xt#I7t9l$+?vAobd7>;rK#v@z%e?owlQnafaE42`2z{n zea)@%0n2d+MzH{tf@8uG1*s0LfL~3#68^1CMb-W~9wn=Az*PEQLpLW2z?AA-9f+;W&t>%c$fA-KkElN@&deq=st z$8{5BBlpJdpqcts7xbJGHIn<*c090gd*DmH3!cWn2`Jv^BzoHL-6;u3D$`RqZ+&!! z9jpGaQ0uM%*zZMj1<(xORt0VVfS|-z6^@J>vM{6-jlaygt*ycGVyu2x^t7m(MD!v+ zFAP`{A^~o;Rp^w%z_Ya$Zkbd78%FP3b;>A^XntPrpv#g5h>jxc9!Hp!C4MFb2p?pNz8~%C zfNs|DW(M&IFO6|2$6xgRB>s?a()qUFHe!~*J@;L_oY2Kx@-CK~xBz)mz;0q3bFrW^ ze{r8@=H4I6tA-;qYJg9I`fdGpjt^LaK?)46JMSVLhx7X^pi)&b?->*c9PMdHUQWNL z<+LxJCW0;y2>bz(;qS}k!{ovau$4-HcOoST^{y}U`t8-@yE_W>&;d>4$5E0234q%V z-OtHJheh}0dmwN|$`xO0*Z|gqQhk}sLq=x8T9_?<=69@UaAwxbZv#W=5bfQf(L1Ge z!D`mKG03w2(vJ2*Xyj@|vkHK2-h;=uvJ4@M=0M(kAI%pLwU znNThGul|0E-?drj5!$Z77_V|id7vud?ob>-1e(fADD8u}TWu(qh}2*qn!t0_>p+_P zU~T)?DI;Igzk~EAzmGWo@E%}fcdQ!TV&;1Wyl)o)QISs|3dU<%p4E$rOAah=*y#)VUkmp%wE_!>OK5Khdi?TpSBrvE4zE5L&{>Yl z(<2B&eAVCA@qzuwm&kxsNWqgx1F^Q+jzF3?hrm=!$Y@<_EtpV&`Xg_7FrJE;W8##L z8gY$>KMNnsJ(T$+*NwjF9yEb?yh+*v&_OU7++Wx!{l^m5pqFuOnedaJL@Qz^Rj#rL zDWp+oO(WC|;OTVm>yJu=S-A|vGF+AAerSYRVD4{67%SjUJMs;4fi@<8KAk8Zvg*Se zjUzYOFOsK!{~W8 zuHZ32$X<=_KtTc-$`INcDR(uUz2DF0pW~HlYP<~IqIDwYPQzAi$>GWgtof!vYsHbPFR@r_ap*o|vO>7%udxX4N+L;Y}#k8~jl@ z?a^Zblm*%!z2B>^o_!GDvn?l#7Z{a-0O@qU^=oZZ!SkEDO6kzh`E?~rrN*h{6uTa8 zFeQPQ2pMkO_y<@u2q1=Y0O)Q^pzpt5h>kA@0^{?SJiTj8{j^U@ZOwI9cl4| zy3OkQ?Svfm{jqQ2lS-b%v(2jjDGn&YktO6H7ZdkX@oA^TfTEl}v;l|*cj2s@OS^ux zPh^5y|D6s`pAfsUdP~W;#a)nW#$RkvY=K8(l0Dx`%5~H8$>ik|vbFm2MTW7<(c6WT0hjc#pre?w1~>s)_kTVr_d1VsJ95G(_K z;%`a50iz7XG*|axy#Y0t!1j1J+VUXP3I*|dQjga~HctdLh9@nj4-|n^(OpE#fHa1cHM%f4>hF$(gxcqpu#UU_AiL zhyBMTk2?Y7$&x+$p6~?kIl*iIJmrrJjI~Em*AI%WUY&pi^X-zL-v|GFQ3AMNHxbXF z0-U*2b(d(+LtNhi#}+`FhePCMH2NW6Q%CAQyay8W!rm#9P%kN~23){%45Hbz z+QCNNac~2}&ij^u6f6D#pZL=Q1E2G;bYcH=vi&;FeS=rP0ZR+LXzq2`0#OsvLii6Z z3G!LpOl)OvSp*AadYMIQM_;>xFq0xJXJx`38=0F08}&IQy#PNKwpvWsd+Dl zoYkeVWKf|yJ>2;DL$;q_EWv&?>l_t3oeplojQ7EGA9&n6x$H&XAtc7x!CbU*${z-U z$LR`X8y?jmO~B4jqgg!{Yrko(1 z^$mkokk$A`Qr>wAj-{`W`lh?4ULbYEDyDxbfr}>ga6P}%D~C)&G z%xJ&ufdRN!qp7g*wWX7yHk@u^0d#q$ea=r3&VUjWT^~St;@yJWL_mJr*Th`a`t$pV zWZL~Tr2AV-|JrcdJpiyh-}b4Af|_la*+Q2JCW#ISAtX~Bf~$Ku%2YfK=$Hz98lsRt zOz}aS-?hnTudI($XaF?(T_9;}F79`Ej5w6%Kk&+i_QSV@0hyeJ>}Pu-J6d?lXZxe@ z+J|UC0;MXQ1)KRK=3HjUOa8gOnSXm!^3w`7H%1uf#H;Ob4upkxtMz&i+1r0k^A`-) zEenjK;i&>^8+^v}6Uc9_3=QL!%s<&EhIe&07!%3PTME{1nsx|fgNq?7h-M*1 zZu>0ttXef%M-KpEmhW)wq5+oh9*8e$I)|S>;HH7p$CqUoUnQ!!{5!((k!`gJu$S68 zfVB}SWq$!&#Z({iT@jxz{Y{KGK3nUdN9u`LJyWFA0AwOo$T&0erG4{D&HhsGDVJoP z9~t@eGz8Zr`Z>q_RSso~IJwlhb8FCbs5a z(3n7@*j#U&)iRq5h`3C01ebP2<2BdK@Z3c z&NJ@8EgE5{sLgZ#l}cD8gfi^@l%jo7e^4J%#BPB7TW}IWIK*jB*C?#%!h}^ruKtDu znDRgc{CvrUe2yGs>J1pCL%NQ*-DE{s20)X2A$6!5pkf54X%Kx+jxt27gyEog&yZav z!Oy+b)w|V3Z07cQmZOotqN7{>QUHFu+E@6-H}f8)O*GH(5N{v*RAV@q`R%>t=W52p zO_AzF5q_Ubdouk6jo6MTXugHymHdk^_y3f%Zf{}&I9OEiXo|oRIGLHBO{_y!r&7GU!v zV5x8g=3WZGsFN56dT9JqiyH{p4UfOjT9h2NISAmp=NIVLWEYTy60X7^cS;iHB}4O5 zZ6FU@V1#MjjK8!<^XY)N+J6KwoIkjmett`0x&xj)MCm$?oBMa34c?F>O|r9 zm|bhvWB*r+Q~gwR(@^YOft8XXy;eNAEfnQ^V!?@nUrG($Cw@)=*$fL5 znoTp0KtcV6PzK9mzd6m|}U4AGm1Pb^7zPcv@sK`feTlgOz z(Jf}()xsaJlb_*~_VMhkr`70-qLnTKsKSEANT6ss7iev3TlAyg-aF?%gq}OmCO|+PZGlmz@wxx3$D8MgJ#+v z-nc)3f5X7jSMlHLZ7$dydivmrPsI#e&G14_&X!wv0=Vyo=AgXS$r^VSx?akLfGHWEiUFR&>mV-S6q|4SQ2^HHM*Q zApMbY3#bJnTw}uR{(^spAbEH=pn2jiGP!y%fjv`KmF7e2e>ekt#<-Jr3n9RZosg7* zO6VCkrv#*S2gcSJ83&N*Hn$OZep}=Ppe}C$K49x{^_@WBfVqQTc8R+@Mm`+WS=IRY zr0MQ6Jpj%%1^p?!9+n5T`_)B>^ft4baz^l1bn?9Vqv$(uzW?7CutmSO)@p&R7kEq#pTbbCVoSONj$AV1cq;&i~md;m9w86(t3-f*M` zD_X&lF`!jnlpzSCwCj3R+Aq)kIA6D6Q-mj+tvO(UDcp1o=tg1-n^8ZvQE+6#=4~JT z2d-jpzTfyUGWJX3RDjLHy&o6`;K}RCy5YsO6(FMB03le1sPFSF z#4$o9i7BaY{XH>AaDVCN{u)&*%Ab3euhv5epiaO&j16&EO6($EKWsJ`-*4SGJLv|G ziD(xqb1e*XOZ`>^R3NnEb`jBtBu)k9$skg)j_+KOzCfc`|D?254tROr~x}a-)Lnq zs(w49lfwoOZIvfyNI(LU47;_zOrfB@muV{q{8WhfMKDH&F7K}cP}EZ9E@nt@{#tn0 z*ghwnUj4y~^qTK_-B!S)>{$1kn)6m%5}GV|%x_Potw9GXDCX zSi+*vMbp#z%{cR}ElH^tQH5x2ceDW0%SuZNZd=$^8^AWH1cn#&4EcZ8KPtiZ#Y}tt zCyUc-HSdtfGN65fy`Xc)@gev&7&be8`82Q4e@hR-L{1C2ad@Lb;R@)yNA!u{d=e$Z zw?3@$g#7Q?JUL@eY$DlD7zsdl5r(^up)EP+GEWsgBc$<0)jw3x3G-$Pha~H;;@*-WyenPmV;9Z3v7g}_b_GZ<0BwQ+%cY!ez8?n zZ;YX}Ct#(oQY}P=lROHJr2B6Svv-Ij)#pXrEZ7Tw{{SO({igdT`5eGdoks+k^MNrE zHDfnWHO1z8l+!K^K=f;Z@jvsL?R5^FPG1hEo$v%>CO}Oa4D{-OqLG?-=+4nP!DXxG zzcL^E;AcAcHB2bPq7cGl5UPNZe%si?_oMmzT_H~By-XAHXHUSMJZ+92+#43(jodVf z#Hr%!pi*@h-i!L=!>)U89Qq7$NtKru(4&r`*&O&AeWtq0K5-dW>W44#bBH0P)lyL_ z5|^&vjfQW2q@&be$3T)fZdLamR{qDooa`OP+*)rGq(j9BeIOy}4R)JjAL}msDy#{} z^T!~$3bFDZWbtz_s>~7)I%y7q{j>=@7llO!X1M=o5Ym8LXvXl1|4A#1Q@s9}zi% zE@cZL*)?aTL%YaD5C8KgAIR4AUlJ%vm0C0D$iX1CX@$OM`)$vmO#i#zUZ$!5OCNIl z-{^g}I`E&bmzfYcoUGy~bcSKnUB0ayTD3R2rx5j&+iAt&qvrpEA@TwgWOUy4i zc-@}tIgA}W9KT-%lw+5E6Kq8_D8k!F$WQ_})Djm7icc3de@$0DxnGYvJXCniXwrS3 zjdVQBw4_I0-sT!$KG_H zs{HI~I$@mkxdD2Bb2Es&=wKYZe6L&K@&LRSfD>C{VtBa{2~=3Q(fbv_pT)AzZ~Lbw zwxuZ40Z5+0$le3?snlr7_z2mnO$!g?ks~M3GGlo$lcebw5L7qaxYaH8ez zN4X{M8%z^uSn>5~cg{Tw;y19OhQugiB%}iLo0ifjF3uz{_o@WBKAY&D075_#CFsd%hIDXUisBzHS6(BFjFE!_&VRAJS z8}cIfGb$QWrrv~^%uCIRGB440rN62FP|X7jo@d~wGF;R|D8zS#CmodFuAd`F5d&s6 zWOj4zdU}G}#&sVsWwP+uHBueUKOdFEbDmy-C_s4E%z-jQAI-EQ+gC%rR19%`-CFkS zhYgOmpnHW_7QY_ghM>|bwDS(FZ4j3?kMCADP+Wpe)(4Kc(HOu`7GNRNDT$|kLz~4k zz-M@U07zj2VQidW(s#Y`Ki5F_+-`pgquhN8O^%M=QF#A9-wdoLh>E80e2`)6!DZ<}p zE2B5z27oqZK;Iey#YvTWxd0C1b@jOZzNh5DUS~2hey2CJ$Y~ z&B2+(rJ(*|sHMSTI)R^DT{KekEhO+!0Y4F5(mgD^jCsa@KCeN9RE^uKZ8#hEML4YP_Vut!owtAKP@P5LN`>%l%3S{H9q=zO(;hIF15x24+#x25bsTF|RPV1w0e@z@nddJ|=ely8OZp;h)j3 zOSi{jX{_YD(u7yuJcWCbF{WwA8I)`QdA2a$Kk~t?a@zh%3q~innGBEDDgKHzqcsNH zniY{y;g@VYJo6HO;3cEGPzQIqxV=>}ls0VYRrHbuk2xw6Gf!6Geh&Fhg)`cBMI7*O zd_u$mC_@`i1!A;IoQ30uA_3C}|2b4BIr^wC!v}@w-4(Z{*r1&oHExAoZdSt#4`aEt z7rtsJ01G=~DFY12@XqY z7n`00!73Vf7(7BZQ*u&vwZN_K3ptKp(;c{nOJWV%T`e-52P0ro;0V0sowZ3IPSATqREomAhh(LLE`O zKHlposi4fFwd9V;e6GO9;YQa4k6TMe+R+n=V9FC3@*3WA!QH3FbxhiNY+_3TkH`AyNE3b3jaHF_Gdh9DZUZssGlcK+(D-_YL}+P!Ir#ny z`GI^&h;zd++j9New2}C7P3IysQ2_Y&`imJ1RaYvCB z&74GxBgT>Iq?zA_n_WBZzPAM5_r7aA&u73QgFgWk{=w%j&x6}{wm9S9G#{IFP8!WU zzr*wTK@syfe!sNrcoNy+t&jttmt2~!2eux~6G3}fNNgwY-nzAHBe~WaY@q%!9o1v> zO3O5-#8i%<#-akdP>A_H!W!obS3GPH%Jdxr{cK1g9n1sVWBjs{oF)oJ2iHDkYAEcx^7Z+RbwnVV zn~>KWqlfJhd=7n_;ZXZ`AdqJqKXOsyV{MiAC;)UMnviN`ozMEkUArhi-ifc#m$h-E zMLqG-cMLA{J=mdNos`{iW%hR1UHMk}CPh6KP@$NOXhv|umb<;lsNu5|R%q-oU+tpg zg9`Ye!JaX+tG{fMi>J}*BhK=sz6R9eg25hCS7FzV^*aVi5=+@;5N!l zIR{z(*EA~YsZF=E1(_dVSigJHS72{(I(ARtDT+-=$jTI>L|Z^&nRqv=ecLPO=2 z@l<%1<{xg39|s$#)s$KHG`n~(-$Wx`*5-oNZx`7vjw`56ZuJUH&J zI1Pt5W+ALSfOXRS*GYPv${ zmhZ-Cuf2ZM?kc91(;jyZB3L^fqrY%cFS3?uEe&ve|J{8i}>k|p|WffNUt z0rPfz;RgSHjnBmpZK}x5S1$s?4WX4+J2wVir84xnEVad{)ZOo=_XR0Q(cT!jCSayb zy>sdy!Vg5?@J#0dUmHUI+Rl~DN)`t*nUp};nSDZ-vdEAJN6K%8G+z%MT%@i4+ zNy=X;{<)oGOOiQ{a4*@bS<(xDr?)Zonc+AD!I0Cx%gq}a^+_G@FM0h6(lR?MOu_2< z%~x^@mv?HP-dFKRy+2QmF;y2`iorf9^Bi5z`%cjQd^pzQ8iSe8xRYmUXl{e&TXRH{ z!frlq3MJ6BwR>9NfB6ZYJ65XX0;c}grTD5pR(Qwe9jN2X#Ij_ z_&HgDB4u)4i`DB3hH&`A==;am?0SOti820mdB7a~OE#7W-PK-YAk9VH?gob2;70Oe zGNI@&2VdbPg*_VN9=@JacOPaVyXPlJx2fZ~))XuqpG`W5Wi{+Cn9hG~#S)C-x9fh- z$QX{;Z=;}%)Aas04i~vku_;yj;`~>B=d6??D!yo!qs(qEt;V8Yt7T#+AI}G0GgyKU zOOO%4RGW{PO(oWrpj4ap$@-js5hgQAv7yE#?`0FTivg1IPxGXoO5$54sLf{gOx1mR zh5!qCnx@-7%wlSUwnjik`!n;zpv86#N$HM9vX;eTp?Mi1-_1U4Z^D93WLsaJ9d>?~ z<+8h7^o6djh-hplpXGo48O+q=Aw2BSaps>5w7+Z0ri3 zUQ?I4z)F4R@J3TAiNE~&B(dQML+9vJS1w8-$}gRBe}eb%zMX3R$Q(aO{rou0JE}L+ znUotK#V_*l#~MTP-plGPJnlSct>DT#iwAyqr6=1>Zy@NM8*{VX4^ShHBcFUh{mSBR zqxxD;I)RM$f;)H^HmqQ1opZI?+SP z=vy8cUq<{_mA|F2w|6TW<~gvan>>nB{WAzGR7Q!x?&>Fs{ry$T1(>iTEyIL>ME~Wf z9OI4tHgLLn=xY`<4TRX-x}(QX9-zhpU{mmr7#Jax_95nYn4mzE-v31HMaT4oSK__B z^mTA$|8>)qy}Hk#S49*tHv?mB~ zfGB?V(c|LsRD+A+?ecuv^S$mALUOasaD!O-4IbkR ze1kDG>ir@b_eXI9G(vz0=fTErd)c?f2}=vz+Ct^l%$x`*<)cj8zmW5&q}uoLbPA*7 zeZ8WHeb^$m4Gi-Gut%NVrE~~`IPd2R4?ZFt7P0@jHeFPg$zxERuGmms7NlXl{>=G2 z+K=nD8*vQTH9IF-V+iHWStOPhEF$hGf?e>nuagxxD+(3x2&aV!Fro zmT)DO|F-rf$wAe*?9nA=TOdBM0_eXyC^cq4%x0S)VWjBDFUL000WgmR=cfXEh zx?ElM&iWVTzTc~xbX)Qreuph=u!01uPbj&9Mcy1F2fgWd;d<$#R?KQ3cp;h+m?c(m z`0+RW1wN*MvOM6VvxG~=U-|PCRC7&rkfaCSiV}NrZBN!R$WyV`DgF2abOQFkFTzPG z#I1v6fL$lE*PQ<2B}m!V4`xXhX2Dyi=ut1xYMGU}V^{djsQp~8PL(rN?%?Rt{dG2C z@TswjikUE&f-~0)A1LF%yR<7qf$uQ?UVD!c#P=;fJHWlq>8Un52Cpn~?)>^FN{ZBmxFP8hCm1h$NAAM2y1$zav8KN z`|B-%%+deBC8{@v)?xT6C{*ouTnozA(uWn0&yxn6#s*v-=ai-|wAFhfM_nk9br1A1 z8{C3AY|>P`J~MOLjj7=_JD6JB_9KX9a;)}&?!dW$tE7^Q+qG;Srb2v9RLabQ7xcY|OlK z2qV}WNGTj)AHtK1az~AH2L}SZs2-QTfJ0~jesdiRdj$4B^sP5up!$&WjC z{$Ms)kB#m9XRX_1eC_|aaZezRDFKXX8>d1iARP@~k%&4wz>sl%9@Q|Pmy^cYXE@aq z{JcAWTJEtu?{I@*m1|x1;gzSqJYe_G1Hqv3<8vk2^{eT42KyJ2__(|6%b zEFP!=^)sG)072l-)YJ3c>gEY2L>8UlA)3}4b#kq=|27gT=hNicTQ9y3s|E}(eSdOi zRLLI^hqk`F9-!ym>mqL0m>9ik=~EHG>wIwOZK^Ps6Yk6J1s!GiyaXpisV<6Vwa?;O z^2IKcsgqBT=x;_k4};!=JpxDc>%2$~#XU%je=TP}Mdfu*+bcc;e)??P=vvEb~#)@z(zG2xnY~O1mszv}K}o8|2(WCn6EP0VsVDc>l_!@_y)ZjzJJS5;+*xtjcXc2ywf9W7oU=D^;YVLy zLEr>r_kDl*yF$b5b?r3V!^bl|DI&M%7wQAHal#0(SZETUFj~xB zI|4nd*Ad6udH$dr-~O#d7_L{@2w&9>`vmljq{J4ctPhgv0yoYHN6I-KukdfB2xo40 z>il{GH?>s6Jr~*#Sh^!-ySWJ=`j7)<^UwTKs+7w`c8_EsO&_Iifg4=WoLye}NlL;7 z?xWYtkwm8Aub!{X&l&QFK698sarVhkp4YTpKl)_%5U3SolL5MOovrxz0p?KgrrnKx zc;fSBcf5IPj%`b`dxb#?gFTA-2 zLJL{~{#0nMOR;T>v`^G!f*vZ0At+IA%)QDaJD%F(9^kn|aon?sYep~ZbsAw@Trg6O z8|Fto*m8TapW`XJcinqG*a25)TX_S=2|we)8t&xxYaq7vD$V|Ri@1JW124~~0&|1iL!sE+4?3A?SlQ+Oy}0DQSf z@g=_W^`7zFS`wbLTwx1l_;4bi>itpK8EaJ#RwdskHrgaM#626Ee|Vscu@61uDv`eL4#QbfurnHeIsJ{7c1v&v`>26{j;4A*F|_ePLKV zu^fN(PP@CIxq&SC$$n^OBj|jpZ5Tk-e%LVjdytRg`7t9tOnJriFD(1Yw{Ayf+$R~6 z&fOV_nxa1ilrr}2F!F9*aJ4%h*>DGu#MrBkbNYh3L2#T1@UL^++?d}$ZUAf^MZ_|2 zUTk<6Ypmak3e_6Oh-FR}{!R(97bCEJg6`po{L1IeYUb|GRK?}1BeA3q7O-m1i+aHi zdSHS;LtFH=SD!Ni4ehESKuE0TpJZK*`iNqLecHu}C{>^t!3QWDv!Ap3=C7v6PfP&= zBkwkYvl^qOdPlwZ+_{2`r1sgrlj{v3F-(@vlzjh_Snwp5n!?4B0ok)W%>oUh?@gN}a`HmZ zO3U}TDcJNfq}H13z=PK_yaJ}*dw0#fIr}qz=4a*HV25VB&K%}szk>znz={-aRCRdJf9j4mzf(DIlJ5WR1yg|`p#U_ zJzu;FcsExHRZMlePB=?MZx|HfY=IX zcH8o3zQhE9cEDk^Vz?&<|2Dgj2 zjvpqif}ARkmgw!_Vn^)quP_h0{PPRV^2NO;BRK7>AL~_nrI0TswIKtOAUePu^mq&% z>e%@9mJlHq?C)JWG_f_~?UVePt5+%XeH30h=(bvbXkvJtv~mvaor1~J;@kE!xb+b6 z@Kb-Z$3^0qG#a8mVC!9hk-qKcs^Y-`bzq|#G_(@mdtgpo>5<&!{f{IT@xS}=)4kyE z8rV1ne<%>u@UuS^y0>oVBDcPu_7_=so7N9nuFnCQ32M&+;0#9|03`nA#Xlo}Vq4iY z!KAUTUG3NYXR2n1)j6Em>jjZSS9ox^tnNFC{6X3vR zB%-KM09hH=t9)_EmGeo7mgMwvF4^7O?~}mVgkN;E(oFi>9`ZeM9vjlR5w;S;^Ze=> zO*n+&E%o>lD&zi#SUjT(^z*bX=zrW&iOI}27)V-=X~xG%kXD!90F1SE0(3joSTkX4l6X zKtfd%7U2K;YUA)lh3Df@@B3Opb{n;vc6ubW zhkkra^1~&xh^Q({Xr#Q5eFN0>&Bw?kWZZw|I;A8JyoRlrKY-`Wka*g<{;2;I`JxOx z1fZ5iH2KuiCUmYjJZ(VhcUv^u#`&qDlFSykuwqJraFJ&^hc|FBOL{|n@-WXLxmTx+ z8L)FFH}&FQmwqAjL#zdNA_o6C!)SV161zUaw2P~L!Mv(td0?#;$Zzf(DQNH@18z6s z3pY~wY>>>g0S!itE@)=qE)B|o#BDN`%-K=eb~lT(P{L?oN5?_(`gq>RmQkD6is}A? zp%sff2$-PkFl@RJLGYJ)4NGp#={H$-P_oQgUV+Fo$?Hp+xnD5)<^y5d$yd#=hX$>zmY^t`Q$>jt>m{ z2G>BvvOp~3`3nlH&^6-0?6iI;3=_d5a>HA<*}1JH71df(09zk=mri-i5sp$G2^6-jA4Nao4`o z7v+#&-ULA@;=e1CPL=FWI9hAJ`SN0Tskys#1p&|C@S*)gw%+@zshr!I$7@C`G8T!D zQ12%Lp&+-ur(w9w)QiJux0-IJ>-4eKOzN}e(I!t8knaa~A;i4Aw$JP_`9d&jqv-@{z=)KDw_qy))u~~EBMQEhGW&G@}GN6t*z>#k)N## zr70ZuQQ|b6vL0Uu+bY+TsL+EwbP>3(HgPz8I}0LE8PB*8T-a%0o#V9fRDA|a#l847 z&bhz9#D|mB)@K{Ui=1$l(ucYMv+U#6yO}Vo?cc+k(zAO2uYGl#cG(|7f&TQ~Mt5It z|0^d892HlU&@6Wl5Dh%%)znKqQi|DgE$D5Xw zZprS&HHT~cJb%vbF}~~$-L>v(h2A z_Ld)_V&N9E#RpDp&}Ss3?3!=Q*lrRY?89yf5H`-5q+`N%?M>xZJo+nQvd4Wgt7~$W zQNo^nSjTg)B37s1acE9}(>^O{{A1O2)~N7KzT)lkhPtiD)lB0fP@~v?u(y+Q ztuNa>v_2R$Q^(%szP2~hf7cOOye%9#%FzH9#)Wn-edBT4KLTOw_NV&z`X(7|+MxiT z3l?NhR|5?9Knpp>f4Zf3nZHp8W>=r_iQ7hGIn((}$0xqd@+;GSPPkmZ$^-YN-P zsnhz0AOrWebRF9K%t5agdf%4tMn*Jf@H_0)$r{_0aK9s;{B4~SfC`GRcDHAEY?yZR zjSC+fuAu-nK>PYtDfI3E0awL%BSl7Ga)3mLG1e+lE{O_3>KrbC?cU!PeKBE##avf6 z%fEN9oEy(f<7=p&8&~9NaP&{nRi( zx=Z!j)5$OubOR~5qtgWohO3ebKWG@%BHfu+?%9b~LANvLG-d}|vz=o&AUE7cR#*G$ zT$(qyhQGVi*CzYkc&G7v&bO|d?da?7gm+^#%Guq7Va(I9$rpw(JvICTc62J0)H3JS zCm(@oB=&`#WG9M$Gilxm7E%J-p#IPWzW4gz)?f5JApw*_D2S7e zI8KT0xO`+@sv9pLd%4GHUlwO;JBaSs?w>SVLn4wb8F_Ft>-5LncE&2SWIX~W6kqcj zo!a)|HvQpoaQ45exeSi;_(FbOB`*|T`Se+!nIR4W(IIT>QVH4u?KBTZe&?jj-P)o2 zu{|vL4sej|V?mltNG#{-57|QombAPqAD^J)IWWBf`S0TWz~|N!0L_PUdwaA;>|u~3 z@b@>;5bx*&G5fKv0vgp<2|GgN!tjOAHka1c>a3T`QKyFEYUH$N=Q#^?W@TlATfY8AG&V~pCN*)}gXWe5( zl-N#R!HrJ*<;*#hR@dy*UK(J~F)y;W+jV38eNF1Prb`QP=!rWXvae*Pb1N_u#ZFHT z#jWF{>E3dKIo{4IsvwTfVxIT+=Far65Rg7Kb zM?}K0Ca_-g677L%&_3N6Uuk!3`vLq&o=uCgr8h_WvG0Cfo+x^Xa6XcrrBuiG z#!}V1qi$bzxqiL-F3xm=c^#@EK}N(mTV=PvInTfQ^yH=Xp+XpzVGm$F?(qF$lt6{L z&v~SBs@9}2Rev{rWIpoyp&sl7n@`YtPT!wzLDg`-*@yJALeKi$4zD87pV;e}6Ac}W z*?lRqz`VrWpEj4usL{^G`eSI+&q`;S#$|b>U#W=X#8PZ zEv`E-TrGAlltzoVXUR+V3B`urS;wK7mb>`ed&9T&6r}gS-Ma}^xV5Zj?r>Ln4u;+x z{v_)h9F-MufzOXxiQf_ZRW9-2>7kQHC$UbC$ItH~MP##b$4@NQIQ7aa4i#4fl8|dd zi}T3h_tIr2B1B0|jDRd*92Zlm;ES*Rp>CDFzN&eWG|albNW*??>Y3L)Bq^*vqov7j zD?#OF9}*1v7n_eQVKyyOfSM1T*!>ggMQGt*5_8efkIX?r4$15m!GE;wwWG%>Lz>dooS|^ijEAND;G2n`Qe5PvH1B*sHZi`#dJl5#?^FwI zAOqWAId4R}OSq?F>0AsvIMxH1z`QX@5>ugcAVW2<*TTDODlfIdgTe7PJ zeXiF&Q6lOwx&N6bZ(qHj5xSr@AB9KYF37*6%s5AqDNa-F5@ZW=*NL6aJ6AzHu;izJ zL_|4B{r=v@)9@a{+&&-K7eqI!=&(|cvx$fDU}HlkcMU$5*S0$3nO|l|&i*-|T$TH2XP0^aR|AHzam;GS)Vdq3 z!wMECVHQ_oULgR#^AixpG(LM5(m34gJa05hI_*N86mQ@dJ}8rs>3I6&kYgl%4Lr@^ z73~>H{)Vyg^g7AZ47zKmztHR}$J1e$wHugrhvq7x4 zatBeIf3`tG!`3A!r*c)7uP>`!M0%rq|L#zEM4}XWkv$zU7BzERvVRYI_gkOf6zreh z6(j(8z24%0R?fTduj;hE(;t;t?zRuCEd;wP&o*O6vQEI6z0AsQX>Cggqt9^Fq)^n< zqxJq8Mn-3^$6@WI%n7NU&KW0*#nrj%wf!NXCBF5}aq!Nj$3;OGaA>h>@EkK0#_Lba zGxn!-Jzey_V!G&CA%E}_s;G6Jo$U$8`}x4Ls_9<8jvLnI1#{+r){;3sKIPJI9tn*; zfJY`&b$IU{UWIb#bU!|NdI=*uTyvDHqDH(8X!4rRnb2>qu@haA6L~nBiHb$&Qd80( zuf;!Aq5_9IrEv5f4^aC)D2x>E!pH5>N`kLjud4bQzknv%^+=*K*Dz5DSRrr1%#;FB zfBe=YFw^(P^dojCpqawHuq;RplJenai^u5PC&g|EE3c_A((CtaYXF)ZzT-VP!awkl zF2Qsy#Xv`@VQftI%Lt47xo68HY8j_wUYjE+cE<$&YKC7#Ab3@>eP7w_Iu|qLA+ag; zbq;sgi!bPyI)?rpnQAeATkZa!VKsOSwC;4tiOy7j6y_7MhEp?v0eEqzzpR0Wr@Tak9Y1r zBSG_w{fP@}13eMam#0$g6IW$4?O;oJUI*nId4F#?p>8tnoX6sXKjzimhZjP4?8Cn-gs){+?(JyxZ4jr<3j%Zj%0BNWcJXk$4IT0pn0J zm!&y7`v)Ti94V+n6HuqygEyr|r4l#E3fEg8qqFIX>TK)n?RhYJ*u&T`VJ-vjo|=|$ zFy(q{5++xrRm*Pa4-~p(J4smnHXiFF%y|?!Wv>LZFCH10NWwmi=ffyc3tR%`%?Tx* z2y@U@viv(_MQEuzF9<&T;6l~uPI^NPI^ZK$ScgyB$Xml6--UB`Jx@pB@vpa;$*%|h zIFy4#seL0M;CIi!)zJPxS~EWUdpJG;{=aF|2K+;XE7iWr7Zq2_v^_uNy-9T+%2q*b z%7RZH$5!4B!p@YDM2rvbQ@42QB(ktdNM$*-C$m&v42atb-R@hfJXv34v}Li(L;+)m*#oPdhA;^q&;rAc{eWYVm&38d8!5X zlFgNyuDL^yFr&#oor~64H&0L09oMb*b$}dY_VXfqpSOeQy^bMhJ=5@#j_&MXwCpI- zo?Nr{pK`DPGZ!=JOhvofTxM;*UyZ{Qx|ip9r^H;k4ph!kV$1Hm`4*^UFa8c7$+~v-_f7r`PdKtULWjJD+NJGsmm* z#z^J51B#6+e!V|&!3kkwpgygt3tCYLnF}2~7S3(qiYl=Z@c+K6Gr8=Tg~#@MD6FsO zgijy{MHA6-^oES@uXziO^dLAkSAy#iq9_Q|7w!^(+}#^jWczXFLHc1Xude`6$NN6p@n5DyrR_pbOKYC%H=ZDy zLZED{g8??KbxG${ij2(=ydIvKg}O`ZQM~K^Jm%Yb1pNu8>|BAVu|k0v%)SsX%dXW1 zSs6e!z;SQ`jCuEP&Vcq}@6l|4UvO6>L;=f`Aifaa(XWm|p`c#BfqJ(jHC9|Y-l1%J zGK7c*kikzi0I#H~X#EwJ(0{P>6zeOav5AD_sZ0na?z zp9skhANb@)D_J^$?bp687^OOhjUc;%El)lVQIIOgCaDCFQ~q|41u}|$H!`iCiHmep z8UG$~dk2)BFMIgn(y`5F@TVr?)p~_jRF_MB#+~D1k$2`HDAM!LPpIG^n>*)7@OS|~ zU4VA@5{#!s7fZBh#SJ|PB0gn{nXl? z4eaPWQ@ZvObH9}u`a!!iv{<7(z`Sk^HW?RlN-hs`7>HA94OS!=x8U)rJ3I7#CS!a7 zeE-{JV5Q=XbVDk>oF7RWZ?!X6FhmmE;b}!*^T1Q*gWeZZxQDJ=ePPec9&OaEj-F9rJ7r)4xb- z_ke+c0GQ6gBhnc%D@Ex9&NInA&E?2RM@L0BHkBmy;BUSyZWuMH+jhVc@I=t|8!T0y z0&r=LpBb=6+e@0KyTwW3ai`*TO~4I$cpZ17ahm6ZPzMa?#^=Akga_~ZNxE=8e3Hxk z9i_j|r}l$pT}kUMujMyZlvnn;5`@zm-TWR@m$4u0Y2vTKx!?pSWgXKMYX#P)0g1;$ zt)5HBzce8{n$q?&9Dmv05S=yzyYgTs#Ae^1h=A0>^CvS-rLFmY?r&302N+Zjx31*( z_Y)eEH>jk|ht!;h7RvKk*`+~1u!o)6u%GKwBd)~6;F<7zjNSFAei5jt8=|08|B&)n z3OF>sMuu|qC#5|I=(n~tV;+h0og5hP1xGLq`HsIEh)^c}$G_iBTJOd(ut2E#*mFtw z??#`Hd*J7Xu#3LL{6f~MBaKr3&;PFe`|RwpY?zK*Z=*0K6>Im z|M{Q)^}qglkzCWDdd-*B-awIin+~W>s6uJa^d^od!QZztQ+a7DH|x!jlMhU}S^;9# z56ugPz>DuGv0LNj-5yng;&u#D?YWbAE`B>e7@o%ii<%$kYDb|QPT;aeG9O`cXn&cO z9{w*|a ztwmS7G7{yEg48dF8ck96%yr;=W?t6(K?^A-5vlYDd&?7w>#O!gvRpX@fQgt$H zY8!_vj>sSO#8KEE(`4v>+`ZL>#+7j6SHWSJIy<+uN5}7f;GKQ{-1qmn8e!DdJiXF- z2;~K3(cC@?ekBcHCqAVtMW%cMz|y&W+AVF9C^yC`Qq3kj&BJMlYcQd!M|LjW&s6z*x>hq?^dtU$dXdX1qLUCvk3U+-Yo$G5 z7k9p*qwYWD`^`ER7vyrR^F!Hrq&=RNBiulDYhAs^y4!pZ%z9258YBvG9h>;x$E$Fp zp@M%b0(2PKLNwOxd%7G?V`+{Hk`gYqN^=L8WB;dz*lSTpweTHx>2|lDAB@iPD~L}> z@_xtzgI*$wr1+!gD@Vq^7?ffm3tJ`nyynP^v{w+vp?ajD;`-W5;ey+DIj{~SXBh#e zGk@>i+nspq9I>33m&ERrWKs6Zk0cuVeE+L&HvM6% zoe&qgrIKWV|2iB00QrFwK)M*%lAy<2i!UQ%S>e*mB62WWl*jjizqW0hMfbVpPt9aG->E|2XXFCrz_LyCT>F8#%Z1FX4 z4VhC_&To;{?1_JUfxQhIh0POh?=&&s$oogrJCuc@Rtf%<{W(CN&R68%@q34pYQkMa zxx8m6;K<*d2)x}N3O3>Dr#A8lZ+`?HCC&9KRS_v=lljGb`+=v&k4c3`wBt|xfp1v0 zq3Q$y`n^MnA2&)>i3neGGqmi9JC(zQ$F3KE+}HTo-@eza}0& zot8@5@GsaqF;j`oJ-2~Yq)UEMWS`N)9*!6v35?_DY?;!(26ubFBqzwYH<{c=%nZ-$ z30-wPuh*x78cWSB&EmCwmFwtZf@XxH>nv}}!*TmCmrDDfiN3dxRuAMg_SWMCtzGX= zD#P^N%18MmyQiq`o@R5E=V<>S3|N2Y5ApwRfF6U3H8*)aiFJKGmYTTRN6M~c_{1|# z&7sEz4c*-W!VRVA({wb5Mzl8jL4@n5B5A--fzJJa$eO;}%ZM`b(BL91SeCTc*TJIDBBU9TYzLpO0XeppB&mSRjpju3ky!zp` zP^;XXqx|ACcfY%Ic91}-oO-(M{5jjc&yji_2)bnb@Z~W$-0X4s&*Zhe zDf=dPO`I8C6^$+8=zU97`o1& z8RMj$IU`a8H~~fy7@x36K5Y&Z>9ZU%igvYqx15Y4yZan*J98GldYe!KwP?arydeqg zExT z?-)V4;sZ*cmxmbT0Op~J2L!R|$k`*j@zMAB-;TBG*|#k9QC~1a?^2x7UpG{O0ukz@ zJ^TsBo&&`uvBl#e*CuKiOs`}swhc=lx$j#0T)_8OWAdz1{%<3CIz%fQ$_zQ*>ZIpMLCM-_5>bN$_)$P-65gdPI{3%E5AH0a=)EeWX9C3bSp2w*kkgtlbNHDG7z! z>o$_7tgl$c!H5J6`!>vP3(Zutt>yU9I zu+Z(+1P9&2*9bEuJpajn6g7>`A+-%v9s9VP2pE{EtCnbNU%!6Bd{qzDAxP=q04%rv zehKdM?e@MHV)xgq^X_d_?~x8rkp^*CL@Z(feQUbeE54tYcJ!u3F-q=wpTzG!Z0_9$ z;E6R9Zgcj#{ZR$s7_Xa*ax792P0Ym`D?){%J5La)*^fXUaUwh%La#F?e}b0d7d{Qm zH$qGPzPis|IQ;zBf38SWmk~FpF|mjOo_KUxxLY~Chsw<^{7O75 zby-s$EQWX;y}{ykgyfXx;o zp?!*;u^G(ZTsVRb;=i-VN<_fl-_h%{%K?HiHT;z21JFD$e3VO0jkyPE$a4Le5jG4z-T)MQSEu z%NESdDZND}{N#GX*pPMG_|ObW)vwMQ@hnLgV5JftR$CkP@qD{Okp$D=pIqagAm!*t zs=Du@{S0){uNKB{JC!B=z`SUY-fC2ZLUe6(g8Q!LG0z<)6}Vud8}ugtE0o4Pjj2W>AtoxvaGLRDl* zgShF2I8^~ht?)EHzt8C68m)|&IQoj0s{CRDh3PT1$1YbjnIKPA>%u$QE4v!{ZXshu zTl{(^YkeWwgX}sEeg$4*K2B6f?)ZYE`twQ^4AqyuCz<8%aZ_#IE*Q*O3u>+S7%xGc zdK_&dc<>%x@soPc7+ImAZiG&$YYe2NePa9DUu5yLVHvz^BB_8q60)S#ah)<=uLH@T zdgBNVNPti$oa@{BDF1R1*5%jGRS-+qauGrjq#FbuQHAGLfV_<8#ZkGCnk)L07@8))ljcpv>; zzZG@xA&A6haa}}7_6m%^##~ngLH_Ja)z1fN95v>VW=tx(pOqA1{^()ngc<;e1NV__ zyzs*UFW+GW{}wF%pqbWG2Y=D<<+BF=xNF^6Rkg9t!;^a$n{zp~33Dpr^ZYxu#^ABl$@F(qHJwhcQAw_!950++KKb@)-+!bE$8O^`Ne;_Oy1nfRu;3dKaOJ$Cl+c1Yj$+M*$Xa>Qo1JSTYY1Enqe{{5SaM7FyaUgHip`qUedehTJ?IDP_FyGc}_tFqo-#!pswfn!* zD>`>STX|g3ZoF^Di{$g3`C7}Sjq?Zf%U;{4@@IJv-6Ur&U8c7KM_0(>MLb?>>hZI% z5gHCgGR9^!tCE^rZD8(gFon3fPw%Ts9$u?F?#-vO-rMW|0>}L(?TiEK1b$^M&PG-rb)uNqQZ);Gjw$ z3Xo4uM+AmrN}SLR3x3`C5&S5>F(TgXKb)Z_oESH;W8J66dOYroOq)!H%fivQ;N zjS*^~JVIY7!p?`;|4r5IqehQ?SuX33Do{jg_SAW)yC`;3sg>|}3dgdph zQ-TeKA$*&pu*!_-e<<^mSSI#^&-${y%Rd$9g1~ol)yPO!4a&|W4&B#Iq*K-3j@lU{ z<7+<&i7Jd3*7c@H?$M*d?F0Z%ouE0uii!RpF z2HOa-#&%DHBjCCXy5YoE;Yd)gzX>sb)h_yywM6II{jBDR)6(DOF1&9 zcO?Mq({12wI64>~=~ZJ(Gql}A`ATc>qq;8bVV97ur^QZE0MR1-o*#=>^#5^mW=pEF zX%@bcz5*%&Wabc*NkJ3^g)>10kwNAmq9ZS(uc+^<*Y2p3iu(V^+B-9a?|a|1o@dxy zXGCNOb$Yz7sx8Ig+z?p${O)hKJW5erBN8jTWIA^1h5hj*f%a5QprAGHnBUGNmUT#! zVg9zrkR1jFZ2zlt;90xa_m4~Pz;TwD;$rz})S)Y#;4&%I;eHCv?%)vP^vQ7cE-<)U z74HDR+?9-GslP!?F~k@C?`!9N_9oTex?F<`fSBDgT)bS<(94v+b#>bn0Z%fRZcT^h zAcpUbw)mq;#4BTh5*Q`)>)dR^qe$wY*P#L3DLn ze{4lYn|ZE^C??At>dK&p+6*>h*}*9f=Ao_PDIr{yd>P%#dle8Y(0OuyM8=bP88k&s zP=aF=tidJ!zNh8ZgL?6D3ZBc-@9*Ptc=tpT2A@Sh?HKm|!<7i_bVd3`Q^Mv{R+^^` zj7VZlM*4ZY$07Md%Zz4i5{ME1NQC|pM$B zCt=h}e}{(J89@VlbU{$PH{UJ>=BcrDW4H_qR0|V=IIk(JF;pZcv5Bsxsl7}%E9lL@g#zC?5_A{$4>T7EqGcl zV|;(7zO7#TMsEB4F1WeR`NRDRaZ@Yw-@lulvdbtQtFm(QOHe#2LredRZPVU)!8h_E z#J!eLPt%s%h3bR-sO%4GcWXVC)3b2-l^Lo2^Ad6vFyhkqIU;5VnUr~Wsknkz$qlEd ztL;RpU<6|ZXsmh&GWDCTD8S~SqG`@+Tq|)ydXd5GDz!i;dh1o|0~bRgQV zrOY&GF`|Kznay%?L%Uy;g}2wpyr^Fl;A$2gK+p^zg+yRI!S3=>e42bX!n*EXr3A;u|^NgsURJ(@n<+=pojl*on628B%l;xKr{IbDbpk2wGOhr*6 zj}6M+zY6|?D$BWx&T5$omE=&T5{F4yh`tSz<^2b9PvQe@jHw< zuZYR<_VY!Q+fER}`-7Ir8l}knhtPy>$Nu%~XW2bjF`zRa(}Zz)784CVT=S@A=t2MO zF!i;$L1MdALyKWhcB5waBXM4pYlM@uJ>dy9^{QtDXVLxUgS7$KT7%T zv0iHpFXA^<$B*IxC?)gy(hr#?|2o~VuNg1($F~9{YcT0G@7<>p-klg;zGS6;k?TiA z4Eq!Ox@Xen4^;>E>UVAePcoLam(87p%h_=k_<1RMi5Wv8%30d|WD{lu>+qE@o+4i5 z*rw>%3}0;K%l;CLnezAYcbsqO87$$~ArOOn3i`YCJ*J0Srv*Fr^zAF<;DcP+665zf zunTqWuM6NB3V7}Miy4ucL883V8fY3X{F8f>xr$K7pjv@#E7@l8+T{bR$elCyUekYZ zQJegKi{zDmZ#RPc!x+16$QN>jX^t+-yXTZ(JWtt0MgxH2g5BF9r8jn=7|=!Z=ef)H z`<8V$KkR@fgYXjf?4-!vC=o(?PM;e+%dVG>YiOdyo9MbDycm48u+jto_sMXi1Q_6% zZxE56eii;sCKM*S(z|(QVmd#Oh!}<&8Qx1E!Gdq;ihRp1T1XIE4#yJA{p&qoslfBTJg_bGz|HLMBdOi)=j8hY zOwEBhS|>2!FgcMEFa7ELHt=NfsrR)bzxGe}cz@TjcW@GB!_v)u8Vhbg7x$W)iDaWxxfE78~6Jsfs^wRhNMIYXI_jn zCg&!k?9c9(b|Mhwn-hOZHGBK+4k&MZfbpT!VCTy@#oYSYkgjnN4KlX;7gU!x==A!V zc>KuyW?fAXlZEIXW2QRhw~H^!!c|AY8=e`iwZO6voksK*kGG_zml7Xh5p@h)6neC? zUuEekWNhbW#S#6NLn>3UTV8L)U?_&QH@(aK_xb?#X}ZB(fs8hH8|bHCU={fEp#?Ep zOU(1*wEU6O&-hbJ>np&ka()yhl@kA07NJlX^b+ye?)Kn!cg6Kp?y+V^>jl=TWh4)+ zF3(VT4+vSkF1fM;RC{;Oz1w5)tShRZR7h*y6S$7+7&e|(VL#iQDAbGn-0NTpuT`-(aIV3Pjm^Uv;G^)Z>92I zt(>mg0a1Dr*lP9i+4viK2{cO(GZiR_uTHnm`nJ3suMeMJ^|OO=%9l*`LIJHhaZ>%( znFhya*7og0N`J57eCvZhy!M8ByWMUkkeov;EzH3-{G;rV8cfp7a8*qi&fG3S6zE|EM3=zq-6 zh1~RyK@AN&X5rj%?J zc--aJ3Cqe2j4)HgC9e*$AG_>yz>(0WO>TRrvvfpR@svmHy|^W=^Ozb9?{KW6F7|L{ z{+6TD``C9@*ZMS~g6IP(B(!0I&dk+e)x!N&lF?{4T^AOj7Vf|kzFX5k8_Z*z#Fjeq+NHAdoWNh$INj72!N8h*DmYd11Xt; z5LoVCXG$IEo!w26>Rr-HT~q!0h^%j0m#AIL zr7Yqw_-L*gTSWFpQC_&iFuR9TmNYotTLWE^7h`qaLq{~Egn)YSVTb$o^{9aeIxf_5 zr&`>^dXwA^dELAsBQVj}$NIsD>rgqjWXnEhK%?%@)7_;;=}SVss~^6+F?WKsji=pV zM;^B*gK)(^ep3G%_}$}ln|j}hF!h>)MOAv$MEkfb4e?_x>fg4MC^)jjvX~7VlJN?1 zwQAbts8JUy^`mL_=i{`Gb9V0kAM#xc?FexQ4}5jqDBMguSY50zcn)}n6WTzW$Uaq1Orp^ANE#K_rP#+s zaKgq#uM&IHF}Z1vYja-yCd^^^4RM)7r3%SkHi3WP(F7cWqF&0!ij*a5<)8jh)#j@*!(}E+f^RPlk+-G3O~iBeROl&6z|jP_c{jJO>AJXf0GKA1nIZ0xyI+Z#Lg$y~JriSI#snLB2;4+}MXzM|i4 z$0T_|i_D)oUsWE?i!W6XJ~rUcd2WS;D6%fb`g3;}v$!GbOV&q8zr3yWUenW4l**6r zBo!Nd8kAf~DWea~ei_xipxCD|I9o{@QCuClH3MjReH-nF4f(b)NL z|6APW^%5K(pSt6rJ;Xt(5mG+E4^pI)N2N6jVB>qTI>C|g8R-hcP|x?90pP;%@)jlm zi8*ZiNMl_0`9xMUdJelFhoWpWpFUwa)w2-`%k#>rN&JyTE9{wh5_8vV@ABdP#`EVq zRDo&!=u)H!KXaUE3!In!(GTfMIBVr+W2cXz>qvTM!;K>H!LIajcdGCvK6v>)uPwP( zX7xjVAASYv!I8`T&s%jbEV{V<^?qvHH*)2%tNd#Ob3wHV%+r1a=MY)e)_P+*L~3&3 z-x6|sxRSzu$9WL;n%`XzqZn#NKLf~qy%Ab)Pt86S zW)p<3OkbYgT^sX9m#`5R$v7tp@w7WrL#VIm6Jc_TtpDQt;Ep_!O!1Bgmpv1Gso6CV zjlVg`gd*$n=t+sU*yjDCm@2HkZgdR3jyfb)>H*5gizO>=No!bGwBag(Gt#=#v3K`p zRp~CiB>`rS>!ZAY$;jrIVE2==zm(d&#E(4>{|+z#V@^WcAJ1=-++5BwzMnXACqzhe z1f{LJr;33l9pfG5hqss1zvQtH6{dNIf=>+j5r3>O-4NuD<$`PmBZ6VzvnQ^ z`MI?}_V%&@qSU-1Gdr;?VhjtMnx&#s1ZBCt5K(}yzHjT6Av zQ6JqF=$6yRa(AceH~?Dge6tQk`w%N$Iga=8yzR1)mCk_2*X&*2eg>(QvgNJKEEJ2*w5-WcfSOsrMP~a%3EXc0XKl#d4`k&b}AdvLlwDO3QtUu}Uc|;Raq2ENRd>217>DqC^Yx{dYdYc+#xL5=Jjo8L! zm?ueJh|TbWHV;-y*1G2BUma0fQtK*nf_!U;A$Yf!Ww=G+ZFPkpo+pYuti@kOe03v( zXOt*rDz`OkW2ifJ@s5jwny6Ke`R1rbn8LmKOO_)AS7)W=D?DQGeq*3Dhld|^dEKUJ78YU4u|JZdEk~3_&En(pB z&zq;hQ?_8n%`(1!Zf%{9I|C+#>*IRrbecTP24LN623VP?onK+1d@Rb1*$OAn*}d@% zUOh0nc~6fj-&`*HRoEcbuwLqkWqK_6v2CIucB~73q#E{5VNmX;N#-?3OZGa5Zp-gi zwckBXSb6Fdw)+VFDPbl7NpY=i!cGGLc0$0>7%zH9F0HyH^vy|AZWKpcX)n`Erw`(S zasFD7H$?N^0IUIEh1l^_jBN20H-N~{$iR;7yZ(`+omTJsZmwk)U#^#@7d=3Lq6`py z*_T6vV3{1pkE=M*xVe(pzu$Rmyj~}Jj`wpCJev&Zw4q-88;4@y3@g!3jA(|ww+u9M zduJ!SEdFYJ_S3ILsz<#6S!yeZ!T#)LQ~&)Y3?K|!3od&xeC|TEd^xR>{^B88s|V!#CfQO>*z_eE~$pBUmyZ87$M zVjM24%Z?LgW?os7$Z37AiX3%G^!H+)O_vb|TVupWspl~xSp7bKSL6aH#!?|F3@=rM z2Wxzf-`x*H$vj#;$Yx>0_+a>N)q2W2a#rr|Ynjo=rFZrE^q=rJ$U#6Ru7%IZA zzG;?B^GCWQTvl2!nWD1)G{uk`eSa1jbxQoJIF`>ix#RZ|CWaWCq#%?h`nCMfk37$wHV zzyHoU(#H!&_p$EIWICUDV% zx17&OJ0HiOPLZW`Tfqc$XeD>vihBpZ-I~g3Hib1XHzRFNw{2OaZM)ddEN@h~+{Fn*4R;Y?& zdAnoe8^*!5xT;$nVFQf9KVH!d#>$mQd)Om9zdI|N59DY5(k8==E(lNyNS(QU z)CUhoTS{Z!x71zTPDzI6hR!?bQhyzXgY%t+V1roF{nW;F>G)%4fC~Ix&C!tSjVQyZ z`iP48#eXip>s|CrLD8mn{B3pW4Z4rw-_Ox$ueV%S3DULRF2u~c0KIX_6o6#UW{9$6 z2drljG5)gG$G)D|J;!m<-{UU-%nXcs?Q#+K;g|Zp_#$G>n_{2By z@?C5MdE2hH{{6%dWcW0@gINHep?SySp~(3wy+Oc6VSG7P50 zmk=v5LLObG0fU113-COK0D2G+tuA1bKYu(9)PP#xsMflyh<)XcXpa~N8@0d6RVaqxZ*y1 zac6vz7A&)WQN1t-ZuiZb=aYZ54F8QEG0z6yL>MOLx}P&=GT(P3n7QYU7~=2m)L)np z|JngtX8+745HN1LDduivhxGjmwP0C)vTt!_*^H}?sHa7sWAa9bY?fu594*+d9BjPz z2fFm1DUAhOHB6Xqy*+5F$I>l6bo6-m`yKZg{hQV6|Inw>ENDiHJ=kB7fa2P=(rY@}0p(XqFSn1N+Tt{7# z`V0{zLaL~%4M6f$fFLD#&Z2s<53t_uWi;{3T5++xtoC6OUP3M8K7{P|e}KYVYW1u1 zfvWh0K0MSs+XqRlef8CafbqDm98V8Ai*$n^6xTUhZ+oS1wkvh<&OcT<;_NQ%P;Klb zf_^?1Qs4wDZexS!R&o_m^Yf&tdeFnVIAa_eGszdIBS(&*)A_1@cUfB>4GFmP9rSDM ze4ufbBo3>2C<)87)s2TSo0kmPa%~^J&=aG~_(F{C5t;bZx)o_cWUU|3{bYLmBe})D z4ZX{lbPdo-zeg_3hBE`>;A`YbKVq+U`F}wEZDWFq@~`|DF{37CYH2%X)+fz-B8~ z4!UFKCI-HFD#MqDCc(EBTkEiQIMU+}>JJBENkih}TWc?DT2bDpJ;6~Xf>=CPHhzTo ztwaqwkZL<$1A+CdX1#*^eV$$W*!i#N^0)n*e(>(|XTqSWB@*&_^ULmI9e@e_5P1cA zPHWN|zIHyE@6wNwjFx=IYw=?#q=rdk8_6UDE5GG#GKqwdcX?;La`j`&*4!SspY%4a zAQ0j}ZRx@d-l%^C!a64uGL_DM(v#THkcHev2g$)5EZ^dOdfpPOQV@ucnW$l8z$Ys|!C5w8uS zlQ=4gd$7IIx5I+E?-nd1DxhTd9|u|`59U-E!04z0JKs-l`{6gv zE53G#=UWQnfCSi1B5|R1PfdqgmDm9_r2cl_EPYRh-XIx&k81-~WAOdb ze}wv;sONsZN+;tNtM$AI;J|l7+r6nBhh5AiE0TXSd32w4L^O$~Js}9S_(Z&0fii%s z+7(_v36QFeaM&)9V`dDCHv!o;@}zqICMjYsLFZP#!8c?oZXUbdQBANQ4@vz;#UG)G z-Q$_7t?Ddc=eOnlh{c+8<)+VciVTn1#&A>jNrX(FePoJ}5w%_-$GfHFMRcgKuBl0j zB1DedNp0xTJ%?Lfp6H(mS^|OA{}MXWztl zQtZ!WvEb->QF^{7XP?W1$9Fni)>EW+ae1ZXIy-$Wm4Q_#@cwd!NG;9rzxM~9>hNXw(FzF*kQ4LL~s1x7E==c{OHaqk_xIc@f&Vi*HcPQ7r zg%zvn-oraxTF_-(sDWC^`fAduM7-DlqrP!!ie)5+FR+s3VNk*ARgyNc@Gv6N>~ofN zCuIl7Bc3Or%^RD0K!*ZncCfsUXFF7@eVsnpzwwZ-kS-f9lD^IPOHVdyR z6O^MY%V8KC<a+92T&@T$l+&x4Y61&hO+D z&wInK27$YL-w0E0cw_DVf(9m*-RoQdQc~>v;Ja@!R4Y>NmK;ZKUrml> zFWO=~9~J-$!R5OTAaV|%`m0*)rC9{UEpK2h-*%y8e)9@OV@I=6Kp#Fj)-Tn$faGMi zr%UX_PL!Yf`vl}bwO13W@$3&+3Y5fqIhEB8CA?}1J-Lbg79jKc|oHFG!W%ess zeD-++sVz$!I7q>T@}-ywL;3i{Yx8=1uEXhQDGQsBvlO(YzNvYsWv?xA5Py7am!ns= z@`L|!&V-94eL@`F8Oy&Tph+*}wD_sI%GT=d@bJnJ_@t`hRCiLN7SHU3aSZrcl&Hqy z?q!{(xA;)MKLH4QW9LCOFu`xCKe&{7kDon^WnAW|+So-zsp;h1?3}B0BZB}(?Iob! z3T}Af@r&x_LUPBx#+`SPQ#~+KIa<=n=D+1=U)$^9Izp0T1`d#q zoiEz$;NwX>o{Sl$F6XXNLIIMn&(5JfHS`hEoEe#g__=brga ze8J)7K$6dIf?dlZbj+&|&pB}Exv&o4ZbbZ9=`Ez4cVaaBzDN4^6x{M94L2fnAP|yc zFaA4s?va{rBtIMzKX=}X8{&I}gc?Ha>p7i5uTQ%JDPc~qT5K(-bj5rx?F4{vvPQl; zB>Qbw9A3xcXTMdn{uAw!Kb{R5WO;3&zO4OK_>hwsn9{Q!A@c=S7F*Wy^ol;wOlT4HDcon`}Ch?kSUocymH3JjSO;KvyrXA(`(GkZnN z>zMH)n=-l%t@-Xr)EiQ6D}MFTqSB;-L|Mjse%Lk6nN(%Ne=#k zn8NSaaB#FAu+XLG%sYNzaH3jeBn|gmKg{p@M9T{v+K&#YVp;m53@Rh%ls=;*{=T5K zUi$It47+dmHSmDSe=ViEeRV8<7Y)BWyF$4+NB&7YJp$k3OpW$8y0$S%y-(C7(6!rRdk)G$i`(hsN>j{20{jc6r zHS(s1>1Y)C_2GIBHe4BRlkb@&tT1)$B92|Ff=7i7<|}GuTP)m>(J4{TI(pV;UP~9D z`|>XIKmIKx?kb=G26)boH-xd!KBGha;*@;(3-bqhn5MZjczHENJ#}cv+C5eG?N$(| z$^xwD>)1{^&dkqXOnCkVu|Y9w%4N*#&azqf@`lUTj!gE^3BYYpl1wSIcD%NN56CHcYH8ICS_iAdA*W}G2t49ZOsY}m9^d7wUsaxs%m2JHv1Fv5X~<2NEOe zB0eb(RJX+GRp(Fa1a#-IQy`OfF2&C}1c@`YYVkAlgK+ZlbhV#LmK6)xQy?dI(d)8= z9M2vzVmAVgOcQyl9a8#FVitL8`wtHw((gRa_p^q)Ek7L2R8rujYw2^GYYvX5=kR$a zLbJJnjsP>mAUL!nwc8xyXnZ~ABe*rauq{rk`XO0NTQ3i-N4ui)1za9>LH#T1)@Ypd00$xX#F@^Y541(KtR^?YLYJxPANS zzEI+T+arD&|9E66FU~VZ`gT#En2JAdtEZ z!ymxz(XHgxpRR@$Btk_(r>6JTUsEsuWvg)s^RixCDeLcC!ss331!&ZHGZgtDo!;Fm z^U1w_c7rbIgqRk2`*<0z010@{K4#Z)Vu~iI`!Uem|DmqdB*xBF=@rF*BW6P7ah!|#F>fJV zJYY_j!n|(UYNY1|A0~A# zSj%v5KxTr%uq^klv!iXGMn@h6mGFAd8p5aE*({bGpW?rlRe@SOz>$ZY$cEEBp?2Yg z!gD{Bj9b=-ujRR$K{AL9hY$WbcGyB&kn8D(ytL7`b?6_Q;c@UG=nc+75baelmpj z`Ptn*TATjmXUxvL98cC*H-i`xf^hr3?X%OdScxn!t?xpvg4mF{AN1nMAqj`p!Q&|cCPy~X3!F`+ z_E((=xWkv(N!H8i;Z~QKp1m+h_66r;4LD@60Eph1jm|#cUEP$ntf&wFyHsS!jLo^^ zz~67MMUm5DcwGUC`x&OL-E%VItbXOK#b{Z$4 z_N{#%G(+y?Vc&1fdzZ;lsUz}qu-w}tjcddnzCu!$UF{^{*Sg=x>sg0|;}x>q{T9hD zspY!MEsto;&`*>w^9^%TPXl5cap<(Au^O zszrcIac1v6pQD@j3<3AZy_2xt{vvjDsUnbwZi5Sb9QhJ7{I)9&ab|p?zai7XPw9z2 z_lIY6zb~11e__9vZF^__0fUS1`>nV(Z?-0+1uRcgYM;8&JXow!)8OujJmK|vFt`SF zq)LWA7Hl83v)CUcYcpusyR+$_6`3Ov^A#hb{oCygI6i0aQ-!w5pV(J@A;S>N9g)A} zwx{3`nlk6I6VvznyEE_G8LQgj^g)27-2Y9s7QZkF43|s(@O|>2Vx-jRzbQX8WH=9B zW&GL)dw+L!q8Q~%dh|UH)r6G&4OH-;u@+GyIKy0Ve0TV+JBGb!k+H2T+rK~81-ubA zH}``>tqk||9d@Csd2pNuP!48F{Qb6DWVc0v)Z-5Hx6|*_)HNAjxtO{a%;ymn2mpvkTOAIJahs8wA!PYi1dNfHW$Y~GzSA|W8F$xl zkw$6I8_%$h$=OSve6ZEwpL20n=k)`Tb##HqVXjrIK9TpjytT6d-usbaN&;G3?z6BJOK*Oh#LzGDy1K zG77Yr9?AU=t4yqXY5yyJKFn)!D)aalIVbS8Xz_`7o>8&=w!6cz9B<$t*w37OvDUg( z_0@axuWwt)1y{eEQhB&~UOP948k13dgL|wFZ^=I{=}OcZPWgrN8RJy=Wi@0P?tv_W z^r-v=htxfm_H`Ja;jV=MGysR~cbfP87k{xA6GuNqg-`~#U~56Up85bIVUzOgYk(YC zX$s0=JD>*ESC#zOv0~J{3u=#&|5uxr1<0OT$*jBiCg(G|=|}@Kf%x$ulsY^Ma{u>^ z%L(&72rH4ANd4-4J}`Fr|!WgCW}*iv$T*o*;QZ#NGYW^ByqFg4g7^Eg=d*JnccC`BzVFK(L1 z31h6GgcHV1rP9y*v`CIRTrWk&oTIiY%cL5j@(d&peJ%7W8iv?L~7#&mbAQnfA{a_&5t0 z|7+Tsjp$+d)rakExYdKx-iNLr_`=r9@AYGO4!l)UtCiWG=MtRDB*F^QoDaiQGHXS^l`SkDk@K(9=UjMsaPOV+?qj>9hLHt>eg9v<=Ejv(B zpl#Mm#kfNAXq41B+h_i_Z#n>~0a$>V3Eb5bf%6zcey+1eg1#Sm9mM8i>z#h?^INeD zjN=8yg?+1bybYMw{9{Z*=x=Misvm9C{_^|^z&57#jKH3Kn!q1~7|;OCZ$BqHQKvZN zj)1K~kr9DMs+1q3($_aP4MW$U!%zCJU)ewPUHwC4|KxeM=D0rWt5AOjE!n<`qLX;V z4f4m1Hf zs|UUo*D_zh>~lh9g!q9-Y1-7|X`{`9Bip}~o*Pp+W6Z))gQw&58Nv&8d>X-}HlMrC z{w+_=cvBzFlN4|D?Mhy(zc(dDHnX6HC}GgEH>WyA3iB(qL7%;WbxFDinRU9H*_856 z#~*X}T-i5-Grm`0OMpFg77&tT6NU9qzDpE}=blls-}-R8@*^&=PYvb3u7GGV^Q1R?WCPU## z&9dgL;s?p*phSW`lN z3qQs)PKmD9k+d-Iy0P};}|K{=4ObBDXA3Wljt|ab&Jp^ak;r}K|f4n9F<*!q^*r|^mtvTsJ zVM2G5i~*PbBjvG@96LFI zODUPcW!la;SXkyWzeUj90B&8Qog2n~;(71iwW@f0WcL0LvVo{}5U2&o0r1G~@m`yq zeVl%2sSBp*9hKzK3{u+pez<#J)*W`YhqWl1OG&^ETi$`+Yu_H}vK+pdp-v9yK0vnw zA}2{4`r5@;5P|+vT?Io#&yN3eqkRBS3H6w=au?M0 zgejAwd2BBRfhHcU-+E0E>@L2aIt_QRzHh*TdbV88NZ(UC-2-d8|K3J91XukHF1Bu; z-`mCNU>ktDxX&O1fPMTl87qCwo0nlo5BixYUt_Q<}jUn z;CP1GXJvN(pm*4p`_o~Pi&UCc3el3EcLJfpdEfQN+U68q8sK0#$Sxp%ni6s!=iJcj~ zYz6!|ghyl-i*L`?y(vU|%hkO^M`Py{=X>;|`O$VU`3=J=yc9e5(X2KUB^k8#l_Xc6?~y0qYAtjq~t{Xi1a4RIkc z)4#%Z1Ak~wHcFF(nOe2vUBiLyb>NYbl(<*yTWS9jyCZ!*X>}dtRD9kFKW>w^l^i$#Q}~akWMe z&l)umG?Qd{cHbuhsKm9;M4IE(@(?Bu>w>yl4E~4y%IvZVI$I@;V?tawiks7nj8WQ7 zfRSXU<8Ku2C>Pz&&`bvTQ}aHtz2Y18SQ~EboWFi=-e2^G!jVDvjxwS1HxsJgOdwBu z^Za+K?pC={^q!eSaOOWkdK4mT*v&gw_KeO@V7tiER;YpN2ulxGBM}R&U=2Hg*NN(O3QGu~8FCLm!FF$#i=qR5DaFHM{r1 zf6Dqd7%$UF!tzy6&e+4hC%Q!?=AGg!-5LH<`=J!Rg&_qd4DR5f;OiaqmtsEQd8<72 zdjH`Kpw?OK-*w?|LljOJcl?Q50B~+4 z@3z|u?aM>=@#*`mnoLkWPbc=n?}Ec2EUU9MvwBD4T#q-F|GKze>h_f|pg%JC8Gebx zMw?vkA8SMrnHR1*1+e{2W(}#WMt$5~f7p0e3SgTKx7d7F zL6l%<@fl91zdkvNvE|7mf2?dv{K?OdcBHz;$qyTEYC+v)10m%Ken zKjwJJ+~B6Kwd6`a!d1L~!|Us~8mjcN?p69TG4IlB>ej1-z27A};3e3JG4C;TgyxUV zDdWrj5d)m?;$9t{S+UvPesr=@F2P=3I_z?gb3V$iu1qB7JeX^Nzb^zNzTIUM)ycDv5_GL5aNOmt{&;E6d)jX=qB+s_#Bkn0_0_e|gXPSjK-B zK|5WM4z=6lV$|QInT+{^(Cr(kkaizck7KkE{xyD_IK(Is?ElTbPVvuIKqFlqO~)ut z1omC(+EKVLsM&tgOdQHRPrfmDzL8YO;?WI1+4ezrxBj6IQ(7zkSW=(~Ob`RA)?!>M z<)Ig5-j6G$-MjuBKiYUtD2Rt;KJR@GM@Pl7yIcd*n4kfc!mWxK7)?H=7BnZJ@?&!K zUN>d_p_r)Ry(FvZ;q$8bn4_|#F>VfxW`Kgjma+cQr#|&ycXpBZMq`m`7o^W#47iy? z!FWYhj=L8h(X2`nAOb)se5VU51Bfn1LGFv}PY8tDb*?%0EOZP0B9*xEQoOlCA zNtpaAut(cF*?!Y))n@mS!1~QT`^X-1HnyvvCL8VEm70mf-spm!f7pj7ai5QO7i*fH z`|+~tO7e$(RfqV%JYIwmB|OvsIdQ1-8P_k|bc)tfz)AI$e-FU>vX3IwAuQ)Oe*)9zR`IY z5CuaW$X3_$0om%u$R^o(x+`Ju(tO0I`ivycyY@%aVs+!+%Wx7;&HNPTtwtVLAw0yu7w~jKY(H}odTd%i8~m)uM%c2<}TB`&$zmn@3NIDTvUJ9qa`T59jaojxC4m}eN=+R#fTI}<3dA8g{am_Ek&-NQCCb$P`M z4elDHz$bL~zs?k8@Fae1Qyxi+p5gvDli^1`EV7)*+uddQSbu}LtV_C-Qr|-LKGT=7 zrB1!c+M$BUWxGSqay(}cL-gPpe>erX)Fx`m{J*HEyNZIYWPTVsdS$*_+=9-fT zq=;?&bxKY#=4&9h2p8VUeb2XZm0f41XG(Mg!AIJf?~l9O+`8{2wqTD^#x->eoD27B zRAAIj=|3r1dQ%+<^4>{IBzry&Q>E;AR}6lKes_sOQH^k&w$HLG$xl*m$8~wdpGWvN zPn1@^cUK(sE*HR5UWctdPz`yl)nmn_-5bL{KcB3n4JjGFv;OvI{YNUv8QF=DDKb{N zg$iiD-D}3v;`i`&Bfay_ybRhZjiCllS^M8RCINcHw?az0^!=ilqjAJaGN}G|)4ZK2 zLb)lP{kwkTRXfzlW^6q2J%i-X?)t%kHSoX=9s|^a>ok&^Nx8jnhkcI!HhqEg6?6u-hIfj5tYNrx)w$BN`zM|l^$2xEH&f-2#I1Hbfd(T66 zXXeSr&P;qp1l}w5J@aRk+@e)_SLb{md|%S<@asoQ zIS=Qi9O|n@>ZzZ^pLhy8S3cYa}fGMmeT;DgEU=hK~L_MYm{l$j_9 zn$39&Q6>X`0PQZ~8i6^2zrp!J?yO&f)93Rvp&8b>XRK`xhwv-;vhnR8o4lOl0gG#o zyhlJq5t0DVCVYkJsyv^#n%emv0x_Z^1WwY)pU7zxT&D2JnvGv{Q@6^D;Q_WQB+pO( zqJEm{xpC3KZ5)LG!F=n;vk#D@HuEsIvG4u>Vf_qruhq7#n}!wTJHx!z{wjZMk}}++ z$JCF>xd$-G)yZ4a01T2p{R}1l&dsYKh1b<#C5BJYyj*GQ-_`C*Jk8SDr<9*u6h4dva$N zPr%QU+@pIrt)Gs#N*DCqehOwNf}hOCwE;g|7vZZWV2`A+=OH5M8C~fe$;B7yUZp{+ zT5&vF{^}Dt1)Z$j+QFWw#^F6m*m(7GHT$`*_OisSIsic^``2h1GYh6I_|E0?D(HuK zRGw2zAgMC0*G~eyq}0vz{Y$}$Lx$Hywm%|(5sLgI+3@J6ep)Y zvTYr-R6l;a4eZB-^~bN(;Se*ot@r8%!n3CQd6ls!Q*nfuGEg*q9JXmu*S-8qyOy6^ z;j|{!5FKWHVwb$V^P)k5H@sKQ0r^#?Jwnz_vp-V%XqBHg z6F1gYmQFJ-$|iCG`U5%m`7SEghewK5U0#hdU#PI3HaOPZ*??Em5bRbwlu`$jRTA!4JBnsQZMauAJQx;Efik)GBooP;3$XJllb7E{Y+J-o0sz`wvYQ4 zv-PVK{GPwFmqqFUVY^vj_g1go#w@hnT(vJ{rPsH=kKv?#Ss=qkFO?)f2KJJKmS;SF zqgHBWzF(}&?z{Te6A?<>HxzzGrR0KtuRVLG4n$7H!A4^o}ij zKkj`)G!>3^oc%uiDna_WQ}sJZ`vo=_ulPG%6$mhA5SYOqIxwj`Yn6J{21r}A6WMN7qs`MZ5d{?D{`oDMY(*HPd?Cgs3&np%{O-i=#T>KEn4>R zzy4WpcwW-v87IMlxusZkTpQ5bD8Jw*K~2hw%T97n_i5|~Ye`bQ z-sACe092}d*c-eTa~&mgD$K7oFawl(nou{RX7XmM3Q*B{KkjYz2B`1X{jY#^b)65L;9hMskQTkaxBqv|<(YVCVurdsH8k2a89n4M}_`P`ic zJi&AdR6uDvU(1;Brq~j|MBAetn`T)TvrlRl;c~zzXG>UgtU%T2iW-dGCj2SE<53-7 ze@L&8AN-G(ld~Xm4&A&V@`>ax2+680eYs*k-ybVj_GEitv10+o5NFb=Iov}j09|p5 zOsH-Y^hfBot#fPF5?a^3-mZKI#fpbT5Z>p^G`P~q7X*T@HE%nu+qb2`CjPCvj zNwj>9NTt0BCp$g70@GJ#3pN23rgAbA{eB=^jU>2B>2+n0mAK`drhBx*Q{>ks+8t*{ z@AK65`DHKPUlF-8fjU2NkM(!qKFvD$_F-PKYb$PSxqQLh&}syj_eA!`c~AJ7c(^)c zqfbDV)N><>`Yov__Jg1=KR=}`r{j3l&|SNd)95QJc?n5e&x`Mxorjen=i(4VJs;LG zS@oCS{^Mu2nI}k3J^|XWvC0B=G+raOU>ZY=`R)MT zCK0{%|q(CjXf;GYTHMz))<<;GL;-&^7e(H`C%!{;H8 zZ!@@RUGww}?7BHbXBjt7C;M|P>a-bn{P$J%RHJoqU)tnrI;tL+oY?g^!(LG)#5#i7g0QDU(tM7LbW6f675>=jv9tT zDc+yxnIv*j@%uyS(In$FGp&2kQ2i8S{j|LeZF+wW*xTxLG^6vPzXJQ0uutHBs%!w@ z6O3n+!|$R1F$e3hQ3n7HY$#r&`fW8Gz@?LZGFshP!?glFYEo()^4sT62sTn z>1Rg=)uZuhjR|dMj6xQuSc|2}tn*%0(0}m;eSe=&s*3tyF!5EEU$t}>U<)OvJE5GZ z`%Im!0zm`8RTY-#gz;W)6`&l%AhG)~z#K|>BRaRQ1pm}$vUMT_qeEl+K4rLcI0LjY zN~4Z`9%hu>m{3e^t8moDV{Yk~%)Qm)ov5sk31u3nX$nPu!B&w}d8;YjH0@#Mqir*9 z*G=U6y^#yA)Ga5~|G-3lCb$;JtI30-ly{%B_-0(>oUlk;^49GDrOziTESN%rP!o< z`%v$y=*d`jdgHk3XA^fW_(EmN!14Nl|XVGs>e*m$Xa1;Wu_nw0(sk1e8@R#J=N#ql?nb`PC$%@r^^@d7xz+rtH$P) zd5Kzek=@j^nV*Np(oO&dq(3p(smmV}^cbjafC;8177q4ziuCV`zMc+G!0l-MCgM;d zoG$keh)6%&-F{CnC7;RW6VTzF1G{MD_Kd~5u$IzxAd0yj!)I zQ}5CYPn*Vgpq8Mm;2!yaC;#pb>{;9KaJ2x@5YC_CQxXKC>DwG1^1}$bvMgM0t#I9) ziMuK6$aZg4%Wg-U^V%4l!=V?EynN(ctpsYnlXD-H3YWYe+R3`nGnXAKA6LLvG~JL2 zWyOg%b<#;wDCJ-E82`OGrKvLO?;Vi&S?-saF)|qf3``oUn52eEx zTT93N*_fv4I`F@F#bv3vTHf}gHl}f@zNfad=k^4X?a+R?{2XjAx2O0WZ#;49zIiaf zz4P;5|E!Iy`-eFVcZ71KyuFp^n#YT+q=Gek2-%`zXho|~6Axky^W=CVtt3iFrK2}3 zxjkw*#6;c=VU`z{<}eyMioIdnfzVTtu++ZGkkv>eAVEk!UyCogRI$@6YvASH+4ykZ z^Huf##QDGp)oSd5@gHCNDr}6mzY-}v+cDh(ZzOs8wnEIKFtaYq3#MH#%SHTTS1c1r zpV7TPq|2G(a5e?EYlauX?FH)sQ=*3 zYAibYRh3xbsJsl!xe7GmtVo4~+o#j*o-op#DAZ>M?MdAp2lm<1x_i;ImDv#H$Fu zS3!h{e_JHSw(oFk(LBde$5g*>X7be@`CSJbXGg!2%{iruGj{G@c9kdLr(|sN*+)!& zi$Nz62?G(FpvKrpf(;9$#J(AEtBejvhVSp+m=;DCx&x z8z?GTTtLxoRCHmAdwuBbIg&1NQMn6n`Qr0EeSJ6)o${|wWp8sjC;Wl;+sK;hJWUNJ zDmyB+D{*9({W79#9*s(lWZj_!Gh$1pL)U@hVdyv}!)R^Kq>4s)KQ)-I^r5n>{Ls<{|>cM4Y zVmT+l&gUQm>U&_1Yy%M4czYQ9n~26g!E70Xx$9*ZT`}ve-}zBy^UBa>9TKl6kSD3* zUjR_BeJZ1zVzIY5wX600FsZ`UhE+As)4eY;Al_ITAl)_-JC@zME8G9p;XQnfc*a`O zoc&u>7t+gT0Q~nCpA#vO+5gGp1c=}^-Z>U+7FCp-{-nK2uV2E7HR`I8Q@EN*6MBoo z$-?g_n83h$_TS4=Y<9Y8?=!a^1BM&3&*^JgerfNkPyGJb@RUV8+n1LA(yU&$_Vl!zC>^BJc7uXywb(fh zbnTs2+&-7FW)@HJa80C~+gAtm{!Wu2yIbtdV_>}Fi}SZUf7y3d;}koG1spV2?=~PP zkgDREbUfHue^(BbYM!%-2o$+lY2eGm?^p4n@>_K{y4;bYxN1i^<0*W()v8}eN4=@E zpI=RQMkOD&OB?O=8XK3P`T*LJ?2Ov%v4`X|Evw{tbUu63Tw|bYBkqkLexs-f)*~6#! zS_?dUe}RyX=Ut#)J>J?)Hz<4%QR~lv7arQh&b01ZDDxK-apibCUY3PBz@(<`oofGA z-OKDbN&)GM@^hnK*%LnEhp$~aOG9JxxGi$Nu@BN<2^b<v_U@&{O{Il1~uPN}{l&||*d8#3yX*~$bZMcp#~!RaWjB;p4!_A*MJ&zhy52_rt+ z{_El%a4tNsc=M~yc;@|Cm?4*y9_%fOLxJe2({5j0CW?%nnh9N$v)hsa^qSgvTz{%LwVa2prK z4~jbOCgET%R}}j84V(F<(`4h-1at(yScZak86~XBmFy5ptY2EPyHg4eJBMv@I5`KQ zUfdOs_1ds-crht30f0mZX{gVDAV)rP!?T3mkNDf&W*>3)gg8qlcV}zIH%%^=msd}v z44G7RPEfdvz96>5`D?#rMT;`SRW;r(DAQXNpe8@R6w@hX>eO2=TZ$Q}3MFh2~x;qsYOwr7V` zAo-Km?Dmb*U3|YuJ2Axv#3UJrE!aNp`0F451bq1!`S&|yS6w>_KQM>7Rm~lg!}eKU ziLH}q_kHYhAs{gxgsgSe;RqVE%U_zWj(ul(1Hd+azJ1TOlf2HjTq56h^+18}X#&Fc z#dwT70O{QD{c=d7>>H|h^PE)v-sgXACq(6M@rADz!3QEx(34y8`NTW zuQ|V+?+{XspQ6&*7-E#$-+DG5RH@XbsPYc$VD3N{+r}JORD4>A)Apd|-Y#0S-3DE8 zpSaX0EU0phCreJEnbH}_4hSaM^x5*m7a3j*jjjPRoW4BCpgV_ExtEgMzL&=Q{4$rS zRvq~|e4NHQ_m=c`PtkxX2#NX4h}ltiS)`u!&Vs*afc+#GV@_W8}cE`e+q z;M6-)l;=nH!nGeXpR)X}iDIqLXq-jq^X=(R!P|Wz4op*4UpJ8rD684C`komHtC4y5 z*3G6T?|)Ty{U(cAQzk;;O8L9iGT*^DFhxLpzWf)C_BA^NP?Iy55V$zfK?1<))Gkir z6@RPug?I?32*T@;zaX4XYd`HFMDODxMGI36z?#k9MB?}h9$6jQ{Se2XyLQKk0^K^{ zZ+vHlQ+AmL^F^S0I?dyxtN}F2-c&e;r)36dCbzlb_OHzIGV&nnDSpFiTLdkvZGM+E zZ7!~o915QP3^@N^Fb%r*NqyL*QS%J0@bUJ6h~RUuU+4bTTv~nUsW{yuhu!?$U-(7B z>Blhk?#rL_EC=Anp%_0BI6tKoP2#WpVVXI72&;cja^gPHA=%U#r6-qGsg?T~)(Fn8 zWALd9#zNm~z3yq%VMmzCu87h% zO0cwE(&Cze5PNYuLVwlwQd?51dxsSR3{Lz2+qVX^x%gGn82iOz!IctAuT#AMoqLzR z@5PXOj?SB7_OvfGYKxUhORoqu{Ue!-c%5b(?l;k7a)|ON$iF@uL-=Aq^_?ya<{4uV zA~mo#hr{;#9TI%8*!+M!rYmZs@?+;;D!puSTvEsf9F~8@IL+>8CV8n*T=gjq#07?K zyRzey30=Bv%q(Z?wpDzhqoZD{>14DrvCztiyGYF6UDErb{bLvD@p&%-ic&aZ`w5Pe z-`B_7hhJR;5X74J^E{vJkRceG{2AOgUODE`6Dqg2_b>8%uEKEBIcz*@H#N@T?xcRW zOSXT<_-TBGK~FnS8FK&WLBZ^57>MlI&s2(k+KCn2<5vu0aA_~snl(jd|A_PW_bC%Y z*F#VN7ClLk-jLECH_qjyF7Wu*$pkaSTYQo%J%Th~_xP|c{`37X_t-Bt{&SRL_jQ6A z)hTYke$da)=ji5V=9?trH90Q5SaN;gR!oZ-f3} z(;lbcfp@35sl4lU+fCw6!VQ5--e$ONK)o(LkU5o+{Vre~nvxGfg~K3(sPhot0Wu2#}5> z`4A4R(Nwq$*{xDX|B(Si*@xY8tU1s=)?9rTn7vMXa)+uICY3sugX`xs=mrno(FPad0E`l6h_Fd*06_y7xB|rxs8PCNUN-%T2 zE6p`gEIc^>Lh;1k9Ip;w#v|0xCb?Wg<$#+AxH;ULw@1%7n|rJS_lbDCzUaq1s!#I% zBrL9~6_--*U#UW3UJ)rB+Pq%L!?NJl?jIz3Wk?latX35O(44n}N0dqgC zBM!tCGd35Ymyg_}MeDaT{8Em*k=!ENT-pYy&$oqmn~fNQsgUtg^(#4&d7LjG#`a1S z_%Sr3&`Q$%o9~SCgK61_veh{L>|*7o`8a3%zF`@xPp;l|tdaAN5f>MG+uP3fFFtmo zkmp$N{zeJC=iA*19tE2^?@$DIhC*3)F3||WO9iAzi^Kq_<$`@$RDAqKKy}(a`v;Fy zd6^|hKA8HnVM6+(9FHb`)7S|4l@IeLby%^2-Um)Sf7{fW+|%z_wRZ6bI1i2=aEq)t z$!T6>A&T0-j|nWq<6IlIR$+e1H0ftXfN~-3H_x7-`pk54txRkGN=zbx`qAhb<7&kNsZ+80mGlBD|AIk1(@Yf=>8iy&kL+=@hrii+xqfDIW{)u8PVo48VkQ#*S# z9989GyH}05UhI3!2VkZbzh_~q)WXzURmvzgJvq|+OD5~i@NSL6?!#R2-ONJHox2VN zUFB-aSFc+t^}zsuTH8(qR1`n>bEstg30vW(4->HZeei`W@sINNH1;9cKlayjU(o7( zJnwJxkZHI>;PQL{TWzm4=!$n2ddhjZ2XW+hwx#WqB~Y)}?n6kTgsfhg_z$gJ6jjSUwIGuzhw%|KRl&FCo+u zb%&#X)!Ygv=}%CK*F~qW2Y+aZ?e~{C8-kYgNj=n8m>Ioq70AkttYA`BWRjAB{+|L% zH4m(;do|08d6Z2Kmym9gZMR-<{$W_-{XkPlHqhYNKasaFOg6Gx7?_6i&kiRifrT;ZT2iml1CyIv9K$oJ%)AUc%RZ_e{Hai zWe4yhcQm|9@r9!XKM48#c51}EUD5Cb5(+wbuZhAvA9tP|eSO*pVZV8e=J{VJhT|c8 zJifbaJ7+?6eb(&wXFC?f^%5MuAPKoVpS*OxMMJT@6yllbCV%7?|}QL)mz@uewWyTzC50!~Dx# zZ*EUKA}9U>Yw;Iq?==F;T42te>gR8d!R6S5rAb16{>RjDLKW5H@h$vR|*>#qg6Et(cvs01>xDZ)1QR6 z<70aORpoHJ^ zo|WSpwA{GU_gq`7TacY9dtb2Ah(E;bPC#HeSbUp&mU5WfW)#qPFxaVAse{)HL47l@UI9J!X zKPNcnNxRxzlE=>-M`G76k8ownpX9RfZ~#`)0OvYCX4n;`ugC5gRXCq{$qtzCuT6GYa(=A5IvVe8XO<@RjZr#nVEt2_yMOWnMukb}Ek z|K(U5Iw})C^6xU>azl}tclDsg1n*vdpct?Z#CER<2V(hVyW1LlLR6|$u@)4H8f;|1 zT&pB<+53eUx3HiOBpmZx7hvv&_`$j7ahrmu;nuGb3N;&^jL^rFa3}8xJ)!TI@JtEz zoac~Zx6x=Wr(F`nmOAtYuwbXsq-0XHKK#=DfuUT3ahFfykg#+CyP`$5-hhsw%g5A? zwIY7j_N}X%5?bfH&}tI_w)i_wzs=mewA>82dH{ zbLyq!!3&=TlU^hz7wr(1c(%JTFTfZTLKG+NfeDii)*%g@8&WVeCkStrhR4ZK?>7Ls zMP<9+)lzs*QS4Z{*EfMWDm#a`oKQ`zLy53D%n?E0@P~B8Kq&U<&&+a+0e~ZIwB=_3Kw*Ua%5NZpxS@2pz@pOJa*{*_GSufrceMs?ZtncGPRkt;E?VByMnU!}?M~(xPiFNw_7nbpz`C)P(9=Zf11hF320sdA zc&y~-sg%Urqh8zFd!0!E^%S_M6L2XKH*B=0V~KEcv*)B62a7qrh>wq3?i$`~z+WCg zf2SVLFFt?V1AXk)me&*C9MKVfiV$bdB!}dBIngJkXiDJ#&NTT=@;qpXPdHb2FT)wr zpIqnEl`(rS7dc3TOoK}qqJf=uzzlJs?pNfVEj(YeSOP-%!Hi0Ho%hS6Ebngw=?lfa z{@(EvV(|y1^uuNwQXFkadp-raxu5n8h0YxmQRz73(y=X{XQksHM{SOu=6xrRE9g{4 zr#j!_h_RO$9O65x7M;6aRkyvqP#6bp(!xPsc--v1HJ;jHQo4Eo^8E~yxw?hh-{wA| zE)x}JmjG};)rTbNpdW}|G4tL@tp7VE_!_ECxQ50OjQxOTTdyqfv555FwXnz$w16QH z-!P*5I?L)DrsAS9!wRNNEVXlo(@*_3#fvn%<*2jybbN|rR(rc%X?*{WvrDx&dkXCs zf;qm`??P2?v337m)cHOOa)^e)5VShD$rn0pLLXyL#&Zta>SHFpVfZ^zLO8uH4$o|) zHZ$InhJ#+}e+W*pdn4p1Q+jz}>%)&t8{s*JZC7$ojb6a3hIe&u$Qxf*>9a~o1uHCdIUdAl zpS{#?Y&eF;2(RB1P`}IZ-_Tu;09MW3>u;YJkxTLk{2;j$@K%3AJoWOFH8Z*__0H za4ov`T?jtUv*sVLAozxtrYDd`2wy#fNnXfx26Yaw62ZB{Z zT`;rxg;roCZb7{=f03;*1fON(q<+kPfAhWgpYof>lmez!j;%IDoK{M~E5Y5;f_i4} zbnxIOX`~C0(_E-(-R_+}w4NVW0Ilj<3hZTSqdRLCeXFEo--7Ix+5F>vPK(_%W;CBz zb41O1o>Kn4gj81wq$irPuWSi0f`9&vx;DZu7@am~Dd#L5S*{HfF!>Q3+kY(tl@%B7 z537TDc>SjiJ@*Ya$GrqnksYCRR88(@$cmHk9es=FpXOiS?6V=t+`nM!Jz4sM-ZE@#10(j^yF4wXY>l@s4$eS5gZogH3&9`lK zDgLlSUB=~@kgORRa_aW`)_Pnr;y8cJ~%6QwK7t_jamBNl(pFlvflN9-M! z9{JIVf(QTL;hw@E>x$)?tG^omeF;94hYrI=AeCmQPjvpw69|bdEy**SLNk^i^Nr2F zt!k7hr$cWcK{~{#D1(V{`7N+AaXDs8!)!H?;4ap)b2FBq{4=MKZ@EoEgd|U9QKQu1 zF>nKUp_Pd1ZjC6K-Fd$Zi7ay^_ePTHbeV6*{clwh21CQVuFMh*tz>kfz>`-MxhSeq zSZJ8WZhura|457%C6G*J6O}iQaKhA7(ldy8-$|XnP0!+@0EDs}rXQzTbL@Wc{jg^= z^iJ~;sgImXn&o?+#b}Jo^9jPjh+5bmUf?LQp#+a<$HpvWecll9qFO<$3%<2qciC?G z<9(9I1&8sn|B+k&B^X^mKoQq~;IuqaoBN}yVP6EKj^>$tHZI0*L1`i|sP30XNN5B$ zsGUl2ADGs60bQLIbgVt3Qz}KPqHq+vem#{}Bp~N3Q|}JP(U0XpPjLxLvAgH?E?D3~ z#1=2|xTUCCUolPC=rat-(w2N)f6n*WC=tT+HSajr*dPI~;p#RFWjG$w%@p5zCvA=d zL^p9tzII-Sz0>^~K)9gd!noDf$3$cF|0fqUMbV~^{+tX_m)bA2^)SYGRt8kN(zZMh$| zGL(6*tZlPaz72VKM~<6^r(t z!Cq3t&86b)dioC6z?!1-xQ2=!x>VUQ9rG~R<3lv?B76@B3^FEkh@2ja$RJFI=&6q! zg!NhZcd52hA(@rav5-}w$$UMO3ZH~H`h5=U;Rqu*e(5RBm=}wT99amw^)})Zee=Mb@rUy7(Y-bhMtJZz=RZ2tA~cXU9iBKIZ>~ z(4yJ&O7}reB}Q{J9<_GcdHn&?Z7-&@#+31u^h__rxB8~Ak!zrfM%5ZCDuMjD-NDX3 zzXJcwbb_@<&V?fm)BUo0(7i)8h!Y|}hfy*x#QS$zdC$W#n~?CFYQB44f4e`w(U5B8 zot;U9ib_nOK8XF}>|@0;EpT$vGrw*ce#-{~*hVDjPcX1Kk@DPmm|O8m(@eK1`^AVf z6%tSl;Dh)Ra7(B=&iq5R)6&zYl?E`#fv0fyYv(^%-rNxvM9Ty-T3=Y87u zCzh8{Cpz3;bMdy`$hf^#^A9CMn?kz&5b=4zo>DtJpCFIiEPD+87(oRBrzBK;{*kb*&6ekAM{YrD5VoU;tns8uC^#e3XC6^Re!)2_sbkW&_B}hj&JXu^3ZNgVYI6( zNB9c8j?v{$f|pcu*85jD`#8xYS^Y!AOwZ$w1yd!?{{!nEf1~&-I@bGm9Kbu8u(CEy zwkQ1i#-4*Q%3e$P3oiqER~U4W^b)>Z%pR`(S4dD@)48F|K9}F?#lpm?iQ=<10k1=k zVgEP3E~jI4uh*|8E2pCoR`1tS)N!7s?}}ba14u{l^HoaR-OpwS!FB%aKVQOXmCH)o z3(Aqg!gQoySNGeA_Bt>`#vAw2jbve(N1;6o;sDw5oQ-4v-?!AxhdFP>7vYyuVQZ7VT>HI>518^?tH@HcwF9JPLuSbGLZJ zJ7_P2mEhp-psbZXkuM!cM5?E?kDMNOBbL7(UT*p^gZ0rGFUz3xX(#-s+uw649-4j? zgJN}zv#U4+!RFB&FDpf5*iH?k9 znz3Go`Ys%}H^#G_x0OB6v@d27-Mz}4Pv0^PUPIsYB5*G{nk`G?qK2Ok zk~;d(!u$Kl2O1dg$MxlHRS_xB9YaP4)s6H(UEO7up`Z%y?(=cf>>_vn%UE~QXija$ zr+emI0tjxGsSjICBh??FStc-Qy!mrE*_#S=n3{7KV3x6CW`nz&2-e}(Gad;*K&7wn z<{k=2Ypn@mx8<|JnS(4!=J)L7kJ1uk4w(xYH=igDkf;aKk~R~A;KTS*eyUa+rI66C zyYh*WON|X2rCdc#cPF(3nkdz>_p}SnMp?*t^2T$6J$8$fB#mXgukje~dC;kjY(Kg? zuLU${EWS_bshTx+0#p63ZG#pWvG3)49UgP=Jnn4S;{`fp_T6H(H(Z9T#r zJuYNY?aJ4;^y?O5!?J<->f~m&UWDDo?3Ed&@{T z*7bXwTxVc(uB87Edv)k=-!sRDN4Hphmw$!iwH3 z$${~R1Hj%+I8+GyoxWY85%={$O8ns(#Mf&k}{g570;78gn-O}eToe{%&i{0zM zbHyDJYFbU7?>#ezHZhxurdY_29^;}Mrg(X6MxacPJ{`M>;lk~XI=ePS><-^?Y4Br0Nc~L=0SHJWZ zbwGBp1kv*9?4Sz5?pJX7Z`|EBLMf_Zw7Y$QhNU`f({I z*ayo^dR>$+KBz-06n=ji&eqSC<{yffNU_vtY=t9eLka3&M)WyI-{wOVSsXFRdeeLU z%HQAATOg4t;ablp8RoI6@|gLwm(nsV^5fIS830uJh1r57ljy59Zg-XVOLn_Y9d@_5 zn#t$OM;D2i7To+aZZpf>VFHL}IpLu1P)+r6Kk3P&Av{fF*5467ZymQC2(?l9m@oHb z@~?sc^8w}wW@eAv2TT?p0}#Y%Q#(1Jf(&PAaA+3q7e9yT@Mh&dyz_lCu`#C&Lm&0? z=8G{7U^Nd(UhDV!Qzt>kE~F&-W&=J3V4YLEuYNM-pyYwUbiZMoTjmG>+CsN{s&9icQ z+=gruZ3-l1mlJi8tje!6_1!a=sO#3 zEEd0+*H2a-z=44iDQNAVxX!L6;*1hWe@t|Z{s-_yiTRMv-geph7)FmBF^Z+b;%T^Th?wQm`6k>9zLv*F z@0-##w4dU&bPZeE?_0P3-1I=Z{rRUCL)0x8$|q*qGr#;=0)9u{UodO?_vrh>Veq zTDC`#P!j3Xr~|wzV1~1aw=WEM0-X20Y$C(Hqvv`ku?+au6p^)6jJZQA8ZIoKa%F zAXI{eJc*_*xqp=}lB=x(VZ|MRuXUd%#n8%&ae9SVqT`nZ{3ZfO`v;Y~&-+ihIw-3( z2&&5xYSL7|=kNYHl57XPi00a+X?MGdy^vfw(QZWLcLq1T4nX}Q*783KWrh-BQT3T> z_Fa9ILi>u%t~;u_=I`sDj;Kbn^BzJ0rOQ*}lGOVie2!>^kW+LC!;TUab01?~S#EWR z6;S;7YJo6&*YluB>;sFlAv!MeEd!xw4;bb=VDd9e3|#Vgx~YN!ZQOi$v@WecS5<;NY`@a9ivtmB87c9v*7AQ78lQmeN-0^IL0;Cu?kXaB6{So<@6b%}K-@{#T*DR8=r5htHEI(0G`k-Bq2^gsXJj>odNTQdE)oKkWr9@NntFJd=# zdTwps3~jC@KS>)FO51E+)2sBfGX+}I{^~FK=8I37@+KnC|A;b$Ea}@2C_SG)m4XpB z#wPl2%6s4nxcdQF%RXfooq(^A0Fxr>=C^`-O%y+&>|w_J((+s)w!0B1SiV44i(U2M zswPAE4P?U<^wYVRC#1efc^jn1c`M%c`<#rst&NSpA%3A;gzpM%mvDrfB_jKk#YHSD zWRj{gvZfARm#^FYWo8xcUV^@AcD|@WAN{&j0T%@$wGu_h0rNm$r-Q)bldP_asgBHQ zoa}wG#A3T0IG9*nDaRM#aEE*{7Vc)O-~7M#42PG1M*n<$g$>i`SyZN_VuMmF*xj&p zM>sEDl=%&ArE+^AgqHa&rJ_zye}emBm)mw@zux1VKX0#(8i4IQj#7F-zVb3tEXrJ) zqlQa+{ReS+V%G4*Gn%Ec;FSYs<^84H!sD60d7W@fX|GIZ11*tl4`k+SuF6roKzVym zq6lTPGa*UA>w{o_^$NuG!U(EJ3)0niWIu0`H(T}c&l6Y1@J2L}vD1DcUd9(gqQ{{B zRaEP1;>)(LM1hv770#s!v25{)!C~yh*}WQC)7!cFLSr5_Z9coB9qhz9P%PT@!KAx#Mvy_NR#4C;JKUBF?`&Cv!%l7)8=U@KEti z1lD-JKNHtOPtyAWF@>a))J^$5%y*B6&ryuG{p-QM*R9yP$1@*k@y=QGd#x8|im={1 z8Cj4uihVosB*ontSlg!!8j~)5D?LsZxtSbR+LiFl5xZv`!o-JUQFev~+Rr&gI?LJm zCictWG_As4Hwh3jB>L*To~bzt^t`Z}imCAu{>1Ss9$twm^Xwr}6=QDUlHiMu>~8hN z=(Q(twFkI@|6e(1+&a=P!~7n%&q>?t=e^&=q5WRw#)!Nuy^PO7WjmUFJ{C+$hP(J_ z5fd!Bls;TXchr&-U7W=1;w`*npzX|@y2x5*2uS~rqccZxmF>3lBx(fZltJ7;fI!Hk zkpx1BPNMS=eIp@2v{4ahmRV*E<+^uJHGo>Dyx;i#bMj=S;C=UA>v<|K=Rrt}Ze)F$ zV1co1$594K5i(2*dhcVJmGjK~VXvd&=zV;3cZ<+XicmFV@{80Z4|n`L&I47BL~#h& zwqYspta_YD{Uttql-{98R!E(5$?e#?56%!pPf^~>d9aNq2DenM`)sa}L;I`j<+Edc zr_B7S$pJr)UToail9V4J+S;wEf|Foyadw^=P|7C2P^nkc&R1Gh-HqI+6LpU|m|UiR zCf3jTrwk3s5f7GE>Lh=>>?)|vkfP2J7h&>x>1)DgiFIvvLy)3`odgaye|Zx`X#>IS zy&==*89i#ei+SJ4j~Hk!=fm{N_SqZ@w*vi#_x)dTF0J3!)gT@wquYFHc=FEbci#K2 zvR@#T)wxvvn`_#c1(8{}%MX|2>YdULy}YBJO`;Ises}qPk|+xz63h`)g&yPwJ_7H& zN6wuID{CP)vX#Ev+bhWJg(>)vpWE!xXw@S;P}FvgUb|QGIR9R$7sJVe;TikKJl4Ba zAJz6uok1?&&I_%5Z?DL>96Uxi7Wrt8xCw#yckpma0}Z){id?JOPrKKd19S5}3#-}t z?sgDPwpv2%0?B)HCyF+S%s%lIL5UuHs&51m)yuC=op7^k)q#W5z6F2j9z*h&OFq<+ z#_BEVlS$K^qgCQI*xG4veIx5ynxh4gVU?QM}9UuZ?n1ZaUId z>io*U#7p~1M9}NZ1%-N_)hs)ymgBMht>WnN^=?nhUm_Zlm=^5kf?@)BJiLK|N8XPN zr3(%^?Mlf&s!9-?V*K$u{l3SQk%slNmpgMp;(4c^+2>s~b5b|HQ)9As-s(N$DXnjS z+T{*PX7cjn3m&S}7Eji!<(g+URf>BG;hvTMax!D=Pjc*)(*vJ*SbZ+@^}v76lF?S2 zvqg|LdWg^tqtX(CYGln;9<>J2VCHjIhM+`3=y;6Z>#-e&te&P<&5b)gB6~)~EhT2Z zMBu_KhbRDbb9cPEfRQ7rhJJvaq}2cVN$m(WDCQR_rSw7Oy8;ZnNjGBcxgm%ggKc5VJ{&I8-+u&b9VvV=`@q3f$$E6?DPBJA$$iuqA>_@X7J zelV|fL)-?%((U(ohH-YfHVm~~jA2?3qHXSp_;ltw8vzh6Kc5PiRi@LN?c_QV4L-g% zeGB6~fd_(ZZ4z$u_K{)LALp&* z*DEYUyCL!&ytyXgNWdJtv$Zq0Fxz;I6}36Nlj9*XXV^OK`b5TgzbGH3?7J^ClXd~p z!OZJxE72#^gmhwjqR*kGMy5s#(!*HmYU>O2TBow2jkD$nt}Jq`eIhXO;*zr?f>`^3!oR_?4by+iP8;2so% z^p{KhJv5#|PTBkwvOf^N;fGXpZ+wmujUQ(C)0TIQ;lg^*KUAEwxW{xe{1x&|X48Ww*Zv>x__+8*b@&F+G$qoXRXnv7p)^*G zc%tBdA%_yne&liYT-{JkW?h--Bcrw^_CJ+=G&uMHGFf}K9jKqeP<3yE3$fXWnI04u zJRSO8l$7>DreZ=2pOb`_lsyw2h`N*J6*gXc%IEx4Vz%`6ukcs`%stN*ti<}+nI7@e zd+gMv1lA3nH&jxsTkTjzMG3pV>N1++jkLH`s#wM6zt8Wp<*qI~5L#HDy{gt;+YnpH z$(wGVbnTDPV)?DxYDf?rCm3w6kSF4q7ASqPIjMPZ<+FXe3NWr2Zg4)t6DHT7SjY26 zn+77j-*rQ8L*{X|u7}}|RQ<6dWhf$9IK~0KrM<1u^yiQfY};qM19R#IlLHgld*&BC zd0gMq$4me*n7(68x(tsS(_(`F$>`9>!?$$ZuP0xuprrutdR49)MWA|{SHprdA~y;b zQ6+%9xJSE{c>JBPwoa~T6K6tupS!y$D!(nUyuAe)u3~`9SE{r!b{M`|j4+rm#VN)J zIAM_`0wB(K%vb#R_F`my6ovUvVuAz{M|DUEWlNu^M-7m17qhWUr%ZG<-%7OmAyV!p zoD%u|&m@dSg30NW$F0d8%)!6Ix?w$T3Q5kj`bpQbm)tRu>UZRWf@Z!$E#R@zyUPS; zXeepiUXDt$t~d6uxLECF-E~*ejcXG>x|>UvOK6Rl-NdN*Vt}prf&`QH!BXXy-^LZcPQucxK{nz)Pn3&f@>18>32Ytl==QO)eU?*+ zryxV_V5Hr0fKiU0;&uL^z$740KR9f#BK8{8#W{+ur!*-WS5e(u_WxdOO;@aSDmk#@ zo;5Z4S1cBGC}$5Ey>fFTgyi93#lOUrrh$J`+c0{%n3_R58|3Zqdum`XRX3ID1%Uio z`$FGO&KI31`_0{vssVm$za)r|pAC6(F4-`~o|9KcS`@|I^cR3)w_CjNIK@Z$n%9n7 z62Q5P{%&eN%cE^v%14p-C|aLVUcBR3k}k5YWnUfOJuqM_{kcfD=0SLdQ4-RdezZ^v z$WLd9Q(Sw6NSxz0Xh|RRe+CT$fYbw4F4n9wXmiU8zkd~Z8l!m#lFH~nswoWXCGuoc z^ax&M;10FP8&9^IZ;TeXSwInCMs{7i?s1K*?P9&9-)G=xXIQTv>@j~En(zcUa4#DO zL!Xr>e{cRP;l#A2u))8Ab^vL@bBk7se42mvk*Ke0Uw^|SkJp#@^M1SB$FKrdcNXpQ zJ*XE}%=HxEhV6zw_pBcT*Wp*~NXt#)Io(?zjs^bj+FJ^6Xd{fHi1j%k(a3 zhg|hV_2)gbb98#De%EI7fm3(mh}fO>>Z>EX@AvaG&XYuo zC#v{Ep9Qcz)C6=+h}^HT|6OpBeP{Ml0AX;H;bjbXfOu-xc zJ-E-i66(T`1n3*)HaDJVNEKOE8laXsxK{|y%iR+jf6i>F?jPZF-HG2Ix*~rYG|3+x zVMPdaJL~IH{C(~FMDRZ2Z!hFjCc2d+jZ3x1atloe9t?-`EyA=du90QaDuRu zdRlyfS4fmzzbB8+IfU7y(KDJh2|_No^Z7(%@d=W4SDt>5M-5G(@Q)KpIyYhj6;O_` zw+zejO`ptVSo*{6eUDassaJ893A}@Ft8s-UxcxT9Mm3+$FbM4aPFK(t1@gGp?S^<( zr0;dogqH_WKjRevu+n_2-9BV+eJ_rkBp=bQwoJXVq`qD&2TR=2EuvG;_$`rtllxP( zPh);L>|DxpSX8P!e77R~oS5yvB6;o@4u}+Wxjo1B-G2Xwj&_B~-Uf+o$mojznm8o^ z9-UcreqA~yO{=`u%kmd8uj&aLUcCH-f`b^;0+6cGr>uJ`U(!qKjXyaWsh#LY^%5<2 z1!k686Jw9{A{05U?>ESOjEI>cu=MVq997=C3oyB1)a}Y}{P3OZ=w%c)H|o<`iqG7y z#XmJHNu3+fd0+Z6s*3?9KBJ~{#7F#E#f(ErQYm^{5+ltXtfu%(lZZe9-~c ze)5y$J)3*;-M`y5VDo!BPT%@Rp4Z*&PqwgOBmBwCpKo(p4!erjHh$%0b9%YNoEeAn zgN{EX6LeHi>5f|%%*|!?PdwUH8pMe)sG(07-Tn{H^?h$}=fICRU^so*u>& zByMDZUl##r`2ID^!Q;Ay_%iJ`eohM?jfwlAd z-$D0qP=;xvb_skZq)ZC4Y|KdUz>sz0CgnkU>86+=jc_}DBkh$yhCAyv#Adz;)b3~b zy9@ynZtGfas%%Bh<6kI2nXZMlu~zF_*+y?f=n=2xyCPOilc5*chFT$w^F17pjE4sC zp`jOPa=&jZzv%w?@=*uwqlWwaip2>}&j)j^pL14>@Y3K$;s*TFpeZgGQdRjYy*O>| zoT!@pmt1gQ{PGyN=4`P))OXusc+MGEA{myot&)x;vf^^MJt^vy-Fo+CR4**6U!?N6 zI8)|GILF0QH!qv{OS@JQcRaHmeyNQFbT2$J`E|RF`X_^$^DSVfDNlb?FJ2x2#yY0k zzR8IU&=u<*ylf{>MYYy`Dx~`-VDc}ywkiwh&gF_c%qHI7H$H9Zv|jm|;`F=4X`{6I zAAQEIZ2UbCzeB-COr5b1EjqgRteL?qgUr!)58MXWpe9#p#$TEkXv)?31SSm5#6f`b zg;+E%ws|f=)YJQM8^NdRia0pZG*VyQZER_rPEtbh_kEc(a$t(g%l{(3ZP1p5%w`>4gtT15^HGyOqh0S`0)0ae zMEhCX66gF$&__yawVJ##`Bjc8T$K2bqT2J)8Fwg&|GCSooNO#WL2mO3*dt!m_4TUQ zz;qaCi`w<;7?#SjUx@oL{D5=rw;a!}gR%RA#tz%g<$DIl6Do(ZDBnI#N;U5Mt9$zUL`uj^F2sCfze6eZoynKsEA%h}U7w}+Fi)SCN)GQZ z6fxICa5vss(QbBAyiBOUJUGM+n$T#O$U1Tc1FC+0RwGxAr*icA zT){Lb5f4~=zW=^qW>V3a;g0g}%t>wfK6?5wvDxiH&!h_U)K}f%#~cv5$Swm{-Q%60 z?HfQ(cO8d5(X+DZ?6}5^^Wzpe=9if->xDuGVaCR=Nu_1h=)2KoI6}f>OOA^m)!VZl{zd(z|cP) zx4$+_&+EnTt6Q_`E}ta1ClayN;deHo9y{&G!6%jboU@pQC%Buze&uFq5n=1*|=ay#DCh_(8|q`cy$MEG(D zwqJJ7XIfq@?R!3V=PjQ^?JQ{3-TCaX26L#{0xqwcO3Z}}Upkk@Qu6mT8h$^7KvP0BvrYGA87%aO zHmzr)yFGu1J%`^GHpASu%*(-Zhd_SZ5xPxSP-uDBWosLio6#vQ-XI5e{(eqwOVs@+ z%a(!>bijVTMcK)C8vN|=V%c>8*O%L`gMbZU`6^-G)xmo_9!*X-k+nL@*F(wct!al5 z>)ngU8cpo2L3FD^xRex*17w%yU*W)1l-q&Mc9^L?f9Pl4bnYw`XN-A51)Wdf7; za$sz=+K3?L%DDk{Hg$TMP)IsyNiY1{dP-_gzEJgz4Qe51bvzgIb3cq__Q^O>lZ+^Q z-%!Y?A0ofV8wVs6BLsU~JD)&tlg;TzEdVY}@M*FS8BM97ZGW!uzQ%oCYRFK9DK4@i;uJ8gZ_zIc`Oga7yO zxfH44RuK3G7WgRR>4Xol4WUFYt5#zrQrF@GnR|{Eq|#nfhhufz&cd(j_1mGM3LWw^ zomk=cj#lq=^26upFFYsV2u^k&pP$WD`1M`@Q^F8?6dK7=#3#o9ocnKE$t|RW8yX-> zS~A^q0@SeL*DJ>YGAkvPdUF;opNV~q&5$s%ek~Sefkpo9#Nn^rFg;MgXE&U=XxC2u zy0`-)AM!_1c$KXPa9nRf3tOB*xtzGJy{tcv@Ks?9Pgf2Vo%EUi9$f~f7VT=ux?3DF z+tJ!Z;xN0<4~u!ATqW?*4iC*eHp;BCEhwbmj%FC5gCTd%KLSUjr``T3rP`-%Q{t*Y z6FY|l;4#;f-_Dm_deF^x+26IsCeNqGJ`Yc*K3~Nbx(4N;rePmCN*4{p6U8X5hNa@{ z5_d_pkWa|{?*4h7bv;sBpXw5NxN=mt*F~ldaCs(*hPaaLV+1E(&X?wWaj>^I{vCC* z2g<0Jk$0z*->=5ht)T|?$$%dU!H*Z*?B4ro#2eXK_HZ!a>SBQce0aoN7>pL_P~-E*q) zcL|#8SN}=J%FWUvrc1$LB2WG8{_M7^uoqw4lQ57vW_uEK!j4j&hgLV(a-BNNa%sH!>e-~ zY+t=s#rh+MBYKE0om_~|oEw_OcKqi%4dx|h^M2rd=%mM3M$PYp*(W4Xj}8)=MBFNe zll_3%p1xl@!i_l-j!N1=5dxBMX%G@%g3i+Rdc8A794pIS*WVK z+>Uy0lIF$pre-{DmxG>s_3vB#?=2BQAESbVC(Bb}{+qNY)$ztAFZv^xO0Ek3`M;$9 z_`m=2zulUT=%+qOIw$N7S*;pR(*OD2|MegL<8QuSc=>Wq*eyPNm}`B2BEu7qMm(vd zq$?r8V}^zO#5diCy1oFp4gorMZsOezR8dDVkH>{1>5L#}|3ebvxzz5}b9PA}e0Xao zzc0Q$lq(nhybzX=kDzW6d5}9tkRvCR{;o&)ZZKForx7ishKRA0Zo`?<+}hpy&_L97 z{^rkK2NC@-qJ;T5rAn+reju}$`Ck$_bx1@Q@_GAWVu}*LXjhhkaNX=qwLx%Bb}x& zk#b3z1;08+AT6p(`&jb#P*QZE%EH2wMNmufUT2>ykZJo*ck-|I({u{fG@rt0;I5Wc zg=h5u%%2X?z=rOScD*cbRbTIv^6_Et<&kRzc2YXCt%h3H9Kxc`?=C1Vf9GHKcoi1& z*2!4f+kaQ<^zFVKd-S~XI^x2ARrYJC?msZ|Ji;vxMHJQgJNC9YbcV>8<|uDXhN=;C zJt~&hCUBM#x!=hqW5mCy{kL?65sfknp;0%;QDyq%s!=~#GFw7OavBStrGxh@3UW97 zeVC>TMx6(=qB%ojE)JAoo-fWNyc(7FaHwJe7dlb9UvNNq6cpXmlM!VXX}=D7doAnE zRL) z30KG^bGR3}-xV;7Ps*X$Qi9`HD*BlB3+? zyq?|ZZM?@pbIpg+l+yiXj{8p{hMb(hE6P5hpTOD*>Q92akx(hE1h5Vf+l85 z4V@w9J#_k9M0HXVZv?5hR3E0hJMo_wRMv=J3y@wPXFFuCG6TK@tH(^`dRNr{DN-uqNLv?a z&)g?PZ;3~{>bspg=vWTBV~GSNvrPPtjrX?sdHYSKJ!DHfc08XI9Uj@qZb&Qsjp69k z{Hd`LF~SH=8HCU@y0ZgKT{}f!{%-c0<%#^x%^7p&^|lx|W)5sCJMDVTcoe*{=c=jN zBPNcX2ZDq_=bTXqSt)2&URq z?m}dETe-2RmW)lMrX}8t?bOyfUeA$eRs-?8;2}2q1>NPYuL0Mqh)ZwFNNSY7U&j#N zUzaKNu@850Dd7rhVLx#F+_>?`KM#j~mQo^)!g#|Tu)Nh|@;aoSRaKzmJoD7S6a>>u z8Ej{_b* zbVDr+FG_U4jn?x*hxhyj!=WBk59-@&dMkub+z7|`d(v4g8D050vigxd_db7as}Fzp zTZQZ-rTCYchJ$Ug)+OFUW%C5nj#dFaD!AUO79AvyI{B(?Taph?VEpcpKa_w&^BedJ z!gC-fvo=X5X3W4hf^w4a*^4Xy$&v22yLiBYK~=~;i~;&h4to|i{5|`^bmi|NiTGuy za_76m)r9}9+r_=mebMVSA^&S$IdS{s!Hs?%ebCa;*Y4iGrH&l1F?>IKMNu-A!6AH@ zKW-cm?I;h+Lg-G1w)EEpD#t%7J$ZAew+X`K^G=*SKZNn-y-EEmc>n!&;dY`A|Njr| zUSJoH9e2>W*CI4oXGap~S-~;(;gga^QEc)+5OjR#nolk8fh2GY$Kl4w@7KHk+cy(X z)H@6baKIAY&P6FDDH4~rqpKDqf|^$IS#Z#$fxM!erw(-bS1rl$%DPQJuxR^qUO7Td z)Cf0pa?2@s%X{&1A1|ZNaD&_U?zq_Ed-Swh{Xu&|F_%Qibthwp+PiDVJWi$QXgB2} zU>g$II{;*^VCAHyC_IiV$_{_!H>-?L-q5ZPAfenJYrapLjRqO~ z@;D#}sJ$bY>xZY-h5qC`Cke5(w{>U*saZ4AU~n3=V~b_jK5FYUyCzLHcTpJD)e&;@ zrtqmZ2<_FY^v*Q?@iZ+wlgwwf_`?p(8xgv#!v@g{89A>q9mk1t`L36i2xb!)b?$>Z zl-S>fA#1L&1AwPvWb-j1bqG}Thai^deZQBtRAIjTCcmKaTFKWmSs>YW>pM;CH)QJ| zUgffNd6c!T5MI@ww~XHlPs0^@{|qk=tM`99ondmM?ltCL8drUr$M?(ioKfBz?uvK` zOdJs++(}-tcmSxpcIs!Cmj8o|p2T+>NRj*v>=<^81##0h{A%F$?uoFZs+b z($y-z1j&8hJ3{_JU9rtL>aMKS6I(C7q_ozHy1Y5ix_K+Q}V)Z^r&b~L< zo65vHEjo;2IM{#rW!bbdmtCzN5*?2CED-x0-SJ8$HPiLaN=rj;^{vi#6xPIRxmp&@ zBX7TT3inU)M{y5C%ZS&KIH|1%P2gZ3zt5jj%qAa$$_VuaNRAhr8rdOK!DD6Sj>@tt z?N_2d;QbT$;MH*eA#|d)v+fFC+_L5{08>Vq)B4aJl9B0?jns*`2!Z`YudO=7sP5q; zRATGdzd?0=lY~kZZ#B4(FCu&tB<=gLzMm=Xa|GWd##FRRH!75lXDEi@lahy-dp~XY z&+vM~h|&Id%WFBTgaPKvXj^k-N{{bmpRMD?TyU`HQM5yg0{^GWV`m`Sh18B2tT!j= zYAMNPQYVC@Mtl1lJbm9E&Fjg(H20k=pAfH$uh0Y8ZWM*`D|Rh{V;MA1f28-WR!-4rFi3#<)v;i3Gcs0;AKK^(y9e}vce$! zuRa62iXT|<2+l1`tFQAzE~s!GqsZ`KnW4V>VZRwVwF1%#RMA83#2|J3al4mNf^OI$ zRf8DrxLQ*D`tp8l+r@^HwF>Ufx%{;$CXOQl+%8C8FWJlMrBSVv(XV>chu`U#IL9@v z?h|KmQ)^;&?;>M)Z5ejvBcHGbf@F_LaL_)Lxt>vql%w5~Vac+L#44Y0g4x?U-!pA` zO^WB7ys#XEOZua6(&$Aizavgh<{LaVJ7w|vFV(rQ&P`6;p^c`VE|?0;9x8>Q-IMJi zpW%ki_TmZ0*>u3%?~@7l{aU{~bym+r266_7(=W--K{~~|dkw(GJ8fGkMkTH|2>heA z?Y^yef%V})39svoh#qD0oo}70?EX#{^6<@HARXb~hq{J==Gd&SGpaNzt&{(RN)KW9 zY;wqa>{PusF=#r5yA$Xa zRsE@7YU?DgqP|BQu({!M@`u&=jJsk)T9}O9CGK{iDeB71d(OzLz&V-ocOP`tp4u+w zPwN((Jv4oZrCkbF$opC=#AcMf%Q-LUZ5o{AD<#=+uncz$w^nK<+gT@7Wd!)%L0MB5!F>G^#xHV8)Ox$QJ( zexfL;3RCh&nefV^_<9FY6%_hheUouy^hcpt%!`PupSoQb!!y-*cl=?=eo7LjvhT$- zU*PHr183nS^>~VQ#qy2Pw~4uKFaig;KcyGiL>;oZ*kN&N=r!_q@nK*^hyUe80&z;9 z_WfH_Hl=fr4zB6o-5cebpW2Uo+P|VBr7_Qefyl)z7{P@Lt))$bDqiu#e(r5Qv+E^+ z7G2i7u0)#p@Qw6dpNeXC)%@&{g+{$ z6gHiq^`bwUgAq$G?T}UZ$;kZ%X-5_c+;4H&5LX(OMjhFc5B_@*yEpoJ47y%5n$IR79r)|1NMo8N=>x1CbLr{FF?*o62$0F;cJkTVRqOxKU2yRk@JwH=dPu#=iWeep4+CHdvG z=I7YI__5;UfSgQ+KPu@@)P@};R<%Hy;QT}$^OG*hkRM4rtx(D{>p9p`~0MDWt`5~ zPqJ6K13zHE&#EtA5q{xVtAwAg1mMgRZK$lQQSKg1hV8aDwX6Zgz+ZxRgG_f__4*sf zTmyQWDa6^Eiv-mXZtpL@lViQzH+uvzVVa-oJrO0DJ*~Lfpj&ERsu7p4^gB9nRZU3} zTW}D2voI;?`1&n*H+k&ienTZ>!}!a8t!_M73HnplMCtJ0H|Ds!_4kZ(k#z?6;u=O^ zpCpYPdgDhC&WD9aelm#|w}S1`A_JHLR`pe|H)<$Hf;H+6Iz z%4JV=eIEKW8tZ0$f$1Jrxku4s;y7ne>e90zusA{2ly~%B4xiO50=muf2+>1Jp>t4* zlMbg0{mD=Z0i@ss5C&ub@^jC_t160N!TqdnbFesrr`YMk(bQV3bugtbK(5E|5u>tm zX}B$`Nrg+4zgsnT`-gV#zl$cN0BAEedOXX;Ww+z)2rAofH?YXpsU= zt^RF0{5kaKT77cherb9-q=_=hVb?QsNJMhyU3xvD7U4zhT?CIK>QyYC2eaE1pXH_I z(D*)%kXun%b*m*Fnh*9czmTO3C3~25P@t!R1d?NL4v4}MUT|3$&*JBg%})~e$%frb6i^7X_V0gA`nz~v zJP_B!*;!Bi%Yl}D#VuKF8~)9j_H^%Q=6Ct@C%)~lT9`NaSs9+kVNd&{^t zb#3)81Ny>cZ_JgFQgeNCGV2(rJUA<2P%~Hg=2K`x46}q(=xvv z_WpMRKM<~<*Y`-AuOHSA`&++$QmuIf`>VB*&h6F<%m_~cA;&I@q5O`cL+a~g(VQ;_ z@~86JZz$98_AKXa+(jO_0jhWdxWLny&ivfOd>8q95k9^szIK1Y=`pFfOa7X;*7{Yb zO$dGWR|HKibC|l)hh23xm=RT5gB|e{oJ*Zb>Q2&ECcHhZVYl^F`hlXsG^nY(G-h)p zl%4lv>a%4 z*l?Gxd`ba|FjP|T^EK5$DD%VLfUng^`yj1hWbe`G~PC~3^%mt|{6O0D0r3-7BEi+)8~ zbs6B-zN*z9dgejat#tVJi3bT>oy5K)IfW?mScI&iRIxhX6GxC~!t|okP zz1XWbkeR*sjwryq^$0}s*wRUQAmlrve`cDw&WM#GsCsE%1>zuhfaJpaafCfBzk6#T z;9U7!4?!Ss5fo-#_L21rs0maU5))+Q4QN&wlON=4h*k?4>B=HB?mF`&jzi;f&rjAs zPF18_r?}gJHQI<;99l!p-?DMpQvLYS$m!la2<<6e2X12EnQ&RnLbIvqu45A&gr*}y`o`tz5|oI%Scuxs_BY93eO z06LK0y*n6=lp|T;z=pzpygYKRV;t0bm)d2R)+_JnPXe0<$)#;D#7gq^BqssT@FA6q<v^JI$Jc^W}k-*ouTTV+{RsaLvBB(f&RFt%#+xKijeNzoqGIx;9lK-Ut+_Vf{QK% z;8Q)HO^4rEx@U``*~+O^fbWSp{Tk;Vng6`I3*6cxdI$ zPn1SQQms``%xq|;|m&OFunE0DdKO|Q75{_X8z=SpQtd@qY z|NC_^-pns^30%vSiC`q{p$=4RT=#A3>N`c_)IINKKJ4uz*cUMvG z57>6T`Y)!x-#c{?>S;Vs6Xu+cW!)*GcYXD3S)uiMG|-Q4iM}8`XeNcTeBKw5cTU9} zi%iV>r`3Qd0MTt=^{F>(2$IXT0@(%+4VVDSvmC zu)6;2;-3?VYVwlWC2Hgf3u^_jD{{#sLq(An0X+>4&7X4uCtp?YR2hS5z$!qg3(A=*tC=GoaWh%pQckgCD zu6Fp~(1C9y)5Pa9b12r|4yDyIaf~?Rc67G-NEGKG1A?^E`Il5_zioH9@6m?1bnZjDeGDxUY?f zZkx=Tr!&XFfkCW+#nhSd6=klQOSaJ~WAZpYWPz7VeWwQ^bgXTSc{tZi5YDD&3r>?89dF`1p58 zF4voG9rKiP&S7gMQTUwmJ9z9Z$_+0$#&K6HC_}y+wUK{gyco&nsA2f`_`oF*A}D;C z*^F-=+wAz1l*daJqN+T&MT#Gkh=b!L`BtIVs1H4VEM%-pTBgqi+AeO z_H{qzMp*l34(ubJyiCv+K9w!;lM=z4@S?xE{t7Iw$*!`efI3cmRg-_yxAO`eg7@6^ zw_x$~TDQ!A?^x-IH(%oO-8T0bZXGuyW8GhW)$Z;im^e7JVF}lzKa$urFRlzrH>-+o zLsBKL%YP_qC`0y(rTWpKAiUt= z+3BrAf0k&2@WB1{-BA5KKGI#N{&mS1XJV$2ATGWUz~cjy7B3@xN^4d z{bdA4#WlI&#gv=@WK!9*oPOCWZWz9I>l%?wxBiI&Nj2fVvFt@E>7#!<-7OJnLVZ^I zliHVNlm8SM(wn&0~-$QfO|7f&9(|^Y$?cO?u#pF#;dGb9ZD^czDrelZlXQP_bJ*rLe%7wW0%I$pW3gO#DzSqxBs__=?c-gTZ zeqsQ`EC>*Me(FTl928(LCh&!~aGawr`4%&!PjPagT~^Vv2_r{pz`wK@PqPwi**ZPD z0;G7MJ{@=0*SFjGeBBy<^R+P`dqa+&UK+4`Rm(CP;{$Cx>wXuZ+u*d7w(5v*Rth5l zYP`s^=1J1Z%~{+F9(|`V3oUPl$@9L5KkHy8+I`uFmex~pdltse zxoEDdpe&LR`{$p%W9JFG4|p<3zjl23p#!=4=%}P!3U9^6SNj)(DBqIV-b+L=58>wy zk2ykA;h=f{}k<`tXu-`e|zyA5<-ffF6@h zC${8%>tB*uw`9@Yg8LYe2{^raF=`QJUw^F7=X&ak96ASa`p)TLdp$^R1%pzC`RFCNpN}&@ zI{eeajB>Uyt?lEkjl=lsd+MI+BIxO3i{MkQeChN5Ass{({l&m0wn-04n6MKNL$(+=Y5uN9*7!L!T#U?^!0dmCE-|X;y0$e~>bs z;^6iIfj&ijy5vG+r9^=N2~E;oou3peg^6aZ6!Y(Q{}(x@vupMi4b0FdM3}mgJf8Bj zHQgm(t~k&+C;DczcQVbBsAlCK2Vp`V1W`6+vxD2pPa+QFC&2vWc-qz^*!X)K70WmV zmjSnrLgJ?Ce208^1?}z5RmwkY){hvzJD~{fPN*iHi!M~)Avg@n%83+T>Eqw`_S)BN ztQ?)Qrik7;nn2Qif&vfJ(%$tir>I2fOn=V%F+;{J9I=f_BheZh`98MysbJI zKhNeTnCblvsGA!=pP66=vvBx_WCCy8eqVk4j3_X5m!Q84&(kG!=F;32Fvh-a$H^UM zKO5FH!guZMd;zlWx!p&sIX#3k5ZXuSC$@Z%U(ca=$uq25@;mpwrjLXK!Y6$%dm;b^ z`xR3ZBF#ULvd$<1!_2=@$TWBq*IsvTpSRigAuwF(%IfMU>wXUQeL9|P6S(qY=bj1Y zxFO%tpGpQDPEk#elJ4^2VWK&VDAf5si-K3)UmI6}SqLVLbEw|%1U&TSHadRhdvQ5Z zAePsz^;19+91!wb3@7SR20olyCqfh>A_2K*47)iw`P@V6H`$Ir+pmUrZ6{O+3wP8Z z%wEHO9C=IEidGnZhb5c`?v^K$J@y9={AGHyA3Z&nDEC?{+jX`;$r?ZONwY8vDKX^Z zly;ex{+#qyeto&NeRw%-fMHdRYr%^7)feXIoyOuU#s{XgAh)4+wI}OT(&4)L`w|!m zry^OgPNaSRK&?x6U#rJ*NM4* zx$Ka8bKfE`LcdgKtG4xk7YRz~D2;N(eSz^YTn@?@&c#sbbx8Zgvn`IL>o@V_*LFuw z6V{h9*6~CIBL-D;ZN-DHP~LY#I0KDqJRp`c?V1cxuv;{3|DCfke3;I|KB&J3whL;p z6e8m<&%{0Y339e@NP<0oQ6>GJoKFL=gnT-|a2-_1PLqyX6fgHjsXoF7)TWPn3al5$ ztXg7WhrQ%b@i`sB@V%R@H5l&`3L589OOF;ap{{QkFziv#9~7!W9`dKunkT-a=+8A? zelIl)|0f7R?q`FwC4GNSur_!EPQalFq+nhGU}yO~gRGaq2&XzZz}x&t<>H4N+$G8n z{shmfT;=ao!S&WV>T%}`^RYKw8)yCRh*%h1LybiPbyNAVkiV!c_1il4Fg9YSSs4HY z+w`eS5KRpDZt(N9!UNyz&o(Us7N^isltQm%l<%i4c5&tfat!mfOH1>!I?h)MYRAdl zxI@F>9@8AF0J*QQ5oKGuL&FPp9Xdg)QQhO8n8*J93e{I`JRCQvFC&ag=BBW27hs$K z3Fe{~m0!Hbt+!tmbbISezW?nAP*>)kbC*9q6qkq9h8fFn* zZlO2>fX$QH3^BFbKZf$!2VCZ76X?RH^xppNx0pCQ6WTy+1~_54hYB7kZe|MfI9uLK z4lnEcOZ|UI#iBA2pYg}rJ%A8S{U-qXRPBEx7J5rA&eZsj~R$^w!rXL4Ts@4$6Z` z4>pBS?k2?Bjf~KA>CjsbLxb}-K$^PBq74ed91YZ5FAbkT$K$w&7X4abfqS_60ptY4 zbPns$+CB*qYipNrIfbmu9|f@(sFM=30xUe^4GcRKZ=ehJtz7_P{Gb+r5nuQX2G6gG zJ>${OklgQB0h4lgAC2P-Rb|JzBA8*%Iy$z zALBYvHu}7ZIsnlA_5L@V6PR}NeaYYK3Jk)BsQ9CWB5;bzxcPJJp)Ar-aV8wzz+epc zWiM#Dp>z03S2~8dMN*tXyEpa)MGDN*jt?w8j_(+o3S5#sy?(+KVyeG)*KBL9UJMN# z;EA?w>3jW)K>5wJBfP&8BY3pbzE!ei_wlXN#s?@NOgBTkYv0BlbaNJL!{K379P%;0PYs%G;~I*u>klt=tq9*VAnDc~elJ3sXG3PptQb3EQVgUGriLhY`4gG%Cluo?*yr zIZromBbu2LW+&n~AMa(n2YYy5fG_wZ8bE7A&{BRZovwx>`d#dCj9a<=yU{ohM`)}4 z>9eAx^xKb=B-S@T=_Ien3BT$qxEmh1&CA zp)~1yp~B31Sms5JFHA@!xEJiXGz`iYB~A!apR4Ux zUF)YEOg*3b0dyq9*N1(q#?N_H<1_akf28qJz6E_>9|<^Qug{JE{!c3RxWM1@-ss7P zXo(y705DS%!9j(373 zW?Y#2HN&09G5;mf?fG1s{PeHg|Ll}xL!-vWA|302y9}u+5$_pYDi8q%l<={Iaphkz zYiok=9Dx!6a0F<)D6R>KA3g($&U@}G6ByS36XfC5HC>!hmEpW&Gc@R_0bGBb#D3^u zfO%;5`Wrqnoj^i9DUbGWySPATf@k{ejW+{S5#WqlLPaF8-@6@7?j90A@+oj6?2F3+ z8bOTl*wxXeo4n$jNqB$2e$aFCLRdl&A-oVOe`X-tlD4aJMiqT4<{zIiq(!zJ@SYxj z$vvQc2(1ct(K_E}yW~_XP`)xyl$4J#sxG8VLGiB!F+v~$Pz2D9i63+@9N4~y6YX$I zGwFNM2qbY^%^U&w>R7v(9-r}iK;K)0WcFA#G-T%7-HKoW~vXMjl{?(kHpE-^L5s z*yfB6oN^T&_D}Ae81-#DGBtJa^+WF6Gaz5Tes z{7c28OW5HYqV`fTajz9~VGHrN!=FsZzl8I&wJ8$=jftMqv)W+qhQqcrN+R@_AjyVY z)$czBmGXf9#|iHzY3wcsT>B6ME+Mq?Eh4XFpfQ1_7f=(ck7T1ao@JEM4QKN3*xE(~ zNK*{pCCUocH89I&8i3$hT`~dzhjo%@i{MmTY3~a|{(_GilGzhtCwOKdDAEAy=9bu8 zE^ZGFHuLc2eWVq@|CcX#y?q$dyhi^kHdA$Z`5ShIj@!rvgy&AUgzV6?qo4P^TJFGe z%SF7xr41=wcw|;g8D;RbA>RL+`GkRva53=7KU;Lbi3Rxk=(O4Ai@EEobwKTwTw!UX zgBLuwq%&*+MF&AEO*=&IMR2^aHFi2a-|Sq|58(zFdc?u;`{}j>66pi`1-cg}Kz0f~ z6niExlMbD73(9ZS5r{6@cmgyS_j#p%Bn^6*?*lRh5+2_zWFNkq@_;^q{qTQyL?S8= zIB#I%j>*nUAMY;06%$R>w|b~4|CRb5@kt&a|MnysV*^dsC>>$6JRcEICdT6fJ%FUEN+ zYgVT$9)>pz8?0R){Ps`6U*PI0|3`{V(PDrfGWR)O`Qe+0_ zzOWa>gf8eK6p_hja3naHHA26^*BPW3x-H~~!)WBKH+7q!@!JCFqwjJ${3rrhW%n?Y zdu(uTW&ihI3V8ms!~DGmlfe~1o52a06(NRhB{)=6M2+g=wXA!Yf0tDQjMcXKeB?Yv zO+!Qup?ll6`C)0s2A6A+mNJNTdi`7P6ujvI`PjEL*({J^0;Z?}9B01>?^J>#tm1w{ zMYrtRp9rDp)C^%$015>-B56l#l?%97^10;T0_{R?y6R0aB9^=Cq<%$+ImO}58+p(w zRKNMDLlp}KCj2ndI%=CS-*OoPm8J*dn1rhaD79^HYmv9c-8z0$jEd|{96H` z&vZTBRVyaXy+3t$r@yXM{D}E9!T@002?T>shjo5cIHXiw1Mlz)mTKEaMO zK*8^82Fj&3>4BY70p6bYGo9giC*HiJ?gvFDCUw5? zWqJ1b`AJ{rA z3*3J+?uBN%M#9!%^&x$I*q}uY*mF>D2$A<7`K0L!=OzD-KP?pF!a7LE_xVUmvfUAo zLIA_{4Sh;hDm|{r4H9`|5n=fPUzG?^N;|^skruZ7O?>%pZE9Q+gKd%r!{j6gEc5 z-Q3wXZ14l1Bz#B-(2G10&4*+rQUS2x5?ipZjf_9EL_<9`ma}M%UNWwsJrt z1*7b_*6dSybYnq4m@dc%5}M_$h0x7@!9#-PS9$sAfy%~Ob=!93ndTc|O;YtlAevBJ z3AkzBeXha#eg!h-3EJGhJW5`E)~2+WmFb)5gD+6~+BK(zS*oy#d&ESIju4M!6wF4J zX_hF~?4|**JJ`jB#}DZ{8;c?<{4{c}+${0ehLm_8&;cJ1O?KcpZ-7F$vRLtZ0dca| z-C=Lyc>u@}W&TY(q75*5DKTOMw>$RI!sHthB+;qA<7Y!?^3B`kyh}k{Ux5d`>2zku zj82E6evt1m96w1udcST!L6E{~W0J$h;etr}1y|6iQFyq)Dn2T;8)@Ui+~n|(^K3=( zAgji}{<*4E3ryL=A~5e5%*Gf5F5jQI5=j&_(WwFQ{t06rk~W--5Ol+EGh)%v5ZD}` z8UCb_ozJ5DGo7@!J4$pYKJ+A^ige%DF@)~EDzyt)m_{|7c$0qW1Fj3gmsJ}X;-inh zM*ymCEq{vFYQpPK6?J0;E9VH zEZ`fc8pf3PIWt^Oy?E9Uh>_=b8Xy}am~iDB4O8Z$TO% zl<0OE;VMmI02VAcXdFFp8rKLi~b%PQxar9fBJoVhZwYNVrxA!MX0PwH4)5SyQO1NZx4!yjy zRdc`s_~ymn6oFDUE-t6yh4#-a-uB7VgbIFHggCq5W5E`Nd;W+B!_ErqLf#xlU4iWi zz1|!SP^}X_V+3V`qJ_JHA338jlC5Ea0YVaf*k;2xa|DuwGYPU5fO_X2bJig913
A4__>Bo518G?;9=ND4HrNC@Id7 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 ^>_dMW>x{O%5Ir+_BQ#d zWYGLp<3L>Gv?~~=9e?wB&v8Vwqj|tf2{>oYuV1lo*&gpjE(VL>JyYNh84D=ZS#GmS zvS-@GceR{Ch0bA8sXQ$kb#B$iwjhVze5{gR_EW$obO@d^(HJd7RINNqUYdake=VJ} zQ(UI_!;5R93$eYSod0BCD!F_FC}c7cV5E1YZLYWO3rqcqA^lhB#*jvQMjT>)_ZkT2 zaXu-ZTR7~pa?NLfxrF~02@_`V?yly`V5PS(Ygqf4$}}Zpnw6O!Gx?061te`9kX#mN zMy-Ed(vB1#9N-A#v5ICILECe7m4H*CwBoAoN`I8<@b76BBqArI81p1Slj0H&pk?gF z+hO(X;zw!m7epD&^A;MjdDMbX%I^ zS=sx$oOZctuKq(gV^|GbBUN}4R-Q_!fk0p@tKgHkQCY95{tx(^m zaK(}L?H}JZGrhj)S$QLpHvWDoA{qPqugy@$yJC;J1xhTS2Y>cI6?J$k+2Z}rGx#F# z?rK~D^ZE6BMOwHZ^ttncHS_KH{{E^bdZB5Y&+SdSEAznX1&a??e(#0tleYfjCLj6j z7;Xgsnpv&CekT`4p!Jb{B5Jz)(atzaKGBCjDn&jAW#t<5K_R?F5}uoWEX3>f8#&{; zB{FmD*!c0=&oax?kFEGV?f+@e`SdKwU1CX(2eJyi3km|9svWaWl!c;+2SwCQQcQXA zHqx_L(P7TWHx$N`oge&(7s%HQK*Ud_-9tlD9_7QA;}7i(2}r+cu2O?9!EqOcy%NFa zV{4c)XfNw?yqm{Ql~pw7G>4Ohl0p8T`=80-aazf!L+=IN+WcKvhiO$B25m}iR4z09 ze6O)1ME1I5ob$KzzZdh}!GP!7%KXB$8daTp%6iQ7P~VGd__U+5V3(b^eZ1921Lhva z4=Ic^ne7g%BOSQqJGkcY{?y`*IV5o1#}Sp-qR#I`_Q~_Bh9lvPU;>nY pviHqgW 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

3u-anMe%X| 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ξ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ⅇ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

!+Jl6e*# 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
Wedgws!U1fDJxB<=@1u4pzW-ZO5L{Uo<@@Sq!ud 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

B1@$aW!{q;@;M-!gy5kKBAo@}09 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 z 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

=5B?}Szv7s%1p(8t7;#lKF0jY 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

QfjG1aJ# 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 diff --git a/agents/meshcmd.js b/agents/meshcmd.js index 69067975..54913a07 100644 --- a/agents/meshcmd.js +++ b/agents/meshcmd.js @@ -46,10 +46,10 @@ var oswsstack = null, osamtstack = null; var amtMeiTmpState = null; var SMBiosTables = null; -// MeshCommander for Firmware (GZIP'ed, Base64) v0.7.4 -var Large_IntelAmtWebApp = "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"; -var Medium_IntelAmtWebApp = "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"; -var Small_IntelAmtWebApp = "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"; +// MeshCommander for Firmware (GZIP'ed, Base64) v0.7.5 +var Large_IntelAmtWebApp = "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"; +var Medium_IntelAmtWebApp = "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"; +var Small_IntelAmtWebApp = "H4sIAAAAAAAEAHq/e7+Noou/c0hkgCuA0+pcchQHwq9CeXNgFzwZlrmcc76/DWpANULihJyW8rtfy4KxPHjjRKvD1586QVCbRly/sn+DzmwEZjXyqjZJHEUPSI7Arl81aIAMTRvifwu+zP4N//os/EI1LRieCwwKJQ1Kk82++ypDVuHMuezlBtfmpY2RFjXoDk22MGV4OfNBv3DG4Z+bFgd/CQ1mpdINmJChwcJwJX1UgW2tJGZSUUjB5U2gUWQzTiazwBBQxhuo8GUrq6DWWGYzBgaSW2GaQ4fnp8/535//8vsq+uGbSmWEtEvEda7YpveykTawDv2zWqIuhVolNWcMZVoqol9Cw8UmAc1BPA9qFEs0vIDnQQeyCzvUvHSGHX+NyVVr0kIJpZNcQHGT5vSn0mohWbKquUGKqSsuQ6PaJBoPAkuzP2kiZI/hCvMbbsh0UdRhAUKohUmkknirWlB4oiCwGBU3tihH5I16fUzaTYUTwVbw3lEjUi0wxmWVRCSGHEXPeNcK2NB1VXEzXH3FJVMr2yPe/UNflx4BXHFmalcIh53UtiD9BKKmBAn6Nemd8y7iFpIl77hB1ttzyLBQGmyjues4n3vRaWlNbY+9j52jMsjOzs7SbR33+7LHcWtcF6xcP+VKML8RDkp91q79Poij/TlXxqgmOSfJtp57Ea4+JMD5YYDzCT6Vr+3f4nE69Thsz7klaNghQZLUU8mYu4XuiGyruDSo/cG4BwDp9oVdTWTXqo7vqlDyNbLUDcowIeNoDEN7fkEsfKDo5DwNti9arSqNXZfDMTjndhxxPgUkZlwe5OqU6kVSoaret83zHPIzp4jfqAmMXUOB0Yk0NNU1F+yxYuzJgQNeIpZIDuVCiAKFOHqNK6Ix8h+qNGaKNHeWGYE1wOVHgMVn51O4cW5dRmzaSG/3oghB8EomBEohJSy9IkwCkrMfz60AF5CEmqHet1vQKcFZcO/z6Ivzr784Em5SOO8suETQYaWBcZTmsVGBC/o8uJeXLC6LIHrwfMh7YHfQE8c+7scFFROFiH7t/8vb8bCpfvtc7tZ+2LVQYCLVSkObHo6CCzQ/aLGT+eE8Rj7k1F/fXUUkivrJs4ekcT/kdch5fJtYys0mtZtwyKjlYT3m/RHhyQfDnLxpm9+7PLmcX+TTS3WtRmD+A9t/RExwxisa3qAe6Hm87kFeAMZTv1FBno2XxotdFin3sSecR2/ewve+uLTfk73rVdUuegc67486+VYr0LJ/U6wisl9kxQsl437Ii93aY7rODjZZqLFFsA/04ZOv2709JQstHvtvUxUvx7ep/3mligU3gTD8Lj3V41b/R5AJExiIsbcJYXGLkcnL170976/Xz9xurtskjymAAIs7YOG+us7IoZur/ubsTrX9+RwLlVf25nbbR6oY6+ru3PQ6l8mzBsd1kLIuC7fFJBxdLp1ORxkjBBQApmDB1xKAvjxXTXnOml7f5rvwuKOgUsrxAq2r1KwU5jED34+I3WtbjrvMktGQwlQnlYPU3JeI4pXJSBtHNm1brYpgwecpES0+cAPHA+Vih4/O1cwx2hPkdDoxcAijfWkyx+XR8qZNkBBsjkRzD0Ln8dDX4zbMXd8Fcnz76Ml3xfsPqjijBByy5rLgpAUA53cF+V8Kmqo0n9XoAHJTJtVi0yTlTrBgOZDs1t3oni8jYMFJdm0zP+7uTau/2oU5Edc5HL3kuEyJCRXY7dtfbAcPynZuGmDRwAi3p4n8T3Y6v7MP/mK/kKF1CKxiw826Teo7tDD13EfDG9SpJn0EqS+W/jDe6l4T4407kJ71DJV0ejWB0kiiqyAigeEmr6Iw8oSlDVcGHKuhHhespN46cyfQiL7IgpWx6h0znK3hGNIA/8rHKSzQJ+q9g79xnMf7q/D1tmQ3TlRcdxK9l3F5Nr9Ju3i2XZclJtFFlnwiPUmufPcjKEimaFqOxrm2ZcYmCfxBEAQIkPazMm70wQmIvV2cMCzjSWt9soLYkuvbX/G0CIMQuFZMdho8aDCYD+xNDxqki+VKfASRgigrltEpl1F+1iA61SMQ+POKgDBA462f7RTxSTFtJWQCg0I7zgazHXFCjF6xfzPnRlES8ciPjekRSGNKjyBUlemR3so2Gzca/oOAQx/Bucpo8z/Ij0zMYrHwE6HoE2FbKQw9FgnrD4d1uwjMqXKUBIYb/GCPsq4F7A7lEcVaL3DXKs0JPmo2gksvEx7Acpphtbt7obkN0WxrL7hOU7j9ZtdtCOfsN7teU7i9ZvfPb7RKp2e0SqdXYjm9nVhOM6y209sHzW2I1nX2Qes0ROsP9kHrNkSzrc4+cL2mcO4+dgKR6t8IuY9i0ZfHLVJEAqWRBX5MD2SKR9KlH0T89aAnvkDhoJK3t8us1fqOYPKhHYIgERFJsc/zNIcQoocAU+aZAbFIPO/lP4K1+BwM4V/MPDdiH3YbQsXmacvn3A8eFwLrZxZkaRyDapyvnRfI2nRiKK3gXU7yv2xiNvufWjHfgn+3TQy791gx9t+5ZCju7iXbf2bxfL7iPE3wNNpRJgGftdMophmmVL9Skts8VJcqy2js8+gL1b0Hbv6freOuIhYeP4tOW+lioty9JhpWe4qUcOCY5lAEQALzqfLeHUlhhnOxbq6DflLzkq5TeknXqfeSAOg0B3SdvRDd5oi9zh6I2fzfavrVXaKUzVzrO0Oec3qS3x2d8oiLv64oexwVUp+e5I2nsqKbJqtEcA7PWjf+waG4dAqjLyQKzywSxD5jZ3l5WzDy5zHFNkwc8KJOqW4VZzJhLoICqELyRRbUzlqCqEXySuJZK/9boC3XLG1NTKXLAYlsjR2Qn0ixpNA4Wimil3NxqleK6zUxFeQyGgq+grL6J7JyEaaocCNnpXIYULl0mCniTQmYhFqPA/2wpZ8Ay453mfow9vj4+PQEWjXMLoKoPhPvr6RplAN7KFxevhYLLP5fQsdDaq+7bJImQRwFT2d/+gf2oXfqe7NXxumCzLjPV+z0xF+TdbbRdSThHV2knJIxZU9ioiqls4XQkXS/+Fn47GeUXCTyXhU8nkrd20Ldk9STLzTh5DJ9qADa2xBxjjzNxPZVSQZbKAaS4Jry5zR7IjPKuVidql626jMH+5XRjJwHgbArDoTlErFcCri/Y7is1QBgtLo+ohVXIWXHQLNsW7sIGtz7wSAsjFG5wVMq4BVb0i9MJBKCKB7IO42S5Yrnd9t5MIGduaJnrZmYCJkFWbTkrVIzvwnfgnNSGCpuDI7J6paBPaqL8n0yZ8sPp3PvbpUkYiCinJ7M882EXDUyUNPQw41lUq5tvbcSa+ao6FALBuX0ZSegVC+rugYNKcxFd6ntFheJwhG592NGhUv//psXp2/3PtTpv7PJfa3vz48RI0Wx6wdG7qNsIXcve0xXcUjmlKyWoc9peIQ0PiJUp4hvH+CxBfv55IRR0R3x13buMo9hTAxFtRM//BIJutdjny1f/r9sFwt1cf15ctmenbcty+p3v4/95GEl9pLooUn7Pmvljy6SVIDQLBNwSZouaUJFDxfrRflZ6x/ngupJBI6Vt4ypzygJHmnwRB5pJjzDyoOtegwGZTQUe1vEw1cq0X3mL6gc6tQOLQK7JRByIh3KRfrC6AbKfmi/oGmXw5eC0aNdiSOPtsZyWUivWiqQad4fKMvYZHdw5+jMnC3MsFnbH8LyjS5fA+tuAettAVsHAo1RDxkpTf0tvAfbeOvuX4MYbEIMt0DYWzWvhgkNwLG2cesYuMlSfW5r/YE8XeBwx5ZAepwGpHmmsXaccvVekJl+1tCzEc0Rqk5I+IbnKRUmlVE2jh8ODtVTmryNQrR1Xovc4O5hM1jUXi6U28SUd8lHNsyPF2niXYAv+T6jDx/I+dVnckfDKMP3XMs04yTNyKffrsh9LjiJGBGzhzNmuF4Z1zsiYo7oNghPCU1gCIn4cU2ccTrvrd7b9Jlm51L6/zUaRlMrwwWoMEk5WYKsNBTy68qLGFtR4ucjCCZXxxUNYvJB4xjFOLPkN3iekH/TvW0pr6XIrt1hWessBen1+Fp8R/3rz2xGo9GW85H6lEA2KBu78HIYX5U1y+ZEpmZnrbuU+5ySS3qvHKLCTLYetMUZ8/s09rMMQ3odiztA3+QhWWQlCzzPgXyBVTnVIbfP6cNDTAmkPYQFGaUJWaQhBcZP9HWZUYHdyihfZUl+7sCeMH1OtA48KE6BVSmWcEw5BDQfHKJGK4mtu3zZfuwsvLSIfYXIkzDiJMutMcwdH2E47KvkVrceetICtpHEKN/o0U8eKOGPFE2fyQVL72UTCr7wg8co2UfPrVvJPHcToJ9WjQ+pmQdamuLQArtm/TTHozk27eRa8YG4LyqnVmwzKBPkcHCqozRJaMBLqRbzAwonhMOv0F7p989axacWSrHeyj1vHLEgR6Wh5vzRs8C4Pupj7TzwSZShbqDX/7zTwE+++AwYgdUR6eTOeh0LL6nPOlbh/9oLhnfLflA+Ca0+181DSJoA8oImq019LNIVo1IjYfkR9Vj0rpbYt1pqPYv0C8U++Fj0wkV1uvT/BewRyjb5lN7J+4KGB6YctTRZfeHAXMWys3y58mtxZKC9LlVHe6fpkkely7G836Ok2mRD00/j9Flrd2T7r8tqqytbL6uNHdl4VW3serPH6J7/ZOjqeVO72tL3pk61ZeBN3WrL0Jt2NNEtb9rVmmxv2tOaHG/a15pcbzrQmjredKg1dYWcltYGsttaW1+0Oacn+ZooYQlM//ex0fMn4T7eHFYXeHyir8KNo6XgTl7DO0MD9Ihncfs85u0xjfcKKAJevMRBdMVOXUsRwbVzEWTGOk9fvI+Qy5KZjMZVsUt6R6V3NfrfIvosZIhfK8S4a7Cyqqd9W1MZLK9VkxhXTx+31lXDyI/TB2Te+td2lIT0BU5yluEqZzKZfBATaLNHX6j15+KSQtZAvun1epVfQJznv4D4xfQLCMOtjeHNr91bvzEQvlYLV1gyR8nrnnp+Y1muK6TDb9PpdBOfyFsXYq0L8W7XcLxUXvdWq/+CvD7Ulkb38eBQqwyViD2t+NDdli3gTDGp6Jmql4bjhK09MIWcQjMEu0IncxJDrMReVyF3+5rs8Cy1xuIcA5DKdp6p01Du95WNFTrwugp+JGRYKXwGAGaTOwIRO5cB5mrer0ioCbgLb+kz9ixMBz1C8ZWA+JB4xZQLW0zv71uNJbpFXj9+pUjO+4s0ShOoOJJCNOO9zGCbkBjeUUqaLSLGojSpl2Ij1F+mgR9XG8sSkR7rz5PXIoChTktUXXTvL5mfcBqS9RCGvatYzmtYeJY4YrwtP7dBw9L3KDVFtV4urVjZn5uvysGvmu+nN6uMhh89wRFuFdcW9C3cPT9eRUm0WC3IgMBv7vyA04yR54g/ktVSLMcREVg0C3xGj4jVHh4RX8ZzmQj9v7/65tvv/uF7f7H88OPB4U/t7fu423wfG+yjmx+bZ3lLvYVoS6wkWbqUlduJ9SXj736WgDYxQs7SRZEI5lIwsvBfSUbZKhbSJQQeIQtlMSY1BH1hmXzIlBGT3CPCwZgSPyZpBmOeSKaUuRjNzex4uzJ77+EUeyMBQhP+mb7sUKWYy0tMkweR1bR6rdIBBDl9niaHB8YkLlkt5jRjN0n8iqlGK1c5gpNRGmrOdacR9MZ5dIdIKbHP8r+QJfYeHDb0ILdZJHQoFw3odV8yo2K+oWGAFEncwGQhIiOJsQIvx5Uc0EKrGkEuu45i/ffYUIHbSEmiTn05GRyRqc84ZVzzq9Bp947IHYUaIU1CGur51N3574J8JjyKllRBD9D+RrNX2V/VzQU87CCTJEjBv9Xby7q8jo5ZnZvuaeVxVJ3xB4XL2tW+4jujLT65hfuqen6Xa9WHGk5+4PNm4iORgYpcQQJORrJdLlU9vR/mxGpCU08WR4uIT+Hm6s7n1LuEr0R+J9BQT5ykUr68QumN0+QHTvIvueDVqwnvhj/STLmHqTfcYa3hbpUq6HjqZcBtmvHSxqG7u52y58GVgXbFUk5hK1nfuxhP2gpondKCgfAQkMm0wWjal+fXJYJ+dLbergDIO9L85+2hbUmcYemwrlOxKvCb+IyGEqye0LbWuxipyD1ep0CS+RYWdrFfnWFn2Os7w653Hj/7r0wVxDxre8escXTHqjEd+z2ygcB23h7uXGcd7z7PDw6L2vCV/yIPTa6jnJowJ6wfcpul91FMyXXTrCKw3f9JuWezi3GzQB3YnXqBy1QXJNTPa1mUwtuDppDdJpB6pe7323OH3M4+acEJ2qG5KuH5ij/SBCoWMLapnL2vkRP2h11KNRpd3bbPJzO11ylD7edPF7ftu1FH7XXX5c7JrdrRKeuY12lCq/MUUTd7lUMbmmu/mmk2OGO6ZuO9lP1kTvkz3G8N5Dm7525YcpPxX5dOB/bg/8Dk6hJzc7HlK0OTA+EB/vLL4DQubuXn2W6yeRmZLoRNQ0q1hMPwm2iD9fHzatSQNix3i8T9nmyw2BbOHPsrNWXn0HZqlVv8UhZSIMfEvrh8WgLwu1nZNaxslVUZZLtv4OrUcHUqXJHz5gUNPqTdvZuG5ZYArO2byS34eRe3xA9DyDV3b1w55Z4K6FiNAWereUI5EbN7auYqHLsx1l98TsWpqiGO0xSnTHnH17OGWG5jLJG1QCmVUx1tp1Ny3yXTdXYfRrCaMAqUkKv7My0hLtuPyPiX0S0+s9QT40kix1Tj6vhV7LgoAHXAgxua8IZrsOOogwVsKRCBZ1WZEIccLKJkxSk7bAjWewvY58+X5IDJQokGUFuCHNN7sahrGSNG7E7HIijqEZEDYk4Ef+gcWhZBlOMau+m8j93032o3v2/ajYN1x9Wy2t7F9uA1iDVrGWAX3Edu3ADfUUa5dlM8HHozysk8TTnJe1jV0DDxxR9uvLV4Iuc+2KuG0nca1VDK5XM64ccoZbf+ilFjwo2jykHaGny8uJkR2WEI38h8Bm+b6UehtHoEdaQGM4F3sgEl+QACI+rw+GpZD4WDTJORHWbmU5DhFn9UI9/bsjoYw3ANUI4gSxxCqBxjxr5MgydprR/lrXsdrjZUw4RerK3PZf92PLkFduNpQ014GXTvxJvFlC5342lDTXgMunfiiWcO89TPwjowdZwJ6Qn7zChwp1lkBB9fIYOpw9ocbTLQMg+ayyFm4Dt6H/vsESy9DlEZpkFhDwFIM8TMv6dXaVjrNooxGnNolm8mt2pNlAPv6hjjEI2vaCXQbGabFw1vhJO89GsNrDJQg9hVeUQkcFOTzK93qsowDUV5mo0hBT2fHCxB9Ys18InmwvAbAu9wj8BryUKGFj/RtY3GJ+PfxtJfa9EaB9z+MTH0utgLv5OAS5onw5gOjhlH/kOSMh4FclAlHqNS0pUY2FAlrvXuKrmAdzzE1hSBzY6mAWx2zc0dwzSvaBj5RPa/LU+LwvAfhRXChgEGY/olCmhVCfZeSpBi8ZQI6uVSv+Ure0fju5ur6nzk1pb9IFTztXP2Eht/A4QnYezNGbul9H+9imi1r1Ou6G80m6eMVnq75QqqT9Wq05Z08LvyRut3N5tA0MCBdfNGX1Qtp6EvyhiFFq2wbeaHbylU7yOEqCt9lQMNL5K0H3Z0qtmQ2zM9NvThp59bhRtY2qMq9a3X7/6BdVhB6BsQbj7Vcle52YemNepq0xgYQMYUXgIhITLXn9SpSM6hSatM/vLTm/EMfu+2zFKeAtQx437G2X+y9h3sieNaw3+F+N5lrVhhbNNtRJ7pmW/qnbY7H8vOI5cAQ8sESNmE/e3vOUeWC3HKLVuIdLqko3YkxG+T9fj62rwDK443CzpzMyW7Su4S2EKI9Xiyqs3kak1DyvtjU3KbbZl/Q1S8iHbV7OLKlBw4e4mSSapA6ST/O5BJAnVq7spJzshoGW7m8WJdG8Xr57MYk08uX0VAsU3pfyL9+vQy4SH+GlX4NpTrcGwG7GqbkZ+CDYFiIMr04vtekNCHBfp1Ro+aaknLieDQMDyDrkSW8p0Tn9IxWSzi06PPb9+IICO4IILEalPWMNSM9zcer8HiXq/DrCLMcnKFlnKHe4eyhD/HHRS4K06r3W67Tmt/h8Eqk+u0bsLdUnvrOY2hvLu0buN/qS26r3wJS7ls1Pnv1mgsc16bdJHj0+X8aUJuyn6/U3WbTS7xM8d5fC8nsSH/DufoATrdhuZ2WknqFjvG/5YdOyLdxo60SV6arFYXm9lsT0DCWAY/YDY09gQOHnDpTR4O5NCTGeuPPOv/+/T+Xe0EH683KbkiwybHl0CTUzclnsmxaSgCQ6TimTaidhpDxw1j81H10YgbdM3OYBm0T9DRugDsEXBWBBoE/LlZFsG/KrFwpRrAPhoDUaRZLBdl1hBe3ecqQ2dFmyW+fCYhwCUMAxltqkpzT15fY8UKIVnCaZjvAMCISsI1OpgDFiGKfnx6Ki8ZhFhMFDQCFGgLLWH8cfrHwrDmEvu78QpXRf8wrJFleBXDQt2D0ZCj//vxDPYwu2LfU2uS3HKZKKoiSmUBJbWbnxQ6zAo9p/bU1gZQbB4K2w97jX3ph5bFAtBSMTRnblRd7HpC6mhQWbYQesrR9WX4WoMvhWkYlmS1OQ3nj2q1RyPmayNCPwTmFX4xxWQ+GlDWSQz7wrBCVmLYMufWprTcZovV1kslw3Qgs9oEYLJ54CL8C14WfSrB7XNefkIishoh21S96GLpylnK4ggWsjKbfpLAmx3kD/PjH4y8GfenBstjPr9NUOtTGcWAzE2t0lTmSXH1zhsM+WfP5t+k5/AnkDgPPePR+WoO/YH/8DSTGfCQj/iYT/mMXZnUQp+vr+EDyvQtGzlqb49ZtUrod0lZD2Xtn1LxE7fnCAFAwG8Wqp0GKXLIPEScbFbjAnTLn8nMFnKcPROU9wVqv74uKGS68hGkPUEZMbDBswcOfrj4UcePxhDRzyS04Zb/U5aUmRTaWLwnDELPlKhWZe2lNK9W9ECBB5AtVyYPVce5Avssyw9gMYZ+wMiDZwIrysdlCiTj88rvz5b4fgreJIpX62SJsoAlygz4EpK3b47gcYqEhPmzGj4gYU4Pp57x4f2nzwYfH47BgPMQcfhk93KzFk7zeR1J1TtKubqTteehOavpA1+8Cctnqelb4olPT5enRSYo6y6VVnUX3WW1elkjdwJHDONqNQSlMNzi8/2m8dunt4/fHXx6/u6ZaVhB0n6WwXBUC5g/pvJ/mSzWHRoYTU2i+vsU+tS0p2G+ZU3ZeDAdiiDfpaZYKfhdJnOM7fv+GD3+ebjTyuzqIYZ+fP70a6mh0NQHBziYa+9gmcOMwN9MbHUOOT4auNo/gMS1gSisKR/KUWpQjrxC2IADC0LzPvuy6LPs6i5zwoI5YcGclJyIrlbe1e/SCxJbQJFOIluh0+T0q/nAt3tZh/T1tJjvkJkdAYkDOVs/nVf1cL6WAprrMTR0q9F/7LO1HDweCvs6vYvX2n8r1+OaDFYmJVaThWlZj1lup7JJx+PcIAZi/UBsFvEqlCexGeMt2/jLx1dACgUTqVNpQxZiEAqnXXebnYbTrfOROHDbkK932l3+d8j/hjkzAjOjnpA+mw0iWG0Nr4VZ8MWIXV87bgcXqftmZFm/NMA5B4GANa8prU6/32KW0xiKzr4kxUpg4EcWkECzioX2e6yOqc+gdsZC4jBmQu1CjV7bzDJNhNlDaxBWzZGQWLnXf4fVMR9Xw+u/x9URD/8c/Tnmoz9NzLPhQIppv98YWibU7xT+zAaDKW/uTy2H1+Gzydv7U6Aa/uK0rAiVMCiDCdrb3HG50+auy5u8y50G+CdvcMfhTou7dd7ijs2dJned4QAWBdYUCw3mjPv9ft09kIzGiaRUDR+KtBgcHEAfXqAdaAy5Ak38dReLHFjCBCSwD8HkfdP5E2RW26zqNIsztXamhSxsAc70yuNsOYloe50uz0S6sMO8vzuDq4UTORLWajjEHjZi8GHQ4z7gQ7EBUka1799PJN46hqNd/MEmxTOG4Wzk5xWPU8VjNhaYVD1RaTB6p55hhRacEUrvsbr20Vczc+9RCkHkR639g9YK4HMArzDeil7dN6wxWHWqIacTy+g9KpIAh/qKyfIUgtd9g0+FslS1DpYezKyN5er9+QIO02Dls740pzjd7wkxTWMHxvfvBgBNQ1e5IdKVMw7P19d6c7ELpzG+NlnRXxNh0F/MkSV+zdlGd0iF8Su40q9G/1cLybJ2Z1SulLhvMJxFQASAi+WDOiyvuEe62o1tIAJrvKU2GYuw0HajtO1GN9puJvb20AkWIJN+qwSqcnZo9H56hmf0DL6g3COVfWTwWdLWY+h4h79WLuazxcr7iWUsSIHy/uoZBkPTeJRvnAgbZ8RGu40TJY0TPahxRoPoRiMgDBvhZpMh5lDPkbReMA28UV0B2Blop29LzeKzeEan+vjEA/NmlphaERbAQv58uy0UnNprRu2lqoTawRLj7fbmwvh8d//x6cAobv5tqK1dWJvxULi51fijhl6PIy1FJRr7pbuDCz145Pd0+TFD4ubjZDZZmyCKdpeNvlYDjr8y9mhohg32pyRZYM+K4vhBtlsILEtPobTJhkMpUw6CISkIUU5QlIMAEW7D0s0PzhPMKsXoiF+dWbFUEyqEXcEonEQeUR4OrE2X113GmDWShKi2ms16k/lqpK7vWh5C60myN7eHVLHS77pmP2Nwz8F30k4qPzZzehOlcgIWrivJl7AhtDjBba/af1XIocENqbIrP5bQAZTKyo/VckG1RCmklVGUsMkQpCIOBZ+vAlxtx7C9h/TJBiHhaSzXMSQiGCooEV/EYUVZuzqJ4whAIAsBAaI3iywHvBH6WWU1GS3wy4TRZj6/DKWhXaICLlFWcFcYagECL89Volin9MGAeg1OrpdBJVgvZWUcX7hYLvjfhTRs6BbRcl6ZR03YkU9jIMG+S+asxvh+VJq6oCQWnkCUIABgiGC9JMFp8gIqWqXSxMW9xfndFYN0QcWjWKcuJcdC1AJoPFP9dh3jWKIiZCH5ieQlsfCcP1JSldtk+5Jt+UbyieQXXEoeSB5KHkkegxjJR5KP5bDU0rowTqC/rOicSa1tKwig+x/odZiRm2iSZkL8qaxjvP8eK9Jz9KGIsFpQBNMK7KwIMtYPzGFmg9/vhws0lFFv6cgwxAsn6c/u0U//5b9DCX6/mkQqSpJkgkvgoyZObU2cUN2Eur+B6mLwl+SPJcd/nkj+lFKaphCVPaflUznugnDDbKn9ohAFu/p47AVbHKNa/Z2ATmVn5ni1wCd0o6SjJV3ZYBxHMxLguE7HrTecPUFRcZvdIwg8Ci95Knk5QU4PA/qN29i/QHc+wTfX4tQWmMxWUDYtI6x9FVJFgWjmajEA4a2awj4YN3DLExNxR8KGz48i8NWuLhbOViVPcyyywPNaColbKJipw9qxFCBdXxQ0d7TEwLHlGGb1lYC8GSoqAyJAUjgDp0mlIIz5JByJlE4bZYyDsnMovfCRhyrlhbVJYKaTHUzuHApJRkxyAvShzK1icrG+wyAVOpuE+BoYDwY4RQ5ZEheZpuagzVtUFskdZWHt5027AIHEP4uWcZDn5PUrbWLqAWmZHcCgajku1DK6lRBJ61IWWr0HjpII1tG2CxNgHHAgMMtYLuPTXLbB+ExgosUXuPmNsiUe1nCUOzDUyzk1WSEaFlW5nePUj/TKIU40zBifC0jkPHhmuRz+t2LGN2JeXD0B8TxH6tCKw+1vkl2+05vrmr4yWLrdR4V/iQLqBD1bA7YAUHEAUqDjlkhp/WUBmqMbmn8x5kPFbrAXQNGwsLD7FOmEYs6RXYGZv6CwIcC2aCKwXV/X4ZPlWUNpzjmUKqHVrDNLQPG3WOnQTQMxyCrRsfsR1WKgWMiwBa6KVUDvNcXy0AOew0qPrWDaD8fUm/Euke0FML9Ofco4HpBh4FEFvnuGEJirVjEi2cNgJKwQe6IIFgl8rwjf0/AiWGhwvwjvp/AiGKEMhyiMjNJGp6Jzfs5y19P9dgFchzl3W2C38LAbmgsdXGV51jogl8Ehfphhtt5HDYyHzMtH2XbxBUENTw+fLnTBUSD2bP+J6TgcSVU8N6y9C9ECSBVYm17ag8g+/IAWHCBTUmXgYq9FVOBqea8FUuqIfxoyLlC1NZXeYQFZkaKjKcj5b+K7Go+L2Jtox9Z41bsKOAdwubO3G7XvuEBQPJErIaonGixUXsA0EszBDUwTMHovUiKyVWitL7X/n4u9h7XfeVgkb++Qz+8m7+yQfw7upu/u0P9L3knv2jv0N04OiIfbN93BdTyaSakH5Wdfs2T65Q+b21EgK2pxdwxcheUW6hMO/GjiR2vH3PqOoDMSlLE7O/SNQofN1GEqP3MgEGx+LUoRBZFNT+UidcsrNajLd9Zmn9R67DnmeGWzmC4grqCfZsVAvGRqCHNxKD58Lcr3JgN5AGP1MDO+tJa88nVztVoOB6GgVQ0jd1KYIb9bMfPVWLsnXler2cD6Wq+BvrIrHYxJYzFfQe9X8bU2h62EHMWME5/xPb4IY9oSGPwrxNezRQpKPuqLbIkCAnS921wvRHF9GIDv4qcZ5jbvWx+H2p3F68faM9qpqyCbkNlyNxmvnaI4FPJGFoTkbyDg8os+j+i3PgRkeTLxQJJxWQsI/WQZXQrIZMgAkaHCfkxOuVYCQDmakIg0tkAqsmRKn0KQayQVPdXGV7w/BpOWQHhGP0oW5L/vLDj5DCd/XMhi4eFvdsCA01MKHyyGGSoiFII0EqcvaFBq5oCDFEoZFBz+rh7nMfisDPwdJgKDv5SD2fCQPj2DOhReJ5ixQpsV2yqdm0t2BzccUh7euAbiya3eKJlldwmOslPpE7OdO74JqOZChTwTNoYz8b1gRMKWwSnko5p6xFP/obt8B1Ht1UHouQ+kDLx6gTLEX4ze0Rvu6A3uka4uI4L4qQRL6g+j/UuCLbaf4iFERW/CPJNr3AOf8TB/dSu/827sB3QBpZepYZAv2Kxpg1+i2m/8TOSiK8EjADE/EOE+VIhlYq04B2fMJ8nJIFusDwEc+2jyfuOgsVtEHF1u18MDkWgIGek746SH+WTvs0PALmsRFHoQWtZQyKrrNngRZgIQz9XqO/CpCZg6IFqMebty6I5Uo8NvgOtVt+ne1FB3UAPzM8RQuM1m7qpXbsNc8Jfr66K7yB13kQel7ujV76FK7rjaufth5SaQTudBOt0H6dw1LW/DNGeD47Z78lBaddfL35aCvh7VnpplQeg6d7it/qUodFS7kEnivHCbLNnwqwsWFAWj3WlQC0FM6t2UK+yZ4UtEuGluCI3U23/K5RcrePPQRjLarALfIRTDZl6J0GeT0WSNYlv3i22WSngHYW8ZoYj2/SJazIsHCpyuMyEOUHtjhjxZBl1h4afxJXL4ThvaK6R+6HS6zG85WRYGWzW0hn6hsFCWZg+punafiIEC2hG6peMS3HEbGaLVrDc7zO+IBNJquh3Id/N5UOzUc4BuHQCtDNC0mwBo5wFtAHRyAAdY3BxFHSnq9Ryg1QRAIw9oAaCZByBLKw+wAdDOAxwAdPIAFwDdPADsaNh5QAMAeS3tLgByWuiIpNtSNWc305o7aEA1OXZK2XAx206zdcx20yzWkGOn2RZmnTRL1ZWKanYxmxXMwWwnJW5gtii5W5TcLUruujrbBazrdNOsA1nXTrMuZp00W8dsylsHq9BTz9BT9Q3y2hHFkmm5I64m0jPwzSpjC5QfjoVMJ0FxYioMw8vmT9WT4abhRgYKpevu4XImXMgky1lIHQvDgD8LCXZjfi5F28YEjXhEokY1Sl5IQTj15xnJOoX1K+Ziqf6OFXKpgqcwi1H2LwV9RZ9TlbmU4gpL8TQUDvz5ITXLT4WXIBEReigl4JdiDDa/55IMpX0q4CmgaqYDNTy1NPukvsL8D5v+MXgB+REWayaOsEkNcF1+xkvnBIGVAh/pI++8fFJAEqTLnoDnP8GsiWQ19RqcMPAL6QbzsCZh3N7F0j19KuDz4s4AL7TS9VVoTIti45DIrhdhVQIJTnh6g4NjVEbDpHBcrn3C4Tj5GB9fPKnYdr1m2x24CJtdnXXyYopSKFM8X3b4bTOZw1iq0k2luznpjbx0LEaDikGHHIDgNsN5cmMmO+btHZpSh69vtaZ6TpO7o6rgcFLrc22aQjPCntuwJCPlQIUZ/wEeQl3tIimB/yBfgU6pWVw1H8Wq057iRi62xEjipR7mqySJLa8LN1k3xOnpvuUAwAKuA9etM72srFZvk5CsPniHd+DTIWnt3Ge9/PS8yV29cMk1RwNSECjDb8d8Ak5/ZrJkwsbBoFrFTzPiWGUcK4GlzddIm0+HlW84XxpmRvI+oIunbKkRjm1baeWClxWDu1I4eUAdpXVy0q6vcw6ReEqDWR2thXqF3+mnBylS2J4Zixwpl0JqCfGh7cVZMcG23m29lhZxi9SV+FnqIvwNJkk6/5YkW4w/k+LN/rfMoTvkz067r8YQp//m+rrV6MGn0/9GyW/F4TU9QFzje3X4ZEfFNKw3lsEN65tlMJ47m0UPMJif76DUeX7bE6AAp4M9AeIBIHBSeKNmCJoZvpFZxS1CPZ9lyPGNIzEwxijAMi4MCwE08eDMMoiHmIaBNMkJwqT9jS4zZFtGkEECGduiockdShuXhpLd1q0Xsti339w+9s9lsVOD/bcv8u3iIl9Jp3Q6GTFOo/advSUdVnEOVP7yFJh85LSeyX3o6Dsjmh7OcDbB5UHceyb9GO+p7PavpwC0TFdtQktwcI3TA6eMofFxa8kX/Czn1i0yiFL5nknKMwd13N0R12mlIy6UpIXYZk/SpfpdG2CvIJWYp5bDQN9BU5/2EVA8tZp8LuJdw/lKJtfH+EudyEAbWLBwmH9tfkT/E1jPr3N18gcY/wgr7ogqLr612uJbKu2ovNJQwUvx74srW/ucjgLouqYOIrzEsAGjjmxihsIFKj9FgIoSeObLJCygUJilcEDKqcMAAGAGj8XIXODANDbPGF+IuGSlBUXkb/i33AKjN69WYVCCynwjGv434TT9rFbnVKmbwdHw368IH9Dzw2/ijXA82JyBGvONcGGErDPS4D+X0GrV6tNenK6eEF5S59DynYM3sNISR/7RgXgDzbwZQG0cVb8NwT0sq7wF3Y52klJlV/9B6/pHuHReVo4ssZI32f3zMYzVJkRiBOBVOdHsg4MjH4x+qYzdlhrb7RUcen4A9v831X9rsbEIpca/FJvBSv4Ceuk+McZLoBBXDy7u9v7ibqXAQUVFBXBzgfdc6PQkfV2ajk/AwytHz3/H9AkNK6w4ucFMLUBNOlmb6RqHAwJ3NIczk3kQ4f2svhlizjhAcb7RAzQJoh0Z/J+7WCDBSgA/TndHr4rHC6qQfekzaUGPkUL+QktluXcjohmI0qmMh6J84rp3Jg5uYeRhuSZfXQzF0mAdYaHSL0irKTn5jrRpKDaD6RUvEt/c18Y1rNJTuVhBNcxNFR6jT8AV5+sAAMVpOQSI/om+rr2flUt9ceLDq0dOB+TYxXhtXItO5TktHcydQiq9zsPpy+OMKMT9r4XcEp1kfv3fKM/tUtBti65RMJmV84nglm10WO5r9wsMbxEY+Cn8dhfRJNoNwAtksfEzA3KRlkKNPZZ8hNeBxvDB0sBJqVFZMKW8MOnu5yVGLOHTjG7EIXDYOFZDwguZv2pVEtWhwIo+KpN4VIaLYaaO4ig9kEOUtCkK2oQmlmSNf/QWDQc7CtYUBp8U+xTHqaSrXtFba57T5U/lyQpfoPJcm3/Ci/pe3eX/2izXkOjyt5PFZuU1mlzFd9/CGdzkZHbpNdwE8jiKvEadf8DLzuotEq/R4PRwHSYU0adNQLeXM0HP4nAylzOv0eIf4FbpMsLUJ3wpymu0Nc3kbBLFmP8Uzyf47tzCa3b5858bYGw5/P0n/C1Pr+vwJyAcbg6rLCLoFzoJA4gVie26mixB1nkyTr2NFxvMIu1PKni3hSZQrThQiE/0CF6SbSqZVFMUJeZwRE4pMA3knWIapKky5CHP6ctaHkV9uXqzw6PAKj9azgnesvkH8NgvJ5RpUgZ/+Y6yLf4YjjrPsZCUd1Q+IXZVjspGgLoCpOwNsC6iVJu/WsBVXiJrd/kLBxKNts1fuJRw+Is6JVz+okGJOn/RpESDv2hRoslftCnR4i86lGjzF11KdECgjSkSTbI7NqRcSjmcfnWPCkERc5UnswnQolaB+k5J2hqSEXX441kqw6ljLkU6Df42XssU61D2/9h7F7Y2bq1/9Ks4s/cJniKML4QQm4FDuKS0IVDIpS2Hp8/M2NgEYyiGJCTlu5/fT0ujkcZjQ9p3/6/v0waPlqSlpbu0tC55dJMz5HVB7BIL2+QrsFVkN7pT5Pry1YwCDfq3kSk3TrsnLqlE7ojaioKemz+f+vP4KuGc5a8LZ1FS94Zwm6WeNsBB4wXqbjIGLIK6mfMXYNSqW+HWjk+LAqBPogvzfl1c9zpxzfFQWRslBLgOLWsXBLm+KlFA3EF5db0E3qaFwuoPF2YQca31yvcBLF9ArJwu7NqrGapF8Ut7fjEGcMnESJQPNXX5WICLbxxEDBM2HhuTi65bSL20EKG1rBDCywqRCPaQLmToM9Hdl4ZYJzgvTTAC/0/iP06Jb0g8EHnxcQ1U8BnS2KvC5dyHiB46ZWuooRX3zdlkAmTlI9AlfK3wyeDjw19RYxVKNmLDqGNrNs5qNprM8lSeoBaqTs6wJOvYqZTM66Unlg9pyKrr+ZDyJpRWr4SHr/fSeMqev2gS1eBqDQeVHzXwBzzVosq9XxdSSntyoMflR4pC9g+EZbl/Q26ILlZjmBQQW6tv6UUb9Mis5AtL9hhMClUvYkE8WTwk1NF7lMjII8U5epDkEAo6lgLUt14osfGoEpuPKnFSjkX6iFWf+pTwjIew7MH9Jvu4ZQcX3ur4OObf0uT6JZqDTaMPhq7VQoB8ZuiEDOL9xnQktxjFyByEzlOxDR3oc1euiGdJ0A+Fd2RUbaltmfe75Fjt4N9P/NjFP8hhLjTUT2ov+tbL7rkN9ctpG+t4L24/YVL+vY4Jifn3XkEk7ThwHSgHKtjM+b21GsLaMq18btpkJ+qN2ouFln31Rr5yMaZ9yjf9xAOmpv3ApPylmO4wtnobR5Nyo0dxqI4kS9h5i/h3sX1P2JtMvofke1ny90yqja51PmMNo0mKLeTYqn0ytGzV/k0TAOCimxykuSPN2zHn6a3Or8DArfO3GKz7hsFlbGPuxSNMyQvt40yY6pVP9drz2jPX/sivRknoT4wRc5Fo1HEnWUzmg/8n4E0UFfk9rmKvMAGSWV/d0TzQ6u5TPLWvV3f/wkMkSN6rBht7b/8QU4Ha2O5ROgAJgfo3xmxbcjTC9Zdx1YaWwTjdQFi6ItZvu5Y8lGweHJMnEb4QHTuKmXWVRiX2zsYv797GfeomVwNtbA6tm6ymrh4ktcSxTQ2SG2rdptCHrI2QHnXjt2PhjMwQS06SYDxs6apv1dB7IP0A/9c2d/f+gAlUGmXc+BSfDZn37aWhBk3GhpmZJvB0usQIRppU+yqmwu8DBdRS3kkTNqHTs19107HrGhhbtVeIN1r0xw/REvzAXnzVg+mReJgZTwWY0G262oIfArq/slEmh+OpymBHDMsymE16vn8EJ51nHERGkyPYPTj6Y/fg03IRLXPDP5SLeeOAEcywf3Wza0sSWCGxWyIEPpwSJbXc8bSXkv7tdexSzkb7vRoE6I5eojj+G3r8nyZV16BYUtJh2pJIHx0Xa5spKL2nkvwzrhmuHPRUWj+ktaT2Nq7PL2/DJkOtLzFf8fa+r1dd9KoaYNQvJKaLtfmCRB2os0R9TCjPYInpWWI8owppbXZV//prqf6IZJlllIfSyRLllz+rY1j8w6ls6bOTlRReOoRY6PRYW1h5dEkhxeFI/KUROepijGAVlNRUKJ1RlB4g4vJoi/7pU/Ar+5eNVqBHbj+q21VzoJXXQiOndjyAnDz/moxr/ae0U+JAKFoFegB3FqQodUYjju5BpyNOA3ACfs0Dj9ga72zhj/l0/A1UqkeXpzcVHCvCDkZ5ZUGbNO78eJYYBx1VQsdIE3aylF5+xi9Qmzfs7NETJI22j8WcesexfKy9W1/fQk+h+mZvN+zQX118Bc2flAueKVoX0KeZodPboUNODisWYWN8mkrQhX6KEuThFHp33+y+Da3ucCdwZLDZ8Jze2Hme4IiwuhuH2f2zLrM/GiKJGkQB7YYc1EoWc2txqrMfZe8PgTm6PLidVfej8+T4wU0Jp8uanAF4XcGdAqPop9pn7J6rV3gxcUx8Wr2HAvxJtI/S9DlNOQ8ZF4l6xjvFZ6RW+2HnXIoRg9Ykbx5bnKocDG/7/V4XjuIDheD+qPIyvkED3wUnx24WkgajJL9UAw0L1Cip7quAbi81QFz2bg371TBAqQnMq/yI/uLxopMiIEbDdNBMKlYxzZU5aMuipk3cUaTTypFGweqZ8XZ2tha0gZcneUMK0cEdlOAOFBT2EiFpu3umi7b0XCUoQjIZE827W4GCyuxVonsIzMurW1TbHMrA7cOp0PZ/7WAY35BN/erd7hbUCl6zxmJEL5Rr25kRZB9yOI2i6wRHmeueXvA3wYockxhzNtBH8Y1Rt3w/5QvDqIar9aezMeAYhkfydKUPAlXg126NPwGmlSw2uhf4a7hlFW0vv7qxuRcGaqmIiJFlKDa1V5sCjk2NA+KHYdbYjl35vW3U5VMwz2ruGpuNbE/WLwhr70X/XO5q0NG41wfurIn5WFcNgsgZIet+J+cRKPymCtH55pPoO2eS7hW9CRzM3gSk37rRR33va8xIb0fDa7gQ50ph/AWpITPzvvgkqj6c2+SSbm2GasTczb+VuxGqHnO3TjKRBz1KzApVvi1jBMiut8RdL0ewHE3LUVo4t9hH5DAmAE0eHPq+qxTm+F66wJVBFQdYTVSl6IkW02toIwveGBA3snGuR1lE9GwEiECYo3dAGKZSheM2yCbJBidWr7LTw9ACeXpNGjivxs1QFqgsQbZA3Zs+m31u4y1qZgLbJHqePzYxN8GCW+1APedIys5Z0bBmGIJyon1Kq7xrRSAb5HgSU1D0yU1Yy/rX5k5TwHTCfXlOXNkZP4pv6Zhd0lTEDkmWna6mbhALw1r+0mysbc0HxgleoBqsyO74GTxTcTiYYWM7l7AKIys9iQlCyaIPoAeXOBLd2cTBvAc32+58YFxeYY2rr5alWA/GgdjEohso7ruhyjEeiVd5i8041zLYbGwR01giKjcSE6gX7jow+yayXq0OZfGZkXDmIhTaRtH+CWj2ZWMIX1K6AaGTUqcNh6sqpJBq2jAQOQaNsK1j8KFk6viOn2XmyGQxIDN07ZzRe0NTPen+9deTng601DgJ/TWweH+wY7okzp09A3viq2hGcqC6s3JIR2felbVwiSBxvT9zONmIUufOSJH7bLZJfd/NgmYmMfBxgF0cWoyFgRvlbWrc2Ju2zPqAXoQqJipQAznbSFPeJPptbICCy5kVtdSYkxyYw5s2QoH8A9pN81YxkE8gpiJcq1/r43IwgMHY9uIiT/fDGlSkFz8nPfwZ4814sbEYX8AbHblkMQLl3DOD06WoxFpezTEgqCvUe1w2xxCf/aaiuNamVUNUfLh6Y21wDlHzmwS6qjUhjufGKOK4cs7QFekYPdIl8VbPmkTKLjXtIEQxas4etCUT+w3W9mhhL5zjVBgkFjnqwFMxV4lAVTOGStV+hYZ/wiVykIS0Qam93fcyy3ZEF93ibAfuWKjXl6CD+f0pyQiXw/6Y/OTyK4Cf6fB2VBFVeJND1M2vb0cCdbOgCp8xSDWTdkn1eSsPVm+43FRSHqQj+hevpL3h0PgBieo6xMd5CbkuMehqxDjCW6D7VMg1rMC5RjCPMgLtfOTpKBlfdYJ5U92G0LFJFy9cx8DDgz0zOAUza0/lAhtOqp3Z0d9Ehe85dEST9ADEZeR2FGdH01pA4mGlXLtcGjTXzO3ScbQEIBZ98hx5De14p+AnEXu0wWPy0SDGtN/5ZeuNrAeqMtaQCi22VfaPsCDUy9NhDdBD+abCFxOddMbdaX4weXtqmOtckHnQDDqapi34wxSnlWYz4FXNfFZ6cTrAdiapRNbjLJXUGaPfbm1jZfxF2gwI5rFBu1Dcyzt68OSSZw/gqC0Kl2h4NhMXn2Odwh7MHDeexYvi1shuKWb4hbn51IPaNH5uDQreSTQr3hhcTWofcL58fTY6x23sRo5hr2lmUuvYpiEefVKjRJP+9RdC/Anq9QX/f46I2t7GpjGjGn4T5TWITpJqO8pwVNAo1oMP2CyGSBm09WdXj2zd/qdx2pPRx6wcgKaVSGS23zV4DSdgd/zual2i0Eu3V0HbBvi4jSZ+kFi7NgGUOQQOlJuCpjdiXaFD/K+3mA9nO2dsUEgrxckZVsOzXs6SsRj1IUR36Zfk2M9YfmA5kZ7/AJt4Omy3wHGUZ4fczBWM2zgo0IW7W9lRRXtiNiXfodgZ+byiKa9KD/36DjxeH7e9KR/qRsAosJUTIw5drjBXGFO6msf5VFSB54gbYdczNsNlDrOFswN0hwZgSJyvntcOL9Krkij4LglNuzHWZ/aYRsHDBFy52t7Qw4czMVsfAnjix2JDFt7tGEi8adpmPzIqdxhtthaccsgwyQ99Tmk25VE1wXHIDCUVsEU5mwk2Fwvjq5lHVQdBX6CVRbwDQkNTFZPPB4gK5olHHEszmcXPZTupmfsOFhaUN2ABSGxuPITK4VgQ+TFey3X1Qqzde5tG4QHMZWOUvf5YTjYOvbIclabiUmR5273IGUEX6ntPdJPHub99gJLTUxQJb6l6HVZAfYXU200SjcbpcBFNnBn1U9OF3unYP8xlBgCY707PH16S6yQwp7MEUOiPnt3DVMUOV87VwXrwFHv/CGKI5s6VDT5sUc6YXHZmQE8GMKF2oUFttFbGBVUxjMSH1j7Q+4SpmanGLuxukklaBrfqZmWR0VlcigzFXX1aJt08bVijezMKkB6vr2b5cnZtBpGba6jycBk2dpw50KogBKPNbTE7i0eJRZs3HbFkLTencOYtw2+OwaImUYZapixXBJvdHx7uurCccxp0ZKCmZPLwOUNLD8qSCOUk9waeu0aUp1AudeVLxf29nF7wASmiu9r5pwveKfVD/FceJhcA/jnOZBKaoTzTKpy0V3DSVgJeITGNxuoOTicYmjtcWn6KAdxAWs2c3wUKilKohvvqf8RX1VLPTLAKasdN0G4HBPKjzi/Y4UhyJC/5aoNBQoYZbQl/0ceQKw3oDnv9OMUVuaY94Mk7fRxV6+UJwDpcYYzFlcGtimh9VnRIuk20MFcMb6WQjovQY/lsPh/JFk9Xj1Ow02wTeSWd62oAZ4OBcv3TbSbW/hBUDB9LRNiJfWZb1nrCTrPNh2Q+uyma0RpMPcFXi6Z1HdssLjDVvLApcUb76MW/pEyNCVrymT/Jsh6mzMJFNZjZXGhptZWEHTbt4xljSO+d93J7g4aMpEjDTLwkYtv1BLHliC7oQ0F/nVf09tsi96ziSIeIsSzteos26Egdz5N8otWkjGuBU8S2X8QTFAHsGgdwCa05my+9vB12KyPwuJIeMapKYqJ4UbYR1kAxCtDX5rG8wVU1VSHt7G/Vzh5ujozKYiug1x/dR1Fay4REqHDiVH1DywKJ/Mo7vN9DXquxnMtr7YmputeXOIbvJCEiumn2uP8qKcjE7SQlNPaNwMGyvLykACFjSqXhIDBKw68SPecbEb6O6zzu7Fxffu2N1j9pHbiFU1QQGt6aimBHB/ANCTm0IZPslMbLNV7F/1FeyqTX09yLqVg72jkbUkZAm84dXA6BKTIgySp+V+nGtWIkqt181dBwa6xLWJ99s2HYN2yGTQoVSivINxuBkbHe75ZVLHyZwHTgj8UO3E1kP0NEIrLDCg2i4BLlP9CGqzfX+Net6ETRSp2gK0LsP5PClHnd8LC+0BkS0xjyd5vttrqYTM/VaJhsXG1np1w2KUUSoJiWMQ7nktFBzkBBG/bBotAiMFEDnNKEd5GVVTyraBqP0MPXZzfcA86jJq0rlUZRHZhHJDQEh9MXMIT10NAH6oyUlvV4q3k7Isd+A37cWA7eYYHuKz2IDOAMpy2woIBN6p550tX27TsyqukRuOgdOAvrEU+AONclI8Yu/2lIix6BW7p52Jrjqw97oMiFRfK5tYlI7E1ZgqA3CtS3O4ztNv09oqXSQOHEhw4Lmgtdbd1LdVEBG3sfmkFfxMqAh3WAjnawCC/OAcgbVw64L1ROFwE9KHQe8ObWsnHFC6zzv5IsHEb3A32K1btbYOY3r1zkCD9Xg2zednY8EcOftNBpDQfIDFS6j3FImGXhnd0KtQSyEjOtbe6UYXsjBnJZGg7zReGUhWBbaHayo7SRfjwOfpjGsQqUH8dwgVtEWBFkN3AYUk2EkC+QY2y1nbt7q/l8eaVtua6YbEd1gb4oQMF1+rK4sRncqzsgabaD/ZGq5ILgCmghdhWoZYnxhMkhYI48DcSQyRko5oY3P51JOM4V2qdTS2AzHmxUDo5+DtQz+d7d3t6urNSbtcYX4iasKQmeS8BNgYL2igV92D7Q5bz9efdg4XBzSZeyCZ7Wwsb2EYuRe50j3fnz5BHpMErbh5mABHf+zhtv6DDE+/ehOU0zOzfkPlZ7gh9mRobfBjkDNmO7VsDthUGFXsbn32fJXMIKa3nT92su60qD6wgxWmxXBhsOUPFNxRHGwdkEG8dwWOGjBJZd+2aR2Xz5hFlYIy7+k5U5jujdE65CoZ9O3XvCEg6VSU6mw+7uRzOiKRGuGphntY1b9B/mfqrPX9DEG1ziXN4n7+WSyzkPWHLfdVdfnAdfxtfeAk4Wbb5+J1y/p5wzsG7H1X6NrNVwXj+lv06Oyyk5kfg9xsOWwPXdlRdXkRWngjUuESoP+IKlddMCNfcZJEngpdZH4iNcItwHecaf5q5+Aafydkt3akatMNxEzolCConnmz1Q9PDE+3YqdAiruFIcXvzojfVmfyY9bEZZ4o8y9PwgGifrA57XeER60/uc4QhyljigBqjZrW2d3Ky+L/LV9965+f8iS+9RvvQyzPO8O3Fmnt79Oeaf1d8YmX1nxh5aC7soNAUnj4f06UtoseShKZmyQLNGdJTawm3Rb/NLN/RwcHpvPJMbnUrxvSzfkEWAfvTSWhLyq6laq/LVsF9LEos/oKGlX3xoADJEyGLhaQjpAWrqBM8mErRyi8v9B2fvrEj4T3aHIwpqNKWMCQ5EIxKeDlP4rArCWgXYc8CeF2AWwmJW5NNp4ZdUJzL7avDDVOHMCmNcCC+dknyAEY9LpnyfXRkoBIrl6+Xu/pGprE6D8U6PRpfXEhrcjbFgDPcwy6/vNGgPLIJ4I2WirR4vk15CQ4/rwki9Q9/y+qj37feJlSXpmF25k23ifK6k0EUOeHlXIYGVKh3lypkEuLqUxOa26Eo7qw85ZsYSzeHGXufobpQOri9H0JetaMBmDCkE+dze2sc/fr3XSflH/9vf6+xQab6zvX2gA/Ijfzd1jpZgl7+vdC79vbV1yH8Lzc5LBndeLmzt7mlwC4GtJr+WOq8P8CN/m/LTkp8lr06/ok6mMlnVjoANfw467M3OFj5+xz+qn16fYXtgL1EyXhf69mj/oHN4+RnS8JUUycedQ517X8ceMWAI9Er9jSePF422K+W6eXndM86oK83K1u1lxY6UQMGy6IzER5dDvNi5qVszUm9/ubnGcPQzLM3I8Mtt3PVTP3sE+otLHFwKpSzPrnFpnuezK16eaWVqprPnfkqcXbduIZjJNBU3D7Y9DGoJ5Dnu1VWSH//e+co9ssFk3kz/I+wPiJZHaUfzdZqiRxLPR6XiJS+teMmPmYu1sxGlymNNOlasfsxxj0UgvslYZPD0f6PF+ihOgpJqzgqX6yf0swggtlC5czPGX/RsghrVMEiHidjdopmiXGAlk3o3B9jfk+o3K8WNToZ+ZdDGGz4/FPQobyFWQKHWawKdoDLy4ACbLxWI8G0FN1NosxCLAN7osHJk9Nt/0gtPyVovAt+uYH7oi3/e656wlXkJYHKJ9pHaMI4V8uju+3QHmO/d2/RGv7QEjGVVbXX6U6vTL1RnY0xu603cZxSULvFOLzdiDsZ1LeLSp9Dey97O4Ts+lf+GeyPvNkGhEuxFn/73vVEXt9YZnVzaFeckAddeGrLge2U7lxObgcpkYbIa/3BchuF05gTjf8cFrR28e4vLp+0Sew8RNauatwvjqJJERRhVrZQd5VjXBUJsbJd8C3e5LgPhukiDqbIO/zOu+n0eqh2ICcHYzW8JjJXL94ltNZ3cBEIV7MVfzi7ginMMBhH6Vzvb5FgGfHMI2BEBmO57P34N1JF43X9PvJsH7yR4MrNFvJOIbZZihN8SAqMSx+2wx9aYH5Q0AtYiCPC8jhOZwgwxMHMa21H+pnzSHsHyaNu2PSoZcx29uVts1JdWnj1fDtkSL8mVxnytEOslkPzK9iBkRwNOFN1Ptz8QKlVh+MSbQolMIcgW3DgLCINCyaw2nTjKSbOWx/mjzj/vMZJNm7f8EcgHvKLRPGIcci2xa0pxBaGGgb+KrFsNNGSa0fDiZ/TydtTVirN6NGqSmMz2hekMt6l4w3um4lCzSO71yfWmyBX/d5xdvBCVSso8EiHr2tgo6P8j7fMrLuZXIiTrqZ/zMxMl5wVF4uzDGh9fHLridPLGyWczXcVxopJUpSkNM3RT1UtpLSd/YuVdpJtGDWNMAMk7CdOiFNyhWdit1wanJWVVk/R4AepB32RsQR7y4mys1xOYLlBwwwAFGd4BWLc2FZ2zgDrsxcOLcVu7jlTjJPIi+3x9yksepGUnH7kgy/Gk0ZDzSTfViH6MR12wD0yL+5qvTnwYu6k5IXDZ5jCIQ3x9TvRXh8Q4LIEzS4wasAEXFjq2NXJs0UAxILVc99145xG43juh6Dj/hs8rN+JEJZywJLfYOB89enJSpqU/99LnKr26NaUBBohxcgCBuNmmC5vU6pqS6afkUFV4wZnJ9ROrFFRrKXL66JAXIxoPr5hDZPfJg2pqjmU5n08lHcvVS1LrXIQzhbWiZahz7efVH4Dr1GsuwJA6+DcXJPEDLp8NtH4/oj/zG+0o8efedYLz+ZiZjs66dMXFspj+3/tjraYYPNGtfs7XTR1Zy2QDG20xKtxLocsxyFUpCcMkoaJ3cfKgGyEYTD2n+VyeTdF/sFjgrufVT7ORFIACGHk4zgAgAQSO5udpjTQDWr+IzXpo0G/Qn/LltcY+jMrStsJ1iDTrWp7RazdS62PdiOBG5ZqpAziTr47mAwmNAyOuxAL8jCrNJshCoxM/zCdlk+d80izzLHYp6oum0xxO4sdudZBoWfP1rCmD7AUhUEFKafjehgw6Hlwy5qd+gVNukQicG9G2J4OJEgKKW1MHoIBzGjpBFD+Crdox3odadXw7b3XU7kPw88KX9uCs2+2N8me3Ph7YhBvbt9zXmWUgJTrT49He3ydRUN7I3rOgvPLGWeFvL/t9nM6EIjub5wwSWj3EXQSrYEe8TLQ1t66Xd/oN8xcaLwR5mD94MvvXl+azl00+msnnpry1LcZrUx7Ov3wxqHZ6sNkfYcJ1uPHRFXcimtkZv9ikQ//hulAo33ZV4i90IiGQZC0XaJX0uvJMxgzTAkOX5efRFzo6c1tsfYYd83DWbd6aZcrwYQcAXdllwgDPCTQyQQ0DG+IVmYI5OQYrnaNG1noFtworMnb+xMHTNIm/4WHRtEXFCMpYm/y5AGyQWaO6F2O7w/VRRE/y1dsYkoforPnZNgjMmqzXHZ38nP7B+nLMGgqqoUiU8nEyDj1ffFj1wir+QBBTDLhiaUPVr2mfP8yPUqmYfemGHSEyXoe6O3e/kRqqAb3fLjQE+lVDKbezwSNAnuK+iR7iw+gX/xQ2mt3Fl4im6F9rRRnBQUf3zBrqClaHeOQY8qqSyZbQcmOkK5BcUmxEFpboCvsxBQWuv7S08mQUu2t1UDFVNsK8a94CvLpoSlhkaYPryiJfY6xIAxtTCOpzi3Jxuy/+WqQ0yksKO3rrOZEZ9XdqgpWRaxUmlGCaDzxKAyraw35r4s4s5LbvFQ33TGBHRCIjIslHRBJ6h2vN03qKba841SxH/y6uTkwvoJuARZOzx5VsJJl/YloHmp0gCpGQ3DXPmSYIzdJKVRI8rZi4EK/k16lMhaOiebKLhGbMaI8romWNdZjKGNS2eAbZq2VG1tgCTpDnEcVk10nUWsvhGtaLmTLmN30jjVP99WcsGK/jdRwv23UNjJk0ZtIdDHZFw73qrja6NGa1eKD0venepAqeXkPObDHoMdWWmkbmHkAZ/qaVtuurrGYumWAF41wBx4ctQZ2o2xR0ZO0KqyMrjtURjHyn8Nt0QtrC5NMI0lopDTWevK9xu44ftGvElJ/8MzqDznUzCMxls95praUdPp6iQ66BeCxK+dnUm+cNfM6dc4HYlgygQl5NdZ7Ngozs+hy3ZqbE5b+vb9cLsk1vXXb7veuXGMnBnF5L5ioy1AMim28AEGQ67EfaJ44WvhQ5SieJYxM0MDLUpzGOhyaGilaFCHsaCLoi9CnoheDqHMXlw8Ds83Nhp9h/jdUETg4dAZu8ZT+XXWKln0r64Qv7IZ8jUdoyM5uzJOo+5wlVzjHZqoKYn2xM3HXA1wQPzy7Obna4bx7iqOnExowdXe7RDuzh5Y0bOeSCYDgwNc4oHJOrWcOM7UNwwcfrHvbLO1rTLpvBxhLPDNs6eRsQybes4s5C0imrPuPjzkT1I7ZKZ1r1NWGdKdXXqwwV4F8oIpGV9K1e8b8mHkPjXSbj+jVZr3pehNhWci7dwbRtBMiprA5BKHgUMlrY+ozszSBs0ywk1g9kjBVpeRsrunDDb4iP5eyj2ci+grQe5N+gAJ/4tw6fa8/JZL7C9NafPNnr70YrrNm3G5RlEwbLL66+BE7qoPFsmRA/T7ACGHrWH9Bf8y2Tp8NGwz0aqsTZ7YMacqfmEJBo55SxY+wjwdxWsQeqq4TqtJQqn33cQyJrBSeKEcgNKIHxJnSd/tkdBUbhzKr+RibCkzMvtVSYqIK8RnmyjZRy0pPS0mWLxOw6WdFr97XfNvZj2iSe1DuOKBzRXJLqrj+ptzHc49n6wlFjMouLhaeeGarLSJjJfMSZwjJgyw+3ePyPWnyTTYXjEooPVE4vi9TQZR/q6g3YRn7YulEnLto3itIlu84W9Bu0BCJcDKXPTQqycuohtrUVC2gCwEahZoGXO28MlzP3JBq4GgeTlKqKMSqkkWzqQ3IlU3IY8EYCgaQC6q5B3XVRTxgUmom5S8zSsaUmPOOClFF5mZM5Kwfv3rqFVDkuppayLUND6URTzH7uSBoZPwXJqe3yWVte3MyJu1OOqZSmmYhecXA+2rRK/paAnrq+yzRJzSPCMZdqrID1k7YZftm6LbNy0h7qjIILk7Us94/lM/XHWS8O8BMk+vP6zJKpKHbkKlOEvhpeJk5Q22dJjXpLryu2GsXUTmdrY4v3OkhG9HVazYDAu8UV+iG+QQJ8QC0X2RYdYO/L1Rkx4TQ71IbiOqMcZ7lpxZ8mardePchcsbGaVEgSTUWj+eNJW/MdL9eUVZVepp/kNODP37MrqORRg6JZMijiMj14bQwpgV0jRFMffnqS5uzF/mtcGBev9TGx8SK3nJw2626g4QaabqCVB550m43LZra+5tj3/EabZZiCxutjVzs/Is5GhjN77YpzpXoLchThLaygNW/hrm68hblqrRRv9UrGGuIUGrGtZKd1y2WrWbBfNNvQRIHZj1AuxuhSk0eEJl3LpvMpzKNC29nlzcoef5MWevzNY+fKUsXiKUwWK899ZXmJ3qSBJow2v/Py8tKTTi9acy+hZGpWLtOfccZ8FuvMMqFAGGUOjREgGgJRTRO25lshk5+DxDyIWtEQzKAeUDTq2nrVtJIpCpD2cmuvjEefWIyoCFqla+MD1arXc/yTkdgHxRgacVDeaeGSig4NUm4A14ayJQHRDm+gJGCN7UJjIZxNOAVmtKUKFpW3ESliFPAXCLXgxmzMHI5Y7Lev43FvErdEVnQskS35ZRSjn4V+/MGv26grKfOa2EY0dMTm7Ri2ECoyGPT7jTa6rw2tITrblSiFbmLR5y/hmMG3F4X+UAepDHk3whvx/Z6VfUudVijfJw7yJc8fq2Z9R3tEEWxno+La4XgcBVo5FAIovS9oGmE9n+aPrBXRo/XabZ0vGtqpkweuZJxM+GWsXJvjiX1/dR6FxLlFu4ELqMfqzfN3I3CNGYTW7BdhquJoXfKmJK9czaU6UfE1JdNzdl6lisULnwq08bHrw8bhm903r9p876q85csxVUfw50oLgsWiodszJhZNR9QEb0AXEQ30a6NR0rG/pIreC35BjziqAbP7xzzv0s3iIVJab6MYP4RNOXQdySKrU39rwMUirFGu4k8rEn4NGb6dt+nEGNvkFoMVVg4eHKiZH4o3YpNO/1bf6Gu/6RDf2oB2u7C8xtUEnyCh0RJzCCTXAT7RQJDmQJP12dVp23M/FwCPU/tOUohMzq+O441UrCV0m0vdl2eXY+3fLXhwldLJwo6TUYY1Ez+cO09rUcDcCyXHienh/CaxXz7XzeBxy6vNqHeKA3Pa1Yp9D5SuM3T9HBYb1jAYfT2cjYEpbA76hoPim5YpnZ0tS8UcXnZJLsznmRichBNI9Fr+GCQ2YQGJCJPtgz/yOn4AxdH+a5vN2ZaCx+5fHuF6p30M4TZhgXDuO9kC+PKO03U2nsn0GlXaas3MR4nP5HIMUcZfbqFvYPIsPTKPfPRMrmePzCVcfG1nIey8pAnsbBP2F7WWep/CRY636DLEZQHSBX+gmThoWZDINAbqSjdeNt7tU1/YybMcHm2znbK0bk+H65MwiwOMtMwsC9PYNanCgLfOEGJnPgMls5ngwiwhqDDmCSqMJoLc2cnwZN8T6qxcDB7Fpz1t/jxvIH56E6TiV95V+9HiAqtp09xZ7At8Ir4Er6oxHltdG7gdpjCx1zqWRngsAqdP37NPf6Xg4a+13YQbVNp8nm1OgP1MmNfmea8g+rVEF3vBS7PnpWG/eNFvpNRW3Sk1SQXWdGCphpX3qIewZzI3nMxnGlboPi/XR5vCHxleonNJVBwrfqKhJCqOHj/Rn5LIGylegi9MUDahGHknkYUR5CX5apLYsefFbkhs2fD12zKJZkzLzhOMqoip+DgsCe35pmhv6NdanESlaR59qJp90HFMRk2+Gk/eDIQ1+i+tle/YRuYV1ecM4gD4JIcaG/VLRdB6MypCqt1lY/L4be+LOZnyOfklHqkKFpFx8v01hbYYH/J/T/X7VkmbAO01T2/GwDcbhRzbgc7As23pYZh190vzLlbamM4ICgW4ZATl5b6SQ2OFU9uyE6T0Bw+Xrhz393YLkogcLl+n35fUxcpFMVk/tvYgFv9Y7CuunGH7H3SC+h/lOexvuKGgIFSSVJsuL/keje22969a9KkuclUQIPeSlg8wKP2wo2+d8ZH1c0GSOe7+886cPZ///oge31KmF/597ICevbh890h+970juVp+T1VaYh6j17MsxVL15sKXcbnG4k09v2JF3JaRaZtKfmkv33YR8ZoR9k4DwB4BjNS6Grt8YAb0DaE7YFdQS88eDhFBnYXSCw3iUsb5pz4u/oS62ypgZ4QVNlKAP2ZgXTsLPifY3ywJHhJstkfWCKA/CTIbIoJfTBC3B4TuspDZ8AD6StDkFhdxAzTigGmBDeaFzd72yEuIQroCOm56GilPvoaGiECKYrl9yq4u61GCnf6EwynNAFhaiye7tV7ap/VpHUrUxe5s1puar9Wst/DLN9di5zJXsWsJnOxYAovdSqDfqQTYLm1I/cB6Rf1s11pmyJPIj7Q9TSQl/Uz4Y3q56rPzwsf3OA9AReT11TfWLmWx69/EYZg5RA2VJ+jCcsziQVtBcSH6qGwPZsJhXMX6BLSl67lkSphpXNi4L6Ysd6lKuir1F7ykW9Bz4ZJXnVzz+OZcglRV8sXQr9eA82AG5SNs2pr8jOprfxtKuzMZgUoUzRx+oHOP0iy040BPjsrm1uLW+62K8KoERl61D6B+9UL3GkJ/Pjx/VxD4ybEtZCFz7E4hc4xdPc7wfEBakmhKftK7ZNIuFdJaou698SFSBYzYpyo5R0bCEzMUhUTkOllP2nOr5gGs8uViOBpHmXMM8YAxrgE6voyvapfXfXjIWEQ/Ly3WVxZjyURD4Wvfm2N10RS5tlpivfnv07Hq+NuYgqV7cXMqKMTjB8wsLzbkt/Zl3GVdZqYXDyH4m3kIaS7ijCZjWxctgxRVdGhZW3UMUv9dwiyOipbLcn2hrVmT1phnbUh6agWILP2a/WTxCJW0+ZorYNt1jnHeeLrKPW9kb9QtMZakxNa0mNgU5sQTc+YNv5VMZQg7UZOes1kjzZ97kHk6/75hxn+z3si3JM4df17EUVNSm1Q2V9PONEldl9SNunm80SLozRChZxJiXNjhMmGC5IggvlGIXosLEo5GuCc/nMtcRGvFuoWUPqrHqtctfaJ6ky1xpmG4UNcCV9a+1y0RiYFI/nNlcJmMVNbjYzgvcnxOUYWi6q6wqXsdeFmtQ9akwSfPsGNFgKAafZmexcCn0eQerXO7qd3CzfuUy3Ee5C3qWyaIvxxFJXcxs1M6OH5LXbkYbK27+7bAfte44O160qf9sgbCydoXti6DWUu6k1HYUgkTZej9UwGOiWQSatGURcoz7KC7XtVkq4mS0C5bYhRS2oSbc1nttUIpB1G1kCGaQKnIyl7GQ9x116QMVHO1lDhp0bOuiON/7FL96Zx/8/bdMPYJVzrbtY3aR8r/D7tKp6+rQJwoiYz0ItkF22/dJWaoO0dfRLEdWX/mmS4xYsTIidEiJuvS2kXttJpr/Q7sfELZF/YUo+xgpeLI3vZLfffjmKGNiw1ocCxdi+0wu7m++4a6aoFt3WlUJkpjCLhXX2dWxu91I3SkEdLorFvDfL/BsCXRBXXi0BiBIQuVpGt7WakAzyNtAOuTNqWx7ny3g6AzOD6HgkyVP8gr7O2hZICX3PXsI0t6PGRq+ZIMTGH01jP4sYWdaEzhfU57lEaD++wgkh4HWta4Nri5CIAYYSxllyMJhwgGKCQI2t/u7zt+YpSmo/nPi4j8dMoI5vhQkm2LKmJzIyI/ncXmQc1igDvOudaI/lva0EVNaDOSZ+pAj1RX9SLtlPUiatUnev4WJH3V0K+E6r74dmvM1f6MyPc68n0WefwV8T8jHn3TfxKN/vrrKwQ8tV7xkJrNcKajUJounEqEfdWNvhIS8CA+1Hb/jE+RryHUgYNDfYxkaZ+gkzqHvboqaYNFUU37KoCvFvB+HumAErrEcw/oBRt9CKsaDPTIrPD71fwSmZqb/zRLVzhkYdTeNWY/9c8OJrFBXw2YX2nl3dCkrj7eDuJ7Y/tQVVbPADGtfPweDiNgsAKNldzd0IbmmW8dMew4KYcQp4SiudEv71G77oorZf9Se9owTQTXXI2sfRB1pnUsjNIx080Vlkg2F1odjcW/bKow0+RhlOlGgKHZC0eTBXoyjdsrDMMLWnIcYNhQe/Jj1+oP9HGFRZA6l/jWsed57FfEnkssvu+xBv+M2tmV3WUTTlnjswqoYGv79fbbbfTO92XPM+ryb58+/bv57905os1aDhgwyu0zp7/YvRRbl6dUvao5o0EMXp5P1TvWhsGTamYX/N0VhnZXVND/7BJMdeTAkMx+G2MoE9ZaUudGQ58BV0SJKOzyQ6kZ4EPp0BLVZRyKdl+gTMGuIrPZY3noddpy1J3WgoltQVeVVrDI/T4hS9NMxcCl0qzEbLdKdfvwUCyoKtFH1VZk8adnV03YH5NzvzbTT44sqXcUdM3ZzWi+yn39+TYMVOZMlH50jDSOugviwxOVRC6srggNzRElUVdd1S+peTxfbWg3ZuvYXbEbR3r506wLty2uLFmzW4Oz6B+0hWFPraMVyOFXKZ0yPqkXG+lP0zO8a72Dcx4cBZIoMDYp0k4qo1SuUJW4gpvkcAiqhMRbPTbxZcdWPOpWehQ8Q1o5kajMNb8ujvHMrVVy9VRAEdV4PeXeUCqE1qTkWG6V/8KURCSzxc1otKJLta+KlUPOPnKFx4SajCKYJhNNU+eu23NhG5fS2bRZATlm/k4qrdb0GJN7JiVU+35QUM8tXTrAc17wXkBD6MsUkhHkCPM1Go8R5jPo2JsepVBmjb6PVneQuARvXF1ZaosJ/xbJG3n+/wq6s8FccBEhwO8mTjL+Y6I4Fj2CnEZbvISNdC5bmB4XftMyGwGPoXRvd2+7QktnE6TOfRep3MAeUV52jNk9FactKajHIQurDBFwBTIH6tGN9R3K9VG7nfrcS7Tb02CNWixFwdM5aV/uiqz85AQidC3w7RZ/7Ia6qpfaFne+nnzs4kyFNSXDumjQEkGxmPIhbcvS5ZxPKefcK2fOKaesBNuzawVE08ZFUEx4dsE97uNVrz8RdQOOyyIuTcPymKshugBRlkKQLAK5mfk5We4oGXbN54GYthueYjX0rEJc230K8H5E24+cLDAugvGt+rXLEZFEN118Z3OSQiHOPLUasUjCvWFj/PJsFEP5xui+Gm663vgmsxrHdymxWxtkcrQoktNxyOk45Ji8fG9nuFNKRp7IM1mO9ohll7amRSZJBH2JR996TIBbaJt2B+7jKHakwGofYa1Hm0xPcvgCguCL5melRnMtIRYv3MjDNEzjT5ysvSPmU4yeHPBOGlomxE+Tmj4eHTl9cQ2Ixx/gRLga1PpftSpxUV05NhQttMJCBt7sIT1RhA1FRNCdK6SqOLrbXr6bLze69NkZZfCT1Ws9ypVQ3GiA0kJvuhrcUewYzehWswGA3pra5B0ZxbPbXPWjGaV2tEVHMQmzY+M6whcpr7bkYRUHM9YWwXHu4uAi7uB4EuEcyp8UP5Yrg3DfM5iL9hcOUHnsepXUJOJr+b1pHkVYqhXfAxwFAEiiRN85U/6lSEVSRKRPwXjiiLmEwbyOnuRjuiJGR0JyCm1gJ3mnjxN0f3Ju+rMw7PRLRrLeIAZrm7KJLWwbkwztSv/r2RVscfLeWEijbY9Si3g+YAL8s8Sx/c4zrGxgci+YjN8W1WJWL8TayuAyCH5v57JLZWTXaEq2CNmXC9RT3ChdktMiWkH+CmkGa3GJTLIl8lMX3yXrYOyug7kJFWf4k+GaePxWn/6M+4qbFha8b39oi2SxtqzSbqg/aA66Hezh3ruJloQiZDO472C0JLWLntSJqhXRjrEXmINDvkd13qxX39SOTqNt9ab2LtrC3ySOPnfxe5lEX/g7plAdX5v4OOP6lHesbQlGfdT3nNp95nMHnaLfVFdUfVUju+mJ4QdK3BoAKTS6eZ6Bk67IZ7mGH3bf7Oy3KyUr5jIq4yc9ere5uX10VJr6xURqXE73D0vTPtesihdKuy+JXdng2NSuwZr00eh8J2KTYRyhgqZ2UV2xHYQX+07dddXXrtrodnJTDLnsAFgf395FcecOPLTO126Udja60bm11UT+/435Tp82TGCZgSYDrWfmi+AVgpdCDgYwUpZVIm8HSdToNJfXEm3qFQkhHoO1iRyPhC+AnRykEBqwetr02Ge8uCuo+fNdzTfB+SG2ozlC7dII9etHqOFLLDrV9OkKNis0K+jQFsucnBwH3/60BRqbIdWqtpbzgYfn9fyzbZWNsw+R/cMAnxZTA88RP8yOioBN8ZiE649J1H7AtG5y2b3TDnfdTOECNf4Wm/MBzJ8YeX36MrmiuRSoR+JO8KO+ZizQZhYssDSay+1nrVDvR39WYUbI+EYT444t9LTYVZHLSQme2GJahjUIKRftTW+VoC7AxW5B8uJBIVmISxPoSwzic+xSmwx1q2lR158gVdNPBlrLEU4mDTtAV2WVkNJakLxD0kBMNmJIRtUEtboyGP3qommVW5YYgsRkBAapW0l0cgnBqwubImyXE4AlDpr6wVT8QX0Wcka7zmzkFsCphF9eJFSsGm6CtCSFcXkZR2S5wVvXz1pRtB343pZElIhRcP1g3rIz2DKTfzja23hDA4kUFMljmm2Xa4dYiPO8fZt7r6/InsykLSaFAQPtp0xS9WBA2yZlmqXJNFfg5dk0ru+wNLG3IpHF2YZnIZyeQnluhO4fKqyF217ov9WXVWGov4y0Jefav6taLxZLlHoVH8cn6/pvOxcxjSG2HOtNDJ3UDGvi8LGemYasCH7njT12+ImQe5NnWN73qGmDj5ZZi1sKSM26+Yzfa7HzRIsH2pW6GEVj9uAK5zOV6uRy4/qTL7sAhh19RD2esHOGocP068G/4iSNew0yYx9OTBumOuX9bozdZOwbiR4lrsvoYDU2nAvf6GlH9FcTnGXt482c5t/OrT3Fgn0x7nA/lOeWwOFXe9gr8Hxlyms77ftSb+1xDeYwPlnv3ljIixBsILHeTul0Ju7rAc5UBRCSmaHScLYloUM6wi7XwnIxK3Y1kKs+j5E1XnXQWGl2k+tcTSjih7W4C0a0a4AsNmfJlfwNPSNF97GxjSdOTPkQq0fHuegeGXvLcS017/IbN1XonS0vrQ4x1htrw3Xs1u0Xyww2mi2EU4SXnjP8bAXBPoLgyt2bxl7CONW2KgeOsgdav9Q9eFxL9J4YF6TOKba4Sf64WRrQ2jVx0zYf8JBeZYY+Oj4IcweTfwSiT6B5824vDJNqVrrvBGZOe4G5Hc/91zpxbdZzL67usNz/H0VHSdm/+POt8ATPDDKR/Ee0xJETSvITFhtUj6ENGUMb6MnjDWPd9JfqhmIotCtbYvzI5cgQjieJuWRlR1FTqKnSP3wg5ot1Y7nV+eSvH+7LAQ06Ws7ZnK7VXHH1mPA57OI++Ie4sRbiqjrqee1/C6SzUGq2lrENmtxkRRwKIC8CgjnaAmTYYeElFeHk4GaQrAfyRmPt3LrUXCfuwnSWqL4rHoGlRD9oxyeR3QArhGQdyvnrPHy5s9u7D6mVcN4FLKllH9BUSz6grpogdSHwgA0wdpp+uhXscyUJl1SjUEKjSeMekymXVbMEAWDOiHeHwdyUNyuCp3PdmcTaITdWyMEqz0UJEnKe+VOwQs7ZWLQ3Lv5Bxvt4iIsyIr19Dv2uNy67lP/1lx+OyA1aWlktJMNC/nytALvvUIrkIJcw3Rr2I+fdHyeSCZnwsau24xjwKNND893k7hv1HSl1pxfT68y4UOSTd8aofG6TLvqoGaLpsgtoAfDcBTQBWHEBjRNtZhIK2XLjfyLZKJCJO3ZB1iijhmz1rTSj0QhJeiTat1+5Vj3arlknfWGp49ztpI26BTQE0LAAVxEy5qm8XlSSa6lXOB+YHkRfSO/MJnWWlS3eeEhGmcEs2Ptj3FRrWeHqKk6rMMAVe1UkJPHqSEhqIU0D6VpIS2rbrE90EEutZMWy9j/b2qMDqJMzu+ozbWXRYeczc9BeWjYfAe1W0WBpIwsNTeizhBqB4pUIZjupL5C6mmPY5kkv7W9VxtoyZWCzNUWBdFoemoqyKiKVpIc1BXk9G1psSs+4l45u2ugnXuqOtbEVHbm2t7RcZtqs2zjXApeJbNjIoh0uk6BpE7jWt0xky0Z6JrckmqbS2NUNVbSO1VJ7Tt9+Wtai3G7v2isTF4sDs8GZmcgMhf6NTzpnV5+WIdQPr4NRXXixR3g5YlrTGHjnIMTU8fCSQiICc6olAK8qYShjh1iz0dPwRk/dHT0MfbYhMaFnd3B3YElUT7pXVeJsmLnDaGqiynyFlc3NCvbMCKrnQyQpDCksuU/yVvIHFCPzOHc8+Y1YHDTFBp0YM+msMZPOHjOO9UFKiGZHovXgM1fboI1f8aOsHTLqm+ZpnOqlw44jc9SdOXTMeCkasUvcikeJX1GE84oh4NmbC9rtQATLywql1d6fsAEp2wOlBdo+UMWiTfszpsweHsHl5u8epilnOCRGTdpcbz1D7tpCe2qlxjRPgs/QMM9eyxOiTYuQWomOTM3RorHftffiayCwKjigWkxOZiSTY5DJfn+MdeEQIoSp+M3baxRxE7nTgSZsG2L7r7xSgTpnA9zfu8sSu2LKqmSWJLlC7UdJ9jirgrwJKVTfX93PWqkPNmuY8mIVaMHZfZzEzXmR8iG8M2Un0Es8ZFF0FvdD7bNmNz1GaniqE8/nDM8T0DyZf6ZxMPOaNu5nRAlIvl0bxt83fUSTU6W87oVsjxJHP4U20UyYDg+Tl2lVO6jK/DWposeJSKILLqvKgO3MM5VETninUpPOKXJIM7c/UPQlY2ko+qNSWHiUdnCUe8mhQG+y3mo/z9cUDLsL1JJc1FBdpWyjTql/pWI7qdRpqa3aXQIkWkDySaNNT+TAU/TJUzirs3mPT0oa9e83RVNq7bgG8hdQ1lWPh4ZT3YLLKqeW3vxIooQrrDxIRUmhfzsDqllEtpcnexjbhSdcTL7aAp4J+yPtGooObasBX0kCNUBaliXvuwCzE8SqFeG5n7LAfARt63IsEJ87gygaJ6HkzgdFoAquvYxUzGS6PzGoJsbUiXncN57QaGR+0vFYiGi/EFWSkNdaI3CtKvRnllNTsdd+3eBFZ2kZJqw4bCB4DjOLkkUXhAofxbT6ZdNNG8Gh7YhnDam9pEQLiSRm9p6Oj/vcoRIf41Wa+44yCyyn2dZo/A+uMwnWV3TvA5bitbRDIyymdGObPJYsWWattQ0fzTIhj2TLbjKakO9smuNLSwVbdxjjOKkhpsKHO5lXL/W5t8T5l9sI9GDZS8Uho20rDnM21tSpNru1rCcClT6UMndT0DEy02DuWr+exvdRTT81JNE0IWVfuNF4YPDFjKfzW+pWqpJUwEmQkORJIXdyZdHooRrlrhUUaZ9G7pinD6FXHDDMprAg3XdzjecNze8MBFHGsptbk/JVZczaxOPK/pGfNTDuYOZ0buSyCMjw2+p1+SBHBN2zUxygrEAnPUlLUqe1WBiq7zaWPRZY199MyfH4NeW243CJDrSv1ikDLT8cBoE5BN54p8Ck4JaHPO1LYYo6nmDzYXCjT4i5zjVHBRpBwEfU4e7RLTh6etLfV2Byb4kUCkkVcfBAKlvkLwiLS+rHqv87kar7bk+id7FujC3jkMeMJXd63skkh0qwsTRr0noX3C9pCNQXdPRCE8pua3Ijv6q2Wta4119/0XnNRYK4LM/t1SNyjNwcF+BPPiLPOJY81/Q+42dg9G5a5Q9jdYPirDKWZQjSWZsbW247lGC/Spi2xJmRV5AMoY+xOCQKO0Ud3VhO6rN9W6lEfWYbl3TW7D1lJlpnd+kkM88e5YtIJ3/Jby/5awrY010jdPFd60p9zVzyKib36qLEF9I11uTWV5Yy6IgBba5+fq7mWuu6O5k+7DBpvrqUKwGyhqbrLIp82XlsE9ldggz8nj413Yiwwex2cpQJnrnOt+bs84ZltIuKYDg3qyJHUnQlK7u6dzbCWjkOvZVUbzvC95WlJGvV768r2/p/Sk33adPOqaiMm0JFZQT8rVE+7PXjdOYgd9V8XmLNmBjyuTfgQxB3cYHVp9edOvC3RybxaykZ07vy6az3GW1i8zxmLJMlUnn2ol73WuLxDZENYt68/M4WWMFoONl5mSGJCNJHjx4EKzIIbq+k8WbUiJWp2AKrKxU+DBV6WtYGOeodOG7+PEtp5umDo/1vDotx8l8wIh4eBN/T4daZL1VlTuWBqIJP2mmEW4HeKOM/9ro4xInDP23QFzjKJgsD5vgx83CwyaMHhUKcPSGXbfd3QyabWBidxGbZeisRZcuTIGCrFLP7SQ0KS5hMY5tWY94dc0RxnuR+v+vfOYBMhRKL+aE8dlP2fE+FHYwTe5vkqvcgN+LHRHMjHsNVYGMEKqnxl8LvdOnTM5LYYXb/FdtESAbCMJQoqZ3LsYBrGahAnz8Dm8M5rDIbg4iK4OjxEbJT1F+C49EvX77kSvDgOWawQBmZghzWDBSvJeFa5ka6socIilmx/g7CpincDMb2CNd84UsOoBDGBhGzdRXDnibxAjGArILSEHmT+PBKdtTPE2SQTI4tCNRAs1AHmp1Rk56Nb2hPrO/oKZNtEYQKv06a48GJKU/OiP2s+H0t2xkok1aCtht7I7S4Vt6zKQRGUJ4KTAXWzSYxAH80+GgE5qLxohkoUCFGY5hCABLWiR4zRibHRbNkXDT8cdHsVF6jD61/causJ+sZeDmaWoo/Qlq4QX6xmWuB0gyNHUzdr73Xl/6tUXM5N5NqwWfenogP7KHEuM9MgdpJ6OKss0lXuR4WjcQYYNKxlZ6mBJJW68bykqFN42mpnxLyJ3UiKFegcSwu1yOkE5+tQr6Gi+tm+ceEwu1foNuus2mN/kCbuqqvcklJ5A7qI7BMuzh00tllYmpic6P5cHZ6ple5WXeZIHDJ/JKE9N1efv0mR4PT/fNQSzeZTVO+0amH+q3nw9nOGZf28vWWfPBg4g7+hfXy790fzLtCRWfTjkU0szyv2YyFOo5yWrZHXY7wwnOdUfV6eAmHVCfVSAyvA3ZK4pp5+CGEPjxl3h3tblE0kb8GVpCDDtRrbBw1HyhyjCdZDugmXd+ZdX2PqS2gmBK3uUsuGywz+w45x2y7GcLRux7X9DNajoeKT5NvC840mZMklc8ZtivTDGC3PNC0bvOAE7M+JxOshLCWP6N/iavBNMyB+vbTaXt2yS4L6F4dJmLqzJ0LeJ4whc+YDSLLSKWUZ8trG52N+fls42/oqI+cJrMoCWeS+fHE9lcUbWjOcR2dio944lodzG/o6bFBh+5B2ljSKjBpI+MsL+M7Yx8v4btpvtNGy349t18r5ivQU6zJF4lu5cFe+ZHHI4ws/pjRI3KIheX1lAk6k9aGoqLBba/BB1x+zh2LXehGLAXgyHWCQGTrBxzvmaIhdcR0TGJjHMsDGOuIFrDM1zQLHuEhFCV5toRoL0ab6LG4qMjOVAQCk69QTVfSgXqmLrpqoPpsjcx2UKGOtoaQ2k+MhjM1uAZnpzewy4uVPIqu0ANhbXyd5gqLaRhaaJSKUD+FRETMv84CCxaXyt+UX3ZZqrwsU3+wOmFRRQV/JLyAaDFzJsEGx4M3QqeQSx/rrpYj5h/XtyNRr5uU+Xvz11/SQq4OXkvddhVXcvfmanUZHXseRQnmSpymvaubyCoEcr3S1djsRg9oN+mSzKP5PjjK+6ub3YyjvI8JvNk93j+pnXVphvEMA+nzcQY5ifRX/t6+1VXb2qTeTjcaXsq4qg0gjFsbY5j1qj7MquvhHIEjTfaA/zQI1asuCHnVXd3JKEEApGx1o53u8avuSZ43Qur66hap2+4eS6wnBrvVDU+iCfhWd76hBGpKoBfzaLvb+WnyuPJjzOMIjd4ltUEUd2Iqd1LAIQHgc1TH3/ElNuUbGQiQCdEwLPvkLgyj2H4CyvM1I+OogZ/LOMuza792YpcEYnNLwCvxh15ypEO2QW0B+eWHZlgDFXzWwgWLGLl54+MdCqDP44XrnAMbhLYMqMFyuOFU/zp1gRdyXAT8Jw+eDi/HhP5M6FG1gZHHrG4lcAm+q+nS8LrKK6hvU3R7a/dwYXP/zZvtTdgl0liaYjrAVoxKsD9VEcaq1CyLuEREqyxilJqpkE6YaKCByoG2e1ii7rueGn1gb5dPai/jolavWOLK7BsQa7sMYZXFvxziof14IAtaNTzBFmsTayuLL2/5wIThnBXfG/19CnykVVssdyV2YwHxm1OxyhdcJh+pIhNFXHLg2i+udXn/k9W4Hw7EnpqBWo9zZZUOQUxdPdAcgghtYVGdTlJvMRUjPDpEC4dzLNbd/Q4niBWd2CTLV6sRJib3stdiZZNLTnd11OFCM5yPygxtxsf6EMkOGBqzZgxkmO91VPFMjX14ofGE4moMOm1rG9eIMnE7708QHYKwvkOnJj8GrfFqtxOD1rSc1v5xrK1WpEInS5a1L3jilCzsa22f9Ik3d1puEEpzUgGWndRw44/VY6b04fbme9pRrmVsg/kgpNbRVUws6O7GapRHdsJvrNdYP1oxgatJVYfWfhqjIo3nbRoMX8vzZZUoz9jIMtaZr9EqyRhHxTxNffLIU642WvO2sbislLV444Wq6/8a5hc0AzezdhKMWrj6FbZiO6nd4pggME1bUxP3ooS2ftTVjaWeFUl6Md/PEqXRRKU73IedsdLXY8UYQiykfoG6kVJg5DqSrlcnlt7yGreapp7zAxJ5xSLmT+NqY3tJfut1/VufBh3wb6iajytueUmKy5tXFVb8KnfLBjk3lOkJpaE7TkO3WmzopjcKJDqOmq3O1Iq+KKloWUKmaj63vd8okscNH3yvTIQFgL1UNbUpP016R0h3SV5q6IFbLyO5UfdSNqelTJFyvjrR7+HT5rNnUCyAdlExboVxE2MuFXw8B9W2Y8b42kWpHkepR5Ru8ZUy6lfcdMvPytPZdhngYITOXFnNU3ColBCyoqnIkxVmn7dQvRudjyAdIHZxtZQCH7viUZfr1MQaNB/wpA2skbuqhR0ZZ8agMqpBMU9Lfj/yyYvt1kHaGbznwPP2jcesrkfbb7Zod31ibY1Fmk6eA7KDGttKvvQOemc4SvYsWds/2H6TC5ikk7unqawSqdos3JnHOkSdNl/zte+cJym5QFvhso3r2m56tS1SqqfNAeaLN3/Wp83OpXr5MmRJxvrWRmZh7nHK5aVPFj61lNZEKYJunERBnKQYXnXo9S49W36+8iIA/O2pV8m8ZYMga8NOXzZwItGth5bbi28GNbzQIbn+vMZgvLyohj8wUX5ZybQJScHP33/Yfr1/tL0VmJFLHEeFs+Bn4SDgI4oVh+oRv0OVNdcuYvm3mijCNY5blwyuZHVZ1hYa2cWn2NhVO0h4iyDb17tLhTbDJYlJyX+2ayeBTG/uUJqCqzQq3ZqXzZ6x0lLPX6jny4r2NpB1anLZw58/UyvL6vlztaKTjx7A/rylllfU8gsmtzq791gZfkJDFRgOacZwqpOtS4/aIxwLRSY2NQG8AzaXQ63MbqwrRa/p4NJcZ1qRVim5q51/uuBjOy2LwrxM8wXWYfwGlALCI/U4MOEthD9sMSQiRYSlTdGYqe7rG/vQcEfIKyDPRpCA/ZBpSwUhJWD3XBtH+xiNWiLLMhriblc/Cbw+G4PoHkkBUqpvBupll4yZh9Kioz/1Hpf48sp1TCfy3c76J2fzt5hFY32vakQFUIn1vCQS+fuylNZgVsEgVxOId+N1Gq8tz4RmbxuatjmWHWtblm1DW3CFiATdcm6aPYFpKjsDEZ640dora1J+5ZpCWkglA93Sv8Wcs18Tepz4BbJasTHlxJOMHmdPnyJJY0k3cAaD8zleEUyIozCUROodflxwZ9tdIXL/elVMCNcXAq1hY4UcrXJVPBt231x2bRd1RhlXuRu50ccj+i8QmyNdgRtu1yaFfMk5LIOvd9351Y6r3bAT8GnOGmXj9BD5UAtiU+VeMHAsQIyJcsDCSAT72I5GEBDfoCsSijVRptcJ2yHIhuhF37QCTju9FzHPYkor8Nk7Dv7fYN6NPU4ztwhFqBiz6x93a3quv2GiM+H78zqoN/p1P1ouDL2w7YNNO/vA9V772Ieo3klmzqLvONjK7UZKJDaGXKhVX1pSsYcQ1wbxeP/ziOZBetc3dEGBVmNbWw4gah8amRicflL3PArBX4q4xqg67f07S7IlJS0hxbkqT9yUKzGjY+e1JMzU2j+3XW9ECM7wawSiHBR8Y8qTr7kBopLGocREAe4aG9DMmYnm6vPyy2frIjXixgCE6Org9FamGJbxJag6ELez9xibEAQwrsrIzO9VMK+RmSArlschWUkhbCnXpZTBUJKy5iQjZj9fsXHoOYKYHq3xNunvZBRa79OGOZRNvK4c29wewYWgOgJ/SB5l+SUqdIXODYTFVZbZ5JySjTmKI4OtW9qki6XddZ8VzXaZQIj47Ew5XywJcSIb8u3nNvjm7UAceAV4xqltRNe4l+HjY/G5aqS64TezIFO9E9Ob6Wixfm51He7CKp9ALdJHQaNWDyo9Y10yCm5vThdWgvW11e3Rp94Qg1mci7W/jM+sg7HPnz/XPrfoWow+0xqLv+691vLq8UK2pAU2V/fhXFni+PsdtGVZP3+38zPJOIW41mL92SJLXuiZVqBofhejZPVHvd1zRolJAs4a5bR+ypYHClrbp7cyfZz5Nm5/+zXGjnKv4+mntV+74AoYWktCOnVc8+aaihVQMUcJKpohQxRRjkIOh3979wj29r/xwZj3cYkMOu5o8fhmN1vMF4NslRa1v7jtWhVJ5htSRuIPtaH4qFEX6lbwfuVO8jMvHL381nGR1fIWg/ErFsWb9u54fNvrvr08h6CP6cSbh/sf3VJvLuKMML7Jun7cs9lwWB3jTjI+Gy/wGcVky8ZNY1GiGKo3FhDBf3CpyUftBXxQjgKzQXzjgUTjcO3IJCGt1kkd4zWAUkxrf7f8TJFx4YaoFoy0Aon41zsTpQtZXXRLy0nrdT3iKHTadjP6EOx9F5C1W3RBjM/chlaI/T/QmP/KCngLIHfgW65yTsFYNScJX5xey8WH+mbRH19rHJHciSnFkokMfM+KAfJS0zmLzLXY1cqcweLaXHZPpnAncE7baS/aeDTCWqF3FwlM20IwD4MDHP14D9lIzwPtUzMKZpHnJm/rzLmt4ylrqBbnwsxe3IK9ZWwGd3s8yWtMIODRS7FFA+MavEglELC0S+NqjFGLSvdrO6w2QyVnjokDBfMZAbndLZ0dLqsqTObCdUtfDe+IMz/pfO8Gsnh9iT6NIfJ5R00i79C0mJeA4221S29WmD7ZDvAStknXVnttW3MGstassDknGlF0/5juzeXN2alPOybG0D+2meGSpwbkZ0LyckClS0HAw0BVN6mQt5ht49qbGDklc7Js9r6zh+1We2EzfqmBYRvM6X0hTgv7Qvjt+8fQu9H4//hRNMRZc3IMOTVfnN2JyT/rROmt371d/Jy7uLnXPw7hi8Ubw8jAgnHzf2JfkWqILVEU3+oXrB28Xa7X6vU6NE9LYtm7wrKZ7GJ9tbVWI8+lsXsRT2bVWC+3q9dtTvc5M8uu9fVZ7onZTehC+wDhbfO8eNu8CLUNyugiv5z/8UcwAeSN3RJxfAF9+CAbB87bNGPC0vdyycO/5ZfWeN5U5IJHZXch03l2/t6tlHn/+a20Iw4TiewfXExv84vpV1xMv67eZhfTr7iYxpN3y9vjr+Ziyq9ZF9OyzCbnlGzxd11MTb9kl9GJqrFlpHZSM4YnKmeR6F5hjW4uM80Q0mfjbZ2KeaZmOI/i+aqB9AiRxzoxH8EVsTt/Xr4m0vPcSC46xeuJzLRRPtO+e4Hb1JZu/69a475/fVvto9NGdvXql6xeXa5eRkyfqbt6RCTg1hCbheR7n0YJ0LQeN7Sw2z8Uu5372fd39Rbmkenq/+7qZKKXK4teJ0hPOZPvMC6wodgLTPS9/fCqd7P6350ws/HZvKbZf0tKuH+qJyvfBdkxt3oS3lrLuMayyfHtSTixCxDq7HHMo0EX2Up+q+ctYFz92ZwWKEv+ZEI/FSg+ijWhF4bQew0q5SvJ+Im1M57EnB7+e2r2Jhdgtjgvl3/svoGH0clDpFwtJVEgidam3RG7ukd+Tf7ZbKYrA0M7CuD3f3Ibnfvfclqz9W3bGI709zdvUFks6cs5Z4l4W1yZ/3ZPHmDpmOjE/+5ENsvf7z8OAhvSz+FfbjKL2iUxq7oXSqdvKqci73B04bBm6H7j+k4/uzoP+Pa5MekgpqolG7IcAdJXMuvcdKsZRVEfouPxsGM8avXCLFq/1HfugzCshmESaUTVa7EQXSUjEtJUQVjb2t+j2xQIpIUixyK6QeLwUImvPCQOcpn0PIfBagGPweC4ZdzQDr9+3dcX22qwd5bC5B6sHdTwGAWc+pEsHt+NKGeATwp0IKaqrX317++llfgEc08xiWSKXo+MDe23SHU7I2gnTk8bt53UYYc9MwodG/V66xaZtVGJRAal2AwzwY3Wr4y18XHPFRzoueIWui4XU8ni0NIkdS5A/sUM8m1KIf7CI76+ejFJtH6QdOHInNOpug4PY//dW+0wO4q6JvPCc52962ka5ZFhqNLM0QZSIZBEcbVQmCvDJ2P41o7hgoiq78kHY0ELp4ok0P19hqZPSbOtcgEbq8vUq32IkexilfJ0F1FsXw5qnwC5FaG/2yhWBGCZvhDnapLaNeqf6DW8qwbk3JnHxvP1arfaU7EmTMMVxTDCthVZCuxGY+2MR1Fi24oihUltcrVZR1Ng/6gOVHm8ytcW1VN99RpiD3RPpl8FoY/2GqTch22HOno+svS58iC2TmqEynOR0lUbhQPkTZhXYpgzXxvMKzd8Q3JVtHWDwI+tm4OALpU8FFb46RWPul3UkcJ3Yx6MbeD41YSsjj0h61O1mzJ0WWrCN/Pij2/BQhuKcE8BLhTNzl+aGTm7M3vvXJXHuy/XmHlUczX9gOAQvXihO4+tpaQRTRdgJLu+kPrcWXq13xawheBnDYP691jLfYGA2PqfrQJXIiCjDoXBvlfVDhC0SwM6OmDneA4MB6AoJXEyNljQ/kLU7MgKllpUtxGQdYIfMK4vgBHzhpAzdRFdeLJJYee2epHX/BwXkU31ig/YtygeLKroW2YEoC2ja3Odv+3NGghpbyr6I4S3mlf3nJ+3udtbOKaoN6LolVbagdKBHr6vnj5d0r/rVaH7h9QkZyOqrm5VFgwS+iEaiFBbZYkZoTnUMUHnDHRi12n/Ods+odyZXWGp25OKKWiIbp8mKEMSKMAVyMLvTdxHYRwfhzF+PlUNimObFT3hCzZweNjppivXL6BnrOpb7EB1nE9DSMUpEhveI8GPaahsSfPzhToNUaBpgXwh4Byv0w+s72kp7KOzq1nZaC6zNvRqb+JqKpNEBv1uF2VBFRzimiPPgeIodx2ZF9efUtzAKW5gi9OLPMfnBY4KBHfkxLGFBVdYzwZRigdvvYR0clG3bJ5TPKKQKjouAFCedX2FIWt0V3mq+685uK3HkT2y0TZxEIKHfX4StuOIQQkYDF/hTDUX9wXxw6jLratOzWBMgNzPx9owhDXl6JtnN6ft6S1AaLVgfcaPf2biJ2OWGWMt2/hxzxnnGaPx41ck3hq08WPhDc+1RONHNlBNMWpSgGOx9O37FOKbobJWe9rYI3mraGeDBcparR+qw/nl+g99HroY+RUWiaRyVQoM6wEwhHpbpwnnZp0hps9FzWKU3cErEY3fucgNsETvj7PQCeA04BJ1qwD5za8MREpWThEeNp4PHdyZXg81HIQU7CEcJQ2ZSm8uaYZJBvQ4fGCSHg/01qDnWTavzfwToLsJdR07Bg16lsmOos0WQimyrVtXu6xF0NYKAF+PUyzhJ+2f5bfD3Cv63NV4Xpd8BlGw0ae1nc8c+93LPk6ClyD+eOkklI9W9tGUD+KjgyaTbjmDPtPQWq1WEaNvXZ4w8ehRe5mChudCwzNNAinMSqe4O2Y9pZ94OtCEvmjaZA69mHmoAYvXjaGhzbwWlWsxz3aEER8PK/sY+ZXXcGZp7KyhguNKb0yHZWfjQa9bk6J8JIezUcB5mOStaL8+NJOBezgxo3DadMjQNqfQtru1veCYKZ1NW6uUtgKK76PtnmiXnUEUR7o/V1eb0KVkH+OTnrp0v2tFPo4ElUQBLEWxE5TTHVWAxfVAqOyi2NKmfTe0N8+0h3tpF9cMKuCAQlpn0hRdcLAhBnTj4uE6K6gFbYuqaVGBO5FAuP7vo6prVEdXl5en309QsCMJNdPnweR2BNtGNiMV5RvBropYTUauT5fn7LKjS5h5hix1jLrCmw/Ex84reDg4PYW58erbX0NdKP1aXrEX281/hvBwAuFURKY27FQ96SYnI75M/cxHy45YPRCvRaaN9uyzWSDqSBy9xO8hbTUzpK0MacNHur2xWenR+WS7Et/gonB1w3UGWwpIH2tzj58H2kYU0p0ZPcz/D5qCp12tjXk2ts57ZhS+NKVGm71rruK03Y3KmLa2cs7LHGRFj7unMajp0iQXUWdzbCXEYqnttY5rlbcDWGC5G6MyGFh3laSnPRVes34YqOielgzfN5eV5PJS/FNeYAmIESNzxLDyRv0MD5V8bq84ArSVbhmf17dXN8jyTOaCJCRCTSNaDnHP3bjTs+uLzzFaVLt5RyWqMey09WL0JrbuyubBOzbnlRbXGN5Vel8wiEhECJKtIqxjik8729Usmh6Nn+CUHm3j79Xpl+g4YzCS0CFFsDKJwPTsYrEhRnM07xGBQM2UcrSZ8DfL1GSm2UWcXY2dIk5IXhwd8xdWbHj/039/p50V8jLkhCq3tbq61ZEfPEsr2T79g3NbnAeeeYQhxvwmBzH4Fr/7bJRxapHY+5IwEC7kmjiEvLLcbUIdbVMz8Jpe4rX8PE8TDOL0f2+z6wsJ6Z8sRFDHaYbaxpviBW1KtAxqIe2+RXg2Bd9h/D346g7Gi5JmEJy/59V3K/+aeAWr3D9ZTB9YBxbn22QKme+/D6VF+Es8lcoPf5vKeMoAELy/Pbrze7WDuPo6zIeALeFdsQhBfSSdRWOO1nRgmfnWIAR2sPNSp1flpvkpr9nDWITAfqg+Wc6+z+m39O7l5Dpt/Nsq5+N6lXNqXrECv0rbuHT1lDfeEiAYZGwXlEdUYRt5zQ3j2OA/sWX/Xjpk9ucdnkdngKiPbA+d+du0apz2fFyGOXVe/aa9IyWKP+M2xkvS7inDRmjXVdoGSjAf2l31Y9ru3+fTuGgchhtFzmlmDwRhdgzRKy02OpgPmUhJI3nFlI3SlDTsW0zZREqScxB79Ew4lJbmmPAqjZMkIX1yk39KqoXYnK+ty0j8F1z2xWGivxh77Wmug6JEGsrTIpE1FB+M+S0tRMXSbvpWdICjM0XOPpjLUUAj0H0qC1/r+OD/Z+86uNvGkfBfybte9G5TrmqrLMmxYqvEVGxv9YNISGJMkVoWR0pe/vthOCAxpAiClHyv3paEBIVvBoNv0AvkNeLc2EW9zEi9KOJh/kFAWaKpBI9Zt/yzTNTtkdDWOonhqooa6HdF6GJ100SQ4/QgNsiYenisaJd1JvwDPi7kGIaf7hF24ZeC3hjFcrqOfBwyoHUuFzS7O9SsgT642KnneYgbYQbJ6AA7bZPdCCJgX/M4V5Tk+bwN2E2vhj1vW2UxYLXgz3Vr8BYMmlUzyCzk6dmT6mO1TWw1a+436ejuvZNsNnuV2h90OQ6Xd12lFMyOPCa5u3BKNqqOmW3/gbT30zEUgSEDeW4dOVuPd1h1F58FGshgTWUwRw5TCXCBGeJmuTSJEsp2al1PgVk8lm/2g0CDv1A7gSmvoBAKn3tsJbLygvmOl25Ad7BI1meUkjDcwWH9WYDlrnw40h/sAs+uvxpzGG1yo43KI8epYKQ2ARLnku/HLE7HfSrAcYS1o34r0oPHp02XpE8IVXfh1YEmMujEm+iEh/ZfJx5H1Uig0AlPbhZapMHc6W23o0HmIuLJ7uBPQVcleHWi4LPEezhaeLwwCRc+FrofaasQiwUYOujZ3tCPw/1wJxQoXSTJOhiQbbYTqpTuGhQqlW/uEwUG3m8HpYWPXE+IikbN1Gwz0c/lJU96IYoiBP9QTL8RH+qZg5Sj3wC9XVsyvLfQlLkmfLzwTiuiU7Lyomxl+8DKzqGVV5mV17mVd1Rhs5p44DVVs2AHD0E/trUuMBvuZCykvYZSufqPrUjyuiQmrQiWiLSm7tgeykrnaEnN8v44vAmPtZD7MrmaGRbg1NHylFQyHOz5YMsqZszaeoZeBFDifeYafk01mB1hgIzt4wi5FHFq9esV5ZqlkoTNgkhWavIJSlFVn21Oh75g0VoHvz0WHgsTiZllCQYWJTxQCa3UHzJ7uoV4lKDB8VlslSDFCx5mDu0UYquet4JT4dcblcFhjZke3TDwN3hfTcW9diAWh1QHfMn9iOd1Oj4oS/16ghD0jZutfx0kEKxq7Rw+qrNcvOahz2N6iTiqDgexz8Js95WALQYon1DGirXpuOBJ6Eaxa8/SORicWQHypIFR6oYRj3HzF3odZBR9x1+qVCUaemVVFTETsqof8nQ6lnl9Zq+RuoRfj0XljYiWFrFs/w9aZHp1ym/6MLvu5XPHAqhiHlmhftTnKsU9sYA701ThUoK27zNhzbSDjJEdE12CO2O2I/2X7qv/PFedlp3TVo5WzCzAvuY8mPAdYfVe3y8qC8kgeiZZY9HQ6S2iwEvS/i7+GvvYqqs0aGJ7pfW5G0ZKLox//DhaZEOSP4olB4DZXzTiYn4PkEDCZ0W8Xo3JZ8nCc+20V+ULMCi3Cg38/vUV1BahJ2yA0+2Y6EiZ+6II3xAcyw8BD2f66TvyZ8eBg+aqgyfgyRucPa4EDI4WMA8T8MfrIIgbyuofLUt8EcDizyLguY7pZlC8sjnms8u+9eK5LF1Qxoy5QPnBZIKdi3dAM8Xy108sdLhTYlXnnVTtnUnieRDMaabK2EqvoYHmRq2kDqiNks864hVHERTph1q3JIs+WrVZVa6OnFbYc+jS+QJBXkgokOVTsXn3xmk2howLWLBlViDheAuvHAyEX0f+MhDmgb/Og3DDYpFX0C4R/U/oHuDCy65Dx1pErzPvya07eR/uodOfdL3Pckz5slrTJjrSD3S45NM8dFertCifJ77PvSt3yaEKhcGRXZzecgrtBKF6lkyh+MiPQVcvC1LDl1dFFY2q9eGYW/qpny+u0Bd+Y60Qi8fJtuc71fN1cNv4xo2RaJEe//ZY/Hf+NgweXcm2WfYMQ3GBQyhnHStgxkJopRE5+lTMjxSCNdC5x6L1LWfhNIlFQmJTnkyOlYYso7bCphsMmskfk/meY6WIz+Ph2U46FoBnjwr8puxereDnV9bMugTg0QAaYTNLlYpTimxGJT1IahcYuyy0i3B25Gjsd4lLgd4eD6ToeAYrd4SucK9/4MO+JCJh9tRmuHlJ0O906FVdVwCVPQUC8X2RAUYQi4LIJzLZoimuTag4BkE7lZ8muAZulC3TEwRLvXTqQ4cCiCbBsfmzqLPEDFZUpYc8SuaSALRFvmHxeeeTOpZVJAzbOdWjiZB8a+/b6zDwq4a/xOHQooQXmWvv85+m4lYLKQ6nVaqM1lAMJObCXa2r5MzZc6jjNi+6C/Hny7R5JIf5Gdf7PVTKI9+NXZEjjqqbnmjUbVEj+ZYv3o2eSM5FKcvegQzHgdUt5FZEestg99P9/VYeVIPL/n9DhlDu78Ns33Dodgew5qZ8TaFYY5M2k38Dgc+y0GfPf/O5U3Wb4cjfJlVCcYsXykxXl2yB/UpiBZSQTK6N7OZXGXYIlX8DnuSJC5FhUWW3qGKGI9Y8qrhVV21289sTO/RuTfnpn/IT3OIpXl/J1+zCRhH09yzIuoTKaLYOWcS7+TWLnzuj4XD47+cvX+yKVko3ufQ9l/tk4EaG9kohcHklzuBxbWEEbMAyp4YQWXCX1eTfQqeyfaivU1BWtSBtrimDDYux1Cz4aI6nSdY18ZyTpUDJYJaz1ng4kFcUU3Di+qnOvTKLqOrd4RFKuQ6fsHIQYmTQnG+2HghWrRharRAhZ0EgrSUzXaBjKuDLNHTSrhHu9QHLOA62BghcCa1Qoiv46yDtshzI6/7xK7l5SW73b39kcesTDL76Ij+woOJkr+P1+IqcyIAorU9R/qb96uKKbIQkFk6HIAeaHavYVzVnwBdK5GegzLOCCz57/tUX5Ez44vFqFVkgztoAvsB0tu3g/b2wzrfGWfoMGtZ49QhAQ7sImJsHQLMewrgz9ZVbvC9CHgKOImgNi0QsUvrKymke9OHqajLNpMdZM8GOqDmUp4U6Z76c0NlynvaxeARbYNJXBfBW4+qXN2M61tKbNSy87H/+TV7U/e3L7qusue1r1RwLIQwHBAZcFgWwPCcNl0t1yAyKJlM1SKrNK+c58IWUsmTajEIbYKFFTnsTm1bJw8kW+SrnXmiWBK3Qpr7n+goNXxXYthXY28Tlka3Q8J3AxS2sZLFHLo/IFCjEXFE7Uwt/rMb5tQ0bTq18H7WGnK33kWszL73VubnrfjACwswjW7WAvF5oIYH4VY0Dmfz0OzFM2VcwqiMF/78afopqGLI0Ecpje+x/Xwf3Q46HT3gsiiDoN99UqZHFOoiPUSQT8NetK2pwLuzAFN0MezCLvPYe1rg2EjPZbr19uyL+jIJqAcuF+66oijaeqVjfN8QxFOgfG8IYi/KB2Rp1hXjfHN1QfPea5fGpBfe4TkwYQA0RhO2I9IZCauDKNDovqqGJZSLRazOKmUIXZpAmBLoyW0FPn0tTZAN5Rg1z9STqTDRK4pi0diXJVK+binqqbjO9kPYzsEZpdzXSLO639qB3FK+IVe0+b7WclVHMvnNthjA4jmVGMHrNrSnlWpe50cc0+8vcnIEnUuR7vXGyCQ7mwQzzMUvnfqdJO9lRdcn5tgfXcpBUr5a6VKuo7YjrLI2KlKn7g84wKpKZvGxpAjHTd2HEaELgpdECegpzQ1wDie1m2XkSjbd1MuSIcTvKeBSxGq1MmbUup1QkM2XeG0HMlHkwYjShjG+0gJ4yG0NcA2WshSF6M7rkF/GK0HCf9XT+9BsXJj1+9KF/5Lx48XNXjn395s84s1PZy5HdiqVmMZJUErYvXwRRfMYi7qTz5qoqT19hsljukoBJJTUxJfeAyZlk/IHafTS2J4Fv8+IGsK5zuOpsBdtM3Jh5+WY22CfzgONwh8qb1YaJSFinCnJHvrC060MaIIRowjqj6IqzJQ1biLDiKkOyGu+x2pBN9AHTPIktD63nHFhPTXztj7Leu+0qZA7H6bV5ALqA/aQO1esGyzooq30o6tBA/gBPo0H5csMCLHaqWbpKZSgJ5bFltUa9ai2fcuWPR8DBX+DTPvdg/QTtfRYN0B7vVhgZEg9BciUymQ20FTqBnm4F84kfw148CMNk/s7GCpbEZfrIuPgeY5MWTzPB3HfSoD5mYP7cdf4psjYChgm/zKanmVzdTU1mSJV8JZoNm8YOtoeR+2WX0QCcWvu/rpFDlyY9WTfuvCjQLE51OLV+d1GTCMsOOff1i9uk22XNGvIKiUi5YSdwivc1hxOZoklCth6N6gRzezR9olyKq4p8WoTN5zNhvt2+UPekIdnCWNePm6zilQX/wI+sZLl0d2rL8JtiwyI/ZmTKfmQ/f/tfMqwz311bie6Fz//i3t5LEWIAxSApM8IlTQvJ5jMamSA7t99zpjd+9uv3pZrs1bq7jYDosGJFJn74e3WpaNIaiKov60tlbAC0anhJfdlcKutCRFDNs/qyTQI3NZgm+hBH10D1ZbdgIxCpDuIAtgt99WV/qYKqB4itsR2gR7Yekzl1U2ZghtUP2WeHJjyj7kFfY8skNNWXY4qZJu8dBmiioRvFGyAZZ6svp0ulvB+MVoH/jznIzlAATLrnJaoMY5ZrVFCc6Opdu3FAYgIeLMr8OqcN1k1dHyk45LwY3yxmrRoTwiWpB6ev/7VRFKZ+BoiubQkSsf8gtJtswg/ZqQccTeCMGTpmiNsGyP+eZmfpByT16EIv1HmmknymuXurxVWHbvLZOKUSEtOcZoY/g99syq6ONeAc5YYTHtUjDmY0Mhe6F09FtmoKfQxPDwxzrulfsGGu9dzdzWHRaHrtX+O0OS6w8VE1DQIR46dC3I3K2FcHNue3MVkmZMvJI/w6AYU4WXh40Mwzvl4s5fHMsW6LnD26m0lmjO0iBRUSv3135Opf2CLjRerBjEmy6LCxDTwYKrL1CtUIAZDhIlsLYVR0ZZBTbQdFfbyjCfAqNTw0QCMJnAvzY7lwu9UnQ6azKkwITHLenJd3BFFZmZulWLsyef5uHY4qMF6uvKcF56RrQyFqN47K8ijOM7fj5LWzFvRbu3eHNzg4F1nvyQSXALnKHVh4LamxqQFdbvzulPniDO24ABowmDYNFZTUepUmsTGUGisL4t1g9DPtQrJkIdwdXqNp84WLtSIQ8mOMHIzRTmnyE7tfvbO1S1vpU7RCLyM1F0TgoqjkQRs1vNFFbXvGBhB0V04KEYebpYuhQlDDKCBX9XWdotJDBBvwmeo3EQjPxU0nL8rS206wE2NTPn4gAKcON1YdXBdbdL+BJHXgnP3VzKrxCk8SfJ3xuWEltSScMIGKJFPPBNvl/iUZad6ogu6F2ct1YQLr15ovN4bpQ9mGDB3LrTUOTch+T/l0tm6yWbDYGo3QpJOkBgn7uHovue9REQgjz7/ImNNGhlNQuWqNCTLdghxe5zdVg1vsnQUruZ64WhPJ/bTEWEwnyaCsxOp8kOdQ/HzqMpMvPzMmhWl+eylwVoOp572NRTGEPn9cmbT1K7mD5CbUQAJwSL3C5q4wTQ2jlB0Lufn3ajr8eKwKv12WaFHihoq/WE9tCyjrTb3DIKxchDF+5JPGNPQIKttNrcVhKY+8xfnxEuKf0q6Du1HciX8Vwr/Bfwku6VG0Jb3HG1/vApSYM+1RnPXuy3e/mREimIs37162wjQNmkExY/SbQ8+K7EdWt5f/Niky6eOu0MBl12mDByrjNJ8TzGb99kIEZ0lRwoGk5oNlAx5KehU9TS6qOwZIP2lpoxMEHf6UyTyUiQ9kkRhVkks/nckcjWhYUJd92yaDXh6sBmEx7cHNODrrASKxEWCRaqmG8mbVS0FzmQwalGUJwpWn5F8cX4McRzJfJjsa94aIgvrteN+YynnHA8IZITmCQSVMVSNBQFQEG+7amoWBTJ8bE+edmHoaAtqhj5E81hCq1j58TLeN25srsIBIrJgHLUEEU52lUSnupRGHBQEMG1amv3IrIM6iNIoJ2ipEjNOUZREGcfakIIPGhkK7V51tbLIO+QV8kkOgWI356hZZFJaWyUzbuejk4VWdffT+flTvFnAZPYmijSYSHRFIpcAoZVEyhQIlwEhzKVZhd8QZAQWL5g3xhrYa6p0DOqELLJ4wjKZ+gd7w2w9dbHRwtoylYB8wBN3xv8PgdYm0k79LHF8Z+1XRpV7ozGolR0fkKPZkEMi2SC9uXhz6iuKh2g9kFCWdK1DgCSoxKk0jL2hknteR2BiKGGGxROVARERPu0jCD2IqV6vMmFFpVsX+WUG8hXSUGVa6aErw5otTxJag0+7VQahwA2TAjqM0y+ZLJ5aSiR4vyXl1myliHsYL+dWxsZDg3y0kOLtBv1iNVMxG2gJO05Th03EGfBGxGg+5Fa84DapIagb5WN8tmtVYawgExKxuW/YhoMXbR73jPAWLmUhkVFvaF/60TdC67dEO8xDufA8ks0gkjSthvbMUV3aRYJGB5OlauyYaFxdGqWD66LDjeevqlXj9Vq3hdbzVrviKz8aVp4+VF/pMidNsG0F9OfPWvNMpff2hOMcCO1mlmKfsQP2vvD2g9ZkuvcYW18FQmfJMALE/Gi7MDNdl1rw7fXXUxLQq2EmeVtkC8+iTnt4nPBYIVwnUuZ5PdMuLRCCZ3u80Q2T14iGEpfdp0nvxQr6c9W7+njot4tWzi4WG6GZno6szw1clVFwE0X/8H/MgB2N0Pj4YK8YYfnL3xh/GSqoZ7o4ysQgDiYz2nYM1PG4y1qrgMnYK0cPBDQSLLFndoKCuYbMxLBfgMSOIOEO5n2uqQXV2plpPaExG4xLbpXWJyiw7CHO/CktjP5diCobqEpKBtSymdtpHBtaa8litHc2PXrU1hx2dfcNogG+vWbNXSVWqtM/L6LW36kqgRmhg0Rt8wJ2URGDwvILEKGZMDWKoNOrM4b7Pv2A5BlbKscJUp6rUWAHxU/3ptkqwNIlFIUQ/pPYKVE4ZV0VG28nNpkObpA5tCEb+g2haUp8GfMiGG29PA3YaQBMVGPw+Nd+cBs7KwGZ0tm06K32bPVhmocIBt9IUX483kTjcoINjfi74Ge+zEZ94PPR45nG1z5CJWH1LSzseRCa8EK4xlIXCRA98vrOzw+ZukubyDsIILaSsK8EhR2j/5UxEluc5g6N1G4cbrDvmXhDOjKKcR5JjA69VEYX3APUpUZxlIghgRlZhknaH/ezT28tUIMF1XdR7a5KV7ddbuRB8dcBu9VWC0Z16SgYbr7deeGp6PMiBR5zm/uttniqb6OGmdnXr9WZza7hD2ZJb5qEspt8fmvo0gNOpnBeKMHens3gWyoc0ieYA45xba2vIcDI4sPWWBY7JlvvK1UP3J8s0nZ/VKyz1KqwgcUp8KfH/L25o/tXpVKmbbloc21ut0/+qP+GEaQbKeAjnX7eJ1tDUvvucH1/nuqBthd5SrqOVX7oUPczLkm7duw1UwroB0T9Qsu0axxt0FWK5/UW3hKReGpZJj7+7sOBVUYCPQNRRg37yUduMmcwL6tdhs1thaUTuR7H7RYBRWnsm+IFG2KHCHTc5Fz9PfnWfdijZIIok5uEKbohH1ULhccKF+50yr5qdPuomiMjB1giXd84KeuxZEFtHNKMfc2pgCV5aE73OunXXznOxhDkApsfbJNYS9Uh50iYoBexfNXnTIg+B7PM+23jLBbTGG+5x8c7ng91Nal2ElaU97hFliyiD/k5D2a4pWw1lh4P6xtsJUtcb6oayAtkGZ/buoE96GxuaPxgQwSLFYUPe7A+3ntRshk29HND1bfaZ0Pk9+GewwunuVXcucD+DwgGyR2hyJKyPwnY+Cj5ScQINrjSA+6OAZdt2Ys9SqaVZdyAIk8GfTNstURVYCOM9fv2o/KJlpHkNJE1gbamyLqr9yrcwL+ucnwnqC3PuPvz3vysLS4zGoz93J+7Us8B8xyiiWL/O7J/PmaXPVq+zGym7aQKmws+SFz4rfAjDXq/w8zAr3/4FXH2FmEseAgA="; // Check the server certificate fingerprint function onVerifyServer(clientName, certs) { @@ -589,9 +589,9 @@ function readAmtAuditLogEx2(stack, response, status) { // function startMeshCommander() { - // MeshCommander Local v0.7.4 - var _IntelAmtLocalWebApp_etag = "LlnBXeX//SEsHV5KjuEC"; - var _IntelAmtLocalWebApp = "H4sIAAAAAAAEAMQ5h3ajOtOvwu/ckpwNG8DGNd5zcEn3Jk7PPVWADEoEIiCMHZ+82P+1R/pe4ZMMxBDI7vr6Flc00vTRSCP99x//2f+/wXn/+uFiKNjUwV/2+a8Q0DmGXRsiy6ZtWZJ+ZnAIzC/7DqSADaSeCJ9DNO3eizea2CeOByjSMRQM4lLo0m7leNiFpgUrMcoKTuGM7nEeHcMGfgBpN6QTsVnJEu3Hg8XruQcTfBc4sDshvgOoaEIKDYqIm6WKoWcTF3Zdwlhi5D4JPsTdCmJDKgJlhLrIARbc81xLsH046VZMQEH7DdjRQQDrtV102zu/jKTTQ4t0GaWlIb7oxJwvMtboOGAmZttkCv0JJlHbRqYJ3c6EMPEnwEF43gY+AnhXsCGeQooMsCsEwA3EAPpoEg8M0AtstzzaMQgmflvHwHjq6OzH8knomu3IRhQynr6FXJESry2lDQwndNXymUC8KUZQf0KUDQ0NWzQAxiSkbZeZ560rZOyZCBgaaccTd0oJ3CEvZdCgCCwAXjFaxKIxoTxgmsi12hIDAx3ihYkCD4M5U5cYT4nqEXJNEvEYyegvZvs6JQQjZFI7dkRMu21zhywKJGxmIMyN1HnXXnJ8Be0pChCF5oK1eZwZxAc80GJ1YpwtqTbhQ3mM/cC4RJQEpqpq59WWFyu3y7JH4yiI4njSCTZzgZB1terNsnEgS6u2TiglTrvOIK+2kuHQWodBPc+gXqDP3OctvoFRK2Lkw1PhAlIzLyCD2EVIarvQD5iwHkEuhX52YmwBADqvn3lqYuM8EqClFyZoBs1OPFGSGZJOjWTS1hveLEdIqtY7wutnzyeWD4NAB2XkYrRyikqRIJMMuTlb1Zi/GBQTa5Edq+s60NW4Q/6wR6A8DQnUb7uUzWobYXObmOZODgE2IZxAhjAJMTYgxqVqtJgYqfyplxK9WM+7ZMaIOQC5v4OYrNaL5NJ5yy0Sm43187yIRYCR5bYZUcbSBdOPnNCKnZDjl6QAzpABfRP6q3ATAoKRKWz1pH79oF/CruC4TBsjFwJftHxgIujSbUqEmOmusKVPTHliCNLPu4ndBZ6DdmLp5UWaoGQmgsS+/L/5Nj24qb89L5dpXww8YECWWCIfeJ38VIgZKbkQqyr5+SjlSBbw/fepiIGkRWHtYVB5kdg1sbn8Zlhmm3mHZ8LEolwOjqEsSoDVtclUP8rmW81qU2noRaUCz4fAzC3YmSWiQCdVkSIH+ol4Gbm2gG4AKBfxkg6O6WTM2Fhakdk+m+YV6eMsvNVv8nch72a8yhN9TFRZ5JDKRkXAdxcf8TIk/mKj+M5IXiR24Vk7NZeay2SiDz0I+IKePGX7lrundujj7exuykKTdDd1KeHD8wG2h5o21s5GF9pZX5nPWgNfwnPlLrxsHphhaI/nmJzfvbyY1typH85/C5/lvWnj03Pf9ozHE+kE3jsNqE6ne3t78yO1pzFqWlM709iL0+3xv8t5c4RPnmXlfKTDQB9q88fhqP+1d0sej8m8P7JPtIcHa3AuR9GoL52cAas21JqHA3LRm58+gN6wf3N8Mohs63wYRQfE0r6OTh8H46jvj476dnV+2b8YqSFpXRxFVMPDZuOoDzXVdI9PLi5H1vXLQaM3Hp+c9sbPE218OLJrD4d2BPHlw6U2CLqVncTiyl9q8ZPhQLsY3I6AMxpEzEgXWQuO3lnweO4ef/J6vgbuXES+3j0jVx+fGNdVcPIi3R1ePQBLOzEokM6PcaBPjs+UGx3iwXh2qgVXKLh+HBxrRDuPuittq3+ptqfHR9rZ0DiC97QBSmJnL6u98U77rwCe+caZczc69iLk/db7enyIH3q1F817PAAPPe3xYXz9ULPvD6+e7f7dZRVcnX3qucPm7FgbDi3Qm40HY6TV7jCxoHU1Pjuo3RxpAakd2s6JO7y6fbpsaM9jZfxk3BzdyMFT/+lWC+DQ6K/ig0KnB/y3daPBkwBy00JDkYo7rdzOqskAsb1BSMnbMghMFAbLzpIMajT1plzMoAZxvJA9cpEM5KduVDJu5M95FrX8Fojn87yAfECe9iLPOSu+kKqdWTI5gdQ6SoHYd9YJNjoMFuW1EXIRRQCXlkdcmrLyiC9VSXlUhAZFYAHwKvCE3uf7qtKY/3X5GDAtHAe4zNB7LLYIH/rZc61fd745i1g45baSnGCBHp+jgSpxcjvLLYq0crAqpeEUP+Y9lbg+LngYL2U9XqK6EbfqmtxkaSN2tXXZbaaduiY7ZTPt6uuy20i7xx+MSqVeGpVKPeXFHr/LS1mPl6jUN+FWXZObqmzCrbYmt0ZzE27qmtxkqbYJu/q67KqbxAlfqRaCMEGY9cXrlpCuBBlgYAAMt5clnkA8YCA6366zBj84yNXt4lvVKv0s8OKjuAmSGHiCCaBxmSMIQmEJKKk8fY7MCs/J8sVIs2ejxd9J5VlY+5LukqWiuNsClALDdhivdmD4BGNuGuX36sVlXVuxRBmuWKLkn6aYHPxdHgMSf3+kWNK9gceCv9RliTY5l/05mmFdDyklbrIbra2UYM+F3ajKIeWlfu5IrripfjOZDzGgaArfZ49k8relz2pGrGT7mXbKma4A4sUKqZXvSUvCplKmQ7oAClyfPO3vr6RcQ535raokefJdlqwqaZZkj9/LklhX1mbIHjbiWF2fY722AUdfX3zcn5slmWOzqvRzWZ3DgjfM1zhFimkxo+YwPixk6nrLNBrLssflJcSIIeSOfw9a/M1YzMTABiaJ2mxmCjJ3gm/pYFuQdpPP56qw0ymedRmG0RHeJgDQGTikMH+WjlFAxeXFWKxE4UZGTQrXt0M33gaztK3y9ouImP9mbVWSuD4OVyc92qrVap30dgi5PPeI8SVR7ui4uSoGY7vnIFxiNdNOjhs5qPTSJpmD6s9pgJhwAkJMi8fXheyQip+/6pm0+Dt3tNxqsam/vxffKe5TRNnfCAZ2P43m/b0YuL886Sdu6GICzG7FwBC4obe9U2HAxPc8WLo2Q8Owv4qGbTiFLt35sm+iqYDMriQYGARBN74iYUyBjmECS4rP5LI3c0Ka7uuZsRgGxzKF6fJQtlthSBUhPo3uVuJ/dk3qrUjKeZWyXQqXSH5PjqEjxxKW/LtyvZ4U/t16TUgG+bxdSeRMYlYSAt/4gUvc5dnO1f+ILItEWYElDS+IAW5D3N2Z4VC4y+r73LYXVUB6/l9qBK0QNH8hLfl7sSLH/PvyTKTCOfMvRSpZPxAYRpes2j7c/v5L5NifJ6rmX0Dm/+I/hmIYG/b+ZTh/2XXcM4w16n9BCncYRiqez1ZC9F8vVjTwDsw6mURDOWrOOco0XmDyisy+OZIuuRQwjPCTpzRFQ9GPxbm2r7gk5gK6mUGT0O36U62SPYyLSdqkCdfw/M+Adk/qmFYUXXXuPJEXGlN0VDEVdpcJQp2RVaaZDbcVQ+653CPTt/WlaFB/AcDacwD5aHIiSR21o7Zg+rW4BryQvFty3ta+m+8tCFdyg9jfGYVh5ZFjNIc1wj4jYpIlOZZXXwoRp058mYESmJolIv3mCtN2DIy1WBCoF3FaakWeR4ZxR9LAJe92RazB1OB09C23u6XJhvcZJS4cr65lheJUrUhyef9Plq79RnNcbD1THn+cdthOkxMLqTw1lKAWOg1QuM/CJ+520Ud73Hm+B+/qTEBPQgb7mJsJvOiOC7FTlV/iGklfC6fTYWfAYEKjxqhchO/XpMwlDKiqehTYFo/hsbFTDh1ZwuaaOXXdp1p4s4zOM1yyjcUwQTDqBYeVXuzNiCdIRb7eIYcqunkCHXkGmbzzGReyBjYNUwitoeYhVu2EnVHhbDWgkxlIQe3MJMarZpv9dS9ycjNv6Q6voPXRQV/DNJo35w8aX+Rs+/59dY7KnjPyFGEaDa0U35/iiaBjgwEgX4R0XWPR2ydhUwdbWrVoJMnK6CuWay80+EU3pYTzRe5LYCkgAywlg1NQsb1UVAxR348ptso4/oxDF/Qof4BEO6WespYanfAN4ykbWIwIF+fJA1jRSbCXgeVgdWTyYN9GEzzeBaiwBAnzuq7mVmQcx7zV71AbJL+aTilpwLqIH0EG/7pgbg3Mo35GTFO+LawMywQNpy2M/PZMSTAsnzDZ3nDwzUokI4EdL7CMGjZG5DHe0jDA67BkwjILa5SNSs/sGjBF5vjmzBYlq36N+M2mjrErxkQEDyBM4CvslLAZxTa7w0pCa/Qei3NC6LG211J3w46OfQYSEPwp4YqQ41zGFnoVh6RslriVX1eRWNmJkH+zOiXV6Si2E0eNMc4p0NIkywkvt+aMtzFBft9fwtUZ6wBsWDAaxe6EyAFMWXBxwbCAaAH8R/ExZv5uzcbsSVAYR3DXrmubjjcckQqqrpc74Uc8crcw2sKIi5uvrn06ozFvhiLRrsQ6ohsU6Tw+7rS2jsicMLsFVZhoq9vCUpmxROCXbkK0KSwUfxiIAvd1PuuoI1SNULIZIYgIm/caOr9AlxPGBGnUIzG3OWPIc09tp/xEddSjRNhvwGevUZYSx8CI9Ea0hxpaemPRSKYugds4EeG2PaielGRZhLl2yaW8BTOem9yaWWaA+EdcjFxI5e2grToJesWNlHpgEonRE4ba91K3Us3XgDVh3AVxjjo2Psk0bcv5nNorw5yGd19zDKWqiqrN7paMrMvhj0JKXqU82Oj/1RdOT6lGNxZ+rsqJCwv0DuF+i372wxh8kfI7vZlqOKrBXwPsOcCV8Z/jinf/4zxMOfZA6txV5ZP+152eWwWD7XmxBqca3reVo77V6RmwimketIjvOMLyukjr6Aed6RW0EmShudTAEBCuvii0Gi9a2e+8mhkj9uZqz42J8YqIL2lOK06VyiWhgATPvIhv74fME47AIvqZEgUk8OMHdkqjsB+oUXqjXIf3rhpaZFB85xjb4mjDVLMgLF82OJ83X8icYXrrZNiCUxr2T9fT8BssWxGLEX5LJKre0h7QyvfxvFZLagFhhl0ybhK0zllytsYynftEfQ2Oc9i0UPQw6rqyQtGAeWG78Qz9d0Y0ClsIb8c1KdgGbygFcXGXcSS1rviDOGshxaM56pIV5EJviK3segcO10tCmyDuWq7aTcMgDH04arMNXRtr5cYtzVZxBaLlyhw04qzeoOMNLq6gpMPeFG+I+vmEKWI4NsaL1Y5Zh4ekaRcwrkfvUWTEES10FhzLiwxodpbzhTAP8v5m25IWSJrCk5BERMo3/bQPKK82rmpDootntCpjOEFhrV5J2q5phskj9rh5czbY5lHZnpCiJDvazpJKyagV9P35qzm1xyYJRUp++mmA+JyMkpcc6lwcdPAcfm6aAISALmp80DcMo4l48LdvIwk4+adfRvyCXlyk+RGjudyMepuScjjvddcQUaiWwAvHeubtxgqvW5TNLps6zu21XbyVcvQdSb4JdHqR0XOwciLrNf6VuWMeE9JZaFCc6DBZkflS9QFbb1JeITKDKQTAP5IBsx+/zpavFFJLVRYx4/vz5rLnleXyetMMkfYUIAVQkMd3GafZkVtsELiyYtXWRyeDYG++iiccETZqxoVAPzkqFbTOf1G1fJ8rX0Rlka9six41qrgZX2Y1HPgG2iftyThrHwHwfQhc2wOA5uQdk1W9XbS8fk5siDlU9Taoo1QJ7iBvMlbE2nfyMqPBcbd6sWovDU48sLXBBZh6tQpl7Q6O815vn621yhykYveb8/NuZTcQ8zGl6zfk/H6dHLjwq4TKNrpxKCerzs3L2uFDhG008Radnin6fFfxGtHadIVDGWgrbEYTRrg/SZYmpRUfLJfleaA/0J3MHz9h29dlpzlGHrFf2TPlQolY8ZklVLFg0CchVBQ/ATUgXLz7S2uVQrd76teeE7edHuDZqr32Z+aDqWGrMa1xAb14VDQ8a1bhxnT300hnxbIg0cgT9ba01fjLkC8ixf57wbo1kZCRsv09GzeACjq4YFY+hQAbxrGOUhtXu30nIA8p+eQ6P1rWkZL8Ru+sAALNYHGLooOkBv8zz8jcYjMLSaqKWgC9xooH5ozjXSO3/aRCez8Z9G9Z0NcHdZ0K8Ys30SLW2HDX2V+NbdKwhFzXixS2HyGS0RAC8/l5zPKBH+d2TNSetGWp+8mydS0QU8p61qtJ+FWIol8m5PRvNr23tGnrE8jqO8WS33ZrgMYYTzOTBPMcDUVLf6m1JoMp3YGwG4OwjHe1wkLSfQ9aI8/V1BYk3JDLX18grswCgrMt0k+6nLC6okGn3mt6i0OtLEKYvPGbp9+FJn5XZrLryneKlbY4JQy/SLLrA3uuEd+DcV5zu/062Z1pWfawgx7/tI8KtsieuLUiwqu0aW/zr6KLCzhWM3qPnLBg0aX4B/PlacJqAETvIgV/tlckKryAkP22x4J68eGwZeVCn5yM5YwjbpyY0+UASGkeCI0CMy3ZLUQs0zrjenwSNPO1viGlPlJ+H0WU3kehxUe2oNzavgHS3CPE+RVIdIMXtD5gQKqTi3PQ/gRPOn2U9hSL+L6pK/ZuU1nsGxpDEeihIOI/AXgyeMDLZXZtsV/tOerYektRBuDcpU2MBAXrB/mccX7S2JU3hfW7p1Se+1IgSf7wS9g+r62LqwhswT2RCaYUeSKowt/j1aZ/7wBp55kVzUQtx0ZNyHcBXj/QkiYQ8ajkIt9CmxauDoV39fnUHgOkHKesvi4RwktLTYHJFsdEq/EYOOoM/y6jrieb2mIKSaa8Y2tQXGhaj/cVtG13RbKzOhMOdwnaj1/QEEnErVEb0yvzQMnrLnFDjyrgId8dJGRyBs/fRxXSBAtADTYBP9o2de7+DN3Mnw23Jw7fX0AXGobhHoWFDhgAmT9jW8gNWyhA6LGUy7YYA6aQxCWfnDMfQ0jhndPgMDznTcD/q6syj+oKYlCJ5IEmVSwGccZOnNgEQs/vjaHJvcq0Sq9lBKcZQsg8LfuxzeM9bK/vNqT+KpwA8h1fnu/7jbhVVRRIuQBJAPZGVGUeOkESZQARW1UBlFEJl3H5ofClSSv5fA8KgsBx0zQhZ7NePbx8Y2jWXCSk1Pyv3Dj78ttCs5CdoWnLfP+7DEl5HOucmf9DYVgd4liWRcs/EFJvqQ/H6AEhq+vfrZGb04+YSXDiumNj7Ms12U+W/srrqlXXVQVQB03TIEhgsjy1zQOQ5UlQBEG8nzhjtU3iIOqPMkdGYl21dKS3N5ZrJLlt29T8aRZs8YeS0Azokw3SOFWjV02CGGoVQEh+JFpRpzmiWSnhukedzDkZNovMOkCzZCG5u4HUVsyO4wn+GvajE9BS4uv9AfRWgWIMUtgD6O2DE6v9M9IP9y+7oskXqmqbZ7H9/j74flKjcxTgWq3S+9+xkV33oWiNetCHOip60zsOBjHnknIUfEfAgq8avijAKEB9I98howLR9s0cxT8q3eJLSxQBpe0MubZOXwj+F64ceDnWw+ezOH7pAd8EgaDiSmOPd2o/FN2TN0gv8Bv0p6qBw5u8NaQg/KpC/aNwj7ri68eJT25XBf510/ThO3KtwOHMZHbzJMSD9YVOz+BWipR8KAhQ2F8VkISf8KqBI/Fy9PtJ2BFflxY+wVFRi/qiJE4DbzsKiewQ2/ofnTRfoPIXEVlVx8ODonEs2nVdBO/WcTB5N4NSkuT1ZwrpbBl6PAVZAthObr8fv7tFCNfxHKRHEoHs3Ec6MJcgnD8nmq9sWR+kdSemtPnLIJqWEAuxScNQ8IhuFUxOnB/IkILKKaH5ceqWBVB7vk3DcOoEQVAXtoxlPPxv+wEtA2L4Cwk4O+pPkhCwQKQG2mbEOm3tfV+MJMHv+3CKTIs1cOJ4ooVM0HK6I48Xf/xpmkRzR7cXR3R18KDJ2cITHXofIvyDiyfbNItQFGE4OHQP+rRuI2Dud2zcNK/IkVesquIw5I7lhEOki/8qECjQrqJBMr76JQbrprlppN1GAkvu71vaokTxy0HuWJbroijiFy9OvaAo+rh/WxA+AFDF4hCWFeB052lpmtKkxxmBC7RG6PONPAHMBKw1B6n0iT19WJAJxoDKsw2C+PdUIGgF14t+ZQyS7/CpInXCV01e2L+1Gm/fFldgFwKI5k+tFPuIqtg/N6OrU3aDsurv+c1ZB4sw2ABVQTAvb8YwYv39AMAy9WLOwUh9UHSaxLaB8q7Zz1PjKZ47PG3daAWqrFhM4w8QmTwS7eZ1X0FCeQon0ctSaBIdbCoxalDjMQgHgdD+aBKlLvuNwguUzPxxaqBo5bf33wwGyWjM96/jv16aaSiZzBWurqktACSJ25JGoBIAqxM7O4QlMNXT88+vi8KwtYKVpXAHl29uD1fiyY4Vft6kS8Y7q6esD2+nnw6k0QL7iQr3cchwVz9Szk9+hFsfMhMqM8bCjKtz0GN4oTDGqDUzftQPxL1a9ieQgFRriC9wC7HWqgHBf76pAvbXHzoYpLBGU2fCjNIW/XAKqOs6DkMapOa2olfWwvF66gGA+yYQ3kfHpBD6qvDjK+dM3dSeKAAeKCVtJlJzfNPYuq46z8pKruO2wQz6lTDM3l00oOmBaY9hZG3HkPnutew6T/qV//Ad2sTuSQKbARcIycPdYS4vs6QwRcFT5P7NjTN/L+OKatxFxMCk+AtfVdDNv2RC3x6ndvva3B+eqakVXdURbe/2lEvfn5fNc9GdGJLMQ9ge6SFZoQdaZUwgNyRKoicRbDcT30Bh1ODG9Ku8mRp0aDFal38muTcYtucvAXt5f8oTzUmqBArklpi3Bi9veinBKUsASo3Re1Cn5JtU+j1kqdPzg8+O7y8dneyRhmeSkRJ4ugOZkX7kN4aX/GvhnLUHzdXdimd3ZGMbqrJ5hFP5yDWHVvp+pIP8m2LFyeA3WUz4LYxWMkMQPY8q5CJH6AdX8qzwrfTcQLBYRVtrJKNVTYv6cQI0/KMC/+0lb6iZiVfjhpl/1i8MD+QQbp15Ppt2nXz9nHHQ0yDu/3tfUvH1V43sD14BahK9cNBDf8eH799S1vUd8uICrQ7rFC2O+WZV1XVZItTnCNAjzc9f3Sv3vu++GXOYFwi0otqaVNj0A2R6MvZcs/OyCA7ZuaJ1L7q4Bh2rkdDSr48LWtlMO677gAKgydEWRMXSv/Xy1UhxDbsQr7quUVo9JZom4GuwbfVP6hb3i6O4v8ilo6MG4HVZZm0yya/lqyBA/1lZ4lQRxCi29X9ENQBtqFMwIrEIriPlgmNlZLLsd1Ko7IgdZxZNi43Y0k/ucxMhqL0U55LZqN6U6FdYb3G4Ha+h/lA5+YUEb1iF3zjpIW6MfgRcK+kQ/+5mNZPwM27fce1fnuKNoSOQ3glYjWDNZ+DknszrOj4eiqLgAZ1xAhDwsmSXLtjL/+ZSYxLZcSC0u8UrGhhaZxyks6OOUyUlYlN66lF5NVpMuX7FX0Y1szwZuIeChJpC1opLMAxPR7+gqTjzCWix+JrHLFEqhApqaXWrwU1lWx69G05n8v332ch+XrNtIv/k65yLb3YXAmA9wap/mBfHrewn+2V5HMfv9fw1s+kQhuEwHYzfyvUqh3fKAkE90Jbpq0X8koOwJlOhbBtNV2xlyu9IQQPlOnmyC5VpxAqz1/bCzj9En3ehhd4ZQikTgddoDlFB4AW2N2X1eiL7vWWp0OfMoB4NtnQBem361gcxCBIwdZBzekvdLUhOtSGKVVHnuRf+4UR05wvmDyuAD/XkSX2TMtWaTq1doxhWyRRQKXiR2imCPoNiK4d7ZnNLVnmJvIHqb86VVLKALAuI7PC8iOCzHFOqfnsVTx6c1h3DtMez8CSEtKyqc7IKYa+HLCEE5i6tydeQLdxKmAVTuTiyEbrBaomvdyt5AlMoNXIFeDpE3B0M6eecXKGg6IP+88VOfdtkjwzEK+kfPrmPDvnSHVoLVJ0mFEbWlGh9LbClwJltXHSdozc69q0GZaA5w+gjcBNxZTNwf6G5BXP4onf6fQzSTRN9uPB+nvrxpcs7qSCCKqSr7Ct7CmHesW33nMi/4w9wWPF8UWma4jzjz/WKG0N7vWYQIa95Nio8OWkkqXZ1fFbvlU3F2VOR3CYrePHeMHJC1Fq21U7JcxJ6gD/54HAv7iqtrW9XR/Z5q07QIuKohrAPT+Vm0RStLuIprt0Ffl/yg6oXCxYYzaCq9XjWwrG+EdJ8xy3hlq1T47hxr+NAkzyuQ7VHsrgderWQP6ziHpHlyQyBtrC4EcYLbPF3eTpbi6ZiwHBA3TQICKbqXdh51J83kHhwttN7WTT2fJfmBOXBxvIZxqi/9EgeoPVxY3J2L4SE2LOoN/egdak5Dt6KVbrYYafvfwSucmtC+7/nYS29EzydYz8NcahxuuYGssjyhC6vjFNkaLy+4vN6jHcNT5t+sp0AhYNSZIdWV1LGYWYNXJIDE/BbeTVOR3JrkocH9SFKHBWyuPwZqnYhA7ZiR0rbShjBCF2nF4xnjBAgddITPSEX4oSBma+A9ZFl6G42aFdHUNMRI2VZPvZjGfCNQ/cuafcAMfkAFr2kaXc0Hx71Xgd/wbNa/FmGzI9vJ/HLuWXIMV3xJg4+sJoBbwizBMZGGgkq+o5B7TqukvU/bBAL+zyJsjo0k5JrTmxLRRJDHq9ZcOB17Ox+vw9vwmqLNxoUWmePy7XVRQljCh9JUnnw0mVZjWNSCAswniaEqM2mcG9expjD/TBjZeruXBNF/aW55/DqzXHXq0/txgfBbImNZhRlGkY+qLz/XSOlfgxl5NGwnOGpvYkiTQEKu9YX9PQUAk6jgEMm/dgpxT/lcdKM0cAXgHqYCUzAFeyO2HYpxGxQwngehuEvJi+oPSbSRWfo5RgFIxsjdKGHHQtW1vafEeoYQhXBVW/C3n9r11+Pc4YuUNzpOPB6Oai3atw/+fdQoJp9Vh/b0/eDxs0g1AGGEaRYb7Y7bKuKAqCS6oOKm6qf09arNOQPtTFbiSUS4MdLLDXLEvwDuE6DPZ+fySEhOSMfgt4exFvxr1dqamdMoRwLrPrLjeITQfD6uHm4hZDJCzZzy3101ODEFNw/kezbax4Qc7/Z6g1GHfxYlS5wDcsFfO5ScgOfzgBjfmDwB5RanOXNSwYxw1QcEP4uiGtVayFaHehWkhn2dX05J0609dGrJZaAJxfWXT8xyzP4OaA8k21ZsyXREatG0wMxlIE1lA3gZGVHCQOFRxLRcmlnUqDkHovE3upuIE8P7+VptREK8Eu9YPKOv5K1uBHdrdC7SrYXQvmpKTuKNVEjxdgXmuXwYLwWnAZpYJRuGGPiZotVWrGKfHKUKs1TvGZwHOPMgk3r8nuf90CYpvBnyGMkNnLewB//wrhDKk1MThZNLQEEF0znmQUAKI5scXSPFJYsWrzaHUUCWWCHg0Ovy0ZeywW6eR3233vun88RXgMxEeqneS713Pgw9sP6z4FxAncUXaFzr8nYxfsEyxgNSkRvhou9LMKuilkWbmzvV82nfWCeIkndfjN/VkfJ+sqmbhH75qFnM53imZE33iWoGac+ukBK2tOjtprn1WZopKDURk7FyjkduCqAB4oUcklZfMjsPPyIThPPcQWl0UTGW698F+vbdO/FtslvI2d8snlBIh0JRAY1R8zdHSF+AQbp5y7BorbQZUhyBiSm8k4OZ7qBqRGW81vEN1mwX3MgFfeKnfSs9yM9IqZ8zL2zfrTtaQQfEDGQWt6zTt4LMdUxQdFPn8L9XqMU1HfujLFaun2EAqMZ08wDetG+W3vRMj1Vkb61YEmIta4CtMZ+sjOEtM92fhcy5Fq21WCFo3jozAOmaQFwJzBbHNHmz41URVlzgfbLBbmwQLVkQ4Qpiz+2/97B8ZiLUVcU74B5VQg4TJ6P94VyujhYqwKxRu9A3R+yQo4lX/TZFrSHpeJsVX0zCMQnFK7Zv8ZaW/tBWt+4V0Zrl0+m4CwwznMsCgbVtAUf96gBGRZUYTlA22C0dmsg1TQvQJvlYL/MPvNKkOS40zaNuE2EZ5sm5mECL6036F4ibLellGH2i0o6yhQz8wzj8p13yJvlnRSgdubA0jnXGG1dU8pT5tooqAZu5S48Eglv46CoAhDAop44ju20U/JqTIzI1NyqAAoOFvBJS19lCELmcgVlvTimSyZqXmbEmmfA+Og0VmvCFSoN0/qfnb9qjvuUEC6VdwX92i+Gvi5Fa1i00qUaZs6WI7lXdwBkuiOxyqM1RIvjrFfvyoWMFesDRJhYh2rphyGQMkh9hrLI0neITstZesVQKT9koqi/XLTKk5utgENOmW+fIoKFzeMQb/RxutouJrqNjjcuiGdvErqP/CnLAkSU9hiiwyteTMAGBnZcFgyYVUc6IaVgoiwdvRagQQpy+BNErWkAV3kDtNk7xoddu4+s1y2AhYLPmWCidfGPuj2JxB7B3eBmo0W2GWUPLzqvg9RNJ6J/vjHxwxew/LvIHRZ9UDDT+Wwmi9ipui5vqZ257kC301JE9/QEPKNYDcAy6MuFd39Tl90p34E8ObnZKRCsVNMqis1PdTOK/LVnEidg9m68Vje55OlUZ2ZGp8ReE4DjdZQMx7LP7B9v4LgPMxYUU7tcA6iY0kq7wqrFCwqveroGTuUGro0Ry3iNUIV5pmKrlJHUo0yrOooWkEk+62Kw26NkzJqFIZ6eSVFXWJIA+vyPA8uVFfwVIB9UkhxAZx9ZNacsfJerB/thEeUmU0rqMLOAGr/MOdhZ4Z20X3MU4tEkFlfdiswzxquyq57fPkQZJqBRX7qj6NNph78Thyut+wws84c9vYWZ2HFnrr5TzIp8zXR/ytqsnrvySTKisj0xe1OPABJYKbM6PTzIOuOKvXprbv6egUIYv8miKPy+eC8R1bPxE3UA3IIR2NrdIagamr2TK2tz+SkMN5xaN5u4PfaSfu6B3rpZHklAs6X8qFTII0VcG/kiNp0qGy//5t8A8uqDQ1mynMCiSUCiGemAee1ugxV520Qloc/4fKkg2xJVEAd0wTLr9VbXEZpXWotvu4ko7K8aksGdSKpDIg97PgeGkVTqQEHUDmstNtyv5KysyDrV6Rczdd9bmDVGSVqF0bLFYYebeb6x8s4U0gJdM7XmQx1BYI1ZeZf23BpmcHkyHshYOTpmAcSTxmICaj8KsLzPYgoYcSK4LaFyd6GsKX7r9xju/crRDfuWd2equiJXj3k3+4K1vviWY5ZA4RtFZdRdDXKNwMMWlIAkBaT2um0QeOgeRDPg+ykNkz2WPNH6/aZMKeWR7UzG72Stk/jMKcybiGme3g31qY2GPTJw2XTCsemYlDldgZOSkkmV4GWSkU0Z+/xTYRm40FxWsT2kv7p+as9rvDUCpx7KdLhgChcTNNIz7HlSuXRkygBxhpRbdq75GfmQC7MpUkJuT1plTf+Ep+aYUouraIPSpAW6copBmoBB8QJBmoTqSH2Tp4AiVH7hAVoErsra7JsJ4Z5+F8iMx4g9zepFHY2dcJdQ44Z0d8FdxsNxLa77W+EBmPCqVf2e2zcOG/eoG383q2Bqmsb2PKvqXD+YYrPcwSxuSju5DO8KUS1VJ1mVunXgeC2m7JDd/BM7OzPYUWgSxW8OIBBYovZ5b9ZXXnFQM2jsAb+gpeqlNMYfmiX4AnFKpx9LgfUqu1qDcv5n+3NlD8j6nnv16lanjE6XLJrXfvkvQlWd/63A7mte2inTIk0/ef2IZXOeuOUpQuU3Qh9d2/UmdxNQ1XW1A1xl6wQXaWc7XASn1zx+nRUTN03UxyqgSq7L2lZksPwVg6+dqzAb74N4kltReKXGT5z/6HBGCNwewkrc5WB5SFn55DcoW0Hr4E5BI+h2tNTCz2zctyXSTlxhWty/PVujFNM6GXiB43+sMc/O0MohQbJW8w/eXjRtADmY2T7BwC7xxofi69dYKeV2/e+uYGBOwLEb3VgbT393hf3H1mRm/nN+ahhPWgdLDM4KK+FBkB9IDw60AMqouk4hRsC2ZY4usyiRU8WO9LjuIEFAAzoQG49bZ0uAH/uaB7JO1RrBdWpjzSod/WamkQeWV6HNJ7bl1gMRuv+Ci2H1DxBuo4lHmDdp9as1QOm3KG393Bcy3PYOIpbCTI7VYpYhtZri/l2uFmECIIgxeAGke9oTvRp4Rmc4V0Jli3CAboQtymqZNDG9wuGBIedIfz/ZuwDfT6NVEDoDCBPcOiX/xgzJjs45RPFz9BeY4LuQ9faiU12lVeuQN3chEs5cKzbspAsS/boRowfVZ6i9MANtytoFEkU7dwzfgD8nvbX7ijZvNlXojyq8PXVtVou9gIex1/TjQU4bYLVR2bN/0/iRnq+XO9cCtK9okGPLzKZgJzqry/U+SAVTaoSyCipgxRceVQVPQiEL/ExwlIEu6WK6YGugrG5TYcC2g2Dt/da2VMg7fVbTlx3eWXtA3L0oewBS4OCPA+9JzTVwO8Ya7GJsNvQzh4sWBVJfFSTxDwUiTFJmjy66P3mRVrFfOI8pvjybwsZj3QT10vWTvzzJODIC7v1zTJRWXNVoTj58wXklpUPftTfybl3/JCO2X550QYxZ463LnyKyneD2WGN/uny9FKjgSOKSz2V4/HAaOGJKZoXu7pjRGCbKu0ZHeHvHZAyDmz3jXYeVbdtFXQalj7sT10gr239pEKUCp4QZIDPkr3n8qs0/9VfMv1Q/HE7rnR+j+V6/KLCi3QvzgiVcUCp/4WwrsEuEZEgZP4FrwAA7Noy40q5WQ4+ziHlM/S5q2RI36VTXX4MbZObrXitf6T0jB+sNjsDttv1A1psuIMZx7PKrsbhZ82UU+11nNuJnSkD2a2D/ffGYVMCN7u7HStWyPpdETex5/mGxQUdwfOX/rFdbL9Qa1ac2wx36sdVM7Iisjw7sV0yTyPnDWpAa4j916/eJihkX0WeN/O2SQ9JAH/30OuR109KtatG86JO7dXGknqyGTpL9dTkbvBJ8ChSBNX2X8FCI5lWsfhmEAefgij5HkgjjEcW0MLC/vBleO+qKNILtBjf46Dbxe6RmeJlF2ilTEvutsXtNPngcelg6UfmrBeZDcuiFQyUFJNO+CXXwZMUdX8VFP57fIvWNfr/+6cqf9nUqQ0QtgmMCV3rGEPZSg3Cc592Pe/K6HUvjApl0FNlfgAnq6J0OMWAk9b7PtIeKcWveAywVb9T9mi6WO6aiZ2HizdG4Ol7WzsyH7lm2lgs1EqmSpl2lJaxsCjCcpo060ou3/1X7SNwyHg97gRg88+xcd5s88xViC7AZgez83srXw5DUqogGnClKHPCiqZuuqFtNnBJtbjgdkbmRsq6YleaJG7CQitSu7fFMCYYXdnZ6DyMTFxJiZv1wpdv5pWjpwUwG3eANHuv56XM5we2XyQ4rkYrfLTfDSCBkLWm64fA/+4wX0avAiXnx5NipZckJtmgFlW0qhQb1kjbv3KDqKkHBSEB2/WzNn9RyU/ZrvS7hsRoaWHMK7EUQ3ikoeOjGmXDghE7AWmX129DplJQNnWkJXVAfOKdQM08IGKXiujnB3zj9verrvjrI9a0buI4jpIsSrVovOl5XT8wnF2uaam+2a66x2ADSAwN019UhTX4ewKZf4ku/Zm3bf2ebSB8DfR9icL4/KbV/OFHZ1YL5m6jFIdSUN3xRedaggwWoF5XkMBdPqWa7tTXBl80jIU3X6TmtDp03vMMZxYRFIZVObSnvw867WTVYMpiAjwCNph1pXtJl9l4mU7+J6rQfoxTAHeD9tSujT/M9iF/jSUNWtvYlRyG5XznJyRcSkZERiEAvJXJ5JbVu7xnDCpUiLf9+QqSLO1xe04fDSnO/j2sCQue7SeNdRB6MstVjNdWqkPJcUCsBKQdpqNMvvBqJFDlGe1gseNebXCjrXhT5eajq+9lae4Z7AmGezqykBZZD2Zo2jjuEau7/4JDD2xsfiluZBDANvdGFfqGvO9DYvF7lu0NJf3kgtpjmqzuyxYBTWLMowu+tpP76/bhHzgRncmh5ts9OoFdeFwsh8YDKlod3AbxTcn4siykN/6iuxfhm6AsErzJTH8WIg+tuFYZct3NpDgY/NQ8gxXKYJemcI1gMshG8wJ9YcVXaSbkZ6CbfZe7mTyfO7ksc6BqDg1g9KW3h0ocMg7F1O/rpqD58MlpnB1d1x8Uvz/mlO1VVNUjiEmF+NCzkU5CGn0n2n/IEPE7rLSwcgN8Cyx5onmJQnuiWqnL0L5MpA/Inkb6f13ow/A1aIUXyW343lHzvzO8/NeAOMquDThhxTR3mMZq74b6ZnvhK4eoUojXcoRzln0Xg68IoXcWkkxaAHxeropiFA5OlFS0Dkt4O2nqic57fROFDRGlP7DMghHNbNknrB7eWygp1n6fejqgC400M0pi0gLwo3j46LPb3BJLLQb3rJ0UbGDraSjZDOcqCEzMPZdGPFVvFS1F8iFLGt8oUFpgHDkr4dMLgpw2iZjhvx7KBy8HiEPBcKKTsr7IcK4CQ4ijcvttyqIXVoF125BQq5aeBi4XhNOoH4g8vR759sF3FZgZaBGnuDJXdze56JxCkFvxuDW/vYE8l8Ixqlx0XZdH8NR3XzxGrtMKjQpyz0IFFaIvHgmVYwxN3Wi1TAilbgW5Cjwb2JZRWqJ/kjrc2ZT/t45Qw8ZR0H/NUkxTPybJ9ldJp32ZXqMQd9oxzZ0LVqxVbvxznMTGosuvVAaVPnwP3wEqLhY88ekvpIf2VqZpGWkT1JTMvFZJ5od8KTrbAlDEUT0AVGudAexUF+qQHxnNPsYJRe4RfIBbb8cFx8fWigr9mr58DV3fL0jXUEyeAZrVUezLWMvb3bgwyrHJNE7cx9RyPnKaWQQTW6AzZxx5hw3sTPkQTx/s5KuweVVtfsgf00oUD6kpo20Q61zIDf99jfY262I3RFhJ0JaUwUVydEFCGMVzAmFAcwyQWF4o7nbEoT1Wl/55H2gRGW/skBAnWEPTronAx+BPH3vmtcXYJcO+k+McOuY03eqodG6dKJ9f40FjvJfG8givzrO+RW7BRIk/2CrwFRUOzQdeOw7h3HuGt/3wlnjNHx79Yz3V11wgmKTRqWVld1uF6s+P9VjQp2q135Oc2z9xTz4q0W/bsUX10ayW3qLLwc/AtAq4MhhDxhcjMqIlppei6GgsrlpOoPwNgWO4cyG0l2kG+X9pnUWsJM1yYM9wY4QZ2rN1rqr5TcmiIWt565dgYzMqVCu1SltVXQXh7vxKBHFgODEbwmktp2kpQIs0reqfL0RZhEFeICFcmbT0ZE3C1PwhxJuXfJnLZ4K9YaAS/IiTdLw/Rmpb/7QfMbXUKs1zS0oNmbHh5GJo98PVR3YTo52Q/y1Djw9062f8GYV5Vv+4SLzyM+V2kIn+zObGTuYNw6DooY+/nMUTFXIV+g2vdAQ+NWwc/H+sX805Rz2s1RTZ3TseRhDutW5kkhlQqrrrpfgmepYeEvpmdizavksd0IRC6vUPO68AFao+16tM/mxIZa8oqr3G3ClEuhmWGqE7LUg9cxEJUv+PiH8EgkVZuFQvnPKiTfiWyC4aixaAkDC5rscoSyMQu+ryzKJwrBoM5w8EYIUDEGvIau6O/WAsoLGP40y+VlajhtAREcDlTmmWY97eBPyVumYUMVlD6lDuJbPVQseSPpPDO+jOtMyJbKrmFj3pvDLQxI+cK9IrIYXFpPUP/8D12V/bTa4VBwCHFMwYzI6aitLtocIXlmO3NBWfcnaGk7Fu6tkxv1uN7N/kC5THcQual6KSK+CVAst3XLeBimA8KpDsaLFUQ0QtKI9FKK0OxkShcRu3CvCioFrBWuerWzJ6hKI95BHXgxuNWwylZ3wmuKpCjJgEP747bJit+LzftO1p0e2Np2vrGGdiY1k6q1h18MCDL6+FaQfYn2Rs/OgjZw8+UIcrOmvMcAcf4T3CVFA4HE9iuS9UC1tnl37XVosIvM0hzq0VISCGDM0yANca00HT2rdJl3/vWxgHi75ydjVs5h5mos8jRvsWvZvJjh86oY2+itikG+8UjA9eoF11F+gLnOBQoYmPh/bO3wJATlcDF3awZe4ES+OQaDOVY7c/AWVvwUIvPV9dYF/IXIcYL/RyUnALJWl+/CJ/olDUWXlC2DJ03651BPdzNlx04SO8YWblXoI13WQSZafvFL4TGHIjDW1jw+YU+JB5JTDrvT9mYxth+dra6W0c5hStyTb8Td1EEUfUK9WOL9w/t7VjK+jXkXFNaPY/gnXJZTagWsnYebdYLTT8gpw65Fn673SQrUNTlne1YJEtyMo0QzXQ7c2ScWfFgcyfajIQO+yq8sEQrXGRfAGUvmwjz+sO4+I0VpXTuVQvXek/UnTxwraUZYFf1tNmBkTSDAzC4lKXHXSrBjAOW1fOIaUJAZp3G6vnhbZ6VcF7isuiifpTSCfeb6RMvJkWDdNZHS9bEEtS3/6zdB9wpjbTeSwwhbT2c6V5AErYcmPCk9F8TS1/VrzxjH/Fu2TNgdouvgpINX7xHZk1QJNwDvCvaxfWcKwyJZxsZUDqDiobxegLc4n9GdZ0cKjieePqLOjku6fRxWCcsRmz9T5CL7A9lGMoQ4yY5Eoby8i8UpJcarMdC+7cGAYX/QehnCSeP82vgX/37/oIUyhJOmGDB5Pm0UWiYuZtzSvt5nYNPCrxoLZRo+bWCZ0qbqVWI/VnnAO55XnkW1EbbkUqWdqJX7oW7puUf0JaSdwLOK6OPPAAj0r4weFCnRT5BVJB3Z6AQRYOus6FQGhUwa7kCt116KqORjRoA9ARv+kN9LxArAvdVL4pVixxm+7Hfk9CQXaeV4KvWuZOO56Tl1XV9IFrtwVqnCSLuxJR0hg4gS26VdXx9OZ2E9vGU2FMImFVxrOvWMBVw/eQMBSQa7+q5qXW9n182mRfAwnZqq0qFwAtaJxPXD/ipCNtR+MZ+IZ72TNSM02PiqldBXTraFS1WNKwPmavCNtTSr9kNyV9JHSTLB9ZIt//TrHQoG/DEO9GAjKMugrZgy5UWeu2ILscPY64P154uU0BOC2VGPddO8gF7d1fln0p47qwM8/E88WoYa5SzFUoE66w8cBoo+Sl7K9hXKwIJ2hcAS66Q8rMywZ8GqjqjLVqFzJ1bbjj/iuAoGMl7PeJE0LMXhSPZyMK3AnxVj/4hH0fj1ZQ9ubtGaYUJaJVESBnuI0K0xAeUYY2H2DRwRTYqGM7qCoJeUSQnJt1rZ1jB34JS7ASshdZHlR91fdEmTn6ki53r2RQuZDO4DjBZQTRgUS54lyuf2CtvCq14M3/G/hd7T8Letq3kX8Gq+1L71XJ46Wpq7To+Wr/YiWulyd79IBKyuKZIPYCM4/frF4NDIHhZip3uO/qO1gIwBwaDAWYADP9088vgjN796fb29giSjL8Ur/LFm331WL6Uh3jzlN+zs7KbtBZNOU0piTheDmn9U6PyFRmdJFhhLiVfDQnkqrCyKcg8DlZKU54egK1xCiiD6WWGoe3h4eEPL6GUZzGg8v9xui5yaDSQmdhl6hPIAVCQo5MkYwTSGiRxeHcUxSzM0pSE+d5+helhM9M6UQRkcVD5DVRNQyJAB/5bSgar0xsA/jzLEpGBgzMAJCWS1hxSmuUNnPi15+wrmUhwIy6Xo5i+SOds/erFN5PRaPhKiymPjBhHWlp1Qb0l91y2G7IpuT9RyQ8vYwbiaoV8tyZpGTTjvxthgQOGPxFdyV5LNHWUM96qjBKgtmWndxxFSDfmSHobLDiKdDkgkPIxrIVOE7abIkWzkMbr3MK1YqLsV1qksvY0uQWkeVTXdgozqkxIMXEukn8hrl8hWWZJROiRKsrSO/JQrCstz4s03NtHkDESKhKSc/6yxQK4WmRhwfivVDWFn3s5Lcg+1M6TglYrFzhhZN+2D8DdWHWgITf2ZFhNUO7DrDV5snU2k/6DyquEwpUYEKmZpVH5xhqM3ob6pM1YlNMo+cCHmHQic5o9JWwL8jZDd2l2nyItSqbH3UxCk/5z+iPJeSGmOYnQ/OEH3Kw7Cs6esdMfiqm0Zz+8LLhU8XRDEmUURRTfohcootl6DW245cIbphAkvYEMcQTFKcqXMUPyewSHTfbVdZr72tjW7RxObeRhHOt51g0Wr8HgWIlTO5YD11fAvbrJPBP/eVW2sq9q+YG0ygmegw3PnuBZZwXyTdYfsL1OOUsRJLrS//9mLP5TT04EmtQrr5I6X1KLKXYdVxtj6GQwfTEvkkSbXa0s6Aqn+JZwsFxIZScCXpnAoGlFsmj+MnuNZiQv1ofzOEVnUZxntHFAvuZa99subFuuZgWb/5qSeyGc13G6y2oGoLCi1WFBkqP2xcvCAAuYwVCzuW6L0a3ZU2N97Zm6mc8G5aSeealuVI0RrdrXLqN6wWGTH1ixro8WVL+g5BZGqVhPj6/eI0st1XygO1nh1nFst8QhJTgv2WKMOJywsAc2Pntw2xFCszK+FJHPMQMSHBsBc1438ggjpju+tXX3HFsgrtNpXT23/jkly56alp6a9vLjF2XZayM6BlK1mQHAZuf8uqzrp5tiuWdZU8IJ9CjvNU2R2GL0ZA3vblqvqG/Lba31x6bza+DjNnNNL1yNgRfvgTXG09kDA4s6y3FeMD5QBixogwsE4A1ZZTlBp4Td8SlgQfptkL4kSeATTH2Yq/3L47dlUK8F0hOAP2Ea3WNK0EUqvj0FE78MPWyBHgroM0jFhi6zW4vXQRuvAwF0XERxDchz29hUMs0zrtekDDJugRgLgLckv8/oHcx6mCD2OIzaOBwJWLAtNCV5M/CwDXiohiIsaJw/NANP2oAnUja3INBrShhJQ2JBjtsgx2WlOyULkjIbslVbpWh/YYSi4zDMijS3mPVaVceTJIu58EBAZ2xAvw1QautHfEfQcYLpygZz2sAcSU8QU5sKq4dtjLqepDe7On6LXtPsnhEJaJsvza7+CJCpCSoRCbfyDaTxAofjyEoLaX8aCgBqllAhLSXb7HAlueav0cXpWf8GzQhjXNbGaMURoVBvRRIaty9WnMPbbGd+mE8NajH152a75w20g9po9IfPLZtqIsovlJVUEyMk5SV/mZyqPBm5caccFmNFzghOYrXBpDhHneIcf1VVsztZkmZla2znGwUqdkrSQYOISsh59UbuvZ8/7HnjA6Sd/BfffPZG7vBV1wgEXZr6HnYt2l39lqFFTFdi7WLLrEgiNCeoWEc4J9GBgsGNWyn1dUT4HCP7/uVLpgx2X+5HD6FNcsjpvMTRp5jDPRxitv78L6Kcj9TF2/dnl/3Zcd9xnNHgRYLT2wLfEl5D0v6C9uRnGdOMEyGUcnJpBhs3wmtyPmAkP+r9OudQdz3Y060TghlB4ZKEd2hJKNG7u0NQqUZNadhVW9+xjBcUrwg09Z3OptoBdTgFCVSNorr1zZlxCD7rOaGbrzmipWuFSflPG+XabfD0AMzeNgGksUS+Z6aOhcxrQaaK7QkCqt+y4bGI+S3Ehm2cm22QjSjQiEzRoAX3uAV3fR9jkxjWSYxaSLitkrd3ADaBcRu2NtHbqy1gE0B2Yl74DCCCpVYp1pEjfnFCIfyqq239Wz/a2W/yIQKolh+iEZ2YoFWR5PEaAkD6r1771FCRLIlAd1xRM4530BSr/bkg9KHqTRqbeM9WOBVtuvz/k4Rg2oYEDOtPe4F7gL79dr9XDum69TBuHYuO60pWZCMTDdCdndNykKhgor9qKtc0wW/QhFJ27NFYiHPpVr0U9J5Q3gwnoCSGJpDSymVyatd8yurCZc/18kLEltn9OcF5QQlTIXLTNzgL0dTMxw8UNvhAVX3H0PkFqrKlrIWsEtAvhpNVlsoAhghTIIhQ3JAopuqjv+uM5hCvrcprITuBYoa4JGC8InM65U8PkOivWEVQniGSihkX54cd+44geG5RX2f3hB6LnvzVSFu71nr3ACJMsxytgVcScf6rwosZKwjCsgVS2fjtYImYMbtZMc1vOWpsf/QMflbimNaGqJbwvfZd1pOTk5ad86u2AyFtExhJI5iUF1D6hjwwlWxdnfdQUNCjbLGQv/E6zjmyvxAoUtQ234DQJ7faqDrlbSJojDoQ4oQFtddJIQ5hjELrpVJvAOvWcvdwj1LDEEe24yB0FkmlZXDI1qnR9u5CnUK1hq1CT1GRnhbkvxeuCqY5okItYTbfoRUsvyhbE5m0v7d792zHUFB4lFlg0P8qUtV9PMFrsFo93XP+QPoWovpQ+ZKBx5YtUK6WAhTK1gfofknAmVJRzHy5+fI6NIefqiWaF4sFoeg+ThJwASDMHcEMxiLcWRpKTUMxJPloF5CxRO0aCNIL9KqtgpCaXCh/60VOTyVtuY96+q+ewm9Ufzg1QU0S2ebbtg3Wd30dpx5e50ESSgAp8MFR8F+/uXmBLo1217F4gaTQDnnRSRYRdHSEeMATyW9CcPsEgTJto141qaTsg725uvnu8ryii/dLnAudUjg4PalPYBBtBZIQJ9Q6gwnGfy2964ltBdo7dx10hM5mJ9/957ur/ercO3dhgkAbTpshsioSYXNEL5r6e/7Z7u/kr6a/Z59zkkYkQscsjONqR/WU36KL73k576Saii1z/2v3Gm2rxHnSP7E6MeNS4Nj2IML618frvzXy6gV/dczyGdPM6uivjtXX3CiLT6c3Mjwuz9eB83VW+GvMctK0ohlflZH8NMbc37/iHd/zD74VMN8e+AfArfix39NLm3FCLQcz2MbB1M0HLviatbM07WFaqAfgi/zuZ775cNXpWw6+0Lcc/AP7lr/7lkZ9qp6cGTM61wv2TZbjnKBLPmSlQ3kqSvf6Ll+YswRTqlfmDhQ3QL2OQ6CgJRTG/7Ev7do7CLifhFhICUnRKovIl7hlylqec1SGLcLuJAko3spNG3axCfcpgUHtOeEQvtzGySUPamd7C1Mei4GEEvA3Gcx3fWjyhJ71zgX54yTpNXUQKrfq4aiph3CXCWE1BtwIbBxA7TxLE/8E9qu3pQAjlF3AV9d2cfc1PhWrB5yqE3BoXWEYMdXsSzi3rKJa5DTZnQMU47/iAEWTRpwscXpLQAeUCWVi4ttqscLhMk6fMl+fKyqkLZZZGMNJpx2wFzB7gayctlprqbKv1kFrd+zCdbqDF0qzdOxid1FuE+4YbBPugHajetBjnvC/61GP+jcsN7KHLgmLpJD15IKeU5xyspSDq70ADB6KspyzJD8t6g0GBw7/76G3X78gXP+ubfVLljWJCQMsZBZt/jSSFkXFGurEH5WaVfaJQJ36U9VqoYU4/YSZ7q768uQwcPSXJwNHbyD6K9bPsyJc9nGovxVqfT8YNg2/eU9MLV/M4Dg9Mj9Ugx5aZX/pZ2v8Z5iq4ELITj/TBgf0bVzf5pRns63GYiZDOAV+69NHhaAsTvgAv2nN2c3EBSo1D53pxzi1i1wo+u40u6+Ue6L8l7Vd6ovSS7swEIVXduFgOlvGi/y7hqrh9Ny1S0bTc88uGU/PfbtkMj0PKqw70/NBpcidng8rRd70fFQp8qfn40pRMD2fVIoGnE+nUga8u5WyES/zzIGusIV6cnw8bVzB0+gpyxuMrvLEmQkqVV/7DCZNh785TfrHSd4/JcmTNgac/MnxKVC39XTolFgYupIFcf9knn2evoabKWgmNlsW2wbeK8P7FfgPMbkXu04LuNO/b35WYOiZaxRL19wete8pDNsuVrittzbqFzVtjMM2jKM2jPa90TrGURvGcSuP9q1OG924Dd2kBV3teqmFbtKCznPa0NkXMvVND3PFo3p7aND0+fcNIUAjMcorQAq49knye3mgOM8S6zbcdAZnRSQy3HdcFAQtVXz3Nhve+zgPl+CfM9kv+Cw3IqIR+sQBesAl/CEB1SV0+5ohIJYV4jlJNwOviziJSBMH4mPgjbQVzGPE3f3HHqZoouKyidg4SySKau3+ZErurVeGbdjh9lcJPfxEWONe0GwljuVq6GmRdqO3fbW6cwjo86wZOeOtJHa9T2rFf0PEwaTGD2+oOMayfHAaoVsCrhGOHoAkZx3Fqm/QTiAwPMBsU4qtBqeDPHzoPE4LounD009D29AIC0phLpPPJCxUMC9Oy1SLdFuarynBd5rgNS6Y7K5BnS0MDyUSc4DblsgsJ+uNMywwE46II4XyFgJQZ+NvDDNKsLmcGM22ylO2Sk05MFZe08UxZ/Op/3qY0IOv+uvrDIEDP0peWh2DLmoMdYgJvihf0epJKnG6JDTONR0PbsTWcTc/HaxfCO5ZV8J66k6YIC4cWn3zQ08UbmAlU6FwsSMdYdUcs05m/RHvZAtr9Wdk9V71uobXJm8Ct9aA1HFuyw6IAt5MHfWMKCKqXd8D8WRqv2ZYFuq37X6190La1pJCSkUEzwpTgk1D+NV+QXEEl7gpEVEA3pE8DnFS0zt95WaBV3Hy8P0x3CU7+Ikknwi0P2A4ZX1GaLxAbE2SROzgjnpyF8mZ1zyJHjTOqrnsiDKREWrrUagadPdpuy5182qOeARnHzCNYcPJzHSHVVSXWspkMeM5TgM33Zqk1bphGApGaF86H98Dq6/692R+F+f9esXdMl8lDeXg6zaUslqhNYfU+KScXdI0LqKidUjGdSH8v3dPrLrgXhz1rIGv7lnb7jrrh2T23nfktO19ve473/YTKBun24bTb8FpvYuycXk2rnYzE4mzVq3Z1mP0xpfv5SfqEOiB/7vijfpwOGywH8gYEGQsSH1X/6rhrb87dPTDeWWuyxJQ797rc7LOt+P4PudO/To/P6/TR/B/BzkKK8jQb3AotBK75pzMPHzpDLyalcA64N63n7kY6kHNF2o9j4Re63k21M3qjS1+wXxaUbsxAFpK4VpwcvFsS3EBuxXD+8Dmvf4c2Cbk1QlZaPVFb/u909DaH0UezPwUr0jDqJncC+Y6uzzEko8Y1ICozcv0F4WpxnE3A2vM2H1GIxUh0T+bcp88mcVrhfyPX8ij9/V5hHUEXlwhzWuTAoyGrVwLI67ZhmtZ4sFhN1u14OhlFuLELtw8kalGR4/TBxPyE0LeUK2yPv2R4hTi/KYJU7VFIvo10oYJsqT0xd99ELkwXaU3VeUXg0LxzZSu7x++aTTL98s4J/VXVg0rL6yARdL5pNFRE+6PV3Ear4oVGqNwiSkORU6Y+zhfomK9JvQAcVqEhpiRA+T0JwcIiwioOFX7p3/95p//8D8v8Gr96o97+9/126e+v6ONsTckkb+G+0CbohX+nJD0lh9d9AJnMtQ63L1fEyNS3xrYfAbPYaKCnc2TzshiT6xzGpM0Sh7Q252NVJDjW9bNguUBXj38SLNiLemKP7+E6DJj+TP1/SdA1cZBuwUJ9KPNR1mQjmwLDzX7chrfEpajl+htlhK70jWV7y9nVWPzhtA5oRlrBPVNtQC2zdJxkS95uQ5HN06uIBK0txkcvW4q2jhaxekTBuppi2igV6TnXZ80i12L6F+JWQzuCJ1vI6k7rSJPEYQ12UNVeRhlkNngMBRvYCcTT8fhLhYyE8wiJkmExB9JQqIDUSr1Z/OsomDyVQUl/LyVydvyWqt5+R28cU9ZTnAEogEL8T1cLzzsybF5J+YDTtB70fRGYtllpI6THDQwJ2hjfhYZrfCg2XvMQRp8qf23rNBAHpnPZEn3Tsae8+WbJVUurTwCJtflR0xTWPWVIzjLVvr2i+SCoRV+QJSwIuHcpSjCOUZJxhiorKgzKW5g9PQ1pANzST6j8qIPLd0RZURuhw7bhTl8jsV0CGEKkubvyedHRFneFgxNBDOU8Cc6cNl0dpoWqzmh7F2aPKiInVJPRRydZNGuS9HwVDqxZq2R/1IoVS3nZ7ed7jWNuQzFoAG8XS0OL7M0qjeQLL1fxjRSlBVIYyBDtNMYtIbaElFYHptQo+eYUKHr7iQld3pzeTY+QOewa2S5XelBpTs8QDcEbtiKRyLVZfnm+CMHn3Ebb9cEUAOwHwh9EPW2cMTFQHSWhhlsxLsVBqJoVmij3Le6SwBhl1KPrVhcLWjd4jzoV+H20bwYrBHcXBOXRacz/heSN6HeZ1kCQ9QNJuMhEk44YuhKXCE9EeVbwONIApevOHSDJfEqzs8hM8UNzsn0En4i8RtBQTdwmgn+5LXg6WmWfpsj+UMybr8HmL7Ll4Sao/smVR+xbJHffVox1ag5kBfoka75fuZkxs74OONoISkF3MTnkb/A0hczjZCDxD97lgEazeN8hdd/LnDy6IbYOEwcTxRTbhnzpFeZVgNnOnD+UJkRzjQwZZI6XOrTf/X0nHKmfhXWc6Zetcx1pm61bDAdVFtN3T+YmVe3HzC1fpb9tsdrZ+mxkGNJb58kvXapuI4X8P5WOzyeDKfj0WG116PheDqqFg75CAy9WtuB69UHyx8HU7+O1xsMp15NxN546gLex+Q8kxLaLgBdvdAi7v1YC0LnEFk5gOAqpZXmwtvOtQGu2zrT5s20s2Sz4D/Bn+niy46ttct30rncttrE0A2m5QdA1xnN9dIs6wcdsMMpPBSyH1YZG9oON5I5xgxdAGpvPq5lMzQ07IC2s70U4GQgQzDkR5HrSEKTzWbrbZYLl4QzGAlq3ZCes7FPGkr4IiAeOJvaBoWrDas3CSbDkTcZTI+Te/zADCNt3Xbbu22F7ccdCuQ+R5A+9Lztt+q+16s4rx/jRawdV+2SXuHPwh/3vZJDrg5xuptc0wzu/uwezwo9/6+nF7PZxeluDkjoBZ3sm5OqOr9Vr5TGGYSgdmVg8AQGKveOP14fe+h69sYuD6AciuuRM5LCYSS03ZXr4dO5hlk22fB4cnJ13T8+m5Vqx87G13j/5uK6f3MSlGtdc5X77Lpc4W22RBBNtHvN3Q76IJruqOYje9Hawcv2t1H6S9EazUl+T0iKxiLuMPTrM2D79l94LhZ647+9rrYcr7VbcP/L9gCR63PdiqPpB/in8I4prDVdACykeAU3t2fqDwuuibnuA5at5udkx1jAB0IZ/HbtCm9T4VXdf13hV62NrgjsmWcyiH+CBjubHN/ZsUtSyEwEYcWb4rnIgsOKVTWW4VhtrXZWF2QrVSkQPKpng630TCjKgIGEuIDESiw0Cf6qndshHIZknR/1QJi9ZrLDp2pQ5A6Bg3aRD+0TIsjDniogWba3rxeB1loZhznqNdaXX2k0NKitv/q+GoJcJI0j4g5vSUpoHIpRf0zd3O6+b6hbuaC8biD7waHN9gdgqoXvsGB5thJsdylbdxzRYtTfSsH+l8H7+8OQfWrRs/H2FIM6HdGhzUkLXA4QFJtJdXttEI1V05fhT+oOdprHlJj3rXYyB+F05AClHruiOFVX4A/1OmJbD4E5OkBz3iUGJwiMpCyG95HivEAcE8wBTZgUEYkO6x+4Cv1BmxTwKheMtkvA+0KPzXMEDs/B5qRWJ6mY08fB5huLesH3aHBIsobw9lawoYknX53sCBvppUbSfYHqKFoWUM/9Qkm5krSbOZUN7MW1WL7U8wo4Q1ItE3P5cU63QOxujdi1EKv+jf0taHhb0/AsGppO/dllW9RlWJnjQ2v7Z1Nut4y+xj69uEY4iuDU6fHNgRBHYJEfPZH8rJjDAzTe87vdtsz++ImUf+QwPH6xI9XJE6nqY7LTt7PdKAfOEymb82hDe6vYqOc/y1lZ4G5794UtM/Fk7TRlvHcnotB2vS2Lape7m/IDdPoTt15SWtU99lkq2tj7mdMHPq/jEAQEGXBImu84Rl53F9XNFMGQWBopZwftreK0yAnb35GYvw2x9+8v0R4Th682ge7bC6dkwYfZ8Bgz5AZcBRWrB0g0SHIE+HnlxHGQonLYoUnB82hSsIsmHUefxO2FdlXy1PWGYm2XD1R5+BAmxK4aq6qo9srdBc+GkdwunUwm4I2heZblSNYwW/dUmPpEJlfa9ohWiGPwpJPakbfbSa0eUS+IXscZE+/v2n1xL9g0enxYXl+8myHR1tpmWPTEtTPymsuxk6jV8nHKZ5BcPyRIwiAA6mAB7G4ndd1oyy6Lts30zoGta/XtWfGGg3VRbmj+OA8CCK0VFCICrJmdyyy8A3j1nreLlUrTx9kAAHVDaC5A2lkQM2w7FkTTnVigAPEoC7OEkPV2LIimO7HAAOJRFt6Qh3mGadRN37Tbkvidat5MGE4itav2+gECll3k6623nBKbSOhcQDXzckMWCWZLmG5dTJhmW1BXjRFw0Ux1hhcE3s50kdRtHqcHLUUetFZx88PImy5aqsnjpHhDBC2bKclDzHefCL3EnSptNXycauvhqE0c7O4Zxd1rSanZ44RN7EGdAWvrLuCBj9pNRrD7LTdqHt+VDJ93V+JMG+50K1t9cvry9MOpWKbsBp5qcP1vZw21vqqFb8rARbm7hjaBbMOr8W2asTwORSNrs6LklBW84a5SGv0WUrqAV4T1wLooroXVVbHfXBw09PyKRDFGon47pzmOol+5+sLkAwSn5FMcElsu4+eWi+A0zxBHuF7X7mPq2pPTm3dXdheFMRH1wOfuIzx57p6YpDLgcuhaoDUwFxt+LmJi17nlA5V5xohV6+lxtjII2ZIQcPB5iJ1G+WZ2BkueaNgtCsvU6RVPmTrKCJRUzvJb8UFYs2zJOBNbn8x5gy2PLqxPjEOUqlEYdgrXoPICcIDhvfCvnc9x3HHHLQacEKpe+glPGjSmnhljQ/sYyKGOu1PtfLeMYFN3GDCimrb0wXU6+7DV9e+DYKCTT3f1WbzLFhztPRBM+6sszZf9CD/sf1UZ5PHqt5DBYLy1DARHe8usoN+vuDIzEn5VCcQ6XPLXoggmxsQHn/VBEKzPJfF0KdQnrF4FbJFEWVg7ftl9BXgD7pBAWAv2cZIiMw+S1xmh0v4SWqdxWOTwJRauKlsEROtvyiv5a2xTFw78pnxJGL7Y2irIsWM/i7cSiktrHSYZIzpZlyYVNJB696aDTAtad79JHQaVjg0aqImBsKf/uHr82kjS68pCo7J4XpG00Cn9SyX12+waXCa54MkzKHzYcU2zPAOWD0WqK/aRv5f7P/a+vKuNXFn8f38Kp+850JoWdtsmhHRb8COEZHgzWV4g9805Hk6OesH2w0tjmxBC/N1/VaVWW73YwCxvv0twS1WlUqlUVdp//LA35IrLmwlt/bQDdp92QlcIgYuXDeBjQcHfh0s74C5bMr9EKp5EupjqvOpCdlrP0kKGWQH0qYzHTpD+wDI1dv1fDSahv92M8emGfrw4GcX489XdaQQQyxX8GSIsZncaCQk0SJjLUC7CgR2y+6UBfwJchAqDQLM7cp+FKYLMI/zTQDhTGNRGIjy0LM/ClrKqMY8IUxUznEzi2c/n7351RGiA/FwFAhC1DIRU9dX0m7rIO0hhL+mL+V/lrB4KSiLV9Vc/hWWZX0apn2IZwVmQ2QIL19K2gwbuiMJDWEcLEFq3u8+cfJrTYhVEfqukojGq6BSonE5yjNRbey9evGi39n4qYDlVxFt75fR2JfOdIvNY7kYBtHf/gjJrxbr+9nBlEbO6CCz6qTKmVjqfQtc1+lbakfFOu+MUzQ4ODva38KLlAP+tpPDbQyQInwjlSUDFH8lCe1fTaO3lqPGgTPOpTJUoU2km0XfgQM+nR7OZvDPIBltbk5vR6JmAH9Y0+HfwyNYzgRYQNoYEh73gwguMpj5LRsNFiUZjjsm2xS2jvOMRGBAD6l/OPrxvJHIG3oR+zqlCw0ukZKCdzEOZxD8vxiPEHV7algK0RMYVy8qdxXQ02W5uNfvcokPTFlulHlBqf5FL7FLiKJ9oUeL1zTSfvK3IJtM5JPvITDCdjmI5Mbj58cNSkV8Vh6t6kdBSY/8O5tmws3Cwq0p4UJjkLs8+Qt5iPffC7GUfsHFQL0gcJ99Ub0M7KYVlIXMutaL9DFjCNhUiYCkjlv0eEhhBBXSkGiIc5JS4YrCsYiOhCLKAeekIC2be6s0Dy+nLBC2UdYqD+39YTuRYXt1yysz0oguOXdaPR/O4XixHwVNBawtB2nXxCOKAmtMSP5W23CCt9t8rrt9nv0+oHu3HSKv9dHGVC1knrfbjxZVJC2hib9MVC0FCXArXl93dnwJfOg4LoXx1+bKl8cMcfvsRBOpVuHn+M4NRqfDu+g7R3oDZVqgZ5iD+1p6BWSlYmGdGn3aF0GGcVgrL11XzA2FblhOwxpjCo2aj0ewzX9de+hKQ53gPus18rHmV8bbcb5YjWYVE0N21gcdVjezAgXN2rLHQUmrBx/wmwDrstDH9M14scSzBuBr1xDpqQqtmIT5V4+gq6hbSJec9sWRVXMaTELK/3Cwu9w3R30xi0jVbZX/+dIq3SYAnwJiEmc0XxWV8TC2hKYJ5L4H7CtvBaBrktU55pqzheFUte/JCFKqnazfB65ORaA9/fYaZgn1FMWQXpljlJJqODabfycWgAQM44IN+pgDsJzOgX8xkFOMWKgp2yy7sd/vT74z8Da6GWMzMOX+XZhERyFzWsMLHsxjPEuCb27glQeiylG/hEY/ZfVb+xGb348YcFg9jugs7Fm1ff39Et6wS3SzxKAxv6IHD6Qx1Xif/HAMLM4EmM0t7Dc2BMNgSQzRY40YST3AIfvTv8tuxBGMKoJCSXtFhl/J7wwvwd7wyvbMmfddslCtbUmfWQUzmjGUDlYVBVkuIa3bbSG7mAztNzcxvH8Qto6P5q+FEzu5UL2PX4pnLq3LslaYoQhesTIpU5xW9I6splTJyfFAfDVCOUhQUUIPVVrouG8HdIlaHQHgC7ZZ0Qz8BDQ+q7Y3sJRfMR5u3JE512aZil2SYCZFtYo75f5YtKQLFlWmOjdJVd6FiKtTTEdL3iXNXiLJOs3spKrCy0Ts5Vvy/ivHcA8noFuqiylfRICNMKuFyyXQgvCJGkQVgyvEiPf9BXj3BTpInz4h3MwUks+IRVmhhcdZTm7XtT6x+pN7ieicnsk9RZf08DgeTKczZ3NUttrVVs81iy7QN3nf3GKvs95urLJ1dVmVDWiXDoL9/S0V5/3o4i6kCXoEv90ILESqx9NcK65lIIHiTm0TmWYwXCu6VwQstuJj+Or3VrvRio9Sk02ZsiYalWusCsdNCHfg6HUY4MVXgpUH35lDPgzEEzbNZzzYA5Vn78UORLWH0LHp1CIzLDvlg7EoXoA1WOLiBSevIEo/CyJeG5nNteekT2jvKy1oXWHMa6OFExMPQKKIqPVMA3SDtjPLB/hf8ER0OWF5ZpR8Id0nmOHzYamiLEaZMliu+ltuQ8dYeoQ/n7+V7YAT9820cKLStLeOjoWZhmU+lLDcLLHTaDsSLKUe1h+QG4BxR/pD0dFk5GTpCKmMOkvRdQaOssKg2XAoThxuSCxuZdei1LhjX8gEygdhz24zvui0i2zlwHDBycGKXrhaNZ4djjOxGKIkYuqIcz6EUIqzu2bPDnnV7e7sjV4d8Y1BBD/grhRg6gue5EoQL38r2EiCm7uxAWn+6eE9z3vO5hKJsya35TRjCp8Xv5/T4iBcseYj0PsYzMGxjhEciNmO8KhTjFTEXWxozsQk6bLIswwlKkbgBMY0bi9H8a4uutK61dozPVUvpcA+JZp1aIeeVLuNClU8K3y1JS8fc93K9JH0VQ8je8ws/EwICnXx7D7HAv5y1bYlRoOy18J82/tPBf3Yv+M5OAFVHAmNx/3FF3+td8EJzeC6Hg/DFxBZ/I4ejo9HoZDabzgCmoCge1o7DrHcYp00NKEbDA4YSgwI0hOi5S6gOXiAnAviBN9SJEH7gpYlCYgquiUQ+NYOIfbN1MNwOqVBhDh2MoV5HD/Xo6wXzc42NBEwvj7zlZSuyIReoJA4MEt7nEbsvaTG0aVlsW1ukXobA04Y+LDSgIk6kPeicyWEe6WaidKCXgUGvy4NQXG7mL/1STxFZXSjce2aXanEgqqqBA/rKajA9J5TP1ApbquQa9WRlVm1Q1yK+KDcF1YO8qqmerGRPKNnWhiQPveRWjH8tTqpJMqwR9Yt0WKKnfGClC+MxVrZhjsMru6TB6dIv9WzRW9OTK2ta3ecNtexgGZVAolqJ3QMRQdsWxXdoV9lo2N9fBNzaKhtukqEWqBa4K4pF7Lr7pWboZcxdVJt5rzzyzek9VQtwsTjTTkNv+gb1oFDw58UiOaMsm3ntAiAEevmRtiTRo1zN5II4MWILDgPPat7iZILlhyI8DD3r44ezczXtlYjQgYjcCeDfn8/PPzZbjRYFQNp/FP0u+XyYSvoyjp7b+q+yiY7lWU4JAQfHozHlKYvJ1sCRtUzzTHOtwXV+Fe71NKEczVBIXwFjPHGEhVd/TGfD7xIl49WRwAxkFs/S4OFeX4PrqYpwYtlbUxXlS7w1FeA3s6EXcGDIq2ST6wOdXsgnoVeoqsNDTV39WDKnpiNSKbAyeAky1YE8E9VT+SaH4I7TMFyN1BFQpiZR5RMtR6K3L+tYMWbQv2iC446AhPi3ODhTqR8+nrxHFStNaqgC1fSBmivQab7jJCyA8ZaQ5lxdwnxcr9blkUrbQSNQsyzpanUfV6uXvhn4mQqPIYrMuVRj/Wo1hSWZhEkmgf80AHBsrybOoZrRTRjbZifSM6yBJiawJXohOIwLEYLHKCw2WcY8PL9fYgfVylZmWMVNvQuTu0AZjiHza4qQpRCxk5YYNFdmAwcq6oTOtrC2HeDwwtm2tpfIkSGUFjJUZXNMD1yORLSW5GcBqOEzdbBvhxDj3DZGU3XFjtp0EU5HmYSsARQHTN7OLeZYzablFFFIpUt0IIDC3pkbZq0FMjeIWE2LYUkw4MKnfe8acj74dpiI1hZFdatOtEXB3aonbWFEh5/wV31RWKeTVJDn2NZPlhDy0Nqa0ywORpWiZXkgcsi7ASYuh5M4MubbogLsFsWS0B8RZxXDN6aTKbgTUZuYSWPlycSVmUjBvEiWZM371CLwcFf8SQ3GYH6yxW9Rw6qmOw/7QGA0lVFOKXECcSFnfSCvLghmONi71fEhkvQemDy91YHWBWNLr2J+FLyILjuePL34Cop2ViZuzyl5/1KcQfFZReTAKsO2BDq6CiDyGTyBcHE1Rdx2ATVsqNjCQNJJJjjlSg4oKnXpV8eGovb3s04wY05Q92pQ6t2jbSBIT6bsL5dc/1zxTJvqkOq/3sSzYU7SagnHd7tVEbqvzV91hB5kbEOtqSztnIypFLtiLoUbaYIIFEbGbKkt9HjJ1VLL0XihbxxcsZ+Z/vulHzbGIvCDhnrzW4SQkFKDX0ZZ8IUGRf8mq4Ig2M11IsZA+jdaAQgYhNU0bjzEKeFhGFt+LcyNKEM9aTjXRWcmVgT6J1EdL2R+kYfS5hgj4oi0pb6v4jiRoyG+0DResQflI/n0amydCmmzQnQZ8QQXotIaS13dQFc30nVNKjj/7+5B2tqDyJXzCDK/EaeuIXqCa0jWuIZahEh5JxSaEz9hwWmE4N4/TJREUzcfY1uU/IgCTI2NCUA9KU8HUyIfkwztoGiisjgzmriZjaAfwcAh/dGgG+MXMxlCxJk+K9fAG9OsTyevTz/tHH94//7k+NxipeLazG8JsdJ6QEcIjBXDhu5ApKln0xHz24+D/eXrmPmdx8Ge4hqF8rWy6Gsj9LUx+lpZ5WtlydeCgTGFhxGXHRR9X80VItbOD4vw5GbfG+d8r6z0vTLzvU9lp8xNhSuOTVec07J8aWaY6Th+1SpvYK7yRixWwXFQWOWtEgmLcG32AWEFpVXey3J9NKVyRYPiKu8VGtvSgEiD6dXUmQjKq6kzWk29ql5NDWg1tVZqn6t00beYoYtc+sWcnHtG0W1t4b7nvIV+eLWYR+XVYqhIZNTL2I+S+HL9SnHUk49fKYZcO9evf/zIdV1YTGiJYm30JpcGhBqzKU7dk4wkK/lKR0hi+6k269PJ8T9tyymSy0beDAfi2badIhgDu9YVa5B9HNfWXH9O732XcM1RtMugU0mQYeuFB4LaPVhDUgvzESRbmqSLFFudh0gGYiO1Ni0zrKHRbXWcQBPKLHCVyrRecjf/X4YahPhqKc2P1HlFDyOXaWKzpUqmqrSpLi8fqgqqeiyyTdBFaP58Y11eOrFJKNksF8Y3C26X8VofXIvRp2LqU31lEDfhvnRwo1dUom8EQy85sgsShD++2m4RMLcr+npVFBg4fFyL7DJntc1ZRYK6F2Thrk7YZ04FrTwWc9RnJSQUWE2iWBRbFV5NSGuRl6t157G17jyh1i+eUuva313tcqVbj610a1OlMfLXX+0/2845ciylzrLOnTnvDm393YV/f/wAp5YwF1es7Oqgsbp2nbaqXb5uxugJOp1jni9onewWElw3n+D+AYQalq6/GG8/oQZ7u0XTyAvRrV0Yj7V4MdLuMFYQL3l+XLvui8i0LjG5fcOWxE6Lw/+dPuOxiB2777QYvy4h9SuRrlOka4Xkwv9pCH9Lo5FPtIj6HgYo2E6Mv8Joa1dtRCiXcF1dAqG56j9tDwaQNIV+jf+ClSwtbYSrpY2E/g2NRYw+/fvK0cC0sIIwutdhYCnyXSPRP/prLUTtNrOQTpSZDV3T2BHXOrGFLG/spIGpyPGf7YhJBpRU5vez/P5fYqBuM7jbynzwIFlbWpUQUUYh0gKMquPQ6wzymq3CjygXOnQ6GDq014dBek9Tu+NvNjMvHzYza40/b79IsUsDYrtqZmceL/RhZFtzBVNeeLD3CKF4+6QDpIpWwS9bBd+QxW6LQkL3QVm03Bxa+1FoAaA59ubAhtFRKDpMthFwHwErw7XSbrTiGGFD0NTCzkUDl1z1SEP2HxTKvom09/wxSLWKBhqrmTkw0vvdNdhbW0+o1D7VaA2lYmxtjoM+T64m09uJ2sdK9w2H6jY9HPlsHrQ4Vh3yoAixdgTF/MwZqaB6qaJUvaO3iLYp2JW41Ur3zvzaw1OHfWcn71/bliPXjPMky/YK4whbz1qHj1lV1XMFgaitW17lkXD9yFxajVjQiwpLqxHKrnpZFaVQkkGe2/JwGiSRD6g2R4u77hPjqax6jmReRlriVocq27Xivcz6ZsY6DzOGZebjjt+EJYMQeoDband2n++92H9pFWFKKyB60kQ3mB+p2ZAibWo2aLK1505qJQy928nPTib65XnbPzUb++uHs5PX1qoDLotuoTijlC6NPBMwtaQ/hORohHJ4Oo9x3W75pQfGiil2yDXOMuXHrFrRXbkll7bTqlwdKeqNHRa3SuYWeZhGKLtaxB3Fcma42xIM4+tWX7BWpXns6vBuj9dUx9rv8Bcv+Ys9DgGxX57ZXofdIuQXz/n+Hn/xgu8jcnmqex22q7A7fG+f770kbD3HZi6p0cVvRMec9l2dh4M2u2q8joMb0Dalr/VsBQE07qpRmPyf2NaxeRRZPupsUMLG1WeDZlWzxgnO9c6eejZoVp4c1pT+3Nmg9WdwariOFndDP950CCe+YH6UnQ2KymeDIiXD/+InhPRUpcyt4GWTk9aR5eEWTmG9skBLZC5OBZ3xrtKV2zRauqJlQg6p0xn+oU1fCDOfwx9YW8sTOEECZP3y6W8MwtpP5fbaoA6jUObnU+gPjtC+baeVo/OzheHfFVg7dRvRRxBTsmCFBGCbG4ftCyWBNzcOYcbYtbTBzlK1hVbm6yqzd1dPC0jWxiMhruya8UgI8UhYiEdCFMqaeEQtodzryMLrcLLb+S3aS8SnhVJwYSLIiVi4+vMNiEwnkInJuSnT0UmGFNe7NFegJ8sUoEOf0Fr5kREH4wRukmitowR8K2eIQEZAngMCOm/oALFZEVN5ELmwHJ/wWsTH/BUfYSG0Mp34SrtF5Cv9FmNfabh45ZOOi9HDoqtepg+QucKiM6SUFpglJuYXleOCVW+hwEqevKigNgjlrcX4VdEvX+X9MtE2/X/WPXXsQstvxZXbBFduxzi9XmX4D2dVu6Siym1KY702iiS9B9zIOLdSO6tcqdVlx5MHi69VlV9yPlmhbIniiQz7UlTDny2ncKOHZKvNM1dLTieUQeLhlfL56caVivPKfGL4/atcXMxxg03qL9BQDEcR7g3Xs73kQcgFRcLMBufhB9TsQkQqPb2FQx8MqEw/jBp4g1W6S9a7wuGRtZjdxJaaGwrAaUPKpRzNjaQW87NTTAFzLEvoLCOZkXINRLAa80UNuQDhBXhtP5y46Jrf2mqiIAbinp5DwoNEeLgqqIL0A5DEoGf9P8sxc3vBRQO3rVyIWjFZ3bAU9iLa5DJ6j1DFWy8O89kqUhowL5+cCjqfeDjwevkUPrhY6kCwfPz4mcxfuUBDopAiiDDdmdsYyPmH2wnoYxLPFnhAnw6qiDBbnYDqM5Q8XTvhhDknmN/6yvzybS1JBStVd9Ho7LrEbNk4TaV2+jrN2O7eemd00d10dhYvDozPOopCWCsU6wCYMkg4Vre5Aj/QH5pUJpxCEQVZIV9lcbF7kExtu8zONu4MBk6wPighCPbBHOA4l/amx/iuoA71AuBQeieTKJmCm88AgQPMszHzSD1bc2A5RCz9xJqt8gCsohAQFSTP8f5ivA9CU6iAbBhgSDmPV5QOrkOspWRAZr9REtQFGkNlIe2EMW2W1EhdT3frAbvZJJYzsxOYbWGOBXXAXw3qw4XWtdQYoQo5xVyDhhhF1UDpVoq0WdlcS110DQVToggAq63jJS3UZ/KMDamnkdfiaetmZ0pwDyhO9YnCrRU5458//VM+9BOx+9SU4/w8nmRSVHNo9nb38Nt4pN9TFFar4Vp1fbRZWHDlyM6+dXjQPZl8jUfQJeoAPZl73+ZDQRsHvWYTDok2bjuN6azfbLtuq/nbu1/PwkE8ljvaMFoZVvQwlgaWGeic0ucNSJ9PZUI4t3NE2226+02ppAf8atTbEmo0XlwqvCAeKyk3W+pvA7hKEdcw12m6z5tY8k6cSsGqbzu1CHStq3b2HmD3JfFj3+NGW9DeYrWH+TDYsB84XC4J1qNz+nSylZod4wN9iEQSBdlQ2GZX5rTpGdEfKmPPbQEYlfXwVmPSlzKMLQn1bbxAO4ih7efZqOIQhixt+/T1rZBCBIfSM8dbgdMiqiff4vAMUkNwunFRqyM+4gPQ/q/8iL9RxdyhxzsR6P9W805HWmRvQPfvxHZ34Z3O5zdxdD69iifzVE0WD2sYNLzbbkIwM19o5ZrHGVo0DeeNqZwP5zsYsadoWjNbTZWFX25rBzLw/3F4g08878APvHsa+hsp4AGwmB44O0tBiNdP6dEmzKcEfJry4I+Wrw9l7SyQ1E6inuxGJv6hX+SnQrpNozSDtTjKMYc35HoasZwCPrp25Gx3m2YaAuiLvOtI/m+Q5j90AeeQiKHCGzTGRsFg3cucN9dXs/lQ4zTzCnaAKokRAx6Tq6cvoz/FKAF7Ydo6TcRqRnRgyWoebOup0q+g2qDy6yKCsQdDGbBGX7Hq9LHW1VnMtz5CjIp3uB6FVxZ2zkBYm9gzwT1CziJ7a42Zpnueoac3X8c4RTu7e4djDqIEDNQeNPclOpmVgHpp69uVoLdQ67EZPlFaOUQqxT+Ird3yayKSc9SOU0cUE4aEn4zugL4RwD3VbTVnU2hmOZlO7sbTm3ku3mtmJWBcg7sN7rBHabfzahrdHXRjL5MFfmgB11HCJbFuOwFErQj3froYXhZ4x5jWjDi1BhnQlnOiUnQ5wKXJgeXnQwwStGK0qcOIA4tseW3At5VVjZ/a/NocjzPEb+itrO3Mi3yebPIj7P7pGvd5Mv9fqHMj5lhljTNk0Xxsk5Po/3iLY9PWVNt+vFlUxgbsfvA4si+b+iKfJtD639GaWIMPSTyTWNFzWCKb3iwOPp7vuQ3Xdc+wKqVcbP9Buf1phC+z+3BZupOtGBPiqoEEFzXz8PzOdtpjZzSjoEbOemz4VV3dCVSD4gD8K97PBfGz+LqasPjyxYJUSszPYmiOel/hHidLa4ix+oE5rHJVRuHgv9XjeOlQTcgeHuSG64jz54brSOHPD9dpkuMIK/9nRuxHqxH7G+H6b7pHesT+xnGYLA+6j3pv0hE7/to0Yq9CTjHXoNXkk4bsunnSYXqpbigaVT1VNfwu1U4TUc2CVcoumAFms0J0pco46xECIR07TYkxhenbn6yiCR04QbURVd5LOzk1Q1BtCzf1yidbSSroP9Lt1f4LWsqnWcluP2f3+uvtHulQP6dDSE2nVLpXIg6ZD+sIPWXx9BioWg+Q2P/pwXo9CEp6UG+ajVNqy0JjQV+tOFifx3lqmwHN/+URTnV7bWwnXlOy1w3zLl4MplHFPCvOSClbizNQ/Ig69xF27JCttir2ji5YyR9hquFuEYeSvmqfckT2ANLQD2lfcrRyPmXAPFSO99/GI+L6a8b1sphf6UiweiUD1KTD2f+nVpVmoJbYcdkfYEPh4PvL6fuPn8/L0bAaeisgSwFVWndqlKztTiY347/KYsRAK60MFIi//2N9/vZ/U9Nx0M2kpVcSnixwq96saO3tohn6COakwgj9BQ2OlB/R1v/X1iioP97MWlfo61i9/gV9n4xpRU6X2qXSDtRUyy99c8HI0A16sIqW5s1dHtnqDB38pm07GsMC+Lq++wqf6RJC9EfTQI789L6wmOls2s7hLy3GbMakIEL2DCbJh7PYxjngaDq2WOP1h3fE24wx2mRHgxD9fgW3sIpNALayfZ/6wpIMURPPEh5DKL1mBvHU5Ya/qYcubOvdMJxN59PLRQNWHIEmbcOW87tJCHtS4CfuDIIcO6BDG8ulEla2mrbEfTXSeI1s/uruXPZxeGVbCshiePNl5Cdwg+R6WOkZ0MzHVkr0DgkMGSiKULv/kootPKHewjMQNTOfFqUbinRvYG43GZi7dKha8VrmUNeIMT+GSsQbKoGQRhXiXBXcblxmnVajzXRAXvHJI2OW58Pnc/CBFhMi0rs8XxB6lNuzuspkjOvKN9J4LYIUZFJc2YVCzR3+Sru/ZtpdOIeDr8Ph68KkeHVQD7oEUO2yXxp3H/mr7aKw26+8jau0V1vdenKNI3R9YxNl4rtut10Jlb0VMl3xAbDpJN3imO7e39p6pc4EvBKSl7NtyW8ZbaJTlNz8Ru/sGs0B/54uUvcP7dC+5pJqhjmM44ZC5q1evso8nV79soTICx3YUjJvlO3Z4XVDrbprX2YnfC0wN3a9IZ8j2qQHP5Dt3gUfEedL5plM77kdzXZ+TzYPVGUB7Tt/S3uWqM4jlmTYmKdwM3uEyQJPP1vIblbpZ8VKE5VaxsRujlC2N+8XjPHTCuPTR3MGRZjfvV9K+8lYfrYgD8zMWU49lZkHoYnNgdqGVs5SDD5IZS0J5j+hsfuPa2y81fitbuwEPgf8LTRai9oahcpVkw1Ue4W49XLV1jG6vuv0VlssaK6utRXSL6ceiGt9CbJO1psdISftlJSu94FCaZ4ti5n6BvTaNdWtcP0xqoJr6uMk1cdId7+M3Cs0RVkMMt8RbZrXfSuCrIyRUIX4dCPWWygJuvdImRH+VrwtbJgf2W9XwgXBgtBi/gu7/wUY6729EPfZ/alK10eH+NcbUUtxnTn3Rjy94Tdeok35BSqXyuTHD7pmPqYrAsDCU7+K4doA+ntob6jcT0FKA1pRNysyBixGDASNqZmwVM53xtL7g/v44Yd28XEbSds3dYt1cZfrzQw3LR/CLzkaBWCYsSQCgz9ZHWkbDW4D7kPRpvaCZOH7WL3JG5P3SwvpZcShlWuZnAubsCAYIKFElRyQzYiygg2GekneylyIhGMV2RKgk9mQ8ax4xymIYpYN4vsraxeBIXOhk4eqH34i10WT76wPigQ8KdO/uskQ+sy78y9ppP7rtP8FZPEpDqezaG6HmS1QLXoa4Vrd5TCe8c5LF+2twU/yl/Cjoh404X4gMNmPBMWH4JKop4w0LcUkmVB/tR1Vmzc82V0GFL1yGhRMO4rR+tKcKQU3GFtL8dcE0Ie1LHKWi2lgMXvUG1wwL42FMU2lrKgsU9ek/P/31aU6kruMu93v0PvaL3df7r1ov3x+AF3m/q24fx1jFKK3G8rCdTgnuNB6FkPkM8ONOfn852l+OWcvzflweTmPF/m8F5oqDQzLuPtZqV9j3FaTz33JuGLnPb0amc9suYA7WZSQWi2drrcHF/LbaZl4TASfRMBhnqc1yG6ddH6yvzt77k8RBr2Y+X06iVXlbMbUQzsg8FbHb7cOvvvfod+9bWQUlY/MlQjC9wGCeIIRizjt6a8Lv/YWjtLMQzG2IS0vf04pWq7cKINr/BxdiNTNUvTxcQsdNDH1li3pCZ6ss72fvpvO4rQvsz/Vz3vYWXlA/VQbDtV/00TTQY9z1662nguRbQ5vd+ArBMRD2O0Nm+2HETaLtDwXdyWNeng99IU3UH99xN6n6Lb1wlV4KSHrqA8c1m+xu0TTPoTr2YN9IT5CYH528p/t/GcLPq2dHP5eHuI5QTQajXqo4m4cKljOdePf0tKPlYGmgzRzYP0FsF4D3p8T61gzzfWxxKBzghsOMRajCr5sZ2BGPaF7Q82RPRIipbZXta/P6KRo/Qy6lRzVP0D3qv969L4OLgUpg2Dm9Ri6RzAazgdx1FBF5Yl82kwCbttUuHXcSIdDpgXMvhDlGZCezjTZ9hreTl+f7Bh3tG7mrVPmrUziabwtkeyeoXxSUHunrz5jceq1ZdIRuhMDdYcHwvoH6AMqvNEcNiTfAiORxXhmeTt0lzVsnYViwxgizKieSDqVC1v7oDMRR/QyJuQA35ZTCxwLNQDm8mQYNywvo9XOaMGkVABB6oO01pJyidRZMp1exk+mYr1RgDTv9xC4VmFDyqmqHlp6L2U9mY6G4R1gfZ1eYZudTcdxfTqrS6jrJF7Ajs0rfBPy8nIY1u3z3xgVCq2YJNiMXvvPEfxUIriOkK4Ntir1unJvhF+qfvpHJ1NZ0sSZ2kZaBx+iu4HxbJnl1/JUO21NtaOptvJUT46O6zFt767LBQzJkgVaH/BcwPscIOL6LUx6xPX3ADdM7xL5Hc6tXUZ0o8hwXtev31PtqgvfXVOl43iGXgCfhoLapMLOjkDsKYVdvR9FPVMCNxHoCXU13cv2GQO1WQwxaK+fD+L6/G4OlQHNuqsHcR0v951h/UBToX06Sn/fT+vBdLqgyZkxGAEJOaqTpCOMSV/TGU3Dq5sEVSDBl9qUgs5ukgWgPFedgQCJIPEIkoO8F2be5XA2vpUzYA6PikIlbLmoj2IJzQkRQv3442cUZ0Ibl0Z39fgbaBEywYDl7DIX5d9p5zM+e2y+LGxLXtPDhiw+Tlik3ChEKkkxAhYRDjBHWfzLY/XkVC6GnauYOo4YBS6oBSpfBRQpkDAfPa/IZ7wqMR8Mm+FqBXTvexbAjvPnhcf0YMo6lEDcH91Ew8VRkpy+9jDQpctNVKRL0IXkNuOnk+FiKBdVkewuW0JEpCmKrz380ORx9pRIQnrLdX8y85w0y4CCmEvDo0/IAGjSLWjkuAAXMRDFmNqAETXzPMQe33MGjA8E/vFbVdSCxi/xDOLi6RxNy+nk9XQshxM9EgA5AP1CiS/zJUKEdzaM0ll0mb+IqeVCwUiAfvjtKg5MWlZ3ePArTuN2m8MDC/CeM7/zGKRf/vmu/lrdf1T/CA1o4MdGZQYYx2I4LvKxeoyx+qg6VvcHjtgFtHfHyBn2MuQhL5IBjpur0gJYs1qkYyVhCmfAB05MtOM1iCffyggqHWSt5mlIrSDKPvm2wKdMIoxyIdNGpatVax1HAhjyq2k4fE9Td7NzMIMj1WfUrNZbfRZWRfW6tC8oTx3Uaxinxfu8h2aGv9Wxe2p03vIkvUPgGu/sT2dERAC/kstvoqfXv9CejnD/tT4sEA7HzVZTjhc7amkMPiy++QCERoJ/NVIbkTYXMUzmRhEXfn5aDg+gr5t8Em7FdCAmVs0HipZfnl9Xtg+lcytc/gpxyzP55iF8Pcj5qXJm0amV+XFSkWPFq558MPPLD5Wtqzq2ZHlzfH5KUs0TsntzFizDKc2FMUTNz9ff4RbE0GZ+hBNd+ImzQdw1iPuQjbx8nmziJs+Dhq3mIsNWtRgpDoJstjghDiBTl40NViozXyJA/PGSsnJwy3qVpPNlAVRFWbXAEK1ZXJIVF2FxmJUVSCtPD8tTgVUU+ugysxJpb+DDJSLYX1Qiklujv/ky1ezpI9QWUO9MtV1hIBm9/GODa75bqXOOHzwXBVupnsAWQFdyVsMQ8mjWv6F11/MpwiXsL2Q3v3coa6yyGepWGsVDu8JgOdysIGYU6xaUOs+dbmkJTAxw2piSlsQO8wrWUr0CmHJ7kVWGbBxCrO1m1cbQMRYhfMQ5Hk0nyCWh3i8RO19I2WQouV3Z9/TkneT4Z+4FXE/1ewlPZ+k911hRAeIL2fciDjP5Xn+ZllLLy8soSk/1yNUiOXp3i+mxNbllcN2O9EuQx6fvSpCtSsjTj2clyDZALv1K9cpzmB0LgR+SopOtLf0etixN8kM8WE5UQRKuoNN6E90kWAG2WsAnztITmh9xgFd9XRAPUAtQDgS0eg8+XZ7/soYEYG5300hQb/x58tn0g6didJvZ1qXyaYc/wUfX2KelqTzxuPzB0wM5lDrqzg0wr8bT3WZuw5hxwuOPctUtXNCBro1WmEdyPsck66CKDY1VwlcoSk2iMnQzfyilopFw+x4tX9E/AVkQAH41neJGnMth/9N0VK2gCKK1soRh/wXa+H/auJIpCBjnaf5+hTQvsKGZOHvGcBrOqyMzdcXNjfJLdffpuiaVjm2+1UG758prHdRwkRZPPkIbYRF6FQOsY384h6Iot0AS3YH9/4m72u60kWT9nV+h1Ycde804BjtOYiYzB4OwuTEvi7Az2Zw5HBkpNjdYsAKceCbz3+9TXWooCaE0JufcD4lRvT79UqVWq9Vtb9TFY1xC26b76vf8VWeY1tDkdJiYuEwagE833odWv0/E1lBGGNz7xdzH7N2zMWgDz8Pg+/wsmfXxwV2xQAPjwBCNNgUgnbHPZ7J7xXbwhX/exq9ywz59OzIiSRyqyyqufzaNfzre8MyngRG7zofPw330M/lALEthBj1thrsQW8hHwAr0OnOJfrveq6vMliZMuvBNdYeggbZ52EitdOAUZIWb+t05dmBmt+iBgd3jh3HkR5AxlB8bPN9FnRs4hqALWXEzeFCPnQN/8fDwJGtQTBTWaM9l/MjsslISFaNlRfeUEnpYnTUo53bYaHldEz5iYrBsgXihfhe3sYlPG/4NNYbMiU9T50IFXuEs4s2MVI1l+XCX07rDz/lZTrqRWvBDf7hA8ObCfejPUMbG2LtDD7v0Qn8cYCsnGFzz73yl7Un1pTu6Cz08HuUmAIFjgzYg0W+Mj1rBEE0wmj2oCsgsfiz5LnhqeXO1biAj4jYiyDSQ4Z/f6RRXsqgY3iS580m8kpwh+hKXU0woJGF31fvd3mIcEHpBMoIt1Bm9IAK2o9aNA6giBz6/v7rVr6yAjkWpONtgO1+MP2+Pr2CvW9kRJJJINPrTEwfsUqall1HV4dgJ8VLQ+WqQcbMMoT7XTAEtn9tO5HiihQl6Xyfglq/E3JGvEjBN2SM5PIzU4hAkYkT2+GHGWTi3OMvF7gLJKHX0tVFhsg1l5JV8PBiA5FavCZaCvWYFMDix6NSWC+J66qMgBs1cvDeqmyx7AlEx1ei36UYfrjX6dL3Rfd3od38DVm75aG3RYwLP9u29biNZx3kION79h1G4Uzvb61bQ+H/lBA/fOPO6X8qiQGWEKK0vBgzGPnlOcFfPbGUb/2383R0CG9oehctKKlnzuGct4sxif92QDDWmc1eAxe9WTC4ks1rJwZNKRno7Vo7tGq/p02i2GmPm29pt3GmAFWXu8uKsBMatEK5sAFn8C/dorrRtYVx6M3xHuDMWNvRsPHwfiHW5Qz0b0rotwGLi9rWEJ7bONP0IthUcaUTHu5F3Vyru0qPdFAJc3AShP4no4aIgmq86vkOYzu8f0h36cRRNQnpbUsfzpIIRz5vS0hUCyjPkdUxNhrOAR415DZhvEJCzTQI7/+A2NMXHGeZmGvYmCyLuhCxtTIyjE5iw8jEKKTiieWxgRhV1NQo/dyM9hZvTqtkmAGDNCBAkCCI9JdvxMlhEmFAaDbtq1S+v5aUAUcQZ8ugsmPNkMye6WV5iyLdGSNftAaq8ZslkxenxnGxAhFAtCtR3B9645g3v11KEhJZpA3A2WOGQzPXv5vvnyjFAsMFOdheSn2PwfP3yE4yNjqUS/KXU4CfjK45sp9lTN4Wc/ipUd76LSmsG81FaNntGKufjlryBVNruSmtTPRaxTkJMHOmRVB6CFAAT9xu9dyc88dif0IYbG2tTi1U1BPM6KNhp5c1VgUeg6i1W+S7U7ChL87wtz2DlIOtPGqNopuEZ9vVMZe4D2d27EQXBn/TL1MNSAVb5dzJ0uotb3JswJZVaXMBTI7XeVU5j52nDNevTMCYao3L5sxyuTe5mBiA4vcPMFdJuAoo5kIItjeRPJ+dXh5iceyYWO2kFYMQVHQm0DZx+tKC81KP3wrsjyzS4O0jQd0AEDtzj/63cXgShmrvqvqu5paM4gb8t5OeMXCiZFhlZ1xtR7qi32zzZc03Bx+niuVAxffKDscKkRKunosXYudjGkg8iB7KDxtpbFyf29PzkkTLE4JdwUQJc8hR6MpWIj+tynrRzRohpA+aP1+iceTD6NLcXQtLlb/7ebokhrQ8E8a/1B0T+2pCfrEQstqZ0EUTZk5/p1/LZdoBEWAII5jbDTxO0Cv1pTCJ8YIceRc8ANJ+NiRReN4p5TtG3MMW5nNu7Ky5n9e6LtfbZ+G9A+U5pJHn14iCzbAalKtgbTaKQ/Wh0d6fGCP1FGAbjq9GnoD9S8S4/iEBpdc2grOoE2NAbaxLP3+eVSp3VKxnxWajp7mLSSjm28u+BGPAvptXQT6zu0QjpWJ/RnGNgloMpzwiBk2Z2gHMd4vO1xxHH0zPBFGxhBVi6+jcSJJ1IsAWcrhfRU9KPQGWnbO3UbDyMwitZnIKBB43OYo5C8kzBDghzjO4AleNJNgI/aT0f5yaL9HahHkubAyRmyzn/qhPW83GlDKHO9M/t0PSv3K77LpX4tkXCRghDs07PZV2Xb6xGIPCcJ6uXXs2uPwlthSjTong8MsZ1vRg9F0TBZv1tXYqQPacPeYGflvBOQvoqYocKybXLGHdtrpvyD28w2Exhy5gkJUjxvEo2gGw15VcrGnhxs7wUbw38FGxXOop/cZzmeeQp/NW8Yf7wJKecaUMA0eadAZp68wKErUrJnZAmdBC+2n4KIX8uQGuCVfoQl/k5JK0MVEl1bgF4PSr+tVo6DCBLAFRv7lM4vMd89frruavJFwxV0LWGT0vBDQ2VbwzINpjTkysmiFC4y9Hd/TqkwnojboFsk1nqVt4RDTEfSme3+L+sHrvEChYaLsffIgf+ajj3zFeK+dZ+xHQojou+bj4THev+QCyjxogeSDITIob+xNcvLPKCVH8uxyjzrFLSSBkGZrrUr76AWF5qqWY4XdDzU9NxnNdH5dLXJGOID75GQShm5em5qiou+TnDpOCcVX582ZcJK6f0mvz/XwvLJafNPp99t/HRxqDcGcbQE3KGw4bYKFx3R5dlLucBjL47QaKiDyW3CWChtmvsClPr0038LXDMNkGTNdWUMAJkfJ8DopjUD/AFISQEpqyvcQZcNKJ3Ij85yVIQjZSpDBgpdQDhTeh0Yxh8Z5VbA0IT3tZ04W8NFeoALC447umlJYqaF/mD+JYxidQIIMc3y8NpUgMelwR4UrTA74TKXdJVc0YDXXTl21QhM91IaTiJ94HuT2r3wfBzsjpR6ZhCmxk7YHFTHwV20vBCait3GgR+jnGIwbAWhNF6MBuhRtRlEja2IJFzhNXudsGZYcA0TGXTtGDB47kl3qhxQGvBFTWnmGtacL3U4/XkXIE5fvSwM2cVV463hDY88oVIQ2e3ucXk2RThNteleAXFg88cw/xGnS+2rEKpunw373+vIjvheBQ+z6FUhUO+/J6/fy9GwWz4PIdaV3uMr7/bV7zHID6cD/LbtJqdVP1u6/V4pz7hrLCNN61u7NA06HOc7n5v7t4/zTCdP27Qd51GeTStZJ6xpSot4PHutvbIauY+n/H1ff7j4WZ7wJRtcS1HsaofQz675aQ1TDUTffyQuGuzjcUUZ4qYZ1CptX3uFMq5WTPlJjNdCgnTRClUDFOk0BDJ0dxJwSQvCg3jjCh0THOhUDHNgkIlL/+lrXPq2t4B6xn5ME122Y52T3O8kdYk2hw5hRQGofSMwNGquWEj5DKDRvCNQ0YrmAaMlhfhYurAKFa0uHmkaA3jONEKxlGiFTJipJBd/cYhInRMAkTLbhke0snuwcHz/N9d9ShEsxc9pq2Zlylte/cymS0kyQv/DBM/AhhvyGp+A2eFZ6Qg1svPPyyUnXyYaZ55IG2adljYPOdA2jjhQNY42wjTBZNcw+LmiYal8+/ELGWeYaRZVjGwbB6H0vzufV2/7vLGtLwmY7F/TsuklLdf288YlvuCvAuCaXU8esxewi9FqTcspWWVSnPmAaxVtg9hrckVZ4A7M4w12zSQtbxhKGtxDmZz82bhrKVNA1qYN4toLZ+O6YJBbeeGtZYzD2xpmpUMrJsHd8rF7uGt31WYxoJQ2T4WtGZeLAixrFgQ7I2xULjNtmcYDFrcNBi0vFkwaGnjYNAKpsGg5U1vcFo+NxaEnHksSNOsZGDdPBZSLgq7BQNtYHmJTxrPvRlkaaGNHnOqi+9uVrBRH4VXl8DSjj/npjVmTjiMnqZ6f3HgipeSaAG9OUVr2J6EaONhYt3udH35uE/f5o/m3ni5DQvvW5BfuKrv01c/ZLsZotJG4VpJzcq4bggFZgrD5tpvzq4C75Ok3YKW+txBr3XPB4564qYpZLWNKWq2snvzrDfIdK1B+H14frmup3eR5wf8Zr0/gb9nN0mWKRRTQ878BCEF2agp6nwaCPuJvyKmVbsJ2GaQN5nKej1euNW4Uu/SxMeTeUv+BaI8E9nr/pG7DLzTf5SJwmBM68Ge5Txl4zm+36N1c1rD0D2bgX8i8Rdu4tZDdjpTxL7uFWqTGkXJLHZaHq5WGlzIbLv8cSobLhhaFjp5pt0g9BWhlt9707ilGuzr39+tnfjCuH6ETm4xcCrRtqahYmDZ8Oac7WT3+7Nc3Zo7RVXIQ5Vp5YfDy5mPAyYzRFo1I/uJfuUOoyAIN61Mj1NW/rA+3wyQpAwBkLxEtUBvps4uegx6AZ2INMNnpsnqcYNhs/PMniR1jZuqkDfU6/e7qPavT2IgpK71l0ejcJ67YVqWESDLMGPwgZYeXdTDmYuDtkZf9bZp6S3NBaTl0SBCpqbOKff++C2DhvOk2u/anfftgdPrdXo2G5dCb/86OrPd61rNcV27WDqzm+2+02tXr2KNYvnMbnf6g55TrX+wi8ckcFO9atYHXXzy3Kk7dvFkRWvBSvXCGVw57Yv+pV18eWb3q+dXzqDRbF84vW4P1gdkrnpTbV6BA/VT9nnRa/Y/DGqXTu3doAGmU7eLrwi/e93tdnp9pz5oujfu4Mbpuc1O2y6+PrOr3e5Vs1bt43rAIC+aLuCTbuHNChbTeyxYr/arKOlRUr3ecVxlw/kdouCjKtRlu3N9cTlw+50eCgZ6eWW2XW0RBXVyftUB7DUbombOP/SdQafRcB1ivEwxap3rNtFP2WnX6bWafRQZpFdMQhs6PVy+1s7oP4fUB53+pWK90SySZzaa72jl6qLXue6ycZfq0AUbxWRyGny5LJu1de70NMoyCtyq/j64agIkdQw0GnkSpa1e9y8H/Q9dB2SUlS6ddl/XtW7e8ulKo35Z68b9qfxqRW52B9V6vac6Z/m1EO+0qs123ALlN8l+suwihWOUvuf8+9pxse667fzedWqqVo9LK1PcQRnssSh0t9e5aZIddF20f7VP/OOkp875/8Ai6CfCXrNFkqKJm+268ztIp8J4tQfo6Kogi+K2nX6r6r4DEWVtXFXdy8F7xIXDdY2mqTlOXRXgjTDfkiF3cpTmuM2LdrV/3XPARLlRrm7HdQbVtuo4q9o6kYXHv0an16r2QZdB33VXdBT6HH0F/aLVqrbRF3WnO0Hha512G3Uj2/vkNEHudzoD6H0AA1XQQy1fOG0njlI0LoBecMufvGa+SEQnb2DL6fWbDepVjmQVSkfUF+tNFy3LIdLtINDBKh+RKdTy+07v3aDZ4CQ3OK+6jmKmOlLHaQ3a19T3ifvyKMk971BcdgmuYos+FdeIIotaddH/mkitki0q9xK0K0dRT2RXcV3AZWnRq1Daq5Yiolo5P6FRa0jc7X7vA1XgtcvGULuU9AYU9ujMivYatGtOfyyEojs3UL3qXAwavc5/HFWoU5S5+66pVQfvnA+uopeYrltMskSBQVMkUUhqNEU74QYkGdV66FO1S8V5qfILGL1zHeg6yxD7VDYDk17JsG12EDLUD8B4zdmzgczFkm8EEtwnUGA0iML96ihZ593LXtwtXql74AC0DppPt/crldjqzb7q34pyGmdgqg60cbfThn3ivC4Bs6tSaNsFbUBJqQn/FK9vTtWtaJC+84LDyR+cJsFs/idWQKmumuc6cgeyNoj9JpVnKO6PVCZ0O9c93OkVAZAuq736+2qPug2o7tIxAmiZNzu9tVsr+MfLKBJKaFHlb3B+3Wg4PRXg7iVwKa7KCa1BqjzUT/uXaF62S23bu1pVT3zyVvzkmTWiNtkXZi8qFj5CHodj4pxIPv2dDr6eTYMhbULjH1bak+VZovh2O3pSR3TGi9fGuApnc/wIfPyy5suDR5XeQk1fJNWLFqSFVmz0no4s/jqlcxTCIcheaC3CCBjxmToZ0UeKHlauJRl6kf+zP5p9foE47jZfNOuO5asZ4WwNjebn2wk0N8mQQTz3Q3hxy/Lf9a+PSB4H0SbZrvuiTCeoXrvn1ufgKYVAbXiq5OiBgc9jtUL8+kQnFadtPY78YJLpsz1hpq4GX+3ARi3Z0Mev7p3j8WHf6nVasKBOcUW/EIJ0EOvjZDxHz7Gw/as6ndjam+oVGjO0sze3Zvdka+Y94D+1rAmV8bhSCPyljfhsfnUI176yjv4FvpLDU54Gbx/OpuPRfM+u2Ps4lSHVEVtx91NfiI3jr9gOK2oeAEZEUyRF0Jd8a45noQpvBu7ByLIse7P9lHhFHTPsyUN3mfYzy6GGdI+e0XRdhZozis89sYbyibHSrTU3sTpc6WiDtP8bar00Ue1zlia6Let8MUtT3+muJXpHSsTBnke+H0iRFw/L5Z85inX+yteazdU1nyh8T0oV9faIeL6UydAJ/jcYMmM0y1ZBaceKPkkfQ/wFZ+z+jHOIH9VHGtz2mYIUQ7qVKzS3ylWC6HuYoGUjvkyVDk1F+2L4lcYYJ1k/bapY7kzqaRYedZwxMRo9JPpXykayhzcTPbzSIWCV+JxjmIpNUD19rtBj+xR8b1xxuYiiwR4m/mIcaIYCqcOFWStrmqBeTsaBW6n6Kn0PSa8RTWBx6mGKM7Z0jiXKkqB1pbd6NELs30JyOoakhjKKdxxBbocBmiJheSpryoSAKL0sUH/8M4lclJ7F409hFAaJVkMZMr+Cwy/1b0ahr3RJKIP4cXGeRL2rS/W2kTkNDzU2mVBHrdT4L6OtUYbmosdHk+vG4K6S0YCzyac5peYKZebK8mSjlrNs08WschFNkG4k0/mqq3e14yaaaw7qk65PgnU79vygoj+pfaSD2WdfRki+y0pH/Cf6S/NFZ73rCGIrK1voA76h3m01rSFPlKssCPzqL/pBBGPq2q25zHBx737hVl26EO4+qZ44Qzokhgwd+pBJ7UZOW1zhWKlKRczYVyqXaEd1o6OzT+bgqWPia4yz4iJzAHvFeST0XJBIUy31XqhSvSOePg/EUscyp4lstlIbRcPFaG6dR4H3GYbiySuLptsqvGvU2KJZruiB08jyNswfpFacZr+iHFy3K/qbU4vnyDTmTXRGG5cEgzxg8nxgoM0OFKGCxx5L1VSlwk4s7lCyNjGS1IsoanzGopozxAwYTfUgj7p8XLua8nL5kH81udVbhDRJq2accPgFGsDnqRp3gawW+rjkMeUjTBEZc6IROh/D5imcXq3DkzeiBXWj8NRNqr40Uz3GSJu6zDx3I5sBlPKSws6xsIpvxDxro1t/jYdSJvoJT9uk2lwwUcpkNxE8lPY9ijjmBhSDAZ7BwYMcz9jgBRTmMVA2NRLBQOHnZmgpFDOeiOHJaescmZZumzz7optQS6IhjmBDzqbrhlS8UorH51JqLrxQ11GbrKNW/Jh8LMl4FUk3LuacSI4ay8aMl4qhOy6yzj2i4RF3RN9afRvNcE+lDdUHFRn11r9ymWDFJ0ej9cF5zRzezcoS78xBmivdNxslGCMJlY5YKN5t0KL371J0Vf5SKV9SFrxUZll0BBopQxrjB42Lpkb17raW/o48UaGlEyHR8uAuIgNJGdSt2u7Iov2OrMkCYPCwANEZkMxiV6hVvmXGnxolTaBy4Z9zhFVNjHpJkCsI9Ry/Prf4ZbQ1n3Cs6Ey0kqWZonCa3eteqR4ZRJQMUSEM63qqOKV1Th3jIMUrr/NqT0N1KAu4x4Kryw3yiSoZHwyot+1GpiEIeErsWfE7G/CQpH3FKqVYassyZpVjFi+SYtpxTOOBLBOV28lVlvWXzMkwfsocafsVkxKmX6vcoA3oelWsN0kW7hfMKB0xQ5gulZgkTVNnvWnXLL2Ww2p4I7CsY5U/Z5SIUW/pVOwremmNztrglp3jrAxtqVd5SuAI6mkJ3mJGdFNIlbPsiCIUIJPti0vOVk4yJfjcpljkZaZIjx+9lYyaMVKjsH9GwV0F4zBVSRza5TJx+7Vus2uJ0z01D4WlxR5W2xMKKFt98uCNwiQZxbm5qrazzKActFm5rilNBvZm9/F0XeOYQF1gx1K6/+tb3XyOI+AX82AlBHSa6yARixYAs7xiNrprXHEPVQsjqN+vbqLkvjpGnrSWR8/7il7SdDwHJTllvvHK/sKMY8nAw8qfQUjN/5J81M4t3kFdp2yQS5LM+ZkZZcXgKhTyx5Is5U8UA9sgeYvxXFY9MV8q5nI391mccZb80xSf72aiYLhZ66GDvpNrUOCV0jyBjG/WKc2h8I6sK0Ye8R4b2ji4pXWuMI/su8YXCaCsEiq6ixUfgWCpPVsjy3X6iltSXBGGKpeCJKIXtOOUEaoexThhhhuILF5GNuIkBhLmZVbWC2CVJEt4AavMLJ3m9GhC8Y6Zp97dh9RTMWIJ/Jh5kmTqBHdMCY5HaLpHsEmw4tQW+ksteq/MwzPFBhiVwvUQT+2hFvgsoSd49elucldPd57c3UKdar5HozacQv7tG43G8GP/n//EqeS3h0OMPshzdb53tDyT/PaQ4g0ZILzbKxfLBwmxEg4Gh0Ua78GOVmFjUuo3aeV4/4wOaY4VX64UP9p6vIdM6alhoF0UtPOvmvrHxxTaP2Jrp2TtL3qSGL79aK9a1NbtnqFZWMeLs9KHB2/tomUfJJEvz0Ef/h3/oGEnnP5m81MeND7iUYjGR/DKo8n4orWYL7wxXWSgOIAzfuwyNyAR/3GGEZUCIh94P+KnjzsQzvpnH0nr/GdZTWmrJ2z1DVn9aNOEA4SpGfCHsbac5vL3excv5HDF9YDLaqudUdAzGiCoCkNKfgAegujivCIGeWAfJknlddLJOukUJAw1U+ZerwuWMlwUSuUMwZP9s3KJoe4N34bBFwsRFRSHhzPeTm+v5Bz/S9bvwalz8q89Lbh/eMdyf07CoPPpE7T29vehPp+o+gpc1adAO0NukBVCDRQiL/DjHW5748z+guIaCHPfoBTDregudFwtB25zgMwKKRWlMrmkv47cfO7nXgmrvD968csiveDmb61s3QdfBw/+yz0kpJiJQfldcPjgH4J8OFT7Gu3tHy7UzQNih746QA2k+eQy+Lq3v7IVIThTxmC+TOS9lZ/9vwtLjQArkarR3UK9ZuhPaFswzoyPk5GP7IV08O0bFZ5+6aSmUhYnFtsuehUA3vNoLhSqRPbf3mK1UMVH6oDE6rQY2PAPB4OpHmnRuujfhgdLAfbvYdnS2fBAve2SRODWCUcUICmmVn1J9MMl+uEaeu/tP/4xBJ6Q0sPUGwZFn7reL/89s8/sX+xioK5e8OULFPSt/Ut0hjR4sOf99hOfzn7237f2TwcJKwc/2T+d2TbC6Fe7GKrKAUyg3h8eYtK08yWMP2F42gvpdvOPt2/DwxEdxdj5tGcPBjalXFsXkCptjnqafLKGH8M/vn2rRpH3dDiaqb97RNv/9m3PntzSG4KU9G9D3EQn4+AwiKJJBKEQL5xAe4R3C7FijYNHTPnSGceHh4f2/pl38NY/CAn5Aemjh+nQPAiYvkr73sEeqoUrBAzZq7hFn9squpZxkr13VuVT+3/lA+5/ebGigJl1IP0vX87kgfq2apxIU6LRAUAnRaAhz7m3i75qNH9Do/lxo/mGjeaj0bKax89oTF81JlrhJwFKPeFQN/PRtX5Fb4OYaBkukBZeb6Fk6VCD2dWW3ZLId+7IZ1eUGahi4sh3f4Z8Ik8CSpr2ah9hU654v9wejtVG/y9OKt7BwT6GFCQb3zN+pzvZvzwxokgjOH+aB1xJ/8fel3cnjiuL/8+n6PB7w7EaQTCQdBpH4XTPm9zXd983hsyRlzaZQOIsE25ewnf/ValsSbZFgEz3nX5z7izE1lKbSqXS4hKZp73CLFWsUijCfJEWwCuHbHhSoIZmuG3ugW3qTVut5p/yx1J1w54fRJrmIAKKH0k5wXjdJmqYm0RThUAinKgMBxOEXElBkut+hOHs61wqUNOfsrYrp0DYGUA+Dr7qxKYHlxLPuh/nV0BcOOlP99V7drX0+nzQZ4y1gR4qidmtw4ODwQFTvERiUOUDlKso/ndiQqvLquEVYqc+61LoOPkIX6S1WvS3KxfxmB69yRTqjMKuGr9E5LEV8+5m57dcAyUhAmguA4MqZo9mPCLXHIuVbjTgD3zBr0XYaun23W8yvhT33YXM+AexbLWWk+brJnSqx5VqFmjjLtItlT6SIw/pAP1aXHdvYd6ReD1+XYjcZ4EU0gIezITUmcF99xJa6ENM4YZarW+6uHfpyclsil0f/wr86d4k2VwC6G94E7uiBFxgcSMJZalNZqIXzI4L0MGsLXykK1LVOdEcMaIE4My4z3inMwuS+W3yCgo2u1QEK/lgh1CvIQmeJLZ+S7+AbveOZ0ichtXxeZ/xWUf0GcELcTE+aCDn38NeiWJ8pXJ6KDpj4rqQgaCEtCdBNOfxrp+ePkDukj1GZRESv1HBK5ATACvsMRORboEZM6gR2jXDWgtxbWotoNYC+Y3FcmLabmHVnFJ2PMmm7DEVcTAXs0Bxt4KMlBGje6C4H+A/KAXMJAIf+IOYsdVe2mpBppeKhM/FAwvg3YuQF8I15ymasshg1O6INA5YPrPMM7SG65RlV+LesRfzhy4eBfJk4XvxHiv0ZAIwpgDegL3wZB2owQOGg0u7/M2a8jNwy0RoFcywIMjnlKj5wBuS5Z1UfFA+nIo0+ko9v8Pae73gWjMRMhTuXl57xnH6XLy9gzd2B7GTl6++Ie/jt+ikGyOPxBhKFp7U1kHIsaV5e+CXQAfs+McRNElYUsAejxgv62TU9nnRufRQOAm5jSx1yUen3Lda9106eGKeJlJZltUKabzmS/4eVGImHlf8A/7c4887/DkVv1NjfReW8++u0GhWHAjQt8mUdJh/I/a/7X5/+1/7wXs9nbAtYCxQLhz0GXpzIOGPPw1SUlMvhXIgrAy0G9R1LAXIJwIzdbPAoxPJ2HoGmBfo+Y/Ivo48KeipwNAgFJxQcERBkLUIHz+O0nHahuZoy5Hkl/B/djNKeTaKVivobY/5gaWR4/sCfF7xRC0Z35YKkKqhKuRomj9c0nASN/f0mBOOw5HSXWgATpvpDjSP5zEQBYuF4H1rZFiNUxOOUiQDiL2ufpaREiE4ytzza76ABgoetKcWYN4ySEX69CTRQlk0CiEewP4W8NQ7ewzFXjHmYpPQE8w4SUQ4Rc3JgydipzkdhcpaXgvoYGbEvs5Hh3vxHgbr6ylaoQcY9D5yDUyhXECemHfzNOBTDxcalV0uT1Mtv8Q+rUsTOVQ4EXlxSrSh6i7/AA6rth7Wyzt4IWyZ92Dq3XczBv9351cyhpdLfglqvNdj/AZK8ccV46rObPIwpTq2BZEw01+c0+mMZhughiIaR7k1Ug29YCOaZAQS7TuY9IJVdNjLr1hhjD9Cp45CoYotwQknW8ny0RDAUUrEVohWLGs6xGfKlDbJDlkek14MnCNG/PGgC2bee9UDux/VqLdXDNKgikKCuxEn2S1Q4tETv1dixXM6VLxwe4Mwrzf2pAg5kMYjgT4oG0kRr0Kcv1smbhWUdLVR6Ljq7ylPxQxNybUXc8UVG93qCxM8C4wpsOJDbdGXq2CZm0vXV0ZL7H5A73d55xGzQNY+2SrYgRaIFD+TKQvMAGNrG754ODKJiaqM6ysSHVLx+P0ffoDTPKO93mrFPBZIr4ne23ekx7f7cr6AM435nya35cMsx9TyS0NPWm8RvqFr243lnRTNZqBewMWIofuuUQJTXuruEBdzv/fwzVZy4yFLlbS/nicoOPYo1cLbX+BAy5HKxu4Ie/6aDudkI+8cqBDoIkS412HP4zLR6AWZ8Ubb7YwIhejsOOfyJDpUq1VBsNQLLqg1jokt9hQH90gg5lyqmyNLOSg1SzhUlBuBUgmS8HegXQD8Bwr1g0jo+jjRU+MyFoYPCOf5HxywS80JDLjGl+LkYauVP3Qvk3+B2kNfi/WjqObxGJc/PyzUoeO7RLgmS3aBsf0yMoC1MmwCwCoI7Rdu4Lm6nl1U9cIGIn2sALQrWv1e8h7UWCe7JThqVzD7clFPeTBVvS3O3OfTaBxg1yBH7ZSgfreop4EPwKQeSuvwvCatltqgmhzmgUBxXlrGsdocwntD8WQZjHFUt8ltnGGXVoQAoWbJARuyw1yZPagCB7vQr5OpJBXj6J/S/IRpN1T0uJoVfyOh89lCljhHZiscAFfr5As7HQr278JbtQFS+Ey4sA4O3hLwRDCC80zEV5GaS+RrxnlgWa8Zn983GVcyb+CafA2kV52gGx4Cw0OwngfkontF0LyMP0q9TY4mmAUIdCbKDe5uf1oO8A+ODXudcOyV2J1BEXRhSUlixstKkiFcvVHvNWUTBRThhMrqJGXsNExoyytK63JPT/Ue1ZyQ4XulSkxRLapuv16io/EKe13FtDt6qlMFrCqtlm2B7ZxV4Bg4HBjQQDdq4043VA8wfyP/CZBDGgwAZF8ROA4HOd1R/kr8PZNoSeO7qwx2V2Au8nXVhJeIfNbMt4UM8Aun42dLQc/Uw0k+MfQwgjLfMISw1bMcFB2hPmE02KhIRw9eGyCe336zyO4eHCB7J0IBIYDeBtKK0drV3PZofuu5Vh0lwwHhWfhwfGGO18ZUkHC01cIN01pL1fKBpZwwYGHLp01lyXh4cnIifA7pkCQxKdClRUTP6zUHRwiLze2EVA42pbEB7o3oigbeESvlbG6cuAuL8iC9v9x9PMJW2QwZVnL9wxe2+snJUQuOAB2wtjO7hVnbkdAfvpgE/7DlJEFT+EkIHPRfTGB/SCT8pPT7h79+ad9+lrzG0U6t/HmIONos4O3b+Scksb1eg7bnwLUKiPPL+OpV2BFHHKzmGjShwhIsZ3CUwQN7ygIn89EmW49F6QbxOjm9E0lmun98HHb8GgqooQpuZpXSNreVxKMj9LhJgkXJ5wZoe2tSD9Lt9mbIVUtbzGOeh8yOj4/ONiAHKZoX0debcVuR1B++gKSGf7iRqG0o75coH+xG+aD/Asr7w20I38xefxv2BiX2hruxhxZ7Zwa3apUfpS1AVOOzULWNxP3DH6UvQPtPSPpmbUH1/BEaI+rbIj1l9oUXApWsvdGIcQkjhB4AzEZbuBm/MfiNOhkKBxGJfr1E6y87/SA8EWoVpCMkSGgHdGTQ6wwHEhex1emGBWyyliZAHCcLVnvT+oRmnxtBSGa9CMlGaid7HMIwOvJCgW86f6wBjtaCzsFFeOrcY1uzGdo8umf41iroeD360XZMbyBH2gq27cDY2AgWl1qqXoIGKhzTcJtk9xkY1q5Vsyq1/V0mX3N5e7eTP2DP4v1NzEdX2UPdJsX5+hsVN2BZQCvZRvu2NRARnjmJSoz0jjUUe7lDbNJi2qLYQYSk95ZZWL/xsQPQuxsAV11yLrq+/Bfpien8ndKywHr14JK9lCA8SmuoMRskyCQPrTYLjzV+s2miXXWnZuE69uFJRK5zs9dkAfyNzBE+/5CttlMFXceh1HE3TvTqgaIjtPxm/ASCoFV6q9ohfFxZcgvVHzqn/fTU6FFWCvuwf4JVERHqx6cnjI0VEOf1rSyeCfdeVgAbR9nY0tponB8Vl3mJkf2uVyc5LUkSZdxen8y1e6mi1DbVHyrVxFPJ47BrJWl7WgIwssgpIccXm68eKyHrcdxbw+VSs3SKz5VpDOM1qrDfGjglEk2T7bYISTDs5UcN5eULj401MGQEdgl2VO1urD+sKcEAP4FZVAah6eigeyXt4pKRPlU2O3XraF3QCbZOOJuWxy5gmjrovLQX4UUsWKMEcY61ZjixxFarsVjBFpnnW8gQuyLP0oh2m0s3uq0XZx1YQ3tdtodnQ8F6RcxBCSBv7MDsbV0H1m1ku9p3qz6eich670RWyaDGaVZsO21UJC1yFsyMHuh2EFmpFZy79oxKONhivEZZVGJqI4GM51TZlHKbQBugygiqO/V227k37e2t+UZpb965a0+oWy1nGyP1z8mk2kM5IeJS98mdpeYAaiSkJbhJbCWZ1cdhsNj6fEIomuH5JYQtarJADaHF67rjH4+YDh/hNO0vaWpcKsMYJedzvdew32eMb2kOHboRd4muLqDOHQRP8rouKbJDeZscDpUKrCdx8NpB5PDTEEkEPEtn8wfwb5QQVXNU9kzsdiGW6EUI1UY3cvms/DVDn4QbwFawEhkpIwP+4fNk9F+7CPEPd6bkDva7uwohyclQYh+s0x+WqjJ4ZzycrwMVCFbOUvoDrhEd6NVjw3YLvVXXKJDF5No93L18Q03yXNjan9puE63eHuXBmqpYgzWX5SGj7+Zkm92zen/bhBs3KOijj3rJI7ug3qsoEzuwidX+3uatNCe1wzINVOUZSQ13kJRZVH15O/G93o9pqk0EDLZtgu0btUbxYAeK9bLpyxusgTJ7eaNt9Ej3j5je3nLLTjvEm7a5NCk77Gm5Cdp+p0tj3H0zKtU86kVcDfAle1C6jIG4ZnNpAxYwSY3d0OA6upuxzXtFRMjuu0S6zBp2h1tiIbuyE7/YI14o2W1QHTn3MBx0tH2gBIX/Qum6iGm4BawZ313GO25vaBlstbexHq2zy798U4Pw/Iy3M/TA/9PvZBAhu+5hpHoVxQ1t+60Lex2Eu8eYnfcabPL0Up2v6duwu6Dh4WTArqGguaG49w5wImptH+huv3m6ozUorM2+7cl5EKrZtly7mgYCtURg1Ndeu19tIXJSYpu17ddwLVz2au42Le3evTBQNm5jEFptGHSSPY/bTMhLdy10U5V3LhoORd1148JFpC7tMMLrVM7oWlmAgB9jNdESQGV6L/X03qw2l2biNP9FnvRKjKsoZNhF9aqIuzTllSsQeaXieh5+RAsCdlH/0FkWM0zhTdN1PQ+39x4rxs3entA0NrxiXYS51lNYYJkd+ww4nWdXa8+15uXlQBHNLY79ajwRQv3X1U19TZlHBmqM+p3hzwx/UtHjc9EDPFHQ6US83U5ZJkp7cCk7C8vv3O8dizngj9tiRnAABuMz9xG7jAHYeUFm3J4Boagsf75aM/wjwEj09BcUxD5wHboR6MgS+OU+h67FaK0+iMznWSC9PttUX++LRrzPEFDJi6Hh/M/KcjQcw2ll+1rqMENY9xy9Qc1xvfJPc4iW4iUnYnLY5x0//+9wwA/6/AB+h/zggB8c8oM3/OCIH7zlhz1+6Fslh+a5x33e5wMOdfghf8OP+FvuQ6LP/T73B9wfcv8AZMr9N9w/4v5b3u/xPtTp8/6A94e8f2CA6f/6h7z/hvePeP8tH/T4wOcDQDLggyGH+f3gkA/e8MERH7zlwx4f+nzY50OgYciHB3x4yIdv+PCID9/ygx4/8KdB0UcPh890Ok59hM94qvrG3GgRy0Sj1Dnm6GHPRD0tdaRh6JZ377/+729Of/E/H375q1//5re/+/0f/vinP//lr3/7+z/+KcMInMJ0dv79xXxxeZVd30Bswvvlvx7+t+f3B8ODwzdHb9v7olkE5chAOz41TC9r4XGs4dPs5GTI+Pntb+VvvRkbIxYhwG3+xOigax8Avv5TenJyqJghlCkbNwHdJ0SVtg4HjPHQfFV+EpIFi8wRm5C1m9/efHuJ5kcnh4wZ29VQVjZOtBLZhzCkDmGyPzl71/mn7Pxvr/P22/a3+9+K6X7Km3lcD2PkeEx6BlqWWloWiWRStsGgPp3hYMrjtTnZ2pzZupx19jTCFomVBhwOYdTLQFBrinoxteDwidRRlZ89U54U7PBpxsrG1Ro8Xebxh8vkNpJZ4lExCD6F4WQgEJeahDLdKGsBUG6pHkEsqpNbIh5hQB89rjiMT/iHvBR4WgUNh0/kwrT5W+LAsc9RGbB1OLgghk+1a9vwVpgO8z1yhNHBerwSJafdnrF4krXb07JFmhnxj7NONIpXgcOTE/aoVy7wErrdm3QsINID4gNZiMqDfyZ8Hk9myERtsCcR2J9iZzjW6+LVsT2jsd1if0bsu11T0dhtpLDmCOhJTeZABZ8VD2nx8J+x4AsfCxqbB4OopjMv6RRrt4VZsM2QojuPNgSkjvxe9PhCRMG9NbDUBol7e5Bw56Rrc+Zrc+LJQnU+bE5UHxoXUhQy5RStPcTW7lP23MpO82Fizqx+usB+ii0hldyAPbClNOsTjzgtQ4utpn/KYNtzx+TS2S61WVvQIBsUBhk0VbaF3Z0VdrfiKsKUh2Vkg8qeYMXwZCVC6wrkPqW4cZDRktF72LsrZv+1c5ypbqrrI15cyyIVkVseqUMeOG/sO6xxaTb/wtG2SqssaM1dho/zyiG8BsVSEcbJ82RRzjPTBzQE3Zt7Ca0Zqdl/n1ejPw/6KuMQF/3s+M+S62CFQ0u7aZKIeFxqKinPTUNgBVBUS9z4MLI5yCd6yxpkFT+nHGzsb0lYxNbH+wDlvTyfY2TnLpiaHEM0JsuEQds/3CULoASGA2GR9ss//e63XWL4/OODF7E82FhyR+U5pKwNjCEhFppabSEJE3WhIPokhWTt5qEoGEjzPBZ5KjzCOwaU1Sn4wsNgxctxwnZmvUGDPm2yEM/IADbM+R2Dp0I2RDSCj4gE6mVZTn9UoT/IkP5I0x9kRH9k0R8QlVmwoghFFFQmynEF+TlaCkWkJK+8Hs/SgIjZUcf5vKIIPC6IfI8JuqEz5XthbJ8M43LGwVKVz9iKzxxaalXG5lP6H2EwWDmWUH+EGVbQTP7BbY8KOLlQKQCVggNk5nH1YoAXRGLPGvfyApDo5/ELUSKxIKxEecxWK35f0QTKUsVW/KJMU0MThfmBc+eGBD9pLpOwyZvQTW9nzSkL8sEYyOGpqs0pTOocCY1UKMfJfKoiEQGneT0UOh6Ju7qjZ/aoVYuCrpYUlq7jmavQ6bfrNBd7B5lEXBJGwc6EhW2FyJH0GmrEJxTwvFfwGihkr5cHR0owfGSC4GZMx4/cm+UUp0W7o20vDEFNDTkwfOHNuYnumDEsn64pr8eBC29mVYqxkjZQjnqI5UO1Au2KYPlb0SjXwPL3VvkIy1M3+8vN3LGEuX/mze7ustsxG4Gvtu9Nzkats2/3p6/ZaOx9G79mXvc1+6/9NAjV9tcHjNkoeioKL0YW9yRZF1E0Pdn0x4/4K/ltNEsWyQjj4fIZxPSBp/6UYyQ2eBrAEziU8DScrpjsYh28BgbaDsty2cWC4yMysfgMq9pILMV8JdhjU6+N3nebSo6Gw0G12q1dD/u8syYbuXBgjjjqjdyAKBtQMk5AdW67OdrfB9AalbYqNNKdKsGR4qiIZn+VN+fYIRzLzY6UxuPKjmnbalYPf8tagONYoIkzwTdFk/EM1tXjsZdRlh18M2Y8rqbiV5VslJfmhd1SZi0E9yycZFMxmeYp1Zg5Oi44eHJYkkL86GUTEwMePY01+8+FnTkF2Z+KZ2NW0d8uGgeUXC0BOri8iWbj0HNnWGwj0xi+UIpTjLwXetIMEbqTnYL5wZ7naCvJI9rTkEb44yYD0WeOqKcZ41EpKUOpB4DXjr7b6OkWBiVXaqliX0PF2fnHOw8aQajkaPy4Gjm0zIt09E/si+SljkJ+jaXyt4i6qaTEUaamLAt5kfwxgZRbF68VaXgSuXmk3t41iAgiJFnoOND4eyy49XEEhKgBY8hZXrBpwdCD9jqlikVOxsjTjwAM9sycCkZDdmxH144N4l+DqbSR62sTIt0ElvrE43gS628Sp6NwtdI+UCFrvNiq7v9LQXEQdYB5ycZWnOeRDMKihDrS66kvwfKpeLNphZHv6YikY9DKdoj3G2BqpFP/X7MdYaoaFqmNXG6689ODwtNiZnsP45kVKIP4OAtIRDMRTmKYfOGoEuPgruJuRyqEniqQipny1LDAHsRrhcl6gdK0DlZSWbmlwHeCRAYTnlYrGq/djLjpVF5EAF0txj77LKc5O2nBjjcTqaI7j7E9Safa0s3GcqQamnzGGkFVuTacgtVmn8dGsNFxnFOSASVRLthIiJjlDiqGfyTpokC9jIh8enIIFUpq840vechtiS8kz/pnZ9LIMiTQ6C5Ub1wIi29JwCXOH3oIjq6HdbktX3X3U+WI0TrsZEo3OuCgZ7kmjO7z9eKSKY255cx0+ozD6Ket6EwHnYuFVQwX18C0giOD6hFJmNc0b5sjerhqjrJj7XQVPSaHpNNxcftV25+yUZ7TPB6fgBEnKRKkr5o68yudFdPlaqYadMVG1G5i7VWeWOLPzKFmuTFoMiPO36pvfdbOrGg1M/+CT4a32Djj/igMQmGu9xg3OTAfxCYpHje7zVEM4u+dyHGz0wRbQd9nWWvbBmhbwvoL7jyfnv8rib2M0WVFuNM/OJ4ZEdLDV4NRT5vEtpdChl4ATVk7VtZKp6XMrEaCD/s4WDFvLL6NGS5E/pffbMdg2rJx2NbUyM7MpiU/vNZno5Lg8PNFZ7w94ffeDN4M/aP+8FjIcVnQntw32bzPQUwcyW2++sX5++bI7w2PDt4cuutRnlWp0Xz1G6q1FhUg6SH0X2G5aj5lqa2Spj4qgFcxffi9g7OOv1e+IqDJxqU690MoPKoWG9WKHWIxumGpUr+E1XJlu/ndHgoyKYHzHo+w+jU+4xXPt92OCtU2ioieq99TKEjfM1YCH+rwuJlxSK1IRVU+Dp2nXw0/KBM8SnMHFNole6XAlu12aMyf7co3+q+9o05RsB0yntX5xg21oxPaSQO+cJCje2zwKa9KtM2FfbBFlWRB/2SuCck0+yAjelEl53mw7Kz0SSoF6Y+E7qKZS1J/vnLq2KuhJYKxVZZ0yz90Zjt1imqVcGynQpOpS2lCsqylVeDIWgkl04qaWqbgsEqBf7gdCfiDw1n9/pBG3wyj89Jep2q8NvzgwBI0e+gfzNUcAJ5xsyJgczEvLKOvND4vRbqQiGgSGeeT3xvnAea291AwgeXSuO2PPfUg7rn620m6t3hN40mEszhMwAdKU6txBihjo4hk+aiyR/ccyo/uV2xFMka9Mq6mcpAQGMfZDUKWGmwRPNzLk3ipQNtHI8mxU+kqYfeHS5oMYdYbzMIqmIGoMbXepiNqU5jcnIPxhDiRN7XPn+1Q4Tzh93TqFsVFcl0I61IfXISOfwCyyzC0+x2ueI/taxUB1JFC2dAHTX2+YMFf/vhrAHR/dZHQtBre7X0a2krI67JV5t1b8Y95rKMuzyADfQRFeccH2lfMvjGkvH+MWhnjT66WaF8K5xa3Lf4Gt8cnN0hHulUk5ow9xkRHRp8RK1c/Zx2bh3BngC1T2DKmNAtMJ5ylVVflBQWrbIWTGYKWshXWs6mM0PDZsaRnFp8zJ5+9IFaVY0YZ5DjHuL0YwR8slG8YqZ0iJH3P6kshrpR6GSjfCfaPVgsfj5MuxtlIMDVTqQmmZpAKs4FUd4HCwXEoS8Noi1YJs0HDUH1WrvjckpYWuFSL41LI4vKkplKSJi5Fwy6GzC8fZE5VWr8Dcinvz1MJi664xCZv4qW8waCqcFE03j72gOCtIr1j/dJ1lC6QF8r/bGH+PIlGAqSeVdj+tvXx+tmwWrtfq02GGfsnDcqmf2IXQRjepOmVLiK4TeYfN3YY7Rg1THhsa9SQ7WFgMvAMboBgbZ1HmzuSPIEV1xX2c+teOd5kHmtO+SOyOmrignl+x/3+9/Je4r3T2V1zpSwF6D2eioQOZ8ext2eHzDn5pwsZWi31V1/DkXcXnE3LarQaL+JUuLiUYP3iD12kCSqu/qKK85CeqUUuy7skOHErKDDpUUHMJV405jluX5LwvNKXN4W0fIL9KOrmJAn9VPQvnaDuKWC6a+NbUM60N4cWYFsWx4lxQxYsmSymuEzXKMFYrfiNkLb0QuTvUtQjE4TjyExoQv2IVOoOXywG8Bt7V5qCpOu1W6pav9YKDcuNXkt6CYAVXuDx/e0+ctbk1jU6+vIcu+dcvAgF/Os9d/eH7Ebn2QwmxsWDasripSvn6dUNOLyw5+JIK5clG/A1gdMISwcZ6s0U44qiho0e9LsCPM7oIaY7ZMceo9th4vIGG14Un9F9/a80VfjRQFg636+hq0u1iUDv0VSI+UXyMIp4nEQ3D9ndaM9fsRpf/51En5izn4CxXomxmyRFA3yj6arwFooQ7OZfMlit+lrCjjVz6cUknIqIgGo+HfBc0IgTWiFzQB433Ojy6Q+5Ly4ROD4M1xRJ8xyorAUeXSkXUmmUGyJUtQKiC5s0KvId2LTzW9xIpne4WgRmjoLyzi/xGQnWQdiBhLw9xgZm0UImJblUKXm1PN/UDSok4zmH8/xONIY2WtsGmhJUm0J1XRLh48q+GTZkyuML4QegFHhLVLj41rzSFTWVWXpJMmH+8PTkLtvQQiDSvajCEHlttdVW8PosQkyQDsgP9grpk43UGLhVg1tEcptFvP3Pfg+YzXHxKaJXoZLKlqjcw4+5vvn6PToQmgR1hgQ8ya/ff11Ph51Fk5DJWDgH6rKq8pDv+WzFTcUfLneo2mP5zSYhbhuEa1QAGvE+uYF53tLWdP1F21dluMrGlQBQW2m+wM7vlRI8u2HshfKy7vXonTTCmBQnKi0Jak47xbObPoR9AJMvP4KFPFXosJ4rvVJ7vOejpd3RZfyPy0iG3DiN9B40qiW29BwrcH6eriPx5nQeebNLnuXn9yLNW4Ta4JAoTcgd5j4kB4iy9IZuiI7fUG/OGjfLDcRMDmkdJLY/rzCL2jGu+K5qqPD0hpiEJioE49u9TK3zoVoCsfKqJ9IsLorSW9tvDftvh28P3/TfHphqiVkbnsh9XeLwqcelVWG6cjrsdH5UJykLdVt5VeWW3SQKq7sPOk4qnW1UIxS9V1BVfSKpnzFm6qEeFcFqlEvuD3We8tMEyd6UZ3k+GFEq0KiVyIl3OTaamWoZ7Ua59uxNWL7jMrVg570IF25MCT0AkemhdXNDnA42qTlUF6VbumLLsyDKK9XgZQmwtYhIowmuVYeQOsQUJ1+gCOLEJYLG55JBJmPnFSSGPSEqOjsuv47Krx1TM5DlfaEIhKs3tOqkaGfMEEOhK4xLZbydKpUcX2BsjTq0qRGdlMmCTzpMZakjOngViqIw2mQE0B39txsBu/2dJXLinzUC+kgu7s7ew7v2PTPYRmDOiAMf/mqi/3Wb2r+/F6ZicT0705eGNs/vm+pwhy4deQolN7VEkaerB6r6VlRobr8Ic2aYgrezn8S4BY2qZHW2ltWXb/c+oXR0czhkZYvKxqY1UYvsyzCTmhS3mWz8FHbyY+hcOLHt5GnFWQrX2MnwpXaSlo82WEbd3PIG14G2KvQ7Wo9xetTlkhQYoxDJJuu7ZyzjTtZW288K/42qDd1I3QZrSbMJSzXzTexYd/WdLZqGUaes1YpPKk2st1lpv7fUybOKNcnK1sTu6ZTNa0bBVGX2EVKv0jfj2jJN7xi/Ak1FpWDqVBwd3RaZcTNiV9qWGxcmzZ8TIgsayjCkjAJudyr004irqdwobicSkI2raV3U6mNA9QqkJijlvUhvO5uTRs9CSzsOeIw7ukLKQYO3BRs7wbp7WL2LxcmX0cUan7KPPdejqhr75fex3XuUk8n/O12s8X++j11t9jt+96X5HS93Ka4+g0vR2OBTbO9SXP0ol8KkfBm+hWXZnh+HGXd3WrvMl2L4dCU3b43Pb83K8P/jLGhD5nQW1nQqdC7ubjZOuP78x+0MX+OLt3zI7uefTL3U8GniNhq+zGH4ss9k77K19g7D3CbHjVJnTbY1eIntxi1q1ixzWLMFWLNF1ZotNlszorNCpqvS1oQTLW5bxj6pLVq8xBYttrZFi11sUea2RQ2nPsdljWNawR3Gyan4UD6NFpuM0y++/s3n9srcdugzGqo88Y9i8ObN8OjN4LDXW5E0nj1kZNuucEvbRct4zn1iy5SRRCmMm+ipSrOgMRNNGcfniF7OMWKzQjx2AyuXZKPnpHEn0xxXUz8W9y/qhJHfPzLlaQABCejjM9A/Ta6bJshhRrsZ1+Vz27onRIWg/aOKXN/9cDeDTfv8PPMrKPgqvkpuVdSRBYYBUUkEzowVM3k7e1Z1NEem/J9+COFsoaOCy9hPelz9O+VVAEX5Iuzj+3PoAIXG58Y1xSPiIKj/gVp/xu/3vSoU3qhDYUEootKo5PfV3VRU+fuemET2JHn9i5/7uWi7dWXNEphXC42BTqQjjXVyi0J8WxKi8qmDHZEgmcWhnMQ7eh0yxlYOrwAKG6+gajDdpmHm1OVZUVpi78o7D2KeWSHPvUjM1p0XY63WrPqxXWWgxbPhpkVuSw0yqzXI7RaiuuWTmS307V6mzBjDL99Xeiw7S+t9pZqXcVZaU3KZ4nYF2erf4E81PodDpWW6eHrCo3BjwJBV6OUu/hPuwqo3lyqsJYyNNktxk8to0S1c2DWjTkE6XcbVZ/MY3S4q/5GOZOMzeZJOR3IXe1JuoZpNdViOONnecmTr9q6zl681OYisOgmTnmt728r3N+T3N+QPXPkbJN7QItc51la6xK/Sy91HPmPs5PTMBkNJTuez2gRjR3+uWg5Xny+XqKuFddjY+f0JNHRkPM1Ib5C3WuFa82NKWV6e2w+mFb7akG77FHWmGAt26SspC1IxmToVVrsyKSuf/K3M9hesYKTatreTxfQshR/DqxGMTtHeiOdwtG0J6xoh+eq2a64+7NnzTZyjenMuIK7JOZzCXXvNgXGYYxFqn4zjaiTMM04ytQwpJ9n+oP/Um7b84+OB38m+UkFNMWDLmYjhl0cTXz36+NhXj318HKjHQbHGm8FnlDGPNcVRjWIsspZYCZBaPlA6wIBqQacTM/x6REj4gftQ/CcPnjo+lGFIZxAqCwI/mKkCtIaK5Hya6bCKd+j1/6YuNENFKBpGZhGIadA/iUwQjDgHvphE04mcRPtHTwr98LX3phN9dcQg3vE0CLXkglBLLgi15IJQS05Hx6gRS3peM+AEOzKwIwM7MrCxbeyPGMqse6FDOLXp0dqGOtoPeSyGryOQkH8If7J8/hax/JIDFFlKIkssjzqZpPsxSEz4eGsk/HjQnp30q5i9DoNskk7LEzXo2eW5mlZ4L1EXxOmPvjMHOw4gzjNJSAtvxCJCNbJYCTKlfLrXaIuRihiL4j5EwLTiZ5P+63TKFReTKQgCb/BRdVLRB5HEge00+0ECtdttHe4A6/Fr+JNMURLtBKAssK2v4YcvJj4++fjUx6c+Pg3gCX6mq/S16K8yKGjJmjDHbV83R4JIzuKCRonQE4QuEXqC0CVCTxC6ROgJQg+0jH++X6I0PuunKL/BY/P6exQ7MXAW3f3DFF31Z/x1CjH4WT9Raez6jQqGBVn/GSzkO+8nRGEkt127XFwKIhJDcfVh+6WY0I1LQ36EtyoNMIg+h6Eb70s6GE61msjcbPUPVCRyGt5DdX+dxC9rQ7isk8NTG9LhDf9Ayln/aBB8sKoG9/bLaf4yZMGDeUSUiGGYwz9F+Bb2h/K7HVKV4vPwlCd8wa8VnVAkh/MIRvAsQ6rgp48/A/wZBguxgEuuzhZ4l9XZ27fBBzwYuwjuoRuIKLgWEh5wAQmSg1SFawoSFSIwuD4T1wBreLYAsIf4C2CgjDc7S88SprK86KyRMMzHR0zGUtHZ7CzRpC8Vu0sgcwnsLqdIwDV/gCekIeXXhObp+gQI5alI1VuKbwEFfItEJvwRLlWdyQn+C+CnUzDFZwLfsumUreyPeKqukfHdYg6QeKrXJPlczF57afuw7TO+EClYi7kyE7GIJguMSaRWIL5Kx14sPkzik+I+salin1KOKAGEgAn5y1Ge2R9Ozy6BRCzPs3abjQ5xL3lIYJWbqgtqmIRFAy1hOdJIGI9QgkhoOj2L0fZYfGfiAYenFP74ODg+4MB0D38GU74UkZHJ3EgD7CVY/nlnpuSwwKvrLjpixsxKzEIIzGdLxNyIJhdTDo9tH8m4aA/orU9vfXobqDcoYjb0KfxwLzg9RqN8ymJV4pTKe4NW55RNYbzVgsFZQ0kuOHYbseD7Pb7TcxCJpQ5oY/RiWY02aC4S6fh5x5rzRRCPvVlJdgnJbk6yW4h7NoISp1TilEqcUolTKvGBhtFrvuQX/JK/5++gpynnU8JPsITneDwY+fgOcrmA9z4+oweq8vzRAN8HxkbdiAGXUviBlMc485CSXYrZ5JoEBPJZaumg63GhRXM2n4T0ICft9s2Uv4dqS13tolQttKtdl6q9g2oXebVGiiWtetd2vWWpXgj1Qo3uulRtaVe7KFW7Fpegpu85bIcE6LCLRcEr2SSbX7JPFs/KVJXZBiAkckFVDaCLGqCwAui6Agj0m6oZIGENyHUFyLIChBpZUFUD6LoGaFkGVJaTUe+LekyB5rtv/tRptr1QfXv49KQ+J2Ll+A88DmKhN8jGa+JteBEPu7hTNGo4I43o/DzsZkxbkUH+17Fcku9l4ZUFUOQyQqeK1j2se0DVSaWIY3QEy3csQhik8Hh+L8JgRq5IDLBXZsKv/AShflU99UT0fENLGqWLRbVxkOLCewReRpITolJQEo6iHMVAjyRYXmjH4iYkJBrCgsBJSMIZga2KDMVSwxeuWIkBaJcXMtDbgQHCYjHQeAEHvRoH2nWrCGT+9BR7xfYzTg2DKL+nBB4QiIr5FnqPZhUPvDrSxtFjckkInSQuvaj73ZLLIipDnGxZuMdWFOftO4ztIfb8GhOWW2zCf9T24JEdglHMnFV/4WrUrk8vcD0Gw0/qofnpqT8svQ761itj7v36iNGYW/+2O2K7YniMRSPSw5EbH+OOT7+jyqffKI4aNQg+CnQwvFTE9io7UZrmJKY5bSlDatBRFP0ccaoxYhxle6vMjfbpCUN0muiPh6W3I+vNfXQCmrB8diIWKiLtRH2RxNX5YK4Oy3F1KsVcflCOMFKs0i5FgqbUrHHuxZRV6F9vVSjgdzAhl5fxr5IHVzfSXZq8YV2JYnTQdvMyiDw1ROCn5rz8nTp+LsuKfBw2eKNSIAojU+C0DiD6aAD8zpF/ZeUrAVXr393ofBRdJR8XrIrYd2AlZ2LIP/B7fslP+cN/gn7suNIirRUWfDG18E00dlxSkT/XpRS5fgklX2bJH82Ky78zAIjsZhfnQv2Sx0PP3avz+FZI+w9lT5p+9/+zd2bNietKHH/Px5hnD4U3tlt6MMYz1xUCXEzufhYHK4nqEJuSzaxf/qhlGdmOmmRezr4NtLr/v5bVkhBmCpzBxBsObNv1venAhn/ffEfe8DLVp5c3fxNrv9NCzEKE6AHxKfPhr5Fsk6ANTgf9dhTvYXgf8OVjahv5Rgcxc5AEY0gAerGRBdFGhmkTnEYRQpvI0Xi4t6F38EiMUZh8CvJjcqR7ds9oBhBtEbMCq/RQXViSBG83SSLjtCmcV4gMA9qqFI4/MhYDcREEhqVxVBp34iFpjC6CwLA0rkrj2w6WxuQiZphK4w5sT/zh1LMqoyW8uApY/Yx0I3oSZ9RM9WZmk54bBM7AHkF6WSpwe8LXqowuBEFiYcEjnNbQ65FGOA7endbQ6pFEMK6hQMLw1a6iNhFiijBWdlwPBnz/M2jhkRijELkaA/aQ02yhIMrCUA6GkuNA8w/0UBw1TTdgQBcDerpvQZ5FfbLZQ8wkmAUmjy+Hjz3QstJkbSM8tBpyUqt3b5qnGzDgyAwU/0vgU8oOQZZxWpbAa9vErEJwstynvKz4aV+dOM1W6RMFZL+NmNUIVpZenNcqmle7z0dJ1KYZ5mIwWXb19c0LWQnAdRqIWYcAocZXciKJw9qO1RfcMolZhNBG9bWexNXxREBSGDMg9trMWLTQY4l9TA9wGKWbtCw/FjyT3H4jMesR8KRf8tZEMjQTMwObnrJY9JOodMmKXP2SGaD7bQSRYxN1COB7zmieHT43s7RtE0SGAW05C+TPW17Tz7EcWm0RRIPR1KvQJ384DSmv2D3bp5XsY6+JIHIEbQuPMGu6eEc+Tx8AWj8jaPxLOAdwx5/25SR55MUpo9n1mW1oJhdIFxOpnUBcvoKrp+SS4iLQk0B+UDx4dhHnXcapvYDuOW26qIyLVP8ytT7LpPc0rDe9UqF7TXgCbF/w4bClSudv5lHiAFZbBJFgMKcFu168kzRtIji85GqeHu8onByTvwdBntnOZM6qbegB2+whKAxP5DxL5A2NebSDoCg4DSBO91ke961YFDvOjge6UDeQoJsvxAAGy4Bfpfcsu/OK7M43ZPcuZPfRYjo6MerGc/oXco5Uzo/98umUiBfPiCwnV77IXsEblbfRInKbBLrBzAQdcvpX8zKlpRiKhqdNoGEynHhGTvUYaBNHXmB6DdPxR5qpTYzpNUxfmOqU9/RU5M0LsrZIE6QF6m4G5Sw9NAJtkXOQFuizFf+sUyhTS0ZaIktav6qz6qzRthaN5apXxkT2rEoruuYbXnxg+Z42YkMzaWQ6sbrjUPCHNGdf0orpQem3Ea1oye2+PD3c5qwyQbSHaHW/1rY7ds8nh7wMKT8fxbVFEEnTL2da69NT9VhwMYLycERzOM1Q3g5z1AElqCrO7k4VLVteNVX0KWhTHNiedWM8RbiFc/2WloJT3+TWMWpHAvHnm/R4hJut2qtedk93Fae0DItcIFKWV60QteJFDNwnDw5qeLVfTgRWlifKDd4peJV4wbj4s+DmK1bT4S4t2V73pBtRV0akwAIcfbVYiPtiFq/V5371BqZ2oqUdkN+uD4ib51rgdwT1Vs7ZB1HwaxW7oZwVWScMSvK8IoNuC9HhHbGxXoNOA9HBesmDOUXGbtBvI1qikzfvSfbbZf0rkB2XrVxbmpadKay2c/rpyLhczAsxOh2/LClT78REQFhk3QCvDpCf0okl+Qzgq9wLVsqZCZBN0Z8YzqgZOrGKnoV2ItXtvEOVhttlnGewhIvu9U5eDZv2toIYatWBucMXFoZrv+oKXQfdda5aUe6zPaVL8V5cha7/uj3SHb2MGqs30NethdYyiQ5syzxJvue0fKRlJarUdvpqwjyyO1YF+eeN7MD5BuxInup9uPOmbqVS/oHyQFwOJNcWMYSbIPWwH5gYggaiLCPEMULU4SKjSX1jRlK0SQwCE8Y73y/b8KKi+/NnPr02YlCaeHKeV+yJJlX6dFT9atvEIPnGz2z/+sy2YJn+0FZaWgfm6/8ivEbAx7ZXf8DPbeHSfp3f9tLf3ZuWua0eVJHDQ1qW5OvtKv5ntE2C5WxoBZvNMg6DXbxezUaeFa5Xu+jfux+STRTG7+IQvt/C2mzjfwa7aGZPHaDII+rX1XoVCf18vV5GwWpmW7FQvo+2M8eax7tkt41X72eutQ53UWN51up2uZz51jpezEbW1XoRJeFsbImE0XYlujOxtpF4mFrR6vYm2oqci5k9tKKbebRYwHPbut29m4hOWVtg2K6VRP+4jVah6NxIPN/N7DF0d7UL5stIpbWnVhz4ynAcgQh38U00c1zrfbQSaZbxf6NF3eRZ85vNz+x9aVfcuPL3+/4UXM55mPZYZLRZkmk8cyaXzL7cJXflwjlAe+gcQxNIaCak83z2/68k27IbNwyz3TVL2yqVSqWqkqwqyXLDPKfWhu1GPetkU4ZvU9zd4jRL4mZoeqmRhfe3Z7ETlEn4hDhGmxleHWq/h0mJZDIrTutdxG/xQqFX1s4xI2PAfjp02jD5KKc7U+bPvHhFt8vlHS4YJiHX5c7sXdiWSZ2a3nkur/5M8PBq48AnnI+aN6ObczMc2DxuT/3ZAuCj5g3d8ZjSlt7sQ1ckOX2Hb0Pv9b+TVoJy88V0GtxomEwmox/xnRD54XE8QqL+qnO9Mer5xcXGd+VN+Mz3xusL2h2FsXbv2R9od9TZEw8vYvFJ2FZ1NnkXNo4ex1bT3vwtGDm7xFUJtiimYIDqj8V3w8nyZRLIrGcDrZhufPzHb56IDa8OcMPOMFy+xhMuskMfKN/d2EwX7Gyy6IA9cxWbF37f2RjsYJyrirn/olK1tXUGaN2fn7TdeWvrEuDQQZ+0nXBrSxDTRPANaiC+6oMOum2HBvqymG0VJIrZUEXLZRe8OmYkCSIBJKTKyw+Yi+1xqHh79CZJ0vQN295evDuhk2nGz/D5jpBZ+G1UVUI/1Hta21n4bXeTiZf8cdDoWBLh8HFPb3u/rb9bPeaMw0baphDm5Bj0q3dV6GytrXoTrc/1pxredM2E7y4myXAJttgu3mxHXNYrSOSI0ch+z2Jqe/nmYr4du3RjKWHWsYEu8SJMEl68LuO5PX0LAc2Outthy8uqKjY3wRWfvEEr3qSFTKp0UFjNd22EGSeB9Y2q6MhuET/UW3fM8Rm7ZJiPJNTpX1/0u3w8EHNoq+boFKSbkW2JWzDOZsPIodc1wxzpsyOtj06X6Bg7s+6H2/snnBw/CZ1uaOSt8/z4G0iEOuvmjGN+Ej/6ELhdJ++1lRL9Wr51bvcD62Uj87Ylrxq0ZDJtW3daj8f2w87ROUnMj0Aak2sLLCMu7B/2MJlebBwPW0FJG/wTVtLGVje5mb04g0h3ezw0hrcU0jXn2TWwbYHeUpR4BbxMuiX6LX3ns+JRQaP4oryfCj6/Y0vHRfgCOr5mfv8pYZjIttVq/r5/AkDo/gVzJniSdiDCQ6K94FnOSnbKzguJCetxd8L61p+wMKPjCcqiQ+LckyB5nhYliTxIzjI8jMcwTRIRmzUf6magIqJQQ83TYtYTXnh/PrZihpeZY9cLE/Sr5xffvpje6W0nk8c+UH2zYy8n8XW/3z79QENkEHk6/X+ad7+xBU47A13So8Fmu7skAj9NmKUF3Vi8QpcWRGk8S6d+r3bUO7UKDJ7Q4j50DxYH5iS0/56y2ElUwFHzgX/OZEKaQGYGGZ58JHLO05Md+UylmKQNlJB1iW3BXg5k64ZgOZBpmszTgUzXZJLfQ51VtJ8SCU25hDaoP6AvEFpVCD7ZTMntvMRHILfrm/H5AG3RtrOikfwdOkX5GpPYT+A1/I3OQ6IJ6ctk0sA/u7i+ejX2Ns0g7wpkO7VXCUO9BapbLlEv3STAGJJvlYqm5qPBbB2zzTMcqmD4+yfpUVvBR54j0u84Pd4e4by9LgCIrS9IM8j6CAB6mWH6U2xCB5aG1K/vV7+5T/3uPvVHFQ0qUDa5l/51R87mNCRs/h1SioqJH4sjfQCDh566V7Q5GbuN+Hv+qRBEfdvo8japBhjYi4rcG8qOiqxaRVbpXqPIW/BTvV+AMWIcdvukx7jQiTcx8UyFofeTs4ujSJ7y2ciPufOPxmuMlw0Z7yXAXYOpkmQnEBgs3S/aty3suYNB/SmMNj2bGnwb5qg9ucqrgB6f7ISeA/WLHuPNzRSuUL8lSdIOM6g9YBLiuMH8+mLup/yikx3pkEmPB3NCwwazvn4xpzWO4cw/lpgzTZHZPQ7pJD7hjhKcloIzjmoIPTMwWnM4KrhSRivCFLYaxfhp7KgPiHP0A+U5JM7/VBkiuFye4mE+OHU+WT8b3qZDAAo82XH9sHXL/ZSBwq/l1E9OmAvISloT0OnuvgLChBJOOWd4KBPu7ysldSglhbbaKaNDwZj8cLS+sJI05WjfbPLygM98sXGGSFc5wZml32+8eLWh5DZi468w94tiK45rB/5k0s6KAoW+MB8/JyLh45DM3ltgSu6e1H7bI7htVU42FNsdvmftF4hWIkpTBj+oeUv1N4Jqjo4SZgbTNrG1FcPHnZh1RFjWflUohZv1JXCTwGDXVzWre8M+ZoL+pbH0vYONZ9+/LL3HCryNE0Lc2HwvjcXS0XubbOP04jWBI+n0vc33ErbK20NVACdQp7u0T5ggRDS+cdjzEQtU0k0vl4OB9x5O8hbi9/O3qffCwOBKcK2GJ+3p4/UTfYKDFard6aoDWCWnRQ3EwQVPLl6GjQLL5W8Ea9zMywPoAG8dR9MYxywWS3sbST5K08udAZKgQbwnCfsNWJmtkezzYZ2RZO8Ke6Ns9EC1NXEIQum3s6uXUd8H9goi2VD4D6I+eomOQfflfps6aBzyhLWwjxGz7mMRBJiNRz57yHQ6Wg0cdwB9Q+pnvNf23tMQPS2LD/YP//GPa44/2/763XcHH9CTAniv3/zuCgNTvy/XJ2nNvM9dwPBgHf5VUjonjeJseED8Y74ZXVAfrVnQkda70/fphdJFUgFnY3MC1CrdhNZ2kHh184ICZrFPYRXoCLK4E57boRqwGWVR4h2qs53NEP6a9JC7cX9C/xgLEfX50cMFVqN8vhRtm8Q66Hb9PtAJio4GyjYLCFTkd2HrwY5ff4ttGQozJnWLUawOFoVL224ficFCRKC8MUZQrUwi9xGnWaUIaE8vLnCO7HwIM4ZNG9wXrzfCo2QQvVn0CMj1w2EQs7sQErC/hcndS5xWS5qWYVY0iINlkIZciB3GRe5hfFpz6ZfYK1+dYFvi64vhEu3qTCj0DFvGrzDgbFxcbXxen6SAgCWKju6WxXJOUw57LoZbENd6mhrm1+f+LLjpIH5YDYrY2OUxnaKX/27vz4P4tGJU49LtIA6tJrV8nqEXLMqNHybPdv0plP4j7aOHRNbgPm/RXg9irC5dBWw/xtCBeBt/vMcSP85Cbl2oTW+MP/7jbz//PBks1ayFhTJIbdCy+SBqd60sFun4AqHooB3ERbVQCum2LWFAb/s44m2zlMbHFAEGDDBx1Wtjc2W0JqyVQHFcgJsXnH0SB9Y7sdnF3YDwgp7E87QQ7JO06A3w44jCpqnAEM8WqVghisIoh6XeJKkHbhxmGJ6dr4j5efpJG04O+X49DllsNboMc/QHNcWwXxsXZig6Zf41262t+LYtvgiFNYONLmAcZL2ZRiCiiulmsgEO+1XGkcyv3aBgf2rd1l4v2rxJCGeTf0/EaYIUFmWeX3xWfh9xfWPbekZ3B0KcsP0ExVrx0jf5iS54riGBW/ZwZcnOrIhNij3/o1ldCO2hnSp/ev2dawvtxBKD/W+5jAgrvQx0ayo7K21AzvhBZjlI9q0HxTb3aSPAweZOS7uZi8z+nQ9zHP2TjhjAjDF6oJSa9DMfu12FyvyHnjKAlt1/UiPd0ADyax/ZiDoGV6z8KlSVNu48fTMioI2HsHnCjE7i8YyKaZYxwyxzLGcCQMGEZEIxoZnIgGMIxBluOQE0oWmUc4QkmSX0jFLCF2GaQJwyObAMoUsqKJG2hJIRQHkcKka1AxlFiZ/8YHJW7HuiwjIp2YO3WWBI8vvvQgXCMKkevjV1Y6V48JYOcAwOMck1nsbMJ6Y5Z3KGcyW7q0pa5jo3Vubm/ZEHHx2/GvubVy/Qiyigl0w+R5/snqsZTlGOJwz6lbpLdss+Zees6n7oxejdosIOgRImMYPDRRcxuaSLnNzSRXk+qaML8+G57+K0lFfEj6x8RctYL4vbw1OEsw9v6b5MX6YzYKWEyj4tzuhSFrcIxF8imn/KTtMCp15+unyJFUAltz/1lUyUrGt4WYAQXPPDyxVqc1weQVC7luDpIUj+JGJGd7jDguX/v/3RzJGwvcTTcskpJSgl0tOQkpSS6WVIqWJEv+ktktV2YfS7d+EJ4N+nD79+HKc7n2xTT46a069eFSvpiIPiq5keVk7KO9u4krefL5cYX+p4tB/ByrVHTAVbF4a2CL1tqe/40wCYPxys/hyU0Sy8l16nhWH1O9E1gLPvUNXXPRhV3kfzR4055k9L2+nwfPakhwZbxti3Sq9YwTIakfZ4jtZqdvjaGJuC2NQfPT1NBoiGYAtPJsNCoi0Gb2d8R1glM6dFrthM7GgulVRKC8tGM7kjMyOVU4JLNlM70gJZOevaE/TOsGHtrD4iLsFdODoq6gwzFAR2rzGDo8csfTemDZeX83Zyd1JHcy/b4WGy0uK0uJzE+N3+5QdxbIJdc3ZJvwcw+iE5dFftb7Fqfzskrf3bA1RCew3oB3f8IB0P461UnrBhNOQVnBEhortaalLGDSSYssBboF0NeMZKrh2mNVAV+pLfhxc3kCAq5/2moxOIO+oA0gom3O0s9+69iHWXzZcRetAqLs6OMB+O3WV7UCb3Sf0gHbDerT5RepJE/dKK/A9W5SVWANao8xyE7lgKNbJ9dnizSSaXviMcY0xEF6CrYDNJV7J6uqp3UNAlFARN3SfTSBi07oLEXZC8C1LdzztEHfuwYxj15uFyFi6zcMGDWPysLsfoP3+HvH8ARY8DiUkv67H+Bor8B7kbo46/gZb9ogfDP9LJoFnm9O4s89wfpbyHwWPan2ferptnnod5ZkUX7XW9F6abe9DwHqZb3QMi2fH+Hs6cRv87DxPOc5qFjcvd3WxJ+8mkTRAyqlKRCZdxLnWevoSRYxwKkzFsvebLU0Jk2IZGe1bC7E7ytjrUsI1jneniwkXo+moOUBkd3x7mcuKX4gYz4dFPYoemu+fDrLgstzZTufphrOi+YExbtb/KmiUla1ZkYIX/EqyYn8zK1uXyPPgVgwxJzXkOnrj7YQy5n182o4YXpfJMm9w6+SAvj3Qn6Cc9DylNKZ1WSN1G32JahGPL6stP8S6o/GpuAE4n0wH/okIws1wbvGDl44IXrMLjo+etrNtlfVp7Kw4F5z1vhZi9312R/Gd1V+Yr7sqIT+YD/sr8fn9lPuivhC3X5K+Uyfwef2X64/yV9e4Km+kdJV2m0OElbydVczgv89Z5md9xXkp2GZ0Xv9ezHHBeytp5qdqJOkitOC9VZ+F4v1qdklbBebkp5g/MeG8w470ZEh2+k4FKyHmhH9yR8zKMd8d5GUZDHnTPQAnkBryXaceDoCN4j9kpmzbey7TjvUy73sv0rvcyJx0Mey+LdR+5i3VPo/fSgZbRe5n3nZehxs7vdV4GTHlrftd5GeQ0ap3dsDdwVIaqh+afoWM8213PB3rMs6RaU/5ZKsh27lgV3iG5YYv4eb03Qd1vYIzVg/4OnH9NN/oddFtBt4tkslYdsY4KJFcBYhUgVwFqFaBb61jEzlrv7QgjafV4Z+d/bwPTwyQ6O5Sa9DMffYgzCv2Hrq9Qy/5NHJ49H1z/EkPMFbtmf1h1ff4A12c4jN51bSaj1TgzULb95HFME0dhlzTXz5LDkMx9UiWHPsVZ6fFFRsHncQmYXWJaKQmfUsJRUujkkFKK+fpfplTGHqQl3dDUlaLMwUvbC17abfDSPg1e2pfBS7uhSza5oouZXNPFtisFnRaMv0RdZvkl+DDgg1JC+KSokzKjpKUZ2NXhl1vjm8OrhBpQUd6youkuMCklFCVFXielzw3vB1Rbe0ssGFSHezSxv0ZM/jSdtwsQJaKK7Lq4Qie5wTD9Jfuy+DR9ueTsUx+k32N7RcUqyIKmz3EyXfUm03u9yfRtbzL9aW8y/WVIZV5E6U1IGUqZ9CqkrBdYeo3UH7aL0cq8W2amvfmJc29QWM2vwb/O/BuLh0IIozKpuWPC5bnWVmvBFNe5kkpb3OZSkN9lFcuNyJ0FPhMZd7nlea6Y1JkCBasdk85ya5SUKGWkVk5wx5kSPMud5oIZbqXMpEVVWhrniBoTucy4dcqhvDASt5IbJo3QDhhcMSW1kyhHpJzKVM6JluaASW2tBq4GpyiICrQDB9Ixa7nMUC1YlToHu0JKcJ2Bb2Fy3Oa54UbnzjDgaSm5cxINkMIpUMvZSOaZBJLjDhyAD6EMSUMpk1lICreZ0xmaLAQTAlIykAbyndTIzpgxRqG9PAMvikgJ1CpzbSFJi1sFaaJdIASGMlRrOQdbDuUgMAFhUBsgWU4iBorhyjJpFdqYQSfELFcctQkwmOXIcKCglM6sgVyIQYE2Zk5YqINzBWa5huByYIic5yCGlqMAgCAkwadmGTe5dkYYZrKcG55lhjmn8tw6a1kOaipHcfAvJalF0MIv8S452YXVwFPW5mhKhrKkJCaJS7BNy6y+Gq4zQBUEAMuTmuHHaQWuNfFkwIdwYFpC00poEFNKwh4hRXfweKeRLH2x6jTKzNzvNirJRj+n37i4s8y1GHAbF/e7jYsH3cbFT3Abbc4VVOndRshdC6Wl9W6j4IL6ndS122hV6GjkNwqFfpYrIXI2y3YkLI3MGlqdmR2YHFBhxGxmd0SmhYbpyuxdnL1i0to6mIufz8Fc/CgHc14s1rs6I+9hzuFhzoekvD8f8DCH8e54mMNoyCt+DQdzQToYdjCrNRZTDTqY1aCDueg7mENtXdzrYA4Y/dbisQ7mnGZ/cBAXww7mU3Shp7uL+xzMp8m8GA0TeBo8zPmqWV2Rh1lFz+0qqPsKVjR/2MOsHUzqVbiiCxm6GupKuFpyPOfQeZVM1qopVj1HTasAsQqQqwC1CtCrgGwVYFYBtjW0Kvb7O75qvWT3L+yyjv5lfVaZmei1hvRkFeGxC3Wh1H+s64q2/VjndfSrea8zeumXPFe/aHft/dfnbHrEnrJv2F/YyRE7OmLfsuMj9jX7jH3B/tb1bP2blX+rXdsvgmv7BXT9BVzbLw72ed+79cOVzxB3M9rllFD+vAAiPF9a9/BfhsdFeD84OIL58jx4vuNzJGVOjiBSlGdCRSWhEs7y3BcgVOAsCUUiRZnSIJNKhCKhUpGt1nra1EqVKlF7n45SUodKbaAwI0zCCZXWtWifcnUq8ylb11n5Oi3NC+hmJAxVW6b0NE5n6Zzqb4T5Mq1wIceWLuPz1Wd8T8BUiXfk9zkVnszpjnLIV8eFYDfhDrAr3EkPex7uAJse4VZ54NNwB+A3uNMe9pdwB9gJIWYeeBRuCfot7owHHhPQeODXuLMe+Fm4A6w2nqh80vI3JD+9/As0CMGFpPNJjeRfkMyX30CaqtUdyhDykvIIySd1SDoqQ9hLIpQnrYl8e/gNdkMdHX5bgy6L8fHR4V+2xkdHh8dHAdjqX7rlfHeXSM97oQlKWUrJLOnZgV56REc4hBuML6RkhlRjByOKRIyrrevlFcUwrmsyXxbj+dbN8jnerji8aRv6WXqeXqZnQc8p6Tt0ja9TxC8CnAf4PWZSwkACuVn6JVp4mn66DnVWo35dfMs+K44xHBQYFkipRwyq/4ZB6X8Boadpyb4ppkdgYw2lv9SUYFlXmA49x8B/zZ5j/nJdVDS38ZY/84GY03U05rVlnzf2nM4ntY03tp5WawpP6iIdEsKTuEGOCCTCNb1eT0KskJCexHPkyEAiXNOr9SSkJzGKNJSn8RRZKtAI1xTSXEtErfChPY2/IEcHGuGafrOehF4hkXkSR0fIygKNcE1P7uEjWyFigl0SEROIhGv67XoaZoWG9TQ+Q44NJMI1/Xo9Cdsh8bftQkjXC6llQrY3PzGkBgqr+Q14Ws85mw9utVWuSS+XmPINbrNtpjN11ngTXwjYRonNJDKC5BAjBC4nsaYwOVtJo0WB8s5DlaLMByiAikPN+xTbaIAHqwz0c1dr7XMldbGSfiRXUg9wJfUwVzF3tdaBOCimznMEQqv1gdDHvEXhC+BVhW4odKQMz62xOkPAab8TGDVculxYmQHcC5IarZ1WeU7wGDGVtBafZ5kmMjF8iiqEkU5bCXAnlqp4ppzS0hD5bmA1V2BGZJbI96KsRhvUZDjgnZCrpPiMUyrXgMf4K9qn89xkmqrtBGPRCCNAk7A7kVmV5Zza6Kl0wrSaGyecBKeAd2K2eS4UCAkPjvFbo5TjSgkLcDeWq21u0TjjCB4Du9Lgj1BB8p0oL2lAgDiJIEZ8IX4hjbSWKo3hX8mRCR0oAndiwTrP8pznXADcDQy7DBSFVJD7aL8TJgbXmRROKJJYN2YMAeVAUtSoTgAZBpBbkavAZYwmW2MsqcAQOAaWZWZMlmvn9dqNMksITNk8I/xOyBkIWmdojofH+LPUxoBM3a4YjLaZU9IERcXItDAoZHNFRGKUWgjnAM29FXRC1hksDHUqAnfj15mUjsOwM4LHYDapxlFdVGeMbJOiQNJCyQSPYW7BhSb9OoJ3Yt5CcmOzXHhb7QTAIQBuoWMv+BgMB2fcGaV9T+hGxgVJSQMT8G6YPOMZ9ADBEjzGzEeCGynAsAO8H0A3AKJ2gsdoutBKWpmBI8BjaB1wYzkqzwk/xtldJiATK4nLGHNXAqQltEVtjQF4oYySqD0nEcdoPPDQAWHQ1KQYmlfWoU1cekHGOL1SwkHD2gusE7RXToBxpTlR6UTwJZrGYbK+0k44XxnkK+P8CNeJ7YvMUpfignjvBPqFoD4nc0mC7Eb9LQTA0XZD8LgEoDVQDPfy7SwHoJUmr8XeXRqwaJdAbcRNZ51Aov9Ba5lXd1w0oNZmOdBkUHcuYE9GQPLgD+YK/qnjU0lpLFhkmTGQpBWC8HPNUanhkD1sCfrJfG/QQsDkOKFrDvFR55e+AxowSdwL2K9Q0JUOwqSwuBQ0PAuoUtpgrDmNj5nxvR7scy8abZBQ0uQENsgR3gpcpv2eLZY5q3PjFOFChAK0LfUmZyzalAmqkAsLlfn2G/BAZubZkwbs0hgsqdfSc84QXDrwQeMqmslzcC3C0y/jgnqLdkxLCABZxuMbyAe1Qdm5ozttPLpD8yEMMmCpDY04uTg4gKfytpkbbO7gYRtXGzR3uVRZ6BWddQcpJVlfFkwxrkAgUwgLfFJyZy1CANPSgO5NNK5KyBzYJhNhsI7rE1aiiUDISfdxpQIayhS41oQe1yygBzALZeRoTDvhQ0vIIjkJmlBgTFbw8LigBy09ejgjM0CnNZ5hraCvHC1nTlB+HiYNUJCRynCGCnUuoHlfv4VAOJggvnJubeYygsPYUC2JmQkL0lzxMCcxSHFUQMN8riEXWLdXLjBg0kKFZTUakVxoSJxEojHoOUZnwCBdc6tySM5LDXxA4NT1FPVSGkcBz2CCDrarmHAGzDXcgYJ04BdcAFVLY6TwcJFLCFw5hmyba4UmeaUDpEhKwIei0eCcyFuoArQ0dKWpw0KEXoKoFDVJv0YqHOxW9poivV5gUmGwM2iLzjMaCPzYpbUwGlpiI4hP5jBon5FBFRZsGwbTN0JCH0EB4MyQ9dMIkwkjRGiKI/WRmZJWBM27CMzp8UvNYhZkcx66EDcW9oWeBm05Urn2j1lUpskuFUMbDenWoKv8H3tv3tVGkuwN/69PYXPe4VVZKbtKG0JFwXEDvVyPu+d63L7PGOPn1GaJQQIhFm9wP/vzi4zMjKyioJvZZ063W1RWZERkROQWudaN4osSG+ek+cYvqytfFfG4ndE9CbOgfq2XvnzpkcF9JAugdOuEd1tsQudalZmMn96xmnrmbcFd8YzQCjNCq+DsYHVo4no8L77rL7bSPdjLeZpjaNDF9OpagBuJf3/6sVztpucl+PprsGiCqouwo8Ffvnc3Gt1ehN29vXl3t2EVtoYGsfxl2AzxTcuwOaySb9FJ4TzYvWcZ9g4Lx6Wxop3E5RxirhammZcHOSZp8cfMsodu3n4XA65dt566e2s9lSaZZT21oLLUsJ5q746bJZlNtqZxJ5l5d+gezOoLXzNeT53DUvdv2J1jOXXeZK2D+SESockz+oMQTZc14t1eTm1G4+VUYpS0Zg3rqVNZvaQ1GFp7VlO7njr11lOn/nrq9PZ66i7lQfN66l0r8IWkPZX11KLxuOFudT21Sdnde9dTG0rv+u5D11Nnaq5eYD11t3k9lS+oaYj0L6uZ3UF/1Ymo7NwqVS86yVwVsrj4gqABxJi5o/tlpe6wFKWfJrgj/0v8lcqTt2fI6+LuDRJzaXCR/9mO1WJi/YAquNubuODAE2SuJfAUIGFgrUBdgX7exfVwXifGTK+v6/jRoStpxY2Uuerxx8dR9fDjb1uBg7j10HVV5IOsq/J7XEd4+LoqUf3HrqtCt3/6puDq5HGrPnv8FSc1JwQcKggcIUgPxXOg/IZA7fqFIb96x65qmzg58Fs1e/DpYv9wcexHPPxocVOtav37V6tFsaZsjTJF5tFTQIf4SyWRHyh9HKAqaD8xgXvG/v71rY3d0os0T/hBeRw0rJl4GzZzfhT8QNGs+emlmutLtykadagMGu8z1+AyKWvjiZKGQrU6H2RJvRk4KA/tkoW5bNcfO/3/P58cn5x+xJgqPZ/JwIkuV+ULepkkS8pY5ITQjYLOg3mjXzE3XG59dAsx9rrVedxM61+0ip0E/ve4joO598mN48Pgho+KzWVvyNV25vt7NAywgwaVmUFDe+4cUbgSGTu0QLj7fofiDrgkbcRmka+0rDNEpvoLDrmTejh4PwtU4d43e3gnQ19tVeQOiNksqcC6V4rZsyl8poFq+Tx1S2V1hPCFDd84Y8TOGHlwozg48W+Gd/Ep4rFp5mWaT2plPvVs51JrSKHwwqlr1oQWI7vSvKDMc1oWq/ylq/R+63ha9Z6H2irpe+gtrkY+tP8hmv9Mv440u9OrWxT/rBNfeJMpmZSvy16jm0cL+tLasnJdoys2azT3dWO2zKd8I+W5/3WrgudpbBT6CTeB9ex9+90fO+9W706CZ2oJA2cdtBp/PsVdb7BB0FmjKLofm+oP5jf8r2hJCqrTKahWjoZ0c3Y3QmVN6bNDB+mhAhual9lpdzqodkkmo/7UsIf4DpoGwaQRCbeHe1idKIBJym7ajRTJpSCE63lgD6SYQU1cJv/uwntRNhykSenaI7dtY1ku+K+ucwXPH9WnmtCq6miuymtd+u+b/e9++JHU4DvZGailVtM4ozKSv0aEvvz9K2XqZO0PgHUJuKbM1bMHZk1f8J/SzeBIOFAC0ylgPrVVdpK8PaUco/biAqVt73SRHp34iexyRJdjJKUaCdh53Iry+IeTD6c+n739F12CCQeHJv4HuAh0ma5AeQH5aT6JqbgUNuEEkr6+JnhWpgWBqbRN6db+LQeTUjcNiEiwD6aHQdXYiOeyE8QIViYFRwMQZqfFZwW/PP00RxN5fT0auAJve6GOyeH9H/ca8xfFBPrUiolU4pyqbZE8e3f+xCso7YPn3bdhd7P76LATGF477/DVnYN3n3pR992njfLd+WFnp70z0RH6TxAgfgLCtPsFtJ13zxKNFDj53kU6+GyKwpE885ghlQkkqLB/PwH0mZpBNuL+DAU1pu8qFOi3SliVZ+GnAV8SzR3GV9J+MqUZTGtlnqmulCYGmUzmF5NDExiDbD6Rq345K6YHffh09rMuC0obsN6hGPI4oXczBoAndcLfcjjZOrYFgoQ/PjiRpg1G7/x/zzA9L47l5+SkE8WfhQjfuOROeQXaz4daZ9A946uCVzSRZSww7aDnOeFvX04xX7rQFyyXgYj4mWsL28fWE1SKlS86NapqF8Lvbq1EiN3gs19HkPCu30RDEdKDa8fClfCA3qo1GU5BvdKjLf5MHQmj28p3fS2VWjAWti6xGJ/lK5lhAqRq1xJURhd2ZeYP+y/JWYJ56JMOZlb26aPXs/KRpPiIk3m0uDy/wHjkCv7AxaN5meLt9KR8hFYeF7nPi6cYlDiJ/QUYyhglzQfeIzTvVNSMJ1czS0IEUHnN6SPtr6j/YIU+HK0gMRqUdHl+OU8p3lcsg8qSDCmDhHuP/3pDCtcGS158PHUGPKdEW1Jikq+mR2ELUnXWtru5uel0TrTDjUvyX/3pD7jlX9/d6LWmj11O/K0yHvZZrspz5BJ6bV8p+kyPJwgpcXNjCmHeZLS1+4VYE5f2t1HFg2eN4Q/JoAIvcSXqoUMKkPxnjiig2L/Q3RHsq6ZP86PlrFyhL5kenaOpfG6bUMS3bm95xScbYYQCLZOPWFDC9due1dKUO/70dWqvx+9PNuNl0geo3FnuYEOp6vbw/+HkIFT9nkIA0M2BGhGUIKOBwrOGBrAFIn5zBLqYP7uV8UGZjE5yZEmb7iUb4BK8deyp0BsPhvHifZLFU/zBgQiLEo0IBzuGqvHRCAh8pOf9NFjHDgxs5MDeGB1NiMDpWZQxoUTYyxhhP5aPMXapUCIRNiUhoY3R0KsXi/cZHXp4T2lSAI/rKd+gh0h6W/DbGarQ2VYZn3WSvrgWb5PlwRmtIF7qQO9QvaLAYfzqcfI2ftVJLjkzfkZC6cGrQ/WaRR7oM0PjgIAdbbBp3JomixgGxKmQg59J88E6NvFcz/RLNNIvV/plrMPfHvysn8cHrwV7jheH/QNeLPbq4DU9gxtKyqR0A4WBAI3pqBIgCznc1Gy6aib9cgb8yly8vyQ0l6Yc5Y0zboBwdEhZKZWhNN8/diPCPEFn98fuWgfDCzQAJZyO3W929Q6Rn5dLN6NbYESdkf+7+ry82HHVlGcZ90p+becYUB2Xn4NJDWG3Gm1qRsETcLF51lpXc70rtTdx/uiIvwhETazxxWkGkac39Yn0XOXoj/wJqNPLC0w0JiWCR1dkN26gCjC/kcVb3Xok+q+m0yEWaP9Ea4sGXkTjpoRaqqRsf4Uyk1RxQhOA2TwTLPySKSfom3R7qRem1/Z3v1mbsHEhZ8ppIDtcY24TZ5tx6pQoW8+XQbrKuhCU3C05spugothe+ZcqFv4NFEPqD1Gs1ahZWNdMOoAaPy7kF7Oj8zjXXnOSIkDUCfUeWfurnrk2V0ZwsZ18LU84oUbZCjgb/xfSnSuy2uMouIFgvx4/hKMFQwFG3+HHNoFbKnhdK6Ec0XeQquN1GveRTswDVbpx3t9UN+OJEj5ZgJgW5aef4D72UffXsIOmN4BjKZ+obPZVX+NjXvOyC5JHYPvoHDLRLrbxE48w9iYSQvoaBrYr41xF1HMhutQEYfo7CAm62adzGzY0BCawW9jkxyQRNg660FiN6IAB/QUik+BAgAsNMHnBH+OIgIaG2Tw3FFrhcIytfjYwVKNxhIMdkMEEIjoKgN+GpsGmffPsEwmpENpAxCRIzwawgbKkdOnUw4D+gBMa/g1snrQBaEEBHAuwgY2eejAFDtsiHaBjpzEsQLt0I6CO9Ub1COKCY7RJuzLDIW12J4QebbvWCLSdlIgievT0PnSN0idCjTJAN6T5UqpAAQTyEAp2a4MvodB2XBh6pgUZ9fAC8XQIOdEAwkZmCuNoDMJR1KMwTH0XHDuBFzoPQwincwG4tdc+bdUd4A0BhBwEMjNkPP41ONjhxEqMoR9h0D54kAJAl9xCi56LHOvIzdBFjtRfTInr+5EuVwTOf9p4Wq0tUi8A67lCPsZmLJuD0SbqAWV9P+rxvUUkCB0jQHigQ+CLKArR/vwew3CMA6ofe/nnAj0OjCTgmXEMZ2fjHsjAQsa3IZhhqpp6bMPIDx/e8iMo0/l1NBhDRajgXsf3x9KJcfbN6U+lPYDR6u9ca3R9kBAVNWze1k/Uj/o7rhtBClJr0W7xC+qj1NDxeAMCMQBHxRiA6iYtkvkoMkPolBlDhhBjhJo7CiNA6OxUr28g2FTNkA2qiN9CCq5MfnMwoCMmUMIUTJCg7BAcW8HBkUOjSMvM1Y+pwdJSD0Ki7ofEBC+hpYYYhppOlvygk+fGE6XUD0dqiPAGwpEfPqRbYLak18AYrBWp5zT1/A0xA6H8q78d0nHqkK5cwCPO0q0V/nQ63NG/TDL/JvTvK684cd9+qR3m732H+fv3yU/xS/yBx0wo3wOlC6/7pfW6KQ5YhAC45dIDF3HdfS69B3CJiIsMI3w2kWUzBhMZRnh8xr+Sy0ugXhOnXoieXqY/Xibf69sX8HfMCaBYa8QxhO6ZcG9ARLDlT4puIfivrW9kvuS/gq/f4Bz9TvslJdK71oYZAZcYM/UomHBsxLEbHBshlu/yjlmUl1iGG1Kcfv4pyQ8IHQXsuqAQiYHjN9clv4T6ZapfopF+mfFLT78s9MtYh+c6rMlVmeIzJ98bxscIOcZXeHGMT/DiGH/Ei2P8LV4s4x8ozIwpJ8qUh2t/sln+/CBFyTxM/vT+Jxcu0/eUK7jVhd03cguT57H4cvSlKrpWSA/LyLVWbjC1OCUvscyzwMaT012Pz7Nc4r+9TZ9/EPqfGuJPvfjd169u01+sdHz/lwTs3ythizHul7H/S0L275XSXDUWUZ+wgXbVdrkMGIc6QEfa1Ahd50ANOJ47Fkcl2KFxydCuDoTWdQADwhhbjFACxN3+NWQ9CTiO7BIb508CBh4yd5bUpllXaCBsRX7GlYDoB0TLgvhKmowi2nKyko4Vta6C0IusIgjBWrfNY9mxCJIrugvvkhdCZ5Dh8FAY58HRbVKfzl3xOOo7N38EqGKC/hAOjxAMxiY87tOxzjpTCqOfExzg+4k1s+fUobV1IvzkQp9ZVVrhgeSFVsRznEEHR6MmotBybHib70BE9mSS+JraLF09Vizt28slBrDQiZ51ea0cLV/BJoM1xVszhDWBOBFJ1le8LivotZ8PR5jHOptwl5UJgx07SxGXRITplKqACADfzDpH/ZGEnBvOTHuC60ZUlKY4ZWNJn51FfTJa0EWkuhhjwUWSPnwsyRNPSU3SEpgVEGLVhI98lZmTwRX2giAmGN5hyrHl35LEhZPox1oJP7GFcIK0AreU45qxxjwipXOC4zBScJbNnwgpE3RTP8d0lNp43Jvk6vchPhPJk9E3VYRfaIhGjijiEQK/jg2RTkdg4Euphy7FyH8dMQeRSpKrJ9Yskoha5SqJNZtBmIgWYom6mUSN+5UVXXg0QN5/q4/zrWM6bKkDG5SFUUjjWJQYN1gGIoAYxVBGe5ihPq5KoybG5OHkCAGJ8vlRcNwLMeIkAnoIWxmuGtooqgRDg9ujws6MEPKDkrqk4xM51Ugfp7ckK5EsHCtVUQCRQtBoEsEVE3iCCYnIKLIISS0lwRV1nQlFbokUicKKPQW3xeR12YjaKu6TipCCp+cKeC6EiiPmmzDkZQeGxrD0jkkFvPsxHngQbfKoFSxo7gSQHrgDIjGGOUOgjuDKJAwdooeiNRxqK1kQ4gqIBxeZYF0JhU4AIyTYMnPLQuCSvIjks62TiL7MUnRz8Lt1E1zhZviLcRuEDz15XL60blFwRIP9wkaFb+HRRMEBz6S4uZCxooEq8PW0UTjw3oEJHMYch6OBDYyU5eFmXQCywYFwRlUILbueY8fEA4lwPAzhSFI0uBJDEjJfXxgEQ18CC6oDrOCiowSM0BIQSQ0bEVn4iKAQiVOpQUU9BoueIjpIJbZVZSRqCyMRA2CWhSeuaLqOLq7h2WA3C0klItoY+fOCggk5fXAPYhBgtAmCUGh5atkCRjzXjOrAKYGJ0DA78jM4FQRRGIVFNRGQCk+Nhn8S2ciNkxb95M1nVpMMIYJYdOFWT0TUoFDdPpSGWE8sJHo18+LEmkjFMi1+shnwR3haCUS9w4dtZfrtZB6e57KTCS9xJeqhO5lA8vfaydT6525lgmZ3bmXiWSEv+PIU6P/QXU5uu/5xfj60T8ptVSZSNr0KgTTz8hw70U3A7qtvgDw9gTrqLKYNjynOJp2n2bz8Mb04uip3EYMCfpZgnkyvTp/Sjlwknx0XH3pJYQN+WVCFvvH42FOB9EGmv93et9l+zPb5gkm8PV7tZwD9CeI9Oa8lYXu4jmbiX5/yfQpvIc13yZtkT85mYbKe44L4MunF37a9fVzfshyXW0lhBbmdunIpvgnUi2bW6rvEiPPpdMUwut95Fag3yQvV6VwqE32OpYPFoiyOiN+3Qfylk7zd2t/5bvKddxNEgMr2Nj6BpNK0eW0YMoA/TcnGgQJ35tSZyRCQmM0VONdhm8XHwjIAwmDLYv/x84ndYnp9/RgU/DlGog6MnWzlflwRa5EwZqByvRPC7BnI1Vp2dJKuPiPieGcAPg0p7bQs0BWaalMMPVNXXBCMTZnJsK/IHBtxyaD6TG6xW/yVDO8S3IfZxIIGHpMmRLVoQqVMbexikBk2I4NF4g6vy5nXxqOqC97d0V40HaKt7sxoPiFLmzIWQcwpohNw6d3wwYHFU/9+HxJitu1u+Rg+WdFuEpPAXrlC8Sxovwftcb44PX00P8X9nVC6BbpjyRF0bSxaFutk9pOXKW4aycujeXv2bEVnCGbd9n43Cp6s1J45pyyWsDV5ocCI6L8ka2uKquWbmKxx7O8tjOK3W8k+1bvg69+vAbLpUUNEjQ7Suwz+Di3OHc3KjTHtlxtSmNqXfw33qfVv5D9xDRYXit/jOsJDHSmm+s/cFc66NXtTLfhMVG3/GWdO2Yf623hLfMta3NAJowdFMapTHawRWfdjmR0fXawd0vffqj5VO4WK2E3Jj+bbF7L6uVlkfr+3leBOstPT+Tl27VavhHLlAs1HCtPM4I6UxbdH8xJk3buo8JFsVS2PSCYLpDYRo/x0PkdbQWUa3JHxtf3y9tA8EplfTo9QOQtpqVupbe9EhqY2L4gl3p20l7PCEbyOiL7inuvr1LKkH+ndpLKoM6Fd0Cok6O9mOBBA6iNL27fSz5vTVxJv06fPbKWNjX3qRHTsM4TvwJ7RvkoxDx/geVF+JhrOp3rkHwEjr8UpkkiPCw0deCecuHAnAvq0PClXEKdIQsmiRdtubOWSjDxurBkfsdHz9KOtPPz2lIvt9bV5XZzvakCMg9AFKfkqBXzxhg58kblzrxl3zfItRMShDJk9281XUFDLrA/IxqXb+bOVxSzdlN0FnGxtR4qDRyjAXUHlZerg2QAZq/3Vn3Vfzpd1aIoP81NwpzO5F6vP2l3I6eQln8edVc7h+td5TbH5P9eHI+fseTXb8r8vTy/S/U85cqYstHu0vj6XfelNCNZbm/NpMF/tQIuXeHJr9Z5owEobFsW1Zik+XUybdDaetHPeZALv3UFo9wn07SSIpKXZjYB2mhCAooawRHu67irYRtCh8wP9iFhM16U8aov1t6faVDOi3W7TSQgY/r0vcW9Yl1e1Snu5R+NN7zNsuxoGrictpU5lXHhwQS1Xm0mmUMV40zdVBg5dHC1KDpkqMgmVqyCT8AbVO0Nj5d3LwsWj3wvoNjxqbq70/W/HdANdJo2aaSqSYxMCrlS92nl67ywFvFLfCy4QpGJ+5nJtO8kkUgt+5uscxLw6PtzyKjrqnG5fZMRoBhEaatmZOnZSfrp4fZQf+x1n3i5pIz5OIDMjxU1S4LcmncQdKT7zbji0Tdu8bWkXbUMduKbti4u0UXGracQMKag6udG6JM9jKnMORJpKnp9RC4EcnSCLyElQ84bmVn1pambV2R134IhVYxoMxVV5XC5L21oXrGwSbNok2KJJMF8AW0Lnd8g6rzaRv1xM/DKCqPs8i+trcQHEqyAb/IJngQoO58COz3JTCFqNxeuLLV5zKV5fbB5M25a4vF28Fi7SRLmh0LzSXsTljid+bSxTmkZJYwPkxebVyYQMwTjjypnL6F67pKpqnqaesJZQIBzAYHK3gNRFmVQXILNdEITL8OfmVtILz3ETVrXrV9jklUtwbXby81CGw2aomavIuUrsg3EYjggHOtGNpIw+s3qli6Sf04C9QMoFUkYBGAd5p/HjINglWVA/UPVEkYg79Pk/p6vjclXRMoVg5+X8w06zQW851+S5QdEU7pwZqJqA9tBRQYgZElycXpX7V6jHv6eUUXrba6bUr6mchrQ+2dNytVI+gO+SQuZpbmlR3M0qJhQY9PziJQPbXzWfyVdiNPl6ot2GSUpHg24m6X3MnN58lI/1zKyeWUVPb9SQ+YJzcrWhQnqPfFAdfbLWd5KTkPpf3LJt+2/n1B88OQG7ytQEvcXVyAdPS4DmX2dSovU3nZWAav8qt1+lpsVfX7ch1y1dXzcP993VizxBwJ09XzfnaGsF0vZOrk/V4BuPoLlHqpKAoHZpFC06Ga94EKi7PlpbiC/T4Bc10WTQxfGNW3TqPcn9wxd0AL4O6d2C9GsQKTwl9sejjsLgNNDmY5eQU9yrv0jQv7GcGYnE3mKtBhoNuPv9hk6cElyVpIf/sd4SAtUAUR3QqwEgjZPgWHwkso84qpWi0umkIHLWBaK9r9d+h4ydU5RcNXvwrFuredrt5NdPVlz90mTF1fr6VcNkxUlThbhqnqyAHM0zgDMs0J0EX+ee09Pu0IzDHrJOYSx5pwon6dXRNL04XbEWM3KJVroNX9FijkST9yctcp0aH3Mg776T+BDrIX4bfL2Zi/8exOZy8QwkWTvA8YfLc+3WtMUUVWWgdj4/QpH4PyoaBXFj1J8oSnebAbnidO3N+b0MjXenWmOQGeNy6xg4/eeBhUGfZI4/fAWehSbz2AZNnf3BTK8k+U2zxf/835fl6vOOfvB0QfBAR+Q3R4QtLq4Iv8d1hF/pjrRqfP4zl0lYt6Y7odHM65uh8Yf6+kfsmPxjb4Pm3o8+5aYi2tU12FQR7SMbqh5tBR9Hqoft3YMQjz6gfRUBvEHbNQGKRvRBMRCMAcaW0SHtr1cDIEVjpT/g11OI2wAanxlXozFt898EpwgseuAKDgM1BmRA1PhtbKoNEkJt4ig+AiF+g0iZvegQbAhWYwL29e42oukPACLZKGmwAgYUgcSI2NT7oJX+cmKoxqCIBoBEQNlQ+kOIEA+xPSBEQzXGG0j4UBVwyCZgSe+EQCQ9BS2HJCMi+QCvGkE3oNHW1DEoIRoRAJOIIqDiR0nDGvp0sNpQ9HUm0huJgRcZbwxkkI8QATheyLaEMgKcVEU6wEbqJOQQ7PpKK0EskRbEIQ2AQVgg6PV4/z29AgzcCFERiUBG2KCdw2oDUJhhgIghOIzABPFgTeohs8mmI7UB+aAzbdjbHCjwBr02P4mCJ95HQAEpiRABsY/fQFE8srYVbQCMSLKS3jKOtJEwlSiQDqEsZRcZAZGE2KO97vgplA9Yjw4ZkAiRQs6C4SYVR6ARSo/0IttRToIZIDAMlTBo1scPcWPoFVIORYoKM37hBvCIJWJRLiEUbE0WU8i+8RhBkCPZiEphX+lN+YqSog/OgRPlGBXtMQoXqFDUSXoCgjFymKTZRHAASSMUapBQRo8oSURFCJM9RubMORhCc+IP1aKNvr6fAjQKSR9Sb5f3Ev2XmmV+f+q83NrEc0ODSX3+HV5uEOuLX1FSzM2vdKGTnLnGLGmhjr1NGmfPxgSEATDdf7a+EagT3dyfJNMYTLZP4pNOJ5D5/fygpEvDT7qtKOiY4DRYBz2c0ZJmgp9ftEHYPVaMyi/B+hnimTHs0j2mLxCBd7cbWKITZXl3ouC9CR0H4uOWN6xSdedaaZ0uuvYm4cl2ftgvsqiV2le7ao8+JJUlNWMTDxZsH53baLC9H+9D4T17CSw7+9Ho96VemNmp+ZqW0NJ9TQ/2DzvJHi7G7LTTg/Z+px/8bnC4roM9Cgad9v/WIyIdEfNgkTioPCnwiClM1z6ZVZ/rdsaBgNZ8unm82+lQR3uvSFYiSZRuvsIsZaMqfcoYECJjvt4hT8uTIr+GdCQKQzRC9y9Uf7fbJWXuF8omUNeGZ6d5qGG30PhfNxAXBLXnoVWKCle8uGPQfEZOF40TGqKxGpPFX+ydVGeNF9mTipicX1AVYypA4/FWspCr+2lmE18IVCf0RTu1wt+RhDX8kEsPlfF6ATB+waJSlmPz5YRjKF7u5O+T40r0hAaa7jUPaGzPVcIuQN7sJiVmi0d971NpqfUMcyRrnUaeHE4PcvreUlwgRoejQ5j2lqwVqSoyZMj4YEJ/67Ki/bqFiIIEJ/bofFYxNZvocciupV4OQKa3x2qhHpd8iawx1jhJPPvvjCfjrrzGC/1t6//BrjtuE2mKhkrQDLzVFzvZDqM9LnW5CivcAsDSHU74jBKetNNEFg9Vjhc0fmk3QnibMB9H2Jd4sYImvL8t8GYebkz/cfflZeaGL9v0Nd8zBiw01PJ5BCKRROIW0z7sjjJ77ZUv4F75KwUE4kMErJI+QL7o4TvsfvuCA2wtA0e8xJWoh85gg+Q/dLiY9/6V7lpNlXYo6dIRvXpEnQU3uCkK3NrJ5SLDkQkp/jstjUrLeD/qOMNhwqvOXkf6WGgciVkPTensaTC5Dc4Cf/dZ9XLXXBvBiy/tTYVqqWbcZ5JP0O3O3E6i7IlT7IDuXOnkHC4OO8t4mfh7hZ7Zk3JBbJFAgN0wBt63S89LkeDYSVCqpfU5M95wo0t7ho9cRkOWaumk8mQ6ZGQ1T6qC6k06C8g/7cyfzGhnAULt9kI28wwDTxmcJHDnfvvotPg60H4Iz2qBACFnT+ZAY2hNQyG1OpaiI98H2bqlJJ3n7IuSg/uUZOQmJQdNSjI6KTnwlSyNXr0xq4VY0qqmjD1tNmzQZe7fA/n2QOYqn1N75ybBuSjnO91okgvxTLyFgib+dcnVU57S5wj2SrAjlcfh4wT+EN8KpPv6JFdZJ8GLRI29iLEHH3jwgQfvefAewQkYAUaMm2S6gkxc0+G3Cvi5D445sExSrBdc7R1Nj2gnZMtA54kJcDm0yDMLpqLGwMtF0o624P3tfdNF8etGBveil/SepE8v/MM8fg+crnsCf65GXXtR+9Wo917Ubo3h/3pxe2hT5O1LOxU8AX/nDLLq6bzW4bM+hVHafvpx/2kx/+Ps6MPF69O21kYZbIO6uEwMAKsKV0dFSWXktuFfuAbuKzZv8VLNpHlDRxhn4kl3Ohn85ezw/h148AKJ9k3jh6tlhWGnnXtdSorhMk4ioIpN1l4e5avT89MPF49QysvVSXnxaP/Tcn660h1Cy3GgLurHdFHe4nQMTv0QnH4sL87zVH+v4JepSkofvcMdcsUeGIUreVMFvNTF7g0KXBX+JiFwBfbtGzbg8vRjmy6iCKqxUTLsdWsUVHjfdIe9mE+fHOBW6/hNMhjrdvASubS5nVzq0yFvD95Qe0TRmxsmOsK2w9H2rfjR8L74K0mfXDOso100rWyF2+lTLDqjEU75E8irEoWTy1ywk9JVWPYNO0sqXFflXUxvIRaXeZm0fMyUSvircuESU9pVSYMq6eJy/vq0dsUwiAl+cQQHB+QE4UrC6bTzGo/zs1WNBzgAesm6ZlXqDNTPf8F20prDpcuwTCr12miDqg2+WbOSiNFmX18PtzKxOgru2/1XP6F1ZmTaX6X1y/zByfOGHGgWDZyXn5sUbOZm4m9NmYDRxVZiW+E4SLnbBJQKWhhXGxurPgqj6zFbhiSzXgsGBE9sz4CO273MOm2Hqr0Ph7VuOgf2YNZTVFiVJ1nHJQcpLG2OKSoDTxftUBWKik2oLG4QO8TtBJzexIEDdDVAmfdOB7w6N7SimS6WbU24upXRaKObqw+2d1AeOgAwYfG/Qel+/leVbr9l4iJyx25ATXjBX3jP4m43C1zucJx5oRJikBE85+A5Bvp+SsbrqSTFNAn38SBErSDnKUSC6Y6kgP0V6aQbbddhOveRXRPDJ6zqJiOEhvu8CxrjRaMkyYIiGbjvqI0Z0HeA3tDgjAXEgMgB+gYydJABA3o8DeTGK6/S4uhTO5UKfWMUNwpIZSplK+aSZqNniNOOcukcZYha7KQH5SFNmE/IRS2pXZnurHXRzbKPCv+0JG8PPNCf0iOi4zAzz5CctPaBJ7NOsc02/WanXUfpRofXtPuf+kmD1J2hv0SVnKkmfi343II4aeQ3JeJZJynUbDsxyDT51bUv8EdI0fV1cl8p29dp5gYoxnJdKLQ1w3sj+7qsSC3gCuGq9HJ9ndtdr6pqdeo1hfClIEk9SU15X+eEXiKfWIL19QaZkDNx0O3yeyUF6UOarp/nmdFKlcxRJfMgM01XJ/UrZX5oCNImXGq2M1dnOylepNZWRFo1iSS6g3+cs7rU4ksK3VZdHKQnB3SMGqkKgzvTvs8aSfo7k63oS2wG56rUGV4go1VlkJ4+s6VJzUxaWAexGaam2lbTinGnMNjUqjPtLDuRr88U3VNxPQO3tg9cLwPwNdyWTYzI8ia8PExmfi4gCc8WCJoSWrXKHRniEbKBGrXXE2/bJsGA0g5lorrwjFo6o2KSxBnVSh5WsxamcO3WLGnl0GMmZWJmdZ91c66TQjs7XF/CYqUSFJ/1jFjDhgWNTf16VOF0zjwCsSXiPfNV7YdKfk9phrOAX5m442NujHYRoKCj8S06Fd27qQ1ZHXJq+gpXtopt167B+sTPmIaTLcjhOJc6ZPk/gKulONfTwczVgsA4Ja6UzANYslQ3me6SC+6SuxFCPqnpfDvFROdQq13hy9mR31WMxcNp6ps1b/askRmpCS2Twjh6xHrZKfFmJ4+kTnEfusRzuVXqErh0sR0wgGzsFpaWRGVqqZDzlMdaZRHaOCaPyRy1fiJTdV+Kfa67vSnRKQe/CwwJM6tBLi6o1cCcwKD2iFpWa5mMhM9V5nIzVb0nOcSP6AyxzQGQHXYMbicCRg0fsEJlXJECOmKGjFxfr9J3NVT5MGoEscYRUqESdLxgBd+m1ywbuc5k2bS5OPAwqVYY7HL80paAWB+tDLeTJbKK47g5l+gZ6hfF8lQ0ZpVlui0MFENL7pjt8Mgu1lFkQpHtMnFnlOYUVF9sdUqpIOiIM9dCorCZkqQ7eBoMnO0A5kaEZ2qOfsd/LwNyxqwAFCvCwCNJ5igXM/xltmBKqsEBmrHSx5jwdJ7Nt1HQwctyx6H30GxyVG8S0sUR/PLm2bE6Tnw6AK4S995TlwkqjHqRXHaXZqctHaeGASZZDO5OgRfqhLQEtgx5TgJqAkydKtkBjBS3t4iFyrenwJCK2cdh0OawFFJCFsaBUWfuDzO5srwwLvBeYpLrdi8PrVOLpmwifZ8V6PLwyXcd9wKD4gDnEz5pKSidZM4tw54q1QsV0reht/YCSriufUWx2HHY6nb34sCPu3EFkdJZieYZShWalYZGhfihecNfU1WoQK2vS9ffPmNP/0uNuKT0bqr9nZuM9T1XGvlsm17ITgPF4sraTt589KedrkdBFS+D4H2VYQa+3eu2gEBD9SzAwwIB6w0ZiKeDAkwr/hRhAgE/LUb6JDNOyJvABmKb9la2Y0DdbNLNaoqe02EnX01LBhWsS14ZQK5HPCape/pYAk1u3RwkZ5u3UmyJ2naH/3ShNpuJCu6l9I73zM4caS8lUPOEpvbN58S9+s5leh4HSCSj0TxBUfQwrIG1UDvnQZDxTAGKzUyZ5uoR71FBnidLpPnFzemYSSFwrmplDxVWeifK4W1jBGaAwWNHA07Kqd544AiBb8fMaZAmLX/QTBB/0MyA6ggZEH+EzIAeA4zwnEmnZphsNzFRk0WWowUzGsCW2BMPlRlZzVxDvHxiQr9LddHdWna7gbb2lhtZwqi5V8iXaCpnNJoE45AYhxH2Rw5HuE42zXLMfk9nR38+ni9OTpdn+O7t5dXHT5+/rNmhdR7o3ENjNcN8BRi3fc56oGwGyGl3pvJrL+Ful5LGBn0nfUp9Ql02GginwXqm0OnRIFfwFTgEVEhyI32gCv7898N1sAvdO+VkLVyrFhsuBn614oaixWsa9YFz6rilVT7ooZvqpil8O5Uip6tlhVw6mobJTmbRRc/M3aQcmM94MGSLSpbkwLqoYYkQaFUy6WfIKWPMdnaHzx9IQpZXVezsyFyR1ai7kQs7n0ymPrEDY/Tpq6YZjffVqYa6U31a3DEXLE6SzEin3mQ0xd8zH5267qnlzx7XE//D6Uc4Wo2zF3mCibRttJyZaaixEYoW568wIzmhwPO2cCZpqBU259VYjGTWDo0LgSC83b2GSfovFeiqFOAD51yR7N4DJlmB/l2DOPWmltdaUAS3e2ZmW3rgylJLzNi3p5QddvzAif7vfu3CzXf3rwg0zYDD+5eFTNLORnRoVRmARADKjQDcmqczvf5aKPFlXsqjMiup7C4y3JH9/vSjIwOORyZSNRiTwDTqel4UP334gH3D7cgj5ZR0wReCu6f646Bhqv+7v8FU/3d/1VQ/FZJXyYHeK642FB046PPpAdXr0/GCvt5AP4jUQJ8YGAIPZwkiOmqwobf4b9AHBNRYn7qIwsjsm6fwpmpFxE1vsifG9KTjF/gNI/zwPurjh+cGpQr4GPBN+vXxM4cYIFSPhOlt4EdyIazPPwAOPvzBrz5+gG1E+OF9HOEHGPj0IUw/ivBDOEKYVOrjOaAfNBz28cNzhPeNPn4Ij/v44QkZBmGE3yZsgF+PDEG/Pn54J6voYwXAG0X49fFDeAOwMZ6bgEGHYdjHb/NQ/ZzY3UDPXh28MjP4aLerfdns8kR/LLSpBnpjFx38/Y8969Y804D5KXlideeOfaYKQx6/pXqvRxTaT3hyS380xQatdnB93aM2uT/6f+z9cXvbNpI4jv/PV6Hons2Ka1iV7CTNkmH9pI7T9a9pmouT7t75fHlIApG0oiRbsp0mjj6v/TcDAByABCXJddLbfvd6G1MAMBgMBoPBYAZ4YtRZWP9jWlUJVQDIMjr2lvc2sBwEMfyx9d4CdLNyjtJak6MPEM4dUbYNOzxYWHfO8T5FGVPZCR1d09wuAUthwUQNlCaXVd2uDXXqZ0FEIpo+iCZZCMwdKMqDG4lGjscVemC/iR7oyVYe1ODlR+wTbFk/2a4Xn9RSeJHgSc0nlEgXlZOaT7DSVkeIzm4G0t/pgoFF9buElwceP2n50REhUykkzwasFwIygFKIRpthvZLVgWHoB9BwQhJ4jkjIuc8VdBxXv7pPYIbqFTBg6AxCX+9vkPJ1l0GukQSPl8vvR9KxGbgYk1DX+jBaoCBUdoYFrlIvxHtViH2UFXV1o4NoS5CzBsCo39OFXs1nGcb2vpqPJnI9DavF95DEpvkX5sqmVMHV9PKig/na8MTRd1If+t3/NuaaZxK85mQ/lKcCpZsPBvxzNMDDVDrAD7nLEKE00Vb9Ijm6S1YM4EQmd4yMgRFnl9/8LQ3LSYAO+OfAzzwsPeySTI2U/slS8xVWTd7QQ9JeNcTzmOv81VAFan/Gwq9s3UL98kFMPeAEYaZgpQAo7y5MSwvIX2COz0aJs3Q6EMB0Xot1bZDDuMKVHGcCbbZc4Cnnd3kssfNbjyV26scSwZc4l8B2tgJZPZfA46EDpyZ6CqB89J5VrD6WIMnorKTVjZiCp2yF6a7SGvEBh3JIdnY03fCPvyWSIZVRV1tO43uj4KD7RVjFgsyiti8GUCi2f2vioZOLnbxrkmE9yXQZNOl7z/F7IZSya7sipaqI+wULMa+GnCofKZx/qhs4IzmOZxzmxkrCsY9YX8giIoFC+vAcJrlwpviOZ3RK6ZEzTgOkYBFGGhUDsLl+tsub5IO7i/FQAfxnYkUJ7CgRAZJV7xfGx4MIwM0Qczo7z3T/caGqyTkNlu9mRAZA2ukIciqVo/7gF23u+izI6/aF46lnV5ukVfOwZq4/pSxPSvNKKucr1jCyRqmkWZg7duc/paQBKILZB/M8BgJBjU4Gx1j2AhFCPWOTreA9Kgoxf51mo2mj+egqu5yn+aVarEPG1bO/yNELuBpG6hp6V16+HXCvb7nrZEr2vx4NhpcdqQz+iGZgfXVoKi/CvOGz1jBRMQlVnQF12g/DUSGwhSFtMDVC6KHpJKtQwqE2u3SEViiU9KjXR/+Zav0bukGwHxc7O0+4LBW4xaQRjFpCFW1Pq1K9xNMSEaeOS0a5y6X+6lXdbGbTurmRjFja1NFoZzTbAQLhWrnxRz9J3NMPm/t2jbzEWpWCu321lq2D4avb6ukeWzK2r9Q3uDJRr3DKWqx/fLZBur3ES9Rq3aTzDvuwYxHZYPCxZnyv2AW3GM7mmmzB1gD7jzA4wQGoty+rDL4oC8y6A+cpSbkEyVSCD8bRfnWvi5qwjGmq8QlZejE+G6o7TjFkay9PCh5jeEqipVKqzwtyOi/ocCcgBYKUQ7AHV6ywkIr6xqmQ+sdnlUuOZ7kyGsmJ9Pi7/ABgdiygigdyNfSPd3PG3YMCbLWT00HB4zCMKmhhgd3ksTprAwIiOlSDAQw8KgDEufGegzZ2cXPAevLIOzBdwmyr3M6OYLDT+PyZ39OUDE03G8zAAqxRhX0TWY2NSBykYVVOT/0u6rV6khMjd+rj4uit/mSz6ul0pfWcFPmUPWeNZvDZfFMgH5uB/Lo5lCMPFOrQy9nlpoCCw2ZIUwLjeD4iJEZ+39rrm5yE9QS5//9WeQurzIVfntOOqqEfPe0VTKfju6hGKxlVmLS0sW+0bK9tofC0MN+gBVeP8FMSXWOIhqk6eHLmuEGplF1x6uTrNQcPVXf7Vvg5QIbk8uAdzYEYd/eI5SqMLJC5KDlM3mPMehzqav0y/QGmPzDp+yZ5D5P3yuJSauSAXL405NhJl97zvkvTFdiy1YwUh7OraROtWFbZ+KOa6TiiUnHubIz/N5PiHmjL45DfTzhs30DIxelOIpZ+DtSmJg93+H0sTa/peM/Izgi+nM0aHu+XTpdVbzJRa9XSNMgagZKk5qos0vmmlYPDqhWvGJ1vWvmoUjflq2QoZq+ZjFoNXwEEy6wCQhuxVUBMmZWQdBDeKjjWaWqm3w7yg5qLSTqacjHfEBrCWofY0yl/vRosyxtQDXID+jRj+ZnvKNfvd+3sWdBWiGexrNBbozw0dvlYJH1UdvrRA/yzH8FFVfD3QfTtI/z9MHoUFwl80Slw5WT4B+dkGFufYNzcp2SfXSQCpu04MabPeIIXbhauww1gBPlCKXTqbEJ712Bplodgnk/GcTg5/XSms5WTTc4gCZzoGOaE7BMIN+shpxT3oQx8wNBh5JmmcRl6dHUWql3qFfiogaf1xcGPiclC5XH34v446vyYUHml/O30lfp3sZuDvnUFkvXHz0lK7mplIMUOgAiV/QKcf6TM/RFkbhz+iEIdNL1PcU8qg5/Cqg54pR7cmkKPfzwz+6jzEHui1wuEGveffIpDQ6pz9ozo9oxB6U+7yR508NOBXSQCZNAL6Rl7Bg3HipJYAZuCWkvjVAE9Q5Sp91LzrbRnwQJldncXtVnS3fvYFbrP3bg7nftsFZCz8E3ftGQ15JLKiUD2+TOuo+URjGFpdQZinQilarOK80Bhp3+aSTGQLgusUH8+yUS58lhnYIrmnPAJedcywfCQZehLStgNym94Q+hcS1RsHQdnUArHQQho2JCC8zCM7Mp2WTawiw4Uf8XCwkrYBYTEqrCw+mRjVdhYFdDzsqVPgFVhQyoAKbuuVRTrUUn4LY0/lhovQthJ6fJCUgouktW/C5san5AaUUfon5wJWbbQv89tHAeI41JpX8Jr2yBWUJvG5JOztTBFPpFJKdWGo0/EUp+QRLqfjgdc6cdnFz+QxTsp0Mphcjy58y7T5D8TyEtnK3NjkPtW6UZfLOLsOIVSKZryKN/MAt3JzKWGXjYyBpNO6oTqt8e4xnBCNZjcOPlZ5TIahCd5aAJDiEs4etWm9m/AwDh0ZdasQy9AHw44+6l6juBk0dRbNLWLplg0cXt/AMiRtsIym58zZEnyq0odxPvwW/cvpW0Hb/Suqx5VJkFteFnuesqjAStHe0teWnISx2VBiSa1uXtt3yAAdcs6CdTJzkJjyotL6x4WKue1ay/Nkr4N0tbUERgTSQZnnqIsAW9KPXkLcvEvkI2mB20Pz7U5Wl6Bjkdgav/D/wRAoBQZGs2ctc3A0vSQdv+5yKaJ+oMXFumU7vejAQAWAzFP8n+t+5yC3/8uYElCEpT4K3Yzt73SCev8Me90wp55L3X6jXc5BVte5pQxjsE2Ap8l9DwyS24wA3S9HlpXfvJvhPMUbMjUiKqh1NEqvidcJmiFlvbKCZqPzddj9aEedxHli3qifFFvZxzGA9is+x7VM1NdLvyKLzD8P1zar2f3zV/Jubwrpjng826+SN/NUkGe/4oobMBM0A27xus/4zrDiYPOOBHsOoFnG69nI97qsWkyNN9hBDMWC3SLNBOFSYbiQj6sQnUgYUI/4cfgPfhPqr+QA1DmSfkLBmV6MDUEiqa+t4GDOQzoPJmCgLSGLOtO7U0c3NkaiyTb3fvL1BnJ3T2cMcYZ5TuhH6Kbm3d9X588PTrZ/fnp0avWaApXJrb04zItVaHy1i+ba0CJgcjmaLBVbSUCCDsGZMfAX9AxM9pj1p6nHyBlnEzLAY+RCWOxW0JSERX43hosA8OdnRD4o/0/v/bAlY0n9mMGO4Od9v9c9Xq9fnuHy2Cy6/A6qT3B0XEJEZYxC9e6QVgF3CJV2sDOIy1gFC0a4VB3W2+GQn4ZIk2uFkA4vJS/dQlZCqbOVFTD0ppI10Q5u/EKLiyYw3DnnWuW7VZGtM/mYcyr7wgrxxQNG4if5JBSgTk34ljRdacKAqeGQS/c4TivuFg9r3T8HoN55Z9TyBXjZODOo2FtHo3XT5trZ9qI1XOBmB7H2bD9tYftleTgHsYfqfHHEbyu8f01LsmgNZTjKoACCnvo//hg7JnK0bgUhdcwTa6TsVrPnuz9ZeyM1E6wpzGu4Wu/wC0P/FCdQLZTb3+b8QGk4yG0MZRTcVy+lGqm4jAZex80zRJuHBl7OEe5JYT7rIJlH/nQKbHjllAKjeJFN4ddI/QqAw6AAQclD18nOaSI3XGV/6/9/H9t8b9w8OqxGl5atgBzZDGpyGUxUpSvPydDQ5IsRGaiX0BGpQ2Pkyyp1B0/KSXbGKQZImTdNzdGw4K43//fPoMGBEyJA7TsP4jQTWd4PxngtW7ySXbglD606tTO6Pn3Jkl1nnI+QqFdqmA2QbKdf19yurVOrBQOUorlz7iSvYVaTEBALw7+gIqx7Nvq607xQy3c8hPF5de/AlXdIKqZ84N8c3DRHoH5+0CU2RE3n84dperpJq1cFskYE6T2jFfOdwp7WQrjtrV3fQOSAhsJkOkvQKhU8xTfX+O1cG1QseRLUW/AKoCICb0c2umq/C9J+UBRzGc3DgLfZVDN4CgZpqh5R1+Upq8hklyHcluu0vPTyc7Onx6fAZmXxtMJRFTZ6u4vT0A8e16BtQeD6LZ0bnTF1IJNrPG5sIcu7Qj1MPMA/fDOdWi/ittW3Xk/A9mibBF4QCiecJp8IuRwzRIcBM7BQ0Gp1vJlPd3fieov9mMIkM6RHPj2Ubj8VCPip5KIRfKJAhagNEZ9AyuKS/cFxaH4NSoYstaLWcqj6yWo9Z9ssk6Rnssf7Mevf7DiFvDMRHXoh7InCaKqXsjszKnsefJDreiqRyRT8/qusvf4hLNupZQuZpxUTU0MvKKg6OrZw67xW3cXFrAeboz2e3+5/uYxm5fFTvL56Bz8htpS0H8jSa6zwFzQxiHdxYdIf6i8dQzTYzSBETyczWHhr0RSoTERD7J/SDI4xAH+WYb4r3NtL52EqeHGBLRcQoW8DErgYMnOLeeKoeMbjvnsKR5A5fY47vd3cxkCeB2Se1cnhNElr8agRMU29/Z76IJ5sPdt1H8ov/qPoz2V1n8Y7em0vWhfpf012ldJj6MHKuXb6KH6eBQ9Uh8Po8fq40HU1wD2oz35FnOqGNzILf3T/MWljw2TmiENxu70Eb4Oo//3iMEB27Umojo3vS5DQPZ7ij+e0qJWvc81LsonCh0xRDW0TYPUFGJKru74YPiUoVREEWvZIqrpaTGYzeE6/gmw16vXxz8dHb88bHu2KEO5HbmZphMRDQHOsDs7x4YWSflVwh0k6j3Oz5/NbhOaXXt568B5qLGTGh2VBZUnEtDhQV4dk9m6Hr4BjDOBeiGf5kWES1VEkqnEF2MsvOqhHNuWpjjyX0mkqNXe0TDj5faK4b9fcB1Zo6F+xpVsVzEMVmqGBOWPaTGVXVuvGKL0sTXEr6sYatGjBErD66i2DdVrhMiM5Q1clPp60zZMAj0xtX5gW9nkdv7Vj4cn/9FvXfe7D62NHBtqYImByqSukCBsNoyH5ZNMvdD6IaRw3N3fNbW0j1kiYGHGPxjQhb/x8Raw2JZcqpzeuXR6t8EtS79+FeZheaD32MRjieMhs2GJZGILuEHIVOs7O0VUQbtY+ju1sMLih159PLeGJq8PTdPLPlrOZwZ59Cixf2l3eDRogVDCr+L+/T7+gfdCIWXvHn5hViKzXJEWmEXH3b7T6ymtDNV51/gUG89mhBjq+BkYziEz1lK8nk9HHNm4btXI0phH+9QMgO8/yew3hyAfOKTSDMbEdIGMPM7g3/EStM4S2t4aaL1kPax6z4DCkJBbPL1Vb8kfi3i0tg/hljAA8DcDmMvoUbdg7nKDcXekGadhDMWSHAcMJZPE+8LkT/AsH3/HCO1CQps4e6CBku9aD/NrR1BkzHKr0qQRk4skNwf659ahNqJglkTIQZQRTVlBLBWxz8n1oZBuE+hwADVFSIB0zgGSRj2thgMRKQAX2wHQT7TZhAkjBNz3IcOgVN/XCIPCw1GC9Ur3wA4WDhmiJXPX9QSRod6geRnrOeCwHUeoIGz8vWjsS9BBYts+TR2JDYICo+4iuYExv4bBhjfoonkXTO64f35VpiEeUFQwgX1EAjAJTNIoNN/YU8yrNIOORFcZrIoucJVEsMMl45JvNU4h/N/Sp3znyn2D5aCRkbKkDgpvSK1UenXu18aZ1lejG71rhIL6C640oN1yXtlJ2ptHmUk/8d60NqroaCVBHMfqAf1c/oEFxN0Ioi6aZO4Gvv24/STBoBO5kWzjOQmtNXrRgO38m5lZh5ZrtnPBV9jPeTXnIlSLcm0bFxudJl1M+zEepI4S+S8OovqNHJKk9G85vHNVkl17doJP9T6qTUx7PH0/a7PLdHBYpIsFLO/yb/fty+NfjsBa/YIhrpD8BrW2k6P/fHv08vCI5cAV8LgZnq5E4KB5jZvo6NQL3DwtvnEjxy/fHP1w9Npto8/y9BzGDcDTJPxFQ14yf8tU8qlh75VYBNv3tQR8zEGFHb0fiTnNpY27/PPxsw26+/OIt5dnDZ3dvK3DN0dvTt68Pn75wwZtygafG7YBYNTq3XKNC/trMo3bsNzmXC3aLLjzln/SoBtaVuL/CLbGU2ClL9DzV04DjWiozy+Jh/raAJGJ6H+R9hHwymb3aPzvuN29pnaFJseX6PGRgb2u8b0v2Hhjz/OZeP9+lI++DLcdEnQpzD7awsyoV3e9LBBsEil31zcN2S9QdCaN6R23SyOq6HmUlPpItyzxC+7j8BkpQ+yTK2mU1NjdkdqhMXsKSlLUXvhaoGFpxKLrWcL/5bQEGhtSEpp7XCXVxhh8f+zXHKi7mzfaJWa9A11C7VTSosYWwJbUyvIMSXNY98qXl/PQkLRgczLvgq/QIswS9XFqZZ/FgTSfKINGZnyW3k7H09mHqXZUKt3MympoIcwISmJBZOYK1SE29mb2DG1dFb+foXFTqlOoShwgwql+nJzfoh7vyvFUj0evr458ibwYbl3z5dsXL7Bquy1t1xs0Rcor1kt9LlJAKxsLXvmdkl2ye1kn9JI9q71yDMxBoRHmKpC8K1gAhkt1XT7sXz9/hn8vPOU4k8Xg4xU4fOGfBP7BfPhRM5yEsuR/Qkn8Y5W88Ja8ABsClpUfSe7YFRA8DsqsxeURYNHR2+MM+/pm9jfxa6dmDPYYY0M8ZjfXprjRQdgz6DhHi438oW8m0Cgi32Zkl+E28bB0qPqG5NHGLkOW0KLfK4YJ2gvMlLiwS/wnwwSIyROVS1VEIqNlESLiQqGvkEt4KeqF1LadEyIA+5bXJHC7RPR2u7SMlR1HKFMnsZVzcCHYYPUhxT20XoPB+l4P/6LDJtps8UbyXEPCqCv/AQgTtkEeKaD4AK/3wNFXI8uTZ+qAMnQtLUM/UPXwzi5hXXpyfrOH4TSDOLQPBRg8zGMfDNRNNDykOUl8WNKPC5d+rk/PxH+O4DniAfJNtBE6T1wz9Dr30lyDSAIDjOWlf2kyYXlJWf+phUNuFc+WVWaRxqwJLxchaO6ZIoMzZORkMm7gh0ky2SV6Zc64TeJw7I7bJB6vGresHDfJo8MD3rH9wCV60dgzogop3BKlo/kP5XH3ySWk1qSv5yBVWv6AdguBfgwZ6/eUpAGrZO/BY8fVQNRcAthwvUuAuAOXAN7o5FB1FuBhZttkOVsgIaIeQ3N1lDFAPxoy7GsEZlx0Q/2WiUjxm3TqYOcR/mUX+s/3sh4EfLBz9bnbwV9Q7uJEg4YQPVUYrcjya4n25dI5BL7hj3bK9zorQMVGVwXnnX9tzb4U5ytGnJwP2iUktBGDYdPWzBIiXKhVJosOce44t5B3Vo+JZicXdk4+efoqMYSWYHQyUgfv7el9h9w1eJLRsRjkynEKb4ZJWf4cYjYVzVN1sqBD6sErOlZ19BAcQK9gDDT2Q5Z20f7NZGLp4TSBtVWlkJdT4Xg5YRkmVDVT2/V2UmlyTap6PDEkzM5OiVMY9R0UTdPkWzc8KHOTXqTyqx6K006tXhgeWM1ENTSvT7nxWYz2XBSoOUzHit5Tq9R7WLQf9aJ9Gx4IDgsic4dNgceBU18sUAeEmH//fvl9gTev6LFXFJfDr0/d+8QYB3i3vHOsB5VDRAErIVSmWr1gZZshK2EjKQgW4t3HOtXuY90+AvFk4EFb6hy0YWGnjX2rDSSxrLSCpGXVCDGSPUcM9IfKSmAYH7i4TxGwgwbi56zWsgJKPLsND+gwekiwpXNY6h7ayS4g+E0O7RA3KIoTXw3IBQuGCE0SPGT6G8mGmW47q0/tCHiIfmskZDCybgjusefJ0MTSldyFOBuRKaUrLZSOBFNrI3Jb6T+j16SDugOYfDUlZWliYnx8J4bomMmdUns+6HS/NEH3gcvwAraMZdSmrnjPWcdzp4xEU1UjNPY9aEBNQoSaXHkSSq3gT6dhPCEN1BGpSknMle65ZEmlWISUKVUQyBR6PVaL0XmyXr9Rg6d2jeWuct0S2TlHcX0uuSPGXzj6yCbAba8tC0dS50FbnyrdSW+mEfyKBNN7k8jdm/iULn6ACs3lTN67epguMFyqJAeXNNZRUOgc1d/9pf/uYVt2s56MNUKe3KjQrqh6i3npNYm/95zd+VIpJBqqjKSR0EC/otiaRvhIeANdh6dWA1M7OQuQUFZLu6jcnrZfP/17m7VfghTEP2C5aMv146yLFwP9+jPaCLx9ohYtmB76OhuAP7+dLq7O0UtS8JYgX5lFPhQTASrWn3f4zp/b3T+riDDVKPSvYPfIk9nZfprMJQPpNXr/0aV67hvy/CBP8qYhV9fFINVPYCB8Y15Jxzphntx4msdTfm4QLC1hqMpJ+wyd7iMMZcyBy4XUh0VUNThYBtgBR0h/4zBt0HqAzTttZQA8S2gXSmQE65PlCaqASkIW7qKGfKSLFTRfaflJPEtSbaOLrvxszC7U7L02szdnPBKg+g9B7y8YfxVNGP/PaMzQlhFdMI1w5EK7/ThXp7aHMtdAFqQMzXofA6iQ1Yg3zOXcnctUa/1c5qI6l9dP5cA7l/OQ2lw5l7ectLmatMQ6qglNO5iceHtK5LkSDG+PatoJZ+7YSfLTSoXk9E3GLMxKaXW4ZHnSr0+kzJpImZ5ITk1C1SKNAmYeUlUFoSvXlanhF1MYJppb0+Yap82HeXruzhvPmGxn6A5O15WnEzF8cKQ7Ur45yjjfcyzObEsb+8Y2des4QB1DIKnIddJFYit7+1nItja3G4N56rR7JhUR0rKfg9jGsxcaopKHb5ZMvsIxRNE9UjdNsKdSmUFGJpnvNaPlViNo/EZ4McKTupQD87mEWTX2HaZTuGK1BTB5S4NCK0a39fTkZbffUmpzi8/EooXl8tn0MkUTxLTlHli3Q7T8CwS6SDjLlaGJDZSUhi6uxJ4ObkuzYJytreI6b1BNsb6m+qpXHaysSp4SVGOyWY09qjFeW8PgZTVzsXElq6V8dSXXE4CqadlRX5k7yjLD0WTL1HfGAvohrIyB9T2xvsfW94X1neN3Zdq8mclJ4yYh392hzPuKIs8FNcad8G0qidtU4repdL66UuCvdXEr/F7dqtZ/3qYWKoOljJYyZCMRjSLVkahHSqLe4HkyR5b4eYSnXLbfgbrUAxQs31K1ShYrIEoUm0N0WADlwQuCkjIWd9v2Yf7SL/k/KjzXt7a54JflvXK/UdJXPHTWSynXt2alhNIlSUB55ArBI7FCKT7/jLsXLn8UJYicXgKodepQ0mYPINwZTTRfia9C4zuSumf/vn6kjDINNg0znS/ovXL8ETtZW948glX+mNGl0LE2M6Glmm9a3W8w2KGlgkrhD050+IMbe0xVodEm0rSlg1C7i/MCzsnarXb4le8kCSymMZdGlbfnhT6/pMYwEB6qrbI/DEToMBBg8EogCB7OZ5BN/2KqvtFpLCUlK7QDJjkUNIYNCL/jndjY0bG5lS4ZQygS425b9rtYbtfWahdL6oP0sWTBipbhzAzyLsV8cftu+pxcCYdX2MKCXD3X0l5wOHpKN0Bn8zARFzKiMiwDjL4/OtkrKbO448GuQMdjkWcCe42UeQ7T9Gu3h5OtzYI74LIxf6/Yy9+04qwvSU9qpLtIi8u7ZBjs3AnCXNO77uhSH37h6ySbokBajNNVp/VjFzD6AzfiQnPtRNpvV6IR/HaiV9tDnrorwUUstUnDo+u7FhPH15rWZUAAruu7/b1XmXh15xztAX/3vIwAaRWoNUg8vGnX1gdgEEikZjw2I+cK/JoDnXGH45II8kV0+vz8+TFk5DgdEv3XeNHR+lnxZEvFAt4ta5dRquRBTC5z1ELIBgYyKxLhGpUGIZvouxPsRspzGGyrHUKbHP66ZZQy/4n9EC8+jC7zYcfJy1PYTxhMo0/JBF5hinkyPdVpu4ffH7bP4h8AfUjQGyTaVB6Ozodiru44iAnWX/fa0STZewCXgxE8mX4rePA0HMLb34sJnEreGhwSSPXzMcLpwk8AIQHwdQBAJU3BMycyt5+4RhPNZGQxt800JDvcOIehn3nYMF7iqP2ob4d+CForiOW9To6Od3hhWd7AT5/QXv1D50f4o9XtHD+1xi1KV35MBAV7tBhKs/qgO7u6BBdWO5RimAizIa7PR+HZdK8oHgjHVCHIVDFVHZTC1jVRbNn63RZfjeuPz55/aWSrZ0prm3DNE4WNHdpb2FegD9+YJoG/lzmiijaV8oR13yPQULIwFaqhrYTYpLYRAqF+TOSOjy4dwb3xHpqe8NnkvpxALF9ZaE8VGqwUCzDLGM0y5ptljGYZ884yNky+BuOetqGvfwfqnfzt6dMp399Fo9scfAzFs6MTJUS/Ij8Hd8DQ5HL95WWxNmBsSZMh23qWZ9IwOgaeW6mw0DPm+noXPI4YGDu/sO38kMkGxs7PfXZ+sztdddY7Ugb/tEV+Gw3baCQkN7b/AeOwGgk6CBl2HetAGAeDchpe6kk1gIGo7t9Z3hRlM3T37dZaN7SXOOl3J8pjczMRybmCk57o9OnN7JWYeCl/I1XSNgz36/969eboWQs87n95+uao9ePRf7VZNuMfI+GNnIvJG0dMjNsHZzdwA1oBJq8oX4Y1ZMhlwEUHfbIUHOMgE+oHnxsQk9f7IObmIEu75MBGr+BykPWzdX6+aCEFW6+Oforxn9ZQpDC2LYSHPNLQJjry5F1VFrk+CRQKsT59itHkl6HpMcfs+/cJDop+ypG13ACg2+E9WlAx6xotYpCsiwNoj4Pfraa6d8D5h1FegzT/WIY4JuO6Y05nXDvTlusFFvZuV3RLrJlLza1vqCEWGyj7PGmj95hR8uMB6tZN+xQMmiq23QRQG1rxx/m+9+BuGqGdgW4Evk1H9vfuqA2lf2ALuE4ePTva102s6sZj1QLfrAW7AQ378a1B+7cqWXWW0woJi5E9T+LWld83r+Qi6VJLTKX89FjWsHZm8TJXNne41FVMF4tCGgSFDqFlwVBf5t/pscchG+DGpsAtS671qiF+VvQq/9TBgrSjMeIZ++cIZiNLoht9d07UftBmFVneXjIuxjjtIifgjOzVUT1EeBi6/oVLtQjkpPStXgIyWvp94sa/8m8t/cE5TcnYpnSkmDePlIiGJWPzhQIrNa2crbb7E64RreGELBdwe0nhjCtfjKZVhHKs5Y8EJdTUI14XmGZmRjgz3en3TDTPbFdkRCgytqjtyOYIZTOJrY0qo9CllrerTMI0QmG6TeXXh3u7D3qm7kOo6js/7s7zvQZowOMPeuGyBvTRAwM0eHwrqI8eeKBWKbw9WICg4ZLYbZwpenZvL3KJPaui17Y/ekoxrkxJk6QemEzFSbCB1rxKYE+q8roAeY1/tLye4KeW1359HYWifrWhlNchT4qamHSfIuXKJsCTQIGIedIgQRIjsA4aNlId0vN4yPIwsn/HKsRMh+qMPQ67He5uG7xmhKqKyGTIrI4rUrZc7yH3oPQeH4QD3ytqKmp94D5CdAEJ8npY/XvqN46wuT/dvuT1/n3lEo/fKtRb+WCUly7DsxnhHMPd4fS9/6jjBHRPkDKUB9M4S+a6osb9KsnLBPahAZ8PwBlFgfYKTOxwdhHGAdY+Ti7+QnH5V99AOm+AQagfS5x5GbOfd1NA9U9XgKwLL0N4+Ybw8hLeXMHLsPMJVwQwHmsIjxoYfjMO9YOh/Zg/SfKYA6Sb44Ymj+lWgQ/dTNs+7NQ5pRJ6QqJnDFOWXerYsfAcl0ykR+b7tR2/kJC/Lzt+rDo+DhUAnibu2Oy4pGUnK1oooIXiCU/jAimC4F76S3fm1A10Kw3+njzs9zWW3xve0g+fT+LJ7m74d3iN/DH7+w5kI8Lhzkv1l71EZ0HkW/Z39cbjiTV2L8PlPDmJp1bScbicdi/nMLORnlNqbFhKhOkyrlg0kmoEmdY4Uq1fKBcUywweaVAVOM9nc5mtwcRW5Q3Me1G1+Iey+IMeBNHjYqgKNreOcTF7gIPGwL/LaLIuQb0WPnCj7rHutuwgIO3FmiF2SQp/y6yfAV2IRCLitNnavrJgVf9wT7KMG2hbkdpaS8QAisxjXlOnMVmoxbrXixbMfnCxL9/NgPx817u80+L7W8xucWHMbpk2rBTxMrOtb4Ou8ppQt72AgCfOKw81dM3NDYXOOKLiz0uPj/IRPzO+hRzfjBX18SUUYISKuII3NF3H2z2ihNsnKItOG1UW5dDBYT2HiwXp606ePia8PXX8oW7r6OL0kNl9YnY3WIk5/cQPJGQOUl67k0gZ7Q9NwTIVpw95Bw5OELwlZFJKuidP9kM2NZsmTbnszLEtaY16ut2ehbqHdTfesgS2LUhX3m7L4lKPmuYb19b1HrPV1ZZZ9TiXs5xN2BR1bsnkx9dSn85Inx6EVlzsCpHsFVyN5wI5mzvnAr+v5HIPDJTE9e8d0FciZMOGXPL7CFkwTIaGe4cO99KWH/TbLdfQAnkjBytApgZaDZIZ5+mAGGOzpbZIHmpwPgvP+l1yzM3xo4zLpW2Jd0PqH2dkodZ/9Pc2WaC5ElS4pywaz085G7A+RmMDeisL7UEhcuTOOgXjaAJr2HxWn+xVT4U0vEtS7qKG4VDtoib8IW2iMJOuY2jbL4qf5p0hy3Z4CNITBBgbg6ZeyLdJxqzYgZRwoC5IxHKD0/Fu/2wHi5f9GHT/ORtNOwCVtspi+yiBf79FldFLVPgjdrK2f4Uq+6O+QZUJb5SAWFCsAJc/JtyKFxAYHKCWITtcYJ7Ln4v09wgd0EeS2pHfPJH/Lf6yvyWv6N9JoD/sRFk/4XFqvCgPIVINkKh48ud+L8N8cwdKB3JXf2PtDVtZ7ZCaW/CWzNOgLuBp7PBn8Jz4x5t3J6+ODo+fHx+qNnsbXwdsIKP/JO/m1CbdWJ3qsIuqW/2XorW/CcSNiB7cPdXXN33kD9r4Gh33t95Nt8NjvV90CfrWFCEL80qcqlEcr8pay7PVTYtKIjLDxrOCuloFUkXIycZUPUUEnIAVs3PlhUKTxGBs594xcziwu/rZjg3bWO9LfU3PgPiaey3y0flIj8Fii569WRm/M3fBLs+MEiFCIDaNtZ/YbiBP8GWm4heldrXDeNtNQ29PMOvO+YoAfwWmctp6Jk3Spdz4TTwVOEzFq5CXLPUgcCjmGJ2GFt7FFitr81Jqw1uubvC1uJ7lKQLCB643b76/ovl54W9Wfs63n7cU2WEDoPa9fDT/AuoAAe5eb8CgwXoOXbI66NFicSXmsHU/ga1oWrxUlyl+qZ74m5Opd9Cqwxga5sZ97i6sH3cmChRQWt0dPGjG3o1WFRDZvS19KQ2q2o/mvm6pL3lbdOUdaVD2HPXTO726HMKiK0URf3oJm+LsCqXWXe4vonZTK41UuRsNO3Bxc+VYip+rB4iUDonTBghsHCRHKHhbvpr+1oHpbzQwze1gUKLScx3NrKaMkDp49+KeYJPE314lCTbWSag9j0j8on2rtPVVpP9qDL6O6HeRwOhxmvhfbBHwt/n1N9SrEbm7VcG/qa40T8IObPV3KunEVL8w9X/EIB7861jEyQBa2sUpKfYUs23k46QXj20T+TgUp2PHRE4V/6CGctO9NgtOtcEcTeeSSfBDmcvxQ5m+z768wRuOpgbvE/mvHO+O/MT/9TGV/mBuqA+wPE6qN+aELSJuZJyeahENDoFj+3WibzLHqzBkyidrTC5ZQz+YeKh9/vb3OkUYZ/pQEr+061m+M3SeHhOWU5VpFdKXgryrBHlXcYrQcS45v60MCf6/e6qGvETiA3/FTua2QgPr/IvIi2BbgYFdazOPqPg9JURNQKyZA/8+WA48c8CZAu4MuMUE+GOul9CxRu5Hxvsa3I8Xzi4Wify3cQn0P3wSdLLkZsKjMgdCoxjgbSX0z9giLfRyZ6XvnS318wr4jCJnHP5ATXxK0PW7H0MGQlDuJp6L58cwF/x3Oxun6UKGAhAa+JhXFhYAmNJUIAQ56Y8hf2yWR9/bY+ju11L50g9rcS5yvHGNYzSV/pG3sAGZPQAfmym6kFITgDi1AL+L0GngB6yhAKhCdCvsJAXfKpOKEQ1lUWxBaRFZ5a05za+eh0j09TVTmGCT3T77aOkrc3i3kB0lme8SwTiArnx8InaKnT0X85/oncDL2axVzKYD+NC+mSWKh/GheaxsfDB0YzALfKwv0+1MGzSiqRPBgNEyUJYc94+cX4cU72iFO04djekoyd2ObovAx91iV+zuWQ13+lUssOvPErth9in5CNX67IeEl25cnSP2KQQKtdtSUk7xJbgnn+IpqImHO4l6ZlGG1Bzq0JDOMztKZBr+7w/ubwycePRw73Hvu+8e/+Xj7hyd8QG+D9KhXbMX3v9/83DnUHtaYYcCLfoOd452fPX7jx973nbJGExm/VBmPEnAqyu2VeMJPpGJHoW6nd2xnCtjH4MdT3HvO1rgAbHlIIlM9urkpFWa+loSh5E67lGTD5HDcEu7i4BK/c3LGacXL2nmiSnHF5l7v35/iPD0BZdy9OaEe49Nnb5MmdA8T0Mw3p3gECBKGAjUmVeIflhBCV/wa2Xi42wqfcAXcJ2VxOiTmM9a6aJlngA1aD2zmWnIpshm7bYVaTKVkSafvMzkYjMJ//dZNQQp+OSt96nKOofhzieLdcaSWMXunoXIWCKi6eAAmFRogK8MTmbwkPUMenq58PZfj3IV1DhsZiGXaRiMbq8PMnY+FnPZxHtw1ka446Tsym5xa7mUOb/GG8ilzCuX6KFa9TzQV7H2BH8s/8fFgrRU+BE7WVtqqVjlD2rVWSya7TlKu3D3a1/z9uOs+Vnem8UQ+Okl2l6zpf0Gq0RHsGHSs9yUh0+ASOV5DI30MBSJnXM6PGOZjuRXf6G+UNGwPIGmumjtxTz8i3n4YfIMSliAfmApO6sDhS1P87LDnF5H2PotfSbkC+jUEfLIBjoMnmTUZQiiFUl2OjhTEaFFItQDZzBnNexXYIF+8/T7F0fKFh23Zf4bbcRGBRt7MVYVKQMAJAbE2zfPH0OZwqjuSjF9e/n+Mah/aL/aqItvvtZ9/2qEN77hf4zVC3WLVm4/+g+y00gMGlfhvPnMPC8732QJPu4ce2WtYbmOy5eoqahnCg40M6pfpyr7rIkdsWLwFME5tZ6eWkXOzlSAuR8fRSvIdicDIRSqIoTQFGHa26zUBFKUZ6QtrOHutTBgwpqbScZSP4XcntaQUp2l6fjUYCT7WM7ya1iiQGHAQ8zXIAthQcZ6anQP6TQmAR7LXMZPamyoCiAWBHQRhjc6HSOKrEejIZLZLkecwcPM5q551/KFOjLl9Q0u444N45TDEIbLxgAPDTdsHA7M3mA8lsTmY7Uc6jV6NS9n3RFX/xLX1FgSs8+a+RCzV3IhFvDxoI4O0l0u6dg6flbrb8yJpmVYKI9dupI2VpLVhORI5EGhf4sbDcRd4WE0Hxh7hvJZbsFHl2lxYvRUIIb4nEAoIOMJPPoK1ZArz6/4SG53VPYjvMXxEeaq004Z2IQrrcre34Psh5iNUUlufiDBP4ICD3T9p4O5EFQZG97XWehgh5ipHGx0D3Py1y8oFdvqY6rQ7fw8LT7qXkBWT6IhnKyB1UHu3XDwMMZtw+CA+zcyIvRuUQdhhNWQiI0Vw9jMxS1eZkGxz63LNbN0McqVbEhHoOBYI0zQt13JgbAgsXR9e/pvgOjPP784evoS0fT1GiP0wxCju2FjDpYxwlwazTZvdMOXvLJurSFniQ3pIUiYZT/WpwnKSDmjb09NnjidYll4r4cNnAoIUFbArw849XVbzeEaALmdiuTjn4KulgY5cv/+b2jC0Uscqk0XODWxmkU0KVaQiwr0RiBBEuBEYxn6ooDlxJYgmCom6aiw5QYmwrZyIWc4SQtMngsJg9uSAgEvisOntozQYDGVZISGi2kkHFjT/GfrJzK79UQmQi7US1VPC6khEDE/f9aOPpRj8+bt2dJo5amCu6io55SBejo3mjYuJ9+aDQlQBZjsXEZx8sS+Tg0v2jl+1ZG5LDCboOr1Y7TwtUfnbbXgU9yxDHVuHb+6fgAmb/z7qJVyDiO/wDuTnGWR8ViJxMeEmtzkIAsfWIxsfco8mCtWEvyM1wggv4eealINqRLOejxRpNBjKeXYAXa51KQkluqztKadeGp2kMd8IBOuX08jJtz6sVPuTG6/tlNV2DzaS5PCFlSHyqgmpLhpC1DlVpXr0/I535MTCLWWG1NUXOl6o+4wXViX/v6MOl2+6aj1vtbezoPmb3rKDfdGRAM817otCfpfjgSBS4M6ml/1XWFC4a6HojIYdOS3xTDs/eYnS+2GnQ4herd5gM++HGiT+kSaQNHG2pcVZFbadFaqXZfUk+pWs9Ko6rc40Y6WtrFmv5PBtpQNSoNTYVuLGqxMRdXKFMZFzcw08JiZBqG56w1fNK/u4l0jlptH1qmvbnO6E6NYULAxG6yxTqlzZB0pPq8++cau9caZPcW7m552D1+CfSSfTSazKaolkEI/kvbhyzaWwSJ49c38oy5Dv7AQlnkBZYpZnkJIvClEP7HUCyx18gaKLS6hez/PX81n16NpLnRpT2rSPnmDtX6GSnAGkU5Hn+QmWddwk7D4z7L020rxtHg7HV1SpXoGVn2LdY+gqtRsnyqVCJLsn0n7SD1a81xRFF9YpLc6S6d/9rEMryezjuUsPPQ7Cw83d892QXfffH9yly05btGX2cKBvSkWnkCE4a1jZLZu1YjxDWmx3icfdUkd7UnO4SsxodCA345G4ODhBNxthIq2Pv1W1qBx2LxJUgo2bnzlJQTYBjjilwY1eplsU4TI9WAlRqviVl0U6CnFDfBQ287tB6IhSotQOlaAN8FB7gFBMn8tdqAWu7CP+V6AQiFanavLPNwQA1QIDt8c/1RBoB7dS3NVN9jHiqMJxY9ti6XaPxbguME3x/aHo5dHr5++OP7vo2e3wnrvB2pVYx9sh/7T98DgX4nG+7egMSH5O5H4QYXEG05fbS24yzVWC3UNeMmebyxFQH2B86zjZ20WbLjI9u9kkXVb7474xuQgQ90qAX9sw+fbjQzRZEOS7N0JSaj1L0ET4g+HKBvIBDo53Jgg+2t59YiA2tRqGCdPGPGXWXf8jX0BBeR3Vj58ikewiha/ILnulh8JCdn8kdnxwI4IHY/uboAJqLQxEQ9tv6/YGHbX8yT3+i7p5MY+0ZjeFocNWTnYlJexQWRhesaYkJmkizEskdvTu7+e3gT+65N8ezTuWIDoJkl0bIkNPeDdzADbT7HtMfgyZPkbsaSHKckau/nyvp4JCKr1uTHzrQ/nJ5j1HuHpeQE3Fo9EwbdYoVf3ieCav6gh3lF3DEQ1Pod1Uxf5Wd2xlryYk/mpuVEM07/jhhtb2QybL2CM8jdUGqjYGoxoGxN8DUL59zZ+zOjc4W4sh2uJRre50Hhuj+Mt6bd9i12E+hsk7pJt0ZbEbmMm8dw0R2K8sc2vuT+gVr/CRmEx9+8TNkXnN28VCAHaKWyIxcbqBe0WNiIEYhDPu6+fvaRp93QhYwycuBXyq0bXBHmt+YCdJ734/EmquJJOIc/xlVGdenpODrj64Zxq8SLEZ0uYSLiuUpyxgfIVHtLTGkJn9s7UR8gG6iMxOX2dozPIaZgKSKgKuHJIwyNN5Qp7faqSsW3bn3ng+DOrvDP0hYK88tIIVTVklKCRDJk+HB/QiSDS+/D1cTO9HS92pLbHkZ2OgAN0aGcOrXiNVjzhFSppxyju+EMhxHM8hzxX9BfwoYjMTwe6ok4i8mIWFsccm7DnhrDnmrDnDmHPHcKqPO0Nf97sKR7enFPaIjmtctd5nbvsCqvcu8tX085LPgzDZaaqnJfjly1VYKAzPegpBBUclYKTRMWvp4xGinPoPRTEzV50Y7toRNfyCbUlBn/XciCtz5rrLFlgRYjv9ZZhnCMyqXlUY2g/tg0CmqVhuOI5JEKdQkP1ewv4/pF5BwP6Tm4heVdvYLGD8jtRf+RJN6/7pNhMW1YOQxsi7c4QKFIhkf8qkPi1AiJVDlVZhRR9EpR1yNF2qI4jEV7iSD+dPCem03mYz+FH9+lseial8fnsw6PXb1D3glcF0UE+MNEr7X887P21VcktM9+8fnuC7xF68zVjrHhz20J4/QOqDoqsVUNMv53qQwl9IJ0XuRWCLI/v8iVuf298728jV7hPbzO688cZR3qEkeVhZYzXvdXuEgxbiYb6SWEHDr0p7LzZG2zybvucHCW2eq391dvvXxwf2k+002O8lLX56+0Kiw1f4rVakCxDrfrfb/+Sz7cT4mt4JqvxDHGMOwh6NJ3BWcsrVv9ZUOEVguLnlK0YBaEAwV+ZX6vxqo6Ny8aNQG+HItYoQTwH53UxP5/DLt/Bj0KmFJ4g1CGauf5yKRPm3aUcGQF9020M29pv102MRLJt35zHufSWvCyLOz8EuulYxoHvHSU9695Ox9PZB3jmjigj5xW+16v6qJ7ojZe8jKLn5WPmKPU4vcCJQgCe5sUZk6sBAaildmN5amMYeDGa4GNXBxwWUKToN92bveU3g1A9PWSVCCMuIWejaTr/2ADc6i8Wtkp4u2tysZtUVnfVv/ySpvlb1uHWa9wHn7y53YqKvqRzhcQ2ays1q14d/5rLpovynSygNBIrVlIqtPmSSnSqySQ/4NtLTi1SrDNAwlChlyXl6/57zPZQi9q9XpstLINFhPEllFL+HMnH/5fLOOvqX64aG2BByDSOHvKN0Lprjbp48RngSLnkFGJlam8DBGO+kTLSYu7sYc2Gt2OKsTS06qSc1+uIzml6FlIhsn2pfRhBsDNxI0jJUsfXndZ2VUCWfqzFVpdDdKnWSnyplAdhynUxpnQHZXd7m5HcNwUmvOydMG4IlVtABLQbB95201jfh0G5V8qHQe1M68lJHvpQlf0S2jfE0z4NiL91nek0TqnUNsGpNk1uD17bicdsMu5Ia8kNTnS8zcIld4pwBxZcG6znfowUMDYvd6UAjBpGJNFIRldjQO9EQ/C5CHli50CgI0tl3DaHf6Eu/jjIEx6lOqqKm0sxTEIHcukOlSUOPQqKxL1jVbKOV+WRGhHaarCI9XB/G+/fARWGbnhuK2uCWRtE4lkdJucw1s6mSikP3ZZemelGKJlO73Sa5xsF4ZC4KDGUQLZYTBrEHpZzfaUTKadcTxC87IaUrGqNEGcbKULudUKERZLL7w4WltNdXdpVu4GHY4QEUk9zNIcMk0NSpyTpm6FA2wtereTSUtEZQeA1D0JfXJcPRwW3S8aYWU/+80JVnVdvwrss24MiGhtcsgPRNddC6cme12d2DEOWX16lhS7C7TzNK/FSSKUbaaCnhZBRlbkzotKAGGoV/PrUzSwf8EX+rXNnJBIPd9uKNjyv2VwNMv21AB682ttcUeU31n3Y31tVF/P9dckM19TUkoj5GydlSWYzCwPhzjR3JJjQL+DmlVnz+bNvouUhG5QTbQCzjmzl1rRa0sWO2nRQPoLrtm6CJ7tePoiKRNnniJj1QEueOMxVXja/8NsDpeBTUJMExWj5jcMCAVdV6tvP0v70w/MWQixfGldSDiAkW6DAhBL8SPtiJfbNiBc24lj2tFiHuYN0sA5rH8IFIlw2Z3hX003/RKHaOCS3Ho4bvdRETqeID6qjwgBKtCEKTK78fBkX6t7Xpn6xgvkhWsGMS55Yqp5eQTrCd2OdDYwV5cEEV5pxTR8zFjgMgU6MLhWnSWpWHCSkMs7fv5/Kv2GeqASkpvyIAxPCz+uBiliqnhqSOgQnoYIN8cgJtbzBExcGHUABeJFQpgzKx0e0Kylqd4r3T2r7jD7hwxT1FWJ3LX1Id9ur8acl0aTpLVsZoU4AyvqNxqeONaCMjGJkM1paysK6xoiY194IedZ8vRHFhbpqpppCQumYeRltmqymgMuKgY4HBYPQm5lKFF78QmxDsyo4PcR0mua1mts7eY29PCUuvMdZH9mAFeY4a+A7zvpHF88crIYanoGftvBw4nq/ZS1dKPUG5sCrYANs32wG6EaiQdfxwqURK5L2//yKm3l1+6FbzrkLsdihBdIphZckOsa+SnZSLAv7uGpAjIdLJSKMK6qKNMUgSVopNdE8JCP7dhcVAk0iFJ1SKVSXtnpMHHjVrwn7SwBRCtQ7cH6552ERnN56r5/GOm6IHcJfWL+TQpscMcNRWFTUrU2Xqre4U4Ukc/Ks44JiVJWKLiBAGAF49x/+tquhcnb1c6d5L1RWg0Ko9MOVFCTOxFPxLg6x3feksPmrcO6fQAC1CC58naLQkf/QaI5JEG+NDOAvH4Z+iNXoKoRcAh5QjqcBf/XmhvZL1DfCfH8t5g9ui7m/unJ/2HtSaKnQPDlLq903ZdiWsdm1LgHSIm5NIBf2dCDSLj/MVGLrg4C0cwzp5gL3WWqHaIs6hcF3d4EBAv8om8TC1CxeMwz8DBU0ffEor0IJKWKmPitlgfZ2J0e1Dhl9zKjs+QeVBOweLChTY0XD39Pm7Sdq2W72GSvWbEER9va7UKq5/UaU6t56L4rVt9uOUo3mHSmWoWX5bjalA1fGV+V0XJSLaJUZUNiSOadw9p2Fb8Smm9m3p7Z9e7qJfXu6yr7tyUz8LnpanByr1gutF7jheug3M62ZVX0FCS2l+xe0+TDrq59KGxrWp45hnWqtJtQqw3pA2ZvSSqu0RCyd4FCrZgH3FrWxayLY1FK4NRSyWh/4HdEW5YFXtUIYnaKIoxMBn/8AzA/PWXJpHZ4u4zXNrnVEVHssvzuizpQ+iVBa1P09RZht5IbHNST0CvRsF/y1ksAgT5fxyHvMXX+urOohCSVyULIAaIE7x8x1GU2SxL348aBjlUe1gCqoD1e5ZblKLYvtmXYjynEBqPNtsxrhD+NOialnzLnsVOWFN7anSW56pm8KksPRf5I5wyE9EbM6yv0Qiu9VCh94Cu6B4o7Eq16rihchAmIdfh8+sIB7rSrch6hyHz3AzMqtqnAxosrd38Pc6qWqcEGiBv0Is+0rVZNAt4pt2jeqJro9bM7cp5roVrAR5zbVpK/hy9YFZZheCezVqutJaUx8Q8IAhadJrzYWxJUNXGdzWs/LaejorW9m3xQ+xbcc8Br0aAXHELOGTNtsUXzm9ctIzdQ7VnE3Hb7iRtKcbn300k7bOapShYciCTwznJco6itI81O8SfQMbFJRDh/w13/N5+oRxAm1+WTCEVe3hLrzguX6klB7PrBc3XFkzwKWmytCbeZneXlDaKKhIkx1PyhxvAaIaRqiAQgpxOor7ujM/Xd0uqOVl1dp4lLho5peEWpjpy39xFfoha/9NrhyXFHMyFX+Mqa2jHt9HGiNXVXQKvq30QDu5nTu7AQufGXWFke5fQxlZ+4yYYotV192mZtT2IbJ7qtXwQm1Bd17Wu3yVb5J21vJDtdayV79eHjyH/2eo5Brt54Ge1lZxRu+sqnhbDHfyG6Gxfxms4DsZlTKYzbD3N/TatZkNCOaudYzxJeMZ/jDbztba/jCure1e2HN25u9qP6tLV4EwDV2BX5rF5bfwtgFGU2hiMmgMet3syP8244QrDckOA6Ja00Km1sUmlllc9vC775r3n7T7OswbaTXb4NvvWedInFKrJLATyFFGaQIFfVSxUsNlwoYmbcFFajs58+nZ+4mu1nIr/AC7d2Jz+e/rvdj1dvRrhRgLZcj/H3QuK9jiMyH73oHS+3e6PeuXOEpSbziAeYAwQq/v/+eX5h+fU++AAs2TUDl1HfYkOu69zVDuStHP9fXwnV149LVLVvl6pZt5ep2S+Xg1prBb1ELttQJ1ioEAb2ycNfaAK8zJf1kXE+1Zl76/HkdSzJiSWEH2jQ4wpmdnXGEczFqeEUgR2FwW+e2vOpNlZ8RuTd0buNyM70FCkx7NedA48FK7F3EAxvzQc27bbAO9a2w9iE8QIRNa65zW247tzUOyR0PB/HBdqOyekTIxc3XOzZg2VoXt9zn4sa9Lm4WMObcnUAHAYHHy5Qk8W1feLy79zRWvWKgtb3KEwZsK6B1z6vMcYv5Wq9N+NZsp2Ns2lCKZR5LANKBl4EgK/sQ3KITdK2u6giXYdRvlRdIxxcXhXS8E5jkqxDKTpKuHTJPeCelhHZE1FV5UKktjHf9CApdINPwulkv3KlhAyhaGvHtkdzbGsmgGUvCx0Gz5/OSrGDacERajg3Vd821q1Z+32blzmdos9RJfVIH2TBdxYYppYSsAMzPQuwmhze/geRXo8VQcDTEq+K+LkIDlahNT2G9DU43CiXA2Lbb0S/7GiIxpbXLIwrdXGb9fOXIwLuZqBZ4PXJevm4ckPUzdt+8tHaLx5Rj59XVPKy8bJPax3v5xg+0puj8TyzS6DOweae368fteKbCKWGclh4GeHJ7989Txko/ShXouH4wo3PwSLfcr+QOkm6/t36RLW907CDBuUJUNG/AgtU7sPR2b0X9W3yQUTM9gXd1XHWb3pPHXyrMEbcUasCGXmPFBhZojhvmIZZFYMmwalwuNwdCMsTiVBU8Ay6Qtje1Xb+ReWAyZQMTshx5bYepUTyXLOXcWnWoePNb+eoVIs9tTlAnlHY3UkmINLmfNJsb6R1Nsh6snddJ5pZojUrqHcBcJ0Lahc7MhmOkW83Dz5+hNG5G9S132MuooXaSLRl8NBFU38hCHVHk4qGJGIkrrXNsnSco6uMs2fx2pDgwa4x2T6u5IQxWQuPSH61yEUmGlgeDao+iXJYyM3SvqMvsy+lE1+WyTnZa0DGCqC5duNlPbrKUv7NSozY0MBCS9b5PbWhtdkV2gaYqZDpwq1rF383F9WwsuF3NKvta5bpVIGR4NG+scoS51SpXyiTXUEUb7NpMF3uXp3ZJnW1VeHp1OcS95sc2Ggu0vcHKB0E3mtbud8nRyAsKL8o/beujBDYsL8JgAwxrK5Sv1Rj1lZlknwkWH47ew3RjU5V7oeO+h08mnv3l58/D7yaePWKRUOwiYV1e/CIrtD6KS/Seh5nV0gTvtpn0uIjqnNP1jA8r8Yh8yDGDTuRBkQHBo+HSsnEXcCKe5Kc9kL5Zt5S0nUkY6wLwxPEE5nCZDlLzAuk4TaAMwlFz8DqZVif8NU746+T0+ozUxGdI2HvP7t/vPbk2swoxuDYjEAfwKt7Ns2SqRx9aXObyIqIPIRyfPQOQDWQmuzASfDTFzq+kbWVSLsOlMt9iwC30+t4FksSVgIANIrB6nOEG18Xl6mGlCYGt6pG4fx9btYg9RWI3N4ZlbttVhwPk4CQ3xj8Vr8Gt+kdC2pI9gzlDyD57MvGGLj5TDPE8sbNPn53F954b/RgI/Ly8WvRaUjTw9xLIjyF+llBsGRitEvqqnlPN5sEeAJnVvZCqE3r4cagHycS5X8TjORqySbUQufqWfpYTaGNi+bdCCzpnsIKjDByUGNWG8VKn9yDlUJwAHbmsgeFDl9UYIfL9OnzabR2/9+Vj0gwcZuEfUYYZobiV0BfTPyuo70fzhfya1oBMriAnE+aBbGxrG44MWUAjorgMSTMAx9tmAtWJYgixaCTCtogxYnkay3bNYxafTQVGGu/2vxt0a7kw+ht3oVa5dT2aFVCUb0fQeJIY1A/Ad7ZQfn3xIOEHvDNhYybCaCKVNnkOE6qVUXqV3sikSQVrvN4kPT8v6IAO9T7Bq6TeCk15GgQDrXBoK29Fa08LWZV1ZRAe1LV5nMO6hwAmAgcQjTamm++kTC3dHK1qOiUM9e0nRbwcwHKFHovLD8NRAerEEyMiwrjUHZfoI2l0EnszHmKG7g8hOpnxqwKwUn9BRKJwWuhwb/RtTivXeGednKnC2qu1pZr2voWO2hV2Wf5NboB7M/WtPRnZuHLvU24wqN19I9CHKz3vkLpFAfjwvQy7IIBgDOE7Ntc05l2NUlJ+YToyWZnQ/RXitcvYdfkrDtxcJIPRGJQvqeM+il6inZysuKhNLpf4VG+cVi6Umyaejd+BVg8xFiIrPxFJYfDSd16lbN5Fjv8oF0sm+Q9v3LucISxVtZunBZhZ54MrjGdYsB5agpK5wS69DYBlnHba/1x8g8RoszaehIPqp3mn1f0mFQv8F7Y38IfLHxOO/wzew79gmMCUczHBfxf4PV+k8C9Oo3Z3ATP4stNutUNmuUGMb4Un/Ac6G/GIZVTIOqn1K0dmZpxZ7sJDdA9St5qT4XCws1PZfaV4RLtI34vv00GpZhRQTF9+7uSfFu5BLOjq5d3kItTiMDsYmjvCozJM+Ny+siI7Qw21mgbWeS5+/RndSO/fH1avGR/Su+Jc21OyLno2zBY4C/Cb3tGm2yG8AeArHO9x4653suR8b5zjqcHEac+KkEpy2grTFemEu5Dbqgmb4saqIOd4NtE3eJpnDXClrlqqPn9Wl5Ninmtc+/z5nlKxLKxcn2zll77Xwk0g8JdcHvgJjCvuk/Q6M1MKhgHa+vl5C5ZJULvUazKWreAC6HfxJHfpd2G4Bu9CZMfG574gn/tck/TijF2zOTtedeO63bRzxfoxy6S0PU5u9E2a+t2QK7W7vEJ/clW3DN6JjdsxOWKXhZCQofYaGSrfdoywigD3qzXDcUXDUbXn+qmPBNf9WuCuObUu2pCVW6o2+sZfJbxzFaoulI5BhGPZdwQTqT3BlEnSf/SQ/oqhLS5ffKv80Z3a9DD4nH1cOSZHplplcIJydD6yDDBvpHOMVAWCWYR22iNaedtqHRIsQzrsgWQQBJlc1drHvpaPliBZQbZkQhrEZSAbkEaWKe3F7Dksfomu6aCAFi/M8wmVuZESV8Z/aa5sdlddWHpHIMxClyeep6NCzTouZDMtH5coTrjqzq4uQTLZdrZjQg9XdN91x5nPHca0Yg2LIp+V0DyAQN7lcbkgJMEYyIfiDI2sFtpKfB+HSxJ9Y/MwBBIFzMO4gJiFSSsGwLYpSUUsL0mYrpmG6WqpmK6Vig7FVwvEE9VzHBY6nDvVwb3VUGABEpGikM490zKlCK/n+IKM4ZHUN/uobZaa+XbOUikNJzo+rLBDTbJ0cMxDRstsNFWpZDMHZYirwZooJfYCRXMiS8lnOWsydCKp7QpMlCyPTwDzKy44HI0Dlig/5xiIpLn71Xx0DT3WruydOcvLvd+cBkUxa5oVojYxHrfcBljrw3w2HbTOgRs+zOb8oB06AnKs0ECD1wR/4Lw3OJCn/ZwMYLoYIsUmUkwm8yXy/mh6JRzQuMVC2BfJUXxNOrFkbWcAsCCMAAk8VDmt7anijtQzTZ3NNRKcKQOCuripLIZ8mCLoxNdurJkpXlrTSmfj3FK0wV/J0PtWQ4qhTZpAeajLOhRKl0uv6EmTYIXs0ZwsO6bYGbugOIul8l2CUnW8uH/fnjFzdrFmolAz7Z0LaQirzhdSzTjJJ+ssVe6pCIM0bL5Cl965YcI3vzHw/yNq5hsh/L01NZ1pjlRxpDJHioWEZslieB5zk52WP87sR4HMI0c4p92r5uwaSh6YUuVLR+GSFFoEVujgNjZU53wgNpSO0d9LAvMlX5S5No8w0lJuP4FY+N8wK7Z6Q40g2+vVxq2sfCnNgrdkzQ26jfndQ1Y+T6jB4CtoTw3JXj3/x92SCiEa16eNIa978dHAW7LgmlntTNIc9bPf3IPGR+SggTb1r9ou/r1r6rnQ9VlyqWB+3dbIffROGB1aoI4s2UY4uO8ABs1YVMeNmiJPDWT91c1u3k/ai63q7zMFtbndk7S440Y1TG+D+PSHNP8ufuvUdGcMtX1MLainL58bSaMX5d/MwQGxMIHVyuidsKmCtGROA6Sx/lYxbOB4WyDNeQs6vdnoAVgXOg7NRzM0ZfrdiheCK01xv214grIjM3pNtNoEEva3kY6WHAXKed3/UCnmd0glgqq16rthYQ1qyTxNbMrEmyP9i97CrUddJ28kyBCykiHoTqLUPd9NHGM29XmIjQ8602TMxglsMaLSpDyG4xWZFCu/h5tlVaXO2FN2jV6mWqEer1KoUbY23GzrlGmHbKx1bcRJNv6BopCvjcJUucfKNnlEaG4XSPOF48pF+4O4XczytJD3nuCBZnaAcXOUFln54JcmiwA5ROILbXGKhmFMRnnYL8GR2Xwkprz4iL7oEhAY1VHCIGcawByc0nTSWZJ3PjgWHLk5V/+UpejiT9lM0OEWGnUIdneZcMDY+BE+XTvVA8+pxDKnuAO+3N2ZEfkedvxUNnLPAHXpde1hWQvgCxq3DcEROTQwydv7QEw/f9U43OLYFswgXac1w8tD1dWm+8jcjnmAjQ3splaA3V27xbVj8fNaa8fl9h7vAWvZiI2mpUmmJQMu0OUMD9dEBS8yW3iaRayy5LpuyceDnzX2wGxbs3wKhyLyLES31uKrTfNZwjuZ2nyj5mZccuRk+Zj02JXbLVvXDY0Z7cq1oKG3a/Tc5/n6Mdnreez/KhaYquAvu9L+nr/S/uMHVAl/2ZUePPZWwiBlquSGLAcf4bKuei2Mp8Yq1dBqoE//kRW4/Nw/IlcLsXD8kn56ekjB9BFYdq7UCnElHRC1gETZqM3x10Z3D9n3SUXvlfeewa5lIeACtk7t4ilVl8qHDO4Wi/qA+by8CR5fL5yyK7bPvmcf4cCAXeHDAFCNCHOlnw58zj7SoYA+VdQHIWjO/ynNnVBPKQ3KjYmfOkiMvIzvzgRKArxFi4P/kXJXc6yiS9H5wHTDuBqX8vED+tNezl7Jpbu6bOfqPFkkQjoZCBm6egIXEif0CU7ljyEHcJleJvrv5897PeAj+6ID6xsfJ8ADGfrdTgW0/rgdt2HQgRo4PAC4I7rqNyoD9spJ+ZQmpx6UMsPzwlO6nleqGYPEBqbkofEfCwee5XdA18P5AMv7KUPt/lpzEz9Ah9Aoj+sqkXRjS4Y+h/lJGMYDn3gY0B07ykt76PHSnjgu2ghp4AszVg4w2Mw8nfLZhLL2gFITtCRqsgQDdFyVdsLC4FJXKQtPCMia4hQCUlAIiBYpNEROb9gmGLzZtHE3JGcQnoVnPn1F/A79t3H4chT4/qdX1H/hNKqJEfSeTOiOx3GyceuKiU/PHFbKAYZ3lkSnueXbPIUqTPkdTMhwfYF+FBNwKPDMJgSc+2dTHpr9BWrMFwdjvQGJ88Q3ffIQMr7SONPx0uohbgrE/2poVs+yXHSDu8O3MiULb+jdmfyPoTf81IRPLntPpsSn247gNGRfadBJuXZH/OtTkA0M7ZDjcYKaWZrp6zw/zNPz14uUTnM79rEqhRixIDf+sfzg61CRDn1vR8cM+j8+C6Ovhm312Pz2qA9Rp/KcsiufQNUvlm3LzfktKgX/YnMga5wDGKI43rL3g1BZjmKtvOIS5NPa2IeGbUtd8yJlG8ghjJLNsspmhLMPbJ8JBooa49W9CDPPmA9Yhj8qGuPYpTlPuN6YIKLbUCC4+wXoDmcbjsC2atPLty9eILR2Gzljay7jdnO3AfBhG3zd6y4K97oL4TI6GcnubgCCtUjsu/T/Q6+u47pk+YAx4868RY+JjLaQaicO6f9aYQ/B7x/3oM8fKPJB/Y6rBbYPfsBaf8z4B9W3WgQExT7gIkIRD9J9WOecZ1hMrVVlAAQKWB0HAX9we+CEQwRfPB7CuPwjkowrryT1r+QX4AExkWLBuaghS1LMQEfFGReQYszMiFKOUxyOTkAIvf6vV2+OnuFQU460NJORrnrx4hQMc+C+ePQTejM+O3od4zcalkvX3W67ZDafV3HWzWb8Y4i4k5atd7EbdaL96vXxL0/fHLV+PPovlCMZYowdAgnW8uaZeaq68+d6dzQiGD7ZQp9C7JPq2FCkHE8iLO9sp32Mdqw13P2zfFJb1UWaajzoley7HAsf8v5RyZLcuEzqYaBzJZ8naVYZpTczd4yYpuxYe+rWCMGwjSjXy4cLynNzw5L4BgdeTOXAj9nNJP21AIkXiWWJEW0JalhxPd4Gq2aMsvWtC2qdQ+ubrmLBv6P3ykVqZC9ho9jJ+sNG7gXbL12jxnWLFqxMUKBeNubv9/BDLnqe0D3fkvV1VizPqQumDxuC1wZJpkf9u+9A3UwGOx2TAO/WABfLS2NgeDs9VoSsoN8D+B1nfrDxoHaCBZy6w3V0wU/pJVpGR0VHfCPfmXJS8HhgoPeY7Z+ePWyzMW6e/Q1lFGPHrZiyKd5/8GQCnDwNDazSBwF6TSdothqvgCnQdKYRstUQMlV9hwO5/ACoOyd/e9pvI+GKxv7khUjrPcOOqU7lX7tTRUOnhoSg7suvs7n6PSYMsL71w3KoGC4Zr90Qg/GPGEpg3tRGiVUgSrh+pgOcDM7hEyX7XywRWES/pF7KNzys04EIw/CG3PeZWI/PaLopPr8dnXFF0Jrb+/Spf65P/fsRT/SYVy/+3jNZcDjdf+Tm7Vt5ew/cvAdW3v4erNCr1EoiAAcpxabOuop44z2XCKlj+o6XED95sg8y3OKtHOoWyY1+hWcR3bx5cfKu/64XgRrwz9k82meT0RT+9pdM5fQpJ1BZeyZrr1ppf7lcxkX3xPgAmFYS2JOb764Gy2pJoP6WaYkHyqks8FP663Mz+P2H+496kAYOO1MhiXE05cmNepEs6jH1YlnUR6RevX5eHmGD5lQs3p3P37/TPhk9LPH9VTFWAYZWwelsqh+tmOcPACQXi/2oz1KxiPawElbQSvANCGyRTqBQVszysSyVclUMzv+9QFF8v0PHi576lE4l/fIbcdsrf6EjyH75Cz08HkgUIMR5LhZIo58EXBjFdQM9pqe1IgAFYgKq+TCdDsS7XGL/bnEu8mivx9ICFO5or88gl0MTYxHt7bHAuuPinQy03QMsBIi1TKRQXCLxN1NDwR+Kopi90zfWlyPxTiZD/9QI6Z97dIUW4lrmgsIPdzxJTCHZKVVC7u87sN5x7Hj/gVNWXZwU9R8aLFzAj5iK9hQwVJIPniIVkpvys/tCXAuYMx/S+RT0L0D/PRChiPaoxDOxyOcj6SIMtC1mC/EOtjDYKrgWTU144jtzc0gfLxTi0Il8NofUVBJfh84hkd/LQFMcCF1kBn14X8w+wHBgORpwWRR9O/d7NGhl4gPVjk3eB3uNN6o92PfemPbgAQt816I9eOi9+uzBIzYqCjFIi3dlmEH04Fv7zrMHj1ma59CBd1xMRwjqr0ztgt+pe1IeltQwCX2mFHvACrVgOdejRz0mFbp8Vrwzfp/f9tgI+vcesJJjvRD5FbqzRd/2IQNwmaaFBvoYxgaYBzCa5gLp/dcemyLTTsUABk/yOwxVT7K3Yfef1BBqLjepxI/MTlucg9gStqA4uRqBCJfMhQLdSvRcEColRC61khyd9FwgZqVyU09zaUTg3REHeYkBu67r4P37Mqtfy+qHaJLgan2y4sZisBEjZxXibcnIlT0daCazczHFsF4gORAbHflcoawfj4TmdYAc1KSLdAhyS6d1W68FaKrXkAKLQ0tNgxaEVKMXJXyKebcNM3+KbtRabN0UOE0jZ9J25UxlnKZn5Jmy3foUXeJO3HT8byha6OEjd9m9l3bNxAPhgNdkUIJYyOt0oOKVgPJmSZcIwG8vxlrKrMW5yql4YxT0t1CPAMlFfz7DSdaRPUHnOdURzcGO1kM2BbUqJZkeSdzq+4dSOsI+/o6HmR7QjAZ0eNA2Xm0nUjrLhmlsNQpgYpu1FsMZ9KwdlTUOJfh1Ne5y+GvyCkZfXfuUJ6Rqar8zS7sS5G6uFaGcFERUidyUJVPW18in31m3kOzvwVAutHwf8WjcyVk/ZHR5HPitL+PhQUd0zfotBYgFYg+Kd+1lYqIUAwubMKrUXyTYUEPNRRIoNHDXyXc7g12ig7Q39J4M1CUuXIHBS+p5WSQORZfwV6e1ynp1yi2SWd9nDDUN6DsHWMtQvQUaqgbwZm3hvWtP+fEldibcr8rQZUhdxAIyEaYo/eyfSZg5It3FFhXm1DlTmhR/YHg9ODYKWgvBSA79je5XL+CSedVbRZTq+zgESjMSBg+Y767kKZClVMrJ+fyZiiKz1YpSTmisQZ7J2kYBq0u3lFKEllU+WqQFqBwggfkV2p1ajriB+Rfc2QSsruJLNeBDi9S5tVJWl84KI2tPT8UrnrlW5XuzDXdZFkZiw9a5Pe/KKxK8lcNYdmxVkVUj9XLWUiVbCnNUCmCuTgDCHYrDmh65ZBZ+Ud37ukJ+vMPO6lptdzI88EmYyLOR6eI+ZklXCZtxPNFKHYWhuhqJOVaiRcy/huETZ8Z9IzO2kyQ/SEvsF+e66DstuznLoQAvXY5ey2THJze2qyc3CofIIMNw20l+8e7GtOvuS1kGW1K9SaM6aueoU1GKqQQxzeXORjGwTFMbUSfl/ehX0HJG106iUq+qqbAvoUYpyS1SbzOwx5bqp80cweAn7IIWMJCor8N4K0ieJHcwhN78md/5kpQ2S/Go6WxZ4lGIVKZaadIusr6+s8yRpE+S1E0IK7+TSgUljDQP+5Tf4ykSBIQqXqFCshin9BcVsGl1qaCexTn0gjQQMzdoYcTHZpIkIRAjfhDANkCp0clzRjkw0ldACHnXtDOvnKGrzcMwInBDL7g+axYHUgqEsY1fkjsqMTGKpW96rtL2MIrK1Lfha0bR12z7iEavK5c0PUzzoUBVhSduGkqRE/W7I8qlhIciabfL+AVeUxDyqmLAXR78Lq/wrMKJSbAyApGcbgXFEjgaaZzZxBTWz5wIaKx3QdkglZPCcKlenS7nSF1hSUrcmVOVwz+SBHRfIuDfj8UTj6mw7M69ztBrShRnbGgmdJU48lrBmFDUuv1QEVfr9br2Mq53oKxprlTmB53M8PKPLPNOjaxxyUny2tQgcPf6AN+84qk4+eBZ9Ill204YFH3YadzI46Gl2bVmZaXXcpGABKW4OwZF0hlYIPX2siWSwnjKik3UMDvobNlY3XjJnEYPZb5W0SC3gw0jSS4hswsd5EgPU5oUgxPM72RUFKg0h0bBhRoVvwoAlcpuSygX5efaBCmJhCN8N2Cddxk0FVBgff58Bw3Q+IKnwpG2p+pmAg9j3r9/553SRhnd6B11iVj22WyqOwSMa4wrGfKwdyEhvGoLCRpLvuMrdHsyfxCU39P8gdt4sn2wff2SBBvGOUYC4WEdyuHqLh/NBBxKs6F26iodckTIhO91Ge2LMwTXzfIVFmFuMAObwgqSka8QrtHu7ebFaIFEylMw8UaDuyNWxZ6OdkKUDGs2GvE9jPHv1abE58/2PfsHvcT6Ucp4cTCPPkUdcUCiU+lONsPJCMXqmlwtwIqGN0SQTXHH67YJcshDdnGA+1CFgUNymBPXI46uWFGARRQO3iJfmH2dGUoTtCasahsDacjKw0ZtnaYpeqPRNUrdlgyqR/+w0YKC5u+ymw2nNtjZUlG+dq2+roZL/faKpwePffLp9h0PvkbPc0dKkYGtqnhjMgXahCi9eFJJhd6umGCh8U6te3V2uBFXIrxZLacGwvFnLAWUuDs+cQ+5UD5ZD7ivNi7ZqMEER/n5xdDSD9sorylb+UWPl6o5IOHmTtJObuK/V+0/cMwH5e7IA9A9E8NXNVCb36Bw370S2LGdzmdFkaX5uAXXJuEfDjMk166pxCCeBuo7LpiN4ZL2DGVIX7N8t4X3Dw3yzyruP83SespGArAO7DeqKcHtBH2SlfMfftxYAkLaxhZwhJDh8Ymdkep3tUY6ew+9FIm2dTJlJGOfwudq2v4il1ifjN3bSgUkWL+PApgTYXkX72jaTR6AxCXLhkrdgVTUFrkjfrW+2OCAJyyPJGJqvHWEPN8CbyEVlUelRCLsRlGmoF1mxUypP+AuGGftlz+/PGpXZndtIKw3tfhMKH/5Cc5snONOR7STH8orF3fKIG+0FTzxfcqtRkdTD3N8UdP/0pFDzWoVbZh8jN97shHjVyDR/scUUKrxnWoXFQ+b5dI5oakrAjIunVBfowq3XgKHiOnsajBsaVeUOx0wr6/Lcsl4udHAUeimsqIFjKkXj+WWhIdyjLh6c4h73hyCrNrjlQftqXykv51QMaRNvS0AGXW49f5Qbr6TMjVkXFVsAKFzUSzU+AhmEq2PjTJcjtsd2lLI3KBMZ78NeFVFV03EdhNxOQ8P47xy3qX7n67sPxVqViIqzirUm/QWpCIZBdWV9W8b+H5LX7De1BenG5r6UirqmvpSn6lvNfLbm/pSiSsdmsTkvuPqGCSPVjG4fiVupZYYljfdZcobXbuhyXInZplBdiP5XqVxlfcAO2Xrq7pqd8JN9MgqdCP0W3PtAGaJy+DLqDobnhbjONQPouAkDF6t8KXfy8PfwIioWtX4EBP1AaUXjw3RwKEnxssPPka/+LVaw6v2mq7vGOOkHYpSO1TbOVFqiII0RKuCrbB9aQ2RtovrRhevr3ROYZw9GhsctPVCb9yFwWdNVaUUZiujrK9Dsdy74jbShNTaLb2tUekz42Amx12qEI6n7XLZoMcOm/TYoexj5mG8AcwLX/q9Qdhsqb+7ZWC7Y5zMM0W+yNkOLeODg6Pov+EnuY/q5xUpSSxQ5RauqXewyhC8ygbsHmGMFnoa6NeIurn5ifleTV8yj9fVhqQ/yxPNjJbTnMOEjkskL+NsbH1Px9z42NXxrudJ0KbJ3MI8XDDsIJvN/H0BkscLeT0k140foeCGTaXgpY/rIdTc/hHIszKxpRJdOBvsYxDKa4WGSVoPwx9agPhQxuYoERfboMpAkZZOXA+nGsOAo45kprQqkI2tyGrgKWs7mL5wCZ44r9nq5M1hUYhFDZZO3gIWxWVUYelkF9ZGGhNCOlaJdBCwHg7Ff0iSq1/Opjk1r92vB+aGjyA/PJUpLZWyHoATbqIZnIuW/L3xnHWqY8Km9euxLAjkSKa2rFQX0iaOXVV2NvktzN8Ioj96BsfcyiBbxnp4btANAtIpm1LLDdLBDkJCyyRA/cABsD5UQslGK6F6BXflfSziV4Mynqk4C1aSJOsWK9oMYSp6knu2RVzrdX0GM2EwmkZrdyVGLS210bZWCfNl6FfqSwnsDXy1jtNEYjvnD/EXxbGif/Z3dPZPSq2pLgAWWxOpG7LSsswsjSO2oajdCnf2GIPSCj3cCR7YlmhpI83TU6Pvn50afesMvbAa45MUEfEmchXKVPrJkDJW9dSi6A/E0I7PuLGiAdQPCgfA4A3HoVrVrjnFquS6fme5wdaSMZC0fn+3jCmt32i3DJlAQrihm10ncvP+fV+RenClv5zeFqFZ0LunGITM3VNQRsj8YwiOe9KsPAzDyBOYVrFcPKXAVXyrp6K5pjLgw9pCEteFscp8DVwFxqumiWRC/bafSBQszjhlLvRuCl9n9sccdmshh2iAcZn082eamDQtaXJtt6uhFp1dDXW+swZTCoRkPFw6jlTqApjNOkxglLUar7Q2bCF4WfVV+rGYpdzX74xgqeBC5Mx6ItLBJ6sw7N7ZFSljR5/Nkz12neyzpyDEnicPGVyvz46Sb9lh8pg9g/xPkP8D5P8I+b9A/n9D/lVSZ172OmkyubG3ibMHY28Skua06UwaGJ+dJDWeZS/Rj+vlqX9VgTcIT6/YW/aGXbGTM7b192v4vmosw9NKBiLil8h1RIIv0DoOJVHfjvckyttWbaJ/zamIxsF74o5D4T83Y39PqmY3lqc4SHm6cpSumAcipK79DynlSScqbVT4arvCV9sVvtJlg/WF6b/ty/79juFSWRy+lbztiUPYGA1/ztstytJ/jd5iG8No9IXYCg+3bLDh+G0NePPxK+zrP32RZjzJXJf9ncyNbonrdnnULF0LM5qf675BrK1+ttTPNuMMfIPKaDVPDf2yhkbMRWSngigTyd5fsq4bxrWDSW40GbrzujEmSZLUL3BRWffvV0Oi/GUxK5YhJzsSi0poWhgHXNKkQg/ACi0hqdS1kR4CTxFudL+kNfcdWN4Q+8jSrKq9DLVuvU0Np41aaTH1wd+w9FJRous0cfxL4tSpUoiZWOMNy4cxxVL6j6J811CsD6PMqZZ5H/tmgevdNBcvpZdAdNpjvTOMF4Q5VMYOvlBhgz38fq4hqMxAb5AQJTvesSxlo6k6Bdc72bsoqlqmrqmsNh8nLt5Wxx7s/fXBXx99u/fXhyr0zSl42of9pScx6bGdnVp67yyMKNkqvqRbGpcw6QC7lEfyVm8cYPwCRuliqt4rVcSRztPEol2JSg8PdD5RhCqbMp8/k13C58NKRmJt577jwygaQssJKQrWIoUGuPKiEODbVBvg7w4519gPWOmx0uGiODJymPxDozP9tNeZ4YH+8Iygylg7PPpG1OrY9L+AC2+0GhPT0a+BShy4Q+Gc1YfmiCmxA1BZ6gu/B9CjS098XI7BKWNc/111APoOWXpaKfGWZAeqaNe7wug833plBpkArSgcrWhkRd+qrgdDljLZOW/YdnkQ54/Nj8jy6i1jLiBrEDuJiJtmRcIrRljHMdM5saFW6b059McMluUdiLEbrl9drjL5tsMzyGdZspPtPDp68BcZHfBmNBGfoJ8/v38P/vAdIFODuwIGLulr/DL9Sy3Cnoe5HtM6nBNmygaTeB+mzKQx6kBZZ9Rdy6xy8wypXHaUakURWzIdqK8A0k02xlKlM5Zy3STccAL6jVx+anDTfzCSy0nuJlmzu6TERqYolBvaDMWXIeFnh3AHzh3bq4KUNeUyL+WyCuXKW3wbOICpa2kye745F9PoEHGnAF5OQ8zSEerSrrCa1D8Ll8rYlNOQrad906QNjQmdgIkGYOr+g9H88iot/jZbXJr7sP2lx2XTvcoPrDVpqDWxC047E7bHfAVdPBTIiwaQwbRzAWAmCG8MHxeuP9E4XI7LkHd5rYF8wxh2IYBNYse5x8Nkosvt9Hf2dh7s7D2GP/hjsDOOBw3tD2gMKiZx+x5EXU4dqAztWhWWbMgaTZ2sRac5hhwJMWB9L2EnocrdY7kpxjVNVLIoJ+mAppz3eg3LHYRoyHiSe2jYb2Q60Ug9+6pHKEfU4/qXn3qBaCaf8JPPNEXkEw3ky0O3be+6i9N6o2L9pmLVmezdypHdxTcma7dx+qgNV75KaBFPqom4CBysckeNtrwmK1wdMULve3IZvlfzRweDCk9OufX+4DAJsAobgGQePOEkjAckxqwHGPjp4Kx8g+Hw6PUbfFIG7tVHP/ixeYPhH3DfeKsp883rtyfwxoE/X7U5aX6kwSLh+kcaHARZq44Xwz2QFyN8vWFiP94wth9vmMjHG8aNjzeMt3u8wd8p3+MNzfJ8rJ9y0O7NaCepRZdflBaxe330DEVo115oOJev2X51TbgOl3xVeHoY5werwqt5tCo6m+tYn/mG8ey4UWoOZ59/0XD2LNnfsRbHlRqvf40jeFCMhHSGpM+B9MKn/zYHKZMIW4fJCnWPFoNNi+P6sEaVf/BISy3uhrByj1U2p2pI1Cq3+APU9AzpeACq506MxTbeRB10h8lzGTIWp+GiX3BObZqyIC6slyt4VTNoGkhd3ovs0huNsN2+Y73TON/Eadw5lA/VkkgYuT8/f/Zfpboq+lz4o88b4zaYaIw+FxRIeMvo8+GXjD7XUlsc/B+IOY8CvBsUwyk7uY5/MS4j7pBCIpfJjRFNXq6k+bilcuv3qvGquNXpKHzT0aMUkmZ2C8HaD+MV844JqXNJ1yvY36Ynl7O56s+C3kVB5uWwisHZ15U83EbFzzyT5FYCJx98/wSDEN05rRd9/Wp6iGtVf4f2xLCroD1tY2RJsNkQaPcaZwwysxHI1cce8+rhzQGxMEMbsMoakardbw+FCaVeiUBGCDRHbKnxWI9E3wPWFw302+XxhuJ4ZWxOtt5JshqpEwW1cB7Gq8E72w+WAeaMETGlTtaAuI/IfqcyXFW8T2Shcx0JnjVR96T5OMKEV6VIZltHxCoNSD4pBA+IdfqPWLbLd/dD55BRu5pRV8wlE/pfuYfAUfPH0dRd6Yya7w9S4k1BSlzegkJgyt49SQLnSZGQJ3iDvnPPICSdMeFDwlDpOwdGHHJ1jVWDTVP1WpkxfQMl9ENePeaiJmOaRGKynUw02NAljr+xfWxoKSU67JzFE17C1ddd4gWJRrBzENaxN9DK0D5jwxD97NQp0EKhNgzxqRjtCeicORuqZ9B29iQ11Wj3TouWyYN3wOMUr85FXzeyM6sNqjenaiBqKkMbAQJD88bDT245WrcIU/IxXZbJwGBm0ujq5Hqq/AzT1BG6+kAr08cz93qROcaOZUJtIys36NXdnq60SczNSrAUWrMxeKqycTPeaJvmJnzFNwRPATibgKficbAZfArK2QQ+FV+JPsXXrIJKpcqDtc2ZYLlkP2/FhhvA1DU25NhmsKt5cEvO3S7ia3UTPjYMNo8C2xw+1dguMGxD8FRjoxiv1VD9bLg5H+Da0XCVYUXXwM22gukvTnsPlrOyqn7TMU1RG3LuUlE5uK3Xd6fceJ/35rBY1kzU2liaJ4G5PWwoWtbjWq25QDCCty4hw4lExAN63BdjAIq+HyW5Q7Mfu6PrWVgeo2N+LpXSn7HL9NCeMVOU9hGOVKxfNiNql82IMBTJza3MAmkK7QG3tLF2ezRF6B1hSBnGbQmNMrahLAIXyqiBd7WQfUOYXmt9yd4Z0l3fSeAxIZDRCFUmug0cfy2cX/IRpBB4UymrPJHPZecScvb5s/51nua4LyrVdLgjAl60Yn3gagUBVQ+jcqkNfKhztE7zJMkPdIq5nDXSb8pmqPtxC0uPZUGFRumDpQOR1F+PyMKo96Rsk64h10ny5IxOf4BBJZq6q3hFu/5EZDRilEKHQaqSohqAM9CH+BAWgDEILM6lcj1EErlPYeVIURqD+p7G7QOApQEwLF+2Mhy9v0RbRA3hpZ9EcWUIYqqR5CWK3OPW2TgoeVKKvoPKhCszwgMtjxVMlWhlR+Vn5CsYMl5xeFCX1MT2lZQ3tMciM5L7qBltqOxU6Hu4FKWL84HfyT5quO6Dbp6kKXngm6fVa/sjfahYffupdHEmPxJKJQ8c/RyIYIGGekxHR/DNDD1zZrcaDZlNxogzc1sD1i6/meUjAenWL0V4Zl8+HFXvIr7X1/lljmXaTpk2Q5QmC+aeCEMlN0E36Zi5VSH6TWVK2ysWoZ8GymgK26nIb37UO6aGXN6cZW21EDP7J+NWRvnNasFikFtLYxjgK7PUB1OhzxYpA/lWuQrxTcwHLEDppoasdmTCfsNYaQYrX5rTa3bliTg18eRN7bla3mIEo1wocXk0axpCCDHPxC7DIeuyfF3UPB9MQ2XS8YvS5wKkp+N7PaA3FraZQ/FAb5zVsjIws0f/rF6YUpa6xB83+oYXNY21xUL+QLgqFg8dBmoRyAN7tz7QDyX04Ysua8F61etcBs5FKwGmaPp20s+fvTa9NMRayPDlO9UDw5xWCnd/OiaYxpumBuFS0U/6M9rYO+sEXqC79jHHgeaOgX3alE7xqAk9TUd4rFOCb6WLVqrvSuy29ROq9/rLsHzXxCGdF/jfCFgxx/kI7eAVBwN0jakDvVGUBlVcDZd6y23gPs9oRqMfVscO7E+oSbXbMa2aYGbLSEkZ2CuDuhly0PieS4bPIuhVDxXkLGm3YRIiSgRyK4gh00qRApd3RzwMrelwMwIZxJwg9d8Yd+5x81kVj744j26WW0alx9gZEgy5+WID+zWYHP6hrnoeTVn1Pteg9srJoBoKPdj+8kb1yMnACXHWs00HDSdBXRUDJsNRV7OdXNHUDlPxZnm9o5FAWEF9deUsoN9kkBwtjibnlx/lO3aOuKTrTQkgatHI7RoP49JAZwAPv+MHefJwl0cETBHIehK96pKcuY9huinkimzHwmv0mxZ62Vuc36yTlcjX4tIGbkpozSr6tF5c9MIaTQkWpYQMBAJJpq0e8Qq+xCte4ZL45P79Gp/ccxkFx3kA49zTI5yr8WYisc9Nn+S6UvkSRVJJ2RVRJ6+yHHGvdY5WqRiiIUFSKpfe9J47D8v7kZmpiyxsBJ21KkOq/VMfJRGq+PvALWI+yTRf70ZYtuu0Fka5Hvbcc10flavHRAVf5nliwlONLepr0rFoNUdUGALKEvfjbk2SbXft9XsieXk6KK/nMHrTGeO4IotQgCMmzI9ML+6eizowk3bWUkaK83TuaiFbiufqO/XNqj+0TeeUJKwJDzqGrTlNqBcEoZ/Au9Mc9TXdAnK8gi9lSpDRw6JeNS9HDi6lLC5LTbdZJNnaleruL+1Q/cZdXzOxcDfghowS89WUGfptvBBQQRnYruJmBalJaVQl7NVevrt2LgOgaBNAbcEP0rsQcCYFpVr4wxvS3qt6NhayFXaU9rZW6mQmVWWf0SgF7hZscPvHvqv3SOHUp1Ewg8BxRIxen4ZLctlXJ5KJ/FfaBcsT1lRaWsK2GT/LCFucZukZ8Keshd+JTAkVsC4+UQp/+0muE4YYKo2KXMOz4qksUWp5sUDJD3Rpn/ztab/NshW+FhRZhU8YVRL6Z7Y3hhL6boqrC/izRlOVRR4R5aTMaFmjNYImNp1y05pnXVIuSh8WK1uPiM8kXHgSqbSznfPs8JDFfYOZht4zismMXxUwLdVffSndQo8YasfVC5OyTs5UYVBrrWdNvdINuEyeJsi/YJwOWaa+ld1hysY2dLSHGAwoPTfI4PCdd3x+pFKUowEM5L4MvUtyyeR5V6OUlF+YjhO8TEC6ljdi44/YyUISmLkyBp1p/ESQF8IY1rjxmXK5IwDLJQvmSRqnleVimrTxUr/pwCJQdpBrT469MMrKT8RQGKy0eThlc7m4fZR6EJNGWqUNIixVtZunRdFJ54Mr5NAFQ20gTebkV7A9AOTUTvufi2+gZ23WxhVhNBeab1rdb9AZD/7gzIY/Ew7/QDwF/jsewb9yJ4Y/cVq3pWUdJnyrHTLLHW18K7zgPxANHQuO+WxlndT6leNxDBvihdWCbGtqRnnNwpkdQH+iLEZozMCwZZUYpTpXz79nQv3stJ8enewefn/YZoE4GHqCcyEl0unVmyRCNrqO/LWOf/FUwmRcA+X3NtgeVnHFRr0oRT5kCFU/TtVKhKrvYoJkSl1wM7ipUN4SkZiSlDLs0nvUVvkSCNWgtIKWqmXJJZxO4Ia4jA+S3K7UyXVANssrNzbIhcuzAxrIOAPfhRJofkiyje9HOchpcHUA9wFOlaiSfh3VfPNOPk5zcMsL4zoIlGxKqjl5+jse68X5BsAO8GSz8ppwHdu+yrl/f9ydXV0CGRxSjDUlnAv2xtpXsiNwf0c5iQHBjGacUCZFrMI4kevrkIZSmJescjSn71pGjD9BBrRZFH+HAHHEDbL7DO3gxmmFoIwNlBRJpfwVc4JFMWYcE8EXVT0cv9vfDThsoOFD+silSYpHtekldDIBnpa/LufQClKD7/TLLVBKbTvHwfcQ0DDmX4RlMs+N/KsZRvgZRlgMw9H46htw1SFhhn0c4jSj2cwmiZ+FByG7SIRmChqBi++SwYHVQFmE+nKxC3UnnoxBGEYra9qz2qeXOh0r+TTwMGq8lSxplBkiMfXii5oyfeEq0wJT9ABMMKL5oq6FUi218uI/VE3uK/zVzJSboHEMPE1lYHqhVtTYOZ9VbAkvQ777+/Gbv717egQ8uvf4HSw67wBP3PvhpUAPvj1j8prU9qrSbea/lsM5TUq72VUx1mYKusIigZ05pCvMnprUbioWoFnrwtJ2ZLCXG+GsmOVjKOBe05T0H8WpyrNSgpRuWqJU7d1ZTcVhdJCDKzsIq3Jx0gV1xb2e+k2oYNqSeS70iPLl2nHYe/ioOg4P9z3jQKX/r43D/p5nHH6XYQhWjINSKHrb7cv+vS9DnrAYmPZo1Yy4qcrWeze3Ou7j1m7jgn+9fVyll212ajZ1sL2THIQfXSwn/+K+7+zL79ZSGMXsapDov5If9DesUbM5uiJaSQPhvYvGb2TNDnhSgRVlaPeqJEqPRS+E/KBSFJz4o6CeBnEjdjhsWUDUI3l8CKC6WoOJ8zP2NpVQE8p4WSFJAzHqZG2iRgMtNCd7SOLJIcIs/ygyMPhaQlCRkUSf/BlXsrcQcwQEhdsfz0Ylu+aVaHcmwYINDU6cCTYAliwviqtQmkYMrx2rnR6xifLXzcWo6OTfDMIdwab+orgzii+eTGC0L2AEyTJ+EcZc6/f4ZbZjO1PHTI1IzBOu9Xy6wQmz5852aTmmfeu43NzsEm+NbQP3MgUr0CSR/yJjl8HD/1xk0+73owEgKQawcZQluvNFCpOQfuDOpk41PXnKfej5HG/RNXtGjceNvjEhslz5h/q6F5uq3Wk3G12+0P345nHIJjGfwa6mg3TmnboPrnB3pWP05oHNctgFLkN4YfxhOCpgx9UF/ksLPC7476PXP4e4AdPQhuLXNzMJAkpdzk7kbOsgkHi8W140pa+jKmuhyUIXVX/kpSeH+k3yTi9k43BnAiCSvLwvYqLfM8bGiQ0heRhahErPF1eFehFlzNDiN1miV1+FgKlas9IkpUfYS/B69KkNKI4O92Y0x/x9vyKp887lcLRgKeuhM0WqmU8NRWjV22uq1/fV+7+xvgT/Oko2kplWF/gRO1lbrixY5Y+5rkDHGvVknJ/yQ8mgNgvgG2Xc19Gai9kgwX+1xoxf6rrFRdKezqb6OauWPmRugTfurCWXSfROymbAwxASYh/MaEfHmyXTMc+IsQb84uiXoxfvXvx8+OPRs2RPJ778+Z1KP/zb0SG8b6GTj1++OXr96ucXcN1U8rjCRjaaFkcpZp8mdjbwWJyfTs/wTIOLX6OxslBMQXa+PT8H98R0IXC10XVmA+3JYDEgLbYiyU8zBfisK+GxAhAq7IvBCrNS8NPiDC3URTpY3Pd19QAyMXJFPAGwYwfs/fsBZo7R58CMinYqAcPAlKdz7nhMtBc6tY16uNwGmBSAnRrY2PWdduu0vZN2cRkGU8XHnfZZC3+bKK1Kc89h9KpevfdQShYFtpWFxgnxNDMgzlie5EainMrDdSxerkWz+SS9VOysxHHe2Mlq69TR5wYB7KyvKpRWD3ISIPoJvZwmp23J2zD5NHfDF/I3/NGKYFvzeFvFACnmm9oc54hUiQfuuMpEy3thkzkbkhQLqgzZubkcTQR0YHIelTfNKn+QjJnBjHJGr4CVYCMBggAkwRQmQ6gJPUnH4sVsAApU5WqRG8mwUY+9jzI9Krj/lL4mIIylUKBFu1aEoDknEDoc7V4nowlREQhhSNOsF4uGSS5CXIASd46LM8Bc/UjyGKPydNwVbaUNOfNxBUONkH/fDkthfqBLfK6jHJne/L96nmky5ZzoXE5YHYyUqpe5rbbvkQIAM2gxQwWjDXCQ13WCnIP6W/kT3r9vfiIn0y/kZvqlNoPK1n4j60UOFKanQWQDYwgjsgEyCSdyoDI9UdzUJavq3/6ZmpuDneI016IKasK3ma74UxiJkndLxtbTBS930fJEt4/hk8ptcCMMUDogFro2FunkjuxAcEl15nREWJ0gwsiOkIa/LKx0Pt1IcgPZ9tMAIAMDClDsmAtyccvwn1di/vGXdD5Ks0JeLNMuMcVWkTdA3a+hMj6tlDvTBNvt4yWVBEbOCw2lDXs0AVOAKqtct65pDbOgZ6a3uoZmePFvo/WW+nQxI2sN/ogDJ29LhRqr/DEVaujYaoX67Ov6B+mFDrVegaFdqCRdd9GvW19f81TdOjZHPx90djkGQfqLyp7N0dhjAvszfbmrCYJCh5TWqx8PT/7j29Zru3a39fTkZbffUrPI3OmaTv2F2yELdCDeIhEs06NQxp+SI2OujQJPL9EsMFosQPbowNzXz14+vQSuya7A/PDUXEnQVWXkWzWjtNBvnnhfv+uqImH3UppDQlbe3qr9jqOb8jgtuu7i5bKzn0ccKkLB8mQtZPSOsMwpzxCR4leC5RoYZuJx93Jpu+nQXL02x9/X3cMiheivty+PfzmCc8sX7LorTw5Pjv7zLVxde8TAB/90fXHcs/xw9JphEGx3pOxTb/CiObozOrSNZ2xLDFbfgHeTloMTZXpUljDuW+FdNzNlXXtgwxDWjTsn3M/HzxTRZiNuCFbljW7JGtvS8OXbFy8QfLu9GfI/H745enPy5vXxyx+wmgcVzWEAjjhLODdP4d4XA6LyJymJ6DzMlN7HOymeaJAaTWDGFNd1d2QO/i8z6L8mf2rb4dM7YUq5Sca3y9G9FDdznAQtkg6UeCXbFPusLBvGTtnVXHFXxFiYUPu7oUe1D1tPWUIolAoMhtxeTRuopicozV5en3qHPwMP/uPNu5NXR4d4CzrrS2oBs6nd6krwtHnlqlv6BrtpZ0W1U1GjA6dwJxIYFAgqN9kmhk1ORRyiRTenoJ4wT4JbjbBCwxlUtcHyt2lsQc/kJIFWtx9C3fFsk9ZwtEHi4FM7eMhj7COd9v8PFKI+a/X/+rDX6vUi+f//rY2UvF5ur+eUw8HVeCBt6yqzCJV7DgLpglYCtkSBlUaLl+nLzjA86O9DYWGCIK9BeOWIJBAVmxVhdK1PPYrRJ8HdrBK7Ie4ixHcYoi2e8IP1pHz75vDN8U9HagxBxQSgb1XDuFeLNuCAH45eHr1++uL4v4+eVSH9QPhqiCVXfhW5i6TffpF6I1vMz5wluyBl8FbIEAcibVIXq69CjO11oqBpupVKNUGixXSlKOyt74C/SS2Y3AbPaHyGbgDYzbKysVJ3rKEU3mD3pCVSw76pRY+BueVx61TunDKWIQrW1kQ40hVMHFWeaHxzrIrWz9PiY+vDHLaqkHlIQFEGWOh122pHXlNKUfC125jn3sTkKapMrTwJ8Lmperbz5JS3LQjNlfMQ+lsfW7fLP6UFWvxrHWYtFamKp0ol+JYmJv4FYXuVYxrI2RnSRjbRUm3o4VsgNfKdxIuhEtza6OYpEme1pMS//xSN+0/v3beePWloNqXeGngAIumcrx3K3B1BNYB507jlX2S4bjNIgRylvHFw8nJM9FfSQKhyo5IIv82C/Anm6YfD9Fy+tiBIqMz1KdY1zNEW3pxSZwOMP3LJcvJxAqM5H+UtyFIS4zodFWiPxd454GgUlVambzj1NFN9IpFkx2k7FQtwXpfxVWeRN/eveytyweHa5AIlIYEizQAHJISO4mrovX45sQIaL2wEqPUWIX336NnRvtUm377NYMPnGhflaOQSIGvB2ginmCtJHC9z7c1UL0aLH8VPdFbs++U6lJswlLCJV3jZ8RZGsyvhTRye65iR5dI8NYRGQvZUriH54lvzV9qJnxqVWr/Z4R7buc9QZeUbVDiJv0XLe2Y9IJU3PyDlTPpN3pBSFeSDULn9IFRmPwiVywehssYHoYJsuxehXCzXPAqVJdflE0+ZfgZKiwiHpuoVidCi9JsZ0dk50NT31mjqMoQJy8WlUVCVtSN047V1k2qcxFQ9F8ZuwHuiGE3R059aJnycQSbHilUmZs1croE5Z3Rz7G1VJDIty9lAhuXcaEec4eGrtW7mjnJkBCGvSbuugHEtZqD4yDv4eBI81aLjyM7oNEglmqe6OtWmdF9t2jzWqp5gItXzi6XVVHSUOOj6UEspvtM2NO18FJehq9st8YoANfpEP7VanvYc7/A6qp43adH5xiyImm29XS+vzejbF3QtIjRjzgv5Vxaey8+K7euYiylW0bkWC0aIgK6Jv2W+6V9kn6uhrh/khosJsZKJUXLaqMEkwJR5ob+acdIlCSvzRiHhJcvkia0zOI2pAaCQTal45bbC5SCn7TvNb8Hl+MpguGRKVtjHwA6inz8rJK1o0Rwty6p9t0kbmdzfvjHEuhUlKrH1SsWmO75/Cfu03vqv4o+QOUSX5theObpgdCmnn2uU3IhKeYjA+G8BRvZGDsD8ADYmhMP1AO73Nd0EeP8uSzk/kUjRRKD3sPRBAcZGO5b+OLe5WF737KSwurlOlarNCnoFDS8bFrrBLp1WQNvCaTvUYXny+XS5FA+bdJaUlwuDInwMye6LZbCvAkyU+K8jbd6q9L/cNgzNU8x5lcM/f7YlPQYi6gV4QAuwnR15EmEb4Uvef/zAl/ywv1dLxpsb3fVzc0LpK/5LRU91sEV7dFhNgwFq9knedCTy+bNSlmhCk50fr+xkY/xnAgJ1Ygv0iXEmzU8nStnCm9DWGNdxWwkwe2wcyi6r7S1WHlPlRis5Ov1g5SLUtWWrcKXy2OUtfWGcplJTv7ut4/drioAWQszHWlimNbpsTa6AxtitFJ1JL1uFSCHh8sOsZc0IOVSt//irMQbsyl1BOuVlhu7brho0qdoY2aOXxxt5QwhpHsbbgLuuBKKqbkQDFtQPnGy9Zr5Ite4HgFlZVmkjDdSIcuY/i1FqEOjnEpC9VnvfHjBrib4uGwbcWV1CqOQkbH/Me7eGau0Hhugoj15ttiiRXHlN3UFO3TNnNVFdiJVl5H11GoraBb29fP+YKBKGrqq23SIZ3NIUnYeojaGUgHEkLjXyAnddFd2PCnne59d5qFmxYSKqgjmWDwng5SI5vh2AF9ie0ghB0pnBXy73E2hRniKtPl88QGDRKmDLdUoydlHhFq4qSqPxhdl2uPmphv8UGUZ07zsPP2mSNa3ZOHyV3VyM4nGu7R6lBfRyJsuat6eH9ua33izpbKhn+PL7qNrzsjAbJMaswMN4QDffxtfyW8x/wZI6BG1gNIGBRTVWyFEt1KjmEJNgQvqsezqK8iRUFl7F4S53I4E34U0pKofrTkfchS1uNcBUC1QmWnjpNI7CByiFw2MbJmiIyFplhhS3ldImLdfnG7HKm2LjzZD1aPwg2VQbx2pa91hHQtJJLprJjbrKxTo94+BCMRioNjXRdFbGcUYKzr2mc/bPnzUYEGMGYIFMagnsaecCJdgq+taKL4nnB9b0V4KwzrtLQa4eiUB1XG2YsTRrA8VPTp7u4rj3d3/pv3vYDpd5EmTxkNg4LlD0Ed8PbX4vFGbjzlDtknPHZlAsl/q1C1srcHhas1yJY0uWN481IVN+FLDCTs4Lga6n2gaEOyLrJnRnW+QurnQJbOO2BnegPutEHlbbeY1vi0nMXowWdvimv1OHr18Y21VTTzCK02eN295UJazaZK3qrXQhbToTWbKgboNKlQ0q1SYot0GyQtnRrVRTnf7gZIGx8B9vJGkY49kTkYTMm7ckCdV2SFJ6GaPeeksCeemj1B+XSoSDY6tLk8zSmLjr+azNadJXmg3wxQs7gm4QCs2gHX46wFmXUvVFInxWs+2tGMFdmjG+vsXsixvMBEAgqm/tz1J4ZgHuNfA/4K7RlJcO6g6LkZkz9dhhtGZCiPnVb8rWGrgGheqKa8jBw6fUSbl/f0ivb9VNBhiDoYM+czvoE/Wb06I8Zs/N9+fPmKz4HdPLH+GNfNql3OmXgR+ifIoLp79H3OSMb3KAff9+KZRy65uH2gqUb3Me7e6oo4ZjYUV/TjH+K05Qm4Sk9zHheMOD4bTpZHhVZ1ERRMGMq6HDlbTmOhynbBckbrXVIvfwq2PHcM2XG8pll/DyhgU07mfFSEU2hEsEtDWDkI8CTzieMjSTR0Uw+YdLXaTBhmxAh3trXBlgNuLlaQPHK0H1kDwE9HivdnsQyd6DeHhbYLTgaWDB/t7tobkeEITcYwmNr4N2a48HDiqWPdJ5mPumkOfVdWG51OblbSz3ErHK8WWYLsBFbQY+QFr0tQboBLBDAOBsM0P4xl9IcMgWO21UBldxWcKbJEIer/LX2LC3Q+xtMsDoOLGBFwhMj/OP8hJ2uobUdf4Qa50/xNTj/NE4E+kGUXo1vWGhE3KxcZc5ccZKHhg2tmFE//A3iP5m6MnQO4AmsUEtVnaA3yzgV3YJtyG3vd0l+P9sNKpyPqJ4VPkzrmRvEZJKQP41glKDbaNSZd+8l9yLBV11z+UPnFl01z1WxOzqjffw59eHvb/+jhff00vLzm1Tcftx+0mCNkp5pNru9UDKo4itx2cJ57kN4XsVQ1g++VxNppSqZGUVmaiRyJzQOzvyrv4gHMuTkgQamN5K5Np3Qwt5Uwr3DfQCR1YaxZaKzWHHsBiqf+WsGVsHs+A0dnV5+dFm7QKvDxsmQ/kOYJEU8q+C1EZWLw7UrRqRUUnyLG+zaQzz4dXVmzf/tfsWFMddgL37HNaR3b2oBQ3vglj+n/n/TNs7nbYlnkEUjnfaMiPcQZv2BPuDyUOTrK9s8z+Vwjtz1tbgoWgOP0Fum4+pqvzBPcF59KAzN2c/7NGDkOnHot8XMxiUD5ri3zx6FO704+kO9gr1190XIEYWiNpHjRpmfog/eFFDFD6gG4f5ODcfF+UHGJDDuDjofEw+kELSf7TbZx93k49/6j9iWSIAIY1ryKyb1DO6kS74uEP1Q/bBeuorw8750IN0q5jotP/n117P/l+bFeHqQle9Xq+vi61UQTsfCe3HIWujxomglV7jxc69tL7HYApjDc32H7S+g0larUEcPppb9K32oCLLasP/0R7+MKoX+GAXiB3+yOr8gcyg3/f1M0kG0wjId44zbfdclxzDBHmPE2SS5vgDSIlNNfH5R+Jz9TMYq79DqEXSZ06cENujN3dKfWgo9SGMh7W71ofmrnUUUhLLoR4JImS5ZFbpAXdMy9lsZFIZTK/JA9KI9odwEnUupicnf7PFkZAvmZRCaNhIoaErCYYoCczH1CBoigBO1UEfms4AbpAtHEHpxy0vVZdcPxuu1brXi5RefMaC+BjWIM0/4vN4tHHWe832MlR7aKc9NIZnIWKB70cbGj2H1UTMoRxosIGHTPq6SLQiTUBJqr9COm4k4Ngl4BgJaD6mxAfW+NtXYCLr0DBLd25YVnHBEIrGgLhRgaAkXarQ5aIYTUawjznA501Q4/+me7O3hGtAu/+cjaYdq0QYDSXkbDRN5x8bgFtIYWEq4ex9/vxWu+uY3Fb7zztUdufP0kvcwPw/eZtv8H9aHwdeIm0cfsRO1paaOFb5Y14OAx1rVMLpoamH8C/KX9/bUsEX1rEdX/6edc03tC+ZrnuZLsbQCfyzaDMYtjICsrmwfDYQSmuWHSc36q3bmyWKPPmNN2qfJ2353aZElEKQejXFw11Kz9Hpp0jaHJRTSpVPXaur8zBR1wLU6Ee1GUp2GqIc9QxD0pZ/BLdzrqY6z1NrUQgB7cg/lawP6VhcnXtrOd2idNWxgHqmkYGe0Q/dM8KTMrBvvhz115dDffPk6b55cnTXfFlu1yjdHTMFWw8a/dJ9Mz+pII2cL0814s+jHvpy1YcvjwbQn+n2kzKqHcV87KT60h3ET5OpOxa4iQpnJ4164lbHht00g7mbSBhTYhVb+YHo6k+Nr5uvMa6mauTcVETam67RdlM14tVkjXo12UVe+cq6DgOjRXfEE3jGSn7i3aNJin9Q9Txoy1S0uKpYT/wwLpMyC6dlkuK/6ufiKkM5h35qKkFR654Crx6BNiJHJWHXoXxP/bqCPbQ8ZVfFP6Tn6MWSBPLnJXzOQJfnCbUPuPOdnTg/1b/OZM1lPCX5ry/Qr90BqtJd8Zyhws3ap39anOH/WpgatZkGzkoayS/WNt01RcxvvaRraQ+5InRRgueRLyuaEGlZtJ5LP4UkZWliWtbLhro9Y9q5AcpHmbotN2VqeCJJgTDOFblJukIKwlWw8AuLXOX4YP0hLI5Zmo9VXiVRj3cumQm8Y5zCTiIVdsihDuNIrakPEWAO9WsXk1YCq7MQlb8cA/yJIA5USVioa8DgSZeW7eX5CbmAicqGK5VcoPV9/eo9QwrbUyYHMz78XTJNJSezXC06UEBTprEAHgsOgfOHdEg93NkJ8fb+9rt3hiS7cH4EvLfTho8hG4ZLh5W0uLQdm2iijU/px5ksWKmKHa3WpSnbDAnrxYavkF8pFzgWf2jY5R24RljIzJAN8a/WBwkjLdNdCUVCYicJvNuC9KAfpRC+YxUlLGrYqxJuuzgoq1reTVY1jAl202r5uOelijsjiQ7ExQTJQVGvBoTgqpHGolJOqHkSV8QnaKVv1A9b982qAjarCRB0KuoB1zZQoxelFbp+SEeXDs6pTJK9douadc1CiLQKdABxiKlWO9MJt3sh86wWbA35XVwU+E1mlS6q10kxh+364qUQXOCWQV8U66JzG+zD2urq4KtWeSKzO5F78Vx1814Pd4KQneosKsVSWmydpZel7ppc/gLapaynTqfRjcH0lfQFZe1P7SRDkdT83gqVoBGXlCBCi9jRpW9tun/fl6qZURmQXDKmJAzTcvRTVwz6J5MtHNOSba2u7ZSiEdUnbE1TNFzKKTZ01QO9F93vPQEVZa/3pKy+SzAZd68b2NnB4a5jom7nbkAnZL0naVWRMU6FVsZiOHqvnpxRJNKkijnBJPAxp5GjQYRU7DkvgYAbVodDZ7UhCGmSmpxAh+mQEtoxny4GzCT7EKFMDz5sWIJkGYqE/MAaXA7DEnHpgeQ8wQUahhGUet+gLSz5aYYKaawRzzRo6Xqq/N3BCHcgHfNPVcqZCRJR+qnsjqufupppS6qXLTE5v/zYwtQ2wyZZpnRUBTSMSvBwEIiRMxuDR3fh96P5AoOLdFvNrXSoF5o3mLdvmjpluoOesbWGUSOOgZcGE3DrAiZvxo9x4JjM3MSeVYXAQS0FH324RxWqSrGdRDWQa5QWmag/+sEO0iuTqqtuZqvyUhZodZ52YaDMq14kqdLba01Dhk7R+jd1h0rolLIEMaE4VYDP9M2V9mgm8FYCOopS16zlkSQlAkIRB6CgCv4Lw3lGdfSj5LMpH2Gdqht1mtyonRRY21BDiGxJhsMJ8AMFaiEHUivRTKepuZbg7ASudX39NZl1yVj/taPFcsQ+CzO4es7Wz0tD57Zm8H/fkY4kJjM4/ordzG0N4VhnuWTBH9AUjl1rvCjdPHLSxevUv/DV6XfH5NlGTH6zCXvz0QIv8HoJES/XAu8Pi+71l6Xbx1L5tk6rTdU5vtShxGqOj7Mkk/yclXyeVfm8TOiqeacBZOpnXMkmVvfeSYK3jHQy+7GWEvtutfMIi7I75ReIvbE7MXI2xaNRTxzSwZQmRu5MjKw2Mca3nBjjO5kYknorXLXcR27JeSuXqeXHTzOOuWoq4V/7jGmMvl04t+R5E/4zeI8wzjN8mc51/tJ/++avzB6P8N85aIny73SAfxYL20lsnmNJOPGCf3Gy459ise5Ma3rrWU1i0yIjsnZ5vJVOLjHU7F0xmo4xtMw9tSc/Lbmslw8nZLCqx5fzjzcqoPTXX92q5W5BuYmSlU2pb0Ap8nlQ5/yU4bl+R+fimJZXg/HuP8DT7pAKhyHBDHF3ovi986gXdufivEiBub/poM/FZ/z/efjNYIJxx2yK+3OaiFM0vCVJgq+QdZ8dvQZwYHHD/zt6+az16u33L44PWz8e/ZdMauMeHgv+AzFJOAO0iAwSRrjM5ZH+OLyx36sZY2BZUB+GWcpf9ffQcQzpz0ChQjIrqn8YARt9UKJE2UO50L4b2eUMhVbIBJWq0ww762Qr5tV/SnILlqObhHo4NB0sOjdZOsCQociuTB7HWP3xCbgWXHHBod9QZ0mv86SLBfSsMz7duDI4KfaebFNej51xlduiKuqm6NbMzquEcX1RJF3mIZvUi+EdsK67y3kY1wZBx8hOnBjZAPEdbE5oZBFJ3NMV+bpT+I3TANdqO8blwtdcYztrGgDxPGcDdmHkzL2e5vYP4c1SJ/WXNS7H8Fr0bjtMjXdQyjja3cEWoQxD8raFxJTXWwaa7MDKOGqleGsumALwTAKn2dZc3MbFaNBEgnrxME4PLP8tn3wzYb1Khnx/9MPxy5oU2UlXiBjYgk0JMLr3ly+vAvhX6Wje2es9eBwyG5EpfYfx2I2ha7d3LH++/tHDv8ifapFCD0ysIUP7R5cfu7CJ+l5A86I04Xtz0cEBX976L5HOO94CA6tAuFtr5Ol7cG+iNjyZ/iYo321hZ79n5EEgL5Q7fHn//lxHg8l9dTsHb9vZFF+8aDMZ5BdhqWWIhetlr6YgiSuFZdmTN1R4MQQl7KWscfLGFMQisuTPVagwqul09AmUuioePy/VuF2eqCmMDoz5QUc+VMJlX7I1feGyL1i4Xpb6QoVlWexLtqovWARLYl+yjfrCsS9M9uVYRtzhOhVZv7FrJhomP5AZR79eiinG6y06pxp8li5G+aG8wjgF3z90s3kagbxhOn+6wImJ0qzNFoviEDNZICbpSH/DtuXQqaGFI0wRuiylvTzD+SYNdeJAJLqo+BWLvV2kA4Qu5hBN+BQuSUBokVBn5W6ZjXtRYjMu68IXdgWvWEO8+WgwukyLE3MlAaaB//lrcX7FR0htLIWVjqZKy0UVEJMwUqeStmTCR6+8GKl83Tf8kpTTdEN5vQnlkEXH6kKHnCmRNeH6XjK6IyfSRabWCttYmkT8wTi6QamtH662a9ua1Dul972ZSUXZ+IErRZYOzJ1Moz6wVOa9hYF5rM6Z8xA9vphITBm8vzvmoCKmp2hksq+y5qRsLwmblBp6owMyaAMKLr1ZtcmMTqXTJJMuuS/sEIhUNp/vJL6XwTPAykJjkc9H55fvDDZvcAfZx4eCz1v/vJqct4BHW9KTtgWchDsfkKCwgZq0lPrcko/bwk5R7kta6IuqAwlb/1zMpvIBDfmFZVPOdbU0B6iYh4A/LDJUCMT0agLf51eYosYWPnB3KT/EryJvKWwX50JwSAJYmJBh9tWUfkFdjlSXd3TgNa38ajL5mKfOo8aBr+d7SVv5Ol/NRy0uzNc5KKgfZnMAKvJxC65DyFqoTbeG4tc97Bj8bw++W3oTh66I+KYkFMHxkvhISUlfv8pP7L1Mkh8yAXJkgcuZBFx+/gqUVl/lh/tIs687/9hLTvWVXK+PGRfmy+kP04oidqubwXdHJYQmA7vqZmC/54ABm+ueM9Vz+fsddJ/9BN3X84u9ho6dYEfo6//P3pv3t43jjsP/+1Wknmc7ZkVnRPmWzOTTXNvO9NqmnWOz+fYjS26ab2LHsdOmmTbv/QFAkSJlOse087tntw4JgiB4gSQIQr9T8Om0AFGAAJBCCDQRrODvHNIoZAK/H3rr3JL1GcjmxdUCRiletXxcrCFg/AnEEAxgiqQgF03E9qNCgEscjjmlakKgowE5PSYIjKz8Mp2rCN4H4TdUKTIfT84uxinp1tc+HB99OIV/F6QihumzgOPOFGQiTqHFca6EUBHBOawGi+G1GM/0SmRx+9D9vSUPXkHefeJ3nyrOEbCLxOD7nRR5jBXXEWubqlB/KyrOS0I7quIEeaIqriJvF8pnDkVeU8UfU8V5wd0TXf8trD8v68+9rwP+OYblLC/EX8aub8LCw5GWvtdlJfftFjtMSoFfcLQAGjMip68R6JYFwos4I11dd8NI+qJA8z1d16GVoliIOtQQAA9EQESiH7Xa4oEsBjRZQdxCTZnqF0QtamKoZwySaXvJuM9pNWOFLwNNK11XcDmy1R7KDQu0imvvRsY/DUw8npEt8yf9nVqZmattca2C85WZYfTMSFLLUQI30XSFjJYKcwklQsOM51B5W6OssqAxlLo/WrJWUuc+RQW/kHwKU8YQKsAwO3QxiO7wESJRmG/w3V3pUenqDeZoU4Vijbz7uTHS8w/do1stQnxqLPemgbQyq0hj2Hj5cwtSSlbBONwJwyHaaIdARWt7EaEGolyVYgF8G9eARtl9fHMoR9jcKS7kNNYZvFxCtuuisaV7SyCMKQFFcVQN9Xh0TAZGshztGoEjOhSyKimIYIT7EmuU2kYlFYW6fI7nohntnGaoqbR7caaG8gI1Dg2wp6uD8aDaedhoB7NDyo6zYjacJrMgUJxPfBycMH4kdcyadidBxOFfMGH8XB5Vvs56BJASVRT+Ds/V3jQRwyPdo1/qTO83mXrA6STNcBJqwDUA9DU7FKB1nYgZXAaQzPUABKUMS4SU5zBb7YpjkwSzQ2m2EI0jJKXALFEnVoBdI7uQ/evXFvwyHwm94DeOONS3yKkJnQQSGuaaegyETSYPyhYX4caMmjxTeQzP84OZdne+ldQKlbPYbW+MtHeEUeECIYwtVx8iBrTsIDpUd1nDupQYA7kCThuH2UHrEO7Th9IFywL+wIU/0HAXLDV4w4VvGLgLRijDygMwPFR3uyaaWLxHsZYoc8i36Rmqc5yUZso2MMqxDGaTacU0IeEVqlpQmBUGuHkejsUznhbuRWwddRXJId+O9WoRgWhQ5we8kwKediiCly0NIThm5dgOMBA/f94HGaLSX54Qzzx1yHZiM4epRvgDQ+AACUCT17AVYfxuyZmTrRtvSUQt5leDykNcB6unsehg85JGiIvR1xg0u5bTBzodD0PLySLU6Wr6OmkC0n7ef/mi+PLgUoeJSCMoCQG2Cx6kVlFCgIU7Ke0ipbmU0oEUKhSmpodk1+lKUI5CJDtZ38KVaRcObo1MDzDqwt8Wk3T6mlarSueJnp8SPLG/O42+n8Y2HRoVmdpd6Az8dHZoOt2ZnSj0k9mFE6tFBJrcQ4mHy2MwErG9baHJX9n7NPybH37nLZZVAHMLj/y12dfH6ztWCVPb+NPBn26lhi1/IW+nlWL8xEWFWju2ZRKxViPeMGivsAiE6m5Jb4JDs2Nx6L+UIAaxX1RjfNl+EcNWHN7VL3Aj/voMDOKsE1b9Wgm3gsQOqiS2U1WtqrMcXfKAV3b6+2p3v4sxbpzpo2IXzt/4iFzbQ0a4/G1uSb9W4GDUhPXxsGE60dthsf+Y+fChHw5EoVQleW/EaKT85oJZon3bbT186C5hW3o3fMq+aCsTY61wii8+TuWpdo7LuMlcfzf+nI3pZIjP86+vhWVqi0vshqzsSaEeuhtCro81LCkWTFyjmA40UmZZfyXVNcw5a1hr9LpC2B+fQi3kqDxaWYulWFUgFONOjcomnp+UJwGy70jKtrjEXO/g5AdjDXTJq5JQTQpm7xcXMxpv1IlgabW5BInrFF37oR4AMV2NW1j3TgS3qQxX6ttB73AO1jndY69QmqJ/rzuVr3ctjl2i6sOlYZVuuisuoMbptT47N6y+X9I4wMycwT29rXOo13kuzcEMvbdwtMvjUzyenODPnLa8c9zf5CrXTOYHc3LN7R5Ufvhh/7fHr0AlpI8hM1tN1JJyUg7mk4MJTLpDOUFJRyaKP8Audkb+fkIIOH4xJ1j4CZsZghPlZwCpHGqn5DPtiaB+8F/1w0f1rwf/9Z9F/TD46YimCRA90kSxuLguqTg2PjiCP9AFb2ez8XwbpG2DHcq0wFWPBGZeESLMrqyg8OzsUlNgSVNAAVBTf97oprw8HKqsgQTBeCut1o20aiWxiIhB7YmeUd/Adh+1NkgqR4/zxTDxSnQsgfHCs8e5LFWiDd26TcH4JY2ZS+y2I6Ya/9K0+tHB5SFSmaqD0wHGuW7v4FwHelDOeWCX0GGB7wqhxQKthG20o0F70O1Fg05xOkA2ra0klgVk5ZZiY/M8aNxeQGQVsMVY/GP9R5WdRmsZwx/TCFXaTqK/HAATlnXi5m42Fq8kGqwgGrKgRrVOnN6ascCKmUZvs+A8SQN5DrY+ZtpP0YnnFKb80jxJThRcHCYTOS789euz4OTuA+w0HY1PcXjlNLZSmepjUchPrNafsMCknACz2pGtQTAKT6d6EPNIw3y8Sh52uf4WNMydjOUyU2LAp5Kt/7Dm18Iqg2ZH7woC1dWgVnS002Waji4WW2iKeQD3xFe+o2ylDkRvxlqUFRYiDg95lakcdVjzCqjNOAj9oMsneAOIjYJvWAJZj6nn6kEjb3ZZQOuHuQxUfrfnyZHWS507VGcgJhwFMGjPOPwLzhnfkpeVb+6GUm5tTqBEaIJLRycViyLpR3QH46YFMDnjWmTl1d1xySFnCxJAMl5KGwqFj1EibUEVt8oaXvLxwdYhiDFeUNpiCYhUYPc6lajemW6mQcO7TIBNXTBRjRODCB7KlaitgyntSQ36CrwI8ISFl+SBPDHj1WwAcpnaK3uCw5u650it5lOJ/s85SGUYezC5gS05JYrxGJiGpjEAe1uBfakOt48nF+quZWe8OHHU4zSlSvOlRsoBwid8xs/5Jd9SA2JbpnY3j4IAD0OFP6QdGfI/ZVh8AWQbqBld5yUp3saNpdwBqvvAYcRstrmUNhz24xDGMfpNQuVkOh8jR8x8Q0tgKcTSvYmSw4hP6YK8oO1fXJ3iS82jUQMmhtB5G9sPo6gNk4QDFCN9yN1S8TkCWhDvsrixvbHRfxi1+yoJo62HUScqc7YE5QQAq6MFQAOrAVPzhAIuM6/REidVDc8SU9UhmNiI3ga06rlsJ39K0bFUydvUvFugxPI0Ru3W1kgAYXvzT3kuRdzekFBS41xG0JctJRuSneElmOIMUyOXEOppeD6T/eY5ihvQtDblOfT41gE0x+zhn4d8BxBW9mTUpxHjL+3LX+pjbKQkP1v7M5Azz7C9/IALSdTpSDlT1US+m80/E+B6m7i9XsntYOgM7+0mVMDpg3szu6LmWAcf99sSSvoHlHqYEEO94Yx9WV3ZmlPb6zvV1nXASeKBFjKoyIezU/TfpU21Q6wcWIuniL05ioUT16Nb/7k8zmFrVBR1GTWzOLoX/ihuOfhZHCaZDCsw4fJ0SxkfxnjRrAv5gEy17pMBmAoTjUM+ACegP6BvBaOpZ2a35th+Y9t+NFKrQFkWg7jDvcYd/UM3As8dd4k/aTi+J8kemaaCqV82m2jmLKECCw2P22BSY+rsHx61m+1qO4BkuBMffCSdojNmcZVzYoMlRtJqXPL8fJAFAcwhlL18Gd5ICznsSQOhnBZCmcU+moWc5t4kktneErX8TtzEQwnzqexXeg1k7lid8fj1qzsc0zhy403voI9bfqzKKIzDkokTYKLmcrF6Zo5WFBv5sarFtlw0m415IzU8oHBKYaPSiuK0xJg1lsVJMRHen2UfFxOQXnqLHz2ygNAJ++Np3vAeLLl7jKDBOUk/F4HjKQyKs8/Qx5PPrGnR5CG7Pd8V5ru6MV8aUIZ0tKCCmlTQDRhXTSLJWILoEtETBEsEq2l6c215qP7nlAGdQv0IS78LVf3GLDfJk+IFG75y1c8OyHiIqZdnmekFvEwdwb+MYI4WCXTZeN/dljpR3/xTzF6LWrAShohGt8mQbxMGRchiD9EdNElFst3byXa8FMAUfZbmSKJ3O4kuHNQPFFjflcAhGOY7NP4J6up5ytQzQvy6JUAwXyJ6LSBNQlH0ByzpijLa0x/QzvAoNDJVhhp1hog1CDcIGTBgbrBEiIjgImqXCd1Oq9NnSV8WkG4n6kN8YMehYNGyAAOQVDXRLSGdsMOAVxvQA0DfAgjIE1kYLcRotSxAtwOAtg3oAqBjAzBL1waEAOjZAAGAvg2IADCwAcBHO7QBbQDYpfQGALAr1wLGBl3VdGHHNF2zDe0kQoPZjjDaM9EWRgcmii0kQhPtYlSYKDWXIdUZYLSsmMBo3yC3MepSHriUBy7lQaSjA0iNxMBEBUSj0EQjjAoTbWHU5G0BV7VyxOY8NdoWELHp6QXZuDVGymU5efrTgv0YbawgazY/OwVR/ElmJkn+C3KgpQR9Q+EzHEwjmFOQTM8Ds7NTGUGkuOeAUJqRzTGIrWw+Hk9/Q0EE1QoN5AkJIdkLEURyivIp2UTBeQmdGzBtFKgssJj89+tnu/IBAsHA9XJyBiAVHYH757PpBJ98h3q1JjsuHbks4ViChkYW2ApnKVi4qobCIsk9hRQooqeqMvvHf45BHk+PTCnv8Xshr1M8YJ+mV0RqevYcOXx9Ro0EVzLlqknpJ58muFPc1zZ4gEJF/KLgmrIBvBpPcbkEVb8NfZydyFpTJGY5VWRO0wVInfHs8Sk86pWAOAZ+LhsswcWGip8Ql7j+UO6zK/XXLHKUCiaqp8j9v5893dKRp1PQUzRFB2ntuG7vUuclIkShCelWC7Kp9nJwQynTzYbvTP5DSP/VPWdkXPiKEcT1+GHcu6ORZlDpIddth9y/rUFcHdKgdhjyf+03yunC1rOP88XZXNbhQ5ZndRZbIxHWUj+uculPTfFqfoamru43/ka0IxrR4ZomUkCWjxR0NYKZ0bIc6TvIGq4eNirLpIi4npqCFxuJ+uu9rbUwbK2HYZ+0ROZQaxETS6Qo6mr4AkPTrxpnpvDIFBJZhbQrhcDK2qZalaavlG6Zv0J5yjr05oKNQGqZI3vLKjhaKtmZkKNK8ZHyZGXnGEbtYMSK236JkeSO486Vi0a7amqa3H1QVgRqrUoswtNgvV5KTHQGFEijeUeH/4kNCN0orI7RjS0dOftOy21/G682RoGh1IyiFiuPew8f3kC02NDyPvwvrGznezfEWv7LlA6P9B7ZGhdtCCkHSa5QAioJDi8tDY2rMZ/EZz5g44g7XczdXip1SG0zILWRoWeKGbNDzLBBCO5dRlIzEzwMA88IgDnl2v1lUixZ8PW9pKvzoM2C/tJEGGls5VqF0hIieVIKj9DMfx9NfmKIEa7r5M1a4fASWp5Y1wV9PmJcdIcA1NfU9P2MAh97ZAo3AdLJFHJYsRitOctLLxThW49Dbq9m9V9+fb6GGGtFCWsGdb1eXte6azMI1a40jH79ClLuxO5sZMrNgTuaj/NTaFhw81gEkLcckvEFFAr9KltNWBk/oRJbF9QUeMvD8B7KbgSAEp/QeBrTLr2xhOupTzhc3pMUtPTJSZNbRtT2xPjx5dF1qVkNkapehaKqnB75JKYaectjn2dLwDbj0yVgFzXx2aMpP68Mzr5qoh6aT2NgA+7Quu0h/IqNKQWnemFy+kHf7l2AynVtAaJhDXoko8uAKfQFt57yYEsARK9rWJ7ektIDdb0nxZvGLzpF1spta1buZsv9q7pxdBVQLTvKSgJTXubLisfMJjWof64HJl0XJe3dMVwmazhsfCop0uQwqxrdQpXaUVNUyQZj6AFLGwaEeMRWHeBfYo249S+4mX+b5y6f/gV2ym9UvoR+5YsqtwLTmhdOm7JvXVNqqxaVkJrqHMpIsKBg8ogW3CWpnVleU5RvkolySrK8CJ271xe+dH2nNrWvd0b8pORLdIkxCrlrjeJjXpl5IlrecoluMC/QoYLdpDOcgwyScpkj0PiUDwULiueBYFLOm53N1EA6yCTZuk34nMWNc2nOOfqvwrWE4TnkmzdDsvg5Nx4UARxaxHQCi9XByJIJ+ZjorqEQx7Uik1gv2wvbmsmjP56yW3wuBYV47RzkyNqT3d8xol9PKi6ZJUdECC3TbBpR2jA7Hw4J1VPqJmSJLe+TM17FgDmphpceOVSirLYO3nMUB1DnfAd5zbEUjJCZHZcp/x4HP6qXprlaXDzQggFkq1cuAIImuYqGJrFasqgA/857x6T23eWR1jG/nf5zno5ITfF0OoMhwLgGgsqyAGHXXqiqGp3K+OK1PjlVv9mdhBtpwtJAtpP0H+poJ+w+sg5dqdn0pc4ypT2+FO6lvb3BM+nvh1sXwdGKjDzzl1Q4VzWNQNNKN0h+lpFjLP2BttMxxhp1lVxnWhtscizr1HJszjfzdLqA5ps0lHJf8Br8gUR3CI4A4I66DCBUtXGjOQgflfVUrldePf1J9IFO6F7n5ev5PL2k9bg62DmVK+6O779NQiLRNxNZcQfFktZ96rOSCgk3Z6g4LDN/PjlaoW7K/GPvdoLZCoI1S8HgHSShrTvQ4wCGQer2vjPnNLrdZHp08mkDSfIT+sOMqtbLXqm+9VfLd45+PcadMasAgIMl0Q6BbaL2NLd8QKEw2q9+UsCniHY1t9UF/rUywb6berUpVmhrHQ929h6YqZd1Dgz82inm3cfJPiGc1JalcKm6UGs90RpP3QVX41AKqV+VOd+XVylQj8WAb6ezxTN4Vx9HId+fwWkybkX8Xx/PLiAw4M+Ppx8XcbvD1SXac7DmPwb3gHE7KiCP8zxut/gr9Oyh+i9ut/k2mh1jQCHBWxxy1VES2hlnx5P0NG53+Svwe3CWY2gfdNQf4nZP4xx/Os7HGN8fT47hhuFsGncGfPf8I2TsCv5y/9n4/UU8EHwLiIOXDBXFhNc4XigFEhZEdhBptCKxxQup+xwchkCUcM+p4oMuskCtIqAS+3QdUkQ7iia1FF3CcbDroxCwBvTmGAZqqg42ZHeRpTPIhHdqXD0Ni+naij85mxC8G/JXMPvezijS4TWM7cDWj+Jd9Md4dkm1xLhQ8QI7UjGqHAFaCmCyt4G9nEI9cH2BfvJiukXjewIC7V7I9yIKCL7XokDE99oUaPG9DgXafK9LgQ7f61Ggy/f6FOjxvQEF+kAwxBCRJtr9EEIRhQTfxwM/VYIuJFWc2CZAl7oFGtyg9DSkROrzx6eGhmhhzCSKNn8+vkhNqqBomRxdJ+ZyrOLA1fE4a/zQ2v6aIWoyN9D0g96WwV96SnbbRX2bj0hAlxrRFB0UODoSZ/o+AO2QrLnSZ3NZRBXvmFncuEVPtKQmUlcBgbHhVxoidIEvPRo0hEDqTcfhLg8rVdS0GZKtaraEqb65m3JkoXttNSyvrZqd3Rbsu1bfa92PSdKOragwM6J1+2J+CkMN5u7zxZHDJ1UhS3MSwzriYuhRo4a0YIkDEi0XpARDzQMLl3MSyKUfFqL+EtqYb6krQHdVqXpXgIce2s6msnon+OZpghk/ziCtCJXQHESMhmO4TJmcQZ9Aig4nl5KWbGeN83ET3sqNpo77CYdBF0C8EQhbgorWy2i1WEHPBBt6Aw8UoDmpxjAY8tMxelybcTeZyFsIKG0rKLM5XPDZOAvsj5DpVvAzAw1Q83FDdfExQXBfyZSwpadayYUjaDz2AamDD1X3ZZg0Qk6IbhP4UYVG1WVUPnsC/CJ0Rz1effiwCmmwwpcL3JrO0qNip78EAjTjDjSxhqVTmm0i8FWK4TAtANpa3hq11BRm3K8k81AZoTQbFjV2MzmKVzUk7QdS3+YsHXzp88Rni2NEf/m+WBcb/7JvmYsbffqqyNH49yZ6VWGPGv4d+U9O1vWz9+9hG6zVDGgSoOn8AXTEYdDINrPCPOTN2SwOGVD2HgW8hEmbwYpnMBV7CG1DjMzzscSyqSJRxaI3r9guju9kNZzfzYx3HIeJYiHRLJBZRKVEcacSo7uV6DJWy+NQdSBV/vqGVazD7dHnKnYgbxVwBSPjX7826vjgYw9tOurcNrHULy0NyPSIsX2krvHX1s7Gx06WK+6vupvnxDXu5FPpDCA+kVNndP7kJwr5pvZg+8mvRZjJf+3bLcH4+Z3mVnGaKpQ6LMHHru8vpDETbeROrR5NcJPRwBnYPMdpGNRnn+uQCwSWlWncrDm5pkUugbmEyaV4lyePJs2uBqlaW7DrFZLcXzvPd2GUO7SIHiIQ5xIZQfddCcNoIFPVwLT/5pBogUAm8NTEXlFjWZ8Y0Lxd8+IR0hGk+58hOd7VrpPUHP3lKPF8dwNWyhKFTNWYySPLlGVdW2obu0FsX+kNIFTsrV/OxnOamvgBNADjZd4C1M9j2G7mhPgGITugOplS9BdQT2OMIsezlBQDkA9ff6Hd5+gsnee/Hi+OIS5rlPYM9rC/Iz6F/qDQxdlHdGWJuagY1K7DoPuomrZEcVyUvUEI9aBqtOJ2UVlvmTjWhvzyEsyyeEktYz79NWmTl1Qnb2dQA2oJteyqfQtVYgGbDSBzrLhFd4bowBWCqOYdKxzQC8zmCu8ZrOynsoO4+1l6Ci2tICKM2gDb09cOb6h+hLeHHFDTErGqYWFaNSxE0GWZrCcLRVZZ7lHKc2AxtQHbqt22sdEUcl4m0i3NUhbqil3Vf8tZjhczuE1Bf4+ypqDLSiwzGLEnq1qi1Fa5o8VOuqwgSj2apOWRZXRyvjZhPmAj5U7rc7fleTnfykm4Tn5m9LWNhaJ6yAJoXSzU2m8pqA3kivZ5II17Lt1iI1466kq1egzo0RnJIaM/vUYpAAAkbZP36jhDF8hw0nM9YhSuFJT/cNKWgtuyz2o+VcRDENC+bVaFQ4bFPJO1Oh7N42Ok8dN/z8ZHyQh47rZ5PSDfFPYT2zY3r5cZZD+bnp65B0yrG7eLW4lSFg1n5JuhaB/SaHgEXPGqf8YjPseKHmL37Zwt4cEoYglIc+VMxmbC0S/skI83lI67iFeHLvDTq579pPQw5xolWbrWEZrqDVfnSEb6FXPmo3swopdzGa500hbmgdBGHUKSm59NMzS2z2ZXOJRhbCiHP3GkUPQy5CjTCYWToP0dwi3yKdQ+ZAr0hwIRhPFCTUxEua9Oixn5SxxxUSJzh+3Aicrq2HOGhY1JvOsU6dBYWvUYh2N8IdlhZN3Q+lCcw5x1NPM1p+fLSY3GyDWGg+dZHTQ1YIGbIlQKz6tZopVZWkWWeTVLe2WWTpFlVs3SXZmlV2SpTap5+ivzDFRKMqpmETc0gCgyecbgtr0LxsnNJ3zE53wGf0ns0Tnj7ZTuBSoLzUoTTTLNRI2UIfBXsosy+9L+wJW8fA4ihsbpEmLGkpxSnM0EXhQRtLKdmLPkRsagTlygJcdySeTHwhysnAI9iW65WNGaqunr8Xug+uHOTYUqyzaz1ye15FaXJySzfdv9oLPpc/ZVYWVfpTdQo+ruKi2vm4G+KznctS68STYzT5o2CVwxJmCeu6O1wf7WPYzd5o6C3vX0HyaZ5a8jC6STCV3dOvYxNBJcjOr+5kGjXbos0dJQqflkyOfwb+a45QgZnziAiCUT2B0ZSSyktDb17m3AhGs8IGLyKF1NfyhnbIXHabhE0E6G4OJgFtTXzt6TrSPEJozbRTh5yO6pLHNkPMBD5cu3CBPTANXykcaxoqfLp2LrvKxJ+Z3olpSzr1/b9NuTWBvpbq4matnIVq40mW+lmVezRJ4szkqTFDvVGftiO041MxDHqr4BZ0nNsxltkBx03aPeSOTG3cCKPQ2LV28Pg8ChwAXPqp5Pl2VUA3jW0xZOKAD5ZRtYhuBjGvLrb19x0b0Vo3crRv82jIG4FSO6ndNb1g/RVuK64pOV3BDn99pr1DBJeQbImeWfZ3nL0g2iR/nqPUiZypWvirx0O33uozW7iZZOTUjlLeX5ZlY4YH58erpWHG9BrxZrcAECqXCO/qwkLstH6ILCEd3WuZhV4vR1rSNW8UJbOc2KJR2IQ95zJmcr4A2XsltuJ64W47q4XVK0WL6k2u5q5VMtsBXwxhJdXltyimsT14oMZoUbVcFnPQ+dXNMRjfQFW6RZll9evHyxG4f82e7emzjir5/+88mbuM+fP93ZebYbtyLA13PDwt55+duLWPC3ryDL/vbrl8+exWD/8DvE2/CHUjuYE5US9F0g+QW+QQY5nr98u78LmbbfvH72+Nmbnd1nsQj5m5dvt5/EgrLA/StqlkhJR/rpu9myRFFUGLOI/qBqzSLCbmnOArGe154FcvarBi0iHFQsWoQItUmLGITKpgVCwjVqEUJYVi2i31VmLRDqrbBricTANmyplZYtURQ6pi0AEKttW8QguptxizJs0UYtwrVoEcacJTK2LO2uMmRpdbUVS6vFjQVLq22Zr7R6KoI4fdtwpTWwrFbaIZmstDraXgX42xPQdhGaqgjgYa8Ff9popiIEpHXgTxdNVITooYGKEH00TxFigMYpIgohewh/BfwV8DeCvxH8bVlGKaJrW6QI1xxFOLYoFNeGKKKvrVAobExQBrb9CbT9r2encEX7/CN2RV9cOytNZSdvpvKIQVB9prDmOGfgmeWZ4SQ5kRn8O7nJM8OJ4//gxOOZIT652QnDbRQ6LgWfE4bbSHRZ0O7H+cGJ44cBnhpVluXybQHUXDtj4J0BlEBvxGBeMe7Jo1tdiURXsdiSWk0Gxd24xvcqp712YDaeAR2pnYKdvr1HMZaQXAcZyWt4Fhw1BRChMjy2JumysUqDcG+0YflLHJVymjY8phQQDlDxbyVPFVZnXxAz/iQBSWW5pESvVOyGvZxai27bE+LChTi6EGR2svjepRBO99Ydbg1Q7sMs7VMATXh0KX+pT2gxrgx90V7hF5WPEPNYm1lllXx5JT5nS3xHnivBHJ19zp1vsFj7MTbD7+PMJfn+shPAJdv6+83GHO002hFfSpIg/OYy8mWKuhEslrDsweagz3P/F/FmTl3nlbpViX6+Jf2KcR8r8Niz0PtWkpLv1pudINeCbJVX3ZweELwkW0kUvAuHfWZUDuZrA5jm/+SAncj40q2mGRC0K/UuknbFiwVTB7Qah31Ry6ezeqr9I+F4LGOsGyn1zcpCMzRfykAqsmV8pVeaAfo/fYYFFSqkTcgKm50Z2ezMea5BfzRrswMBsBwI0gWJsRiZx8KJ53HkxL3cNudxy4/l2mjkcYjapkoB4k4FRHcroFWpDR5tZ+rEi6fE+dDf3njtIEHlm0O6l7RxZU6uHKQrRr9+dUEkfeEMC+4Rsw+bUD8dnEnnPLSuzkGr04uDURWszk1ZYa8DcwCaVMf8ZQgLoXafUlhcqZo6gOG8W89hJ3p8ujmRTRGFj3Q8xsqMx6ewJ6DH9RPZemSDmHbUDlL3SHqpb94uaehohzroCH58rT+LQa2AWgU+/ynqdFWIfnMTz+l3YuIT/GXxPUoPv7V0XH1VRpcKHn03oVutI+rXr8oCZLNRyOMjxq1kKVhsR8PYoOFBvEaCo1CBqO9pL+58XyCEvSHTVCzZeVv+iNNGEzwl8hFVm0jp1c1n4OkjBO4Uoza1HYREV4f6KkB0gSwtPvcmXCWidZ7LpsSOpp9uwl1tP4x5r4yp5ITu9EqaKjlQ1rsK2VX0XfLcT13W/FcT7kPYG28zGL/hduSbTTxcw5ziuyWlzQlaoACcoDBblmBqXT/7tPoY5q7/jeqk4yOWjJaMh6uQBiAtGw+PbjQeNuy9nd2bOVpmvoW12t14I+3KfbnTUu/vbbqdl8+pZKVi8n0ps2R1s+Fh1V1jgFn+QLD4QWjV/jdYpb4/aUi/tcsBx9Ph37lBa26LavP6e3P293c2lPWK3hv8/Tb9qfuKYanrhZSWdSK8uH0gc2VeWgyIByK2WYasDlGn60mW30axtEoC5M6GYyxpfQbKAdO9iHEhynhHSgehevNbc1PpKzp1XmdYZF10uejxgcD/i25dos+YAij6BI8QyByrzVDr/c2Qd1pCD7ZvamEiocg6LzFuIakJaAnnkPg4uycBXTHnzcU9CNDyZJOgvfE9aZCkIiIEWqhLJ5wK1dHWxkv7sznoXKfpKWGsz6C3YZuIW1n2ZXkS1/7yLKbR83z/laKPLV2XUDraVcMIMgnYAN6EtzMDNi4Jeb6K/6f5P2Avzefy7gfoR6PCmvx3PpP3OaibjH8kKyq4mSlNUOytJ6UrhU/srS/591WKIZY4ypj8EJQNFYj88jme86t4ds2qGq4GOoZPVpThU/bk+pOup3Ar0lCY5VoRFlswylCxKh5VFCYMYndYE8irinsjSq7MXVBhtSKG1d5XSEsSbQUafaJWHa9laR0/UqoRmam/xlZewf8o4H8klbV+aQlUPsYUB6tUMxXFTE56xhz1jFWWM3Uz+0ZxTq15IwZ03fpxDnD4mON4ri2J75MHJ5A72uYw2moNF0TD7R6TrOHvCypbqaTUp3uv4vtMwVvJ/gFkBZB9H4trdh0O76ZQlNJRJxaD8JbvlbozDqVQyK55J2TMni44///3my217zZdqmer/0MnDI0aB7L+Ger2N0yYajFXUMx3nkI1mkPs2h7HcG/+P2oY3zaAYSk0w5PrYUmDlOvBSEOTV4aie6zSRoHG4PK7DK5seXDl8h55PIMrXxpcOV4tRSRmbn2Cv6w60e/yyvGRjJwH8DVnl6oTaZdsbYANXG3Anb01pFGX0X29dLcOOo2KcsSkToE+k/a4A7iz3ZLV7a6NgIRuRHg7W06epp+OYf96NqdXZvSIUH9BdHL2JyjF0p+O2eZovaJ/WFZJxKZR1Ibe3at79Vi0ubrde8Ff6Uhc2pzuMwDXk4HbXTUbZNPRnaPjbqdUgc91TrfxCfQXG5zyuk1MMH/DkuLwJt8MVf2hxzmCxvG6adCJK1002CoBXi1NeWxIb/bYUM30/fw3VCnjw1FGDfY//1UvWCXi06ble1nn2pDpDGRS7kvJMCXypfhvGIlSy4vvv2vMNK9/+Hn1cyTuyVF0H478VdDturJZa6nzSalVzRx5U5pe5ldz0vQzTwze3pagHLpf02ar+Ytux3f5c7xUpn4vlSPjpXIEcwG9VI4KL5V0Tej3QZn5d4t8lTWBU1tfs2QrMgJFf3OQ3AcSlhPK9J5OKOcyXe2Ecn7D+6F51cvh3GVa5gCxfFCmq31Qlklw1W+9V6tUWpUr7o7vH0RIJPpWIgT2+6C8T31WUlmeQe64X3VNmHEvuzL3D77bKeYrCGbJnd6YbVd9UI7c3i8ZkCPfk0UzOPXbWaCrH81SmFUeq3m5rT5c89f1b34Fr2UHWdfDtuzNh/F+OjGaBveLge0N82m4tKn0xbd/VaeW4hR+uvur+oR0iaudaDQFaBiPYfVbnL2/WCMdyXR8sbb7eXZ6Nh/P61KWu7x0NnuRTow11U/P95/urjUOwubg8Ivg1wfrFAr5Nftpffx5nDU8G0SGAkl9vn0P3qpfNF6Pj6Cw9f9PMOuLxEn6P9QblC5XOyBxvb25FpKpPg/C8458fQKjPiucBcgcAJfjUVZkG0FU+w3JSxcamQkC9GxKGI4nCIQWWzY48GqY5XUDYifj8Swl13YpxOYXmfF1p/Br+bLjCCFlvuqdX51ODeRkuPrFE6dSuGsvrKMR86V+PlJhwtG3ISK9bbUQeGu3XbiiG5PHhD14PIavYcZzPkXfdCf4Jmq8PgfQ48UWfTNd2Xtsjl0vB2pcKGb2z/C1g/qs6jpUCIY+UFjAqKBF5USblmMJsY94A1nZOj0bNQ5O9HtT1KEYZNowb318/55UjJqV8fT7cOMW0DAssGuWOM1d9Q1Wur6paf+U9BFS67GAO6qYG20odO2R3/F36dBTS8aUndA9pc6W6Gy+NmVQv5Df0tqK0CErSb1fbhCXkpXg8EHTk75slNLIegtn1j4hGzSjLQKxPrq6GD+jjuDq+/YZfd9+5LflTeHz6ixZ6t9R0XJLCbpdl7JUezB13YxafkZvqI9TlZpTFxQTY6jL+Ka6jKEuqRwp3q1h9MAqXslGLSJB4tmvk3GNwbot1AsCHEpOxTTBkh7MGkeeYE7A5FUPpYgDEsXnoPS38ej1m23to7SQscpFKdfF8FQbN5WyEuhYEde7KMwxXY9Vc8vuEuNkZKlHtHqeq6ffOp4EQQYn6qzy8e9Mtf83V762VPvE18rXVfFerWuufedAP+mITDn0uptPp+lGri5kjFUhjZzrPMAFOd+5+9oEyLA0qaLchWbJbNxNZtyzOC4vcqjD8a1SNod/pY+cAVZn7kRp/Lz/8sW6GlzH768aX1IqKq7PcLRd44DUk844RpsUbtHejOcT1ETLmn1e1eG1DGI0dMlRLdm99+DXHnlMb2McqD5lnKxfFCXsTj6eFl8ZR2VXAomN/KGI+myzsSdzfiVDDgmC4QtCSouitkp72BKQLDjmYzGAVXI7LJJFB5KjIhkoUjJQwS1iOLwCpOFQdvleALjdFr9qNgEX1GlXLG5cyT0ZqqysOMeYT42NvNJurxDRwlu7TaCr6oWl+ynsHiBC75BBZbxEHj68A5VtTcU8+ocrP/1CGMT8Wt35IFsbYf/5GImBcBM6kFBTKa369eXGibZ/b1zKIsySLQAXOiUBKVuyjJritU+s+n9G9TgcXgJes3nJ0waw4jxVB4yLepzLfvPyH31aeJSPpZxcKWWE76JP6/FWEFS5mDYE4y4rTq55Pb6UYQHL1a4+vtyQdg1Dfv7wIdDmWwC/mTjjuD7zyyC4tr6yn6LEe3ywdXhwCTI5+VSEGhP8OnzQOBoORcSCWZkhb5RiP5WUDuPvEupf8EWtQBRHh9iN/FMRTu1v+zuLh6JCK4WhkhGV9PAg01RUeFRSKRW4Sa3sBlPlVHGCRcNPkB4CDQh/onDRbzayyUn5MJ3yHlA++puiRthwmBbUD1LNoQq32/1renCKR6OTdXjSTG4ZKVSomowGCk+lBWzr6im6WAM8c0QSiWd2EfT95zIeUvzZ8XS8hUOF4sSh7ENQayuiTqHUqof039rWFv0JQwhgjP4ABOIQwz+URjH606H/1vb28A/EIIAx+gMQiEMM/1AaxfC/OjnlusBpQb4V+ET2+BGOXNzF4hDegn+n8O8DtvFTCHzCwGP8Qel2RTWqHuOobfHTurLmqgl05dPNNLYbYLQ5iqERXJc0OpWGG8yDDPs5+aT+GtwccHPT7zmgIuZBrvudwtTvJ+u4JAFbuIaoCBp+Nxhyu3rLAan2dtJJK173gkJmBmIdV3oTDmTKqo7elty6Tb3i19l+jRg+r3JBRi6eGl+BBWBeAKJejEPUlU+g7GDXtssFnWuqxetBPYY+TrCzk1MZOTKvUQeSbQfEENRxSwFIWBRSU6zEuMqH9aGExac+qG9IKO7DwdNDiT+bInyEf4PGtAlLLPwocuV+P6lLzPE0CKwUIBCipRr+kaHWCX+A8fg0EHxbfjoD5zphUq1fVo9Vx9M3U5TOq+GK9sd1fL90hStRU86BPA83tjAGxbiYWyVmoDDLRcRZyCr5tk2+yyKff2V0c+2UuQxflxhb4isv+SLEpljJ2Mq6/bMsTdMoi+O9wVCFe4NKvp/rsdrp1CBvJCkvU02+jXvghl611CKGyyCuo9bH/66+flUlhyo3CXtY2KBTtwKRbJdiYZu+9rfNTG6VTyzlCyHXVlPoDC7HT+q4U4KdnNjAbFAt/CMF4wgQCiAIgAmmITVi2ZaIpjtS59J9yU1XYHsKCDDYQEC7O7xM6jFyrTi+In7nB9uHtGfDwKaQ6m9/Y4KP3QLZh32egoGqPdKpQ0nJTUzuFcCZjOKojIRxKxxKRb3V21DgxlRiXj6haLMVcpiy/Q1pCmNx2+Rq61xHCrsdxgNIrKnUwaBILWj1o1iEJq8Ii2QgXGQfRCyGsFqCgD+3l36hcQXNgENSPMBRonoLQBhg2tb9iqm/ZghMix3MHBp1PrxM5noHNNcrhApP1TCCNlSEx40trTCpSIgP9RiXRwd2SjBxbYSfdm8FABuxQ+Lx2l19zPry6wW0kVoRnGXmhmUka9xlBSnUmLvyQAwGPOpEPGq1eBR14V8f/rXhH8BbAv5BuNWBf4iDsD7863IxwH89HoWIE0IY4O02/OvCv4jXoo6AABKHzAIJAlI3gn8t+Nfh/VZnwNthBAlIvQfILUAO4a8AqgMuehAWfaAseH/Q6wIAcvcH8A+AXQFxAeEeH3TFAH/6+ANR/LbPoBNCtNOFhE4vhJ8ORjs9jAoMtfAHU7sd/GnjD8Da/T78DCKIRggTXSQVIlGEtfCni7BuD38w2sFojygTFSoIE/ohwjr4QygR/rR0tEtctfGHUIhTKryLbEBCN+zjD4aEwJ8uRpEXaLAICAnIiGRamNqCtsC/iI70I95v94kU7/da2DFEHCICfvohtl8PAx386UITDyL8aQEmwHvU4ADGQSH6LSQSQqcJ7BgkKbATYNXZdsdQ7XsOov8RY6j9/8bQ9xhDtW8ZRIm1I1gp6DxnPkzynURH1klUhdPrZGmjZx9Q8GU9LDQJqtNJmKt9iL1Tabf7TFMpnqYtbrjHBEzne3XVvE5WF9crwZkh8MT/3Rs0wQY5D4o6SDL+nnGJT4sH/k75DdgLiNaKxAXuvJyT6iboOFA3UocfFocPdD54sOOSLeD4CDH5jjefpvK+l22q9n2LqVZkRQYmXFq+/D2XsppH75szxWW3M7Q4CzfKiJCy7D9voza7bcbvwjm/I+faqag1SvTIcceDd0yityJeg8YECq2/SIEPBO/2gU5Bpv8NZDolmcE3kOkZMu3wG8h0DZlbmUEl5XftWG4+s3TQD3lfcIEiF1dP0YV/PfjXgn9t+BfxXu+QZ/KgPeCdkHcE70S80+KdNu90eKfLOz3e7vNWi3fbhzzXBGv9iKNAb/N+h/e7vI/rAO8P+CCE2h9itYUQQz24RdTeMANdmQSNZ3A9oI3sHC3ZQ0CPNv5qw/cGfHSgJwzU79D0g6iUcz/SmZ9o9E1Egdl8me71faWZXwT/PULuOqmVxxUj3WxNM8ebX57hTy4FH6tL6nL5DoKjEvsD6pf0+g1JH8wXMED7e3R48AHUIVJCvbekPEJDnK8yYjyFSzWIjAKZ6YK6fCxFhE40ICGHIMS7jAPKj0NwAzldW6ivsKOfynn8w4/B/CDd2MBrmsOgnozS7ORoDo5I82aBUFcIY0QAqkIVV0/QsLCZwwchlC/hGLKM56ewTtZVYUl940fkafgTlrpRDzJgjj5D+bioT6rVTw/rMZJ8mE5mSd05Pw6LlNOLSsJGkXBUTVgrEqajhSGmdXCYkl4fPXCvHRB9OJpv1Nm1re8GxyjT8fzJm+fPIPk9mFuQM2r5Y/vHjeEIqlMbBVkAtRttDH/C5I36dVKqUu0B4VGtIWqhcdXz5Jr/+9nTLYk/X79+gdFVxxZ9Dw2aWzYFmLyO3rHPpu+OgcBxegpc4RiglH+/e/Hy3d6zt/tPZMgLyKvHr988ffysAAsN3v/jxXYBizRs7+0zjdcysKcvnkK8reNbz15u/yI7Ovrm9e7uvuzq6MtfyoL3Ie3x83e7L3bKUl/s7u6823m6/aYsdPf16xcvZVO42RD88rVsGrSdx28ea6Bh7vmuQSwZfLunYYbLX3df7z99+ULDu4bo7t6zx292d2RfQf58t7iAETOxu+/iw/ECnl5cpKfvzuB9AEXTT+mxFZ3CXNAxjXs8LVFVTGNiJEwwqj4JqFIm2l6sprLB1mmuUtAM5R32v84FJcGjgXcIVxjHUxOv1wlHOVXXGeDVCPiA/Th5p6tFJV2rOh/9+e4DWW8tVfozfEf7aKGKwLeYRQiqYDhZyKjTUWEAz1NVhTL+Dj6HJq3o6djUHb8lpdBNFLF1MgxynIYWRn42LVj4kM0zabBULqiNf27gRXOycjI9fKieXNcxsna8WJueXawVqOtra/uvt9f+PD0erf/3Ym00BmE9pmiz+MY4gOssqdnvUnVwbaTudrSxEvY8SMAIPRmCadHx4mJ0fLGISWuFIT7G9exsfgLLBAEX/IPGnkI0DvkJJKD71AU/TU6lsNI0HpKNxSDBQid8ymf8nM/5Jd/iV3yb7/In/Gf+Bx+n/CjlH1J+nPJX/FnxlER0QRhZYVyZJtAbogOazmQSBOzZweQQAJiAvTgdwjsiAh8dfAimh4dBkJzLnNJnUnQSMZQz2uY8Q2eGs2aTJecbAGmcy5k2V5jpjcLP8gt8frLb5tQsgoNFSAydenKQBcGh/LkMVFpQCtWGKsxVQ8uMKz7RgXg+1Fzkh3gTBlwMc+Ii17W8lMKqJ3B2ORwCscumxDqjjr9gsymIb9Tz15D9EajlH0AldC1M8YBImu5QlaDoK/Lzg0kAKfDnMEDySw0aPpCqRYHJ8cG8bF5Qxy7d/YfxOJUfUjlOjlN5lAKZV1IMHBfiiPE0gbRm1OklgPsJcTECuFGn666SiP2YA9YeLyjyV7IprqfyirQDeQJvjWH8nScoX3YhKdnCz62eJ0/klmofHJqgIe9EQwmLWUSxzgBjS+0kqPZJwr6oARCq/p8058UISMYH08Phq82f1yEuMRLjz8arzcbP62czqPrBcRog6JAXOGDpV0BYTDiDbnKJLALVJJfbGAS73LO17aa8hIH1R9C42tjYmLNgGwZYArvG0zEq1bfV8CiyiuTq4WXCLgFT1kQC6ZebjauH8rIp+FUgL1mM7QP9V4zsZhM7l3b2ExznqpEn2LWKuWtM2QBjCKDyhD2Qu+xLqNzoz+U5S/4IZA7NjDwbLmDeB/PhDFqLhiZEDqm0DShe0T+F8mnwXm8FKsd9+2NXAjsJTrfdQ+qSU9Ul59Qh8L4fbDGKGwdsuiuF1G1XO44lmmiwlVQn7bmatCqs90BhaSeRGTsJnknHYrJQ9istPxo5hDp75piIcHq7pKsHj6HJqexmClnizLUNWS5+rI3sk3JFl+VSKv9/9p61uW0d1+/+FWlm1mNdU3tF6h1Zybg77bSdbLf33Z1O9o7spM/T9Gy6Pudm2v73CxAEJdlQKq+z7+14GgokARAEQQjiY0ITkp/cOhPl2wau0IC7Pejp55vmR0rhreaUopXghBln3s4U97MVGCURkUuC58lJlBhXpqNPO9Xb2r4yzQkuCRJ3KZxGKMldQk/cJz4LC/osevCzOSVpDyGl6QsMpVs8b+FWMeYZJ7Z6PYtNFBAApzwAmKIgAM1wPA8lSRLQK3zXOkRsG1Ah0ORhudPGLm9pceDClpUj0jhW8P2GUp+ba+gFcWUOfEWb3dZXQGN2PHt1BP+QdpkR8Zynpg5DhYUVElBnBDR9qE4JrIsu1lhLGLQRoEnxTRFrPqOk4qUrrnsMa4m5MhOAcY8cY82k+mKDzS5nlJMlAmJjEoldibGiEIBGQqoTRlp2kablAGfaSC1JM4nfyHGh8554c0kUUSL1XCRxnGcDvBUS4liST24kfpNIkq/EWCEBTdTyZXQvx+SSkJNY1GGJ4VRkOIpEAYtooawstTgTlVgSZiIK2AjQrJD4jcXxNjQISgmxkRBrFo+JeohFQZhE4jeS+NWsaTvmx8gyFoUmDrsiEXmTgEkkQIVBwFpcSEKW+C1EclB9V4N1FksaHKeiBicDPZqK47nMRC3WkhWWBByLAs7EITpk1WJJxplo1Ywo31ziVkJqxOHGc9SuEme5qChS16WFqMRGmj91KSpwJimwGZo/5WlcBMZSz+WJaIbFaS6VFHhoJmDxZEkXGokznexISOymIrtRIqpvOqRqkdR1sWjWctG0iuJNJPGKRi1moe2IuJR0WEIci+M4zSQjXIqKZjKpZUOKZkwk6bARh4aof4k46kQ3SScicMh05OKgwwlppCss6l8uGuFYD7nCsqqJnkBSikY4Ge8KS2KPY9EIDxpcUSkkVclS0Qhno11hCalJh0xaksnusMiv1Io0F41wtIcrPGQ6Ei0aCUmJRX5jiVweizbYyK6wzFiRSjLWfRQs+WIPV1hiOBUZjljTxrrDWlLiXBRwJHEhClgilZVDVi0Wx5zYnRJiIw7kNNnDFR7StEyLSgysjXaFJQ1MUtEKyzPakOVItKTF4qhLo9GusNiIUrTCJUttrDssQVMtWuFivCssCTgetGtZJhUXBS9Ry0T5xtFoV3hojjLikMOOG+0KS61IS1GBE9kVHnTVJIJJLCqxEbteFLDUc3kqmmH21ca5wxK7Jj7UFZbYTYcUzUSZ7A6LRkLqurgUjbDo4IriHTJquWjU0PMe6QqnErda1N9CdoUHg2pSSzJxojNmD1dYS/orjrhSCg8N95w4X+fioMMJ6cCoMDN2/5FhURTxeFeYmRsZGdb7RIbHRoVTiV1m7JDIcDrkCh8WFfaj4P4jw4DgwKjwQExNHxwZPjwqTLyNjAzr/SLDY6PColdHnB0WGY4HXOGDosLsQ95/ZBhV9eCo8EBQLT08MixocDk+Kkyc/akiw2OjwrnsChNzB0WGUzkyfFhUmK3avUeGAfHBUWHZqun4HiLDggLr8VFh5m1kZDjdJzJ8aFQYGTssMpwOucKHRYXZrN17ZBiU6sCosGzS0vzwyLA05vQerjAzNzIyXO4VGR4bFY5lV5g4+9NEhg+LCqfM271HhgF6YFRYNmomPzgyLBjhfL+oMLI2NjKs94sMj40Ki8OWODssMhwPuMIHR4WJtfuPDAP04KiwbNdyfXBkWLDC6fioMDE2NjKc7hcZHhsVLkUrzLwdFBnOByLDh0WFeYD+SSLDB0eFZVUry8Mjw4IVzsdHhYmzsZFhvU9keGxUWMuuMHF2WGQ4HXKFD4sK8yi4/8gwMHFgVJgYu//IsGiE8z1cYeZtZGQ43ScyPDYqXIquMDF2UGS4HHKFD4sKe5ndf2QYih4aFZZdNVCViwCPX5w8gnXEj3bWEbPw065zaGIGEo4tzyzte8l5F5pEJZfuwXleTHsoIpPuruekvIxr9IlmMbs8fc5jVzrpEdUMjnplGVp0oYUuhQ6mPFaoHkkTJQw3DO9501mPmUhi20gCjwvh6yf3hST0TCepJPRcFHoaM1z32sjQPsEkxRleVpdEEnqelZLQk1ISujamYDPQz4glkccRv5gLYi9jUeys/43fMxBVTbubINXG7+SA9OnK7uVwW9twR8ct/OdLxDsF5lDpon6EhdpNJKWjYB/Sdln/B9qF19BWS7d9o9ndETnrlVCvVlOTQifCZp8CUxcqUiZo0d4Q2hVUuvlYN9UKGHn9h7ppd4YCyG7HaHjPJwBwV4YvgxDaGsGk8QFg2AQPwwd/M1NL/8f2IqjG8lCtmI6jCADPC4CQPQZRIWQGIC1phMEfhjEf+Kcl/BEJU0HsVSoUtflvIJ+vNCIa7U3a9ByGFdWf1zPivd2/2jugi9oBPY8dECwWRMzRnNdF5RB3qP+eugV1x5VbrKoAj4RBvjwnQs2fexd2EIPTmV4sVkGo22IPqRjlg3LUK0cnrDu98wMLicpQiWnuizKgrfEWaxDxWQN1TGIbPbcPxTRLTRHB06yhJEijoEcSjUkCe37r0/pVrBKVqkzlqlCl0pHSWulY6dTeHI6HTimTq1irOFVJbA+6KFUGpWNVQnksF2s6WqpMlYGyJi1UpKILPONUZ0r+5e1vogvV/sr2Z6LOT7c/nQEkVllpT1AFkKJG5Kq0rCMLKgYYMJqqEogYxBcDGFpSpCqFUnmGrYWCaG0BHxRG26VwelRorlWBVaz5A4pYzVpaatrj+pXQnLYFfa6N/cX2l9hfan+Z/eX2V9hfib8sgd9FZfcnu43D/7v+9OPtjT3k9fjIwY70L80vs6Nfcc6RLss0NJE2R79ubj4cLXFL+NFxD489VQBPKt+9Ia5CtW++fn3gTAlv9RO22VcrtjdV025fpyQZkBWlcci3O9VXdnubvaaKtqtPHASPheZtbiva+YYJ3hqHD7R5LjZ5VsCD3wbHJjFiO4iJdhZZtbNIxAYWErSZS0PC7u8KNVtMfyrBt12ptRJr92mrq32kdsVSk7eXr+xB4joN8CKys9nannoeroITSM5wZkmCuVZJcWoLTrFkUAlTU63reg1nxPLz1g52kn1szroPJ+buOrCBHmv45MklNhwZKU5xT3MKdu/OprvNh9MppLCjHtQTrM1wd1r/FW2AXFeuVL2CFG1njDCFGkEp15VMUlJx0Ox+N/JBGz29p3sdeqc58Ixmc652NWG2Uk3QTrK9Ai9u3vVudaJtpXsoScNKQht1V1yW51DFc6jyyooldbaAfojNgrLnqztp8Hy69lPW7ny5EgYFCuzW9pV6RH9+RYbQGr9IFdYGw3OkUpxIEqXROOtYGaXhQen0opp05dUV1Zp65FJdqZ/UrdqAdQ+1eoT/Pd4eZ5jq+AF4gmnHU7qr8ZdewNpeRUG3UMwoUWsDWoinmqPHdhVUP9VX5PncQsI6RY/rVvDNCe1G58N3CInfaU9+zaVV6uCLp+AOYMYW/X52pXQWBBZy1GArqTgexxOnmU7rmrwtrD/sjUYKe4PuXUMX1tWpPs6gDUzY0b10248jumYDGUR7CjKgBB2cASphZc786ADeTmc/A7+F8yaIBvobQfCLWAdfyNQfvwPre3MDd9sc0TkhR5bd42ri+DBlKwDElwQP6q3zVTyuzfWHazgN7giO6bB3oVqX8uoPbz9dHlfb6B5aXNWyJqTzovLyR40O3N966U86Xp5yXss7vJHAmddklewRPruELmkygpGzrHgqG9k5jItkN021OStPtKZ+6p3BIGkH9xzVxubNHAj9unsSI2BlpGkeJ8k2Eu5VW+QIzOEuii29mjjFoqNgWrXBed+T0qDwQ5prSCjGCyU2rVBkJaYDaBhZj8ps4+Bq77e8DcpZbZB5n9KZT5qE3/2SoN+CmFoQi9060IL/63a2peEyPjEQ+RgpwoRPUu50r44M9K6oaLwzn1ANcejP6JEFPRGYaevVx8d0MPRdyGvM9I1IqRHpdiNsnzLP0BNksi2UkoHawNMWod4jkYNCy3q7caHH3M2Z1535B9Rks6L7fWZXdHQP/ZnPlvPNaQ8jmI6zbUC4PNkEQaD6enqHTeE81WVCOdKASlG7w3rDjECK2wHQwD8InR6xvDOSd9aVt4mSgt/Yici2Hk+6Aq69gPHAJupdfgINCKoNkvv0ZVk326/18ErveN9Asfm88tccAdIlUd3WTG7DokMGBdwnPK+Xvv3zefCNTnDZLFx7qnvrhsp3Q+W7oW0G8L1k4d05FPzRV4HQSTl1Ut7tpCQqs4FO2rTzvthPfJCWp84A7K3v9tTkj+8qPpprh/DfWG8x233TVVAvFdRLnmHZ/AKMzOaDmnmGOE4ap4GfjNm1ulkffXz32V7FvzsPo839JnNJZ6I5TmAeKadadd0/Hezj2ky6vo3WXU+mlCbtHdxvZ6LHGhEO3brSHBNgD/9HKL5zWOA+rG9xTvQ00lvXdfcMw69fPYBOMfSNoTqGuhajF8GXH7reS7bl8MetHKi89VhB4ujBtrd1IdAE/mWCeYz7fiJodct/iaqzzeaXhxZRxbrbqW48Vscjuylb7vDqB7jN8ggDAsfKK5l1uCem77fGJ7bpUp8DzPWyU+YHtXu2XhQBf+f1vM8BnKx6c8WMkC34LHnmlFV36fRVKumKSO7JxEsldRD0ODouRvBF8jEqBOIrIgEx6e/y3rSa3zmOcawTAUa14UMj0SiJhooIIqwzz7NcpJGps9YbTboqeQ3VrUqmwRwPfXtok5iB0TSbM4Es3cnAEBu/dyUWntimmyJbEEIITkQLh8L37h8+fTr62Fzfuh49+nRzhPnN9frq6PPtx9WnH8ROdmEgblXu2pPT2zjlLxxXVfBFGHcbYBYBJKvPr371imrN5xcXILWHNvObRafLU8qrAqkwsoFdgIlO5PHSf2nKUQ6P69XsUkW7eo3FXevFlymhuYVrbrHdXEAzdxKGVvM5eai29CXM8zfHxnsOgwvkcEOfP0BvLYz0hL6EXHm5oQnT2elkgwfnBSglqhYoEk0rmNoW8Sel66wmCPcG15x3DEQHX9W19ztCgyKsMfY8bEFqy7rHUagvoM/jOdlUS8m0VyDrfIi7WOZuWUceXUzoYkK3jSC/C4HWFkNOGPIAxeskuDntd+gfIQNS300YVsFO7yy/IS1TcgCMmGSpU2mTZheyvoYhOh2fwVAdXV1fhp9eh2CXxRCPMDYI1BkgZTtA9O4AgXv1rm6aH/71O2MEZdRH77/uZi1+s4uf7c0gZnlmFaaN8oQrRwQx1m3JFjXPFSYtFjwxfEHPBXSgqehD3KN66a5bU//Bieec+B9OrBtONT71G06sPOjXnHjCiWec+C0nrnzpNz711qfe+dQLTpxz4iUn3vtCk9cNhmlf4H/LekNRE/UIUh1P+yk8uo/O0Man842P14YptHXjpzho7/NwdhtyAQAF2PTn81kHhAeSBiiHJX0iUL/BFEparSwQ0YEolu4bAwhjSXGfZ5BA1QBhLMk2ojSWrKIokKXXKBTKDGN93l5CG98RjEo5YLU6gTNC19Yq6/T0GbgBT+b17FH3G/XT9vP0M/VsXhfq+0UCEOtvX10189mT6dsmuECjfl6/oGj9E/xgfF49C+E/BH760Q3i82DT9zSko/RfWKOnns/nPiZ6PtXw6viytlkVAuyXpmeL88H2TPrcvpzXT+x3hXOUFDGoLIP3KpUKpfLGSuUdSuXSCn6EcKiFoLvURNu+SmifzNnYgkFQvW+6kuhzAwr+P8jM++b0HDl+34TnlrnT30ynS/uBEqZu2VQdodv0Gr9dNWh0l32Thcs+6FhfoImpul41Z69BUA3QCE4wtcJUdb54CU15CfyoLV35dccVfd0oqHKOWgIF3TgH9ifvGzeDtrD3DR13XL9ugu+ifGlRviQf4RwS56fPwxfAEQrnRVBtIeg9dpC9UC+Auwq5q7At1QtMoS5Y7GbxsgpkVP0IxgvoQXX/BYGluEI5j66hF/sUD4Jv3zr3PoJ2ZwnMcjw4rI7PZ60aBjBU1nD/wLvrDdzJZ6sO6hmaP0m/6O9lj/CkS/nqu5TXRPl8GpszR0Drk9nmrsmf+FGen2CLobULDT1d/Md0+nyxboLqZf0MRl1cPQ1BFZ7Bf4tFXD2ZWuP9DAeln5Hqp1U7AdXPq3ZyqgHfWTqf/Uf4NDhJw9nT8D8CzqbCQOrMpPl8tm7C58EJJMPZ8xDp04RTP6lowqmf8XfF/rdHXocQtJ4bA6M/hQ8P2kRnnFMKL2qnFwaYu4foLak/kSw1Zr6EugGId0LPxIPLG8fKQ48sqKi985qebdZmK4ue2xgovWOQ/mFD/DdWk5IgfVtjA3ks5e1AlS+V8ceuOzVQchLpY4VFolOfr50faMNJrlD7isGAnQD8vP65k1097D6wKBwASONZxVzTUzaOsjmRXgNxgHsdosf9lYgGvaw/IrFhBfoz64/Q3aLpEzqaT68mzRvq99hJPx7b74R1v34nUokjlVCElN8u2jjHbUggbDUTOt1QF9FTuLESwW/h9Jpy6dyPZoT7IbzzASbyvc9mm7B2abXEFLrp4SY4WTI43NCNAFiHVLj3Lc85GG4dSBsDC5l31ZaVw29yVIyclGWwFYy7dG8KHe9iqZYQflO98Bt5LH0QeP47kT1hxn6E10nQLBWCIL5Bj3UazpLs39prUrlvm+/794y7Fz+cs1DCyhPs0cuQHq9akSK5t2E9IRy8/o/EcFtd0iMmbzsL/UZ9lOk2p//EPXerboPAr8Tprn84o4Dvif+OEDxgosK6FMTJq1LEbyYMzJ1E8lYi06kj2RON/OmGhDFNDF4tmpsyDQRmqG2j2CkcO8XJ43rn0qSKWaAyJZXpX4XULxNHJ/11Uv56JH+3x/A6qm82fjFBudC4/vr19kF3QTuEO8pT7+KYjNJQbP2g7t0VFQR+YSQMZ6njlftC2a4inHESv0oqHBvEBOVgCpfnQJKik7705pRLnjUD7xOb0JUITiBBwbgFV2JE815tKLhjOFzdEBJs9oJ+LeWK+GZxa3l5o8tvidPzSVT9FHa3BdyGXbl3luTO65/uGKCsz4cN1EkkjlVcmtq5ieqSZnX3fewsS05weXrrBJ9pUxCorGtWFJ34bJNmkF2hFfzJOq639Dmup0fT6eO6XZwHrXpcb9/x5ZdtPu4v23x0fdldGbrXgk0q0l3IyjB6kNcW+9WmcLXgJ+gTkNLumshVZ01ktX1114ogfhvHbK2O3cOx4usySC04m54wf8U2tYsD3Awq9/qHzee3x7tXv8F8SgW8th2rSajpyg2wase4QGDrxjOYaEF17b6wZPc+MqjiOaDi3fvIul00Q7i6DNzk7ftkG2X1Zl5vw6hOnzEy2e6VsUOz1SCvLG+Gu0xeIQ4aNLQymZrRwFt7MLv/e8bccu7v3jOm1uqaNOuDuqlgvHc+wVbNtKYEXQXkV9M283rVjXmtbcRLQVmjF3WDZiSs7VOgwFVtOOcD5HzwOc3XD4uFzhC5M+srJqAr+r507b5eXeO3ix2qLtJmSVQSce42oPQLygd69DUkhcdFfQ2vKNdhjQ/VTR0nObpvd9JRf0O5kwMq/x3nerf7BqamX5CqVB9cAt9nWet0ZjUEFERnf+/9/k+tGGloBJVprQzZF38X2UEGFq7d39eiTv4Yk2qvR7x/G9pFrP6OHw8wKfdGf/I3IiVB8UaOqe4Wte5OIdwidM0+1jG9cXUcqMuzlS90svbJb1UXH2yp/LgCd6qL1/vb14oWQ5yueSC1L/Ewmtc0Jqp13bghfV1/+BcPndezFcGDuQWFuroGYEM2gDJmq/aJi33gsbiGsbj2Y7EPnDiojnWU4EgEMGgWPXJhhvZH8/rrNcr1T+N72o2BY2+4VR/cVadr+LuqgtVUY+t+VzevPlwECmRTa1CSuee8b1+5m/xdqLE5vbaXoTZwVWa9mq3VGhK0y7mpX0VKl2VWpmVRJiouy7jUZV4UyqRZnpokB6g2SRYnOsatbEUWpXmmUwXl0szoDHf/ZmkelyaKIZmUJivM/3N3FkySIzkUDob+F9dB1xEZF1KCpLyZY75lZmhaGmb+7/spq3GZaaBsp5VK6b0nuexq8J7fN9yHRKt4da+qozbBa3d1D8OroRvWZpJyLTGVqqVFuIlLd1zV6L3ntx/3GaPZ6FHUY87qZla6xBQ1Y7TW6mJatRfWxC5MibW3Ooi3la7iI/jfMFU1d2uz5NkgYylk0d2dEEuvQ7USfH5bclWysWaltWGt9XBMTTMUG3ido0n1MTBlWEdTL3O6eJNpwBZpQTBlqw0nh9Eabh04I0ivqAh7oX1gnKG6sUQblYATHmwNWmrvrZCrTIBkluqUnAmyFjbUq1ipMUMgokYJwuqgDwacIwO8QYIM0eEDr6xuJEIOOducmQV624DCntmih9FxUoAgKB7UUQYFI17BkHg71HvDaw/wUnwXcp69WQNvc2XV6ZA84Bj3qYIGSxilCsCI62JoLT5HNCrR8YpYwLPiKjOmo3h6NdE+WRyd4qsbnJQG2GTZ0RNMioMLeqgNbaV/Zaizck4ikob8UqVB/i0TYErvSCaxEBJ3sCaqRBIV22YPW1/aJUCRznksjaqwRCD3QxsqRfmpHfQEF5XMJ7mQMdxDQtnqGCJSw21tIaxnQbCgL4gdSQMD5Ezy7qOxTVwTdqtDchB84ZLJqB80AtknAl0yBSBoUA22DKIU/DtH6HQE/4inoE1AQzsp02pAXxumlOqkvIAIyui006TMoJNDBLF6d5EMq6D9KQ2vxAreBBFKigyZdJjAlsQV1YMsuhGfWdWabZfI0Wb4tBzE7cRjb8gnwwJcjWGYkiScm6PdEcSWwcaoMGZtaXdB2CfBdhhsk6qnCiEZgQAGhUz8DDZkDM0KdWjF6F+sWLBUYmgjlSN0ogl1GcWoFeuUKV2BM724wHO4Z6zMx+kQvMJsyq9iSkdiPfHiqVwNx5VQURBCnQIuhFTaKVU/qbQJ6ynUyWodh8VqA0NEgEKc6iJfFIltSjZ12hk1BdhQSIA5LDvSIQj8M8j6q4x6TNxGiqASIMszKOg2+QIWgkINq0GBxcxSaigj3XtvmE6YS/1n8WBWaZK4AlgcIIIhpAKfZE2JCILNDpsIUB8Zqg4gmaCAngwsCQM940cczhlENUrYVsg5056VBYLhVCJeIRPCs++SUgorw0p23cECWHwqXGTUlZqgvdAfU3aTOgiUl2I1XJRJ2pReqykRlGu5QEt60H4MTDlpoImGsuvWAEkErcgigk5ARN070Wd/Qpw+8F0AjSGUwizWpAAUtpyiputKy2QSb9AtwbQ6SbdsKeXbWNzQLgiRQpLUlOptPfk2pI1bQQTJkgwWxLRm62Wh0hgGw6yIQZ+yyhkEnSIjCIABS9wNXFXSc+bhiw3g0XdQ6QB1BIZXGl9SNIkFCjFEiIVre8qNDJLDVgV4kR4VD16QRDkNAJPVTY1rLtjCEkWOOAJLRf2+mjXaHHnxVCyVSoB66hiGMMAngIGB0axTwk7nmwQtBEBRV3ZZPdVeU6StOkGkygmYPpfECXLIrpL+ETy8a4qUkLkmZkwj55gSqdMPmMcCA+XSVbKtK1wlh1pIdFEEgFm2ARbC6GoUA6grbGZRESvSBQbQCrxqvkGgs216knJIrEKxUAbOfLSQFZXEkyekOf2PCkzQJGFFVFQd/S9pEkkQSkJFIRsp5OUNSdNglyxoKsJ8rnpkW1P8Fa7RPr64GHv2fVSWcsMklK7HfMZICIMIMMCkoGIW+FeKtEMQiSEsigBe0CpeE0EJFqChIzAqMFtpQ4d4IQDghUIksLnYZIcopoMV6QGYYkgus2E62MfhEink0YtmsdX+e0vhyWRVo30Qc3eyyLYP5pqSsALEswZNBdPKtTGwwZSogMsGphhmfaRyqSvs/Z0Lpz9149wHA4V7lPVBxefvf/YZP34UsL/DO+zNJ9brR2S9+6czdzLBowTee/OmmxP7Zx9+5FvpnfXdzO+uH2pV9v609Y2sfstGPHJZP1QA3HnY8U2mnDwhuLTzZP9Pe++eYv/k5Mbmu1D1Fgu987kEfrQzWz/aQp+H9PN23xDH00L5wnv7wzMP5Mr1cmVzf3/m4duF60e/Rb5Vvg3x7P5b8s6fTt/lrHvOS3+6+SfNu85LFy7B+RXuWv90s9y8eJHR/d/jfofNlXJ9fcvs0cDVdY/LB3cc7u5wnDe5R1++dnXzcdRm0lnTK6emTzYgyO+wPnk+9+7h5m5+K1P725XbLzF+/e8fX13b/9z5+ODWn97afvuOyN7IV7V8/WDvRm7C83V/bw3N/y+r/rc1tvsoxv3N+HZZ86et83VN1NeX1QeXbj69jpeLqfm6q+++8Id1OJdNP5q/68vd5tXWqfUaR2ab8f+smS1fDw/Wa12vK3ipb99crjapHBx73l2vs7+4THVnc/jP5f3gmbdXcLq/PPhKYu6/tP1OOYPWq7s3/wdSj/SP/ONpwfY/PqXtervTxpn9+3wKlnNuDmxckpD02TZZtocGsuVuE3gC3T73pLl7jBHBG2NT2YTQDd/9/kZjYQkr231zX7RYM6PR/NNobEvOUkoc4q1cdd8/VQZ+mq4SOUGfpsJei1UJc3J2e+xVr/zYvxf+OMTGwXXlUvjwkqgMRSRUHILuVNFdhnK+8oH6mAR+VPm0wGtKUfX+OjqrdsLUH0cC2h2fVbsxX2Pgqh6sMsDrR/ADeHPn7b22GTKryr+XfhROQyGZaTta+euUWEL4R4KC4Y2gpUMz+tfZ7alXHSQrIaFX8AA9qncb0OUmwaiPYQolsNhABJEi7eFI5m9iXel1KrVBr1MnA32HFoSDIRGeMOFvvUrnelgZLqfT8InMw+ZP4ml4v5Q+GQ3mkxC5cvnvzjUolL6QfZ5ATZswt1aldnNx+WudNe9Pp1Abv3GuJDpDole9GO/oI6K+wMMumCqA2VLNwtX3J9X3UwpROvQ0zOy6K8p3XNlBQMDfYPoG+v4N0/ZkEuaBc3ykxh/2Px72Ot2byg0OQksOq52xERTH7LMPSZrR1wOoO3umk8z9MK5c50CO2s6HiwEkPjYlbhYSQ8zjUx5cBBTPu8FWG15+/lR36lxweK3G7436NC75YSdMrrCEIjqumA+6ZkIuZJgKxWk4h7Mq75dhGos0VQx/KodaHimwmiQqEMG+TYNIUwwSmVWul/OxkBhzOOjXifit4jjMYMagMvj9FPNAwlAQhHg1jxT6949tCsNmPivawyG4RWGA6Y59YYRpsqaDx39R64Qtp2bAYQdOI8dOVDSzplsYKwpCtljzlJ2zhgchD6bJ9/MEJYSmOUMQVelDliwqtd9+v6pXoNv3+jfZN/1F9gqBoiIT4ZVSNgTMHdvgjYh5/ZoSTaSY/GQyyUXpjbac2GLfEeQNp9RupXDfBz/KKm0E/WOuxRC6qY7QTGaq21udiZECKyrDV/x44pqf7WWWzLeW5x7E4gSePoHPlosFxQn2U8axiCq9CUTnpAoa8n+ZBuYOZMh2AhGHAgVdGAgIHiTLWAce4U8ID6VlglQ0V5ZBlg8wFQh7CjGK3qP1QkFfmzzZNhM4yZRus/H2jOXtQgr3viKfPnXmN6aoK4i7+jwpcgoWmYsZvvd0QdK2jrbAD8LHSO/XmdjFsEYKMPf/TOTvmDIYCQwBCOMCAIr8K1ZBvkPsRjFIKTKWczEBhQF3y4Ga5m5bAW3MhbwD/MTUlPUMoKeHcsrYoHeEJIQirdCd30cQ9aSCmHXWUnW/1XIibid3KNgMbgeTA/6CGsq1AoyvOZTtewOrDmcIov/AMSxU2dxlwjcgtK1P+F6ssHvNI6B3fGHeqTRPgS9cU8a/Bp49ZY/bhIC+OVSTBHF50iQ6aZpEL6t/QuqbXiafTNQ3oCcH+P9nSJnv92bPCopg0chg3GICmCNP6kCzHib04JTggVsMoN8QevZ3DoCDj4goLhkfmCZhIF9I2UwpQsIi/L0HKwonB81T0L9GB6UqoqWWi7vfrCOkHsx4U8nFn4MlW7EDe9YecH+QG0O29mANSXsml5EIJ6bAD7j/AQpkJfhBUx+4L7o+P6OZk+f3JqV6+bYgv7vNaWkayNxFu8Oc1j2pPNX6Z6xw34UOEyj9TzscowOuo6VoPRhWjg/eePh3oAWre8dQTomyv49LDX+nO+e/5oQ4wsGuolOz3MnUNgd56HRSdDp1d0LY2F1Oiy4a3LpHlhkl2ORfk1CqORNPGkUfDtszgq2xwObNmkRU4J3zm4PTH6/8bIaQShBeW9ccnNQPT+sbs1sKyWu2nQmD0J8vUJIY85JHAGRyQDOTnmAgLxbo3MjbO3MrQ3fjUoZG/+NfxjpJQuvi+hdHti2NQI9Ptsk7wGTz/BeydMH4FUIFaw0o/QPlNGVczN5Sfq6Xacr5uSCEMw2yIjsz1nVKY2ylaW9sZWXX6Co9EGKvPFxh/5I4rhztYO/M0nX16X0/Z612cvBnsRAVKhr8+tYDgpbPrTS60KhWvbi1hd6Kux3x4p0cXi/hldq74KMyoKTScRnUPN3td3AwwYz55/Oh0PeB9DV66lwMjRctA45nRN68teBZe754KRMujMS2KDLh+dHPizwp7J3+oi9rYOjLVECP2lylNQPjCrY5skXTpjLMQtgTCwvGBa5+fmohkYWalI5qRXaaN9IFnn3Uqq+q9cafSRjXcEKj7gRiOTqwRi80d6BgCAd8nkdkCXHE/gF0fn70wzbv/tfpeV1uYxdRLDdE9mJ0oysiz1iPETRWEYlAOjBzTXl9NulBDbW3U2b78HJrlM353najy8uxxwV83nm8tdovwfby3fFZAf/ZgL8Cgm0JavwCtIWAjiEgMv7Wwd+rh/xdpF6EvE91+s/bKs3H09HAfTrNrDdhjIPjn9QXFBxbfkol0P+bDM2TtztC7BHXFOdu2mmLf56fdxYv506q2H8M7/0skThGcng17HUrt8ev3t59aRw2Mjx3q23xjSVusdv3AklW36wgByfBcg5QI1C3bl2+Obwe1qqzLFucHR6uVqvG6qSRyPvD47dv3x4+zbJ5hAeifpUSWxVHUeIo8SfVEDpgoTvMl5Mvh7dfJl8adweNH4f+FM7+G2k8AUFWYvwQZjfi6xJkl1g8h+s0E3PO5bvQ52cc26G4+1bu8GAdj4DhcRiiN8cSFEI/9KL2KJwLOpphbh/LZjJZ4en8xjuqbzyJJXthcsotZnQovw/z32G4TzcfMUquDzfq0OAxeRD98Z8iIBj4nfkAzpNHUaO5SOGBcBHvglr9rBCwFnivj0iceWn34BjlB84+x3igg+gobimL+5bJq1fbexf/tornBAdj3D6q08+uD/CLeibXf6EWxQMwjBI8PyNxgD0+EXhf/+sB/21QYd07Tp8c/u+X9MfauzP67vKXwy/DH5/9BfIw+qpIeJpHzwACg/8O0KqD/LzxI80I6IpGC/+W2fTVm8OQw8RXub/+jr6M/z5KxjV6tzAV9JjUv/P+IuQZ02xgyY33tZDqwYs8fDlv9vyMe5p7dddCNviqDuucz1oPqpuCPbZ+OPZW3qW3Nv06r331bqsrGZIkeNaDYMc5nHv1oM9juP4VMZ7Iwz1dsz/Me4nTm/v7xnT9YWtlitQbVc/pgmUPShpgOm+rphSYF2yLv6oDOXBi8vyyESVs4MZMiilmIh0Q9LPMD2Y0hQ+n4AiPN1I4Qqhp4Eu48vDWO787hFG+gpM/WasHda2vjU7/unu+pmD0FaKdUsajWH0o0eIY3Gj7FbJH5J1VfdV6KfQ5sRShD3aX73alX53xB55aCN9kIeLayqv+MY78+KFaV7YE950eL2pwvqitEKreheuclO0nkwNcxDyKv4RAUbzOD1LJe5UnU+Lcaf3FWp39cOSJpwCn2MJHNI433jeXrc4jBGNkJEt1G+zDaHv/3GpekCuOC82oFXlGstgJFr9FgXWVINF2HyF6rRogFB4wOBiE6YJmtkJAktxubqNu6vyyWCep/f0ZgtuY4odJkOF8Px9ao1gHvvYNM41iDzn3IVduSE0k6G+cYx68Iw809Emtl7nVPcxSFFkYtbAfhogwRITyqWEb9WVGLYiFdaN+iWeF8Tsq2PKxY/hg1L0a9G/aN//jSe+iZsYNZkOSZI17kXXUW5BErmtVrM+Y1F5nh5anqOEGn/rR1K5FJWI/9/FnSiSyZiDHyO7IATrDtPZMzO7MoXO3FCDu6YBcZqQqb0xO9jHHiT8fQywFzbihEEgDuH/GrMAI7ff9mxEdQ93f71KG+H529McJUHcNLEtdJCRL8TGvRf5d66u+2tQhkerL2UZ1N0UbM8it5WYX+PmmN+pd/7qpe906/3duemI7eY83ZWfzmgx5auhaQpNJWmSS6/7oj8v+p+sOmeUdiM+61KFejMmQjbeCQNtznBSi5rJQruL297eXOME/RKD1ZR8ZkVbB+m4S8709VQwEyC9+6x4ybgvKl7mgF/6ESzGZYJ1V2eKU9UyrUlvHFF1rH1Nvk26lMl7rCNDcDa1jXFPPVhMXHHUrxF8RQ6qpo6jAqSuMkhPs9ERA87nnslHMuxbKgV9zGOoXt/VTEU339+l/GMZFoL8HwL/Pz8oa9JEpQY8s9px91K0Q0hb/4nsqC2iSvrObDaviP3MyYkjxhwTMZt5q+HMsknxdw3OpwpHaDjzAJt/A8Zg/iq8eNX5qYOfEUkYAp+rtxTyDU3D+fpWqX/77O+0o+pzOffRoX43+oA3ZTxdSqIcofnRBhnjKKhr1n4FMqPxQAH6JhqmXCUkhEqZZGKSMovKf3tqLOBAX/oK3M4TCge1hBDn1A8Ev9MoE+jVVCfGZ1rlJcv8ypq1MxfjIl/ML+sio5tcbDA1oPwjUhg09UErLL90w201bmuUkzD6yANxgHW6WkSbIZokMv6msbvZ8nySZZRYNHIosC+N7qtAUjG7XI/HERu7GmVy/91PBqJuP/CvXiwwzzF/MwqDEtNu+cLuzG08WSRhn7SAQaUoYmURaRiZ4DGUSU23UERlvE3A5y0W3q0Y3mwkZC9hHahVZPCpTyIRKtQLCm2CkIQ7Dh8sxvRwdC6lgLrMwrBfzTWNHTEWcmuL+KmIh/ciSQsPMLiVLfphImgLMnyFiKVXQ02YXkTHGZSInoSWBm8KeVC7OvQE/Qk4NsX4Tcixkku46gY06N+YJv1UftgeMF2kKAniDm4MhvbqnzR9635CCX4sM1w88oAkh53b4sy9O49uULxrbQejkNbjodQSFB7e6I5sJw1jKy0SOUOeLzAJrDzDQ2ARibJ/54Kczxi/HGBnbjwykjSjMawvipjFDm9EDGT6CKagGfsiGNTbomPTstnzi2mPZSNfMtynYnm0qrUU6SuBzN4nOaTbKFEo9XmvHE2uThEVwfTVwTWJVXYykH6chdUF/3rDESLfzXfCeNZpFUEaoTWrDYCbmDB3NQjkZ+DJb03QZZomEn9qTeRiHaWbr8iK5RRDOxXAd021V7Mj/o49Dh28YMaCSMkginaBfgl8kUcSxoSl2JzyMuuC4v0ysXErzuheHGDwT5LC4HGOfxfhTzwKElyFNR6d/L3pXf7THZKkg68F/AWPZ0Qu6ZhLevWJeu2eNm8IajZH9PM8zjPzF29O4HQlpiMOwNA3vYzHh10TZWgOTQBlDxYV7RFrMAdK62Ri9zNuI973+MH/wum3rHZ07bYM0ZVyS5LbWaUpDrRHsmqGAJUsZCLOnZV4GyAlfzHwYJQfOwgVfFNHFzfkiiVkPbi0zIdn2DlC++zPHxIEUmbBZaGhHLEQMXwRrDc4kDS3zZhKRamKrcDFtzKYxi2yo25U7gzJ7LIO9+YJdUMRLN3IGp4aThxI5T0eJrowN5MckKDGynGWAk2lG+yGtsNQ4XQb4UdGNN7lhrSZwTujGuMS3CjIFuPRZTF4Zbe/bQNfEpl2iYqLXizDODKhlbA00vWHp3Ot2u3wTYohsY3ITMtSY3nbTGkHv1HWaGVsPzYW2PVBQ7NHUmZbbcAGViR2RYnQ9ohP+eajDTvfVgcANnpC66uUGu8sIdNuBJoh9ZrdtazGOhUj5LZcCMmRizyENNUbSIJ7MFoLetrCftawKSvsT+lMzbBicsH5GbUlNs7yz2g5NLNxLa09fTgSUslNMf0XFXCGTqQfj/jsZG0CqKHfyz2C2TsnENmMNtfraMMvjGndJW4EtCFvIApmpkwsb45JvaA0AV0s2rGeuiUb1ZjcdVEOR2a1tXWhpqrEWB3vhLHvx5YWVUbQLNmJVqRAOI3Ev7NbLzG0axwAyoYC1U4WGJlK3rOqKgbwzVte5th1uhB+F33IJeJJdJpIjXAN0y1HIM3gq1DOHiV49GHpPOUVaUKvubtMn6CjNWxIxiZ3bGMTzTDd1oWqka0Ymaii+oPvpiauwsSledArTfAznYSYmo4TLUAVHgt3KD4OZCqjDARBdD8WwWPvIBFs6vF/rrO1QzQRPpyLIUntIxjgtqrHgbqxiJoJ/Skh7jecN+TtZVy9FejgTpmtEB0w3rVrRuay5yob8TqX7lOkheQobl1SIGk078zHMyPxmuacrzU+p6E915POjON0IL0NjgpkARwCZSGvN17ciVsPq3hsM+W7AvK3nKalwF1EIldxIVaGo4Fa3tDroNKY30LIwaDQagM+TjlkbaMYhIeAgORQpjfkpBQ8SnBE46kENi7ddmBhRxdjHuZMVH0J4Qbf+IuvFpqgmnXqEaRCbuCKfEebGT51jDwMpROxapg30riJDEfT6FpmTdRK54P/X3t/3N5ErecP4/3kVjeY6iXutGNt5ANzp5IYAZ9gzDAxhzpy92Hzm00+EnCS213YGWMjvtf/qq5K6pW617QRmd+/7uvbsELdUei6VSqV64Juxb6yMek+NFFgYDbJAhJJeSTO+9pJ8PN5QgnCiuIQwyaXM2HLv7+fFx5iCFk2SnOr9kZRjYnGQn/8RzBefL4sYl43t5JIuk6OsgGQumiY5ILfJnmQ07E8/HeqivV4P5Q4FJPBGPt+3PqhZ/iarqPniNXWGPz/S0l9izO/hvjxnMxzzd64xJf6C8ApoZzSQ8w+Tj+9J8Wc+uscfV3gkxmM2PrIkx89LEGXFi7zhxzI5nqjH5DeThXk9o2ddhPqmw2f2ngnPPBaOjD1QsvN5YITgrhFceR2kAeBptZGwzWaL9eSfJy+ukjNPBW/pJpgmVA9f814W4+u5sUwyf59PsirxxThNxrn52n5JUslz84WBAifK3HLbGXk0/7DvOXOlyYEHtxnZEM1yRW/p8hcoU7oX7KCVjDEnF9vU9ytqmwBhkbZNopSTc8rTjGzZluJ7NMPpfGw/zv9IwBUE9qEfnKArKFr92n6Wn2N2NV0PHKlX8FZjdPlj+xmZGqiRbz++tJKff3Izfj15wlZPWufrt2Q2Rru/aYQM1IvRE1KrIkGSs7E2cOpcz0lRDlbDT8tthkd1oSVNvCXoW7XBP49LsFPJU87uvOcASc/H9ONS5fP+jvtlglFs5C2jppE41EsI4Gb8wnWh5eH89Z4lwkAVKAkt5GIoSVlpmswZwFKfxBMmNV+q6JQqdcTK6POXWI+3yRlsITtCeVYWrLGl3BBX+oPkMz9M3y1Oe+fQeOG3xnc64TTGjzAyL3VU+a+zSxrWvBNGZZOTMXQ8XBW4D8SbWvsBD/ilEiM0is3TXpjGfm3AjpiwnVkoU46tb4rAiWRKnYvFbydPtkXXTv+ls/Mo7BGxg3qapkYxG4iRmqU5sTpWCpBYb7WOwA9BlQx3wrAsT+NTcmAYwdHFM56MNbyVGv3yrCOyQV9IqI3QFF+ChGjUx5q8INzviBp9FGFI+s6dOtX815NXP/eU4nNnQd1QCkGmSYbB9JszYfXwzF7qCPwSYVW2OTQD64yts/so1JYapuSzq+vLRNGed2VlV71G7ikKPzCF34njN92fngsp6J9Tu+D7Tz/RI/ITWOKc8lzuqqmk4mI62BFqTZkAapkGTSbN7URZe38gu0mVKe8NVha5LIhO3qoMbDBNXyFvKpjw/5iM4WwR5cu9sLSbG26b/jLNfq5dBv00AN5u8jD3bz+b+3eYzf0ls5nRefx7Wxd5F4akYgTFka9ff/k7ocMDoXLPJp1BH1A/diojYFuiRQiJq+IfoqsZGKWgpekXxa5AsNFOFpsE6AOHX79SivgXQRs3LXNAdJGTqtDwrKXUjwZxCbC4nCuNeerNhmbLMs0YxF/Q0MhuVTZT0PYok2holEqqbpTIDyNlzzSjCZlcgWh2XHbQVOCkopsumBjTvYi6zX/j2Mnd3MSMVklPrheLyZjnV2SXk7mnROcXTwmzrcUxCkHFL1bqJc9JXw/XkU5tWnjY9UQaOLX7L9RmPQcTRKox4l4jB3N2pDvTyXS9PSiPS18l0lfe25FRx3xeIhr0uxrMqbxWNuqGAwRed4izMPnHukvqNG+MPtQRf8wi6gEcQSGKLfdNvZ1whETzCXJ/PU9/hwLlZfLZWAtQKgwCXMvehslNaLILbzYpZ8N8YOuAj9tAL+lWN+8KOlyL7pY43Or6ir0rYJKIrSjywT7HT88ctuCi+Hw9jT9gd+Pt+NdpLRPaYFX2U/qqAUyhm1VBvMZnxCwKAdAXYqHoKw7/oTlhHg0XHFjN47h8Ai2aOW2nin9qpZNQdyypGX2AfLDSE9uOqddgEo0p00o3SZnfGQM1o7uvUCHxQpLdUw8qDETpflIsdkInPkcWp7qtq1746xTo8HaiGYpOS20yCaug1P1aHUhMeiQLmv92vvjQEb0rbcwviH7UMlJMGNiTLL5ioN+JU1A/oC8e1av653wyblSTzf9ADY4x5GRsbx3U1UlVvIhBf+h0d3PTqYvYbOhkg3LPU/RFIyNqCCNeH606RlCtw9xoGSdX7RmptfwmWElc05zPteZ8nNFPVmKnjiWzz2yR07ZW0Au08LFJAzBBJXuPNv/x8qcficJp45MoNe262uXDfh9m5HN11yGr3H7/0HxplLT5yxSa/VO4rXhLLLYabWaU/OgHWHWOi0YagcpnVPilftYBOHKp5mlJkhLQnHLmsnfJaZQrck0TrkPuFDnuOpRKpxj9GzsHYChz0GVk4W/cD6XdFJua5URYfXRZh/DMmCcgFeazjnienMMrzmISQOY7Z38ppsoAdYo2TeW71QO7AvHXZ2+FrJF9uQH+ltaGMLITWh6giaUaq5tdtmMOWEXIAhIjQtohIotxzjgNaphwuhM0syroE9xxqmsNPh2aaBFqbft179On/DyhAUNYEPrJyu4e6CAR62MVDItYvuoUi3b3nUzupH2s7TulmaZmi9kl9WJzk+/RdL+zSwx2nBJ96o7JfXM9hiyAty8hf/1YLkDTPecy0P6hU+s96yputg2xQKYMPzobBihqzYkzx5wy02cDggq5BZ7TGtBaDB84vei0VyyE9NWgouwPdmuklGasWvRkoVaS6t7fCc0W1Ere0UZJ7kjK9maR6WsnSEIjsTcn0b6uN2zNIUR08UpWGUD9vxXF9PHluVJ/V9tVqw63FOcB7jQHaGG5FdPK2g642f7oVuXDfXAhfuz/tpn9UycWnf6mqUUF3z65bmVRGxeyY+81l09SBwcfGhaZDxtbNo7tfDpWeh+OqlPLkc9qZjwcbWTNQhjwbt/uTtmBNO5LpxOgTUd0HxxKXwONqsNwtE63YWUWD0KHGXAZXj820szes2f261eLZH39ao/p69clhKQ1x+/NoZwnP/mJ/gdvkvk37ZD599oeXBNbXmtWAJPHG8BKINltXeirc5WDXB33A25yzybKIQDBztUjFvGFn4mnipzao1rVF7Ys4+KPq81NyFZ2eQWdHFT89aubhiZCLqCm9O3k7IyezAmy4wG0myIWipvaCSNj7KHEtyf4CcllqQRQjTOMjIEIXEp4IHVNFRwxcFqJopJtugkgNdjN0XDvMI1SkoJDLHI2Ed1UiUL46yGLIfmDJIRW1mBo5w37+uvHDnmRFkL92uNf1tua+7LmvKtt9FXvP8/V8wLyiF3CY9CV+rhkjapCC/fj6qEHXA2p6sRszRqZp4a6IQdj06dPWj31eUFPkDFZ10dmacYTsu0jigNOvPleAYt23LCJOHTQX5WtEF4Onu2Garw7Q/tNkpP23aT62yF1yDzdmAGg1AMzhTs7bvmy/+oNHa8btXFB9+UKr1/wnYUKHroVKCbwinW+9JwAatc0COfvbo/1K2IJu1/C7u/VO2e/NFYFnDlgHBmoOuDbjvlwKqu0l7BQnz5pAwcYN9CXV2+eBOYXyHQVps9nCaXhD98mAaGtYArHDMat1urrg0Zf9x/VR+m85XFRJzEr0LsiZ30sLAT1Ezc0qkOXAubglYty6hYl8TuyCPtyc+rJYlRUj+JtuWz6hZrRdXfx8bSw94j38DMWNP/2VJTfoGR0vs05xaJifxClByUDS/6MDi7kS+cEg7mwuVmxKgFQkKempElP8OqP58yOEPKd8KnHCCn+ZZXJgjiVUyZlPOX6JVRRouFD1ff3fB9miYZzySuluBAu8Lmqu11udRolLqGzcrvXAcpj1H3NtM+gzc3aseDgOrfr0hhfww2IUFpJTtOo2UYt5FXSwN+5YQ4RzfdDFmJTGnNVSvDdYQI+MFTbCJRaTxU+tcvsY4hKLunC+st1MaOd3CHyGpbZuqflBT+yjR0jfYE3wFG9qU5f1h9ANtZ6AbFkC406ldHqLyedYUghfnNyajfo9/8lvZ91xV9EBB5yc1OfCTxd8w7wnDOs+ekfVOeaupJ37JNtc383PHJSvsZEQ8tDhKlEJ5RzW6eBNzcTJgXbVHugIsgwelz0yXlgzPTy6uUn17qXeSkJJqdA/VDuOZ1WZ5pNvXXlFpGkpDAcNUY3CI/w15zHHR/IPsMYFQ4fzA48MOGX0Vqh1jSX6ArXpE8CJ1uEIHE/Kld/QXoqhCPX6rUetwqiF4Nd2bijRUjfo/RhLZ1vauZRidBmQARQP0pE23w/Qlmmj/Z9RR/t4QhNbW7aWcRsOJCAOKJ9M+IikivMQtk/jOk1kDZAGtoEzXcP0VJTN4uvNa6wXWYcp61x4wRTd/wPegBxLmwZXdikEDE6gn66eeYsoNvXQSMPQk+37R69YxSfXr2n8XhL8NOAt4Q7A47I7UttbvNd1KMve/nuIjmblx/ok5M71caUlZAp38UDmgUkEvBdQjIJN/orR+oVaHeulWSFFO57Uv/w6TmxW4vgfvAzYc/Bfc49dKEGFRSpzrUADQ+NEenyynYsOKc6EY7+zN6KUFZV93SFUBZ6Wi5LhxhI8uJdKpIJuWMbz1vraQ6pm7D28siV4e1RL7BSreuEFrH3SU/1xrg3aEX8fitaK0kFyL+/YEupOCVGSZz8q28rhRWQhc4NIbFH+sHDAC1s6c1gyTBSfjao5fOxpiW0FZBLa3GVLYGO3EUdwJ05H+Jl57GytfE8+0Tols4ONajomuq6ohzCEbymjP606ueo3xF/NiphzqD1GYcWTzNxzgSBhfMIvYA6vkOLUekTnVGfDuzVMKppn7pdF60+nerqHOj5VHmb+iRJjAaPE86zeeNdqJFIVyJ6zJnbbzD03OYUaVBVIiAU2ZAUH4qEX3sCeiC7GJMvN/Cul8Q0nUUwTbWnPJS1BeVQG6ahAC1hQWuNv7pwiH0jFwd5/fnN/0a3s2touA3Pj7fR6omzJwjPWktnqDZUus7DE0xzsKjIHY+nFXewLKBKQY6U9HJnh6YWKe77eylYdp9rs8azaeJ9lk6kqdt9rKdXvcz/zGvAnI3VrJmlWnovqQdX95BvPqF/yeNyheejd6f0rkiDXSizFe2Zzei5UgiZcemFFD85g39HyiE+2sWJpMPLKlG3jh0UpxRW1pSQIizD9xg6MAP0RSgUkgO/OdBDHF+8m8E3dkJ/YoFpoiWxoMiEYLcOBebDhdL32DoglNK0XgP6MMUg0CHdmUTB9g9QpqTenek7pJ+qmtQ4pooD+/p1yqvIQak4kcD5R6wzpckF70O5/MOwPlU22CXK5h+xgI6xyWLtMPU3HuAVu1xAPlemoSy63Zsbmt6CAHMalNYOgj/E3Hmjd5fauEe8Cr9AHk3E0Ko8/FLt8ixa/VRvFWV0WH6sj0/rD/Sylm+96ftpr0tn9Ji1OC6dfOowncCGFcANGgrdAia4BM1m19OF+8YeYM/1gl+VXTEe40ExeiK8WbL/+Gzz7vkMOjQZKTVh75/nn35H9Vhb8yZiE2LkGecjTOo4fgmRQqXAurcrpOGn1aR02iq1umvPDrrVrPJe3w/eclDV6PBDKWAm0KTDXJNDh2VbZ+xZaJYrmUzSChwXDpflXLfSUEs8Ur5W2V8aidw0Fmxczc8idivVgV7NMIVzMbVb+Jn9/P3nzhd6DyKtaX23H+m/sqKh6Y3aw1IEgYCfVLrAEgNx/9/H98+kpqGhxE5qrDrU68cZ3BoV7J3XijYCj7Ekyu4IlT/BRSBO9E6BH/V5h+QAsqC0aXqRvx/CCUcnkznCTD9DfFQpKJQUOWsGidHbjCTaeUf9nE4+QphOV+5tZwf+i5M7DKE4y2cSJYTaEyc7Cdca9sfn0w8FmaV2RFLMtyke8PZZdiVkURUU5PsaneDe8j6mkQpyl/pQSM7tJu/Ee7xviVOGN17gvlwl9FIxEjsU9nN2/XGaTQjq7e7s0UcKGL3oF7vXZ0KatRkQll0uRnmj7fM/RmNJt9WRcqIHa096teqEDTjlgbS4cZfoaXGLJeqAQygzUorVhQMn7D1Rv4j8ooc8aPYafP6HHK8uRX03hS60+p/M11h7e6VoHP61as4X3sh682qmrCh6ZgEvuD+8jO4CcpKN6P7rpt7aFKnkF+cGXWrC/B3JuboXE61KQ50COYGQ+DzBpxE8iPCdSEmEeKbwfJtsnCczcRr3D+qyCXPjEh8/wNfjSPx0fvZh8W/F5eXko4jSo5I8thYNRx1uG0f5irZdkUfJVJCS8r24nuvvkuS2DP1vaUv8r//1aq7esUTcqPjrV/f0qEtnSGgkUMxNbu2PmaAN7wzxAG85djAuf8YQQueE8UhDvrTh31FTOfBLTaVeonsjZZdY/PrmRWlD7AjKQlbX90Ihx4aERM0PiRwNxcr+NIlgCbzgajxGnFayBsosoC5O+svwJhz9zx6pF8pFjrBtKppoIjfapuGW19asZrn5+5+v/n3X22ezbu8dFGq77SrGHjE5rDKbGkWuHtbdxDKpUqKuZYSRKyj++pVNPdSN6v9Kja3qI1dSXzS2RabW/oj/jARK8MZbUgL5Rxv8Vxdxd7W/GGDCqCHGznCd7XbsFRyO+mFkJ5REbFm/2ICH/6BbowZ18BbjFvgPikmXUqzZWBg1hPHYFAG7jhDygbQ3p7VvcLlJIDgNIz93FCkizsyFEcj79yDqYr4UKvu0d8oN9Ub5gqZLambJPJJv2JYZBCnNbZkAjbwTZuMh4IA7fjjkVHBAGsCtPEii4WEdteh5WK0qyq8+OBK1lj7YJisxMjUTki4t6KJtiBFBeNM8ddY6c6KNNiGzcxo5Sw6y7JGep99Xep62S8+j7yM9n4yfV6qoGJSlmeq89Piq/wLNhr4UQl0dHkm8RzUHh8yG4qrs3/PDgvl1hsaMZHsBvuW0PqnLbM03MMtdAGbdW123K51ijqiDhIikmcgW0f3W/mIyHsh2S4gwyvrmJfKgBeZoQ0WbhWF+oJPESBCM/oIvBLQzGLT34qTzkKQpuHbE/mU76pNYoE/+R0Rk53I0MtuXuuFGEj7zEs9j+CjxvKnLPE65SOorknqKlMGQDhEsKjvQAaKYcYmb71t932bzbFEbCsyYRqp3QpxKCOL9KFS+sbkoobmoHMSYcELpWpTaAJwamjdL832TNuZ1Iy1dsyfuLKgAD1YILjcXR54luEveQSJH91dxq0HIAi+2YxRzh9MZ65+alcj5oC94OMJwZCIc5Vokr7OezbNkWkC1r+Oh6QwMTw4avE9Vg6gfiZ8nm+N0Po2MVy9CdeLGBC/ShfeAMEwR8Ip2M8ySze+OtwTnhlznTDvoOc9jpVZC1XUFUco8vWTnGQ5/rvPDQyFn8ayrih4eLCDl1i5+tj4U2Gej4e70U6RUt0a0fhmRzv5fwuiKHgzOx6MdyqPxERaM4KmKao/SCdwRjqDCsxVkJByYT5OMqEDcV1/sJ4i+hNyY4iXRRMjJXVrWmfKMGucoP/hNrcw4RChNgd+U9W6RB2uVlDQeu/S29Vur+6+qIGwWCV6RLueKcjt2OeMVY0WZXSoT6im7V58yXRdTWaapZXVI46TGxFnVOceCqY6LBa+uF1QTEekfjMEuvCqZA4+BGKbj1u1b3Q1TOZARdXqRU6iwhCLIruIt0Z3qR8evIuyKLcFZxjPMlnvx1oMMTE1balu8MNvikEsfLHKk/2Ttl+wS7NvZQG8CCvuaLBQuH/J2Pri/yK3SDMW7YwCvVwfKDw5qhUKKrlRFqlQCKnp/KrtcXcqP+TGiE4puZbN6JAL9S+BO0e20H6wiyHUMeAYVwf3DWkeVr674sni/ODxIzeDIe842DNxHg33quuhaxO6Cajm4n5pq2k/+I7cFdTbr+o1LMJU22lNNbBR6FWWAjqrqGxNJRMVXlhSamK0allRBSLGCLkhRtiNGdRpzi75jSf9RIpA7WfbGaR1UYwgcel+s3qFl/0Mba980sXa4DtbeV0SeFhYUn/8VUUIPq914hudeL/dBh7pzFqchTiec0TyLW5ZvOGHhFc4OPhC20wmN+wrzEMwneHK9xNSekcW3Pky2gZ0jlNDfcCVHiCkIY8lBxIY14WjYICiPIJTUC801RJrBR5+cNXj06C+0BjjtdKGb1TeN5iYtdZbS5dx5Wj1Ve/XTUls/7caVRjv9UY6S7Zil9sj07M6S/Px6jtkzW2e0U86kmXuk1B8JRj/keX7YmCqc8lG1kI8U9qZ65vzgGtdolCUYT3PzPuaOr3z0EQLCUK/WV/PeqhmjFDjt7X3DRyHwSHSXc3S+VsIaqkXUZtsqCbilCWA0JOTq6pnjowohO2iMmXnUtNvaluuUX0hRCv5uO0zNxo6EiP2ucG7RC5ub3rhLuTv0H30Mw+UrU3List8cJPPsVDnz6UEJHEYNUL5RLGvqr7TBphoLbjcQVB6GbOZaz/vDBNdUPnmGnpUy5xoBPD5+KaQPhgJ1aZBjAqGWBDCPU9TMZ8unsVQ/hEaVkILMQDwd7W5k4U09HXt/xcz9lMwXmnFnrFCv4E/xuOyrTekiIFc/VeuZWyKoqNGL6YQDr4zen38q8kgTyocgd7LWoMMdM+Fhbo/5O5zrpQx+64R446DOOW85RGr4cHdacYMrmerGNPP9DZq4IpRLe6OZbJdE7g6t1l3229+SWN6IXrSljfg5tQ1fc4Fpj4kuG083N4XN0H392r5it1p4cyH6fxMC+PvszM/KPlsXx2U9XcKx+hEntFfyBtzZEIKiqHZna1E7A39gu7X7+tVxfTk3ri+zSme9pq3l8GhWK64HNH6xtFsyfInrarPZnqI5qYozbTflqFgapcqsoUvt9yzkedQ5to3zG3p4JHW3n5Wl30eFbNGp77QwIMhrZQrguhDo9wzcVUCneUDdIZ7YvJAExCk7R7mfveqKHtXCiCxT9zJhhFD7zt06Hwy0iSlskwPjB86dKK1N+BO61Amdq5G61UUatyEtrpzS+aYAHuqUgMyEhLPZ2y3ZtKJQbQaVz3tlRlHrnYKh4YpbjBbaoGuMlrdjyFvcLMbyCeDxGW1Te3zQOab7i9uJ6vVRLpv0cOQbdKdP6GvvwyVVlHL6/gE64ay7CGsqRK4ukK/T+nmw1FXKKukX7Z+a4ye2JKwpuPZD6R3ToLRGJN04R73IC25pDK7Lnss8XpcTjrT5QhK3ThrV1j5BrMJ/Z1+bIBgJmi8V2qPMnPlcrGBXmonMfTU4z+MDrku7AtH1GH/KYRgN7yF/h/79+rWeG+1WhXfKwqW3YlomYADW2XZOAq7561d4YWlxQIIs1G2K7bjL7dBdDmTseb2hc6S0qcxC2XIzDh1Hd6vfQBK8gbTQ+ByPs41VVAqTRjTq1yIsjsQPSR//EyPxQ/YI/xNQRSglp2FPiaBwdplY0+JsIMI1gOYM9WYp1HAtoPmSBuGxm8aB9kZl194sgxwqyKFwzmJ71dJKFNR8oCI8algjxnEZ67qWF+lkrFxFF1exhH4tqzR2OxmlhnFlqFjMrToez4pEsN21ftiMEHYbH/wc1TzdHK422MaVUe7JVZ19dSHFAWQyCbWIY63ei6YERx+Hgz06oCL2xQpVexXVJZhP6TVJUfr4fcKelZIcLjTo3DLNgJ/AQjdHbJxT2UJFm793Fn310PQ2dyfaeJsZag0Lmxc/yuzWYiFGHTeFy0o7Uae10wpPl2fXY+7p08sz5nBbnxGWCTb1IVyTX0bOkOpD7M0VDZZOohmDn+nlS56L0fCVaFVAs2zcf6YrbXJTyyY389jkpmyTm5UcROa3yW1uAktvAbydb7qB8OBpAZkEJmJDwJDExWHfNC1nO/PQcMMWC6jrh/ERc3XQwGxsmCDJsmK6iLdKl7RbEHKvQAuvzaPV4F1sH71OfX9GmMir6WIN88ZGh331oNu+fNqMA3cveGEyJp5LNoTm0GQOjMPtLlnDam7MVnPEdiTlMoRfPO8I5clerMTjwsLj3IPHBeNxXuJx3oLHSS9jqzzF9Bz5ZobQAfz5aF2Ud8sy1OLD+dxB9NyL6EdCJq5fQn+lPlPxXmbxQLKIkaAZoHH85Xeli5AoR02jvvw9s9yujAbydwhBR0LHphE3EXw6lqulrCV1R1QIlk6ymKSdCiCUY5Yz5mFl3hgXcnxXjlnmvVWe6sZcesyMs+ciUPAtwZvFtwJZmMZW+LorewNYBPAopuWGZrrNq8O+2QCifQKVUBl/y8I+voRwvufxBlKc0yF3v3sqCA1UTrSqqmXG6aBjacfJhdlqs7QXu7lZrrTfOjZQGOWzoZSflcvtOdSkrxWnGWdyDM/gES/GaeRNn3fjtMvmgx4APjKVU9+2TMP2+GtXTp+EeuW2AD7I1KamTemffZl1bzVRUmMQEh+DkHjm0qcZ2nQl7QQASj0xgaIme+z6KIKj5JKJrwIFaR+I2Mkqfh0t/JTw7h+S//5bGNlOzLUenzIjXNBpllKPOyK7IgQMM0qHwtvYBE1yPaDrH97CZk7hJMcLYAzpv1JDpTiSCNqV8PTmUl3wQed45LXzJw/FNhXL6Sw5SiCD+zAz7/n8xOx7uYeiyRZxrqqY6c0PMDA0UjzWTMiusCSlAFk012mrC6vo7pZ+7IeddO3RdQP31KwqpOK3TGO9IF0Blc8mCHQKYr14GuZHF0YmrOrrpMEJjS1N1YSEgsNZvEljFF+a9Qys/a+OcKK47IXAkm2lZupAstJYsRcvINsptToTO3FwGsrMThiqhMGznX9JuhnhSj/aU56sBmTFlh7l8WC0r1i7YX9/cBBnKuWBShn0H5UpD3XKgzLlUUzF9w4TpO6WqXtcizolByExnqrc3p7JH2g+UhUclsn7/eGDqpiZUaUbZm1rn9tB46VVRx9Aia9fd/HXJPFPjwvTd0avlbqif/R8ThGX55YhDPDs02xlZSlpKl/ldxHdWA/SVE5Fmh1i5u8WlZSvps26DMNfBidQUQtIce/Nm1dvRvRUe32ZB+PJQkUpqDxtaOtrILTtD9IcyFmMZxQd+cEzpXJDUC20fzUK8B2hvB9iy3wEo4RT6grsjIaT9+gkoh6yBJhwRKZlm5UvPmvvWDtPbTbXe64fbnBqHGHWd3RGEwkHe4y+HA2wtGeoJQ7u1b0YK7+GrpNl7TWQPbC+n3RC+fAgtp0KIpdjUXbC0PbATCWtL/s35NN1N9B1N9Fhw3dzqwD29u6cG1LaDdd78zKBLaNAucI5eBMQSNeHpGLe4nuWZ0I3X194PYXuxZTlqyy12IS+TNYNh5gdJMZaJut2Q6GrThdjyMiNEz4asfpt1Djje67zLNcbMh00hoFXKGM+en8tFq+LcY5gtpl2XwnyUHp8dj56SwNAA1TXyu5kl0ILltg7tNpZI5Iort10RTfjRPq2TngT1ubGyW8sYAf+asvhgCjCdSv8I3wgp8VugO/faQ7JLOFxlhGpzD6XgB3nYEKycVb5btXUsLvdvyI6XXJpwitSMlKf0aPpbFws7OjHpkQzbDrloC1dsxVJWJxGrq9RLccSvujKqB/V1AIsP36NjHqYZKQtjcZMOP7I2/S/LA+JLMIWr8WZdKaaFxUMGUjSRsokzzj0tm9xjRVqxcVhH9ruKvSe0S6SWfUzhU6BqkCxVL0nk/xz723S7+4/2/2XFBsemf85GVOk7/cEiiBCji/1dDtrQVygjA0qrV0hm8cgkkwEYhj0+PkkXb/DJtUCVpUX/pgpn1HLT3rLV4n5rJVgJvzTKjg2MnXbX4ZcaH41lNN6O5ince82QKPtuWVj/mz/CJ0thfq9GabqZo72R851gj300wdw+P24NbsM2WXFGoBP8bjvXgWTUHOh7wpS78a/uuRhrrh3K4VeQbGXKH0JuW8l42o7PH359nl1ts1jEUX4hFZH9BNr5F8WxTR6Sv/wT52ffc5IBt4B202+Ed+HEe3GYFuFp45+PE+hqbGgfKTOCSaMDKRTHvnbH6hMGL0k3UNKT6/nAcJ8LyKSf56NJ3D8HkCeyO7BOj+/fBFGPxPHm0xh2Apqr5tWDdC9OCuIBbK6U6Y1mihz3D55qgtdCE/lYUt/X/z84m1YxqmORGiREd+6gD44TMM9cjJ+YLtpNnpRfSY48VvMwYkS1YVSOfUdx/Zx7zn/ykM+WsTi1zEcW46N0d4tmJTOIq7hz7s78BnwelFVcWpCbBDKALdNYBmeDOih7O3BUTKN58e3L38qZe619Hsx+ueGQpP6YJnQ263LBcu9fqgDeqDdse7P5HqWFRhml/gMGby+vD47K/JtuEemz1fjgI5OWujPFOvYLoIxbORdXhitWatyhUzyHJETOgsp8JypUplbVC+EAreIeNyD/BqcbJTQx9PJVcKRMMwKYR4SyzK1G4ue6CYoa72nHZGu4SF7qjg/FCNbDyyMat1D7cFmwE2V3aRDJFdqmgmV4R5DRRXA3F3ZjNZBI2hELsFKuO0xzlP8eiHPrs9V5MtZp1FOYZCRQXKR13SMJmfV3bn3+jJZEP28+uuvL57WjFr5dtQ81403TAHrS6NQ2ASTAnJ5DP8YYjTWJxerbvXY4MM4nvXoleyPczBltOE09tY80lMPAvVIQpkc2xWTGJiw/BCYBh3SJKd53q3XiExfFceX59T3Wh3Hqo40fhQ2Ft5yZ/vyGeuTL5sRIzTAwvlkBN2LMPLoo8ffUmfkV7T3TXHk1bdvTl0TMEeNpbY7hJsvTl5x+60uEZrOLnXUBpM0CkS3I0Rs7ejapqwyQiXV2N2V0Kj6ViKq6tr7XnVpIZ9T1VIeJ9SOXCv+GXXGg7WqKHe2CSr+bKxu5fLKqW9wGtPx0LlNhboi3ozDUF44FQ6/scKNQSjPnBp3To0Oirvx/edsg5ml7a1ZRXYL2qx9P15dS0tvN4e3KquD0urSdIe7Y8soe/deh9GUJqWg404GFnyA+7UIo6syk1aK3py2Ee9++6fHP1PeRZn34umzbVOYMs7KDOqEYO3JAmlEWZWfJ9GgmRyBKHiuV0LIDc95WViRQYchH56mxJLD86aBHMuvVZuba4OaOeVz4/bFwFu+np1fkdJIoIOCCPnAwWxzRYovehSrJyG9DL6N4iVi77CeiEl+16wSpmI0kW7aziwvv07f1Wo6Bd+7dTCfJuOAZP94NXtL6vA5wwQzDqKjiwfnc6Usv9WteQ/hSOgFHr5Q06GQAwzkxXzvUb8PFNOoWCIM0gJkBgXnQFlblVG3Rw57U0KLrpOuGdGuCOZquAIm5j6IIzE3duXkSwzMZyirGk+KOaa+qo0wiY4ers3JdWqac0aw4BwhHy2nUCskC0edzoVLPf1FVlPRQRiWM/bkMhlfEBbCZw0tE6aXCOJ+X16o4FyD0HJGHY44i35Jd7uaGEqa1fcytwXvTw2ikd9s0w3fPuXTeijvTb9+vXfFXzueHc0nsYY74y8v3KozoiGVMLttOZS96YvyrhcoYCGn65VlrHzDznBzGHBOuTrcw00yFNXKDJMIGxQQ1gAvEASxO3y0+2j/wfDRXgn6+PJj8nnuVrNetxCOi5g5sjGq7bfYu8Qbao2PUXK8aCfBDfxRRi66mJAEUJpJQ4GHryXMLhE6koqM8qZfOEPwy42tJ8opSYGmB4V5rJh2u1BhLt5NT3sOsaepUYkv5sfMwJJ9EFSSRvfvn4OTx4vc/Y9pQf/Ms/Or+4P71I3tOTqW0AcYmkaHha7T7tmb4n1B1WfF62RGkwL2ltLmuN1CuUkN8Wq9YsYXJ8GVv4l76/1d2UGc0cDPDrzzaCbjjCbDC/DujFpXP3H5i2Oc/75rd8CY4T+nW2t+WpSByIz0ZqSeH+VWeXXnioFLZLt0RQdIuCX91MIWOze7SZOH6zfotG1zW/4Ktdgbp5RdUxiqIwzXKcsEt4jJ0cUb+xGmI5rvouocEFHRBbQB4/nS71dwCeaXU/jKsuN5RcV1Qfqm8dGmxhwjvaWg64RMCq/ytC5ZTVzeKUxM0hxiVMH+k7TOC90yB67HI9cbUlPd3XXl8JD9pZRtsYsm42NhjfkdcI9VID6cYfTMRMZRF8FcHy7BFbEiWUJag6yvCR0ZRDhIC0okYcz1ODFXNPWMH+ddobSSPwwPtTQvMAfVwX1KFF1bEBhBEBg5l022Mx/gNnpCItciR2wPpsEymKuU4CPFJQlenYhQ9v1wRG3VFl8EiButQO8iTOoWTXHSoE2elMXiqfGwE6n+P3368wnbqWnm4Yhg9M+gSLIPxBsx1Gu6CdARkTG0CTxZ8klzGbx9+xNYQlOAPrsbZbYY1dp78vnpj8evOfZqxQ9S65wdpJ8DAARzBdG8Ozz9TC/OJCGmCleJ2Z6Ol10UnJ0QVnHV3fur/42zOnigz3+7EqTiy0FtfqOLFXpPohUdcvYnMnxk1YMkdMMAJyjSV0ZibgZSRL+/7f4/ULX38vExbbMZwSkt0IQ9JdKoy21ATG69tiNh3ibFSP3M1S5U6/4+yQreKajF2iyNRcKwDIsEhj7rIeXF/NfpEecRvlxPxaj8yCE/D6OVI2lSfsoLEs4U0hl0PZQyZqCKpWz/VuzFb+fPz7FidkToctWa7Sp67MVA1Pv+XOW/a2nDz7ufMuqWpZexWPPYUzVhMtzYWdUTir142uDniUJP+KBB7erT211/nU6XuxAWnLx4qiR186P5yKGYOEw3nFUgFG7O5RtVdQ7qPaXN4p3VdyUJg7r08cvXgekQfb95eWx/c/5m4CTzGwNV/0Yn6HF0STf9zVU29WQdHAxCvSjI5fP7FowvojoF81ZEURsDxM7QYPiUIZqPB7DrOTXoUMIRUA5ZL16XCM99I/4e8vQlHQsjX8/KWs7nL6Z613Qyui7o35I9ylBpF0CLDv5K46KbB66bvtrPOJt8stCr4QXRgXrBLvtrceum8LVEOVGibB1HcdbTUg4i+05vCjRPxbTEA/l8/eXK3Rz/AuXqmA2gyGTmWhahX2rrU0jRMlv3dYLPBX9B/5lg3rCvYgvT/0N++z2oeQm687WD7xxxzK8enVkY0LgCjKtkpWjSscP/I27ctFhR7j8UI+QuOirQX/T27kW2NxO8BzRyK6xoZLkLf1WyNzKodpnowlR2k1jJ8XVyqWU7Zl8Uc+HbN/tLdvQVb0hAlRSc5oOIpOj+R1d4dydjGmYm/KL4Aj1deiTQm8RzpS+9VG71ZcYvkwt6nHg8I0V3b63U7vSPfQzW+MZj5PHB2vjUPzDlqhdUk8JitVBW377agBZlED0orkYbvnnW61DOdNlKNcuo1EzylqQ7pK85da00updLG2KS49K7skYXE71Ub78SmSooIVtKtzRhobPaJp4M6S3oILtLAH0Q0tt1Px28ubEZZfpcV/N3mwCds98T+HxjGNY14iSupPsyZ7NNT5ldFClvizqkPZVrAD7ETAwGFlUm3poqrb5dmk0bkqs2znKgHtx3QnyzwwQ5sG08rQWxvRwGqRFCpti/VeBcMRoJJOJHH7+O0lGmdIkUVaW7Pl/62TzNk3ac0ExbWjAeOUF7SGAhLF3ByFGU6VAu2U6tq/pSvbzC4RpKKqMduJj4tyKZkaQFaR3Rp39Uzkt6U/9AyYPQRF3bHlpACkaJbZbk/0gStPkygJd873RAomxnz0R2xegwNOUO0oR2dW1FH+kYgDyn9YC1mm/ekc1pf3XhqD37AGhlPCsatwTkU56bIKca8bzI60WmPp2H9l/fHhvhFVGHiQbwv8TfRDoy7/OClFbBYxY8StbhDKaXRUJU8mOiXK6Jhun4OlPTl6yD34a68Y5PdxZlJD1UKAtS7+QOVb1K6c/WGX98nZ/DLU3HV2bHhX3JBpht0LvhiuUbGi1V7zKyUUdBo5nHSdQs/5ROF1vl19thtOCvPcFA4Zghu2Pdu+11w+XS3evWEBAzbG+3LXvDF1EoV8Wp9FS1VlxKvdsdlxL+96l2SnmXB94syhwvfZYPV/Zd7fOV5TgM3oUvK3a2oJyMXKe5eXZd7gCrHmqp9ircGmyJ+QIfpHA141lNrh40ynpWtkM1KdD7PA571FqYXA5Vc0WmCttx15pzBUsVM1X6UVa/yS6fMOL5P/GJHO+xT7IpTvB4q3Rlc5XSyOEIX/sj21o2kBP3PTjo6HModB1V4waUuq/bPK23Hywm+79lqK/wiG6NlDHIHalGgTvh+2VxlmQr0B22uHgYKGL/tjaReBvbwlytof8C47tinBd56+Yor4w/cZ/wEPsHsYE0W2WZddC8VHSoYcPac2QQHI4QXDzgtJqvvIRuuNDMQ3DgmFTG18aPh8Y938p5bR+sUugou9J5GNBKzeob4dvUJbBr7ohe8/RPxqxVyHQbxNHKOFtv8cClFdcgLofBKmnXF3SqXU/htKPItw55ukqlD3c7alzjL58/IEfHo5TmgM/1zgPcA2Xsm6o6okq3VKmrXgSwBnm2gF0tm8hDI7kCTFyzuEflhztW0pISFjU39JEQ1aj/7Qipx5iWjX2rKk8YLcdA56qxDJIN+0vyodSyvPNjQjB1+i0AX78+RE5ZV82F5dev/WXZIe7BXlRw4YAAt2e+XIxBR1pxppJbpdB8qvxppqsZxkb89tv3NIxq+yP2b6OovjPiZZMXeTA7bltp3x7zbaQlkxhG/t2kanrz/IlxxupDCOtS9hquoZfOGy1LKw2iu325DrffblTY2XHxRmkx7+5mf4/bW1jWZfK2uQLFnGsme4c4aqqfjBxnQm3kWzyDvwO4sMJL3bUaLN7Z6ATgg2neE+sg/Y7To3vUI6t5boQaqx1BQVa6V0gLNCmD1GRBe8NkmDMsmBjfW2zd0lHdDqmHI/sSv3r27Uh5MiunEbh5BzSJM2VD22IFKPsQBzr23HC7AokEbLlZiOk6u3bElF/jwb6sWatD7FaJKoQxKa6S+qFsEWs0QAe4BYNgNSspn43Y7LPEAg9oHSEh/jaWmPusXZ9Q2rI2klCy+PHP0DTSPkqWtK+o/SBeBgK7jRfwf/afxfjI0q/6dbz9nrDkP4tArYZ4rj4w24i9NrIgn/vBBqGSS3RjVx2qyYlarL26iXHgzkCJOT5MLmnUMSfposzqglU0jLtdrhNqhSvm+1ZrYJWYy9pXG9bIjkkwOOOB8W9AAchVYNOqa/hV1gWolOX6uzJjLSxhexZzoOue4bGwMY9KkxyKkY0S/zpXcVSLjijFRCzEQhcVPOhf5dNF5fIInNrYrN1JWrkfBixJcwtlkfG32JdFVPwJaH6wmKnIXAoofthH0hQp1n8MwW3OBm4AKVUg1TjA/6pZgaeq1lKDgS4GnmA55L6GZCvOOixyLKVQZItK74qmM+921RSO44G8iDO8ipO/mIue6uMJTTZC2qhomHTuD/b9WTshtCMFTQR20Scik2qV1DOs6cpO6csL552qw9ikkc4iAYZOxzHJljuwc5J3iO64K/TgNds2IglmdhHxboa4zwkMtldeTK2gcPo+1u2UfEeC55GusFs3l0BYK2AJGhqrXbF12Mi0osqIYizkl8+0Z0eCjheaqkzIKzzGjMRwOz8/O18ImdMAytybkHdpo1Z8OLV+oJW2amGtPyuBbTOqhJva4FQTz5TDKaq3lOiKzgyx79TTgvAVAR7dFBZBVVySYJzGQz6rtu7JwtCbyHOo2ZxPRa3TOglynK9U5X+3ilQsR/jl9of5jUUMmbj6utHRTzeA0AQroMwjEcrGK41F7HakqfLZJ5vqVqncZ+8Qy96YYsv4QLtV8WvJa2aoQwaKSRyBFQ1HzlnjOsRp7Mi0TUSfuacCuUOWSZQsFcALxPOCCbdSZOkIVhjP/PsqjJJu7MIzYUOJVTjrKWzRPtSATwX1cjLTipTeQuBFg8eViiOn6ARPCe5Z1cdWkMAYDlewJoUlAbnyeapINDv5ZXKLSxlpgRinuKwJQSNXagUVDPxsNJvmG13u6RR7oxFyQ1fB375FoAd/utO8/TzlngOY05DkLcDngwXNCa0r7FbOaS2VO5D4aO/xz0rQDmBO4O8SB1gRubmffqADIlXHQqD3hJCJFQXS2jwO88diCty/rWRzoXVN9+yA7S5zBBbfOkQzKUQM54z9g9ruy9jiw623DMGdhv4i5TZqLcfsGS7jZvPMeSTMpUknx5g8Nzi4kuCc2OA0R8xe+qr3+hDjvOPJ5SXLKUpy3qy8H7Y+c7PTLdNZmja6aCdcnbcVu15x2t6kfRFtBbLucrv9h8r7jfGC0/F4wvHOfOI8rbb3p2yKfZVTe6X3S/ytNxeGX8pb5XDI/n1wrWxZY3bYEaWWLvoQ7JCfCTbCdebHBuC/wBm8TMaEjPo41Q3hOawK6uS6F/L3pdeyoJalQBK3F21fcacOeC5iyFuqbLYcUjKP7zgcdEVuQO/HZoxJMPIkmVVRrXGW2yOpmOwCUa0P2y7BoGxtzyKIAgu7dCrwcfvTiLzY5sXY8MjM5W8rl+1Wt4lD5uipCXvl9UGsatQNOSyzblfphjVjuPrRTKnFu8gTvEeYmh405XXdzKgW8WpjKT81o8JNBVPqoWsu9jOpBjkURYpx4awTQ7I7HTW61N1QjmVXUR1FSrloADF6g2g/LS7PadU+g30jZ3DDEQ1i/oG4U/7BhlOPj/8m5O5IPNO3972RGqqwXcf5cWopm/jt+y79zvsuufO+A5ebR/mtuFzngElstFcKzi6wZhNk5skzixhgdoVsXd93Sc/+PvWG4bEKB5rD8ahHH23sjQYyL/CU3URRmZfIJ12fo20lWHCDmDbW+f6rWfe06Kw+gKV/+7Fm0kB+4cKjrYNkZKxnSqw5pETNuh9qu2M2Lp73Pl1dzifJtDeZnZHx8X26Xu3e7z+8nzA0UZT75JCouJ+Qfu3nq8k1aSCUVaHWJmJS8seRZXRcbzAnZyhozbV3pn+NvfPwvm8uDu47taIRawPYnwEWMLb8E8E/xLdvxuyOmxGoUnWOaG6t4/dbJvG+bx2F3PgRPvz/P7TQHrrz2wmzRzA4ufW6N71/HbY38/hnZ3GateHfZfjjr9lFG9TR3VrRED/weDrfdKa2Vk1c2FjMQBT9HdFwy5Gd+I/x5sFoFBx8vL2+Nkbp3fRroIjUrmGz31RVxOl/iH+8ijOc/xsxB4+zi0OHU7iVBhYu5jYDd5ehvVcTtGJwInKC6nlnOK0rUoJx9UECZyvqCS62Ha4im0A4y3nSYIdecoSl1pmuqZzJlbt6W+ndlBXJYGTZvDk6aMO9nfIxq4bQRqHFzJqmc0vVFX9989Odh+Asf0IB/5cMwtEda/bbrzQGe6NWhbGn52dEyG6F5o+pj1DozxIUqWkbprfUNvyEiEzuOiJl7YXcGa5ax2VD8QUrFtGtxwC1E3cMSPkvGoPRgfkue4iy1u/3YPhwKZ7MzpT7/3kNRZpsOjEe+uXU5YF3pPewIbXANIz8U2UbTbVAfClVsbSmGChHQ22rkcOBtuY4JjrGnQ+CBRlFNt68lRZbWbkvDLPJ9GmwcawdszeEHPjqr4BQRQvQymPbUjTjUfj7e8ROrEZNAJlxQXcs3oIuQCW2XHErEpIL48wvW20sThuiDMsLU3XE6d68d0TVN4wMvAUaw2jmjFS9uOc5+ObtQ1OvpUW2Uo/ZAKujW+j47Ax9Oj5cifUoaBL6xtm+/mZRt/myddbmpU+y6BX8jkQ6MzL6yNHJBxqs8iYAIHgce1x6/jbQQUpkhh5cLs/HBdltBW/p4ImegsucUQ2/XJ8X86yIIGFFTS3euOtjaM6t8ce5xxpDWZxA5UYVYOOelARqg6PKAH4kdAeFzDaHWtYm6YURXutESIm7ZeLjyysySAxgf6hyHpY5ZdJgv0z7efK34jMSiRZ/GByiD+rl0vYJNHB9AhGw1wdI2sxg+1EhMT5jgcuvPa/ew/Bgls+7IpipX515CFeECpS87WQESmXxttwVfwmgeCQaDbwi0cpHxEoLpto11zDmySxzWI+T/LnMkuk8+EhsQfAe8zAi+R/BBBMDOHeqz9kCd3+Xto/0mtm5y8z6ZX4cKPVkSjQuVWT+JH9TnVsoWKFTd1GwQrklClZBm8C2nMDBUrWpEgxQyxSwbECjr2ECYWXmwMrhY5DJCHQF+JnDSJ4FR6XkaPl9iPv+p6kssfKRo7C0jiLS0CgivRiTa4aEdqNPF+lxVqkhbdh6SKyDBP0jUkMaM30imiln9FHWGBVaW2kK9wn9g3Hv58J4Hahexqexk16Kg/v0f6OV/wyEFKPRAGL4MT8ww/Ws9l2qU0Lt1J4+P9E7qguAFLjkvRdTBv5MKd94aYhyV08KWLJMTwrzYOlJsZqUV1Fp3Kqo5CwlAL+/0pK/hRYFpo3vocE0606bKko3uaudVDjaSXq/3oDU7snc4lSwCp4nfCSv/YRv6G35eq8S3Nf7mqmtKUKihHDJW3zZTYdU+XU2TZVt6poortU1FahHZ7M8lkXJ/NinjUMHwYk5GlIl1Tvy2bFbVe9Ip6Jnn6xx1nLKJXEUpkw+Ahvo39kFNdKXTcUwt4yrYuWH9Nfel0O3dis4h33cSIoCFd7gf/bq6e0MAMPwNFbR3wntyZztupW0ozOkgdZrO9bmh7m9Xq1AXnsHA+3aOtgLJ0qdMqcZh1gtfxuUSYmmd3lZY/2xxE/umPAm1ZHBmlJuDWWmkBakKWudHb7CpVaYDUhlm4DM8ZsXQHOieSDVmQIY9cNy1Zvo06RZ4tNCWdEGrNpl4CIT7bJ/gCTDkGhuQ4iKWiE77JdOq4z7anbTrcrCgvSYFu3xopPxzBS+6UAHAvUbPuXhWWlo2uaKEY+dUJ94eSTLfhjHVv72sLVSXlIenOOXnkhiEzdb1bas50r9RP7p07EV252veZz2eqaCktAtpUx+eznXO8dO0tcLlClTfzqh94ucUgnfdYzfsu6kqrlKo8vuP4usjLhsVOCdK6/dU9CoVuUm0IvX1ylhHLVhlRLSyqp68To5n+ks6rhj+cWJntFUWlCofz6wt7+T4WggGT2ne67W0Rd9LWVDlqi2JkmvbTzV41LUXDMU84/VLuasKRdx58AF9q0rl/JluWWbmBKp3emvttyvaewHwGVTu6J7MdZpt3yQdRWr3GkP3c93hf0SwhGaG2OiLX+DKter7u3sGgE53kwmqjTnwEJoTVDZhPvHXv9RlYbbyJg8m/aIoqedldChr8IX8/l1MeNIvsjE246nKgbz1qB39soqNJxSWswo73eSBV24SF0r1SRUJtCPDeUaKru9KEOIf7mRSRlHnFWJFXLkHNAvJdlGfloyoiImgOwd0ixijGDJp7GbCAJcxurOrH7AHTh2XnYNPWAwM6o3fHt2diV0f7QQKuSKLGfK3PvOwFPm5fWCfAq6DzJHglO31VsS7SoxEuwKuUoJu97qSC+mmC7ovUj1GYHbxyyEnR+JIBnDynK8zTWKMFq3Q5ubDTCN68fwWJ06TgTbQUOS0KZuPDUZ6FzlUE7QoEqIKowGOLe090960u5QAaT0ROhdLw9eWYFCXbwsXZ3Zb+7BTy9PML+VbWx9ivo2hTnqjwYISr+dysRxdQyGseuJjoGq5xqdvL4hfRiX6bg2J05euyPXZuuK47xb4+m3NJ7rmehoO6Fv1sBtOBPLrBVFFAy2DC7jjRntXEigede6SFBiI+e4dEpnhsnamptOd/yKmyxMM0da7jmDYP5aJ9F5y+mC3WfvIuSK0FP6H9W4TBmdErCEO4/j+klZSsGBOBgZgSXLdXmBKShqrlRsmr1UXxYKt1bQxGbXzdnUIwrCirk018oxH6bWfZosT4PmoVNP4bqR9vXrRmeNcWm+bO2hoZu/jqk2uhcWuT3dAeoB5597xhDe5C2BJeyJadfizR0tXvoZWOVYgEz9RBrD1CXIikloljlHslsqjBK/1m+5+3Ol67u/LxPneG/OJk7V5quyPVWp3KvEGKybmVm6mU+VImen/ebgvB82cSG1yfqNrE83m+9LoVzs0P8nwVQ1cn/KddgbP7igbk+Tc9CiZBHkk2KufRiQB4ozmLol488OpegFqt4CxBqTA3cIaREQDpLHg4QCdIrQugbq7YDlJhXp459HCIR4RdPKoTNfjcSr2VliQr5Twq8qJfh1DEHlyYgfpO6rWI00XEp620z7acSHhjoqjtHENXpHwD8TMJ27qq2/0sdfSYGX/cE2FLDR29XCFYck2wZ66awhSXGuiVmdN9YEuysoPgQWLThI9NakU2tOIiClFkevn9nkkr5SqrLc4YgtQA9AamN0FHUJD5/qNFKqOxQ+oy5NdWegujLzk+gj8W/FHO9pE8F+YtsoeVYj0o3mdC7wS0j6KhAqSW/DLcyWRYuEfmNJJ7Rbr0YDepma01OfCqT8WYA0WfMWaJRyj6qtyDmlspIQh9VPoqHc0w2nq01EJcAjb+oolxb1d2oO7zo0vufYNMw3MjMqhg7LX+WYvtuQynrD0Kfjbq8ETE7sws7pZ5PARJFAmD01to+LR3cnke21OrRyw5Ius58T6W/TK+tpbn6LMoJr/qPIVaVEfhNbN8jesKAuDS+hjZpXXqVTh9mgawZ1RVjycHXhxesECyi0Zjca/5Bcsl8J+mCPR+jH21kynpOoo/eeyljPfb5cXCxARGuvKiQz1QpLvelgKMKj2jnsrSscEequgjFHylPSQXg6m0wBj7E1jCKdujDYmpKwlwvx1ZvCs0v1so7ZnEyLcaUP6bRklL3YaSH6vEKtLVF333gLqyZ70+KK9GClpx+K/93ifqyoclYkOfyUB7m+y2utS7HV9VRsllBFuAylVzV60LcdOqyp4MfMbquenkPKMVEuP9m9vR4rlubWKtr9Q3roOR+7ZLdFadW+r7gF1ldjdYaN3jrDli1aig7x2ZE2yrFaovRioUUFvPlamIAA3MArLfLsCIPkwvIfdy9V0ZtShyz4G0Cf1qlcZrEHISPIPzPTUBhlKrJhZhEi5eMdsHjzoG2T9iaKqMa1PgwpB5vh8fzJ+Zg4Uv14lRHKO4o99WIgFyl1YEGoVihJM7mz0/KwtJLUbeP/njz764ufg+Nnb96+eP7i+PHbZyoVTNNBdtRBLZXALusOH4SyWcezn596apBUA0brVNGXWYhNmloOomfsIlqE4YgyFpOEyTlmnkm+M/W2QuNReeQ5R11lF6Pdhf1OOOjyfwYbO6l98hFYkYejW9S6vCp7kfgI+VNJ+ho0e8dRhec+NbZVSdRx+n0TPd/5HvTcJdkttHTwX0iyedBa56xtEu2V+SY3wJjDdQmyqb5GlNM78fOOzM/P129JqvpPmbZsfPcZsW7m7kT8WZ2d3L2vttTgv6az88Xde+sKLJpY9uegwt37qwUojYndQhln5/yq3J5owOtLs0suyWxxW/3exv4d0UtOEZVcZd/ydzDCjo4a+pajoNpaP5DaYJTSwXI2g5B6mwUiHz+Q3LPpNkHP2agf6UGN+sLst0vaf5cJibb0TDJtUa/m6USZ1+SDwe/Z9W6gg4gfQpjMr1lB58e3b1+fkM9vXcN9qk3crt49Vd/x5Tkdhi31bdyqwv3DZ1cksAqqeJvf0r0HtO45yVdIBEzz9i01PYQ+qwr8ezX11XP/+pJ+NnnehjgXXK+L5prvbcH9JudwV+bXPoOYCyb+tMkIa/YQ+cNDNw+8WEcXrJWC4irsWNxWNHem2OB7A6WnBDBvT7NxZfrTCjRZA2a+WAMoMzAhelZdDjLPfP/5d4GjJVcB7sS6l4FRA3xHPb+GN81ROdeEfhwbnQI0+3owRGc6tbuDbFlh2WyWUMJSumpuBMf7XF5ks8/TxX36O8kdcX5PLF0R7fI4/FLTmUojv8JUFq3L03NErVI8B1XO/u5DWUs2wUjtTraAeJzyLZ+e5wmtQI7pOUON9ttGL2DfxtpTH1WXKPfHvTfqVV7JTL+lfkn1NmuExuCoaSHlF2e2zdRQ6op1+i3VkdaY6NJeTBbq1YOnO/xu081vyCkL6oyQfsxKMMm7sasDxW/EKvnpszfU0zBK1LPRCiJID0nLKSDejVbQP3o5Wk78bqJC9YV24sIvEsKrkq3Bkdiybe8WCzEjajYKaAz5YYp33nTMEr1cseLRadwKwxaQG+P4Cy6II0FabdQhcG7oL9EozfXQODXfA6+zPQ6YCOWaGCqEJdxeDS5T/EwTbr8GV4BVqTgVF/hBDRiETTMiLuDDGiBc+Cs+w0COS8qMt2yIo48TKHql0l0QQvlCjsOIFfvHR+uTX9RbI7qjzjimlTwretOL856V93byuiAlUiuwVweCm6/4/1l4/+wKAhx5R8nJ2NbbfSDHpdLvXthGT3ZD53G7DepPpL4N5QD3zcIRBNW78fXratpNBVtXLqE8qw0ZFDqUQEcPMx/56fjqbruPQEvnj2FaOznjbF8//fNnrWedgJXaiPkku0ZKjyB05vzJ57fJmVJaFIqbF6Giz4u4Hy0OMsPFLrrdEEF83y1IWzEnBjjUumxIqebASB1v3fQcpe7StjVsv86X9xX/1j5gSqmftxH70r24nGPRbvUOsT2AJpa1nqzA1Ii85PhgaWhh9ev6gu8yvw4WMfn3mpDWYykbOt3zqFfVU+7FGZmEN/2+iG7WFSRSbDTjPlfaofVQyS3fUO7u+IYXasYqjkuXas2lb7ws1dRfqZrLZcEKS2BpFF6D5JJEGs7qbzw8dAIXpp7AhY4i7vJ2d0pgf7u3XxszMasXRosJZlnp4hKCxySYF1N1cOQBpEcUDMzRU8pYOAkOZs66Sh/PLy+DtDCdVm65WYU44NW9/NzbsoyjwT+g0VVrzsK1pUvuGFdvoU8Dqbo2XOq3R+vVHv+85Top8ahZOGq9cmNHevsDWYixj15q80AHZ1M32OiAezIHZWbYfE5iOsd8M9MwNowqrZ/+RPsKudwGImuaVKzufxZGUIvufKtydRh522JkNK15NOuzFs36jeGoH3Y98EtV5wdUKGoUsFXgNS89q65Pfp34RtnQ0msPIy9Gevzi+OFcadzKRYLMyZpMiUjsKXulYVrCSZDRHayxCkTX6LIQrQVLtlXKiOOpCiY/90xf6A27hpHNnXG/LsagByp0sHSzWPeosWNcHUUfAVh/CmUWrzFamXDwMRcNwqh9JMSyrTWW0j6L1+7LOpZa7LK/7JCfpoRR/q1kpaHWae9tN05au/2ezGuLaq5TrJCraGRZFRWnlpbVtvGlPqiRsDxw3leRuW/vSFN0qz7oh1Qw4kvU3sLu1jc6SF02u3d0YSqknh31qgZk/K+aJCwXNYp36EvjvdJyIHWX2dJDYbeanurNbM2DqqE7zdoWaUD6cXTZDu92GXlXbFeigmsRgpX7WYfq+HZrp4KO9TxC1A7DzsSK+CDJf+jGw4M4Q/ayMzbGY8RfhgCzTsd41SlB8HmjIw5p8dkLwwXSErqi8sM16tlI3g2WVoT8pVgQD6O5kuQoKYbLoSpz/M/0G27JSsMt+sEAMMuwBCbOTEHryjaUZIaWJqc8BZyrbxpSdkp8SYx/eiT9uupAaYo/Sw2rQITgazlVV8TCg4jjNhyU9XM61WxLxvwTZcvKPZIdWxCGGhwrNhnw7AUxC3K8kiZiNmirfpjkbMudhErktb3dviw1pxYnVN308Tj3hX/8HRet8wW7uJizabt/nEN7sfwQZiq+fSIsLx/+tnbkEA4/Vi3Ojo59ci9eiwz5tc1bDuO1apS2cnkYNSV1tYue0Wr+Dd4G8smZx0GByVrqnOBflDeTM+oL21lkxXEyTdJz2lDnBTZnI99UuyyPfUlpCKXBopSyz5FqDDFNdBf6zmY0JU+LKaEm1fJZnEq7/76XP1++49vA+NhTf5Pe0lH2GKfCL9Z0Jq41fpXT8/fZimySxreARuCQTqaeuckMil6BHxM6ZECO9flQKf4fNony+BgP6YKxZA3pMGIuFgZ136kXHKQL7FvIdcvEqpkn4VYVb5Q1sxe/EoOQWjZSdd+a/taRVytg9ZdwRyb+atrR2K7J1z+ZhDLvLcqCRHU7znf87rQG0ZuSZ+9OgiCpWL0ljTsLmHz7Aq6e5tSzlndv43HWaOBbFmCjdQXSW2EHuuVU3Oyu0qDvJZlZUv7Ny8k51lKmofEFURHlSLtZeQQ3K9r/zUfO/R/l0lSaTr2ckGHlhMA5Slm9W68gglXdYEf/jYTgCV68X7M7mmYuRpFTdSUE+Yu9+pjMCrfckxevTtwUy5tTpLkVkzeZtThndRfDdZ5gUi3X/67j0yh13Y++TD6dX11fBabgXMiqlhVHTxmvnyp5O1kklwoU7lA/lrW1NqgKBIyU39QoV4FWGW3dNvOOcdCHRMe3ARK+h3uDBH0Nprqz5djtsGN6heL4duSdjN77ty1juPvVoazgDKGt80v8IgTOteR2nWO0TG43JAhjcUJen+dvJ3RX6Mzo7X/4ofjUUd54kp45A5Utaq+21a1Qnew3cykEOAnLtHMZLDWWrnZIYEZTeiTAM2Ho6JGm0FLzvM+Y0Ah42ddEvdfbKmunBXVJfkd5XZSiu6GaEFFin8v68ew2DTO7b/ao03iustz252UHuH2en1VuJXJ2FyEDS/Zk6tXPrnyUUCQq+/u09L/mDXDqjN34gXUSEdNUCB0sUftIYE+qdNqaHlRHNhBv3Ht1yQcbXMFtzpLZLKJ+L4GnAG0MH43Nqap0OssvSG84Ruq4Kqt7FIwClYXLJJxrhjemv/6JHQ2Gyqplw/JNx2vAHzdpnDIxtNw/+N1Y8HiarouBiyaPfU5Qiklwo8wJ5VbikUztR5HWqWLB+M6gUnYQj8kDg5o87ZwJK5xUUcaXYwt0AzrpZhKWToxW49dp5a/I1jBybuCeLQ1Bzm0pWnpajilKV5Ks5RCdbGl4YoucLasHxLNRUQkeMLxoY6jeNao+9VSn51uvqlyxHqmz3331af7Q1OfjQFGN9e2tRjEE11N1rs+I9gmZ9nSaSepuiIDdB3fmofDUoSU5Th06razDraL5+G2mgVC17bBL7cNO7kkPPtLjeCZTW5Dlg3GD57nyoGVyky+m/VFWduXGEXnY28UhDoYlvX3IlI9nUDJo12DYrUVM2S/VGawOrBPlpWED1u3cobNYvLU7u3PXzhotEqPLGBA9zSdXgVkVRJjS/sM6lphAGHjT1F+pt6Dc5sxwTo7bD17Fb1l79A8dlZKd/X7/rktnNnGH99g8vGvIJGc0C97CdxzP/p1Ho0lH22j8ZvPVLt2RVnusLdPsgEUi/DjBG1ZmxsVvGvejwf5hSpjRDYkCsk1J7/1scnWs3fp2GAk7w729UGkv824oFS48dC0L/Z3zUhGTW76NpHFH2xRp1LNDAykXlUR+O81syBZNSbPM/rI+AEi34r5MYneETU/uOYIxHCRGsTPvdo3b5MR2hZyH0e4eu0LefXiAv3sPDmPqx6MH6mvQH9LnUdbtjpTCxc3OkPQQHfWLHFoRzKYJmfqnz9Kb8I5bZp6JjDBLKdoifA7xpVrO1G6FQsmXhuR21JflMaEs9Gmdh1jwTrX+zZkrVcW3tX1/MyWUtXN5lEkWwfj6wDn6o3YYj1LZzgshdhGfOZUNhKvBsPyQTN3tN2xdjeWvSQauocttGB2jIP1DqSFtijj7p3FTRKt3vorbEV8gOnGDfKiwIM+JIlTx1rM1uHVcd5xTJFG3SNfQsv3qW5LU1Vx+dqquQMH9Q6GjZpC56+Qbe5v++b1dRfT1NV0pTTZapCNA3Ql50TBYCk9Eo73SpZDiDEjd5N3xGOPgNcb1G4IRAVm5GuqyHoNMwqi1WGQ7aLppx96aDl0fpPgWF0OO4cYolthGNcQhlEQf7xclYFoDzFzAJvntHxC9VP5MuA4zoaKsZcn2xGrZG7SPQ8SINm45vsLudmJ1u3DH5wLmLmBJ+toJBCx0NGmBloB3yBwjTv3zuD5i8wzK2X3/LcPCidYKltNTd6u0klUtSF6TunpFYbyAzR2rRWq1nszBsXnroY2ry0DfW3fMcqJrunwk5K0JeduGa+kID2kNXOD+Pr68NHPBFd5hxZvT/J1XnW2O6gs/X77yrLzAzAVeoagDHH3BScwK3LyKnB/f2MgRlAvPRroUNuycGDjK4XBASDifk04WPcRRgS83p54sMDIz3aA/EwP9o+CKnR4x9DM8eY2LBQIpk3NSGCyPBC1X8OJ18JqWtkDknmF/b5dTH7+pkm/8Nb54reuiIi9e/7Er5L76sd9WALxW/KWvGph8lIFyvCHkYCRgD19+D0fiDW62l+dX5/S5o+GF3GXAtuqpJz/mM6NNSDg1kPRNjZrAKqOhSXiZzC/462SW2bn4djJfk8Wp4j6pto0qiWSoVfUljJvEME4blETxA6GQRA0IDdvICwTlvj1+/fwyOZu/Go92qo/370c7N67SjI2SOB/duJW70fIwH05pxlqtBEMBachL0AVG0g5EQ3jYHw54AXTai9c/Kj8Fc051q9Npp7LRdbOtLZrUCuOJTFnfm4nkF9Pa9Ej9hv1QvWHbpMYD7r6yOlmlj3oRLScANVM2t5be6on2PaPdvQ5+VOsazYLk+6rNOBa6rmJKs8tL+yltnWqZ3EFvg3sULlsdUlCNN5Ib54WYGNIMbL6O7H1+KJbW0D9Vl+LlID3+hUlrPIxTiYScZwS/nUPebvaWkeBlUrBRngbj/E4fTy58b4n70fAwi0hGYNCjcTxg0R1OMsxjUuYFIgximAF3RTBVpF6Myt84DdyuqrCUR4I7KkbqxyXRLYR9KBABz3l+j5xXp7u+vxv/SP0lD/FzVsbIGZE4nup54b7Do++3w0H3TX1jjUf1to6selRvpQvLiYGfDqyx+QX2E6OIEZ+wu1w8FrfkOCZTLTAQe/mzzEzKnF/kgGQ6QjTCiuQmnkgo13ha50E5D+u3imKQ2LuRX6HRI1cMfiskXR83edA2am74cbNxtDawcnPTV6x5+t5ZRcTb9ZWRMxiZ1x9NmNxm7EDgTh6v5G+hNeCwgqjsNIQaY6y4WwMcGBDCSk8RQmn9iNzKz77TKI+S8N90qgI5u2nmYT9ZoBk3D+YK3Q1DdIP7eCwUoRygEr66aD2Bl+DedE1SawgQ13KFZLHWzuF2zc7pyzX3TqdfDegp0fyMAyFt/vBw79EwopOAf+7Sz9DdaNYWk4Fnk7kIsy4eE4d7K8QH1kTAmvY7DOMLffydTc5XoYoLHUa3x5KIsGTjtmhSx5LotlgSsUJMv+IF/BepEOzB5ua420Vc5LI60R27lHtcUu7o1vg3+G/Hv5ub1BMkZbWWjIN6PlUZ7mupKKMhOVXBb7gFNNtXL8CpKMCxWh7K1DjwaREB0EqxmNQWNXTC1RKD69kloca8N57MeLyE/y2F4nlRPqd4WpN7ZLwS2so/J7SaFgTXUhqvtI8kQ1jdsqUWuHCpqCSMVo3cuv81x6LVk+ATHB1dUlO4op0+vFkfpaO+XHZTSE8dX9U+Zu537mXVTGfLMgC9vennh8ViOrp/f07S2qtk3suvFu975Nnp/se0uCJz0uz86v7gPv27zRD3h/dhHmJoIq6btzb/LC+Nh47BY0lnUWmw1U3vbCpL+NxcS8Ra7rthNJathBNzKBxtePCPgCDf80sZWpA+vFmCbo5vOh1G2eNRj3Gq3hvhGfMOVTRq6clSxN+xe4L3/9I8KfzimYgCE1H3dpezYzu4rFRyPVmZDCHjDjd6+OlgMYOxFC5L3kF24VhweAcFq8tcpnQIetf4ZhVtifrqBX31Aviu+O1BmSCfuLUToKmqFbOAJpe5hdn3e20aF6Jc4eRuN9bM4z0p6XaW78PNzdtfcxPXL8raG/1IBDxjRa64GvbsdPvmbYFP8/12o5T5cDWBrqcU/uxID0JAv6+7lm8iXYyrq3u1Dm+W453zCImHwhrilDoj+bJpBced+zUMV4qVt1YeIJXIUuCUaxCD4NPV5Xg+SmNRO90ofT5JpnzAze8TRdu93394P+ETE0ZEuijtsOUHI/ws3B/w396neS4OrVP4tq3en00ui/vJeDL+fDW5nv+/4hBvmm0e+uo0pe7OBmTdja078QFIb6DG4apO8aHkYtb/xaxzrFCPnJK5KEX7W6MUfbTQxW/0pbKRO85Tvj8m+KsScht366PGdW/kGr33DxDnzVUSW5POfanI2GjrQC8LY8kd0OvWqHFwv8QEz5zdvR8H1mJzLbfG+O9Czxycs5b2rn06uBv52lCHtoVnLsL6LzBMhf4vYjQW4dvJ0Z+NGA369Y3c6+2x58bPPdo+TnwAy5VSl7Osrr9omkpmGhuOfJ1xOzegppSsefu5uyEJSyyXG5PsLzMmcfp2F4uSW9/XuMsrAv3t215bPd30O2wtSVSp+BNwCRdwUAE+frMUcngI7Z9lEDuA2Hch1rnKQDbfeJfb2FprNjGL51OeR5RldLBTlyODY9IhXk05EH/w5preM8U3IYeS0VMC12WPbwvju/3l3gxy9t1x5dX1IsWDH704KMNNUsiqY8mLsYF4Q+wMST7WWdhSjt9Y3buOfsrvJN99BixVtcbQLa21+o5QCmw/nTfma4crdBN3VU3rzBu/9dzVxsnClWSROJvCSl+bRj78pl2glQuD+9o88rthAmtzfmdEeJ/QCzdFHQ/IVwn2bh0V3Je2dZaSS/w0OVvDxqt+7HJXldJ/vf/a7Ms/Kkf60yzJp+7gEHIfnks7jmapeR/784+USik0SCVpeVp8UCBGfansccpytpGNXGnE027r03ixH6XSeTdFkw6BKFutPSiWgKCjJVDzbbWCSxyB2A1edNsaw2tW8z2Xwc22K6e5YXPkU7TMPAs/ZK+repmGbcu0sTva/y9dofKh/L9vcdhmzxz8JtnywijzKvB8UhrrvcstH4sxQY05zQ5VW4SyqKcW3UEoL/waBwhSE13Q++o4hgKw6I6XQYbRBSEPrSX92Y3pDbFTxGW/e9QjSiwqj6QZFYlLG0ufpWZl4gFPmnLD+h7Qt/U5dD93TkP830g1QUq6fy66u8oc7Qh/00rO6vZCB17U1lOHEGzLB5RWxjH+cUi0QdXsDh/tPtp/MHy0d5jaLrLZe5Zz/Aq5pE2GNyjL0ActlHkpVV9+sWs9XRp2MtyuaySx/FbXUPpAT9puduq1UY6jvsLyceyjekUszKUE/Oh7cjUpZF7XBiIEramMJeuojOUtKmNJux6Qp0iooiP5cRjSgdd373hTayl3tZas3lI7bj8tOO1x+CK6gJsw16EFqLbjPCRnLRqiQw3fF8BAWXhyygtOOdSNxANWknch8bTcVPHx3D7ESDQuHOxDV/mQMS+UsyW6Tfm72alyPTijBcEH7Vw/KPLYV4ZLZYu4tGxW1L+wjbr7YZcIc9dJG3jShp60nRB++JQd9hyxvDrqhAhVbxPrfAFcYzq501Adk971qimDSeh+e5THjsS/FVDq+nni9VZSbgNuDnTAFtHLPdnY9cSSblzId2OZn9oE24Fb7Z4EMSxlRoeUNplzqJwl3PLkrhOfiiF9ZmKG7l2RCnQwJ9/Ywfliax6MJwsg2TXJ9ISfELLFWF2fS+OW5dmvDuEVfrVVBOeN0Z0lYyyow4Fo/IoccFKAtMOR+ZrO+KkiKwLSQ0mL2eHWt4nSeAh/viitHOOi9JxiRJnMImKhF1hZGFdODMFZMOFqH+RgB/qJXmGBT0rgpg0ZUHokBzsK3JezaxeSase6AHtc1M7X19DmbMw+LR/ZGnN1Pnan6n/+ZKyvOvH2Hzhd/tEUPfIGwzTaW7AE4SAft9blh+ORO6nyf1lfTAKoxpo7mPGJCV3NsQNV1QzHtvYAmbW7rY5/lPo0hZxXkUMkgDTc3FGJ/PY65HLjFt1yIolZBJcQjqtm9V/bIyNXCRrpLAFcaxg16nrxTsiotwynK4VkV/l5paDJVUmqk25XzmRSPQGRGl3+Qo/mraeZuW7jkvXJva2Du20vB6fFvkKNjvuCp/NJ73QzXXLkqvt3BiPUwZIpaD/gfVfT6iSuSydGIiTWR29550LJtkPt3dRUgnTHhUOvhBTs+uPwLbwJcB7CyREbNgZnY6x92M4HoOwl0xIvCSEzy4CjrQ+h3y5A46qmUYoUjfptNEpU+vVDw6/REJqLxtZgllOzdtOCiPiTbYtfiaiqGTX6cfThPCdGh00P/losdP2fX+TtyAevCmrXdzeUsYF7bjSn33WO6TQCvPuvJbbAIpuIWXFHk7sSV1R5e/ra2ov2neR6tjKcnuvYynA8ZSo7V1m15yDPzas7X1LJf3JIysIobYpQK7XPUU57Vn+/LpnnUSLfftJMhmJNRoODtEoCyzLCPfYvwypRXcoUBzPaIeA39fIZktzyGZV/4y2f3ZDK0iqCAWlXixloa1G/GM/vXSD1HCbDZfTyDjIsLtiQYfGK31aG5Zqctmtm38EiNyW0j5I15DCZbbYaRjQHSHHRi739uBVVuUI2S5TBp4A1PQcRj9jXhnG+ETkQjH2lYZj6EiHDeDDXMUgDYKObFudtHLbkYaT79WZlv96s0a83a/Rro7Vjb5yOIUyzf4soEVQKktkG0GiikqR0uileDtwTwV8PUIcPHZ+UhtcZVWYWUbXdM/SNH1kGrUQ1iczs08kFWS6lWbrrM1duw8n2TvNkryO4YUif4IY3+50FN8a/gettxaQ2HK0MI8Q4o7SPGuL8Paan4XtFCMQwgsLib+fPz6Em6IYvcvPsb63DirR6Uhma7FROOY6E6aclGftIoZm0OSP13qZfX7+6Q7vZ0FNAJZR/sfjLzkiY6B1C7gwf7D8cGUfMmM2TPqc+qqXK4OTT/cfHymXPmyQ/n+jqhiPxaiwDHWZO1Ukp798Luc851FhWZqI0+uJGr3upQofFXwZUAlJJIVErqU6qyk5IrEq9oOiOynHQb68fB69P/ibkHv9+8ezZs4BYot7gE9pE2pABHvCHA6E7QPOdzT5PWxv/7dlr1fbbv714vf3meFe1fHz88vX242cnqmllSGM58KmtVoXwFf7FxhRs9MfkPA/6jjUSpvN63uH4tKbEi/H7SeMQczNxhFVNlD5fJY4iPMRETn6vDV3Lkyz8UmhT2g/DQ1Ms4Nc/6DhRat0PSNF0sTBc6mKhrJZfykxkbNflAgfKvp6zkGrMStgmVPb5H+Tx0/K+wO5tE/hQ2TMebkuW1xm+f7tZLG8e3woe/C6Ri7znQ+nNzbxHQeonCL7GTliL1dbVQE/DouhgEO0XKueB5+SE/Ip32YC9dZu983f1lMt5dwfKOEkMH2yO0/k0CoQkbjLLcEQ/zq/OVYwiHqrvurcF6sUf5rIH45AtEW6FoSxMuIPbeAIp4+haduKuuVRC+IAHyUQvAXvGaKB3wM7wFua2LDRypy5yw09G3BzzUeEYnJvRUQwJ04CQwqwwpepEZRc+ssoK8C902dx5QNMhuB83tZO8JOgUTdn7zOC/3JfFwnowkRlounosQMR55Ub0Ut3CSwEZfotuGzEpd4Tjrl85GmIHko4lXtkP4yHVqzBVro8ChfDqozXsmg2clWWHHXQ6+fub4j+ui/lCwXE8yU4+ya6BOz3KmX02etkdoebmnZmQ05EehblgsuND07rdIDF9HeEe/QbM6+1s+XTGHG9TNil/eIP/bTTQYun1Jr0ldUtPI5+tKsJGbieX52fjEUj7Yf3Wo1E7aNx+UmeregIxgIYh+AL+erJd0iXkEjqX+umcp9KKtgk/e4DK3CR/RYbWYwDmdxjZvG6d5AiZlcFeHHRuUMm0zul1iEQ82JNbDEUF3EM1ILJ627W2F4co8tFWKGu7UnpGsGNvA2bZMYfc72ef4JzUtpf3Qnxp3D9aOWPH9v92I3S9AciqJ3CM5sY9t5bCBfMG1a0Hv3Ws/ZeNpZy5RKI6hzLcZmhx5qUQ9jB8J0/7wcE81Xk8UBzVeXRu/NJllISsf96etbrdYv3z1OKdzpV3vj7tOfrhe745VyfLeXgDKW02ZLl6NtzrMcA+/d7Xv3fp91D/zoY75a8H5a+H+pdonEpDfl1ZsQmIKmCmy2m+MSEYkcrVuSq89QKun15zKHiDI1N3kG8msPPl99+nxooImj0jMTPWRUL+/vvMWE3NzkctweIb19SQVUoFEgOTGvTFjWw2dq73F9rC4TmfJlnhbWnZHg+lRYlG5XJJa+c7UdZHbtdMPcSvVGV9p8GoxBBZp++jEmEkzqJRiSnSYCUl7eqkDbpwvibm8PWHWTIvRiUu3TCbUP7TRnLsfdrEFL0n78FVetXhJC57CA3DhwO5e5iF6mdf7hzwzwePyp8PhwxA/9Ae2onj5OvXXfo3pK9qcwzDiApQ0lAB7DUAdsLyETn/s0lA7pxIcVwuph06g1/RIG2H03aA2AqhnLZTS3tAaQ9qaWVKHG8YElD3YftjMssRF9Qf11oYIQ+w/Jq2BF/tYSABl4LIsVOgWMfgHwh16P2Of59PdSq1xb8Qd1TPg4IpI4zy14fPc0Lqy5eEWrPPKullQRT9cQYgNm91AHV/yvCkgQiNsMmML4xcmdiABUlPX759fvz6V5ZVlEFYG1Fhg/Rz8Ou8mFUJTz4HGETQef3qhGxrIbQPoxck/eQArk7MVzRCYwE5qcd5ffrm8cvo5DOZfMwmY7KDD1TCcUIHL/989vQV/Ydff1eg+Ef99+plRH6X5x+iZ89eqw/+w/8eqxI7XDv/+1dVSv1++vQN/tseRk/w+fzJ9tMXL1XyDn08HeLXbvTTa8Cpf4f8Z4f/7PoG95xiNzxPcNGIhR6bGekJVU7/vI6ACdFT+vG/6T9a8unsnDh7rDAtUqT68Pbk1evozeRjMHkfZAQ+j96o0q9U7gk+dH8bnQAOPU+uSMZCvo0HjwYjYYlfjiezYpP0gfIiCobB0+uJFdRWbgweDZdAn0wuJ8G0Ah882lkC/ezTYkaI7RbYXVLgl+skd6H31qj+akKCrlor+8uH7C3zYPnA/YUethY6f+BCktD16XVyuQ2YwC5DFJMwnj+qEjfS7NcXY7x70Pa3tBHdLe0LUa/NI6LUxIPREg46dAZBVlxeasFL3FdfOMr5y9Es6vf/or37bkOIcD0fPVSqRo2+xYmOOz2Ey243yq+6XB6yQEl0/e76ypEMaq76TpI/Cva5h18G7Ccd/lIEJoWOKwRNSdT0EL09S7DziDwlC+MlNUV0Z4RV6gn4j056Fn0uD6YoNxlUcZVqgpS6JNuSjJxM3i/QD53x4qnxrczS1teXyQL900LW5zRkNT+dL8IcKIRf9LoiRlnvJX5IclZ7/Z7oCL2JzJBofcoNrSVO6fqXFMQ0Ek+hVT9RDSf8rL4pmyeBbuCjKtJT0vMcXOWgVARU0/O//kqXdjeE1o0UHIuuHOYTSk8nNHM8TuRZQ3VGlLsjglghv84WSkwlKJcnwYwzbx1nXhvn4zmM2xfJGbLeJmdSvOFQVejDkRgpjerjZPykeP7m1yK3NKmbw8FKe0fy92KcT2ajdnxwB2dGMUZnLguapAB8oBh1xiRAfIqX+CVV6SIA6+EfoHDIS0EnvkpnI6KOwLPKxhcA/G96wxiJX9/Sq05tnYQdiddhOWw3YHFrHjsl52ycY24OWsHUlQUhV7RC1nShZs9zKpdghyKipHl0Me+4iBJKdbJ9HtUOundZjzNOzWy7dejEUJZRzucTZeg+nxZFju1C6ceXlHaCBKIsL3/8TyGZHRo5zBE1Vf4+XTW3DgPnTrAHwD+XnBfQjiBbdMxnt2ifRvEkGV8EPyUp0xJ8qQ+5sYygmF31s596nJz/ZzEqV5HGn+C8WHy+PyBz0r0H+yHm64mQAsxPgFonVEmDIcIilR+nUt0qLZaQsnmo+Dh1tnLGW/k1PUtZFA6f3MPly9Bkmt2V8MP4Ud7ltG0grEq1aCc0RNwMVLXrbwJQPUP9GrQOAf5cendkuGhQuyVL9pKOw94MuuCdwbOdf9lQ6K66BrhyGfU61mcTDxY7Mg09r5qOGmnjiP7iCKA2Nxt8w+YmyvzrfDJ+DuEIM1OPrxYGUEjxofzJuZAJVMf+i+rYF02WidUEqD59xOHsOoHTmGKufM+6agMquzTv8Hj1bNQi5LQq44mN0sy1eDV/txLfJDeVncp68STifQ7AFiiDc+P5NDnwtmiUVhOOHLrV8nKkhsLaGkYwt9X1VNhwjrMlyMVSpxWSf4K7gE2hCBovSq0lraiQ7e9MtYdnVYelMd2cTPhwdOR3PhAnyikQScccLR+cyIuqPsfnTz4T6WKZmJpZMJ9V2FHEBBHW3NIOT+jhrDdWD634aYfB47y6Ta4XNX8nmYv12fEN4ykxCY141D6g5uMW9ksNRTEbzZdTWSa9KZLLK+zXKklLF5AIN71l+vOC5C5qcX5Umr46GRG5og1nz0IWobUl3NLxIGJlJU+fokaf0Lw7oRApkijwPx2B7F8LruRxdsnxVs7chIoGrFEZ6IoK7Ysx6ArOCzhdL/w5HgLT1r7nNbI55nfbA3IKzEceBZ28Op8rvunRo0fy6fkZvaWieSDiiB8qe+ZbqirmI2D+jUdDIK7DM0kzq+jq9S8frP9u677J6KvnYMB3TxcPTF/cKCelnJOZBAckTJ0yfPyvhxvofflCjq6fNRL1uLDv1qvUmpbPzz5xnW6aVWVUm2mHkvkKNp673Nnb3o5KBHImJS6k/mZcOFJhZ3rnc/W34+TRo5mbEL9zPk/DUS371EM1aBX0unjQqRyjf8LdQfo2hS6xfkPztRoiHWbG0lymmAYXce+GVcUyrCqcvVXrP7MJMH9zFjk0rxCO7peEAONO8XUWHxoxdq4J74KE27RiZGZa9lGqe7k6LQ0cMNYTzRwVNkmqOAlj8Do9l4IddfK4nkbQ4n+Bo1YBwvTPASFjHtOsn5zn+ladLCYp4e/fihnx1ZM5ilNmGEZe5MlUXf/r1VxRQ3FPodkYOtIt4D39eTQYDZXScvPY+/r1nn69hTcAwBCNvkcDqtNupfG7gWAgZFle6oLKQEcVmcV9K5Cy2Z2COmkQkdNAw+fvDAD1kcY0U3FGYpNobMCgpKybe3ydI2i3au0i9sHuhEcXXaEm5nxO13OCVgKZGZIHwQzQYnTR7cy6gr/mgv3lBGjALSgTQ4q2B+tENsG6Vbp3pvAyDTyOq+JVgEN7gWPzRMMYH5kpF0bDVpjYcLoObFaj9aGC8Eq7K1IFb1GxRO4Va7csntG8KxnphttYWzvcQrqGOp42N97Z6dNvnhvs+NIQa/uTNsUytsgqgMsWa/HlrK23qg2CvGgEfcli4V+VyDFHewjCk5jG307OzkhAwj0qqY2xD89Ihj8bndHpFGXXszn9Vk+TRYUlC1XenbyQuufZkQht82m492QYiZH+eRyxTVtiRrxc6l3jUmhDRy4/S7vIiwB0R6tpIGogrD/JE93+81KvCKFj6Smpu/5D1/jNOy9ffNx5M63JkLi6N4brW1v9xpkkq7a2bcZ1hV/sgMqRq221+hQ+aZ7CmVTOp+8NRvR2384M4DK54e9k1b+lvevwDDIp7XhPPkPJZT681oebfu72gtfPxnWARs0j0VuscUyiU1NCOVLxzge6V1XKsNTGAVh5ji3rfePQq+mxDaUiiGZXsJfw7Ghn9MDSyAq/eJaCuGugyk3o8n1ct3tpae6zL8tW7d2pZ23uPi/DxpAdOuAqLPkHqoQWg7XG6q/AeInC5Bq27B3EpPVxyiJuDkGOm8OXF5rvevKZ+oNrBGzFq+oqc3EOHKVNq/PSQcP4XnMGwy+OESIPgrUUlECRgM7zoPLNLMKITVpvOIjXxdGMHkPptedjL11Mkg4cCv1+le916HQbiS5Ix+f5HDteUY+/FmO6y1429F14NzEeq4Jj+KDK1Tho3Krqi1Cxf7BQqpwkTcGqebizsONj2aanX7+S9s+UWDKaOjKn7U7DSn6UsAH+1AQoS49WUz46amoX0FxuzOSFLGQir723yXC0PViv8hNXesG1z1qrXV0hG+03bsy5XNFjOMojxajVDbxpnFlUfftBZp1Pbsu3PunsDWmTFsh+oQu2LzlUG3sc0L95X4KXuiSjh0s8Ax3a4l3VVjqxPK16iQEsBmafdhDl7yBObW6+Ia51WPSD+7rJ+2j+wyy4D3MNdQNJWtCae5zjluO0VT5kJCGuGwRQthxG3svLKbNK32XoCIGUK2G0v6mucIYqlKbqgwc1QbK3AaP/NzAX31vt94z3e1bt9yx05MVKF2OTLmMWVXZV4wy9ZLxrEGWquXlONcms7fJCC4KButUhTUIdod6racIvYQmqQ2+YT/jD6zDAZqDzQnEauXJ41LnaxNvHN8CGe7mZgxIfZDW2J8JRXnjkAVmT0WGLaY+FeOEVFaBPPmNwbRDTJjBIK4GB0D+EZfbJZ0gRe2yYwkZT1fII6d6ubT8iSZx028s1Fvpd1uDQiPsZs+ACFCRrigXCceN2vwFIv7BhrMzBWdxgehqUnmG9i79K1qFbgloqFoUu/maDmOYEjaG7sqyyRLPLxmxN6sENLiSkIpzqwjzWka5vfCyL6BYyabEnQaCLX2DiRPSEKM/uAJVGTFnOCHV1vDT2jz8nrmrnURjKDPyaRY7TEO/Lv5yQJcvJk23RTYmyhb38nLQLE3qozZh7QKp2bVCOkjb/bl/eG1Cd0Mk1OX7T6iezycc5e4tN+ac5DFmN+l7f4T5dGOs5QDcKAgfccgX6eNW3VSho9vSLu0UCWJTAMsxhH5IImbIhb9abq1etI/xuuPQ60opdnWdXUzICEqO0+yr9J03x24kmEVaZkH4q/aPOfSUT/ffO7N/D+2fWy6QIqYIOarQ7x+KKWZEfPjN+MEyvKizg8Vkxvnn107COHWXEDkaKTFNyV5/LPoKIHv+GgiHeVhgfTBJErcCUFC7RYivVra3ctKktNtdGvm9BG8bJJYukF/orZI7efPbYnPFL+b24nP8xwIFR7UM1OoSZuapyNeZPyaxi/pz8Kv84mS86JPOZ0f26lDh/oERZS0QVYWQ3P6MLOYOmtI75+Uz6WsbR6s3AKelthIWaVkuTqcPiTcZmhix7Rr5zZbv6FO4rC0xtnc9ngJ5dwoPO7n7YwxlH+QtqPeZnWsJPcA04rvf6UrEO0fzjOW3ODqqGZlp/lPauemie9hwRj2xWFGNCDpP6dJZ87IQo6+p2uFdSR35EpciCgoQm1lpyZSfFOCfr/3kn35kCAj1OZkXS0NBfVMCdtK2ajmY+TO6zq2vSXtTcx69vnz8MzKwKKUh/mEoVefD45PjFC6Ndwl8O44HaWLQIvSR3DI2W4s6y3O4g/MsOFudRqBex2dV3yyo4vfF06/kn6hRV+tBU+k6PpfN80A/i4NnJcffdq5chDnn2rb0o7Lw+cv7+lrR9u26RfyMOzO7O+0/ecSLdGaG3l8cz7uWDqpfHb7o/Pae26Z9aOxSosnhCeHARd/zpaGd4au0YA0aqaVBp4zaZvLBLhji2asoYKmwmKbtqYzgmsDEDXaVglkgxMc1y+mwojezeuv2hSmOj7BlZUgMt0d++hSgB5Ix9yuiSGdRNoET2b0VCk9xFWkf06R+V85IowAdKHoRhb6584m0PLSAFg251luT/OCGR+TKAl+djIm4uSDQn3a7H8w48qQ/TS+Kam9OGI0z0Fp8WxNJofY0mULRhrQiIcrkkDpXhYr9Dk4xZHn7vmHXSmoCVlnDHPWawEPrS3EN3lSvr9whxPohrST3lTsBZbl5atPtGeU6Lsh6dQ5Mkj8tOQYSwuJ4+OR8DhABm9Ofx/C3Ru46vfjj+9w3OrQcj81JO6jN90boAbcg1Uk0zageqlHO2uy+pM9POvJhfENIz2Qf3zDIqnUx6QZdV6Hb5sUjfLLKnnKeSLLrpZKqzhLcjz7OTG37xJPbmpFOv26Vt0pqnT0/ZCqDDzPub7tEXJADj4jL8QrKZL225vexyorTeM/CymPmbNlDV4E17e7NF5m8LOSvbYTBuw7MAZlaueoiL1VGWdJ29dm5Aw/MuOOV7hcOr6dp58TS05tScsuGXqul0Oo0HZf7c0LBinE1y+gWpRWsmHsKrUYC5+t9vfnpGjobbCljAEBIgimrRqL3MsaAnY0Zz6MAyixVnBZ4EHZi//XGlQmNUnh60vJvnG+uYxP968urnnpJSUbZeupyWjjEgMdQl6SWqDsJnQTsTtEzEZepRx7dnpDU88DncnY5qkT2Fnb//3PnCVYzElP2cCElvtKPBTRiGJs1uijsUu7h5tOF2IP4y1dYfo6Rnft5IQWrExXs6iXO6TccQp5GN2pu3x6+LYqbZUQzGj7XFxyao2ifhyFsvlbs4X7hFeAJb69dF/K2EsnXX+nej8pSIGT9msI6wPoT8ctNeIyHPZFqMY+s15np2Sbgz39zUP3oXf1yB+pPYA74BacvNJ5dFD7JB8VuR0iACNBfo9gLlOutWOxrOf2CdtP23v78UdeqA6/OG233+MgHy+1E7WWUnksBHa3ba5kIy9OMz6iyk6IvC0BWBH0L+0hnuhBayh/6Wy52weDNZJGpWq9SZTgqj+vb/D7K9I4OFpefIlTJhnxVKZvVT8QehREs1zfrnJLmkHyvqP2EoXbe/imXj5htpeLMM49TxEdtPnX5U21iJa8eoCQJ2H1W6kd7tMhkT85cR33VOTbndYIKT9Mrco9sRtsl74o40WZPzfDrydUAB9SiXCN9yAOKdk1h0rf5Uv7ri32f/PhZLx1jSFcWy8yOCvdM99PXrV0701fr1q8htd3p+tqFHLVcUTTOu4j0JxG9T5OvXjVssKVPAV5i3jr2erbMbJ5G3ImpESfgtxf1OIu1g3bLZrdCXKL9c0VIlMPEYfVE9ezvRgWYgFp6M6D3FTf77eV4g+QZ4IYjTJjlV4zh0JhBMZ9swmIDZ49Dn2gkTDzvnCw6yskmFuAkj6MqhhzcWvX6PJ+o3CZoleayPu7pEKMvnBuyIJJmjvlXBePIS/I8im0W8US/tZJti/0UiN+dCzCthX4dfvD75nTk1j5sUKkHS6M768H53ZpuDsHyx9lbgvlvrhWZdoAEihO0Pyqc34mD7thKGpXdMXcWd3wGHtwsz4X+q0DEcbfwXNKP02DQeP+XXA37CjsxBNJ7MWBmOHtcaF0tCSEivZnSP7fhrkoNnu6EWodbugNllkcxM8UbdYcs1tq3Dnj3pSGnbyn15cEAz9gebnOJFxOHIjlodzlZop6U+OA+F5Axi395glZiO2wCnUlvbNvsCJRP/hZ44yIeQ0ZOQ6ce3L3+KhbCkra31NZz9+mv3tZr0vMOrXkpY5b5RsIeBnzxFef8s+OthVRDf6tgr2AblGHgJoc27+tHOYaIM5WjHNzv6Ys5cs1E+6Mq0Zk8nOIqIsohLUIV/rD3t0Jozjrb4RUikhDNnyohzm1+Hnk7yM3JATfIesaUUMLaMaR7q7w4oQWjlWHGipPwq+LuqNShBdKBsxfjGQjv0V7F0dQ4pP42bGawzK/QYuHr9WLBF+hJbodDar1thRB7wj+oIl3YF54tRExetJfI1UGq2HF/COq1tHsMoc6cyTitlkdfXi45YvrEI1z2tP/tk7RRvvsf6qh2tb4Ouk7GGaL4KDfprPQvtLX0WYrHGjlKGumddG/44Lz6qYx7vRo9kEuKHWnpCj7kwCejcb0/x2XxU8pHSKIUoP1IQO6MBhc60yWZ6V4HHDQtxOjXDRt22XmDlHHw6vfzcSK7JSh9IwexeoCEDAwrpqadiXpbcXrd2KOpFm1grzgb6mTbyCbPek63pPM4flL8NOxG1ir40NKu/LwXPkpyB8asB6Wc4qYCb4JTzs5pczPlulnLv3gSfni+ukqn+NlPkv02X0PpbQ1/iHqJN9HvgOBYFHcK1OoSsoVwtPwyjFgzawK5vWzNDDZirRwo8v9ABkxk/bEob6jlyRPjtN4D+PVdOi/ZdronKgxuaEEV0Zb5yz1XG8A/3S4mocbuItomn7TMU+fB0mUTXxVQ/LPKjNhRdMZNRC47GSzF7iRDKi8N3kTZ50btdtARtjvwBREpE1Ss8d0kv4S/gsn0hW5cIVeEoaJlofkt6T6wgcxtQcKy+cJS4ptyoRj9mExTOd8Jut8BRxxFYuSUGola9tE4vfIfN5qFiV4M6WtLEUISjSkLTgf52rcpU2gOufkuaqr60EkKkDIeNpL1BI0lke8KT+Mgerz22o84vJxCk9iCg7Uv9ARUn/tqha2fp+isc2dAbYv/R9JNwyojB3j6nOSXFQ0oMpTlnwxvfQgJNcLx5aJ2PAHb3d8O/kP+56BeFeqWWgEUMpTi5Sqyvn/DEqb9O33nqvL+/a+kigJk4fvxUqSHs75TX769fXTkkoa+JrmE4HELv+Et/9O7d/t7egBDnVOpf/dNTOail7+zvWr/6DuywATu0frmwOw7soP+w/OvC7dbgHpV/Xbg9huvvIX+NElJDo+y+Krv7oA9I/QvpD3T6oEznth7qdB4d/0L6I52+U6bv8Bz2dYaeOvzijIHO0L3GL84Y6oz9MmOfM3Z0xoMy4wFn7OoMnkj+pTL2dMYjuWFyHnGOHvdDPW784owHOmNQZqiB30TOTijVm1hX2UE7KyaaQTOD9JYKvxGHWZio9Ibrh3pYuXvpR9mBC247G3FxnWA6LixdAxAVrZk4gEKCS7Hhu+fFVXLm8za9ubnTeB/W12nNQPwfqRLzi37uAsl9ApUYW6Ku9WUSpRPzz+mZCG/cOVfsDq7jTZfxNZLW8cqzV2hZHC19vLIab7xJF8X08SWJPnAs+kuEN7VhXE//mwaBpm81BIYPGwsBq5//tjGg8duNAiV8C/HxQ1FcrhzH8ucsX18BsHIc3PqygbgTr1541ayncfPdt5tG/ifiNIxuvw4rAdDM5qY/09uHUjABSkgvUjOJf45pvp/A9aD6UnJpizVGmn73/dL0b2XczFkSLIglykJDuaU8cygbAmJfL4JzEOx5gNtc3UtHKcZHvNNgjvJFLuHyGf3GLVj59vj1zU/klRjFnz7bfhOYLuB1xHLl4Qt57cS1n3O5uSpGjLiRXX6cj+7fVxd0PE6MHj58eB/DEe3B7Pt9HTz70O0Lemo7FtgyRhHO9f/MXP/RCvUDru/UE42o97BkSlMrSt9Apvp83R44uFqtAa0cf+C2rbuAVjET2k2YvzG/rMLpbE1GgQ0eIU9rZ5D3NIMaHSsF8qwXBFWC06O2JVPM48kY2VYSQ0EfijHw9YyQZaHh7KTo7s+A3ET9berDYjH9Tk9T7urwgvDa0IKXrSNReiaFH06888BZWoEVEGFk9jKqdp+lypzQKsEpFnHmmW0IepWh3ZD2+D3o7quvh+YLt8pd1uovSU2Ez6OO7+kNrTbf3NCuTifxTz8MpZWCY+VOA7On3qnvi55PFoBvbjqf1H3YEuu0lOzCFVoRCh9V6zcio5fhnhRWpEKEO/MU6goybannvZ1wDkm/evYbWBOzjSsJh2bTJJRe/1L4sGJrYPKMS+pVDqQzKWUq3ij+OVfGmmU9rHFRUgbWJYC1jxLdxyjgHhyx2wUS09ERyl3ABl/z2EiOktGObI4bLhFpF15duovYBNNym/RIW8yjj0yJj+nafqRnPben1AsJLPMBcyqvurYyZVLGBoe8CT99ejb+45xcqqvZI2tRHp7JPD6fJdxSCc9G1hQrkSY9R743w4l99oWja7rhNhFYU4VCKMZV4oP+SJRJnDLQYJuBBXsj3cEczxD9l5omk4eLsqsvX58oc8ukGq1y1Xhe8HfNO6JdYae8f/0L7lJ6kpw5st6+AsCwPy+AcPC8rOAKTx6/Vvne/l7SLgSaNiDYp+RjEiGfY9fRUFpA3sDNseqkswC8uy09DFWcqjHGuq+1TbId/SIaDJy3+JStGPlJ/ce3b18Tan36rCsUUjjJulMcKCfyPNurJUhNhA0eiRNfys1xfBnuqgd0emdzfMRtbrK1ClSFV8/A7aCtQKDaY+ID7THR3UZJ1LaH0MpK1CmbaaumV5VSbMs8fplckMUO+/xYt1AYuZs56a1A2UpDIPLs+dvNYLR0s24kvZXbw+qNu61R1ovWToly138B2IgseR+TpcsCP14Tp06PLhn9vqn7uVy9Jx3P2LcqwD7L9ZO8YaqdNZLaIN5kZj1ertz4vH9jwllVDll6JmwjYVj5W4r/h2viCsOesqkOcUK+nM5VeJnM/JJZXLXH3UdVt2+qIk52oxatgdxso1waPKgzsSndcjrk2JHsNPNtW5mWLVFGBI6tcyiJXdTsNQkd6EYDyE/21t7C0HJaF7YyHKee62MVXNktyxPPlk+ukvOx6HYGt238SMyVzxK2HreiHnfs4CXw7yIschfkpjaa6DzHbu9kUhATtfARRXhfa1SH/RqcM4lRjBRb5Qu5oWskApGfI4046iU8yDsPEXM0Gk+5Yw2gTuiL6ksdzXTw3HGBILnaXUOFzz3U5Nq9Kf9UkeV6wYENbVcAncy4UaAfNcB3ufHqxep9sQ9Ab2ddU9A5fvHTY5rfmyXTW+Rsw+SsmDO/mdzCHFHdqj1dXoRbd5shRYPNFJlp4WmqQzmTs+GfHQ3qnZ4GhH9+Guin4O8+QbqCO8+QOZz8k+QBXIVEDrB/phpA7ZOljsryvKgRyXZutToDG8eEFKZdwa5ZeOuMY+VGpugZM3RwTqw4AsNOuDoay35YDrlISHlPdKu8XcRqmMMMIZ+DzW2UK2IbWI6tz4ehHPQPx+yfpA9nZJJbSZSfEXZQBvKaUECV5hYzA7o97piSbejjxI0KyxBK9bD0ALuLZ+K6vHPGel1XJc8YzJlRscLPs6Gjw8YY3DVOZ5e2rHaDbslUH7yHEmcPO8R23rHhOrJx2gyzGKvipAGRETtUNlKPf672SteTG8o1HOaihO0yN++KcGXodrcxZzuydxsnunsWOp5febqTkP5B/6yFA2+Cy9Qn2sgBHpUwTfbCWeY4tjPpeE0+x9rA0J+8/QqXncu0wUDRXF93ebNwjTVQ/ayWYGOdNXAm2F2CUG3tzCAOr0hwP2iW0S64no7nJ9fv359/aiwUfLT5HdTmtn9a+mkeBuChGN/2gnAW+CSZoGi3XlZNgLeoykHJNRzc+oPO2bWhom6u3N/uP4ADHS1femYTMBwZloTFJW6pxRMlsSN2+Pp1MIgd3dZ9W99K5rGnoTiNmBnRCsQxszYlK6dPq/z7nlZ5iEC0XdH2ejNX1yI83+RDpmaDJe8yVKRysOdMl5HvHrrBnrcHhx0wD6GQBQdx8lDCZohonFl0C7DuXump8upeT+lxsFmXShWcfCQCHp0dfaYBWW2maEP15D4X4vcnih98hTiePDXujkmYJt9majNq+3tOb//w+MWbx8E2gmdCuHDpZg+8cwguyk00/JNvyoiTQgMvxtyAf3og+0N5e4KYPRoceI/aL7ebuOG3TZqI0FwbZkYb34iYgwZiDr4vYjbx8kQxit8PM4f/7Zg58GHm4M6YyRPUjps3RbzRj3LFV1NcyWsYSP90/r7AK1bIE77qvTsfXlKBBRVY/pK9YuJs1DKYij5yn4KyjQ4PaR66a13x4CqqdieJ+7KId/b7famOGb6X5O69RCbl7SGX/VAW1uduqDyho6yVylcMrhFXjJwKUU9H+BXKdZFtAaupb9zLsrktqT9g6hMPkpjZkYGaxHN+2mxi40Zn4K8ACAHtiDz5LNG3IkjwW8jmpnxLgzmjI31Rw7Y1MAmdm61EI1Lgu56ugUVoEPWq6WZHti72N18Q067g59ZS5cRpRkVRi7wtW1JPbz4LNW/HQGXx4NB7R/v6dVsZ54rySDVqFV+/+lLv2bBDWx9zoIyirN3j49lAkrgGNZWmPI8pQY5eOuTY0uMRn35DPOToIy+DhnzphDWPKxfI8A0lEzthcKqK04b7+nW4c0D/9g8R4f/RQaLqubkx/nmxLP4zdnMTMNXYJRyR++YojFbOQoer4qHKjdaaJLHbosI6Ifu+6TsSZqeY7VgRN5o5a8cFnR9/HL18iesE94DraR8Ka1BUlHnZqFM9Loc7Q4ED/9jWmuZlddBEIsODkG4ANXfjmR3kW5nyRoGxpJ4bxXe9S6SWRf1TpfrQEe01CfnFrWCU3tSJyjAc1VPaCQoyywfX2xEUbKY2whE2r468TaF5zdLR1m1BdGr17gHYMIy0eyn2TN9JPPtC5jFtf47k3SQt1rG8lO7YtZQkJQeNCbu+jAFlhDLhmAUlQILbs5afyjGct/sRulOQRTRdx2FsHHy6uhzPYwEFL1L5myNQZTLvUep8kkx7k9nZ/Y/z+3SY7d7vP7yfcCGSdojD25a4PyOjnvsJmel8htLpwX3dg8OD5jPg3buF2uakFZ4Vv7550VJLfrV4z1WkxdV9pbN2f8B/e5/meTk0ULpLaLMZwOz8igAJRbe5KvpY8d59cN/qzuGB9bh5176VdQTqtsKPr4db3Q33MuJbeb7JQIhk6iDmwuoSfXmWAqxHKyq10Ve3wNDCvfH/Qbj3f3Fv+O24l8fv2Cj+Aj/SIyARsyguE2AYlZwf/ItwdGF+yXGjzNBXZlyWGcNlH1rK7TpKMCe0rHuYWkFb/GdsJ5O/OOyO7oTyT3Mh6yebloK2PW+/vZq60lAvlFIKVJZMnSUVxeu+3x+xfsm64CFpwYSREcy2RlQTz8BZkhoGHGTsgs+cJeNioRUMgrmSgfeCF++hAF/qyQfnc6iNzkkrEenzQsPPZf2lSelwB0ovOvh4TiaMKdWi3KsFyTh3n4fst4wSOFGeRaqnDRVoYMl8uk+m/EThjgq9LOfQVm0IclYm4QcMbq3UI0qolmUIASHYhu9Vg++qTvS+fmvkRSe8IcfcEe1qFgyAoI4qtGF3dVjDq+TTtr4q7/fp28QzbEQzXDJSxH3hUIcrwaw4iPyvHxF3D9df0HRmyQMQGgQ/VZwB+HUsZrFZbBBVPQt6xA/2beEAFz3+gGA3NC3cSry/40TLYbc13BQtjRYe4Jdd80NMpR1UgV7IytestqFRJZ0QGLahNIcROOehzMJRQ+Lg6OGUxX2qLBTrbSDb2qOY5rgDW+O2dL6XFGJ9rGZj5ra1lCyFUdqgTMt2b81LzRpKl0Kmy4Y8lH05cDTOlgE3vDzZAUlalkE8V04IQT9ps2lSJgOOWBGIbm4FeYYjISjPseu2ZvI67TVL0bxWsTZ+R4iNQNBJWj/UnPW2sODLetsPt3e1CYTs426uqzAnqYZz2liC+F+WNMkHfrOJMGo9ah3d4xXkMl3eOC6IGUHJwfL2nOaaumZtQZrSWLixntsV3fid3KJGsyQ/nwRjsIH5YACq9PFSdLOu0HSJf4tuZ5WGnPKUVItgJrrLdO6yU62Q0pSI1oQpAcvjIRn1zgzoUOruSD8YULMkB6tVlIkh/I/rYr6wDYdK6xDKmX02nG9HqDl9ZybydGSmghGN4/G09n7oX3sXpukJqxwKmRh2xOrxiNYO7DBNW9mJnWYnfJjhxnx3KYaxNjmpq8VwhAE3SpkLgX3WWjBONWvqXmJSxGVKYiFqcbe4OwFL1zJbryPKlEKHL54Y0oXk/BCAxz/7wMj1MblA0XUDiCOJQXna2Cj+dr74oLXXDQ5x4WXK8FQX63ZlcdbTFb0YczXra2GzrjVR3KwMKySMfrwIj5rDQfRGdCJjJVsI1oTeopsBNOpJ64WnexugwdufTkQoG9XwuMjQlZXW4euXOttxNPblRhb2GPDFUzpw1u3MMUkKz98jsaDOvLxekLcfuzNZ7DZpwdOsNjvrVMjrqMR2SMZnJ+udXKs4VSEvbxYPWi5E8Z7nycdMBk8bAlKRlhZifskG0tPzT2IfRatxiI0bnVsGbRwEGzNIQ/o+f5yDi78t7jjWJd+lxuo6lKOj36dO2mzfpSJob6kphRmodtqIim/0bxU3YgnBYjO+oXojaIrvl4t9hPyiJPcuOWslfyyYufHhj326+LIrmr7bfxjXWFQXUfFF5xm2vzrKwaKykWbJpSZMWIlsndO1VyxnGt1NVap9fbmBUNwI1qUIbc34JEzjBCtTUq8YO/wd0ixb8r5Mw9PYTVSbLNKLl7kr5+oHmq7cXumRw2N6D5tx47BhHcKeqk0dKrIZIfLpzydKaFJ8QtmGMqGnhKou4Oe6d/VgkILCHtBPOCAghzAkURDkkqYHOnoaytuSMaVLys3VaJhKtEiYG0ivCcFESxGs2885/G227LK2wmZ7Jda+UTD+bePmrto11rws2zKlJu7ntbaNNX9+/U2+DURpvLWOQsht9EE87bVpHw0P4akAqB48/+Xpz27mzuGL13/sBlrY7ubtIm/f5LnqHRUrexcNDzg/WK7gYYlrhnt7pURn+bDRcDmT82kyPrxlvyDD9DkM7hSIrtWjuVdm6UEcB/3g69dG+mEc7D4MNjeDWvpBHOw9CEOxfMzrj/IQpMlx/hGlLJpcOUQWj649+YNHg1t0iykjqKDdOd99EuK1ak/iIumrnehUGkbL2l2+Bet6N32t/gD8E2EtWLTJ5BmqZbOpBAAYS2rZX7+SO7mdvYPyKbkBGIYIhG2HkoY6tqhwFSeDkPh/7FJimtFJPqCEvUf5c7/8POVnIfvt/NQilP5pta7dLjW3XlnqBLrTmDrZaFkumQDpmd2WVR8uX1eALJfjldr1mk9qiPCYyDsSPL+0bnmtdxfULRkhV14i7btTR5bkXJVC9xNWuf8gPeQ/6INc85UeARpQ/Gqk7uF/8snEg2k7mvqD1YfTn3EAocG7EWMej+fMuUSdtYeQBC7y/8cfO/q0393ZucWgDzktmDZOoo2kVQGWh3udjZ3hZ6uOo9v3yhL4NFZkLYxPIKr4LhgvSMkjrR64kobC7uDQ2pwi5C7WODgjDrpv/CW4m8GVwWBD+IaNU0avACBM8mr8hC+q77dEZixuDzfW7AvcX31HdFnMJnTvMrPqmbT7mLXmDGaYwVvgU0ZL/L3wqTwL0jDxWGWkOAWMaO3FU+uyvbPLjwDuJR/wtvCMx+Tgl4Wg9hSVk+Pn7xxJhYfF4wzi8TaSMFoy6NVnZakYqnmCiNUbeRuXyijpf4eG1P+HVKJeX6f0bEZ8hYMOf7YuVIXJ4lApnnRmoVI7sXoxCljmNqLAL2rds6JiPLsbt1aOGnUyxh9QvkqPiNNAgUwaNPi4wfqFgXVT3az1tJteTjUDqEqDUi7htxtstmzgvdSbom37DVdvr9XctrY8omXnIsvfzNfnuJ2a/3ym239f5EVw1xeuBxvLwRG1aem5qBcxwmjoEid/Sca9BlJN9UnFTrWa+Bh+p4sqK4n7hl8KeUci/PrVPwtlyWzsLcdN8P33ku+4dBXwVHUkzPVAjPgWrKmp0OEemJUR0jenJQj1Qm64PXUhMq5k4K9EX9mbAlOot4NI4R07bVMGyOJbe/qWyfplnqr7NEpFZTjm/kHialT1RDfBk9jWOr5r8VyOGa/CbWXdrbUc1KIX9ALJXXIvBSV204+1x3ZCF5kix71wXaO6weD9f+QrrhO1O+hidl0EEJUfCdfcbeuQ2yeahXElc/Jo6BYVOl4YKeqiOBUrawCj9bTIcTqhhvwcATuh5fOevD2iIpu/4olDazT+VcZp4tgoaKIUq2CUaAjTNDu0vpPVsb3yDwbOyZLFabVDewKPGAI3F7bPcHwCZ3hTSJ2kPrUaRiZi2brrSyVKlI/TKLNwOU4i7iSWU4RAYwsbzDqbHeoqlHmaFDKz45G6ahp+eD3J6AxBsTYG/rVpQA2oqYqx9lS4+hkn6hmIo5dBP6NBdOixiVZ0if7Ruu0i9p/am72nJLvl0+/J56c/Hr/m81DrB2nrnjqknTuk1dw1kZIy+j3Uv7mAMQvigsapLoHtOGBv3/4UuYPUWj71jTDckeLpZ0Lh8yyA1Jn0MGl3YTfYxYH1jhqSm2ltidtirmcaYjqDyik4utcf0RG3Yl7jQbOIXQvN7LLpi8tZluX0UdrOLfZF+mfsC+8Ksndn6rGQ9hDDiJN33OQa0j8vaC/MCo31tVgc/vfRwW4ZyIrG9V5XADeG2WDfm7WDrAferCGyHnqzBqcctWiwJ6RxWOrWGkoXdx9JUdOgN8MD/pqCjLz2tDo5nbatzl6P/Y49095P50RaxhUCWtNEuY7+oPIC3O10MCdW7N+w27Gm4mhIKRam+Xrg19tzW2uNJ+yqy85m6sW82YIMmk0EChxOv8JR2cHjFy/rQTEfv/b1j7HEDBL6eGUXE5mt7GKjjaU93EAXnd3qn0hnwyb0kXmuZMtnKnj961tuly9hncau97VroyXBDdSWl25R79TWS7KytqEZ+J8Pv9HEiuPU39Hbnqi1zq1o0zvCNZt0yeMxCowX65/ieKV7NV28aAb6VqnALepTHmWDRyWZ6sdgq4b9MmHACYMyYXf4aPfR/oPhoz3k1HjNvtYp1H0Fccr4pzlYyyHZ6TSgO3Q8XkuPt9/Q460dcvXWhFyrL+2nYLNCPdZ2rrDMb2ITJBIuYnC0lOkf+xDucRxlqJayUZV5+opYyaie+tfLSWp9YrEsF23Rz5NFkFyS5Q/9fvr4aXCuXHafKViau3NEIaUHJ3VFiegH3VCo2H0rsfg0ZaSikOLnynZ8XNZZeSKPRFhTEsYDNS7q6mIsszYMT2LHNe0iziwNs0oNkVjU/GBh5C55N94JE9dpo7JTgqNQtkbCLRey+vIiOBmTKPP8P4vRAPc/0bXn+x2V6w5OqagMajldZA1Pu3uUaWTdUnguZe6TfDFXDvzYDwvdCz9iDsVI/b2kfFwO2dvD+wQINWBd9KRy6RY2mFbUrw6O1ind3LQw3cxvHflRDXRHGhwttOQiDJ7ksKSqq0gHwobMX0y1xKWT9FBaf5Hox83ToajfTMAdNnK1byxiURtZpXMiZCqBzMMdieb59668NzBimsGkD5/u5eel+fyx/OSFMEZ+osobmLzC+GQmKQ/dN+nRzIIatkMF3YDnplxmKoc+VeT1XqYSKvKKSNPVpKrMYZm5QblWZrZjIuS2Tjpwj+AeOnDeBdCQjxzI5mIw2G7fBWsuDAPyuUZoRILXKfCwcSkzG2F+PYVI8XbbYMcmwnWcV4q7bsA4LwiL3G6J9xrZnbWj78ye+zhzZzjOrHmMM2e2YjEaCekeTL5eQCxRH8VTuGELpYMqzb4YXJGNXhnskG7/DCrIWk/Lxf+m7lbEOovr/JJW+fbFUJjLBI7HktIJcpR0u9AVz6ArbpXY3Kyn3NK4Io5F+XZEQwsUlppxEYpqxMm1HACt0ebuvZgfc6Cl2N7ouA8ManyHf6RC5v4Zs1gnX36dcTiyudCYb5myyUuEI+sK4OxER9mVNi1PgKpOBoW5DDQUgmkYj9Xnd5I2pXFHiZBQ8RtONNITulZy3purbOrLPzgYgN72E4e9RUrq8LdIycqUoU7Jy5SdJqc77Ddu5OhBYLoA2uTOh1+y5ObfWbgks7WY4aGHGfZOLV6UOtkmTV9zdl2Q4Xoyowbq+QRA+py4HeY8W3xQb30ttLp/qvmDe/2SO+i73MHA5Q4GLgfwuDzNDZ+ccIiKOdYb8jn9UFnjCTDMlkLqVWpuSElaEG8swhofoBAbtevprnEC9xzoFk4gpRPA5QMe+KCgyUET+DKZXyxhF1JzbPyVZv5j8llutDMM6XoMQ3p3hmG3JMVmp+kyjXtms8YvmC3D78WYFOvjof3xqPrACMqPe85i+LHYv59vibth5CBB7K66jp9mLbNJste0SnMX0KTbi2XS3JUBt1PndNBok7ew28XMlslu0xbPIcS9itVAvV4eJAQc1sCC8zMlYZMe+edZyI3UQRw+R5ku+Rf0+x20DgY3TtqxvrpPSz7FOXGpvdd0m549mUwWx8k0Sc/pAlxGPHO6ruDs89iNadth1QrVJQUaMCy6dIylBrXKrCbgeTyUTfFfvStCTquWzcHR76vJtam+F8o7w/4Ra/GZort7iaqHTz516UYQhldTJHqyebzXUyGH6wBmnzP45NtbBxYhnoV8uByUxlvQ30GfHdO1jLD3fDLLCqJ/Z+PJnM4T5BP2r+7DZAxsysuCRCb7/TV61CxFKyYfOUHjljZ/QgF/tyfv39PQlk/sBoPO9DzsLu/cyWVR0FqtgPrxPKWNDqVY+SBcPrEIOaj29VrTyZ6QUIa6uvZEGvjB8r6AlJH47dksmRe36A2XClQxtLK7Xq8a5fbCNQtyfOPnl5Pp9DNtG0zDuojoFt0g1Z1btXn89M2rl2hyeNsmy5I7azb4+h/PCM1uMzYusWpEx9dzYiQDTgUdlY8ePQrlnrOzllXAslqWFOvyD+vvhHuyTsd35NQ5AxRZd08jp4h9GMFOXRuYOqdAy/3P01DJ/7ij0VcPQlnicr9+JRSEuAceWI/BLs+uguITISkKwJNtedHS+sEOBh9BdMvuyuzkwKi9Befvg5l+MVgSjHtgKTQpmXpVPo9J8Q2flpHbzhKX+ruldpNHSbzePMnJJ7MR9Y0yDn97/ObnFz//daTCkLz9cM7+zuifaREQF5sohPtQGP9ovDQ9rldI3ct4IBvC5lVYIVNCCTep0760y1eVLm6E2ZDGggN5nP+h2lbFOOSLAngIgOXvJl4mgnkI9jBLHtVJCDc8gCRuJy7j34PlIjqq3cY95dROKAmEsITe+5PLGsxbnUxA5j2eg2Dv6GDLcwavwu2GUQvrZHNOqhS2qom2r1dIaW5WHx39C0pW+OkoC7OE7F4/2j90jmBKg3YNdVAH9v77efFxcxPTauXec3Npwqzs7GjV/G+0LsDIzwM6gixPYX4EZjeKj//IDWa4b0Euznzhu/lu/uR8Mn+dkIqrWHmuK7AwsksybQD06uIVbFUHCQ8vk/kHVLW6Ag3s9kAxG2I9nqQqqfi/1/oN7hmMtVa0rwrkbomqOjpE6Fx8s7wKQFRFfqKA2qTBn06SWb68nIFCCbe8gmcPhsursAC5lg27GnVIr1ONBeh2hlCbCOMr2kc/JSvqOHn1k12u5NDEuqycOwWKgV2n7wzo6TsYAHOiPPkMMrG8oiY815Xt9ZcX/HsxSyfz88XnX67Pi4UpNFizEP8oTLHhmsVOsllRjJ9cJmOsek3os1vyTy6t3ZE1evGKCrtJWpnMOc78EExqzvP8d5pt7AF09mnBpPAXtQZm+4RGEhJGVpk3J88w3wbYxpnwyJNmKhmBGvOJCpiS0AX4cGhXmQIigQ8PeUBybc8hyd0/nOSiJZLszY7vJg4h1SKG+DxJ3hdYp6CaIfx09lrgDt6OSc5BMbNdLUQKy4chNlj7RZmblZMFMwBAmNxnKhvPv2UN7UvNIjnr5CE3NZH12WPEwkmc7e6aU9iBKM8XAFmrZa1nA75aQKtQlbisJBbaLoTvFnhU9bKgy/sLaGXzGB54x/CcWOyPyawoNx8DP/IDew4UwPuxr6Vv7nbi5h56m7MxMN7gduy0lgZqGK87WEttL8tbwy3rpraX5T3kljWpS8vqbYR1Rjl3Y7WU0fsr9tOjBiwdYgzq7sb2AmYv61Lm01/Ac8Tocs0Mfw32eRkvIZHRxj3a4XFLSdivcGGXf7Ys6+ySmk6jb7G32G25+zvfY1aIQttN6Jr9Yv3MH5SCpq2jxyJSV3OOLjb3nAx9Hdr1pB4NY09iJ9/XOn5v4YxNG7eI2s1zv64OOBjYc3FSjHOdFUq10PxFVdDpQN7pKJUT+ITOIUbvtC+N0grD0pDJzfb5uCasri/L7wpcpXQ8k3/Md5VwhLuq96brrIY7TkdYE0ADblwUOZxCLRvAhiD8UQMAqSzfB8w47n7hWopnGOpdEW2lOaYzLwGK3sYa878Jy6zJfja+vmJVDY01j/8gG1XIx95OtPKG8KhXk3yMzS1zmZD6mvPwt7Sy6vUvzrxawRIxsW5fG4JUqnXUO32jHKFWMa8yNTc89AzrhjDJVoX2zzJ0qpT+VvvWO4Z59iXvvbIZ1L9se6MJbI5ra2+t2uMooxLg3cSHTtK3H4Zr7Zrh9901dz5EvgOFml/Dovn99SUTqDUPvz+dMN2ZLnX8sklZejVOese2Yga6qXg9ul1Ill7Sq6PF63tvABLus9+DB7YY/HbeXyYWS+9l9AHhMvHt/L1MPGz8UiZfJn5efhWzL5M6+97O2cvEZeDbOHu5kTRY9iXsvEwaTPoSBl4mDbZ8CcsuE4cRb2HQZVKy3h52nHPBbDf5b5k4fHULvy0THzO9nNeW2ny79n7ofLezzGtKsSTg3JItvDSadnjrFjjE89lwdte9gXcrIdnaMo8eQdJPj0aHaXOj9L37od+C86i6gdX0uqieo+itkP7CcK2OzSjVQFskuhjIiU0kRKKDa0go0WrA46NneozP4FNTwn8vdqEMBqE2HxIhfR1E6bjPceH6GKKuZkn9QqbvVPoK1kCODZ0fhuXDFXrJzNjksugRe9cRaFeT+JFSunWzT3z8MgBfwTcRx+KjpGEnoWaWcRZcTYpq5n62+/V12+mW+M63ISXjfFt2vJUMhCzKA66z5ISDGZ6nBzKwjj5nfgrw0KuHPSZuSI29NmTKR1N8Ur6hSjsD31B3Pq0+ywFVHeYtL4eZwgDrAdGSCqpXq3dCbWZ61L//9O9PA37N4TS8wrsJP9KO3c7Js2HhplfKNJx++q5sZHtwqp8WqQ+0xdR2IA0Y9CWLW8qjv7sadteCdTp146Ats9jIeDXLixkQNgsjx+C0mni9Sr/XCnUwV4jYkY1cH1X/10eVH951VUX/GldVw/tmwk9U03rC//v8VI3gHiS7fYA+7+Zkc0ESdZxB/7HMj/vR8u1a7VYHdb2gKsKMFN1E/Zt3RchS/XvWPTgNwy+tpAgxYOn0v6Jp585YejJh1K5oMND7jvSJzNHNe9bdj2k8ZGgDZUoNrR0O6D5DD/qsm8L+Z4Yhfe3xF/LCCORJfzYfD8KoOdlpNBjUKjikG4Yzs20XcTr11ITKlVf21IcAu0uVfTbEz4b46ynH+dcTtga1r1KP1TNClZX6R0nl7gQKxRB81bVSZK0rfQWB6NVkl2RLBdxy/fBGDqDLGEZNW/LH8/kkUyFsVN1VaIZlt+i9ms6vD6QabwVXlxp9Kd0+7cdxQ9Tgi4WVqaKuOEop6foyoATiE1/Z564n32ueTKwa8Z9mTjylyhs4k4+2Hg0sIrKsFg+68EXcKIbz629Lchna3ZsbhlIn/3x9lZLrufecDs0af4ZbXzOftTX9Yz7qtM6F9PY939cQTaM572JwJcvXBJJRt9rY17ZUmgP7pEg2yzW0kMODtkETIumwTnTM0L5R3JgsP/9OorTJbA7n0mXa4+n0UruQRUalfA4FeA3DCEh3s/kCqV/jh9HHOU8BkYernib9j/+ZEHUS0ippBszGzn0p2MEkZ94XUvz12Vtho7+nLGOeEkhWM8+CxCfJIvugI2lMgC5kz06MyAe+rc079/rqEFMYm7FywNlkOGADYvUETYfozvAwi7JuN/yST4IkNm574e2qlGjzJaQHP17H2tFyJwuVvcvHD+fEVieHaUkcyDr9S7UE/3ry6ueeQlcYs2bocedj+IW9Pd941iZqXZs0LrNo4scLQiwMT8UB6p3P1d8OTukEj+LlE3tp56icvv6hGjqyfo+EiBChhaTc+ENlddhzLpBMp0fmhwF9VzA0fnEBBTFmNzw6/V2ZdqpqCm8a3Y830ji5Mfx6+k4od2S9D4srQQ3QN50ZkzF/h/QpqDEhRl9ubiIXmFpV2fjPyYhdOKnNY9zUMHKacmpzMmIXrqzN7ehNQmjFU175Ohh2EMd1QYzgIteRZGcDN5orxxgdUJBRpWPKZ1898K7ePMrMegEFU+OdqQqlK8fyQuKZpYEDs7gvpyp1ilSsCqFit6t6e0WZZyrzzGS+m1L+FeXDPvdePP76dXovvghhyoOFzrtxgYZUq6Ecx5m8iKeUAoDsqOg+m2fJtEBQnA4iGN4PRHcajuCd9Y26eKHZ/4i3lLvBDhcS99kT35QTpmXCWZfgqO6i29nyhOM1YVmhLqKxzIQR0t4MJf2d6r+oTG51/6MrwtaYvSE3JgI3eu9Tsg0hsFzI8udzoguGVgqqdKtsQjlnD7dCXdfKQL4cfdeatrOQ3VvI4OCccvSivDs77cG3Bc1p+nlRzFVcY9eHYEKrtq0OQZfClB7/MpIPNTIROYByuKSPDpXFpyjuhUAdlH1DRPdqc3PZSbFhvxy1nBG4mNC/U5rtZz89e/tMqIpnyyteq16rRhuhVSDqBB+u+0n/JuVA1O/PL5UDkOtx3rPWgiNNq3pSd+MfisrxB5zS2udWRzhnrwgr9KM3oCkQTlkP6N9vJxZoGIGJ78s8VFQ14C/LIAAlShoCjXSqijp3/1DYrej+CFnvin1We3ZayST6bX/V0++4eYqRPwbgdXIaCaEDq9dDATKCClxCFVDmA7LQUCjvlA0Idp+ZeHJOaDtR55xtBbXv3iV55vE1Bo89QnJ+6HMPowcZvEB4L7knm/P17JMsZG7f1HwwmFWOX7cc6ee6HM4kP+flxX5nSX1V6PYh3cyc5zvdUcfgRJ+I2BBB59mbN2r/hpLvFnRgJYt6wHm+rRU5UXC8XToIV02Mh9QytjUsIj8klwv1RtBJQrlsvjxV0oJknslKNaO6rD8obHrEc/X1Kwv40iNbSoCJhyFIHCCXBjxP/igezzvYi8P0cpISB+fGmiQGd1wbtm+DVePOdKQXimJOm+Zjb0IVdIysS3SdOUFon64Y1VLhPqLrmYXfU2j34nRRlRYzdcOgr/eTDLoNFia/plPg7cRdKuZDucyDZzsHme03/R3BWO5lKT88lVlsp/UlUsP220cmnWbLTZD7FrXbwfPIkThKpjSWPFZshpLRO3vCWyMPaO1dgSPxG/aEfvw5cuc0gV/LBL4o7/XdfWN33zkk2rEno52TxUJYQYJwZrG4LkgCkoFeXvIQaDzXqlL8MkdJMs6DAjZcBMvXChkkFTlGviqN64DiVAU10SENk26nzUF133FQfaVbQiXLLbeCWZHkk/Hl56A09zc/au6tdWwSHgwqdvxXh6OkK1b2jW3NUPiWvSxDf5A8WC+OCs0RLu0VHCittn+zesKLEah77IfJZU579u+cRN7dFjUwJNmB4Abr2Mjp6vzhXW7XWQtjnB7Twc7d9QDeqc8Wp+Dp+K37bTDb6fRznXjrznHBb+4UENPpkDVp9yfZogA1pL1y5U4tiiFhnZ6+fPHyGaI/exZ+61Z9BRO1RoPB4nxBIOLFewi5iYJS94lPI5qjKlhMzJV4vCj9roO0qvCHH4s0mIIyH4J1q1t0bvEE4xjG6JtbCKmHwg2UXL8/hWrgrr/4rW4dCj4Lt4Rp8T43icr9XWjiu+mH2wcLp5d3xAF1erNl9cbbD4Mch7W621BL1AHPr3D6/nNanDWyEBT6PklQLv05hMnnY8oqe4iwY+1cN9NPGBi5JyB4vASRGImbrlFex4t+o1R5cmYhsTDFxwDb9E2R0M6SeW8yBnjcKDWkPEMdoKpuUwyjrE4gOLIez5+cjxPy/KRd7uuHbGblGkUhkgH/omo3OhqGw3K7Fy3pXmR1T9cFTVN8R95uVUA0WxafUZtLxDonliJtdlym7BrJ7vdR6jY9EurRMLVsjHr/pHiUHcOgZFXeNiVBxabkJQck0EVFzveg+u6gS87WNgsRo5xEdnPblTCoS6b0Z3jq9HHb7mPao4rniA3fEb2z/1TRDOrhE4zEeHsnrBWgTYA4K/W0SzZCs/ci98rdPSOn3OLTQrXuL+hurpAeOcu4dZ4eDwbU09qC2hElSJxrYUQT2UpfjVEWty6CvrssXwWZx0v6EQnBT1Q5qXGYPCPU9k8El4EMaBk14zrGqMM+uaw61L0PfxL6UwqF6TvvLSY/gas/Tuj6QCvCAmh/7lEHvcmUyowRfeC5gQVTSQxJByVkMQvHEvwLrdmsXpHi40m7IAHRPDz4AHoARYMop6XlV+5y/0c5bdi8uWHdrRlGuQe3ExWJ+MPhMZ+828/G2QTSslFw9p/n04P7H1gkGdsw4BugOFN0BQDov7J3mMCxCZyIGSbx1Bhg+F1Wdd8MjHLNaKAwT89nkXtVwl2tIu2/v79aULFicc6ESkferJ57xFuh7BeqhP9NCc6tEHWc65AMitjFTnFAW1vHirPyWoTdAQgH5MpWmadoMk8+z512f0TqB9JhcZNfIpl0Lei6iIzIaT0Y6Hqk/kkQTq6uT5rf9fyyYll9oRUzT34qNqjNMGaXZKaYHPAqNGAabzQsH8qikJL6SDP16ofqx5fJ7Er7wnJfBjnHOK/4Ho8rH5OLIkhUtdX7SeQYj/ATr2qafMBlF68y1ubMCuEJYGCeG4vyuXEHz43aRDY35zRmpBxpriKyZGWueo1MYvZwneMRTVuD4GTVzwHc88kYrnZx2j9FCDMFiwlRShi9pxrHw1ARhSyh2eJls9ZbqmUmEYSoXGeoekzAEb0N+YafZB9E18F9B7b8wQ/wKo+Fia/Gx6xJQrOla5RGWPiR4pgGdGNXzAFlrHjdeXxZzBbl2w70rJY84khvoBC0UnvWQewSFqujDcpRi8OKUaEIuWernm/0hQX+oyPuBrAumpDNJn1+3P40+nCe58X4UNFs99IEZs/Ffpmu/QJhI3JAb4WI+DErGo8RUc4VHm6O0/k0El3/24PZZ7TnfdOHlxHnseCKBggP8boDQuq0x1ZVzisG/axNND9epCueSnIzafA+j7eNIQK08RMPdpmtwEoYnswKVTm2rNqxbwvCQewUS22XqQ89KY4UrAFhFcERTdjtImZalMJohOiq5quqOp/Oq6paiQ55uR9VeoeHWyTIpGubnQaIkgocHkxHhhDojkxjsZ6GpQqoLKiJBE1U9RBKOS2gcd73aM38vnNrapWretBa+YHGGhQF+4lDfvoyqXxtbQ9FdVQ1MPVLQ8vNQnBrm+Fq6RbGe07p/2pGWZiEyft6wSNhnZSNGsrTzZACfSi48eA5q3K/xKNedlSZMkSS3aA2hRwr5ZrtbboR27v/xt5Ozl71xj2E7lw+3FNj/J3jO95L1blnjpXSU3vZl5QE2HF5fGW+syv6pV5teRGzj0UHbA7uroRLesQXPqeB/VuRzMAobIuuzaCo/JfElH6gzEFLvupgGLrNAMJt5kewVmhj5GuD+apO2JLP/lCRr/QtqsNUywCy5jlbneOvmees86AOf/lU1nnLH2WdrXyJlCoih9yglxlYKdLFuFAYWAAD9VvOOE5I0afkACNqJVZJ78anOCfo0lCp6iHdYR3HcCJP3XCLDFYXeVkrMlxV5MZeNsO6lCuX63v7ttCv5kuhhXCQIJ9kZRYiu3n4HRgiccVZiex469JY1TFpYYlowEPZivhCyHZsz1Zge7YC2zML2+VGO7pny9A9a6B7vy/kimmVbdPar3uQ3uNY45g3BS1kSWKOHox2pE2sXsElNuR9CdhGrqUMMV7R4WauocPLem3Lfkq1wf5B28ppGOWVzruC/joZvrkSLvzIgu+wOjwVS1tj2TpzVAo3hyhS57IZpQHjyCTbhinztUYni7UGRbVZFxwiQyAR2wOJbS8LJBSUIAt89gFtI2IORPz17XG1IRjjfTD+TeGAqE6girf+fOwHjfB+AGdP+EGqU6ALsUOxLgJG5BHEcpdSGLJt5F4bdER0MV9d8fQtfg3o14/4MaQfRPrHoF8te1Am8XKGOmF2mqhtxHsRhk3mnf7ZpyJ7WSw+TPJ/XF1Wsec0hWSBsfDzzqEUBkuFTNaKg4cCTBfcgOQmtRewK4ZRoCxdWP2JLE7P33/GYxEDBecc0CkJ3l8jWFyAZcJbPN77G6b/t2lewlbM5z/j1l1xmbVRJ9FO6i1Wj0h4UnFV8dZ3uAxgzpzLAK1LyY+ghW+/ABTuBQAteI7VeNxQxfczv2sjDmQAnqXjd/pbIA8v12L5ivGtlf/5Ul3eRkmv+rhpBAVz6LKfEb89jy0TR86AF4FtemI7GyvxBYQVHiU6h/0OayC/JRc8aizdWsInQzewvVzRk1uzyhsTBZSOGMrDG4NVbBR//J4y1W1MyDZ2TXBawFRnJP5WFFP9EZYCiMjZ8sgkjHDmRCY+rUA/6J70n7m0fWVq8yl+MFtF8NvvhFQZ7oQuebG6kM3Op4vfZ9fjE/XLF5eAYWAtiI/GJLy5HgdcGLdoT4Xg2mhrWZoCDAStM0vjhvGVhW6Dfv8vQZJlxXQR964Khj+079redvQeMsZ9OACrpkQoG2+Vod5h9UfWzDyy6mYmuhVkU6bnKbV69HR3ebN89XAG45LMMSpxHz6MiQnRgRsli3acD5CeV4+rh1EbjbccbUL9KxluGyiMsnI2uQD01EAanSIzum8NPxSfOsmCVBirImGIClJg3vyoo4emvCycX+ZPVHLH5IcaE9BTLSmEpVRLKQ90XzXGyQx1pMuqL57P2IUYGQhUTavCqfQS5in57rQKepbgGtyEUZHM4mb6uwSPxt623mW9T8pKBq9IG3yEp3gRJqzP6J8o5fxYw7kqKGmPfs7DDH+gywEkNr/NcrrfYeTtXpzSTlFXH87uhCaWjLWZIxXsgcvoSdd35iT+wtwpDEf/KEYD+XtGZOr8/XmGKvF9Rdt/JH4r0hMS64sbSe+bDm5Z7cTVml9PGzgl4QzCgj6yi/Y01xnrv9LOM8Qxxo9GLm25RTE1bfNk8FhPkF+DPWatXgOe8acDNMdZCxtn14TXoX90oqnArHqalcZfz9XK9vcHV1SrMWzOv3eG+7J/UOvCAuHFlHJmJ4Sb1UZ2be75ILa1nd0havdg1qPmi5+fvxoFHi2HfdqRLujJr8fHz05OvNCPGtCkLfvqjRf2Ads6DB9IFcM1bfYWft4bUzRwh89n1uZm3ULZXUVU5CbxRPVl+9JoW0zvjjfFjLtDf65LeTyprJxb5C9YpVrabRUz0EXqYUE8rb2B62j1Ex1Zph/cfin5wAH3j5c//UjMuzZYj1JzyJXsgnnyPMDqKNaYvFDCt43+aj+4St92OGbMuZXQuQW6oI8EYOayuYoNoPQfEksLg7lWI1LBMOwh2Qr71kWAjlmzS7lVEaIC1q+HhYAUnM250L3hx1+ajGKcO3rZ9cMLm8qzgKlyT80ZWErYwJSBck1rDC/koMz4g8o+A3jps92DiJhetwi3vKoM2neG4pt6ZzzOkqVag0vA8QqBOSdqigP00R5cHWXa0vbxotMvma6s2+GrClhCNc2/CzxPmWAcJH8hi9bpRB1FUUoU/mwGs6xtDtPxQ5Zl9iOtflId0WNqdEV81Pl4NFS62Xl6qV+ceQzvCVA11xHqOUyEQU6qJWdJigvT7Bpv8UhQFL8sZKV1lCmghH5qqGEJJVxIpDhwrO5KLaYIhZrT+QcjyFDmMAfO2dIO8oYfGr3cwqwQqAgNnHnhLmGBTg3gjJRAg+wKbRqx+FcRolVkCboLbqi+gBEp70I3CN+ldwRkhNWg6DCjdciMg4WogfVeFIHA3KXn7uAMN8zyDm8duPfSaMBDvUwWH3qzhJSorjpIYmYq9XBBpfnjUlrbzKweQBwOqrnfnVlP3UuT557EAgnRbRkgrwJfoNy6n33isqwOrZKOOBzNxFjLc2AasHOAKhgoYBKjdD1A5q2cjPqEyM0TpPEXA/eETJcO1KjO6gw6Vezrlwcn+toIReZtDPMp9NoEkYIffrj35KdXx3+798MP/z779/EPtNxKY0N9YHboM2dk5TTsIZWGHzrNrcOKQq+eunJmsPV7F3/RGxNEC2j+74/fOI0XbuNjT+Nju3FcZlUafnCaiMa90mZAK8v8UCYAuMrmEqwOPGb+fl5S1Av0v0xV1fBvEm9fdAVq0pnvLk5N2xVYlW8m6uS3x6+Dv/zlL2qY9DcgcuCAiBt3WpxS/z+U6CPNM+1YE2CVf00i/0U18eAdseWkbqPvKG8n/zqfjJ+4VOPLja23azc1FsZ0LoXGsIZAsswrjfvEWLPC0YEBiqnoMLYl8Nk7SNstlnUQnsYQu4c3fCNDR7jX9HWOk2RO7Q5NldY0ol9l87Ui5nW4loyu2f0fU2vyAv/UnAAkIQYytQcinYGgy/i3fwqngPhbjbFCKCrhjrYvH5Ie60V9Eh7qSZDkdiAcjVvniPbAOVR4yQ0h/WvwNL6AsBJZckPfTtUHTyhusWPMLhCJpnKHdilfoTUs/8a854DNjOqhYku5ByTI7eQslRVB4IqPvKea9VDIZyDnGhx19XFtLQ4vbQvB+2Qu77O5Cf6s5HYyuuG1EUY+Etw2y9tUSjrly4qCKrUWZTdC1Rwo7uhpenms/tLkZgv246mmbikchM919c5aAT4xSFkOTnogj35ZjK/prGhKu1deiyJWo34Ph14JBGHQXH6Rw38L0IHv6Fqd+ZOeY1w3l1aMku5lNKyf/VFlkMtqMGvMXbysUQqUttc/dLUFMJWdcHvldIca0StAHM8KeOlAw2iNXi+rIFqNCRueITki7yYzzejhck+ta6xuBnRJSzI4lBX9Hp7Ce9Abf0tc4Zzc8PWK9++pN6SFRaifxwIqWQ0YVtdIapeu+wpjhEKlhsTE4eu/ocuDXl8sqZuojbd2T91c8zuRTuCBEmqr4jQW8wnkT7j4pJd0Y2Lhk7exyyL5o9WGGIfqhPRuEYhPIT6ZsOjjtIxtX/CjB+zZX+OSRmIA2OT9Q/LffwODDvO95Hw87yThbUYxVhrENy19n0zbuu1dhJIDrWHB2TIsCGVRKSI1SQSbpRyZucDbAW+UH4nfvsQihqOOS5AM0aeTNFl623GbOg1lUr/6IImvPi4s2qx6XcuTiU+WnfukUYp/yAo6PAc0D4dErort7dCViIhYUU4azOZm2/UrCeUdr18bAxpLe8cQGXxV5UUoa2Rc2mTcwS4fLW1/kPXNY3q6/KaZNs4UqpydAWSG7WPOh9Se9iSOJb5ZlKYMKMAQoXOpyZxLTWYuNVrZ4wKymTLRuYtcQHPevot4wMAIW3XiYmNKTsYXxeepijm/pY+ksfJiN39FBvsd7S7JWDe6lRBJa9QbjmOh3whZVrJl94gnY6t6PvyHGt/v6voSqN9uAZWEEup+1HheJE1i1RZMnOFfuNEbPZ/iYI5FvHWfmi2WAqq+EU/1ESdWMZEzXkin7/NwTNNcM5/tzrqdWVxf5SNqTaMaO9iCcKde3bvZKaQ8XB8NW9V+n8uR3GfXs84Yvi8KL+RtxptoTOHF/2sXLIz2/H2lnH1/TsO/Q9nhjXV7vLpXOYyuF7ixNcAq6V+tuS0BAwkXXnmksCG1gG6BsMTGei6lllVbTBj2/PibxzmErNeX3kEZSauACfa2+r2NsiMcv5Gx8u9Td0qzFxa1WkjN5/ZoQAwHsx4/9Pv9prCWXCsuiqbxTLkTqs1BSkOhudN6dwUWGtemWobjzQxrHuhoZbjws+3h4cFlkhaXjrcPBUQPefUJ+kQztFEo7cFpV2DSvXtqqvaUrvY+NSGABpR0fUl76uamIQfMWNCXyOaRA1FfLtPlBxOg/NyPpfPZem5mcrD81GRL1ZUXMUd3tAkNqR51JnFPKxa4cBqjbFK+ZjPKJu7rNiTjzlFXy5+HLEpyFi1Xa1aUweo2N2ulmDUp9Fs3dWS/2RGm/bXaUbk5zcYeW/2LuhrJReOFLW2OMV1MkobmR7RRlz5TZR61k7GldsLjqVfvGwNnuSoCzjWtwURrw8/oHjQZYO0JFh/5WvGptPu0UNet3khWhGjITRzUMXCp9ThkrvKQBvsfh8iebdv489mdfvI8FoluZwXeH4kkScRIZFmGV5LVT0vNVyP3mUl/+16L0GkLrkxrwvI1zYXlNAf2z3ix4quWBYRP/5uWlwTwCbehXrkS7OXE93rlErfSSLMEZtW3H/yEcChLeNgb4rULD2DWa5fYEiqLib7HEw4fAymeKwyXpfvnLKi/n46tKl11t+FykB3j4Kj2z0v54Jby2e0Fspj6JO5LbAihmQu2ptyyNJ/+TlDXc3rsKy4vNa7GffU1h9wBX012VN+4Z0l+fj23UFsZwD6kEQhbUL6qk4X/GHCpUbSxG6+AY56tf7C6NkdBXvwL/g+a8+s10Fmrv/N3awCdguv8jo0eCSbxSnsI+jDrT0Xp7HIkfubgObwxYE9fsrzL6zNcsGJLFbbEQ3CAjD8oTmL85MiS19i8X/Jw0E8e8h0EdUwPVzTHe2EDzO2dWqCTHu5xb/Qg0WvXSRUc8ZacMsBcU+0bIYy26Ja1l4Wh+APsCz5CzsgltzhU6ifBZ7haMOojn9VBEGwGoI9TKqU1SiqfVVC9Dubn1avr+VyXVtCTT70DdlMHNShXyiKx7xuutx7SipghhEuP019OOqI6P8Mez+pP1CGDi8esU/ojVXyJylVpdR7ulNPOskS4DNeFuHfklcP/Ou5CuOc/SJ7/vcSvZNL7XR1h2tT/B/xfUAaXVSAB0vTL47IqrEfJ2utw2+wt43BRGwcx1K9t+lnU+A7KwjXpp1uF4mCtatbY/WFUzYyCGwXLj55qwtxVD37/fRGUj+50kFqTddMys8WYWOwNa23IuP8WK4Py1rq4/eFVuvE/GLOPkWVIHNVx0s0ur1FpHNdU68IvSzdHtlJ12Nl2yS22XeLddhZv7lG96KzWPvm5+NjU0uc6XC19FTePaFlGPOZMES8G1hoiR74HBbce6s1dFPgir6pktPIqat6Dayt4C/Ukprrla7sytm5RUhDCpzVtzYgn90tKNVy4adFK3XvdWw3kV+6X9r3S8VvLS3bMhU2k5xTxgtumCx1iTUlrsN6J+ZEZ+EpD9ho50NCdFjkB0O24qfy4uVkXf5N1kHcSHL6OO+nXJKdZGmK6Oi3VhPK2WuyhRIPL9M+R79VB38AvF8RVREdyqzI6Mv0K6ZzjKKUvq6k+Y/YzJmxlXMTE9mmQvs1NDw5H/FLRAEWCV0neateD/l/Wrg7a2hbto5n87mPoeDrYWBG03HFc5gOiqUvf3EZd3NxwflqnlaqT4sCUu0aZUY2JKtEvRGGlpNOo0ZZ3ydGqo4S7uckD1em4eduMSNqr1I3cB8rff4enQn3vznEDn09oNUNbW4pamahoniKOcamZvLcrfActqtMjKPaq6y8++aIbxI04oHR9bxSVQ+0TWYQjfy1ORA09JwtdY7O+sKzuxiVlUG3NYjP/Mvh5Yo7HqJpApWziLNk7VoUvTkkArX8CqBuz4ULvfErMlcV95YUh4AStkiSAoGKy17d9ptedo2/s9anrJIRopbiZtS8a82BcITUX68jVj8I7ddo80eHIXjPu6VJ7QKCbMqubfzh/v6DYvEedJvPBNTFHKCQHwNU2gdAHAtGuxO8nZdOlul9TdmFkfeptYlYoqQs0BYm0Xwb3Ee8Fk9ZaoZArNQy9By6CJTeHhwZc5sqdwjYDSECAH28MT4uhCN8WpaFUcOhG7PC00ml7sE7j2qJ/qWwCR37OwjQ7gnh6LWYEbtUcK7ylFjH8MWpydzeWvl7ki6eAxp3pKztgMcnX81RxpWAUSJrSaWrrDB9xqXhXZjt9/Xsga6u7K8Wx8kutHJSo6nrp+ViJZrDWtXZeXThr1MjFZtLWqXMkUlXx46uFAeCmqr5VPSN6gcpyjhtXDcsdMYxXTN6qO8GeFAhG4R2TUxMG5W+GMx3nKoM9My7Hs7FrdbvK6Fa1UbZwa5tbFAduWDPh7InNTdNH+lVHMGs1lN/TolyoEPovZrJsFa5md7HM3gV+WqDKxmtPeORbXMfMkBcLs2VZGU5oFiez2TVRh7mzjL2gileB1XJtEL2NwcXl4JG8Vw43QsIDWX5jKctco4MIq72+uhYwDvSdxx0NTMOkbubzsB/HnXoihBLvL+mZYnNA77ZptxuVEFiVNwwFdpgUraBGk8ZGDm7E8xgPOCT2OasVT4yUnBZ98I2ycQjDI/fB6VDLGknCyX9cf6XDdi+PXt+WRvKODwLE25I9OKqF56FarsMDcgF8bWS6yk2JIlE8q1uHSOEy9BRNksKkcuhvPFEeHtCBMBmfHdai0rkUIaDjcQ6sEd1yYa6Sf05mf+d0YlLsnPOxlXNwX7fQM41T2w4SmJU/Enqh2ZQlLYJMr3hPjNy88WTh5peeJjUY2K86lpXycRkYVALYMlTTjKMRn7vy111bqtyO8YYD9yA9v+hgHXw1q+VR1X9nPL4j4jbwX8gNfqO9NUJvaYw2vDjvV/2Ot9WG1waaMfvv+quG26G0+uS0B/LAc6+bC0x7vOrBD2YziG6Hcgahjb1sbsXlg3NCMAs4MTh8JP4OokzoajBIhFX28EhI8IjJFXUbQMJuQffftUwp7zLlC5uVBL3NcVzoZzXriKGpeUEIVvRItnF9WZwjfCeK4ceQrD7WBmWHfOP4NgXCaIN1UCqQzc2H9MlQpZqEaxPB/pRjisy2cxhfhBzc8h2dKztDufvw9N3F9uBUTivR2Ni2MZEzWqxQXrmVDrozmMnYkMPuTNJ/3Stk0M37x8cDIfFnuLfPP3Ye7gpurauuc2P+M72p+e5t4Lbeqk2Uc3Gckc4EZd8yO1v7Rf7Wzb3rPuAOq890QkKNK6RUWlYWHVi1e0E1HL0zPOoV/E64nDJqtMb8bSyFJBjmJGzT/8bJ5+fk88GO4oaMvk88kJQ011utTO3XWfsdFoqb/Q/O19ci2N/lnXKY4C+4Z7/IizHkjNCLI/s0JgFxo6dK9tzteHp7NKScKKXP6/HFMVw2x336ZAbnCb3wVmmscoufFXGA3Lx+5LBUJ/XfI1zu0OGm0vagfJQnq3uUlzuw7lb1M7951WIz1x9Vu0I+kG5PJo11sPPQT+i+HWnxtmlt1PH2K67uWG6/4rLD688Uz7DXbMNo5TK+xJk0CeYEi7cH0pnQBjo3eAe3TsM9O1h/28LD5ubgxSh3R7eDQ9FaFK7Qvyg6z73uLu/IHfcI1NNRf716o+/otiIH6y+q2UzsXtwnWamvbdRY24QjR/vYP1tQeVoelrJYDYuPPMoH+6A0em9pnccytQyWd68f8fVU57CdY4e9RFDaGQI/nmeoBT6eB2VGdj2nM8NK53NdH+fhlzz28K5DpffE0wAx13n+6Xeqi2rJlgRL23ci6JXdVcv8ISGiFdZiSA0OcXhbmuw7B37qowP/uqWHh3zml+Xd7J1D5gTKbLinz21VeXV3+pE61oiW5p8RI/dzJ2S4akJgXXE99c6H1YXOj8/+Edp9YP3j2/Rk5xt6YpmP7Aysbv3cCHlH53sDr/IWdNNOA8arN4PxUevnKHPFURq202Ypc7CURRtLeaFYyo1Znae8aPKUF5L+687Ug66N7pVD6lrOsMwpajk7Zc74xjfXrN/r37j9kE7agS6e7Qz515rz51q31k6Cff9JANbY0DmVmLjHg2llctGQzTnZts8+Ixe0aJvrZDiJuyqqV4a/tIA5tIlzzw0loRjUyCaKlSiKlR2xzLAHlaxjvaadljULu+XTsnftALG6up3ac3bYbckfwfvxUbl8o3L5ohWHpr2W9bPn1KDfDR+Qa1flHp1WjWsdnu7Vfj2WyD3KxGB7IGTzIBv4EBzr7z3fXJ6qidKWEAFC0jp2V3cBC4+XDHRSXgBakRdImwJ5U/oL5E3Q+cSDvNkp+3mFgZxC3vR/MvImLcgr2TVDydrEGX1gviDDzXW1xP3Sb8xX2zzQjEXs4KUVYgAI7UPkFlumfOZevwi/hzv94Bwo2iSzgjiF1Tukga3ro06iUSf1z0Vyele2jvEs4Y78H8Xa/b+Ns9v4n8ja+Xm4NpavnbchZGxlb+BMh+OwEbHh+vljyIgM9RdLyQXQmS9ubq4C5HYBQDJU9JErzHQfTAuoVJYtuPGofCPQe7iFKtMWXkmWNU2sYjz0D5YT5c1Nvlwrx8AwqMbHzlB97KiPXbA+ytsLn1iX0w9JWixi0R8Md3b39h88fPT4yfHTZ8//+uOLf/3bTy9/fvX6lzcnb3/9+2//+Lf/LSJnwDqk/TGGTOJtYxLGLFtfJiSCSsqAo9DJx/ynNgOdmLCDTmfeZX/Z2T91hQhq+ZNF8Ua5O3h9nndMY8aEjFp7cJip6HokXXTq0z4SdvbDU9Ne2vWPAGva3ux03mhWDfPhYaLG96XEOQDklLNzSDdzjHxJl6i7mbc7tFBu9ESLb5Lm4zn1t/xgbbV5+f02ObOUxlyup4ySJscuS0bHsV15nEe16ulUtRqIxwZBrU2Ij2RzYL528DVUXw92+Cdn7CFjN4QbH0R825WZNl6IB9FwX68nQLk5+EfKjFNLkybpU3l/BfIfoZqHsghH+LEnHYVHLpBdTuaWkpwzkUlcn8o8tifTncIw6iSbD8kRCj1Uw68pzWluo5D2y0tU6qTsLXY16Xx34Gtkkv0G2tsJt8mpanh/2BXTT6J6OCfaMdwJe2ROT83+qEj7doe29nvShyHhV1GMjwbD/dHeDjsfoUaG+2FPMxtsHbEzrPJ2PXmUvjMIe3xu+NpLGy3uj/ohdxSjelrML0T4TtDZoO0txWmcbad+CHXUEIDdkJqCeis7Q9MKqwXvPXDAaQBtVTdgiQezKu6oEVOZ0vL8MxUSbHxOqBR3MhrzL7pudzJohaTbrHlcoSp4xL58fm0pQcJRSx+oh5PLS9HehOgvr184joQqXRG+dfF+yBr3eZnKgVWMHfuuLuXQSii8QVMO6iiGsJg3SiGMezrjCUqFYP08N8qSRQxZpZXWQ7SYvyrSe0lMLVTG5qU/4d6PkzmHVaBaKep/Mp1qhYSR/itzraqGtER+IHgVdvz2LVwisgUCXYw4NpC8XmTq03JqtZggrI8OfiHP55MmwIuTVwbgRv6YzPKPyYz88eAyOplhM4571DF69CNe7ez6PFf6sJ0GYO/4xcvfj/mMmJ2oAq9Jv5zWuOr668tkQfTz6q+/vnjqenuDhmnRVVN94Yki1hF9+ufCjR8W9ubq5r89tIA2FBBPiBfgogwetgyAgyW5INGYbi1x3tTyq2krjo1KoB3c+P6/j++fSe0xM5QpfHT0/klIKZjfQZgaZfegAo7GCBEzEq/+JuRufzASj68XH2iadWDwQAEi6+FIwGfZ5Hph0vYB/tvJy8c/B2QRP6cuVTnDkaj0rJTbpeDHt29fB2Z9An6dAugOQItPU3WxZKiCnu5KUMDsNmGmNPAK5sZWCZ/NwH1WRkysCK8NFb5+NfYIcC/EbAW9BdAkKLXmR6zcXDvepC7cQ/SeHlxlkxc1Ndj40aNHsor1hIA2yPvlmph0WlTKVQq3u9KddbqdHzVSRkJ9QtaShvJsoqwFJE6ssMf2pn1JVJ1ClZNvLSCMYeK48xYZOpucP6c3oSVPNFR7pu64jooyeU5EcKydPuHiLKsioCdhWKbGCXiOnYG5PA8fqTuA07rfDcfXr9QYpetCKM4VMbO0Lwf90lH3AF9D87VDH33zMRzg6zC1olSA9ewb3pNAxJToqExUCeZAcVycTSg1jHIVTVHUHSHQuYECR+KHJM2SYgBNlNXAMH1VkDdWABJiHDXH48zLlGQkc/iEA13lKeLe50r58dc3L0DUJmOWzbnB4XCRIZbj0aPhCP/uyKJK2lVJe9HgIKnU5nM7WOTgFO+BdnZhZw9PS1z6glNilECmosJZ5XJGUunZqLCjCOb5T+djvb+4mDhI/O4n2EA4vbScQMC1EQyUNwkzruYRrAO6ArpKotEE6Qvl50hILg0qa5RPjuxejNKqqC3f/JL2prMCH0+L98n1JZnK1lM60CaANc1rMlFOzhIO3d1IIjBNKwZmRbmbr9TxanrHyFb6AcyU2rL2BNIRfONWzsqh3R9nlnjuFyw51dfJQ2canrKc97u1k1eS44G/UePLShNRtY8flgHtQzMNkXW/BYICI+VY7cmxEjToxyX3pjsOo/3dgwsitIPDi6MsHowe7eOTbt30ndD37gN87z2kz5w+i3hgLn/ww9VNSE5RWEtwhYh7VV81qG2pkqowdOQ5gb6aMe06tirxMYIYG5vAHutb9DimX1dALbKTemPaOTFofxdSINQX6NqI0KXsahXJv1Pumz9RldH1UmDUGoWvP8P/og5Vndhwe/FsTJEzXILiql8OUJQphRs1PavGA05O1WbTVnvSFXKe6wAMhBjvzk/Z8bjVh3OJ5OpsTaq47LZdUZmYNns8wdyM4yF3uZMepUapUc2tvQRltHh37JBY+tyvbKkZ2KqTUkf7Dtpj3iaGTDzu3oqyenfWrhFYP11Wu3LLOWP4dGFa0xVUrc3sGued9wkJH8MIffKMlDqFG7NbRln/HQkQOkun1J6Ul5NZbSdurT7BIEK+ooKfPn0alN0Ft2EShdSdtRKHQsIFUni4+cOn4d6T40i1jePO+HAygLp5LZpQnuYOlXHUh9nhljXpKA/Mu0XPfb0d+no7cHs7jIKfiDyWisTUj4rLK0p7cz6b5o7gE7aVCZ8LcJjLEEYGmh8UShqYVFlQ20165oGJZEjaTyofXOV2zJwOmBiSvHuaIVYQxMMKNBmXHH+AHFMnTgq3WrpRms1SCjGtSnM8osdxUlWWO5VZi1VeY63DyQkdJR+GXTthV+67CaSW4Sb0Jd8hncRBXw6GLtxDYpM9gLtyUGthMJSDXQ/kvhx6KqA0Z7J+nV3SQ5sjEJa8+nQkkHD3Yw/SA0D3PtA21Zdcb1YZEOtI4NZtOOBN5oCjvGRgFfKkHJmgLBSLELanKiYBcpwpS8PTuJaYdgcSSYaxsXCsWj9HOmkWkDtPLZPcRGUdNVJGJW9mfmjubHOzLadHW5T+qOKKW1kH8GglkNOZs8Lkz598JjkuByVOiaURIfH8dqHGJLDszz8LnHfUTLr7PHD5dSZCN74W1G2ngktVCO/EWbXO7C3P42PfsWryPTUOHQeiLHslmm/5ROU3uUzrl5cvrswKuf6aNryd/HnyFpW5/MV366tYr2u6Z64bZKtHCKStLmXlVeHrV/dbPd3tPjyogdFF4cFhLe0Glvtwg0EC74P7OkLq/x/APlbrM0kLAA=="; + // MeshCommander Local v0.7.5 + var _IntelAmtLocalWebApp_etag = "sZYrcB+0EySowLMWWQRf"; + var _IntelAmtLocalWebApp = "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"; if (settings.localport == null) { settings.localport = 3000; } @@ -968,9 +968,9 @@ function startLms(func, lmscommander) } function startMeshCommanderLms() { - // MeshCommander LMS v0.7.4 - var _IntelAmtWebApp_etag = "W7PrsMdzMZVycLmuKL5r"; - var _IntelAmtWebApp = "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"; + // MeshCommander LMS v0.7.5 + var _IntelAmtWebApp_etag = "C2ZfnIbUEl7w4c1S1Xbd"; + var _IntelAmtWebApp = "77u/PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBzdHlsZT0iaGVpZ2h0OjEwMCUiPg0KPGhlYWQ+DQogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4gDQogICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+DQogICAgPG1ldGEgbmFtZT0iZm9ybWF0LWRldGVjdGlvbiIgY29udGVudD0idGVsZXBob25lPW5vIj4NCiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvPSI+IDwhLS0gU3RvcCBmYXZpY29uLmljbyBmcm9tIGxvYWRpbmcgLS0+DQogICAgPHN0eWxlPmJvZHkgew0KICAgIGhlaWdodDogMTAwJTsNCiAgICBtYXgtaGVpZ2h0OiAxMDAlOw0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiA5cHQ7DQogICAgY29sb3I6IGJsYWNrOw0KICAgIGJhY2tncm91bmQ6IHdoaXRlOw0KICAgIG1hcmdpbi10b3A6IDA7DQogICAgbWFyZ2luLWxlZnQ6IDA7DQogICAgbWFyZ2luLXJpZ2h0OiAwOw0KICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsNCiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOw0KICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsNCiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOw0KICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsNCiAgICB1c2VyLXNlbGVjdDogbm9uZTsNCn0NCg0KbGkgew0KICAgIG1hcmdpbjogMDsNCiAgICBwYWRkaW5nOiAwOw0KfQ0KDQpsYWJlbCB7DQogICAgZGlzcGxheTogYmxvY2s7DQogICAgY29sb3I6IHdpbmRvd3RleHQ7DQogICAgYmFja2dyb3VuZC1jb2xvcjogd2luZG93Ow0KICAgIG1hcmdpbjogMDsNCiAgICBwYWRkaW5nOiAwOw0KICAgIHdpZHRoOiAxMDAlOw0KfQ0KDQogICAgbGFiZWw6aG92ZXIgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoaWdobGlnaHQ7DQogICAgICAgIGNvbG9yOiBoaWdobGlnaHR0ZXh0Ow0KICAgIH0NCg0KYTp2aXNpdGVkIHsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgY29sb3I6ICMwNGY7DQp9DQoNCmE6bGluayB7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICAgIGNvbG9yOiAjMDRmOw0KfQ0KDQphOmhvdmVyIHsNCiAgICBjb2xvcjogIzU1NTsNCn0NCg0KaDEgew0KICAgIGZvbnQtc2l6ZTogMTFwdDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBjb2xvcjogYmxhY2s7DQogICAgbWFyZ2luLWxlZnQ6IDVweDsNCiAgICBtYXJnaW4tdG9wOiAxMHB4Ow0KICAgIG1hcmdpbi1ib3R0b206IDZweDsNCn0NCg0KaDIgew0KICAgIGZvbnQtc2l6ZTogOXB0Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGNvbG9yOiBibGFjazsNCiAgICBtYXJnaW4tbGVmdDogNnB4Ow0KICAgIG1hcmdpbi10b3A6IDZweDsNCiAgICBtYXJnaW4tYm90dG9tOiAwOw0KfQ0KDQpwIHsNCiAgICBtYXJnaW4tbGVmdDogNnB4Ow0KICAgIG1hcmdpbi10b3A6IDRweDsNCiAgICBtYXJnaW4tYm90dG9tOiAwOw0KICAgIG1hcmdpbi1yaWdodDogMnB4Ow0KfQ0KDQp0ZCB7DQogICAgZm9udC1zaXplOiA5cHQ7DQp9DQoNCnRoIHsNCiAgICBmb250LXNpemU6IDlwdDsNCn0NCg0KICAgIHRoOmhvdmVyIHsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICBiYWNrZ3JvdW5kOiAjYWFhOw0KICAgIH0NCg0KLmhlYWRlciB7DQogICAgcG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogMDsNCiAgICBsZWZ0OiAwOw0KICAgIHJpZ2h0OiAwOw0KICAgIGhlaWdodDogNjdweDsNCiAgICBiYWNrZ3JvdW5kOiAjMDM2Ow0KICAgIC8qIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2YTY5NjAgMCUsIzQyNDEzYyAxMDAlKTsgKi8NCn0NCg0KLnByb2dyZXNzYmFyIHsNCiAgICBwb3NpdGlvbjogZml4ZWQ7DQogICAgdG9wOiA2N3B4Ow0KICAgIGxlZnQ6IDA7DQogICAgcmlnaHQ6IDA7DQogICAgaGVpZ2h0OiAycHg7DQogICAgYmFja2dyb3VuZDogIzAzNjsNCn0NCg0KLmluIHsNCiAgICBtYXJnaW4tbGVmdDogNDBweDsNCn0NCg0KLmxvZyB7DQogICAgYmFja2dyb3VuZDogI2JiYmFiNTsNCn0NCg0KLmxvZzEgew0KICAgIGJhY2tncm91bmQ6ICNiYmJhYjU7DQp9DQoNCi5sb2cgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkgew0KICAgIGJhY2tncm91bmQ6ICNlOGVlZmU7DQp9DQoNCi5mdWxsY2VsbCB7DQogICAgcG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogNjlweDsNCiAgICByaWdodDogMDsNCiAgICBib3R0b206IDA7DQogICAgbGVmdDogMHB4Ow0KICAgIG92ZXJmbG93OiBoaWRkZW47DQp9DQoNCi5tYWluY2VsbCB7DQogICAgcG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogNjlweDsNCiAgICByaWdodDogMDsNCiAgICBib3R0b206IDA7DQogICAgbGVmdDogMTU2cHg7DQogICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICBwYWRkaW5nLWxlZnQ6IDJweDsNCiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOw0KfQ0KDQoubmF2YmFyIHsNCiAgICBwb3NpdGlvbjogZml4ZWQ7DQogICAgdG9wOiA2OXB4Ow0KICAgIGxlZnQ6IDA7DQogICAgYm90dG9tOiAwOw0KICAgIHdpZHRoOiAxNTZweDsNCiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjQjBDNkZDOw0KICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7DQogICAgYmFja2dyb3VuZDogIzAzNjsNCiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjYmZkMWZjIDAlLCNlOGVlZmUgMTAwJSk7DQp9DQoNCi5uYXYxIHsNCiAgICBwYWRkaW5nOiAxcHggMHB4IDFweCA4cHg7DQogICAgbWFyZ2luOiAwcHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgY29sb3I6IGJsYWNrOw0KICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQoubmF2MiB7DQogICAgbWFyZ2luLWxlZnQ6IDMycHg7DQogICAgbWFyZ2luLXRvcDogMDsNCiAgICBjb2xvcjogYmxhY2s7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQouciB7DQogICAgZm9udC1zaXplOiAxMXB0Ow0KfQ0KDQoucjAgew0KICAgIGJhY2tncm91bmQ6IHdoaXRlOw0KfQ0KDQoucjEgew0KICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBncmF5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi5yMiB7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLnIzIHsNCiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgZ3JheTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQogICAgLnIzOmhvdmVyIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzgzODI3YjsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIH0NCg0KLnNwcmVhZCB7DQogICAgaGVpZ2h0OiAxMDAlOw0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KfQ0KDQoudGltZXIgew0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYmNhZTE7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2FiY2FlMTsNCn0NCg0KLnRtIHsNCiAgICBmb250LXNpemU6IDdwdDsNCn0NCg0KLnRvcDEgew0KICAgIGZvbnQtc2l6ZTogMjBwdDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBjb2xvcjogI0M4QzhDODsNCiAgICBtYXJnaW4tdG9wOiA2cHg7DQogICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQp9DQoNCi50b3AyIHsNCiAgICBjb2xvcjogI0M4QzhDODsNCiAgICBtYXJnaW4tbGVmdDogMTBweDsNCn0NCg0KLndhcm4gew0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGNvbG9yOiAjYzAwMDAwOw0KfQ0KDQouaWNvbjEgew0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTVweDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFMTVBBTEMyeXg5RHIwbHkyV3VSOEZkdXVoUXlsb09XenpkZ3ltNkd5WnVxMS92NytxQ2hwY2pKMEplWG03ZTV2di8vL3lINUJBRUFBQThBTEFBQUFBQVFBQkFBQUFSeThNbEpxMTJPTWJlc2JFQXlqRU1DTkJWb2pJb3lDTWhKQVlZZ0RPMXd3TUMwSkxhZzRFQThHRG9QQnlLWWFCRUNVSUpEd2hnT0V3d0ZvZ0FOTUtqRFF3Q3JNSENoM3lSQ1BNNXVvOVBId3RBbEU4N0hDZUE1ZG5JSlBSTWdUekY3QlFRSktCUXFmQVFHTWg0WUdod2VsUllSQURzPSIpOw0KfQ0KDQouaWNvbjIgew0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTVweDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFKRURBUERWTWFtTUR3QUFBUC8vL3lINUJBRUFBQU1BTEFBQUFBQVFBQkFBQUFJeW5JK3BCckFhV25pb05XcWluYlFKY1QzYUp6MFdHU1lhZ0FKY3RhME9JbHNiZklMMlViZWxEUXhLQXNTaXNUakRJQW9BT3c9PSIpOw0KfQ0KDQouaWNvbjMgew0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTVweDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFLSUhBTEVjSGVYdDdhQ2hwY2pKMEplWG03ZTV2di8vLy8vLy95SDVCQUVBQUFjQUxBQUFBQUFRQUJBQUFBTmFlTHJjTG1XTUlwd2lwWkJOSUdsWUI0ekFwakZhWUJBallRVFk0aFhHU3FoQ1dSM2FTTCtCbkU4eElBRUVnYUJ4UURRaUE0V2xvZ2VnU1FMRjRVSEFzbzRHaG1KbkVTVmtSN0FxUTJRa2NVSFUxc2tDa1ZBc2VFY0NBRHM9Iik7DQp9DQoNCi5pdGVtQmFyIHsNCiAgICBwYWRkaW5nOiA3cHg7DQogICAgbWluLWhlaWdodDogMjBweDsNCiAgICBtYXJnaW4tdG9wOiA0cHg7DQogICAgbWFyZ2luLXJpZ2h0OiA4cHg7DQogICAgd2lkdGg6IGF1dG87DQogICAgYm9yZGVyLXJhZGl1czogOHB4Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICM4YzhiODE7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQouY29tcHV0ZXJpdGVtY2lyIHsNCiAgICB3aWR0aDogMTJweDsNCiAgICBoZWlnaHQ6IDEycHg7DQogICAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICAgIGJhY2tncm91bmQ6IGdyYXk7DQogICAgbWFyZ2luLXJpZ2h0OjRweDsNCn0NCg0KLmNvbXB1dGVyaXRlbSB7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIHdpZHRoOiBhdXRvOw0KICAgIC8qDQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICNhNmE1YTA7DQogICAgKi8NCiAgICBoZWlnaHQ6IDI4cHg7DQogICAgbWFyZ2luOiA0cHg7DQogICAgcGFkZGluZzogMnB4Ow0KfQ0KDQogICAgLmNvbXB1dGVyaXRlbTpob3ZlciB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM4MzgyN2I7DQogICAgfQ0KDQoudXMgew0KICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogaW5pdGlhbDsNCiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhdXRvOw0KICAgIC1raHRtbC11c2VyLXNlbGVjdDogdGV4dDsNCiAgICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0Ow0KICAgIC1tcy11c2VyLXNlbGVjdDogdGV4dDsNCiAgICB1c2VyLXNlbGVjdDogdGV4dDsNCn0NCg0KDQovKiBTdHlsZXMgYmVsb3cgYXJlIG9ubHkgdXNlZCBpbiBOb2RlSlMsIFdlYlNpdGUgY29tcGlsZXIgc2hvdWxkIHJlbW92ZSB0aGVzZSBpbiB0aGUgZnV0dXJlICovDQoNCi50b3BDZWxsIHsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaW1hZ2VzLWNvbW1hbmRlci9sb2dvYmFjay5wbmcnKTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7DQp9DQoNCi5pMSB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvaWNvbnM1MC5wbmcpIDBweCAwcHg7DQogICAgaGVpZ2h0OiA1MHB4Ow0KICAgIHdpZHRoOiA1MHB4Ow0KICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICBib3JkZXI6IG5vbmU7DQp9DQoNCi5pMiB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvaWNvbnM1MC5wbmcpIC01MHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmkzIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTEwMHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmk0IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTE1MHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmk1IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTIwMHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmk2IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTI1MHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmoxIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgMHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmoyIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgLTI2cHggMHB4Ow0KICAgIGhlaWdodDogMjZweDsNCiAgICB3aWR0aDogMjZweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfQ0KDQouajMgew0KICAgIGJhY2tncm91bmQ6IHVybChpbWFnZXMtY29tbWFuZGVyL2ljb25zMjYucG5nKSAtNTJweCAwcHg7DQogICAgaGVpZ2h0OiAyNnB4Ow0KICAgIHdpZHRoOiAyNnB4Ow0KICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICBib3JkZXI6IG5vbmU7DQp9DQoNCi5qNCB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvaWNvbnMyNi5wbmcpIC03OHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmo1IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgLTEwNHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmo2IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgLTEzMHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmdyYXkgew0KICAgIC8qZmlsdGVyOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCZsdDtzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnJmd0OyZsdDtmaWx0ZXIgaWQ9XCdncmF5c2NhbGVcJyZndDsmbHQ7ZmVDb2xvck1hdHJpeCB0eXBlPVwnbWF0cml4XCcgdmFsdWVzPVwnMC4zMzMzIDAuMzMzMyAwLjMzMzMgMCAwIDAuMzMzMyAwLjMzMzMgMC4zMzMzIDAgMCAwLjMzMzMgMC4zMzMzIDAuMzMzMyAwIDAgMCAwIDAgMSAwXCcvJmd0OyZsdDsvZmlsdGVyJmd0OyZsdDsvc3ZnJmd0OyNncmF5c2NhbGUiKTsqLyAvKiBGaXJlZm94IDEwKywgRmlyZWZveCBvbiBBbmRyb2lkICovDQogICAgZmlsdGVyOiBncmF5OyAvKiBJRTYtOSAqLw0KICAgIC13ZWJraXQtZmlsdGVyOiBncmF5c2NhbGUoMTAwJSkgb3BhY2l0eSg2MCUpOyAvKiBDaHJvbWUgMTkrLCBTYWZhcmkgNissIFNhZmFyaSA2KyBpT1MgKi8NCn0NCg0KLmcxIHsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsNCiAgICB3aWR0aDogMTRweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgLyogZmFsbGJhY2sgKE9wZXJhKSAqLw0KICAgIC8qIE1vemlsbGE6ICovDQogICAgLyogQ2hyb21lLCBTYWZhcmk6Ki8NCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNmZmZmZmYgMCUsICNjOWM5YzkgMTAwJSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5YzljOTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsOw0KfQ0KDQouZzIgew0KICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAlIDAlOw0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTAwJTsNCiAgICBmbG9hdDogcmlnaHQ7DQogICAgLyogZmFsbGJhY2sgKE9wZXJhKSAqLw0KICAgIC8qIE1vemlsbGE6ICovDQogICAgLyogQ2hyb21lLCBTYWZhcmk6Ki8NCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNjOWM5YzkgMCUsICNmZmZmZmYgMTAwJSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5YzljOTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsOw0KfQ0KDQouZzFzIHsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsNCiAgICB3aWR0aDogMTRweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgLyogZmFsbGJhY2sgKE9wZXJhKSAqLw0KICAgIC8qIE1vemlsbGE6ICovDQogICAgLyogQ2hyb21lLCBTYWZhcmk6Ki8NCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNmZmZmZmYgMCUsICNhMGEwYTAgMTAwJSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2EwYTBhMDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsOw0KfQ0KDQouZzJzIHsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsNCiAgICB3aWR0aDogMTRweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgZmxvYXQ6IHJpZ2h0Ow0KICAgIC8qIGZhbGxiYWNrIChPcGVyYSkgKi8NCiAgICAvKiBNb3ppbGxhOiAqLw0KICAgIC8qIENocm9tZSwgU2FmYXJpOiovDQogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjYTBhMGEwIDAlLCAjZmZmZmZmIDEwMCUpOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICNhMGEwYTA7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDsNCiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IHNjcm9sbDsNCn0NCg0KDQoubGJidXR0b24gew0KICAgIHdpZHRoOjQ0cHg7DQogICAgaGVpZ2h0OjQ0cHg7DQogICAgYm9yZGVyLXJhZGl1czo1cHg7DQogICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsNCiAgICBtYXJnaW4tbGVmdDo0cHg7DQogICAgbWFyZ2luLXRvcDo0cHg7DQogICAgcG9zaXRpb246cmVsYXRpdmU7DQogICAgY3Vyc29yOnBvaW50ZXI7DQogICAgb3BhY2l0eTowLjU7DQp9DQoNCi5sYmJ1dHRvbjpob3ZlciB7DQogICAgb3BhY2l0eToxOw0KfQ0KDQoubGJidXR0b25zZWwgew0KICAgIG9wYWNpdHk6MC45Ow0KfQ0KDQoubGJidXR0b25zZWwyIHsNCiAgICB3aWR0aDo4MnB4Ow0KICAgIGJvcmRlci1yYWRpdXM6NXB4IDBweCAwcHggNXB4Ow0KICAgIG9wYWNpdHk6MTsNCn0NCg0KLmxiMSB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvbGVmdGJhci0zMi5wbmcpIC0wcHggMHB4Ow0KICAgIGhlaWdodDogMzJweDsNCiAgICB3aWR0aDogMzJweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfQ0KDQoubGIyIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9sZWZ0YmFyLTMyLnBuZykgLTMycHggMHB4Ow0KICAgIGhlaWdodDogMzJweDsNCiAgICB3aWR0aDogMzJweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfQ0KDQoubGIzIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9sZWZ0YmFyLTMyLnBuZykgLTY0cHggMHB4Ow0KICAgIGhlaWdodDogMzJweDsNCiAgICB3aWR0aDogMzJweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfTwvc3R5bGU+DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgPHN0eWxlPg0KICAgICAgICAubWVudWl0ZW0geyBjdXJzb3I6IHBvaW50ZXI7IGJvcmRlcjogbm9uZTsgcGFkZGluZzo1cHg7IH0NCiAgICAgICAgLm1lbnVpdGVtOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzZiOWRjNzsgfQ0KICAgIDwvc3R5bGU+DQogICAgICAgICAgICAgICAgPHRpdGxlPkxNUyBNZXNoQ29tbWFuZGVyPC90aXRsZT4NCiAgICAgICAgICAgIDwvaGVhZD4NCjxib2R5IG9udW5sb2FkPSJjbGVhbnVwKCkiPg0KICAgIDxkaXYgaWQ9ImlkX3RvcGhlYWRlciIgY2xhc3M9ImhlYWRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idG9wQ2VsbCIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjU1cHgiPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0b3AxIj5MTVMgTWVzaENvbW1hbmRlcjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0b3AyIiBpZD0iaWRfY29tcHV0ZXJuYW1lIj4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzYmFyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImlkX3Byb2dyZXNzYmFyIiBzdHlsZT0iaGVpZ2h0OjJweDt3aWR0aDowJTtiYWNrZ3JvdW5kLWNvbG9yOnJlZCI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgaWQ9ImlkX21lc3NhZ2V2aWV3IiBjbGFzcz0iZnVsbGNlbGwiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoxMDBweDtmb250LXNpemU6MjBweCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfbWVzc2FnZXZpZXdzdHIiPkxvYWRpbmcuLi48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkNsb3NlIiBvbmNsaWNrPSJkaXNjb25uZWN0KCkiPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDxkaXYgaWQ9ImlkX2xtc01haW5QYW5lbCIgY2xhc3M9ImZ1bGxjZWxsIiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpsaWdodGdyYXk7aGVpZ2h0OjI0cHg7bWFyZ2luLWJvdHRvbTo2cHg7cGFkZGluZy10b3A6MnB4Ij4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImlkX2xtc1Rvb2xCYXJDb250ZW50IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDtoZWlnaHQ6MjZweDt3aWR0aDoyNnB4O2N1cnNvcjpwb2ludGVyIiBvbmNsaWNrPSJ0b29sbWVudWNsaWNrKDApIj4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNnB4Ij4mbmJzcDsmIzk3NzY7PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iUmVmcmVzaCIgb25jbGljaz0ibG1zUmVmcmVzaCgpIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZF9sbXNBY3RpdmF0ZUJ1dHRvbiIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQWN0aXZhdGUuLi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9uY2xpY2s9Imxtc0FjdGl2YXRlKCkiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImlkX2xtc0RlYWN0aXZhdGVCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkRlYWN0aXZhdGUuLi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9uY2xpY2s9Imxtc0RlYWN0aXZhdGUoKSI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWRfbG1zTG9naW5CdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkxvZ2luLi4uIiBzdHlsZT0iZGlzcGxheTpub25lIiBvbmNsaWNrPSJsbXNMb2dpbigpIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZF9sbXNDb25maWd1cmVCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkludGVsJnJlZzsgQU1UIExvZ2luLi4uIiBzdHlsZT0iZGlzcGxheTpub25lIiBvbmNsaWNrPSJsbXNDb25maWd1cmUoKSI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDxkaXYgaWQ9ImlkX2xtc0RhdGEiIHN0eWxlPSJtYXJnaW46MTBweCI+PC9kaXY+DQogICAgICAgIDxkaXYgaWQ9ImlkX2xtc0RhdGEyIiBzdHlsZT0ibWFyZ2luOjEwcHgiPjwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9jb21wdXRlclNlbGVjdG9yTWVudSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I0VFRUVFRTtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDo5NHB4O3dpZHRoOjIwMHB4O3BhZGRpbmc6M3B4O3otaW5kZXg6MTAwMDtib3gtc2hhZG93OjVweCA1cHggNXB4ICM4ODg4ODg7Ym9yZGVyOjFweCBzb2xpZCBncmF5Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0ibWVudWl0ZW0iIG9uY2xpY2s9InRvb2xtZW51Y2xpY2soMTAxKSI+PHNwYW4gaWQ9ImlkX21lbnVpdGVtMSI+JmJ1bGw7IDwvc3Bhbj5Db21wdXRlciBDb25maWd1cmF0aW9uPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVudWl0ZW0iIG9uY2xpY2s9InRvb2xtZW51Y2xpY2soMTAyKSI+PHNwYW4gaWQ9ImlkX21lbnVpdGVtMiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+JmJ1bGw7IDwvc3Bhbj5VU0IgU2V0dXAuYmluIEVkaXRvcjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJpZF91c2JTZXR1cFBhbmVsIiBjbGFzcz0iZnVsbGNlbGwiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgIDx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojODA4MDgwO3dpZHRoOjEwMCUiPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjI2cHg7Y3Vyc29yOnBvaW50ZXIiIG9uY2xpY2s9InRvb2xtZW51Y2xpY2soMCkiPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjE2cHgiPiZuYnNwOyYjOTc3Njs8L3NwYW4+DQogICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iTmV3Li4uIiBvbmNsaWNrPSJ1c2JfbmV3U2V0dXBCaW4oKSI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJPcGVuLi4uIiBvbmNsaWNrPSJ1c2Jfb3BlblNldHVwQmluKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWRfc2F2ZVNldHVwQmluIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTYXZlLi4uIiBvbmNsaWNrPSJ1c2Jfc2F2ZVNldHVwQmluKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDxkaXYgaWQ9ImlkX3VzYlNldHVwUGFuZWwyIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7b3ZlcmZsb3cteTpzY3JvbGw7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7dG9wOjk2cHgiPg0KICAgICAgICAgICAgPGRpdiBpZD0iaWRfU3RhcnR1cFNjcmVlbiIgc3R5bGU9IndpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6Z3JheTttYXJnaW4tdG9wOjM2cHgiPg0KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MjBweCI+SW50ZWw8c3VwIHN0eWxlPSJmb250LXNpemU6MTBweCI+JnJlZzs8L3N1cD4gQU1UIFVTQiBTZXR1cC5iaW4gTWFuYWdlcjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW46NHB4Ij5HZXQgc3RhcnRlZCBieSA8YSBvbmNsaWNrPSJ1c2JfbmV3U2V0dXBCaW4oKSIgc3R5bGU9ImN1cnNvcjpwb2ludGVyIj48dT5jcmVhdGluZzwvdT48L2E+IGEgbmV3IGZpbGUsIDxhIG9uY2xpY2s9InVzYl9vcGVuU2V0dXBCaW4oKSIgc3R5bGU9ImN1cnNvcjpwb2ludGVyIj48dT5vcGVuaW5nPC91PjwvYT4gYW4gZXhpc3Rpbmcgb25lPGJyPm9yIGRyYWcgJiBkcm9wcGluZyBhIHNldHVwLmJpbiBmaWxlIGluIHRoaXMgd2luZG93LjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJpZF9TZXR1cEJpbkFyZWEiIHN0eWxlPSJtYXJnaW46MTBweCI+PC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImlkX21haW52aWV3IiBzdHlsZT0iaGVpZ2h0OjEwMCU7ZGlzcGxheTpub25lIj4NCiAgICAgICAgPGRpdiBpZD0iaWRfbGVmdGJhciIgY2xhc3M9Im5hdmJhciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdwYWRkaW5nOjhweCc+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImRpc2Nvbm5lY3RCdXR0b24iIHZhbHVlPSJEaXNjb25uZWN0IiBvbmtleXByZXNzPSJyZXR1cm4gZmFsc2UiIG9ua2V5ZG93bj0icmV0dXJuIGZhbHNlIiBvbmNsaWNrPSJkaXNjb25uZWN0KCkiIHN0eWxlPSJ3aWR0aDoxMzhweCI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzEiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygxKSI+PGE+U3lzdGVtIFN0YXR1czwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28yIiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMikiPjxhPkhhcmR3YXJlIEluZm9ybWF0aW9uPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzYiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbyg2KSI+PGE+RXZlbnQgTG9nPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzE1IiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMTUpIj48YT5BdWRpdCBMb2c8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvMjEiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygyMSkiPjxhPlN0b3JhZ2U8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvOCIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDgpIj48YT5OZXR3b3JrIFNldHRpbmdzPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzE3IiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMTcpIj48YT5JbnRlcm5ldCBTZXR0aW5nczwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28xNiIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDE2KSI+PGE+U2VjdXJpdHkgU2V0dGluZ3M8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvMTkiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygxOSkiPjxhPkFnZW50IFByZXNlbmNlPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzE4IiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMTgpIj48YT5TeXN0ZW0gRGVmZW5zZTwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28xMSIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDExKSI+PGE+VXNlciBBY2NvdW50czwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28yMyIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDIzKSI+PGE+V2FrZSBBbGFybXM8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvMjAiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygyMCkiPjxhPlNjcmlwdCBFZGl0b3I8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBpZD0iaWRfbWFpbmFyZWEiIGNsYXNzPSJtYWluY2VsbCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9zY3JpcHRzdGF0dXMiIHN0eWxlPSJoZWlnaHQ6MjFweDtiYWNrZ3JvdW5kOiM4ZmFjOGQ7cGFkZGluZzo1cHg7bWFyZ2luLWJvdHRvbToxcHg7ZGlzcGxheTpub25lO292ZXJmbG93OmhpZGRlbiI+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJTdG9wIFNjcmlwdCIgb25jbGljaz0ic2NyaXB0X1N0b3AoKSI+PC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjE2cHg7cGFkZGluZy10b3A6MnB4O292ZXJmbG93OmhpZGRlbiI+Jm5ic3A7PGI+UnVubmluZyBTY3JpcHQ8L2I+PHNwYW4gc3R5bGU9Im92ZXJmbG93OmhpZGRlbiIgaWQ9ImlkX3NjcmlwdHN0YXR1c3N0ciI+PC9zcGFuPjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9tYWluYXJlYV9mcmFtZSIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjEwMCUiPg0KICAgICAgICAgICAgICAgIDxpZnJhbWUgaWQ9ImlkX1N0b3JhZ2VJRnJhbWUiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowIj48L2lmcmFtZT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaWRfbWFpbmFyZWFfcGFkIiBzdHlsZT0icGFkZGluZzo4cHg7b3ZlcmZsb3cteDpoaWRkZW4iPg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAwIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPkxvYWRpbmcuLi48L2gxPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAxIiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlN5c3RlbSBTdGF0dXM8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVTeXNTdGF0dXMiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweCI+SGFyZHdhcmUgSW5mb3JtYXRpb248L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVTeXNJbmZvIj48L3NwYW4+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwNiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5FdmVudCBMb2c8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVFdmVudExvZyI+PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVFdmVudExvZzIiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InA4IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPk5ldHdvcmsgU2V0dGluZ3M8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVOZXR3b3JrU2V0dGluZ3NTcGFuIj48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlV2lmaTIiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwMTEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8aDE+VXNlciBBY2NvdW50czwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZVVzZXJBY2NvdW50cyI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwMTUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVBdWRpdExvZzEiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPkF1ZGl0IExvZzwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZUF1ZGl0TG9nMiI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDE2IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlNlY3VyaXR5IFNldHRpbmdzPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlQ2VydHMiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAxNyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5JbnRlcm5ldCBTZXR0aW5nczwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZVJlbW90ZUFjY2VzcyI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDE4IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlN5c3RlbSBEZWZlbnNlPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlU3lzdGVtRGVmZW5zZSI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDE5IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPkFnZW50IFByZXNlbmNlPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlU3lzdGVtQWdlbnRQcmVzZW5jZSI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDIwIiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlNjcmlwdCBFZGl0b3I8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2cxIiBzdHlsZT0icGFkZGluZzo1cHg7Ym9yZGVyLXJhZGl1czo1cHgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0nRWRpdFNjcmlwdFN0YXR1cycgc3R5bGU9ImZsb2F0OnJpZ2h0O2ZvbnQtd2VpZ2h0OmJvbGQ7cGFkZGluZzo1cHgiPlN0b3BwZWQ8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlZpZXcgRWRpdG9yIiB0aXRsZT0iU3dpdGNoIHRvIHNjcmlwdCBsaW5lIGVkaXRvciB2aWV3IiBpZD0idmlld0VkaXRvckJ1dHRvbiIgb25jbGljaz0ic2NyaXB0Vmlld0J1dHRvbigwKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlZpZXcgQnVpbGRlciIgdGl0bGU9IlN3aXRjaCB0byBibG9jayBlZGl0b3IgdmlldyIgaWQ9InZpZXdCdWlsZGVyQnV0dG9uIiBvbmNsaWNrPSJzY3JpcHRWaWV3QnV0dG9uKDEpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iTmV3Li4uIiB0aXRsZT0iQ2xlYXIgdGhlIHNjcmlwdCBlZGl0b3IiIG9uY2xpY2s9InNjcmlwdF9uZXdTY3JpcHREbGcoKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkxvYWQuLi4iIHRpdGxlPSJMb2FkIGEgc2NyaXB0IGZyb20gZmlsZSIgb25jbGljaz0ic2NyaXB0X3J1blNjcmlwdERsZygpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlNhdmUuLi4iIHRpdGxlPSJTYXZlIGEgc2NyaXB0IHRvIGZpbGUiIG9uY2xpY2s9InNjcmlwdF9zYXZlU2NyaXB0KGV2ZW50KSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJSZXN0YXJ0IiB0aXRsZT0iQ29tcGlsZSB0aGUgc2NyaXB0IGFuZCBnZXQgcmVhZHkgdG8gcnVuIGl0IGZyb20gdGhlIHN0YXJ0IiBvbmNsaWNrPSJyZXNldFNjcmlwdEJ1dHRvbigpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQ29udGludWUiIHRpdGxlPSJSdW4gdGhlIHNjcmlwdCBmcm9tIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBwb2ludCIgb25jbGljaz0icnVuU2NyaXB0QnV0dG9uKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJCcmVhayIgdGl0bGU9IlBhdXNlIHRoZSBleGVjdXRpb24gb2YgdGhlIHNjcmlwdCIgb25jbGljaz0iYnJlYWtTY3JpcHRCdXR0b24oKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlN0ZXAiIHRpdGxlPSJFeGVjdXRlIG9uZSBzdGVwIG9mIHRoZSBzY3JpcHQiIG9uY2xpY2s9InN0ZXBTY3JpcHRCdXR0b24oKSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNjcmlwdGJ1aWxkZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlNjcmlwdCBCdWlsZGVyPC9oMj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MDttYXJnaW46MCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6MjUwcHg7aGVpZ2h0OjQwMHB4O2Zsb2F0OmxlZnQ7cGFkZGluZzowO21hcmdpbjowO3BhZGRpbmctcmlnaHQ6M3B4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJibG9ja2ZpbHRlciIgc3R5bGU9IndpZHRoOmluaGVyaXQ7aGVpZ2h0OjI0cHg7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjoxcHggc29saWQgZ3JheTttYXJnaW4tYm90dG9tOjFweCIgcGxhY2Vob2xkZXI9IkZpbHRlciBibG9ja3MuLi4iIG9ua2V5dXA9InNjcmlwdF9mb25maWx0ZXJjaGFuZ2VkKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJibG9ja3MiIHN0eWxlPSJ3aWR0aDppbmhlcml0O2hlaWdodDozNzNweDtib3JkZXI6MXB4IHNvbGlkIGdyYXk7b3ZlcmZsb3cteTpzY3JvbGw7cGFkZGluZzowO21hcmdpbjowIj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzY3JpcHRibG9ja3MiIHN0eWxlPSJ3aWR0aDphdXRvO2hlaWdodDo0MDBweDtwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjFweCBzb2xpZCBncmF5O292ZXJmbG93LXk6c2Nyb2xsIiBvbmRyb3A9InNjcmlwdF9mb25kcm9wKGV2ZW50LCB0aGlzKSIgb25jbGljaz0ic2NyaXB0X2ZvbmNsaWNrKGV2ZW50KSI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNjcmlwdGVkaXRvciI+DQogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U2NyaXB0PC9oMj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0ic2NyaXB0YXJlYSIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjE3NnB4O3Jlc2l6ZTp2ZXJ0aWNhbDttYXJnaW46MDtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3RleHRhcmVhPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGgyPkNvbXBpbGVkIFNjcmlwdDwvaDI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb21waWxlZGFyZWEiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoxNnB4O3Jlc2l6ZTp2ZXJ0aWNhbDttYXJnaW46MDtwYWRkaW5nOjAiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3RleHRhcmVhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlZhcmlhYmxlczwvaDI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ2YXJpYWJsZXMiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoyMDBweDtyZXNpemU6dmVydGljYWw7Ym9yZGVyOjFweCBzb2xpZCBncmF5O292ZXJmbG93OnNjcm9sbDttYXJnaW46MDtwYWRkaW5nOjA7dXNlci1zZWxlY3Q6dGV4dDstd2Via2l0LXVzZXItc2VsZWN0OnRleHQ7LWtodG1sLXVzZXItc2VsZWN0OnRleHQ7LW1vei11c2VyLXNlbGVjdDp0ZXh0Oy1tcy11c2VyLXNlbGVjdDp0ZXh0Ij48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxoMj5Db25zb2xlPC9oMj4NCiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb25zb2xlIiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6ODBweDtyZXNpemU6dmVydGljYWw7bWFyZ2luOjA7cGFkZGluZzowO3VzZXItc2VsZWN0OnRleHQ7LXdlYmtpdC11c2VyLXNlbGVjdDp0ZXh0Oy1raHRtbC11c2VyLXNlbGVjdDp0ZXh0Oy1tb3otdXNlci1zZWxlY3Q6dGV4dDstbXMtdXNlci1zZWxlY3Q6dGV4dCIgcmVhZG9ubHk9IiI+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAyMSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5TdG9yYWdlPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlU3lzdGVtU3RvcmFnZSI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAyMyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5XYWtlIEFsYXJtczwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZUFsYXJtIj48L3NwYW4+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZyIgc3R5bGU9InotaW5kZXg6MTAwMDtiYWNrZ3JvdW5kLWNvbG9yOiNFRUU7Ym94LXNoYWRvdzowcHggMHB4IDE1cHggIzY2Njtmb250LWZhbWlseTpBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO2JvcmRlci1yYWRpdXM6NXB4O3Bvc2l0aW9uOmZpeGVkO3RvcDoxNjBweDt3aWR0aDo0MDBweDtkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDMzNjY7Y29sb3I6I0ZGRjtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwIj4NCiAgICAgICAgICAgIDxkaXYgaWQ9J2lkX2RpYWxvZ2Nsb3NlJyBzdHlsZT0iZmxvYXQ6cmlnaHQ7cGFkZGluZzoxcHg7bWFyZ2luLXJpZ2h0OjVweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTVweCIgb25jbGljaz0ic2V0RGlhbG9nTW9kZSgpIj4mI3gyNzE2OzwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0naWRfZGlhbG9ndGl0bGUnIHN0eWxlPSJwYWRkaW5nOjVweCI+PC9kaXY+DQogICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO21hcmdpbjo2cHgiPjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjE2cHg7bWFyZ2luLWxlZnQ6OHB4Ij4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzEiIHN0eWxlPSJtYXJnaW46YXV0bzt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9kaWFsb2dNZXNzYWdlIiBzdHlsZT0icGFkZGluZzoxMHB4Ij48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMiIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJkMnVzZXJuYW1lIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG9ua2V5dXA9InVwZGF0ZUFjY291bnREaWFsb2coKSI+PGRpdj5Vc2VybmFtZTwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQycGFzc3dvcmQxIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJvZmYiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25rZXl1cD0idXBkYXRlQWNjb3VudERpYWxvZygpIj48ZGl2PlBhc3N3b3JkKjwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQycGFzc3dvcmQyIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJvZmYiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25rZXl1cD0idXBkYXRlQWNjb3VudERpYWxvZygpIj48ZGl2PkNvbmZpcm0gUGFzc3dvcmQ8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9kMnBlcm1pc3Npb25zIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OjI2cHgnPjxzZWxlY3QgaWQ9ImQycGVybWlzc2lvbiIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4Ij48b3B0aW9uIHZhbHVlPSIwIj5Mb2NhbDxvcHRpb24gdmFsdWU9IjEiPk5ldHdvcms8b3B0aW9uIHZhbHVlPSIyIj5Bbnk8L3NlbGVjdD48ZGl2PlBlcm1pc3Npb248L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj5HcmFudGVkIFBlcm1pc3Npb25zPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDx1bCBpZD0iaWRfZDJyZWFsbXMiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6bm9uZTtoZWlnaHQ6MTAwcHg7b3ZlcmZsb3c6YXV0bzt3aWR0aDoxMDAlO2JvcmRlcjogMXB4IHNvbGlkICMwMDA7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtvdmVyZmxvdy14OmhpZGRlbjttYXJnaW46MDtwYWRkaW5nOjAiPjwvdWw+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjEwcHgiPjxicj4qTWluaW11bSA4IGNoYXJhY3RlcnMgd2l0aCB1cHBlciwgbG93ZXJjYXNlLCAwLTksIGFuZCBvbmUgb2YgIUAjJCVeJmFtcDsqKCkrLTwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2c0IiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQ0dXNlcm5hbWUiIHBsYWNlaG9sZGVyPSJhZG1pbiIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBvbmtleXVwPSJsbXNVcGRhdGVMb2dpbkRpYWxvZyhldmVudCwgMSkiPjxkaXY+VXNlcm5hbWU8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJkNHBhc3N3b3JkIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJvZmYiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25rZXl1cD0ibG1zVXBkYXRlTG9naW5EaWFsb2coZXZlbnQsIDIpIj48ZGl2PlBhc3N3b3JkKjwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMHB4Ij48YnI+Kk1pbmltdW0gOCBjaGFyYWN0ZXJzIHdpdGggdXBwZXIsIGxvd2VyY2FzZSwgMC05LCBhbmQgb25lIG9mICFAIyQlXiZhbXA7KigpKy08L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nNSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImQ1YWN0aW9uU2VsZWN0IiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiPjwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PlBvd2VyIEFjdGlvbjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPldhcm5pbmc6PC9zcGFuPiBTb21lIHBvd2VyIGFjdGlvbnMgbWF5IHJlc3VsdCBpbiBkYXRhIGxvc3MgYW5kIG1heSBkaXNjb25uZWN0IHRoZSBkZXNrdG9wLCB0ZXJtaW5hbCBvciBkaXNrIHJlZGlyZWN0aW9uIHNlc3Npb25zLg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2c2IiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQ2Q29uc2VudFRleHQiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgbWF4bGVuZ3RoPSI2IiBvbmtleXVwPSJjb25zZW50Q2hhbmdlZCgpIiBvbmtleXByZXNzPSJyZXR1cm4gbnVtYmVyc09ubHkoZXZlbnQpIj48ZGl2PkNvbnNlbnQgQ29kZTwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48c2VsZWN0IGlkPSJkNkRpc3BsYXkiIG9uY2hhbmdlPSJjaGFuZ2VDb25zZW50RGlzcGxheSgpIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiPjxvcHRpb24gdmFsdWU9IjAiPlByaW1hcnkgZGlzcGxheTxvcHRpb24gdmFsdWU9IjEiPlNlY29uZGFyeSBkaXNwbGF5PG9wdGlvbiBpZD0iZDZUaGlyZERpc3BsYXkiIHZhbHVlPSIyIiBzdHlsZT0iZGlzcGxheTpub25lIj5UaGlyZCBkaXNwbGF5PC9zZWxlY3Q+PGRpdj5Db25zZW50IERpc3BsYXk8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nOCIgc3R5bGU9ImRpc3BsYXk6dGFibGU7bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luOjNweCAwIDNweCAwO3BhZGRpbmctdG9wOjVweCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2Q4dXNlcm5hbWUiIHZhbHVlPSJhZG1pbiIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIyMHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OjIwcHgiPlVzZXJuYW1lPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luOjNweCAwIDNweCAwIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZHhfZDhwYXNzd29yZCIgdHlwZT0icGFzc3dvcmQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjIwcHgiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6MjBweCI+UGFzc3dvcmQ8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nOSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2lkeF9kOXJlZGlyJz5SZWRpcmVjdGlvbiBQb3J0PGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImlkeF9kOWt2bV9kaXYiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2lkeF9kOWt2bSc+S1ZNIFJlbW90ZSBEZXNrdG9wPGJyPjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2lkeF9kOWlkZXInPklERS1SZWRpcmVjdGlvbjxicj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSdpZHhfZDlzb2wnPlNlcmlhbC1vdmVyLUxBTjxicj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTAiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImQxMCIgaWQ9J2lkeF9kMTBub25lJyB2YWx1ZT0iMCI+Tm90IFJlcXVpcmVkPGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZDEwIiBpZD0naWR4X2QxMGt2bScgdmFsdWU9IjEiPlJlcXVpcmVkIGZvciBLVk0gb25seTxicj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImQxMCIgaWQ9J2lkeF9kMTBhbGwnIHZhbHVlPSI0Mjk0OTY3Mjk1Ij5BbHdheXMgUmVxdWlyZWQ8YnI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzExIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGRpdiBpZD0iaWRfZGlhbG9nT3B0aW9ucyI+PC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzEyIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImlkeF9kMTJuYW1lIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG1heGxlbmd0aD0iMzIiIG9ua2V5dXA9InVwZGF0ZVdpZmlEaWFsb2coKSIgdGl0bGU9Ik1heGltdW0gMzIgY2hhcmFjdGVycyI+PGRpdiB0aXRsZT0iTWF4aW11bSAzMiBjaGFyYWN0ZXJzIj5Qcm9maWxlIE5hbWU8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJpZHhfZDEyc3NpZCIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBtYXhsZW5ndGg9IjMyIiBvbmtleXVwPSJ1cGRhdGVXaWZpRGlhbG9nKCkiIHRpdGxlPSJNYXhpbXVtIDMyIGNoYXJhY3RlcnMiPjxkaXYgdGl0bGU9Ik1heGltdW0gMzIgY2hhcmFjdGVycyI+U1NJRDwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QxMnByaSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBvbmNsaWNrPSJ1cGRhdGVXaWZpRGlhbG9nKCkiPjwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PlByaW9yaXR5PC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OjI2cHgnPg0KICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJpZHhfZDEyYXV0aCIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBvbmNsaWNrPSJ1cGRhdGVXaWZpRGlhbG9nKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxvcHRpb24gdmFsdWU9IjciPldQQTIgSUVFRSA4MDIuMXg8L29wdGlvbj4tLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPldQQTIgUFNLDQogICAgICAgICAgICAgICAgICAgICAgICA8IS0tPG9wdGlvbiB2YWx1ZT0iNSI+V1BBIElFRUUgODAyLjF4PC9vcHRpb24+LS0+DQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij5XUEEgUFNLDQogICAgICAgICAgICAgICAgICAgICAgICA8IS0tPG9wdGlvbiB2YWx1ZT0iMyI+U2hhcmVkIEtleTwvb3B0aW9uPi0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxvcHRpb24gdmFsdWU9IjIiPk9wZW48L29wdGlvbj4tLT4NCiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+QXV0aGVudGljYXRpb248L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImlkeF9kMTJlbmMiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25jbGljaz0idXBkYXRlV2lmaURpYWxvZygpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gaWQ9ImlkX2QxMmU0IiB2YWx1ZT0iNCI+Q0NNUC1BRVMNCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gaWQ9ImlkX2QxMmUzIiB2YWx1ZT0iMyI+VEtJUC1SQzQNCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gaWQ9ImlkX2QxMmUyIiB2YWx1ZT0iMiI+V0VQDQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGlkPSJpZF9kMTJlNSIgdmFsdWU9IjUiPk5vbmUNCiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+RW5jcnlwdGlvbjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImlkeF9kMTJwYXNzd29yZDEiIHR5cGU9InBhc3N3b3JkIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG1heGxlbmd0aD0iNjMiIG9ua2V5dXA9InVwZGF0ZVdpZmlEaWFsb2coKSIgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPjxkaXYgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPlBhc3N3b3JkKjwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImlkeF9kMTJwYXNzd29yZDIiIHR5cGU9InBhc3N3b3JkIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG1heGxlbmd0aD0iNjMiIG9ua2V5dXA9InVwZGF0ZVdpZmlEaWFsb2coKSIgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPjxkaXYgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPkNvbmZpcm0gUGFzc3dvcmQ8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTMiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSdkMTN2YWxpZCc+VmFsaWQgUmVjb3JkPGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2QxM3NjcmFtYmxlJz5TY3JhbWJsZWQgUmVjb3JkPGJyPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cxNCIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QxNHZlcnNpb24iIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5WZXJzaW9uIDENCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPlZlcnNpb24gMg0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+VmVyc2lvbiAzDQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij5WZXJzaW9uIDQNCiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+U2V0dXAuYmluIHZlcnNpb248L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImlkeF9kMTRjb25zdW1lIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+UmVjb3JkcyB3aWxsIG5vdCBiZSBjb25zdW1lZA0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+UmVjb3JkcyB3aWxsIGJlIGNvbnN1bWVkDQogICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PlJlY29yZCBjb25zdW1wdGlvbjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cxNSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iZDE1c2V0dXBiaW5maWxlIiB0eXBlPSJmaWxlIiBzdHlsZT0id2lkdGg6MTAwJSIgYWNjZXB0PSIuYmluIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTYiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImQxNnR5cGUiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyNjBweCIgb25jaGFuZ2U9InVzYl9vbmQxNnR5cGVjaGFuZ2UoKSIgb25jbGljaz0idXNiX29uZDE2dHlwZWNoYW5nZSgpIiBvbnNjcm9sbD0idXNiX29uZDE2dHlwZWNoYW5nZSgpIiBvbmtleWRvd249InVzYl9vbmQxNnR5cGVjaGFuZ2UoKSI+PC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+VmFyaWFibGUgVHlwZTwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImQxNmdlbmVyaWN2YWx1ZSIgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QxNnZhbHVlMSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4Ij48L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZHhfZDE2dmFsdWUyIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHg7ZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj5WYXJpYWJsZSBWYWx1ZTwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImQxNmN1c3RvbXZhbHVlIj48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTkiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICBUaGlzIHdpbGwgc2F2ZSB0aGUgZW50aXJlIHN0YXRlIG9mIEludGVsJnJlZzsgQU1UIGZvciB0aGlzIG1hY2hpbmUgaW50byBmaWxlLiBQYXNzd29yZHMgd2lsbCBub3QgYmUgc2F2ZWQsIGJ1dCBzb21lIHNlbnNpdGl2ZSBkYXRhIG1heSBiZSBpbmNsdWRlZC48YnI+PGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2QxOXNhdmVzdGF0ZWZpbGVuYW1lIiBzdHlsZT0id2lkdGg6MTAwJSIgdmFsdWU9ImFtdHN0YXRlLmpzb24iPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cyMCIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZDIwIiBpZD0iZDIwYSIgdmFsdWU9IjAiPkRpc2FibGVkPGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZDIwIiBpZD0iZDIwYiIgdmFsdWU9IjEiPklDTVAgcmVzcG9uc2U8YnI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjAiIGlkPSJkMjBjIiB2YWx1ZT0iMiI+Uk1DUCByZXNwb25zZTxicj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImQyMCIgaWQ9ImQyMGQiIHZhbHVlPSIzIj5JQ01QICYgUk1DUCByZXNwb25zZTxicj48YnI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzIxIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjEiIGlkPSJkMjFvMCIgb25jbGljaz0idXBkYXRlSVBTZXR1cERsZygpIj48c3BhbiBpZD0iZDIxbDAiPjwvc3Bhbj48YnI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjEiIGlkPSJkMjFvMSIgb25jbGljaz0idXBkYXRlSVBTZXR1cERsZygpIj48c3BhbiBpZD0iZDIxbDEiPjwvc3Bhbj48YnI+DQogICAgICAgICAgICAgICAgPGRpdiBpZD0iaWRfZDIxbWFudWFsZGl2Ij4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjEiIGlkPSdkMjFvMicgb25jbGljaz0idXBkYXRlSVBTZXR1cERsZygpIj48c3BhbiBpZD0iZDIxbDIiPjwvc3Bhbj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4Ij48aW5wdXQgaWQ9ImlkeF9kMjFhZGRyZXNzIiBvbmtleXVwPSJ1cGRhdGVJUFNldHVwRGxnKCkiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMzBweCI+PGRpdj5JUCBhZGRyZXNzPC9kaXY+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6MjZweCIgaWQ9ImlkX2QyMXN1Ym5ldGRpdiI+PGlucHV0IGlkPSJpZHhfZDIxc3VibmV0IiBvbmtleXVwPSJ1cGRhdGVJUFNldHVwRGxnKCkiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMzBweCI+PGRpdj5TdWJuZXQgbWFyazwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OjI2cHgiPjxpbnB1dCBpZD0iaWR4X2QyMWdhdGV3YXkiIG9ua2V5dXA9InVwZGF0ZUlQU2V0dXBEbGcoKSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4Ij48ZGl2PkdhdGV3YXk8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4Ij48aW5wdXQgaWQ9ImlkeF9kMjFkbnMxIiBvbmtleXVwPSJ1cGRhdGVJUFNldHVwRGxnKCkiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMzBweCI+PGRpdj5QcmltYXJ5IEROUzwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OjI2cHgiPjxpbnB1dCBpZD0iaWR4X2QyMWRuczIiIG9ua2V5dXA9InVwZGF0ZUlQU2V0dXBEbGcoKSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4Ij48ZGl2PkFsdGVybmF0ZSBETlM8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzIzIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QyM2RkbnMiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25jaGFuZ2U9InNob3dFZGl0RG5zRGxnQ2hhbmdlKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+RGlzYWJsZWQNCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkRpc2FibGVkLCBESENQIHVwZGF0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMiI+RW5hYmxlZA0KICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj5EeW5hbWljIEROUyBjbGllbnQ8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJpZHhfZDIzaW50ZXJ2YWwiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCI+PGRpdj5VcGRhdGUgSW50ZXJ2YWwgKG1pbnV0ZXMpPC9kaXY+PC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OjI2cHgnPjxpbnB1dCBpZD0iaWR4X2QyM3R0bCIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4Ij48ZGl2PlRUTCAoc2Vjb25kcyk8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTBweCI+PGJyPkRlZmF1dCBJbnRlcnZhbCBpcyAxNDQwIG1pbnV0ZXMsIERlZmF1bHQgVFRMIGlzIDkwMCBzZWNvbmRzLjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cyNSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij48aW5wdXQgaWQ9ImQyNWFsYXJtX25hbWUiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoxODBweCIgbWF4bGVuZ3RoPSIzMiIgb25rZXl1cD0iYWxlcnREaWFsb2dVcGRhdGUoKSI+PGRpdiBzdHlsZT0icGFkZGluZy10b3A6NHB4Ij5BbGFybSBuYW1lPC9kaXY+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImQyNWFsYXJtX3NkYXRlIiBzdHlsZT0id2lkdGg6MTgwcHgiIG1heGxlbmd0aD0iMTAiIG9ua2V5dXA9ImFsZXJ0RGlhbG9nVXBkYXRlKCkiIG9ua2V5cHJlc3M9InJldHVybiBudW1iZXJzT25seShldmVudCw0NSkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLXRvcDo0cHgiPldha2UgZGF0ZSAoeWVhci1tb250aC1kYXkpPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJkMjVhbGFybV9zdGltZSIgc3R5bGU9IndpZHRoOjE4MHB4IiBtYXhsZW5ndGg9IjEwIiBvbmtleXVwPSJhbGVydERpYWxvZ1VwZGF0ZSgpIiBvbmtleXByZXNzPSJyZXR1cm4gbnVtYmVyc09ubHkoZXZlbnQsNTgpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6NHB4Ij5XYWtlIHRpbWUgKGhvdXI6bWluOnNlYyk8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImQyNWFsYXJtX2ludGVydmFsIiBzdHlsZT0id2lkdGg6MTgwcHgiIG1heGxlbmd0aD0iMTAiIG9ua2V5dXA9ImFsZXJ0RGlhbG9nVXBkYXRlKCkiIG9ua2V5cHJlc3M9InJldHVybiBudW1iZXJzT25seShldmVudCw0NSkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLXRvcDo0cHgiPkludGVydmFsIChkYXlzLWhvdXJzLW1pbik8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjE4MHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJkMjVhbGFybV9kb2MiIHN0eWxlPSJ3aWR0aDoxMDAlIiBvbmNoYW5nZT0ic2hvd0FkdlBvd2VyRGxnQ2hhbmdlKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj5LZWVwIGFsYXJtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkRlbGV0ZSBvbiBjb21wbGV0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctdG9wOjRweCI+QWZ0ZXIgd2FrZTwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzoxMHB4O21hcmdpbi1ib3R0b206NHB4Ij4NCiAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2RsZ0NhbmNlbEJ1dHRvbiIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQ2FuY2VsIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6ODBweDttYXJnaW4tbGVmdDo1cHgiIG9uY2xpY2s9ImRpYWxvZ2Nsb3NlKDApIj4NCiAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2RsZ09rQnV0dG9uIiB0eXBlPSJidXR0b24iIHZhbHVlPSJPSyIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjgwcHgiIG9uY2xpY2s9ImRpYWxvZ2Nsb3NlKDEpIj4NCiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNXB4Ij48aW5wdXQgaWQ9ImlkeF9kbGdEZWxldGVCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkRlbGV0ZSIgc3R5bGU9IndpZHRoOjgwcHg7ZGlzcGxheTpub25lIiBvbmNsaWNrPSJkaWFsb2djbG9zZSgyKSI+PC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICANCjwvYm9keT4NCjwvaHRtbD4NCjxzY3JpcHQ+LyoqIA0KKiBAZGVzY3JpcHRpb24gU2V0IG9mIHNob3J0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBmb3IgaGFuZGxpbmcgSFRNTCBlbGVtZW50cw0KKiBAYXV0aG9yIFlsaWFuIFNhaW50LUhpbGFpcmUNCiogQHZlcnNpb24gdjAuMC4xYg0KKi8NCg0KLy8gQWRkIHN0YXJ0c1dpdGggZm9yIElFIGJyb3dzZXINCmlmICghU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoKSB7IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHRoaXMubGFzdEluZGV4T2Yoc3RyLCAwKSA9PT0gMDsgfTsgfQ0KaWYgKCFTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoKSB7IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiB0aGlzLmluZGV4T2Yoc3RyLCB0aGlzLmxlbmd0aCAtIHN0ci5sZW5ndGgpICE9PSAtMTsgfTsgfQ0KDQovLyBRdWljayBVSSBmdW5jdGlvbnMsIGEgYml0IG9mIGEgcmVwbGFjZW1lbnQgZm9yIGpRdWVyeQ0KLy9mdW5jdGlvbiBRKHgpIHsgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHgpID09IG51bGwpIHsgY29uc29sZS5sb2coJ0ludmFsaWQgZWxlbWVudDogJyArIHgpOyB9IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh4KTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiUSINCmZ1bmN0aW9uIFEoeCkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoeCk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIlEiDQpmdW5jdGlvbiBRUyh4KSB7IHRyeSB7IHJldHVybiBRKHgpLnN0eWxlOyB9IGNhdGNoICh4KSB7IH0gfSAgICAgICAgICAgICAgICAgICAgIC8vICJRIiBzdHlsZQ0KZnVuY3Rpb24gUUUoeCwgeSkgeyB0cnkgeyBRKHgpLmRpc2FibGVkID0gIXk7IH0gY2F0Y2ggKHgpIHsgfSB9ICAgICAgICAgICAgICAgICAvLyAiUSIgZW5hYmxlDQpmdW5jdGlvbiBRVih4LCB5KSB7IHRyeSB7IFFTKHgpLmRpc3BsYXkgPSAoeSA/ICcnIDogJ25vbmUnKTsgfSBjYXRjaCAoeCkgeyB9IH0gIC8vICJRIiB2aXNpYmxlDQpmdW5jdGlvbiBRQSh4LCB5KSB7IFEoeCkuaW5uZXJIVE1MICs9IHk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICJRIiBhcHBlbmQNCmZ1bmN0aW9uIFFIKHgsIHkpIHsgUSh4KS5pbm5lckhUTUwgPSB5OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIlEiIGh0bWwNCg0KLy8gTW92ZSBjdXJzb3IgdG8gZW5kIG9mIGlucHV0IGJveA0KZnVuY3Rpb24gaW5wdXRCb3hGb2N1cyh4KSB7IFEoeCkuZm9jdXMoKTsgdmFyIHYgPSBRKHgpLnZhbHVlOyBRKHgpLnZhbHVlID0gJyc7IFEoeCkudmFsdWUgPSB2OyB9DQoNCi8vIEJpbmFyeSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgZnVuY3Rpb25zDQpmdW5jdGlvbiBSZWFkU2hvcnQodiwgcCkgeyByZXR1cm4gKHYuY2hhckNvZGVBdChwKSA8PCA4KSArIHYuY2hhckNvZGVBdChwICsgMSk7IH0NCmZ1bmN0aW9uIFJlYWRTaG9ydFgodiwgcCkgeyByZXR1cm4gKHYuY2hhckNvZGVBdChwICsgMSkgPDwgOCkgKyB2LmNoYXJDb2RlQXQocCk7IH0NCmZ1bmN0aW9uIFJlYWRJbnQodiwgcCkgeyByZXR1cm4gKHYuY2hhckNvZGVBdChwKSAqIDB4MTAwMDAwMCkgKyAodi5jaGFyQ29kZUF0KHAgKyAxKSA8PCAxNikgKyAodi5jaGFyQ29kZUF0KHAgKyAyKSA8PCA4KSArIHYuY2hhckNvZGVBdChwICsgMyk7IH0gLy8gV2UgdXNlICIqMHgxMDAwMDAwIiBpbnN0ZWFkIG9mICI8PDI0IiBiZWNhdXNlIHRoZSBzaGlmdCBjb252ZXJ0cyB0aGUgbnVtYmVyIHRvIHNpZ25lZCBpbnQzMi4NCmZ1bmN0aW9uIFJlYWRTSW50KHYsIHApIHsgcmV0dXJuICh2LmNoYXJDb2RlQXQocCkgPDwgMjQpICsgKHYuY2hhckNvZGVBdChwICsgMSkgPDwgMTYpICsgKHYuY2hhckNvZGVBdChwICsgMikgPDwgOCkgKyB2LmNoYXJDb2RlQXQocCArIDMpOyB9DQpmdW5jdGlvbiBSZWFkSW50WCh2LCBwKSB7IHJldHVybiAodi5jaGFyQ29kZUF0KHAgKyAzKSAqIDB4MTAwMDAwMCkgKyAodi5jaGFyQ29kZUF0KHAgKyAyKSA8PCAxNikgKyAodi5jaGFyQ29kZUF0KHAgKyAxKSA8PCA4KSArIHYuY2hhckNvZGVBdChwKTsgfQ0KZnVuY3Rpb24gU2hvcnRUb1N0cih2KSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2ID4+IDgpICYgMHhGRiwgdiAmIDB4RkYpOyB9DQpmdW5jdGlvbiBTaG9ydFRvU3RyWCh2KSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHYgJiAweEZGLCAodiA+PiA4KSAmIDB4RkYpOyB9DQpmdW5jdGlvbiBJbnRUb1N0cih2KSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2ID4+IDI0KSAmIDB4RkYsICh2ID4+IDE2KSAmIDB4RkYsICh2ID4+IDgpICYgMHhGRiwgdiAmIDB4RkYpOyB9DQpmdW5jdGlvbiBJbnRUb1N0clgodikgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh2ICYgMHhGRiwgKHYgPj4gOCkgJiAweEZGLCAodiA+PiAxNikgJiAweEZGLCAodiA+PiAyNCkgJiAweEZGKTsgfQ0KZnVuY3Rpb24gTWFrZVRvQXJyYXkodikgeyBpZiAoIXYgfHwgdiA9PSBudWxsIHx8IHR5cGVvZiB2ID09ICdvYmplY3QnKSByZXR1cm4gdjsgcmV0dXJuIFt2XTsgfQ0KZnVuY3Rpb24gU3BsaXRBcnJheSh2KSB7IHJldHVybiB2LnNwbGl0KCcsJyk7IH0NCmZ1bmN0aW9uIENsb25lKHYpIHsgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodikpOyB9DQpmdW5jdGlvbiBFc2NhcGVIdG1sKHgpIHsgaWYgKHR5cGVvZiB4ID09ICJzdHJpbmciKSByZXR1cm4geC5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLz4vZywgJyZndDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJmFwb3M7Jyk7IGlmICh0eXBlb2YgeCA9PSAiYm9vbGVhbiIpIHJldHVybiB4OyBpZiAodHlwZW9mIHggPT0gIm51bWJlciIpIHJldHVybiB4OyB9DQoNCi8vIE1vdmUgYW4gZWxlbWVudCBmcm9tIG9uZSBwb3NpdGlvbiBpbiBhbiBhcnJheSB0byBhIG5ldyBwb3NpdGlvbg0KZnVuY3Rpb24gQXJyYXlFbGVtZW50TW92ZShhcnIsIGZyb20sIHRvKSB7IGFyci5zcGxpY2UodG8sIDAsIGFyci5zcGxpY2UoZnJvbSwgMSlbMF0pOyB9Ow0KDQovLyBQcmludCBvYmplY3QgZm9yIEhUTUwNCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nRXgoeCwgYykgew0KICAgIHZhciByID0gIiI7DQogICAgaWYgKHggIT0gMCAmJiAoIXggfHwgeCA9PSBudWxsKSkgcmV0dXJuICIoTnVsbCkiOw0KICAgIGlmICh4IGluc3RhbmNlb2YgQXJyYXkpIHsgZm9yICh2YXIgaSBpbiB4KSB7IHIgKz0gJzxiciAvPicgKyBnYXAoYykgKyAiSXRlbSAjIiArIGkgKyAiOiAiICsgT2JqZWN0VG9TdHJpbmdFeCh4W2ldLCBjICsgMSk7IH0gfQ0KICAgIGVsc2UgaWYgKHggaW5zdGFuY2VvZiBPYmplY3QpIHsgZm9yICh2YXIgaSBpbiB4KSB7IHIgKz0gJzxiciAvPicgKyBnYXAoYykgKyBpICsgIiA9ICIgKyBPYmplY3RUb1N0cmluZ0V4KHhbaV0sIGMgKyAxKTsgfSB9DQogICAgZWxzZSB7IHIgKz0gRXNjYXBlSHRtbCh4KTsgfQ0KICAgIHJldHVybiByOw0KfQ0KDQovLyBQcmludCBvYmplY3QgZm9yIGNvbnNvbGUNCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nRXgyKHgsIGMpIHsNCiAgICB2YXIgciA9ICIiOw0KICAgIGlmICh4ICE9IDAgJiYgKCF4IHx8IHggPT0gbnVsbCkpIHJldHVybiAiKE51bGwpIjsNCiAgICBpZiAoeCBpbnN0YW5jZW9mIEFycmF5KSB7IGZvciAodmFyIGkgaW4geCkgeyByICs9ICdcclxuJyArIGdhcDIoYykgKyAiSXRlbSAjIiArIGkgKyAiOiAiICsgT2JqZWN0VG9TdHJpbmdFeDIoeFtpXSwgYyArIDEpOyB9IH0NCiAgICBlbHNlIGlmICh4IGluc3RhbmNlb2YgT2JqZWN0KSB7IGZvciAodmFyIGkgaW4geCkgeyByICs9ICdcclxuJyArIGdhcDIoYykgKyBpICsgIiA9ICIgKyBPYmplY3RUb1N0cmluZ0V4Mih4W2ldLCBjICsgMSk7IH0gfQ0KICAgIGVsc2UgeyByICs9IEVzY2FwZUh0bWwoeCk7IH0NCiAgICByZXR1cm4gcjsNCn0NCg0KLy8gQ3JlYXRlIGFuIGlkZW50IGdhcA0KZnVuY3Rpb24gZ2FwKGMpIHsgdmFyIHggPSAnJzsgZm9yICh2YXIgaSA9IDA7IGkgPCAoYyAqIDQpIDsgaSsrKSB7IHggKz0gJyZuYnNwOyc7IH0gcmV0dXJuIHg7IH0NCmZ1bmN0aW9uIGdhcDIoYykgeyB2YXIgeCA9ICcnOyBmb3IgKHZhciBpID0gMDsgaSA8IChjICogNCkgOyBpKyspIHsgeCArPSAnICc7IH0gcmV0dXJuIHg7IH0NCg0KLy8gUHJpbnQgYW4gb2JqZWN0IGluIGh0bWwNCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nKHgpIHsgcmV0dXJuIE9iamVjdFRvU3RyaW5nRXgoeCwgMCk7IH0NCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nMih4KSB7IHJldHVybiBPYmplY3RUb1N0cmluZ0V4Mih4LCAwKTsgfQ0KDQovLyBDb252ZXJ0IGEgaGV4IHN0cmluZyB0byBhIHJhdyBzdHJpbmcNCmZ1bmN0aW9uIGhleDJyc3RyKGQpIHsNCiAgICBpZiAodHlwZW9mIGQgIT0gInN0cmluZyIgfHwgZC5sZW5ndGggPT0gMCkgcmV0dXJuICcnOw0KICAgIHZhciByID0gJycsIG0gPSAoJycgKyBkKS5tYXRjaCgvLi4vZyksIHQ7DQogICAgd2hpbGUgKHQgPSBtLnNoaWZ0KCkpIHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgnMHgnICsgdCk7DQogICAgcmV0dXJuIHINCn0NCg0KLy8gQ29udmVydCBkZWNpbWFsIHRvIGhleA0KZnVuY3Rpb24gY2hhcjJoZXgoaSkgeyByZXR1cm4gKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigtMikudG9VcHBlckNhc2UoKTsgfQ0KDQovLyBDb252ZXJ0IGEgcmF3IHN0cmluZyB0byBhIGhleCBzdHJpbmcNCmZ1bmN0aW9uIHJzdHIyaGV4KGlucHV0KSB7DQogICAgdmFyIHIgPSAnJywgaTsNCiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHsgciArPSBjaGFyMmhleChpbnB1dC5jaGFyQ29kZUF0KGkpKTsgfQ0KICAgIHJldHVybiByOw0KfQ0KDQovLyBVVEYtOCBlbmNvZGluZyAmIGRlY29kaW5nIGZ1bmN0aW9ucw0KZnVuY3Rpb24gZW5jb2RlX3V0ZjgocykgeyByZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHMpKTsgfQ0KZnVuY3Rpb24gZGVjb2RlX3V0ZjgocykgeyByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7IH0NCg0KLy8gQ29udmVydCBhIHN0cmluZyBpbnRvIGEgYmxvYg0KZnVuY3Rpb24gZGF0YTJibG9iKGRhdGEpIHsNCiAgICB2YXIgYnl0ZXMgPSBuZXcgQXJyYXkoZGF0YS5sZW5ndGgpOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgYnl0ZXNbaV0gPSBkYXRhLmNoYXJDb2RlQXQoaSk7DQogICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpXSk7DQogICAgcmV0dXJuIGJsb2I7DQp9DQoNCi8vIEdlbmVyYXRlIHJhbmRvbSBudW1iZXJzDQpmdW5jdGlvbiByYW5kb20obWF4KSB7IHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBtYXgpOyB9DQoNCi8vIFRyYWRlbWFya3MNCmZ1bmN0aW9uIHRyYWRlbWFya3MoeCkgeyByZXR1cm4geC5yZXBsYWNlKC9cKFJcKS9nLCAnJnJlZzsnKS5yZXBsYWNlKC9cKFRNXCkvZywgJyZ0cmFkZTsnKTsgfQ0KDQoNCi8qKiANCiogQGRlc2NyaXB0aW9uIEludGVsIEFNVCBMTVMgY29udHJvbCBtb2R1bGUgLSB1c2luZyB3ZWJzb2NrZXQNCiogQGF1dGhvciBZbGlhbiBTYWludC1IaWxhaXJlDQoqIEB2ZXJzaW9uIHYwLjAuMQ0KKi8NCg0KLy8gQ29uc3RydWN0IGEgTE1TIGNvbnRyb2wgb2JqZWN0DQp2YXIgQ3JlYXRlTG1zQ29udHJvbCA9IGZ1bmN0aW9uICgpIHsNCiAgICB2YXIgb2JqID0ge307DQogICAgdmFyIHNvY2tldCA9IG51bGw7DQogICAgb2JqLlN0YXRlID0gMDsNCiAgICBvYmoub25TdGF0ZUNoYW5nZWQgPSBudWxsOw0KICAgIG9iai5vbkRhdGEgPSBudWxsOw0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBvYmouU3RhcnQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQod2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoImh0dHAiLCAid3MiKSArICIvLyIgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICIvbG1zLmFzaHgiKTsNCiAgICAgICAgc29ja2V0Lm9ub3BlbiA9IF9PblNvY2tldENvbm5lY3RlZDsNCiAgICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9IF9Pbk1lc3NhZ2U7DQogICAgICAgIHNvY2tldC5vbmNsb3NlID0gb2JqLlN0b3A7DQogICAgICAgIF9TdGF0ZUNoYW5nZSgxKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBfT25Tb2NrZXRDb25uZWN0ZWQoKSB7DQogICAgICAgIF9TdGF0ZUNoYW5nZSgyKTsNCiAgICB9DQoNCiAgICAvLyBTZXR1cCB0aGUgZmlsZSByZWFkZXINCiAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgdmFyIGZpbGVSZWFkZXJJbnVzZSA9IGZhbHNlLCBmaWxlUmVhZGVyQWNjID0gW107DQogICAgaWYgKGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKSB7DQogICAgICAgIC8vIENocm9tZSAmIEZpcmVmb3ggKERyYWZ0KQ0KICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7IF9PblNvY2tldERhdGEoZS50YXJnZXQucmVzdWx0KTsgaWYgKGZpbGVSZWFkZXJBY2MubGVuZ3RoID09IDApIHsgZmlsZVJlYWRlckludXNlID0gZmFsc2U7IH0gZWxzZSB7IGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKG5ldyBCbG9iKFtmaWxlUmVhZGVyQWNjLnNoaWZ0KCldKSk7IH0gfQ0KICAgIH0gZWxzZSBpZiAoZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcikgew0KICAgICAgICAvLyBDaHJvbWUgJiBGaXJlZm94IChTcGVjKQ0KICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uIChlKSB7IF9PblNvY2tldERhdGEoZS50YXJnZXQucmVzdWx0KTsgaWYgKGZpbGVSZWFkZXJBY2MubGVuZ3RoID09IDApIHsgZmlsZVJlYWRlckludXNlID0gZmFsc2U7IH0gZWxzZSB7IGZpbGVSZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZVJlYWRlckFjYy5zaGlmdCgpKTsgfSB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX09uTWVzc2FnZShlKSB7DQogICAgICAgIGlmICh0eXBlb2YgZS5kYXRhID09ICdvYmplY3QnKSB7DQogICAgICAgICAgICBpZiAoZmlsZVJlYWRlckludXNlID09IHRydWUpIHsgZmlsZVJlYWRlckFjYy5wdXNoKGUuZGF0YSk7IHJldHVybjsgfQ0KICAgICAgICAgICAgaWYgKGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKSB7DQogICAgICAgICAgICAgICAgLy8gQ2hyb21lICYgRmlyZWZveCAoRHJhZnQpDQogICAgICAgICAgICAgICAgZmlsZVJlYWRlckludXNlID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhuZXcgQmxvYihbZS5kYXRhXSkpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKSB7DQogICAgICAgICAgICAgICAgLy8gQ2hyb21lICYgRmlyZWZveCAoU3BlYykNCiAgICAgICAgICAgICAgICBmaWxlUmVhZGVySW51c2UgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGZpbGVSZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZS5kYXRhKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gSUUxMCwgcmVhZEFzQmluYXJ5U3RyaW5nIGRvZXMgbm90IGV4aXN0LCB1c2UgYW4gYWx0ZXJuYXRpdmUuDQogICAgICAgICAgICAgICAgdmFyIGJpbmFyeSA9ICIiLCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGUuZGF0YSksIGxlbmd0aCA9IGJ5dGVzLmJ5dGVMZW5ndGg7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICAgICAgICAgICAgICBfT25Tb2NrZXREYXRhKGJpbmFyeSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBfT25Tb2NrZXREYXRhKGUuZGF0YSk7DQogICAgICAgIH0NCiAgICB9Ow0KICAgDQogICAgZnVuY3Rpb24gX09uU29ja2V0RGF0YShkYXRhKSB7DQogICAgICAgIGlmICghZGF0YSkgcmV0dXJuOw0KDQogICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHsNCiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gQXJyYXlCdWZmZXIsIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcgYXJyYXkgKHVzZWQgaW4gSUUpDQogICAgICAgICAgICB2YXIgYmluYXJ5ID0gIiI7DQogICAgICAgICAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShkYXRhKTsNCiAgICAgICAgICAgIHZhciBsZW5ndGggPSBieXRlcy5ieXRlTGVuZ3RoOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICAgICAgICAgIGRhdGEgPSBiaW5hcnk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGEgIT09ICdzdHJpbmcnKSB7IHJldHVybjsgfQ0KDQogICAgICAgIC8vIFNlbmQgdGhlIGRhdGEgdXANCiAgICAgICAgaWYgKG9iai5vbkRhdGEgIT0gbnVsbCkgb2JqLm9uRGF0YShvYmosIGRhdGEpOw0KICAgIH0NCiAgICANCiAgICBmdW5jdGlvbiBfU2VuZCh4KSB7DQogICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCAmJiBzb2NrZXQucmVhZHlTdGF0ZSA9PSBXZWJTb2NrZXQuT1BFTikgew0KICAgICAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheSh4Lmxlbmd0aCk7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyArK2kpIHsgYltpXSA9IHguY2hhckNvZGVBdChpKTsgfQ0KICAgICAgICAgICAgc29ja2V0LnNlbmQoYi5idWZmZXIpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgb2JqLlNlbmRDbWQgPSBmdW5jdGlvbiAoY21kaWQsIGRhdGEpIHsNCiAgICAgICAgaWYgKHNvY2tldCA9PSBudWxsIHx8IG9iai5TdGF0ZSAhPSAyKSByZXR1cm47DQogICAgICAgIGlmICghZGF0YSB8fCBkYXRhID09IG51bGwpIGRhdGEgPSAiIjsNCiAgICAgICAgX1NlbmQoU2hvcnRUb1N0clgoY21kaWQpICsgZGF0YSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX1N0YXRlQ2hhbmdlKG5ld3N0YXRlKSB7DQogICAgICAgIGlmIChvYmouU3RhdGUgPT0gbmV3c3RhdGUpIHJldHVybjsNCiAgICAgICAgb2JqLlN0YXRlID0gbmV3c3RhdGU7DQogICAgICAgIGlmIChvYmoub25TdGF0ZUNoYW5nZWQgIT0gbnVsbCkgb2JqLm9uU3RhdGVDaGFuZ2VkKG9iaiwgb2JqLlN0YXRlKTsNCiAgICB9DQoNCiAgICBvYmouU3RvcCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgX1N0YXRlQ2hhbmdlKDApOw0KICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsgc29ja2V0LmNsb3NlKCk7IHNvY2tldCA9IG51bGw7IH0NCiAgICB9DQoNCiAgICByZXR1cm4gb2JqOw0KfS8qKiANCiogQGRlc2NyaXB0aW9uIFdTTUFOIGNvbW11bmljYXRpb24gdXNpbmcgd2Vic29ja2V0DQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4yLjBjDQoqLw0KDQovLyBDb25zdHJ1Y3QgYSBXU01BTiBjb21tdW5pY2F0aW9uIG9iamVjdA0KdmFyIENyZWF0ZVdzbWFuQ29tbSA9IGZ1bmN0aW9uIChob3N0LCBwb3J0LCB1c2VyLCBwYXNzLCB0bHMpIHsNCiAgICB2YXIgb2JqID0ge307DQogICAgb2JqLlBlbmRpbmdBamF4ID0gW107ICAgICAgICAgICAgICAgLy8gTGlzdCBvZiBwZW5kaW5nIEFKQVggY2FsbHMuIFdoZW4gb25lIGZyZWVzIHVwLCBhbm90aGVyIHdpbGwgc3RhcnQuDQogICAgb2JqLkFjdGl2ZUFqYXhDb3VudCA9IDA7ICAgICAgICAgICAgLy8gTnVtYmVyIG9mIGN1cnJlbnRseSBhY3RpdmUgQUpBWCBjYWxscw0KICAgIG9iai5NYXhBY3RpdmVBamF4Q291bnQgPSAxOyAgICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGFjdGl2YXRlIEFKQVggY2FsbHMgYXQgdGhlIHNhbWUgdGltZS4NCiAgICBvYmouRmFpbEFsbEVycm9yID0gMDsgICAgICAgICAgICAgICAvLyBTZXQgdGhpcyB0byBub24temVybyB0byBmYWlsIGFsbCBBSkFYIGNhbGxzIHdpdGggdGhhdCBlcnJvciBzdGF0dXMsIDk5OSBjYXVzZXMgcmVzcG9uc2VzIHRvIGJlIHNpbGVudC4NCiAgICBvYmouY2hhbGxlbmdlUGFyYW1zID0gbnVsbDsNCiAgICBvYmoubm9uY2Vjb3VudGVyID0gMTsNCiAgICBvYmouYXV0aGNvdW50ZXIgPSAwOw0KICAgIG9iai5zb2NrZXQgPSBudWxsOw0KICAgIG9iai5zb2NrZXRTdGF0ZSA9IDA7DQogICAgb2JqLmhvc3QgPSBob3N0Ow0KICAgIG9iai5wb3J0ID0gcG9ydDsNCiAgICBvYmoudXNlciA9IHVzZXI7DQogICAgb2JqLnBhc3MgPSBwYXNzOw0KICAgIG9iai50bHMgPSB0bHM7DQogICAgb2JqLnRsc3Yxb25seSA9IDA7DQogICAgb2JqLmNub25jZSA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KTsgLy8gR2VuZXJhdGUgYSByYW5kb20gY2xpZW50IG5vbmNlDQogICAgb2JqLmluRGF0YUNvdW50ID0gMDsNCiAgICBvYmouYW10VmVyc2lvbiA9IG51bGw7DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIC8vb2JqLkRlYnVnID0gZnVuY3Rpb24gKG1zZykgeyBjb25zb2xlLmxvZyhtc2cpOyB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIC8vICAgcHJpID0gcHJpb3JpdHksIGlmIHNldCB0byAxLCB0aGUgY2FsbCBpcyBoaWdoIHByaW9yaXR5IGFuZCBwdXQgb24gdG9wIG9mIHRoZSBzdGFjay4NCiAgICBvYmouUGVyZm9ybUFqYXggPSBmdW5jdGlvbiAocG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHByaSwgdXJsLCBhY3Rpb24pIHsNCiAgICAgICAgaWYgKG9iai5BY3RpdmVBamF4Q291bnQgPCBvYmouTWF4QWN0aXZlQWpheENvdW50ICYmIG9iai5QZW5kaW5nQWpheC5sZW5ndGggPT0gMCkgew0KICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIHBlbmRpbmcgQUpBWCBjYWxscywgcGVyZm9ybSB0aGUgY2FsbCBub3cuDQogICAgICAgICAgICBvYmouUGVyZm9ybUFqYXhFeChwb3N0ZGF0YSwgY2FsbGJhY2ssIHRhZywgdXJsLCBhY3Rpb24pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGhpZ2ggcHJpb3JpdHkgY2FsbCwgcHV0IHRoaXMgY2FsbCBpbiBmcm9udCBvZiB0aGUgYXJyYXksIG90aGVyd2lzZSBwdXQgaXQgaW4gdGhlIGJhY2suDQogICAgICAgICAgICBpZiAocHJpID09IDEpIHsgb2JqLlBlbmRpbmdBamF4LnVuc2hpZnQoW3Bvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbl0pOyB9IGVsc2UgeyBvYmouUGVuZGluZ0FqYXgucHVzaChbcG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uXSk7IH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgb2JqLlBlcmZvcm1OZXh0QWpheCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKG9iai5BY3RpdmVBamF4Q291bnQgPj0gb2JqLk1heEFjdGl2ZUFqYXhDb3VudCB8fCBvYmouUGVuZGluZ0FqYXgubGVuZ3RoID09IDApIHJldHVybjsNCiAgICAgICAgdmFyIHggPSBvYmouUGVuZGluZ0FqYXguc2hpZnQoKTsNCiAgICAgICAgb2JqLlBlcmZvcm1BamF4RXgoeFswXSwgeFsxXSwgeFsyXSwgeFszXSwgeFs0XSk7DQogICAgICAgIG9iai5QZXJmb3JtTmV4dEFqYXgoKTsNCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIG9iai5QZXJmb3JtQWpheEV4ID0gZnVuY3Rpb24gKHBvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbikgew0KICAgICAgICBpZiAob2JqLkZhaWxBbGxFcnJvciAhPSAwKSB7IG9iai5nb3ROZXh0TWVzc2FnZXNFcnJvcih7IHN0YXR1czogb2JqLkZhaWxBbGxFcnJvciB9LCAnZXJyb3InLCBudWxsLCBbcG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uXSk7IHJldHVybjsgfQ0KICAgICAgICBpZiAoIXBvc3RkYXRhKSBwb3N0ZGF0YSA9ICIiOw0KICAgICAgICAvL2NvbnNvbGUubG9nKCJTRU5EOiAiICsgcG9zdGRhdGEpOyAvLyBERUJVRw0KDQogICAgICAgIC8vIFdlIGFyZSBpbiBhIHdlYnNvY2tldCByZWxheSBlbnZpcm9ubWVudCANCiAgICAgICAgb2JqLkFjdGl2ZUFqYXhDb3VudCsrOw0KICAgICAgICByZXR1cm4gb2JqLlBlcmZvcm1BamF4RXhOb2RlSlMocG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uKTsNCiAgICB9DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBvYmoucGVuZGluZ0FqYXhDYWxsID0gW107DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBvYmouUGVyZm9ybUFqYXhFeE5vZGVKUyA9IGZ1bmN0aW9uIChwb3N0ZGF0YSwgY2FsbGJhY2ssIHRhZywgdXJsLCBhY3Rpb24pIHsgb2JqLlBlcmZvcm1BamF4RXhOb2RlSlMyKHBvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbiwgMyk7IH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIG9iai5QZXJmb3JtQWpheEV4Tm9kZUpTMiA9IGZ1bmN0aW9uIChwb3N0ZGF0YSwgY2FsbGJhY2ssIHRhZywgdXJsLCBhY3Rpb24sIHJldHJ5KSB7DQogICAgICAgIGlmIChyZXRyeSA8PSAwIHx8IG9iai5GYWlsQWxsRXJyb3IgIT0gMCkgew0KICAgICAgICAgICAgLy8gVG9vIG1hbnkgcmV0cnksIGZhaWwgaGVyZS4NCiAgICAgICAgICAgIG9iai5BY3RpdmVBamF4Q291bnQtLTsNCiAgICAgICAgICAgIGlmIChvYmouRmFpbEFsbEVycm9yICE9IDk5OSkgb2JqLmdvdE5leHRNZXNzYWdlcyhudWxsLCAnZXJyb3InLCB7IHN0YXR1czogKChvYmouRmFpbEFsbEVycm9yID09IDApID8gNDA4IDogb2JqLkZhaWxBbGxFcnJvcikgfSwgW3Bvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbl0pOyAvLyA0MDggaXMgdGltZW91dCBlcnJvcg0KICAgICAgICAgICAgb2JqLlBlcmZvcm1OZXh0QWpheCgpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIG9iai5wZW5kaW5nQWpheENhbGwucHVzaChbcG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uLCByZXRyeV0pOw0KICAgICAgICBpZiAob2JqLnNvY2tldFN0YXRlID09IDApIHsgb2JqLnh4Q29ubmVjdEh0dHBTb2NrZXQoKTsgfQ0KICAgICAgICBlbHNlIGlmIChvYmouc29ja2V0U3RhdGUgPT0gMikgeyBvYmouc2VuZFJlcXVlc3QocG9zdGRhdGEsIHVybCwgYWN0aW9uKTsgfQ0KICAgIH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZCAoQ29udGVudCBMZW5ndGggRW5jb2RpbmcpDQogICAgb2JqLnNlbmRSZXF1ZXN0ID0gZnVuY3Rpb24gKHBvc3RkYXRhLCB1cmwsIGFjdGlvbikgew0KICAgICAgICB1cmwgPSB1cmwgPyB1cmwgOiAiL3dzbWFuIjsNCiAgICAgICAgYWN0aW9uID0gYWN0aW9uID8gYWN0aW9uIDogIlBPU1QiOw0KICAgICAgICB2YXIgaCA9IGFjdGlvbiArICIgIiArIHVybCArICIgSFRUUC8xLjFcclxuIjsNCiAgICAgICAgaWYgKG9iai5jaGFsbGVuZ2VQYXJhbXMgIT0gbnVsbCkgew0KICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gaGV4X21kNShoZXhfbWQ1KG9iai51c2VyICsgJzonICsgb2JqLmNoYWxsZW5nZVBhcmFtc1sicmVhbG0iXSArICc6JyArIG9iai5wYXNzKSArICc6JyArIG9iai5jaGFsbGVuZ2VQYXJhbXNbIm5vbmNlIl0gKyAnOicgKyBvYmoubm9uY2Vjb3VudGVyICsgJzonICsgb2JqLmNub25jZSArICc6JyArIG9iai5jaGFsbGVuZ2VQYXJhbXNbInFvcCJdICsgJzonICsgaGV4X21kNShhY3Rpb24gKyAnOicgKyB1cmwpKTsNCiAgICAgICAgICAgIGggKz0gJ0F1dGhvcml6YXRpb246ICcgKyBvYmoucmVuZGVyRGlnZXN0KHsgInVzZXJuYW1lIjogb2JqLnVzZXIsICJyZWFsbSI6IG9iai5jaGFsbGVuZ2VQYXJhbXNbInJlYWxtIl0sICJub25jZSI6IG9iai5jaGFsbGVuZ2VQYXJhbXNbIm5vbmNlIl0sICJ1cmkiOiB1cmwsICJxb3AiOiBvYmouY2hhbGxlbmdlUGFyYW1zWyJxb3AiXSwgInJlc3BvbnNlIjogcmVzcG9uc2UsICJuYyI6IG9iai5ub25jZWNvdW50ZXIrKywgImNub25jZSI6IG9iai5jbm9uY2UgfSkgKyAnXHJcbic7DQogICAgICAgIH0NCiAgICAgICAgaCArPSAnSG9zdDogJyArIG9iai5ob3N0ICsgJzonICsgb2JqLnBvcnQgKyAnXHJcbkNvbnRlbnQtTGVuZ3RoOiAnICsgcG9zdGRhdGEubGVuZ3RoICsgJ1xyXG5cclxuJyArIHBvc3RkYXRhOyAvLyBVc2UgQ29udGVudC1MZW5ndGgNCiAgICAgICAgLy9oICs9ICdIb3N0OiAnICsgb2JqLmhvc3QgKyAnOicgKyBvYmoucG9ydCArICdcclxuVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicgKyBwb3N0ZGF0YS5sZW5ndGgudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyAnXHJcbicgKyBwb3N0ZGF0YSArICdcclxuMFxyXG5cclxuJzsgLy8gVXNlIENodW5rZWQtRW5jb2RpbmcNCiAgICAgICAgX1NlbmQoaCk7DQogICAgfQ0KDQogICAgLy8gV2Vic29ja2V0IHJlbGF5IHNwZWNpZmljIHByaXZhdGUgbWV0aG9kDQogICAgb2JqLnBhcnNlRGlnZXN0ID0gZnVuY3Rpb24gKGhlYWRlcikgew0KICAgICAgICB2YXIgdCA9IGhlYWRlci5zdWJzdHJpbmcoNykuc3BsaXQoJywnKTsNCiAgICAgICAgZm9yIChpIGluIHQpIHRbaV0gPSB0W2ldLnRyaW0oKTsNCiAgICAgICAgcmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uIChvYmosIHMpIHsgdmFyIHBhcnRzID0gcy5zcGxpdCgnPScpOyBvYmpbcGFydHNbMF1dID0gcGFydHNbMV0ucmVwbGFjZSgvIi9nLCAnJyk7IHJldHVybiBvYmo7IH0sIHt9KQ0KICAgIH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIG9iai5yZW5kZXJEaWdlc3QgPSBmdW5jdGlvbiAocGFyYW1zKSB7DQogICAgICAgIHZhciBwYXJhbXNuYW1lcyA9IFtdOw0KICAgICAgICBmb3IgKGkgaW4gcGFyYW1zKSB7IHBhcmFtc25hbWVzLnB1c2goaSk7IH0NCiAgICAgICAgcmV0dXJuICdEaWdlc3QgJyArIHBhcmFtc25hbWVzLnJlZHVjZShmdW5jdGlvbiAoczEsIGlpKSB7IHJldHVybiBzMSArICcsJyArIGlpICsgJz0iJyArIHBhcmFtc1tpaV0gKyAnIicgfSwgJycpLnN1YnN0cmluZygxKTsNCiAgICB9DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBvYmoueHhDb25uZWN0SHR0cFNvY2tldCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgLy9vYmouRGVidWcoInh4Q29ubmVjdEh0dHBTb2NrZXQiKTsNCiAgICAgICAgb2JqLmluRGF0YUNvdW50ID0gMDsNCiAgICAgICAgb2JqLnNvY2tldFN0YXRlID0gMTsNCiAgICAgICAgb2JqLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQod2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoImh0dHAiLCAid3MiKSArICIvLyIgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykpICsgIi93ZWJyZWxheS5hc2h4P3A9MSZob3N0PSIgKyBvYmouaG9zdCArICImcG9ydD0iICsgb2JqLnBvcnQgKyAiJnRscz0iICsgb2JqLnRscyArICImdGxzMW9ubHk9IiArIG9iai50bHN2MW9ubHkgKyAoKHVzZXIgPT0gJyonKSA/ICImc2VydmVyYXV0aD0xIiA6ICIiKSArICgodHlwZW9mIHBhc3MgPT09ICJ1bmRlZmluZWQiKSA/ICgiJnNlcnZlcmF1dGg9MSZ1c2VyPSIgKyB1c2VyKSA6ICIiKSk7IC8vIFRoZSAicD0xIiBpbmRpY2F0ZXMgdG8gdGhlIHJlbGF5IHRoYXQgdGhpcyBpcyBhIFdTTUFOIHNlc3Npb24NCiAgICAgICAgb2JqLnNvY2tldC5vbm9wZW4gPSBfT25Tb2NrZXRDb25uZWN0ZWQ7DQogICAgICAgIG9iai5zb2NrZXQub25tZXNzYWdlID0gX09uTWVzc2FnZTsNCiAgICAgICAgb2JqLnNvY2tldC5vbmNsb3NlID0gX09uU29ja2V0Q2xvc2VkOw0KICAgIH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIGZ1bmN0aW9uIF9PblNvY2tldENvbm5lY3RlZCgpIHsNCiAgICAgICAgb2JqLnNvY2tldFN0YXRlID0gMjsNCiAgICAgICAgb2JqLnNvY2tldFBhcnNlU3RhdGUgPSAwOw0KICAgICAgICBvYmouc29ja2V0QWNjdW11bGF0b3IgPSAnJzsNCiAgICAgICAgb2JqLnNvY2tldEhlYWRlciA9IG51bGw7DQogICAgICAgIG9iai5zb2NrZXREYXRhID0gJyc7DQogICAgICAgIC8vY29uc29sZS5sb2coInh4T25Tb2NrZXRDb25uZWN0ZWQiKTsNCiAgICAgICAgZm9yIChpIGluIG9iai5wZW5kaW5nQWpheENhbGwpIHsgb2JqLnNlbmRSZXF1ZXN0KG9iai5wZW5kaW5nQWpheENhbGxbaV1bMF0sIG9iai5wZW5kaW5nQWpheENhbGxbaV1bM10sIG9iai5wZW5kaW5nQWpheENhbGxbaV1bNF0pOyB9DQogICAgfQ0KDQogICAgLy8gU2V0dXAgdGhlIGZpbGUgcmVhZGVyDQogICAgdmFyIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOw0KICAgIHZhciBmaWxlUmVhZGVySW51c2UgPSBmYWxzZSwgZmlsZVJlYWRlckFjYyA9IFtdOw0KICAgIGlmIChmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZykgew0KICAgICAgICAvLyBDaHJvbWUgJiBGaXJlZm94IChEcmFmdCkNCiAgICAgICAgZmlsZVJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgeyBfT25Tb2NrZXREYXRhKGUudGFyZ2V0LnJlc3VsdCk7IGlmIChmaWxlUmVhZGVyQWNjLmxlbmd0aCA9PSAwKSB7IGZpbGVSZWFkZXJJbnVzZSA9IGZhbHNlOyB9IGVsc2UgeyBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhuZXcgQmxvYihbZmlsZVJlYWRlckFjYy5zaGlmdCgpXSkpOyB9IH0NCiAgICB9IGVsc2UgaWYgKGZpbGVSZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIpIHsNCiAgICAgICAgLy8gQ2hyb21lICYgRmlyZWZveCAoU3BlYykNCiAgICAgICAgZmlsZVJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbiAoZSkgeyBfT25Tb2NrZXREYXRhKGUudGFyZ2V0LnJlc3VsdCk7IGlmIChmaWxlUmVhZGVyQWNjLmxlbmd0aCA9PSAwKSB7IGZpbGVSZWFkZXJJbnVzZSA9IGZhbHNlOyB9IGVsc2UgeyBmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGVSZWFkZXJBY2Muc2hpZnQoKSk7IH0gfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIF9Pbk1lc3NhZ2UoZSkgew0KICAgICAgICBpZiAodHlwZW9mIGUuZGF0YSA9PSAnb2JqZWN0Jykgew0KICAgICAgICAgICAgaWYgKGZpbGVSZWFkZXJJbnVzZSA9PSB0cnVlKSB7IGZpbGVSZWFkZXJBY2MucHVzaChlLmRhdGEpOyByZXR1cm47IH0NCiAgICAgICAgICAgIGlmIChmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZykgew0KICAgICAgICAgICAgICAgIC8vIENocm9tZSAmIEZpcmVmb3ggKERyYWZ0KQ0KICAgICAgICAgICAgICAgIGZpbGVSZWFkZXJJbnVzZSA9IHRydWU7DQogICAgICAgICAgICAgICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcobmV3IEJsb2IoW2UuZGF0YV0pKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcikgew0KICAgICAgICAgICAgICAgIC8vIENocm9tZSAmIEZpcmVmb3ggKFNwZWMpDQogICAgICAgICAgICAgICAgZmlsZVJlYWRlckludXNlID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGUuZGF0YSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIElFMTAsIHJlYWRBc0JpbmFyeVN0cmluZyBkb2VzIG5vdCBleGlzdCwgdXNlIGFuIGFsdGVybmF0aXZlLg0KICAgICAgICAgICAgICAgIHZhciBiaW5hcnkgPSAiIiwgYnl0ZXMgPSBuZXcgVWludDhBcnJheShlLmRhdGEpLCBsZW5ndGggPSBieXRlcy5ieXRlTGVuZ3RoOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pOyB9DQogICAgICAgICAgICAgICAgX09uU29ja2V0RGF0YShiaW5hcnkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX09uU29ja2V0RGF0YShlLmRhdGEpOw0KICAgICAgICB9DQogICAgfTsNCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIGZ1bmN0aW9uIF9PblNvY2tldERhdGEoZGF0YSkgew0KICAgICAgICAvL29iai5EZWJ1ZygiX09uU29ja2V0RGF0YSAoIiArIGRhdGEubGVuZ3RoICsgIik6ICIgKyBkYXRhKTsNCg0KICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7DQogICAgICAgICAgICAvLyBUaGlzIGlzIGFuIEFycmF5QnVmZmVyLCBjb252ZXJ0IGl0IHRvIGEgc3RyaW5nIGFycmF5ICh1c2VkIGluIElFKQ0KICAgICAgICAgICAgdmFyIGJpbmFyeSA9ICIiLCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGRhdGEpLCBsZW5ndGggPSBieXRlcy5ieXRlTGVuZ3RoOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICAgICAgICAgIGRhdGEgPSBiaW5hcnk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGEgIT09ICdzdHJpbmcnKSByZXR1cm47DQoNCiAgICAgICAgLy9jb25zb2xlLmxvZygiUkVDVigiICsgb2JqLnNvY2tldFBhcnNlU3RhdGUgKyAiKTogIiArIGRhdGEpOyAvLyBERUJVRw0KDQogICAgICAgIG9iai5zb2NrZXRBY2N1bXVsYXRvciArPSBkYXRhOw0KICAgICAgICB3aGlsZSAodHJ1ZSkgew0KICAgICAgICAgICAgaWYgKG9iai5zb2NrZXRQYXJzZVN0YXRlID09IDApIHsNCiAgICAgICAgICAgICAgICB2YXIgaGVhZGVyc2l6ZSA9IG9iai5zb2NrZXRBY2N1bXVsYXRvci5pbmRleE9mKCJcclxuXHJcbiIpOw0KICAgICAgICAgICAgICAgIGlmIChoZWFkZXJzaXplIDwgMCkgcmV0dXJuOw0KICAgICAgICAgICAgICAgIC8vb2JqLkRlYnVnKG9iai5zb2NrZXRBY2N1bXVsYXRvci5zdWJzdHJpbmcoMCwgaGVhZGVyc2l6ZSkpOyAvLyBEaXNwbGF5IHJlY2VpdmVkIEhUVFAgaGVhZGVyDQogICAgICAgICAgICAgICAgb2JqLnNvY2tldEhlYWRlciA9IG9iai5zb2NrZXRBY2N1bXVsYXRvci5zdWJzdHJpbmcoMCwgaGVhZGVyc2l6ZSkuc3BsaXQoIlxyXG4iKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLmFtdFZlcnNpb24gPT0gbnVsbCkgeyBmb3IgKHZhciBpIGluIG9iai5zb2NrZXRIZWFkZXIpIHsgaWYgKG9iai5zb2NrZXRIZWFkZXJbaV0uaW5kZXhPZignU2VydmVyOiBJbnRlbChSKSBBY3RpdmUgTWFuYWdlbWVudCBUZWNobm9sb2d5ICcpID09IDApIHsgb2JqLmFtdFZlcnNpb24gPSBvYmouc29ja2V0SGVhZGVyW2ldLnN1YnN0cmluZyg0Nik7IH0gfSB9DQogICAgICAgICAgICAgICAgb2JqLnNvY2tldEFjY3VtdWxhdG9yID0gb2JqLnNvY2tldEFjY3VtdWxhdG9yLnN1YnN0cmluZyhoZWFkZXJzaXplICsgNCk7DQogICAgICAgICAgICAgICAgb2JqLnNvY2tldFBhcnNlU3RhdGUgPSAxOw0KICAgICAgICAgICAgICAgIG9iai5zb2NrZXREYXRhID0gJyc7DQogICAgICAgICAgICAgICAgb2JqLnNvY2tldFhIZWFkZXIgPSB7IERpcmVjdGl2ZTogb2JqLnNvY2tldEhlYWRlclswXS5zcGxpdCgnICcpIH07DQogICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiSGVhZGVyIiwgb2JqLnNvY2tldFhIZWFkZXIpOw0KICAgICAgICAgICAgICAgIGZvciAoaSBpbiBvYmouc29ja2V0SGVhZGVyKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpICE9IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4MiA9IG9iai5zb2NrZXRIZWFkZXJbaV0uaW5kZXhPZignOicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldFhIZWFkZXJbb2JqLnNvY2tldEhlYWRlcltpXS5zdWJzdHJpbmcoMCwgeDIpLnRvTG93ZXJDYXNlKCldID0gb2JqLnNvY2tldEhlYWRlcltpXS5zdWJzdHJpbmcoeDIgKyAyKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChvYmouc29ja2V0UGFyc2VTdGF0ZSA9PSAxKSB7DQogICAgICAgICAgICAgICAgdmFyIGNzaXplID0gLTE7DQogICAgICAgICAgICAgICAgaWYgKChvYmouc29ja2V0WEhlYWRlclsiY29ubmVjdGlvbiJdICE9IHVuZGVmaW5lZCkgJiYgKG9iai5zb2NrZXRYSGVhZGVyWyJjb25uZWN0aW9uIl0udG9Mb3dlckNhc2UoKSA9PSAnY2xvc2UnKSAmJiAoKG9iai5zb2NrZXRYSGVhZGVyWyJ0cmFuc2Zlci1lbmNvZGluZyJdID09IHVuZGVmaW5lZCkgfHwgKG9iai5zb2NrZXRYSGVhZGVyWyJ0cmFuc2Zlci1lbmNvZGluZyJdLnRvTG93ZXJDYXNlKCkgIT0gJ2NodW5rZWQnKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGJvZHkgZW5kcyB3aXRoIGEgY2xvc2UsIGluIHRoaXMgY2FzZSwgd2Ugd2lsbCBvbmx5IHByb2Nlc3MgdGhlIGhlYWRlcg0KICAgICAgICAgICAgICAgICAgICBjc2l6ZSA9IDA7DQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvYmouc29ja2V0WEhlYWRlclsiY29udGVudC1sZW5ndGgiXSAhPSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGJvZHkgbGVuZ3RoIGlzIHNwZWNpZmllZCBieSB0aGUgY29udGVudC1sZW5ndGgNCiAgICAgICAgICAgICAgICAgICAgY3NpemUgPSBwYXJzZUludChvYmouc29ja2V0WEhlYWRlclsiY29udGVudC1sZW5ndGgiXSk7DQogICAgICAgICAgICAgICAgICAgIGlmIChvYmouc29ja2V0QWNjdW11bGF0b3IubGVuZ3RoIDwgY3NpemUpIHJldHVybjsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBvYmouc29ja2V0QWNjdW11bGF0b3Iuc3Vic3RyaW5nKDAsIGNzaXplKTsNCiAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldEFjY3VtdWxhdG9yID0gb2JqLnNvY2tldEFjY3VtdWxhdG9yLnN1YnN0cmluZyhjc2l6ZSk7DQogICAgICAgICAgICAgICAgICAgIG9iai5zb2NrZXREYXRhID0gZGF0YTsNCiAgICAgICAgICAgICAgICAgICAgY3NpemUgPSAwOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFRoZSBib2R5IGlzIGNodW5rZWQNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNsZW4gPSBvYmouc29ja2V0QWNjdW11bGF0b3IuaW5kZXhPZigiXHJcbiIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoY2xlbiA8IDApIHJldHVybjsgLy8gQ2h1bmsgbGVuZ3RoIG5vdCBmb3VuZCwgZXhpdCBub3cgYW5kIGdldCBtb3JlIGRhdGEuDQogICAgICAgICAgICAgICAgICAgIC8vIENodW5rIGxlbmd0aCBpZiBmb3VuZCwgbGV0cyBzZWUgaWYgd2UgY2FuIGdldCB0aGUgZGF0YS4NCiAgICAgICAgICAgICAgICAgICAgY3NpemUgPSBwYXJzZUludChvYmouc29ja2V0QWNjdW11bGF0b3Iuc3Vic3RyaW5nKDAsIGNsZW4pLCAxNik7DQogICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihjc2l6ZSkpIHsgaWYgKG9iai53ZWJzb2NrZXQpIHsgb2JqLndlYnNvY2tldC5jbG9zZSgpOyB9IHJldHVybjsgfSAvLyBDcml0aWNhbCBlcnJvciwgY2xvc2UgdGhlIHNvY2tldCBhbmQgZXhpdC4NCiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5zb2NrZXRBY2N1bXVsYXRvci5sZW5ndGggPCBjbGVuICsgMiArIGNzaXplICsgMikgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAvLyBXZSBnb3QgYSBjaHVuayB3aXRoIGFsbCBvZiB0aGUgZGF0YSwgaGFuZGxlIHRoZSBjaHVuY2sgbm93Lg0KICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IG9iai5zb2NrZXRBY2N1bXVsYXRvci5zdWJzdHJpbmcoY2xlbiArIDIsIGNsZW4gKyAyICsgY3NpemUpOw0KICAgICAgICAgICAgICAgICAgICBvYmouc29ja2V0QWNjdW11bGF0b3IgPSBvYmouc29ja2V0QWNjdW11bGF0b3Iuc3Vic3RyaW5nKGNsZW4gKyAyICsgY3NpemUgKyAyKTsNCiAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldERhdGEgKz0gZGF0YTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGNzaXplID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy9vYmouRGVidWcoIl9PblNvY2tldERhdGEgRE9ORTogKCIgKyBvYmouc29ja2V0RGF0YS5sZW5ndGggKyAiKTogIiArIG9iai5zb2NrZXREYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgX1Byb2Nlc3NIdHRwUmVzcG9uc2Uob2JqLnNvY2tldFhIZWFkZXIsIG9iai5zb2NrZXREYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldFBhcnNlU3RhdGUgPSAwOw0KICAgICAgICAgICAgICAgICAgICBvYmouc29ja2V0SGVhZGVyID0gbnVsbDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfUHJvY2Vzc0h0dHBSZXNwb25zZShoZWFkZXIsIGRhdGEpIHsNCiAgICAgICAgLy9vYmouRGVidWcoIl9Qcm9jZXNzSHR0cFJlc3BvbnNlOiAiICsgaGVhZGVyLkRpcmVjdGl2ZVsxXSk7DQoNCiAgICAgICAgdmFyIHMgPSBwYXJzZUludChoZWFkZXIuRGlyZWN0aXZlWzFdKTsNCiAgICAgICAgaWYgKGlzTmFOKHMpKSB7DQogICAgICAgICAgICBzID0gNjAyOw0KICAgICAgICB9DQogICAgICAgIGlmIChzID09IDQwMSAmJiArKyhvYmouYXV0aGNvdW50ZXIpIDwgMykgew0KICAgICAgICAgICAgb2JqLmNoYWxsZW5nZVBhcmFtcyA9IG9iai5wYXJzZURpZ2VzdChoZWFkZXJbJ3d3dy1hdXRoZW50aWNhdGUnXSk7IC8vIFNldCB0aGUgZGlnZXN0IHBhcmFtZXRlcnMsIGFmdGVyIHRoaXMsIHRoZSBzb2NrZXQgd2lsbCBjbG9zZSBhbmQgd2Ugd2lsbCBhdXRvLXJldHJ5DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB2YXIgciA9IG9iai5wZW5kaW5nQWpheENhbGwuc2hpZnQoKTsNCiAgICAgICAgICAgIC8vIGlmIChzICE9IDIwMCkgeyBvYmouRGVidWcoIkVycm9yLCBzdGF0dXM9IiArIHMgKyAiXHJcblxyXG5yZXE9IiArIHJbMF0gKyAiXHJcblxyXG5yZXNwPSIgKyBkYXRhKTsgfSAvLyBEZWJ1ZzogRGlzcGxheSB0aGUgcmVxdWVzdCAmIHJlc3BvbnNlIGlmIHNvbWV0aGluZyBkaWQgbm90IHdvcmsuDQogICAgICAgICAgICBvYmouYXV0aGNvdW50ZXIgPSAwOw0KICAgICAgICAgICAgb2JqLkFjdGl2ZUFqYXhDb3VudC0tOw0KICAgICAgICAgICAgb2JqLmdvdE5leHRNZXNzYWdlcyhkYXRhLCAnc3VjY2VzcycsIHsgc3RhdHVzOiBzIH0sIHIpOw0KICAgICAgICAgICAgb2JqLlBlcmZvcm1OZXh0QWpheCgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gV2Vic29ja2V0IHJlbGF5IHNwZWNpZmljIHByaXZhdGUgbWV0aG9kDQogICAgZnVuY3Rpb24gX09uU29ja2V0Q2xvc2VkKGRhdGEpIHsNCiAgICAgICAgLy9jb25zb2xlLmxvZygiX09uU29ja2V0Q2xvc2VkIik7DQogICAgICAgIGlmIChvYmouaW5EYXRhQ291bnQgPT0gMCkgeyBvYmoudGxzdjFvbmx5ID0gKDEgLSBvYmoudGxzdjFvbmx5KTsgfQ0KICAgICAgICBvYmouc29ja2V0U3RhdGUgPSAwOw0KICAgICAgICBpZiAob2JqLnNvY2tldCAhPSBudWxsKSB7IG9iai5zb2NrZXQuY2xvc2UoKTsgb2JqLnNvY2tldCA9IG51bGw7IH0NCiAgICAgICAgaWYgKG9iai5wZW5kaW5nQWpheENhbGwubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgdmFyIHIgPSBvYmoucGVuZGluZ0FqYXhDYWxsLnNoaWZ0KCk7DQogICAgICAgICAgICB2YXIgcmV0cnkgPSByWzVdOw0KICAgICAgICAgICAgb2JqLlBlcmZvcm1BamF4RXhOb2RlSlMyKHJbMF0sIHJbMV0sIHJbMl0sIHJbM10sIHJbNF0sIC0tcmV0cnkpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gV2Vic29ja2V0IHJlbGF5IHNwZWNpZmljIHByaXZhdGUgbWV0aG9kDQogICAgZnVuY3Rpb24gX1NlbmQoeCkgew0KICAgICAgICAvL2NvbnNvbGUubG9nKCJTRU5EOiAiICsgeCk7IC8vIERFQlVHDQogICAgICAgIGlmIChvYmouc29ja2V0U3RhdGUgPT0gMiAmJiBvYmouc29ja2V0ICE9IG51bGwgJiYgb2JqLnNvY2tldC5yZWFkeVN0YXRlID09IFdlYlNvY2tldC5PUEVOKSB7DQogICAgICAgICAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KHgubGVuZ3RoKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7ICsraSkgeyBiW2ldID0geC5jaGFyQ29kZUF0KGkpOyB9DQogICAgICAgICAgICB0cnkgeyBvYmouc29ja2V0LnNlbmQoYi5idWZmZXIpOyB9IGNhdGNoIChlKSB7IH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgb2JqLmdvdE5leHRNZXNzYWdlcyA9IGZ1bmN0aW9uIChkYXRhLCBzdGF0dXMsIHJlcXVlc3QsIGNhbGxBcmdzKSB7DQogICAgICAgIGlmIChvYmouRmFpbEFsbEVycm9yID09IDk5OSkgcmV0dXJuOw0KICAgICAgICBpZiAob2JqLkZhaWxBbGxFcnJvciAhPSAwKSB7IGNhbGxBcmdzWzFdKG51bGwsIG9iai5GYWlsQWxsRXJyb3IsIGNhbGxBcmdzWzJdKTsgcmV0dXJuOyB9DQogICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyAhPSAyMDApIHsgY2FsbEFyZ3NbMV0obnVsbCwgcmVxdWVzdC5zdGF0dXMsIGNhbGxBcmdzWzJdKTsgcmV0dXJuOyB9DQogICAgICAgIGNhbGxBcmdzWzFdKGRhdGEsIDIwMCwgY2FsbEFyZ3NbMl0pOw0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgb2JqLmdvdE5leHRNZXNzYWdlc0Vycm9yID0gZnVuY3Rpb24gKHJlcXVlc3QsIHN0YXR1cywgZXJyb3JUaHJvd24sIGNhbGxBcmdzKSB7DQogICAgICAgIGlmIChvYmouRmFpbEFsbEVycm9yID09IDk5OSkgcmV0dXJuOw0KICAgICAgICBpZiAob2JqLkZhaWxBbGxFcnJvciAhPSAwKSB7IGNhbGxBcmdzWzFdKG51bGwsIG9iai5GYWlsQWxsRXJyb3IsIGNhbGxBcmdzWzJdKTsgcmV0dXJuOyB9DQogICAgICAgIGNhbGxBcmdzWzFdKG9iaiwgbnVsbCwgeyBIZWFkZXI6IHsgSHR0cEVycm9yOiByZXF1ZXN0LnN0YXR1cyB9IH0sIHJlcXVlc3Quc3RhdHVzLCBjYWxsQXJnc1syXSk7DQogICAgfQ0KDQogICAgLy8gQ2FuY2VsIGFsbCBwZW5kaW5nIHF1ZXJpZXMgd2l0aCBnaXZlbiBzdGF0dXMNCiAgICBvYmouQ2FuY2VsQWxsUXVlcmllcyA9IGZ1bmN0aW9uIChzKSB7DQogICAgICAgIHdoaWxlIChvYmouUGVuZGluZ0FqYXgubGVuZ3RoID4gMCkgeyB2YXIgeCA9IG9iai5QZW5kaW5nQWpheC5zaGlmdCgpOyB4WzFdKG51bGwsIHMsIHhbMl0pOyB9DQogICAgICAgIGlmIChvYmoud2Vic29ja2V0ICE9IG51bGwpIHsgb2JqLndlYnNvY2tldC5jbG9zZSgpOyBvYmoud2Vic29ja2V0ID0gbnVsbDsgb2JqLnNvY2tldFN0YXRlID0gMDsgfQ0KICAgIH0NCg0KICAgIHJldHVybiBvYmo7DQp9DQoNCi8qKiANCiogQGRlc2NyaXB0aW9uIEludGVsKHIpIEFNVCBXU01BTiBTdGFjaw0KKiBAYXV0aG9yIFlsaWFuIFNhaW50LUhpbGFpcmUNCiogQHZlcnNpb24gdjAuMi4wDQoqLw0KDQovLyBDb25zdHJ1Y3QgYSBNZXNoU2VydmVyIG9iamVjdA0KdmFyIFdzbWFuU3RhY2tDcmVhdGVTZXJ2aWNlID0gZnVuY3Rpb24gKGhvc3QsIHBvcnQsIHVzZXIsIHBhc3MsIHRscywgZXh0cmEpIHsNCiAgICB2YXIgb2JqID0ge307DQogICAgLy9vYmoub25EZWJ1Z01lc3NhZ2UgPSBudWxsOyAgICAgICAgICAvLyBTZXQgdG8gYSBmdW5jdGlvbiBpZiB5b3Ugd2FudCB0byBnZXQgZGVidWcgbWVzc2FnZXMuDQogICAgb2JqLk5leHRNZXNzYWdlSWQgPSAxOyAgICAgICAgICAgICAgLy8gTmV4dCBtZXNzYWdlIG51bWJlciwgdXNlZCB0byBsYWJlbCBXU01BTiBjYWxscy4NCiAgICBvYmouQWRkcmVzcyA9ICcvd3NtYW4nOw0KICAgIG9iai5jb21tID0gQ3JlYXRlV3NtYW5Db21tKGhvc3QsIHBvcnQsIHVzZXIsIHBhc3MsIHRscywgZXh0cmEpOw0KDQogICAgb2JqLlBlcmZvcm1BamF4ID0gZnVuY3Rpb24gKHBvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCBwcmksIG5hbWVzcGFjZXMpIHsNCiAgICAgICAgaWYgKG5hbWVzcGFjZXMgPT0gbnVsbCkgbmFtZXNwYWNlcyA9ICcnOw0KICAgICAgICBvYmouY29tbS5QZXJmb3JtQWpheCgnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+PEVudmVsb3BlIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIgeG1sbnM6eHNkPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWFcIiB4bWxuczphPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciIHhtbG5zOnc9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3BlXCIgJyArIG5hbWVzcGFjZXMgKyAnPjxIZWFkZXI+PGE6QWN0aW9uPicgKyBwb3N0ZGF0YSwgZnVuY3Rpb24gKGRhdGEsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBjYWxsYmFjayhvYmosIG51bGwsIHsgSGVhZGVyOiB7IEh0dHBFcnJvcjogc3RhdHVzIH0gfSwgc3RhdHVzLCB0YWcpOyByZXR1cm47IH0NCiAgICAgICAgICAgIHZhciB3c3Jlc3BvbnNlID0gb2JqLlBhcnNlV3NtYW4oZGF0YSk7DQogICAgICAgICAgICBpZiAoIXdzcmVzcG9uc2UgfHwgd3NyZXNwb25zZSA9PSBudWxsKSB7IGNhbGxiYWNrKG9iaiwgbnVsbCwgeyBIZWFkZXI6IHsgSHR0cEVycm9yOiBzdGF0dXMgfSB9LCA2MDEsIHRhZyk7IH0gZWxzZSB7IGNhbGxiYWNrKG9iaiwgd3NyZXNwb25zZS5IZWFkZXJbIlJlc291cmNlVVJJIl0sIHdzcmVzcG9uc2UsIDIwMCwgdGFnKTsgfQ0KICAgICAgICB9LCB0YWcsIHByaSk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICAvL29iai5EZWJ1ZyA9IGZ1bmN0aW9uIChtc2cpIHsgLypjb25zb2xlLmxvZyhtc2cpOyovIH0NCg0KICAgIC8vIENhbmNlbCBhbGwgcGVuZGluZyBxdWVyaWVzIHdpdGggZ2l2ZW4gc3RhdHVzDQogICAgb2JqLkNhbmNlbEFsbFF1ZXJpZXMgPSBmdW5jdGlvbiAocykgeyBvYmouY29tbS5DYW5jZWxBbGxRdWVyaWVzKHMpOyB9DQoNCiAgICAvLyBHZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBhIFVSSSBzdHJpbmcNCiAgICBvYmouR2V0TmFtZUZyb21VcmwgPSBmdW5jdGlvbiAocmVzdXJpKSB7DQogICAgICAgIHZhciB4ID0gcmVzdXJpLmxhc3RJbmRleE9mKCIvIik7DQogICAgICAgIHJldHVybiAoeCA9PSAtMSk/cmVzdXJpOnJlc3VyaS5zdWJzdHJpbmcoeCArIDEpOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiBTdWJzY3JpYmUgb3BlcmF0aW9uDQogICAgb2JqLkV4ZWNTdWJzY3JpYmUgPSBmdW5jdGlvbiAocmVzdXJpLCBkZWxpdmVyeSwgdXJsLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycywgb3BhcXVlLCB1c2VyLCBwYXNzKSB7DQogICAgICAgIHZhciBkaWdlc3QgPSAiIiwgZGlnZXN0MiA9ICIiLCBvcGFxdWUgPSAiIjsNCiAgICAgICAgaWYgKHVzZXIgIT0gbnVsbCAmJiBwYXNzICE9IG51bGwpIHsgZGlnZXN0ID0gJzx0Oklzc3VlZFRva2VucyB4bWxuczp0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzAyL3RydXN0IiB4bWxuczpzZT0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkIj48dDpSZXF1ZXN0U2VjdXJpdHlUb2tlblJlc3BvbnNlPjx0OlRva2VuVHlwZT5odHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXVzZXJuYW1lLXRva2VuLXByb2ZpbGUtMS4wI1VzZXJuYW1lVG9rZW48L3Q6VG9rZW5UeXBlPjx0OlJlcXVlc3RlZFNlY3VyaXR5VG9rZW4+PHNlOlVzZXJuYW1lVG9rZW4+PHNlOlVzZXJuYW1lPicgKyB1c2VyICsgJzwvc2U6VXNlcm5hbWU+PHNlOlBhc3N3b3JkIFR5cGU9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZCNQYXNzd29yZFRleHQiPicgKyBwYXNzICsgJzwvc2U6UGFzc3dvcmQ+PC9zZTpVc2VybmFtZVRva2VuPjwvdDpSZXF1ZXN0ZWRTZWN1cml0eVRva2VuPjwvdDpSZXF1ZXN0U2VjdXJpdHlUb2tlblJlc3BvbnNlPjwvdDpJc3N1ZWRUb2tlbnM+JzsgZGlnZXN0MiA9ICc8dzpBdXRoIFByb2ZpbGU9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi9zZWNwcm9maWxlL2h0dHAvZGlnZXN0Ii8+JzsgfQ0KICAgICAgICBpZiAob3BhcXVlICE9IG51bGwpIHsgb3BhcXVlID0gJzxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+PG06YXJnPicgKyBvcGFxdWUgKyAnPC9tOmFyZz48L2E6UmVmZXJlbmNlUGFyYW1ldGVycz4nOyB9DQogICAgICAgIGlmIChkZWxpdmVyeSA9PSAnUHVzaFdpdGhBY2snKSB7IGRlbGl2ZXJ5ID0gJ2RtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi9QdXNoV2l0aEFjayc7IH0gZWxzZSBpZiAoZGVsaXZlcnkgPT0gJ1B1c2gnKSB7IGRlbGl2ZXJ5ID0gJ3htbHNvYXAub3JnL3dzLzIwMDQvMDgvZXZlbnRpbmcvRGVsaXZlcnlNb2Rlcy9QdXNoJzsgfQ0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2V2ZW50aW5nL1N1YnNjcmliZTwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz4iICsgX1B1dE9ialRvU2VsZWN0b3JzWG1sKHNlbGVjdG9ycykgKyBkaWdlc3QgKyAnPC9IZWFkZXI+PEJvZHk+PGU6U3Vic2NyaWJlPjxlOkRlbGl2ZXJ5IE1vZGU9Imh0dHA6Ly9zY2hlbWFzLicgKyBkZWxpdmVyeSArICciPjxlOk5vdGlmeVRvPjxhOkFkZHJlc3M+JyArIHVybCArICc8L2E6QWRkcmVzcz4nICsgb3BhcXVlICsgJzwvZTpOb3RpZnlUbz4nICsgZGlnZXN0MiArICc8L2U6RGVsaXZlcnk+PC9lOlN1YnNjcmliZT4nOw0KICAgICAgICBvYmouUGVyZm9ybUFqYXgoZGF0YSArICI8L0JvZHk+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmksICd4bWxuczplPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2V2ZW50aW5nIiB4bWxuczptPSJodHRwOi8veC5jb20iJyk7DQogICAgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIFVuU3Vic2NyaWJlIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjVW5TdWJzY3JpYmUgPSBmdW5jdGlvbiAocmVzdXJpLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2V2ZW50aW5nL1Vuc3Vic2NyaWJlPC9hOkFjdGlvbj48YTpUbz4iICsgb2JqLkFkZHJlc3MgKyAiPC9hOlRvPjx3OlJlc291cmNlVVJJPiIgKyByZXN1cmkgKyAiPC93OlJlc291cmNlVVJJPjxhOk1lc3NhZ2VJRD4iICsgKG9iai5OZXh0TWVzc2FnZUlkKyspICsgIjwvYTpNZXNzYWdlSUQ+PGE6UmVwbHlUbz48YTpBZGRyZXNzPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9yb2xlL2Fub255bW91czwvYTpBZGRyZXNzPjwvYTpSZXBseVRvPiIgKyBfUHV0T2JqVG9TZWxlY3RvcnNYbWwoc2VsZWN0b3JzKSArICc8L0hlYWRlcj48Qm9keT48ZTpVbnN1YnNjcmliZS8+JzsNCiAgICAgICAgb2JqLlBlcmZvcm1BamF4KGRhdGEgKyAiPC9Cb2R5PjwvRW52ZWxvcGU+IiwgY2FsbGJhY2ssIHRhZywgcHJpLCAneG1sbnM6ZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9ldmVudGluZyInKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gUFVUIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjUHV0ID0gZnVuY3Rpb24gKHJlc3VyaSwgcHV0b2JqLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L3RyYW5zZmVyL1B1dDwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjAuMDAwUzwvdzpPcGVyYXRpb25UaW1lb3V0PiIgKyBfUHV0T2JqVG9TZWxlY3RvcnNYbWwoc2VsZWN0b3JzKSArICc8L0hlYWRlcj48Qm9keT4nICsgX1B1dE9ialRvQm9keVhtbChyZXN1cmksIHB1dG9iaik7DQogICAgICAgIG9iai5QZXJmb3JtQWpheChkYXRhICsgIjwvQm9keT48L0VudmVsb3BlPiIsIGNhbGxiYWNrLCB0YWcsIHByaSk7DQogICAgfQ0KCQkNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gQ1JFQVRFIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjQ3JlYXRlID0gZnVuY3Rpb24gKHJlc3VyaSwgcHV0b2JqLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICB2YXIgb2JqbmFtZSA9IG9iai5HZXROYW1lRnJvbVVybChyZXN1cmkpOw0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L3RyYW5zZmVyL0NyZWF0ZTwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+IiArIF9QdXRPYmpUb1NlbGVjdG9yc1htbChzZWxlY3RvcnMpICsgIjwvSGVhZGVyPjxCb2R5PjxnOiIgKyBvYmpuYW1lICsgIiB4bWxuczpnPVwiIiArIHJlc3VyaSArICJcIj4iOw0KICAgICAgICBmb3IgKHZhciBuIGluIHB1dG9iaikgeyBkYXRhICs9ICI8ZzoiICsgbiArICI+IiArIHB1dG9ialtuXSArICI8L2c6IiArIG4gKyAiPiIgfSANCiAgICAgICAgb2JqLlBlcmZvcm1BamF4KGRhdGEgKyAiPC9nOiIgKyBvYmpuYW1lICsgIj48L0JvZHk+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmkpOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiBERUxFVEUgb3BlcmF0aW9uDQogICAgb2JqLkV4ZWNEZWxldGUgPSBmdW5jdGlvbiAocmVzdXJpLCBwdXRvYmosIGNhbGxiYWNrLCB0YWcsIHByaSkgew0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L3RyYW5zZmVyL0RlbGV0ZTwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+IiArIF9QdXRPYmpUb1NlbGVjdG9yc1htbChwdXRvYmopICsgIjwvSGVhZGVyPjxCb2R5IC8+PC9FbnZlbG9wZT4iOw0KICAgICAgICBvYmouUGVyZm9ybUFqYXgoZGF0YSwgY2FsbGJhY2ssIHRhZywgcHJpKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gR0VUIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjR2V0ID0gZnVuY3Rpb24gKHJlc3VyaSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIG9iai5QZXJmb3JtQWpheCgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOS90cmFuc2Zlci9HZXQ8L2E6QWN0aW9uPjxhOlRvPiIgKyBvYmouQWRkcmVzcyArICI8L2E6VG8+PHc6UmVzb3VyY2VVUkk+IiArIHJlc3VyaSArICI8L3c6UmVzb3VyY2VVUkk+PGE6TWVzc2FnZUlEPiIgKyAob2JqLk5leHRNZXNzYWdlSWQrKykgKyAiPC9hOk1lc3NhZ2VJRD48YTpSZXBseVRvPjxhOkFkZHJlc3M+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9hOkFkZHJlc3M+PC9hOlJlcGx5VG8+PHc6T3BlcmF0aW9uVGltZW91dD5QVDYwUzwvdzpPcGVyYXRpb25UaW1lb3V0PjwvSGVhZGVyPjxCb2R5IC8+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmkpOw0KICAgIH0NCg0KCS8vIFBlcmZvcm0gYSBXU01BTiBtZXRob2QgY2FsbCBvcGVyYXRpb24NCiAgICBvYmouRXhlY01ldGhvZCA9IGZ1bmN0aW9uIChyZXN1cmksIG1ldGhvZCwgYXJncywgY2FsbGJhY2ssIHRhZywgcHJpLCBzZWxlY3RvcnMpIHsNCiAgICAgICAgdmFyIGFyZ3N4bWwgPSAiIjsNCiAgICAgICAgZm9yICh2YXIgaSBpbiBhcmdzKSB7IGlmIChhcmdzW2ldICE9IG51bGwpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJnc1tpXSkpIHsgZm9yICh2YXIgeCBpbiBhcmdzW2ldKSB7IGFyZ3N4bWwgKz0gIjxyOiIgKyBpICsgIj4iICsgYXJnc1tpXVt4XSArICI8L3I6IiArIGkgKyAiPiI7IH0gfSBlbHNlIHsgYXJnc3htbCArPSAiPHI6IiArIGkgKyAiPiIgKyBhcmdzW2ldICsgIjwvcjoiICsgaSArICI+IjsgfSB9IH0NCiAgICAgICAgb2JqLkV4ZWNNZXRob2RYbWwocmVzdXJpLCBtZXRob2QsIGFyZ3N4bWwsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKTsNCiAgICB9DQoJDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIG1ldGhvZCBjYWxsIG9wZXJhdGlvbi4gVGhlIGFyZ3VtZW50cyBhcmUgYWxyZWFkeSBmb3JtYXR0ZWQgaW4gWE1MLg0KICAgIG9iai5FeGVjTWV0aG9kWG1sID0gZnVuY3Rpb24gKHJlc3VyaSwgbWV0aG9kLCBhcmdzeG1sLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICBvYmouUGVyZm9ybUFqYXgocmVzdXJpICsgIi8iICsgbWV0aG9kICsgIjwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+IiArIF9QdXRPYmpUb1NlbGVjdG9yc1htbChzZWxlY3RvcnMpICsgIjwvSGVhZGVyPjxCb2R5PjxyOiIgKyBtZXRob2QgKyAnX0lOUFVUJyArICIgeG1sbnM6cj1cIiIgKyByZXN1cmkgKyAiXCI+IiArIGFyZ3N4bWwgKyAiPC9yOiIgKyBtZXRob2QgKyAiX0lOUFVUPjwvQm9keT48L0VudmVsb3BlPiIsIGNhbGxiYWNrLCB0YWcsIHByaSk7DQogICAgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIEVOVU0gb3BlcmF0aW9uDQogICAgb2JqLkV4ZWNFbnVtID0gZnVuY3Rpb24gKHJlc3VyaSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIG9iai5QZXJmb3JtQWpheCgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOS9lbnVtZXJhdGlvbi9FbnVtZXJhdGU8L2E6QWN0aW9uPjxhOlRvPiIgKyBvYmouQWRkcmVzcyArICI8L2E6VG8+PHc6UmVzb3VyY2VVUkk+IiArIHJlc3VyaSArICI8L3c6UmVzb3VyY2VVUkk+PGE6TWVzc2FnZUlEPiIgKyAob2JqLk5leHRNZXNzYWdlSWQrKykgKyAiPC9hOk1lc3NhZ2VJRD48YTpSZXBseVRvPjxhOkFkZHJlc3M+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9hOkFkZHJlc3M+PC9hOlJlcGx5VG8+PHc6T3BlcmF0aW9uVGltZW91dD5QVDYwUzwvdzpPcGVyYXRpb25UaW1lb3V0PjwvSGVhZGVyPjxCb2R5PjxFbnVtZXJhdGUgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L2VudW1lcmF0aW9uXCIgLz48L0JvZHk+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmkpOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiBQVUxMIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjUHVsbCA9IGZ1bmN0aW9uIChyZXN1cmksIGVudW1jdHgsIGNhbGxiYWNrLCB0YWcsIHByaSkgew0KICAgICAgICBvYmouUGVyZm9ybUFqYXgoImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDkvZW51bWVyYXRpb24vUHVsbDwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+PC9IZWFkZXI+PEJvZHk+PFB1bGwgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L2VudW1lcmF0aW9uXCI+PEVudW1lcmF0aW9uQ29udGV4dD4iICsgZW51bWN0eCArICI8L0VudW1lcmF0aW9uQ29udGV4dD48L1B1bGw+PC9Cb2R5PjwvRW52ZWxvcGU+IiwgY2FsbGJhY2ssIHRhZywgcHJpKTsgLy8gPC9FbnVtZXJhdGlvbkNvbnRleHQ+LS08TWF4RWxlbWVudHM+OTk5PC9NYXhFbGVtZW50cz48TWF4Q2hhcmFjdGVycz45OTk5OTwvTWF4Q2hhcmFjdGVycz4tLTwvUHVsbD4NCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIG9iai5QYXJzZVdzbWFuID0gZnVuY3Rpb24gKHhtbCkgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgaWYgKCF4bWwuY2hpbGROb2RlcykgeG1sID0gX3R1cm5Ub1htbCh4bWwpOw0KICAgICAgICAgICAgdmFyIHIgPSB7IEhlYWRlcjp7fSB9LCBoZWFkZXIgPSB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkhlYWRlciIpWzBdLCB0Ow0KICAgICAgICAgICAgaWYgKCFoZWFkZXIpIGhlYWRlciA9IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYTpIZWFkZXIiKVswXTsNCiAgICAgICAgICAgIGlmICghaGVhZGVyKSByZXR1cm4gbnVsbDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVyLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBoZWFkZXIuY2hpbGROb2Rlc1tpXTsNCiAgICAgICAgICAgICAgICByLkhlYWRlcltjaGlsZC5sb2NhbE5hbWVdID0gY2hpbGQudGV4dENvbnRlbnQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgYm9keSA9IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQm9keSIpWzBdOw0KICAgICAgICAgICAgaWYgKCFib2R5KSBib2R5ID0geG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhOkJvZHkiKVswXTsNCiAgICAgICAgICAgIGlmICghYm9keSkgcmV0dXJuIG51bGw7DQogICAgICAgICAgICBpZiAoYm9keS5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB0ID0gYm9keS5jaGlsZE5vZGVzWzBdLmxvY2FsTmFtZTsNCiAgICAgICAgICAgICAgICBpZiAodC5pbmRleE9mKCJfT1VUUFVUIikgPT0gdC5sZW5ndGggLSA3KSB7IHQgPSB0LnN1YnN0cmluZygwLCB0Lmxlbmd0aCAtIDcpOyB9DQogICAgICAgICAgICAgICAgci5IZWFkZXJbJ01ldGhvZCddID0gdDsNCiAgICAgICAgICAgICAgICByLkJvZHkgPSBfUGFyc2VXc21hblJlYyhib2R5LmNoaWxkTm9kZXNbMF0pOw0KCQkgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHI7DQogICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJVbmFibGUgdG8gcGFyc2UgWE1MOiAiICsgeG1sKTsNCiAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfUGFyc2VXc21hblJlYyhub2RlKSB7DQogICAgICAgIHZhciBkYXRhLCByID0ge307DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkTm9kZXNbaV07DQogICAgICAgICAgICBpZiAoKGNoaWxkLmNoaWxkRWxlbWVudENvdW50ID09IG51bGwpIHx8IChjaGlsZC5jaGlsZEVsZW1lbnRDb3VudCA9PSAwKSkgeyBkYXRhID0gY2hpbGQudGV4dENvbnRlbnQ7IH0gZWxzZSB7IGRhdGEgPSBfUGFyc2VXc21hblJlYyhjaGlsZCk7IH0NCiAgICAgICAgICAgIGlmIChkYXRhID09ICd0cnVlJykgZGF0YSA9IHRydWU7IC8vIENvbnZlcnQgJ3RydWUnIGludG8gdHJ1ZQ0KICAgICAgICAgICAgaWYgKGRhdGEgPT0gJ2ZhbHNlJykgZGF0YSA9IGZhbHNlOyAvLyBDb252ZXJ0ICdmYWxzZScgaW50byBmYWxzZQ0KICAgICAgICAgICAgaWYgKChwYXJzZUludChkYXRhKSArICcnKSA9PT0gZGF0YSkgZGF0YSA9IHBhcnNlSW50KGRhdGEpOyAvLyBDb252ZXJ0IGludGVnZXJzDQoNCiAgICAgICAgICAgIHZhciBjaGlsZE9iaiA9IGRhdGE7DQogICAgICAgICAgICBpZiAoKGNoaWxkLmF0dHJpYnV0ZXMgIT0gbnVsbCkgJiYgKGNoaWxkLmF0dHJpYnV0ZXMubGVuZ3RoID4gMCkpIHsNCgkJCQljaGlsZE9iaiA9IHsgJ1ZhbHVlJzogZGF0YSB9Ow0KCQkJCWZvcih2YXIgaiA9IDA7IGogPCBjaGlsZC5hdHRyaWJ1dGVzLmxlbmd0aDsgaisrKSB7DQoJCQkJCWNoaWxkT2JqWydAJyArIGNoaWxkLmF0dHJpYnV0ZXNbal0ubmFtZV0gPSBjaGlsZC5hdHRyaWJ1dGVzW2pdLnZhbHVlOw0KCQkJCX0NCgkJCX0NCgkJCQ0KICAgICAgICAgICAgaWYgKHJbY2hpbGQubG9jYWxOYW1lXSBpbnN0YW5jZW9mIEFycmF5KSB7IHJbY2hpbGQubG9jYWxOYW1lXS5wdXNoKGNoaWxkT2JqKTsgfQ0KICAgICAgICAgICAgZWxzZSBpZiAocltjaGlsZC5sb2NhbE5hbWVdID09IG51bGwpIHsgcltjaGlsZC5sb2NhbE5hbWVdID0gY2hpbGRPYmo7IH0NCiAgICAgICAgICAgIGVsc2UgeyByW2NoaWxkLmxvY2FsTmFtZV0gPSBbcltjaGlsZC5sb2NhbE5hbWVdLCBjaGlsZE9ial07IH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcjsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBfUHV0T2JqVG9Cb2R5WG1sKHJlc3VyaSwgcHV0T2JqKSB7DQogICAgICAgIGlmICghcmVzdXJpIHx8IHB1dE9iaiA9PSBudWxsKSByZXR1cm4gJyc7DQoJCXZhciBvYmpuYW1lID0gb2JqLkdldE5hbWVGcm9tVXJsKHJlc3VyaSk7DQoJCXZhciByZXN1bHQgPSAnPHI6JyArIG9iam5hbWUgKyAnIHhtbG5zOnI9IicgKyByZXN1cmkgKyAnIj4nOw0KDQoJCWZvciAodmFyIHByb3AgaW4gcHV0T2JqKSB7DQoJCQlpZiAoIXB1dE9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB8fCBwcm9wLmluZGV4T2YoJ19fJykgPT09IDAgfHwgcHJvcC5pbmRleE9mKCdAJykgPT09IDApIGNvbnRpbnVlOw0KCQkJaWYgKHB1dE9ialtwcm9wXSA9PSBudWxsIHx8IHR5cGVvZiBwdXRPYmpbcHJvcF0gPT09ICdmdW5jdGlvbicpIGNvbnRpbnVlOw0KCQkJaWYgKHR5cGVvZiBwdXRPYmpbcHJvcF0gPT09ICdvYmplY3QnICYmIHB1dE9ialtwcm9wXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddKSB7DQoJCQkJcmVzdWx0ICs9ICc8cjonICsgcHJvcCArICc+PGE6QWRkcmVzcz4nICsgcHV0T2JqW3Byb3BdLkFkZHJlc3MgKyAnPC9hOkFkZHJlc3M+PGE6UmVmZXJlbmNlUGFyYW1ldGVycz48dzpSZXNvdXJjZVVSST4nICsgcHV0T2JqW3Byb3BdWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bIlJlc291cmNlVVJJIl0gKyAnPC93OlJlc291cmNlVVJJPjx3OlNlbGVjdG9yU2V0Pic7DQoJCQkJdmFyIHNlbGVjdG9yQXJyYXkgPSBwdXRPYmpbcHJvcF1bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXTsNCgkJCQlpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RvckFycmF5KSkgew0KCQkJCQlmb3IgKHZhciBpPTA7IGk8IHNlbGVjdG9yQXJyYXkubGVuZ3RoOyBpKyspIHsNCgkJCQkJCXJlc3VsdCArPSAnPHc6U2VsZWN0b3InICsgX09iamVjdFRvWG1sQXR0cmlidXRlcyhzZWxlY3RvckFycmF5W2ldKSArICc+JyArIHNlbGVjdG9yQXJyYXlbaV1bJ1ZhbHVlJ10gKyAnPC93OlNlbGVjdG9yPic7DQoJCQkJCX0NCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCXJlc3VsdCArPSAnPHc6U2VsZWN0b3InICsgX09iamVjdFRvWG1sQXR0cmlidXRlcyhzZWxlY3RvckFycmF5KSArICc+JyArIHNlbGVjdG9yQXJyYXlbJ1ZhbHVlJ10gKyAnPC93OlNlbGVjdG9yPic7DQoJCQkJfQ0KCQkJCXJlc3VsdCArPSAnPC93OlNlbGVjdG9yU2V0PjwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjwvcjonICsgcHJvcCArICc+JzsNCgkJCX0NCgkJCWVsc2Ugew0KCQkJICAgIGlmIChBcnJheS5pc0FycmF5KHB1dE9ialtwcm9wXSkpIHsNCgkJCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdXRPYmpbcHJvcF0ubGVuZ3RoOyBpKyspIHsNCgkJCSAgICAgICAgICAgIHJlc3VsdCArPSAnPHI6JyArIHByb3AgKyAnPicgKyBwdXRPYmpbcHJvcF1baV0udG9TdHJpbmcoKSArICc8L3I6JyArIHByb3AgKyAnPic7DQoJCQkgICAgICAgIH0NCgkJCSAgICB9IGVsc2Ugew0KCQkJICAgICAgICByZXN1bHQgKz0gJzxyOicgKyBwcm9wICsgJz4nICsgcHV0T2JqW3Byb3BdLnRvU3RyaW5nKCkgKyAnPC9yOicgKyBwcm9wICsgJz4nOw0KCQkJICAgIH0NCgkJCX0NCgkJfQ0KDQoJCXJlc3VsdCArPSAnPC9yOicgKyBvYmpuYW1lICsgJz4nOw0KCQlyZXR1cm4gcmVzdWx0Ow0KCX0NCg0KCS8qIA0KCWNvbnZlcnQgDQoJCXsgQE5hbWU6ICdJbnN0YW5jZUlEJywgQEF0dHJOYW1lOiAnQXR0cmlidXRlIFZhbHVlJ30NCglpbnRvDQoJCScgTmFtZT0iSW5zdGFuY2VJRCIgQXR0ck5hbWU9IkF0dHJpYnV0ZSBWYWx1ZSIgJw0KCSovDQogICAgZnVuY3Rpb24gX09iamVjdFRvWG1sQXR0cmlidXRlcyhvYmpXaXRoQXR0cmlidXRlcykgew0KCQlpZighb2JqV2l0aEF0dHJpYnV0ZXMpIHJldHVybiAnJzsNCgkJdmFyIHJlc3VsdCA9ICcnOw0KCQlmb3IgKHZhciBwcm9wTmFtZSBpbiBvYmpXaXRoQXR0cmlidXRlcykgew0KCQkJaWYgKCFvYmpXaXRoQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgfHwgcHJvcE5hbWUuaW5kZXhPZignQCcpICE9PSAwKSBjb250aW51ZTsNCgkJCXJlc3VsdCArPSAnICcgKyBwcm9wTmFtZS5zdWJzdHJpbmcoMSkgKyAnPSInICsgb2JqV2l0aEF0dHJpYnV0ZXNbcHJvcE5hbWVdICsgJyInOw0KCQl9DQoJCXJldHVybiByZXN1bHQ7DQoJfQ0KDQogICAgZnVuY3Rpb24gX1B1dE9ialRvU2VsZWN0b3JzWG1sKHNlbGVjdG9yU2V0KSB7DQogICAgICAgIGlmICghc2VsZWN0b3JTZXQpIHJldHVybiAnJzsNCiAgICAgICAgaWYgKHR5cGVvZiBzZWxlY3RvclNldCA9PSAnc3RyaW5nJykgcmV0dXJuIHNlbGVjdG9yU2V0Ow0KICAgICAgICBpZiAoc2VsZWN0b3JTZXRbJ0luc3RhbmNlSUQnXSkgcmV0dXJuICI8dzpTZWxlY3RvclNldD48dzpTZWxlY3RvciBOYW1lPVwiSW5zdGFuY2VJRFwiPiIgKyBzZWxlY3RvclNldFsnSW5zdGFuY2VJRCddICsgIjwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+IjsNCgkJdmFyIHJlc3VsdCA9ICc8dzpTZWxlY3RvclNldD4nOw0KCQlmb3IodmFyIHByb3BOYW1lIGluIHNlbGVjdG9yU2V0KSB7DQoJCSAgICBpZiAoIXNlbGVjdG9yU2V0Lmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgY29udGludWU7DQoJCSAgICByZXN1bHQgKz0gJzx3OlNlbGVjdG9yIE5hbWU9IicgKyBwcm9wTmFtZSArICciPic7DQoJCSAgICBpZiAoc2VsZWN0b3JTZXRbcHJvcE5hbWVdWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ10pIHsNCgkJICAgICAgICByZXN1bHQgKz0gJzxhOkVuZHBvaW50UmVmZXJlbmNlPic7DQoJCSAgICAgICAgcmVzdWx0ICs9ICc8YTpBZGRyZXNzPicgKyBzZWxlY3RvclNldFtwcm9wTmFtZV1bJ0FkZHJlc3MnXSArICc8L2E6QWRkcmVzcz48YTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjx3OlJlc291cmNlVVJJPicgKyBzZWxlY3RvclNldFtwcm9wTmFtZV1bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnUmVzb3VyY2VVUkknXSArICc8L3c6UmVzb3VyY2VVUkk+PHc6U2VsZWN0b3JTZXQ+JzsNCgkJICAgICAgICB2YXIgc2VsZWN0b3JBcnJheSA9IHNlbGVjdG9yU2V0W3Byb3BOYW1lXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddOw0KCQkgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdG9yQXJyYXkpKSB7DQoJCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0b3JBcnJheS5sZW5ndGg7IGkrKykgew0KCQkgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICc8dzpTZWxlY3RvcicgKyBfT2JqZWN0VG9YbWxBdHRyaWJ1dGVzKHNlbGVjdG9yQXJyYXlbaV0pICsgJz4nICsgc2VsZWN0b3JBcnJheVtpXVsnVmFsdWUnXSArICc8L3c6U2VsZWN0b3I+JzsNCgkJICAgICAgICAgICAgfQ0KCQkgICAgICAgIH0NCgkJICAgICAgICBlbHNlIHsNCgkJICAgICAgICAgICAgcmVzdWx0ICs9ICc8dzpTZWxlY3RvcicgKyBfT2JqZWN0VG9YbWxBdHRyaWJ1dGVzKHNlbGVjdG9yQXJyYXkpICsgJz4nICsgc2VsZWN0b3JBcnJheVsnVmFsdWUnXSArICc8L3c6U2VsZWN0b3I+JzsNCgkJICAgICAgICB9DQoJCSAgICAgICAgcmVzdWx0ICs9ICc8L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+PC9hOkVuZHBvaW50UmVmZXJlbmNlPic7DQoJCSAgICB9IGVsc2Ugew0KCQkgICAgICAgIHJlc3VsdCArPSBzZWxlY3RvclNldFtwcm9wTmFtZV07DQoJCSAgICB9DQoJCQlyZXN1bHQgKz0gJzwvdzpTZWxlY3Rvcj4nOw0KCQl9DQoJCXJlc3VsdCArPSAnPC93OlNlbGVjdG9yU2V0Pic7DQoJCXJldHVybiByZXN1bHQ7DQoJfQ0KDQogICAgZnVuY3Rpb24gX3R1cm5Ub1htbCh0ZXh0KSB7DQogICAgICAgIA0KICAgICAgICAvLyBOb2RlSlMgZGV0ZWN0aW9uDQogICAgICAgIHZhciBpc05vZGUgPSBuZXcgRnVuY3Rpb24oInRyeSB7cmV0dXJuIHRoaXM9PT1nbG9iYWw7fWNhdGNoKGUpe3JldHVybiBmYWxzZTt9Iik7DQogICAgICAgIGlmIChpc05vZGUoKSkgew0KICAgICAgICAgICAgdmFyIFhET01QYXJzZXIgPSByZXF1aXJlKCd4bWxkb20nKS5ET01QYXJzZXI7DQogICAgICAgICAgICByZXR1cm4gbmV3IFhET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodGV4dCwgInRleHQveG1sIik7DQogICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAod2luZG93LkRPTVBhcnNlcikgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodGV4dCwgInRleHQveG1sIik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvLyBJbnRlcm5ldCBFeHBsb3Jlcg0KICAgICAgICAgICAgdmFyIHhtbERvYyA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MRE9NIik7DQogICAgICAgICAgICB4bWxEb2MuYXN5bmMgPSBmYWxzZTsNCiAgICAgICAgICAgIHhtbERvYy5sb2FkWE1MKHRleHQpOw0KICAgICAgICAgICAgcmV0dXJuIHhtbERvYzsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qDQogICAgLy8gVGhpcyBpcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgdG8gX3R1cm5Ub1htbCgpIHRoYXQgd29ya3Mgd2l0aG91dCB4bWwgcGFyc2VyIGRlcGVuZGVuY3kuDQogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgInBlZWsiLCB7IHZhbHVlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodGhpcy5sZW5ndGggPiAwID8gdGhpc1t0aGlzLmxlbmd0aCAtIDFdIDogbnVsbCk7IH0gfSk7CiAgICBmdW5jdGlvbiBfdHJlZUJ1aWxkZXIoKSB7DQogICAgICAgIHRoaXMudHJlZSA9IFtdOwogICAgICAgIHRoaXMucHVzaCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7IHRoaXMudHJlZS5wdXNoKGVsZW1lbnQpOyB9OwogICAgICAgIHRoaXMucG9wID0gZnVuY3Rpb24gKCkgeyB2YXIgZWxlbWVudCA9IHRoaXMudHJlZS5wb3AoKTsgaWYgKHRoaXMudHJlZS5sZW5ndGggPiAwKSB7IHZhciB4ID0gdGhpcy50cmVlLnBlZWsoKTsgeC5jaGlsZE5vZGVzLnB1c2goZWxlbWVudCk7IHguY2hpbGRFbGVtZW50Q291bnQgPSB4LmNoaWxkTm9kZXMubGVuZ3RoOyB9IHJldHVybiAoZWxlbWVudCk7IH07CiAgICAgICAgdGhpcy5wZWVrID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRoaXMudHJlZS5wZWVrKCkpOyB9CiAgICAgICAgdGhpcy5hZGROYW1lc3BhY2UgPSBmdW5jdGlvbiAocHJlZml4LCBuYW1lc3BhY2UpIHsgdGhpcy50cmVlLnBlZWsoKS5uc1RhYmxlW3ByZWZpeF0gPSBuYW1lc3BhY2U7IGlmICh0aGlzLnRyZWUucGVlaygpLmF0dHJpYnV0ZXMubGVuZ3RoID4gMCkgeyBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudHJlZS5wZWVrKCkuYXR0cmlidXRlczsgKytpKSB7IHZhciBhID0gdGhpcy50cmVlLnBlZWsoKS5hdHRyaWJ1dGVzW2ldOyBpZiAocHJlZml4ID09ICcqJyAmJiBhLm5hbWUgPT0gYS5sb2NhbE5hbWUpIHsgYS5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7IH0gZWxzZSBpZiAocHJlZml4ICE9ICcqJyAmJiBhLm5hbWUgIT0gYS5sb2NhbE5hbWUpIHsgdmFyIHBmeCA9IGEubmFtZS5zcGxpdCgnOicpWzBdOyBpZiAocGZ4ID09IHByZWZpeCkgeyBhLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTsgfSB9IH0gfSB9CiAgICAgICAgdGhpcy5nZXROYW1lc3BhY2UgPSBmdW5jdGlvbiAocHJlZml4KSB7IGZvciAodmFyIGkgPSB0aGlzLnRyZWUubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsgaWYgKHRoaXMudHJlZVtpXS5uc1RhYmxlW3ByZWZpeF0gIT0gbnVsbCkgeyByZXR1cm4gKHRoaXMudHJlZVtpXS5uc1RhYmxlW3ByZWZpeF0pOyB9IH0gcmV0dXJuIG51bGw7IH0NCiAgICB9CiAgICBmdW5jdGlvbiBfdHVyblRvWG1sKHRleHQpIHsgaWYgKHRleHQgPT0gbnVsbCkgcmV0dXJuIG51bGw7IHJldHVybiAoeyBjaGlsZE5vZGVzOiBbX3R1cm5Ub1htbFJlYyh0ZXh0KV0sIGdldEVsZW1lbnRzQnlUYWdOYW1lOiBfZ2V0RWxlbWVudHNCeVRhZ05hbWUsIGdldENoaWxkRWxlbWVudHNCeVRhZ05hbWU6IF9nZXRDaGlsZEVsZW1lbnRzQnlUYWdOYW1lLCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TOiBfZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyB9KTsgfQogICAgZnVuY3Rpb24gX2dldEVsZW1lbnRzQnlUYWdOYW1lTlMobnMsIG5hbWUpIHsgdmFyIHJldCA9IFtdOyBfeG1sVHJhdmVyc2VBbGxSZWModGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkgeyBpZiAobm9kZS5sb2NhbE5hbWUgPT0gbmFtZSAmJiAobm9kZS5uYW1lc3BhY2UgPT0gbnMgfHwgbnMgPT0gJyonKSkgeyByZXQucHVzaChub2RlKTsgfSB9KTsgcmV0dXJuIHJldDsgfQogICAgZnVuY3Rpb24gX2dldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpIHsgdmFyIHJldCA9IFtdOyBfeG1sVHJhdmVyc2VBbGxSZWModGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkgeyBpZiAobm9kZS5sb2NhbE5hbWUgPT0gbmFtZSkgeyByZXQucHVzaChub2RlKTsgfSB9KTsgcmV0dXJuIHJldDsgfQogICAgZnVuY3Rpb24gX2dldENoaWxkRWxlbWVudHNCeVRhZ05hbWUobmFtZSkgeyB2YXIgcmV0ID0gW107IGlmICh0aGlzLmNoaWxkTm9kZXMgIT0gbnVsbCkgeyBmb3IgKHZhciBub2RlIGluIHRoaXMuY2hpbGROb2RlcykgeyBpZiAodGhpcy5jaGlsZE5vZGVzW25vZGVdLmxvY2FsTmFtZSA9PSBuYW1lKSB7IHJldC5wdXNoKHRoaXMuY2hpbGROb2Rlc1tub2RlXSk7IH0gfSB9IHJldHVybiAocmV0KTsgfQogICAgZnVuY3Rpb24gX2dldENoaWxkRWxlbWVudHNCeVRhZ05hbWVOUyhucywgbmFtZSkgeyB2YXIgcmV0ID0gW107IGlmICh0aGlzLmNoaWxkTm9kZXMgIT0gbnVsbCkgeyBmb3IgKHZhciBub2RlIGluIHRoaXMuY2hpbGROb2RlcykgeyBpZiAodGhpcy5jaGlsZE5vZGVzW25vZGVdLmxvY2FsTmFtZSA9PSBuYW1lICYmIChucyA9PSAnKicgfHwgdGhpcy5jaGlsZE5vZGVzW25vZGVdLm5hbWVzcGFjZSA9PSBucykpIHsgcmV0LnB1c2godGhpcy5jaGlsZE5vZGVzW25vZGVdKTsgfSB9IH0gcmV0dXJuIChyZXQpOyB9CiAgICBmdW5jdGlvbiBfeG1sVHJhdmVyc2VBbGxSZWMobm9kZXMsIGZ1bmMpIHsgZm9yICh2YXIgaSBpbiBub2RlcykgeyBmdW5jKG5vZGVzW2ldKTsgaWYgKG5vZGVzW2ldLmNoaWxkTm9kZXMpIHsgX3htbFRyYXZlcnNlQWxsUmVjKG5vZGVzW2ldLmNoaWxkTm9kZXMsIGZ1bmMpOyB9IH0gfQogICAgZnVuY3Rpb24gX3R1cm5Ub1htbFJlYyh0ZXh0KSB7DQogICAgICAgIHZhciBlbGVtZW50U3RhY2sgPSBuZXcgX3RyZWVCdWlsZGVyKCksIGxhc3RFbGVtZW50ID0gbnVsbCwgeDEgPSB0ZXh0LnNwbGl0KCc8JyksIHJldCA9IFtdLCBlbGVtZW50ID0gbnVsbCwgY3VycmVudEVsZW1lbnROYW1lID0gbnVsbDsKICAgICAgICBmb3IgKHZhciBpIGluIHgxKSB7DQogICAgICAgICAgICB2YXIgeDIgPSB4MVtpXS5zcGxpdCgnPicpLCB4MyA9IHgyWzBdLnNwbGl0KCcgJyksIGVsZW1lbnROYW1lID0geDNbMF07CiAgICAgICAgICAgIGlmICgoZWxlbWVudE5hbWUubGVuZ3RoID4gMCkgJiYgKGVsZW1lbnROYW1lWzBdICE9ICc/JykpIHsNCiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWVbMF0gIT0gJy8nKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gW10sIGxvY2FsTmFtZSwgbG9jYWxuYW1lMiA9IGVsZW1lbnROYW1lLnNwbGl0KCcgJylbMF0uc3BsaXQoJzonKSwgbG9jYWxOYW1lID0gKGxvY2FsbmFtZTIubGVuZ3RoID4gMSkgPyBsb2NhbG5hbWUyWzFdIDogbG9jYWxuYW1lMlswXTsKICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXR0cmlidXRlcywgImdldCIsCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gdGhpcykgeyBpZiAodGhpc1thXS5uYW1lID09IGFyZ3VtZW50c1swXSkgeyByZXR1cm4gKHRoaXNbYV0pOyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSBpbiB0aGlzKSB7IGlmICh0aGlzW2FdLm5hbWUgPT0gYXJndW1lbnRzWzFdICYmIChhcmd1bWVudHNbMF0gPT0gJyonIHx8IHRoaXNbYV0ubmFtZXNwYWNlID09IGFyZ3VtZW50c1swXSkpIHsgcmV0dXJuICh0aGlzW2FdKTsgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICgnYXR0cmlidXRlcy5nZXQoKTogSW52YWxpZCBudW1iZXIgb2YgcGFyYW1ldGVycycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFN0YWNrLnB1c2goeyBuYW1lOiBlbGVtZW50TmFtZSwgbG9jYWxOYW1lOiBsb2NhbE5hbWUsIGdldENoaWxkRWxlbWVudHNCeVRhZ05hbWU6IF9nZXRDaGlsZEVsZW1lbnRzQnlUYWdOYW1lLCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TOiBfZ2V0RWxlbWVudHNCeVRhZ05hbWVOUywgZ2V0Q2hpbGRFbGVtZW50c0J5VGFnTmFtZU5TOiBfZ2V0Q2hpbGRFbGVtZW50c0J5VGFnTmFtZU5TLCBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLCBjaGlsZE5vZGVzOiBbXSwgbnNUYWJsZToge30gfSk7CiAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgQXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgIGlmICh4My5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2tpcCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIHgzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgzW2pdID09ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gZW1wdHkgRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZXNwYWNlID0gZWxlbWVudFN0YWNrLnBlZWsoKS5uYW1lID09IGVsZW1lbnRTdGFjay5wZWVrKCkubG9jYWxOYW1lID8gZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZSgnKicpIDogZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZShlbGVtZW50U3RhY2sucGVlaygpLm5hbWUuc3Vic3RyaW5nKDAsIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZS5pbmRleE9mKCc6JykpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50U3RhY2sucGVlaygpLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50U3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSB4M1tqXS5pbmRleE9mKCc9Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJOYW1lID0geDNbal0uc3Vic3RyaW5nKDAsIGspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSB4M1tqXS5zdWJzdHJpbmcoayArIDIsIHgzW2pdLmxlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyTlMgPSBlbGVtZW50U3RhY2suZ2V0TmFtZXNwYWNlKCcqJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSAneG1sbnMnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50U3RhY2suYWRkTmFtZXNwYWNlKCcqJywgYXR0clZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ck5TID0gYXR0clZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lLnN0YXJ0c1dpdGgoJ3htbG5zOicpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50U3RhY2suYWRkTmFtZXNwYWNlKGF0dHJOYW1lLnN1YnN0cmluZyg2KSwgYXR0clZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheCA9IGF0dHJOYW1lLnNwbGl0KCc6Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheC5sZW5ndGggPT0gMikgeyBhdHRyTmFtZSA9IGF4WzFdOyBhdHRyTlMgPSBlbGVtZW50U3RhY2suZ2V0TmFtZXNwYWNlKGF4WzBdKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSB7IG5hbWU6IGF0dHJOYW1lLCB2YWx1ZTogYXR0clZhbHVlIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ck5TICE9IG51bGwpIHgubmFtZXNwYWNlID0gYXR0ck5TOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wZWVrKCkuYXR0cmlidXRlcy5wdXNoKHgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNraXApIHsgY29udGludWU7IH0NCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZXNwYWNlID0gZWxlbWVudFN0YWNrLnBlZWsoKS5uYW1lID09IGVsZW1lbnRTdGFjay5wZWVrKCkubG9jYWxOYW1lID8gZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZSgnKicpIDogZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZShlbGVtZW50U3RhY2sucGVlaygpLm5hbWUuc3Vic3RyaW5nKDAsIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZS5pbmRleE9mKCc6JykpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoeDJbMV0pIHsgZWxlbWVudFN0YWNrLnBlZWsoKS50ZXh0Q29udGVudCA9IHgyWzFdOyB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsgbGFzdEVsZW1lbnQgPSBlbGVtZW50U3RhY2sucG9wKCk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQogICAgICAgIHJldHVybiBsYXN0RWxlbWVudDsNCiAgICB9DQogICAgKi8NCg0KICAgIHJldHVybiBvYmo7DQp9DQovKioNCiogQGZpbGVvdmVydmlldyBJbnRlbChyKSBBTVQgQ29tbXVuaWNhdGlvbiBTdGFja1hYDQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4yLjBiDQoqLw0KDQovKioNCiAqIENvbnN0cnVjdCBhIEFtdFN0YWNrQ3JlYXRlU2VydmljZSBvYmplY3QsIHRoaXMgaWEgdGhlIG1haW4gSW50ZWwgQU1UIGNvbW11bmljYXRpb24gc3RhY2suDQogKiBAY29uc3RydWN0b3INCiAqLw0KZnVuY3Rpb24gQW10U3RhY2tDcmVhdGVTZXJ2aWNlKHdzbWFuU3RhY2spIHsNCiAgICB2YXIgb2JqID0gbmV3IE9iamVjdCgpOw0KICAgIG9iai53c21hbiA9IHdzbWFuU3RhY2s7DQogICAgb2JqLnBmeCA9IFsiaHR0cDovL2ludGVsLmNvbS93YmVtL3dzY2ltLzEvYW10LXNjaGVtYS8xLyIsICJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yLyIsICJodHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9pcHMtc2NoZW1hLzEvIl07DQogICAgb2JqLlBlbmRpbmdFbnVtcyA9IFtdOw0KICAgIG9iai5QZW5kaW5nQmF0Y2hPcGVyYXRpb25zID0gMDsNCiAgICBvYmouQWN0aXZlRW51bXNDb3VudCA9IDA7DQogICAgb2JqLk1heEFjdGl2ZUVudW1zQ291bnQgPSAxOyAvLyBNYXhpbXVtIG51bWJlciBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgZG9uZSBhdCB0aGUgc2FtZSB0aW1lLg0KICAgIG9iai5vblByb2Nlc3NDaGFuZ2VkID0gbnVsbDsNCiAgICB2YXIgX01heFByb2Nlc3MgPSAwOw0KICAgIHZhciBfTGFzdFByb2Nlc3MgPSAwOw0KDQogICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgcGVuZGluZyBhY3Rpb25zDQogICAgb2JqLkdldFBlbmRpbmdBY3Rpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKG9iai5QZW5kaW5nRW51bXMubGVuZ3RoICogMikgKyAob2JqLkFjdGl2ZUVudW1zQ291bnQpICsgb2JqLndzbWFuLmNvbW0uUGVuZGluZ0FqYXgubGVuZ3RoICsgb2JqLndzbWFuLmNvbW0uQWN0aXZlQWpheENvdW50ICsgb2JqLlBlbmRpbmdCYXRjaE9wZXJhdGlvbnM7IH0NCg0KICAgIC8vIFByaXZhdGUgTWV0aG9kLCBVcGRhdGUgdGhlIGN1cnJlbnQgcHJvY2Vzc2luZyBzdGF0dXMsIHRoaXMgZ2l2ZXMgdGhlIGFwcGxpY2F0aW9uIGFuIGlkZWEgb2Ygd2hhdCBwcm9ncmVzcyBpcyBiZWluZyBkb25lIGJ5IHRoZSBXU01BTiBzdGFjaw0KICAgIGZ1bmN0aW9uIF91cCgpIHsNCiAgICAgICAgdmFyIHggPSBvYmouR2V0UGVuZGluZ0FjdGlvbnMoKTsNCiAgICAgICAgaWYgKF9NYXhQcm9jZXNzIDwgeCkgX01heFByb2Nlc3MgPSB4Ow0KICAgICAgICBpZiAob2JqLm9uUHJvY2Vzc0NoYW5nZWQgIT0gbnVsbCAmJiBfTGFzdFByb2Nlc3MgIT0geCkgew0KICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiUHJvY2VzcyBPbGQ9IiArIF9MYXN0UHJvY2VzcyArICIsIE5ldz0iICsgeCArICIsIFBFbnVtcz0iICsgb2JqLlBlbmRpbmdFbnVtcy5sZW5ndGggKyAiLCBBRW51bXM9IiArIG9iai5BY3RpdmVFbnVtc0NvdW50ICsgIiwgUEFqYXg9IiArIG9iai53c21hbi5jb21tLlBlbmRpbmdBamF4Lmxlbmd0aCArICIsIEFBamF4PSIgKyBvYmoud3NtYW4uY29tbS5BY3RpdmVBamF4Q291bnQgKyAiLCBQQmF0Y2g9IiArIG9iai5QZW5kaW5nQmF0Y2hPcGVyYXRpb25zKTsNCiAgICAgICAgICAgIF9MYXN0UHJvY2VzcyA9IHg7DQogICAgICAgICAgICBvYmoub25Qcm9jZXNzQ2hhbmdlZCh4LCBfTWF4UHJvY2Vzcyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHggPT0gMCkgX01heFByb2Nlc3MgPSAwOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiAiU1VCU0NSSUJFIiBvcGVyYXRpb24uDQogICAgb2JqLlN1YnNjcmliZSA9IGZ1bmN0aW9uIChuYW1lLCBkZWxpdmVyeSwgdXJsLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycywgb3BhcXVlLCB1c2VyLCBwYXNzKSB7IG9iai53c21hbi5FeGVjU3Vic2NyaWJlKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIGRlbGl2ZXJ5LCB1cmwsIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgeHN0YXR1cykgeyBfdXAoKTsgY2FsbGJhY2sob2JqLCBuYW1lLCByZXNwb25zZSwgeHN0YXR1cywgdGFnKTsgfSwgMCwgcHJpLCBzZWxlY3RvcnMsIG9wYXF1ZSwgdXNlciwgcGFzcyk7IF91cCgpOyB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gIlVOU1VCU0NSSUJFIiBvcGVyYXRpb24uDQogICAgb2JqLlVuU3Vic2NyaWJlID0gZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjVW5TdWJzY3JpYmUob2JqLkNvbXBsZXRlTmFtZShuYW1lKSwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmksIHNlbGVjdG9ycyk7IF91cCgpOyB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gIkdFVCIgb3BlcmF0aW9uLg0KICAgIG9iai5HZXQgPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7IG9iai53c21hbi5FeGVjR2V0KG9iai5Db21wbGV0ZU5hbWUobmFtZSksIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgeHN0YXR1cykgeyBfdXAoKTsgY2FsbGJhY2sob2JqLCBuYW1lLCByZXNwb25zZSwgeHN0YXR1cywgdGFnKTsgfSwgMCwgcHJpKTsgX3VwKCk7IH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiAiUFVUIiBvcGVyYXRpb24uDQogICAgb2JqLlB1dCA9IGZ1bmN0aW9uIChuYW1lLCBwdXRvYmosIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjUHV0KG9iai5Db21wbGV0ZU5hbWUobmFtZSksIHB1dG9iaiwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmksIHNlbGVjdG9ycyk7IF91cCgpOyB9DQoJDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOICJDUkVBVEUiIG9wZXJhdGlvbi4NCiAgICBvYmouQ3JlYXRlID0gZnVuY3Rpb24gKG5hbWUsIHB1dG9iaiwgY2FsbGJhY2ssIHRhZywgcHJpKSB7IG9iai53c21hbi5FeGVjQ3JlYXRlKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIHB1dG9iaiwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmkpOyBfdXAoKTsgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOICJERUxFVEUiIG9wZXJhdGlvbi4NCiAgICBvYmouRGVsZXRlID0gZnVuY3Rpb24gKG5hbWUsIHB1dG9iaiwgY2FsbGJhY2ssIHRhZywgcHJpKSB7IG9iai53c21hbi5FeGVjRGVsZXRlKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIHB1dG9iaiwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmkpOyBfdXAoKTsgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIG1ldGhvZCBjYWxsIG9wZXJhdGlvbi4NCiAgICBvYmouRXhlYyA9IGZ1bmN0aW9uIChuYW1lLCBtZXRob2QsIGFyZ3MsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjTWV0aG9kKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIG1ldGhvZCwgYXJncywgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIG9iai5Db21wbGV0ZUV4ZWNSZXNwb25zZShyZXNwb25zZSksIHhzdGF0dXMsIHRhZyk7IH0sIDAsIHByaSwgc2VsZWN0b3JzKTsgX3VwKCk7IH0NCgkNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gbWV0aG9kIGNhbGwgb3BlcmF0aW9uLg0KICAgIG9iai5FeGVjV2l0aFhtbCA9IGZ1bmN0aW9uIChuYW1lLCBtZXRob2QsIGFyZ3MsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjTWV0aG9kWG1sKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIG1ldGhvZCwgZXhlY0FyZ3VtZW50c1RvWG1sKGFyZ3MpLCBmdW5jdGlvbiAod3MsIHJlc3VyaSwgcmVzcG9uc2UsIHhzdGF0dXMpIHsgX3VwKCk7IGNhbGxiYWNrKG9iaiwgbmFtZSwgb2JqLkNvbXBsZXRlRXhlY1Jlc3BvbnNlKHJlc3BvbnNlKSwgeHN0YXR1cywgdGFnKTsgfSwgMCwgcHJpLCBzZWxlY3RvcnMpOyBfdXAoKTsgfQ0KCQ0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiAiRU5VTUVSQVRFIiBvcGVyYXRpb24uDQogICAgb2JqLkVudW0gPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIGlmIChvYmouQWN0aXZlRW51bXNDb3VudCA8IG9iai5NYXhBY3RpdmVFbnVtc0NvdW50KSB7DQogICAgICAgICAgICBvYmouQWN0aXZlRW51bXNDb3VudCsrOyBvYmoud3NtYW4uRXhlY0VudW0ob2JqLkNvbXBsZXRlTmFtZShuYW1lKSwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcwKSB7IF91cCgpOyBfRW51bVN0YXJ0U2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgeHN0YXR1cywgdGFnMCk7IH0sIHRhZywgcHJpKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG9iai5QZW5kaW5nRW51bXMucHVzaChbbmFtZSwgY2FsbGJhY2ssIHRhZywgcHJpXSk7DQogICAgICAgIH0NCiAgICAgICAgX3VwKCk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfRW51bVN0YXJ0U2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgc3RhdHVzLCB0YWcsIHByaSkgew0KICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBjYWxsYmFjayhvYmosIG5hbWUsIG51bGwsIHN0YXR1cywgdGFnKTsgX0VudW1Eb05leHQoMSk7IHJldHVybjsgfQ0KICAgICAgICBpZiAocmVzcG9uc2UgPT0gbnVsbCB8fCByZXNwb25zZS5IZWFkZXJbIk1ldGhvZCJdICE9ICJFbnVtZXJhdGVSZXNwb25zZSIgfHwgIXJlc3BvbnNlLkJvZHlbIkVudW1lcmF0aW9uQ29udGV4dCJdKSB7IGNhbGxiYWNrKG9iaiwgbmFtZSwgbnVsbCwgNjAzLCB0YWcpOyBfRW51bURvTmV4dCgxKTsgcmV0dXJuOyB9DQogICAgICAgIHZhciBlbnVtY3R4ID0gcmVzcG9uc2UuQm9keVsiRW51bWVyYXRpb25Db250ZXh0Il07DQogICAgICAgIG9iai53c21hbi5FeGVjUHVsbChyZXN1cmksIGVudW1jdHgsIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgeHN0YXR1cykgeyBfRW51bUNvbnRpbnVlU2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgW10sIHhzdGF0dXMsIHRhZywgcHJpKTsgfSk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfRW51bUNvbnRpbnVlU2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgaXRlbXMsIHN0YXR1cywgdGFnLCBwcmkpIHsNCiAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgY2FsbGJhY2sob2JqLCBuYW1lLCBudWxsLCBzdGF0dXMsIHRhZyk7IF9FbnVtRG9OZXh0KDEpOyByZXR1cm47IH0NCiAgICAgICAgaWYgKHJlc3BvbnNlID09IG51bGwgfHwgcmVzcG9uc2UuSGVhZGVyWyJNZXRob2QiXSAhPSAiUHVsbFJlc3BvbnNlIikgeyBjYWxsYmFjayhvYmosIG5hbWUsIG51bGwsIDYwNCwgdGFnKTsgX0VudW1Eb05leHQoMSk7IHJldHVybjsgfQ0KICAgICAgICBmb3IgKHZhciBpIGluIHJlc3BvbnNlLkJvZHlbIkl0ZW1zIl0pIHsNCiAgICAgICAgICAgIGlmIChyZXNwb25zZS5Cb2R5WyJJdGVtcyJdW2ldIGluc3RhbmNlb2YgQXJyYXkpIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIHJlc3BvbnNlLkJvZHlbIkl0ZW1zIl1baV0pIHsgaWYgKHR5cGVvZiByZXNwb25zZS5Cb2R5WyJJdGVtcyJdW2ldW2pdICE9ICdmdW5jdGlvbicpIHsgaXRlbXMucHVzaChyZXNwb25zZS5Cb2R5WyJJdGVtcyJdW2ldW2pdKTsgfSB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuQm9keVsiSXRlbXMiXVtpXSAhPSAnZnVuY3Rpb24nKSB7IGl0ZW1zLnB1c2gocmVzcG9uc2UuQm9keVsiSXRlbXMiXVtpXSk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAocmVzcG9uc2UuQm9keVsiRW51bWVyYXRpb25Db250ZXh0Il0pIHsNCiAgICAgICAgICAgIHZhciBlbnVtY3R4ID0gcmVzcG9uc2UuQm9keVsiRW51bWVyYXRpb25Db250ZXh0Il07DQogICAgICAgICAgICBvYmoud3NtYW4uRXhlY1B1bGwocmVzdXJpLCBlbnVtY3R4LCBmdW5jdGlvbiAod3MsIHJlc3VyaSwgcmVzcG9uc2UsIHhzdGF0dXMpIHsgX0VudW1Db250aW51ZVNpbmsobmFtZSwgcmVzcG9uc2UsIGNhbGxiYWNrLCByZXN1cmksIGl0ZW1zLCB4c3RhdHVzLCB0YWcsIDEpOyB9KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9FbnVtRG9OZXh0KDEpOw0KICAgICAgICAgICAgY2FsbGJhY2sob2JqLCBuYW1lLCBpdGVtcywgc3RhdHVzLCB0YWcpOw0KICAgICAgICAgICAgX3VwKCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIGZ1bmN0aW9uIF9FbnVtRG9OZXh0KGRlYykgew0KICAgICAgICBvYmouQWN0aXZlRW51bXNDb3VudCAtPSBkZWM7DQogICAgICAgIGlmIChvYmouQWN0aXZlRW51bXNDb3VudCA+PSBvYmouTWF4QWN0aXZlRW51bXNDb3VudCB8fCBvYmouUGVuZGluZ0VudW1zLmxlbmd0aCA9PSAwKSB7IF91cCgpOyByZXR1cm47IH0NCiAgICAgICAgdmFyIHggPSBvYmouUGVuZGluZ0VudW1zLnNoaWZ0KCk7DQogICAgICAgIG9iai5FbnVtKHhbMF0sIHhbMV0sIHhbMl0pOw0KICAgICAgICBfRW51bURvTmV4dCgwKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgYmF0Y2ggb2YgV1NNQU4gIkVOVU0iIG9wZXJhdGlvbnMuDQogICAgb2JqLkJhdGNoRW51bSA9IGZ1bmN0aW9uIChiYXRjaG5hbWUsIG5hbWVzLCBjYWxsYmFjaywgdGFnLCBjb250aW51ZU9uRXJyb3IsIHByaSkgew0KICAgICAgICBvYmouUGVuZGluZ0JhdGNoT3BlcmF0aW9ucyArPSAobmFtZXMubGVuZ3RoICogMik7DQogICAgICAgIF9CYXRjaE5leHRFbnVtKGJhdGNobmFtZSwgQ2xvbmUobmFtZXMpLCBjYWxsYmFjaywgdGFnLCB7fSwgY29udGludWVPbkVycm9yLCBwcmkpOyBfdXAoKTsNCiAgICB9DQoNCiAgICAvLyBSZXF1ZXN0IGVhY2ggZW51bSBpbiB0aGUgYmF0Y2gsIHN0b3BwaW5nIGlmIHNvbWV0aGluZyBkb2VzIG5vdCByZXR1cm4gc3RhdHVzIDIwMA0KICAgIGZ1bmN0aW9uIF9CYXRjaE5leHRFbnVtKGJhdGNobmFtZSwgbmFtZXMsIGNhbGxiYWNrLCB0YWcsIHJlc3VsdHMsIGNvbnRpbnVlT25FcnJvciwgcHJpKSB7DQogICAgICAgIG9iai5QZW5kaW5nQmF0Y2hPcGVyYXRpb25zIC09IDI7DQogICAgICAgIHZhciBuID0gbmFtZXMuc2hpZnQoKSwgZiA9IG9iai5FbnVtOw0KICAgICAgICBpZiAoblswXSA9PSAnKicpIHsgZiA9IG9iai5HZXQ7IG4gPSBuLnN1YnN0cmluZygxKTsgfSAvLyBJZiB0aGUgbmFtZSBzdGFydHMgd2l0aCBhIHN0YXIsIGRvIGEgR0VUIGluc3RlYWQgb2YgYW4gRU5VTS4gVGhpcyB3aWxsIHJlZHVjZSByb3VuZCB0cmlwcy4NCiAgICAgICAgLy9jb25zb2xlLmxvZygoZiA9PSBvYmouR2V0PydHZXQgJzonRW51bSAnKSArIG4pOw0KICAgICAgICAvLyBQZXJmb3JtIGEgR0VUL0VOVU0gYWN0aW9uDQogICAgICAgIGYobiwgZnVuY3Rpb24gKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cywgdGFnMCkgew0KICAgICAgICAgICAgdGFnMFsyXVtuYW1lXSA9IHsgcmVzcG9uc2U6IChyZXNwb25zZXM9PW51bGw/bnVsbDpyZXNwb25zZXMuQm9keSksIHJlc3BvbnNlczogcmVzcG9uc2VzLCBzdGF0dXM6IHN0YXR1cyB9Ow0KICAgICAgICAgICAgaWYgKHRhZzBbMV0ubGVuZ3RoID09IDAgfHwgc3RhdHVzID09IDQwMSB8fCAoY29udGludWVPbkVycm9yICE9IHRydWUgJiYgc3RhdHVzICE9IDIwMCAmJiBzdGF0dXMgIT0gNDAwKSkgeyBvYmouUGVuZGluZ0JhdGNoT3BlcmF0aW9ucyAtPSAobmFtZXMubGVuZ3RoICogMik7IF91cCgpOyBjYWxsYmFjayhvYmosIGJhdGNobmFtZSwgdGFnMFsyXSwgc3RhdHVzLCB0YWcpOyB9DQogICAgICAgICAgICBlbHNlIHsgX3VwKCk7IF9CYXRjaE5leHRFbnVtKGJhdGNobmFtZSwgbmFtZXMsIGNhbGxiYWNrLCB0YWcsIHRhZzBbMl0sIHByaSk7IH0NCiAgICAgICAgfSwgW2JhdGNobmFtZSwgbmFtZXMsIHJlc3VsdHNdLCBwcmkpOw0KICAgICAgICBfdXAoKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgYmF0Y2ggb2YgV1NNQU4gIkdFVCIgb3BlcmF0aW9ucy4NCiAgICBvYmouQmF0Y2hHZXQgPSBmdW5jdGlvbiAoYmF0Y2huYW1lLCBuYW1lcywgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIF9GZXRjaE5leHQoeyBuYW1lOiBiYXRjaG5hbWUsIG5hbWVzOiBuYW1lcywgY2FsbGJhY2s6IGNhbGxiYWNrLCBjdXJyZW50OiAwLCByZXNwb25zZXM6IHt9LCB0YWc6IHRhZywgcHJpOiBwcmkgfSk7IF91cCgpOw0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgZnVuY3Rpb24gX0ZldGNoTmV4dChiYXRjaCkgew0KICAgICAgICBpZiAoYmF0Y2gubmFtZXMubGVuZ3RoIDw9IGJhdGNoLmN1cnJlbnQpIHsNCiAgICAgICAgICAgIGJhdGNoLmNhbGxiYWNrKG9iaiwgYmF0Y2gubmFtZSwgYmF0Y2gucmVzcG9uc2VzLCAyMDAsIGJhdGNoLnRhZyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBvYmoud3NtYW4uRXhlY0dldChvYmouQ29tcGxldGVOYW1lKGJhdGNoLm5hbWVzW2JhdGNoLmN1cnJlbnRdKSwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF9GZXRjaGVkKGJhdGNoLCByZXNwb25zZSwgeHN0YXR1cyk7IH0sIGJhdGNoLnByaSk7DQogICAgICAgICAgICBiYXRjaC5jdXJyZW50Kys7DQogICAgICAgIH0NCiAgICAgICAgX3VwKCk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfRmV0Y2hlZChiYXRjaCwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICBpZiAocmVzcG9uc2UgPT0gbnVsbCB8fCBzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICBiYXRjaC5jYWxsYmFjayhvYmosIGJhdGNoLm5hbWUsIG51bGwsIHN0YXR1cywgYmF0Y2gudGFnKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGJhdGNoLnJlc3BvbnNlc1tyZXNwb25zZS5IZWFkZXJbIk1ldGhvZCJdXSA9IHJlc3BvbnNlOw0KICAgICAgICAgICAgX0ZldGNoTmV4dChiYXRjaCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIG9iai5Db21wbGV0ZU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7DQogICAgICAgIGlmIChuYW1lLmluZGV4T2YoIkFNVF8iKSA9PSAwKSByZXR1cm4gb2JqLnBmeFswXSArIG5hbWU7DQogICAgICAgIGlmIChuYW1lLmluZGV4T2YoIkNJTV8iKSA9PSAwKSByZXR1cm4gb2JqLnBmeFsxXSArIG5hbWU7DQogICAgICAgIGlmIChuYW1lLmluZGV4T2YoIklQU18iKSA9PSAwKSByZXR1cm4gb2JqLnBmeFsyXSArIG5hbWU7DQogICAgfQ0KDQogICAgb2JqLkNvbXBsZXRlRXhlY1Jlc3BvbnNlID0gZnVuY3Rpb24gKHJlc3ApIHsNCiAgICAgICAgaWYgKHJlc3AgJiYgcmVzcCAhPSBudWxsICYmIHJlc3AuQm9keSAmJiAocmVzcC5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9IHVuZGVmaW5lZCkpIHsgcmVzcC5Cb2R5LlJldHVyblZhbHVlU3RyID0gb2JqLkFtdFN0YXR1c1RvU3RyKHJlc3AuQm9keVsiUmV0dXJuVmFsdWUiXSk7IH0NCiAgICAgICAgcmV0dXJuIHJlc3A7DQogICAgfQ0KDQogICAgb2JqLlJlcXVlc3RQb3dlclN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFBvd2VyU3RhdGUsIGNhbGxiYWNrX2Z1bmMpIHsNCiAgICAgICAgb2JqLkNJTV9Qb3dlck1hbmFnZW1lbnRTZXJ2aWNlX1JlcXVlc3RQb3dlclN0YXRlQ2hhbmdlKFBvd2VyU3RhdGUsICI8QWRkcmVzcyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZzwvQWRkcmVzcz48UmVmZXJlbmNlUGFyYW1ldGVycyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiPjxSZXNvdXJjZVVSSSB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2RcIj5odHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9Db21wdXRlclN5c3RlbTwvUmVzb3VyY2VVUkk+PFNlbGVjdG9yU2V0IHhtbG5zPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZFwiPjxTZWxlY3RvciBOYW1lPVwiQ3JlYXRpb25DbGFzc05hbWVcIj5DSU1fQ29tcHV0ZXJTeXN0ZW08L1NlbGVjdG9yPjxTZWxlY3RvciBOYW1lPVwiTmFtZVwiPk1hbmFnZWRTeXN0ZW08L1NlbGVjdG9yPjwvU2VsZWN0b3JTZXQ+PC9SZWZlcmVuY2VQYXJhbWV0ZXJzPiIsIG51bGwsIG51bGwsIGNhbGxiYWNrX2Z1bmMpOw0KICAgIH0NCg0KICAgIG9iai5TZXRCb290Q29uZmlnUm9sZSA9IGZ1bmN0aW9uIChSb2xlLCBjYWxsYmFja19mdW5jKSB7DQogICAgICAgIG9iai5DSU1fQm9vdFNlcnZpY2VfU2V0Qm9vdENvbmZpZ1JvbGUoIjxBZGRyZXNzIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nPC9BZGRyZXNzPjxSZWZlcmVuY2VQYXJhbWV0ZXJzIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCI+PFJlc291cmNlVVJJIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZFwiPmh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NjaW0vMS9jaW0tc2NoZW1hLzIvQ0lNX0Jvb3RDb25maWdTZXR0aW5nPC9SZXNvdXJjZVVSST48U2VsZWN0b3JTZXQgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkXCI+PFNlbGVjdG9yIE5hbWU9XCJJbnN0YW5jZUlEXCI+SW50ZWwocikgQU1UOiBCb290IENvbmZpZ3VyYXRpb24gMDwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+IiwgUm9sZSwgY2FsbGJhY2tfZnVuYyk7DQogICAgfQ0KDQogICAgLy8gQ2FuY2VsIGFsbCBwZW5kaW5nIHF1ZXJpZXMgd2l0aCBnaXZlbiBzdGF0dXMNCiAgICBvYmouQ2FuY2VsQWxsUXVlcmllcyA9IGZ1bmN0aW9uIChzKSB7DQogICAgICAgIG9iai53c21hbi5DYW5jZWxBbGxRdWVyaWVzKHMpOw0KICAgIH0NCg0KICAgIC8vIEF1dG8gZ2VuZXJhdGVkIG1ldGhvZHMNCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ19SZWdpc3RlckFnZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2ciLCAiUmVnaXN0ZXJBZ2VudCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nX0Fzc2VydFByZXNlbmNlID0gZnVuY3Rpb24gKFNlcXVlbmNlTnVtYmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nIiwgIkFzc2VydFByZXNlbmNlIiwgeyAiU2VxdWVuY2VOdW1iZXIiOiBTZXF1ZW5jZU51bWJlciB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nX0Fzc2VydFNodXRkb3duID0gZnVuY3Rpb24gKFNlcXVlbmNlTnVtYmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nIiwgIkFzc2VydFNodXRkb3duIiwgeyAiU2VxdWVuY2VOdW1iZXIiOiBTZXF1ZW5jZU51bWJlciB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nX0FkZEFjdGlvbiA9IGZ1bmN0aW9uIChPbGRTdGF0ZSwgTmV3U3RhdGUsIEV2ZW50T25UcmFuc2l0aW9uLCBBY3Rpb25TZCwgQWN0aW9uRWFjLCBjYWxsYmFja19mdW5jLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nIiwgIkFkZEFjdGlvbiIsIHsgIk9sZFN0YXRlIjogT2xkU3RhdGUsICJOZXdTdGF0ZSI6IE5ld1N0YXRlLCAiRXZlbnRPblRyYW5zaXRpb24iOiBFdmVudE9uVHJhbnNpdGlvbiwgIkFjdGlvblNkIjogQWN0aW9uU2QsICJBY3Rpb25FYWMiOiBBY3Rpb25FYWMgfSwgY2FsbGJhY2tfZnVuYywgdGFnLCBwcmksIHNlbGVjdG9ycyk7IH0NCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ19EZWxldGVBbGxBY3Rpb25zID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMsIHRhZywgcHJpLCBzZWxlY3RvcnMpIHsgb2JqLkV4ZWMoIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2ciLCAiRGVsZXRlQWxsQWN0aW9ucyIsIHt9LCBjYWxsYmFja19mdW5jLCB0YWcsIHByaSwgc2VsZWN0b3JzKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nQWN0aW9uX0dldEFjdGlvbkVhYyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nQWN0aW9uIiwgIkdldEFjdGlvbkVhYyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkFfUmVnaXN0ZXJBZ2VudCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkEiLCAiUmVnaXN0ZXJBZ2VudCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkFfQXNzZXJ0UHJlc2VuY2UgPSBmdW5jdGlvbiAoU2VxdWVuY2VOdW1iZXIsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2dWQSIsICJBc3NlcnRQcmVzZW5jZSIsIHsgIlNlcXVlbmNlTnVtYmVyIjogU2VxdWVuY2VOdW1iZXIgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBX0Fzc2VydFNodXRkb3duID0gZnVuY3Rpb24gKFNlcXVlbmNlTnVtYmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkEiLCAiQXNzZXJ0U2h1dGRvd24iLCB7ICJTZXF1ZW5jZU51bWJlciI6IFNlcXVlbmNlTnVtYmVyIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2dWQV9BZGRBY3Rpb24gPSBmdW5jdGlvbiAoT2xkU3RhdGUsIE5ld1N0YXRlLCBFdmVudE9uVHJhbnNpdGlvbiwgQWN0aW9uU2QsIEFjdGlvbkVhYywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBIiwgIkFkZEFjdGlvbiIsIHsgIk9sZFN0YXRlIjogT2xkU3RhdGUsICJOZXdTdGF0ZSI6IE5ld1N0YXRlLCAiRXZlbnRPblRyYW5zaXRpb24iOiBFdmVudE9uVHJhbnNpdGlvbiwgIkFjdGlvblNkIjogQWN0aW9uU2QsICJBY3Rpb25FYWMiOiBBY3Rpb25FYWMgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBX0RlbGV0ZUFsbEFjdGlvbnMgPSBmdW5jdGlvbiAoX21ldGhvZF9kdW1teSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBIiwgIkRlbGV0ZUFsbEFjdGlvbnMiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQXVkaXRMb2dfQ2xlYXJMb2cgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1ZGl0TG9nIiwgIkNsZWFyTG9nIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdExvZ19SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1ZGl0TG9nX1JlYWRSZWNvcmRzID0gZnVuY3Rpb24gKFN0YXJ0SW5kZXgsIGNhbGxiYWNrX2Z1bmMsIHRhZykgeyBvYmouRXhlYygiQU1UX0F1ZGl0TG9nIiwgIlJlYWRSZWNvcmRzIiwgeyAiU3RhcnRJbmRleCI6IFN0YXJ0SW5kZXggfSwgY2FsbGJhY2tfZnVuYywgdGFnKTsgfQ0KICAgIG9iai5BTVRfQXVkaXRMb2dfU2V0QXVkaXRMb2NrID0gZnVuY3Rpb24gKExvY2tUaW1lb3V0SW5TZWNvbmRzLCBGbGFnLCBIYW5kbGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJTZXRBdWRpdExvY2siLCB7ICJMb2NrVGltZW91dEluU2Vjb25kcyI6IExvY2tUaW1lb3V0SW5TZWNvbmRzLCAiRmxhZyI6IEZsYWcsICJIYW5kbGUiOiBIYW5kbGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1ZGl0TG9nX0V4cG9ydEF1ZGl0TG9nU2lnbmF0dXJlID0gZnVuY3Rpb24gKFNpZ25pbmdNZWNoYW5pc20sIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJFeHBvcnRBdWRpdExvZ1NpZ25hdHVyZSIsIHsgIlNpZ25pbmdNZWNoYW5pc20iOiBTaWduaW5nTWVjaGFuaXNtIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdExvZ19TZXRTaWduaW5nS2V5TWF0ZXJpYWwgPSBmdW5jdGlvbiAoU2lnbmluZ01lY2hhbmlzbVR5cGUsIFNpZ25pbmdLZXksIExlbmd0aE9mQ2VydGlmaWNhdGVzLCBDZXJ0aWZpY2F0ZXMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJTZXRTaWduaW5nS2V5TWF0ZXJpYWwiLCB7ICJTaWduaW5nTWVjaGFuaXNtVHlwZSI6IFNpZ25pbmdNZWNoYW5pc21UeXBlLCAiU2lnbmluZ0tleSI6IFNpZ25pbmdLZXksICJMZW5ndGhPZkNlcnRpZmljYXRlcyI6IExlbmd0aE9mQ2VydGlmaWNhdGVzLCAiQ2VydGlmaWNhdGVzIjogQ2VydGlmaWNhdGVzIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdFBvbGljeVJ1bGVfU2V0QXVkaXRQb2xpY3kgPSBmdW5jdGlvbiAoRW5hYmxlLCBBdWRpdGVkQXBwSUQsIEV2ZW50SUQsIFBvbGljeVR5cGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdFBvbGljeVJ1bGUiLCAiU2V0QXVkaXRQb2xpY3kiLCB7ICJFbmFibGUiOiBFbmFibGUsICJBdWRpdGVkQXBwSUQiOiBBdWRpdGVkQXBwSUQsICJFdmVudElEIjogRXZlbnRJRCwgIlBvbGljeVR5cGUiOiBQb2xpY3lUeXBlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdFBvbGljeVJ1bGVfU2V0QXVkaXRQb2xpY3lCdWxrID0gZnVuY3Rpb24gKEVuYWJsZSwgQXVkaXRlZEFwcElELCBFdmVudElELCBQb2xpY3lUeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQXVkaXRQb2xpY3lSdWxlIiwgIlNldEF1ZGl0UG9saWN5QnVsayIsIHsgIkVuYWJsZSI6IEVuYWJsZSwgIkF1ZGl0ZWRBcHBJRCI6IEF1ZGl0ZWRBcHBJRCwgIkV2ZW50SUQiOiBFdmVudElELCAiUG9saWN5VHlwZSI6IFBvbGljeVR5cGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX0FkZFVzZXJBY2xFbnRyeUV4ID0gZnVuY3Rpb24gKERpZ2VzdFVzZXJuYW1lLCBEaWdlc3RQYXNzd29yZCwgS2VyYmVyb3NVc2VyU2lkLCBBY2Nlc3NQZXJtaXNzaW9uLCBSZWFsbXMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJBZGRVc2VyQWNsRW50cnlFeCIsIHsgIkRpZ2VzdFVzZXJuYW1lIjogRGlnZXN0VXNlcm5hbWUsICJEaWdlc3RQYXNzd29yZCI6IERpZ2VzdFBhc3N3b3JkLCAiS2VyYmVyb3NVc2VyU2lkIjogS2VyYmVyb3NVc2VyU2lkLCAiQWNjZXNzUGVybWlzc2lvbiI6IEFjY2Vzc1Blcm1pc3Npb24sICJSZWFsbXMiOiBSZWFsbXMgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX0VudW1lcmF0ZVVzZXJBY2xFbnRyaWVzID0gZnVuY3Rpb24gKFN0YXJ0SW5kZXgsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJFbnVtZXJhdGVVc2VyQWNsRW50cmllcyIsIHsgIlN0YXJ0SW5kZXgiOiBTdGFydEluZGV4IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRVc2VyQWNsRW50cnlFeCA9IGZ1bmN0aW9uIChIYW5kbGUsIGNhbGxiYWNrX2Z1bmMsIHRhZykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIkdldFVzZXJBY2xFbnRyeUV4IiwgeyAiSGFuZGxlIjogSGFuZGxlIH0sIGNhbGxiYWNrX2Z1bmMsIHRhZyk7IH0NCiAgICBvYmouQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1VwZGF0ZVVzZXJBY2xFbnRyeUV4ID0gZnVuY3Rpb24gKEhhbmRsZSwgRGlnZXN0VXNlcm5hbWUsIERpZ2VzdFBhc3N3b3JkLCBLZXJiZXJvc1VzZXJTaWQsIEFjY2Vzc1Blcm1pc3Npb24sIFJlYWxtcywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIlVwZGF0ZVVzZXJBY2xFbnRyeUV4IiwgeyAiSGFuZGxlIjogSGFuZGxlLCAiRGlnZXN0VXNlcm5hbWUiOiBEaWdlc3RVc2VybmFtZSwgIkRpZ2VzdFBhc3N3b3JkIjogRGlnZXN0UGFzc3dvcmQsICJLZXJiZXJvc1VzZXJTaWQiOiBLZXJiZXJvc1VzZXJTaWQsICJBY2Nlc3NQZXJtaXNzaW9uIjogQWNjZXNzUGVybWlzc2lvbiwgIlJlYWxtcyI6IFJlYWxtcyB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfUmVtb3ZlVXNlckFjbEVudHJ5ID0gZnVuY3Rpb24gKEhhbmRsZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIlJlbW92ZVVzZXJBY2xFbnRyeSIsIHsgIkhhbmRsZSI6IEhhbmRsZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfU2V0QWRtaW5BY2xFbnRyeUV4ID0gZnVuY3Rpb24gKFVzZXJuYW1lLCBEaWdlc3RQYXNzd29yZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIlNldEFkbWluQWNsRW50cnlFeCIsIHsgIlVzZXJuYW1lIjogVXNlcm5hbWUsICJEaWdlc3RQYXNzd29yZCI6IERpZ2VzdFBhc3N3b3JkIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBZG1pbkFjbEVudHJ5ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBZG1pbkFjbEVudHJ5Iiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBZG1pbkFjbEVudHJ5U3RhdHVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBZG1pbkFjbEVudHJ5U3RhdHVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBZG1pbk5ldEFjbEVudHJ5U3RhdHVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBZG1pbk5ldEFjbEVudHJ5U3RhdHVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9TZXRBY2xFbmFibGVkU3RhdGUgPSBmdW5jdGlvbiAoSGFuZGxlLCBFbmFibGVkLCBjYWxsYmFja19mdW5jLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJTZXRBY2xFbmFibGVkU3RhdGUiLCB7ICJIYW5kbGUiOiBIYW5kbGUsICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jLCB0YWcpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBY2xFbmFibGVkU3RhdGUgPSBmdW5jdGlvbiAoSGFuZGxlLCBjYWxsYmFja19mdW5jLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBY2xFbmFibGVkU3RhdGUiLCB7ICJIYW5kbGUiOiBIYW5kbGUgfSwgY2FsbGJhY2tfZnVuYywgdGFnKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9FbmRwb2ludEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9HZXRQb3N0dXJlID0gZnVuY3Rpb24gKFBvc3R1cmVUeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZSIsICJHZXRQb3N0dXJlIiwgeyAiUG9zdHVyZVR5cGUiOiBQb3N0dXJlVHlwZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9HZXRQb3N0dXJlSGFzaCA9IGZ1bmN0aW9uIChQb3N0dXJlVHlwZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0VuZHBvaW50QWNjZXNzQ29udHJvbFNlcnZpY2UiLCAiR2V0UG9zdHVyZUhhc2giLCB7ICJQb3N0dXJlVHlwZSI6IFBvc3R1cmVUeXBlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9FbmRwb2ludEFjY2Vzc0NvbnRyb2xTZXJ2aWNlX1VwZGF0ZVBvc3R1cmVTdGF0ZSA9IGZ1bmN0aW9uIChVcGRhdGVUeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZSIsICJVcGRhdGVQb3N0dXJlU3RhdGUiLCB7ICJVcGRhdGVUeXBlIjogVXBkYXRlVHlwZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9HZXRFYWNPcHRpb25zID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9FbmRwb2ludEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIiwgIkdldEVhY09wdGlvbnMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0VuZHBvaW50QWNjZXNzQ29udHJvbFNlcnZpY2VfU2V0RWFjT3B0aW9ucyA9IGZ1bmN0aW9uIChFYWNWZW5kb3JzLCBQb3N0dXJlSGFzaEFsZ29yaXRobSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0VuZHBvaW50QWNjZXNzQ29udHJvbFNlcnZpY2UiLCAiU2V0RWFjT3B0aW9ucyIsIHsgIkVhY1ZlbmRvcnMiOiBFYWNWZW5kb3JzLCAiUG9zdHVyZUhhc2hBbGdvcml0aG0iOiBQb3N0dXJlSGFzaEFsZ29yaXRobSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YV9TZXRTeXN0ZW1EZWZlbnNlUG9saWN5ID0gZnVuY3Rpb24gKFBvbGljeSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEiLCAiU2V0U3lzdGVtRGVmZW5zZVBvbGljeSIsIHsgIlBvbGljeSI6IFBvbGljeSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YV9FbmFibGVWcG5Sb3V0aW5nID0gZnVuY3Rpb24gKEVuYWJsZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEiLCAiRW5hYmxlVnBuUm91dGluZyIsIHsgIkVuYWJsZSI6IEVuYWJsZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRXRoZXJuZXRQb3J0U2V0dGluZ3NfU2V0TGlua1ByZWZlcmVuY2UgPSBmdW5jdGlvbiAoTGlua1ByZWZlcmVuY2UsIFRpbWVvdXQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyIsICJTZXRMaW5rUHJlZmVyZW5jZSIsIHsgIkxpbmtQcmVmZXJlbmNlIjogTGlua1ByZWZlcmVuY2UsICJUaW1lb3V0IjogVGltZW91dCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfSGV1cmlzdGljUGFja2V0RmlsdGVyU3RhdGlzdGljc19SZXNldFNlbGVjdGVkU3RhdHMgPSBmdW5jdGlvbiAoU2VsZWN0ZWRTdGF0aXN0aWNzLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfSGV1cmlzdGljUGFja2V0RmlsdGVyU3RhdGlzdGljcyIsICJSZXNldFNlbGVjdGVkU3RhdHMiLCB7ICJTZWxlY3RlZFN0YXRpc3RpY3MiOiBTZWxlY3RlZFN0YXRpc3RpY3MgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0tlcmJlcm9zU2V0dGluZ0RhdGFfR2V0Q3JlZGVudGlhbENhY2hlU3RhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0tlcmJlcm9zU2V0dGluZ0RhdGEiLCAiR2V0Q3JlZGVudGlhbENhY2hlU3RhdGUiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0tlcmJlcm9zU2V0dGluZ0RhdGFfU2V0Q3JlZGVudGlhbENhY2hlU3RhdGUgPSBmdW5jdGlvbiAoRW5hYmxlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfS2VyYmVyb3NTZXR0aW5nRGF0YSIsICJTZXRDcmVkZW50aWFsQ2FjaGVTdGF0ZSIsIHsgIkVuYWJsZSI6IEVuYWJsZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfTWVzc2FnZUxvZ19DYW5jZWxJdGVyYXRpb24gPSBmdW5jdGlvbiAoSXRlcmF0aW9uSWRlbnRpZmllciwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiQ2FuY2VsSXRlcmF0aW9uIiwgeyAiSXRlcmF0aW9uSWRlbnRpZmllciI6IEl0ZXJhdGlvbklkZW50aWZpZXIgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX01lc3NhZ2VMb2dfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfTWVzc2FnZUxvZyIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX01lc3NhZ2VMb2dfQ2xlYXJMb2cgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiQ2xlYXJMb2ciLCB7IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9NZXNzYWdlTG9nX0dldFJlY29yZHMgPSBmdW5jdGlvbiAoSXRlcmF0aW9uSWRlbnRpZmllciwgTWF4UmVhZFJlY29yZHMsIGNhbGxiYWNrX2Z1bmMsIHRhZykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiR2V0UmVjb3JkcyIsIHsgIkl0ZXJhdGlvbklkZW50aWZpZXIiOiBJdGVyYXRpb25JZGVudGlmaWVyLCAiTWF4UmVhZFJlY29yZHMiOiBNYXhSZWFkUmVjb3JkcyB9LCBjYWxsYmFja19mdW5jLCB0YWcpOyB9DQogICAgb2JqLkFNVF9NZXNzYWdlTG9nX0dldFJlY29yZCA9IGZ1bmN0aW9uIChJdGVyYXRpb25JZGVudGlmaWVyLCBQb3NpdGlvblRvTmV4dCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiR2V0UmVjb3JkIiwgeyAiSXRlcmF0aW9uSWRlbnRpZmllciI6IEl0ZXJhdGlvbklkZW50aWZpZXIsICJQb3NpdGlvblRvTmV4dCI6IFBvc2l0aW9uVG9OZXh0IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9NZXNzYWdlTG9nX1Bvc2l0aW9uQXRSZWNvcmQgPSBmdW5jdGlvbiAoSXRlcmF0aW9uSWRlbnRpZmllciwgTW92ZUFic29sdXRlLCBSZWNvcmROdW1iZXIsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9NZXNzYWdlTG9nIiwgIlBvc2l0aW9uQXRSZWNvcmQiLCB7ICJJdGVyYXRpb25JZGVudGlmaWVyIjogSXRlcmF0aW9uSWRlbnRpZmllciwgIk1vdmVBYnNvbHV0ZSI6IE1vdmVBYnNvbHV0ZSwgIlJlY29yZE51bWJlciI6IFJlY29yZE51bWJlciB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfTWVzc2FnZUxvZ19Qb3NpdGlvblRvRmlyc3RSZWNvcmQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYywgdGFnKSB7IG9iai5FeGVjKCJBTVRfTWVzc2FnZUxvZyIsICJQb3NpdGlvblRvRmlyc3RSZWNvcmQiLCB7fSwgY2FsbGJhY2tfZnVuYywgdGFnKTsgfQ0KICAgIG9iai5BTVRfTWVzc2FnZUxvZ19GcmVlemVMb2cgPSBmdW5jdGlvbiAoRnJlZXplLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfTWVzc2FnZUxvZyIsICJGcmVlemVMb2ciLCB7ICJGcmVlemUiOiBGcmVlemUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0FkZENSTCA9IGZ1bmN0aW9uIChVcmwsIFNlcmlhbE51bWJlcnMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJBZGRDUkwiLCB7ICJVcmwiOiBVcmwsICJTZXJpYWxOdW1iZXJzIjogU2VyaWFsTnVtYmVycyB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfUmVzZXRDUkxMaXN0ID0gZnVuY3Rpb24gKF9tZXRob2RfZHVtbXksIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJSZXNldENSTExpc3QiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkQ2VydGlmaWNhdGUgPSBmdW5jdGlvbiAoQ2VydGlmaWNhdGVCbG9iLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UiLCAiQWRkQ2VydGlmaWNhdGUiLCB7ICJDZXJ0aWZpY2F0ZUJsb2IiOiBDZXJ0aWZpY2F0ZUJsb2IgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0FkZFRydXN0ZWRSb290Q2VydGlmaWNhdGUgPSBmdW5jdGlvbiAoQ2VydGlmaWNhdGVCbG9iLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UiLCAiQWRkVHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSIsIHsgIkNlcnRpZmljYXRlQmxvYiI6IENlcnRpZmljYXRlQmxvYiB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkS2V5ID0gZnVuY3Rpb24gKEtleUJsb2IsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJBZGRLZXkiLCB7ICJLZXlCbG9iIjogS2V5QmxvYiB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfR2VuZXJhdGVQS0NTMTBSZXF1ZXN0ID0gZnVuY3Rpb24gKEtleVBhaXIsIEROTmFtZSwgVXNhZ2UsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJHZW5lcmF0ZVBLQ1MxMFJlcXVlc3QiLCB7ICJLZXlQYWlyIjogS2V5UGFpciwgIkROTmFtZSI6IEROTmFtZSwgIlVzYWdlIjogVXNhZ2UgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0dlbmVyYXRlUEtDUzEwUmVxdWVzdEV4ID0gZnVuY3Rpb24gKEtleVBhaXIsIFNpZ25pbmdBbGdvcml0aG0sIE51bGxTaWduZWRDZXJ0aWZpY2F0ZVJlcXVlc3QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJHZW5lcmF0ZVBLQ1MxMFJlcXVlc3RFeCIsIHsgIktleVBhaXIiOiBLZXlQYWlyLCAiU2lnbmluZ0FsZ29yaXRobSI6IFNpZ25pbmdBbGdvcml0aG0sICJOdWxsU2lnbmVkQ2VydGlmaWNhdGVSZXF1ZXN0IjogTnVsbFNpZ25lZENlcnRpZmljYXRlUmVxdWVzdCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfR2VuZXJhdGVLZXlQYWlyID0gZnVuY3Rpb24gKEtleUFsZ29yaXRobSwgS2V5TGVuZ3RoLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UiLCAiR2VuZXJhdGVLZXlQYWlyIiwgeyAiS2V5QWxnb3JpdGhtIjogS2V5QWxnb3JpdGhtLCAiS2V5TGVuZ3RoIjogS2V5TGVuZ3RoIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9SZWRpcmVjdGlvblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1JlZGlyZWN0aW9uU2VydmljZV9UZXJtaW5hdGVTZXNzaW9uID0gZnVuY3Rpb24gKFNlc3Npb25UeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlIiwgIlRlcm1pbmF0ZVNlc3Npb24iLCB7ICJTZXNzaW9uVHlwZSI6IFNlc3Npb25UeXBlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9SZW1vdGVBY2Nlc3NTZXJ2aWNlX0FkZE1wU2VydmVyID0gZnVuY3Rpb24gKEFjY2Vzc0luZm8sIEluZm9Gb3JtYXQsIFBvcnQsIEF1dGhNZXRob2QsIENlcnRpZmljYXRlLCBVc2VybmFtZSwgUGFzc3dvcmQsIENOLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVtb3RlQWNjZXNzU2VydmljZSIsICJBZGRNcFNlcnZlciIsIHsgIkFjY2Vzc0luZm8iOiBBY2Nlc3NJbmZvLCAiSW5mb0Zvcm1hdCI6IEluZm9Gb3JtYXQsICJQb3J0IjogUG9ydCwgIkF1dGhNZXRob2QiOiBBdXRoTWV0aG9kLCAiQ2VydGlmaWNhdGUiOiBDZXJ0aWZpY2F0ZSwgIlVzZXJuYW1lIjogVXNlcm5hbWUsICJQYXNzd29yZCI6IFBhc3N3b3JkLCAiQ04iOiBDTiB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUmVtb3RlQWNjZXNzU2VydmljZV9BZGRSZW1vdGVBY2Nlc3NQb2xpY3lSdWxlID0gZnVuY3Rpb24gKFRyaWdnZXIsIFR1bm5lbExpZmVUaW1lLCBFeHRlbmRlZERhdGEsIE1wU2VydmVyLCBJbnRlcm5hbE1wU2VydmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVtb3RlQWNjZXNzU2VydmljZSIsICJBZGRSZW1vdGVBY2Nlc3NQb2xpY3lSdWxlIiwgeyAiVHJpZ2dlciI6IFRyaWdnZXIsICJUdW5uZWxMaWZlVGltZSI6IFR1bm5lbExpZmVUaW1lLCAiRXh0ZW5kZWREYXRhIjogRXh0ZW5kZWREYXRhLCAiTXBTZXJ2ZXIiOiBNcFNlcnZlciwgIkludGVybmFsTXBTZXJ2ZXIiOiBJbnRlcm5hbE1wU2VydmVyIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9SZW1vdGVBY2Nlc3NTZXJ2aWNlX0Nsb3NlUmVtb3RlQWNjZXNzQ29ubmVjdGlvbiA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVtb3RlQWNjZXNzU2VydmljZSIsICJDbG9zZVJlbW90ZUFjY2Vzc0Nvbm5lY3Rpb24iLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9Db21taXRDaGFuZ2VzID0gZnVuY3Rpb24gKF9tZXRob2RfZHVtbXksIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIkNvbW1pdENoYW5nZXMiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9VbnByb3Zpc2lvbiA9IGZ1bmN0aW9uIChQcm92aXNpb25pbmdNb2RlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJVbnByb3Zpc2lvbiIsIHsgIlByb3Zpc2lvbmluZ01vZGUiOiBQcm92aXNpb25pbmdNb2RlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlX1BhcnRpYWxVbnByb3Zpc2lvbiA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJQYXJ0aWFsVW5wcm92aXNpb24iLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9SZXNldEZsYXNoV2Vhck91dFByb3RlY3Rpb24gPSBmdW5jdGlvbiAoX21ldGhvZF9kdW1teSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2UiLCAiUmVzZXRGbGFzaFdlYXJPdXRQcm90ZWN0aW9uIiwgeyAiX21ldGhvZF9kdW1teSI6IF9tZXRob2RfZHVtbXkgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2VfRXh0ZW5kUHJvdmlzaW9uaW5nUGVyaW9kID0gZnVuY3Rpb24gKER1cmF0aW9uLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJFeHRlbmRQcm92aXNpb25pbmdQZXJpb2QiLCB7ICJEdXJhdGlvbiI6IER1cmF0aW9uIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlX1NldE1FQnhQYXNzd29yZCA9IGZ1bmN0aW9uIChQYXNzd29yZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2UiLCAiU2V0TUVCeFBhc3N3b3JkIiwgeyAiUGFzc3dvcmQiOiBQYXNzd29yZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9TZXRUTFNQU0sgPSBmdW5jdGlvbiAoUElELCBQUFMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIlNldFRMU1BTSyIsIHsgIlBJRCI6IFBJRCwgIlBQUyI6IFBQUyB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9HZXRQcm92aXNpb25pbmdBdWRpdFJlY29yZCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJHZXRQcm92aXNpb25pbmdBdWRpdFJlY29yZCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9HZXRVdWlkID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIkdldFV1aWQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2VfR2V0VW5wcm92aXNpb25CbG9ja2luZ0NvbXBvbmVudHMgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2UiLCAiR2V0VW5wcm92aXNpb25CbG9ja2luZ0NvbXBvbmVudHMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2VfR2V0UHJvdmlzaW9uaW5nQXVkaXRSZWNvcmRWMiA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJHZXRQcm92aXNpb25pbmdBdWRpdFJlY29yZFYyIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5X0dldFRpbWVvdXQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1N5c3RlbURlZmVuc2VQb2xpY3kiLCAiR2V0VGltZW91dCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU3lzdGVtRGVmZW5zZVBvbGljeV9TZXRUaW1lb3V0ID0gZnVuY3Rpb24gKFRpbWVvdXQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5IiwgIlNldFRpbWVvdXQiLCB7ICJUaW1lb3V0IjogVGltZW91dCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU3lzdGVtRGVmZW5zZVBvbGljeV9VcGRhdGVTdGF0aXN0aWNzID0gZnVuY3Rpb24gKE5ldHdvcmtJbnRlcmZhY2UsIFJlc2V0T25SZWFkLCBjYWxsYmFja19mdW5jLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai5FeGVjKCJBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSIsICJVcGRhdGVTdGF0aXN0aWNzIiwgeyAiTmV0d29ya0ludGVyZmFjZSI6IE5ldHdvcmtJbnRlcmZhY2UsICJSZXNldE9uUmVhZCI6IFJlc2V0T25SZWFkIH0sIGNhbGxiYWNrX2Z1bmMsIHRhZywgcHJpLCBzZWxlY3RvcnMpOyB9DQogICAgb2JqLkFNVF9TeXN0ZW1Qb3dlclNjaGVtZV9TZXRQb3dlclNjaGVtZSA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jLCBzY2hlbWVJbnN0YW5jZUlkLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9TeXN0ZW1Qb3dlclNjaGVtZSIsICJTZXRQb3dlclNjaGVtZSIsIHt9LCBjYWxsYmFja19mdW5jLCB0YWcsIDAsIHsgIkluc3RhbmNlSUQiOiBzY2hlbWVJbnN0YW5jZUlkIH0pOyB9DQogICAgb2JqLkFNVF9UaW1lU3luY2hyb25pemF0aW9uU2VydmljZV9HZXRMb3dBY2N1cmFjeVRpbWVTeW5jaCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9UaW1lU3luY2hyb25pemF0aW9uU2VydmljZSIsICJHZXRMb3dBY2N1cmFjeVRpbWVTeW5jaCIsIHt9LCBjYWxsYmFja19mdW5jLCB0YWcpOyB9DQogICAgb2JqLkFNVF9UaW1lU3luY2hyb25pemF0aW9uU2VydmljZV9TZXRIaWdoQWNjdXJhY3lUaW1lU3luY2ggPSBmdW5jdGlvbiAoVGEwLCBUbTEsIFRtMiwgY2FsbGJhY2tfZnVuYywgdGFnKSB7IG9iai5FeGVjKCJBTVRfVGltZVN5bmNocm9uaXphdGlvblNlcnZpY2UiLCAiU2V0SGlnaEFjY3VyYWN5VGltZVN5bmNoIiwgeyAiVGEwIjogVGEwLCAiVG0xIjogVG0xLCAiVG0yIjogVG0yIH0sIGNhbGxiYWNrX2Z1bmMsIHRhZyk7IH0NCiAgICBvYmouQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZV9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UiLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9XZWJVSVNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfV2ViVUlTZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZV9BZGRXaUZpU2V0dGluZ3MgPSBmdW5jdGlvbiAoV2lGaUVuZHBvaW50LCBXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0LCBJRUVFODAyMXhTZXR0aW5nc0lucHV0LCBDbGllbnRDcmVkZW50aWFsLCBDQUNyZWRlbnRpYWwsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWNXaXRoWG1sKCJBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSIsICJBZGRXaUZpU2V0dGluZ3MiLCB7ICJXaUZpRW5kcG9pbnQiOiBXaUZpRW5kcG9pbnQsICJXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0IjogV2lGaUVuZHBvaW50U2V0dGluZ3NJbnB1dCwgIklFRUU4MDIxeFNldHRpbmdzSW5wdXQiOiBJRUVFODAyMXhTZXR0aW5nc0lucHV0LCAiQ2xpZW50Q3JlZGVudGlhbCI6IENsaWVudENyZWRlbnRpYWwsICJDQUNyZWRlbnRpYWwiOiBDQUNyZWRlbnRpYWwgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2VfVXBkYXRlV2lGaVNldHRpbmdzID0gZnVuY3Rpb24gKFdpRmlFbmRwb2ludFNldHRpbmdzLCBXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0LCBJRUVFODAyMXhTZXR0aW5nc0lucHV0LCBDbGllbnRDcmVkZW50aWFsLCBDQUNyZWRlbnRpYWwsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWNXaXRoWG1sKCJBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSIsICJVcGRhdGVXaUZpU2V0dGluZ3MiLCB7ICJXaUZpRW5kcG9pbnRTZXR0aW5ncyI6IFdpRmlFbmRwb2ludFNldHRpbmdzLCAiV2lGaUVuZHBvaW50U2V0dGluZ3NJbnB1dCI6IFdpRmlFbmRwb2ludFNldHRpbmdzSW5wdXQsICJJRUVFODAyMXhTZXR0aW5nc0lucHV0IjogSUVFRTgwMjF4U2V0dGluZ3NJbnB1dCwgIkNsaWVudENyZWRlbnRpYWwiOiBDbGllbnRDcmVkZW50aWFsLCAiQ0FDcmVkZW50aWFsIjogQ0FDcmVkZW50aWFsIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9XaUZpUG9ydENvbmZpZ3VyYXRpb25TZXJ2aWNlX0RlbGV0ZUFsbElUUHJvZmlsZXMgPSBmdW5jdGlvbiAoX21ldGhvZF9kdW1teSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2UiLCAiRGVsZXRlQWxsSVRQcm9maWxlcyIsIHsgIl9tZXRob2RfZHVtbXkiOiBfbWV0aG9kX2R1bW15IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9XaUZpUG9ydENvbmZpZ3VyYXRpb25TZXJ2aWNlX0RlbGV0ZUFsbFVzZXJQcm9maWxlcyA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSIsICJEZWxldGVBbGxVc2VyUHJvZmlsZXMiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQWNjb3VudF9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9BY2NvdW50IiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQWNjb3VudE1hbmFnZW1lbnRTZXJ2aWNlX0NyZWF0ZUFjY291bnQgPSBmdW5jdGlvbiAoU3lzdGVtLCBBY2NvdW50VGVtcGxhdGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9BY2NvdW50TWFuYWdlbWVudFNlcnZpY2UiLCAiQ3JlYXRlQWNjb3VudCIsIHsgIlN5c3RlbSI6IFN5c3RlbSwgIkFjY291bnRUZW1wbGF0ZSI6IEFjY291bnRUZW1wbGF0ZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQm9vdENvbmZpZ1NldHRpbmdfQ2hhbmdlQm9vdE9yZGVyID0gZnVuY3Rpb24gKFNvdXJjZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0Jvb3RDb25maWdTZXR0aW5nIiwgIkNoYW5nZUJvb3RPcmRlciIsIHsgIlNvdXJjZSI6IFNvdXJjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQm9vdFNlcnZpY2VfU2V0Qm9vdENvbmZpZ1JvbGUgPSBmdW5jdGlvbiAoQm9vdENvbmZpZ1NldHRpbmcsIFJvbGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Cb290U2VydmljZSIsICJTZXRCb290Q29uZmlnUm9sZSIsIHsgIkJvb3RDb25maWdTZXR0aW5nIjogQm9vdENvbmZpZ1NldHRpbmcsICJSb2xlIjogUm9sZSB9LCBjYWxsYmFja19mdW5jLCAwLCAxKTsgfQ0KICAgIG9iai5DSU1fQ2FyZF9Db25uZWN0b3JQb3dlciA9IGZ1bmN0aW9uIChDb25uZWN0b3IsIFBvd2VyZWRPbiwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0NhcmQiLCAiQ29ubmVjdG9yUG93ZXIiLCB7ICJDb25uZWN0b3IiOiBDb25uZWN0b3IsICJQb3dlcmVkT24iOiBQb3dlcmVkT24gfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX0NhcmRfSXNDb21wYXRpYmxlID0gZnVuY3Rpb24gKEVsZW1lbnRUb0NoZWNrLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fQ2FyZCIsICJJc0NvbXBhdGlibGUiLCB7ICJFbGVtZW50VG9DaGVjayI6IEVsZW1lbnRUb0NoZWNrIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9DaGFzc2lzX0lzQ29tcGF0aWJsZSA9IGZ1bmN0aW9uIChFbGVtZW50VG9DaGVjaywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0NoYXNzaXMiLCAiSXNDb21wYXRpYmxlIiwgeyAiRWxlbWVudFRvQ2hlY2siOiBFbGVtZW50VG9DaGVjayB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fRmFuX1NldFNwZWVkID0gZnVuY3Rpb24gKERlc2lyZWRTcGVlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0ZhbiIsICJTZXRTcGVlZCIsIHsgIkRlc2lyZWRTcGVlZCI6IERlc2lyZWRTcGVlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fS1ZNUmVkaXJlY3Rpb25TQVBfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fS1ZNUmVkaXJlY3Rpb25TQVAiLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZS8qLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgKi99LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfTG9ja01lZGlhID0gZnVuY3Rpb24gKExvY2ssIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJMb2NrTWVkaWEiLCB7ICJMb2NrIjogTG9jayB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfU2V0UG93ZXJTdGF0ZSA9IGZ1bmN0aW9uIChQb3dlclN0YXRlLCBUaW1lLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiU2V0UG93ZXJTdGF0ZSIsIHsgIlBvd2VyU3RhdGUiOiBQb3dlclN0YXRlLCAiVGltZSI6IFRpbWUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX01lZGlhQWNjZXNzRGV2aWNlX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJSZXNldCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfRW5hYmxlRGV2aWNlID0gZnVuY3Rpb24gKEVuYWJsZWQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfT25saW5lRGV2aWNlID0gZnVuY3Rpb24gKE9ubGluZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX01lZGlhQWNjZXNzRGV2aWNlIiwgIk9ubGluZURldmljZSIsIHsgIk9ubGluZSI6IE9ubGluZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiUXVpZXNjZURldmljZSIsIHsgIlF1aWVzY2UiOiBRdWllc2NlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9NZWRpYUFjY2Vzc0RldmljZV9TYXZlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX01lZGlhQWNjZXNzRGV2aWNlX1Jlc3RvcmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJSZXN0b3JlUHJvcGVydGllcyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9QaHlzaWNhbEZyYW1lX0lzQ29tcGF0aWJsZSA9IGZ1bmN0aW9uIChFbGVtZW50VG9DaGVjaywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1BoeXNpY2FsRnJhbWUiLCAiSXNDb21wYXRpYmxlIiwgeyAiRWxlbWVudFRvQ2hlY2siOiBFbGVtZW50VG9DaGVjayB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUGh5c2ljYWxQYWNrYWdlX0lzQ29tcGF0aWJsZSA9IGZ1bmN0aW9uIChFbGVtZW50VG9DaGVjaywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1BoeXNpY2FsUGFja2FnZSIsICJJc0NvbXBhdGlibGUiLCB7ICJFbGVtZW50VG9DaGVjayI6IEVsZW1lbnRUb0NoZWNrIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qb3dlck1hbmFnZW1lbnRTZXJ2aWNlX1JlcXVlc3RQb3dlclN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFBvd2VyU3RhdGUsIE1hbmFnZWRFbGVtZW50LCBUaW1lLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJNYW5hZ2VtZW50U2VydmljZSIsICJSZXF1ZXN0UG93ZXJTdGF0ZUNoYW5nZSIsIHsgIlBvd2VyU3RhdGUiOiBQb3dlclN0YXRlLCAiTWFuYWdlZEVsZW1lbnQiOiBNYW5hZ2VkRWxlbWVudCwgIlRpbWUiOiBUaW1lLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYywgMCwgMSk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X1NldFBvd2VyU3RhdGUgPSBmdW5jdGlvbiAoUG93ZXJTdGF0ZSwgVGltZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlNldFBvd2VyU3RhdGUiLCB7ICJQb3dlclN0YXRlIjogUG93ZXJTdGF0ZSwgIlRpbWUiOiBUaW1lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qb3dlclN1cHBseV9SZXNldCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJTdXBwbHkiLCAiUmVzZXQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X0VuYWJsZURldmljZSA9IGZ1bmN0aW9uIChFbmFibGVkLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJTdXBwbHkiLCAiRW5hYmxlRGV2aWNlIiwgeyAiRW5hYmxlZCI6IEVuYWJsZWQgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X09ubGluZURldmljZSA9IGZ1bmN0aW9uIChPbmxpbmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qb3dlclN1cHBseSIsICJPbmxpbmVEZXZpY2UiLCB7ICJPbmxpbmUiOiBPbmxpbmUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X1F1aWVzY2VEZXZpY2UgPSBmdW5jdGlvbiAoUXVpZXNjZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlF1aWVzY2VEZXZpY2UiLCB7ICJRdWllc2NlIjogUXVpZXNjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUG93ZXJTdXBwbHlfU2F2ZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlNhdmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qb3dlclN1cHBseV9SZXN0b3JlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJTdXBwbHkiLCAiUmVzdG9yZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X1JlcXVlc3RTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChSZXF1ZXN0ZWRTdGF0ZSwgVGltZW91dFBlcmlvZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX1NldFBvd2VyU3RhdGUgPSBmdW5jdGlvbiAoUG93ZXJTdGF0ZSwgVGltZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Byb2Nlc3NvciIsICJTZXRQb3dlclN0YXRlIiwgeyAiUG93ZXJTdGF0ZSI6IFBvd2VyU3RhdGUsICJUaW1lIjogVGltZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qcm9jZXNzb3IiLCAiUmVzZXQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Byb2Nlc3Nvcl9FbmFibGVEZXZpY2UgPSBmdW5jdGlvbiAoRW5hYmxlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Byb2Nlc3NvciIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX09ubGluZURldmljZSA9IGZ1bmN0aW9uIChPbmxpbmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qcm9jZXNzb3IiLCAiT25saW5lRGV2aWNlIiwgeyAiT25saW5lIjogT25saW5lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qcm9jZXNzb3JfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUHJvY2Vzc29yIiwgIlF1aWVzY2VEZXZpY2UiLCB7ICJRdWllc2NlIjogUXVpZXNjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX1NhdmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qcm9jZXNzb3IiLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Byb2Nlc3Nvcl9SZXN0b3JlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUHJvY2Vzc29yIiwgIlJlc3RvcmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qcm9jZXNzb3JfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUHJvY2Vzc29yIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUmVjb3JkTG9nX0NsZWFyTG9nID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9SZWNvcmRMb2ciLCAiQ2xlYXJMb2ciLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1JlY29yZExvZ19SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9SZWNvcmRMb2ciLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9SZWRpcmVjdGlvblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUmVkaXJlY3Rpb25TZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX1NldFBvd2VyU3RhdGUgPSBmdW5jdGlvbiAoUG93ZXJTdGF0ZSwgVGltZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1NlbnNvciIsICJTZXRQb3dlclN0YXRlIiwgeyAiUG93ZXJTdGF0ZSI6IFBvd2VyU3RhdGUsICJUaW1lIjogVGltZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TZW5zb3IiLCAiUmVzZXQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1NlbnNvcl9FbmFibGVEZXZpY2UgPSBmdW5jdGlvbiAoRW5hYmxlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1NlbnNvciIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX09ubGluZURldmljZSA9IGZ1bmN0aW9uIChPbmxpbmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TZW5zb3IiLCAiT25saW5lRGV2aWNlIiwgeyAiT25saW5lIjogT25saW5lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9TZW5zb3JfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fU2Vuc29yIiwgIlF1aWVzY2VEZXZpY2UiLCB7ICJRdWllc2NlIjogUXVpZXNjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX1NhdmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TZW5zb3IiLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1NlbnNvcl9SZXN0b3JlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fU2Vuc29yIiwgIlJlc3RvcmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9TZW5zb3JfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fU2Vuc29yIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU3RhdGlzdGljYWxEYXRhX1Jlc2V0U2VsZWN0ZWRTdGF0cyA9IGZ1bmN0aW9uIChTZWxlY3RlZFN0YXRpc3RpY3MsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TdGF0aXN0aWNhbERhdGEiLCAiUmVzZXRTZWxlY3RlZFN0YXRzIiwgeyAiU2VsZWN0ZWRTdGF0aXN0aWNzIjogU2VsZWN0ZWRTdGF0aXN0aWNzIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XYXRjaGRvZ19LZWVwQWxpdmUgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dhdGNoZG9nIiwgIktlZXBBbGl2ZSIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfU2V0UG93ZXJTdGF0ZSA9IGZ1bmN0aW9uIChQb3dlclN0YXRlLCBUaW1lLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiU2V0UG93ZXJTdGF0ZSIsIHsgIlBvd2VyU3RhdGUiOiBQb3dlclN0YXRlLCAiVGltZSI6IFRpbWUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1dhdGNoZG9nX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XYXRjaGRvZyIsICJSZXNldCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfRW5hYmxlRGV2aWNlID0gZnVuY3Rpb24gKEVuYWJsZWQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XYXRjaGRvZyIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfT25saW5lRGV2aWNlID0gZnVuY3Rpb24gKE9ubGluZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dhdGNoZG9nIiwgIk9ubGluZURldmljZSIsIHsgIk9ubGluZSI6IE9ubGluZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiUXVpZXNjZURldmljZSIsIHsgIlF1aWVzY2UiOiBRdWllc2NlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XYXRjaGRvZ19TYXZlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1dhdGNoZG9nX1Jlc3RvcmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XYXRjaGRvZyIsICJSZXN0b3JlUHJvcGVydGllcyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9TZXRQb3dlclN0YXRlID0gZnVuY3Rpb24gKFBvd2VyU3RhdGUsIFRpbWUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJTZXRQb3dlclN0YXRlIiwgeyAiUG93ZXJTdGF0ZSI6IFBvd2VyU3RhdGUsICJUaW1lIjogVGltZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2lGaVBvcnRfUmVzZXQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dpRmlQb3J0IiwgIlJlc2V0Iiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9FbmFibGVEZXZpY2UgPSBmdW5jdGlvbiAoRW5hYmxlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dpRmlQb3J0IiwgIkVuYWJsZURldmljZSIsIHsgIkVuYWJsZWQiOiBFbmFibGVkIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9PbmxpbmVEZXZpY2UgPSBmdW5jdGlvbiAoT25saW5lLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2lGaVBvcnQiLCAiT25saW5lRGV2aWNlIiwgeyAiT25saW5lIjogT25saW5lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9RdWllc2NlRGV2aWNlID0gZnVuY3Rpb24gKFF1aWVzY2UsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJRdWllc2NlRGV2aWNlIiwgeyAiUXVpZXNjZSI6IFF1aWVzY2UgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1dpRmlQb3J0X1NhdmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJTYXZlUHJvcGVydGllcyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2lGaVBvcnRfUmVzdG9yZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dpRmlQb3J0IiwgIlJlc3RvcmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX0hvc3RCYXNlZFNldHVwU2VydmljZV9TZXR1cCA9IGZ1bmN0aW9uIChOZXRBZG1pblBhc3NFbmNyeXB0aW9uVHlwZSwgTmV0d29ya0FkbWluUGFzc3dvcmQsIE1jTm9uY2UsIENlcnRpZmljYXRlLCBTaWduaW5nQWxnb3JpdGhtLCBEaWdpdGFsU2lnbmF0dXJlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlIiwgIlNldHVwIiwgeyAiTmV0QWRtaW5QYXNzRW5jcnlwdGlvblR5cGUiOiBOZXRBZG1pblBhc3NFbmNyeXB0aW9uVHlwZSwgIk5ldHdvcmtBZG1pblBhc3N3b3JkIjogTmV0d29ya0FkbWluUGFzc3dvcmQsICJNY05vbmNlIjogTWNOb25jZSwgIkNlcnRpZmljYXRlIjogQ2VydGlmaWNhdGUsICJTaWduaW5nQWxnb3JpdGhtIjogU2lnbmluZ0FsZ29yaXRobSwgIkRpZ2l0YWxTaWduYXR1cmUiOiBEaWdpdGFsU2lnbmF0dXJlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfQWRkTmV4dENlcnRJbkNoYWluID0gZnVuY3Rpb24gKE5leHRDZXJ0aWZpY2F0ZSwgSXNMZWFmQ2VydGlmaWNhdGUsIElzUm9vdENlcnRpZmljYXRlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlIiwgIkFkZE5leHRDZXJ0SW5DaGFpbiIsIHsgIk5leHRDZXJ0aWZpY2F0ZSI6IE5leHRDZXJ0aWZpY2F0ZSwgIklzTGVhZkNlcnRpZmljYXRlIjogSXNMZWFmQ2VydGlmaWNhdGUsICJJc1Jvb3RDZXJ0aWZpY2F0ZSI6IElzUm9vdENlcnRpZmljYXRlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfQWRtaW5TZXR1cCA9IGZ1bmN0aW9uIChOZXRBZG1pblBhc3NFbmNyeXB0aW9uVHlwZSwgTmV0d29ya0FkbWluUGFzc3dvcmQsIE1jTm9uY2UsIFNpZ25pbmdBbGdvcml0aG0sIERpZ2l0YWxTaWduYXR1cmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2UiLCAiQWRtaW5TZXR1cCIsIHsgIk5ldEFkbWluUGFzc0VuY3J5cHRpb25UeXBlIjogTmV0QWRtaW5QYXNzRW5jcnlwdGlvblR5cGUsICJOZXR3b3JrQWRtaW5QYXNzd29yZCI6IE5ldHdvcmtBZG1pblBhc3N3b3JkLCAiTWNOb25jZSI6IE1jTm9uY2UsICJTaWduaW5nQWxnb3JpdGhtIjogU2lnbmluZ0FsZ29yaXRobSwgIkRpZ2l0YWxTaWduYXR1cmUiOiBEaWdpdGFsU2lnbmF0dXJlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfVXBncmFkZUNsaWVudFRvQWRtaW4gPSBmdW5jdGlvbiAoTWNOb25jZSwgU2lnbmluZ0FsZ29yaXRobSwgRGlnaXRhbFNpZ25hdHVyZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0hvc3RCYXNlZFNldHVwU2VydmljZSIsICJVcGdyYWRlQ2xpZW50VG9BZG1pbiIsIHsgIk1jTm9uY2UiOiBNY05vbmNlLCAiU2lnbmluZ0FsZ29yaXRobSI6IFNpZ25pbmdBbGdvcml0aG0sICJEaWdpdGFsU2lnbmF0dXJlIjogRGlnaXRhbFNpZ25hdHVyZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlX0Rpc2FibGVDbGllbnRDb250cm9sTW9kZSA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlIiwgIkRpc2FibGVDbGllbnRDb250cm9sTW9kZSIsIHsgIl9tZXRob2RfZHVtbXkiOiBfbWV0aG9kX2R1bW15IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhX1Rlcm1pbmF0ZVNlc3Npb24gPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiLCAiVGVybWluYXRlU2Vzc2lvbiIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YV9EYXRhQ2hhbm5lbFJlYWQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiLCAiRGF0YUNoYW5uZWxSZWFkIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhX0RhdGFDaGFubmVsV3JpdGUgPSBmdW5jdGlvbiAoRGF0YSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiLCAiRGF0YUNoYW5uZWxXcml0ZSIsIHsgIkRhdGFNZXNzYWdlIjogRGF0YSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfT3B0SW5TZXJ2aWNlX1N0YXJ0T3B0SW4gPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX09wdEluU2VydmljZSIsICJTdGFydE9wdEluIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19PcHRJblNlcnZpY2VfQ2FuY2VsT3B0SW4gPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX09wdEluU2VydmljZSIsICJDYW5jZWxPcHRJbiIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfT3B0SW5TZXJ2aWNlX1NlbmRPcHRJbkNvZGUgPSBmdW5jdGlvbiAoT3B0SW5Db2RlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfT3B0SW5TZXJ2aWNlIiwgIlNlbmRPcHRJbkNvZGUiLCB7ICJPcHRJbkNvZGUiOiBPcHRJbkNvZGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX09wdEluU2VydmljZV9TdGFydFNlcnZpY2UgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX09wdEluU2VydmljZSIsICJTdGFydFNlcnZpY2UiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX09wdEluU2VydmljZV9TdG9wU2VydmljZSA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfT3B0SW5TZXJ2aWNlIiwgIlN0b3BTZXJ2aWNlIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19PcHRJblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfT3B0SW5TZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfUHJvdmlzaW9uaW5nUmVjb3JkTG9nX1JlcXVlc3RTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChSZXF1ZXN0ZWRTdGF0ZSwgVGltZW91dFBlcmlvZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX1Byb3Zpc2lvbmluZ1JlY29yZExvZyIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX1Byb3Zpc2lvbmluZ1JlY29yZExvZ19DbGVhckxvZyA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfUHJvdmlzaW9uaW5nUmVjb3JkTG9nIiwgIkNsZWFyTG9nIiwgeyAiX21ldGhvZF9kdW1teSI6IF9tZXRob2RfZHVtbXkgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlX1NldFNlc3Npb25TdGF0ZSA9IGZ1bmN0aW9uIChTZXNzaW9uU3RhdGUsIENvbnNlY3V0aXZlUmVib290c051bSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIlNldFNlc3Npb25TdGF0ZSIsIHsgIlNlc3Npb25TdGF0ZSI6IFNlc3Npb25TdGF0ZSwgIkNvbnNlY3V0aXZlUmVib290c051bSI6IENvbnNlY3V0aXZlUmVib290c051bSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfU2VjSU9TZXJ2aWNlX1JlcXVlc3RTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChSZXF1ZXN0ZWRTdGF0ZSwgVGltZW91dFBlcmlvZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX1NlY0lPU2VydmljZSIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX0hUVFBQcm94eVNlcnZpY2VfQWRkUHJveHlBY2Nlc3NQb2ludCA9IGZ1bmN0aW9uIChBY2Nlc3NJbmZvLCBJbmZvRm9ybWF0LCBQb3J0LCBOZXR3b3JrRG5zU3VmZml4LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSFRUUFByb3h5U2VydmljZSIsICJBZGRQcm94eUFjY2Vzc1BvaW50IiwgeyAiQWNjZXNzSW5mbyI6IEFjY2Vzc0luZm8sICJJbmZvRm9ybWF0IjogSW5mb0Zvcm1hdCwgIlBvcnQiOiBQb3J0LCAiTmV0d29ya0Ruc1N1ZmZpeCI6IE5ldHdvcmtEbnNTdWZmaXggfSwgY2FsbGJhY2tfZnVuYyk7IH0NCg0KICAgIG9iai5BbXRTdGF0dXNUb1N0ciA9IGZ1bmN0aW9uIChjb2RlKSB7IGlmIChvYmouQW10U3RhdHVzQ29kZXNbY29kZV0pIHJldHVybiBvYmouQW10U3RhdHVzQ29kZXNbY29kZV07IGVsc2UgcmV0dXJuICJVTktOT1dOX0VSUk9SIiB9DQogICAgb2JqLkFtdFN0YXR1c0NvZGVzID0gew0KICAgICAgICAweDAwMDA6ICJTVUNDRVNTIiwNCiAgICAgICAgMHgwMDAxOiAiSU5URVJOQUxfRVJST1IiLA0KICAgICAgICAweDAwMDI6ICJOT1RfUkVBRFkiLA0KICAgICAgICAweDAwMDM6ICJJTlZBTElEX1BUX01PREUiLA0KICAgICAgICAweDAwMDQ6ICJJTlZBTElEX01FU1NBR0VfTEVOR1RIIiwNCiAgICAgICAgMHgwMDA1OiAiVEFCTEVfRklOR0VSUFJJTlRfTk9UX0FWQUlMQUJMRSIsDQogICAgICAgIDB4MDAwNjogIklOVEVHUklUWV9DSEVDS19GQUlMRUQiLA0KICAgICAgICAweDAwMDc6ICJVTlNVUFBPUlRFRF9JU1ZTX1ZFUlNJT04iLA0KICAgICAgICAweDAwMDg6ICJBUFBMSUNBVElPTl9OT1RfUkVHSVNURVJFRCIsDQogICAgICAgIDB4MDAwOTogIklOVkFMSURfUkVHSVNUUkFUSU9OX0RBVEEiLA0KICAgICAgICAweDAwMEE6ICJBUFBMSUNBVElPTl9ET0VTX05PVF9FWElTVCIsDQogICAgICAgIDB4MDAwQjogIk5PVF9FTk9VR0hfU1RPUkFHRSIsDQogICAgICAgIDB4MDAwQzogIklOVkFMSURfTkFNRSIsDQogICAgICAgIDB4MDAwRDogIkJMT0NLX0RPRVNfTk9UX0VYSVNUIiwNCiAgICAgICAgMHgwMDBFOiAiSU5WQUxJRF9CWVRFX09GRlNFVCIsDQogICAgICAgIDB4MDAwRjogIklOVkFMSURfQllURV9DT1VOVCIsDQogICAgICAgIDB4MDAxMDogIk5PVF9QRVJNSVRURUQiLA0KICAgICAgICAweDAwMTE6ICJOT1RfT1dORVIiLA0KICAgICAgICAweDAwMTI6ICJCTE9DS19MT0NLRURfQllfT1RIRVIiLA0KICAgICAgICAweDAwMTM6ICJCTE9DS19OT1RfTE9DS0VEIiwNCiAgICAgICAgMHgwMDE0OiAiSU5WQUxJRF9HUk9VUF9QRVJNSVNTSU9OUyIsDQogICAgICAgIDB4MDAxNTogIkdST1VQX0RPRVNfTk9UX0VYSVNUIiwNCiAgICAgICAgMHgwMDE2OiAiSU5WQUxJRF9NRU1CRVJfQ09VTlQiLA0KICAgICAgICAweDAwMTc6ICJNQVhfTElNSVRfUkVBQ0hFRCIsDQogICAgICAgIDB4MDAxODogIklOVkFMSURfQVVUSF9UWVBFIiwNCiAgICAgICAgMHgwMDE5OiAiQVVUSEVOVElDQVRJT05fRkFJTEVEIiwNCiAgICAgICAgMHgwMDFBOiAiSU5WQUxJRF9ESENQX01PREUiLA0KICAgICAgICAweDAwMUI6ICJJTlZBTElEX0lQX0FERFJFU1MiLA0KICAgICAgICAweDAwMUM6ICJJTlZBTElEX0RPTUFJTl9OQU1FIiwNCiAgICAgICAgMHgwMDFEOiAiVU5TVVBQT1JURURfVkVSU0lPTiIsDQogICAgICAgIDB4MDAxRTogIlJFUVVFU1RfVU5FWFBFQ1RFRCIsDQogICAgICAgIDB4MDAxRjogIklOVkFMSURfVEFCTEVfVFlQRSIsDQogICAgICAgIDB4MDAyMDogIklOVkFMSURfUFJPVklTSU9OSU5HX1NUQVRFIiwNCiAgICAgICAgMHgwMDIxOiAiVU5TVVBQT1JURURfT0JKRUNUIiwNCiAgICAgICAgMHgwMDIyOiAiSU5WQUxJRF9USU1FIiwNCiAgICAgICAgMHgwMDIzOiAiSU5WQUxJRF9JTkRFWCIsDQogICAgICAgIDB4MDAyNDogIklOVkFMSURfUEFSQU1FVEVSIiwNCiAgICAgICAgMHgwMDI1OiAiSU5WQUxJRF9ORVRNQVNLIiwNCiAgICAgICAgMHgwMDI2OiAiRkxBU0hfV1JJVEVfTElNSVRfRVhDRUVERUQiLA0KICAgICAgICAweDAwMjc6ICJJTlZBTElEX0lNQUdFX0xFTkdUSCIsDQogICAgICAgIDB4MDAyODogIklOVkFMSURfSU1BR0VfU0lHTkFUVVJFIiwNCiAgICAgICAgMHgwMDI5OiAiUFJPUE9TRV9BTk9USEVSX1ZFUlNJT04iLA0KICAgICAgICAweDAwMkE6ICJJTlZBTElEX1BJRF9GT1JNQVQiLA0KICAgICAgICAweDAwMkI6ICJJTlZBTElEX1BQU19GT1JNQVQiLA0KICAgICAgICAweDAwMkM6ICJCSVNUX0NPTU1BTkRfQkxPQ0tFRCIsDQogICAgICAgIDB4MDAyRDogIkNPTk5FQ1RJT05fRkFJTEVEIiwNCiAgICAgICAgMHgwMDJFOiAiQ09OTkVDVElPTl9UT09fTUFOWSIsDQogICAgICAgIDB4MDAyRjogIlJOR19HRU5FUkFUSU9OX0lOX1BST0dSRVNTIiwNCiAgICAgICAgMHgwMDMwOiAiUk5HX05PVF9SRUFEWSIsDQogICAgICAgIDB4MDAzMTogIkNFUlRJRklDQVRFX05PVF9SRUFEWSIsDQogICAgICAgIDB4MDQwMDogIkRJU0FCTEVEX0JZX1BPTElDWSIsDQogICAgICAgIDB4MDgwMDogIk5FVFdPUktfSUZfRVJST1JfQkFTRSIsDQogICAgICAgIDB4MDgwMTogIlVOU1VQUE9SVEVEX09FTV9OVU1CRVIiLA0KICAgICAgICAweDA4MDI6ICJVTlNVUFBPUlRFRF9CT09UX09QVElPTiIsDQogICAgICAgIDB4MDgwMzogIklOVkFMSURfQ09NTUFORCIsDQogICAgICAgIDB4MDgwNDogIklOVkFMSURfU1BFQ0lBTF9DT01NQU5EIiwNCiAgICAgICAgMHgwODA1OiAiSU5WQUxJRF9IQU5ETEUiLA0KICAgICAgICAweDA4MDY6ICJJTlZBTElEX1BBU1NXT1JEIiwNCiAgICAgICAgMHgwODA3OiAiSU5WQUxJRF9SRUFMTSIsDQogICAgICAgIDB4MDgwODogIlNUT1JBR0VfQUNMX0VOVFJZX0lOX1VTRSIsDQogICAgICAgIDB4MDgwOTogIkRBVEFfTUlTU0lORyIsDQogICAgICAgIDB4MDgwQTogIkRVUExJQ0FURSIsDQogICAgICAgIDB4MDgwQjogIkVWRU5UTE9HX0ZST1pFTiIsDQogICAgICAgIDB4MDgwQzogIlBLSV9NSVNTSU5HX0tFWVMiLA0KICAgICAgICAweDA4MEQ6ICJQS0lfR0VORVJBVElOR19LRVlTIiwNCiAgICAgICAgMHgwODBFOiAiSU5WQUxJRF9LRVkiLA0KICAgICAgICAweDA4MEY6ICJJTlZBTElEX0NFUlQiLA0KICAgICAgICAweDA4MTA6ICJDRVJUX0tFWV9OT1RfTUFUQ0giLA0KICAgICAgICAweDA4MTE6ICJNQVhfS0VSQl9ET01BSU5fUkVBQ0hFRCIsDQogICAgICAgIDB4MDgxMjogIlVOU1VQUE9SVEVEIiwNCiAgICAgICAgMHgwODEzOiAiSU5WQUxJRF9QUklPUklUWSIsDQogICAgICAgIDB4MDgxNDogIk5PVF9GT1VORCIsDQogICAgICAgIDB4MDgxNTogIklOVkFMSURfQ1JFREVOVElBTFMiLA0KICAgICAgICAweDA4MTY6ICJJTlZBTElEX1BBU1NQSFJBU0UiLA0KICAgICAgICAweDA4MTg6ICJOT19BU1NPQ0lBVElPTiIsDQogICAgICAgIDB4MDgxQjogIkFVRElUX0ZBSUwiLA0KICAgICAgICAweDA4MUM6ICJCTE9DS0lOR19DT01QT05FTlQiLA0KICAgICAgICAweDA4MjE6ICJVU0VSX0NPTlNFTlRfUkVRVUlSRUQiLA0KICAgICAgICAweDEwMDA6ICJBUFBfSU5URVJOQUxfRVJST1IiLA0KICAgICAgICAweDEwMDE6ICJOT1RfSU5JVElBTElaRUQiLA0KICAgICAgICAweDEwMDI6ICJMSUJfVkVSU0lPTl9VTlNVUFBPUlRFRCIsDQogICAgICAgIDB4MTAwMzogIklOVkFMSURfUEFSQU0iLA0KICAgICAgICAweDEwMDQ6ICJSRVNPVVJDRVMiLA0KICAgICAgICAweDEwMDU6ICJIQVJEV0FSRV9BQ0NFU1NfRVJST1IiLA0KICAgICAgICAweDEwMDY6ICJSRVFVRVNUT1JfTk9UX1JFR0lTVEVSRUQiLA0KICAgICAgICAweDEwMDc6ICJORVRXT1JLX0VSUk9SIiwNCiAgICAgICAgMHgxMDA4OiAiUEFSQU1fQlVGRkVSX1RPT19TSE9SVCIsDQogICAgICAgIDB4MTAwOTogIkNPTV9OT1RfSU5JVElBTElaRURfSU5fVEhSRUFEIiwNCiAgICAgICAgMHgxMDBBOiAiVVJMX1JFUVVJUkVEIg0KICAgIH0NCg0KICAgIC8vDQogICAgLy8gTWV0aG9kcyB1c2VkIGZvciBnZXR0aW5nIHRoZSBldmVudCBsb2cNCiAgICAvLw0KDQogICAgb2JqLkdldE1lc3NhZ2VMb2cgPSBmdW5jdGlvbiAoZnVuYywgdGFnKSB7DQogICAgICAgIG9iai5BTVRfTWVzc2FnZUxvZ19Qb3NpdGlvblRvRmlyc3RSZWNvcmQoX0dldE1lc3NhZ2VMb2cwLCBbZnVuYywgdGFnLCBbXV0pOw0KICAgIH0NCiAgICBmdW5jdGlvbiBfR2V0TWVzc2FnZUxvZzAoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzLCB0YWcpIHsNCiAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDAgfHwgcmVzcG9uc2VzLkJvZHlbIlJldHVyblZhbHVlIl0gIT0gJzAnKSB7IHRhZ1swXShvYmosIG51bGwsIHRhZ1syXSk7IHJldHVybjsgfQ0KICAgICAgICBvYmouQU1UX01lc3NhZ2VMb2dfR2V0UmVjb3JkcyhyZXNwb25zZXMuQm9keVsiSXRlcmF0aW9uSWRlbnRpZmllciJdLCAzOTAsIF9HZXRNZXNzYWdlTG9nMSwgdGFnKTsNCiAgICB9DQogICAgZnVuY3Rpb24gX0dldE1lc3NhZ2VMb2cxKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cywgdGFnKSB7DQogICAgICAgIGlmIChzdGF0dXMgIT0gMjAwIHx8IHJlc3BvbnNlcy5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9ICcwJykgeyB0YWdbMF0ob2JqLCBudWxsLCB0YWdbMl0pOyByZXR1cm47IH0NCiAgICAgICAgdmFyIGksIGosIHgsIGUsIEFtdE1lc3NhZ2VzID0gdGFnWzJdLCB0ID0gbmV3IERhdGUoKSwgVGltZVN0YW1wLCByYSA9IHJlc3BvbnNlcy5Cb2R5WyJSZWNvcmRBcnJheSJdOw0KICAgICAgICBpZiAodHlwZW9mIHJhID09PSAnc3RyaW5nJykgeyByZXNwb25zZXMuQm9keVsiUmVjb3JkQXJyYXkiXSA9IFtyZXNwb25zZXMuQm9keVsiUmVjb3JkQXJyYXkiXV07IH0NCg0KICAgICAgICBmb3IgKGkgaW4gcmEpIHsNCiAgICAgICAgICAgIGUgPSBudWxsOw0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyBOb2RlSlMgZGV0ZWN0aW9uDQogICAgICAgICAgICAgICAgdmFyIGlzTm9kZSA9IG5ldyBGdW5jdGlvbigidHJ5IHtyZXR1cm4gdGhpcz09PWdsb2JhbDt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO30iKTsNCiAgICAgICAgICAgICAgICBpZiAoaXNOb2RlKCkpIHsgZSA9IHJlcXVpcmUoJ2F0b2InKShyYVtpXSk7IH0gZWxzZSB7IGUgPSB3aW5kb3cuYXRvYihyYVtpXSk7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsgfQ0KICAgICAgICAgICAgaWYgKGUgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9IFJlYWRJbnRYKGUsIDApOw0KICAgICAgICAgICAgICAgIGlmICgoVGltZVN0YW1wID4gMCkgJiYgKFRpbWVTdGFtcCA8IDB4RkZGRkZGRkYpKSB7DQogICAgICAgICAgICAgICAgICAgIHggPSB7ICdEZXZpY2VBZGRyZXNzJzogZS5jaGFyQ29kZUF0KDQpLCAnRXZlbnRTZW5zb3JUeXBlJzogZS5jaGFyQ29kZUF0KDUpLCAnRXZlbnRUeXBlJzogZS5jaGFyQ29kZUF0KDYpLCAnRXZlbnRPZmZzZXQnOiBlLmNoYXJDb2RlQXQoNyksICdFdmVudFNvdXJjZVR5cGUnOiBlLmNoYXJDb2RlQXQoOCksICdFdmVudFNldmVyaXR5JzogZS5jaGFyQ29kZUF0KDkpLCAnU2Vuc29yTnVtYmVyJzogZS5jaGFyQ29kZUF0KDEwKSwgJ0VudGl0eSc6IGUuY2hhckNvZGVBdCgxMSksICdFbnRpdHlJbnN0YW5jZSc6IGUuY2hhckNvZGVBdCgxMiksICdFdmVudERhdGEnOiBbXSwgJ1RpbWUnOiBuZXcgRGF0ZSgoVGltZVN0YW1wICsgKHQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwKSkgKiAxMDAwKSB9Ow0KICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAxMzsgaiA8IDIxOyBqKyspIHsgeFsnRXZlbnREYXRhJ10ucHVzaChlLmNoYXJDb2RlQXQoaikpOyB9DQogICAgICAgICAgICAgICAgICAgIHhbJ0VudGl0eVN0ciddID0gX1N5c3RlbUVudGl0eVR5cGVzW3hbJ0VudGl0eSddXTsNCiAgICAgICAgICAgICAgICAgICAgeFsnRGVzYyddID0gX0dldEV2ZW50RGV0YWlsU3RyKHhbJ0V2ZW50U2Vuc29yVHlwZSddLCB4WydFdmVudE9mZnNldCddLCB4WydFdmVudERhdGEnXSwgeFsnRW50aXR5J10pOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXhbJ0VudGl0eVN0ciddKSB4WydFbnRpdHlTdHInXSA9ICJVbmtub3duIjsNCiAgICAgICAgICAgICAgICAgICAgQW10TWVzc2FnZXMucHVzaCh4KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAocmVzcG9uc2VzLkJvZHlbIk5vTW9yZVJlY29yZHMiXSAhPSB0cnVlKSB7IG9iai5BTVRfTWVzc2FnZUxvZ19HZXRSZWNvcmRzKHJlc3BvbnNlcy5Cb2R5WyJJdGVyYXRpb25JZGVudGlmaWVyIl0sIDM5MCwgX0dldE1lc3NhZ2VMb2cxLCBbdGFnWzBdLCBBbXRNZXNzYWdlcywgdGFnWzJdXSk7IH0gZWxzZSB7IHRhZ1swXShvYmosIEFtdE1lc3NhZ2VzLCB0YWdbMl0pOyB9DQogICAgfQ0KDQogICAgdmFyIF9FdmVudFRyYXBTb3VyY2VUeXBlcyA9ICJQbGF0Zm9ybSBmaXJtd2FyZSAoZS5nLiBCSU9TKXxTTUkgaGFuZGxlcnxJU1Ygc3lzdGVtIG1hbmFnZW1lbnQgc29mdHdhcmV8QWxlcnQgQVNJQ3xJUE1JfEJJT1MgdmVuZG9yfFN5c3RlbSBib2FyZCBzZXQgdmVuZG9yfFN5c3RlbSBpbnRlZ3JhdG9yfFRoaXJkIHBhcnR5IGFkZC1pbnxPU1Z8TklDfFN5c3RlbSBtYW5hZ2VtZW50IGNhcmQiLnNwbGl0KCd8Jyk7DQogICAgdmFyIF9TeXN0ZW1GaXJtd2FyZUVycm9yID0gIlVuc3BlY2lmaWVkLnxObyBzeXN0ZW0gbWVtb3J5IGlzIHBoeXNpY2FsbHkgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0ufE5vIHVzYWJsZSBzeXN0ZW0gbWVtb3J5LCBhbGwgaW5zdGFsbGVkIG1lbW9yeSBoYXMgZXhwZXJpZW5jZWQgYW4gdW5yZWNvdmVyYWJsZSBmYWlsdXJlLnxVbnJlY292ZXJhYmxlIGhhcmQtZGlzay9BVEFQSS9JREUgZGV2aWNlIGZhaWx1cmUufFVucmVjb3ZlcmFibGUgc3lzdGVtLWJvYXJkIGZhaWx1cmUufFVucmVjb3ZlcmFibGUgZGlza2V0dGUgc3Vic3lzdGVtIGZhaWx1cmUufFVucmVjb3ZlcmFibGUgaGFyZC1kaXNrIGNvbnRyb2xsZXIgZmFpbHVyZS58VW5yZWNvdmVyYWJsZSBQUy8yIG9yIFVTQiBrZXlib2FyZCBmYWlsdXJlLnxSZW1vdmFibGUgYm9vdCBtZWRpYSBub3QgZm91bmQufFVucmVjb3ZlcmFibGUgdmlkZW8gY29udHJvbGxlciBmYWlsdXJlLnxObyB2aWRlbyBkZXZpY2UgZGV0ZWN0ZWQufEZpcm13YXJlIChCSU9TKSBST00gY29ycnVwdGlvbiBkZXRlY3RlZC58Q1BVIHZvbHRhZ2UgbWlzbWF0Y2ggKHByb2Nlc3NvcnMgdGhhdCBzaGFyZSBzYW1lIHN1cHBseSBoYXZlIG1pc21hdGNoZWQgdm9sdGFnZSByZXF1aXJlbWVudHMpfENQVSBzcGVlZCBtYXRjaGluZyBmYWlsdXJlIi5zcGxpdCgnfCcpOw0KICAgIHZhciBfU3lzdGVtRmlybXdhcmVQcm9ncmVzcyA9ICJVbnNwZWNpZmllZC58TWVtb3J5IGluaXRpYWxpemF0aW9uLnxTdGFydGluZyBoYXJkLWRpc2sgaW5pdGlhbGl6YXRpb24gYW5kIHRlc3R8U2Vjb25kYXJ5IHByb2Nlc3NvcihzKSBpbml0aWFsaXphdGlvbnxVc2VyIGF1dGhlbnRpY2F0aW9ufFVzZXItaW5pdGlhdGVkIHN5c3RlbSBzZXR1cHxVU0IgcmVzb3VyY2UgY29uZmlndXJhdGlvbnxQQ0kgcmVzb3VyY2UgY29uZmlndXJhdGlvbnxPcHRpb24gUk9NIGluaXRpYWxpemF0aW9ufFZpZGVvIGluaXRpYWxpemF0aW9ufENhY2hlIGluaXRpYWxpemF0aW9ufFNNIEJ1cyBpbml0aWFsaXphdGlvbnxLZXlib2FyZCBjb250cm9sbGVyIGluaXRpYWxpemF0aW9ufEVtYmVkZGVkIGNvbnRyb2xsZXIvbWFuYWdlbWVudCBjb250cm9sbGVyIGluaXRpYWxpemF0aW9ufERvY2tpbmcgc3RhdGlvbiBhdHRhY2htZW50fEVuYWJsaW5nIGRvY2tpbmcgc3RhdGlvbnxEb2NraW5nIHN0YXRpb24gZWplY3Rpb258RGlzYWJsaW5nIGRvY2tpbmcgc3RhdGlvbnxDYWxsaW5nIG9wZXJhdGluZyBzeXN0ZW0gd2FrZS11cCB2ZWN0b3J8U3RhcnRpbmcgb3BlcmF0aW5nIHN5c3RlbSBib290IHByb2Nlc3N8QmFzZWJvYXJkIG9yIG1vdGhlcmJvYXJkIGluaXRpYWxpemF0aW9ufHJlc2VydmVkfEZsb3BweSBpbml0aWFsaXphdGlvbnxLZXlib2FyZCB0ZXN0fFBvaW50aW5nIGRldmljZSB0ZXN0fFByaW1hcnkgcHJvY2Vzc29yIGluaXRpYWxpemF0aW9uIi5zcGxpdCgnfCcpOw0KICAgIHZhciBfU3lzdGVtRW50aXR5VHlwZXMgPSAiVW5zcGVjaWZpZWR8T3RoZXJ8VW5rbm93bnxQcm9jZXNzb3J8RGlza3xQZXJpcGhlcmFsfFN5c3RlbSBtYW5hZ2VtZW50IG1vZHVsZXxTeXN0ZW0gYm9hcmR8TWVtb3J5IG1vZHVsZXxQcm9jZXNzb3IgbW9kdWxlfFBvd2VyIHN1cHBseXxBZGQgaW4gY2FyZHxGcm9udCBwYW5lbCBib2FyZHxCYWNrIHBhbmVsIGJvYXJkfFBvd2VyIHN5c3RlbSBib2FyZHxEcml2ZSBiYWNrcGxhbmV8U3lzdGVtIGludGVybmFsIGV4cGFuc2lvbiBib2FyZHxPdGhlciBzeXN0ZW0gYm9hcmR8UHJvY2Vzc29yIGJvYXJkfFBvd2VyIHVuaXR8UG93ZXIgbW9kdWxlfFBvd2VyIG1hbmFnZW1lbnQgYm9hcmR8Q2hhc3NpcyBiYWNrIHBhbmVsIGJvYXJkfFN5c3RlbSBjaGFzc2lzfFN1YiBjaGFzc2lzfE90aGVyIGNoYXNzaXMgYm9hcmR8RGlzayBkcml2ZSBiYXl8UGVyaXBoZXJhbCBiYXl8RGV2aWNlIGJheXxGYW4gY29vbGluZ3xDb29saW5nIHVuaXR8Q2FibGUgaW50ZXJjb25uZWN0fE1lbW9yeSBkZXZpY2V8U3lzdGVtIG1hbmFnZW1lbnQgc29mdHdhcmV8QklPU3xJbnRlbChyKSBNRXxTeXN0ZW0gYnVzfEdyb3VwfEludGVsKHIpIE1FfEV4dGVybmFsIGVudmlyb25tZW50fEJhdHRlcnl8UHJvY2Vzc2luZyBibGFkZXxDb25uZWN0aXZpdHkgc3dpdGNofFByb2Nlc3Nvci9tZW1vcnkgbW9kdWxlfEkvTyBtb2R1bGV8UHJvY2Vzc29yIEkvTyBtb2R1bGV8TWFuYWdlbWVudCBjb250cm9sbGVyIGZpcm13YXJlfElQTUkgY2hhbm5lbHxQQ0kgYnVzfFBDSSBleHByZXNzIGJ1c3xTQ1NJIGJ1c3xTQVRBL1NBUyBidXN8UHJvY2Vzc29yIGZyb250IHNpZGUgYnVzIi5zcGxpdCgnfCcpOw0KICAgIG9iai5SZWFsbU5hbWVzID0gInx8UmVkaXJlY3Rpb258fEhhcmR3YXJlIEFzc2V0fFJlbW90ZSBDb250cm9sfFN0b3JhZ2V8RXZlbnQgTWFuYWdlcnxTdG9yYWdlIEFkbWlufEFnZW50IFByZXNlbmNlIExvY2FsfEFnZW50IFByZXNlbmNlIFJlbW90ZXxDaXJjdWl0IEJyZWFrZXJ8TmV0d29yayBUaW1lfEdlbmVyYWwgSW5mb3JtYXRpb258RmlybXdhcmUgVXBkYXRlfEVJVHxMb2NhbFVOfEVuZHBvaW50IEFjY2VzcyBDb250cm9sfEVuZHBvaW50IEFjY2VzcyBDb250cm9sIEFkbWlufEV2ZW50IExvZyBSZWFkZXJ8QXVkaXQgTG9nfEFDTCBSZWFsbXx8fExvY2FsIFN5c3RlbSIuc3BsaXQoJ3wnKTsNCiAgICBvYmouV2F0Y2hkb2dDdXJyZW50U3RhdGVzID0geyAxOiAnTm90IFN0YXJ0ZWQnLCAyOiAnU3RvcHBlZCcsIDQ6ICdSdW5uaW5nJywgODogJ0V4cGlyZWQnLCAxNjogJ1N1c3BlbmRlZCcgfTsNCg0KICAgIGZ1bmN0aW9uIF9HZXRFdmVudERldGFpbFN0cihldmVudFNlbnNvclR5cGUsIGV2ZW50T2Zmc2V0LCBldmVudERhdGFGaWVsZCwgZW50aXR5KSB7DQoNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSAxNSkgew0KICAgICAgICAgICAgaWYgKGV2ZW50RGF0YUZpZWxkWzBdID09IDIzNSkgcmV0dXJuICJJbnZhbGlkIERhdGEiOw0KICAgICAgICAgICAgaWYgKGV2ZW50T2Zmc2V0ID09IDApIHJldHVybiBfU3lzdGVtRmlybXdhcmVFcnJvcltldmVudERhdGFGaWVsZFsxXV07DQogICAgICAgICAgICByZXR1cm4gX1N5c3RlbUZpcm13YXJlUHJvZ3Jlc3NbZXZlbnREYXRhRmllbGRbMV1dOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKChldmVudFNlbnNvclR5cGUgPT0gMTgpICYmIChldmVudERhdGFGaWVsZFswXSA9PSAxNzApKSB7IC8vIFN5c3RlbSB3YXRjaGRvZyBldmVudA0KICAgICAgICAgICAgcmV0dXJuICJBZ2VudCB3YXRjaGRvZyAiICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbNF0pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbM10pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbMl0pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbMV0pICsgIi0iICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbNl0pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbNV0pICsgIi0uLi4gY2hhbmdlZCB0byAiICsgb2JqLldhdGNoZG9nQ3VycmVudFN0YXRlc1tldmVudERhdGFGaWVsZFs3XV07DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoKGV2ZW50U2Vuc29yVHlwZSA9PSA1KSAmJiAoZXZlbnRPZmZzZXQgPT0gMCkpIHsgLy8gU3lzdGVtIGNoYXNzaXMNCiAgICAgICAgICAgIHJldHVybiAiQ2FzZSBpbnRydXNpb24iOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKChldmVudFNlbnNvclR5cGUgPT0gMTkyKSAmJiAoZXZlbnRPZmZzZXQgPT0gMCkgJiYgKGV2ZW50RGF0YUZpZWxkWzBdID09IDE3MCkgJiYgKGV2ZW50RGF0YUZpZWxkWzFdID09IDQ4KSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGV2ZW50RGF0YUZpZWxkWzJdID09IDApIHJldHVybiAiQSByZW1vdGUgU2VyaWFsIE92ZXIgTEFOIHNlc3Npb24gd2FzIGVzdGFibGlzaGVkLiI7DQogICAgICAgICAgICBpZiAoZXZlbnREYXRhRmllbGRbMl0gPT0gMSkgcmV0dXJuICJSZW1vdGUgU2VyaWFsIE92ZXIgTEFOIHNlc3Npb24gZmluaXNoZWQuIFVzZXIgY29udHJvbCB3YXMgcmVzdG9yZWQuIjsNCiAgICAgICAgICAgIGlmIChldmVudERhdGFGaWVsZFsyXSA9PSAyKSByZXR1cm4gIkEgcmVtb3RlIElERS1SZWRpcmVjdGlvbiBzZXNzaW9uIHdhcyBlc3RhYmxpc2hlZC4iOw0KICAgICAgICAgICAgaWYgKGV2ZW50RGF0YUZpZWxkWzJdID09IDMpIHJldHVybiAiUmVtb3RlIElERS1SZWRpcmVjdGlvbiBzZXNzaW9uIGZpbmlzaGVkLiBVc2VyIGNvbnRyb2wgd2FzIHJlc3RvcmVkLiI7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDM2KSB7DQogICAgICAgICAgICB2YXIgaGFuZGxlID0gKGV2ZW50RGF0YUZpZWxkWzFdIDw8IDI0KSArIChldmVudERhdGFGaWVsZFsyXSA8PCAxNikgKyAoZXZlbnREYXRhRmllbGRbM10gPDwgOCkgKyBldmVudERhdGFGaWVsZFs0XTsNCiAgICAgICAgICAgIHZhciBuaWMgPSAiIyIgKyBldmVudERhdGFGaWVsZFswXTsNCiAgICAgICAgICAgIGlmIChldmVudERhdGFGaWVsZFswXSA9PSAweEFBKSBuaWMgPSAid2lyZWQiOyAvLyBUT0RPOiBBZGQgd2lyZWxlc3MgKioqKioNCiAgICAgICAgICAgIC8vaWYgKGV2ZW50RGF0YUZpZWxkWzBdID09IDB4QUEpIG5pYyA9ICJ3aXJlbGVzcyI7DQoNCiAgICAgICAgICAgIGlmIChoYW5kbGUgPT0gNDI5NDk2NzI5MykgeyByZXR1cm4gIkFsbCByZWNlaXZlZCBwYWNrZXQgZmlsdGVyIHdhcyBtYXRjaGVkIG9uICIgKyBuaWMgKyAiIGludGVyZmFjZS4iOyB9DQogICAgICAgICAgICBpZiAoaGFuZGxlID09IDQyOTQ5NjcyOTIpIHsgcmV0dXJuICJBbGwgb3V0Ym91bmQgcGFja2V0IGZpbHRlciB3YXMgbWF0Y2hlZCBvbiAiICsgbmljICsgIiBpbnRlcmZhY2UuIjsgfQ0KICAgICAgICAgICAgaWYgKGhhbmRsZSA9PSA0Mjk0OTY3MjkwKSB7IHJldHVybiAiU3Bvb2ZlZCBwYWNrZXQgZmlsdGVyIHdhcyBtYXRjaGVkIG9uICIgKyBuaWMgKyAiIGludGVyZmFjZS4iOyB9DQogICAgICAgICAgICByZXR1cm4gIkZpbHRlciAiICsgaGFuZGxlICsgIiB3YXMgbWF0Y2hlZCBvbiAiICsgbmljICsgIiBpbnRlcmZhY2UuIjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChldmVudFNlbnNvclR5cGUgPT0gMTkyKSB7DQogICAgICAgICAgICBpZiAoZXZlbnREYXRhRmllbGRbMl0gPT0gMCkgcmV0dXJuICJTZWN1cml0eSBwb2xpY3kgaW52b2tlZC4gU29tZSBvciBhbGwgbmV0d29yayB0cmFmZmljIChUWCkgd2FzIHN0b3BwZWQuIjsNCiAgICAgICAgICAgIGlmIChldmVudERhdGFGaWVsZFsyXSA9PSAyKSByZXR1cm4gIlNlY3VyaXR5IHBvbGljeSBpbnZva2VkLiBTb21lIG9yIGFsbCBuZXR3b3JrIHRyYWZmaWMgKFJYKSB3YXMgc3RvcHBlZC4iOw0KICAgICAgICAgICAgcmV0dXJuICJTZWN1cml0eSBwb2xpY3kgaW52b2tlZC4iOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSAxOTMpIHsNCiAgICAgICAgICAgIGlmICgoZXZlbnREYXRhRmllbGRbMF0gPT0gMHhBQSkgJiYgKGV2ZW50RGF0YUZpZWxkWzFdID09IDB4MzApICYmIChldmVudERhdGFGaWVsZFsyXSA9PSAweDAwKSAmJiAoZXZlbnREYXRhRmllbGRbM10gPT0gMHgwMCkpIHsgcmV0dXJuICJVc2VyIHJlcXVlc3QgZm9yIHJlbW90ZSBjb25uZWN0aW9uLiI7IH0NCiAgICAgICAgICAgIGlmICgoZXZlbnREYXRhRmllbGRbMF0gPT0gMHhBQSkgJiYgKGV2ZW50RGF0YUZpZWxkWzFdID09IDB4MjApICYmIChldmVudERhdGFGaWVsZFsyXSA9PSAweDAzKSAmJiAoZXZlbnREYXRhRmllbGRbM10gPT0gMHgwMSkpIHsgcmV0dXJuICJFQUMgZXJyb3I6IGF0dGVtcHQgdG8gZ2V0IHBvc3R1cmUgd2hpbGUgTkFDIGluIEludGVs77+9IEFNVCBpcyBkaXNhYmxlZC4iOyB9IC8vIGV2ZW50RGF0YUZpZWxkID0gMHhBQTIwMDMwMTAwMDAwMDAwDQogICAgICAgICAgICBpZiAoKGV2ZW50RGF0YUZpZWxkWzBdID09IDB4QUEpICYmIChldmVudERhdGFGaWVsZFsxXSA9PSAweDIwKSAmJiAoZXZlbnREYXRhRmllbGRbMl0gPT0gMHgwNCkgJiYgKGV2ZW50RGF0YUZpZWxkWzNdID09IDB4MDApKSB7IHJldHVybiAiQ2VydGlmaWNhdGUgcmV2b2tlZC4gIjsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSA2KSByZXR1cm4gIkF1dGhlbnRpY2F0aW9uIGZhaWxlZCAiICsgKGV2ZW50RGF0YUZpZWxkWzFdICsgKGV2ZW50RGF0YUZpZWxkWzJdIDw8IDgpKSArICIgdGltZXMuIFRoZSBzeXN0ZW0gbWF5IGJlIHVuZGVyIGF0dGFjay4iOw0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDMwKSByZXR1cm4gIk5vIGJvb3RhYmxlIG1lZGlhIjsNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSAzMikgcmV0dXJuICJPcGVyYXRpbmcgc3lzdGVtIGxvY2t1cCBvciBwb3dlciBpbnRlcnJ1cHQiOw0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDM1KSByZXR1cm4gIlN5c3RlbSBib290IGZhaWx1cmUiOw0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDM3KSByZXR1cm4gIlN5c3RlbSBmaXJtd2FyZSBzdGFydGVkIChhdCBsZWFzdCBvbmUgQ1BVIGlzIHByb3Blcmx5IGV4ZWN1dGluZykuIjsNCiAgICAgICAgcmV0dXJuICJVbmtub3duIFNlbnNvciBUeXBlICMiICsgZXZlbnRTZW5zb3JUeXBlOw0KICAgIH0NCg0KDQoNCiAgICAvLyBVc2VmdWwgbGluazogaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvbWFuYWdlYWJpbGl0eS9BTVRfSW1wbGVtZW50YXRpb25fYW5kX1JlZmVyZW5jZV9HdWlkZS9kZWZhdWx0Lmh0bT90dXJsPVdvcmREb2N1bWVudHMlMkZzZWN1cml0eWFkbWluZXZlbnRzLmh0bQ0KDQogICAgdmFyIF9BbXRBdWRpdFN0cmluZ1RhYmxlID0NCiAgICB7DQogICAgICAgIDE2OiAnU2VjdXJpdHkgQWRtaW4nLA0KICAgICAgICAxNzogJ1JDTycsDQogICAgICAgIDE4OiAnUmVkaXJlY3Rpb24gTWFuYWdlcicsDQogICAgICAgIDE5OiAnRmlybXdhcmUgVXBkYXRlIE1hbmFnZXInLA0KICAgICAgICAyMDogJ1NlY3VyaXR5IEF1ZGl0IExvZycsDQogICAgICAgIDIxOiAnTmV0d29yayBUaW1lJywNCiAgICAgICAgMjI6ICdOZXR3b3JrIEFkbWluaXN0cmF0aW9uJywNCiAgICAgICAgMjM6ICdTdG9yYWdlIEFkbWluaXN0cmF0aW9uJywNCiAgICAgICAgMjQ6ICdFdmVudCBNYW5hZ2VyJywNCiAgICAgICAgMjU6ICdDaXJjdWl0IEJyZWFrZXIgTWFuYWdlcicsDQogICAgICAgIDI2OiAnQWdlbnQgUHJlc2VuY2UgTWFuYWdlcicsDQogICAgICAgIDI3OiAnV2lyZWxlc3MgQ29uZmlndXJhdGlvbicsDQogICAgICAgIDI4OiAnRUFDJywNCiAgICAgICAgMjk6ICdLVk0nLA0KICAgICAgICAzMDogJ1VzZXIgT3B0LUluIEV2ZW50cycsDQogICAgICAgIDMyOiAnU2NyZWVuIEJsYW5raW5nJywNCiAgICAgICAgMzM6ICdXYXRjaGRvZyBFdmVudHMnLA0KICAgICAgICAxNjAwOiAnUHJvdmlzaW9uaW5nIFN0YXJ0ZWQnLA0KICAgICAgICAxNjAxOiAnUHJvdmlzaW9uaW5nIENvbXBsZXRlZCcsDQogICAgICAgIDE2MDI6ICdBQ0wgRW50cnkgQWRkZWQnLA0KICAgICAgICAxNjAzOiAnQUNMIEVudHJ5IE1vZGlmaWVkJywNCiAgICAgICAgMTYwNDogJ0FDTCBFbnRyeSBSZW1vdmVkJywNCiAgICAgICAgMTYwNTogJ0FDTCBBY2Nlc3Mgd2l0aCBJbnZhbGlkIENyZWRlbnRpYWxzJywNCiAgICAgICAgMTYwNjogJ0FDTCBFbnRyeSBTdGF0ZScsDQogICAgICAgIDE2MDc6ICdUTFMgU3RhdGUgQ2hhbmdlZCcsDQogICAgICAgIDE2MDg6ICdUTFMgU2VydmVyIENlcnRpZmljYXRlIFNldCcsDQogICAgICAgIDE2MDk6ICdUTFMgU2VydmVyIENlcnRpZmljYXRlIFJlbW92ZScsDQogICAgICAgIDE2MTA6ICdUTFMgVHJ1c3RlZCBSb290IENlcnRpZmljYXRlIEFkZGVkJywNCiAgICAgICAgMTYxMTogJ1RMUyBUcnVzdGVkIFJvb3QgQ2VydGlmaWNhdGUgUmVtb3ZlZCcsDQogICAgICAgIDE2MTI6ICdUTFMgUHJlc2hhcmVkIEtleSBTZXQnLA0KICAgICAgICAxNjEzOiAnS2VyYmVyb3MgU2V0dGluZ3MgTW9kaWZpZWQnLA0KICAgICAgICAxNjE0OiAnS2VyYmVyb3MgTWFzdGVyIEtleSBNb2RpZmllZCcsDQogICAgICAgIDE2MTU6ICdGbGFzaCBXZWFyIG91dCBDb3VudGVycyBSZXNldCcsDQogICAgICAgIDE2MTY6ICdQb3dlciBQYWNrYWdlIE1vZGlmaWVkJywNCiAgICAgICAgMTYxNzogJ1NldCBSZWFsbSBBdXRoZW50aWNhdGlvbiBNb2RlJywNCiAgICAgICAgMTYxODogJ1VwZ3JhZGUgQ2xpZW50IHRvIEFkbWluIENvbnRyb2wgTW9kZScsDQogICAgICAgIDE2MTk6ICdVbnByb3Zpc2lvbmluZyBTdGFydGVkJywNCiAgICAgICAgMTcwMDogJ1BlcmZvcm1lZCBQb3dlciBVcCcsDQogICAgICAgIDE3MDE6ICdQZXJmb3JtZWQgUG93ZXIgRG93bicsDQogICAgICAgIDE3MDI6ICdQZXJmb3JtZWQgUG93ZXIgQ3ljbGUnLA0KICAgICAgICAxNzAzOiAnUGVyZm9ybWVkIFJlc2V0JywNCiAgICAgICAgMTcwNDogJ1NldCBCb290IE9wdGlvbnMnLA0KICAgICAgICAxODAwOiAnSURFUiBTZXNzaW9uIE9wZW5lZCcsDQogICAgICAgIDE4MDE6ICdJREVSIFNlc3Npb24gQ2xvc2VkJywNCiAgICAgICAgMTgwMjogJ0lERVIgRW5hYmxlZCcsDQogICAgICAgIDE4MDM6ICdJREVSIERpc2FibGVkJywNCiAgICAgICAgMTgwNDogJ1NvTCBTZXNzaW9uIE9wZW5lZCcsDQogICAgICAgIDE4MDU6ICdTb0wgU2Vzc2lvbiBDbG9zZWQnLA0KICAgICAgICAxODA2OiAnU29MIEVuYWJsZWQnLA0KICAgICAgICAxODA3OiAnU29MIERpc2FibGVkJywNCiAgICAgICAgMTgwODogJ0tWTSBTZXNzaW9uIFN0YXJ0ZWQnLA0KICAgICAgICAxODA5OiAnS1ZNIFNlc3Npb24gRW5kZWQnLA0KICAgICAgICAxODEwOiAnS1ZNIEVuYWJsZWQnLA0KICAgICAgICAxODExOiAnS1ZNIERpc2FibGVkJywNCiAgICAgICAgMTgxMjogJ1ZOQyBQYXNzd29yZCBGYWlsZWQgMyBUaW1lcycsDQogICAgICAgIDE5MDA6ICdGaXJtd2FyZSBVcGRhdGVkJywNCiAgICAgICAgMTkwMTogJ0Zpcm13YXJlIFVwZGF0ZSBGYWlsZWQnLA0KICAgICAgICAyMDAwOiAnU2VjdXJpdHkgQXVkaXQgTG9nIENsZWFyZWQnLA0KICAgICAgICAyMDAxOiAnU2VjdXJpdHkgQXVkaXQgUG9saWN5IE1vZGlmaWVkJywNCiAgICAgICAgMjAwMjogJ1NlY3VyaXR5IEF1ZGl0IExvZyBEaXNhYmxlZCcsDQogICAgICAgIDIwMDM6ICdTZWN1cml0eSBBdWRpdCBMb2cgRW5hYmxlZCcsDQogICAgICAgIDIwMDQ6ICdTZWN1cml0eSBBdWRpdCBMb2cgRXhwb3J0ZWQnLA0KICAgICAgICAyMDA1OiAnU2VjdXJpdHkgQXVkaXQgTG9nIFJlY292ZXJlZCcsDQogICAgICAgIDIxMDA6ICdJbnRlbCZyZWc7IE1FIFRpbWUgU2V0JywNCiAgICAgICAgMjIwMDogJ1RDUElQIFBhcmFtZXRlcnMgU2V0JywNCiAgICAgICAgMjIwMTogJ0hvc3QgTmFtZSBTZXQnLA0KICAgICAgICAyMjAyOiAnRG9tYWluIE5hbWUgU2V0JywNCiAgICAgICAgMjIwMzogJ1ZMQU4gUGFyYW1ldGVycyBTZXQnLA0KICAgICAgICAyMjA0OiAnTGluayBQb2xpY3kgU2V0JywNCiAgICAgICAgMjIwNTogJ0lQdjYgUGFyYW1ldGVycyBTZXQnLA0KICAgICAgICAyMzAwOiAnR2xvYmFsIFN0b3JhZ2UgQXR0cmlidXRlcyBTZXQnLA0KICAgICAgICAyMzAxOiAnU3RvcmFnZSBFQUNMIE1vZGlmaWVkJywNCiAgICAgICAgMjMwMjogJ1N0b3JhZ2UgRlBBQ0wgTW9kaWZpZWQnLA0KICAgICAgICAyMzAzOiAnU3RvcmFnZSBXcml0ZSBPcGVyYXRpb24nLA0KICAgICAgICAyNDAwOiAnQWxlcnQgU3Vic2NyaWJlZCcsDQogICAgICAgIDI0MDE6ICdBbGVydCBVbnN1YnNjcmliZWQnLA0KICAgICAgICAyNDAyOiAnRXZlbnQgTG9nIENsZWFyZWQnLA0KICAgICAgICAyNDAzOiAnRXZlbnQgTG9nIEZyb3plbicsDQogICAgICAgIDI1MDA6ICdDQiBGaWx0ZXIgQWRkZWQnLA0KICAgICAgICAyNTAxOiAnQ0IgRmlsdGVyIFJlbW92ZWQnLA0KICAgICAgICAyNTAyOiAnQ0IgUG9saWN5IEFkZGVkJywNCiAgICAgICAgMjUwMzogJ0NCIFBvbGljeSBSZW1vdmVkJywNCiAgICAgICAgMjUwNDogJ0NCIERlZmF1bHQgUG9saWN5IFNldCcsDQogICAgICAgIDI1MDU6ICdDQiBIZXVyaXN0aWNzIE9wdGlvbiBTZXQnLA0KICAgICAgICAyNTA2OiAnQ0IgSGV1cmlzdGljcyBTdGF0ZSBDbGVhcmVkJywNCiAgICAgICAgMjYwMDogJ0FnZW50IFdhdGNoZG9nIEFkZGVkJywNCiAgICAgICAgMjYwMTogJ0FnZW50IFdhdGNoZG9nIFJlbW92ZWQnLA0KICAgICAgICAyNjAyOiAnQWdlbnQgV2F0Y2hkb2cgQWN0aW9uIFNldCcsDQogICAgICAgIDI3MDA6ICdXaXJlbGVzcyBQcm9maWxlIEFkZGVkJywNCiAgICAgICAgMjcwMTogJ1dpcmVsZXNzIFByb2ZpbGUgUmVtb3ZlZCcsDQogICAgICAgIDI3MDI6ICdXaXJlbGVzcyBQcm9maWxlIFVwZGF0ZWQnLA0KICAgICAgICAyODAwOiAnRUFDIFBvc3R1cmUgU2lnbmVyIFNFVCcsDQogICAgICAgIDI4MDE6ICdFQUMgRW5hYmxlZCcsDQogICAgICAgIDI4MDI6ICdFQUMgRGlzYWJsZWQnLA0KICAgICAgICAyODAzOiAnRUFDIFBvc3R1cmUgU3RhdGUnLA0KICAgICAgICAyODA0OiAnRUFDIFNldCBPcHRpb25zJywNCiAgICAgICAgMjkwMDogJ0tWTSBPcHQtaW4gRW5hYmxlZCcsDQogICAgICAgIDI5MDE6ICdLVk0gT3B0LWluIERpc2FibGVkJywNCiAgICAgICAgMjkwMjogJ0tWTSBQYXNzd29yZCBDaGFuZ2VkJywNCiAgICAgICAgMjkwMzogJ0tWTSBDb25zZW50IFN1Y2NlZWRlZCcsDQogICAgICAgIDI5MDQ6ICdLVk0gQ29uc2VudCBGYWlsZWQnLA0KICAgICAgICAzMDAwOiAnT3B0LUluIFBvbGljeSBDaGFuZ2UnLA0KICAgICAgICAzMDAxOiAnU2VuZCBDb25zZW50IENvZGUgRXZlbnQnLA0KICAgICAgICAzMDAyOiAnU3RhcnQgT3B0LUluIEJsb2NrZWQgRXZlbnQnDQogICAgfQ0KDQogICAgLy8gUmV0dXJuIGh1bWFuIHJlYWRhYmxlIGV4dGVuZGVkIGF1ZGl0IGxvZyBkYXRhDQogICAgLy8gVE9ETzogSnVzdCBwdXQgc29tZSBvZiB0aGVtIGhlcmUsIGJ1dCBtYW55IG1vcmUgc3RpbGwgbmVlZCB0byBiZSBhZGRlZCwgaGVscGZ1bCBsaW5rIGhlcmU6DQogICAgLy8gaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvbWFuYWdlYWJpbGl0eS9BTVRfSW1wbGVtZW50YXRpb25fYW5kX1JlZmVyZW5jZV9HdWlkZS9kZWZhdWx0Lmh0bT90dXJsPVdvcmREb2N1bWVudHMlMkZzZWN1cml0eWFkbWluZXZlbnRzLmh0bQ0KICAgIG9iai5HZXRBdWRpdExvZ0V4dGVuZGVkRGF0YVN0ciA9IGZ1bmN0aW9uIChpZCwgZGF0YSkgew0KICAgICAgICBpZiAoKGlkID09IDE2MDIgfHwgaWQgPT0gMTYwNCkgJiYgZGF0YS5jaGFyQ29kZUF0KDApID09IDApIHsgcmV0dXJuIGRhdGEuc3Vic3RyaW5nKDIsIDIgKyBkYXRhLmNoYXJDb2RlQXQoMSkpOyB9IC8vIEFDTCBFbnRyeSBBZGRlZC9SZW1vdmVkIChEaWdlc3QpDQogICAgICAgIGlmIChpZCA9PSAxNjAzKSB7IGlmIChkYXRhLmNoYXJDb2RlQXQoMSkgPT0gMCkgeyByZXR1cm4gZGF0YS5zdWJzdHJpbmcoMyk7IH0gcmV0dXJuIG51bGw7IH0gLy8gQUNMIEVudHJ5IE1vZGlmaWVkDQogICAgICAgIGlmIChpZCA9PSAxNjA1KSB7IHJldHVybiBbIkludmFsaWQgTUUgYWNjZXNzIiwgIkludmFsaWQgTUVCeCBhY2Nlc3MiXVtkYXRhLmNoYXJDb2RlQXQoMCldOyB9IC8vIEFDTCBBY2Nlc3Mgd2l0aCBJbnZhbGlkIENyZWRlbnRpYWxzDQogICAgICAgIGlmIChpZCA9PSAxNjA2KSB7IHZhciByID0gWyJEaXNhYmxlZCIsICJFbmFibGVkIl1bZGF0YS5jaGFyQ29kZUF0KDApXTsgaWYgKGRhdGEuY2hhckNvZGVBdCgxKSA9PSAwKSB7IHIgKz0gIiwgIiArIGRhdGEuc3Vic3RyaW5nKDMpOyB9IHJldHVybiByO30gLy8gQUNMIEVudHJ5IFN0YXRlDQogICAgICAgIGlmIChpZCA9PSAxNjA3KSB7IHJldHVybiAiUmVtb3RlICIgKyBbIk5vQXV0aCIsICJTZXJ2ZXJBdXRoIiwgIk11dHVhbEF1dGgiXVtkYXRhLmNoYXJDb2RlQXQoMCldICsgIiwgTG9jYWwgIiArIFsiTm9BdXRoIiwgIlNlcnZlckF1dGgiLCAiTXV0dWFsQXV0aCJdW2RhdGEuY2hhckNvZGVBdCgxKV07IH0gLy8gVExTIFN0YXRlIENoYW5nZWQNCiAgICAgICAgaWYgKGlkID09IDE2MTcpIHsgcmV0dXJuIG9iai5SZWFsbU5hbWVzW1JlYWRJbnQoZGF0YSwgMCldICsgIiwgIiArIFsiTm9BdXRoIiwgIkF1dGgiLCAiRGlzYWJsZWQiXVtkYXRhLmNoYXJDb2RlQXQoNCldOyB9IC8vIFNldCBSZWFsbSBBdXRoZW50aWNhdGlvbiBNb2RlDQogICAgICAgIGlmIChpZCA9PSAxNjE5KSB7IHJldHVybiBbIkJJT1MiLCAiTUVCeCIsICJMb2NhbCBNRUkiLCAiTG9jYWwgV1NNQU4iLCAiUmVtb3RlIFdTQU1OIl1bZGF0YS5jaGFyQ29kZUF0KDApXTsgfSAvLyBJbnRlbCBBTVQgVW5wcm92aXNpb25pbmcgU3RhcnRlZA0KICAgICAgICBpZiAoaWQgPT0gMTkwMCkgeyByZXR1cm4gIkZyb20gIiArIFJlYWRTaG9ydChkYXRhLCAwKSArICIuIiArIFJlYWRTaG9ydChkYXRhLCAyKSArICIuIiArIFJlYWRTaG9ydChkYXRhLCA0KSArICIuIiArIFJlYWRTaG9ydChkYXRhLCA2KSArICIgdG8gIiArIFJlYWRTaG9ydChkYXRhLCA4KSArICIuIiArIFJlYWRTaG9ydChkYXRhLCAxMCkgKyAiLiIgKyBSZWFkU2hvcnQoZGF0YSwgMTIpICsgIi4iICsgUmVhZFNob3J0KGRhdGEsIDE0KTsgfSAvLyBGaXJtd2FyZSBVcGRhdGVkDQogICAgICAgIGlmIChpZCA9PSAyMTAwKSB7IHZhciB0NCA9IG5ldyBEYXRlKCk7IHQ0LnNldFRpbWUoUmVhZEludChkYXRhLCAwKSAqIDEwMDAgKyAobmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDApKTsgcmV0dXJuIHQ0LnRvTG9jYWxlU3RyaW5nKCk7IH0gLy8gSW50ZWwgQU1UIFRpbWUgU2V0DQogICAgICAgIGlmIChpZCA9PSAzMDAwKSB7IHJldHVybiAiRnJvbSAiICsgWyJOb25lIiwgIktWTSIsICJBbGwiXVtkYXRhLmNoYXJDb2RlQXQoMCldICsgIiB0byAiICsgWyJOb25lIiwgIktWTSIsICJBbGwiXVtkYXRhLmNoYXJDb2RlQXQoMSldOyB9IC8vIE9wdC1JbiBQb2xpY3kgQ2hhbmdlDQogICAgICAgIGlmIChpZCA9PSAzMDAxKSB7IHJldHVybiBbIlN1Y2Nlc3MiLCAiRmFpbGVkIDMgdGltZXMiXVtkYXRhLmNoYXJDb2RlQXQoMCldOyB9IC8vIFNlbmQgQ29uc2VudCBDb2RlIEV2ZW50DQogICAgICAgIHJldHVybiBudWxsOw0KICAgIH0NCg0KICAgIG9iai5HZXRBdWRpdExvZyA9IGZ1bmN0aW9uIChmdW5jKSB7DQogICAgICAgIG9iai5BTVRfQXVkaXRMb2dfUmVhZFJlY29yZHMoMSwgX0dldEF1ZGl0TG9nMCwgW2Z1bmMsIFtdXSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX0dldEF1ZGl0TG9nMChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMsIHRhZykgew0KICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyB0YWdbMF0ob2JqLCBbXSwgc3RhdHVzKTsgcmV0dXJuOyB9DQogICAgICAgIHZhciBwdHIsIGksIGUsIHgsIHIgPSB0YWdbMV0sIHQgPSBuZXcgRGF0ZSgpLCBUaW1lU3RhbXA7DQoNCiAgICAgICAgaWYgKHJlc3BvbnNlcy5Cb2R5WydSZWNvcmRzUmV0dXJuZWQnXSA+IDApIHsNCiAgICAgICAgICAgIHJlc3BvbnNlcy5Cb2R5WydFdmVudFJlY29yZHMnXSA9IE1ha2VUb0FycmF5KHJlc3BvbnNlcy5Cb2R5WydFdmVudFJlY29yZHMnXSk7DQoNCiAgICAgICAgICAgIGZvciAoaSBpbiByZXNwb25zZXMuQm9keVsnRXZlbnRSZWNvcmRzJ10pIHsNCiAgICAgICAgICAgICAgICBlID0gbnVsbDsNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICBlID0gd2luZG93LmF0b2IocmVzcG9uc2VzLkJvZHlbJ0V2ZW50UmVjb3JkcyddW2ldKTsNCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUgKyAiICIgKyByZXNwb25zZXMuQm9keVsnRXZlbnRSZWNvcmRzJ11baV0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHggPSB7ICdBdWRpdEFwcElEJzogUmVhZFNob3J0KGUsIDApLCAnRXZlbnRJRCc6IFJlYWRTaG9ydChlLCAyKSwgJ0luaXRpYXRvclR5cGUnOiBlLmNoYXJDb2RlQXQoNCkgfTsNCiAgICAgICAgICAgICAgICB4WydBdWRpdEFwcCddID0gX0FtdEF1ZGl0U3RyaW5nVGFibGVbeFsnQXVkaXRBcHBJRCddXTsNCiAgICAgICAgICAgICAgICB4WydFdmVudCddID0gX0FtdEF1ZGl0U3RyaW5nVGFibGVbKHhbJ0F1ZGl0QXBwSUQnXSAqIDEwMCkgKyB4WydFdmVudElEJ11dOw0KICAgICAgICAgICAgICAgIGlmICgheFsnRXZlbnQnXSkgeFsnRXZlbnQnXSA9ICcjJyArIHhbJ0V2ZW50SUQnXTsNCg0KICAgICAgICAgICAgICAgIC8vIFJlYWQgYW5kIHByb2Nlc3MgdGhlIGluaXRpYXRvcg0KICAgICAgICAgICAgICAgIGlmICh4WydJbml0aWF0b3JUeXBlJ10gPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAvLyBIVFRQIGRpZ2VzdA0KICAgICAgICAgICAgICAgICAgICB2YXIgdXNlcmxlbiA9IGUuY2hhckNvZGVBdCg1KTsNCiAgICAgICAgICAgICAgICAgICAgeFsnSW5pdGlhdG9yJ10gPSBlLnN1YnN0cmluZyg2LCA2ICsgdXNlcmxlbik7DQogICAgICAgICAgICAgICAgICAgIHB0ciA9IDYgKyB1c2VybGVuOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoeFsnSW5pdGlhdG9yVHlwZSddID09IDEpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gS2VyYmVyb3MNCiAgICAgICAgICAgICAgICAgICAgeFsnS2VyYmVyb3NVc2VySW5Eb21haW4nXSA9IFJlYWRJbnQoZSwgNSk7DQogICAgICAgICAgICAgICAgICAgIHZhciB1c2VybGVuID0gZS5jaGFyQ29kZUF0KDkpOw0KICAgICAgICAgICAgICAgICAgICB4WydJbml0aWF0b3InXSA9IEdldFNpZFN0cmluZyhlLnN1YnN0cmluZygxMCwgMTAgKyB1c2VybGVuKSk7DQogICAgICAgICAgICAgICAgICAgIHB0ciA9IDEwICsgdXNlcmxlbjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHhbJ0luaXRpYXRvclR5cGUnXSA9PSAyKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIExvY2FsDQogICAgICAgICAgICAgICAgICAgIHhbJ0luaXRpYXRvciddID0gJzxpPkxvY2FsPC9pPic7DQogICAgICAgICAgICAgICAgICAgIHB0ciA9IDU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICh4WydJbml0aWF0b3JUeXBlJ10gPT0gMykgew0KICAgICAgICAgICAgICAgICAgICAvLyBLVk0gRGVmYXVsdCBQb3J0DQogICAgICAgICAgICAgICAgICAgIHhbJ0luaXRpYXRvciddID0gJzxpPktWTSBEZWZhdWx0IFBvcnQ8L2k+JzsNCiAgICAgICAgICAgICAgICAgICAgcHRyID0gNTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBSZWFkIHRpbWVzdGFtcA0KICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9IFJlYWRJbnQoZSwgcHRyKTsNCiAgICAgICAgICAgICAgICB4WydUaW1lJ10gPSBuZXcgRGF0ZSgoVGltZVN0YW1wICsgKHQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwKSkgKiAxMDAwKTsNCiAgICAgICAgICAgICAgICBwdHIgKz0gNDsNCg0KICAgICAgICAgICAgICAgIC8vIFJlYWQgbmV0d29yayBhY2Nlc3MNCiAgICAgICAgICAgICAgICB4WydNQ0xvY2F0aW9uVHlwZSddID0gZS5jaGFyQ29kZUF0KHB0cisrKTsNCiAgICAgICAgICAgICAgICB2YXIgbmV0bGVuID0gZS5jaGFyQ29kZUF0KHB0cisrKTsNCiAgICAgICAgICAgICAgICB4WydOZXRBZGRyZXNzJ10gPSBlLnN1YnN0cmluZyhwdHIsIHB0ciArIG5ldGxlbik7DQoNCiAgICAgICAgICAgICAgICAvLyBSZWFkIGV4dGVuZGVkIGRhdGENCiAgICAgICAgICAgICAgICBwdHIgKz0gbmV0bGVuOw0KICAgICAgICAgICAgICAgIHZhciBleGxlbiA9IGUuY2hhckNvZGVBdChwdHIrKyk7DQogICAgICAgICAgICAgICAgeFsnRXgnXSA9IGUuc3Vic3RyaW5nKHB0ciwgcHRyICsgZXhsZW4pOw0KICAgICAgICAgICAgICAgIHhbJ0V4U3RyJ10gPSBvYmouR2V0QXVkaXRMb2dFeHRlbmRlZERhdGFTdHIoKHhbJ0F1ZGl0QXBwSUQnXSAqIDEwMCkgKyB4WydFdmVudElEJ10sIHhbJ0V4J10pOw0KDQogICAgICAgICAgICAgICAgci5wdXNoKHgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChyZXNwb25zZXMuQm9keVsnVG90YWxSZWNvcmRDb3VudCddID4gci5sZW5ndGgpIHsNCiAgICAgICAgICAgIG9iai5BTVRfQXVkaXRMb2dfUmVhZFJlY29yZHMoci5sZW5ndGggKyAxLCBfR2V0QXVkaXRMb2cwLCBbdGFnWzBdLCByXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0YWdbMF0ob2JqLCByLCBzdGF0dXMpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgDQogICAgcmV0dXJuIG9iajsNCn0NCg0KDQoNCg0KLy8gRm9yZ2UgTUQ1DQpmdW5jdGlvbiBoZXhfbWQ1KHN0cikgeyByZXR1cm4gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpLnVwZGF0ZShzdHIpLmRpZ2VzdCgpLnRvSGV4KCk7IH0NCg0KDQoNCi8vIFBlcmZvcm0gTUQ1IG9uIHJhdyBzdHJpbmcgYW5kIHJldHVybiByYXcgc3RyaW5nIHJlc3VsdA0KZnVuY3Rpb24gcnN0cl9tZDUoc3RyKSB7IHJldHVybiBoZXgycnN0cihoZXhfbWQ1KHN0cikpOyB9DQoNCi8qDQpDb252ZXJ0IGFyZ3VtZW50cyBpbnRvIHNlbGVjdG9yIHNldCBhbmQgYm9keSBYTUwuIFVzZWQgYnkgQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2VfVXBkYXRlV2lGaVNldHRpbmdzLg0KYXJncyA9IHsgDQoJIldpRmlFbmRwb2ludCI6IHsNCgkJX19wYXJhbWV0ZXJUeXBlOiAncmVmZXJlbmNlJywNCgkJX19yZXNvdXJjZVVyaTogJ2h0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NjaW0vMS9jaW0tc2NoZW1hLzIvQ0lNX1dpRmlFbmRwb2ludCcsDQoJCU5hbWU6ICdXaUZpIEVuZHBvaW50IDAnDQoJfSwgDQoJIldpRmlFbmRwb2ludFNldHRpbmdzSW5wdXQiOiANCgl7DQoJCV9fcGFyYW1ldGVyVHlwZTogJ2luc3RhbmNlJywNCgkJX19uYW1lc3BhY2U6ICdodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncycsDQoJCUVsZW1lbnROYW1lOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtcHJvZmlsZU5hbWUnKS52YWx1ZSwNCgkJSW5zdGFuY2VJRDogJ0ludGVsKHIpIEFNVDpXaUZpIEVuZHBvaW50IFNldHRpbmdzICcgKyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtcHJvZmlsZU5hbWUnKS52YWx1ZSwNCgkJQXV0aGVudGljYXRpb25NZXRob2Q6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlZGl0UHJvZmlsZS1uZXR3b3JrQXV0aGVudGljYXRpb24nKS52YWx1ZSwNCgkJLy9CU1NUeXBlOiAzLCAvLyBJbnRlbChyKSBBTVQgc3VwcG9ydHMgb25seSBpbmZyYXN0cnVjdHVyZSBuZXR3b3Jrcw0KCQlFbmNyeXB0aW9uTWV0aG9kOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtZW5jcnlwdGlvbicpLnZhbHVlLA0KCQlTU0lEOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtbmV0d29ya05hbWUnKS52YWx1ZSwNCgkJUHJpb3JpdHk6IDEwMCwNCgkJUFNLUGFzc1BocmFzZTogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VkaXRQcm9maWxlLXBhc3NQaHJhc2UnKS52YWx1ZQ0KCX0sIA0KCSJJRUVFODAyMXhTZXR0aW5nc0lucHV0IjogbnVsbCwgDQoJIkNsaWVudENyZWRlbnRpYWwiOiBudWxsLCANCgkiQ0FDcmVkZW50aWFsIjogbnVsbCANCn0sIA0KKi8NCmZ1bmN0aW9uIGV4ZWNBcmd1bWVudHNUb1htbChhcmdzKSB7DQoJaWYoYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3MgPT09IG51bGwpIHJldHVybiBudWxsOw0KCQ0KCXZhciByZXN1bHQgPSAnJzsNCglmb3IodmFyIGFyZ05hbWUgaW4gYXJncykgew0KCQl2YXIgYXJnID0gYXJnc1thcmdOYW1lXTsNCgkJaWYoIWFyZykgY29udGludWU7DQoJCWlmKGFyZ1snX19wYXJhbWV0ZXJUeXBlJ10gPT09ICdyZWZlcmVuY2UnKSByZXN1bHQgKz0gcmVmZXJlbmNlVG9YbWwoYXJnTmFtZSwgYXJnKTsNCgkJZWxzZSByZXN1bHQgKz0gaW5zdGFuY2VUb1htbChhcmdOYW1lLCBhcmcpOw0KCQkvL2lmKGFyZ1snX19pc0luc3RhbmNlJ10pIHJlc3VsdCArPSBpbnN0YW5jZVRvWG1sKGFyZ05hbWUsIGFyZyk7DQoJfQ0KCXJldHVybiByZXN1bHQ7DQp9DQoNCi8qKg0KICogQ29udmVydCBKYXZhU2NyaXB0IG9iamVjdCBpbnRvIFhNTA0KIA0KCTxyOldpRmlFbmRwb2ludFNldHRpbmdzSW5wdXQgeG1sbnM6cT0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NpbS1zY2hlbWEvMi9DSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MiPg0KCQk8cTpFbGVtZW50TmFtZT5XaXJlbGVzcy1Qcm9maWxlLUFkbWluPC9xOkVsZW1lbnROYW1lPg0KCQk8cTpJbnN0YW5jZUlEPkludGVsKHIpIEFNVDpXaUZpIEVuZHBvaW50IFNldHRpbmdzIFdpcmVsZXNzLVByb2ZpbGUtQWRtaW48L3E6SW5zdGFuY2VJRD4NCgkJPHE6QXV0aGVudGljYXRpb25NZXRob2Q+NjwvcTpBdXRoZW50aWNhdGlvbk1ldGhvZD4NCgkJPHE6RW5jcnlwdGlvbk1ldGhvZD40PC9xOkVuY3J5cHRpb25NZXRob2Q+DQoJCTxxOlByaW9yaXR5PjEwMDwvcTpQcmlvcml0eT4NCgkJPHE6UFNLUGFzc1BocmFzZT54eHh4eHh4eDwvcTpQU0tQYXNzUGhyYXNlPg0KCTwvcjpXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0Pg0KICovDQpmdW5jdGlvbiBpbnN0YW5jZVRvWG1sKGluc3RhbmNlTmFtZSwgaW5JbnN0YW5jZSkgew0KCWlmKGluSW5zdGFuY2UgPT09IHVuZGVmaW5lZCB8fCBpbkluc3RhbmNlID09PSBudWxsKSByZXR1cm4gbnVsbDsNCgkNCgl2YXIgaGFzTmFtZXNwYWNlID0gISFpbkluc3RhbmNlWydfX25hbWVzcGFjZSddOw0KCXZhciBzdGFydFRhZyA9IGhhc05hbWVzcGFjZSA/ICc8cTonIDogJzwnOw0KCXZhciBlbmRUYWcgPSBoYXNOYW1lc3BhY2UgPyAnPC9xOicgOiAnPC8nOw0KCXZhciBuYW1lc3BhY2VEZWYgPSBoYXNOYW1lc3BhY2UgPyAoJyB4bWxuczpxPSInICsgaW5JbnN0YW5jZVsnX19uYW1lc3BhY2UnXSArICciJyApOiAnJzsNCgl2YXIgcmVzdWx0ID0gJzxyOicgKyBpbnN0YW5jZU5hbWUgKyBuYW1lc3BhY2VEZWYgKyAnPic7DQoJZm9yKHZhciBwcm9wIGluIGluSW5zdGFuY2UpIHsNCgkJaWYgKCFpbkluc3RhbmNlLmhhc093blByb3BlcnR5KHByb3ApIHx8IHByb3AuaW5kZXhPZignX18nKSA9PT0gMCkgY29udGludWU7DQoJCQ0KCQlpZiAodHlwZW9mIGluSW5zdGFuY2VbcHJvcF0gPT09ICdmdW5jdGlvbicgfHwgQXJyYXkuaXNBcnJheShpbkluc3RhbmNlW3Byb3BdKSApIGNvbnRpbnVlOw0KCQkNCgkJaWYgKHR5cGVvZiBpbkluc3RhbmNlW3Byb3BdID09PSAnb2JqZWN0Jykgew0KCQkJLy9yZXN1bHQgKz0gc3RhcnRUYWcgKyBwcm9wICsnPicgKyBpbnN0YW5jZVRvWG1sKCdwcm9wJywgaW5JbnN0YW5jZVtwcm9wXSkgKyBlbmRUYWcgKyBwcm9wICsnPic7DQoJCQljb25zb2xlLmVycm9yKCdvbmx5IGNvbnZlcnQgb25lIGxldmVsIGRvd24uLi4nKTsNCgkJfQ0KCQllbHNlIHsNCgkJCXJlc3VsdCArPSBzdGFydFRhZyArIHByb3AgKyc+JyArIGluSW5zdGFuY2VbcHJvcF0udG9TdHJpbmcoKSArIGVuZFRhZyArIHByb3AgKyc+JzsNCgkJfQ0KCX0NCglyZXN1bHQgKz0gJzwvcjonICsgaW5zdGFuY2VOYW1lICsgJz4nOw0KCXJldHVybiByZXN1bHQ7DQp9DQoNCg0KLyoqDQogKiBDb252ZXJ0IGEgc2VsZWN0b3Igc2V0IGludG8gWE1MLiBFeHBlY3Qgbm8gbmVzdGluZy4NCiAqIHsNCiAqIAlzZWxlY3Rvck5hbWUgOiBzZWxlY3RvclZhbHVlLA0KICogCXNlbGVjdG9yTmFtZSA6IHNlbGVjdG9yVmFsdWUsDQogKgkuLi4gLi4uDQogKiB9DQogDQoJPHI6V2lGaUVuZHBvaW50Pg0KCQk8YTpBZGRyZXNzPmh0dHA6Ly8xOTIuMTY4LjEuMTAzOjE2OTkyL3dzbWFuPC9hOkFkZHJlc3M+DQoJCTxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+DQoJCQk8dzpSZXNvdXJjZVVSST5odHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9XaUZpRW5kcG9pbnQ8L3c6UmVzb3VyY2VVUkk+DQoJCQk8dzpTZWxlY3RvclNldD4NCgkJCQk8dzpTZWxlY3RvciBOYW1lPSJOYW1lIj5XaUZpIEVuZHBvaW50IDA8L3c6U2VsZWN0b3I+DQoJCQk8L3c6U2VsZWN0b3JTZXQ+DQoJCTwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPg0KCTwvcjpXaUZpRW5kcG9pbnQ+DQoJCQkNCiAqLw0KZnVuY3Rpb24gcmVmZXJlbmNlVG9YbWwocmVmZXJlbmNlTmFtZSwgaW5SZWZlcmVuY2UpIHsNCglpZihpblJlZmVyZW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluUmVmZXJlbmNlID09PSBudWxsICkgcmV0dXJuIG51bGw7DQoJDQoJdmFyIHJlc3VsdCA9ICc8cjonICsgcmVmZXJlbmNlTmFtZSArICc+PGE6QWRkcmVzcz4vd3NtYW48L2E6QWRkcmVzcz48YTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjx3OlJlc291cmNlVVJJPicrIGluUmVmZXJlbmNlWydfX3Jlc291cmNlVXJpJ10rJzwvdzpSZXNvdXJjZVVSST48dzpTZWxlY3RvclNldD4nOw0KCWZvcih2YXIgc2VsZWN0b3JOYW1lIGluIGluUmVmZXJlbmNlKSB7DQoJCWlmICghaW5SZWZlcmVuY2UuaGFzT3duUHJvcGVydHkoc2VsZWN0b3JOYW1lKSB8fCBzZWxlY3Rvck5hbWUuaW5kZXhPZignX18nKSA9PT0gMCkgY29udGludWU7DQoJCQ0KCQlpZiAodHlwZW9mIGluUmVmZXJlbmNlW3NlbGVjdG9yTmFtZV0gPT09ICdmdW5jdGlvbicgfHwgDQoJCQl0eXBlb2YgaW5SZWZlcmVuY2Vbc2VsZWN0b3JOYW1lXSA9PT0gJ29iamVjdCcgfHwNCgkJCUFycmF5LmlzQXJyYXkoaW5SZWZlcmVuY2Vbc2VsZWN0b3JOYW1lXSkgKQ0KCQkJY29udGludWU7DQoJCQ0KCQlyZXN1bHQgKz0gJzx3OlNlbGVjdG9yIE5hbWU9IicgKyBzZWxlY3Rvck5hbWUgKyciPicgKyBpblJlZmVyZW5jZVtzZWxlY3Rvck5hbWVdLnRvU3RyaW5nKCkgKyAnPC93OlNlbGVjdG9yPic7DQoJfQ0KCQ0KCXJlc3VsdCArPSAnPC93OlNlbGVjdG9yU2V0PjwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjwvcjonICsgcmVmZXJlbmNlTmFtZSArICc+JzsNCglyZXR1cm4gcmVzdWx0Ow0KfQ0KDQovLyBDb252ZXJ0IGEgYnl0ZSBhcnJheSBvZiBTSUQgaW50byBzdHJpbmcNCmZ1bmN0aW9uIEdldFNpZFN0cmluZyhzaWQpIHsNCiAgICB2YXIgciA9ICJTLSIgKyBzaWQuY2hhckNvZGVBdCgwKSArICItIiArIHNpZC5jaGFyQ29kZUF0KDcpOw0KICAgIGZvciAodmFyIGkgPSAyOyBpIDwgKHNpZC5sZW5ndGggLyA0KSA7IGkrKykgciArPSAiLSIgKyBSZWFkSW50WChzaWQsIGkgKiA0KTsNCiAgICByZXR1cm4gcjsNCn0NCg0KLy8gQ29udmVydCBhIFNJRCByZWFkYWJsZSBzdHJpbmcgaW50byBieXRlcw0KZnVuY3Rpb24gR2V0U2lkQnl0ZUFycmF5KHNpZFN0cmluZykgew0KICAgIGlmICghc2lkU3RyaW5nIHx8IHNpZFN0cmluZyA9PSBudWxsKSByZXR1cm4gbnVsbDsNCiAgICB2YXIgc2lkUGFydHMgPSBzaWRTdHJpbmcuc3BsaXQoJy0nKTsNCg0KICAgIC8vIE1ha2Ugc3VyZSB0aGUgU0lEIGhhcyBhdCBsZWFzdCA0IHBhcnRzIGFuZCBzdGFydHMgd2l0aCAnUycNCiAgICBpZiAoc2lkUGFydHMubGVuZ3RoIDwgNCB8fCAoc2lkUGFydHNbMF0gIT0gJ3MnICYmIHNpZFBhcnRzWzBdICE9ICdTJykpIHJldHVybiBudWxsOw0KDQogICAgLy8gQ2hlY2sgdGhhdCBlYWNoIHBhcnQgb2YgdGhlIFNJRCBpcyByZWFsbHkgYW4gaW50ZWdlcg0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc2lkUGFydHMubGVuZ3RoOyBpKyspIHsgdmFyIHkgPSBwYXJzZUludChzaWRQYXJ0c1tpXSk7IGlmICh5ICE9IHNpZFBhcnRzW2ldKSByZXR1cm4gbnVsbDsgc2lkUGFydHNbaV0gPSB5OyB9DQoNCiAgICAvLyBWZXJzaW9uICg4IGJpdCkgKyBJZCBjb3VudCAoOCBiaXQpICsgNDggYml0IGluIGJpZyBlbmRpYW4gLS0gRE8gTk9UIHVzZSBiaXR3aXNlIHJpZ2h0IHNoaWZ0IG9wZXJhdG9yLiBKYXZhU2NyaXB0IGNvbnZlcnRzIHRoZSBudW1iZXIgaW50byBhIDMyIGJpdCBpbnRlZ2VyIGJlZm9yZSBzaGlmdGluZy4gSW4gcmVhbCB3b3JsZCwgaXQncyBoaWdobHkgbGlrZWx5IHRoaXMgcGFydCBpcyBhbHdheXMgMC4NCiAgICB2YXIgciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoc2lkUGFydHNbMV0pICsgU3RyaW5nLmZyb21DaGFyQ29kZShzaWRQYXJ0cy5sZW5ndGggLSAzKSArIFNob3J0VG9TdHIoTWF0aC5mbG9vcihzaWRQYXJ0c1syXSAvIE1hdGgucG93KDIsIDMyKSkpICsgSW50VG9TdHIoKHNpZFBhcnRzWzJdKSAmIDB4RkZGRik7DQoNCiAgICAvLyB0aGUgcmVzdCBhcmUgaW4gMzIgYml0IGluIGxpdHRsZSBlbmRpYW4NCiAgICBmb3IgKHZhciBpID0gMzsgaSA8IHNpZFBhcnRzLmxlbmd0aDsgaSsrKSByICs9IEludFRvU3RyWChzaWRQYXJ0c1tpXSk7DQogICAgcmV0dXJuIHI7DQp9DQooZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkgewogIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgZGVmaW5lKFtdLCBmYWN0b3J5KTsKICB9IGVsc2UgewogICAgcm9vdC5mb3JnZSA9IGZhY3RvcnkoKTsKICB9Cn0pKHRoaXMsIGZ1bmN0aW9uKCkgewovKioKICogbGljZW5zZSBhbG1vbmQgMC4yLjkgQ29weXJpZ2h0IChjKSAyMDExLTIwMTQsIFRoZSBEb2pvIEZvdW5kYXRpb24gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICogQXZhaWxhYmxlIHZpYSB0aGUgTUlUIG9yIG5ldyBCU0QgbGljZW5zZS4KICogc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL2FsbW9uZCBmb3IgZGV0YWlscwogKi8KLy9Hb2luZyBzbG9wcHkgdG8gYXZvaWQgJ3VzZSBzdHJpY3QnIHN0cmluZyBjb3N0LCBidXQgc3RyaWN0IHByYWN0aWNlcyBzaG91bGQKLy9iZSBmb2xsb3dlZC4KLypqc2xpbnQgc2xvcHB5OiB0cnVlICovCi8qZ2xvYmFsIHNldFRpbWVvdXQ6IGZhbHNlICovCgp2YXIgcmVxdWlyZWpzLCByZXF1aXJlLCBkZWZpbmU7CihmdW5jdGlvbiAodW5kZWYpIHsKICAgIHZhciBtYWluLCByZXEsIG1ha2VNYXAsIGhhbmRsZXJzLAogICAgICAgIGRlZmluZWQgPSB7fSwKICAgICAgICB3YWl0aW5nID0ge30sCiAgICAgICAgY29uZmlnID0ge30sCiAgICAgICAgZGVmaW5pbmcgPSB7fSwKICAgICAgICBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LAogICAgICAgIGFwcyA9IFtdLnNsaWNlLAogICAgICAgIGpzU3VmZml4UmVnRXhwID0gL1wuanMkLzsKCiAgICBmdW5jdGlvbiBoYXNQcm9wKG9iaiwgcHJvcCkgewogICAgICAgIHJldHVybiBoYXNPd24uY2FsbChvYmosIHByb3ApOwogICAgfQoKICAgIC8qKgogICAgICogR2l2ZW4gYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSwgbGlrZSAuL3NvbWV0aGluZywgbm9ybWFsaXplIGl0IHRvCiAgICAgKiBhIHJlYWwgbmFtZSB0aGF0IGNhbiBiZSBtYXBwZWQgdG8gYSBwYXRoLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlTmFtZSBhIHJlYWwgbmFtZSB0aGF0IHRoZSBuYW1lIGFyZyBpcyByZWxhdGl2ZQogICAgICogdG8uCiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBub3JtYWxpemVkIG5hbWUKICAgICAqLwogICAgZnVuY3Rpb24gbm9ybWFsaXplKG5hbWUsIGJhc2VOYW1lKSB7CiAgICAgICAgdmFyIG5hbWVQYXJ0cywgbmFtZVNlZ21lbnQsIG1hcFZhbHVlLCBmb3VuZE1hcCwgbGFzdEluZGV4LAogICAgICAgICAgICBmb3VuZEksIGZvdW5kU3Rhck1hcCwgc3RhckksIGksIGosIHBhcnQsCiAgICAgICAgICAgIGJhc2VQYXJ0cyA9IGJhc2VOYW1lICYmIGJhc2VOYW1lLnNwbGl0KCIvIiksCiAgICAgICAgICAgIG1hcCA9IGNvbmZpZy5tYXAsCiAgICAgICAgICAgIHN0YXJNYXAgPSAobWFwICYmIG1hcFsnKiddKSB8fCB7fTsKCiAgICAgICAgLy9BZGp1c3QgYW55IHJlbGF0aXZlIHBhdGhzLgogICAgICAgIGlmIChuYW1lICYmIG5hbWUuY2hhckF0KDApID09PSAiLiIpIHsKICAgICAgICAgICAgLy9JZiBoYXZlIGEgYmFzZSBuYW1lLCB0cnkgdG8gbm9ybWFsaXplIGFnYWluc3QgaXQsCiAgICAgICAgICAgIC8vb3RoZXJ3aXNlLCBhc3N1bWUgaXQgaXMgYSB0b3AtbGV2ZWwgcmVxdWlyZSB0aGF0IHdpbGwKICAgICAgICAgICAgLy9iZSByZWxhdGl2ZSB0byBiYXNlVXJsIGluIHRoZSBlbmQuCiAgICAgICAgICAgIGlmIChiYXNlTmFtZSkgewogICAgICAgICAgICAgICAgLy9Db252ZXJ0IGJhc2VOYW1lIHRvIGFycmF5LCBhbmQgbG9wIG9mZiB0aGUgbGFzdCBwYXJ0LAogICAgICAgICAgICAgICAgLy9zbyB0aGF0IC4gbWF0Y2hlcyB0aGF0ICJkaXJlY3RvcnkiIGFuZCBub3QgbmFtZSBvZiB0aGUgYmFzZU5hbWUncwogICAgICAgICAgICAgICAgLy9tb2R1bGUuIEZvciBpbnN0YW5jZSwgYmFzZU5hbWUgb2YgIm9uZS90d28vdGhyZWUiLCBtYXBzIHRvCiAgICAgICAgICAgICAgICAvLyJvbmUvdHdvL3RocmVlLmpzIiwgYnV0IHdlIHdhbnQgdGhlIGRpcmVjdG9yeSwgIm9uZS90d28iIGZvcgogICAgICAgICAgICAgICAgLy90aGlzIG5vcm1hbGl6YXRpb24uCiAgICAgICAgICAgICAgICBiYXNlUGFydHMgPSBiYXNlUGFydHMuc2xpY2UoMCwgYmFzZVBhcnRzLmxlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG5hbWUubGVuZ3RoIC0gMTsKCiAgICAgICAgICAgICAgICAvLyBOb2RlIC5qcyBhbGxvd2FuY2U6CiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm5vZGVJZENvbXBhdCAmJiBqc1N1ZmZpeFJlZ0V4cC50ZXN0KG5hbWVbbGFzdEluZGV4XSkpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0gPSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5hbWUgPSBiYXNlUGFydHMuY29uY2F0KG5hbWUpOwoKICAgICAgICAgICAgICAgIC8vc3RhcnQgdHJpbURvdHMKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgcGFydCA9IG5hbWVbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICIuIikgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSAtPSAxOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gIi4uIikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMSAmJiAobmFtZVsyXSA9PT0gJy4uJyB8fCBuYW1lWzBdID09PSAnLi4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9FbmQgb2YgdGhlIGxpbmUuIEtlZXAgYXQgbGVhc3Qgb25lIG5vbi1kb3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcGF0aCBzZWdtZW50IGF0IHRoZSBmcm9udCBzbyBpdCBjYW4gYmUgbWFwcGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvcnJlY3RseSB0byBkaXNrLiBPdGhlcndpc2UsIHRoZXJlIGlzIGxpa2VseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ubyBwYXRoIG1hcHBpbmcgZm9yIGEgcGF0aCBzdGFydGluZyB3aXRoICcuLicuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1RoaXMgY2FuIHN0aWxsIGZhaWwsIGJ1dCBjYXRjaGVzIHRoZSBtb3N0IHJlYXNvbmFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdXNlcyBvZiAuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuc3BsaWNlKGkgLSAxLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vZW5kIHRyaW1Eb3RzCgogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbigiLyIpOwogICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuaW5kZXhPZignLi8nKSA9PT0gMCkgewogICAgICAgICAgICAgICAgLy8gTm8gYmFzZU5hbWUsIHNvIHRoaXMgaXMgSUQgaXMgcmVzb2x2ZWQgcmVsYXRpdmUKICAgICAgICAgICAgICAgIC8vIHRvIGJhc2VVcmwsIHB1bGwgb2ZmIHRoZSBsZWFkaW5nIGRvdC4KICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9BcHBseSBtYXAgY29uZmlnIGlmIGF2YWlsYWJsZS4KICAgICAgICBpZiAoKGJhc2VQYXJ0cyB8fCBzdGFyTWFwKSAmJiBtYXApIHsKICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpOwoKICAgICAgICAgICAgZm9yIChpID0gbmFtZVBhcnRzLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgbmFtZVNlZ21lbnQgPSBuYW1lUGFydHMuc2xpY2UoMCwgaSkuam9pbigiLyIpOwoKICAgICAgICAgICAgICAgIGlmIChiYXNlUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgogICAgICAgICAgICAgICAgICAgIC8vU28sIGRvIGpvaW5zIG9uIHRoZSBiaWdnZXN0IHRvIHNtYWxsZXN0IGxlbmd0aHMgb2YgYmFzZVBhcnRzLgogICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGJhc2VQYXJ0cy5sZW5ndGg7IGogPiAwOyBqIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBbYmFzZVBhcnRzLnNsaWNlKDAsIGopLmpvaW4oJy8nKV07CgogICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzICBjb25maWcsIGZpbmQgaWYgaXQgaGFzIG9uZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBWYWx1ZVtuYW1lU2VnbWVudF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gbWFwVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LAogICAgICAgICAgICAgICAgLy9pZiB0aGVyZSBpcyBhIHNob3J0ZXIgc2VnbWVudCBtYXRjaCBsYXRlciBpbiBhIG1hdGNoaW5nCiAgICAgICAgICAgICAgICAvL2NvbmZpZywgdGhlbiBmYXZvciBvdmVyIHRoaXMgc3RhciBtYXAuCiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIHN0YXJNYXBbbmFtZVNlZ21lbnRdKSB7CiAgICAgICAgICAgICAgICAgICAgZm91bmRTdGFyTWFwID0gc3Rhck1hcFtuYW1lU2VnbWVudF07CiAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkgewogICAgICAgICAgICAgICAgZm91bmRNYXAgPSBmb3VuZFN0YXJNYXA7CiAgICAgICAgICAgICAgICBmb3VuZEkgPSBzdGFySTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGZvdW5kTWFwKSB7CiAgICAgICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0cy5qb2luKCcvJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuYW1lOwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VSZXF1aXJlKHJlbE5hbWUsIGZvcmNlU3luYykgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIC8vQSB2ZXJzaW9uIG9mIGEgcmVxdWlyZSBmdW5jdGlvbiB0aGF0IHBhc3NlcyBhIG1vZHVsZU5hbWUKICAgICAgICAgICAgLy92YWx1ZSBmb3IgaXRlbXMgdGhhdCBtYXkgbmVlZCB0bwogICAgICAgICAgICAvL2xvb2sgdXAgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIG1vZHVsZU5hbWUKICAgICAgICAgICAgcmV0dXJuIHJlcS5hcHBseSh1bmRlZiwgYXBzLmNhbGwoYXJndW1lbnRzLCAwKS5jb25jYXQoW3JlbE5hbWUsIGZvcmNlU3luY10pKTsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VOb3JtYWxpemUocmVsTmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHJlbE5hbWUpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gbWFrZUxvYWQoZGVwTmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgZGVmaW5lZFtkZXBOYW1lXSA9IHZhbHVlOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gY2FsbERlcChuYW1lKSB7CiAgICAgICAgaWYgKGhhc1Byb3Aod2FpdGluZywgbmFtZSkpIHsKICAgICAgICAgICAgdmFyIGFyZ3MgPSB3YWl0aW5nW25hbWVdOwogICAgICAgICAgICBkZWxldGUgd2FpdGluZ1tuYW1lXTsKICAgICAgICAgICAgZGVmaW5pbmdbbmFtZV0gPSB0cnVlOwogICAgICAgICAgICBtYWluLmFwcGx5KHVuZGVmLCBhcmdzKTsKICAgICAgICB9CgogICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBuYW1lKSAmJiAhaGFzUHJvcChkZWZpbmluZywgbmFtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyAnICsgbmFtZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkZWZpbmVkW25hbWVdOwogICAgfQoKICAgIC8vVHVybnMgYSBwbHVnaW4hcmVzb3VyY2UgdG8gW3BsdWdpbiwgcmVzb3VyY2VdCiAgICAvL3dpdGggdGhlIHBsdWdpbiBiZWluZyB1bmRlZmluZWQgaWYgdGhlIG5hbWUKICAgIC8vZGlkIG5vdCBoYXZlIGEgcGx1Z2luIHByZWZpeC4KICAgIGZ1bmN0aW9uIHNwbGl0UHJlZml4KG5hbWUpIHsKICAgICAgICB2YXIgcHJlZml4LAogICAgICAgICAgICBpbmRleCA9IG5hbWUgPyBuYW1lLmluZGV4T2YoJyEnKSA6IC0xOwogICAgICAgIGlmIChpbmRleCA+IC0xKSB7CiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyaW5nKDAsIGluZGV4KTsKICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSwgbmFtZS5sZW5ndGgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gW3ByZWZpeCwgbmFtZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlcyBhIG5hbWUgbWFwLCBub3JtYWxpemluZyB0aGUgbmFtZSwgYW5kIHVzaW5nIGEgcGx1Z2luCiAgICAgKiBmb3Igbm9ybWFsaXphdGlvbiBpZiBuZWNlc3NhcnkuIEdyYWJzIGEgcmVmIHRvIHBsdWdpbgogICAgICogdG9vLCBhcyBhbiBvcHRpbWl6YXRpb24uCiAgICAgKi8KICAgIG1ha2VNYXAgPSBmdW5jdGlvbiAobmFtZSwgcmVsTmFtZSkgewogICAgICAgIHZhciBwbHVnaW4sCiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSksCiAgICAgICAgICAgIHByZWZpeCA9IHBhcnRzWzBdOwoKICAgICAgICBuYW1lID0gcGFydHNbMV07CgogICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgcHJlZml4ID0gbm9ybWFsaXplKHByZWZpeCwgcmVsTmFtZSk7CiAgICAgICAgICAgIHBsdWdpbiA9IGNhbGxEZXAocHJlZml4KTsKICAgICAgICB9CgogICAgICAgIC8vTm9ybWFsaXplIGFjY29yZGluZwogICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgaWYgKHBsdWdpbiAmJiBwbHVnaW4ubm9ybWFsaXplKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gcGx1Z2luLm5vcm1hbGl6ZShuYW1lLCBtYWtlTm9ybWFsaXplKHJlbE5hbWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplKG5hbWUsIHJlbE5hbWUpOwogICAgICAgICAgICBwYXJ0cyA9IHNwbGl0UHJlZml4KG5hbWUpOwogICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXTsKICAgICAgICAgICAgbmFtZSA9IHBhcnRzWzFdOwogICAgICAgICAgICBpZiAocHJlZml4KSB7CiAgICAgICAgICAgICAgICBwbHVnaW4gPSBjYWxsRGVwKHByZWZpeCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vVXNpbmcgcmlkaWN1bG91cyBwcm9wZXJ0eSBuYW1lcyBmb3Igc3BhY2UgcmVhc29ucwogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGY6IHByZWZpeCA/IHByZWZpeCArICchJyArIG5hbWUgOiBuYW1lLCAvL2Z1bGxOYW1lCiAgICAgICAgICAgIG46IG5hbWUsCiAgICAgICAgICAgIHByOiBwcmVmaXgsCiAgICAgICAgICAgIHA6IHBsdWdpbgogICAgICAgIH07CiAgICB9OwoKICAgIGZ1bmN0aW9uIG1ha2VDb25maWcobmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiAoY29uZmlnICYmIGNvbmZpZy5jb25maWcgJiYgY29uZmlnLmNvbmZpZ1tuYW1lXSkgfHwge307CiAgICAgICAgfTsKICAgIH0KCiAgICBoYW5kbGVycyA9IHsKICAgICAgICByZXF1aXJlOiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICByZXR1cm4gbWFrZVJlcXVpcmUobmFtZSk7CiAgICAgICAgfSwKICAgICAgICBleHBvcnRzOiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICB2YXIgZSA9IGRlZmluZWRbbmFtZV07CiAgICAgICAgICAgIGlmICh0eXBlb2YgZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW25hbWVdID0ge30pOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtb2R1bGU6IGZ1bmN0aW9uIChuYW1lKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBpZDogbmFtZSwKICAgICAgICAgICAgICAgIHVyaTogJycsCiAgICAgICAgICAgICAgICBleHBvcnRzOiBkZWZpbmVkW25hbWVdLAogICAgICAgICAgICAgICAgY29uZmlnOiBtYWtlQ29uZmlnKG5hbWUpCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfTsKCiAgICBtYWluID0gZnVuY3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrLCByZWxOYW1lKSB7CiAgICAgICAgdmFyIGNqc01vZHVsZSwgZGVwTmFtZSwgcmV0LCBtYXAsIGksCiAgICAgICAgICAgIGFyZ3MgPSBbXSwKICAgICAgICAgICAgY2FsbGJhY2tUeXBlID0gdHlwZW9mIGNhbGxiYWNrLAogICAgICAgICAgICB1c2luZ0V4cG9ydHM7CgogICAgICAgIC8vVXNlIG5hbWUgaWYgbm8gcmVsTmFtZQogICAgICAgIHJlbE5hbWUgPSByZWxOYW1lIHx8IG5hbWU7CgogICAgICAgIC8vQ2FsbCB0aGUgY2FsbGJhY2sgdG8gZGVmaW5lIHRoZSBtb2R1bGUsIGlmIG5lY2Vzc2FyeS4KICAgICAgICBpZiAoY2FsbGJhY2tUeXBlID09PSAndW5kZWZpbmVkJyB8fCBjYWxsYmFja1R5cGUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgZGVmaW5lZCBkZXBlbmRlbmNpZXMgYW5kIHBhc3MgdGhlIG9yZGVyZWQKICAgICAgICAgICAgLy92YWx1ZXMgdG8gdGhlIGNhbGxiYWNrLgogICAgICAgICAgICAvL0RlZmF1bHQgdG8gW3JlcXVpcmUsIGV4cG9ydHMsIG1vZHVsZV0gaWYgbm8gZGVwcwogICAgICAgICAgICBkZXBzID0gIWRlcHMubGVuZ3RoICYmIGNhbGxiYWNrLmxlbmd0aCA/IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddIDogZGVwczsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIG1hcCA9IG1ha2VNYXAoZGVwc1tpXSwgcmVsTmFtZSk7CiAgICAgICAgICAgICAgICBkZXBOYW1lID0gbWFwLmY7CgogICAgICAgICAgICAgICAgLy9GYXN0IHBhdGggQ29tbW9uSlMgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLgogICAgICAgICAgICAgICAgaWYgKGRlcE5hbWUgPT09ICJyZXF1aXJlIikgewogICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5yZXF1aXJlKG5hbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZXBOYW1lID09PSAiZXhwb3J0cyIpIHsKICAgICAgICAgICAgICAgICAgICAvL0NvbW1vbkpTIG1vZHVsZSBzcGVjIDEuMQogICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5leHBvcnRzKG5hbWUpOwogICAgICAgICAgICAgICAgICAgIHVzaW5nRXhwb3J0cyA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlcE5hbWUgPT09ICJtb2R1bGUiKSB7CiAgICAgICAgICAgICAgICAgICAgLy9Db21tb25KUyBtb2R1bGUgc3BlYyAxLjEKICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSBhcmdzW2ldID0gaGFuZGxlcnMubW9kdWxlKG5hbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNQcm9wKGRlZmluZWQsIGRlcE5hbWUpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Byb3Aod2FpdGluZywgZGVwTmFtZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcChkZWZpbmluZywgZGVwTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gY2FsbERlcChkZXBOYW1lKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFwLnApIHsKICAgICAgICAgICAgICAgICAgICBtYXAucC5sb2FkKG1hcC5uLCBtYWtlUmVxdWlyZShyZWxOYW1lLCB0cnVlKSwgbWFrZUxvYWQoZGVwTmFtZSksIHt9KTsKICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gZGVmaW5lZFtkZXBOYW1lXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5hbWUgKyAnIG1pc3NpbmcgJyArIGRlcE5hbWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXQgPSBjYWxsYmFjayA/IGNhbGxiYWNrLmFwcGx5KGRlZmluZWRbbmFtZV0sIGFyZ3MpIDogdW5kZWZpbmVkOwoKICAgICAgICAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgICAgICAgIC8vSWYgc2V0dGluZyBleHBvcnRzIHZpYSAibW9kdWxlIiBpcyBpbiBwbGF5LAogICAgICAgICAgICAgICAgLy9mYXZvciB0aGF0IG92ZXIgcmV0dXJuIHZhbHVlIGFuZCBleHBvcnRzLiBBZnRlciB0aGF0LAogICAgICAgICAgICAgICAgLy9mYXZvciBhIG5vbi11bmRlZmluZWQgcmV0dXJuIHZhbHVlIG92ZXIgZXhwb3J0cyB1c2UuCiAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlICYmIGNqc01vZHVsZS5leHBvcnRzICE9PSB1bmRlZiAmJgogICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUuZXhwb3J0cyAhPT0gZGVmaW5lZFtuYW1lXSkgewogICAgICAgICAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSBjanNNb2R1bGUuZXhwb3J0czsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSB1bmRlZiB8fCAhdXNpbmdFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgLy9Vc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW25hbWVdID0gcmV0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChuYW1lKSB7CiAgICAgICAgICAgIC8vTWF5IGp1c3QgYmUgYW4gb2JqZWN0IGRlZmluaXRpb24gZm9yIHRoZSBtb2R1bGUuIE9ubHkKICAgICAgICAgICAgLy93b3JyeSBhYm91dCBkZWZpbmluZyBpZiBoYXZlIGEgbW9kdWxlIG5hbWUuCiAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSBjYWxsYmFjazsKICAgICAgICB9CiAgICB9OwoKICAgIHJlcXVpcmVqcyA9IHJlcXVpcmUgPSByZXEgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUsIGZvcmNlU3luYywgYWx0KSB7CiAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09PSAic3RyaW5nIikgewogICAgICAgICAgICBpZiAoaGFuZGxlcnNbZGVwc10pIHsKICAgICAgICAgICAgICAgIC8vY2FsbGJhY2sgaW4gdGhpcyBjYXNlIGlzIHJlYWxseSByZWxOYW1lCiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10oY2FsbGJhY2spOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vSnVzdCByZXR1cm4gdGhlIG1vZHVsZSB3YW50ZWQuIEluIHRoaXMgc2NlbmFyaW8sIHRoZQogICAgICAgICAgICAvL2RlcHMgYXJnIGlzIHRoZSBtb2R1bGUgbmFtZSwgYW5kIHNlY29uZCBhcmcgKGlmIHBhc3NlZCkKICAgICAgICAgICAgLy9pcyBqdXN0IHRoZSByZWxOYW1lLgogICAgICAgICAgICAvL05vcm1hbGl6ZSBtb2R1bGUgbmFtZSwgaWYgaXQgY29udGFpbnMgLiBvciAuLgogICAgICAgICAgICByZXR1cm4gY2FsbERlcChtYWtlTWFwKGRlcHMsIGNhbGxiYWNrKS5mKTsKICAgICAgICB9IGVsc2UgaWYgKCFkZXBzLnNwbGljZSkgewogICAgICAgICAgICAvL2RlcHMgaXMgYSBjb25maWcgb2JqZWN0LCBub3QgYW4gYXJyYXkuCiAgICAgICAgICAgIGNvbmZpZyA9IGRlcHM7CiAgICAgICAgICAgIGlmIChjb25maWcuZGVwcykgewogICAgICAgICAgICAgICAgcmVxKGNvbmZpZy5kZXBzLCBjb25maWcuY2FsbGJhY2spOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGNhbGxiYWNrLnNwbGljZSkgewogICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpcyBhbiBhcnJheSwgd2hpY2ggbWVhbnMgaXQgaXMgYSBkZXBlbmRlbmN5IGxpc3QuCiAgICAgICAgICAgICAgICAvL0FkanVzdCBhcmdzIGlmIHRoZXJlIGFyZSBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgICAgIGRlcHMgPSBjYWxsYmFjazsKICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gcmVsTmFtZTsKICAgICAgICAgICAgICAgIHJlbE5hbWUgPSBudWxsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGVwcyA9IHVuZGVmOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL1N1cHBvcnQgcmVxdWlyZShbJ2EnXSkKICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OwoKICAgICAgICAvL0lmIHJlbE5hbWUgaXMgYSBmdW5jdGlvbiwgaXQgaXMgYW4gZXJyYmFjayBoYW5kbGVyLAogICAgICAgIC8vc28gcmVtb3ZlIGl0LgogICAgICAgIGlmICh0eXBlb2YgcmVsTmFtZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICByZWxOYW1lID0gZm9yY2VTeW5jOwogICAgICAgICAgICBmb3JjZVN5bmMgPSBhbHQ7CiAgICAgICAgfQoKICAgICAgICAvL1NpbXVsYXRlIGFzeW5jIGNhbGxiYWNrOwogICAgICAgIGlmIChmb3JjZVN5bmMpIHsKICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vVXNpbmcgYSBub24temVybyB2YWx1ZSBiZWNhdXNlIG9mIGNvbmNlcm4gZm9yIHdoYXQgb2xkIGJyb3dzZXJzCiAgICAgICAgICAgIC8vZG8sIGFuZCBsYXRlc3QgYnJvd3NlcnMgInVwZ3JhZGUiIHRvIDQgaWYgbG93ZXIgdmFsdWUgaXMgdXNlZDoKICAgICAgICAgICAgLy9odHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aW1lcnMuaHRtbCNkb20td2luZG93dGltZXJzLXNldHRpbWVvdXQ6CiAgICAgICAgICAgIC8vSWYgd2FudCBhIHZhbHVlIGltbWVkaWF0ZWx5LCB1c2UgcmVxdWlyZSgnaWQnKSBpbnN0ZWFkIC0tIHNvbWV0aGluZwogICAgICAgICAgICAvL3RoYXQgd29ya3MgaW4gYWxtb25kIG9uIHRoZSBnbG9iYWwgbGV2ZWwsIGJ1dCBub3QgZ3VhcmFudGVlZCBhbmQKICAgICAgICAgICAgLy91bmxpa2VseSB0byB3b3JrIGluIG90aGVyIEFNRCBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpOwogICAgICAgICAgICB9LCA0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXE7CiAgICB9OwoKICAgIC8qKgogICAgICogSnVzdCBkcm9wcyB0aGUgY29uZmlnIG9uIHRoZSBmbG9vciwgYnV0IHJldHVybnMgcmVxIGluIGNhc2UKICAgICAqIHRoZSBjb25maWcgcmV0dXJuIHZhbHVlIGlzIHVzZWQuCiAgICAgKi8KICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY2ZnKSB7CiAgICAgICAgcmV0dXJuIHJlcShjZmcpOwogICAgfTsKCiAgICAvKioKICAgICAqIEV4cG9zZSBtb2R1bGUgcmVnaXN0cnkgZm9yIGRlYnVnZ2luZyBhbmQgdG9vbGluZwogICAgICovCiAgICByZXF1aXJlanMuX2RlZmluZWQgPSBkZWZpbmVkOwoKICAgIGRlZmluZSA9IGZ1bmN0aW9uIChuYW1lLCBkZXBzLCBjYWxsYmFjaykgewoKICAgICAgICAvL1RoaXMgbW9kdWxlIG1heSBub3QgaGF2ZSBkZXBlbmRlbmNpZXMKICAgICAgICBpZiAoIWRlcHMuc3BsaWNlKSB7CiAgICAgICAgICAgIC8vZGVwcyBpcyBub3QgYW4gYXJyYXksIHNvIHByb2JhYmx5IG1lYW5zCiAgICAgICAgICAgIC8vYW4gb2JqZWN0IGxpdGVyYWwgb3IgZmFjdG9yeSBmdW5jdGlvbiBmb3IKICAgICAgICAgICAgLy90aGUgdmFsdWUuIEFkanVzdCBhcmdzLgogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBbXTsKICAgICAgICB9CgogICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBuYW1lKSAmJiAhaGFzUHJvcCh3YWl0aW5nLCBuYW1lKSkgewogICAgICAgICAgICB3YWl0aW5nW25hbWVdID0gW25hbWUsIGRlcHMsIGNhbGxiYWNrXTsKICAgICAgICB9CiAgICB9OwoKICAgIGRlZmluZS5hbWQgPSB7CiAgICAgICAgalF1ZXJ5OiB0cnVlCiAgICB9Owp9KCkpOwoKZGVmaW5lKCJub2RlX21vZHVsZXMvYWxtb25kL2FsbW9uZCIsIGZ1bmN0aW9uKCl7fSk7CgovKioKICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdlYiBhcHBsaWNhdGlvbnMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLyogVXRpbGl0aWVzIEFQSSAqLwp2YXIgdXRpbCA9IGZvcmdlLnV0aWwgPSBmb3JnZS51dGlsIHx8IHt9OwoKLy8gZGVmaW5lIHNldEltbWVkaWF0ZSBhbmQgbmV4dFRpY2sKKGZ1bmN0aW9uKCkgewogIC8vIHVzZSBuYXRpdmUgbmV4dFRpY2sKICBpZih0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5uZXh0VGljaykgewogICAgdXRpbC5uZXh0VGljayA9IHByb2Nlc3MubmV4dFRpY2s7CiAgICBpZih0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlOwogICAgfSBlbHNlIHsKICAgICAgLy8gcG9seWZpbGwgc2V0SW1tZWRpYXRlIHdpdGggbmV4dFRpY2ssIG9sZGVyIHZlcnNpb25zIG9mIG5vZGUKICAgICAgLy8gKHRob3NlIHcvbyBzZXRJbW1lZGlhdGUpIHdvbid0IHRvdGFsbHkgc3RhcnZlIElPCiAgICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gdXRpbC5uZXh0VGljazsKICAgIH0KICAgIHJldHVybjsKICB9CgogIC8vIHBvbHlmaWxsIG5leHRUaWNrIHdpdGggbmF0aXZlIHNldEltbWVkaWF0ZQogIGlmKHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICdmdW5jdGlvbicpIHsKICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlOwogICAgdXRpbC5uZXh0VGljayA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBzZXRJbW1lZGlhdGUoY2FsbGJhY2spOwogICAgfTsKICAgIHJldHVybjsKICB9CgogIC8qIE5vdGU6IEEgcG9seWZpbGwgdXBncmFkZSBwYXR0ZXJuIGlzIHVzZWQgaGVyZSB0byBhbGxvdyBjb21iaW5pbmcKICBwb2x5ZmlsbHMuIEZvciBleGFtcGxlLCBNdXRhdGlvbk9ic2VydmVyIGlzIGZhc3QsIGJ1dCBibG9ja3MgVUkgdXBkYXRlcywKICBzbyBpdCBuZWVkcyB0byBhbGxvdyBVSSB1cGRhdGVzIHBlcmlvZGljYWxseSwgc28gaXQgZmFsbHMgYmFjayBvbgogIHBvc3RNZXNzYWdlIG9yIHNldFRpbWVvdXQuICovCgogIC8vIHBvbHlmaWxsIHdpdGggc2V0VGltZW91dAogIHV0aWwuc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOwogIH07CgogIC8vIHVwZ3JhZGUgcG9seWZpbGwgdG8gdXNlIHBvc3RNZXNzYWdlCiAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYKICAgIHR5cGVvZiB3aW5kb3cucG9zdE1lc3NhZ2UgPT09ICdmdW5jdGlvbicpIHsKICAgIHZhciBtc2cgPSAnZm9yZ2Uuc2V0SW1tZWRpYXRlJzsKICAgIHZhciBjYWxsYmFja3MgPSBbXTsKICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICAvLyBvbmx5IHNlbmQgbWVzc2FnZSB3aGVuIG9uZSBoYXNuJ3QgYmVlbiBzZW50IGluCiAgICAgIC8vIHRoZSBjdXJyZW50IHR1cm4gb2YgdGhlIGV2ZW50IGxvb3AKICAgICAgaWYoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMSkgewogICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShtc2csICcqJyk7CiAgICAgIH0KICAgIH07CiAgICBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7CiAgICAgIGlmKGV2ZW50LnNvdXJjZSA9PT0gd2luZG93ICYmIGV2ZW50LmRhdGEgPT09IG1zZykgewogICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHZhciBjb3B5ID0gY2FsbGJhY2tzLnNsaWNlKCk7CiAgICAgICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7CiAgICAgICAgY29weS5mb3JFYWNoKGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZXIsIHRydWUpOwogIH0KCiAgLy8gdXBncmFkZSBwb2x5ZmlsbCB0byB1c2UgTXV0YXRpb25PYnNlcnZlcgogIGlmKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJykgewogICAgLy8gcG9seWZpbGwgd2l0aCBNdXRhdGlvbk9ic2VydmVyCiAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTsKICAgIHZhciBhdHRyID0gdHJ1ZTsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIHZhciBjYWxsYmFja3MgPSBbXTsKICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkgewogICAgICB2YXIgY29weSA9IGNhbGxiYWNrcy5zbGljZSgpOwogICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDsKICAgICAgY29weS5mb3JFYWNoKGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfSk7CiAgICB9KS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKICAgIHZhciBvbGRTZXRJbW1lZGlhdGUgPSB1dGlsLnNldEltbWVkaWF0ZTsKICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgaWYoRGF0ZS5ub3coKSAtIG5vdyA+IDE1KSB7CiAgICAgICAgbm93ID0gRGF0ZS5ub3coKTsKICAgICAgICBvbGRTZXRJbW1lZGlhdGUoY2FsbGJhY2spOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgICAgICAvLyBvbmx5IHRyaWdnZXIgb2JzZXJ2ZXIgd2hlbiBpdCBoYXNuJ3QgYmVlbiB0cmlnZ2VyZWQgaW4KICAgICAgICAvLyB0aGUgY3VycmVudCB0dXJuIG9mIHRoZSBldmVudCBsb29wCiAgICAgICAgaWYoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYScsIGF0dHIgPSAhYXR0cik7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogIH0KCiAgdXRpbC5uZXh0VGljayA9IHV0aWwuc2V0SW1tZWRpYXRlOwp9KSgpOwoKLy8gZGVmaW5lIGlzQXJyYXkKdXRpbC5pc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbih4KSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKfTsKCi8vIGRlZmluZSBpc0FycmF5QnVmZmVyCnV0aWwuaXNBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKHgpIHsKICByZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB4IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI7Cn07CgovLyBkZWZpbmUgaXNBcnJheUJ1ZmZlclZpZXcKdXRpbC5pc0FycmF5QnVmZmVyVmlldyA9IGZ1bmN0aW9uKHgpIHsKICByZXR1cm4geCAmJiB1dGlsLmlzQXJyYXlCdWZmZXIoeC5idWZmZXIpICYmIHguYnl0ZUxlbmd0aCAhPT0gdW5kZWZpbmVkOwp9OwoKLy8gVE9ETzogc2V0IEJ5dGVCdWZmZXIgdG8gYmVzdCBhdmFpbGFibGUgYmFja2luZwp1dGlsLkJ5dGVCdWZmZXIgPSBCeXRlU3RyaW5nQnVmZmVyOwoKLyoqIEJ1ZmZlciB3L0JpbmFyeVN0cmluZyBiYWNraW5nICovCgovKioKICogQ29uc3RydWN0b3IgZm9yIGEgYmluYXJ5IHN0cmluZyBiYWNrZWQgYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBbYl0gdGhlIGJ5dGVzIHRvIHdyYXAgKGVpdGhlciBlbmNvZGVkIGFzIHN0cmluZywgb25lIGJ5dGUgcGVyCiAqICAgICAgICAgIGNoYXJhY3Rlciwgb3IgYXMgYW4gQXJyYXlCdWZmZXIgb3IgVHlwZWQgQXJyYXkpLgogKi8KZnVuY3Rpb24gQnl0ZVN0cmluZ0J1ZmZlcihiKSB7CiAgLy8gVE9ETzogdXBkYXRlIHRvIG1hdGNoIERhdGFCdWZmZXIgQVBJCgogIC8vIHRoZSBkYXRhIGluIHRoaXMgYnVmZmVyCiAgdGhpcy5kYXRhID0gJyc7CiAgLy8gdGhlIHBvaW50ZXIgZm9yIHJlYWRpbmcgZnJvbSB0aGlzIGJ1ZmZlcgogIHRoaXMucmVhZCA9IDA7CgogIGlmKHR5cGVvZiBiID09PSAnc3RyaW5nJykgewogICAgdGhpcy5kYXRhID0gYjsKICB9IGVsc2UgaWYodXRpbC5pc0FycmF5QnVmZmVyKGIpIHx8IHV0aWwuaXNBcnJheUJ1ZmZlclZpZXcoYikpIHsKICAgIC8vIGNvbnZlcnQgbmF0aXZlIGJ1ZmZlciB0byBmb3JnZSBidWZmZXIKICAgIC8vIEZJWE1FOiBzdXBwb3J0IG5hdGl2ZSBidWZmZXJzIGludGVybmFsbHkgaW5zdGVhZAogICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KGIpOwogICAgdHJ5IHsKICAgICAgdGhpcy5kYXRhID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBhcnIpOwogICAgfSBjYXRjaChlKSB7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHsKICAgICAgICB0aGlzLnB1dEJ5dGUoYXJyW2ldKTsKICAgICAgfQogICAgfQogIH0gZWxzZSBpZihiIGluc3RhbmNlb2YgQnl0ZVN0cmluZ0J1ZmZlciB8fAogICAgKHR5cGVvZiBiID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgYi5kYXRhID09PSAnc3RyaW5nJyAmJgogICAgdHlwZW9mIGIucmVhZCA9PT0gJ251bWJlcicpKSB7CiAgICAvLyBjb3B5IGV4aXN0aW5nIGJ1ZmZlcgogICAgdGhpcy5kYXRhID0gYi5kYXRhOwogICAgdGhpcy5yZWFkID0gYi5yZWFkOwogIH0KCiAgLy8gdXNlZCBmb3Igdjggb3B0aW1pemF0aW9uCiAgdGhpcy5fY29uc3RydWN0ZWRTdHJpbmdMZW5ndGggPSAwOwp9CnV0aWwuQnl0ZVN0cmluZ0J1ZmZlciA9IEJ5dGVTdHJpbmdCdWZmZXI7CgovKiBOb3RlOiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiBmb3IgVjgtYmFzZWQgYnJvd3NlcnMuIFdoZW4gVjggY29uY2F0ZW5hdGVzCiAgYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGFyZSBvbmx5IGpvaW5lZCBsb2dpY2FsbHkgdXNpbmcgYSAiY29ucyBzdHJpbmciIG9yCiAgImNvbnN0cnVjdGVkL2NvbmNhdGVuYXRlZCBzdHJpbmciLiBUaGVzZSBjb250YWluZXJzIGtlZXAgcmVmZXJlbmNlcyB0byBvbmUKICBhbm90aGVyIGFuZCBjYW4gcmVzdWx0IGluIHZlcnkgbGFyZ2UgbWVtb3J5IHVzYWdlLiBGb3IgZXhhbXBsZSwgaWYgYSAyTUIKICBzdHJpbmcgaXMgY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGluZyA0IGJ5dGVzIHRvZ2V0aGVyIGF0IGEgdGltZSwgdGhlCiAgbWVtb3J5IHVzYWdlIHdpbGwgYmUgfjQ0TUI7IHNvIH4yMnggaW5jcmVhc2UuIFRoZSBzdHJpbmdzIGFyZSBvbmx5IGpvaW5lZAogIHRvZ2V0aGVyIHdoZW4gYW4gb3BlcmF0aW9uIHJlcXVpcmluZyB0aGVpciBqb2luaW5nIHRha2VzIHBsYWNlLCBzdWNoIGFzCiAgc3Vic3RyKCkuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYWRkaW5nIGRhdGEgdG8gdGhpcyBidWZmZXIgdG8gZW5zdXJlCiAgdGhlc2UgdHlwZXMgb2Ygc3RyaW5ncyBhcmUgcGVyaW9kaWNhbGx5IGpvaW5lZCB0byByZWR1Y2UgdGhlIG1lbW9yeQogIGZvb3RwcmludC4gKi8KdmFyIF9NQVhfQ09OU1RSVUNURURfU1RSSU5HX0xFTkdUSCA9IDQwOTY7CnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuX29wdGltaXplQ29uc3RydWN0ZWRTdHJpbmcgPSBmdW5jdGlvbih4KSB7CiAgdGhpcy5fY29uc3RydWN0ZWRTdHJpbmdMZW5ndGggKz0geDsKICBpZih0aGlzLl9jb25zdHJ1Y3RlZFN0cmluZ0xlbmd0aCA+IF9NQVhfQ09OU1RSVUNURURfU1RSSU5HX0xFTkdUSCkgewogICAgLy8gdGhpcyBzdWJzdHIoKSBzaG91bGQgY2F1c2UgdGhlIGNvbnN0cnVjdGVkIHN0cmluZyB0byBqb2luCiAgICB0aGlzLmRhdGEuc3Vic3RyKDAsIDEpOwogICAgdGhpcy5fY29uc3RydWN0ZWRTdHJpbmdMZW5ndGggPSAwOwogIH0KfTsKCi8qKgogKiBHZXRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuIHRoaXMuZGF0YS5sZW5ndGggLSB0aGlzLnJlYWQ7Cn07CgovKioKICogR2V0cyB3aGV0aGVyIG9yIG5vdCB0aGlzIGJ1ZmZlciBpcyBlbXB0eS4KICoKICogQHJldHVybiB0cnVlIGlmIHRoaXMgYnVmZmVyIGlzIGVtcHR5LCBmYWxzZSBpZiBub3QuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gdGhpcy5sZW5ndGgoKSA8PSAwOwp9OwoKLyoqCiAqIFB1dHMgYSBieXRlIGluIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gYiB0aGUgYnl0ZSB0byBwdXQuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEJ5dGUgPSBmdW5jdGlvbihiKSB7CiAgcmV0dXJuIHRoaXMucHV0Qnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShiKSk7Cn07CgovKioKICogUHV0cyBhIGJ5dGUgaW4gdGhpcyBidWZmZXIgTiB0aW1lcy4KICoKICogQHBhcmFtIGIgdGhlIGJ5dGUgdG8gcHV0LgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHZhbHVlIGIgdG8gcHV0LgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5maWxsV2l0aEJ5dGUgPSBmdW5jdGlvbihiLCBuKSB7CiAgYiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7CiAgdmFyIGQgPSB0aGlzLmRhdGE7CiAgd2hpbGUobiA+IDApIHsKICAgIGlmKG4gJiAxKSB7CiAgICAgIGQgKz0gYjsKICAgIH0KICAgIG4gPj4+PSAxOwogICAgaWYobiA+IDApIHsKICAgICAgYiArPSBiOwogICAgfQogIH0KICB0aGlzLmRhdGEgPSBkOwogIHRoaXMuX29wdGltaXplQ29uc3RydWN0ZWRTdHJpbmcobik7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyAoYXMgYSBVVEYtOCBlbmNvZGVkIHN0cmluZykgdG8gcHV0LgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXRCeXRlcyA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgdGhpcy5kYXRhICs9IGJ5dGVzOwogIHRoaXMuX29wdGltaXplQ29uc3RydWN0ZWRTdHJpbmcoYnl0ZXMubGVuZ3RoKTsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGEgVVRGLTE2IGVuY29kZWQgc3RyaW5nIGludG8gdGhpcyBidWZmZXIuCiAqCiAqIEBwYXJhbSBzdHIgdGhlIHN0cmluZyB0byBwdXQuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dFN0cmluZyA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKHV0aWwuZW5jb2RlVXRmOChzdHIpKTsKfTsKCi8qKgogKiBQdXRzIGEgMTYtYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIDE2LWJpdCBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXRJbnQxNiA9IGZ1bmN0aW9uKGkpIHsKICByZXR1cm4gdGhpcy5wdXRCeXRlcygKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiA4ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpICYgMHhGRikpOwp9OwoKLyoqCiAqIFB1dHMgYSAyNC1iaXQgaW50ZWdlciBpbiB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyLgogKgogKiBAcGFyYW0gaSB0aGUgMjQtYml0IGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEludDI0ID0gZnVuY3Rpb24oaSkgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKAogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDE2ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDggJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgJiAweEZGKSk7Cn07CgovKioKICogUHV0cyBhIDMyLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAzMi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0SW50MzIgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuIHRoaXMucHV0Qnl0ZXMoCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gMjQgJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gMTYgJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gOCAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSAmIDB4RkYpKTsKfTsKCi8qKgogKiBQdXRzIGEgMTYtYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIDE2LWJpdCBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXRJbnQxNkxlID0gZnVuY3Rpb24oaSkgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKAogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDggJiAweEZGKSk7Cn07CgovKioKICogUHV0cyBhIDI0LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAyNC1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0SW50MjRMZSA9IGZ1bmN0aW9uKGkpIHsKICByZXR1cm4gdGhpcy5wdXRCeXRlcygKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiA4ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDE2ICYgMHhGRikpOwp9OwoKLyoqCiAqIFB1dHMgYSAzMi1iaXQgaW50ZWdlciBpbiB0aGlzIGJ1ZmZlciBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyLgogKgogKiBAcGFyYW0gaSB0aGUgMzItYml0IGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEludDMyTGUgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuIHRoaXMucHV0Qnl0ZXMoCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gOCAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAxNiAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAyNCAmIDB4RkYpKTsKfTsKCi8qKgogKiBQdXRzIGFuIG4tYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIG4tYml0IGludGVnZXIuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0SW50ID0gZnVuY3Rpb24oaSwgbikgewogIHZhciBieXRlcyA9ICcnOwogIGRvIHsKICAgIG4gLT0gODsKICAgIGJ5dGVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGkgPj4gbikgJiAweEZGKTsKICB9IHdoaWxlKG4gPiAwKTsKICByZXR1cm4gdGhpcy5wdXRCeXRlcyhieXRlcyk7Cn07CgovKioKICogUHV0cyBhIHNpZ25lZCBuLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuIFR3bydzCiAqIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gaXMgdXNlZC4KICoKICogQHBhcmFtIGkgdGhlIG4tYml0IGludGVnZXIuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0U2lnbmVkSW50ID0gZnVuY3Rpb24oaSwgbikgewogIGlmKGkgPCAwKSB7CiAgICBpICs9IDIgPDwgKG4gLSAxKTsKICB9CiAgcmV0dXJuIHRoaXMucHV0SW50KGksIG4pOwp9OwoKLyoqCiAqIFB1dHMgdGhlIGdpdmVuIGJ1ZmZlciBpbnRvIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZXIgdG8gcHV0IGludG8gdGhpcyBvbmUuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEJ1ZmZlciA9IGZ1bmN0aW9uKGJ1ZmZlcikgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKGJ1ZmZlci5nZXRCeXRlcygpKTsKfTsKCi8qKgogKiBHZXRzIGEgYnl0ZSBmcm9tIHRoaXMgYnVmZmVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZCBwb2ludGVyIGJ5IDEuCiAqCiAqIEByZXR1cm4gdGhlIGJ5dGUuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEJ5dGUgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkKyspOwp9OwoKLyoqCiAqIEdldHMgYSB1aW50MTYgZnJvbSB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZAogKiBwb2ludGVyIGJ5IDIuCiAqCiAqIEByZXR1cm4gdGhlIHVpbnQxNi4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuZ2V0SW50MTYgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9ICgKICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCkgPDwgOCBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAxKSk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNCA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gKAogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkKSA8PCAxNiBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAxKSA8PCA4IF4KICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIDIpKTsKICB0aGlzLnJlYWQgKz0gMzsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgdWludDMyIGZyb20gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlIHJlYWQKICogcG9pbnRlciBieSA0LgogKgogKiBAcmV0dXJuIHRoZSB3b3JkLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQzMiA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gKAogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkKSA8PCAyNCBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAxKSA8PCAxNiBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAyKSA8PCA4IF4KICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIDMpKTsKICB0aGlzLnJlYWQgKz0gNDsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgdWludDE2IGZyb20gdGhpcyBidWZmZXIgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlIHJlYWQKICogcG9pbnRlciBieSAyLgogKgogKiBAcmV0dXJuIHRoZSB1aW50MTYuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEludDE2TGUgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9ICgKICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCkgXgogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkICsgMSkgPDwgOCk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNExlID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSAoCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQpIF4KICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIDEpIDw8IDggXgogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkICsgMikgPDwgMTYpOwogIHRoaXMucmVhZCArPSAzOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEdldHMgYSB1aW50MzIgZnJvbSB0aGlzIGJ1ZmZlciBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZAogKiBwb2ludGVyIGJ5IDQuCiAqCiAqIEByZXR1cm4gdGhlIHdvcmQuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEludDMyTGUgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9ICgKICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCkgXgogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkICsgMSkgPDwgOCBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAyKSA8PCAxNiBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAzKSA8PCAyNCk7CiAgdGhpcy5yZWFkICs9IDQ7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhbiBuLWJpdCBpbnRlZ2VyIGZyb20gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlCiAqIHJlYWQgcG9pbnRlciBieSBuLzguCiAqCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGUgaW50ZWdlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuZ2V0SW50ID0gZnVuY3Rpb24obikgewogIHZhciBydmFsID0gMDsKICBkbyB7CiAgICBydmFsID0gKHJ2YWwgPDwgOCkgKyB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQrKyk7CiAgICBuIC09IDg7CiAgfSB3aGlsZShuID4gMCk7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHNpZ25lZCBuLWJpdCBpbnRlZ2VyIGZyb20gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlciwgdXNpbmcKICogdHdvJ3MgY29tcGxlbWVudCwgYW5kIGFkdmFuY2VzIHRoZSByZWFkIHBvaW50ZXIgYnkgbi84LgogKgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhlIGludGVnZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldFNpZ25lZEludCA9IGZ1bmN0aW9uKG4pIHsKICB2YXIgeCA9IHRoaXMuZ2V0SW50KG4pOwogIHZhciBtYXggPSAyIDw8IChuIC0gMik7CiAgaWYoeCA+PSBtYXgpIHsKICAgIHggLT0gbWF4IDw8IDE7CiAgfQogIHJldHVybiB4Owp9OwoKLyoqCiAqIFJlYWRzIGJ5dGVzIG91dCBpbnRvIGEgVVRGLTggc3RyaW5nIGFuZCBjbGVhcnMgdGhlbSBmcm9tIHRoZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQsIHVuZGVmaW5lZCBvciBudWxsIGZvciBhbGwuCiAqCiAqIEByZXR1cm4gYSBVVEYtOCBzdHJpbmcgb2YgYnl0ZXMuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEJ5dGVzID0gZnVuY3Rpb24oY291bnQpIHsKICB2YXIgcnZhbDsKICBpZihjb3VudCkgewogICAgLy8gcmVhZCBjb3VudCBieXRlcwogICAgY291bnQgPSBNYXRoLm1pbih0aGlzLmxlbmd0aCgpLCBjb3VudCk7CiAgICBydmFsID0gdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCwgdGhpcy5yZWFkICsgY291bnQpOwogICAgdGhpcy5yZWFkICs9IGNvdW50OwogIH0gZWxzZSBpZihjb3VudCA9PT0gMCkgewogICAgcnZhbCA9ICcnOwogIH0gZWxzZSB7CiAgICAvLyByZWFkIGFsbCBieXRlcywgb3B0aW1pemUgdG8gb25seSBjb3B5IHdoZW4gbmVlZGVkCiAgICBydmFsID0gKHRoaXMucmVhZCA9PT0gMCkgPyB0aGlzLmRhdGEgOiB0aGlzLmRhdGEuc2xpY2UodGhpcy5yZWFkKTsKICAgIHRoaXMuY2xlYXIoKTsKICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIFVURi04IGVuY29kZWQgc3RyaW5nIG9mIHRoZSBieXRlcyBmcm9tIHRoaXMgYnVmZmVyIHdpdGhvdXQgbW9kaWZ5aW5nCiAqIHRoZSByZWFkIHBvaW50ZXIuCiAqCiAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGdldCwgb21pdCB0byBnZXQgYWxsLgogKgogKiBAcmV0dXJuIGEgc3RyaW5nIGZ1bGwgb2YgVVRGLTggZW5jb2RlZCBjaGFyYWN0ZXJzLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5ieXRlcyA9IGZ1bmN0aW9uKGNvdW50KSB7CiAgcmV0dXJuICh0eXBlb2YoY291bnQpID09PSAndW5kZWZpbmVkJyA/CiAgICB0aGlzLmRhdGEuc2xpY2UodGhpcy5yZWFkKSA6CiAgICB0aGlzLmRhdGEuc2xpY2UodGhpcy5yZWFkLCB0aGlzLnJlYWQgKyBjb3VudCkpOwp9OwoKLyoqCiAqIEdldHMgYSBieXRlIGF0IHRoZSBnaXZlbiBpbmRleCB3aXRob3V0IG1vZGlmeWluZyB0aGUgcmVhZCBwb2ludGVyLgogKgogKiBAcGFyYW0gaSB0aGUgYnl0ZSBpbmRleC4KICoKICogQHJldHVybiB0aGUgYnl0ZS4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIGkpOwp9OwoKLyoqCiAqIFB1dHMgYSBieXRlIGF0IHRoZSBnaXZlbiBpbmRleCB3aXRob3V0IG1vZGlmeWluZyB0aGUgcmVhZCBwb2ludGVyLgogKgogKiBAcGFyYW0gaSB0aGUgYnl0ZSBpbmRleC4KICogQHBhcmFtIGIgdGhlIGJ5dGUgdG8gcHV0LgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5zZXRBdCA9IGZ1bmN0aW9uKGksIGIpIHsKICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuc3Vic3RyKDAsIHRoaXMucmVhZCArIGkpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoYikgKwogICAgdGhpcy5kYXRhLnN1YnN0cih0aGlzLnJlYWQgKyBpICsgMSk7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogR2V0cyB0aGUgbGFzdCBieXRlIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSByZWFkIHBvaW50ZXIuCiAqCiAqIEByZXR1cm4gdGhlIGxhc3QgYnl0ZS4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUubGFzdCA9IGZ1bmN0aW9uKCkgewogIHJldHVybiB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLmRhdGEubGVuZ3RoIC0gMSk7Cn07CgovKioKICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGNvcHkuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbigpIHsKICB2YXIgYyA9IHV0aWwuY3JlYXRlQnVmZmVyKHRoaXMuZGF0YSk7CiAgYy5yZWFkID0gdGhpcy5yZWFkOwogIHJldHVybiBjOwp9OwoKLyoqCiAqIENvbXBhY3RzIHRoaXMgYnVmZmVyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7CiAgaWYodGhpcy5yZWFkID4gMCkgewogICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCk7CiAgICB0aGlzLnJlYWQgPSAwOwogIH0KICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBDbGVhcnMgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5kYXRhID0gJyc7CiAgdGhpcy5yZWFkID0gMDsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBTaG9ydGVucyB0aGlzIGJ1ZmZlciBieSB0cmltaW5nIGJ5dGVzIG9mZiBvZiB0aGUgZW5kIG9mIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiBieXRlcyB0byB0cmltIG9mZi4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihjb3VudCkgewogIHZhciBsZW4gPSBNYXRoLm1heCgwLCB0aGlzLmxlbmd0aCgpIC0gY291bnQpOwogIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5zdWJzdHIodGhpcy5yZWFkLCBsZW4pOwogIHRoaXMucmVhZCA9IDA7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogQ29udmVydHMgdGhpcyBidWZmZXIgdG8gYSBoZXhhZGVjaW1hbCBzdHJpbmcuCiAqCiAqIEByZXR1cm4gYSBoZXhhZGVjaW1hbCBzdHJpbmcuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSAnJzsKICBmb3IodmFyIGkgPSB0aGlzLnJlYWQ7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyArK2kpIHsKICAgIHZhciBiID0gdGhpcy5kYXRhLmNoYXJDb2RlQXQoaSk7CiAgICBpZihiIDwgMTYpIHsKICAgICAgcnZhbCArPSAnMCc7CiAgICB9CiAgICBydmFsICs9IGIudG9TdHJpbmcoMTYpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyB0aGlzIGJ1ZmZlciB0byBhIFVURi0xNiBzdHJpbmcgKHN0YW5kYXJkIEphdmFTY3JpcHQgc3RyaW5nKS4KICoKICogQHJldHVybiBhIFVURi0xNiBzdHJpbmcuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuIHV0aWwuZGVjb2RlVXRmOCh0aGlzLmJ5dGVzKCkpOwp9OwoKLyoqIEVuZCBCdWZmZXIgdy9CaW5hcnlTdHJpbmcgYmFja2luZyAqLwoKCi8qKiBCdWZmZXIgdy9VSW50OEFycmF5IGJhY2tpbmcgKi8KCi8qKgogKiBGSVhNRTogRXhwZXJpbWVudGFsLiBEbyBub3QgdXNlIHlldC4KICoKICogQ29uc3RydWN0b3IgZm9yIGFuIEFycmF5QnVmZmVyLWJhY2tlZCBieXRlIGJ1ZmZlci4KICoKICogVGhlIGJ1ZmZlciBtYXkgYmUgY29uc3RydWN0ZWQgZnJvbSBhIHN0cmluZywgYW4gQXJyYXlCdWZmZXIsIERhdGFWaWV3LCBvciBhCiAqIFR5cGVkQXJyYXkuCiAqCiAqIElmIGEgc3RyaW5nIGlzIGdpdmVuLCBpdHMgZW5jb2Rpbmcgc2hvdWxkIGJlIHByb3ZpZGVkIGFzIGFuIG9wdGlvbiwKICogb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byAnYmluYXJ5Jy4gQSAnYmluYXJ5JyBzdHJpbmcgaXMgZW5jb2RlZCBzdWNoCiAqIHRoYXQgZWFjaCBjaGFyYWN0ZXIgaXMgb25lIGJ5dGUgaW4gbGVuZ3RoIGFuZCBzaXplLgogKgogKiBJZiBhbiBBcnJheUJ1ZmZlciwgRGF0YVZpZXcsIG9yIFR5cGVkQXJyYXkgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgdXNlZAogKiAqZGlyZWN0bHkqIHdpdGhvdXQgYW55IGNvcHlpbmcuIE5vdGUgdGhhdCwgaWYgYSB3cml0ZSB0byB0aGUgYnVmZmVyIHJlcXVpcmVzCiAqIG1vcmUgc3BhY2UsIHRoZSBidWZmZXIgd2lsbCBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIEFycmF5QnVmZmVyIHRvCiAqIGFjY29tbW9kYXRlLiBUaGUgc3RhcnRpbmcgcmVhZCBhbmQgd3JpdGUgb2Zmc2V0cyBmb3IgdGhlIGJ1ZmZlciBtYXkgYmUKICogZ2l2ZW4gYXMgb3B0aW9ucy4KICoKICogQHBhcmFtIFtiXSB0aGUgaW5pdGlhbCBieXRlcyBmb3IgdGhpcyBidWZmZXIuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgW3JlYWRPZmZzZXRdIHRoZSBzdGFydGluZyByZWFkIG9mZnNldCB0byB1c2UgKGRlZmF1bHQ6IDApLgogKiAgICAgICAgICBbd3JpdGVPZmZzZXRdIHRoZSBzdGFydGluZyB3cml0ZSBvZmZzZXQgdG8gdXNlIChkZWZhdWx0OiB0aGUKICogICAgICAgICAgICBsZW5ndGggb2YgdGhlIGZpcnN0IHBhcmFtZXRlcikuCiAqICAgICAgICAgIFtncm93U2l6ZV0gdGhlIG1pbmltdW0gYW1vdW50LCBpbiBieXRlcywgdG8gZ3JvdyB0aGUgYnVmZmVyIGJ5IHRvCiAqICAgICAgICAgICAgYWNjb21tb2RhdGUgd3JpdGVzIChkZWZhdWx0OiAxMDI0KS4KICogICAgICAgICAgW2VuY29kaW5nXSB0aGUgZW5jb2RpbmcgKCdiaW5hcnknLCAndXRmOCcsICd1dGYxNicsICdoZXgnKSBmb3IgdGhlCiAqICAgICAgICAgICAgZmlyc3QgcGFyYW1ldGVyLCBpZiBpdCBpcyBhIHN0cmluZyAoZGVmYXVsdDogJ2JpbmFyeScpLgogKi8KZnVuY3Rpb24gRGF0YUJ1ZmZlcihiLCBvcHRpb25zKSB7CiAgLy8gZGVmYXVsdCBvcHRpb25zCiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgogIC8vIHBvaW50ZXJzIGZvciByZWFkIGZyb20vd3JpdGUgdG8gYnVmZmVyCiAgdGhpcy5yZWFkID0gb3B0aW9ucy5yZWFkT2Zmc2V0IHx8IDA7CiAgdGhpcy5ncm93U2l6ZSA9IG9wdGlvbnMuZ3Jvd1NpemUgfHwgMTAyNDsKCiAgdmFyIGlzQXJyYXlCdWZmZXIgPSB1dGlsLmlzQXJyYXlCdWZmZXIoYik7CiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID0gdXRpbC5pc0FycmF5QnVmZmVyVmlldyhiKTsKICBpZihpc0FycmF5QnVmZmVyIHx8IGlzQXJyYXlCdWZmZXJWaWV3KSB7CiAgICAvLyB1c2UgQXJyYXlCdWZmZXIgZGlyZWN0bHkKICAgIGlmKGlzQXJyYXlCdWZmZXIpIHsKICAgICAgdGhpcy5kYXRhID0gbmV3IERhdGFWaWV3KGIpOwogICAgfSBlbHNlIHsKICAgICAgLy8gVE9ETzogYWRqdXN0IHJlYWQvd3JpdGUgb2Zmc2V0IGJhc2VkIG9uIHRoZSB0eXBlIG9mIHZpZXcKICAgICAgLy8gb3Igc3BlY2lmeSB0aGF0IHRoaXMgbXVzdCBiZSBkb25lIGluIHRoZSBvcHRpb25zIC4uLiB0aGF0IHRoZQogICAgICAvLyBvZmZzZXRzIGFyZSBieXRlLWJhc2VkCiAgICAgIHRoaXMuZGF0YSA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpOwogICAgfQogICAgdGhpcy53cml0ZSA9ICgnd3JpdGVPZmZzZXQnIGluIG9wdGlvbnMgPwogICAgICBvcHRpb25zLndyaXRlT2Zmc2V0IDogdGhpcy5kYXRhLmJ5dGVMZW5ndGgpOwogICAgcmV0dXJuOwogIH0KCiAgLy8gaW5pdGlhbGl6ZSB0byBlbXB0eSBhcnJheSBidWZmZXIgYW5kIGFkZCBhbnkgZ2l2ZW4gYnl0ZXMgdXNpbmcgcHV0Qnl0ZXMKICB0aGlzLmRhdGEgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDApKTsKICB0aGlzLndyaXRlID0gMDsKCiAgaWYoYiAhPT0gbnVsbCAmJiBiICE9PSB1bmRlZmluZWQpIHsKICAgIHRoaXMucHV0Qnl0ZXMoYik7CiAgfQoKICBpZignd3JpdGVPZmZzZXQnIGluIG9wdGlvbnMpIHsKICAgIHRoaXMud3JpdGUgPSBvcHRpb25zLndyaXRlT2Zmc2V0OwogIH0KfQp1dGlsLkRhdGFCdWZmZXIgPSBEYXRhQnVmZmVyOwoKLyoqCiAqIEdldHMgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsKICByZXR1cm4gdGhpcy53cml0ZSAtIHRoaXMucmVhZDsKfTsKCi8qKgogKiBHZXRzIHdoZXRoZXIgb3Igbm90IHRoaXMgYnVmZmVyIGlzIGVtcHR5LgogKgogKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBidWZmZXIgaXMgZW1wdHksIGZhbHNlIGlmIG5vdC4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uKCkgewogIHJldHVybiB0aGlzLmxlbmd0aCgpIDw9IDA7Cn07CgovKioKICogRW5zdXJlcyB0aGlzIGJ1ZmZlciBoYXMgZW5vdWdoIGVtcHR5IHNwYWNlIHRvIGFjY29tbW9kYXRlIHRoZSBnaXZlbiBudW1iZXIKICogb2YgYnl0ZXMuIEFuIG9wdGlvbmFsIHBhcmFtZXRlciBtYXkgYmUgZ2l2ZW4gdGhhdCBpbmRpY2F0ZXMgYSBtaW5pbXVtCiAqIGFtb3VudCB0byBncm93IHRoZSBidWZmZXIgaWYgbmVjZXNzYXJ5LiBJZiB0aGUgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiwKICogdGhlIGJ1ZmZlciB3aWxsIGJlIGdyb3duIGJ5IHNvbWUgcHJldmlvdXNseS1zcGVjaWZpZWQgZGVmYXVsdCBhbW91bnQKICogb3IgaGV1cmlzdGljLgogKgogKiBAcGFyYW0gYW1vdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYWNjb21tb2RhdGUuCiAqIEBwYXJhbSBbZ3Jvd1NpemVdIHRoZSBtaW5pbXVtIGFtb3VudCwgaW4gYnl0ZXMsIHRvIGdyb3cgdGhlIGJ1ZmZlciBieSBpZgogKiAgICAgICAgICBuZWNlc3NhcnkuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmFjY29tbW9kYXRlID0gZnVuY3Rpb24oYW1vdW50LCBncm93U2l6ZSkgewogIGlmKHRoaXMubGVuZ3RoKCkgPj0gYW1vdW50KSB7CiAgICByZXR1cm4gdGhpczsKICB9CiAgZ3Jvd1NpemUgPSBNYXRoLm1heChncm93U2l6ZSB8fCB0aGlzLmdyb3dTaXplLCBhbW91bnQpOwoKICAvLyBncm93IGJ1ZmZlcgogIHZhciBzcmMgPSBuZXcgVWludDhBcnJheSgKICAgIHRoaXMuZGF0YS5idWZmZXIsIHRoaXMuZGF0YS5ieXRlT2Zmc2V0LCB0aGlzLmRhdGEuYnl0ZUxlbmd0aCk7CiAgdmFyIGRzdCA9IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKyBncm93U2l6ZSk7CiAgZHN0LnNldChzcmMpOwogIHRoaXMuZGF0YSA9IG5ldyBEYXRhVmlldyhkc3QuYnVmZmVyKTsKCiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIGJ5dGUgaW4gdGhpcyBidWZmZXIuCiAqCiAqIEBwYXJhbSBiIHRoZSBieXRlIHRvIHB1dC4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0Qnl0ZSA9IGZ1bmN0aW9uKGIpIHsKICB0aGlzLmFjY29tbW9kYXRlKDEpOwogIHRoaXMuZGF0YS5zZXRVaW50OCh0aGlzLndyaXRlKyssIGIpOwogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIFB1dHMgYSBieXRlIGluIHRoaXMgYnVmZmVyIE4gdGltZXMuCiAqCiAqIEBwYXJhbSBiIHRoZSBieXRlIHRvIHB1dC4KICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBieXRlcyBvZiB2YWx1ZSBiIHRvIHB1dC4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZmlsbFdpdGhCeXRlID0gZnVuY3Rpb24oYiwgbikgewogIHRoaXMuYWNjb21tb2RhdGUobik7CiAgZm9yKHZhciBpID0gMDsgaSA8IG47ICsraSkgewogICAgdGhpcy5kYXRhLnNldFVpbnQ4KGIpOwogIH0KICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGJ5dGVzIGluIHRoaXMgYnVmZmVyLiBUaGUgYnl0ZXMgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nLCBhbgogKiBBcnJheUJ1ZmZlciwgYSBEYXRhVmlldywgb3IgYSBUeXBlZEFycmF5LgogKgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGVzIHRvIHB1dC4KICogQHBhcmFtIFtlbmNvZGluZ10gdGhlIGVuY29kaW5nIGZvciB0aGUgZmlyc3QgcGFyYW1ldGVyICgnYmluYXJ5JywgJ3V0ZjgnLAogKiAgICAgICAgICAndXRmMTYnLCAnaGV4JyksIGlmIGl0IGlzIGEgc3RyaW5nIChkZWZhdWx0OiAnYmluYXJ5JykuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEJ5dGVzID0gZnVuY3Rpb24oYnl0ZXMsIGVuY29kaW5nKSB7CiAgaWYodXRpbC5pc0FycmF5QnVmZmVyVmlldyhieXRlcykpIHsKICAgIHZhciBzcmMgPSBuZXcgVWludDhBcnJheShieXRlcy5idWZmZXIsIGJ5dGVzLmJ5dGVPZmZzZXQsIGJ5dGVzLmJ5dGVMZW5ndGgpOwogICAgdmFyIGxlbiA9IHNyYy5ieXRlTGVuZ3RoIC0gc3JjLmJ5dGVPZmZzZXQ7CiAgICB0aGlzLmFjY29tbW9kYXRlKGxlbik7CiAgICB2YXIgZHN0ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLmJ1ZmZlciwgdGhpcy53cml0ZSk7CiAgICBkc3Quc2V0KHNyYyk7CiAgICB0aGlzLndyaXRlICs9IGxlbjsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgaWYodXRpbC5pc0FycmF5QnVmZmVyKGJ5dGVzKSkgewogICAgdmFyIHNyYyA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTsKICAgIHRoaXMuYWNjb21tb2RhdGUoc3JjLmJ5dGVMZW5ndGgpOwogICAgdmFyIGRzdCA9IG5ldyBVaW50OEFycmF5KHRoaXMuZGF0YS5idWZmZXIpOwogICAgZHN0LnNldChzcmMsIHRoaXMud3JpdGUpOwogICAgdGhpcy53cml0ZSArPSBzcmMuYnl0ZUxlbmd0aDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLy8gYnl0ZXMgaXMgYSB1dGlsLkRhdGFCdWZmZXIgb3IgZXF1aXZhbGVudAogIGlmKGJ5dGVzIGluc3RhbmNlb2YgdXRpbC5EYXRhQnVmZmVyIHx8CiAgICAodHlwZW9mIGJ5dGVzID09PSAnb2JqZWN0JyAmJgogICAgdHlwZW9mIGJ5dGVzLnJlYWQgPT09ICdudW1iZXInICYmIHR5cGVvZiBieXRlcy53cml0ZSA9PT0gJ251bWJlcicgJiYKICAgIHV0aWwuaXNBcnJheUJ1ZmZlclZpZXcoYnl0ZXMuZGF0YSkpKSB7CiAgICB2YXIgc3JjID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMuZGF0YS5ieXRlTGVuZ3RoLCBieXRlcy5yZWFkLCBieXRlcy5sZW5ndGgoKSk7CiAgICB0aGlzLmFjY29tbW9kYXRlKHNyYy5ieXRlTGVuZ3RoKTsKICAgIHZhciBkc3QgPSBuZXcgVWludDhBcnJheShieXRlcy5kYXRhLmJ5dGVMZW5ndGgsIHRoaXMud3JpdGUpOwogICAgZHN0LnNldChzcmMpOwogICAgdGhpcy53cml0ZSArPSBzcmMuYnl0ZUxlbmd0aDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgaWYoYnl0ZXMgaW5zdGFuY2VvZiB1dGlsLkJ5dGVTdHJpbmdCdWZmZXIpIHsKICAgIC8vIGNvcHkgYmluYXJ5IHN0cmluZyBhbmQgcHJvY2VzcyBhcyB0aGUgc2FtZSBhcyBhIHN0cmluZyBwYXJhbWV0ZXIgYmVsb3cKICAgIGJ5dGVzID0gYnl0ZXMuZGF0YTsKICAgIGVuY29kaW5nID0gJ2JpbmFyeSc7CiAgfQoKICAvLyBzdHJpbmcgY29udmVyc2lvbgogIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgJ2JpbmFyeSc7CiAgaWYodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykgewogICAgdmFyIHZpZXc7CgogICAgLy8gZGVjb2RlIGZyb20gc3RyaW5nCiAgICBpZihlbmNvZGluZyA9PT0gJ2hleCcpIHsKICAgICAgdGhpcy5hY2NvbW1vZGF0ZShNYXRoLmNlaWwoYnl0ZXMubGVuZ3RoIC8gMikpOwogICAgICB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLmJ1ZmZlciwgdGhpcy53cml0ZSk7CiAgICAgIHRoaXMud3JpdGUgKz0gdXRpbC5iaW5hcnkuaGV4LmRlY29kZShieXRlcywgdmlldywgdGhpcy53cml0ZSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQogICAgaWYoZW5jb2RpbmcgPT09ICdiYXNlNjQnKSB7CiAgICAgIHRoaXMuYWNjb21tb2RhdGUoTWF0aC5jZWlsKGJ5dGVzLmxlbmd0aCAvIDQpICogMyk7CiAgICAgIHZpZXcgPSBuZXcgVWludDhBcnJheSh0aGlzLmRhdGEuYnVmZmVyLCB0aGlzLndyaXRlKTsKICAgICAgdGhpcy53cml0ZSArPSB1dGlsLmJpbmFyeS5iYXNlNjQuZGVjb2RlKGJ5dGVzLCB2aWV3LCB0aGlzLndyaXRlKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgLy8gZW5jb2RlIHRleHQgYXMgVVRGLTggYnl0ZXMKICAgIGlmKGVuY29kaW5nID09PSAndXRmOCcpIHsKICAgICAgLy8gZW5jb2RlIGFzIFVURi04IHRoZW4gZGVjb2RlIHN0cmluZyBhcyByYXcgYmluYXJ5CiAgICAgIGJ5dGVzID0gdXRpbC5lbmNvZGVVdGY4KGJ5dGVzKTsKICAgICAgZW5jb2RpbmcgPSAnYmluYXJ5JzsKICAgIH0KCiAgICAvLyBkZWNvZGUgc3RyaW5nIGFzIHJhdyBiaW5hcnkKICAgIGlmKGVuY29kaW5nID09PSAnYmluYXJ5JyB8fCBlbmNvZGluZyA9PT0gJ3JhdycpIHsKICAgICAgLy8gb25lIGJ5dGUgcGVyIGNoYXJhY3RlcgogICAgICB0aGlzLmFjY29tbW9kYXRlKGJ5dGVzLmxlbmd0aCk7CiAgICAgIHZpZXcgPSBuZXcgVWludDhBcnJheSh0aGlzLmRhdGEuYnVmZmVyLCB0aGlzLndyaXRlKTsKICAgICAgdGhpcy53cml0ZSArPSB1dGlsLmJpbmFyeS5yYXcuZGVjb2RlKHZpZXcpOwogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgICAvLyBlbmNvZGUgdGV4dCBhcyBVVEYtMTYgYnl0ZXMKICAgIGlmKGVuY29kaW5nID09PSAndXRmMTYnKSB7CiAgICAgIC8vIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyCiAgICAgIHRoaXMuYWNjb21tb2RhdGUoYnl0ZXMubGVuZ3RoICogMik7CiAgICAgIHZpZXcgPSBuZXcgVWludDE2QXJyYXkodGhpcy5kYXRhLmJ1ZmZlciwgdGhpcy53cml0ZSk7CiAgICAgIHRoaXMud3JpdGUgKz0gdXRpbC50ZXh0LnV0ZjE2LmVuY29kZSh2aWV3KTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpOwogIH0KCiAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgcGFyYW1ldGVyOiAnICsgYnl0ZXMpOwp9OwoKLyoqCiAqIFB1dHMgdGhlIGdpdmVuIGJ1ZmZlciBpbnRvIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZXIgdG8gcHV0IGludG8gdGhpcyBvbmUuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEJ1ZmZlciA9IGZ1bmN0aW9uKGJ1ZmZlcikgewogIHRoaXMucHV0Qnl0ZXMoYnVmZmVyKTsKICBidWZmZXIuY2xlYXIoKTsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGEgc3RyaW5nIGludG8gdGhpcyBidWZmZXIuCiAqCiAqIEBwYXJhbSBzdHIgdGhlIHN0cmluZyB0byBwdXQuCiAqIEBwYXJhbSBbZW5jb2RpbmddIHRoZSBlbmNvZGluZyBmb3IgdGhlIHN0cmluZyAoZGVmYXVsdDogJ3V0ZjE2JykuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dFN0cmluZyA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKHN0ciwgJ3V0ZjE2Jyk7Cn07CgovKioKICogUHV0cyBhIDE2LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAxNi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MTYgPSBmdW5jdGlvbihpKSB7CiAgdGhpcy5hY2NvbW1vZGF0ZSgyKTsKICB0aGlzLmRhdGEuc2V0SW50MTYodGhpcy53cml0ZSwgaSk7CiAgdGhpcy53cml0ZSArPSAyOwogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIFB1dHMgYSAyNC1iaXQgaW50ZWdlciBpbiB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyLgogKgogKiBAcGFyYW0gaSB0aGUgMjQtYml0IGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEludDI0ID0gZnVuY3Rpb24oaSkgewogIHRoaXMuYWNjb21tb2RhdGUoMyk7CiAgdGhpcy5kYXRhLnNldEludDE2KHRoaXMud3JpdGUsIGkgPj4gOCAmIDB4RkZGRik7CiAgdGhpcy5kYXRhLnNldEludDgodGhpcy53cml0ZSwgaSA+PiAxNiAmIDB4RkYpOwogIHRoaXMud3JpdGUgKz0gMzsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGEgMzItYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIDMyLWJpdCBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5wdXRJbnQzMiA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDQpOwogIHRoaXMuZGF0YS5zZXRJbnQzMih0aGlzLndyaXRlLCBpKTsKICB0aGlzLndyaXRlICs9IDQ7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIDE2LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAxNi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MTZMZSA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDIpOwogIHRoaXMuZGF0YS5zZXRJbnQxNih0aGlzLndyaXRlLCBpLCB0cnVlKTsKICB0aGlzLndyaXRlICs9IDI7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIDI0LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAyNC1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MjRMZSA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDMpOwogIHRoaXMuZGF0YS5zZXRJbnQ4KHRoaXMud3JpdGUsIGkgPj4gMTYgJiAweEZGKTsKICB0aGlzLmRhdGEuc2V0SW50MTYodGhpcy53cml0ZSwgaSA+PiA4ICYgMHhGRkZGLCB0cnVlKTsKICB0aGlzLndyaXRlICs9IDM7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIDMyLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAzMi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MzJMZSA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDQpOwogIHRoaXMuZGF0YS5zZXRJbnQzMih0aGlzLndyaXRlLCBpLCB0cnVlKTsKICB0aGlzLndyaXRlICs9IDQ7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhbiBuLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSBuLWJpdCBpbnRlZ2VyLgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEludCA9IGZ1bmN0aW9uKGksIG4pIHsKICB0aGlzLmFjY29tbW9kYXRlKG4gLyA4KTsKICBkbyB7CiAgICBuIC09IDg7CiAgICB0aGlzLmRhdGEuc2V0SW50OCh0aGlzLndyaXRlKyssIChpID4+IG4pICYgMHhGRik7CiAgfSB3aGlsZShuID4gMCk7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIHNpZ25lZCBuLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuIFR3bydzCiAqIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gaXMgdXNlZC4KICoKICogQHBhcmFtIGkgdGhlIG4tYml0IGludGVnZXIuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0U2lnbmVkSW50ID0gZnVuY3Rpb24oaSwgbikgewogIHRoaXMuYWNjb21tb2RhdGUobiAvIDgpOwogIGlmKGkgPCAwKSB7CiAgICBpICs9IDIgPDwgKG4gLSAxKTsKICB9CiAgcmV0dXJuIHRoaXMucHV0SW50KGksIG4pOwp9OwoKLyoqCiAqIEdldHMgYSBieXRlIGZyb20gdGhpcyBidWZmZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkIHBvaW50ZXIgYnkgMS4KICoKICogQHJldHVybiB0aGUgYnl0ZS4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0Qnl0ZSA9IGZ1bmN0aW9uKCkgewogIHJldHVybiB0aGlzLmRhdGEuZ2V0SW50OCh0aGlzLnJlYWQrKyk7Cn07CgovKioKICogR2V0cyBhIHVpbnQxNiBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMi4KICoKICogQHJldHVybiB0aGUgdWludDE2LgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQxNiA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gdGhpcy5kYXRhLmdldEludDE2KHRoaXMucmVhZCk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNCA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gKAogICAgdGhpcy5kYXRhLmdldEludDE2KHRoaXMucmVhZCkgPDwgOCBeCiAgICB0aGlzLmRhdGEuZ2V0SW50OCh0aGlzLnJlYWQgKyAyKSk7CiAgdGhpcy5yZWFkICs9IDM7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQzMiBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgNC4KICoKICogQHJldHVybiB0aGUgd29yZC4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0SW50MzIgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9IHRoaXMuZGF0YS5nZXRJbnQzMih0aGlzLnJlYWQpOwogIHRoaXMucmVhZCArPSA0OwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEdldHMgYSB1aW50MTYgZnJvbSB0aGlzIGJ1ZmZlciBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZAogKiBwb2ludGVyIGJ5IDIuCiAqCiAqIEByZXR1cm4gdGhlIHVpbnQxNi4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0SW50MTZMZSA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gdGhpcy5kYXRhLmdldEludDE2KHRoaXMucmVhZCwgdHJ1ZSk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNExlID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSAoCiAgICB0aGlzLmRhdGEuZ2V0SW50OCh0aGlzLnJlYWQpIF4KICAgIHRoaXMuZGF0YS5nZXRJbnQxNih0aGlzLnJlYWQgKyAxLCB0cnVlKSA8PCA4KTsKICB0aGlzLnJlYWQgKz0gMzsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgdWludDMyIGZyb20gdGhpcyBidWZmZXIgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlIHJlYWQKICogcG9pbnRlciBieSA0LgogKgogKiBAcmV0dXJuIHRoZSB3b3JkLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQzMkxlID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSB0aGlzLmRhdGEuZ2V0SW50MzIodGhpcy5yZWFkLCB0cnVlKTsKICB0aGlzLnJlYWQgKz0gNDsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGFuIG4tYml0IGludGVnZXIgZnJvbSB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUKICogcmVhZCBwb2ludGVyIGJ5IG4vOC4KICoKICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoZSBpbnRlZ2VyLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQgPSBmdW5jdGlvbihuKSB7CiAgdmFyIHJ2YWwgPSAwOwogIGRvIHsKICAgIHJ2YWwgPSAocnZhbCA8PCA4KSArIHRoaXMuZGF0YS5nZXRJbnQ4KHRoaXMucmVhZCsrKTsKICAgIG4gLT0gODsKICB9IHdoaWxlKG4gPiAwKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgc2lnbmVkIG4tYml0IGludGVnZXIgZnJvbSB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyLCB1c2luZwogKiB0d28ncyBjb21wbGVtZW50LCBhbmQgYWR2YW5jZXMgdGhlIHJlYWQgcG9pbnRlciBieSBuLzguCiAqCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGUgaW50ZWdlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0U2lnbmVkSW50ID0gZnVuY3Rpb24obikgewogIHZhciB4ID0gdGhpcy5nZXRJbnQobik7CiAgdmFyIG1heCA9IDIgPDwgKG4gLSAyKTsKICBpZih4ID49IG1heCkgewogICAgeCAtPSBtYXggPDwgMTsKICB9CiAgcmV0dXJuIHg7Cn07CgovKioKICogUmVhZHMgYnl0ZXMgb3V0IGludG8gYSBVVEYtOCBzdHJpbmcgYW5kIGNsZWFycyB0aGVtIGZyb20gdGhlIGJ1ZmZlci4KICoKICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCwgdW5kZWZpbmVkIG9yIG51bGwgZm9yIGFsbC4KICoKICogQHJldHVybiBhIFVURi04IHN0cmluZyBvZiBieXRlcy4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0Qnl0ZXMgPSBmdW5jdGlvbihjb3VudCkgewogIC8vIFRPRE86IGRlcHJlY2F0ZSB0aGlzIG1ldGhvZCwgaXQgaXMgcG9vcmx5IG5hbWVkIGFuZAogIC8vIHRoaXMudG9TdHJpbmcoJ2JpbmFyeScpIHJlcGxhY2VzIGl0CiAgLy8gYWRkIGEgdG9UeXBlZEFycmF5KCkvdG9BcnJheUJ1ZmZlcigpIGZ1bmN0aW9uCiAgdmFyIHJ2YWw7CiAgaWYoY291bnQpIHsKICAgIC8vIHJlYWQgY291bnQgYnl0ZXMKICAgIGNvdW50ID0gTWF0aC5taW4odGhpcy5sZW5ndGgoKSwgY291bnQpOwogICAgcnZhbCA9IHRoaXMuZGF0YS5zbGljZSh0aGlzLnJlYWQsIHRoaXMucmVhZCArIGNvdW50KTsKICAgIHRoaXMucmVhZCArPSBjb3VudDsKICB9IGVsc2UgaWYoY291bnQgPT09IDApIHsKICAgIHJ2YWwgPSAnJzsKICB9IGVsc2UgewogICAgLy8gcmVhZCBhbGwgYnl0ZXMsIG9wdGltaXplIHRvIG9ubHkgY29weSB3aGVuIG5lZWRlZAogICAgcnZhbCA9ICh0aGlzLnJlYWQgPT09IDApID8gdGhpcy5kYXRhIDogdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCk7CiAgICB0aGlzLmNsZWFyKCk7CiAgfQogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEdldHMgYSBVVEYtOCBlbmNvZGVkIHN0cmluZyBvZiB0aGUgYnl0ZXMgZnJvbSB0aGlzIGJ1ZmZlciB3aXRob3V0IG1vZGlmeWluZwogKiB0aGUgcmVhZCBwb2ludGVyLgogKgogKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiBieXRlcyB0byBnZXQsIG9taXQgdG8gZ2V0IGFsbC4KICoKICogQHJldHVybiBhIHN0cmluZyBmdWxsIG9mIFVURi04IGVuY29kZWQgY2hhcmFjdGVycy4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuYnl0ZXMgPSBmdW5jdGlvbihjb3VudCkgewogIC8vIFRPRE86IGRlcHJlY2F0ZSB0aGlzIG1ldGhvZCwgaXQgaXMgcG9vcmx5IG5hbWVkLCBhZGQgImdldFN0cmluZygpIgogIHJldHVybiAodHlwZW9mKGNvdW50KSA9PT0gJ3VuZGVmaW5lZCcgPwogICAgdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCkgOgogICAgdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCwgdGhpcy5yZWFkICsgY291bnQpKTsKfTsKCi8qKgogKiBHZXRzIGEgYnl0ZSBhdCB0aGUgZ2l2ZW4gaW5kZXggd2l0aG91dCBtb2RpZnlpbmcgdGhlIHJlYWQgcG9pbnRlci4KICoKICogQHBhcmFtIGkgdGhlIGJ5dGUgaW5kZXguCiAqCiAqIEByZXR1cm4gdGhlIGJ5dGUuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24oaSkgewogIHJldHVybiB0aGlzLmRhdGEuZ2V0VWludDgodGhpcy5yZWFkICsgaSk7Cn07CgovKioKICogUHV0cyBhIGJ5dGUgYXQgdGhlIGdpdmVuIGluZGV4IHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSByZWFkIHBvaW50ZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSBieXRlIGluZGV4LgogKiBAcGFyYW0gYiB0aGUgYnl0ZSB0byBwdXQuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnNldEF0ID0gZnVuY3Rpb24oaSwgYikgewogIHRoaXMuZGF0YS5zZXRVaW50OChpLCBiKTsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBHZXRzIHRoZSBsYXN0IGJ5dGUgd2l0aG91dCBtb2RpZnlpbmcgdGhlIHJlYWQgcG9pbnRlci4KICoKICogQHJldHVybiB0aGUgbGFzdCBieXRlLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5sYXN0ID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuIHRoaXMuZGF0YS5nZXRVaW50OCh0aGlzLndyaXRlIC0gMSk7Cn07CgovKioKICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGNvcHkuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gbmV3IHV0aWwuRGF0YUJ1ZmZlcih0aGlzKTsKfTsKCi8qKgogKiBDb21wYWN0cyB0aGlzIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkgewogIGlmKHRoaXMucmVhZCA+IDApIHsKICAgIHZhciBzcmMgPSBuZXcgVWludDhBcnJheSh0aGlzLmRhdGEuYnVmZmVyLCB0aGlzLnJlYWQpOwogICAgdmFyIGRzdCA9IG5ldyBVaW50OEFycmF5KHNyYy5ieXRlTGVuZ3RoKTsKICAgIGRzdC5zZXQoc3JjKTsKICAgIHRoaXMuZGF0YSA9IG5ldyBEYXRhVmlldyhkc3QpOwogICAgdGhpcy53cml0ZSAtPSB0aGlzLnJlYWQ7CiAgICB0aGlzLnJlYWQgPSAwOwogIH0KICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBDbGVhcnMgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5kYXRhID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigwKSk7CiAgdGhpcy5yZWFkID0gdGhpcy53cml0ZSA9IDA7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogU2hvcnRlbnMgdGhpcyBidWZmZXIgYnkgdHJpbWluZyBieXRlcyBvZmYgb2YgdGhlIGVuZCBvZiB0aGlzIGJ1ZmZlci4KICoKICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gdHJpbSBvZmYuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24oY291bnQpIHsKICB0aGlzLndyaXRlID0gTWF0aC5tYXgoMCwgdGhpcy5sZW5ndGgoKSAtIGNvdW50KTsKICB0aGlzLnJlYWQgPSBNYXRoLm1pbih0aGlzLnJlYWQsIHRoaXMud3JpdGUpOwogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIENvbnZlcnRzIHRoaXMgYnVmZmVyIHRvIGEgaGV4YWRlY2ltYWwgc3RyaW5nLgogKgogKiBAcmV0dXJuIGEgaGV4YWRlY2ltYWwgc3RyaW5nLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS50b0hleCA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gJyc7CiAgZm9yKHZhciBpID0gdGhpcy5yZWFkOyBpIDwgdGhpcy5kYXRhLmJ5dGVMZW5ndGg7ICsraSkgewogICAgdmFyIGIgPSB0aGlzLmRhdGEuZ2V0VWludDgoaSk7CiAgICBpZihiIDwgMTYpIHsKICAgICAgcnZhbCArPSAnMCc7CiAgICB9CiAgICBydmFsICs9IGIudG9TdHJpbmcoMTYpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyB0aGlzIGJ1ZmZlciB0byBhIHN0cmluZywgdXNpbmcgdGhlIGdpdmVuIGVuY29kaW5nLiBJZiBubwogKiBlbmNvZGluZyBpcyBnaXZlbiwgJ3V0ZjgnIChVVEYtOCkgaXMgdXNlZC4KICoKICogQHBhcmFtIFtlbmNvZGluZ10gdGhlIGVuY29kaW5nIHRvIHVzZTogJ2JpbmFyeScsICd1dGY4JywgJ3V0ZjE2JywgJ2hleCcsCiAqICAgICAgICAgICdiYXNlNjQnIChkZWZhdWx0OiAndXRmOCcpLgogKgogKiBAcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbihlbmNvZGluZykgewogIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLCB0aGlzLnJlYWQsIHRoaXMubGVuZ3RoKCkpOwogIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgJ3V0ZjgnOwoKICAvLyBlbmNvZGUgdG8gc3RyaW5nCiAgaWYoZW5jb2RpbmcgPT09ICdiaW5hcnknIHx8IGVuY29kaW5nID09PSAncmF3JykgewogICAgcmV0dXJuIHV0aWwuYmluYXJ5LnJhdy5lbmNvZGUodmlldyk7CiAgfQogIGlmKGVuY29kaW5nID09PSAnaGV4JykgewogICAgcmV0dXJuIHV0aWwuYmluYXJ5LmhleC5lbmNvZGUodmlldyk7CiAgfQogIGlmKGVuY29kaW5nID09PSAnYmFzZTY0JykgewogICAgcmV0dXJuIHV0aWwuYmluYXJ5LmJhc2U2NC5lbmNvZGUodmlldyk7CiAgfQoKICAvLyBkZWNvZGUgdG8gdGV4dAogIGlmKGVuY29kaW5nID09PSAndXRmOCcpIHsKICAgIHJldHVybiB1dGlsLnRleHQudXRmOC5kZWNvZGUodmlldyk7CiAgfQogIGlmKGVuY29kaW5nID09PSAndXRmMTYnKSB7CiAgICByZXR1cm4gdXRpbC50ZXh0LnV0ZjE2LmRlY29kZSh2aWV3KTsKICB9CgogIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZzogJyArIGVuY29kaW5nKTsKfTsKCi8qKiBFbmQgQnVmZmVyIHcvVUludDhBcnJheSBiYWNraW5nICovCgoKLyoqCiAqIENyZWF0ZXMgYSBidWZmZXIgdGhhdCBzdG9yZXMgYnl0ZXMuIEEgdmFsdWUgbWF5IGJlIGdpdmVuIHRvIHB1dCBpbnRvIHRoZQogKiBidWZmZXIgdGhhdCBpcyBlaXRoZXIgYSBzdHJpbmcgb2YgYnl0ZXMgb3IgYSBVVEYtMTYgc3RyaW5nIHRoYXQgd2lsbAogKiBiZSBlbmNvZGVkIHVzaW5nIFVURi04ICh0byBkbyB0aGUgbGF0dGVyLCBzcGVjaWZ5ICd1dGY4JyBhcyB0aGUgZW5jb2RpbmcpLgogKgogKiBAcGFyYW0gW2lucHV0XSB0aGUgYnl0ZXMgdG8gd3JhcCAoYXMgYSBzdHJpbmcpIG9yIGEgVVRGLTE2IHN0cmluZyB0byBlbmNvZGUKICogICAgICAgICAgYXMgVVRGLTguCiAqIEBwYXJhbSBbZW5jb2RpbmddIChkZWZhdWx0OiAncmF3Jywgb3RoZXI6ICd1dGY4JykuCiAqLwp1dGlsLmNyZWF0ZUJ1ZmZlciA9IGZ1bmN0aW9uKGlucHV0LCBlbmNvZGluZykgewogIC8vIFRPRE86IGRlcHJlY2F0ZSwgdXNlIG5ldyBCeXRlQnVmZmVyKCkgaW5zdGVhZAogIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgJ3Jhdyc7CiAgaWYoaW5wdXQgIT09IHVuZGVmaW5lZCAmJiBlbmNvZGluZyA9PT0gJ3V0ZjgnKSB7CiAgICBpbnB1dCA9IHV0aWwuZW5jb2RlVXRmOChpbnB1dCk7CiAgfQogIHJldHVybiBuZXcgdXRpbC5CeXRlQnVmZmVyKGlucHV0KTsKfTsKCi8qKgogKiBGaWxscyBhIHN0cmluZyB3aXRoIGEgcGFydGljdWxhciB2YWx1ZS4gSWYgeW91IHdhbnQgdGhlIHN0cmluZyB0byBiZSBhIGJ5dGUKICogc3RyaW5nLCBwYXNzIGluIFN0cmluZy5mcm9tQ2hhckNvZGUodGhlQnl0ZSkuCiAqCiAqIEBwYXJhbSBjIHRoZSBjaGFyYWN0ZXIgdG8gZmlsbCB0aGUgc3RyaW5nIHdpdGgsIHVzZSBTdHJpbmcuZnJvbUNoYXJDb2RlCiAqICAgICAgICAgIHRvIGZpbGwgdGhlIHN0cmluZyB3aXRoIGEgYnl0ZSB2YWx1ZS4KICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHZhbHVlIGMgdG8gZmlsbCB3aXRoLgogKgogKiBAcmV0dXJuIHRoZSBmaWxsZWQgc3RyaW5nLgogKi8KdXRpbC5maWxsU3RyaW5nID0gZnVuY3Rpb24oYywgbikgewogIHZhciBzID0gJyc7CiAgd2hpbGUobiA+IDApIHsKICAgIGlmKG4gJiAxKSB7CiAgICAgIHMgKz0gYzsKICAgIH0KICAgIG4gPj4+PSAxOwogICAgaWYobiA+IDApIHsKICAgICAgYyArPSBjOwogICAgfQogIH0KICByZXR1cm4gczsKfTsKCi8qKgogKiBQZXJmb3JtcyBhIHBlciBieXRlIFhPUiBiZXR3ZWVuIHR3byBieXRlIHN0cmluZ3MgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhCiAqIHN0cmluZyBvZiBieXRlcy4KICoKICogQHBhcmFtIHMxIGZpcnN0IHN0cmluZyBvZiBieXRlcy4KICogQHBhcmFtIHMyIHNlY29uZCBzdHJpbmcgb2YgYnl0ZXMuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gWE9SLgogKgogKiBAcmV0dXJuIHRoZSBYT1InZCByZXN1bHQuCiAqLwp1dGlsLnhvckJ5dGVzID0gZnVuY3Rpb24oczEsIHMyLCBuKSB7CiAgdmFyIHMzID0gJyc7CiAgdmFyIGIgPSAnJzsKICB2YXIgdCA9ICcnOwogIHZhciBpID0gMDsKICB2YXIgYyA9IDA7CiAgZm9yKDsgbiA+IDA7IC0tbiwgKytpKSB7CiAgICBiID0gczEuY2hhckNvZGVBdChpKSBeIHMyLmNoYXJDb2RlQXQoaSk7CiAgICBpZihjID49IDEwKSB7CiAgICAgIHMzICs9IHQ7CiAgICAgIHQgPSAnJzsKICAgICAgYyA9IDA7CiAgICB9CiAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7CiAgICArK2M7CiAgfQogIHMzICs9IHQ7CiAgcmV0dXJuIHMzOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgaGV4IHN0cmluZyBpbnRvIGEgJ2JpbmFyeScgZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAqCiAqIEBwYXJhbSBoZXggdGhlIGhleGFkZWNpbWFsIHN0cmluZyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAqLwp1dGlsLmhleFRvQnl0ZXMgPSBmdW5jdGlvbihoZXgpIHsKICAvLyBUT0RPOiBkZXByZWNhdGU6ICJEZXByZWNhdGVkLiBVc2UgdXRpbC5iaW5hcnkuaGV4LmRlY29kZSBpbnN0ZWFkLiIKICB2YXIgcnZhbCA9ICcnOwogIHZhciBpID0gMDsKICBpZihoZXgubGVuZ3RoICYgMSA9PSAxKSB7CiAgICAvLyBvZGQgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIGNvbnZlcnQgZmlyc3QgY2hhcmFjdGVyIGFsb25lCiAgICBpID0gMTsKICAgIHJ2YWwgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoZXhbMF0sIDE2KSk7CiAgfQogIC8vIGNvbnZlcnQgMiBjaGFyYWN0ZXJzICgxIGJ5dGUpIGF0IGEgdGltZQogIGZvcig7IGkgPCBoZXgubGVuZ3RoOyBpICs9IDIpIHsKICAgIHJ2YWwgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoZXguc3Vic3RyKGksIDIpLCAxNikpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyBhICdiaW5hcnknIGVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIHRvIGhleC4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlIHN0cmluZyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgY2hhcmFjdGVycy4KICovCnV0aWwuYnl0ZXNUb0hleCA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgLy8gVE9ETzogZGVwcmVjYXRlOiAiRGVwcmVjYXRlZC4gVXNlIHV0aWwuYmluYXJ5LmhleC5lbmNvZGUgaW5zdGVhZC4iCiAgcmV0dXJuIHV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKS50b0hleCgpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIDMyLWJpdCBpbnRlZ2VyIHRvIDQtYmlnLWVuZGlhbiBieXRlIHN0cmluZy4KICoKICogQHBhcmFtIGkgdGhlIGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhlIGJ5dGUgc3RyaW5nLgogKi8KdXRpbC5pbnQzMlRvQnl0ZXMgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuICgKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAyNCAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAxNiAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiA4ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpICYgMHhGRikpOwp9OwoKLy8gYmFzZTY0IGNoYXJhY3RlcnMsIHJldmVyc2UgbWFwcGluZwp2YXIgX2Jhc2U2NCA9CiAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JzsKdmFyIF9iYXNlNjRJZHggPSBbCi8qNDMgLTQzID0gMCovCi8qJysnLCAgMSwgIDIsICAzLCcvJyAqLwogICA2MiwgLTEsIC0xLCAtMSwgNjMsCgovKicwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5JyAqLwogICA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwKCi8qMTUsIDE2LCAxNywnPScsIDE5LCAyMCwgMjEgKi8KICAtMSwgLTEsIC0xLCA2NCwgLTEsIC0xLCAtMSwKCi8qNjUgLSA0MyA9IDIyKi8KLyonQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnLCdJJywnSicsJ0snLCdMJywnTScsICovCiAgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsCgovKidOJywnTycsJ1AnLCdRJywnUicsJ1MnLCdUJywnVScsJ1YnLCdXJywnWCcsJ1knLCdaJyAqLwogICAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwKCi8qOTEgLSA0MyA9IDQ4ICovCi8qNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MyAqLwogIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCgovKjk3IC0gNDMgPSA1NCovCi8qJ2EnLCdiJywnYycsJ2QnLCdlJywnZicsJ2cnLCdoJywnaScsJ2onLCdrJywnbCcsJ20nICovCiAgIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LAoKLyonbicsJ28nLCdwJywncScsJ3InLCdzJywndCcsJ3UnLCd2JywndycsJ3gnLCd5JywneicgKi8KICAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEKXTsKCi8qKgogKiBCYXNlNjQgZW5jb2RlcyBhICdiaW5hcnknIGVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKgogKiBAcGFyYW0gaW5wdXQgdGhlIGJpbmFyeSBlbmNvZGVkIHN0cmluZyBvZiBieXRlcyB0byBiYXNlNjQtZW5jb2RlLgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZW5jb2RlZCBjaGFyYWN0ZXJzIHBlciBsaW5lIHRvIHVzZSwKICogICAgICAgICAgZGVmYXVsdHMgdG8gbm9uZS4KICoKICogQHJldHVybiB0aGUgYmFzZTY0LWVuY29kZWQgb3V0cHV0LgogKi8KdXRpbC5lbmNvZGU2NCA9IGZ1bmN0aW9uKGlucHV0LCBtYXhsaW5lKSB7CiAgLy8gVE9ETzogZGVwcmVjYXRlOiAiRGVwcmVjYXRlZC4gVXNlIHV0aWwuYmluYXJ5LmJhc2U2NC5lbmNvZGUgaW5zdGVhZC4iCiAgdmFyIGxpbmUgPSAnJzsKICB2YXIgb3V0cHV0ID0gJyc7CiAgdmFyIGNocjEsIGNocjIsIGNocjM7CiAgdmFyIGkgPSAwOwogIHdoaWxlKGkgPCBpbnB1dC5sZW5ndGgpIHsKICAgIGNocjEgPSBpbnB1dC5jaGFyQ29kZUF0KGkrKyk7CiAgICBjaHIyID0gaW5wdXQuY2hhckNvZGVBdChpKyspOwogICAgY2hyMyA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTsKCiAgICAvLyBlbmNvZGUgNCBjaGFyYWN0ZXIgZ3JvdXAKICAgIGxpbmUgKz0gX2Jhc2U2NC5jaGFyQXQoY2hyMSA+PiAyKTsKICAgIGxpbmUgKz0gX2Jhc2U2NC5jaGFyQXQoKChjaHIxICYgMykgPDwgNCkgfCAoY2hyMiA+PiA0KSk7CiAgICBpZihpc05hTihjaHIyKSkgewogICAgICBsaW5lICs9ICc9PSc7CiAgICB9IGVsc2UgewogICAgICBsaW5lICs9IF9iYXNlNjQuY2hhckF0KCgoY2hyMiAmIDE1KSA8PCAyKSB8IChjaHIzID4+IDYpKTsKICAgICAgbGluZSArPSBpc05hTihjaHIzKSA/ICc9JyA6IF9iYXNlNjQuY2hhckF0KGNocjMgJiA2Myk7CiAgICB9CgogICAgaWYobWF4bGluZSAmJiBsaW5lLmxlbmd0aCA+IG1heGxpbmUpIHsKICAgICAgb3V0cHV0ICs9IGxpbmUuc3Vic3RyKDAsIG1heGxpbmUpICsgJ1xyXG4nOwogICAgICBsaW5lID0gbGluZS5zdWJzdHIobWF4bGluZSk7CiAgICB9CiAgfQogIG91dHB1dCArPSBsaW5lOwogIHJldHVybiBvdXRwdXQ7Cn07CgovKioKICogQmFzZTY0IGRlY29kZXMgYSBzdHJpbmcgaW50byBhICdiaW5hcnknIGVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKgogKiBAcGFyYW0gaW5wdXQgdGhlIGJhc2U2NC1lbmNvZGVkIGlucHV0LgogKgogKiBAcmV0dXJuIHRoZSBiaW5hcnkgZW5jb2RlZCBzdHJpbmcuCiAqLwp1dGlsLmRlY29kZTY0ID0gZnVuY3Rpb24oaW5wdXQpIHsKICAvLyBUT0RPOiBkZXByZWNhdGU6ICJEZXByZWNhdGVkLiBVc2UgdXRpbC5iaW5hcnkuYmFzZTY0LmRlY29kZSBpbnN0ZWFkLiIKCiAgLy8gcmVtb3ZlIGFsbCBub24tYmFzZTY0IGNoYXJhY3RlcnMKICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCAnJyk7CgogIHZhciBvdXRwdXQgPSAnJzsKICB2YXIgZW5jMSwgZW5jMiwgZW5jMywgZW5jNDsKICB2YXIgaSA9IDA7CgogIHdoaWxlKGkgPCBpbnB1dC5sZW5ndGgpIHsKICAgIGVuYzEgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKICAgIGVuYzIgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKICAgIGVuYzMgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKICAgIGVuYzQgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKCiAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoZW5jMSA8PCAyKSB8IChlbmMyID4+IDQpKTsKICAgIGlmKGVuYzMgIT09IDY0KSB7CiAgICAgIC8vIGRlY29kZWQgYXQgbGVhc3QgMiBieXRlcwogICAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGVuYzIgJiAxNSkgPDwgNCkgfCAoZW5jMyA+PiAyKSk7CiAgICAgIGlmKGVuYzQgIT09IDY0KSB7CiAgICAgICAgLy8gZGVjb2RlZCAzIGJ5dGVzCiAgICAgICAgb3V0cHV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChlbmMzICYgMykgPDwgNikgfCBlbmM0KTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIG91dHB1dDsKfTsKCi8qKgogKiBVVEYtOCBlbmNvZGVzIHRoZSBnaXZlbiBVVEYtMTYgZW5jb2RlZCBzdHJpbmcgKGEgc3RhbmRhcmQgSmF2YVNjcmlwdAogKiBzdHJpbmcpLiBOb24tQVNDSUkgY2hhcmFjdGVycyB3aWxsIGJlIGVuY29kZWQgYXMgbXVsdGlwbGUgYnl0ZXMgYWNjb3JkaW5nCiAqIHRvIFVURi04LgogKgogKiBAcGFyYW0gc3RyIHRoZSBzdHJpbmcgdG8gZW5jb2RlLgogKgogKiBAcmV0dXJuIHRoZSBVVEYtOCBlbmNvZGVkIHN0cmluZy4KICovCnV0aWwuZW5jb2RlVXRmOCA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSk7Cn07CgovKioKICogRGVjb2RlcyBhIFVURi04IGVuY29kZWQgc3RyaW5nIGludG8gYSBVVEYtMTYgc3RyaW5nLgogKgogKiBAcGFyYW0gc3RyIHRoZSBzdHJpbmcgdG8gZGVjb2RlLgogKgogKiBAcmV0dXJuIHRoZSBVVEYtMTYgZW5jb2RlZCBzdHJpbmcgKHN0YW5kYXJkIEphdmFTY3JpcHQgc3RyaW5nKS4KICovCnV0aWwuZGVjb2RlVXRmOCA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHN0cikpOwp9OwoKLy8gYmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIHRvb2xzCi8vIEZJWE1FOiBFeHBlcmltZW50YWwuIERvIG5vdCB1c2UgeWV0Lgp1dGlsLmJpbmFyeSA9IHsKICByYXc6IHt9LAogIGhleDoge30sCiAgYmFzZTY0OiB7fQp9OwoKLyoqCiAqIEVuY29kZXMgYSBVaW50OEFycmF5IGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nLiBUaGlzIGVuY29kaW5nIHVzZXMKICogYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDI1NSBmb3IgZWFjaCBjaGFyYWN0ZXIuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgVWludDhBcnJheSB0byBlbmNvZGUuCiAqCiAqIEByZXR1cm4gdGhlIGJpbmFyeS1lbmNvZGVkIHN0cmluZy4KICovCnV0aWwuYmluYXJ5LnJhdy5lbmNvZGUgPSBmdW5jdGlvbihieXRlcykgewogIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGJ5dGVzKTsKfTsKCi8qKgogKiBEZWNvZGVzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIHRvIGEgVWludDhBcnJheS4gVGhpcyBlbmNvZGluZyB1c2VzCiAqIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAyNTUgZm9yIGVhY2ggY2hhcmFjdGVyLgogKgogKiBAcGFyYW0gc3RyIHRoZSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgdG8gZGVjb2RlLgogKiBAcGFyYW0gW291dHB1dF0gYW4gb3B0aW9uYWwgVWludDhBcnJheSB0byB3cml0ZSB0aGUgb3V0cHV0IHRvOyBpZiBpdAogKiAgICAgICAgICBpcyB0b28gc21hbGwsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KICogQHBhcmFtIFtvZmZzZXRdIHRoZSBzdGFydCBvZmZzZXQgZm9yIHdyaXRpbmcgdG8gdGhlIG91dHB1dCAoZGVmYXVsdDogMCkuCiAqCiAqIEByZXR1cm4gdGhlIFVpbnQ4QXJyYXkgb3IgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGlmIG91dHB1dCB3YXMgZ2l2ZW4uCiAqLwp1dGlsLmJpbmFyeS5yYXcuZGVjb2RlID0gZnVuY3Rpb24oc3RyLCBvdXRwdXQsIG9mZnNldCkgewogIHZhciBvdXQgPSBvdXRwdXQ7CiAgaWYoIW91dCkgewogICAgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCk7CiAgfQogIG9mZnNldCA9IG9mZnNldCB8fCAwOwogIHZhciBqID0gb2Zmc2V0OwogIGZvcih2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgIG91dFtqKytdID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgfQogIHJldHVybiBvdXRwdXQgPyAoaiAtIG9mZnNldCkgOiBvdXQ7Cn07CgovKioKICogRW5jb2RlcyBhICdiaW5hcnknIHN0cmluZywgQXJyYXlCdWZmZXIsIERhdGFWaWV3LCBUeXBlZEFycmF5LCBvcgogKiBCeXRlQnVmZmVyIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGNoYXJhY3RlcnMuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZXMgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGNoYXJhY3RlcnMuCiAqLwp1dGlsLmJpbmFyeS5oZXguZW5jb2RlID0gdXRpbC5ieXRlc1RvSGV4OwoKLyoqCiAqIERlY29kZXMgYSBoZXgtZW5jb2RlZCBzdHJpbmcgdG8gYSBVaW50OEFycmF5LgogKgogKiBAcGFyYW0gaGV4IHRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgdG8gY29udmVydC4KICogQHBhcmFtIFtvdXRwdXRdIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkgdG8gd3JpdGUgdGhlIG91dHB1dCB0bzsgaWYgaXQKICogICAgICAgICAgaXMgdG9vIHNtYWxsLCBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCiAqIEBwYXJhbSBbb2Zmc2V0XSB0aGUgc3RhcnQgb2Zmc2V0IGZvciB3cml0aW5nIHRvIHRoZSBvdXRwdXQgKGRlZmF1bHQ6IDApLgogKgogKiBAcmV0dXJuIHRoZSBVaW50OEFycmF5IG9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpZiBvdXRwdXQgd2FzIGdpdmVuLgogKi8KdXRpbC5iaW5hcnkuaGV4LmRlY29kZSA9IGZ1bmN0aW9uKGhleCwgb3V0cHV0LCBvZmZzZXQpIHsKICB2YXIgb3V0ID0gb3V0cHV0OwogIGlmKCFvdXQpIHsKICAgIG91dCA9IG5ldyBVaW50OEFycmF5KE1hdGguY2VpbChoZXgubGVuZ3RoIC8gMikpOwogIH0KICBvZmZzZXQgPSBvZmZzZXQgfHwgMDsKICB2YXIgaSA9IDAsIGogPSBvZmZzZXQ7CiAgaWYoaGV4Lmxlbmd0aCAmIDEpIHsKICAgIC8vIG9kZCBudW1iZXIgb2YgY2hhcmFjdGVycywgY29udmVydCBmaXJzdCBjaGFyYWN0ZXIgYWxvbmUKICAgIGkgPSAxOwogICAgb3V0W2orK10gPSBwYXJzZUludChoZXhbMF0sIDE2KTsKICB9CiAgLy8gY29udmVydCAyIGNoYXJhY3RlcnMgKDEgYnl0ZSkgYXQgYSB0aW1lCiAgZm9yKDsgaSA8IGhleC5sZW5ndGg7IGkgKz0gMikgewogICAgb3V0W2orK10gPSBwYXJzZUludChoZXguc3Vic3RyKGksIDIpLCAxNik7CiAgfQogIHJldHVybiBvdXRwdXQgPyAoaiAtIG9mZnNldCkgOiBvdXQ7Cn07CgovKioKICogQmFzZTY0LWVuY29kZXMgYSBVaW50OEFycmF5LgogKgogKiBAcGFyYW0gaW5wdXQgdGhlIFVpbnQ4QXJyYXkgdG8gZW5jb2RlLgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZW5jb2RlZCBjaGFyYWN0ZXJzIHBlciBsaW5lIHRvIHVzZSwKICogICAgICAgICAgZGVmYXVsdHMgdG8gbm9uZS4KICoKICogQHJldHVybiB0aGUgYmFzZTY0LWVuY29kZWQgb3V0cHV0IHN0cmluZy4KICovCnV0aWwuYmluYXJ5LmJhc2U2NC5lbmNvZGUgPSBmdW5jdGlvbihpbnB1dCwgbWF4bGluZSkgewogIHZhciBsaW5lID0gJyc7CiAgdmFyIG91dHB1dCA9ICcnOwogIHZhciBjaHIxLCBjaHIyLCBjaHIzOwogIHZhciBpID0gMDsKICB3aGlsZShpIDwgaW5wdXQuYnl0ZUxlbmd0aCkgewogICAgY2hyMSA9IGlucHV0W2krK107CiAgICBjaHIyID0gaW5wdXRbaSsrXTsKICAgIGNocjMgPSBpbnB1dFtpKytdOwoKICAgIC8vIGVuY29kZSA0IGNoYXJhY3RlciBncm91cAogICAgbGluZSArPSBfYmFzZTY0LmNoYXJBdChjaHIxID4+IDIpOwogICAgbGluZSArPSBfYmFzZTY0LmNoYXJBdCgoKGNocjEgJiAzKSA8PCA0KSB8IChjaHIyID4+IDQpKTsKICAgIGlmKGlzTmFOKGNocjIpKSB7CiAgICAgIGxpbmUgKz0gJz09JzsKICAgIH0gZWxzZSB7CiAgICAgIGxpbmUgKz0gX2Jhc2U2NC5jaGFyQXQoKChjaHIyICYgMTUpIDw8IDIpIHwgKGNocjMgPj4gNikpOwogICAgICBsaW5lICs9IGlzTmFOKGNocjMpID8gJz0nIDogX2Jhc2U2NC5jaGFyQXQoY2hyMyAmIDYzKTsKICAgIH0KCiAgICBpZihtYXhsaW5lICYmIGxpbmUubGVuZ3RoID4gbWF4bGluZSkgewogICAgICBvdXRwdXQgKz0gbGluZS5zdWJzdHIoMCwgbWF4bGluZSkgKyAnXHJcbic7CiAgICAgIGxpbmUgPSBsaW5lLnN1YnN0cihtYXhsaW5lKTsKICAgIH0KICB9CiAgb3V0cHV0ICs9IGxpbmU7CiAgcmV0dXJuIG91dHB1dDsKfTsKCi8qKgogKiBEZWNvZGVzIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIHRvIGEgVWludDhBcnJheS4KICoKICogQHBhcmFtIGlucHV0IHRoZSBiYXNlNjQtZW5jb2RlZCBpbnB1dCBzdHJpbmcuCiAqIEBwYXJhbSBbb3V0cHV0XSBhbiBvcHRpb25hbCBVaW50OEFycmF5IHRvIHdyaXRlIHRoZSBvdXRwdXQgdG87IGlmIGl0CiAqICAgICAgICAgIGlzIHRvbyBzbWFsbCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLgogKiBAcGFyYW0gW29mZnNldF0gdGhlIHN0YXJ0IG9mZnNldCBmb3Igd3JpdGluZyB0byB0aGUgb3V0cHV0IChkZWZhdWx0OiAwKS4KICoKICogQHJldHVybiB0aGUgVWludDhBcnJheSBvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gaWYgb3V0cHV0IHdhcyBnaXZlbi4KICovCnV0aWwuYmluYXJ5LmJhc2U2NC5kZWNvZGUgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBvZmZzZXQpIHsKICB2YXIgb3V0ID0gb3V0cHV0OwogIGlmKCFvdXQpIHsKICAgIG91dCA9IG5ldyBVaW50OEFycmF5KE1hdGguY2VpbChpbnB1dC5sZW5ndGggLyA0KSAqIDMpOwogIH0KCiAgLy8gcmVtb3ZlIGFsbCBub24tYmFzZTY0IGNoYXJhY3RlcnMKICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCAnJyk7CgogIG9mZnNldCA9IG9mZnNldCB8fCAwOwogIHZhciBlbmMxLCBlbmMyLCBlbmMzLCBlbmM0OwogIHZhciBpID0gMCwgaiA9IG9mZnNldDsKCiAgd2hpbGUoaSA8IGlucHV0Lmxlbmd0aCkgewogICAgZW5jMSA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwogICAgZW5jMiA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwogICAgZW5jMyA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwogICAgZW5jNCA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwoKICAgIG91dFtqKytdID0gKGVuYzEgPDwgMikgfCAoZW5jMiA+PiA0KTsKICAgIGlmKGVuYzMgIT09IDY0KSB7CiAgICAgIC8vIGRlY29kZWQgYXQgbGVhc3QgMiBieXRlcwogICAgICBvdXRbaisrXSA9ICgoZW5jMiAmIDE1KSA8PCA0KSB8IChlbmMzID4+IDIpOwogICAgICBpZihlbmM0ICE9PSA2NCkgewogICAgICAgIC8vIGRlY29kZWQgMyBieXRlcwogICAgICAgIG91dFtqKytdID0gKChlbmMzICYgMykgPDwgNikgfCBlbmM0OwogICAgICB9CiAgICB9CiAgfQoKICAvLyBtYWtlIHN1cmUgcmVzdWx0IGlzIHRoZSBleGFjdCBkZWNvZGVkIGxlbmd0aAogIHJldHVybiBvdXRwdXQgPwogICAgICAgICAoaiAtIG9mZnNldCkgOgogICAgICAgICBvdXQuc3ViYXJyYXkoMCwgaik7Cn07CgovLyB0ZXh0IGVuY29kaW5nL2RlY29kaW5nIHRvb2xzCi8vIEZJWE1FOiBFeHBlcmltZW50YWwuIERvIG5vdCB1c2UgeWV0Lgp1dGlsLnRleHQgPSB7CiAgdXRmODoge30sCiAgdXRmMTY6IHt9Cn07CgovKioKICogRW5jb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIGFzIFVURi04IGluIGEgVWludDhBcnJheS4KICoKICogQHBhcmFtIHN0ciB0aGUgc3RyaW5nIHRvIGVuY29kZS4KICogQHBhcmFtIFtvdXRwdXRdIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkgdG8gd3JpdGUgdGhlIG91dHB1dCB0bzsgaWYgaXQKICogICAgICAgICAgaXMgdG9vIHNtYWxsLCBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCiAqIEBwYXJhbSBbb2Zmc2V0XSB0aGUgc3RhcnQgb2Zmc2V0IGZvciB3cml0aW5nIHRvIHRoZSBvdXRwdXQgKGRlZmF1bHQ6IDApLgogKgogKiBAcmV0dXJuIHRoZSBVaW50OEFycmF5IG9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpZiBvdXRwdXQgd2FzIGdpdmVuLgogKi8KdXRpbC50ZXh0LnV0ZjguZW5jb2RlID0gZnVuY3Rpb24oc3RyLCBvdXRwdXQsIG9mZnNldCkgewogIHN0ciA9IHV0aWwuZW5jb2RlVXRmOChzdHIpOwogIHZhciBvdXQgPSBvdXRwdXQ7CiAgaWYoIW91dCkgewogICAgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCk7CiAgfQogIG9mZnNldCA9IG9mZnNldCB8fCAwOwogIHZhciBqID0gb2Zmc2V0OwogIGZvcih2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgIG91dFtqKytdID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgfQogIHJldHVybiBvdXRwdXQgPyAoaiAtIG9mZnNldCkgOiBvdXQ7Cn07CgovKioKICogRGVjb2RlcyB0aGUgVVRGLTggY29udGVudHMgZnJvbSBhIFVpbnQ4QXJyYXkuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgVWludDhBcnJheSB0byBkZWNvZGUuCiAqCiAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcuCiAqLwp1dGlsLnRleHQudXRmOC5kZWNvZGUgPSBmdW5jdGlvbihieXRlcykgewogIHJldHVybiB1dGlsLmRlY29kZVV0ZjgoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBieXRlcykpOwp9OwoKLyoqCiAqIEVuY29kZXMgdGhlIGdpdmVuIHN0cmluZyBhcyBVVEYtMTYgaW4gYSBVaW50OEFycmF5LgogKgogKiBAcGFyYW0gc3RyIHRoZSBzdHJpbmcgdG8gZW5jb2RlLgogKiBAcGFyYW0gW291dHB1dF0gYW4gb3B0aW9uYWwgVWludDhBcnJheSB0byB3cml0ZSB0aGUgb3V0cHV0IHRvOyBpZiBpdAogKiAgICAgICAgICBpcyB0b28gc21hbGwsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KICogQHBhcmFtIFtvZmZzZXRdIHRoZSBzdGFydCBvZmZzZXQgZm9yIHdyaXRpbmcgdG8gdGhlIG91dHB1dCAoZGVmYXVsdDogMCkuCiAqCiAqIEByZXR1cm4gdGhlIFVpbnQ4QXJyYXkgb3IgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGlmIG91dHB1dCB3YXMgZ2l2ZW4uCiAqLwp1dGlsLnRleHQudXRmMTYuZW5jb2RlID0gZnVuY3Rpb24oc3RyLCBvdXRwdXQsIG9mZnNldCkgewogIHZhciBvdXQgPSBvdXRwdXQ7CiAgaWYoIW91dCkgewogICAgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCAqIDIpOwogIH0KICB2YXIgdmlldyA9IG5ldyBVaW50MTZBcnJheShvdXQuYnVmZmVyKTsKICBvZmZzZXQgPSBvZmZzZXQgfHwgMDsKICB2YXIgaiA9IG9mZnNldDsKICB2YXIgayA9IG9mZnNldDsKICBmb3IodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgICB2aWV3W2srK10gPSBzdHIuY2hhckNvZGVBdChpKTsKICAgIGogKz0gMjsKICB9CiAgcmV0dXJuIG91dHB1dCA/IChqIC0gb2Zmc2V0KSA6IG91dDsKfTsKCi8qKgogKiBEZWNvZGVzIHRoZSBVVEYtMTYgY29udGVudHMgZnJvbSBhIFVpbnQ4QXJyYXkuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgVWludDhBcnJheSB0byBkZWNvZGUuCiAqCiAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcuCiAqLwp1dGlsLnRleHQudXRmMTYuZGVjb2RlID0gZnVuY3Rpb24oYnl0ZXMpIHsKICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBuZXcgVWludDE2QXJyYXkoYnl0ZXMuYnVmZmVyKSk7Cn07CgovKioKICogRGVmbGF0ZXMgdGhlIGdpdmVuIGRhdGEgdXNpbmcgYSBmbGFzaCBpbnRlcmZhY2UuCiAqCiAqIEBwYXJhbSBhcGkgdGhlIGZsYXNoIGludGVyZmFjZS4KICogQHBhcmFtIGJ5dGVzIHRoZSBkYXRhLgogKiBAcGFyYW0gcmF3IHRydWUgdG8gcmV0dXJuIG9ubHkgcmF3IGRlZmxhdGUgZGF0YSwgZmFsc2UgdG8gaW5jbHVkZSB6bGliCiAqICAgICAgICAgIGhlYWRlciBhbmQgdHJhaWxlci4KICoKICogQHJldHVybiB0aGUgZGVmbGF0ZWQgZGF0YSBhcyBhIHN0cmluZy4KICovCnV0aWwuZGVmbGF0ZSA9IGZ1bmN0aW9uKGFwaSwgYnl0ZXMsIHJhdykgewogIGJ5dGVzID0gdXRpbC5kZWNvZGU2NChhcGkuZGVmbGF0ZSh1dGlsLmVuY29kZTY0KGJ5dGVzKSkucnZhbCk7CgogIC8vIHN0cmlwIHpsaWIgaGVhZGVyIGFuZCB0cmFpbGVyIGlmIG5lY2Vzc2FyeQogIGlmKHJhdykgewogICAgLy8gemxpYiBoZWFkZXIgaXMgMiBieXRlcyAoQ01GLEZMRykgd2hlcmUgRkxHIGluZGljYXRlcyB0aGF0CiAgICAvLyB0aGVyZSBpcyBhIDQtYnl0ZSBESUNUIChhbGRlci0zMikgYmxvY2sgYmVmb3JlIHRoZSBkYXRhIGlmCiAgICAvLyBpdHMgNXRoIGJpdCBpcyBzZXQKICAgIHZhciBzdGFydCA9IDI7CiAgICB2YXIgZmxnID0gYnl0ZXMuY2hhckNvZGVBdCgxKTsKICAgIGlmKGZsZyAmIDB4MjApIHsKICAgICAgc3RhcnQgPSA2OwogICAgfQogICAgLy8gemxpYiB0cmFpbGVyIGlzIDQgYnl0ZXMgb2YgYWRsZXItMzIKICAgIGJ5dGVzID0gYnl0ZXMuc3Vic3RyaW5nKHN0YXJ0LCBieXRlcy5sZW5ndGggLSA0KTsKICB9CgogIHJldHVybiBieXRlczsKfTsKCi8qKgogKiBJbmZsYXRlcyB0aGUgZ2l2ZW4gZGF0YSB1c2luZyBhIGZsYXNoIGludGVyZmFjZS4KICoKICogQHBhcmFtIGFwaSB0aGUgZmxhc2ggaW50ZXJmYWNlLgogKiBAcGFyYW0gYnl0ZXMgdGhlIGRhdGEuCiAqIEBwYXJhbSByYXcgdHJ1ZSBpZiB0aGUgaW5jb21pbmcgZGF0YSBoYXMgbm8gemxpYiBoZWFkZXIgb3IgdHJhaWxlciBhbmQgaXMKICogICAgICAgICAgcmF3IERFRkxBVEUgZGF0YS4KICoKICogQHJldHVybiB0aGUgaW5mbGF0ZWQgZGF0YSBhcyBhIHN0cmluZywgbnVsbCBvbiBlcnJvci4KICovCnV0aWwuaW5mbGF0ZSA9IGZ1bmN0aW9uKGFwaSwgYnl0ZXMsIHJhdykgewogIC8vIFRPRE86IGFkZCB6bGliIGhlYWRlciBhbmQgdHJhaWxlciBpZiBuZWNlc3NhcnkvcG9zc2libGUKICB2YXIgcnZhbCA9IGFwaS5pbmZsYXRlKHV0aWwuZW5jb2RlNjQoYnl0ZXMpKS5ydmFsOwogIHJldHVybiAocnZhbCA9PT0gbnVsbCkgPyBudWxsIDogdXRpbC5kZWNvZGU2NChydmFsKTsKfTsKCi8qKgogKiBTZXRzIGEgc3RvcmFnZSBvYmplY3QuCiAqCiAqIEBwYXJhbSBhcGkgdGhlIHN0b3JhZ2UgaW50ZXJmYWNlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0gb2JqIHRoZSBzdG9yYWdlIG9iamVjdCwgbnVsbCB0byByZW1vdmUuCiAqLwp2YXIgX3NldFN0b3JhZ2VPYmplY3QgPSBmdW5jdGlvbihhcGksIGlkLCBvYmopIHsKICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlYlN0b3JhZ2Ugbm90IGF2YWlsYWJsZS4nKTsKICB9CgogIHZhciBydmFsOwogIGlmKG9iaiA9PT0gbnVsbCkgewogICAgcnZhbCA9IGFwaS5yZW1vdmVJdGVtKGlkKTsKICB9IGVsc2UgewogICAgLy8ganNvbi1lbmNvZGUgYW5kIGJhc2U2NC1lbmNvZGUgb2JqZWN0CiAgICBvYmogPSB1dGlsLmVuY29kZTY0KEpTT04uc3RyaW5naWZ5KG9iaikpOwogICAgcnZhbCA9IGFwaS5zZXRJdGVtKGlkLCBvYmopOwogIH0KCiAgLy8gaGFuZGxlIHBvdGVudGlhbCBmbGFzaCBlcnJvcgogIGlmKHR5cGVvZihydmFsKSAhPT0gJ3VuZGVmaW5lZCcgJiYgcnZhbC5ydmFsICE9PSB0cnVlKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IocnZhbC5lcnJvci5tZXNzYWdlKTsKICAgIGVycm9yLmlkID0gcnZhbC5lcnJvci5pZDsKICAgIGVycm9yLm5hbWUgPSBydmFsLmVycm9yLm5hbWU7CiAgICB0aHJvdyBlcnJvcjsKICB9Cn07CgovKioKICogR2V0cyBhIHN0b3JhZ2Ugb2JqZWN0LgogKgogKiBAcGFyYW0gYXBpIHRoZSBzdG9yYWdlIGludGVyZmFjZS4KICogQHBhcmFtIGlkIHRoZSBzdG9yYWdlIElEIHRvIHVzZS4KICoKICogQHJldHVybiB0aGUgc3RvcmFnZSBvYmplY3QgZW50cnkgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4KICovCnZhciBfZ2V0U3RvcmFnZU9iamVjdCA9IGZ1bmN0aW9uKGFwaSwgaWQpIHsKICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlYlN0b3JhZ2Ugbm90IGF2YWlsYWJsZS4nKTsKICB9CgogIC8vIGdldCB0aGUgZXhpc3RpbmcgZW50cnkKICB2YXIgcnZhbCA9IGFwaS5nZXRJdGVtKGlkKTsKCiAgLyogTm90ZTogV2UgY2hlY2sgYXBpLmluaXQgYmVjYXVzZSB3ZSBjYW4ndCBkbyAoYXBpID09IGxvY2FsU3RvcmFnZSkKICAgIG9uIElFIGJlY2F1c2Ugb2YgIkNsYXNzIGRvZXNuJ3Qgc3VwcG9ydCBBdXRvbWF0aW9uIiBleGNlcHRpb24uIE9ubHkKICAgIHRoZSBmbGFzaCBhcGkgaGFzIGFuIGluaXQgbWV0aG9kIHNvIHRoaXMgd29ya3MgdG9vLCBidXQgd2UgbmVlZCBhCiAgICBiZXR0ZXIgc29sdXRpb24gaW4gdGhlIGZ1dHVyZS4gKi8KCiAgLy8gZmxhc2ggcmV0dXJucyBpdGVtIHdyYXBwZWQgaW4gYW4gb2JqZWN0LCBoYW5kbGUgc3BlY2lhbCBjYXNlCiAgaWYoYXBpLmluaXQpIHsKICAgIGlmKHJ2YWwucnZhbCA9PT0gbnVsbCkgewogICAgICBpZihydmFsLmVycm9yKSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHJ2YWwuZXJyb3IubWVzc2FnZSk7CiAgICAgICAgZXJyb3IuaWQgPSBydmFsLmVycm9yLmlkOwogICAgICAgIGVycm9yLm5hbWUgPSBydmFsLmVycm9yLm5hbWU7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgICAgLy8gbm8gZXJyb3IsIGJ1dCBhbHNvIG5vIGl0ZW0KICAgICAgcnZhbCA9IG51bGw7CiAgICB9IGVsc2UgewogICAgICBydmFsID0gcnZhbC5ydmFsOwogICAgfQogIH0KCiAgLy8gaGFuZGxlIGRlY29kaW5nCiAgaWYocnZhbCAhPT0gbnVsbCkgewogICAgLy8gYmFzZTY0LWRlY29kZSBhbmQganNvbi1kZWNvZGUgZGF0YQogICAgcnZhbCA9IEpTT04ucGFyc2UodXRpbC5kZWNvZGU2NChydmFsKSk7CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTdG9yZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlLgogKgogKiBAcGFyYW0gYXBpIHRoZSBzdG9yYWdlIGludGVyZmFjZS4KICogQHBhcmFtIGlkIHRoZSBzdG9yYWdlIElEIHRvIHVzZS4KICogQHBhcmFtIGtleSB0aGUga2V5IGZvciB0aGUgaXRlbS4KICogQHBhcmFtIGRhdGEgdGhlIGRhdGEgZm9yIHRoZSBpdGVtIChhbnkgamF2YXNjcmlwdCBvYmplY3QvcHJpbWl0aXZlKS4KICovCnZhciBfc2V0SXRlbSA9IGZ1bmN0aW9uKGFwaSwgaWQsIGtleSwgZGF0YSkgewogIC8vIGdldCBzdG9yYWdlIG9iamVjdAogIHZhciBvYmogPSBfZ2V0U3RvcmFnZU9iamVjdChhcGksIGlkKTsKICBpZihvYmogPT09IG51bGwpIHsKICAgIC8vIGNyZWF0ZSBhIG5ldyBzdG9yYWdlIG9iamVjdAogICAgb2JqID0ge307CiAgfQogIC8vIHVwZGF0ZSBrZXkKICBvYmpba2V5XSA9IGRhdGE7CgogIC8vIHNldCBzdG9yYWdlIG9iamVjdAogIF9zZXRTdG9yYWdlT2JqZWN0KGFwaSwgaWQsIG9iaik7Cn07CgovKioKICogR2V0cyBhbiBpdGVtIGZyb20gbG9jYWwgc3RvcmFnZS4KICoKICogQHBhcmFtIGFwaSB0aGUgc3RvcmFnZSBpbnRlcmZhY2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSBmb3IgdGhlIGl0ZW0uCiAqCiAqIEByZXR1cm4gdGhlIGl0ZW0uCiAqLwp2YXIgX2dldEl0ZW0gPSBmdW5jdGlvbihhcGksIGlkLCBrZXkpIHsKICAvLyBnZXQgc3RvcmFnZSBvYmplY3QKICB2YXIgcnZhbCA9IF9nZXRTdG9yYWdlT2JqZWN0KGFwaSwgaWQpOwogIGlmKHJ2YWwgIT09IG51bGwpIHsKICAgIC8vIHJldHVybiBkYXRhIGF0IGtleQogICAgcnZhbCA9IChrZXkgaW4gcnZhbCkgPyBydmFsW2tleV0gOiBudWxsOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUmVtb3ZlcyBhbiBpdGVtIGZyb20gbG9jYWwgc3RvcmFnZS4KICoKICogQHBhcmFtIGFwaSB0aGUgc3RvcmFnZSBpbnRlcmZhY2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSBmb3IgdGhlIGl0ZW0uCiAqLwp2YXIgX3JlbW92ZUl0ZW0gPSBmdW5jdGlvbihhcGksIGlkLCBrZXkpIHsKICAvLyBnZXQgc3RvcmFnZSBvYmplY3QKICB2YXIgb2JqID0gX2dldFN0b3JhZ2VPYmplY3QoYXBpLCBpZCk7CiAgaWYob2JqICE9PSBudWxsICYmIGtleSBpbiBvYmopIHsKICAgIC8vIHJlbW92ZSBrZXkKICAgIGRlbGV0ZSBvYmpba2V5XTsKCiAgICAvLyBzZWUgaWYgZW50cnkgaGFzIG5vIGtleXMgcmVtYWluaW5nCiAgICB2YXIgZW1wdHkgPSB0cnVlOwogICAgZm9yKHZhciBwcm9wIGluIG9iaikgewogICAgICBlbXB0eSA9IGZhbHNlOwogICAgICBicmVhazsKICAgIH0KICAgIGlmKGVtcHR5KSB7CiAgICAgIC8vIHJlbW92ZSBlbnRyeSBlbnRpcmVseSBpZiBubyBrZXlzIGFyZSBsZWZ0CiAgICAgIG9iaiA9IG51bGw7CiAgICB9CgogICAgLy8gc2V0IHN0b3JhZ2Ugb2JqZWN0CiAgICBfc2V0U3RvcmFnZU9iamVjdChhcGksIGlkLCBvYmopOwogIH0KfTsKCi8qKgogKiBDbGVhcnMgdGhlIGxvY2FsIGRpc2sgc3RvcmFnZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBJRC4KICoKICogQHBhcmFtIGFwaSB0aGUgc3RvcmFnZSBpbnRlcmZhY2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqLwp2YXIgX2NsZWFySXRlbXMgPSBmdW5jdGlvbihhcGksIGlkKSB7CiAgX3NldFN0b3JhZ2VPYmplY3QoYXBpLCBpZCwgbnVsbCk7Cn07CgovKioKICogQ2FsbHMgYSBzdG9yYWdlIGZ1bmN0aW9uLgogKgogKiBAcGFyYW0gZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2FsbC4KICogQHBhcmFtIGFyZ3MgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGZ1bmN0aW9uLgogKiBAcGFyYW0gbG9jYXRpb24gdGhlIGxvY2F0aW9uIGFyZ3VtZW50LgogKgogKiBAcmV0dXJuIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24uCiAqLwp2YXIgX2NhbGxTdG9yYWdlRnVuY3Rpb24gPSBmdW5jdGlvbihmdW5jLCBhcmdzLCBsb2NhdGlvbikgewogIHZhciBydmFsID0gbnVsbDsKCiAgLy8gZGVmYXVsdCBzdG9yYWdlIHR5cGVzCiAgaWYodHlwZW9mKGxvY2F0aW9uKSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGxvY2F0aW9uID0gWyd3ZWInLCAnZmxhc2gnXTsKICB9CgogIC8vIGFwcGx5IHN0b3JhZ2UgdHlwZXMgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZQogIHZhciB0eXBlOwogIHZhciBkb25lID0gZmFsc2U7CiAgdmFyIGV4Y2VwdGlvbiA9IG51bGw7CiAgZm9yKHZhciBpZHggaW4gbG9jYXRpb24pIHsKICAgIHR5cGUgPSBsb2NhdGlvbltpZHhdOwogICAgdHJ5IHsKICAgICAgaWYodHlwZSA9PT0gJ2ZsYXNoJyB8fCB0eXBlID09PSAnYm90aCcpIHsKICAgICAgICBpZihhcmdzWzBdID09PSBudWxsKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZsYXNoIGxvY2FsIHN0b3JhZ2Ugbm90IGF2YWlsYWJsZS4nKTsKICAgICAgICB9CiAgICAgICAgcnZhbCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7CiAgICAgICAgZG9uZSA9ICh0eXBlID09PSAnZmxhc2gnKTsKICAgICAgfQogICAgICBpZih0eXBlID09PSAnd2ViJyB8fCB0eXBlID09PSAnYm90aCcpIHsKICAgICAgICBhcmdzWzBdID0gbG9jYWxTdG9yYWdlOwogICAgICAgIHJ2YWwgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpOwogICAgICAgIGRvbmUgPSB0cnVlOwogICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICAgIGV4Y2VwdGlvbiA9IGV4OwogICAgfQogICAgaWYoZG9uZSkgewogICAgICBicmVhazsKICAgIH0KICB9CgogIGlmKCFkb25lKSB7CiAgICB0aHJvdyBleGNlcHRpb247CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTdG9yZXMgYW4gaXRlbSBvbiBsb2NhbCBkaXNrLgogKgogKiBUaGUgYXZhaWxhYmxlIHR5cGVzIG9mIGxvY2FsIHN0b3JhZ2UgaW5jbHVkZSAnZmxhc2gnLCAnd2ViJywgYW5kICdib3RoJy4KICoKICogVGhlIHR5cGUgJ2ZsYXNoJyByZWZlcnMgdG8gZmxhc2ggbG9jYWwgc3RvcmFnZSAoU2hhcmVkT2JqZWN0KS4gSW4gb3JkZXIKICogdG8gdXNlIGZsYXNoIGxvY2FsIHN0b3JhZ2UsIHRoZSAnYXBpJyBwYXJhbWV0ZXIgbXVzdCBiZSB2YWxpZC4gVGhlIHR5cGUKICogJ3dlYicgcmVmZXJzIHRvIFdlYlN0b3JhZ2UsIGlmIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci4gVGhlIHR5cGUgJ2JvdGgnCiAqIHJlZmVycyB0byBzdG9yaW5nIHVzaW5nIGJvdGggJ2ZsYXNoJyBhbmQgJ3dlYicsIG5vdCBqdXN0IG9uZSBvciB0aGUKICogb3RoZXIuCiAqCiAqIFRoZSBsb2NhdGlvbiBhcnJheSBzaG91bGQgbGlzdCB0aGUgc3RvcmFnZSB0eXBlcyB0byB1c2UgaW4gb3JkZXIgb2YKICogcHJlZmVyZW5jZToKICoKICogWydmbGFzaCddOiBmbGFzaCBvbmx5IHN0b3JhZ2UKICogWyd3ZWInXTogd2ViIG9ubHkgc3RvcmFnZQogKiBbJ2JvdGgnXTogdHJ5IHRvIHN0b3JlIGluIGJvdGgKICogWydmbGFzaCcsJ3dlYiddOiBzdG9yZSBpbiBmbGFzaCBmaXJzdCwgYnV0IGlmIG5vdCBhdmFpbGFibGUsICd3ZWInCiAqIFsnd2ViJywnZmxhc2gnXTogc3RvcmUgaW4gd2ViIGZpcnN0LCBidXQgaWYgbm90IGF2YWlsYWJsZSwgJ2ZsYXNoJwogKgogKiBUaGUgbG9jYXRpb24gYXJyYXkgZGVmYXVsdHMgdG86IFsnd2ViJywgJ2ZsYXNoJ10KICoKICogQHBhcmFtIGFwaSB0aGUgZmxhc2ggaW50ZXJmYWNlLCBudWxsIHRvIHVzZSBvbmx5IFdlYlN0b3JhZ2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSBmb3IgdGhlIGl0ZW0uCiAqIEBwYXJhbSBkYXRhIHRoZSBkYXRhIGZvciB0aGUgaXRlbSAoYW55IGphdmFzY3JpcHQgb2JqZWN0L3ByaW1pdGl2ZSkuCiAqIEBwYXJhbSBsb2NhdGlvbiBhbiBhcnJheSB3aXRoIHRoZSBwcmVmZXJyZWQgdHlwZXMgb2Ygc3RvcmFnZSB0byB1c2UuCiAqLwp1dGlsLnNldEl0ZW0gPSBmdW5jdGlvbihhcGksIGlkLCBrZXksIGRhdGEsIGxvY2F0aW9uKSB7CiAgX2NhbGxTdG9yYWdlRnVuY3Rpb24oX3NldEl0ZW0sIGFyZ3VtZW50cywgbG9jYXRpb24pOwp9OwoKLyoqCiAqIEdldHMgYW4gaXRlbSBvbiBsb2NhbCBkaXNrLgogKgogKiBTZXQgc2V0SXRlbSgpIGZvciBkZXRhaWxzIG9uIHN0b3JhZ2UgdHlwZXMuCiAqCiAqIEBwYXJhbSBhcGkgdGhlIGZsYXNoIGludGVyZmFjZSwgbnVsbCB0byB1c2Ugb25seSBXZWJTdG9yYWdlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0ga2V5IHRoZSBrZXkgZm9yIHRoZSBpdGVtLgogKiBAcGFyYW0gbG9jYXRpb24gYW4gYXJyYXkgd2l0aCB0aGUgcHJlZmVycmVkIHR5cGVzIG9mIHN0b3JhZ2UgdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBpdGVtLgogKi8KdXRpbC5nZXRJdGVtID0gZnVuY3Rpb24oYXBpLCBpZCwga2V5LCBsb2NhdGlvbikgewogIHJldHVybiBfY2FsbFN0b3JhZ2VGdW5jdGlvbihfZ2V0SXRlbSwgYXJndW1lbnRzLCBsb2NhdGlvbik7Cn07CgovKioKICogUmVtb3ZlcyBhbiBpdGVtIG9uIGxvY2FsIGRpc2suCiAqCiAqIFNldCBzZXRJdGVtKCkgZm9yIGRldGFpbHMgb24gc3RvcmFnZSB0eXBlcy4KICoKICogQHBhcmFtIGFwaSB0aGUgZmxhc2ggaW50ZXJmYWNlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0ga2V5IHRoZSBrZXkgZm9yIHRoZSBpdGVtLgogKiBAcGFyYW0gbG9jYXRpb24gYW4gYXJyYXkgd2l0aCB0aGUgcHJlZmVycmVkIHR5cGVzIG9mIHN0b3JhZ2UgdG8gdXNlLgogKi8KdXRpbC5yZW1vdmVJdGVtID0gZnVuY3Rpb24oYXBpLCBpZCwga2V5LCBsb2NhdGlvbikgewogIF9jYWxsU3RvcmFnZUZ1bmN0aW9uKF9yZW1vdmVJdGVtLCBhcmd1bWVudHMsIGxvY2F0aW9uKTsKfTsKCi8qKgogKiBDbGVhcnMgdGhlIGxvY2FsIGRpc2sgc3RvcmFnZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBJRC4KICoKICogU2V0IHNldEl0ZW0oKSBmb3IgZGV0YWlscyBvbiBzdG9yYWdlIHR5cGVzLgogKgogKiBAcGFyYW0gYXBpIHRoZSBmbGFzaCBpbnRlcmZhY2UgaWYgZmxhc2ggaXMgYXZhaWxhYmxlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0gbG9jYXRpb24gYW4gYXJyYXkgd2l0aCB0aGUgcHJlZmVycmVkIHR5cGVzIG9mIHN0b3JhZ2UgdG8gdXNlLgogKi8KdXRpbC5jbGVhckl0ZW1zID0gZnVuY3Rpb24oYXBpLCBpZCwgbG9jYXRpb24pIHsKICBfY2FsbFN0b3JhZ2VGdW5jdGlvbihfY2xlYXJJdGVtcywgYXJndW1lbnRzLCBsb2NhdGlvbik7Cn07CgovKioKICogUGFyc2VzIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IGZyb20gYW4gaHR0cChzKSB1cmwuCiAqCiAqIEBwYXJhbSBzdHIgdGhlIHVybCBzdHJpbmcuCiAqCiAqIEByZXR1cm4gdGhlIHBhcnNlZCB1cmwgb2JqZWN0IG9yIG51bGwgaWYgdGhlIHVybCBpcyBpbnZhbGlkLgogKi8KdXRpbC5wYXJzZVVybCA9IGZ1bmN0aW9uKHN0cikgewogIC8vIEZJWE1FOiB0aGlzIHJlZ2V4IGxvb2tzIGEgYml0IGJyb2tlbgogIHZhciByZWdleCA9IC9eKGh0dHBzPyk6XC9cLyhbXjomXlwvXSopOj8oXGQqKSguKikkL2c7CiAgcmVnZXgubGFzdEluZGV4ID0gMDsKICB2YXIgbSA9IHJlZ2V4LmV4ZWMoc3RyKTsKICB2YXIgdXJsID0gKG0gPT09IG51bGwpID8gbnVsbCA6IHsKICAgIGZ1bGw6IHN0ciwKICAgIHNjaGVtZTogbVsxXSwKICAgIGhvc3Q6IG1bMl0sCiAgICBwb3J0OiBtWzNdLAogICAgcGF0aDogbVs0XQogIH07CiAgaWYodXJsKSB7CiAgICB1cmwuZnVsbEhvc3QgPSB1cmwuaG9zdDsKICAgIGlmKHVybC5wb3J0KSB7CiAgICAgIGlmKHVybC5wb3J0ICE9PSA4MCAmJiB1cmwuc2NoZW1lID09PSAnaHR0cCcpIHsKICAgICAgICB1cmwuZnVsbEhvc3QgKz0gJzonICsgdXJsLnBvcnQ7CiAgICAgIH0gZWxzZSBpZih1cmwucG9ydCAhPT0gNDQzICYmIHVybC5zY2hlbWUgPT09ICdodHRwcycpIHsKICAgICAgICB1cmwuZnVsbEhvc3QgKz0gJzonICsgdXJsLnBvcnQ7CiAgICAgIH0KICAgIH0gZWxzZSBpZih1cmwuc2NoZW1lID09PSAnaHR0cCcpIHsKICAgICAgdXJsLnBvcnQgPSA4MDsKICAgIH0gZWxzZSBpZih1cmwuc2NoZW1lID09PSAnaHR0cHMnKSB7CiAgICAgIHVybC5wb3J0ID0gNDQzOwogICAgfQogICAgdXJsLmZ1bGwgPSB1cmwuc2NoZW1lICsgJzovLycgKyB1cmwuZnVsbEhvc3Q7CiAgfQogIHJldHVybiB1cmw7Cn07CgovKiBTdG9yYWdlIGZvciBxdWVyeSB2YXJpYWJsZXMgKi8KdmFyIF9xdWVyeVZhcmlhYmxlcyA9IG51bGw7CgovKioKICogUmV0dXJucyB0aGUgd2luZG93IGxvY2F0aW9uIHF1ZXJ5IHZhcmlhYmxlcy4gUXVlcnkgaXMgcGFyc2VkIG9uIHRoZSBmaXJzdAogKiBjYWxsIGFuZCB0aGUgc2FtZSBvYmplY3QgaXMgcmV0dXJuZWQgb24gc3Vic2VxdWVudCBjYWxscy4gVGhlIG1hcHBpbmcKICogaXMgZnJvbSBrZXlzIHRvIGFuIGFycmF5IG9mIHZhbHVlcy4gUGFyYW1ldGVycyB3aXRob3V0IHZhbHVlcyB3aWxsIGhhdmUKICogYW4gb2JqZWN0IGtleSBzZXQgYnV0IG5vIHZhbHVlIGFkZGVkIHRvIHRoZSB2YWx1ZSBhcnJheS4gVmFsdWVzIGFyZQogKiB1bmVzY2FwZWQuCiAqCiAqIC4uLj9rMT12MSZrMj12MjoKICogewogKiAgICJrMSI6IFsidjEiXSwKICogICAiazIiOiBbInYyIl0KICogfQogKgogKiAuLi4/azE9djEmazE9djI6CiAqIHsKICogICAiazEiOiBbInYxIiwgInYyIl0KICogfQogKgogKiAuLi4/azE9djEmazI6CiAqIHsKICogICAiazEiOiBbInYxIl0sCiAqICAgImsyIjogW10KICogfQogKgogKiAuLi4/azE9djEmazE6CiAqIHsKICogICAiazEiOiBbInYxIl0KICogfQogKgogKiAuLi4/azEmazE6CiAqIHsKICogICAiazEiOiBbXQogKiB9CiAqCiAqIEBwYXJhbSBxdWVyeSB0aGUgcXVlcnkgc3RyaW5nIHRvIHBhcnNlIChvcHRpb25hbCwgZGVmYXVsdCB0byBjYWNoZWQKICogICAgICAgICAgcmVzdWx0cyBmcm9tIHBhcnNpbmcgd2luZG93IGxvY2F0aW9uIHNlYXJjaCBxdWVyeSkuCiAqCiAqIEByZXR1cm4gb2JqZWN0IG1hcHBpbmcga2V5cyB0byB2YXJpYWJsZXMuCiAqLwp1dGlsLmdldFF1ZXJ5VmFyaWFibGVzID0gZnVuY3Rpb24ocXVlcnkpIHsKICB2YXIgcGFyc2UgPSBmdW5jdGlvbihxKSB7CiAgICB2YXIgcnZhbCA9IHt9OwogICAgdmFyIGt2cGFpcnMgPSBxLnNwbGl0KCcmJyk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwga3ZwYWlycy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcG9zID0ga3ZwYWlyc1tpXS5pbmRleE9mKCc9Jyk7CiAgICAgIHZhciBrZXk7CiAgICAgIHZhciB2YWw7CiAgICAgIGlmKHBvcyA+IDApIHsKICAgICAgICBrZXkgPSBrdnBhaXJzW2ldLnN1YnN0cmluZygwLCBwb3MpOwogICAgICAgIHZhbCA9IGt2cGFpcnNbaV0uc3Vic3RyaW5nKHBvcyArIDEpOwogICAgICB9IGVsc2UgewogICAgICAgIGtleSA9IGt2cGFpcnNbaV07CiAgICAgICAgdmFsID0gbnVsbDsKICAgICAgfQogICAgICBpZighKGtleSBpbiBydmFsKSkgewogICAgICAgIHJ2YWxba2V5XSA9IFtdOwogICAgICB9CiAgICAgIC8vIGRpc2FsbG93IG92ZXJyaWRpbmcgb2JqZWN0IHByb3RvdHlwZSBrZXlzCiAgICAgIGlmKCEoa2V5IGluIE9iamVjdC5wcm90b3R5cGUpICYmIHZhbCAhPT0gbnVsbCkgewogICAgICAgIHJ2YWxba2V5XS5wdXNoKHVuZXNjYXBlKHZhbCkpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAgdmFyIHJ2YWw7CiAgIGlmKHR5cGVvZihxdWVyeSkgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgLy8gc2V0IGNhY2hlZCB2YXJpYWJsZXMgaWYgbmVlZGVkCiAgICAgaWYoX3F1ZXJ5VmFyaWFibGVzID09PSBudWxsKSB7CiAgICAgICBpZih0eXBlb2Yod2luZG93KSAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpIHsKICAgICAgICAgIC8vIHBhcnNlIHdpbmRvdyBzZWFyY2ggcXVlcnkKICAgICAgICAgIF9xdWVyeVZhcmlhYmxlcyA9IHBhcnNlKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBubyBxdWVyeSB2YXJpYWJsZXMgYXZhaWxhYmxlCiAgICAgICAgICBfcXVlcnlWYXJpYWJsZXMgPSB7fTsKICAgICAgIH0KICAgICB9CiAgICAgcnZhbCA9IF9xdWVyeVZhcmlhYmxlczsKICAgfSBlbHNlIHsKICAgICAvLyBwYXJzZSBnaXZlbiBxdWVyeQogICAgIHJ2YWwgPSBwYXJzZShxdWVyeSk7CiAgIH0KICAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUGFyc2VzIGEgZnJhZ21lbnQgaW50byBhIHBhdGggYW5kIHF1ZXJ5LiBUaGlzIG1ldGhvZCB3aWxsIHRha2UgYSBVUkkKICogZnJhZ21lbnQgYW5kIGJyZWFrIGl0IHVwIGFzIGlmIGl0IHdlcmUgdGhlIG1haW4gVVJJLiBGb3IgZXhhbXBsZToKICogICAgL2Jhci9iYXo/YT0xJmI9MgogKiByZXN1bHRzIGluOgogKiAgICB7CiAqICAgICAgIHBhdGg6IFsiYmFyIiwgImJheiJdLAogKiAgICAgICBxdWVyeTogeyJrMSI6IFsidjEiXSwgImsyIjogWyJ2MiJdfQogKiAgICB9CiAqCiAqIEByZXR1cm4gb2JqZWN0IHdpdGggYSBwYXRoIGFycmF5IGFuZCBxdWVyeSBvYmplY3QuCiAqLwp1dGlsLnBhcnNlRnJhZ21lbnQgPSBmdW5jdGlvbihmcmFnbWVudCkgewogIC8vIGRlZmF1bHQgdG8gd2hvbGUgZnJhZ21lbnQKICB2YXIgZnAgPSBmcmFnbWVudDsKICB2YXIgZnEgPSAnJzsKICAvLyBzcGxpdCBpbnRvIHBhdGggYW5kIHF1ZXJ5IGlmIHBvc3NpYmxlIGF0IHRoZSBmaXJzdCAnPycKICB2YXIgcG9zID0gZnJhZ21lbnQuaW5kZXhPZignPycpOwogIGlmKHBvcyA+IDApIHsKICAgIGZwID0gZnJhZ21lbnQuc3Vic3RyaW5nKDAsIHBvcyk7CiAgICBmcSA9IGZyYWdtZW50LnN1YnN0cmluZyhwb3MgKyAxKTsKICB9CiAgLy8gc3BsaXQgcGF0aCBiYXNlZCBvbiAnLycgYW5kIGlnbm9yZSBmaXJzdCBlbGVtZW50IGlmIGVtcHR5CiAgdmFyIHBhdGggPSBmcC5zcGxpdCgnLycpOwogIGlmKHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoWzBdID09PSAnJykgewogICAgcGF0aC5zaGlmdCgpOwogIH0KICAvLyBjb252ZXJ0IHF1ZXJ5IGludG8gb2JqZWN0CiAgdmFyIHF1ZXJ5ID0gKGZxID09PSAnJykgPyB7fSA6IHV0aWwuZ2V0UXVlcnlWYXJpYWJsZXMoZnEpOwoKICByZXR1cm4gewogICAgcGF0aFN0cmluZzogZnAsCiAgICBxdWVyeVN0cmluZzogZnEsCiAgICBwYXRoOiBwYXRoLAogICAgcXVlcnk6IHF1ZXJ5CiAgfTsKfTsKCi8qKgogKiBNYWtlcyBhIHJlcXVlc3Qgb3V0IG9mIGEgVVJJLWxpa2UgcmVxdWVzdCBzdHJpbmcuIFRoaXMgaXMgaW50ZW5kZWQgdG8KICogYmUgdXNlZCB3aGVyZSBhIGZyYWdtZW50IGlkIChhZnRlciBhIFVSSSAnIycpIGlzIHBhcnNlZCBhcyBhIFVSSSB3aXRoCiAqIHBhdGggYW5kIHF1ZXJ5IHBhcnRzLiBUaGUgc3RyaW5nIHNob3VsZCBoYXZlIGEgcGF0aCBiZWdpbm5pbmcgYW5kCiAqIGRlbGltaXRlZCBieSAnLycgYW5kIG9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlcnMgZm9sbG93aW5nIGEgJz8nLiBUaGUKICogcXVlcnkgc2hvdWxkIGJlIGEgc3RhbmRhcmQgVVJMIHNldCBvZiBrZXkgdmFsdWUgcGFpcnMgZGVsaW1pdGVkIGJ5CiAqICcmJy4gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHRoZSBpbml0aWFsICcvJyBvbiB0aGUgcGF0aCBpcyBub3QKICogcmVxdWlyZWQuIFRoZSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBBUEksIChmdWxseSBkZXNjcmliZWQKICogaW4gdGhlIG1ldGhvZCBjb2RlKToKICogICAgewogKiAgICAgICBwYXRoOiA8dGhlIHBhdGggc3RyaW5nIHBhcnQ+LgogKiAgICAgICBxdWVyeTogPHRoZSBxdWVyeSBzdHJpbmcgcGFydD4sCiAqICAgICAgIGdldFBhdGgoaSk6IGdldCBwYXJ0IG9yIGFsbCBvZiB0aGUgc3BsaXQgcGF0aCBhcnJheSwKICogICAgICAgZ2V0UXVlcnkoaywgaSk6IGdldCBwYXJ0IG9yIGFsbCBvZiBhIHF1ZXJ5IGtleSBhcnJheSwKICogICAgICAgZ2V0UXVlcnlMYXN0KGssIF9kZWZhdWx0KTogZ2V0IGxhc3QgZWxlbWVudCBvZiBhIHF1ZXJ5IGtleSBhcnJheS4KICogICAgfQogKgogKiBAcmV0dXJuIG9iamVjdCB3aXRoIHJlcXVlc3QgcGFyYW1ldGVycy4KICovCnV0aWwubWFrZVJlcXVlc3QgPSBmdW5jdGlvbihyZXFTdHJpbmcpIHsKICB2YXIgZnJhZyA9IHV0aWwucGFyc2VGcmFnbWVudChyZXFTdHJpbmcpOwogIHZhciByZXEgPSB7CiAgICAvLyBmdWxsIHBhdGggc3RyaW5nCiAgICBwYXRoOiBmcmFnLnBhdGhTdHJpbmcsCiAgICAvLyBmdWxsIHF1ZXJ5IHN0cmluZwogICAgcXVlcnk6IGZyYWcucXVlcnlTdHJpbmcsCiAgICAvKioKICAgICAqIEdldCBwYXRoIG9yIGVsZW1lbnQgaW4gcGF0aC4KICAgICAqCiAgICAgKiBAcGFyYW0gaSBvcHRpb25hbCBwYXRoIGluZGV4LgogICAgICoKICAgICAqIEByZXR1cm4gcGF0aCBvciBwYXJ0IG9mIHBhdGggaWYgaSBwcm92aWRlZC4KICAgICAqLwogICAgZ2V0UGF0aDogZnVuY3Rpb24oaSkgewogICAgICByZXR1cm4gKHR5cGVvZihpKSA9PT0gJ3VuZGVmaW5lZCcpID8gZnJhZy5wYXRoIDogZnJhZy5wYXRoW2ldOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IHF1ZXJ5LCB2YWx1ZXMgZm9yIGEga2V5LCBvciB2YWx1ZSBmb3IgYSBrZXkgaW5kZXguCiAgICAgKgogICAgICogQHBhcmFtIGsgb3B0aW9uYWwgcXVlcnkga2V5LgogICAgICogQHBhcmFtIGkgb3B0aW9uYWwgcXVlcnkga2V5IGluZGV4LgogICAgICoKICAgICAqIEByZXR1cm4gcXVlcnksIHZhbHVlcyBmb3IgYSBrZXksIG9yIHZhbHVlIGZvciBhIGtleSBpbmRleC4KICAgICAqLwogICAgZ2V0UXVlcnk6IGZ1bmN0aW9uKGssIGkpIHsKICAgICAgdmFyIHJ2YWw7CiAgICAgIGlmKHR5cGVvZihrKSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBydmFsID0gZnJhZy5xdWVyeTsKICAgICAgfSBlbHNlIHsKICAgICAgICBydmFsID0gZnJhZy5xdWVyeVtrXTsKICAgICAgICBpZihydmFsICYmIHR5cGVvZihpKSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICBydmFsID0gcnZhbFtpXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHJ2YWw7CiAgICB9LAogICAgZ2V0UXVlcnlMYXN0OiBmdW5jdGlvbihrLCBfZGVmYXVsdCkgewogICAgICB2YXIgcnZhbDsKICAgICAgdmFyIHZhbHMgPSByZXEuZ2V0UXVlcnkoayk7CiAgICAgIGlmKHZhbHMpIHsKICAgICAgICBydmFsID0gdmFsc1t2YWxzLmxlbmd0aCAtIDFdOwogICAgICB9IGVsc2UgewogICAgICAgIHJ2YWwgPSBfZGVmYXVsdDsKICAgICAgfQogICAgICByZXR1cm4gcnZhbDsKICAgIH0KICB9OwogIHJldHVybiByZXE7Cn07CgovKioKICogTWFrZXMgYSBVUkkgb3V0IG9mIGEgcGF0aCwgYW4gb2JqZWN0IHdpdGggcXVlcnkgcGFyYW1ldGVycywgYW5kIGEKICogZnJhZ21lbnQuIFVzZXMgalF1ZXJ5LnBhcmFtKCkgaW50ZXJuYWxseSBmb3IgcXVlcnkgc3RyaW5nIGNyZWF0aW9uLgogKiBJZiB0aGUgcGF0aCBpcyBhbiBhcnJheSwgaXQgd2lsbCBiZSBqb2luZWQgd2l0aCAnLycuCiAqCiAqIEBwYXJhbSBwYXRoIHN0cmluZyBwYXRoIG9yIGFycmF5IG9mIHN0cmluZ3MuCiAqIEBwYXJhbSBxdWVyeSBvYmplY3Qgd2l0aCBxdWVyeSBwYXJhbWV0ZXJzLiAob3B0aW9uYWwpCiAqIEBwYXJhbSBmcmFnbWVudCBmcmFnbWVudCBzdHJpbmcuIChvcHRpb25hbCkKICoKICogQHJldHVybiBzdHJpbmcgb2JqZWN0IHdpdGggcmVxdWVzdCBwYXJhbWV0ZXJzLgogKi8KdXRpbC5tYWtlTGluayA9IGZ1bmN0aW9uKHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCkgewogIC8vIGpvaW4gcGF0aCBwYXJ0cyBpZiBuZWVkZWQKICBwYXRoID0galF1ZXJ5LmlzQXJyYXkocGF0aCkgPyBwYXRoLmpvaW4oJy8nKSA6IHBhdGg7CgogIHZhciBxc3RyID0galF1ZXJ5LnBhcmFtKHF1ZXJ5IHx8IHt9KTsKICBmcmFnbWVudCA9IGZyYWdtZW50IHx8ICcnOwogIHJldHVybiBwYXRoICsKICAgICgocXN0ci5sZW5ndGggPiAwKSA/ICgnPycgKyBxc3RyKSA6ICcnKSArCiAgICAoKGZyYWdtZW50Lmxlbmd0aCA+IDApID8gKCcjJyArIGZyYWdtZW50KSA6ICcnKTsKfTsKCi8qKgogKiBGb2xsb3dzIGEgcGF0aCBvZiBrZXlzIGRlZXAgaW50byBhbiBvYmplY3QgaGllcmFyY2h5IGFuZCBzZXQgYSB2YWx1ZS4KICogSWYgYSBrZXkgZG9lcyBub3QgZXhpc3Qgb3IgaXQncyB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0LCBjcmVhdGUgYW4KICogb2JqZWN0IGluIGl0J3MgcGxhY2UuIFRoaXMgY2FuIGJlIGRlc3RydWN0aXZlIHRvIGEgb2JqZWN0IHRyZWUgaWYKICogbGVhZiBub2RlcyBhcmUgZ2l2ZW4gYXMgbm9uLWZpbmFsIHBhdGgga2V5cy4KICogVXNlZCB0byBhdm9pZCBleGNlcHRpb25zIGZyb20gbWlzc2luZyBwYXJ0cyBvZiB0aGUgcGF0aC4KICoKICogQHBhcmFtIG9iamVjdCB0aGUgc3RhcnRpbmcgb2JqZWN0LgogKiBAcGFyYW0ga2V5cyBhbiBhcnJheSBvZiBzdHJpbmcga2V5cy4KICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXQuCiAqLwp1dGlsLnNldFBhdGggPSBmdW5jdGlvbihvYmplY3QsIGtleXMsIHZhbHVlKSB7CiAgLy8gbmVlZCB0byBzdGFydCBhdCBhbiBvYmplY3QKICBpZih0eXBlb2Yob2JqZWN0KSA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7CiAgICB2YXIgaSA9IDA7CiAgICB2YXIgbGVuID0ga2V5cy5sZW5ndGg7CiAgICB3aGlsZShpIDwgbGVuKSB7CiAgICAgIHZhciBuZXh0ID0ga2V5c1tpKytdOwogICAgICBpZihpID09IGxlbikgewogICAgICAgIC8vIGxhc3QKICAgICAgICBvYmplY3RbbmV4dF0gPSB2YWx1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBtb3JlCiAgICAgICAgdmFyIGhhc05leHQgPSAobmV4dCBpbiBvYmplY3QpOwogICAgICAgIGlmKCFoYXNOZXh0IHx8CiAgICAgICAgICAoaGFzTmV4dCAmJiB0eXBlb2Yob2JqZWN0W25leHRdKSAhPT0gJ29iamVjdCcpIHx8CiAgICAgICAgICAoaGFzTmV4dCAmJiBvYmplY3RbbmV4dF0gPT09IG51bGwpKSB7CiAgICAgICAgICBvYmplY3RbbmV4dF0gPSB7fTsKICAgICAgICB9CiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W25leHRdOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyoqCiAqIEZvbGxvd3MgYSBwYXRoIG9mIGtleXMgZGVlcCBpbnRvIGFuIG9iamVjdCBoaWVyYXJjaHkgYW5kIHJldHVybiBhIHZhbHVlLgogKiBJZiBhIGtleSBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGFuIG9iamVjdCBpbiBpdCdzIHBsYWNlLgogKiBVc2VkIHRvIGF2b2lkIGV4Y2VwdGlvbnMgZnJvbSBtaXNzaW5nIHBhcnRzIG9mIHRoZSBwYXRoLgogKgogKiBAcGFyYW0gb2JqZWN0IHRoZSBzdGFydGluZyBvYmplY3QuCiAqIEBwYXJhbSBrZXlzIGFuIGFycmF5IG9mIHN0cmluZyBrZXlzLgogKiBAcGFyYW0gX2RlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHBhdGggbm90IGZvdW5kLgogKgogKiBAcmV0dXJuIHRoZSB2YWx1ZSBhdCB0aGUgcGF0aCBpZiBmb3VuZCwgZWxzZSBkZWZhdWx0IGlmIGdpdmVuLCBlbHNlCiAqICAgICAgICAgdW5kZWZpbmVkLgogKi8KdXRpbC5nZXRQYXRoID0gZnVuY3Rpb24ob2JqZWN0LCBrZXlzLCBfZGVmYXVsdCkgewogIHZhciBpID0gMDsKICB2YXIgbGVuID0ga2V5cy5sZW5ndGg7CiAgdmFyIGhhc05leHQgPSB0cnVlOwogIHdoaWxlKGhhc05leHQgJiYgaSA8IGxlbiAmJgogICAgdHlwZW9mKG9iamVjdCkgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCkgewogICAgdmFyIG5leHQgPSBrZXlzW2krK107CiAgICBoYXNOZXh0ID0gbmV4dCBpbiBvYmplY3Q7CiAgICBpZihoYXNOZXh0KSB7CiAgICAgIG9iamVjdCA9IG9iamVjdFtuZXh0XTsKICAgIH0KICB9CiAgcmV0dXJuIChoYXNOZXh0ID8gb2JqZWN0IDogX2RlZmF1bHQpOwp9OwoKLyoqCiAqIEZvbGxvdyBhIHBhdGggb2Yga2V5cyBkZWVwIGludG8gYW4gb2JqZWN0IGhpZXJhcmNoeSBhbmQgZGVsZXRlIHRoZQogKiBsYXN0IG9uZS4gSWYgYSBrZXkgZG9lcyBub3QgZXhpc3QsIGRvIG5vdGhpbmcuCiAqIFVzZWQgdG8gYXZvaWQgZXhjZXB0aW9ucyBmcm9tIG1pc3NpbmcgcGFydHMgb2YgdGhlIHBhdGguCiAqCiAqIEBwYXJhbSBvYmplY3QgdGhlIHN0YXJ0aW5nIG9iamVjdC4KICogQHBhcmFtIGtleXMgYW4gYXJyYXkgb2Ygc3RyaW5nIGtleXMuCiAqLwp1dGlsLmRlbGV0ZVBhdGggPSBmdW5jdGlvbihvYmplY3QsIGtleXMpIHsKICAvLyBuZWVkIHRvIHN0YXJ0IGF0IGFuIG9iamVjdAogIGlmKHR5cGVvZihvYmplY3QpID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwpIHsKICAgIHZhciBpID0gMDsKICAgIHZhciBsZW4gPSBrZXlzLmxlbmd0aDsKICAgIHdoaWxlKGkgPCBsZW4pIHsKICAgICAgdmFyIG5leHQgPSBrZXlzW2krK107CiAgICAgIGlmKGkgPT0gbGVuKSB7CiAgICAgICAgLy8gbGFzdAogICAgICAgIGRlbGV0ZSBvYmplY3RbbmV4dF07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gbW9yZQogICAgICAgIGlmKCEobmV4dCBpbiBvYmplY3QpIHx8CiAgICAgICAgICAodHlwZW9mKG9iamVjdFtuZXh0XSkgIT09ICdvYmplY3QnKSB8fAogICAgICAgICAgKG9iamVjdFtuZXh0XSA9PT0gbnVsbCkpIHsKICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W25leHRdOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyoqCiAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBlbXB0eS4KICoKICogVGFrZW4gZnJvbToKICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82Nzk5MTUvaG93LWRvLWktdGVzdC1mb3ItYW4tZW1wdHktamF2YXNjcmlwdC1vYmplY3QtZnJvbS1qc29uLzY3OTkzNyM2Nzk5MzcKICoKICogQHBhcmFtIG9iamVjdCB0aGUgb2JqZWN0IHRvIGNoZWNrLgogKi8KdXRpbC5pc0VtcHR5ID0gZnVuY3Rpb24ob2JqKSB7CiAgZm9yKHZhciBwcm9wIGluIG9iaikgewogICAgaWYob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CiAgcmV0dXJuIHRydWU7Cn07CgovKioKICogRm9ybWF0IHdpdGggc2ltcGxlIHByaW50Zi1zdHlsZSBpbnRlcnBvbGF0aW9uLgogKgogKiAlJTogbGl0ZXJhbCAnJScKICogJXMsJW86IGNvbnZlcnQgbmV4dCBhcmd1bWVudCBpbnRvIGEgc3RyaW5nLgogKgogKiBAcGFyYW0gZm9ybWF0IHRoZSBzdHJpbmcgdG8gZm9ybWF0LgogKiBAcGFyYW0gLi4uIGFyZ3VtZW50cyB0byBpbnRlcnBvbGF0ZSBpbnRvIHRoZSBmb3JtYXQgc3RyaW5nLgogKi8KdXRpbC5mb3JtYXQgPSBmdW5jdGlvbihmb3JtYXQpIHsKICB2YXIgcmUgPSAvJS4vZzsKICAvLyBjdXJyZW50IG1hdGNoCiAgdmFyIG1hdGNoOwogIC8vIGN1cnJlbnQgcGFydAogIHZhciBwYXJ0OwogIC8vIGN1cnJlbnQgYXJnIGluZGV4CiAgdmFyIGFyZ2kgPSAwOwogIC8vIGNvbGxlY3RlZCBwYXJ0cyB0byByZWNvbWJpbmUgbGF0ZXIKICB2YXIgcGFydHMgPSBbXTsKICAvLyBsYXN0IGluZGV4IGZvdW5kCiAgdmFyIGxhc3QgPSAwOwogIC8vIGxvb3Agd2hpbGUgbWF0Y2hlcyByZW1haW4KICB3aGlsZSgobWF0Y2ggPSByZS5leGVjKGZvcm1hdCkpKSB7CiAgICBwYXJ0ID0gZm9ybWF0LnN1YnN0cmluZyhsYXN0LCByZS5sYXN0SW5kZXggLSAyKTsKICAgIC8vIGRvbid0IGFkZCBlbXB0eSBzdHJpbmdzIChpZSwgcGFydHMgYmV0d2VlbiAlcyVzKQogICAgaWYocGFydC5sZW5ndGggPiAwKSB7CiAgICAgIHBhcnRzLnB1c2gocGFydCk7CiAgICB9CiAgICBsYXN0ID0gcmUubGFzdEluZGV4OwogICAgLy8gc3dpdGNoIG9uICUgY29kZQogICAgdmFyIGNvZGUgPSBtYXRjaFswXVsxXTsKICAgIHN3aXRjaChjb2RlKSB7CiAgICBjYXNlICdzJzoKICAgIGNhc2UgJ28nOgogICAgICAvLyBjaGVjayBpZiBlbm91Z2ggYXJndW1lbnRzIHdlcmUgZ2l2ZW4KICAgICAgaWYoYXJnaSA8IGFyZ3VtZW50cy5sZW5ndGgpIHsKICAgICAgICBwYXJ0cy5wdXNoKGFyZ3VtZW50c1thcmdpKysgKyAxXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcGFydHMucHVzaCgnPD8+Jyk7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICAvLyBGSVhNRTogZG8gcHJvcGVyIGZvcm1hdGluZyBmb3IgbnVtYmVycywgZXRjCiAgICAvL2Nhc2UgJ2YnOgogICAgLy9jYXNlICdkJzoKICAgIGNhc2UgJyUnOgogICAgICBwYXJ0cy5wdXNoKCclJyk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgLy9wYXJ0cy5wdXNoKCc8JyArICclJyArIGNvZGUgKyAnPz4nKTsKICAgICAgcGFydHMucHVzaCgnPFx1MDAyMycgKyBjb2RlICsgJz8+Jyk7IC8vIE5lZWQgdG8gZXNjYXBlIHRoaXMgbGluZSBmb3IgQVNQLm5ldAogICAgfQogIH0KICAvLyBhZGQgdHJhaWxpbmcgcGFydCBvZiBmb3JtYXQgc3RyaW5nCiAgcGFydHMucHVzaChmb3JtYXQuc3Vic3RyaW5nKGxhc3QpKTsKICByZXR1cm4gcGFydHMuam9pbignJyk7Cn07CgovKioKICogRm9ybWF0cyBhIG51bWJlci4KICoKICogaHR0cDovL3NuaXBwbHIuY29tL3ZpZXcvNTk0NS9qYXZhc2NyaXB0LW51bWJlcmZvcm1hdC0tcG9ydGVkLWZyb20tcGhwLwogKi8KdXRpbC5mb3JtYXROdW1iZXIgPSBmdW5jdGlvbihudW1iZXIsIGRlY2ltYWxzLCBkZWNfcG9pbnQsIHRob3VzYW5kc19zZXApIHsKICAvLyBodHRwOi8va2V2aW4udmFuem9ubmV2ZWxkLm5ldAogIC8vICsgICBvcmlnaW5hbCBieTogSm9uYXMgUmFvbmkgU29hcmVzIFNpbHZhIChodHRwOi8vd3d3LmpzZnJvbWhlbGwuY29tKQogIC8vICsgICBpbXByb3ZlZCBieTogS2V2aW4gdmFuIFpvbm5ldmVsZCAoaHR0cDovL2tldmluLnZhbnpvbm5ldmVsZC5uZXQpCiAgLy8gKyAgICAgYnVnZml4IGJ5OiBNaWNoYWVsIFdoaXRlIChodHRwOi8vY3Jlc3RpZGcuY29tKQogIC8vICsgICAgIGJ1Z2ZpeCBieTogQmVuamFtaW4gTHVwdG9uCiAgLy8gKyAgICAgYnVnZml4IGJ5OiBBbGxhbiBKZW5zZW4gKGh0dHA6Ly93d3cud2ludGVybmV0Lm5vKQogIC8vICsgICAgcmV2aXNlZCBieTogSm9uYXMgUmFvbmkgU29hcmVzIFNpbHZhIChodHRwOi8vd3d3LmpzZnJvbWhlbGwuY29tKQogIC8vICogICAgIGV4YW1wbGUgMTogbnVtYmVyX2Zvcm1hdCgxMjM0LjU2NzgsIDIsICcuJywgJycpOwogIC8vICogICAgIHJldHVybnMgMTogMTIzNC41NwoKICB2YXIgbiA9IG51bWJlciwgYyA9IGlzTmFOKGRlY2ltYWxzID0gTWF0aC5hYnMoZGVjaW1hbHMpKSA/IDIgOiBkZWNpbWFsczsKICB2YXIgZCA9IGRlY19wb2ludCA9PT0gdW5kZWZpbmVkID8gJywnIDogZGVjX3BvaW50OwogIHZhciB0ID0gdGhvdXNhbmRzX3NlcCA9PT0gdW5kZWZpbmVkID8KICAgJy4nIDogdGhvdXNhbmRzX3NlcCwgcyA9IG4gPCAwID8gJy0nIDogJyc7CiAgdmFyIGkgPSBwYXJzZUludCgobiA9IE1hdGguYWJzKCtuIHx8IDApLnRvRml4ZWQoYykpLCAxMCkgKyAnJzsKICB2YXIgaiA9IChpLmxlbmd0aCA+IDMpID8gaS5sZW5ndGggJSAzIDogMDsKICByZXR1cm4gcyArIChqID8gaS5zdWJzdHIoMCwgaikgKyB0IDogJycpICsKICAgIGkuc3Vic3RyKGopLnJlcGxhY2UoLyhcZHszfSkoPz1cZCkvZywgJyQxJyArIHQpICsKICAgIChjID8gZCArIE1hdGguYWJzKG4gLSBpKS50b0ZpeGVkKGMpLnNsaWNlKDIpIDogJycpOwp9OwoKLyoqCiAqIEZvcm1hdHMgYSBieXRlIHNpemUuCiAqCiAqIGh0dHA6Ly9zbmlwcGxyLmNvbS92aWV3LzU5NDkvZm9ybWF0LWh1bWFuaXplLWZpbGUtYnl0ZS1zaXplLXByZXNlbnRhdGlvbi1pbi1qYXZhc2NyaXB0LwogKi8KdXRpbC5mb3JtYXRTaXplID0gZnVuY3Rpb24oc2l6ZSkgewogIGlmKHNpemUgPj0gMTA3Mzc0MTgyNCkgewogICAgc2l6ZSA9IHV0aWwuZm9ybWF0TnVtYmVyKHNpemUgLyAxMDczNzQxODI0LCAyLCAnLicsICcnKSArICcgR2lCJzsKICB9IGVsc2UgaWYoc2l6ZSA+PSAxMDQ4NTc2KSB7CiAgICBzaXplID0gdXRpbC5mb3JtYXROdW1iZXIoc2l6ZSAvIDEwNDg1NzYsIDIsICcuJywgJycpICsgJyBNaUInOwogIH0gZWxzZSBpZihzaXplID49IDEwMjQpIHsKICAgIHNpemUgPSB1dGlsLmZvcm1hdE51bWJlcihzaXplIC8gMTAyNCwgMCkgKyAnIEtpQic7CiAgfSBlbHNlIHsKICAgIHNpemUgPSB1dGlsLmZvcm1hdE51bWJlcihzaXplLCAwKSArICcgYnl0ZXMnOwogIH0KICByZXR1cm4gc2l6ZTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBJUHY0IG9yIElQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGludG8gYnl0ZXMgKGluIG5ldHdvcmsgb3JkZXIpLgogKgogKiBAcGFyYW0gaXAgdGhlIElQdjQgb3IgSVB2NiBhZGRyZXNzIHRvIGNvbnZlcnQuCiAqCiAqIEByZXR1cm4gdGhlIDQtYnl0ZSBJUHY2IG9yIDE2LWJ5dGUgSVB2NiBhZGRyZXNzIG9yIG51bGwgaWYgdGhlIGFkZHJlc3MgY2FuJ3QKICogICAgICAgICBiZSBwYXJzZWQuCiAqLwp1dGlsLmJ5dGVzRnJvbUlQID0gZnVuY3Rpb24oaXApIHsKICBpZihpcC5pbmRleE9mKCcuJykgIT09IC0xKSB7CiAgICByZXR1cm4gdXRpbC5ieXRlc0Zyb21JUHY0KGlwKTsKICB9CiAgaWYoaXAuaW5kZXhPZignOicpICE9PSAtMSkgewogICAgcmV0dXJuIHV0aWwuYnl0ZXNGcm9tSVB2NihpcCk7CiAgfQogIHJldHVybiBudWxsOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIElQdjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGludG8gYnl0ZXMgKGluIG5ldHdvcmsgb3JkZXIpLgogKgogKiBAcGFyYW0gaXAgdGhlIElQdjQgYWRkcmVzcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSA0LWJ5dGUgYWRkcmVzcyBvciBudWxsIGlmIHRoZSBhZGRyZXNzIGNhbid0IGJlIHBhcnNlZC4KICovCnV0aWwuYnl0ZXNGcm9tSVB2NCA9IGZ1bmN0aW9uKGlwKSB7CiAgaXAgPSBpcC5zcGxpdCgnLicpOwogIGlmKGlwLmxlbmd0aCAhPT0gNCkgewogICAgcmV0dXJuIG51bGw7CiAgfQogIHZhciBiID0gdXRpbC5jcmVhdGVCdWZmZXIoKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgaXAubGVuZ3RoOyArK2kpIHsKICAgIHZhciBudW0gPSBwYXJzZUludChpcFtpXSwgMTApOwogICAgaWYoaXNOYU4obnVtKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGIucHV0Qnl0ZShudW0pOwogIH0KICByZXR1cm4gYi5nZXRCeXRlcygpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIElQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGludG8gYnl0ZXMgKGluIG5ldHdvcmsgb3JkZXIpLgogKgogKiBAcGFyYW0gaXAgdGhlIElQdjYgYWRkcmVzcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSAxNi1ieXRlIGFkZHJlc3Mgb3IgbnVsbCBpZiB0aGUgYWRkcmVzcyBjYW4ndCBiZSBwYXJzZWQuCiAqLwp1dGlsLmJ5dGVzRnJvbUlQdjYgPSBmdW5jdGlvbihpcCkgewogIHZhciBibGFua3MgPSAwOwogIGlwID0gaXAuc3BsaXQoJzonKS5maWx0ZXIoZnVuY3Rpb24oZSkgewogICAgaWYoZS5sZW5ndGggPT09IDApICsrYmxhbmtzOwogICAgcmV0dXJuIHRydWU7CiAgfSk7CiAgdmFyIHplcm9zID0gKDggLSBpcC5sZW5ndGggKyBibGFua3MpICogMjsKICB2YXIgYiA9IHV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IDg7ICsraSkgewogICAgaWYoIWlwW2ldIHx8IGlwW2ldLmxlbmd0aCA9PT0gMCkgewogICAgICBiLmZpbGxXaXRoQnl0ZSgwLCB6ZXJvcyk7CiAgICAgIHplcm9zID0gMDsKICAgICAgY29udGludWU7CiAgICB9CiAgICB2YXIgYnl0ZXMgPSB1dGlsLmhleFRvQnl0ZXMoaXBbaV0pOwogICAgaWYoYnl0ZXMubGVuZ3RoIDwgMikgewogICAgICBiLnB1dEJ5dGUoMCk7CiAgICB9CiAgICBiLnB1dEJ5dGVzKGJ5dGVzKTsKICB9CiAgcmV0dXJuIGIuZ2V0Qnl0ZXMoKTsKfTsKCi8qKgogKiBDb252ZXJ0cyA0LWJ5dGVzIGludG8gYW4gSVB2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb3IgMTYtYnl0ZXMgaW50bwogKiBhbiBJUHY2IHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhlIGJ5dGVzIG11c3QgYmUgaW4gbmV0d29yayBvcmRlci4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBJUHY0IG9yIElQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGlmIDQgb3IgMTYgYnl0ZXMsCiAqICAgICAgICAgcmVzcGVjdGl2ZWx5LCBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBudWxsLgogKi8KdXRpbC5ieXRlc1RvSVAgPSBmdW5jdGlvbihieXRlcykgewogIGlmKGJ5dGVzLmxlbmd0aCA9PT0gNCkgewogICAgcmV0dXJuIHV0aWwuYnl0ZXNUb0lQdjQoYnl0ZXMpOwogIH0KICBpZihieXRlcy5sZW5ndGggPT09IDE2KSB7CiAgICByZXR1cm4gdXRpbC5ieXRlc1RvSVB2NihieXRlcyk7CiAgfQogIHJldHVybiBudWxsOwp9OwoKLyoqCiAqIENvbnZlcnRzIDQtYnl0ZXMgaW50byBhbiBJUHY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhlIGJ5dGVzIG11c3QgYmUKICogaW4gbmV0d29yayBvcmRlci4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBJUHY0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvciBudWxsIGZvciBhbiBpbnZhbGlkICMgb2YgYnl0ZXMuCiAqLwp1dGlsLmJ5dGVzVG9JUHY0ID0gZnVuY3Rpb24oYnl0ZXMpIHsKICBpZihieXRlcy5sZW5ndGggIT09IDQpIHsKICAgIHJldHVybiBudWxsOwogIH0KICB2YXIgaXAgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKICAgIGlwLnB1c2goYnl0ZXMuY2hhckNvZGVBdChpKSk7CiAgfQogIHJldHVybiBpcC5qb2luKCcuJyk7Cn07CgovKioKICogQ29udmVydHMgMTYtYnl0ZXMgaW50byBhbiBJUHYxNiBzdHJpbmcgcmVwcmVzZW50YXRpb24uIFRoZSBieXRlcyBtdXN0IGJlCiAqIGluIG5ldHdvcmsgb3JkZXIuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZXMgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgSVB2MTYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9yIG51bGwgZm9yIGFuIGludmFsaWQgIyBvZiBieXRlcy4KICovCnV0aWwuYnl0ZXNUb0lQdjYgPSBmdW5jdGlvbihieXRlcykgewogIGlmKGJ5dGVzLmxlbmd0aCAhPT0gMTYpIHsKICAgIHJldHVybiBudWxsOwogIH0KICB2YXIgaXAgPSBbXTsKICB2YXIgemVyb0dyb3VwcyA9IFtdOwogIHZhciB6ZXJvTWF4R3JvdXAgPSAwOwogIGZvcih2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikgewogICAgdmFyIGhleCA9IHV0aWwuYnl0ZXNUb0hleChieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSk7CiAgICAvLyBjYW5vbmljYWxpemUgemVybyByZXByZXNlbnRhdGlvbgogICAgd2hpbGUoaGV4WzBdID09PSAnMCcgJiYgaGV4ICE9PSAnMCcpIHsKICAgICAgaGV4ID0gaGV4LnN1YnN0cigxKTsKICAgIH0KICAgIGlmKGhleCA9PT0gJzAnKSB7CiAgICAgIHZhciBsYXN0ID0gemVyb0dyb3Vwc1t6ZXJvR3JvdXBzLmxlbmd0aCAtIDFdOwogICAgICB2YXIgaWR4ID0gaXAubGVuZ3RoOwogICAgICBpZighbGFzdCB8fCBpZHggIT09IGxhc3QuZW5kICsgMSkgewogICAgICAgIHplcm9Hcm91cHMucHVzaCh7c3RhcnQ6IGlkeCwgZW5kOiBpZHh9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsYXN0LmVuZCA9IGlkeDsKICAgICAgICBpZigobGFzdC5lbmQgLSBsYXN0LnN0YXJ0KSA+CiAgICAgICAgICAoemVyb0dyb3Vwc1t6ZXJvTWF4R3JvdXBdLmVuZCAtIHplcm9Hcm91cHNbemVyb01heEdyb3VwXS5zdGFydCkpIHsKICAgICAgICAgIHplcm9NYXhHcm91cCA9IHplcm9Hcm91cHMubGVuZ3RoIC0gMTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGlwLnB1c2goaGV4KTsKICB9CiAgaWYoemVyb0dyb3Vwcy5sZW5ndGggPiAwKSB7CiAgICB2YXIgZ3JvdXAgPSB6ZXJvR3JvdXBzW3plcm9NYXhHcm91cF07CiAgICAvLyBvbmx5IHNob3J0ZW4gZ3JvdXAgb2YgbGVuZ3RoID4gMAogICAgaWYoZ3JvdXAuZW5kIC0gZ3JvdXAuc3RhcnQgPiAwKSB7CiAgICAgIGlwLnNwbGljZShncm91cC5zdGFydCwgZ3JvdXAuZW5kIC0gZ3JvdXAuc3RhcnQgKyAxLCAnJyk7CiAgICAgIGlmKGdyb3VwLnN0YXJ0ID09PSAwKSB7CiAgICAgICAgaXAudW5zaGlmdCgnJyk7CiAgICAgIH0KICAgICAgaWYoZ3JvdXAuZW5kID09PSA3KSB7CiAgICAgICAgaXAucHVzaCgnJyk7CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIGlwLmpvaW4oJzonKTsKfTsKCi8qKgogKiBFc3RpbWF0ZXMgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgdGhhdCBjYW4gYmUgcnVuIGNvbmN1cnJlbnRseS4gSWYKICogY3JlYXRpbmcgV2ViIFdvcmtlcnMsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBtYWluIEphdmFTY3JpcHQgcHJvY2VzcyBuZWVkcwogKiBpdHMgb3duIGNvcmUuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgdXBkYXRlIHRydWUgdG8gZm9yY2UgYW4gdXBkYXRlIChub3QgdXNlIHRoZSBjYWNoZWQgdmFsdWUpLgogKiBAcGFyYW0gY2FsbGJhY2soZXJyLCBtYXgpIGNhbGxlZCBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogKi8KdXRpbC5lc3RpbWF0ZUNvcmVzID0gZnVuY3Rpb24ob3B0aW9ucywgY2FsbGJhY2spIHsKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRpb25zOwogICAgb3B0aW9ucyA9IHt9OwogIH0KICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICBpZignY29yZXMnIGluIHV0aWwgJiYgIW9wdGlvbnMudXBkYXRlKSB7CiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdXRpbC5jb3Jlcyk7CiAgfQogIGlmKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmCiAgICAnaGFyZHdhcmVDb25jdXJyZW5jeScgaW4gbmF2aWdhdG9yICYmCiAgICBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSA+IDApIHsKICAgIHV0aWwuY29yZXMgPSBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeTsKICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB1dGlsLmNvcmVzKTsKICB9CiAgaWYodHlwZW9mIFdvcmtlciA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIC8vIHdvcmtlcnMgbm90IGF2YWlsYWJsZQogICAgdXRpbC5jb3JlcyA9IDE7CiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdXRpbC5jb3Jlcyk7CiAgfQogIGlmKHR5cGVvZiBCbG9iID09PSAndW5kZWZpbmVkJykgewogICAgLy8gY2FuJ3QgZXN0aW1hdGUsIGRlZmF1bHQgdG8gMgogICAgdXRpbC5jb3JlcyA9IDI7CiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdXRpbC5jb3Jlcyk7CiAgfQoKICAvLyBjcmVhdGUgd29ya2VyIGNvbmN1cnJlbmN5IGVzdGltYXRpb24gY29kZSBhcyBibG9iCiAgdmFyIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFsnKCcsCiAgICBmdW5jdGlvbigpIHsKICAgICAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZSkgewogICAgICAgIC8vIHJ1biB3b3JrZXIgZm9yIDQgbXMKICAgICAgICB2YXIgc3QgPSBEYXRlLm5vdygpOwogICAgICAgIHZhciBldCA9IHN0ICsgNDsKICAgICAgICB3aGlsZShEYXRlLm5vdygpIDwgZXQpOwogICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe3N0OiBzdCwgZXQ6IGV0fSk7CiAgICAgIH0pOwogICAgfS50b1N0cmluZygpLAogICcpKCknXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0J30pKTsKCiAgLy8gdGFrZSA1IHNhbXBsZXMgdXNpbmcgMTYgd29ya2VycwogIHNhbXBsZShbXSwgNSwgMTYpOwoKICBmdW5jdGlvbiBzYW1wbGUobWF4LCBzYW1wbGVzLCBudW1Xb3JrZXJzKSB7CiAgICBpZihzYW1wbGVzID09PSAwKSB7CiAgICAgIC8vIGdldCBvdmVybGFwIGF2ZXJhZ2UKICAgICAgdmFyIGF2ZyA9IE1hdGguZmxvb3IobWF4LnJlZHVjZShmdW5jdGlvbihhdmcsIHgpIHsKICAgICAgICByZXR1cm4gYXZnICsgeDsKICAgICAgfSwgMCkgLyBtYXgubGVuZ3RoKTsKICAgICAgdXRpbC5jb3JlcyA9IE1hdGgubWF4KDEsIGF2Zyk7CiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVybCk7CiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB1dGlsLmNvcmVzKTsKICAgIH0KICAgIG1hcChudW1Xb3JrZXJzLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHsKICAgICAgbWF4LnB1c2gocmVkdWNlKG51bVdvcmtlcnMsIHJlc3VsdHMpKTsKICAgICAgc2FtcGxlKG1heCwgc2FtcGxlcyAtIDEsIG51bVdvcmtlcnMpOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBtYXAobnVtV29ya2VycywgY2FsbGJhY2spIHsKICAgIHZhciB3b3JrZXJzID0gW107CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG51bVdvcmtlcnM7ICsraSkgewogICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcihibG9iVXJsKTsKICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgcmVzdWx0cy5wdXNoKGUuZGF0YSk7CiAgICAgICAgaWYocmVzdWx0cy5sZW5ndGggPT09IG51bVdvcmtlcnMpIHsKICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBudW1Xb3JrZXJzOyArK2kpIHsKICAgICAgICAgICAgd29ya2Vyc1tpXS50ZXJtaW5hdGUoKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdHMpOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHdvcmtlcnMucHVzaCh3b3JrZXIpOwogICAgfQogICAgZm9yKHZhciBpID0gMDsgaSA8IG51bVdvcmtlcnM7ICsraSkgewogICAgICB3b3JrZXJzW2ldLnBvc3RNZXNzYWdlKGkpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcmVkdWNlKG51bVdvcmtlcnMsIHJlc3VsdHMpIHsKICAgIC8vIGZpbmQgb3ZlcmxhcHBpbmcgdGltZSB3aW5kb3dzCiAgICB2YXIgb3ZlcmxhcHMgPSBbXTsKICAgIGZvcih2YXIgbiA9IDA7IG4gPCBudW1Xb3JrZXJzOyArK24pIHsKICAgICAgdmFyIHIxID0gcmVzdWx0c1tuXTsKICAgICAgdmFyIG92ZXJsYXAgPSBvdmVybGFwc1tuXSA9IFtdOwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbnVtV29ya2VyczsgKytpKSB7CiAgICAgICAgaWYobiA9PT0gaSkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHZhciByMiA9IHJlc3VsdHNbaV07CiAgICAgICAgaWYoKHIxLnN0ID4gcjIuc3QgJiYgcjEuc3QgPCByMi5ldCkgfHwKICAgICAgICAgIChyMi5zdCA+IHIxLnN0ICYmIHIyLnN0IDwgcjEuZXQpKSB7CiAgICAgICAgICBvdmVybGFwLnB1c2goaSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAvLyBnZXQgbWF4aW11bSBvdmVybGFwcyAuLi4gZG9uJ3QgaW5jbHVkZSBvdmVybGFwcGluZyB3b3JrZXIgaXRzZWxmCiAgICAvLyBhcyB0aGUgbWFpbiBKUyBwcm9jZXNzIHdhcyBhbHNvIGJlaW5nIHNjaGVkdWxlZCBkdXJpbmcgdGhlIHdvcmsgYW5kCiAgICAvLyB3b3VsZCBoYXZlIHRvIGJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgZXN0aW1hdGUgYW55d2F5CiAgICByZXR1cm4gb3ZlcmxhcHMucmVkdWNlKGZ1bmN0aW9uKG1heCwgb3ZlcmxhcCkgewogICAgICByZXR1cm4gTWF0aC5tYXgobWF4LCBvdmVybGFwLmxlbmd0aCk7CiAgICB9LCAwKTsKICB9Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICd1dGlsJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3V0aWwnLFsncmVxdWlyZScsICdtb2R1bGUnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQ2lwaGVyIGJhc2UgQVBJLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCmZvcmdlLmNpcGhlciA9IGZvcmdlLmNpcGhlciB8fCB7fTsKCi8vIHJlZ2lzdGVyZWQgYWxnb3JpdGhtcwpmb3JnZS5jaXBoZXIuYWxnb3JpdGhtcyA9IGZvcmdlLmNpcGhlci5hbGdvcml0aG1zIHx8IHt9OwoKLyoqCiAqIENyZWF0ZXMgYSBjaXBoZXIgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZW5jcnlwdCBkYXRhIHVzaW5nIHRoZSBnaXZlbgogKiBhbGdvcml0aG0gYW5kIGtleS4gVGhlIGFsZ29yaXRobSBtYXkgYmUgcHJvdmlkZWQgYXMgYSBzdHJpbmcgdmFsdWUgZm9yIGEKICogcHJldmlvdXNseSByZWdpc3RlcmVkIGFsZ29yaXRobSBvciBpdCBtYXkgYmUgZ2l2ZW4gYXMgYSBjaXBoZXIgYWxnb3JpdGhtCiAqIEFQSSBvYmplY3QuCiAqCiAqIEBwYXJhbSBhbGdvcml0aG0gdGhlIGFsZ29yaXRobSB0byB1c2UsIGVpdGhlciBhIHN0cmluZyBvciBhbiBhbGdvcml0aG0gQVBJCiAqICAgICAgICAgIG9iamVjdC4KICogQHBhcmFtIGtleSB0aGUga2V5IHRvIHVzZSwgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMgb3IgYQogKiAgICAgICAgICBieXRlIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UuY2lwaGVyLmNyZWF0ZUNpcGhlciA9IGZ1bmN0aW9uKGFsZ29yaXRobSwga2V5KSB7CiAgdmFyIGFwaSA9IGFsZ29yaXRobTsKICBpZih0eXBlb2YgYXBpID09PSAnc3RyaW5nJykgewogICAgYXBpID0gZm9yZ2UuY2lwaGVyLmdldEFsZ29yaXRobShhcGkpOwogICAgaWYoYXBpKSB7CiAgICAgIGFwaSA9IGFwaSgpOwogICAgfQogIH0KICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGFsZ29yaXRobTogJyArIGFsZ29yaXRobSk7CiAgfQoKICAvLyBhc3N1bWUgYmxvY2sgY2lwaGVyCiAgcmV0dXJuIG5ldyBmb3JnZS5jaXBoZXIuQmxvY2tDaXBoZXIoewogICAgYWxnb3JpdGhtOiBhcGksCiAgICBrZXk6IGtleSwKICAgIGRlY3J5cHQ6IGZhbHNlCiAgfSk7Cn07CgovKioKICogQ3JlYXRlcyBhIGRlY2lwaGVyIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4KICogYWxnb3JpdGhtIGFuZCBrZXkuIFRoZSBhbGdvcml0aG0gbWF5IGJlIHByb3ZpZGVkIGFzIGEgc3RyaW5nIHZhbHVlIGZvciBhCiAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBhbGdvcml0aG0gb3IgaXQgbWF5IGJlIGdpdmVuIGFzIGEgY2lwaGVyIGFsZ29yaXRobQogKiBBUEkgb2JqZWN0LgogKgogKiBAcGFyYW0gYWxnb3JpdGhtIHRoZSBhbGdvcml0aG0gdG8gdXNlLCBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gYWxnb3JpdGhtIEFQSQogKiAgICAgICAgICBvYmplY3QuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB1c2UsIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIG9yIGEKICogICAgICAgICAgYnl0ZSBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlciA9IGZ1bmN0aW9uKGFsZ29yaXRobSwga2V5KSB7CiAgdmFyIGFwaSA9IGFsZ29yaXRobTsKICBpZih0eXBlb2YgYXBpID09PSAnc3RyaW5nJykgewogICAgYXBpID0gZm9yZ2UuY2lwaGVyLmdldEFsZ29yaXRobShhcGkpOwogICAgaWYoYXBpKSB7CiAgICAgIGFwaSA9IGFwaSgpOwogICAgfQogIH0KICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGFsZ29yaXRobTogJyArIGFsZ29yaXRobSk7CiAgfQoKICAvLyBhc3N1bWUgYmxvY2sgY2lwaGVyCiAgcmV0dXJuIG5ldyBmb3JnZS5jaXBoZXIuQmxvY2tDaXBoZXIoewogICAgYWxnb3JpdGhtOiBhcGksCiAgICBrZXk6IGtleSwKICAgIGRlY3J5cHQ6IHRydWUKICB9KTsKfTsKCi8qKgogKiBSZWdpc3RlcnMgYW4gYWxnb3JpdGhtIGJ5IG5hbWUuIElmIHRoZSBuYW1lIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQsIHRoZQogKiBhbGdvcml0aG0gQVBJIG9iamVjdCB3aWxsIGJlIG92ZXJ3cml0dGVuLgogKgogKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgYWxnb3JpdGhtLgogKiBAcGFyYW0gYWxnb3JpdGhtIHRoZSBhbGdvcml0aG0gQVBJIG9iamVjdC4KICovCmZvcmdlLmNpcGhlci5yZWdpc3RlckFsZ29yaXRobSA9IGZ1bmN0aW9uKG5hbWUsIGFsZ29yaXRobSkgewogIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKCk7CiAgZm9yZ2UuY2lwaGVyLmFsZ29yaXRobXNbbmFtZV0gPSBhbGdvcml0aG07Cn07CgovKioKICogR2V0cyBhIHJlZ2lzdGVyZWQgYWxnb3JpdGhtIGJ5IG5hbWUuCiAqCiAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBhbGdvcml0aG0uCiAqCiAqIEByZXR1cm4gdGhlIGFsZ29yaXRobSwgaWYgZm91bmQsIG51bGwgaWYgbm90LgogKi8KZm9yZ2UuY2lwaGVyLmdldEFsZ29yaXRobSA9IGZ1bmN0aW9uKG5hbWUpIHsKICBuYW1lID0gbmFtZS50b1VwcGVyQ2FzZSgpOwogIGlmKG5hbWUgaW4gZm9yZ2UuY2lwaGVyLmFsZ29yaXRobXMpIHsKICAgIHJldHVybiBmb3JnZS5jaXBoZXIuYWxnb3JpdGhtc1tuYW1lXTsKICB9CiAgcmV0dXJuIG51bGw7Cn07Cgp2YXIgQmxvY2tDaXBoZXIgPSBmb3JnZS5jaXBoZXIuQmxvY2tDaXBoZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgdGhpcy5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICB0aGlzLm1vZGUgPSB0aGlzLmFsZ29yaXRobS5tb2RlOwogIHRoaXMuYmxvY2tTaXplID0gdGhpcy5tb2RlLmJsb2NrU2l6ZTsKICB0aGlzLl9maW5pc2ggPSBmYWxzZTsKICB0aGlzLl9pbnB1dCA9IG51bGw7CiAgdGhpcy5vdXRwdXQgPSBudWxsOwogIHRoaXMuX29wID0gb3B0aW9ucy5kZWNyeXB0ID8gdGhpcy5tb2RlLmRlY3J5cHQgOiB0aGlzLm1vZGUuZW5jcnlwdDsKICB0aGlzLl9kZWNyeXB0ID0gb3B0aW9ucy5kZWNyeXB0OwogIHRoaXMuYWxnb3JpdGhtLmluaXRpYWxpemUob3B0aW9ucyk7Cn07CgovKioKICogU3RhcnRzIG9yIHJlc3RhcnRzIHRoZSBlbmNyeXB0aW9uIG9yIGRlY3J5cHRpb24gcHJvY2Vzcywgd2hpY2hldmVyCiAqIHdhcyBwcmV2aW91c2x5IGNvbmZpZ3VyZWQuCiAqCiAqIEZvciBub24tR0NNIG1vZGUsIHRoZSBJViBtYXkgYmUgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5CiAqIG9mIGJ5dGVzLCBhIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgaW50ZWdlcnMuIElmIHRoZSBJViBpcyBpbgogKiBieXRlcywgdGhlbiBpdCBtdXN0IGJlIE5iICgxNikgYnl0ZXMgaW4gbGVuZ3RoLiBJZiB0aGUgSVYgaXMgZ2l2ZW4gaW4gYXMKICogMzItYml0IGludGVnZXJzLCB0aGVuIGl0IG11c3QgYmUgNCBpbnRlZ2VycyBsb25nLgogKgogKiBOb3RlOiBhbiBJViBpcyBub3QgcmVxdWlyZWQgb3IgdXNlZCBpbiBFQ0IgbW9kZS4KICoKICogRm9yIEdDTS1tb2RlLCB0aGUgSVYgbXVzdCBiZSBnaXZlbiBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcyBvcgogKiBhIGJ5dGUgYnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHNob3VsZCBiZSAxMiAoOTYgYml0cykgYXMgcmVjb21tZW5kZWQKICogYnkgTklTVCBTUC04MDAtMzhEIGJ1dCBhbm90aGVyIGxlbmd0aCBtYXkgYmUgZ2l2ZW4uCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YKICogICAgICAgICAgICBieXRlcywgbnVsbCB0byByZXVzZSB0aGUgbGFzdCBjaXBoZXJlZCBibG9jayBmcm9tIGEgcHJldmlvdXMKICogICAgICAgICAgICB1cGRhdGUoKSAodGhpcyAicmVzaWR1ZSIgbWV0aG9kIGlzIGZvciBsZWdhY3kgc3VwcG9ydCBvbmx5KS4KICogICAgICAgICAgYWRkaXRpb25hbERhdGEgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhIGFzIGEgYmluYXJ5LWVuY29kZWQKICogICAgICAgICAgICBzdHJpbmcgb2YgYnl0ZXMsIGZvciAnR0NNJyBtb2RlLCAoZGVmYXVsdDogbm9uZSkuCiAqICAgICAgICAgIHRhZ0xlbmd0aCBkZXNpcmVkIGxlbmd0aCBvZiBhdXRoZW50aWNhdGlvbiB0YWcsIGluIGJpdHMsIGZvcgogKiAgICAgICAgICAgICdHQ00nIG1vZGUgKDAtMTI4LCBkZWZhdWx0OiAxMjgpLgogKiAgICAgICAgICB0YWcgdGhlIGF1dGhlbnRpY2F0aW9uIHRhZyB0byBjaGVjayBpZiBkZWNyeXB0aW5nLCBhcyBhCiAqICAgICAgICAgICAgIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcy4KICogICAgICAgICAgb3V0cHV0IHRoZSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKi8KQmxvY2tDaXBoZXIucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHZhciBvcHRzID0ge307CiAgZm9yKHZhciBrZXkgaW4gb3B0aW9ucykgewogICAgb3B0c1trZXldID0gb3B0aW9uc1trZXldOwogIH0KICBvcHRzLmRlY3J5cHQgPSB0aGlzLl9kZWNyeXB0OwogIHRoaXMuX2ZpbmlzaCA9IGZhbHNlOwogIHRoaXMuX2lucHV0ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICB0aGlzLm91dHB1dCA9IG9wdGlvbnMub3V0cHV0IHx8IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5tb2RlLnN0YXJ0KG9wdHMpOwp9OwoKLyoqCiAqIFVwZGF0ZXMgdGhlIG5leHQgYmxvY2sgYWNjb3JkaW5nIHRvIHRoZSBjaXBoZXIgbW9kZS4KICoKICogQHBhcmFtIGlucHV0IHRoZSBidWZmZXIgdG8gcmVhZCBmcm9tLgogKi8KQmxvY2tDaXBoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGlucHV0KSB7CiAgaWYoaW5wdXQpIHsKICAgIC8vIGlucHV0IGdpdmVuLCBzbyBlbXB0eSBpdCBpbnRvIHRoZSBpbnB1dCBidWZmZXIKICAgIHRoaXMuX2lucHV0LnB1dEJ1ZmZlcihpbnB1dCk7CiAgfQoKICAvLyBkbyBjaXBoZXIgb3BlcmF0aW9uIHVudGlsIGl0IG5lZWRzIG1vcmUgaW5wdXQgYW5kIG5vdCBmaW5pc2hlZAogIHdoaWxlKCF0aGlzLl9vcC5jYWxsKHRoaXMubW9kZSwgdGhpcy5faW5wdXQsIHRoaXMub3V0cHV0LCB0aGlzLl9maW5pc2gpICYmCiAgICAhdGhpcy5fZmluaXNoKSB7fQoKICAvLyBmcmVlIGNvbnN1bWVkIG1lbW9yeSBmcm9tIGlucHV0IGJ1ZmZlcgogIHRoaXMuX2lucHV0LmNvbXBhY3QoKTsKfTsKCi8qKgogKiBGaW5pc2hlcyBlbmNyeXB0aW5nIG9yIGRlY3J5cHRpbmcuCiAqCiAqIEBwYXJhbSBwYWQgYSBwYWRkaW5nIGZ1bmN0aW9uIHRvIHVzZSBpbiBDQkMgbW9kZSwgbnVsbCBmb3IgZGVmYXVsdCwKICogICAgICAgICAgc2lnbmF0dXJlKGJsb2NrU2l6ZSwgYnVmZmVyLCBkZWNyeXB0KS4KICoKICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIG9uIGVycm9yLgogKi8KQmxvY2tDaXBoZXIucHJvdG90eXBlLmZpbmlzaCA9IGZ1bmN0aW9uKHBhZCkgewogIC8vIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHcvZGVwcmVjYXRlZCBwYWRkaW5nIEFQSQogIC8vIE5vdGU6IHdpbGwgb3ZlcndyaXRlIHBhZGRpbmcgZnVuY3Rpb25zIGV2ZW4gYWZ0ZXIgYW5vdGhlciBzdGFydCgpIGNhbGwKICBpZihwYWQgJiYgKHRoaXMubW9kZS5uYW1lID09PSAnRUNCJyB8fCB0aGlzLm1vZGUubmFtZSA9PT0gJ0NCQycpKSB7CiAgICB0aGlzLm1vZGUucGFkID0gZnVuY3Rpb24oaW5wdXQpIHsKICAgICAgcmV0dXJuIHBhZCh0aGlzLmJsb2NrU2l6ZSwgaW5wdXQsIGZhbHNlKTsKICAgIH07CiAgICB0aGlzLm1vZGUudW5wYWQgPSBmdW5jdGlvbihvdXRwdXQpIHsKICAgICAgcmV0dXJuIHBhZCh0aGlzLmJsb2NrU2l6ZSwgb3V0cHV0LCB0cnVlKTsKICAgIH07CiAgfQoKICAvLyBidWlsZCBvcHRpb25zIGZvciBwYWRkaW5nIGFuZCBhZnRlckZpbmlzaCBmdW5jdGlvbnMKICB2YXIgb3B0aW9ucyA9IHt9OwogIG9wdGlvbnMuZGVjcnlwdCA9IHRoaXMuX2RlY3J5cHQ7CgogIC8vIGdldCAjIG9mIGJ5dGVzIHRoYXQgd29uJ3QgZmlsbCBhIGJsb2NrCiAgb3B0aW9ucy5vdmVyZmxvdyA9IHRoaXMuX2lucHV0Lmxlbmd0aCgpICUgdGhpcy5ibG9ja1NpemU7CgogIGlmKCF0aGlzLl9kZWNyeXB0ICYmIHRoaXMubW9kZS5wYWQpIHsKICAgIGlmKCF0aGlzLm1vZGUucGFkKHRoaXMuX2lucHV0LCBvcHRpb25zKSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvLyBkbyBmaW5hbCB1cGRhdGUKICB0aGlzLl9maW5pc2ggPSB0cnVlOwogIHRoaXMudXBkYXRlKCk7CgogIGlmKHRoaXMuX2RlY3J5cHQgJiYgdGhpcy5tb2RlLnVucGFkKSB7CiAgICBpZighdGhpcy5tb2RlLnVucGFkKHRoaXMub3V0cHV0LCBvcHRpb25zKSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICBpZih0aGlzLm1vZGUuYWZ0ZXJGaW5pc2gpIHsKICAgIGlmKCF0aGlzLm1vZGUuYWZ0ZXJGaW5pc2godGhpcy5vdXRwdXQsIG9wdGlvbnMpKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIHJldHVybiB0cnVlOwp9OwoKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2NpcGhlcic7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9jaXBoZXInLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFN1cHBvcnRlZCBjaXBoZXIgbW9kZXMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UuY2lwaGVyID0gZm9yZ2UuY2lwaGVyIHx8IHt9OwoKLy8gc3VwcG9ydGVkIGNpcGhlciBtb2Rlcwp2YXIgbW9kZXMgPSBmb3JnZS5jaXBoZXIubW9kZXMgPSBmb3JnZS5jaXBoZXIubW9kZXMgfHwge307CgoKLyoqIEVsZWN0cm9uaWMgY29kZWJvb2sgKEVDQikgKERvbid0IHVzZSB0aGlzOyBpdCdzIG5vdCBzZWN1cmUpICoqLwoKbW9kZXMuZWNiID0gZnVuY3Rpb24ob3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHRoaXMubmFtZSA9ICdFQ0InOwogIHRoaXMuY2lwaGVyID0gb3B0aW9ucy5jaXBoZXI7CiAgdGhpcy5ibG9ja1NpemUgPSBvcHRpb25zLmJsb2NrU2l6ZSB8fCAxNjsKICB0aGlzLl9pbnRzID0gdGhpcy5ibG9ja1NpemUgLyA0OwogIHRoaXMuX2luQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7Cn07Cgptb2Rlcy5lY2IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24ob3B0aW9ucykge307Cgptb2Rlcy5lY2IucHJvdG90eXBlLmVuY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGVuY3J5cHQKICBpZihpbnB1dC5sZW5ndGgoKSA8IHRoaXMuYmxvY2tTaXplICYmICEoZmluaXNoICYmIGlucHV0Lmxlbmd0aCgpID4gMCkpIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZ2V0IG5leHQgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9pbkJsb2NrW2ldID0gaW5wdXQuZ2V0SW50MzIoKTsKICB9CgogIC8vIGVuY3J5cHQgYmxvY2sKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gd3JpdGUgb3V0cHV0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldKTsKICB9Cn07Cgptb2Rlcy5lY2IucHJvdG90eXBlLmRlY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGRlY3J5cHQKICBpZihpbnB1dC5sZW5ndGgoKSA8IHRoaXMuYmxvY2tTaXplICYmICEoZmluaXNoICYmIGlucHV0Lmxlbmd0aCgpID4gMCkpIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZ2V0IG5leHQgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9pbkJsb2NrW2ldID0gaW5wdXQuZ2V0SW50MzIoKTsKICB9CgogIC8vIGRlY3J5cHQgYmxvY2sKICB0aGlzLmNpcGhlci5kZWNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gd3JpdGUgb3V0cHV0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldKTsKICB9Cn07Cgptb2Rlcy5lY2IucHJvdG90eXBlLnBhZCA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7CiAgLy8gYWRkIFBLQ1MjNyBwYWRkaW5nIHRvIGJsb2NrIChlYWNoIHBhZCBieXRlIGlzIHRoZQogIC8vIHZhbHVlIG9mIHRoZSBudW1iZXIgb2YgcGFkIGJ5dGVzKQogIHZhciBwYWRkaW5nID0gKGlucHV0Lmxlbmd0aCgpID09PSB0aGlzLmJsb2NrU2l6ZSA/CiAgICB0aGlzLmJsb2NrU2l6ZSA6ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0Lmxlbmd0aCgpKSk7CiAgaW5wdXQuZmlsbFdpdGhCeXRlKHBhZGRpbmcsIHBhZGRpbmcpOwogIHJldHVybiB0cnVlOwp9OwoKbW9kZXMuZWNiLnByb3RvdHlwZS51bnBhZCA9IGZ1bmN0aW9uKG91dHB1dCwgb3B0aW9ucykgewogIC8vIGNoZWNrIGZvciBlcnJvcjogaW5wdXQgZGF0YSBub3QgYSBtdWx0aXBsZSBvZiBibG9ja1NpemUKICBpZihvcHRpb25zLm92ZXJmbG93ID4gMCkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLy8gZW5zdXJlIHBhZGRpbmcgYnl0ZSBjb3VudCBpcyB2YWxpZAogIHZhciBsZW4gPSBvdXRwdXQubGVuZ3RoKCk7CiAgdmFyIGNvdW50ID0gb3V0cHV0LmF0KGxlbiAtIDEpOwogIGlmKGNvdW50ID4gKHRoaXMuYmxvY2tTaXplIDw8IDIpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAvLyB0cmltIG9mZiBwYWRkaW5nIGJ5dGVzCiAgb3V0cHV0LnRydW5jYXRlKGNvdW50KTsKICByZXR1cm4gdHJ1ZTsKfTsKCgovKiogQ2lwaGVyLWJsb2NrIENoYWluaW5nIChDQkMpICoqLwoKbW9kZXMuY2JjID0gZnVuY3Rpb24ob3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHRoaXMubmFtZSA9ICdDQkMnOwogIHRoaXMuY2lwaGVyID0gb3B0aW9ucy5jaXBoZXI7CiAgdGhpcy5ibG9ja1NpemUgPSBvcHRpb25zLmJsb2NrU2l6ZSB8fCAxNjsKICB0aGlzLl9pbnRzID0gdGhpcy5ibG9ja1NpemUgLyA0OwogIHRoaXMuX2luQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7Cn07Cgptb2Rlcy5jYmMucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogIC8vIE5vdGU6IGxlZ2FjeSBzdXBwb3J0IGZvciB1c2luZyBJViByZXNpZHVlIChoYXMgc2VjdXJpdHkgZmxhd3MpCiAgLy8gaWYgSVYgaXMgbnVsbCwgcmV1c2UgYmxvY2sgZnJvbSBwcmV2aW91cyBwcm9jZXNzaW5nCiAgaWYob3B0aW9ucy5pdiA9PT0gbnVsbCkgewogICAgLy8gbXVzdCBoYXZlIGEgcHJldmlvdXMgYmxvY2sKICAgIGlmKCF0aGlzLl9wcmV2KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBJViBwYXJhbWV0ZXIuJyk7CiAgICB9CiAgICB0aGlzLl9pdiA9IHRoaXMuX3ByZXYuc2xpY2UoMCk7CiAgfSBlbHNlIGlmKCEoJ2l2JyBpbiBvcHRpb25zKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIElWIHBhcmFtZXRlci4nKTsKICB9IGVsc2UgewogICAgLy8gc2F2ZSBJViBhcyAicHJldmlvdXMiIGJsb2NrCiAgICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogICAgdGhpcy5fcHJldiA9IHRoaXMuX2l2LnNsaWNlKDApOwogIH0KfTsKCm1vZGVzLmNiYy5wcm90b3R5cGUuZW5jcnlwdCA9IGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQsIGZpbmlzaCkgewogIC8vIG5vdCBlbm91Z2ggaW5wdXQgdG8gZW5jcnlwdAogIGlmKGlucHV0Lmxlbmd0aCgpIDwgdGhpcy5ibG9ja1NpemUgJiYgIShmaW5pc2ggJiYgaW5wdXQubGVuZ3RoKCkgPiAwKSkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvLyBnZXQgbmV4dCBibG9jawogIC8vIENCQyBYT1IncyBJViAob3IgcHJldmlvdXMgYmxvY2spIHdpdGggcGxhaW50ZXh0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgdGhpcy5faW5CbG9ja1tpXSA9IHRoaXMuX3ByZXZbaV0gXiBpbnB1dC5nZXRJbnQzMigpOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jawogIHRoaXMuY2lwaGVyLmVuY3J5cHQodGhpcy5faW5CbG9jaywgdGhpcy5fb3V0QmxvY2spOwoKICAvLyB3cml0ZSBvdXRwdXQsIHNhdmUgcHJldmlvdXMgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICBvdXRwdXQucHV0SW50MzIodGhpcy5fb3V0QmxvY2tbaV0pOwogIH0KICB0aGlzLl9wcmV2ID0gdGhpcy5fb3V0QmxvY2s7Cn07Cgptb2Rlcy5jYmMucHJvdG90eXBlLmRlY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGRlY3J5cHQKICBpZihpbnB1dC5sZW5ndGgoKSA8IHRoaXMuYmxvY2tTaXplICYmICEoZmluaXNoICYmIGlucHV0Lmxlbmd0aCgpID4gMCkpIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZ2V0IG5leHQgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9pbkJsb2NrW2ldID0gaW5wdXQuZ2V0SW50MzIoKTsKICB9CgogIC8vIGRlY3J5cHQgYmxvY2sKICB0aGlzLmNpcGhlci5kZWNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gd3JpdGUgb3V0cHV0LCBzYXZlIHByZXZpb3VzIGNpcGhlcmVkIGJsb2NrCiAgLy8gQ0JDIFhPUidzIElWIChvciBwcmV2aW91cyBibG9jaykgd2l0aCBjaXBoZXJ0ZXh0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX3ByZXZbaV0gXiB0aGlzLl9vdXRCbG9ja1tpXSk7CiAgfQogIHRoaXMuX3ByZXYgPSB0aGlzLl9pbkJsb2NrLnNsaWNlKDApOwp9OwoKbW9kZXMuY2JjLnByb3RvdHlwZS5wYWQgPSBmdW5jdGlvbihpbnB1dCwgb3B0aW9ucykgewogIC8vIGFkZCBQS0NTIzcgcGFkZGluZyB0byBibG9jayAoZWFjaCBwYWQgYnl0ZSBpcyB0aGUKICAvLyB2YWx1ZSBvZiB0aGUgbnVtYmVyIG9mIHBhZCBieXRlcykKICB2YXIgcGFkZGluZyA9IChpbnB1dC5sZW5ndGgoKSA9PT0gdGhpcy5ibG9ja1NpemUgPwogICAgdGhpcy5ibG9ja1NpemUgOiAodGhpcy5ibG9ja1NpemUgLSBpbnB1dC5sZW5ndGgoKSkpOwogIGlucHV0LmZpbGxXaXRoQnl0ZShwYWRkaW5nLCBwYWRkaW5nKTsKICByZXR1cm4gdHJ1ZTsKfTsKCm1vZGVzLmNiYy5wcm90b3R5cGUudW5wYWQgPSBmdW5jdGlvbihvdXRwdXQsIG9wdGlvbnMpIHsKICAvLyBjaGVjayBmb3IgZXJyb3I6IGlucHV0IGRhdGEgbm90IGEgbXVsdGlwbGUgb2YgYmxvY2tTaXplCiAgaWYob3B0aW9ucy5vdmVyZmxvdyA+IDApIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIC8vIGVuc3VyZSBwYWRkaW5nIGJ5dGUgY291bnQgaXMgdmFsaWQKICB2YXIgbGVuID0gb3V0cHV0Lmxlbmd0aCgpOwogIHZhciBjb3VudCA9IG91dHB1dC5hdChsZW4gLSAxKTsKICBpZihjb3VudCA+ICh0aGlzLmJsb2NrU2l6ZSA8PCAyKSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLy8gdHJpbSBvZmYgcGFkZGluZyBieXRlcwogIG91dHB1dC50cnVuY2F0ZShjb3VudCk7CiAgcmV0dXJuIHRydWU7Cn07CgoKLyoqIENpcGhlciBmZWVkYmFjayAoQ0ZCKSAqKi8KCm1vZGVzLmNmYiA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICB0aGlzLm5hbWUgPSAnQ0ZCJzsKICB0aGlzLmNpcGhlciA9IG9wdGlvbnMuY2lwaGVyOwogIHRoaXMuYmxvY2tTaXplID0gb3B0aW9ucy5ibG9ja1NpemUgfHwgMTY7CiAgdGhpcy5faW50cyA9IHRoaXMuYmxvY2tTaXplIC8gNDsKICB0aGlzLl9pbkJsb2NrID0gbnVsbDsKICB0aGlzLl9vdXRCbG9jayA9IG5ldyBBcnJheSh0aGlzLl9pbnRzKTsKICB0aGlzLl9wYXJ0aWFsQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fcGFydGlhbE91dHB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCm1vZGVzLmNmYi5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyB1c2UgSVYgYXMgZmlyc3QgaW5wdXQKICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9pdi5zbGljZSgwKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMuY2ZiLnByb3RvdHlwZS5lbmNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBlbmNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXRMZW5ndGggPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jawogIHRoaXMuY2lwaGVyLmVuY3J5cHQodGhpcy5faW5CbG9jaywgdGhpcy5fb3V0QmxvY2spOwoKICAvLyBoYW5kbGUgZnVsbCBibG9jawogIGlmKHRoaXMuX3BhcnRpYWxCeXRlcyA9PT0gMCAmJiBpbnB1dExlbmd0aCA+PSB0aGlzLmJsb2NrU2l6ZSkgewogICAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0LCB3cml0ZSBpbnB1dCBhcyBvdXRwdXQKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgdGhpcy5faW5CbG9ja1tpXSA9IGlucHV0LmdldEludDMyKCkgXiB0aGlzLl9vdXRCbG9ja1tpXTsKICAgICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX2luQmxvY2tbaV0pOwogICAgfQogICAgcmV0dXJuOwogIH0KCiAgLy8gaGFuZGxlIHBhcnRpYWwgYmxvY2sKICB2YXIgcGFydGlhbEJ5dGVzID0gKHRoaXMuYmxvY2tTaXplIC0gaW5wdXRMZW5ndGgpICUgdGhpcy5ibG9ja1NpemU7CiAgaWYocGFydGlhbEJ5dGVzID4gMCkgewogICAgcGFydGlhbEJ5dGVzID0gdGhpcy5ibG9ja1NpemUgLSBwYXJ0aWFsQnl0ZXM7CiAgfQoKICAvLyBYT1IgaW5wdXQgd2l0aCBvdXRwdXQsIHdyaXRlIGlucHV0IGFzIHBhcnRpYWwgb3V0cHV0CiAgdGhpcy5fcGFydGlhbE91dHB1dC5jbGVhcigpOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgIHRoaXMuX3BhcnRpYWxCbG9ja1tpXSA9IGlucHV0LmdldEludDMyKCkgXiB0aGlzLl9vdXRCbG9ja1tpXTsKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQucHV0SW50MzIodGhpcy5fcGFydGlhbEJsb2NrW2ldKTsKICB9CgogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIC8vIGJsb2NrIHN0aWxsIGluY29tcGxldGUsIHJlc3RvcmUgaW5wdXQgYnVmZmVyCiAgICBpbnB1dC5yZWFkIC09IHRoaXMuYmxvY2tTaXplOwogIH0gZWxzZSB7CiAgICAvLyBibG9jayBjb21wbGV0ZSwgdXBkYXRlIGlucHV0IGJsb2NrCiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSB0aGlzLl9wYXJ0aWFsQmxvY2tbaV07CiAgICB9CiAgfQoKICAvLyBza2lwIGFueSBwcmV2aW91cyBwYXJ0aWFsIGJ5dGVzCiAgaWYodGhpcy5fcGFydGlhbEJ5dGVzID4gMCkgewogICAgdGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcyh0aGlzLl9wYXJ0aWFsQnl0ZXMpOwogIH0KCiAgaWYocGFydGlhbEJ5dGVzID4gMCAmJiAhZmluaXNoKSB7CiAgICBvdXRwdXQucHV0Qnl0ZXModGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcygKICAgICAgcGFydGlhbEJ5dGVzIC0gdGhpcy5fcGFydGlhbEJ5dGVzKSk7CiAgICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSBwYXJ0aWFsQnl0ZXM7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgaW5wdXRMZW5ndGggLSB0aGlzLl9wYXJ0aWFsQnl0ZXMpKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMuY2ZiLnByb3RvdHlwZS5kZWNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBkZWNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXRMZW5ndGggPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jayAoQ0ZCIGFsd2F5cyB1c2VzIGVuY3J5cHRpb24gbW9kZSkKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gaGFuZGxlIGZ1bGwgYmxvY2sKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPT09IDAgJiYgaW5wdXRMZW5ndGggPj0gdGhpcy5ibG9ja1NpemUpIHsKICAgIC8vIFhPUiBpbnB1dCB3aXRoIG91dHB1dCwgd3JpdGUgaW5wdXQgYXMgb3V0cHV0CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSBpbnB1dC5nZXRJbnQzMigpOwogICAgICBvdXRwdXQucHV0SW50MzIodGhpcy5faW5CbG9ja1tpXSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICAgIH0KICAgIHJldHVybjsKICB9CgogIC8vIGhhbmRsZSBwYXJ0aWFsIGJsb2NrCiAgdmFyIHBhcnRpYWxCeXRlcyA9ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0TGVuZ3RoKSAlIHRoaXMuYmxvY2tTaXplOwogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIHBhcnRpYWxCeXRlcyA9IHRoaXMuYmxvY2tTaXplIC0gcGFydGlhbEJ5dGVzOwogIH0KCiAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0LCB3cml0ZSBpbnB1dCBhcyBwYXJ0aWFsIG91dHB1dAogIHRoaXMuX3BhcnRpYWxPdXRwdXQuY2xlYXIoKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9wYXJ0aWFsQmxvY2tbaV0gPSBpbnB1dC5nZXRJbnQzMigpOwogICAgdGhpcy5fcGFydGlhbE91dHB1dC5wdXRJbnQzMih0aGlzLl9wYXJ0aWFsQmxvY2tbaV0gXiB0aGlzLl9vdXRCbG9ja1tpXSk7CiAgfQoKICBpZihwYXJ0aWFsQnl0ZXMgPiAwKSB7CiAgICAvLyBibG9jayBzdGlsbCBpbmNvbXBsZXRlLCByZXN0b3JlIGlucHV0IGJ1ZmZlcgogICAgaW5wdXQucmVhZCAtPSB0aGlzLmJsb2NrU2l6ZTsKICB9IGVsc2UgewogICAgLy8gYmxvY2sgY29tcGxldGUsIHVwZGF0ZSBpbnB1dCBibG9jawogICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgICB0aGlzLl9pbkJsb2NrW2ldID0gdGhpcy5fcGFydGlhbEJsb2NrW2ldOwogICAgfQogIH0KCiAgLy8gc2tpcCBhbnkgcHJldmlvdXMgcGFydGlhbCBieXRlcwogIGlmKHRoaXMuX3BhcnRpYWxCeXRlcyA+IDApIHsKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQuZ2V0Qnl0ZXModGhpcy5fcGFydGlhbEJ5dGVzKTsKICB9CgogIGlmKHBhcnRpYWxCeXRlcyA+IDAgJiYgIWZpbmlzaCkgewogICAgb3V0cHV0LnB1dEJ5dGVzKHRoaXMuX3BhcnRpYWxPdXRwdXQuZ2V0Qnl0ZXMoCiAgICAgIHBhcnRpYWxCeXRlcyAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgdGhpcy5fcGFydGlhbEJ5dGVzID0gcGFydGlhbEJ5dGVzOwogICAgcmV0dXJuIHRydWU7CiAgfQoKICBvdXRwdXQucHV0Qnl0ZXModGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcygKICAgIGlucHV0TGVuZ3RoIC0gdGhpcy5fcGFydGlhbEJ5dGVzKSk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCi8qKiBPdXRwdXQgZmVlZGJhY2sgKE9GQikgKiovCgptb2Rlcy5vZmIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdGhpcy5uYW1lID0gJ09GQic7CiAgdGhpcy5jaXBoZXIgPSBvcHRpb25zLmNpcGhlcjsKICB0aGlzLmJsb2NrU2l6ZSA9IG9wdGlvbnMuYmxvY2tTaXplIHx8IDE2OwogIHRoaXMuX2ludHMgPSB0aGlzLmJsb2NrU2l6ZSAvIDQ7CiAgdGhpcy5faW5CbG9jayA9IG51bGw7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fcGFydGlhbE91dHB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCm1vZGVzLm9mYi5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyB1c2UgSVYgYXMgZmlyc3QgaW5wdXQKICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9pdi5zbGljZSgwKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMub2ZiLnByb3RvdHlwZS5lbmNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBlbmNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXQubGVuZ3RoKCkgPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jayAoT0ZCIGFsd2F5cyB1c2VzIGVuY3J5cHRpb24gbW9kZSkKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gaGFuZGxlIGZ1bGwgYmxvY2sKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPT09IDAgJiYgaW5wdXRMZW5ndGggPj0gdGhpcy5ibG9ja1NpemUpIHsKICAgIC8vIFhPUiBpbnB1dCB3aXRoIG91dHB1dCBhbmQgdXBkYXRlIG5leHQgaW5wdXQKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgb3V0cHV0LnB1dEludDMyKGlucHV0LmdldEludDMyKCkgXiB0aGlzLl9vdXRCbG9ja1tpXSk7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSB0aGlzLl9vdXRCbG9ja1tpXTsKICAgIH0KICAgIHJldHVybjsKICB9CgogIC8vIGhhbmRsZSBwYXJ0aWFsIGJsb2NrCiAgdmFyIHBhcnRpYWxCeXRlcyA9ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0TGVuZ3RoKSAlIHRoaXMuYmxvY2tTaXplOwogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIHBhcnRpYWxCeXRlcyA9IHRoaXMuYmxvY2tTaXplIC0gcGFydGlhbEJ5dGVzOwogIH0KCiAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0CiAgdGhpcy5fcGFydGlhbE91dHB1dC5jbGVhcigpOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQucHV0SW50MzIoaW5wdXQuZ2V0SW50MzIoKSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICB9CgogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIC8vIGJsb2NrIHN0aWxsIGluY29tcGxldGUsIHJlc3RvcmUgaW5wdXQgYnVmZmVyCiAgICBpbnB1dC5yZWFkIC09IHRoaXMuYmxvY2tTaXplOwogIH0gZWxzZSB7CiAgICAvLyBibG9jayBjb21wbGV0ZSwgdXBkYXRlIGlucHV0IGJsb2NrCiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSB0aGlzLl9vdXRCbG9ja1tpXTsKICAgIH0KICB9CgogIC8vIHNraXAgYW55IHByZXZpb3VzIHBhcnRpYWwgYnl0ZXMKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPiAwKSB7CiAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKHRoaXMuX3BhcnRpYWxCeXRlcyk7CiAgfQoKICBpZihwYXJ0aWFsQnl0ZXMgPiAwICYmICFmaW5pc2gpIHsKICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICBwYXJ0aWFsQnl0ZXMgLSB0aGlzLl9wYXJ0aWFsQnl0ZXMpKTsKICAgIHRoaXMuX3BhcnRpYWxCeXRlcyA9IHBhcnRpYWxCeXRlczsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgb3V0cHV0LnB1dEJ5dGVzKHRoaXMuX3BhcnRpYWxPdXRwdXQuZ2V0Qnl0ZXMoCiAgICBpbnB1dExlbmd0aCAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogIHRoaXMuX3BhcnRpYWxCeXRlcyA9IDA7Cn07Cgptb2Rlcy5vZmIucHJvdG90eXBlLmRlY3J5cHQgPSBtb2Rlcy5vZmIucHJvdG90eXBlLmVuY3J5cHQ7CgoKLyoqIENvdW50ZXIgKENUUikgKiovCgptb2Rlcy5jdHIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdGhpcy5uYW1lID0gJ0NUUic7CiAgdGhpcy5jaXBoZXIgPSBvcHRpb25zLmNpcGhlcjsKICB0aGlzLmJsb2NrU2l6ZSA9IG9wdGlvbnMuYmxvY2tTaXplIHx8IDE2OwogIHRoaXMuX2ludHMgPSB0aGlzLmJsb2NrU2l6ZSAvIDQ7CiAgdGhpcy5faW5CbG9jayA9IG51bGw7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fcGFydGlhbE91dHB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCm1vZGVzLmN0ci5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyB1c2UgSVYgYXMgZmlyc3QgaW5wdXQKICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9pdi5zbGljZSgwKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMuY3RyLnByb3RvdHlwZS5lbmNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBlbmNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXRMZW5ndGggPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jayAoQ1RSIGFsd2F5cyB1c2VzIGVuY3J5cHRpb24gbW9kZSkKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gaGFuZGxlIGZ1bGwgYmxvY2sKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPT09IDAgJiYgaW5wdXRMZW5ndGggPj0gdGhpcy5ibG9ja1NpemUpIHsKICAgIC8vIFhPUiBpbnB1dCB3aXRoIG91dHB1dAogICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgICBvdXRwdXQucHV0SW50MzIoaW5wdXQuZ2V0SW50MzIoKSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICAgIH0KICB9IGVsc2UgewogICAgLy8gaGFuZGxlIHBhcnRpYWwgYmxvY2sKICAgIHZhciBwYXJ0aWFsQnl0ZXMgPSAodGhpcy5ibG9ja1NpemUgLSBpbnB1dExlbmd0aCkgJSB0aGlzLmJsb2NrU2l6ZTsKICAgIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgICAgcGFydGlhbEJ5dGVzID0gdGhpcy5ibG9ja1NpemUgLSBwYXJ0aWFsQnl0ZXM7CiAgICB9CgogICAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0CiAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LmNsZWFyKCk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQucHV0SW50MzIoaW5wdXQuZ2V0SW50MzIoKSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICAgIH0KCiAgICBpZihwYXJ0aWFsQnl0ZXMgPiAwKSB7CiAgICAgIC8vIGJsb2NrIHN0aWxsIGluY29tcGxldGUsIHJlc3RvcmUgaW5wdXQgYnVmZmVyCiAgICAgIGlucHV0LnJlYWQgLT0gdGhpcy5ibG9ja1NpemU7CiAgICB9CgogICAgLy8gc2tpcCBhbnkgcHJldmlvdXMgcGFydGlhbCBieXRlcwogICAgaWYodGhpcy5fcGFydGlhbEJ5dGVzID4gMCkgewogICAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKHRoaXMuX3BhcnRpYWxCeXRlcyk7CiAgICB9CgogICAgaWYocGFydGlhbEJ5dGVzID4gMCAmJiAhZmluaXNoKSB7CiAgICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICAgIHBhcnRpYWxCeXRlcyAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSBwYXJ0aWFsQnl0ZXM7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICBpbnB1dExlbmd0aCAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKICB9CgogIC8vIGJsb2NrIGNvbXBsZXRlLCBpbmNyZW1lbnQgY291bnRlciAoaW5wdXQgYmxvY2spCiAgaW5jMzIodGhpcy5faW5CbG9jayk7Cn07Cgptb2Rlcy5jdHIucHJvdG90eXBlLmRlY3J5cHQgPSBtb2Rlcy5jdHIucHJvdG90eXBlLmVuY3J5cHQ7CgoKLyoqIEdhbG9pcy9Db3VudGVyIE1vZGUgKEdDTSkgKiovCgptb2Rlcy5nY20gPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdGhpcy5uYW1lID0gJ0dDTSc7CiAgdGhpcy5jaXBoZXIgPSBvcHRpb25zLmNpcGhlcjsKICB0aGlzLmJsb2NrU2l6ZSA9IG9wdGlvbnMuYmxvY2tTaXplIHx8IDE2OwogIHRoaXMuX2ludHMgPSB0aGlzLmJsb2NrU2l6ZSAvIDQ7CiAgdGhpcy5faW5CbG9jayA9IG5ldyBBcnJheSh0aGlzLl9pbnRzKTsKICB0aGlzLl9vdXRCbG9jayA9IG5ldyBBcnJheSh0aGlzLl9pbnRzKTsKICB0aGlzLl9wYXJ0aWFsT3V0cHV0ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwoKICAvLyBSIGlzIGFjdHVhbGx5IHRoaXMgdmFsdWUgY29uY2F0ZW5hdGVkIHdpdGggMTIwIG1vcmUgemVybyBiaXRzLCBidXQKICAvLyB3ZSBvbmx5IFhPUiBhZ2FpbnN0IFIgc28gdGhlIG90aGVyIHplcm9zIGhhdmUgbm8gZWZmZWN0IC0tIHdlIGp1c3QKICAvLyBhcHBseSB0aGlzIHZhbHVlIHRvIHRoZSBmaXJzdCBpbnRlZ2VyIGluIGEgYmxvY2sKICB0aGlzLl9SID0gMHhFMTAwMDAwMDsKfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyBlbnN1cmUgSVYgaXMgYSBieXRlIGJ1ZmZlcgogIHZhciBpdiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKG9wdGlvbnMuaXYpOwoKICAvLyBubyBjaXBoZXJlZCBkYXRhIHByb2Nlc3NlZCB5ZXQKICB0aGlzLl9jaXBoZXJMZW5ndGggPSAwOwoKICAvLyBkZWZhdWx0IGFkZGl0aW9uYWwgZGF0YSBpcyBub25lCiAgdmFyIGFkZGl0aW9uYWxEYXRhOwogIGlmKCdhZGRpdGlvbmFsRGF0YScgaW4gb3B0aW9ucykgewogICAgYWRkaXRpb25hbERhdGEgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihvcHRpb25zLmFkZGl0aW9uYWxEYXRhKTsKICB9IGVsc2UgewogICAgYWRkaXRpb25hbERhdGEgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIH0KCiAgLy8gZGVmYXVsdCB0YWcgbGVuZ3RoIGlzIDEyOCBiaXRzCiAgaWYoJ3RhZ0xlbmd0aCcgaW4gb3B0aW9ucykgewogICAgdGhpcy5fdGFnTGVuZ3RoID0gb3B0aW9ucy50YWdMZW5ndGg7CiAgfSBlbHNlIHsKICAgIHRoaXMuX3RhZ0xlbmd0aCA9IDEyODsKICB9CgogIC8vIGlmIHRhZyBpcyBnaXZlbiwgZW5zdXJlIHRhZyBtYXRjaGVzIHRhZyBsZW5ndGgKICB0aGlzLl90YWcgPSBudWxsOwogIGlmKG9wdGlvbnMuZGVjcnlwdCkgewogICAgLy8gc2F2ZSB0YWcgdG8gY2hlY2sgbGF0ZXIKICAgIHRoaXMuX3RhZyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKG9wdGlvbnMudGFnKS5nZXRCeXRlcygpOwogICAgaWYodGhpcy5fdGFnLmxlbmd0aCAhPT0gKHRoaXMuX3RhZ0xlbmd0aCAvIDgpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignQXV0aGVudGljYXRpb24gdGFnIGRvZXMgbm90IG1hdGNoIHRhZyBsZW5ndGguJyk7CiAgICB9CiAgfQoKICAvLyBjcmVhdGUgdG1wIHN0b3JhZ2UgZm9yIGhhc2ggY2FsY3VsYXRpb24KICB0aGlzLl9oYXNoQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CgogIC8vIG5vIHRhZyBnZW5lcmF0ZWQgeWV0CiAgdGhpcy50YWcgPSBudWxsOwoKICAvLyBnZW5lcmF0ZSBoYXNoIHN1YmtleQogIC8vIChhcHBseSBibG9jayBjaXBoZXIgdG8gInplcm8iIGJsb2NrKQogIHRoaXMuX2hhc2hTdWJrZXkgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5jaXBoZXIuZW5jcnlwdChbMCwgMCwgMCwgMF0sIHRoaXMuX2hhc2hTdWJrZXkpOwoKICAvLyBnZW5lcmF0ZSB0YWJsZSBNCiAgLy8gdXNlIDQtYml0IHRhYmxlcyAoMzIgY29tcG9uZW50IGRlY29tcG9zaXRpb24gb2YgYSAxNiBieXRlIHZhbHVlKQogIC8vIDgtYml0IHRhYmxlcyB0YWtlIG1vcmUgc3BhY2UgYW5kIGFyZSBrbm93biB0byBoYXZlIHNlY3VyaXR5CiAgLy8gdnVsbmVyYWJpbGl0aWVzIChpbiBuYXRpdmUgaW1wbGVtZW50YXRpb25zKQogIHRoaXMuY29tcG9uZW50Qml0cyA9IDQ7CiAgdGhpcy5fbSA9IHRoaXMuZ2VuZXJhdGVIYXNoVGFibGUodGhpcy5faGFzaFN1YmtleSwgdGhpcy5jb21wb25lbnRCaXRzKTsKCiAgLy8gTm90ZTogc3VwcG9ydCBJViBsZW5ndGggZGlmZmVyZW50IGZyb20gOTYgYml0cz8gKG9ubHkgc3VwcG9ydGluZwogIC8vIDk2IGJpdHMgaXMgcmVjb21tZW5kZWQgYnkgTklTVCBTUC04MDAtMzhEKQogIC8vIGdlbmVyYXRlIEpfMAogIHZhciBpdkxlbmd0aCA9IGl2Lmxlbmd0aCgpOwogIGlmKGl2TGVuZ3RoID09PSAxMikgewogICAgLy8gOTYtYml0IElWCiAgICB0aGlzLl9qMCA9IFtpdi5nZXRJbnQzMigpLCBpdi5nZXRJbnQzMigpLCBpdi5nZXRJbnQzMigpLCAxXTsKICB9IGVsc2UgewogICAgLy8gSVYgaXMgTk9UIDk2LWJpdHMKICAgIHRoaXMuX2owID0gWzAsIDAsIDAsIDBdOwogICAgd2hpbGUoaXYubGVuZ3RoKCkgPiAwKSB7CiAgICAgIHRoaXMuX2owID0gdGhpcy5naGFzaCgKICAgICAgICB0aGlzLl9oYXNoU3Via2V5LCB0aGlzLl9qMCwKICAgICAgICBbaXYuZ2V0SW50MzIoKSwgaXYuZ2V0SW50MzIoKSwgaXYuZ2V0SW50MzIoKSwgaXYuZ2V0SW50MzIoKV0pOwogICAgfQogICAgdGhpcy5fajAgPSB0aGlzLmdoYXNoKAogICAgICB0aGlzLl9oYXNoU3Via2V5LCB0aGlzLl9qMCwgWzAsIDBdLmNvbmNhdChmcm9tNjRUbzMyKGl2TGVuZ3RoICogOCkpKTsKICB9CgogIC8vIGdlbmVyYXRlIElDQiAoaW5pdGlhbCBjb3VudGVyIGJsb2NrKQogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9qMC5zbGljZSgwKTsKICBpbmMzMih0aGlzLl9pbkJsb2NrKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwoKICAvLyBjb25zdW1lIGF1dGhlbnRpY2F0aW9uIGRhdGEKICBhZGRpdGlvbmFsRGF0YSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGFkZGl0aW9uYWxEYXRhKTsKICAvLyBzYXZlIGFkZGl0aW9uYWwgZGF0YSBsZW5ndGggYXMgYSBCRSA2NC1iaXQgbnVtYmVyCiAgdGhpcy5fYURhdGFMZW5ndGggPSBmcm9tNjRUbzMyKGFkZGl0aW9uYWxEYXRhLmxlbmd0aCgpICogOCk7CiAgLy8gcGFkIGFkZGl0aW9uYWwgZGF0YSB0byAxMjggYml0ICgxNiBieXRlKSBibG9jayBzaXplCiAgdmFyIG92ZXJmbG93ID0gYWRkaXRpb25hbERhdGEubGVuZ3RoKCkgJSB0aGlzLmJsb2NrU2l6ZTsKICBpZihvdmVyZmxvdykgewogICAgYWRkaXRpb25hbERhdGEuZmlsbFdpdGhCeXRlKDAsIHRoaXMuYmxvY2tTaXplIC0gb3ZlcmZsb3cpOwogIH0KICB0aGlzLl9zID0gWzAsIDAsIDAsIDBdOwogIHdoaWxlKGFkZGl0aW9uYWxEYXRhLmxlbmd0aCgpID4gMCkgewogICAgdGhpcy5fcyA9IHRoaXMuZ2hhc2godGhpcy5faGFzaFN1YmtleSwgdGhpcy5fcywgWwogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpLAogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpLAogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpLAogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpCiAgICBdKTsKICB9Cn07Cgptb2Rlcy5nY20ucHJvdG90eXBlLmVuY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGVuY3J5cHQKICB2YXIgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKICBpZihpbnB1dExlbmd0aCA9PT0gMCkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvLyBlbmNyeXB0IGJsb2NrCiAgdGhpcy5jaXBoZXIuZW5jcnlwdCh0aGlzLl9pbkJsb2NrLCB0aGlzLl9vdXRCbG9jayk7CgogIC8vIGhhbmRsZSBmdWxsIGJsb2NrCiAgaWYodGhpcy5fcGFydGlhbEJ5dGVzID09PSAwICYmIGlucHV0TGVuZ3RoID49IHRoaXMuYmxvY2tTaXplKSB7CiAgICAvLyBYT1IgaW5wdXQgd2l0aCBvdXRwdXQKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldIF49IGlucHV0LmdldEludDMyKCkpOwogICAgfQogICAgdGhpcy5fY2lwaGVyTGVuZ3RoICs9IHRoaXMuYmxvY2tTaXplOwogIH0gZWxzZSB7CiAgICAvLyBoYW5kbGUgcGFydGlhbCBibG9jawogICAgdmFyIHBhcnRpYWxCeXRlcyA9ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0TGVuZ3RoKSAlIHRoaXMuYmxvY2tTaXplOwogICAgaWYocGFydGlhbEJ5dGVzID4gMCkgewogICAgICBwYXJ0aWFsQnl0ZXMgPSB0aGlzLmJsb2NrU2l6ZSAtIHBhcnRpYWxCeXRlczsKICAgIH0KCiAgICAvLyBYT1IgaW5wdXQgd2l0aCBvdXRwdXQKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQuY2xlYXIoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgdGhpcy5fcGFydGlhbE91dHB1dC5wdXRJbnQzMihpbnB1dC5nZXRJbnQzMigpIF4gdGhpcy5fb3V0QmxvY2tbaV0pOwogICAgfQoKICAgIGlmKHBhcnRpYWxCeXRlcyA9PT0gMCB8fCBmaW5pc2gpIHsKICAgICAgLy8gaGFuZGxlIG92ZXJmbG93IHByaW9yIHRvIGhhc2hpbmcKICAgICAgaWYoZmluaXNoKSB7CiAgICAgICAgLy8gZ2V0IGJsb2NrIG92ZXJmbG93CiAgICAgICAgdmFyIG92ZXJmbG93ID0gaW5wdXRMZW5ndGggJSB0aGlzLmJsb2NrU2l6ZTsKICAgICAgICB0aGlzLl9jaXBoZXJMZW5ndGggKz0gb3ZlcmZsb3c7CiAgICAgICAgLy8gdHJ1bmNhdGUgZm9yIGhhc2ggZnVuY3Rpb24KICAgICAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LnRydW5jYXRlKHRoaXMuYmxvY2tTaXplIC0gb3ZlcmZsb3cpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuX2NpcGhlckxlbmd0aCArPSB0aGlzLmJsb2NrU2l6ZTsKICAgICAgfQoKICAgICAgLy8gZ2V0IG91dHB1dCBibG9jayBmb3IgaGFzaGluZwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgICAgdGhpcy5fb3V0QmxvY2tbaV0gPSB0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEludDMyKCk7CiAgICAgIH0KICAgICAgdGhpcy5fcGFydGlhbE91dHB1dC5yZWFkIC09IHRoaXMuYmxvY2tTaXplOwogICAgfQoKICAgIC8vIHNraXAgYW55IHByZXZpb3VzIHBhcnRpYWwgYnl0ZXMKICAgIGlmKHRoaXMuX3BhcnRpYWxCeXRlcyA+IDApIHsKICAgICAgdGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcyh0aGlzLl9wYXJ0aWFsQnl0ZXMpOwogICAgfQoKICAgIGlmKHBhcnRpYWxCeXRlcyA+IDAgJiYgIWZpbmlzaCkgewogICAgICAvLyBibG9jayBzdGlsbCBpbmNvbXBsZXRlLCByZXN0b3JlIGlucHV0IGJ1ZmZlciwgZ2V0IHBhcnRpYWwgb3V0cHV0LAogICAgICAvLyBhbmQgcmV0dXJuIGVhcmx5CiAgICAgIGlucHV0LnJlYWQgLT0gdGhpcy5ibG9ja1NpemU7CiAgICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICAgIHBhcnRpYWxCeXRlcyAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSBwYXJ0aWFsQnl0ZXM7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICBpbnB1dExlbmd0aCAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKICB9CgogIC8vIHVwZGF0ZSBoYXNoIGJsb2NrIFMKICB0aGlzLl9zID0gdGhpcy5naGFzaCh0aGlzLl9oYXNoU3Via2V5LCB0aGlzLl9zLCB0aGlzLl9vdXRCbG9jayk7CgogIC8vIGluY3JlbWVudCBjb3VudGVyIChpbnB1dCBibG9jaykKICBpbmMzMih0aGlzLl9pbkJsb2NrKTsKfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUuZGVjcnlwdCA9IGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQsIGZpbmlzaCkgewogIC8vIG5vdCBlbm91Z2ggaW5wdXQgdG8gZGVjcnlwdAogIHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogIGlmKGlucHV0TGVuZ3RoIDwgdGhpcy5ibG9ja1NpemUgJiYgIShmaW5pc2ggJiYgaW5wdXRMZW5ndGggPiAwKSkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvLyBlbmNyeXB0IGJsb2NrIChHQ00gYWx3YXlzIHVzZXMgZW5jcnlwdGlvbiBtb2RlKQogIHRoaXMuY2lwaGVyLmVuY3J5cHQodGhpcy5faW5CbG9jaywgdGhpcy5fb3V0QmxvY2spOwoKICAvLyBpbmNyZW1lbnQgY291bnRlciAoaW5wdXQgYmxvY2spCiAgaW5jMzIodGhpcy5faW5CbG9jayk7CgogIC8vIHVwZGF0ZSBoYXNoIGJsb2NrIFMKICB0aGlzLl9oYXNoQmxvY2tbMF0gPSBpbnB1dC5nZXRJbnQzMigpOwogIHRoaXMuX2hhc2hCbG9ja1sxXSA9IGlucHV0LmdldEludDMyKCk7CiAgdGhpcy5faGFzaEJsb2NrWzJdID0gaW5wdXQuZ2V0SW50MzIoKTsKICB0aGlzLl9oYXNoQmxvY2tbM10gPSBpbnB1dC5nZXRJbnQzMigpOwogIHRoaXMuX3MgPSB0aGlzLmdoYXNoKHRoaXMuX2hhc2hTdWJrZXksIHRoaXMuX3MsIHRoaXMuX2hhc2hCbG9jayk7CgogIC8vIFhPUiBoYXNoIGlucHV0IHdpdGggb3V0cHV0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldIF4gdGhpcy5faGFzaEJsb2NrW2ldKTsKICB9CgogIC8vIGluY3JlbWVudCBjaXBoZXIgZGF0YSBsZW5ndGgKICBpZihpbnB1dExlbmd0aCA8IHRoaXMuYmxvY2tTaXplKSB7CiAgICB0aGlzLl9jaXBoZXJMZW5ndGggKz0gaW5wdXRMZW5ndGggJSB0aGlzLmJsb2NrU2l6ZTsKICB9IGVsc2UgewogICAgdGhpcy5fY2lwaGVyTGVuZ3RoICs9IHRoaXMuYmxvY2tTaXplOwogIH0KfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUuYWZ0ZXJGaW5pc2ggPSBmdW5jdGlvbihvdXRwdXQsIG9wdGlvbnMpIHsKICB2YXIgcnZhbCA9IHRydWU7CgogIC8vIGhhbmRsZSBvdmVyZmxvdwogIGlmKG9wdGlvbnMuZGVjcnlwdCAmJiBvcHRpb25zLm92ZXJmbG93KSB7CiAgICBvdXRwdXQudHJ1bmNhdGUodGhpcy5ibG9ja1NpemUgLSBvcHRpb25zLm92ZXJmbG93KTsKICB9CgogIC8vIGhhbmRsZSBhdXRoZW50aWNhdGlvbiB0YWcKICB0aGlzLnRhZyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGNvbmNhdGVuYXRlIGFkZGl0aW9uYWwgZGF0YSBsZW5ndGggd2l0aCBjaXBoZXIgbGVuZ3RoCiAgdmFyIGxlbmd0aHMgPSB0aGlzLl9hRGF0YUxlbmd0aC5jb25jYXQoZnJvbTY0VG8zMih0aGlzLl9jaXBoZXJMZW5ndGggKiA4KSk7CgogIC8vIGluY2x1ZGUgbGVuZ3RocyBpbiBoYXNoCiAgdGhpcy5fcyA9IHRoaXMuZ2hhc2godGhpcy5faGFzaFN1YmtleSwgdGhpcy5fcywgbGVuZ3Rocyk7CgogIC8vIGRvIEdDVFIoSl8wLCBTKQogIHZhciB0YWcgPSBbXTsKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2owLCB0YWcpOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgIHRoaXMudGFnLnB1dEludDMyKHRoaXMuX3NbaV0gXiB0YWdbaV0pOwogIH0KCiAgLy8gdHJpbSB0YWcgdG8gbGVuZ3RoCiAgdGhpcy50YWcudHJ1bmNhdGUodGhpcy50YWcubGVuZ3RoKCkgJSAodGhpcy5fdGFnTGVuZ3RoIC8gOCkpOwoKICAvLyBjaGVjayBhdXRoZW50aWNhdGlvbiB0YWcKICBpZihvcHRpb25zLmRlY3J5cHQgJiYgdGhpcy50YWcuYnl0ZXMoKSAhPT0gdGhpcy5fdGFnKSB7CiAgICBydmFsID0gZmFsc2U7CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTZWUgTklTVCBTUC04MDAtMzhEIDYuMyAoQWxnb3JpdGhtIDEpLiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIEdhbG9pcwogKiBmaWVsZCBtdWx0aXBsaWNhdGlvbi4gVGhlIGZpZWxkLCBHRigyXjEyOCksIGlzIGRlZmluZWQgYnkgdGhlIHBvbHlub21pYWw6CiAqCiAqIHheMTI4ICsgeF43ICsgeF4yICsgeCArIDEKICoKICogV2hpY2ggaXMgcmVwcmVzZW50ZWQgaW4gbGl0dGxlLWVuZGlhbiBiaW5hcnkgZm9ybSBhczogMTExMDAwMDEgKDB4ZTEpLiBXaGVuCiAqIHRoZSB2YWx1ZSBvZiBhIGNvZWZmaWNpZW50IGlzIDEsIGEgYml0IGlzIHNldC4gVGhlIHZhbHVlIFIsIGlzIHRoZQogKiBjb25jYXRlbmF0aW9uIG9mIHRoaXMgdmFsdWUgYW5kIDEyMCB6ZXJvIGJpdHMsIHlpZWxkaW5nIGEgMTI4LWJpdCB2YWx1ZQogKiB3aGljaCBtYXRjaGVzIHRoZSBibG9jayBzaXplLgogKgogKiBUaGlzIGZ1bmN0aW9uIHdpbGwgbXVsdGlwbHkgdHdvIGVsZW1lbnRzICh2ZWN0b3JzIG9mIGJ5dGVzKSwgWCBhbmQgWSwgaW4KICogdGhlIGZpZWxkIEdGKDJeMTI4KS4gVGhlIHJlc3VsdCBpcyBpbml0aWFsaXplZCB0byB6ZXJvLiBGb3IgZWFjaCBiaXQgb2YKICogWCAob3V0IG9mIDEyOCksIHhfaSwgaWYgeF9pIGlzIHNldCwgdGhlbiB0aGUgcmVzdWx0IGlzIG11bHRpcGxpZWQgKFhPUidkKQogKiBieSB0aGUgY3VycmVudCB2YWx1ZSBvZiBZLiBGb3IgZWFjaCBiaXQsIHRoZSB2YWx1ZSBvZiBZIHdpbGwgYmUgcmFpc2VkIGJ5CiAqIGEgcG93ZXIgb2YgeCAobXVsdGlwbGllZCBieSB0aGUgcG9seW5vbWlhbCB4KS4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkKICogc2hpZnRpbmcgWSBvbmNlIHRvIHRoZSByaWdodC4gSWYgdGhlIGN1cnJlbnQgdmFsdWUgb2YgWSwgcHJpb3IgdG8gYmVpbmcKICogbXVsdGlwbGllZCBieSB4LCBoYXMgMCBhcyBpdHMgTFNCLCB0aGVuIGl0IGlzIGEgMTI3dGggZGVncmVlIHBvbHlub21pYWwuCiAqIE90aGVyd2lzZSwgd2UgbXVzdCBkaXZpZGUgYnkgUiBhZnRlciBzaGlmdGluZyB0byBmaW5kIHRoZSByZW1haW5kZXIuCiAqCiAqIEBwYXJhbSB4IHRoZSBmaXJzdCBibG9jayB0byBtdWx0aXBseSBieSB0aGUgc2Vjb25kLgogKiBAcGFyYW0geSB0aGUgc2Vjb25kIGJsb2NrIHRvIG11bHRpcGx5IGJ5IHRoZSBmaXJzdC4KICoKICogQHJldHVybiB0aGUgYmxvY2sgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbi4KICovCm1vZGVzLmdjbS5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbih4LCB5KSB7CiAgdmFyIHpfaSA9IFswLCAwLCAwLCAwXTsKICB2YXIgdl9pID0geS5zbGljZSgwKTsKCiAgLy8gY2FsY3VsYXRlIFpfMTI4IChibG9jayBoYXMgMTI4IGJpdHMpCiAgZm9yKHZhciBpID0gMDsgaSA8IDEyODsgKytpKSB7CiAgICAvLyBpZiB4X2kgaXMgMCwgWl97aSsxfSA9IFpfaSAodW5jaGFuZ2VkKQogICAgLy8gZWxzZSBaX3tpKzF9ID0gWl9pIF4gVl9pCiAgICAvLyBnZXQgeF9pIGJ5IGZpbmRpbmcgMzItYml0IGludCBwb3NpdGlvbiwgdGhlbiBsZWZ0IHNoaWZ0IDEgYnkgcmVtYWluZGVyCiAgICB2YXIgeF9pID0geFsoaSAvIDMyKSB8IDBdICYgKDEgPDwgKDMxIC0gaSAlIDMyKSk7CiAgICBpZih4X2kpIHsKICAgICAgel9pWzBdIF49IHZfaVswXTsKICAgICAgel9pWzFdIF49IHZfaVsxXTsKICAgICAgel9pWzJdIF49IHZfaVsyXTsKICAgICAgel9pWzNdIF49IHZfaVszXTsKICAgIH0KCiAgICAvLyBpZiBMU0IoVl9pKSBpcyAxLCBWX2kgPSBWX2kgPj4gMQogICAgLy8gZWxzZSBWX2kgPSAoVl9pID4+IDEpIF4gUgogICAgdGhpcy5wb3codl9pLCB2X2kpOwogIH0KCiAgcmV0dXJuIHpfaTsKfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24oeCwgb3V0KSB7CiAgLy8gaWYgTFNCKHgpIGlzIDEsIHggPSB4ID4+PiAxCiAgLy8gZWxzZSB4ID0gKHggPj4+IDEpIF4gUgogIHZhciBsc2IgPSB4WzNdICYgMTsKCiAgLy8gYWx3YXlzIGRvIHggPj4+IDE6CiAgLy8gc3RhcnRpbmcgd2l0aCB0aGUgcmlnaHRtb3N0IGludGVnZXIsIHNoaWZ0IGVhY2ggaW50ZWdlciB0byB0aGUgcmlnaHQKICAvLyBvbmUgYml0LCBwdWxsaW5nIGluIHRoZSBiaXQgZnJvbSB0aGUgaW50ZWdlciB0byB0aGUgbGVmdCBhcyBpdHMgdG9wCiAgLy8gbW9zdCBiaXQgKGRvIHRoaXMgZm9yIHRoZSBsYXN0IDMgaW50ZWdlcnMpCiAgZm9yKHZhciBpID0gMzsgaSA+IDA7IC0taSkgewogICAgb3V0W2ldID0gKHhbaV0gPj4+IDEpIHwgKCh4W2kgLSAxXSAmIDEpIDw8IDMxKTsKICB9CiAgLy8gc2hpZnQgdGhlIGZpcnN0IGludGVnZXIgbm9ybWFsbHkKICBvdXRbMF0gPSB4WzBdID4+PiAxOwoKICAvLyBpZiBsc2Igd2FzIG5vdCBzZXQsIHRoZW4gcG9seW5vbWlhbCBoYWQgYSBkZWdyZWUgb2YgMTI3IGFuZCBkb2Vzbid0CiAgLy8gbmVlZCB0byBkaXZpZGVkOyBvdGhlcndpc2UsIFhPUiB3aXRoIFIgdG8gZmluZCB0aGUgcmVtYWluZGVyOyB3ZSBvbmx5CiAgLy8gbmVlZCB0byBYT1IgdGhlIGZpcnN0IGludGVnZXIgc2luY2UgUiB0ZWNobmljYWxseSBlbmRzIHcvMTIwIHplcm8gYml0cwogIGlmKGxzYikgewogICAgb3V0WzBdIF49IHRoaXMuX1I7CiAgfQp9OwoKbW9kZXMuZ2NtLnByb3RvdHlwZS50YWJsZU11bHRpcGx5ID0gZnVuY3Rpb24oeCkgewogIC8vIGFzc3VtZXMgNC1iaXQgdGFibGVzIGFyZSB1c2VkCiAgdmFyIHogPSBbMCwgMCwgMCwgMF07CiAgZm9yKHZhciBpID0gMDsgaSA8IDMyOyArK2kpIHsKICAgIHZhciBpZHggPSAoaSAvIDgpIHwgMDsKICAgIHZhciB4X2kgPSAoeFtpZHhdID4+PiAoKDcgLSAoaSAlIDgpKSAqIDQpKSAmIDB4RjsKICAgIHZhciBhaCA9IHRoaXMuX21baV1beF9pXTsKICAgIHpbMF0gXj0gYWhbMF07CiAgICB6WzFdIF49IGFoWzFdOwogICAgelsyXSBePSBhaFsyXTsKICAgIHpbM10gXj0gYWhbM107CiAgfQogIHJldHVybiB6Owp9OwoKLyoqCiAqIEEgY29udGludWluZyB2ZXJzaW9uIG9mIHRoZSBHSEFTSCBhbGdvcml0aG0gdGhhdCBvcGVyYXRlcyBvbiBhIHNpbmdsZQogKiBibG9jay4gVGhlIGhhc2ggYmxvY2ssIGxhc3QgaGFzaCB2YWx1ZSAoWW0pIGFuZCB0aGUgbmV3IGJsb2NrIHRvIGhhc2gKICogYXJlIGdpdmVuLgogKgogKiBAcGFyYW0gaCB0aGUgaGFzaCBibG9jay4KICogQHBhcmFtIHkgdGhlIHByZXZpb3VzIHZhbHVlIGZvciBZbSwgdXNlIFswLCAwLCAwLCAwXSBmb3IgYSBuZXcgaGFzaC4KICogQHBhcmFtIHggdGhlIGJsb2NrIHRvIGhhc2guCiAqCiAqIEByZXR1cm4gdGhlIGhhc2hlZCB2YWx1ZSAoWW0pLgogKi8KbW9kZXMuZ2NtLnByb3RvdHlwZS5naGFzaCA9IGZ1bmN0aW9uKGgsIHksIHgpIHsKICB5WzBdIF49IHhbMF07CiAgeVsxXSBePSB4WzFdOwogIHlbMl0gXj0geFsyXTsKICB5WzNdIF49IHhbM107CiAgcmV0dXJuIHRoaXMudGFibGVNdWx0aXBseSh5KTsKICAvL3JldHVybiB0aGlzLm11bHRpcGx5KHksIGgpOwp9OwoKLyoqCiAqIFByZWNvbXB1dGVzIGEgdGFibGUgZm9yIG11bHRpcGx5aW5nIGFnYWluc3QgdGhlIGhhc2ggc3Via2V5LiBUaGlzCiAqIG1lY2hhbmlzbSBwcm92aWRlcyBhIHN1YnN0YW50aWFsIHNwZWVkIGluY3JlYXNlIG92ZXIgbXVsdGlwbGljYXRpb24KICogcGVyZm9ybWVkIHdpdGhvdXQgYSB0YWJsZS4gVGhlIHRhYmxlLWJhc2VkIG11bHRpcGxpY2F0aW9uIHRoaXMgdGFibGUgaXMKICogZm9yIHNvbHZlcyBYICogSCBieSBtdWx0aXBseWluZyBlYWNoIGNvbXBvbmVudCBvZiBYIGJ5IEggYW5kIHRoZW4KICogY29tcG9zaW5nIHRoZSByZXN1bHRzIHRvZ2V0aGVyIHVzaW5nIFhPUi4KICoKICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSB0YWJsZXMgd2l0aCBkaWZmZXJlbnQgYml0IHNpemVzCiAqIGZvciB0aGUgY29tcG9uZW50cywgaG93ZXZlciwgdGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZXJlIGFyZQogKiAzMiBjb21wb25lbnRzIG9mIFggKHdoaWNoIGlzIGEgMTYgYnl0ZSB2ZWN0b3IpLCB0aGVyZWZvcmUgZWFjaCBjb21wb25lbnQKICogdGFrZXMgNC1iaXRzIChzbyB0aGUgdGFibGUgaXMgY29uc3RydWN0ZWQgd2l0aCBiaXRzPTQpLgogKgogKiBAcGFyYW0gaCB0aGUgaGFzaCBzdWJrZXkuCiAqIEBwYXJhbSBiaXRzIHRoZSBiaXQgc2l6ZSBmb3IgYSBjb21wb25lbnQuCiAqLwptb2Rlcy5nY20ucHJvdG90eXBlLmdlbmVyYXRlSGFzaFRhYmxlID0gZnVuY3Rpb24oaCwgYml0cykgewogIC8vIFRPRE86IFRoZXJlIGFyZSBmdXJ0aGVyIG9wdGltaXphdGlvbnMgdGhhdCB3b3VsZCB1c2Ugb25seSB0aGUKICAvLyBmaXJzdCB0YWJsZSBNXzAgKG9yIHNvbWUgdmFyaWFudCkgYWxvbmcgd2l0aCBhIHJlbWFpbmRlciB0YWJsZTsKICAvLyB0aGlzIGNhbiBiZSBleHBsb3JlZCBpbiB0aGUgZnV0dXJlCiAgdmFyIG11bHRpcGxpZXIgPSA4IC8gYml0czsKICB2YXIgcGVySW50ID0gNCAqIG11bHRpcGxpZXI7CiAgdmFyIHNpemUgPSAxNiAqIG11bHRpcGxpZXI7CiAgdmFyIG0gPSBuZXcgQXJyYXkoc2l6ZSk7CiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgdmFyIHRtcCA9IFswLCAwLCAwLCAwXTsKICAgIHZhciBpZHggPSAoaSAvIHBlckludCkgfCAwOwogICAgdmFyIHNoZnQgPSAoKHBlckludCAtIDEgLSAoaSAlIHBlckludCkpICogYml0cyk7CiAgICB0bXBbaWR4XSA9ICgxIDw8IChiaXRzIC0gMSkpIDw8IHNoZnQ7CiAgICBtW2ldID0gdGhpcy5nZW5lcmF0ZVN1Ykhhc2hUYWJsZSh0aGlzLm11bHRpcGx5KHRtcCwgaCksIGJpdHMpOwogIH0KICByZXR1cm4gbTsKfTsKCi8qKgogKiBHZW5lcmF0ZXMgYSB0YWJsZSBmb3IgbXVsdGlwbHlpbmcgYWdhaW5zdCB0aGUgaGFzaCBzdWJrZXkgZm9yIG9uZQogKiBwYXJ0aWN1bGFyIGNvbXBvbmVudCAob3V0IG9mIGFsbCBwb3NzaWJsZSBjb21wb25lbnQgdmFsdWVzKS4KICoKICogQHBhcmFtIG1pZCB0aGUgcHJlLW11bHRpcGxpZWQgdmFsdWUgZm9yIHRoZSBtaWRkbGUga2V5IG9mIHRoZSB0YWJsZS4KICogQHBhcmFtIGJpdHMgdGhlIGJpdCBzaXplIGZvciBhIGNvbXBvbmVudC4KICovCm1vZGVzLmdjbS5wcm90b3R5cGUuZ2VuZXJhdGVTdWJIYXNoVGFibGUgPSBmdW5jdGlvbihtaWQsIGJpdHMpIHsKICAvLyBjb21wdXRlIHRoZSB0YWJsZSBxdWlja2x5IGJ5IG1pbmltaXppbmcgdGhlIG51bWJlciBvZgogIC8vIFBPVyBvcGVyYXRpb25zIC0tIHRoZXkgb25seSBuZWVkIHRvIGJlIHBlcmZvcm1lZCBmb3IgcG93ZXJzIG9mIDIsCiAgLy8gYWxsIG90aGVyIGVudHJpZXMgY2FuIGJlIGNvbXBvc2VkIGZyb20gdGhvc2UgcG93ZXJzIHVzaW5nIFhPUgogIHZhciBzaXplID0gMSA8PCBiaXRzOwogIHZhciBoYWxmID0gc2l6ZSA+Pj4gMTsKICB2YXIgbSA9IG5ldyBBcnJheShzaXplKTsKICBtW2hhbGZdID0gbWlkLnNsaWNlKDApOwogIHZhciBpID0gaGFsZiA+Pj4gMTsKICB3aGlsZShpID4gMCkgewogICAgLy8gcmFpc2UgbTBbMiAqIGldIGFuZCBzdG9yZSBpbiBtMFtpXQogICAgdGhpcy5wb3cobVsyICogaV0sIG1baV0gPSBbXSk7CiAgICBpID4+PSAxOwogIH0KICBpID0gMjsKICB3aGlsZShpIDwgaGFsZikgewogICAgZm9yKHZhciBqID0gMTsgaiA8IGk7ICsraikgewogICAgICB2YXIgbV9pID0gbVtpXTsKICAgICAgdmFyIG1faiA9IG1bal07CiAgICAgIG1baSArIGpdID0gWwogICAgICAgIG1faVswXSBeIG1falswXSwKICAgICAgICBtX2lbMV0gXiBtX2pbMV0sCiAgICAgICAgbV9pWzJdIF4gbV9qWzJdLAogICAgICAgIG1faVszXSBeIG1falszXQogICAgICBdOwogICAgfQogICAgaSAqPSAyOwogIH0KICBtWzBdID0gWzAsIDAsIDAsIDBdOwogIC8qIE5vdGU6IFdlIGNvdWxkIGF2b2lkIHN0b3JpbmcgdGhlc2UgYnkgZG9pbmcgY29tcG9zaXRpb24gZHVyaW5nIG11bHRpcGx5CiAgY2FsY3VsYXRlIHRvcCBoYWxmIHVzaW5nIGNvbXBvc2l0aW9uIGJ5IHNwZWVkIGlzIHByZWZlcnJlZC4gKi8KICBmb3IoaSA9IGhhbGYgKyAxOyBpIDwgc2l6ZTsgKytpKSB7CiAgICB2YXIgYyA9IG1baSBeIGhhbGZdOwogICAgbVtpXSA9IFttaWRbMF0gXiBjWzBdLCBtaWRbMV0gXiBjWzFdLCBtaWRbMl0gXiBjWzJdLCBtaWRbM10gXiBjWzNdXTsKICB9CiAgcmV0dXJuIG07Cn07CgoKLyoqIFV0aWxpdHkgZnVuY3Rpb25zICovCgpmdW5jdGlvbiB0cmFuc2Zvcm1JVihpdikgewogIGlmKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIHsKICAgIC8vIGNvbnZlcnQgaXYgc3RyaW5nIGludG8gYnl0ZSBidWZmZXIKICAgIGl2ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoaXYpOwogIH0KCiAgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGl2KSAmJiBpdi5sZW5ndGggPiA0KSB7CiAgICAvLyBjb252ZXJ0IGl2IGJ5dGUgYXJyYXkgaW50byBieXRlIGJ1ZmZlcgogICAgdmFyIHRtcCA9IGl2OwogICAgaXYgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7ICsraSkgewogICAgICBpdi5wdXRCeXRlKHRtcFtpXSk7CiAgICB9CiAgfQogIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkoaXYpKSB7CiAgICAvLyBjb252ZXJ0IGl2IGJ5dGUgYnVmZmVyIGludG8gMzItYml0IGludGVnZXIgYXJyYXkKICAgIGl2ID0gW2l2LmdldEludDMyKCksIGl2LmdldEludDMyKCksIGl2LmdldEludDMyKCksIGl2LmdldEludDMyKCldOwogIH0KCiAgcmV0dXJuIGl2Owp9CgpmdW5jdGlvbiBpbmMzMihibG9jaykgewogIC8vIGluY3JlbWVudCBsYXN0IDMyIGJpdHMgb2YgYmxvY2sgb25seQogIGJsb2NrW2Jsb2NrLmxlbmd0aCAtIDFdID0gKGJsb2NrW2Jsb2NrLmxlbmd0aCAtIDFdICsgMSkgJiAweEZGRkZGRkZGOwp9CgpmdW5jdGlvbiBmcm9tNjRUbzMyKG51bSkgewogIC8vIGNvbnZlcnQgNjQtYml0IG51bWJlciB0byB0d28gQkUgSW50MzJzCiAgcmV0dXJuIFsobnVtIC8gMHgxMDAwMDAwMDApIHwgMCwgbnVtICYgMHhGRkZGRkZGRl07Cn0KCgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdjaXBoZXJNb2Rlcyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9jaXBoZXJNb2RlcycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQWR2YW5jZWQgRW5jcnlwdGlvbiBTdGFuZGFyZCAoQUVTKSBpbXBsZW1lbnRhdGlvbi4KICoKICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgcHVibGljIGRvbWFpbiBsaWJyYXJ5ICdqc2NyeXB0bycgd2hpY2gKICogd2FzIHdyaXR0ZW4gYnk6CiAqCiAqIEVtaWx5IFN0YXJrIChlc3RhcmtAc3RhbmZvcmQuZWR1KQogKiBNaWtlIEhhbWJ1cmcgKG1oYW1idXJnQHN0YW5mb3JkLmVkdSkKICogRGFuIEJvbmVoIChkYWJvQGNzLnN0YW5mb3JkLmVkdSkKICoKICogUGFydHMgb2YgdGhpcyBjb2RlIGFyZSBiYXNlZCBvbiB0aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbiBvZiBBRVM6CiAqIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcKICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovKiBBRVMgQVBJICovCmZvcmdlLmFlcyA9IGZvcmdlLmFlcyB8fCB7fTsKCi8qKgogKiBEZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2U6CiAqCiAqIHZhciBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKCdBRVMtPG1vZGU+Jywga2V5KTsKICogY2lwaGVyLnN0YXJ0KHtpdjogaXZ9KTsKICoKICogQ3JlYXRlcyBhbiBBRVMgY2lwaGVyIG9iamVjdCB0byBlbmNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqIFRoZSBvdXRwdXQgd2lsbCBiZSBzdG9yZWQgaW4gdGhlICdvdXRwdXQnIG1lbWJlciBvZiB0aGUgcmV0dXJuZWQgY2lwaGVyLgogKgogKiBUaGUga2V5IGFuZCBpdiBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLAogKiBhIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UuCiAqIEBwYXJhbSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5zdGFydEVuY3J5cHRpbmcgPSBmdW5jdGlvbihrZXksIGl2LCBvdXRwdXQsIG1vZGUpIHsKICB2YXIgY2lwaGVyID0gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogb3V0cHV0LAogICAgZGVjcnlwdDogZmFsc2UsCiAgICBtb2RlOiBtb2RlCiAgfSk7CiAgY2lwaGVyLnN0YXJ0KGl2KTsKICByZXR1cm4gY2lwaGVyOwp9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGNpcGhlciA9IGZvcmdlLmNpcGhlci5jcmVhdGVDaXBoZXIoJ0FFUy08bW9kZT4nLCBrZXkpOwogKgogKiBDcmVhdGVzIGFuIEFFUyBjaXBoZXIgb2JqZWN0IHRvIGVuY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICoKICogVGhlIGtleSBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLCBhCiAqIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBtb2RlKSB7CiAgcmV0dXJuIF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG51bGwsCiAgICBkZWNyeXB0OiBmYWxzZSwKICAgIG1vZGU6IG1vZGUKICB9KTsKfTsKCi8qKgogKiBEZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2U6CiAqCiAqIHZhciBkZWNpcGhlciA9IGZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlcignQUVTLTxtb2RlPicsIGtleSk7CiAqIGRlY2lwaGVyLnN0YXJ0KHtpdjogaXZ9KTsKICoKICogQ3JlYXRlcyBhbiBBRVMgY2lwaGVyIG9iamVjdCB0byBkZWNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqIFRoZSBvdXRwdXQgd2lsbCBiZSBzdG9yZWQgaW4gdGhlICdvdXRwdXQnIG1lbWJlciBvZiB0aGUgcmV0dXJuZWQgY2lwaGVyLgogKgogKiBUaGUga2V5IGFuZCBpdiBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLAogKiBhIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UuCiAqIEBwYXJhbSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5zdGFydERlY3J5cHRpbmcgPSBmdW5jdGlvbihrZXksIGl2LCBvdXRwdXQsIG1vZGUpIHsKICB2YXIgY2lwaGVyID0gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogb3V0cHV0LAogICAgZGVjcnlwdDogdHJ1ZSwKICAgIG1vZGU6IG1vZGUKICB9KTsKICBjaXBoZXIuc3RhcnQoaXYpOwogIHJldHVybiBjaXBoZXI7Cn07CgovKioKICogRGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlOgogKgogKiB2YXIgZGVjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlRGVjaXBoZXIoJ0FFUy08bW9kZT4nLCBrZXkpOwogKgogKiBDcmVhdGVzIGFuIEFFUyBjaXBoZXIgb2JqZWN0IHRvIGRlY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICoKICogVGhlIGtleSBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLCBhCiAqIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBtb2RlKSB7CiAgcmV0dXJuIF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG51bGwsCiAgICBkZWNyeXB0OiB0cnVlLAogICAgbW9kZTogbW9kZQogIH0pOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgQUVTIGNpcGhlciBhbGdvcml0aG0gb2JqZWN0LgogKgogKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgYWxnb3JpdGhtLgogKiBAcGFyYW0gbW9kZSB0aGUgbW9kZSBmYWN0b3J5IGZ1bmN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBBRVMgYWxnb3JpdGhtIG9iamVjdC4KICovCmZvcmdlLmFlcy5BbGdvcml0aG0gPSBmdW5jdGlvbihuYW1lLCBtb2RlKSB7CiAgaWYoIWluaXQpIHsKICAgIGluaXRpYWxpemUoKTsKICB9CiAgdmFyIHNlbGYgPSB0aGlzOwogIHNlbGYubmFtZSA9IG5hbWU7CiAgc2VsZi5tb2RlID0gbmV3IG1vZGUoewogICAgYmxvY2tTaXplOiAxNiwKICAgIGNpcGhlcjogewogICAgICBlbmNyeXB0OiBmdW5jdGlvbihpbkJsb2NrLCBvdXRCbG9jaykgewogICAgICAgIHJldHVybiBfdXBkYXRlQmxvY2soc2VsZi5fdywgaW5CbG9jaywgb3V0QmxvY2ssIGZhbHNlKTsKICAgICAgfSwKICAgICAgZGVjcnlwdDogZnVuY3Rpb24oaW5CbG9jaywgb3V0QmxvY2spIHsKICAgICAgICByZXR1cm4gX3VwZGF0ZUJsb2NrKHNlbGYuX3csIGluQmxvY2ssIG91dEJsb2NrLCB0cnVlKTsKICAgICAgfQogICAgfQogIH0pOwogIHNlbGYuX2luaXQgPSBmYWxzZTsKfTsKCi8qKgogKiBJbml0aWFsaXplcyB0aGlzIEFFUyBhbGdvcml0aG0gYnkgZXhwYW5kaW5nIGl0cyBrZXkuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZS4KICogICAgICAgICAga2V5IHRoZSBrZXkgdG8gdXNlIHdpdGggdGhpcyBhbGdvcml0aG0uCiAqICAgICAgICAgIGRlY3J5cHQgdHJ1ZSBpZiB0aGUgYWxnb3JpdGhtIHNob3VsZCBiZSBpbml0aWFsaXplZCBmb3IgZGVjcnlwdGlvbiwKICogICAgICAgICAgICBmYWxzZSBmb3IgZW5jcnlwdGlvbi4KICovCmZvcmdlLmFlcy5BbGdvcml0aG0ucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYodGhpcy5faW5pdCkgewogICAgcmV0dXJuOwogIH0KCiAgdmFyIGtleSA9IG9wdGlvbnMua2V5OwogIHZhciB0bXA7CgogIC8qIE5vdGU6IFRoZSBrZXkgbWF5IGJlIGEgc3RyaW5nIG9mIGJ5dGVzLCBhbiBhcnJheSBvZiBieXRlcywgYSBieXRlCiAgICBidWZmZXIsIG9yIGFuIGFycmF5IG9mIDMyLWJpdCBpbnRlZ2Vycy4gSWYgdGhlIGtleSBpcyBpbiBieXRlcywgdGhlbgogICAgaXQgbXVzdCBiZSAxNiwgMjQsIG9yIDMyIGJ5dGVzIGluIGxlbmd0aC4gSWYgaXQgaXMgaW4gMzItYml0CiAgICBpbnRlZ2VycywgaXQgbXVzdCBiZSA0LCA2LCBvciA4IGludGVnZXJzIGxvbmcuICovCgogIGlmKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmCiAgICAoa2V5Lmxlbmd0aCA9PT0gMTYgfHwga2V5Lmxlbmd0aCA9PT0gMjQgfHwga2V5Lmxlbmd0aCA9PT0gMzIpKSB7CiAgICAvLyBjb252ZXJ0IGtleSBzdHJpbmcgaW50byBieXRlIGJ1ZmZlcgogICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoa2V5KTsKICB9IGVsc2UgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGtleSkgJiYKICAgIChrZXkubGVuZ3RoID09PSAxNiB8fCBrZXkubGVuZ3RoID09PSAyNCB8fCBrZXkubGVuZ3RoID09PSAzMikpIHsKICAgIC8vIGNvbnZlcnQga2V5IGludGVnZXIgYXJyYXkgaW50byBieXRlIGJ1ZmZlcgogICAgdG1wID0ga2V5OwogICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyArK2kpIHsKICAgICAga2V5LnB1dEJ5dGUodG1wW2ldKTsKICAgIH0KICB9CgogIC8vIGNvbnZlcnQga2V5IGJ5dGUgYnVmZmVyIGludG8gMzItYml0IGludGVnZXIgYXJyYXkKICBpZighZm9yZ2UudXRpbC5pc0FycmF5KGtleSkpIHsKICAgIHRtcCA9IGtleTsKICAgIGtleSA9IFtdOwoKICAgIC8vIGtleSBsZW5ndGhzIG9mIDE2LCAyNCwgMzIgYnl0ZXMgYWxsb3dlZAogICAgdmFyIGxlbiA9IHRtcC5sZW5ndGgoKTsKICAgIGlmKGxlbiA9PT0gMTYgfHwgbGVuID09PSAyNCB8fCBsZW4gPT09IDMyKSB7CiAgICAgIGxlbiA9IGxlbiA+Pj4gMjsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAga2V5LnB1c2godG1wLmdldEludDMyKCkpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBrZXkgbXVzdCBiZSBhbiBhcnJheSBvZiAzMi1iaXQgaW50ZWdlcnMgYnkgbm93CiAgaWYoIWZvcmdlLnV0aWwuaXNBcnJheShrZXkpIHx8CiAgICAhKGtleS5sZW5ndGggPT09IDQgfHwga2V5Lmxlbmd0aCA9PT0gNiB8fCBrZXkubGVuZ3RoID09PSA4KSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSBwYXJhbWV0ZXIuJyk7CiAgfQoKICAvLyBlbmNyeXB0aW9uIG9wZXJhdGlvbiBpcyBhbHdheXMgdXNlZCBmb3IgdGhlc2UgbW9kZXMKICB2YXIgbW9kZSA9IHRoaXMubW9kZS5uYW1lOwogIHZhciBlbmNyeXB0T3AgPSAoWydDRkInLCAnT0ZCJywgJ0NUUicsICdHQ00nXS5pbmRleE9mKG1vZGUpICE9PSAtMSk7CgogIC8vIGRvIGtleSBleHBhbnNpb24KICB0aGlzLl93ID0gX2V4cGFuZEtleShrZXksIG9wdGlvbnMuZGVjcnlwdCAmJiAhZW5jcnlwdE9wKTsKICB0aGlzLl9pbml0ID0gdHJ1ZTsKfTsKCi8qKgogKiBFeHBhbmRzIGEga2V5LiBUeXBpY2FsbHkgb25seSB1c2VkIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0ga2V5IHRoZSBzeW1tZXRyaWMga2V5IHRvIGV4cGFuZCwgYXMgYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIHRvIGV4cGFuZCBmb3IgZGVjcnlwdGlvbiwgZmFsc2UgZm9yIGVuY3J5cHRpb24uCiAqCiAqIEByZXR1cm4gdGhlIGV4cGFuZGVkIGtleS4KICovCmZvcmdlLmFlcy5fZXhwYW5kS2V5ID0gZnVuY3Rpb24oa2V5LCBkZWNyeXB0KSB7CiAgaWYoIWluaXQpIHsKICAgIGluaXRpYWxpemUoKTsKICB9CiAgcmV0dXJuIF9leHBhbmRLZXkoa2V5LCBkZWNyeXB0KTsKfTsKCi8qKgogKiBVcGRhdGVzIGEgc2luZ2xlIGJsb2NrLiBUeXBpY2FsbHkgb25seSB1c2VkIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0gdyB0aGUgZXhwYW5kZWQga2V5IHRvIHVzZS4KICogQHBhcmFtIGlucHV0IGFuIGFycmF5IG9mIGJsb2NrLXNpemUgMzItYml0IHdvcmRzLgogKiBAcGFyYW0gb3V0cHV0IGFuIGFycmF5IG9mIGJsb2NrLXNpemUgMzItYml0IHdvcmRzLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIHRvIGRlY3J5cHQsIGZhbHNlIHRvIGVuY3J5cHQuCiAqLwpmb3JnZS5hZXMuX3VwZGF0ZUJsb2NrID0gX3VwZGF0ZUJsb2NrOwoKCi8qKiBSZWdpc3RlciBBRVMgYWxnb3JpdGhtcyAqKi8KCnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtRUNCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmVjYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtQ0JDJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmNiYyk7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtQ0ZCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmNmYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtT0ZCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLm9mYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtQ1RSJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmN0cik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtR0NNJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmdjbSk7CgpmdW5jdGlvbiByZWdpc3RlckFsZ29yaXRobShuYW1lLCBtb2RlKSB7CiAgdmFyIGZhY3RvcnkgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiBuZXcgZm9yZ2UuYWVzLkFsZ29yaXRobShuYW1lLCBtb2RlKTsKICB9OwogIGZvcmdlLmNpcGhlci5yZWdpc3RlckFsZ29yaXRobShuYW1lLCBmYWN0b3J5KTsKfQoKCi8qKiBBRVMgaW1wbGVtZW50YXRpb24gKiovCgp2YXIgaW5pdCA9IGZhbHNlOyAvLyBub3QgeWV0IGluaXRpYWxpemVkCnZhciBOYiA9IDQ7ICAgICAgIC8vIG51bWJlciBvZiB3b3JkcyBjb21wcmlzaW5nIHRoZSBzdGF0ZSAoQUVTID0gNCkKdmFyIHNib3g7ICAgICAgICAgLy8gbm9uLWxpbmVhciBzdWJzdGl0dXRpb24gdGFibGUgdXNlZCBpbiBrZXkgZXhwYW5zaW9uCnZhciBpc2JveDsgICAgICAgIC8vIGludmVyc2lvbiBvZiBzYm94CnZhciByY29uOyAgICAgICAgIC8vIHJvdW5kIGNvbnN0YW50IHdvcmQgYXJyYXkKdmFyIG1peDsgICAgICAgICAgLy8gbWl4LWNvbHVtbnMgdGFibGUKdmFyIGltaXg7ICAgICAgICAgLy8gaW52ZXJzZSBtaXgtY29sdW1ucyB0YWJsZQoKLyoqCiAqIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uLCBpZTogcHJlY29tcHV0ZXMgdGFibGVzIHRvIG9wdGltaXplIGZvciBzcGVlZC4KICoKICogT25lIHdheSB0byB1bmRlcnN0YW5kIGhvdyBBRVMgd29ya3MgaXMgdG8gaW1hZ2luZSB0aGF0ICdhZGRpdGlvbicgYW5kCiAqICdtdWx0aXBsaWNhdGlvbicgYXJlIGludGVyZmFjZXMgdGhhdCByZXF1aXJlIGNlcnRhaW4gbWF0aGVtYXRpY2FsCiAqIHByb3BlcnRpZXMgdG8gaG9sZCB0cnVlIChpZTogdGhleSBhcmUgYXNzb2NpYXRpdmUpIGJ1dCB0aGV5IG1pZ2h0IGhhdmUKICogZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgcHJvZHVjZSBkaWZmZXJlbnQga2luZHMgb2YgcmVzdWx0cyAuLi4KICogcHJvdmlkZWQgdGhhdCB0aGVpciBtYXRoZW1hdGljYWwgcHJvcGVydGllcyByZW1haW4gdHJ1ZS4gQUVTIGRlZmluZXMKICogaXRzIG93biBtZXRob2RzIG9mIGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiBidXQga2VlcHMgc29tZSBpbXBvcnRhbnQKICogcHJvcGVydGllcyB0aGUgc2FtZSwgaWU6IGFzc29jaWF0aXZpdHkgYW5kIGRpc3RyaWJ1dGl2aXR5LiBUaGUKICogZXhwbGFuYXRpb24gYmVsb3cgdHJpZXMgdG8gc2hlZCBzb21lIGxpZ2h0IG9uIGhvdyBBRVMgZGVmaW5lcyBhZGRpdGlvbgogKiBhbmQgbXVsdGlwbGljYXRpb24gb2YgYnl0ZXMgYW5kIDMyLWJpdCB3b3JkcyBpbiBvcmRlciB0byBwZXJmb3JtIGl0cwogKiBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIGFsZ29yaXRobXMuCiAqCiAqIFRoZSBiYXNpY3M6CiAqCiAqIFRoZSBBRVMgYWxnb3JpdGhtIHZpZXdzIGJ5dGVzIGFzIGJpbmFyeSByZXByZXNlbnRhdGlvbnMgb2YgcG9seW5vbWlhbHMKICogdGhhdCBoYXZlIGVpdGhlciAxIG9yIDAgYXMgdGhlIGNvZWZmaWNpZW50cy4gSXQgZGVmaW5lcyB0aGUgYWRkaXRpb24KICogb3Igc3VidHJhY3Rpb24gb2YgdHdvIGJ5dGVzIGFzIHRoZSBYT1Igb3BlcmF0aW9uLiBJdCBhbHNvIGRlZmluZXMgdGhlCiAqIG11bHRpcGxpY2F0aW9uIG9mIHR3byBieXRlcyBhcyBhIGZpbml0ZSBmaWVsZCByZWZlcnJlZCB0byBhcyBHRigyXjgpCiAqIChOb3RlOiAnR0YnIG1lYW5zICJHYWxvaXMgRmllbGQiIHdoaWNoIGlzIGEgZmllbGQgdGhhdCBjb250YWlucyBhIGZpbml0ZQogKiBudW1iZXIgb2YgZWxlbWVudHMgc28gR0YoMl44KSBoYXMgMjU2IGVsZW1lbnRzKS4KICoKICogVGhpcyBtZWFucyB0aGF0IGFueSB0d28gYnl0ZXMgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGJpbmFyeSBwb2x5bm9taWFsczsKICogd2hlbiB0aGV5IG11bHRpcGxpZWQgdG9nZXRoZXIgYW5kIG1vZHVsYXJseSByZWR1Y2VkIGJ5IGFuIGlycmVkdWNpYmxlCiAqIHBvbHlub21pYWwgb2YgdGhlIDh0aCBkZWdyZWUsIHRoZSByZXN1bHRzIGFyZSB0aGUgZmllbGQgR0YoMl44KS4gVGhlCiAqIHNwZWNpZmljIGlycmVkdWNpYmxlIHBvbHlub21pYWwgdGhhdCBBRVMgdXNlcyBpbiBoZXhhZGVjaW1hbCBpcyAweDExYi4KICogVGhpcyBtdWx0aXBsaWNhdGlvbiBpcyBhc3NvY2lhdGl2ZSB3aXRoIDB4MDEgYXMgdGhlIGlkZW50aXR5OgogKgogKiAoYiAqIDB4MDEgPSBHRihiLCAweDAxKSA9IGIpLgogKgogKiBUaGUgb3BlcmF0aW9uIEdGKGIsIDB4MDIpIGNhbiBiZSBwZXJmb3JtZWQgYXQgdGhlIGJ5dGUgbGV2ZWwgYnkgbGVmdAogKiBzaGlmdGluZyBiIG9uY2UgYW5kIHRoZW4gWE9SJ2luZyBpdCAodG8gcGVyZm9ybSB0aGUgbW9kdWxhciByZWR1Y3Rpb24pCiAqIHdpdGggMHgxMWIgaWYgYiBpcyA+PSAxMjguIFJlcGVhdGVkIGFwcGxpY2F0aW9uIG9mIHRoZSBtdWx0aXBsaWNhdGlvbgogKiBvZiAweDAyIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCB0aGUgbXVsdGlwbGljYXRpb24gb2YgYW55IHR3byBieXRlcy4KICoKICogRm9yIGluc3RhbmNlLCBtdWx0aXBseWluZyAweDU3IGFuZCAweDEzLCBkZW5vdGVkIGFzIEdGKDB4NTcsIDB4MTMpLCBjYW4KICogYmUgcGVyZm9ybWVkIGJ5IGZhY3RvcmluZyAweDEzIGludG8gMHgwMSwgMHgwMiwgYW5kIDB4MTAuIFRoZW4gdGhlc2UKICogZmFjdG9ycyBjYW4gZWFjaCBiZSBtdWx0aXBsaWVkIGJ5IDB4NTcgYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuIFRvIGRvCiAqIHRoZSBtdWx0aXBsaWNhdGlvbiwgdmFsdWVzIGZvciAweDU3IG11bHRpcGxpZWQgYnkgZWFjaCBvZiB0aGVzZSAzIGZhY3RvcnMKICogY2FuIGJlIHByZWNvbXB1dGVkIGFuZCBzdG9yZWQgaW4gYSB0YWJsZS4gVG8gYWRkIHRoZW0sIHRoZSB2YWx1ZXMgZnJvbQogKiB0aGUgdGFibGUgYXJlIFhPUidkIHRvZ2V0aGVyLgogKgogKiBBRVMgYWxzbyBkZWZpbmVzIGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiBvZiB3b3JkcywgdGhhdCBpcyA0LWJ5dGUKICogbnVtYmVycyByZXByZXNlbnRlZCBhcyBwb2x5bm9taWFscyBvZiAzIGRlZ3JlZXMgd2hlcmUgdGhlIGNvZWZmaWNpZW50cwogKiBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMuCiAqCiAqIFRoZSB3b3JkIFthMCwgYTEsIGEyLCBhM10gaXMgYSBwb2x5bm9taWFsIGEzeF4zICsgYTJ4XjIgKyBhMXggKyBhMC4KICoKICogQWRkaXRpb24gaXMgcGVyZm9ybWVkIGJ5IFhPUidpbmcgbGlrZSBwb3dlcnMgb2YgeC4gTXVsdGlwbGljYXRpb24KICogaXMgcGVyZm9ybWVkIGluIHR3byBzdGVwcywgdGhlIGZpcnN0IGlzIGFuIGFsZ2VicmlhYyBleHBhbnNpb24gYXMKICogeW91IHdvdWxkIGRvIG5vcm1hbGx5ICh3aGVyZSBhZGRpdGlvbiBpcyBYT1IpLiBCdXQgdGhlIHJlc3VsdCBpcwogKiBhIHBvbHlub21pYWwgbGFyZ2VyIHRoYW4gMyBkZWdyZWVzIGFuZCB0aHVzIGl0IGNhbm5vdCBmaXQgaW4gYSB3b3JkLiBTbwogKiBuZXh0IHRoZSByZXN1bHQgaXMgbW9kdWxhcmx5IHJlZHVjZWQgYnkgYW4gQUVTLXNwZWNpZmljIHBvbHlub21pYWwgb2YKICogZGVncmVlIDQgd2hpY2ggd2lsbCBhbHdheXMgcHJvZHVjZSBhIHBvbHlub21pYWwgb2YgbGVzcyB0aGFuIDQgZGVncmVlcwogKiBzdWNoIHRoYXQgaXQgd2lsbCBmaXQgaW4gYSB3b3JkLiBJbiBBRVMsIHRoaXMgcG9seW5vbWlhbCBpcyB4XjQgKyAxLgogKgogKiBUaGUgbW9kdWxhciBwcm9kdWN0IG9mIHR3byBwb2x5bm9taWFscyAnYScgYW5kICdiJyBpcyB0aHVzOgogKgogKiBkKHgpID0gZDN4XjMgKyBkMnheMiArIGQxeCArIGQwCiAqIHdpdGgKICogZDAgPSBHRihhMCwgYjApIF4gR0YoYTMsIGIxKSBeIEdGKGEyLCBiMikgXiBHRihhMSwgYjMpCiAqIGQxID0gR0YoYTEsIGIwKSBeIEdGKGEwLCBiMSkgXiBHRihhMywgYjIpIF4gR0YoYTIsIGIzKQogKiBkMiA9IEdGKGEyLCBiMCkgXiBHRihhMSwgYjEpIF4gR0YoYTAsIGIyKSBeIEdGKGEzLCBiMykKICogZDMgPSBHRihhMywgYjApIF4gR0YoYTIsIGIxKSBeIEdGKGExLCBiMikgXiBHRihhMCwgYjMpCiAqCiAqIEFzIGEgbWF0cml4OgogKgogKiBbZDBdID0gW2EwIGEzIGEyIGExXVtiMF0KICogW2QxXSAgIFthMSBhMCBhMyBhMl1bYjFdCiAqIFtkMl0gICBbYTIgYTEgYTAgYTNdW2IyXQogKiBbZDNdICAgW2EzIGEyIGExIGEwXVtiM10KICoKICogU3BlY2lhbCBwb2x5bm9taWFscyBkZWZpbmVkIGJ5IEFFUyAoMHgwMiA9PSB7MDJ9KToKICogYSh4KSAgICA9IHswM314XjMgKyB7MDF9eF4yICsgezAxfXggKyB7MDJ9CiAqIGFeLTEoeCkgPSB7MGJ9eF4zICsgezBkfXheMiArIHswOX14ICsgezBlfS4KICoKICogVGhlc2UgcG9seW5vbWlhbHMgYXJlIHVzZWQgaW4gdGhlIE1peENvbHVtbnMoKSBhbmQgSW52ZXJzZU1peENvbHVtbnMoKQogKiBvcGVyYXRpb25zLCByZXNwZWN0aXZlbHksIHRvIGNhdXNlIGVhY2ggZWxlbWVudCBpbiB0aGUgc3RhdGUgdG8gYWZmZWN0CiAqIHRoZSBvdXRwdXQgKHJlZmVycmVkIHRvIGFzIGRpZmZ1c2luZykuCiAqCiAqIFJvdFdvcmQoKSB1c2VzOiBhMCA9IGExID0gYTIgPSB7MDB9IGFuZCBhMyA9IHswMX0sIHdoaWNoIGlzIHRoZQogKiBwb2x5bm9taWFsIHgzLgogKgogKiBUaGUgU2hpZnRSb3dzKCkgbWV0aG9kIG1vZGlmaWVzIHRoZSBsYXN0IDMgcm93cyBpbiB0aGUgc3RhdGUgKHdoZXJlCiAqIHRoZSBzdGF0ZSBpcyA0IHdvcmRzIHdpdGggNCBieXRlcyBwZXIgd29yZCkgYnkgc2hpZnRpbmcgYnl0ZXMgY3ljbGljYWxseS4KICogVGhlIDFzdCBieXRlIGluIHRoZSBzZWNvbmQgcm93IGlzIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIHJvdy4gVGhlIDFzdAogKiBhbmQgMm5kIGJ5dGVzIGluIHRoZSB0aGlyZCByb3cgYXJlIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIHJvdy4gVGhlIDFzdCwKICogMm5kLCBhbmQgM3JkIGJ5dGVzIGFyZSBtb3ZlZCBpbiB0aGUgZm91cnRoIHJvdy4KICoKICogTW9yZSBkZXRhaWxzIG9uIGhvdyBBRVMgYXJpdGhtZXRpYyB3b3JrczoKICoKICogSW4gdGhlIHBvbHlub21pYWwgcmVwcmVzZW50YXRpb24gb2YgYmluYXJ5IG51bWJlcnMsIFhPUiBwZXJmb3JtcyBhZGRpdGlvbgogKiBhbmQgc3VidHJhY3Rpb24gYW5kIG11bHRpcGxpY2F0aW9uIGluIEdGKDJeOCkgZGVub3RlZCBhcyBHRihhLCBiKQogKiBjb3JyZXNwb25kcyB3aXRoIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBwb2x5bm9taWFscyBtb2R1bG8gYW4gaXJyZWR1Y2libGUKICogcG9seW5vbWlhbCBvZiBkZWdyZWUgOC4gSW4gb3RoZXIgd29yZHMsIGZvciBBRVMsIEdGKGEsIGIpIHdpbGwgbXVsdGlwbHkKICogcG9seW5vbWlhbCAnYScgd2l0aCBwb2x5bm9taWFsICdiJyBhbmQgdGhlbiBkbyBhIG1vZHVsYXIgcmVkdWN0aW9uIGJ5CiAqIGFuIEFFUy1zcGVjaWZpYyBpcnJlZHVjaWJsZSBwb2x5bm9taWFsIG9mIGRlZ3JlZSA4LgogKgogKiBBIHBvbHlub21pYWwgaXMgaXJyZWR1Y2libGUgaWYgaXRzIG9ubHkgZGl2aXNvcnMgYXJlIG9uZSBhbmQgaXRzZWxmLiBGb3IKICogdGhlIEFFUyBhbGdvcml0aG0sIHRoaXMgaXJyZWR1Y2libGUgcG9seW5vbWlhbCBpczoKICoKICogbSh4KSA9IHheOCArIHheNCArIHheMyArIHggKyAxLAogKgogKiBvciB7MDF9ezFifSBpbiBoZXhhZGVjaW1hbCBub3RhdGlvbiwgd2hlcmUgZWFjaCBjb2VmZmljaWVudCBpcyBhIGJpdDoKICogMTAwMDExMDExID0gMjgzID0gMHgxMWIuCiAqCiAqIEZvciBleGFtcGxlLCBHRigweDU3LCAweDgzKSA9IDB4YzEgYmVjYXVzZQogKgogKiAweDU3ID0gODcgID0gMDEwMTAxMTEgPSB4XjYgKyB4XjQgKyB4XjIgKyB4ICsgMQogKiAweDg1ID0gMTMxID0gMTAwMDAxMDEgPSB4XjcgKyB4ICsgMQogKgogKiAoeF42ICsgeF40ICsgeF4yICsgeCArIDEpICogKHheNyArIHggKyAxKQogKiA9ICB4XjEzICsgeF4xMSArIHheOSArIHheOCArIHheNyArCiAqICAgIHheNyArIHheNSArIHheMyArIHheMiArIHggKwogKiAgICB4XjYgKyB4XjQgKyB4XjIgKyB4ICsgMQogKiA9ICB4XjEzICsgeF4xMSArIHheOSArIHheOCArIHheNiArIHheNSArIHheNCArIHheMyArIDEgPSB5CiAqICAgIHkgbW9kdWxvICh4XjggKyB4XjQgKyB4XjMgKyB4ICsgMSkKICogPSAgeF43ICsgeF42ICsgMS4KICoKICogVGhlIG1vZHVsYXIgcmVkdWN0aW9uIGJ5IG0oeCkgZ3VhcmFudGVlcyB0aGUgcmVzdWx0IHdpbGwgYmUgYSBiaW5hcnkKICogcG9seW5vbWlhbCBvZiBsZXNzIHRoYW4gZGVncmVlIDgsIHNvIHRoYXQgaXQgY2FuIGZpdCBpbiBhIGJ5dGUuCiAqCiAqIFRoZSBvcGVyYXRpb24gdG8gbXVsdGlwbHkgYSBiaW5hcnkgcG9seW5vbWlhbCBiIHdpdGggeCAodGhlIHBvbHlub21pYWwKICogeCBpbiBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgMDAwMDAwMTApIGlzOgogKgogKiBiXzd4XjggKyBiXzZ4XjcgKyBiXzV4XjYgKyBiXzR4XjUgKyBiXzN4XjQgKyBiXzJ4XjMgKyBiXzF4XjIgKyBiXzB4XjEKICoKICogVG8gZ2V0IEdGKGIsIHgpIHdlIG11c3QgcmVkdWNlIHRoYXQgYnkgbSh4KS4gSWYgYl83IGlzIDAgKHRoYXQgaXMgdGhlCiAqIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGlzIDAgaW4gYikgdGhlbiB0aGUgcmVzdWx0IGlzIGFscmVhZHkgcmVkdWNlZC4gSWYKICogaXQgaXMgMSwgdGhlbiB3ZSBjYW4gcmVkdWNlIGl0IGJ5IHN1YnRyYWN0aW5nIG0oeCkgdmlhIGFuIFhPUi4KICoKICogSXQgZm9sbG93cyB0aGF0IG11bHRpcGxpY2F0aW9uIGJ5IHggKDAwMDAwMDEwIG9yIDB4MDIpIGNhbiBiZSBpbXBsZW1lbnRlZAogKiBieSBwZXJmb3JtaW5nIGEgbGVmdCBzaGlmdCBmb2xsb3dlZCBieSBhIGNvbmRpdGlvbmFsIGJpdHdpc2UgWE9SIHdpdGgKICogMHgxYi4gVGhpcyBvcGVyYXRpb24gb24gYnl0ZXMgaXMgZGVub3RlZCBieSB4dGltZSgpLiBNdWx0aXBsaWNhdGlvbiBieQogKiBoaWdoZXIgcG93ZXJzIG9mIHggY2FuIGJlIGltcGxlbWVudGVkIGJ5IHJlcGVhdGVkIGFwcGxpY2F0aW9uIG9mIHh0aW1lKCkuCiAqCiAqIEJ5IGFkZGluZyBpbnRlcm1lZGlhdGUgcmVzdWx0cywgbXVsdGlwbGljYXRpb24gYnkgYW55IGNvbnN0YW50IGNhbiBiZQogKiBpbXBsZW1lbnRlZC4gRm9yIGluc3RhbmNlOgogKgogKiBHRigweDU3LCAweDEzKSA9IDB4ZmUgYmVjYXVzZToKICoKICogeHRpbWUoYikgPSAoYiAmIDEyOCkgPyAoYiA8PCAxIF4gMHgxMWIpIDogKGIgPDwgMSkKICoKICogTm90ZTogV2UgWE9SIHdpdGggMHgxMWIgaW5zdGVhZCBvZiAweDFiIGJlY2F1c2UgaW4gamF2YXNjcmlwdCBvdXIKICogZGF0YXR5cGUgZm9yIGIgY2FuIGJlIGxhcmdlciB0aGFuIDEgYnl0ZSwgc28gYSBsZWZ0IHNoaWZ0IHdpbGwgbm90CiAqIGF1dG9tYXRpY2FsbHkgZWxpbWluYXRlIGJpdHMgdGhhdCBvdmVyZmxvdyBhIGJ5dGUgLi4uIGJ5IFhPUidpbmcgdGhlCiAqIG92ZXJmbG93IGJpdCB3aXRoIDEgKHRoZSBleHRyYSBvbmUgZnJvbSAweDExYikgd2UgemVybyBpdCBvdXQuCiAqCiAqIEdGKDB4NTcsIDB4MDIpID0geHRpbWUoMHg1NykgPSAweGFlCiAqIEdGKDB4NTcsIDB4MDQpID0geHRpbWUoMHhhZSkgPSAweDQ3CiAqIEdGKDB4NTcsIDB4MDgpID0geHRpbWUoMHg0NykgPSAweDhlCiAqIEdGKDB4NTcsIDB4MTApID0geHRpbWUoMHg4ZSkgPSAweDA3CiAqCiAqIEdGKDB4NTcsIDB4MTMpID0gR0YoMHg1NywgKDB4MDEgXiAweDAyIF4gMHgxMCkpCiAqCiAqIEFuZCBieSB0aGUgZGlzdHJpYnV0aXZlIHByb3BlcnR5IChzaW5jZSBYT1IgaXMgYWRkaXRpb24gYW5kIEdGKCkgaXMKICogbXVsdGlwbGljYXRpb24pOgogKgogKiA9IEdGKDB4NTcsIDB4MDEpIF4gR0YoMHg1NywgMHgwMikgXiBHRigweDU3LCAweDEwKQogKiA9IDB4NTcgXiAweGFlIF4gMHgwNwogKiA9IDB4ZmUuCiAqLwpmdW5jdGlvbiBpbml0aWFsaXplKCkgewogIGluaXQgPSB0cnVlOwoKICAvKiBQb3B1bGF0ZSB0aGUgUmNvbiB0YWJsZS4gVGhlc2UgYXJlIHRoZSB2YWx1ZXMgZ2l2ZW4gYnkKICAgIFt4XihpLTEpLHswMH0sezAwfSx7MDB9XSB3aGVyZSB4XihpLTEpIGFyZSBwb3dlcnMgb2YgeCAoYW5kIHggPSAweDAyKQogICAgaW4gdGhlIGZpZWxkIG9mIEdGKDJeOCksIHdoZXJlIGkgc3RhcnRzIGF0IDEuCgogICAgcmNvblswXSA9IFsweDAwLCAweDAwLCAweDAwLCAweDAwXQogICAgcmNvblsxXSA9IFsweDAxLCAweDAwLCAweDAwLCAweDAwXSAyXigxLTEpID0gMl4wID0gMQogICAgcmNvblsyXSA9IFsweDAyLCAweDAwLCAweDAwLCAweDAwXSAyXigyLTEpID0gMl4xID0gMgogICAgLi4uCiAgICByY29uWzldICA9IFsweDFCLCAweDAwLCAweDAwLCAweDAwXSAyXig5LTEpICA9IDJeOCA9IDB4MUIKICAgIHJjb25bMTBdID0gWzB4MzYsIDB4MDAsIDB4MDAsIDB4MDBdIDJeKDEwLTEpID0gMl45ID0gMHgzNgoKICAgIFdlIG9ubHkgc3RvcmUgdGhlIGZpcnN0IGJ5dGUgYmVjYXVzZSBpdCBpcyB0aGUgb25seSBvbmUgdXNlZC4KICAqLwogIHJjb24gPSBbMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxQiwgMHgzNl07CgogIC8vIGNvbXB1dGUgeHRpbWUgdGFibGUgd2hpY2ggbWFwcyBpIG9udG8gR0YoaSwgMHgwMikKICB2YXIgeHRpbWUgPSBuZXcgQXJyYXkoMjU2KTsKICBmb3IodmFyIGkgPSAwOyBpIDwgMTI4OyArK2kpIHsKICAgIHh0aW1lW2ldID0gaSA8PCAxOwogICAgeHRpbWVbaSArIDEyOF0gPSAoaSArIDEyOCkgPDwgMSBeIDB4MTFCOwogIH0KCiAgLy8gY29tcHV0ZSBhbGwgb3RoZXIgdGFibGVzCiAgc2JveCA9IG5ldyBBcnJheSgyNTYpOwogIGlzYm94ID0gbmV3IEFycmF5KDI1Nik7CiAgbWl4ID0gbmV3IEFycmF5KDQpOwogIGltaXggPSBuZXcgQXJyYXkoNCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgewogICAgbWl4W2ldID0gbmV3IEFycmF5KDI1Nik7CiAgICBpbWl4W2ldID0gbmV3IEFycmF5KDI1Nik7CiAgfQogIHZhciBlID0gMCwgZWkgPSAwLCBlMiwgZTQsIGU4LCBzeCwgc3gyLCBtZSwgaW1lOwogIGZvcih2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgLyogV2UgbmVlZCB0byBnZW5lcmF0ZSB0aGUgU3ViQnl0ZXMoKSBzYm94IGFuZCBpc2JveCB0YWJsZXMgc28gdGhhdAogICAgICB3ZSBjYW4gcGVyZm9ybSBieXRlIHN1YnN0aXR1dGlvbnMuIFRoaXMgcmVxdWlyZXMgdXMgdG8gdHJhdmVyc2UKICAgICAgYWxsIG9mIHRoZSBlbGVtZW50cyBpbiBHRiwgZmluZCB0aGVpciBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlcywKICAgICAgYW5kIGFwcGx5IHRvIGVhY2ggdGhlIGZvbGxvd2luZyBhZmZpbmUgdHJhbnNmb3JtYXRpb246CgogICAgICBiaScgPSBiaSBeIGIoaSArIDQpIG1vZCA4IF4gYihpICsgNSkgbW9kIDggXiBiKGkgKyA2KSBtb2QgOCBeCiAgICAgICAgICAgIGIoaSArIDcpIG1vZCA4IF4gY2kKICAgICAgZm9yIDAgPD0gaSA8IDgsIHdoZXJlIGJpIGlzIHRoZSBpdGggYml0IG9mIHRoZSBieXRlLCBhbmQgY2kgaXMgdGhlCiAgICAgIGl0aCBiaXQgb2YgYSBieXRlIGMgd2l0aCB0aGUgdmFsdWUgezYzfSBvciB7MDExMDAwMTF9LgoKICAgICAgSXQgaXMgcG9zc2libGUgdG8gdHJhdmVyc2UgZXZlcnkgcG9zc2libGUgdmFsdWUgaW4gYSBHYWxvaXMgZmllbGQKICAgICAgdXNpbmcgd2hhdCBpcyByZWZlcnJlZCB0byBhcyBhICdnZW5lcmF0b3InLiBUaGVyZSBhcmUgbWFueQogICAgICBnZW5lcmF0b3JzICgxMjggb3V0IG9mIDI1Nik6IDMsNSw2LDksMTEsODIgdG8gbmFtZSBhIGZldy4gVG8gZnVsbHkKICAgICAgdHJhdmVyc2UgR0Ygd2UgaXRlcmF0ZSAyNTUgdGltZXMsIG11bHRpcGx5aW5nIGJ5IG91ciBnZW5lcmF0b3IKICAgICAgZWFjaCB0aW1lLgoKICAgICAgT24gZWFjaCBpdGVyYXRpb24gd2UgY2FuIGRldGVybWluZSB0aGUgbXVsdGlwbGljYXRpdmUgaW52ZXJzZSBmb3IKICAgICAgdGhlIGN1cnJlbnQgZWxlbWVudC4KCiAgICAgIFN1cHBvc2UgdGhlcmUgaXMgYW4gZWxlbWVudCBpbiBHRiAnZScuIEZvciBhIGdpdmVuIGdlbmVyYXRvciAnZycsCiAgICAgIGUgPSBnXnguIFRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIGUgaXMgZ14oMjU1IC0geCkuIEl0IHR1cm5zCiAgICAgIG91dCB0aGF0IGlmIHVzZSB0aGUgaW52ZXJzZSBvZiBhIGdlbmVyYXRvciBhcyBhbm90aGVyIGdlbmVyYXRvcgogICAgICBpdCB3aWxsIHByb2R1Y2UgYWxsIG9mIHRoZSBjb3JyZXNwb25kaW5nIG11bHRpcGxpY2F0aXZlIGludmVyc2VzCiAgICAgIGF0IHRoZSBzYW1lIHRpbWUuIEZvciB0aGlzIHJlYXNvbiwgd2UgY2hvb3NlIDUgYXMgb3VyIGludmVyc2UKICAgICAgZ2VuZXJhdG9yIGJlY2F1c2UgaXQgb25seSByZXF1aXJlcyAyIG11bHRpcGxpZXMgYW5kIDEgYWRkIGFuZCBpdHMKICAgICAgaW52ZXJzZSwgODIsIHJlcXVpcmVzIHJlbGF0aXZlbHkgZmV3IG9wZXJhdGlvbnMgYXMgd2VsbC4KCiAgICAgIEluIG9yZGVyIHRvIGFwcGx5IHRoZSBhZmZpbmUgdHJhbnNmb3JtYXRpb24sIHRoZSBtdWx0aXBsaWNhdGl2ZQogICAgICBpbnZlcnNlICdlaScgb2YgJ2UnIGNhbiBiZSByZXBlYXRlZGx5IFhPUidkICg0IHRpbWVzKSB3aXRoIGEKICAgICAgYml0LWN5Y2xpbmcgb2YgJ2VpJy4gVG8gZG8gdGhpcyAnZWknIGlzIGZpcnN0IHN0b3JlZCBpbiAncycgYW5kCiAgICAgICd4Jy4gVGhlbiAncycgaXMgbGVmdCBzaGlmdGVkIGFuZCB0aGUgaGlnaCBiaXQgb2YgJ3MnIGlzIG1hZGUgdGhlCiAgICAgIGxvdyBiaXQuIFRoZSByZXN1bHRpbmcgdmFsdWUgaXMgc3RvcmVkIGluICdzJy4gVGhlbiAneCcgaXMgWE9SJ2QKICAgICAgd2l0aCAncycgYW5kIHN0b3JlZCBpbiAneCcuIE9uIGVhY2ggc3Vic2VxdWVudCBpdGVyYXRpb24gdGhlIHNhbWUKICAgICAgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZC4gV2hlbiA0IGl0ZXJhdGlvbnMgYXJlIGNvbXBsZXRlLCAneCcgaXMKICAgICAgWE9SJ2Qgd2l0aCAnYycgKDB4NjMpIGFuZCB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgaXMgc3RvcmVkIGluICd4Jy4KICAgICAgRm9yIGV4YW1wbGU6CgogICAgICBzID0gMDEwMDAwMDEKICAgICAgeCA9IDAxMDAwMDAxCgogICAgICBpdGVyYXRpb24gMTogcyA9IDEwMDAwMDEwLCB4IF49IHMKICAgICAgaXRlcmF0aW9uIDI6IHMgPSAwMDAwMDEwMSwgeCBePSBzCiAgICAgIGl0ZXJhdGlvbiAzOiBzID0gMDAwMDEwMTAsIHggXj0gcwogICAgICBpdGVyYXRpb24gNDogcyA9IDAwMDEwMTAwLCB4IF49IHMKICAgICAgeCBePSAweDYzCgogICAgICBUaGlzIGNhbiBiZSBkb25lIHdpdGggYSBsb29wIHdoZXJlIHMgPSAocyA8PCAxKSB8IChzID4+IDcpLiBIb3dldmVyLAogICAgICBpdCBjYW4gYWxzbyBiZSBkb25lIGJ5IHVzaW5nIGEgc2luZ2xlIDE2LWJpdCAoaW4gdGhpcyBjYXNlIDMyLWJpdCkKICAgICAgbnVtYmVyICdzeCcuIFNpbmNlIFhPUiBpcyBhbiBhc3NvY2lhdGl2ZSBvcGVyYXRpb24sIHdlIGNhbiBzZXQgJ3N4JwogICAgICB0byAnZWknIGFuZCB0aGVuIFhPUiBpdCB3aXRoICdzeCcgbGVmdC1zaGlmdGVkIDEsMiwzLCBhbmQgNCB0aW1lcy4KICAgICAgVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyB3aWxsIGZsb3cgaW50byB0aGUgaGlnaCA4IGJpdCBwb3NpdGlvbnMKICAgICAgYW5kIGJlIGNvcnJlY3RseSBYT1InZCB3aXRoIG9uZSBhbm90aGVyLiBBbGwgdGhhdCByZW1haW5zIHdpbGwgYmUKICAgICAgdG8gY3ljbGUgdGhlIGhpZ2ggOCBiaXRzIGJ5IFhPUidpbmcgdGhlbSBhbGwgd2l0aCB0aGUgbG93ZXIgOCBiaXRzCiAgICAgIGFmdGVyd2FyZHMuCgogICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlJ3JlIHBvcHVsYXRpbmcgc2JveCBhbmQgaXNib3ggd2UgY2FuIHByZWNvbXB1dGUKICAgICAgdGhlIG11bHRpcGxpY2F0aW9uIHdlJ2xsIG5lZWQgdG8gZG8gdG8gZG8gTWl4Q29sdW1ucygpIGxhdGVyLgogICAgKi8KCiAgICAvLyBhcHBseSBhZmZpbmUgdHJhbnNmb3JtYXRpb24KICAgIHN4ID0gZWkgXiAoZWkgPDwgMSkgXiAoZWkgPDwgMikgXiAoZWkgPDwgMykgXiAoZWkgPDwgNCk7CiAgICBzeCA9IChzeCA+PiA4KSBeIChzeCAmIDI1NSkgXiAweDYzOwoKICAgIC8vIHVwZGF0ZSB0YWJsZXMKICAgIHNib3hbZV0gPSBzeDsKICAgIGlzYm94W3N4XSA9IGU7CgogICAgLyogTWl4aW5nIGNvbHVtbnMgaXMgZG9uZSB1c2luZyBtYXRyaXggbXVsdGlwbGljYXRpb24uIFRoZSBjb2x1bW5zCiAgICAgIHRoYXQgYXJlIHRvIGJlIG1peGVkIGFyZSBlYWNoIGEgc2luZ2xlIHdvcmQgaW4gdGhlIGN1cnJlbnQgc3RhdGUuCiAgICAgIFRoZSBzdGF0ZSBoYXMgTmIgY29sdW1ucyAoNCBjb2x1bW5zKS4gVGhlcmVmb3JlIGVhY2ggY29sdW1uIGlzIGEKICAgICAgNCBieXRlIHdvcmQuIFNvIHRvIG1peCB0aGUgY29sdW1ucyBpbiBhIHNpbmdsZSBjb2x1bW4gJ2MnIHdoZXJlCiAgICAgIGl0cyByb3dzIGFyZSByMCwgcjEsIHIyLCBhbmQgcjMsIHdlIHVzZSB0aGUgZm9sbG93aW5nIG1hdHJpeAogICAgICBtdWx0aXBsaWNhdGlvbjoKCiAgICAgIFsyIDMgMSAxXSpbcjAsY109W3InMCxjXQogICAgICBbMSAyIDMgMV0gW3IxLGNdIFtyJzEsY10KICAgICAgWzEgMSAyIDNdIFtyMixjXSBbcicyLGNdCiAgICAgIFszIDEgMSAyXSBbcjMsY10gW3InMyxjXQoKICAgICAgcjAsIHIxLCByMiwgYW5kIHIzIGFyZSBlYWNoIDEgYnl0ZSBvZiBvbmUgb2YgdGhlIHdvcmRzIGluIHRoZQogICAgICBzdGF0ZSAoYSBjb2x1bW4pLiBUbyBkbyBtYXRyaXggbXVsdGlwbGljYXRpb24gZm9yIGVhY2ggbWl4ZWQKICAgICAgY29sdW1uIGMnIHdlIG11bHRpcGx5IHRoZSBjb3JyZXNwb25kaW5nIHJvdyBmcm9tIHRoZSBsZWZ0IG1hdHJpeAogICAgICB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGNvbHVtbiBmcm9tIHRoZSByaWdodCBtYXRyaXguIEluIHRvdGFsLCB3ZQogICAgICBnZXQgNCBlcXVhdGlvbnM6CgogICAgICByMCxjJyA9IDIqcjAsYyArIDMqcjEsYyArIDEqcjIsYyArIDEqcjMsYwogICAgICByMSxjJyA9IDEqcjAsYyArIDIqcjEsYyArIDMqcjIsYyArIDEqcjMsYwogICAgICByMixjJyA9IDEqcjAsYyArIDEqcjEsYyArIDIqcjIsYyArIDMqcjMsYwogICAgICByMyxjJyA9IDMqcjAsYyArIDEqcjEsYyArIDEqcjIsYyArIDIqcjMsYwoKICAgICAgQXMgdXN1YWwsIHRoZSBtdWx0aXBsaWNhdGlvbiBpcyBhcyBwcmV2aW91c2x5IGRlZmluZWQgYW5kIHRoZQogICAgICBhZGRpdGlvbiBpcyBYT1IuIEluIG9yZGVyIHRvIG9wdGltaXplIG1peGluZyBjb2x1bW5zIHdlIGNhbiBzdG9yZQogICAgICB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0cyBpbiB0YWJsZXMuIElmIHlvdSB0aGluayBvZiB0aGUgd2hvbGUKICAgICAgY29sdW1uIGFzIGEgd29yZCAoaXQgbWlnaHQgaGVscCB0byB2aXN1YWxpemUgYnkgbWVudGFsbHkgcm90YXRpbmcKICAgICAgdGhlIGVxdWF0aW9ucyBhYm92ZSBieSBjb3VudGVyY2xvY2t3aXNlIDkwIGRlZ3JlZXMpIHRoZW4geW91IGNhbgogICAgICBzZWUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwgdG8gbWFwIHRoZSBtdWx0aXBsaWNhdGlvbnMgcGVyZm9ybWVkIG9uCiAgICAgIGVhY2ggYnl0ZSAocjAsIHIxLCByMiwgcjMpIG9udG8gYSB3b3JkIGFzIHdlbGwuIEZvciBpbnN0YW5jZSwgd2UKICAgICAgY291bGQgbWFwIDIqcjAsMSpyMCwxKnIwLDMqcjAgb250byBhIHdvcmQgYnkgc3RvcmluZyAyKnIwIGluIHRoZQogICAgICBoaWdoZXN0IDggYml0cyBhbmQgMypyMCBpbiB0aGUgbG93ZXN0IDggYml0cyAod2l0aCB0aGUgb3RoZXIgdHdvCiAgICAgIHJlc3BlY3RpdmVseSBpbiB0aGUgbWlkZGxlKS4gVGhpcyBtZWFucyB0aGF0IGEgdGFibGUgY2FuIGJlCiAgICAgIGNvbnN0cnVjdGVkIHRoYXQgdXNlcyByMCBhcyBhbiBpbmRleCB0byB0aGUgd29yZC4gV2UgY2FuIGRvIHRoZQogICAgICBzYW1lIHdpdGggcjEsIHIyLCBhbmQgcjMsIGNyZWF0aW5nIGEgdG90YWwgb2YgNCB0YWJsZXMuCgogICAgICBUbyBjb25zdHJ1Y3QgYSBmdWxsIGMnLCB3ZSBjYW4ganVzdCBsb29rIHVwIGVhY2ggYnl0ZSBvZiBjIGluCiAgICAgIHRoZWlyIHJlc3BlY3RpdmUgdGFibGVzIGFuZCBYT1IgdGhlIHJlc3VsdHMgdG9nZXRoZXIuCgogICAgICBBbHNvLCB0byBidWlsZCBlYWNoIHRhYmxlIHdlIG9ubHkgaGF2ZSB0byBjYWxjdWxhdGUgdGhlIHdvcmQKICAgICAgZm9yIDIsMSwxLDMgZm9yIGV2ZXJ5IGJ5dGUgLi4uIHdoaWNoIHdlIGNhbiBkbyBvbiBlYWNoIGl0ZXJhdGlvbgogICAgICBvZiB0aGlzIGxvb3Agc2luY2Ugd2Ugd2lsbCBpdGVyYXRlIG92ZXIgZXZlcnkgYnl0ZS4gQWZ0ZXIgd2UgaGF2ZQogICAgICBjYWxjdWxhdGVkIDIsMSwxLDMgd2UgY2FuIGdldCB0aGUgcmVzdWx0cyBmb3IgdGhlIG90aGVyIHRhYmxlcwogICAgICBieSBjeWNsaW5nIHRoZSBieXRlIGF0IHRoZSBlbmQgdG8gdGhlIGJlZ2lubmluZy4gRm9yIGluc3RhbmNlCiAgICAgIHdlIGNhbiB0YWtlIHRoZSByZXN1bHQgb2YgdGFibGUgMiwxLDEsMyBhbmQgcHJvZHVjZSB0YWJsZSAzLDIsMSwxCiAgICAgIGJ5IG1vdmluZyB0aGUgcmlnaHQgbW9zdCBieXRlIHRvIHRoZSBsZWZ0IG1vc3QgcG9zaXRpb24ganVzdCBsaWtlCiAgICAgIGhvdyB5b3UgY2FuIGltYWdpbmUgdGhlIDMgbW92ZWQgb3V0IG9mIDIsMSwxLDMgYW5kIHRvIHRoZSBmcm9udAogICAgICB0byBwcm9kdWNlIDMsMiwxLDEuCgogICAgICBUaGVyZSBpcyBhbm90aGVyIG9wdGltaXphdGlvbiBpbiB0aGF0IHRoZSBzYW1lIG11bHRpcGxlcyBvZgogICAgICB0aGUgY3VycmVudCBlbGVtZW50IHdlIG5lZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSBvdXIgZ2VuZXJhdG9yCiAgICAgIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBjYW4gYmUgcmV1c2VkIGluIHBlcmZvcm1pbmcgdGhlIDIsMSwxLDMKICAgICAgY2FsY3VsYXRpb24uIFdlIGFsc28gY2FsY3VsYXRlIHRoZSBpbnZlcnNlIG1peCBjb2x1bW4gdGFibGVzLAogICAgICB3aXRoIGUsOSxkLGIgYmVpbmcgdGhlIGludmVyc2Ugb2YgMiwxLDEsMy4KCiAgICAgIFdoZW4gd2UncmUgZG9uZSwgYW5kIHdlIG5lZWQgdG8gYWN0dWFsbHkgbWl4IGNvbHVtbnMsIHRoZSBmaXJzdAogICAgICBieXRlIG9mIGVhY2ggc3RhdGUgd29yZCBzaG91bGQgYmUgcHV0IHRocm91Z2ggbWl4WzBdICgyLDEsMSwzKSwKICAgICAgdGhlIHNlY29uZCB0aHJvdWdoIG1peFsxXSAoMywyLDEsMSkgYW5kIHNvIGZvcnRoLiBUaGVuIHRoZXkgc2hvdWxkCiAgICAgIGJlIFhPUidkIHRvZ2V0aGVyIHRvIHByb2R1Y2UgdGhlIGZ1bGx5IG1peGVkIGNvbHVtbi4KICAgICovCgogICAgLy8gY2FsY3VsYXRlIG1peCBhbmQgaW1peCB0YWJsZSB2YWx1ZXMKICAgIHN4MiA9IHh0aW1lW3N4XTsKICAgIGUyID0geHRpbWVbZV07CiAgICBlNCA9IHh0aW1lW2UyXTsKICAgIGU4ID0geHRpbWVbZTRdOwogICAgbWUgPQogICAgICAoc3gyIDw8IDI0KSBeICAvLyAyCiAgICAgIChzeCA8PCAxNikgXiAgIC8vIDEKICAgICAgKHN4IDw8IDgpIF4gICAgLy8gMQogICAgICAoc3ggXiBzeDIpOyAgICAvLyAzCiAgICBpbWUgPQogICAgICAoZTIgXiBlNCBeIGU4KSA8PCAyNCBeICAvLyBFICgxNCkKICAgICAgKGUgXiBlOCkgPDwgMTYgXiAgICAgICAgLy8gOQogICAgICAoZSBeIGU0IF4gZTgpIDw8IDggXiAgICAvLyBEICgxMykKICAgICAgKGUgXiBlMiBeIGU4KTsgICAgICAgICAgLy8gQiAoMTEpCiAgICAvLyBwcm9kdWNlIGVhY2ggb2YgdGhlIG1peCB0YWJsZXMgYnkgcm90YXRpbmcgdGhlIDIsMSwxLDMgdmFsdWUKICAgIGZvcih2YXIgbiA9IDA7IG4gPCA0OyArK24pIHsKICAgICAgbWl4W25dW2VdID0gbWU7CiAgICAgIGltaXhbbl1bc3hdID0gaW1lOwogICAgICAvLyBjeWNsZSB0aGUgcmlnaHQgbW9zdCBieXRlIHRvIHRoZSBsZWZ0IG1vc3QgcG9zaXRpb24KICAgICAgLy8gaWU6IDIsMSwxLDMgYmVjb21lcyAzLDIsMSwxCiAgICAgIG1lID0gbWUgPDwgMjQgfCBtZSA+Pj4gODsKICAgICAgaW1lID0gaW1lIDw8IDI0IHwgaW1lID4+PiA4OwogICAgfQoKICAgIC8vIGdldCBuZXh0IGVsZW1lbnQgYW5kIGludmVyc2UKICAgIGlmKGUgPT09IDApIHsKICAgICAgLy8gMSBpcyB0aGUgaW52ZXJzZSBvZiAxCiAgICAgIGUgPSBlaSA9IDE7CiAgICB9IGVsc2UgewogICAgICAvLyBlID0gMmUgKyAyKjIqMiooMTBlKSkgPSBtdWx0aXBseSBlIGJ5IDgyIChjaG9zZW4gZ2VuZXJhdG9yKQogICAgICAvLyBlaSA9IGVpICsgMioyKmVpID0gbXVsdGlwbHkgZWkgYnkgNSAoaW52ZXJzZSBnZW5lcmF0b3IpCiAgICAgIGUgPSBlMiBeIHh0aW1lW3h0aW1lW3h0aW1lW2UyIF4gZThdXV07CiAgICAgIGVpIF49IHh0aW1lW3h0aW1lW2VpXV07CiAgICB9CiAgfQp9CgovKioKICogR2VuZXJhdGVzIGEga2V5IHNjaGVkdWxlIHVzaW5nIHRoZSBBRVMga2V5IGV4cGFuc2lvbiBhbGdvcml0aG0uCiAqCiAqIFRoZSBBRVMgYWxnb3JpdGhtIHRha2VzIHRoZSBDaXBoZXIgS2V5LCBLLCBhbmQgcGVyZm9ybXMgYSBLZXkgRXhwYW5zaW9uCiAqIHJvdXRpbmUgdG8gZ2VuZXJhdGUgYSBrZXkgc2NoZWR1bGUuIFRoZSBLZXkgRXhwYW5zaW9uIGdlbmVyYXRlcyBhIHRvdGFsCiAqIG9mIE5iKihOciArIDEpIHdvcmRzOiB0aGUgYWxnb3JpdGhtIHJlcXVpcmVzIGFuIGluaXRpYWwgc2V0IG9mIE5iIHdvcmRzLAogKiBhbmQgZWFjaCBvZiB0aGUgTnIgcm91bmRzIHJlcXVpcmVzIE5iIHdvcmRzIG9mIGtleSBkYXRhLiBUaGUgcmVzdWx0aW5nCiAqIGtleSBzY2hlZHVsZSBjb25zaXN0cyBvZiBhIGxpbmVhciBhcnJheSBvZiA0LWJ5dGUgd29yZHMsIGRlbm90ZWQgW3dpIF0sCiAqIHdpdGggaSBpbiB0aGUgcmFuZ2UgMCDiiaQgaSA8IE5iKE5yICsgMSkuCiAqCiAqIEtleUV4cGFuc2lvbihieXRlIGtleVs0Kk5rXSwgd29yZCB3W05iKihOcisxKV0sIE5rKQogKiBBRVMtMTI4IChOYj00LCBOaz00LCBOcj0xMCkKICogQUVTLTE5MiAoTmI9NCwgTms9NiwgTnI9MTIpCiAqIEFFUy0yNTYgKE5iPTQsIE5rPTgsIE5yPTE0KQogKiBOb3RlOiBOcj1Oays2LgogKgogKiBOYiBpcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgKDMyLWJpdCB3b3JkcykgY29tcHJpc2luZyB0aGUgU3RhdGUgKG9yCiAqIG51bWJlciBvZiBieXRlcyBpbiBhIGJsb2NrKS4gRm9yIEFFUywgTmI9NC4KICoKICogQHBhcmFtIGtleSB0aGUga2V5IHRvIHNjaGVkdWxlIChhcyBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMpLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIHRvIG1vZGlmeSB0aGUga2V5IHNjaGVkdWxlIHRvIGRlY3J5cHQsIGZhbHNlIG5vdCB0by4KICoKICogQHJldHVybiB0aGUgZ2VuZXJhdGVkIGtleSBzY2hlZHVsZS4KICovCmZ1bmN0aW9uIF9leHBhbmRLZXkoa2V5LCBkZWNyeXB0KSB7CiAgLy8gY29weSB0aGUga2V5J3Mgd29yZHMgdG8gaW5pdGlhbGl6ZSB0aGUga2V5IHNjaGVkdWxlCiAgdmFyIHcgPSBrZXkuc2xpY2UoMCk7CgogIC8qIFJvdFdvcmQoKSB3aWxsIHJvdGF0ZSBhIHdvcmQsIG1vdmluZyB0aGUgZmlyc3QgYnl0ZSB0byB0aGUgbGFzdAogICAgYnl0ZSdzIHBvc2l0aW9uIChzaGlmdGluZyB0aGUgb3RoZXIgYnl0ZXMgbGVmdCkuCgogICAgV2Ugd2lsbCBiZSBnZXR0aW5nIHRoZSB2YWx1ZSBvZiBSY29uIGF0IGkgLyBOay4gJ2knIHdpbGwgaXRlcmF0ZQogICAgZnJvbSBOayB0byAoTmIgKiBOcisxKS4gTmsgPSA0ICg0IGJ5dGUga2V5KSwgTmIgPSA0ICg0IHdvcmRzIGluCiAgICBhIGJsb2NrKSwgTnIgPSBOayArIDYgKDEwKS4gVGhlcmVmb3JlICdpJyB3aWxsIGl0ZXJhdGUgZnJvbQogICAgNCB0byA0NCAoZXhjbHVzaXZlKS4gRWFjaCB0aW1lIHdlIGl0ZXJhdGUgNCB0aW1lcywgaSAvIE5rIHdpbGwKICAgIGluY3JlYXNlIGJ5IDEuIFdlIHVzZSBhIGNvdW50ZXIgaU5rIHRvIGtlZXAgdHJhY2sgb2YgdGhpcy4KICAgKi8KCiAgLy8gZ28gdGhyb3VnaCB0aGUgcm91bmRzIGV4cGFuZGluZyB0aGUga2V5CiAgdmFyIHRlbXAsIGlOayA9IDE7CiAgdmFyIE5rID0gdy5sZW5ndGg7CiAgdmFyIE5yMSA9IE5rICsgNiArIDE7CiAgdmFyIGVuZCA9IE5iICogTnIxOwogIGZvcih2YXIgaSA9IE5rOyBpIDwgZW5kOyArK2kpIHsKICAgIHRlbXAgPSB3W2kgLSAxXTsKICAgIGlmKGkgJSBOayA9PT0gMCkgewogICAgICAvLyB0ZW1wID0gU3ViV29yZChSb3RXb3JkKHRlbXApKSBeIFJjb25baSAvIE5rXQogICAgICB0ZW1wID0KICAgICAgICBzYm94W3RlbXAgPj4+IDE2ICYgMjU1XSA8PCAyNCBeCiAgICAgICAgc2JveFt0ZW1wID4+PiA4ICYgMjU1XSA8PCAxNiBeCiAgICAgICAgc2JveFt0ZW1wICYgMjU1XSA8PCA4IF4KICAgICAgICBzYm94W3RlbXAgPj4+IDI0XSBeIChyY29uW2lOa10gPDwgMjQpOwogICAgICBpTmsrKzsKICAgIH0gZWxzZSBpZihOayA+IDYgJiYgKGkgJSBOayA9PT0gNCkpIHsKICAgICAgLy8gdGVtcCA9IFN1YldvcmQodGVtcCkKICAgICAgdGVtcCA9CiAgICAgICAgc2JveFt0ZW1wID4+PiAyNF0gPDwgMjQgXgogICAgICAgIHNib3hbdGVtcCA+Pj4gMTYgJiAyNTVdIDw8IDE2IF4KICAgICAgICBzYm94W3RlbXAgPj4+IDggJiAyNTVdIDw8IDggXgogICAgICAgIHNib3hbdGVtcCAmIDI1NV07CiAgICB9CiAgICB3W2ldID0gd1tpIC0gTmtdIF4gdGVtcDsKICB9CgogICAvKiBXaGVuIHdlIGFyZSB1cGRhdGluZyBhIGNpcGhlciBibG9jayB3ZSBhbHdheXMgdXNlIHRoZSBjb2RlIHBhdGggZm9yCiAgICAgZW5jcnlwdGlvbiB3aGV0aGVyIHdlIGFyZSBkZWNyeXB0aW5nIG9yIG5vdCAodG8gc2hvcnRlbiBjb2RlIGFuZAogICAgIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mIGxvb2sgdXAgdGFibGVzKS4gSG93ZXZlciwgYmVjYXVzZSB0aGVyZQogICAgIGFyZSBkaWZmZXJlbmNlcyBpbiB0aGUgZGVjcnlwdGlvbiBhbGdvcml0aG0sIG90aGVyIHRoYW4ganVzdCBzd2FwcGluZwogICAgIGluIGRpZmZlcmVudCBsb29rIHVwIHRhYmxlcywgd2UgbXVzdCB0cmFuc2Zvcm0gb3VyIGtleSBzY2hlZHVsZSB0bwogICAgIGFjY291bnQgZm9yIHRoZXNlIGNoYW5nZXM6CgogICAgIDEuIFRoZSBkZWNyeXB0aW9uIGFsZ29yaXRobSBnZXRzIGl0cyBrZXkgcm91bmRzIGluIHJldmVyc2Ugb3JkZXIuCiAgICAgMi4gVGhlIGRlY3J5cHRpb24gYWxnb3JpdGhtIGFkZHMgdGhlIHJvdW5kIGtleSBiZWZvcmUgbWl4aW5nIGNvbHVtbnMKICAgICAgIGluc3RlYWQgb2YgYWZ0ZXJ3YXJkcy4KCiAgICAgV2UgZG9uJ3QgbmVlZCB0byBtb2RpZnkgb3VyIGtleSBzY2hlZHVsZSB0byBoYW5kbGUgdGhlIGZpcnN0IGNhc2UsCiAgICAgd2UgY2FuIGp1c3QgdHJhdmVyc2UgdGhlIGtleSBzY2hlZHVsZSBpbiByZXZlcnNlIG9yZGVyIHdoZW4gZGVjcnlwdGluZy4KCiAgICAgVGhlIHNlY29uZCBjYXNlIHJlcXVpcmVzIGEgbGl0dGxlIHdvcmsuCgogICAgIFRoZSB0YWJsZXMgd2UgYnVpbHQgZm9yIHBlcmZvcm1pbmcgcm91bmRzIHdpbGwgdGFrZSBhbiBpbnB1dCBhbmQgdGhlbgogICAgIHBlcmZvcm0gU3ViQnl0ZXMoKSBhbmQgTWl4Q29sdW1ucygpIG9yLCBmb3IgdGhlIGRlY3J5cHQgdmVyc2lvbiwKICAgICBJbnZTdWJCeXRlcygpIGFuZCBJbnZNaXhDb2x1bW5zKCkuIEJ1dCB0aGUgZGVjcnlwdCBhbGdvcml0aG0gcmVxdWlyZXMKICAgICB1cyB0byBBZGRSb3VuZEtleSgpIGJlZm9yZSBJbnZNaXhDb2x1bW5zKCkuIFRoaXMgbWVhbnMgd2UnbGwgbmVlZCB0bwogICAgIGFwcGx5IHNvbWUgdHJhbnNmb3JtYXRpb25zIHRvIHRoZSByb3VuZCBrZXkgdG8gaW52ZXJzZS1taXggaXRzIGNvbHVtbnMKICAgICBzbyB0aGV5J2xsIGJlIGNvcnJlY3QgZm9yIG1vdmluZyBBZGRSb3VuZEtleSgpIHRvIGFmdGVyIHRoZSBzdGF0ZSBoYXMKICAgICBoYWQgaXRzIGNvbHVtbnMgaW52ZXJzZS1taXhlZC4KCiAgICAgVG8gaW52ZXJzZS1taXggdGhlIGNvbHVtbnMgb2YgdGhlIHN0YXRlIHdoZW4gd2UncmUgZGVjcnlwdGluZyB3ZSB1c2UgYQogICAgIGxvb2t1cCB0YWJsZSB0aGF0IHdpbGwgYXBwbHkgSW52U3ViQnl0ZXMoKSBhbmQgSW52TWl4Q29sdW1ucygpIGF0IHRoZQogICAgIHNhbWUgdGltZS4gSG93ZXZlciwgdGhlIHJvdW5kIGtleSdzIGJ5dGVzIGFyZSBub3QgaW52ZXJzZS1zdWJzdGl0dXRlZAogICAgIGluIHRoZSBkZWNyeXB0aW9uIGFsZ29yaXRobS4gVG8gZ2V0IGFyb3VuZCB0aGlzIHByb2JsZW0sIHdlIGNhbiBmaXJzdAogICAgIHN1YnN0aXR1dGUgdGhlIGJ5dGVzIGluIHRoZSByb3VuZCBrZXkgc28gdGhhdCB3aGVuIHdlIGFwcGx5IHRoZQogICAgIHRyYW5zZm9ybWF0aW9uIHZpYSB0aGUgSW52U3ViQnl0ZXMoKStJbnZNaXhDb2x1bW5zKCkgdGFibGUsIGl0IHdpbGwKICAgICB1bmRvIG91ciBzdWJzdGl0dXRpb24gbGVhdmluZyB1cyB3aXRoIHRoZSBvcmlnaW5hbCB2YWx1ZSB0aGF0IHdlCiAgICAgd2FudCAtLSBhbmQgdGhlbiBpbnZlcnNlLW1peCB0aGF0IHZhbHVlLgoKICAgICBUaGlzIGNoYW5nZSB3aWxsIGNvcnJlY3RseSBhbHRlciBvdXIga2V5IHNjaGVkdWxlIHNvIHRoYXQgd2UgY2FuIFhPUgogICAgIGVhY2ggcm91bmQga2V5IHdpdGggb3VyIGFscmVhZHkgdHJhbnNmb3JtZWQgZGVjcnlwdGlvbiBzdGF0ZS4gVGhpcwogICAgIGFsbG93cyB1cyB0byB1c2UgdGhlIHNhbWUgY29kZSBwYXRoIGFzIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobS4KCiAgICAgV2UgbWFrZSBvbmUgbW9yZSBjaGFuZ2UgdG8gdGhlIGRlY3J5cHRpb24ga2V5LiBTaW5jZSB0aGUgZGVjcnlwdGlvbgogICAgIGFsZ29yaXRobSBydW5zIGluIHJldmVyc2UgZnJvbSB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0sIHdlIHJldmVyc2UKICAgICB0aGUgb3JkZXIgb2YgdGhlIHJvdW5kIGtleXMgdG8gYXZvaWQgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUga2V5CiAgICAgc2NoZWR1bGUgYmFja3dhcmRzIHdoZW4gcnVubmluZyB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gbGF0ZXIgaW4KICAgICBkZWNyeXB0aW9uIG1vZGUuIEluIGFkZGl0aW9uIHRvIHJldmVyc2luZyB0aGUgb3JkZXIgb2YgdGhlIHJvdW5kIGtleXMsCiAgICAgd2UgYWxzbyBzd2FwIGVhY2ggcm91bmQga2V5J3MgMm5kIGFuZCA0dGggcm93cy4gU2VlIHRoZSBjb21tZW50cwogICAgIHNlY3Rpb24gd2hlcmUgcm91bmRzIGFyZSBwZXJmb3JtZWQgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB3aHkgdGhpcyBpcwogICAgIGRvbmUuIFRoZXNlIGNoYW5nZXMgYXJlIGRvbmUgaW5saW5lIHdpdGggdGhlIG90aGVyIHN1YnN0aXR1dGlvbgogICAgIGRlc2NyaWJlZCBhYm92ZS4KICAqLwogIGlmKGRlY3J5cHQpIHsKICAgIHZhciB0bXA7CiAgICB2YXIgbTAgPSBpbWl4WzBdOwogICAgdmFyIG0xID0gaW1peFsxXTsKICAgIHZhciBtMiA9IGltaXhbMl07CiAgICB2YXIgbTMgPSBpbWl4WzNdOwogICAgdmFyIHduZXcgPSB3LnNsaWNlKDApOwogICAgZW5kID0gdy5sZW5ndGg7CiAgICBmb3IodmFyIGkgPSAwLCB3aSA9IGVuZCAtIE5iOyBpIDwgZW5kOyBpICs9IE5iLCB3aSAtPSBOYikgewogICAgICAvLyBkbyBub3Qgc3ViIHRoZSBmaXJzdCBvciBsYXN0IHJvdW5kIGtleSAocm91bmQga2V5cyBhcmUgTmIKICAgICAgLy8gd29yZHMpIGFzIG5vIGNvbHVtbiBtaXhpbmcgaXMgcGVyZm9ybWVkIGJlZm9yZSB0aGV5IGFyZSBhZGRlZCwKICAgICAgLy8gYnV0IGRvIGNoYW5nZSB0aGUga2V5IG9yZGVyCiAgICAgIGlmKGkgPT09IDAgfHwgaSA9PT0gKGVuZCAtIE5iKSkgewogICAgICAgIHduZXdbaV0gPSB3W3dpXTsKICAgICAgICB3bmV3W2kgKyAxXSA9IHdbd2kgKyAzXTsKICAgICAgICB3bmV3W2kgKyAyXSA9IHdbd2kgKyAyXTsKICAgICAgICB3bmV3W2kgKyAzXSA9IHdbd2kgKyAxXTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBzdWJzdGl0dXRlIGVhY2ggcm91bmQga2V5IGJ5dGUgYmVjYXVzZSB0aGUgaW52ZXJzZS1taXgKICAgICAgICAvLyB0YWJsZSB3aWxsIGludmVyc2Utc3Vic3RpdHV0ZSBpdCAoZWZmZWN0aXZlbHkgY2FuY2VsIHRoZQogICAgICAgIC8vIHN1YnN0aXR1dGlvbiBiZWNhdXNlIHJvdW5kIGtleSBieXRlcyBhcmVuJ3Qgc3ViJ2QgaW4KICAgICAgICAvLyBkZWNyeXB0aW9uIG1vZGUpIGFuZCBzd2FwIGluZGV4ZXMgMyBhbmQgMQogICAgICAgIGZvcih2YXIgbiA9IDA7IG4gPCBOYjsgKytuKSB7CiAgICAgICAgICB0bXAgPSB3W3dpICsgbl07CiAgICAgICAgICB3bmV3W2kgKyAoMyYtbildID0KICAgICAgICAgICAgbTBbc2JveFt0bXAgPj4+IDI0XV0gXgogICAgICAgICAgICBtMVtzYm94W3RtcCA+Pj4gMTYgJiAyNTVdXSBeCiAgICAgICAgICAgIG0yW3Nib3hbdG1wID4+PiA4ICYgMjU1XV0gXgogICAgICAgICAgICBtM1tzYm94W3RtcCAmIDI1NV1dOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgdyA9IHduZXc7CiAgfQoKICByZXR1cm4gdzsKfQoKLyoqCiAqIFVwZGF0ZXMgYSBzaW5nbGUgYmxvY2sgKDE2IGJ5dGVzKSB1c2luZyBBRVMuIFRoZSB1cGRhdGUgd2lsbCBlaXRoZXIKICogZW5jcnlwdCBvciBkZWNyeXB0IHRoZSBibG9jay4KICoKICogQHBhcmFtIHcgdGhlIGtleSBzY2hlZHVsZS4KICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBibG9jayAoYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzKS4KICogQHBhcmFtIG91dHB1dCB0aGUgdXBkYXRlZCBvdXRwdXQgYmxvY2suCiAqIEBwYXJhbSBkZWNyeXB0IHRydWUgdG8gZGVjcnlwdCB0aGUgYmxvY2ssIGZhbHNlIHRvIGVuY3J5cHQgaXQuCiAqLwpmdW5jdGlvbiBfdXBkYXRlQmxvY2sodywgaW5wdXQsIG91dHB1dCwgZGVjcnlwdCkgewogIC8qCiAgQ2lwaGVyKGJ5dGUgaW5bNCpOYl0sIGJ5dGUgb3V0WzQqTmJdLCB3b3JkIHdbTmIqKE5yKzEpXSkKICBiZWdpbgogICAgYnl0ZSBzdGF0ZVs0LE5iXQogICAgc3RhdGUgPSBpbgogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbMCwgTmItMV0pCiAgICBmb3Igcm91bmQgPSAxIHN0ZXAgMSB0byBOcuKAkzEKICAgICAgU3ViQnl0ZXMoc3RhdGUpCiAgICAgIFNoaWZ0Um93cyhzdGF0ZSkKICAgICAgTWl4Q29sdW1ucyhzdGF0ZSkKICAgICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbcm91bmQqTmIsIChyb3VuZCsxKSpOYi0xXSkKICAgIGVuZCBmb3IKICAgIFN1YkJ5dGVzKHN0YXRlKQogICAgU2hpZnRSb3dzKHN0YXRlKQogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbTnIqTmIsIChOcisxKSpOYi0xXSkKICAgIG91dCA9IHN0YXRlCiAgZW5kCgogIEludkNpcGhlcihieXRlIGluWzQqTmJdLCBieXRlIG91dFs0Kk5iXSwgd29yZCB3W05iKihOcisxKV0pCiAgYmVnaW4KICAgIGJ5dGUgc3RhdGVbNCxOYl0KICAgIHN0YXRlID0gaW4KICAgIEFkZFJvdW5kS2V5KHN0YXRlLCB3W05yKk5iLCAoTnIrMSkqTmItMV0pCiAgICBmb3Igcm91bmQgPSBOci0xIHN0ZXAgLTEgZG93bnRvIDEKICAgICAgSW52U2hpZnRSb3dzKHN0YXRlKQogICAgICBJbnZTdWJCeXRlcyhzdGF0ZSkKICAgICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbcm91bmQqTmIsIChyb3VuZCsxKSpOYi0xXSkKICAgICAgSW52TWl4Q29sdW1ucyhzdGF0ZSkKICAgIGVuZCBmb3IKICAgIEludlNoaWZ0Um93cyhzdGF0ZSkKICAgIEludlN1YkJ5dGVzKHN0YXRlKQogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbMCwgTmItMV0pCiAgICBvdXQgPSBzdGF0ZQogIGVuZAogICovCgogIC8vIEVuY3J5cHQ6IEFkZFJvdW5kS2V5KHN0YXRlLCB3WzAsIE5iLTFdKQogIC8vIERlY3J5cHQ6IEFkZFJvdW5kS2V5KHN0YXRlLCB3W05yKk5iLCAoTnIrMSkqTmItMV0pCiAgdmFyIE5yID0gdy5sZW5ndGggLyA0IC0gMTsKICB2YXIgbTAsIG0xLCBtMiwgbTMsIHN1YjsKICBpZihkZWNyeXB0KSB7CiAgICBtMCA9IGltaXhbMF07CiAgICBtMSA9IGltaXhbMV07CiAgICBtMiA9IGltaXhbMl07CiAgICBtMyA9IGltaXhbM107CiAgICBzdWIgPSBpc2JveDsKICB9IGVsc2UgewogICAgbTAgPSBtaXhbMF07CiAgICBtMSA9IG1peFsxXTsKICAgIG0yID0gbWl4WzJdOwogICAgbTMgPSBtaXhbM107CiAgICBzdWIgPSBzYm94OwogIH0KICB2YXIgYSwgYiwgYywgZCwgYTIsIGIyLCBjMjsKICBhID0gaW5wdXRbMF0gXiB3WzBdOwogIGIgPSBpbnB1dFtkZWNyeXB0ID8gMyA6IDFdIF4gd1sxXTsKICBjID0gaW5wdXRbMl0gXiB3WzJdOwogIGQgPSBpbnB1dFtkZWNyeXB0ID8gMSA6IDNdIF4gd1szXTsKICB2YXIgaSA9IDM7CgogIC8qIEluIG9yZGVyIHRvIHNoYXJlIGNvZGUgd2UgZm9sbG93IHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB3aGVuIGJvdGgKICAgIGVuY3J5cHRpbmcgYW5kIGRlY3J5cHRpbmcuIFRvIGFjY291bnQgZm9yIHRoZSBjaGFuZ2VzIHJlcXVpcmVkIGluIHRoZQogICAgZGVjcnlwdGlvbiBhbGdvcml0aG0sIHdlIHVzZSBkaWZmZXJlbnQgbG9va3VwIHRhYmxlcyB3aGVuIGRlY3J5cHRpbmcKICAgIGFuZCB1c2UgYSBtb2RpZmllZCBrZXkgc2NoZWR1bGUgdG8gYWNjb3VudCBmb3IgdGhlIGRpZmZlcmVuY2UgaW4gdGhlCiAgICBvcmRlciBvZiB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCB3aGVuIHBlcmZvcm1pbmcgcm91bmRzLiBXZSBhbHNvIGdldAogICAga2V5IHJvdW5kcyBpbiByZXZlcnNlIG9yZGVyIChyZWxhdGl2ZSB0byBlbmNyeXB0aW9uKS4gKi8KICBmb3IodmFyIHJvdW5kID0gMTsgcm91bmQgPCBOcjsgKytyb3VuZCkgewogICAgLyogQXMgZGVzY3JpYmVkIGFib3ZlLCB3ZSdsbCBiZSB1c2luZyB0YWJsZSBsb29rdXBzIHRvIHBlcmZvcm0gdGhlCiAgICAgIGNvbHVtbiBtaXhpbmcuIEVhY2ggY29sdW1uIGlzIHN0b3JlZCBhcyBhIHdvcmQgaW4gdGhlIHN0YXRlICh0aGUKICAgICAgYXJyYXkgJ2lucHV0JyBoYXMgb25lIGNvbHVtbiBhcyBhIHdvcmQgYXQgZWFjaCBpbmRleCkuIEluIG9yZGVyIHRvCiAgICAgIG1peCBhIGNvbHVtbiwgd2UgcGVyZm9ybSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgb24gZWFjaCByb3cgaW4gYywKICAgICAgd2hpY2ggaXMgMSBieXRlIGluIGVhY2ggd29yZC4gVGhlIG5ldyBjb2x1bW4gZm9yIGMwIGlzIGMnMDoKCiAgICAgICAgICAgICAgIG0wICAgICAgbTEgICAgICBtMiAgICAgIG0zCiAgICAgIHIwLGMnMCA9IDIqcjAsYzAgKyAzKnIxLGMwICsgMSpyMixjMCArIDEqcjMsYzAKICAgICAgcjEsYycwID0gMSpyMCxjMCArIDIqcjEsYzAgKyAzKnIyLGMwICsgMSpyMyxjMAogICAgICByMixjJzAgPSAxKnIwLGMwICsgMSpyMSxjMCArIDIqcjIsYzAgKyAzKnIzLGMwCiAgICAgIHIzLGMnMCA9IDMqcjAsYzAgKyAxKnIxLGMwICsgMSpyMixjMCArIDIqcjMsYzAKCiAgICAgIFNvIHVzaW5nIG1peCB0YWJsZXMgd2hlcmUgYzAgaXMgYSB3b3JkIHdpdGggcjAgYmVpbmcgaXRzIHVwcGVyCiAgICAgIDggYml0cyBhbmQgcjMgYmVpbmcgaXRzIGxvd2VyIDggYml0czoKCiAgICAgIG0wW2MwID4+IDI0XSB3aWxsIHlpZWxkIHRoaXMgd29yZDogWzIqcjAsMSpyMCwxKnIwLDMqcjBdCiAgICAgIC4uLgogICAgICBtM1tjMCAmIDI1NV0gd2lsbCB5aWVsZCB0aGlzIHdvcmQ6IFsxKnIzLDEqcjMsMypyMywyKnIzXQoKICAgICAgVGhlcmVmb3JlIHRvIG1peCB0aGUgY29sdW1ucyBpbiBlYWNoIHdvcmQgaW4gdGhlIHN0YXRlIHdlCiAgICAgIGRvIHRoZSBmb2xsb3dpbmcgKCYgMjU1IG9taXR0ZWQgZm9yIGJyZXZpdHkpOgogICAgICBjJzAscjAgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQogICAgICBjJzAscjEgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQogICAgICBjJzAscjIgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQogICAgICBjJzAscjMgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQoKICAgICAgSG93ZXZlciwgYmVmb3JlIG1peGluZywgdGhlIGFsZ29yaXRobSByZXF1aXJlcyB1cyB0byBwZXJmb3JtCiAgICAgIFNoaWZ0Um93cygpLiBUaGUgU2hpZnRSb3dzKCkgdHJhbnNmb3JtYXRpb24gY3ljbGljYWxseSBzaGlmdHMgdGhlCiAgICAgIGxhc3QgMyByb3dzIG9mIHRoZSBzdGF0ZSBvdmVyIGRpZmZlcmVudCBvZmZzZXRzLiBUaGUgZmlyc3Qgcm93CiAgICAgIChyID0gMCkgaXMgbm90IHNoaWZ0ZWQuCgogICAgICBzJ19yLGMgPSBzX3IsKGMgKyBzaGlmdChyLCBOYikgbW9kIE5iCiAgICAgIGZvciAwIDwgciA8IDQgYW5kIDAgPD0gYyA8IE5iIGFuZAogICAgICBzaGlmdCgxLCA0KSA9IDEKICAgICAgc2hpZnQoMiwgNCkgPSAyCiAgICAgIHNoaWZ0KDMsIDQpID0gMy4KCiAgICAgIFRoaXMgY2F1c2VzIHRoZSBmaXJzdCBieXRlIGluIHIgPSAxIHRvIGJlIG1vdmVkIHRvIHRoZSBlbmQgb2YKICAgICAgdGhlIHJvdywgdGhlIGZpcnN0IDIgYnl0ZXMgaW4gciA9IDIgdG8gYmUgbW92ZWQgdG8gdGhlIGVuZCBvZgogICAgICB0aGUgcm93LCB0aGUgZmlyc3QgMyBieXRlcyBpbiByID0gMyB0byBiZSBtb3ZlZCB0byB0aGUgZW5kIG9mCiAgICAgIHRoZSByb3c6CgogICAgICByMTogW2MwIGMxIGMyIGMzXSA9PiBbYzEgYzIgYzMgYzBdCiAgICAgIHIyOiBbYzAgYzEgYzIgYzNdICAgIFtjMiBjMyBjMCBjMV0KICAgICAgcjM6IFtjMCBjMSBjMiBjM10gICAgW2MzIGMwIGMxIGMyXQoKICAgICAgV2UgY2FuIG1ha2UgdGhlc2Ugc3Vic3RpdHV0aW9ucyBpbmxpbmUgd2l0aCBvdXIgY29sdW1uIG1peGluZyB0bwogICAgICBnZW5lcmF0ZSBhbiB1cGRhdGVkIHNldCBvZiBlcXVhdGlvbnMgdG8gcHJvZHVjZSBlYWNoIHdvcmQgaW4gdGhlCiAgICAgIHN0YXRlIChub3RlIHRoZSBjb2x1bW5zIGhhdmUgY2hhbmdlZCBwb3NpdGlvbnMpOgoKICAgICAgYzAgYzEgYzIgYzMgPT4gYzAgYzEgYzIgYzMKICAgICAgYzAgYzEgYzIgYzMgICAgYzEgYzIgYzMgYzAgIChjeWNsZWQgMSBieXRlKQogICAgICBjMCBjMSBjMiBjMyAgICBjMiBjMyBjMCBjMSAgKGN5Y2xlZCAyIGJ5dGVzKQogICAgICBjMCBjMSBjMiBjMyAgICBjMyBjMCBjMSBjMiAgKGN5Y2xlZCAzIGJ5dGVzKQoKICAgICAgVGhlcmVmb3JlOgoKICAgICAgYycwID0gMipyMCxjMCArIDMqcjEsYzEgKyAxKnIyLGMyICsgMSpyMyxjMwogICAgICBjJzAgPSAxKnIwLGMwICsgMipyMSxjMSArIDMqcjIsYzIgKyAxKnIzLGMzCiAgICAgIGMnMCA9IDEqcjAsYzAgKyAxKnIxLGMxICsgMipyMixjMiArIDMqcjMsYzMKICAgICAgYycwID0gMypyMCxjMCArIDEqcjEsYzEgKyAxKnIyLGMyICsgMipyMyxjMwoKICAgICAgYycxID0gMipyMCxjMSArIDMqcjEsYzIgKyAxKnIyLGMzICsgMSpyMyxjMAogICAgICBjJzEgPSAxKnIwLGMxICsgMipyMSxjMiArIDMqcjIsYzMgKyAxKnIzLGMwCiAgICAgIGMnMSA9IDEqcjAsYzEgKyAxKnIxLGMyICsgMipyMixjMyArIDMqcjMsYzAKICAgICAgYycxID0gMypyMCxjMSArIDEqcjEsYzIgKyAxKnIyLGMzICsgMipyMyxjMAoKICAgICAgLi4uIGFuZCBzbyBmb3J0aCBmb3IgYycyIGFuZCBjJzMuIFRoZSBpbXBvcnRhbnQgZGlzdGluY3Rpb24gaXMKICAgICAgdGhhdCB0aGUgY29sdW1ucyBhcmUgY3ljbGluZywgd2l0aCBjMCBiZWluZyB1c2VkIHdpdGggdGhlIG0wCiAgICAgIG1hcCB3aGVuIGNhbGN1bGF0aW5nIGMwLCBidXQgYzEgYmVpbmcgdXNlZCB3aXRoIHRoZSBtMCBtYXAgd2hlbgogICAgICBjYWxjdWxhdGluZyBjMSAuLi4gYW5kIHNvIGZvcnRoLgoKICAgICAgV2hlbiBwZXJmb3JtaW5nIHRoZSBpbnZlcnNlIHdlIHRyYW5zZm9ybSB0aGUgbWlycm9yIGltYWdlIGFuZAogICAgICBza2lwIHRoZSBib3R0b20gcm93LCBpbnN0ZWFkIG9mIHRoZSB0b3Agb25lLCBhbmQgbW92ZSB1cHdhcmRzOgoKICAgICAgYzMgYzIgYzEgYzAgPT4gYzAgYzMgYzIgYzEgIChjeWNsZWQgMyBieXRlcykgKnNhbWUgYXMgZW5jcnlwdGlvbgogICAgICBjMyBjMiBjMSBjMCAgICBjMSBjMCBjMyBjMiAgKGN5Y2xlZCAyIGJ5dGVzKQogICAgICBjMyBjMiBjMSBjMCAgICBjMiBjMSBjMCBjMyAgKGN5Y2xlZCAxIGJ5dGUpICAqc2FtZSBhcyBlbmNyeXB0aW9uCiAgICAgIGMzIGMyIGMxIGMwICAgIGMzIGMyIGMxIGMwCgogICAgICBJZiB5b3UgY29tcGFyZSB0aGUgcmVzdWx0aW5nIG1hdHJpY2VzIGZvciBTaGlmdFJvd3MoKStNaXhDb2x1bW5zKCkKICAgICAgYW5kIGZvciBJbnZTaGlmdFJvd3MoKStJbnZNaXhDb2x1bW5zKCkgdGhlIDJuZCBhbmQgNHRoIGNvbHVtbnMgYXJlCiAgICAgIGRpZmZlcmVudCAoaW4gZW5jcnlwdCBtb2RlIHZzLiBkZWNyeXB0IG1vZGUpLiBTbyBpbiBvcmRlciB0byB1c2UKICAgICAgdGhlIHNhbWUgY29kZSB0byBoYW5kbGUgYm90aCBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCB3ZSB3aWxsCiAgICAgIG5lZWQgdG8gZG8gc29tZSBtYXBwaW5nLgoKICAgICAgSWYgaW4gZW5jcnlwdGlvbiBtb2RlIHdlIGxldCBhPWMwLCBiPWMxLCBjPWMyLCBkPWMzLCBhbmQgcjxOPiBiZQogICAgICBhIHJvdyBudW1iZXIgaW4gdGhlIHN0YXRlLCB0aGVuIHRoZSByZXN1bHRpbmcgbWF0cml4IGluIGVuY3J5cHRpb24KICAgICAgbW9kZSBmb3IgYXBwbHlpbmcgdGhlIGFib3ZlIHRyYW5zZm9ybWF0aW9ucyB3b3VsZCBiZToKCiAgICAgIHIxOiBhIGIgYyBkCiAgICAgIHIyOiBiIGMgZCBhCiAgICAgIHIzOiBjIGQgYSBiCiAgICAgIHI0OiBkIGEgYiBjCgogICAgICBJZiB3ZSBkaWQgdGhlIHNhbWUgaW4gZGVjcnlwdGlvbiBtb2RlIHdlIHdvdWxkIGdldDoKCiAgICAgIHIxOiBhIGQgYyBiCiAgICAgIHIyOiBiIGEgZCBjCiAgICAgIHIzOiBjIGIgYSBkCiAgICAgIHI0OiBkIGMgYiBhCgogICAgICBJZiBpbnN0ZWFkIHdlIHN3YXAgZCBhbmQgYiAoc2V0IGI9YzMgYW5kIGQ9YzEpLCB0aGVuIHdlIGdldDoKCiAgICAgIHIxOiBhIGIgYyBkCiAgICAgIHIyOiBkIGEgYiBjCiAgICAgIHIzOiBjIGQgYSBiCiAgICAgIHI0OiBiIGMgZCBhCgogICAgICBOb3cgdGhlIDFzdCBhbmQgM3JkIHJvd3MgYXJlIHRoZSBzYW1lIGFzIHRoZSBlbmNyeXB0aW9uIG1hdHJpeC4gQWxsCiAgICAgIHdlIG5lZWQgdG8gZG8gdGhlbiB0byBtYWtlIHRoZSBtYXBwaW5nIGV4YWN0bHkgdGhlIHNhbWUgaXMgdG8gc3dhcAogICAgICB0aGUgMm5kIGFuZCA0dGggcm93cyB3aGVuIGluIGRlY3J5cHRpb24gbW9kZS4gVG8gZG8gdGhpcyB3aXRob3V0CiAgICAgIGhhdmluZyB0byBkbyBpdCBvbiBlYWNoIGl0ZXJhdGlvbiwgd2Ugc3dhcHBlZCB0aGUgMm5kIGFuZCA0dGggcm93cwogICAgICBpbiB0aGUgZGVjcnlwdGlvbiBrZXkgc2NoZWR1bGUuIFdlIGFsc28gaGF2ZSB0byBkbyB0aGUgc3dhcCBhYm92ZQogICAgICB3aGVuIHdlIGZpcnN0IHB1bGwgaW4gdGhlIGlucHV0IGFuZCB3aGVuIHdlIHNldCB0aGUgZmluYWwgb3V0cHV0LiAqLwogICAgYTIgPQogICAgICBtMFthID4+PiAyNF0gXgogICAgICBtMVtiID4+PiAxNiAmIDI1NV0gXgogICAgICBtMltjID4+PiA4ICYgMjU1XSBeCiAgICAgIG0zW2QgJiAyNTVdIF4gd1srK2ldOwogICAgYjIgPQogICAgICBtMFtiID4+PiAyNF0gXgogICAgICBtMVtjID4+PiAxNiAmIDI1NV0gXgogICAgICBtMltkID4+PiA4ICYgMjU1XSBeCiAgICAgIG0zW2EgJiAyNTVdIF4gd1srK2ldOwogICAgYzIgPQogICAgICBtMFtjID4+PiAyNF0gXgogICAgICBtMVtkID4+PiAxNiAmIDI1NV0gXgogICAgICBtMlthID4+PiA4ICYgMjU1XSBeCiAgICAgIG0zW2IgJiAyNTVdIF4gd1srK2ldOwogICAgZCA9CiAgICAgIG0wW2QgPj4+IDI0XSBeCiAgICAgIG0xW2EgPj4+IDE2ICYgMjU1XSBeCiAgICAgIG0yW2IgPj4+IDggJiAyNTVdIF4KICAgICAgbTNbYyAmIDI1NV0gXiB3WysraV07CiAgICBhID0gYTI7CiAgICBiID0gYjI7CiAgICBjID0gYzI7CiAgfQoKICAvKgogICAgRW5jcnlwdDoKICAgIFN1YkJ5dGVzKHN0YXRlKQogICAgU2hpZnRSb3dzKHN0YXRlKQogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbTnIqTmIsIChOcisxKSpOYi0xXSkKCiAgICBEZWNyeXB0OgogICAgSW52U2hpZnRSb3dzKHN0YXRlKQogICAgSW52U3ViQnl0ZXMoc3RhdGUpCiAgICBBZGRSb3VuZEtleShzdGF0ZSwgd1swLCBOYi0xXSkKICAgKi8KICAgLy8gTm90ZTogcm93cyBhcmUgc2hpZnRlZCBpbmxpbmUKICBvdXRwdXRbMF0gPQogICAgKHN1YlthID4+PiAyNF0gPDwgMjQpIF4KICAgIChzdWJbYiA+Pj4gMTYgJiAyNTVdIDw8IDE2KSBeCiAgICAoc3ViW2MgPj4+IDggJiAyNTVdIDw8IDgpIF4KICAgIChzdWJbZCAmIDI1NV0pIF4gd1srK2ldOwogIG91dHB1dFtkZWNyeXB0ID8gMyA6IDFdID0KICAgIChzdWJbYiA+Pj4gMjRdIDw8IDI0KSBeCiAgICAoc3ViW2MgPj4+IDE2ICYgMjU1XSA8PCAxNikgXgogICAgKHN1YltkID4+PiA4ICYgMjU1XSA8PCA4KSBeCiAgICAoc3ViW2EgJiAyNTVdKSBeIHdbKytpXTsKICBvdXRwdXRbMl0gPQogICAgKHN1YltjID4+PiAyNF0gPDwgMjQpIF4KICAgIChzdWJbZCA+Pj4gMTYgJiAyNTVdIDw8IDE2KSBeCiAgICAoc3ViW2EgPj4+IDggJiAyNTVdIDw8IDgpIF4KICAgIChzdWJbYiAmIDI1NV0pIF4gd1srK2ldOwogIG91dHB1dFtkZWNyeXB0ID8gMSA6IDNdID0KICAgIChzdWJbZCA+Pj4gMjRdIDw8IDI0KSBeCiAgICAoc3ViW2EgPj4+IDE2ICYgMjU1XSA8PCAxNikgXgogICAgKHN1YltiID4+PiA4ICYgMjU1XSA8PCA4KSBeCiAgICAoc3ViW2MgJiAyNTVdKSBeIHdbKytpXTsKfQoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogZm9yZ2UuY2lwaGVyLmNyZWF0ZUNpcGhlcignQUVTLTxtb2RlPicsIGtleSk7CiAqIGZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlcignQUVTLTxtb2RlPicsIGtleSk7CiAqCiAqIENyZWF0ZXMgYSBkZXByZWNhdGVkIEFFUyBjaXBoZXIgb2JqZWN0LiBUaGlzIG9iamVjdCdzIG1vZGUgd2lsbCBkZWZhdWx0IHRvCiAqIENCQyAoY2lwaGVyLWJsb2NrLWNoYWluaW5nKS4KICoKICogVGhlIGtleSBhbmQgaXYgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nIG9mIGJ5dGVzLCBhbiBhcnJheSBvZiBieXRlcywgYQogKiBieXRlIGJ1ZmZlciwgb3IgYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzLgogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UuCiAqICAgICAgICAgIG91dHB1dCB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvLgogKiAgICAgICAgICBkZWNyeXB0IHRydWUgZm9yIGRlY3J5cHRpb24sIGZhbHNlIGZvciBlbmNyeXB0aW9uLgogKiAgICAgICAgICBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZnVuY3Rpb24gX2NyZWF0ZUNpcGhlcihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIG1vZGUgPSAob3B0aW9ucy5tb2RlIHx8ICdDQkMnKS50b1VwcGVyQ2FzZSgpOwogIHZhciBhbGdvcml0aG0gPSAnQUVTLScgKyBtb2RlOwoKICB2YXIgY2lwaGVyOwogIGlmKG9wdGlvbnMuZGVjcnlwdCkgewogICAgY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0gZWxzZSB7CiAgICBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0KCiAgLy8gYmFja3dhcmRzIGNvbXBhdGlibGUgc3RhcnQgQVBJCiAgdmFyIHN0YXJ0ID0gY2lwaGVyLnN0YXJ0OwogIGNpcGhlci5zdGFydCA9IGZ1bmN0aW9uKGl2LCBvcHRpb25zKSB7CiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogc3VwcG9ydCBzZWNvbmQgYXJnIGFzIG91dHB1dCBidWZmZXIKICAgIHZhciBvdXRwdXQgPSBudWxsOwogICAgaWYob3B0aW9ucyBpbnN0YW5jZW9mIGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcikgewogICAgICBvdXRwdXQgPSBvcHRpb25zOwogICAgICBvcHRpb25zID0ge307CiAgICB9CiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIG9wdGlvbnMub3V0cHV0ID0gb3V0cHV0OwogICAgb3B0aW9ucy5pdiA9IGl2OwogICAgc3RhcnQuY2FsbChjaXBoZXIsIG9wdGlvbnMpOwogIH07CgogIHJldHVybiBjaXBoZXI7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2Flcyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKAogICdqcy9hZXMnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9jaXBoZXInLCAnLi9jaXBoZXJNb2RlcycsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogT2JqZWN0IElEcyBmb3IgQVNOLjEuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UucGtpID0gZm9yZ2UucGtpIHx8IHt9Owp2YXIgb2lkcyA9IGZvcmdlLnBraS5vaWRzID0gZm9yZ2Uub2lkcyA9IGZvcmdlLm9pZHMgfHwge307CgovLyBhbGdvcml0aG0gT0lEcwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEuMSddID0gJ3JzYUVuY3J5cHRpb24nOwpvaWRzWydyc2FFbmNyeXB0aW9uJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOwovLyBOb3RlOiBtZDIgJiBtZDQgbm90IGltcGxlbWVudGVkCi8vb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjInXSA9ICdtZDJXaXRoUlNBRW5jcnlwdGlvbic7Ci8vb2lkc1snbWQyV2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuMic7Ci8vb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjMnXSA9ICdtZDRXaXRoUlNBRW5jcnlwdGlvbic7Ci8vb2lkc1snbWQ0V2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuMyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS40J10gPSAnbWQ1V2l0aFJTQUVuY3J5cHRpb24nOwpvaWRzWydtZDVXaXRoUlNBRW5jcnlwdGlvbiddID0gJzEuMi44NDAuMTEzNTQ5LjEuMS40JzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjUnXSA9ICdzaGExV2l0aFJTQUVuY3J5cHRpb24nOwpvaWRzWydzaGExV2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuNSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS43J10gPSAnUlNBRVMtT0FFUCc7Cm9pZHNbJ1JTQUVTLU9BRVAnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuNyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS44J10gPSAnbWdmMSc7Cm9pZHNbJ21nZjEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuOCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS45J10gPSAncFNwZWNpZmllZCc7Cm9pZHNbJ3BTcGVjaWZpZWQnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuOSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS4xMCddID0gJ1JTQVNTQS1QU1MnOwpvaWRzWydSU0FTU0EtUFNTJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEwJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjExJ10gPSAnc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24nOwpvaWRzWydzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbiddID0gJzEuMi44NDAuMTEzNTQ5LjEuMS4xMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS4xMiddID0gJ3NoYTM4NFdpdGhSU0FFbmNyeXB0aW9uJzsKb2lkc1snc2hhMzg0V2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuMTInOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEuMTMnXSA9ICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic7Cm9pZHNbJ3NoYTUxMldpdGhSU0FFbmNyeXB0aW9uJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEzJzsKCm9pZHNbJzEuMy4xNC4zLjIuNyddID0gJ2Rlc0NCQyc7Cm9pZHNbJ2Rlc0NCQyddID0gJzEuMy4xNC4zLjIuNyc7CgpvaWRzWycxLjMuMTQuMy4yLjI2J10gPSAnc2hhMSc7Cm9pZHNbJ3NoYTEnXSA9ICcxLjMuMTQuMy4yLjI2JzsKb2lkc1snMi4xNi44NDAuMS4xMDEuMy40LjIuMSddID0gJ3NoYTI1Nic7Cm9pZHNbJ3NoYTI1NiddID0gJzIuMTYuODQwLjEuMTAxLjMuNC4yLjEnOwpvaWRzWycyLjE2Ljg0MC4xLjEwMS4zLjQuMi4yJ10gPSAnc2hhMzg0JzsKb2lkc1snc2hhMzg0J10gPSAnMi4xNi44NDAuMS4xMDEuMy40LjIuMic7Cm9pZHNbJzIuMTYuODQwLjEuMTAxLjMuNC4yLjMnXSA9ICdzaGE1MTInOwpvaWRzWydzaGE1MTInXSA9ICcyLjE2Ljg0MC4xLjEwMS4zLjQuMi4zJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMi41J10gPSAnbWQ1JzsKb2lkc1snbWQ1J10gPSAnMS4yLjg0MC4xMTM1NDkuMi41JzsKCi8vIHBrY3MjNyBjb250ZW50IHR5cGVzCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy4xJ10gPSAnZGF0YSc7Cm9pZHNbJ2RhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy4yJ10gPSAnc2lnbmVkRGF0YSc7Cm9pZHNbJ3NpZ25lZERhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuMic7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy4zJ10gPSAnZW52ZWxvcGVkRGF0YSc7Cm9pZHNbJ2VudmVsb3BlZERhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuMyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy40J10gPSAnc2lnbmVkQW5kRW52ZWxvcGVkRGF0YSc7Cm9pZHNbJ3NpZ25lZEFuZEVudmVsb3BlZERhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuNCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy41J10gPSAnZGlnZXN0ZWREYXRhJzsKb2lkc1snZGlnZXN0ZWREYXRhJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS43LjUnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjcuNiddID0gJ2VuY3J5cHRlZERhdGEnOwpvaWRzWydlbmNyeXB0ZWREYXRhJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS43LjYnOwoKLy8gcGtjcyM5IG9pZHMKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjEnXSA9ICdlbWFpbEFkZHJlc3MnOwpvaWRzWydlbWFpbEFkZHJlc3MnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4yJ10gPSAndW5zdHJ1Y3R1cmVkTmFtZSc7Cm9pZHNbJ3Vuc3RydWN0dXJlZE5hbWUnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuMic7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4zJ10gPSAnY29udGVudFR5cGUnOwpvaWRzWydjb250ZW50VHlwZSddID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4zJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjQnXSA9ICdtZXNzYWdlRGlnZXN0JzsKb2lkc1snbWVzc2FnZURpZ2VzdCddID0gJzEuMi44NDAuMTEzNTQ5LjEuOS40JzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjUnXSA9ICdzaWduaW5nVGltZSc7Cm9pZHNbJ3NpZ25pbmdUaW1lJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjUnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjkuNiddID0gJ2NvdW50ZXJTaWduYXR1cmUnOwpvaWRzWydjb3VudGVyU2lnbmF0dXJlJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjYnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjkuNyddID0gJ2NoYWxsZW5nZVBhc3N3b3JkJzsKb2lkc1snY2hhbGxlbmdlUGFzc3dvcmQnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuNyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS44J10gPSAndW5zdHJ1Y3R1cmVkQWRkcmVzcyc7Cm9pZHNbJ3Vuc3RydWN0dXJlZEFkZHJlc3MnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuOCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4xNCddID0gJ2V4dGVuc2lvblJlcXVlc3QnOwpvaWRzWydleHRlbnNpb25SZXF1ZXN0J10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjE0JzsKCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4yMCddID0gJ2ZyaWVuZGx5TmFtZSc7Cm9pZHNbJ2ZyaWVuZGx5TmFtZSddID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4yMCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4yMSddID0gJ2xvY2FsS2V5SWQnOwpvaWRzWydsb2NhbEtleUlkJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjIxJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjIyLjEnXSA9ICd4NTA5Q2VydGlmaWNhdGUnOwpvaWRzWyd4NTA5Q2VydGlmaWNhdGUnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuMjIuMSc7CgovLyBwa2NzIzEyIHNhZmUgYmFncwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuMSddID0gJ2tleUJhZyc7Cm9pZHNbJ2tleUJhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4xJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjInXSA9ICdwa2NzOFNocm91ZGVkS2V5QmFnJzsKb2lkc1sncGtjczhTaHJvdWRlZEtleUJhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4yJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjMnXSA9ICdjZXJ0QmFnJzsKb2lkc1snY2VydEJhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4zJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjQnXSA9ICdjcmxCYWcnOwpvaWRzWydjcmxCYWcnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS41J10gPSAnc2VjcmV0QmFnJzsKb2lkc1snc2VjcmV0QmFnJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjUnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNiddID0gJ3NhZmVDb250ZW50c0JhZyc7Cm9pZHNbJ3NhZmVDb250ZW50c0JhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS42JzsKCi8vIHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gZm9yIHBrY3MjMTIKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS41LjEzJ10gPSAncGtjczVQQkVTMic7Cm9pZHNbJ3BrY3M1UEJFUzInXSA9ICcxLjIuODQwLjExMzU0OS4xLjUuMTMnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjUuMTInXSA9ICdwa2NzNVBCS0RGMic7Cm9pZHNbJ3BrY3M1UEJLREYyJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS41LjEyJzsKCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS4xJ10gPSAncGJlV2l0aFNIQUFuZDEyOEJpdFJDNCc7Cm9pZHNbJ3BiZVdpdGhTSEFBbmQxMjhCaXRSQzQnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEuMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS4yJ10gPSAncGJlV2l0aFNIQUFuZDQwQml0UkM0JzsKb2lkc1sncGJlV2l0aFNIQUFuZDQwQml0UkM0J10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjInOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEuMyddID0gJ3BiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMnOwpvaWRzWydwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjMnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEuNCddID0gJ3BiZVdpdGhTSEFBbmQyLUtleVRyaXBsZURFUy1DQkMnOwpvaWRzWydwYmVXaXRoU0hBQW5kMi1LZXlUcmlwbGVERVMtQ0JDJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjQnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEuNSddID0gJ3BiZVdpdGhTSEFBbmQxMjhCaXRSQzItQ0JDJzsKb2lkc1sncGJlV2l0aFNIQUFuZDEyOEJpdFJDMi1DQkMnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEuNSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS42J10gPSAncGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyc7Cm9pZHNbJ3BiZXdpdGhTSEFBbmQ0MEJpdFJDMi1DQkMnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEuNic7CgovLyBzeW1tZXRyaWMga2V5IGFsZ29yaXRobSBvaWRzCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjMuNyddID0gJ2Rlcy1FREUzLUNCQyc7Cm9pZHNbJ2Rlcy1FREUzLUNCQyddID0gJzEuMi44NDAuMTEzNTQ5LjMuNyc7Cm9pZHNbJzIuMTYuODQwLjEuMTAxLjMuNC4xLjInXSA9ICdhZXMxMjgtQ0JDJzsKb2lkc1snYWVzMTI4LUNCQyddID0gJzIuMTYuODQwLjEuMTAxLjMuNC4xLjInOwpvaWRzWycyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMiddID0gJ2FlczE5Mi1DQkMnOwpvaWRzWydhZXMxOTItQ0JDJ10gPSAnMi4xNi44NDAuMS4xMDEuMy40LjEuMjInOwpvaWRzWycyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MiddID0gJ2FlczI1Ni1DQkMnOwpvaWRzWydhZXMyNTYtQ0JDJ10gPSAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDInOwoKLy8gY2VydGlmaWNhdGUgaXNzdWVyL3N1YmplY3QgT0lEcwpvaWRzWycyLjUuNC4zJ10gPSAnY29tbW9uTmFtZSc7Cm9pZHNbJ2NvbW1vbk5hbWUnXSA9ICcyLjUuNC4zJzsKb2lkc1snMi41LjQuNSddID0gJ3NlcmlhbE5hbWUnOwpvaWRzWydzZXJpYWxOYW1lJ10gPSAnMi41LjQuNSc7Cm9pZHNbJzIuNS40LjYnXSA9ICdjb3VudHJ5TmFtZSc7Cm9pZHNbJ2NvdW50cnlOYW1lJ10gPSAnMi41LjQuNic7Cm9pZHNbJzIuNS40LjcnXSA9ICdsb2NhbGl0eU5hbWUnOwpvaWRzWydsb2NhbGl0eU5hbWUnXSA9ICcyLjUuNC43JzsKb2lkc1snMi41LjQuOCddID0gJ3N0YXRlT3JQcm92aW5jZU5hbWUnOwpvaWRzWydzdGF0ZU9yUHJvdmluY2VOYW1lJ10gPSAnMi41LjQuOCc7Cm9pZHNbJzIuNS40LjEwJ10gPSAnb3JnYW5pemF0aW9uTmFtZSc7Cm9pZHNbJ29yZ2FuaXphdGlvbk5hbWUnXSA9ICcyLjUuNC4xMCc7Cm9pZHNbJzIuNS40LjExJ10gPSAnb3JnYW5pemF0aW9uYWxVbml0TmFtZSc7Cm9pZHNbJ29yZ2FuaXphdGlvbmFsVW5pdE5hbWUnXSA9ICcyLjUuNC4xMSc7CgovLyBYLjUwOSBleHRlbnNpb24gT0lEcwpvaWRzWycyLjE2Ljg0MC4xLjExMzczMC4xLjEnXSA9ICduc0NlcnRUeXBlJzsKb2lkc1snbnNDZXJ0VHlwZSddID0gJzIuMTYuODQwLjEuMTEzNzMwLjEuMSc7Cm9pZHNbJzIuNS4yOS4xJ10gPSAnYXV0aG9yaXR5S2V5SWRlbnRpZmllcic7IC8vIGRlcHJlY2F0ZWQsIHVzZSAuMzUKb2lkc1snMi41LjI5LjInXSA9ICdrZXlBdHRyaWJ1dGVzJzsgLy8gb2Jzb2xldGUgdXNlIC4zNyBvciAuMTUKb2lkc1snMi41LjI5LjMnXSA9ICdjZXJ0aWZpY2F0ZVBvbGljaWVzJzsgLy8gZGVwcmVjYXRlZCwgdXNlIC4zMgpvaWRzWycyLjUuMjkuNCddID0gJ2tleVVzYWdlUmVzdHJpY3Rpb24nOyAvLyBvYnNvbGV0ZSB1c2UgLjM3IG9yIC4xNQpvaWRzWycyLjUuMjkuNSddID0gJ3BvbGljeU1hcHBpbmcnOyAvLyBkZXByZWNhdGVkIHVzZSAuMzMKb2lkc1snMi41LjI5LjYnXSA9ICdzdWJ0cmVlc0NvbnN0cmFpbnQnOyAvLyBvYnNvbGV0ZSB1c2UgLjMwCm9pZHNbJzIuNS4yOS43J10gPSAnc3ViamVjdEFsdE5hbWUnOyAvLyBkZXByZWNhdGVkIHVzZSAuMTcKb2lkc1snMi41LjI5LjgnXSA9ICdpc3N1ZXJBbHROYW1lJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjE4Cm9pZHNbJzIuNS4yOS45J10gPSAnc3ViamVjdERpcmVjdG9yeUF0dHJpYnV0ZXMnOwpvaWRzWycyLjUuMjkuMTAnXSA9ICdiYXNpY0NvbnN0cmFpbnRzJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjE5Cm9pZHNbJzIuNS4yOS4xMSddID0gJ25hbWVDb25zdHJhaW50cyc7IC8vIGRlcHJlY2F0ZWQgdXNlIC4zMApvaWRzWycyLjUuMjkuMTInXSA9ICdwb2xpY3lDb25zdHJhaW50cyc7IC8vIGRlcHJlY2F0ZWQgdXNlIC4zNgpvaWRzWycyLjUuMjkuMTMnXSA9ICdiYXNpY0NvbnN0cmFpbnRzJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjE5Cm9pZHNbJzIuNS4yOS4xNCddID0gJ3N1YmplY3RLZXlJZGVudGlmaWVyJzsKb2lkc1snc3ViamVjdEtleUlkZW50aWZpZXInXSA9ICcyLjUuMjkuMTQnOwpvaWRzWycyLjUuMjkuMTUnXSA9ICdrZXlVc2FnZSc7Cm9pZHNbJ2tleVVzYWdlJ10gPSAnMi41LjI5LjE1JzsKb2lkc1snMi41LjI5LjE2J10gPSAncHJpdmF0ZUtleVVzYWdlUGVyaW9kJzsKb2lkc1snMi41LjI5LjE3J10gPSAnc3ViamVjdEFsdE5hbWUnOwpvaWRzWydzdWJqZWN0QWx0TmFtZSddID0gJzIuNS4yOS4xNyc7Cm9pZHNbJzIuNS4yOS4xOCddID0gJ2lzc3VlckFsdE5hbWUnOwpvaWRzWydpc3N1ZXJBbHROYW1lJ10gPSAnMi41LjI5LjE4JzsKb2lkc1snMi41LjI5LjE5J10gPSAnYmFzaWNDb25zdHJhaW50cyc7Cm9pZHNbJ2Jhc2ljQ29uc3RyYWludHMnXSA9ICcyLjUuMjkuMTknOwpvaWRzWycyLjUuMjkuMjAnXSA9ICdjUkxOdW1iZXInOwpvaWRzWycyLjUuMjkuMjEnXSA9ICdjUkxSZWFzb24nOwpvaWRzWycyLjUuMjkuMjInXSA9ICdleHBpcmF0aW9uRGF0ZSc7Cm9pZHNbJzIuNS4yOS4yMyddID0gJ2luc3RydWN0aW9uQ29kZSc7Cm9pZHNbJzIuNS4yOS4yNCddID0gJ2ludmFsaWRpdHlEYXRlJzsKb2lkc1snMi41LjI5LjI1J10gPSAnY1JMRGlzdHJpYnV0aW9uUG9pbnRzJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjMxCm9pZHNbJzIuNS4yOS4yNiddID0gJ2lzc3VpbmdEaXN0cmlidXRpb25Qb2ludCc7IC8vIGRlcHJlY2F0ZWQgdXNlIC4yOApvaWRzWycyLjUuMjkuMjcnXSA9ICdkZWx0YUNSTEluZGljYXRvcic7Cm9pZHNbJzIuNS4yOS4yOCddID0gJ2lzc3VpbmdEaXN0cmlidXRpb25Qb2ludCc7Cm9pZHNbJzIuNS4yOS4yOSddID0gJ2NlcnRpZmljYXRlSXNzdWVyJzsKb2lkc1snMi41LjI5LjMwJ10gPSAnbmFtZUNvbnN0cmFpbnRzJzsKb2lkc1snMi41LjI5LjMxJ10gPSAnY1JMRGlzdHJpYnV0aW9uUG9pbnRzJzsKb2lkc1snMi41LjI5LjMyJ10gPSAnY2VydGlmaWNhdGVQb2xpY2llcyc7Cm9pZHNbJzIuNS4yOS4zMyddID0gJ3BvbGljeU1hcHBpbmdzJzsKb2lkc1snMi41LjI5LjM0J10gPSAncG9saWN5Q29uc3RyYWludHMnOyAvLyBkZXByZWNhdGVkIHVzZSAuMzYKb2lkc1snMi41LjI5LjM1J10gPSAnYXV0aG9yaXR5S2V5SWRlbnRpZmllcic7Cm9pZHNbJzIuNS4yOS4zNiddID0gJ3BvbGljeUNvbnN0cmFpbnRzJzsKb2lkc1snMi41LjI5LjM3J10gPSAnZXh0S2V5VXNhZ2UnOwpvaWRzWydleHRLZXlVc2FnZSddID0gJzIuNS4yOS4zNyc7Cm9pZHNbJzIuNS4yOS40NiddID0gJ2ZyZXNoZXN0Q1JMJzsKb2lkc1snMi41LjI5LjU0J10gPSAnaW5oaWJpdEFueVBvbGljeSc7CgovLyBleHRLZXlVc2FnZSBwdXJwb3NlcwpvaWRzWycxLjMuNi4xLjUuNS43LjMuMSddID0gJ3NlcnZlckF1dGgnOwpvaWRzWydzZXJ2ZXJBdXRoJ10gPSAnMS4zLjYuMS41LjUuNy4zLjEnOwpvaWRzWycxLjMuNi4xLjUuNS43LjMuMiddID0gJ2NsaWVudEF1dGgnOwpvaWRzWydjbGllbnRBdXRoJ10gPSAnMS4zLjYuMS41LjUuNy4zLjInOwpvaWRzWycxLjMuNi4xLjUuNS43LjMuMyddID0gJ2NvZGVTaWduaW5nJzsKb2lkc1snY29kZVNpZ25pbmcnXSA9ICcxLjMuNi4xLjUuNS43LjMuMyc7Cm9pZHNbJzEuMy42LjEuNS41LjcuMy40J10gPSAnZW1haWxQcm90ZWN0aW9uJzsKb2lkc1snZW1haWxQcm90ZWN0aW9uJ10gPSAnMS4zLjYuMS41LjUuNy4zLjQnOwpvaWRzWycxLjMuNi4xLjUuNS43LjMuOCddID0gJ3RpbWVTdGFtcGluZyc7Cm9pZHNbJ3RpbWVTdGFtcGluZyddID0gJzEuMy42LjEuNS41LjcuMy44JzsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ29pZHMnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvb2lkcycsWydyZXF1aXJlJywgJ21vZHVsZSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIEFic3RyYWN0IFN5bnRheCBOb3RhdGlvbiBOdW1iZXIgT25lLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKgogKiBBbiBBUEkgZm9yIHN0b3JpbmcgZGF0YSB1c2luZyB0aGUgQWJzdHJhY3QgU3ludGF4IE5vdGF0aW9uIE51bWJlciBPbmUKICogZm9ybWF0IHVzaW5nIERFUiAoRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcykgZW5jb2RpbmcuIFRoaXMgZW5jb2RpbmcgaXMKICogY29tbW9ubHkgdXNlZCB0byBzdG9yZSBkYXRhIGZvciBQS0ksIGkuZS4gWC41MDkgQ2VydGlmaWNhdGVzLCBhbmQgdGhpcwogKiBpbXBsZW1lbnRhdGlvbiBleGlzdHMgZm9yIHRoYXQgcHVycG9zZS4KICoKICogQWJzdHJhY3QgU3ludGF4IE5vdGF0aW9uIE51bWJlciBPbmUgKEFTTi4xKSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgYWJzdHJhY3QKICogc3ludGF4IG9mIGluZm9ybWF0aW9uIHdpdGhvdXQgcmVzdHJpY3RpbmcgdGhlIHdheSB0aGUgaW5mb3JtYXRpb24gaXMgZW5jb2RlZAogKiBmb3IgdHJhbnNtaXNzaW9uLiBJdCBwcm92aWRlcyBhIHN0YW5kYXJkIHRoYXQgYWxsb3dzIGZvciBvcGVuIHN5c3RlbXMKICogY29tbXVuaWNhdGlvbi4gQVNOLjEgZGVmaW5lcyB0aGUgc3ludGF4IG9mIGluZm9ybWF0aW9uIGRhdGEgYW5kIGEgbnVtYmVyIG9mCiAqIHNpbXBsZSBkYXRhIHR5cGVzIGFzIHdlbGwgYXMgYSBub3RhdGlvbiBmb3IgZGVzY3JpYmluZyB0aGVtIGFuZCBzcGVjaWZ5aW5nCiAqIHZhbHVlcyBmb3IgdGhlbS4KICoKICogVGhlIFJTQSBhbGdvcml0aG0gY3JlYXRlcyBwdWJsaWMgYW5kIHByaXZhdGUga2V5cyB0aGF0IGFyZSBvZnRlbiBzdG9yZWQgaW4KICogWC41MDkgb3IgUEtDUyNYIGZvcm1hdHMgLS0gd2hpY2ggdXNlIEFTTi4xIChlbmNvZGVkIGluIERFUiBmb3JtYXQpLiBUaGlzCiAqIGNsYXNzIHByb3ZpZGVzIHRoZSBtb3N0IGJhc2ljIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgdG8gc3RvcmUgYW5kIGxvYWQgRFNBCiAqIGtleXMgdGhhdCBhcmUgZW5jb2RlZCBhY2NvcmRpbmcgdG8gQVNOLjEuCiAqCiAqIFRoZSBtb3N0IGNvbW1vbiBiaW5hcnkgZW5jb2RpbmdzIGZvciBBU04uMSBhcmUgQkVSIChCYXNpYyBFbmNvZGluZyBSdWxlcykKICogYW5kIERFUiAoRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcykuIERFUiBpcyBqdXN0IGEgc3Vic2V0IG9mIEJFUiB0aGF0CiAqIGhhcyBzdHJpY3RlciByZXF1aXJlbWVudHMgZm9yIGhvdyBkYXRhIG11c3QgYmUgZW5jb2RlZC4KICoKICogRWFjaCBBU04uMSBzdHJ1Y3R1cmUgaGFzIGEgdGFnIChhIGJ5dGUgaWRlbnRpZnlpbmcgdGhlIEFTTi4xIHN0cnVjdHVyZSB0eXBlKQogKiBhbmQgYSBieXRlIGFycmF5IGZvciB0aGUgdmFsdWUgb2YgdGhpcyBBU04xIHN0cnVjdHVyZSB3aGljaCBtYXkgYmUgZGF0YSBvciBhCiAqIGxpc3Qgb2YgQVNOLjEgc3RydWN0dXJlcy4KICoKICogRWFjaCBBU04uMSBzdHJ1Y3R1cmUgdXNpbmcgQkVSIGlzIChUYWctTGVuZ3RoLVZhbHVlKToKICoKICogfCBieXRlIDAgfCBieXRlcyBYIHwgYnl0ZXMgWSB8CiAqIHwtLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLQogKiB8ICB0YWcgICB8IGxlbmd0aCAgfCAgdmFsdWUgIHwKICoKICogQVNOLjEgYWxsb3dzIGZvciB0YWdzIHRvIGJlIG9mICJIaWdoLXRhZy1udW1iZXIgZm9ybSIgd2hpY2ggYWxsb3dzIGEgdGFnIHRvCiAqIGJlIHR3byBvciBtb3JlIG9jdGV0cywgYnV0IHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNsYXNzLiBBIHRhZyBpcwogKiBvbmx5IDEgYnl0ZS4gQml0cyAxLTUgZ2l2ZSB0aGUgdGFnIG51bWJlciAoaWUgdGhlIGRhdGEgdHlwZSB3aXRoaW4gYQogKiBwYXJ0aWN1bGFyICdjbGFzcycpLCA2IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgQVNOLjEgdmFsdWUgaXMKICogY29uc3RydWN0ZWQgZnJvbSBvdGhlciBBU04uMSB2YWx1ZXMsIGFuZCBiaXRzIDcgYW5kIDggZ2l2ZSB0aGUgJ2NsYXNzJy4gSWYKICogYml0cyA3IGFuZCA4IGFyZSBib3RoIHplcm8sIHRoZSBjbGFzcyBpcyBVTklWRVJTQUwuIElmIG9ubHkgYml0IDcgaXMgc2V0LAogKiB0aGVuIHRoZSBjbGFzcyBpcyBBUFBMSUNBVElPTi4gSWYgb25seSBiaXQgOCBpcyBzZXQsIHRoZW4gdGhlIGNsYXNzIGlzCiAqIENPTlRFWFRfU1BFQ0lGSUMuIElmIGJvdGggYml0cyA3IGFuZCA4IGFyZSBzZXQsIHRoZW4gdGhlIGNsYXNzIGlzIFBSSVZBVEUuCiAqIFRoZSB0YWcgbnVtYmVycyBmb3IgdGhlIGRhdGEgdHlwZXMgZm9yIHRoZSBjbGFzcyBVTklWRVJTQUwgYXJlIGxpc3RlZCBiZWxvdzoKICoKICogVU5JVkVSU0FMIDAgUmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgZW5jb2RpbmcgcnVsZXMKICogVU5JVkVSU0FMIDEgQm9vbGVhbiB0eXBlCiAqIFVOSVZFUlNBTCAyIEludGVnZXIgdHlwZQogKiBVTklWRVJTQUwgMyBCaXRzdHJpbmcgdHlwZQogKiBVTklWRVJTQUwgNCBPY3RldHN0cmluZyB0eXBlCiAqIFVOSVZFUlNBTCA1IE51bGwgdHlwZQogKiBVTklWRVJTQUwgNiBPYmplY3QgaWRlbnRpZmllciB0eXBlCiAqIFVOSVZFUlNBTCA3IE9iamVjdCBkZXNjcmlwdG9yIHR5cGUKICogVU5JVkVSU0FMIDggRXh0ZXJuYWwgdHlwZSBhbmQgSW5zdGFuY2Utb2YgdHlwZQogKiBVTklWRVJTQUwgOSBSZWFsIHR5cGUKICogVU5JVkVSU0FMIDEwIEVudW1lcmF0ZWQgdHlwZQogKiBVTklWRVJTQUwgMTEgRW1iZWRkZWQtcGR2IHR5cGUKICogVU5JVkVSU0FMIDEyIFVURjhTdHJpbmcgdHlwZQogKiBVTklWRVJTQUwgMTMgUmVsYXRpdmUgb2JqZWN0IGlkZW50aWZpZXIgdHlwZQogKiBVTklWRVJTQUwgMTQtMTUgUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBlZGl0aW9ucwogKiBVTklWRVJTQUwgMTYgU2VxdWVuY2UgYW5kIFNlcXVlbmNlLW9mIHR5cGVzCiAqIFVOSVZFUlNBTCAxNyBTZXQgYW5kIFNldC1vZiB0eXBlcwogKiBVTklWRVJTQUwgMTgtMjIsIDI1LTMwIENoYXJhY3RlciBzdHJpbmcgdHlwZXMKICogVU5JVkVSU0FMIDIzLTI0IFRpbWUgdHlwZXMKICoKICogVGhlIGxlbmd0aCBvZiBhbiBBU04uMSBzdHJ1Y3R1cmUgaXMgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWcgaWRlbnRpZmllci4KICogVGhlcmUgaXMgYSBkZWZpbml0ZSBmb3JtIGFuZCBhbiBpbmRlZmluaXRlIGZvcm0uIFRoZSBpbmRlZmluaXRlIGZvcm0gbWF5CiAqIGJlIHVzZWQgaWYgdGhlIGVuY29kaW5nIGlzIGNvbnN0cnVjdGVkIGFuZCBub3QgYWxsIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KICogVGhlIGluZGVmaW5pdGUgZm9ybSBpcyBlbmNvZGVkIHVzaW5nIGEgbGVuZ3RoIGJ5dGUgd2l0aCBvbmx5IHRoZSA4dGggYml0CiAqIHNldC4gVGhlIGVuZCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IGlzIG1hcmtlZCB1c2luZyBlbmQtb2YtY29udGVudHMKICogb2N0ZXRzICh0d28gemVybyBieXRlcykuCiAqCiAqIFRoZSBkZWZpbml0ZSBmb3JtIGxvb2tzIGxpa2UgdGhpczoKICoKICogVGhlIGxlbmd0aCBtYXkgdGFrZSB1cCAxIG9yIG1vcmUgYnl0ZXMsIGl0IGRlcGVuZHMgb24gdGhlIGxlbmd0aCBvZiB0aGUKICogdmFsdWUgb2YgdGhlIEFTTi4xIHN0cnVjdHVyZS4gREVSIGVuY29kaW5nIHJlcXVpcmVzIHRoYXQgaWYgdGhlIEFTTi4xCiAqIHN0cnVjdHVyZSBoYXMgYSB2YWx1ZSB0aGF0IGhhcyBhIGxlbmd0aCBncmVhdGVyIHRoYW4gMTI3LCBtb3JlIHRoYW4gMSBieXRlCiAqIHdpbGwgYmUgdXNlZCB0byBzdG9yZSBpdHMgbGVuZ3RoLCBvdGhlcndpc2UganVzdCBvbmUgYnl0ZSB3aWxsIGJlIHVzZWQuCiAqIFRoaXMgaXMgc3RyaWN0LgogKgogKiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBsZW5ndGggb2YgdGhlIEFTTi4xIHZhbHVlIGlzIGxlc3MgdGhhbiAxMjcsIDEgb2N0ZXQKICogKGJ5dGUpIGlzIHVzZWQgdG8gc3RvcmUgdGhlICJzaG9ydCBmb3JtIiBsZW5ndGguIFRoZSA4dGggYml0IGhhcyBhIHZhbHVlIG9mCiAqIDAgaW5kaWNhdGluZyB0aGUgbGVuZ3RoIGlzICJzaG9ydCBmb3JtIiBhbmQgbm90ICJsb25nIGZvcm0iIGFuZCBiaXRzIDctMQogKiBnaXZlIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEuIChUaGUgOHRoIGJpdCBpcyB0aGUgbGVmdC1tb3N0LCBtb3N0IHNpZ25pZmljYW50CiAqIGJpdDogYWxzbyBrbm93biBhcyBiaWcgZW5kaWFuIG9yIG5ldHdvcmsgZm9ybWF0KS4KICoKICogSW4gdGhlIGNhc2UgdGhhdCB0aGUgbGVuZ3RoIG9mIHRoZSBBU04uMSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMTI3LCAyIHRvCiAqIDEyNyBvY3RldHMgKGJ5dGVzKSBhcmUgdXNlZCB0byBzdG9yZSB0aGUgImxvbmcgZm9ybSIgbGVuZ3RoLiBUaGUgZmlyc3QKICogYnl0ZSdzIDh0aCBiaXQgaXMgc2V0IHRvIDEgdG8gaW5kaWNhdGUgdGhlIGxlbmd0aCBpcyAibG9uZyBmb3JtLiIgQml0cyA3LTEKICogZ2l2ZSB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgb2N0ZXRzLiBBbGwgZm9sbG93aW5nIG9jdGV0cyBhcmUgaW4gYmFzZSAyNTYKICogd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBmaXJzdCAodHlwaWNhbCBiaWctZW5kaWFuIGJpbmFyeSB1bnNpZ25lZAogKiBpbnRlZ2VyIHN0b3JhZ2UpLiBTbywgZm9yIGluc3RhbmNlLCBpZiB0aGUgbGVuZ3RoIG9mIGEgdmFsdWUgd2FzIDI1NywgdGhlCiAqIGZpcnN0IGJ5dGUgd291bGQgYmUgc2V0IHRvOgogKgogKiAxMDAwMDAxMCA9IDEzMCA9IDB4ODIuCiAqCiAqIFRoaXMgaW5kaWNhdGVzIHRoZXJlIGFyZSAyIG9jdGV0cyAoYmFzZSAyNTYpIGZvciB0aGUgbGVuZ3RoLiBUaGUgc2Vjb25kIGFuZAogKiB0aGlyZCBieXRlcyAodGhlIG9jdGV0cyBqdXN0IG1lbnRpb25lZCkgd291bGQgc3RvcmUgdGhlIGxlbmd0aCBpbiBiYXNlIDI1NjoKICoKICogb2N0ZXQgMjogMDAwMDAwMDEgPSAxICogMjU2XjEgPSAyNTYKICogb2N0ZXQgMzogMDAwMDAwMDEgPSAxICogMjU2XjAgPSAxCiAqIHRvdGFsID0gMjU3CiAqCiAqIFRoZSBhbGdvcml0aG0gZm9yIGNvbnZlcnRpbmcgYSBqcyBpbnRlZ2VyIHZhbHVlIG9mIDI1NyB0byBiYXNlLTI1NiBpczoKICoKICogdmFyIHZhbHVlID0gMjU3OwogKiB2YXIgYnl0ZXMgPSBbXTsKICogYnl0ZXNbMF0gPSAodmFsdWUgPj4+IDgpICYgMHhGRjsgLy8gbW9zdCBzaWduaWZpY2FudCBieXRlIGZpcnN0CiAqIGJ5dGVzWzFdID0gdmFsdWUgJiAweEZGOyAgICAgICAgLy8gbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBsYXN0CiAqCiAqIE9uIHRoZSBBU04uMSBVTklWRVJTQUwgT2JqZWN0IElkZW50aWZpZXIgKE9JRCkgdHlwZToKICoKICogQW4gT0lEIGNhbiBiZSB3cml0dGVuIGxpa2U6ICJ2YWx1ZTEudmFsdWUyLnZhbHVlMy4uLnZhbHVlTiIKICoKICogVGhlIERFUiBlbmNvZGluZyBydWxlczoKICoKICogVGhlIGZpcnN0IGJ5dGUgaGFzIHRoZSB2YWx1ZSA0MCAqIHZhbHVlMSArIHZhbHVlMi4KICogVGhlIGZvbGxvd2luZyBieXRlcywgaWYgYW55LCBlbmNvZGUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuIEVhY2ggdmFsdWUgaXMKICogZW5jb2RlZCBpbiBiYXNlIDEyOCwgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBmaXJzdCAoYmlnIGVuZGlhbiksIHdpdGggYXMKICogZmV3IGRpZ2l0cyBhcyBwb3NzaWJsZSwgYW5kIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGJ5dGUgc2V0CiAqIHRvIDEgZXhjZXB0IHRoZSBsYXN0IGluIGVhY2ggdmFsdWUncyBlbmNvZGluZy4gRm9yIGV4YW1wbGU6IEdpdmVuIHRoZQogKiBPSUQgIjEuMi44NDAuMTEzNTQ5IiwgaXRzIERFUiBlbmNvZGluZyBpcyAocmVtZW1iZXIgZWFjaCBieXRlIGV4Y2VwdCB0aGUKICogbGFzdCBvbmUgaW4gZWFjaCBlbmNvZGluZyBpcyBPUidkIHdpdGggMHg4MCk6CiAqCiAqIGJ5dGUgMTogNDAgKiAxICsgMiA9IDQyID0gMHgyQS4KICogYnl0ZXMgMi0zOiAxMjggKiA2ICsgNzIgPSA4NDAgPSA2IDcyID0gNiA3MiA9IDB4MDY0OCA9IDB4ODY0OAogKiBieXRlcyA0LTY6IDE2Mzg0ICogNiArIDEyOCAqIDExOSArIDEzID0gNiAxMTkgMTMgPSAweDA2NzcwRCA9IDB4ODZGNzBECiAqCiAqIFRoZSBmaW5hbCB2YWx1ZSBpczogMHgyQTg2NDg4NkY3MEQuCiAqIFRoZSBmdWxsIE9JRCAoaW5jbHVkaW5nIEFTTi4xIHRhZyBhbmQgbGVuZ3RoIG9mIDYgYnl0ZXMpIGlzOgogKiAweDA2MDYyQTg2NDg4NkY3MEQKICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovKiBBU04uMSBBUEkgKi8KdmFyIGFzbjEgPSBmb3JnZS5hc24xID0gZm9yZ2UuYXNuMSB8fCB7fTsKCi8qKgogKiBBU04uMSBjbGFzc2VzLgogKi8KYXNuMS5DbGFzcyA9IHsKICBVTklWRVJTQUw6ICAgICAgICAweDAwLAogIEFQUExJQ0FUSU9OOiAgICAgIDB4NDAsCiAgQ09OVEVYVF9TUEVDSUZJQzogMHg4MCwKICBQUklWQVRFOiAgICAgICAgICAweEMwCn07CgovKioKICogQVNOLjEgdHlwZXMuIE5vdCBhbGwgdHlwZXMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLCBvbmx5CiAqIHRob3NlIG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQgYSBzaW1wbGUgUEtJIGFyZSBpbXBsZW1lbnRlZC4KICovCmFzbjEuVHlwZSA9IHsKICBOT05FOiAgICAgICAgICAgICAwLAogIEJPT0xFQU46ICAgICAgICAgIDEsCiAgSU5URUdFUjogICAgICAgICAgMiwKICBCSVRTVFJJTkc6ICAgICAgICAzLAogIE9DVEVUU1RSSU5HOiAgICAgIDQsCiAgTlVMTDogICAgICAgICAgICAgNSwKICBPSUQ6ICAgICAgICAgICAgICA2LAogIE9ERVNDOiAgICAgICAgICAgIDcsCiAgRVhURVJOQUw6ICAgICAgICAgOCwKICBSRUFMOiAgICAgICAgICAgICA5LAogIEVOVU1FUkFURUQ6ICAgICAgMTAsCiAgRU1CRURERUQ6ICAgICAgICAxMSwKICBVVEY4OiAgICAgICAgICAgIDEyLAogIFJPSUQ6ICAgICAgICAgICAgMTMsCiAgU0VRVUVOQ0U6ICAgICAgICAxNiwKICBTRVQ6ICAgICAgICAgICAgIDE3LAogIFBSSU5UQUJMRVNUUklORzogMTksCiAgSUE1U1RSSU5HOiAgICAgICAyMiwKICBVVENUSU1FOiAgICAgICAgIDIzLAogIEdFTkVSQUxJWkVEVElNRTogMjQsCiAgQk1QU1RSSU5HOiAgICAgICAzMAp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgYXNuMSBvYmplY3QuCiAqCiAqIEBwYXJhbSB0YWdDbGFzcyB0aGUgdGFnIGNsYXNzIGZvciB0aGUgb2JqZWN0LgogKiBAcGFyYW0gdHlwZSB0aGUgZGF0YSB0eXBlICh0YWcgbnVtYmVyKSBmb3IgdGhlIG9iamVjdC4KICogQHBhcmFtIGNvbnN0cnVjdGVkIHRydWUgaWYgdGhlIGFzbjEgb2JqZWN0IGlzIGluIGNvbnN0cnVjdGVkIGZvcm0uCiAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgZm9yIHRoZSBvYmplY3QsIGlmIGl0IGlzIG5vdCBjb25zdHJ1Y3RlZC4KICoKICogQHJldHVybiB0aGUgYXNuMSBvYmplY3QuCiAqLwphc24xLmNyZWF0ZSA9IGZ1bmN0aW9uKHRhZ0NsYXNzLCB0eXBlLCBjb25zdHJ1Y3RlZCwgdmFsdWUpIHsKICAvKiBBbiBhc24xIG9iamVjdCBoYXMgYSB0YWdDbGFzcywgYSB0eXBlLCBhIGNvbnN0cnVjdGVkIGZsYWcsIGFuZCBhCiAgICB2YWx1ZS4gVGhlIHZhbHVlJ3MgdHlwZSBkZXBlbmRzIG9uIHRoZSBjb25zdHJ1Y3RlZCBmbGFnLiBJZgogICAgY29uc3RydWN0ZWQsIGl0IHdpbGwgY29udGFpbiBhIGxpc3Qgb2Ygb3RoZXIgYXNuMSBvYmplY3RzLiBJZiBub3QsCiAgICBpdCB3aWxsIGNvbnRhaW4gdGhlIEFTTi4xIHZhbHVlIGFzIGFuIGFycmF5IG9mIGJ5dGVzIGZvcm1hdHRlZAogICAgYWNjb3JkaW5nIHRvIHRoZSBBU04uMSBkYXRhIHR5cGUuICovCgogIC8vIHJlbW92ZSB1bmRlZmluZWQgdmFsdWVzCiAgaWYoZm9yZ2UudXRpbC5pc0FycmF5KHZhbHVlKSkgewogICAgdmFyIHRtcCA9IFtdOwogICAgZm9yKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKSB7CiAgICAgIGlmKHZhbHVlW2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICB0bXAucHVzaCh2YWx1ZVtpXSk7CiAgICAgIH0KICAgIH0KICAgIHZhbHVlID0gdG1wOwogIH0KCiAgcmV0dXJuIHsKICAgIHRhZ0NsYXNzOiB0YWdDbGFzcywKICAgIHR5cGU6IHR5cGUsCiAgICBjb25zdHJ1Y3RlZDogY29uc3RydWN0ZWQsCiAgICBjb21wb3NlZDogY29uc3RydWN0ZWQgfHwgZm9yZ2UudXRpbC5pc0FycmF5KHZhbHVlKSwKICAgIHZhbHVlOiB2YWx1ZQogIH07Cn07CgovKioKICogR2V0cyB0aGUgbGVuZ3RoIG9mIGEgQkVSLWVuY29kZWQgQVNOLjEgdmFsdWUuCiAqCiAqIEluIGNhc2UgdGhlIGxlbmd0aCBpcyBub3Qgc3BlY2lmaWVkLCB1bmRlZmluZWQgaXMgcmV0dXJuZWQuCiAqCiAqIEBwYXJhbSBiIHRoZSBCRVItZW5jb2RlZCBBU04uMSBieXRlIGJ1ZmZlciwgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3QKICogICAgICAgICAgbGVuZ3RoIGJ5dGUuCiAqCiAqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgQkVSLWVuY29kZWQgQVNOLjEgdmFsdWUgb3IgdW5kZWZpbmVkLgogKi8KdmFyIF9nZXRWYWx1ZUxlbmd0aCA9IGFzbjEuZ2V0QmVyVmFsdWVMZW5ndGggPSBmdW5jdGlvbihiKSB7CiAgLy8gVE9ETzogbW92ZSB0aGlzIGZ1bmN0aW9uIGFuZCByZWxhdGVkIERFUi9CRVIgZnVuY3Rpb25zIHRvIGEgZGVyLmpzCiAgLy8gZmlsZTsgYmV0dGVyIGFic3RyYWN0IEFTTi4xIGF3YXkgZnJvbSBkZXIvYmVyLgogIHZhciBiMiA9IGIuZ2V0Qnl0ZSgpOwogIGlmKGIyID09PSAweDgwKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgLy8gc2VlIGlmIHRoZSBsZW5ndGggaXMgInNob3J0IGZvcm0iIG9yICJsb25nIGZvcm0iIChiaXQgOCBzZXQpCiAgdmFyIGxlbmd0aDsKICB2YXIgbG9uZ0Zvcm0gPSBiMiAmIDB4ODA7CiAgaWYoIWxvbmdGb3JtKSB7CiAgICAvLyBsZW5ndGggaXMganVzdCB0aGUgZmlyc3QgYnl0ZQogICAgbGVuZ3RoID0gYjI7CiAgfSBlbHNlIHsKICAgIC8vIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhlIGxlbmd0aCBpcyBzcGVjaWZpZWQgaW4gYml0cyA3IHRocm91Z2ggMQogICAgLy8gYW5kIGVhY2ggbGVuZ3RoIGJ5dGUgaXMgaW4gYmlnLWVuZGlhbiBiYXNlLTI1NgogICAgbGVuZ3RoID0gYi5nZXRJbnQoKGIyICYgMHg3RikgPDwgMyk7CiAgfQogIHJldHVybiBsZW5ndGg7Cn07CgovKioKICogUGFyc2VzIGFuIGFzbjEgb2JqZWN0IGZyb20gYSBieXRlIGJ1ZmZlciBpbiBERVIgZm9ybWF0LgogKgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGUgYnVmZmVyIHRvIHBhcnNlIGZyb20uCiAqIEBwYXJhbSBzdHJpY3QgdHJ1ZSB0byBiZSBzdHJpY3Qgd2hlbiBjaGVja2luZyB2YWx1ZSBsZW5ndGhzLCBmYWxzZSB0bwogKiAgICAgICAgICBhbGxvdyB0cnVuY2F0ZWQgdmFsdWVzIChkZWZhdWx0OiB0cnVlKS4KICoKICogQHJldHVybiB0aGUgcGFyc2VkIGFzbjEgb2JqZWN0LgogKi8KYXNuMS5mcm9tRGVyID0gZnVuY3Rpb24oYnl0ZXMsIHN0cmljdCkgewogIGlmKHN0cmljdCA9PT0gdW5kZWZpbmVkKSB7CiAgICBzdHJpY3QgPSB0cnVlOwogIH0KCiAgLy8gd3JhcCBpbiBidWZmZXIgaWYgbmVlZGVkCiAgaWYodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykgewogICAgYnl0ZXMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihieXRlcyk7CiAgfQoKICAvLyBtaW5pbXVtIGxlbmd0aCBmb3IgQVNOLjEgREVSIHN0cnVjdHVyZSBpcyAyCiAgaWYoYnl0ZXMubGVuZ3RoKCkgPCAyKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1RvbyBmZXcgYnl0ZXMgdG8gcGFyc2UgREVSLicpOwogICAgZXJyb3IuYnl0ZXMgPSBieXRlcy5sZW5ndGgoKTsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZ2V0IHRoZSBmaXJzdCBieXRlCiAgdmFyIGIxID0gYnl0ZXMuZ2V0Qnl0ZSgpOwoKICAvLyBnZXQgdGhlIHRhZyBjbGFzcwogIHZhciB0YWdDbGFzcyA9IChiMSAmIDB4QzApOwoKICAvLyBnZXQgdGhlIHR5cGUgKGJpdHMgMS01KQogIHZhciB0eXBlID0gYjEgJiAweDFGOwoKICAvLyBnZXQgdGhlIHZhbHVlIGxlbmd0aAogIHZhciBsZW5ndGggPSBfZ2V0VmFsdWVMZW5ndGgoYnl0ZXMpOwoKICAvLyBlbnN1cmUgdGhlcmUgYXJlIGVub3VnaCBieXRlcyB0byBnZXQgdGhlIHZhbHVlCiAgaWYoYnl0ZXMubGVuZ3RoKCkgPCBsZW5ndGgpIHsKICAgIGlmKHN0cmljdCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1RvbyBmZXcgYnl0ZXMgdG8gcmVhZCBBU04uMSB2YWx1ZS4nKTsKICAgICAgZXJyb3IuZGV0YWlsID0gYnl0ZXMubGVuZ3RoKCkgKyAnIDwgJyArIGxlbmd0aDsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CiAgICAvLyBOb3RlOiBiZSBsZW5pZW50IHdpdGggdHJ1bmNhdGVkIHZhbHVlcwogICAgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoKCk7CiAgfQoKICAvLyBwcmVwYXJlIHRvIGdldCB2YWx1ZQogIHZhciB2YWx1ZTsKCiAgLy8gY29uc3RydWN0ZWQgZmxhZyBpcyBiaXQgNiAoMzIgPSAweDIwKSBvZiB0aGUgZmlyc3QgYnl0ZQogIHZhciBjb25zdHJ1Y3RlZCA9ICgoYjEgJiAweDIwKSA9PT0gMHgyMCk7CgogIC8vIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgY29tcG9zZWQgb2Ygb3RoZXIgQVNOLjEgb2JqZWN0cyAoaWYgaXRzCiAgLy8gY29uc3RydWN0ZWQgaXQgd2lsbCBiZSBhbmQgaWYgaXRzIGEgQklUU1RSSU5HIGl0IG1heSBiZSkKICB2YXIgY29tcG9zZWQgPSBjb25zdHJ1Y3RlZDsKICBpZighY29tcG9zZWQgJiYgdGFnQ2xhc3MgPT09IGFzbjEuQ2xhc3MuVU5JVkVSU0FMICYmCiAgICB0eXBlID09PSBhc24xLlR5cGUuQklUU1RSSU5HICYmIGxlbmd0aCA+IDEpIHsKICAgIC8qIFRoZSBmaXJzdCBvY3RldCBnaXZlcyB0aGUgbnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggdGhlIGxlbmd0aCBvZiB0aGUKICAgICAgYml0IHN0cmluZyBpcyBsZXNzIHRoYW4gdGhlIG5leHQgbXVsdGlwbGUgb2YgZWlnaHQgKHRoaXMgaXMgY2FsbGVkCiAgICAgIHRoZSAibnVtYmVyIG9mIHVudXNlZCBiaXRzIikuCgogICAgICBUaGUgc2Vjb25kIGFuZCBmb2xsb3dpbmcgb2N0ZXRzIGdpdmUgdGhlIHZhbHVlIG9mIHRoZSBiaXQgc3RyaW5nCiAgICAgIGNvbnZlcnRlZCB0byBhbiBvY3RldCBzdHJpbmcuICovCiAgICAvLyBpZiB0aGVyZSBhcmUgbm8gdW51c2VkIGJpdHMsIG1heWJlIHRoZSBiaXRzdHJpbmcgaG9sZHMgQVNOLjEgb2JqcwogICAgdmFyIHJlYWQgPSBieXRlcy5yZWFkOwogICAgdmFyIHVudXNlZCA9IGJ5dGVzLmdldEJ5dGUoKTsKICAgIGlmKHVudXNlZCA9PT0gMCkgewogICAgICAvLyBpZiB0aGUgZmlyc3QgYnl0ZSBpbmRpY2F0ZXMgVU5JVkVSU0FMIG9yIENPTlRFWFRfU1BFQ0lGSUMsCiAgICAgIC8vIGFuZCB0aGUgbGVuZ3RoIGlzIHZhbGlkLCBhc3N1bWUgd2UndmUgZ290IGFuIEFTTi4xIG9iamVjdAogICAgICBiMSA9IGJ5dGVzLmdldEJ5dGUoKTsKICAgICAgdmFyIHRjID0gKGIxICYgMHhDMCk7CiAgICAgIGlmKHRjID09PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fCB0YyA9PT0gYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBsZW4gPSBfZ2V0VmFsdWVMZW5ndGgoYnl0ZXMpOwogICAgICAgICAgY29tcG9zZWQgPSAobGVuID09PSBsZW5ndGggLSAoYnl0ZXMucmVhZCAtIHJlYWQpKTsKICAgICAgICAgIGlmKGNvbXBvc2VkKSB7CiAgICAgICAgICAgIC8vIGFkanVzdCByZWFkL2xlbmd0aCB0byBhY2NvdW50IGZvciB1bnVzZWQgYml0cyBieXRlCiAgICAgICAgICAgICsrcmVhZDsKICAgICAgICAgICAgLS1sZW5ndGg7CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChleCkge30KICAgICAgfQogICAgfQogICAgLy8gcmVzdG9yZSByZWFkIHBvaW50ZXIKICAgIGJ5dGVzLnJlYWQgPSByZWFkOwogIH0KCiAgaWYoY29tcG9zZWQpIHsKICAgIC8vIHBhcnNlIGNoaWxkIGFzbjEgb2JqZWN0cyBmcm9tIHRoZSB2YWx1ZQogICAgdmFsdWUgPSBbXTsKICAgIGlmKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIC8vIGFzbjEgb2JqZWN0IG9mIGluZGVmaW5pdGUgbGVuZ3RoLCByZWFkIHVudGlsIGVuZCB0YWcKICAgICAgZm9yKDs7KSB7CiAgICAgICAgaWYoYnl0ZXMuYnl0ZXMoMikgPT09IFN0cmluZy5mcm9tQ2hhckNvZGUoMCwgMCkpIHsKICAgICAgICAgIGJ5dGVzLmdldEJ5dGVzKDIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHZhbHVlLnB1c2goYXNuMS5mcm9tRGVyKGJ5dGVzLCBzdHJpY3QpKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgLy8gcGFyc2luZyBhc24xIG9iamVjdCBvZiBkZWZpbml0ZSBsZW5ndGgKICAgICAgdmFyIHN0YXJ0ID0gYnl0ZXMubGVuZ3RoKCk7CiAgICAgIHdoaWxlKGxlbmd0aCA+IDApIHsKICAgICAgICB2YWx1ZS5wdXNoKGFzbjEuZnJvbURlcihieXRlcywgc3RyaWN0KSk7CiAgICAgICAgbGVuZ3RoIC09IHN0YXJ0IC0gYnl0ZXMubGVuZ3RoKCk7CiAgICAgICAgc3RhcnQgPSBieXRlcy5sZW5ndGgoKTsKICAgICAgfQogICAgfQogIH0gZWxzZSB7CiAgICAvLyBhc24xIG5vdCBjb21wb3NlZCwgZ2V0IHJhdyB2YWx1ZQogICAgLy8gVE9ETzogZG8gREVSIHRvIE9JRCBjb252ZXJzaW9uIGFuZCB2aWNlLXZlcnNhIGluIC50b0Rlcj8KCiAgICBpZihsZW5ndGggPT09IHVuZGVmaW5lZCkgewogICAgICBpZihzdHJpY3QpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vbi1jb25zdHJ1Y3RlZCBBU04uMSBvYmplY3Qgb2YgaW5kZWZpbml0ZSBsZW5ndGguJyk7CiAgICAgIH0KICAgICAgLy8gYmUgbGVuaWVudCBhbmQgdXNlIHJlbWFpbmluZyBieXRlcwogICAgICBsZW5ndGggPSBieXRlcy5sZW5ndGgoKTsKICAgIH0KCiAgICBpZih0eXBlID09PSBhc24xLlR5cGUuQk1QU1RSSU5HKSB7CiAgICAgIHZhbHVlID0gJyc7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMikgewogICAgICAgIHZhbHVlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXMuZ2V0SW50MTYoKSk7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHZhbHVlID0gYnl0ZXMuZ2V0Qnl0ZXMobGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGNyZWF0ZSBhbmQgcmV0dXJuIGFzbjEgb2JqZWN0CiAgcmV0dXJuIGFzbjEuY3JlYXRlKHRhZ0NsYXNzLCB0eXBlLCBjb25zdHJ1Y3RlZCwgdmFsdWUpOwp9OwoKLyoqCiAqIENvbnZlcnRzIHRoZSBnaXZlbiBhc24xIG9iamVjdCB0byBhIGJ1ZmZlciBvZiBieXRlcyBpbiBERVIgZm9ybWF0LgogKgogKiBAcGFyYW0gYXNuMSB0aGUgYXNuMSBvYmplY3QgdG8gY29udmVydCB0byBieXRlcy4KICoKICogQHJldHVybiB0aGUgYnVmZmVyIG9mIGJ5dGVzLgogKi8KYXNuMS50b0RlciA9IGZ1bmN0aW9uKG9iaikgewogIHZhciBieXRlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGJ1aWxkIHRoZSBmaXJzdCBieXRlCiAgdmFyIGIxID0gb2JqLnRhZ0NsYXNzIHwgb2JqLnR5cGU7CgogIC8vIGZvciBzdG9yaW5nIHRoZSBBU04uMSB2YWx1ZQogIHZhciB2YWx1ZSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGlmIGNvbXBvc2VkLCB1c2UgZWFjaCBjaGlsZCBhc24xIG9iamVjdCdzIERFUiBieXRlcyBhcyB2YWx1ZQogIGlmKG9iai5jb21wb3NlZCkgewogICAgLy8gdHVybiBvbiA2dGggYml0ICgweDIwID0gMzIpIHRvIGluZGljYXRlIGFzbjEgaXMgY29uc3RydWN0ZWQKICAgIC8vIGZyb20gb3RoZXIgYXNuMSBvYmplY3RzCiAgICBpZihvYmouY29uc3RydWN0ZWQpIHsKICAgICAgYjEgfD0gMHgyMDsKICAgIH0gZWxzZSB7CiAgICAgIC8vIHR5cGUgaXMgYSBiaXQgc3RyaW5nLCBhZGQgdW51c2VkIGJpdHMgb2YgMHgwMAogICAgICB2YWx1ZS5wdXRCeXRlKDB4MDApOwogICAgfQoKICAgIC8vIGFkZCBhbGwgb2YgdGhlIGNoaWxkIERFUiBieXRlcyB0b2dldGhlcgogICAgZm9yKHZhciBpID0gMDsgaSA8IG9iai52YWx1ZS5sZW5ndGg7ICsraSkgewogICAgICBpZihvYmoudmFsdWVbaV0gIT09IHVuZGVmaW5lZCkgewogICAgICAgIHZhbHVlLnB1dEJ1ZmZlcihhc24xLnRvRGVyKG9iai52YWx1ZVtpXSkpOwogICAgICB9CiAgICB9CiAgfSBlbHNlIHsKICAgIC8vIHVzZSBhc24xLnZhbHVlIGRpcmVjdGx5CiAgICBpZihvYmoudHlwZSA9PT0gYXNuMS5UeXBlLkJNUFNUUklORykgewogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgb2JqLnZhbHVlLmxlbmd0aDsgKytpKSB7CiAgICAgICAgdmFsdWUucHV0SW50MTYob2JqLnZhbHVlLmNoYXJDb2RlQXQoaSkpOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICB2YWx1ZS5wdXRCeXRlcyhvYmoudmFsdWUpOwogICAgfQogIH0KCiAgLy8gYWRkIHRhZyBieXRlCiAgYnl0ZXMucHV0Qnl0ZShiMSk7CgogIC8vIHVzZSAic2hvcnQgZm9ybSIgZW5jb2RpbmcKICBpZih2YWx1ZS5sZW5ndGgoKSA8PSAxMjcpIHsKICAgIC8vIG9uZSBieXRlIGRlc2NyaWJlcyB0aGUgbGVuZ3RoCiAgICAvLyBiaXQgOCA9IDAgYW5kIGJpdHMgNy0xID0gbGVuZ3RoCiAgICBieXRlcy5wdXRCeXRlKHZhbHVlLmxlbmd0aCgpICYgMHg3Rik7CiAgfSBlbHNlIHsKICAgIC8vIHVzZSAibG9uZyBmb3JtIiBlbmNvZGluZwogICAgLy8gMiB0byAxMjcgYnl0ZXMgZGVzY3JpYmUgdGhlIGxlbmd0aAogICAgLy8gZmlyc3QgYnl0ZTogYml0IDggPSAxIGFuZCBiaXRzIDctMSA9ICMgb2YgYWRkaXRpb25hbCBieXRlcwogICAgLy8gb3RoZXIgYnl0ZXM6IGxlbmd0aCBpbiBiYXNlIDI1NiwgYmlnLWVuZGlhbgogICAgdmFyIGxlbiA9IHZhbHVlLmxlbmd0aCgpOwogICAgdmFyIGxlbkJ5dGVzID0gJyc7CiAgICBkbyB7CiAgICAgIGxlbkJ5dGVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUobGVuICYgMHhGRik7CiAgICAgIGxlbiA9IGxlbiA+Pj4gODsKICAgIH0gd2hpbGUobGVuID4gMCk7CgogICAgLy8gc2V0IGZpcnN0IGJ5dGUgdG8gIyBieXRlcyB1c2VkIHRvIHN0b3JlIHRoZSBsZW5ndGggYW5kIHR1cm4gb24KICAgIC8vIGJpdCA4IHRvIGluZGljYXRlIGxvbmctZm9ybSBsZW5ndGggaXMgdXNlZAogICAgYnl0ZXMucHV0Qnl0ZShsZW5CeXRlcy5sZW5ndGggfCAweDgwKTsKCiAgICAvLyBjb25jYXRlbmF0ZSBsZW5ndGggYnl0ZXMgaW4gcmV2ZXJzZSBzaW5jZSB0aGV5IHdlcmUgZ2VuZXJhdGVkCiAgICAvLyBsaXR0bGUgZW5kaWFuIGFuZCB3ZSBuZWVkIGJpZyBlbmRpYW4KICAgIGZvcih2YXIgaSA9IGxlbkJ5dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIGJ5dGVzLnB1dEJ5dGUobGVuQnl0ZXMuY2hhckNvZGVBdChpKSk7CiAgICB9CiAgfQoKICAvLyBjb25jYXRlbmF0ZSB2YWx1ZSBieXRlcwogIGJ5dGVzLnB1dEJ1ZmZlcih2YWx1ZSk7CiAgcmV0dXJuIGJ5dGVzOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIE9JRCBkb3Qtc2VwYXJhdGVkIHN0cmluZyB0byBhIGJ5dGUgYnVmZmVyLiBUaGUgYnl0ZSBidWZmZXIKICogY29udGFpbnMgb25seSB0aGUgREVSLWVuY29kZWQgdmFsdWUsIG5vdCBhbnkgdGFnIG9yIGxlbmd0aCBieXRlcy4KICoKICogQHBhcmFtIG9pZCB0aGUgT0lEIGRvdC1zZXBhcmF0ZWQgc3RyaW5nLgogKgogKiBAcmV0dXJuIHRoZSBieXRlIGJ1ZmZlci4KICovCmFzbjEub2lkVG9EZXIgPSBmdW5jdGlvbihvaWQpIHsKICAvLyBzcGxpdCBPSUQgaW50byBpbmRpdmlkdWFsIHZhbHVlcwogIHZhciB2YWx1ZXMgPSBvaWQuc3BsaXQoJy4nKTsKICB2YXIgYnl0ZXMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwoKICAvLyBmaXJzdCBieXRlIGlzIDQwICogdmFsdWUxICsgdmFsdWUyCiAgYnl0ZXMucHV0Qnl0ZSg0MCAqIHBhcnNlSW50KHZhbHVlc1swXSwgMTApICsgcGFyc2VJbnQodmFsdWVzWzFdLCAxMCkpOwogIC8vIG90aGVyIGJ5dGVzIGFyZSBlYWNoIHZhbHVlIGluIGJhc2UgMTI4IHdpdGggOHRoIGJpdCBzZXQgZXhjZXB0IGZvcgogIC8vIHRoZSBsYXN0IGJ5dGUgZm9yIGVhY2ggdmFsdWUKICB2YXIgbGFzdCwgdmFsdWVCeXRlcywgdmFsdWUsIGI7CiAgZm9yKHZhciBpID0gMjsgaSA8IHZhbHVlcy5sZW5ndGg7ICsraSkgewogICAgLy8gcHJvZHVjZSB2YWx1ZSBieXRlcyBpbiByZXZlcnNlIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueQogICAgLy8gYnl0ZXMgaXQgd2lsbCB0YWtlIHRvIHN0b3JlIHRoZSB2YWx1ZQogICAgbGFzdCA9IHRydWU7CiAgICB2YWx1ZUJ5dGVzID0gW107CiAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlc1tpXSwgMTApOwogICAgZG8gewogICAgICBiID0gdmFsdWUgJiAweDdGOwogICAgICB2YWx1ZSA9IHZhbHVlID4+PiA3OwogICAgICAvLyBpZiB2YWx1ZSBpcyBub3QgbGFzdCwgdGhlbiB0dXJuIG9uIDh0aCBiaXQKICAgICAgaWYoIWxhc3QpIHsKICAgICAgICBiIHw9IDB4ODA7CiAgICAgIH0KICAgICAgdmFsdWVCeXRlcy5wdXNoKGIpOwogICAgICBsYXN0ID0gZmFsc2U7CiAgICB9IHdoaWxlKHZhbHVlID4gMCk7CgogICAgLy8gYWRkIHZhbHVlIGJ5dGVzIGluIHJldmVyc2UgKG5lZWRzIHRvIGJlIGluIGJpZyBlbmRpYW4pCiAgICBmb3IodmFyIG4gPSB2YWx1ZUJ5dGVzLmxlbmd0aCAtIDE7IG4gPj0gMDsgLS1uKSB7CiAgICAgIGJ5dGVzLnB1dEJ5dGUodmFsdWVCeXRlc1tuXSk7CiAgICB9CiAgfQoKICByZXR1cm4gYnl0ZXM7Cn07CgovKioKICogQ29udmVydHMgYSBERVItZW5jb2RlZCBieXRlIGJ1ZmZlciB0byBhbiBPSUQgZG90LXNlcGFyYXRlZCBzdHJpbmcuIFRoZQogKiBieXRlIGJ1ZmZlciBzaG91bGQgY29udGFpbiBvbmx5IHRoZSBERVItZW5jb2RlZCB2YWx1ZSwgbm90IGFueSB0YWcgb3IKICogbGVuZ3RoIGJ5dGVzLgogKgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGUgYnVmZmVyLgogKgogKiBAcmV0dXJuIHRoZSBPSUQgZG90LXNlcGFyYXRlZCBzdHJpbmcuCiAqLwphc24xLmRlclRvT2lkID0gZnVuY3Rpb24oYnl0ZXMpIHsKICB2YXIgb2lkOwoKICAvLyB3cmFwIGluIGJ1ZmZlciBpZiBuZWVkZWQKICBpZih0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7CiAgICBieXRlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKTsKICB9CgogIC8vIGZpcnN0IGJ5dGUgaXMgNDAgKiB2YWx1ZTEgKyB2YWx1ZTIKICB2YXIgYiA9IGJ5dGVzLmdldEJ5dGUoKTsKICBvaWQgPSBNYXRoLmZsb29yKGIgLyA0MCkgKyAnLicgKyAoYiAlIDQwKTsKCiAgLy8gb3RoZXIgYnl0ZXMgYXJlIGVhY2ggdmFsdWUgaW4gYmFzZSAxMjggd2l0aCA4dGggYml0IHNldCBleGNlcHQgZm9yCiAgLy8gdGhlIGxhc3QgYnl0ZSBmb3IgZWFjaCB2YWx1ZQogIHZhciB2YWx1ZSA9IDA7CiAgd2hpbGUoYnl0ZXMubGVuZ3RoKCkgPiAwKSB7CiAgICBiID0gYnl0ZXMuZ2V0Qnl0ZSgpOwogICAgdmFsdWUgPSB2YWx1ZSA8PCA3OwogICAgLy8gbm90IHRoZSBsYXN0IGJ5dGUgZm9yIHRoZSB2YWx1ZQogICAgaWYoYiAmIDB4ODApIHsKICAgICAgdmFsdWUgKz0gYiAmIDB4N0Y7CiAgICB9IGVsc2UgewogICAgICAvLyBsYXN0IGJ5dGUKICAgICAgb2lkICs9ICcuJyArICh2YWx1ZSArIGIpOwogICAgICB2YWx1ZSA9IDA7CiAgICB9CiAgfQoKICByZXR1cm4gb2lkOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgVVRDVGltZSB2YWx1ZSB0byBhIGRhdGUuCiAqCiAqIE5vdGU6IEdlbmVyYWxpemVkVGltZSBoYXMgNCBkaWdpdHMgZm9yIHRoZSB5ZWFyIGFuZCBpcyB1c2VkIGZvciBYLjUwOQogKiBkYXRlcyBwYXNzZWQgMjA0OS4gUGFyc2luZyB0aGF0IHN0cnVjdHVyZSBoYXNuJ3QgYmVlbiBpbXBsZW1lbnRlZCB5ZXQuCiAqCiAqIEBwYXJhbSB1dGMgdGhlIFVUQ1RpbWUgdmFsdWUgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgZGF0ZS4KICovCmFzbjEudXRjVGltZVRvRGF0ZSA9IGZ1bmN0aW9uKHV0YykgewogIC8qIFRoZSBmb2xsb3dpbmcgZm9ybWF0cyBjYW4gYmUgdXNlZDoKCiAgICBZWU1NRERoaG1tWgogICAgWVlNTUREaGhtbStoaCdtbScKICAgIFlZTU1ERGhobW0taGgnbW0nCiAgICBZWU1NRERoaG1tc3NaCiAgICBZWU1NRERoaG1tc3MraGgnbW0nCiAgICBZWU1NRERoaG1tc3MtaGgnbW0nCgogICAgV2hlcmU6CgogICAgWVkgaXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IHR3byBkaWdpdHMgb2YgdGhlIHllYXIKICAgIE1NIGlzIHRoZSBtb250aCAoMDEgdG8gMTIpCiAgICBERCBpcyB0aGUgZGF5ICgwMSB0byAzMSkKICAgIGhoIGlzIHRoZSBob3VyICgwMCB0byAyMykKICAgIG1tIGFyZSB0aGUgbWludXRlcyAoMDAgdG8gNTkpCiAgICBzcyBhcmUgdGhlIHNlY29uZHMgKDAwIHRvIDU5KQogICAgWiBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzIEdNVCwgKyBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzCiAgICBsYXRlciB0aGFuIEdNVCwgYW5kIC0gaW5kaWNhdGVzIHRoYXQgbG9jYWwgdGltZSBpcyBlYXJsaWVyIHRoYW4gR01UCiAgICBoaCcgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvZmZzZXQgZnJvbSBHTVQgaW4gaG91cnMKICAgIG1tJyBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9mZnNldCBmcm9tIEdNVCBpbiBtaW51dGVzICovCiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwoKICAvLyBpZiBZWSA+PSA1MCB1c2UgMTl4eCwgaWYgWVkgPCA1MCB1c2UgMjB4eAogIHZhciB5ZWFyID0gcGFyc2VJbnQodXRjLnN1YnN0cigwLCAyKSwgMTApOwogIHllYXIgPSAoeWVhciA+PSA1MCkgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIHZhciBNTSA9IHBhcnNlSW50KHV0Yy5zdWJzdHIoMiwgMiksIDEwKSAtIDE7IC8vIHVzZSAwLTExIGZvciBtb250aAogIHZhciBERCA9IHBhcnNlSW50KHV0Yy5zdWJzdHIoNCwgMiksIDEwKTsKICB2YXIgaGggPSBwYXJzZUludCh1dGMuc3Vic3RyKDYsIDIpLCAxMCk7CiAgdmFyIG1tID0gcGFyc2VJbnQodXRjLnN1YnN0cig4LCAyKSwgMTApOwogIHZhciBzcyA9IDA7CgogIC8vIG5vdCBqdXN0IFlZTU1ERGhobW1aCiAgaWYodXRjLmxlbmd0aCA+IDExKSB7CiAgICAvLyBnZXQgY2hhcmFjdGVyIGFmdGVyIG1pbnV0ZXMKICAgIHZhciBjID0gdXRjLmNoYXJBdCgxMCk7CiAgICB2YXIgZW5kID0gMTA7CgogICAgLy8gc2VlIGlmIHNlY29uZHMgYXJlIHByZXNlbnQKICAgIGlmKGMgIT09ICcrJyAmJiBjICE9PSAnLScpIHsKICAgICAgLy8gZ2V0IHNlY29uZHMKICAgICAgc3MgPSBwYXJzZUludCh1dGMuc3Vic3RyKDEwLCAyKSwgMTApOwogICAgICBlbmQgKz0gMjsKICAgIH0KICB9CgogIC8vIHVwZGF0ZSBkYXRlCiAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCBNTSwgREQpOwogIGRhdGUuc2V0VVRDSG91cnMoaGgsIG1tLCBzcywgMCk7CgogIGlmKGVuZCkgewogICAgLy8gZ2V0ICsvLSBhZnRlciBlbmQgb2YgdGltZQogICAgYyA9IHV0Yy5jaGFyQXQoZW5kKTsKICAgIGlmKGMgPT09ICcrJyB8fCBjID09PSAnLScpIHsKICAgICAgLy8gZ2V0IGhvdXJzK21pbnV0ZXMgb2Zmc2V0CiAgICAgIHZhciBoaG9mZnNldCA9IHBhcnNlSW50KHV0Yy5zdWJzdHIoZW5kICsgMSwgMiksIDEwKTsKICAgICAgdmFyIG1tb2Zmc2V0ID0gcGFyc2VJbnQodXRjLnN1YnN0cihlbmQgKyA0LCAyKSwgMTApOwoKICAgICAgLy8gY2FsY3VsYXRlIG9mZnNldCBpbiBtaWxsaXNlY29uZHMKICAgICAgdmFyIG9mZnNldCA9IGhob2Zmc2V0ICogNjAgKyBtbW9mZnNldDsKICAgICAgb2Zmc2V0ICo9IDYwMDAwOwoKICAgICAgLy8gYXBwbHkgb2Zmc2V0CiAgICAgIGlmKGMgPT09ICcrJykgewogICAgICAgIGRhdGUuc2V0VGltZSgrZGF0ZSAtIG9mZnNldCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgb2Zmc2V0KTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIGRhdGU7Cn07CgovKioKICogQ29udmVydHMgYSBHZW5lcmFsaXplZFRpbWUgdmFsdWUgdG8gYSBkYXRlLgogKgogKiBAcGFyYW0gZ2VudGltZSB0aGUgR2VuZXJhbGl6ZWRUaW1lIHZhbHVlIHRvIGNvbnZlcnQuCiAqCiAqIEByZXR1cm4gdGhlIGRhdGUuCiAqLwphc24xLmdlbmVyYWxpemVkVGltZVRvRGF0ZSA9IGZ1bmN0aW9uKGdlbnRpbWUpIHsKICAvKiBUaGUgZm9sbG93aW5nIGZvcm1hdHMgY2FuIGJlIHVzZWQ6CgogICAgWVlZWU1NRERISE1NU1MKICAgIFlZWVlNTURESEhNTVNTLmZmZgogICAgWVlZWU1NRERISE1NU1NaCiAgICBZWVlZTU1EREhITU1TUy5mZmZaCiAgICBZWVlZTU1EREhITU1TUytoaCdtbScKICAgIFlZWVlNTURESEhNTVNTLmZmZitoaCdtbScKICAgIFlZWVlNTURESEhNTVNTLWhoJ21tJwogICAgWVlZWU1NRERISE1NU1MuZmZmLWhoJ21tJwoKICAgIFdoZXJlOgoKICAgIFlZWVkgaXMgdGhlIHllYXIKICAgIE1NIGlzIHRoZSBtb250aCAoMDEgdG8gMTIpCiAgICBERCBpcyB0aGUgZGF5ICgwMSB0byAzMSkKICAgIGhoIGlzIHRoZSBob3VyICgwMCB0byAyMykKICAgIG1tIGFyZSB0aGUgbWludXRlcyAoMDAgdG8gNTkpCiAgICBzcyBhcmUgdGhlIHNlY29uZHMgKDAwIHRvIDU5KQogICAgLmZmZiBpcyB0aGUgc2Vjb25kIGZyYWN0aW9uLCBhY2N1cmF0ZSB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcwogICAgWiBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzIEdNVCwgKyBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzCiAgICBsYXRlciB0aGFuIEdNVCwgYW5kIC0gaW5kaWNhdGVzIHRoYXQgbG9jYWwgdGltZSBpcyBlYXJsaWVyIHRoYW4gR01UCiAgICBoaCcgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvZmZzZXQgZnJvbSBHTVQgaW4gaG91cnMKICAgIG1tJyBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9mZnNldCBmcm9tIEdNVCBpbiBtaW51dGVzICovCiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwoKICB2YXIgWVlZWSA9IHBhcnNlSW50KGdlbnRpbWUuc3Vic3RyKDAsIDQpLCAxMCk7CiAgdmFyIE1NID0gcGFyc2VJbnQoZ2VudGltZS5zdWJzdHIoNCwgMiksIDEwKSAtIDE7IC8vIHVzZSAwLTExIGZvciBtb250aAogIHZhciBERCA9IHBhcnNlSW50KGdlbnRpbWUuc3Vic3RyKDYsIDIpLCAxMCk7CiAgdmFyIGhoID0gcGFyc2VJbnQoZ2VudGltZS5zdWJzdHIoOCwgMiksIDEwKTsKICB2YXIgbW0gPSBwYXJzZUludChnZW50aW1lLnN1YnN0cigxMCwgMiksIDEwKTsKICB2YXIgc3MgPSBwYXJzZUludChnZW50aW1lLnN1YnN0cigxMiwgMiksIDEwKTsKICB2YXIgZmZmID0gMDsKICB2YXIgb2Zmc2V0ID0gMDsKICB2YXIgaXNVVEMgPSBmYWxzZTsKCiAgaWYoZ2VudGltZS5jaGFyQXQoZ2VudGltZS5sZW5ndGggLSAxKSA9PT0gJ1onKSB7CiAgICBpc1VUQyA9IHRydWU7CiAgfQoKICB2YXIgZW5kID0gZ2VudGltZS5sZW5ndGggLSA1LCBjID0gZ2VudGltZS5jaGFyQXQoZW5kKTsKICBpZihjID09PSAnKycgfHwgYyA9PT0gJy0nKSB7CiAgICAvLyBnZXQgaG91cnMrbWludXRlcyBvZmZzZXQKICAgIHZhciBoaG9mZnNldCA9IHBhcnNlSW50KGdlbnRpbWUuc3Vic3RyKGVuZCArIDEsIDIpLCAxMCk7CiAgICB2YXIgbW1vZmZzZXQgPSBwYXJzZUludChnZW50aW1lLnN1YnN0cihlbmQgKyA0LCAyKSwgMTApOwoKICAgIC8vIGNhbGN1bGF0ZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzCiAgICBvZmZzZXQgPSBoaG9mZnNldCAqIDYwICsgbW1vZmZzZXQ7CiAgICBvZmZzZXQgKj0gNjAwMDA7CgogICAgLy8gYXBwbHkgb2Zmc2V0CiAgICBpZihjID09PSAnKycpIHsKICAgICAgb2Zmc2V0ICo9IC0xOwogICAgfQoKICAgIGlzVVRDID0gdHJ1ZTsKICB9CgogIC8vIGNoZWNrIGZvciBzZWNvbmQgZnJhY3Rpb24KICBpZihnZW50aW1lLmNoYXJBdCgxNCkgPT09ICcuJykgewogICAgZmZmID0gcGFyc2VGbG9hdChnZW50aW1lLnN1YnN0cigxNCksIDEwKSAqIDEwMDA7CiAgfQoKICBpZihpc1VUQykgewogICAgZGF0ZS5zZXRVVENGdWxsWWVhcihZWVlZLCBNTSwgREQpOwogICAgZGF0ZS5zZXRVVENIb3VycyhoaCwgbW0sIHNzLCBmZmYpOwoKICAgIC8vIGFwcGx5IG9mZnNldAogICAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgb2Zmc2V0KTsKICB9IGVsc2UgewogICAgZGF0ZS5zZXRGdWxsWWVhcihZWVlZLCBNTSwgREQpOwogICAgZGF0ZS5zZXRIb3VycyhoaCwgbW0sIHNzLCBmZmYpOwogIH0KCiAgcmV0dXJuIGRhdGU7Cn07CgovKioKICogQ29udmVydHMgYSBkYXRlIHRvIGEgVVRDVGltZSB2YWx1ZS4KICoKICogTm90ZTogR2VuZXJhbGl6ZWRUaW1lIGhhcyA0IGRpZ2l0cyBmb3IgdGhlIHllYXIgYW5kIGlzIHVzZWQgZm9yIFguNTA5CiAqIGRhdGVzIHBhc3NlZCAyMDQ5LiBDb252ZXJ0aW5nIHRvIGEgR2VuZXJhbGl6ZWRUaW1lIGhhc24ndCBiZWVuCiAqIGltcGxlbWVudGVkIHlldC4KICoKICogQHBhcmFtIGRhdGUgdGhlIGRhdGUgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgVVRDVGltZSB2YWx1ZS4KICovCmFzbjEuZGF0ZVRvVXRjVGltZSA9IGZ1bmN0aW9uKGRhdGUpIHsKICAvLyBUT0RPOiB2YWxpZGF0ZTsgY3VycmVudGx5IGFzc3VtZXMgcHJvcGVyIGZvcm1hdAogIGlmKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykgewogICAgcmV0dXJuIGRhdGU7CiAgfQoKICB2YXIgcnZhbCA9ICcnOwoKICAvLyBjcmVhdGUgZm9ybWF0IFlZTU1ERGhobW1zc1oKICB2YXIgZm9ybWF0ID0gW107CiAgZm9ybWF0LnB1c2goKCcnICsgZGF0ZS5nZXRVVENGdWxsWWVhcigpKS5zdWJzdHIoMikpOwogIGZvcm1hdC5wdXNoKCcnICsgKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDRGF0ZSgpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDSG91cnMoKSk7CiAgZm9ybWF0LnB1c2goJycgKyBkYXRlLmdldFVUQ01pbnV0ZXMoKSk7CiAgZm9ybWF0LnB1c2goJycgKyBkYXRlLmdldFVUQ1NlY29uZHMoKSk7CgogIC8vIGVuc3VyZSAyIGRpZ2l0cyBhcmUgdXNlZCBmb3IgZWFjaCBmb3JtYXQgZW50cnkKICBmb3IodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsgKytpKSB7CiAgICBpZihmb3JtYXRbaV0ubGVuZ3RoIDwgMikgewogICAgICBydmFsICs9ICcwJzsKICAgIH0KICAgIHJ2YWwgKz0gZm9ybWF0W2ldOwogIH0KICBydmFsICs9ICdaJzsKCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgYSBkYXRlIHRvIGEgR2VuZXJhbGl6ZWRUaW1lIHZhbHVlLgogKgogKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZSB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBHZW5lcmFsaXplZFRpbWUgdmFsdWUgYXMgYSBzdHJpbmcuCiAqLwphc24xLmRhdGVUb0dlbmVyYWxpemVkVGltZSA9IGZ1bmN0aW9uKGRhdGUpIHsKICAvLyBUT0RPOiB2YWxpZGF0ZTsgY3VycmVudGx5IGFzc3VtZXMgcHJvcGVyIGZvcm1hdAogIGlmKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykgewogICAgcmV0dXJuIGRhdGU7CiAgfQoKICB2YXIgcnZhbCA9ICcnOwoKICAvLyBjcmVhdGUgZm9ybWF0IFlZWVlNTURESEhNTVNTWgogIHZhciBmb3JtYXQgPSBbXTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7CiAgZm9ybWF0LnB1c2goJycgKyAoZGF0ZS5nZXRVVENNb250aCgpICsgMSkpOwogIGZvcm1hdC5wdXNoKCcnICsgZGF0ZS5nZXRVVENEYXRlKCkpOwogIGZvcm1hdC5wdXNoKCcnICsgZGF0ZS5nZXRVVENIb3VycygpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDTWludXRlcygpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDU2Vjb25kcygpKTsKCiAgLy8gZW5zdXJlIDIgZGlnaXRzIGFyZSB1c2VkIGZvciBlYWNoIGZvcm1hdCBlbnRyeQogIGZvcih2YXIgaSA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoOyArK2kpIHsKICAgIGlmKGZvcm1hdFtpXS5sZW5ndGggPCAyKSB7CiAgICAgIHJ2YWwgKz0gJzAnOwogICAgfQogICAgcnZhbCArPSBmb3JtYXRbaV07CiAgfQogIHJ2YWwgKz0gJ1onOwoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIGphdmFzY3JpcHQgaW50ZWdlciB0byBhIERFUi1lbmNvZGVkIGJ5dGUgYnVmZmVyIHRvIGJlIHVzZWQKICogYXMgdGhlIHZhbHVlIGZvciBhbiBJTlRFR0VSIHR5cGUuCiAqCiAqIEBwYXJhbSB4IHRoZSBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoZSBieXRlIGJ1ZmZlci4KICovCmFzbjEuaW50ZWdlclRvRGVyID0gZnVuY3Rpb24oeCkgewogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBpZih4ID49IC0weDgwICYmIHggPCAweDgwKSB7CiAgICByZXR1cm4gcnZhbC5wdXRTaWduZWRJbnQoeCwgOCk7CiAgfQogIGlmKHggPj0gLTB4ODAwMCAmJiB4IDwgMHg4MDAwKSB7CiAgICByZXR1cm4gcnZhbC5wdXRTaWduZWRJbnQoeCwgMTYpOwogIH0KICBpZih4ID49IC0weDgwMDAwMCAmJiB4IDwgMHg4MDAwMDApIHsKICAgIHJldHVybiBydmFsLnB1dFNpZ25lZEludCh4LCAyNCk7CiAgfQogIGlmKHggPj0gLTB4ODAwMDAwMDAgJiYgeCA8IDB4ODAwMDAwMDApIHsKICAgIHJldHVybiBydmFsLnB1dFNpZ25lZEludCh4LCAzMik7CiAgfQogIHZhciBlcnJvciA9IG5ldyBFcnJvcignSW50ZWdlciB0b28gbGFyZ2U7IG1heCBpcyAzMi1iaXRzLicpOwogIGVycm9yLmludGVnZXIgPSB4OwogIHRocm93IGVycm9yOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgREVSLWVuY29kZWQgYnl0ZSBidWZmZXIgdG8gYSBqYXZhc2NyaXB0IGludGVnZXIuIFRoaXMgaXMKICogdHlwaWNhbGx5IHVzZWQgdG8gZGVjb2RlIHRoZSB2YWx1ZSBvZiBhbiBJTlRFR0VSIHR5cGUuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZSBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGludGVnZXIuCiAqLwphc24xLmRlclRvSW50ZWdlciA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgLy8gd3JhcCBpbiBidWZmZXIgaWYgbmVlZGVkCiAgaWYodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykgewogICAgYnl0ZXMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihieXRlcyk7CiAgfQoKICB2YXIgbiA9IGJ5dGVzLmxlbmd0aCgpICogODsKICBpZihuID4gMzIpIHsKICAgIHRocm93IG5ldyBFcnJvcignSW50ZWdlciB0b28gbGFyZ2U7IG1heCBpcyAzMi1iaXRzLicpOwogIH0KICByZXR1cm4gYnl0ZXMuZ2V0U2lnbmVkSW50KG4pOwp9OwoKLyoqCiAqIFZhbGlkYXRlcyB0aGUgdGhhdCBnaXZlbiBBU04uMSBvYmplY3QgaXMgYXQgbGVhc3QgYSBzdXBlciBzZXQgb2YgdGhlCiAqIGdpdmVuIEFTTi4xIHN0cnVjdHVyZS4gT25seSB0YWcgY2xhc3NlcyBhbmQgdHlwZXMgYXJlIGNoZWNrZWQuIEFuCiAqIG9wdGlvbmFsIG1hcCBtYXkgYWxzbyBiZSBwcm92aWRlZCB0byBjYXB0dXJlIEFTTi4xIHZhbHVlcyB3aGlsZSB0aGUKICogc3RydWN0dXJlIGlzIGNoZWNrZWQuCiAqCiAqIFRvIGNhcHR1cmUgYW4gQVNOLjEgdmFsdWUsIHNldCBhbiBvYmplY3QgaW4gdGhlIHZhbGlkYXRvcidzICdjYXB0dXJlJwogKiBwYXJhbWV0ZXIgdG8gdGhlIGtleSB0byB1c2UgaW4gdGhlIGNhcHR1cmUgbWFwLiBUbyBjYXB0dXJlIHRoZSBmdWxsCiAqIEFTTi4xIG9iamVjdCwgc3BlY2lmeSAnY2FwdHVyZUFzbjEnLgogKgogKiBPYmplY3RzIGluIHRoZSB2YWxpZGF0b3IgbWF5IHNldCBhIGZpZWxkICdvcHRpb25hbCcgdG8gdHJ1ZSB0byBpbmRpY2F0ZQogKiB0aGF0IGl0IGlzbid0IG5lY2Vzc2FyeSB0byBwYXNzIHZhbGlkYXRpb24uCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIG9iamVjdCB0byB2YWxpZGF0ZS4KICogQHBhcmFtIHYgdGhlIEFTTi4xIHN0cnVjdHVyZSB2YWxpZGF0b3IuCiAqIEBwYXJhbSBjYXB0dXJlIGFuIG9wdGlvbmFsIG1hcCB0byBjYXB0dXJlIHZhbHVlcyBpbi4KICogQHBhcmFtIGVycm9ycyBhbiBvcHRpb25hbCBhcnJheSBmb3Igc3RvcmluZyB2YWxpZGF0aW9uIGVycm9ycy4KICoKICogQHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAqLwphc24xLnZhbGlkYXRlID0gZnVuY3Rpb24ob2JqLCB2LCBjYXB0dXJlLCBlcnJvcnMpIHsKICB2YXIgcnZhbCA9IGZhbHNlOwoKICAvLyBlbnN1cmUgdGFnIGNsYXNzIGFuZCB0eXBlIGFyZSB0aGUgc2FtZSBpZiBzcGVjaWZpZWQKICBpZigob2JqLnRhZ0NsYXNzID09PSB2LnRhZ0NsYXNzIHx8IHR5cGVvZih2LnRhZ0NsYXNzKSA9PT0gJ3VuZGVmaW5lZCcpICYmCiAgICAob2JqLnR5cGUgPT09IHYudHlwZSB8fCB0eXBlb2Yodi50eXBlKSA9PT0gJ3VuZGVmaW5lZCcpKSB7CiAgICAvLyBlbnN1cmUgY29uc3RydWN0ZWQgZmxhZyBpcyB0aGUgc2FtZSBpZiBzcGVjaWZpZWQKICAgIGlmKG9iai5jb25zdHJ1Y3RlZCA9PT0gdi5jb25zdHJ1Y3RlZCB8fAogICAgICB0eXBlb2Yodi5jb25zdHJ1Y3RlZCkgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHJ2YWwgPSB0cnVlOwoKICAgICAgLy8gaGFuZGxlIHN1YiB2YWx1ZXMKICAgICAgaWYodi52YWx1ZSAmJiBmb3JnZS51dGlsLmlzQXJyYXkodi52YWx1ZSkpIHsKICAgICAgICB2YXIgaiA9IDA7CiAgICAgICAgZm9yKHZhciBpID0gMDsgcnZhbCAmJiBpIDwgdi52YWx1ZS5sZW5ndGg7ICsraSkgewogICAgICAgICAgcnZhbCA9IHYudmFsdWVbaV0ub3B0aW9uYWwgfHwgZmFsc2U7CiAgICAgICAgICBpZihvYmoudmFsdWVbal0pIHsKICAgICAgICAgICAgcnZhbCA9IGFzbjEudmFsaWRhdGUob2JqLnZhbHVlW2pdLCB2LnZhbHVlW2ldLCBjYXB0dXJlLCBlcnJvcnMpOwogICAgICAgICAgICBpZihydmFsKSB7CiAgICAgICAgICAgICAgKytqOwogICAgICAgICAgICB9IGVsc2UgaWYodi52YWx1ZVtpXS5vcHRpb25hbCkgewogICAgICAgICAgICAgIHJ2YWwgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZighcnZhbCAmJiBlcnJvcnMpIHsKICAgICAgICAgICAgZXJyb3JzLnB1c2goCiAgICAgICAgICAgICAgJ1snICsgdi5uYW1lICsgJ10gJyArCiAgICAgICAgICAgICAgJ1RhZyBjbGFzcyAiJyArIHYudGFnQ2xhc3MgKyAnIiwgdHlwZSAiJyArCiAgICAgICAgICAgICAgdi50eXBlICsgJyIgZXhwZWN0ZWQgdmFsdWUgbGVuZ3RoICInICsKICAgICAgICAgICAgICB2LnZhbHVlLmxlbmd0aCArICciLCBnb3QgIicgKwogICAgICAgICAgICAgIG9iai52YWx1ZS5sZW5ndGggKyAnIicpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYocnZhbCAmJiBjYXB0dXJlKSB7CiAgICAgICAgaWYodi5jYXB0dXJlKSB7CiAgICAgICAgICBjYXB0dXJlW3YuY2FwdHVyZV0gPSBvYmoudmFsdWU7CiAgICAgICAgfQogICAgICAgIGlmKHYuY2FwdHVyZUFzbjEpIHsKICAgICAgICAgIGNhcHR1cmVbdi5jYXB0dXJlQXNuMV0gPSBvYmo7CiAgICAgICAgfQogICAgICB9CiAgICB9IGVsc2UgaWYoZXJyb3JzKSB7CiAgICAgIGVycm9ycy5wdXNoKAogICAgICAgICdbJyArIHYubmFtZSArICddICcgKwogICAgICAgICdFeHBlY3RlZCBjb25zdHJ1Y3RlZCAiJyArIHYuY29uc3RydWN0ZWQgKyAnIiwgZ290ICInICsKICAgICAgICBvYmouY29uc3RydWN0ZWQgKyAnIicpOwogICAgfQogIH0gZWxzZSBpZihlcnJvcnMpIHsKICAgIGlmKG9iai50YWdDbGFzcyAhPT0gdi50YWdDbGFzcykgewogICAgICBlcnJvcnMucHVzaCgKICAgICAgICAnWycgKyB2Lm5hbWUgKyAnXSAnICsKICAgICAgICAnRXhwZWN0ZWQgdGFnIGNsYXNzICInICsgdi50YWdDbGFzcyArICciLCBnb3QgIicgKwogICAgICAgIG9iai50YWdDbGFzcyArICciJyk7CiAgICB9CiAgICBpZihvYmoudHlwZSAhPT0gdi50eXBlKSB7CiAgICAgIGVycm9ycy5wdXNoKAogICAgICAgICdbJyArIHYubmFtZSArICddICcgKwogICAgICAgICdFeHBlY3RlZCB0eXBlICInICsgdi50eXBlICsgJyIsIGdvdCAiJyArIG9iai50eXBlICsgJyInKTsKICAgIH0KICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovLyByZWdleCBmb3IgdGVzdGluZyBmb3Igbm9uLWxhdGluIGNoYXJhY3RlcnMKdmFyIF9ub25MYXRpblJlZ2V4ID0gL1teXFx1MDAwMC1cXHUwMGZmXS87CgovKioKICogUHJldHR5IHByaW50cyBhbiBBU04uMSBvYmplY3QgdG8gYSBzdHJpbmcuCiAqCiAqIEBwYXJhbSBvYmogdGhlIG9iamVjdCB0byB3cml0ZSBvdXQuCiAqIEBwYXJhbSBsZXZlbCB0aGUgbGV2ZWwgaW4gdGhlIHRyZWUuCiAqIEBwYXJhbSBpbmRlbnRhdGlvbiB0aGUgaW5kZW50YXRpb24gdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBzdHJpbmcuCiAqLwphc24xLnByZXR0eVByaW50ID0gZnVuY3Rpb24ob2JqLCBsZXZlbCwgaW5kZW50YXRpb24pIHsKICB2YXIgcnZhbCA9ICcnOwoKICAvLyBzZXQgZGVmYXVsdCBsZXZlbCBhbmQgaW5kZW50YXRpb24KICBsZXZlbCA9IGxldmVsIHx8IDA7CiAgaW5kZW50YXRpb24gPSBpbmRlbnRhdGlvbiB8fCAyOwoKICAvLyBzdGFydCBuZXcgbGluZSBmb3IgZGVlcCBsZXZlbHMKICBpZihsZXZlbCA+IDApIHsKICAgIHJ2YWwgKz0gJ1xuJzsKICB9CgogIC8vIGNyZWF0ZSBpbmRlbnQKICB2YXIgaW5kZW50ID0gJyc7CiAgZm9yKHZhciBpID0gMDsgaSA8IGxldmVsICogaW5kZW50YXRpb247ICsraSkgewogICAgaW5kZW50ICs9ICcgJzsKICB9CgogIC8vIHByaW50IGNsYXNzOnR5cGUKICBydmFsICs9IGluZGVudCArICdUYWc6ICc7CiAgc3dpdGNoKG9iai50YWdDbGFzcykgewogIGNhc2UgYXNuMS5DbGFzcy5VTklWRVJTQUw6CiAgICBydmFsICs9ICdVbml2ZXJzYWw6JzsKICAgIGJyZWFrOwogIGNhc2UgYXNuMS5DbGFzcy5BUFBMSUNBVElPTjoKICAgIHJ2YWwgKz0gJ0FwcGxpY2F0aW9uOic7CiAgICBicmVhazsKICBjYXNlIGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQzoKICAgIHJ2YWwgKz0gJ0NvbnRleHQtU3BlY2lmaWM6JzsKICAgIGJyZWFrOwogIGNhc2UgYXNuMS5DbGFzcy5QUklWQVRFOgogICAgcnZhbCArPSAnUHJpdmF0ZTonOwogICAgYnJlYWs7CiAgfQoKICBpZihvYmoudGFnQ2xhc3MgPT09IGFzbjEuQ2xhc3MuVU5JVkVSU0FMKSB7CiAgICBydmFsICs9IG9iai50eXBlOwoKICAgIC8vIGtub3duIHR5cGVzCiAgICBzd2l0Y2gob2JqLnR5cGUpIHsKICAgIGNhc2UgYXNuMS5UeXBlLk5PTkU6CiAgICAgIHJ2YWwgKz0gJyAoTm9uZSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkJPT0xFQU46CiAgICAgIHJ2YWwgKz0gJyAoQm9vbGVhbiknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkJJVFNUUklORzoKICAgICAgcnZhbCArPSAnIChCaXQgc3RyaW5nKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuSU5URUdFUjoKICAgICAgcnZhbCArPSAnIChJbnRlZ2VyKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuT0NURVRTVFJJTkc6CiAgICAgIHJ2YWwgKz0gJyAoT2N0ZXQgc3RyaW5nKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuTlVMTDoKICAgICAgcnZhbCArPSAnIChOdWxsKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuT0lEOgogICAgICBydmFsICs9ICcgKE9iamVjdCBJZGVudGlmaWVyKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuT0RFU0M6CiAgICAgIHJ2YWwgKz0gJyAoT2JqZWN0IERlc2NyaXB0b3IpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5FWFRFUk5BTDoKICAgICAgcnZhbCArPSAnIChFeHRlcm5hbCBvciBJbnN0YW5jZSBvZiknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlJFQUw6CiAgICAgIHJ2YWwgKz0gJyAoUmVhbCknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkVOVU1FUkFURUQ6CiAgICAgIHJ2YWwgKz0gJyAoRW51bWVyYXRlZCknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkVNQkVEREVEOgogICAgICBydmFsICs9ICcgKEVtYmVkZGVkIFBEViknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlVURjg6CiAgICAgIHJ2YWwgKz0gJyAoVVRGOCknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlJPSUQ6CiAgICAgIHJ2YWwgKz0gJyAoUmVsYXRpdmUgT2JqZWN0IElkZW50aWZpZXIpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5TRVFVRU5DRToKICAgICAgcnZhbCArPSAnIChTZXF1ZW5jZSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlNFVDoKICAgICAgcnZhbCArPSAnIChTZXQpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5QUklOVEFCTEVTVFJJTkc6CiAgICAgIHJ2YWwgKz0gJyAoUHJpbnRhYmxlIFN0cmluZyknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLklBNVN0cmluZzoKICAgICAgcnZhbCArPSAnIChJQTVTdHJpbmcgKEFTQ0lJKSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlVUQ1RJTUU6CiAgICAgIHJ2YWwgKz0gJyAoVVRDIHRpbWUpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5HRU5FUkFMSVpFRFRJTUU6CiAgICAgIHJ2YWwgKz0gJyAoR2VuZXJhbGl6ZWQgdGltZSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkJNUFNUUklORzoKICAgICAgcnZhbCArPSAnIChCTVAgU3RyaW5nKSc7CiAgICAgIGJyZWFrOwogICAgfQogIH0gZWxzZSB7CiAgICBydmFsICs9IG9iai50eXBlOwogIH0KCiAgcnZhbCArPSAnXG4nOwogIHJ2YWwgKz0gaW5kZW50ICsgJ0NvbnN0cnVjdGVkOiAnICsgb2JqLmNvbnN0cnVjdGVkICsgJ1xuJzsKCiAgaWYob2JqLmNvbXBvc2VkKSB7CiAgICB2YXIgc3VidmFsdWVzID0gMDsKICAgIHZhciBzdWIgPSAnJzsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBvYmoudmFsdWUubGVuZ3RoOyArK2kpIHsKICAgICAgaWYob2JqLnZhbHVlW2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICBzdWJ2YWx1ZXMgKz0gMTsKICAgICAgICBzdWIgKz0gYXNuMS5wcmV0dHlQcmludChvYmoudmFsdWVbaV0sIGxldmVsICsgMSwgaW5kZW50YXRpb24pOwogICAgICAgIGlmKChpICsgMSkgPCBvYmoudmFsdWUubGVuZ3RoKSB7CiAgICAgICAgICBzdWIgKz0gJywnOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcnZhbCArPSBpbmRlbnQgKyAnU3ViIHZhbHVlczogJyArIHN1YnZhbHVlcyArIHN1YjsKICB9IGVsc2UgewogICAgcnZhbCArPSBpbmRlbnQgKyAnVmFsdWU6ICc7CiAgICBpZihvYmoudHlwZSA9PT0gYXNuMS5UeXBlLk9JRCkgewogICAgICB2YXIgb2lkID0gYXNuMS5kZXJUb09pZChvYmoudmFsdWUpOwogICAgICBydmFsICs9IG9pZDsKICAgICAgaWYoZm9yZ2UucGtpICYmIGZvcmdlLnBraS5vaWRzKSB7CiAgICAgICAgaWYob2lkIGluIGZvcmdlLnBraS5vaWRzKSB7CiAgICAgICAgICBydmFsICs9ICcgKCcgKyBmb3JnZS5wa2kub2lkc1tvaWRdICsgJykgJzsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGlmKG9iai50eXBlID09PSBhc24xLlR5cGUuSU5URUdFUikgewogICAgICB0cnkgewogICAgICAgIHJ2YWwgKz0gYXNuMS5kZXJUb0ludGVnZXIob2JqLnZhbHVlKTsKICAgICAgfSBjYXRjaChleCkgewogICAgICAgIHJ2YWwgKz0gJzB4JyArIGZvcmdlLnV0aWwuYnl0ZXNUb0hleChvYmoudmFsdWUpOwogICAgICB9CiAgICB9IGVsc2UgaWYob2JqLnR5cGUgPT09IGFzbjEuVHlwZS5PQ1RFVFNUUklORykgewogICAgICBpZighX25vbkxhdGluUmVnZXgudGVzdChvYmoudmFsdWUpKSB7CiAgICAgICAgcnZhbCArPSAnKCcgKyBvYmoudmFsdWUgKyAnKSAnOwogICAgICB9CiAgICAgIHJ2YWwgKz0gJzB4JyArIGZvcmdlLnV0aWwuYnl0ZXNUb0hleChvYmoudmFsdWUpOwogICAgfSBlbHNlIGlmKG9iai50eXBlID09PSBhc24xLlR5cGUuVVRGOCkgewogICAgICBydmFsICs9IGZvcmdlLnV0aWwuZGVjb2RlVXRmOChvYmoudmFsdWUpOwogICAgfSBlbHNlIGlmKG9iai50eXBlID09PSBhc24xLlR5cGUuUFJJTlRBQkxFU1RSSU5HIHx8CiAgICAgIG9iai50eXBlID09PSBhc24xLlR5cGUuSUE1U3RyaW5nKSB7CiAgICAgIHJ2YWwgKz0gb2JqLnZhbHVlOwogICAgfSBlbHNlIGlmKF9ub25MYXRpblJlZ2V4LnRlc3Qob2JqLnZhbHVlKSkgewogICAgICBydmFsICs9ICcweCcgKyBmb3JnZS51dGlsLmJ5dGVzVG9IZXgob2JqLnZhbHVlKTsKICAgIH0gZWxzZSBpZihvYmoudmFsdWUubGVuZ3RoID09PSAwKSB7CiAgICAgIHJ2YWwgKz0gJ1tudWxsXSc7CiAgICB9IGVsc2UgewogICAgICBydmFsICs9IG9iai52YWx1ZTsKICAgIH0KICB9CgogIHJldHVybiBydmFsOwp9OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnYXNuMSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9hc24xJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCcsICcuL29pZHMnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogTWVzc2FnZSBEaWdlc3QgQWxnb3JpdGhtIDUgd2l0aCAxMjgtYml0IGRpZ2VzdCAoTUQ1KSBpbXBsZW1lbnRhdGlvbi4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Cgp2YXIgbWQ1ID0gZm9yZ2UubWQ1ID0gZm9yZ2UubWQ1IHx8IHt9Owpmb3JnZS5tZCA9IGZvcmdlLm1kIHx8IHt9Owpmb3JnZS5tZC5hbGdvcml0aG1zID0gZm9yZ2UubWQuYWxnb3JpdGhtcyB8fCB7fTsKZm9yZ2UubWQubWQ1ID0gZm9yZ2UubWQuYWxnb3JpdGhtcy5tZDUgPSBtZDU7CgovKioKICogQ3JlYXRlcyBhbiBNRDUgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKgogKiBAcmV0dXJuIGEgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKi8KbWQ1LmNyZWF0ZSA9IGZ1bmN0aW9uKCkgewogIC8vIGRvIGluaXRpYWxpemF0aW9uIGFzIG5lY2Vzc2FyeQogIGlmKCFfaW5pdGlhbGl6ZWQpIHsKICAgIF9pbml0KCk7CiAgfQoKICAvLyBNRDUgc3RhdGUgY29udGFpbnMgZm91ciAzMi1iaXQgaW50ZWdlcnMKICB2YXIgX3N0YXRlID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIHdvcmQgc3RvcmFnZQogIHZhciBfdyA9IG5ldyBBcnJheSgxNik7CgogIC8vIG1lc3NhZ2UgZGlnZXN0IG9iamVjdAogIHZhciBtZCA9IHsKICAgIGFsZ29yaXRobTogJ21kNScsCiAgICBibG9ja0xlbmd0aDogNjQsCiAgICBkaWdlc3RMZW5ndGg6IDE2LAogICAgLy8gNTYtYml0IGxlbmd0aCBvZiBtZXNzYWdlIHNvIGZhciAoZG9lcyBub3QgaW5jbHVkaW5nIHBhZGRpbmcpCiAgICBtZXNzYWdlTGVuZ3RoOiAwLAogICAgLy8gdHJ1ZSBtZXNzYWdlIGxlbmd0aAogICAgZnVsbE1lc3NhZ2VMZW5ndGg6IG51bGwsCiAgICAvLyBzaXplIG9mIG1lc3NhZ2UgbGVuZ3RoIGluIGJ5dGVzCiAgICBtZXNzYWdlTGVuZ3RoU2l6ZTogOAogIH07CgogIC8qKgogICAqIFN0YXJ0cyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQuc3RhcnQgPSBmdW5jdGlvbigpIHsKICAgIC8vIHVwIHRvIDU2LWJpdCBtZXNzYWdlIGxlbmd0aCBmb3IgY29udmVuaWVuY2UKICAgIG1kLm1lc3NhZ2VMZW5ndGggPSAwOwoKICAgIC8vIGZ1bGwgbWVzc2FnZSBsZW5ndGggKHNldCBtZC5tZXNzYWdlTGVuZ3RoNjQgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5KQogICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGggPSBtZC5tZXNzYWdlTGVuZ3RoNjQgPSBbXTsKICAgIHZhciBpbnQzMnMgPSBtZC5tZXNzYWdlTGVuZ3RoU2l6ZSAvIDQ7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgaW50MzJzOyArK2kpIHsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGgucHVzaCgwKTsKICAgIH0KICAgIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBfc3RhdGUgPSB7CiAgICAgIGgwOiAweDY3NDUyMzAxLAogICAgICBoMTogMHhFRkNEQUI4OSwKICAgICAgaDI6IDB4OThCQURDRkUsCiAgICAgIGgzOiAweDEwMzI1NDc2CiAgICB9OwogICAgcmV0dXJuIG1kOwogIH07CiAgLy8gc3RhcnQgZGlnZXN0IGF1dG9tYXRpY2FsbHkgZm9yIGZpcnN0IHRpbWUKICBtZC5zdGFydCgpOwoKICAvKioKICAgKiBVcGRhdGVzIHRoZSBkaWdlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZSBpbnB1dC4gVGhlIGdpdmVuIGlucHV0IGNhbgogICAqIHRyZWF0ZWQgYXMgcmF3IGlucHV0IChubyBlbmNvZGluZyB3aWxsIGJlIGFwcGxpZWQpIG9yIGFuIGVuY29kaW5nIG9mCiAgICogJ3V0ZjgnIG1heWJlIGdpdmVuIHRvIGVuY29kZSB0aGUgaW5wdXQgdXNpbmcgVVRGLTguCiAgICoKICAgKiBAcGFyYW0gbXNnIHRoZSBtZXNzYWdlIGlucHV0IHRvIHVwZGF0ZSB3aXRoLgogICAqIEBwYXJhbSBlbmNvZGluZyB0aGUgZW5jb2RpbmcgdG8gdXNlIChkZWZhdWx0OiAncmF3Jywgb3RoZXI6ICd1dGY4JykuCiAgICoKICAgKiBAcmV0dXJuIHRoaXMgZGlnZXN0IG9iamVjdC4KICAgKi8KICBtZC51cGRhdGUgPSBmdW5jdGlvbihtc2csIGVuY29kaW5nKSB7CiAgICBpZihlbmNvZGluZyA9PT0gJ3V0ZjgnKSB7CiAgICAgIG1zZyA9IGZvcmdlLnV0aWwuZW5jb2RlVXRmOChtc2cpOwogICAgfQoKICAgIC8vIHVwZGF0ZSBtZXNzYWdlIGxlbmd0aAogICAgdmFyIGxlbiA9IG1zZy5sZW5ndGg7CiAgICBtZC5tZXNzYWdlTGVuZ3RoICs9IGxlbjsKICAgIGxlbiA9IFsobGVuIC8gMHgxMDAwMDAwMDApID4+PiAwLCBsZW4gPj4+IDBdOwogICAgZm9yKHZhciBpID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gKz0gbGVuWzFdOwogICAgICBsZW5bMV0gPSBsZW5bMF0gKyAoKG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldIC8gMHgxMDAwMDAwMDApID4+PiAwKTsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gPSBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSA+Pj4gMDsKICAgICAgbGVuWzBdID0gKChsZW5bMV0gLyAweDEwMDAwMDAwMCkgPj4+IDApOwogICAgfQoKICAgIC8vIGFkZCBieXRlcyB0byBpbnB1dCBidWZmZXIKICAgIF9pbnB1dC5wdXRCeXRlcyhtc2cpOwoKICAgIC8vIHByb2Nlc3MgYnl0ZXMKICAgIF91cGRhdGUoX3N0YXRlLCBfdywgX2lucHV0KTsKCiAgICAvLyBjb21wYWN0IGlucHV0IGJ1ZmZlciBldmVyeSAySyBvciBpZiBlbXB0eQogICAgaWYoX2lucHV0LnJlYWQgPiAyMDQ4IHx8IF9pbnB1dC5sZW5ndGgoKSA9PT0gMCkgewogICAgICBfaW5wdXQuY29tcGFjdCgpOwogICAgfQoKICAgIHJldHVybiBtZDsKICB9OwoKICAvKioKICAgKiBQcm9kdWNlcyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiBhIGJ5dGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRpZ2VzdCB2YWx1ZS4KICAgKi8KICBtZC5kaWdlc3QgPSBmdW5jdGlvbigpIHsKICAgIC8qIE5vdGU6IEhlcmUgd2UgY29weSB0aGUgcmVtYWluaW5nIGJ5dGVzIGluIHRoZSBpbnB1dCBidWZmZXIgYW5kCiAgICBhZGQgdGhlIGFwcHJvcHJpYXRlIE1ENSBwYWRkaW5nLiBUaGVuIHdlIGRvIHRoZSBmaW5hbCB1cGRhdGUKICAgIG9uIGEgY29weSBvZiB0aGUgc3RhdGUgc28gdGhhdCBpZiB0aGUgdXNlciB3YW50cyB0byBnZXQKICAgIGludGVybWVkaWF0ZSBkaWdlc3RzIHRoZXkgY2FuIGRvIHNvLiAqLwoKICAgIC8qIERldGVybWluZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbXVzdCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZQogICAgdG8gZW5zdXJlIGl0cyBsZW5ndGggaXMgY29uZ3J1ZW50IHRvIDQ0OCBtb2QgNTEyLiBJbiBvdGhlciB3b3JkcywKICAgIHRoZSBkYXRhIHRvIGJlIGRpZ2VzdGVkIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA1MTIgYml0cyAob3IgMTI4IGJ5dGVzKS4KICAgIFRoaXMgZGF0YSBpbmNsdWRlcyB0aGUgbWVzc2FnZSwgc29tZSBwYWRkaW5nLCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKICAgIG1lc3NhZ2UuIFNpbmNlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBlbmNvZGVkIGFzIDggYnl0ZXMgKDY0CiAgICBiaXRzKSwgdGhhdCBtZWFucyB0aGF0IHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGRhdGEgbXVzdCBoYXZlIDU2IGJ5dGVzCiAgICAoNDQ4IGJpdHMpIG9mIG1lc3NhZ2UgYW5kIHBhZGRpbmcuIFRoZXJlZm9yZSwgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZQogICAgcGx1cyB0aGUgcGFkZGluZyBtdXN0IGJlIGNvbmdydWVudCB0byA0NDggbW9kIDUxMiBiZWNhdXNlCiAgICA1MTIgLSAxMjggPSA0NDguCgogICAgSW4gb3JkZXIgdG8gZmlsbCB1cCB0aGUgbWVzc2FnZSBsZW5ndGggaXQgbXVzdCBiZSBmaWxsZWQgd2l0aAogICAgcGFkZGluZyB0aGF0IGJlZ2lucyB3aXRoIDEgYml0IGZvbGxvd2VkIGJ5IGFsbCAwIGJpdHMuIFBhZGRpbmcKICAgIG11c3QgKmFsd2F5cyogYmUgcHJlc2VudCwgc28gaWYgdGhlIG1lc3NhZ2UgbGVuZ3RoIGlzIGFscmVhZHkKICAgIGNvbmdydWVudCB0byA0NDggbW9kIDUxMiwgdGhlbiA1MTIgcGFkZGluZyBiaXRzIG11c3QgYmUgYWRkZWQuICovCgogICAgdmFyIGZpbmFsQmxvY2sgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgZmluYWxCbG9jay5wdXRCeXRlcyhfaW5wdXQuYnl0ZXMoKSk7CgogICAgLy8gY29tcHV0ZSByZW1haW5pbmcgc2l6ZSB0byBiZSBkaWdlc3RlZCAoaW5jbHVkZSBtZXNzYWdlIGxlbmd0aCBzaXplKQogICAgdmFyIHJlbWFpbmluZyA9ICgKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGhbbWQuZnVsbE1lc3NhZ2VMZW5ndGgubGVuZ3RoIC0gMV0gKwogICAgICBtZC5tZXNzYWdlTGVuZ3RoU2l6ZSk7CgogICAgLy8gYWRkIHBhZGRpbmcgZm9yIG92ZXJmbG93IGJsb2NrU2l6ZSAtIG92ZXJmbG93CiAgICAvLyBfcGFkZGluZyBzdGFydHMgd2l0aCAxIGJ5dGUgd2l0aCBmaXJzdCBiaXQgaXMgc2V0IChieXRlIHZhbHVlIDEyOCksIHRoZW4KICAgIC8vIHRoZXJlIG1heSBiZSB1cCB0byAoYmxvY2tTaXplIC0gMSkgb3RoZXIgcGFkIGJ5dGVzCiAgICB2YXIgb3ZlcmZsb3cgPSByZW1haW5pbmcgJiAobWQuYmxvY2tMZW5ndGggLSAxKTsKICAgIGZpbmFsQmxvY2sucHV0Qnl0ZXMoX3BhZGRpbmcuc3Vic3RyKDAsIG1kLmJsb2NrTGVuZ3RoIC0gb3ZlcmZsb3cpKTsKCiAgICAvLyBzZXJpYWxpemUgbWVzc2FnZSBsZW5ndGggaW4gYml0cyBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyOyBzaW5jZSBsZW5ndGgKICAgIC8vIGlzIHN0b3JlZCBpbiBieXRlcyB3ZSBtdWx0aXBseSBieSA4IGFuZCBhZGQgY2FycnkKICAgIHZhciBiaXRzLCBjYXJyeSA9IDA7CiAgICBmb3IodmFyIGkgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICBiaXRzID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gKiA4ICsgY2Fycnk7CiAgICAgIGNhcnJ5ID0gKGJpdHMgLyAweDEwMDAwMDAwMCkgPj4+IDA7CiAgICAgIGZpbmFsQmxvY2sucHV0SW50MzJMZShiaXRzID4+PiAwKTsKICAgIH0KCiAgICB2YXIgczIgPSB7CiAgICAgIGgwOiBfc3RhdGUuaDAsCiAgICAgIGgxOiBfc3RhdGUuaDEsCiAgICAgIGgyOiBfc3RhdGUuaDIsCiAgICAgIGgzOiBfc3RhdGUuaDMKICAgIH07CiAgICBfdXBkYXRlKHMyLCBfdywgZmluYWxCbG9jayk7CiAgICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBydmFsLnB1dEludDMyTGUoczIuaDApOwogICAgcnZhbC5wdXRJbnQzMkxlKHMyLmgxKTsKICAgIHJ2YWwucHV0SW50MzJMZShzMi5oMik7CiAgICBydmFsLnB1dEludDMyTGUoczIuaDMpOwogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgcmV0dXJuIG1kOwp9OwoKLy8gcGFkZGluZywgY29uc3RhbnQgdGFibGVzIGZvciBjYWxjdWxhdGluZyBtZDUKdmFyIF9wYWRkaW5nID0gbnVsbDsKdmFyIF9nID0gbnVsbDsKdmFyIF9yID0gbnVsbDsKdmFyIF9rID0gbnVsbDsKdmFyIF9pbml0aWFsaXplZCA9IGZhbHNlOwoKLyoqCiAqIEluaXRpYWxpemVzIHRoZSBjb25zdGFudCB0YWJsZXMuCiAqLwpmdW5jdGlvbiBfaW5pdCgpIHsKICAvLyBjcmVhdGUgcGFkZGluZwogIF9wYWRkaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgpOwogIF9wYWRkaW5nICs9IGZvcmdlLnV0aWwuZmlsbFN0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDApLCA2NCk7CgogIC8vIGcgdmFsdWVzCiAgX2cgPSBbCiAgICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogICAgMSwgNiwgMTEsIDAsIDUsIDEwLCAxNSwgNCwgOSwgMTQsIDMsIDgsIDEzLCAyLCA3LCAxMiwKICAgIDUsIDgsIDExLCAxNCwgMSwgNCwgNywgMTAsIDEzLCAwLCAzLCA2LCA5LCAxMiwgMTUsIDIsCiAgICAwLCA3LCAxNCwgNSwgMTIsIDMsIDEwLCAxLCA4LCAxNSwgNiwgMTMsIDQsIDExLCAyLCA5XTsKCiAgLy8gcm91bmRzIHRhYmxlCiAgX3IgPSBbCiAgICA3LCAxMiwgMTcsIDIyLCAgNywgMTIsIDE3LCAyMiwgIDcsIDEyLCAxNywgMjIsICA3LCAxMiwgMTcsIDIyLAogICAgNSwgIDksIDE0LCAyMCwgIDUsICA5LCAxNCwgMjAsICA1LCAgOSwgMTQsIDIwLCAgNSwgIDksIDE0LCAyMCwKICAgIDQsIDExLCAxNiwgMjMsICA0LCAxMSwgMTYsIDIzLCAgNCwgMTEsIDE2LCAyMywgIDQsIDExLCAxNiwgMjMsCiAgICA2LCAxMCwgMTUsIDIxLCAgNiwgMTAsIDE1LCAyMSwgIDYsIDEwLCAxNSwgMjEsICA2LCAxMCwgMTUsIDIxXTsKCiAgLy8gZ2V0IHRoZSByZXN1bHQgb2YgYWJzKHNpbihpICsgMSkpIGFzIGEgMzItYml0IGludGVnZXIKICBfayA9IG5ldyBBcnJheSg2NCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IDY0OyArK2kpIHsKICAgIF9rW2ldID0gTWF0aC5mbG9vcihNYXRoLmFicyhNYXRoLnNpbihpICsgMSkpICogMHgxMDAwMDAwMDApOwogIH0KCiAgLy8gbm93IGluaXRpYWxpemVkCiAgX2luaXRpYWxpemVkID0gdHJ1ZTsKfQoKLyoqCiAqIFVwZGF0ZXMgYW4gTUQ1IHN0YXRlIHdpdGggdGhlIGdpdmVuIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gcyB0aGUgTUQ1IHN0YXRlIHRvIHVwZGF0ZS4KICogQHBhcmFtIHcgdGhlIGFycmF5IHRvIHVzZSB0byBzdG9yZSB3b3Jkcy4KICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlIGJ1ZmZlciB0byB1cGRhdGUgd2l0aC4KICovCmZ1bmN0aW9uIF91cGRhdGUocywgdywgYnl0ZXMpIHsKICAvLyBjb25zdW1lIDUxMiBiaXQgKDY0IGJ5dGUpIGNodW5rcwogIHZhciB0LCBhLCBiLCBjLCBkLCBmLCByLCBpOwogIHZhciBsZW4gPSBieXRlcy5sZW5ndGgoKTsKICB3aGlsZShsZW4gPj0gNjQpIHsKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYSA9IHMuaDA7CiAgICBiID0gcy5oMTsKICAgIGMgPSBzLmgyOwogICAgZCA9IHMuaDM7CgogICAgLy8gcm91bmQgMQogICAgZm9yKGkgPSAwOyBpIDwgMTY7ICsraSkgewogICAgICB3W2ldID0gYnl0ZXMuZ2V0SW50MzJMZSgpOwogICAgICBmID0gZCBeIChiICYgKGMgXiBkKSk7CiAgICAgIHQgPSAoYSArIGYgKyBfa1tpXSArIHdbaV0pOwogICAgICByID0gX3JbaV07CiAgICAgIGEgPSBkOwogICAgICBkID0gYzsKICAgICAgYyA9IGI7CiAgICAgIGIgKz0gKHQgPDwgcikgfCAodCA+Pj4gKDMyIC0gcikpOwogICAgfQogICAgLy8gcm91bmQgMgogICAgZm9yKDsgaSA8IDMyOyArK2kpIHsKICAgICAgZiA9IGMgXiAoZCAmIChiIF4gYykpOwogICAgICB0ID0gKGEgKyBmICsgX2tbaV0gKyB3W19nW2ldXSk7CiAgICAgIHIgPSBfcltpXTsKICAgICAgYSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiArPSAodCA8PCByKSB8ICh0ID4+PiAoMzIgLSByKSk7CiAgICB9CiAgICAvLyByb3VuZCAzCiAgICBmb3IoOyBpIDwgNDg7ICsraSkgewogICAgICBmID0gYiBeIGMgXiBkOwogICAgICB0ID0gKGEgKyBmICsgX2tbaV0gKyB3W19nW2ldXSk7CiAgICAgIHIgPSBfcltpXTsKICAgICAgYSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiArPSAodCA8PCByKSB8ICh0ID4+PiAoMzIgLSByKSk7CiAgICB9CiAgICAvLyByb3VuZCA0CiAgICBmb3IoOyBpIDwgNjQ7ICsraSkgewogICAgICBmID0gYyBeIChiIHwgfmQpOwogICAgICB0ID0gKGEgKyBmICsgX2tbaV0gKyB3W19nW2ldXSk7CiAgICAgIHIgPSBfcltpXTsKICAgICAgYSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiArPSAodCA8PCByKSB8ICh0ID4+PiAoMzIgLSByKSk7CiAgICB9CgogICAgLy8gdXBkYXRlIGhhc2ggc3RhdGUKICAgIHMuaDAgPSAocy5oMCArIGEpIHwgMDsKICAgIHMuaDEgPSAocy5oMSArIGIpIHwgMDsKICAgIHMuaDIgPSAocy5oMiArIGMpIHwgMDsKICAgIHMuaDMgPSAocy5oMyArIGQpIHwgMDsKCiAgICBsZW4gLT0gNjQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdtZDUnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvbWQ1JyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBTZWN1cmUgSGFzaCBBbGdvcml0aG0gd2l0aCAxNjAtYml0IGRpZ2VzdCAoU0hBLTEpIGltcGxlbWVudGF0aW9uLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCnZhciBzaGExID0gZm9yZ2Uuc2hhMSA9IGZvcmdlLnNoYTEgfHwge307CmZvcmdlLm1kID0gZm9yZ2UubWQgfHwge307CmZvcmdlLm1kLmFsZ29yaXRobXMgPSBmb3JnZS5tZC5hbGdvcml0aG1zIHx8IHt9Owpmb3JnZS5tZC5zaGExID0gZm9yZ2UubWQuYWxnb3JpdGhtcy5zaGExID0gc2hhMTsKCi8qKgogKiBDcmVhdGVzIGEgU0hBLTEgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKgogKiBAcmV0dXJuIGEgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKi8Kc2hhMS5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICAvLyBkbyBpbml0aWFsaXphdGlvbiBhcyBuZWNlc3NhcnkKICBpZighX2luaXRpYWxpemVkKSB7CiAgICBfaW5pdCgpOwogIH0KCiAgLy8gU0hBLTEgc3RhdGUgY29udGFpbnMgZml2ZSAzMi1iaXQgaW50ZWdlcnMKICB2YXIgX3N0YXRlID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIHdvcmQgc3RvcmFnZQogIHZhciBfdyA9IG5ldyBBcnJheSg4MCk7CgogIC8vIG1lc3NhZ2UgZGlnZXN0IG9iamVjdAogIHZhciBtZCA9IHsKICAgIGFsZ29yaXRobTogJ3NoYTEnLAogICAgYmxvY2tMZW5ndGg6IDY0LAogICAgZGlnZXN0TGVuZ3RoOiAyMCwKICAgIC8vIDU2LWJpdCBsZW5ndGggb2YgbWVzc2FnZSBzbyBmYXIgKGRvZXMgbm90IGluY2x1ZGluZyBwYWRkaW5nKQogICAgbWVzc2FnZUxlbmd0aDogMCwKICAgIC8vIHRydWUgbWVzc2FnZSBsZW5ndGgKICAgIGZ1bGxNZXNzYWdlTGVuZ3RoOiBudWxsLAogICAgLy8gc2l6ZSBvZiBtZXNzYWdlIGxlbmd0aCBpbiBieXRlcwogICAgbWVzc2FnZUxlbmd0aFNpemU6IDgKICB9OwoKICAvKioKICAgKiBTdGFydHMgdGhlIGRpZ2VzdC4KICAgKgogICAqIEByZXR1cm4gdGhpcyBkaWdlc3Qgb2JqZWN0LgogICAqLwogIG1kLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgICAvLyB1cCB0byA1Ni1iaXQgbWVzc2FnZSBsZW5ndGggZm9yIGNvbnZlbmllbmNlCiAgICBtZC5tZXNzYWdlTGVuZ3RoID0gMDsKCiAgICAvLyBmdWxsIG1lc3NhZ2UgbGVuZ3RoIChzZXQgbWQubWVzc2FnZUxlbmd0aDY0IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSkKICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoID0gbWQubWVzc2FnZUxlbmd0aDY0ID0gW107CiAgICB2YXIgaW50MzJzID0gbWQubWVzc2FnZUxlbmd0aFNpemUgLyA0OwogICAgZm9yKHZhciBpID0gMDsgaSA8IGludDMyczsgKytpKSB7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLnB1c2goMCk7CiAgICB9CiAgICBfaW5wdXQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgX3N0YXRlID0gewogICAgICBoMDogMHg2NzQ1MjMwMSwKICAgICAgaDE6IDB4RUZDREFCODksCiAgICAgIGgyOiAweDk4QkFEQ0ZFLAogICAgICBoMzogMHgxMDMyNTQ3NiwKICAgICAgaDQ6IDB4QzNEMkUxRjAKICAgIH07CiAgICByZXR1cm4gbWQ7CiAgfTsKICAvLyBzdGFydCBkaWdlc3QgYXV0b21hdGljYWxseSBmb3IgZmlyc3QgdGltZQogIG1kLnN0YXJ0KCk7CgogIC8qKgogICAqIFVwZGF0ZXMgdGhlIGRpZ2VzdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlIGlucHV0LiBUaGUgZ2l2ZW4gaW5wdXQgY2FuCiAgICogdHJlYXRlZCBhcyByYXcgaW5wdXQgKG5vIGVuY29kaW5nIHdpbGwgYmUgYXBwbGllZCkgb3IgYW4gZW5jb2Rpbmcgb2YKICAgKiAndXRmOCcgbWF5YmUgZ2l2ZW4gdG8gZW5jb2RlIHRoZSBpbnB1dCB1c2luZyBVVEYtOC4KICAgKgogICAqIEBwYXJhbSBtc2cgdGhlIG1lc3NhZ2UgaW5wdXQgdG8gdXBkYXRlIHdpdGguCiAgICogQHBhcmFtIGVuY29kaW5nIHRoZSBlbmNvZGluZyB0byB1c2UgKGRlZmF1bHQ6ICdyYXcnLCBvdGhlcjogJ3V0ZjgnKS4KICAgKgogICAqIEByZXR1cm4gdGhpcyBkaWdlc3Qgb2JqZWN0LgogICAqLwogIG1kLnVwZGF0ZSA9IGZ1bmN0aW9uKG1zZywgZW5jb2RpbmcpIHsKICAgIGlmKGVuY29kaW5nID09PSAndXRmOCcpIHsKICAgICAgbXNnID0gZm9yZ2UudXRpbC5lbmNvZGVVdGY4KG1zZyk7CiAgICB9CgogICAgLy8gdXBkYXRlIG1lc3NhZ2UgbGVuZ3RoCiAgICB2YXIgbGVuID0gbXNnLmxlbmd0aDsKICAgIG1kLm1lc3NhZ2VMZW5ndGggKz0gbGVuOwogICAgbGVuID0gWyhsZW4gLyAweDEwMDAwMDAwMCkgPj4+IDAsIGxlbiA+Pj4gMF07CiAgICBmb3IodmFyIGkgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSArPSBsZW5bMV07CiAgICAgIGxlblsxXSA9IGxlblswXSArICgobWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gLyAweDEwMDAwMDAwMCkgPj4+IDApOwogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldID4+PiAwOwogICAgICBsZW5bMF0gPSAoKGxlblsxXSAvIDB4MTAwMDAwMDAwKSA+Pj4gMCk7CiAgICB9CgogICAgLy8gYWRkIGJ5dGVzIHRvIGlucHV0IGJ1ZmZlcgogICAgX2lucHV0LnB1dEJ5dGVzKG1zZyk7CgogICAgLy8gcHJvY2VzcyBieXRlcwogICAgX3VwZGF0ZShfc3RhdGUsIF93LCBfaW5wdXQpOwoKICAgIC8vIGNvbXBhY3QgaW5wdXQgYnVmZmVyIGV2ZXJ5IDJLIG9yIGlmIGVtcHR5CiAgICBpZihfaW5wdXQucmVhZCA+IDIwNDggfHwgX2lucHV0Lmxlbmd0aCgpID09PSAwKSB7CiAgICAgIF9pbnB1dC5jb21wYWN0KCk7CiAgICB9CgogICAgcmV0dXJuIG1kOwogIH07CgogICAvKioKICAgICogUHJvZHVjZXMgdGhlIGRpZ2VzdC4KICAgICoKICAgICogQHJldHVybiBhIGJ5dGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRpZ2VzdCB2YWx1ZS4KICAgICovCiAgIG1kLmRpZ2VzdCA9IGZ1bmN0aW9uKCkgewogICAgLyogTm90ZTogSGVyZSB3ZSBjb3B5IHRoZSByZW1haW5pbmcgYnl0ZXMgaW4gdGhlIGlucHV0IGJ1ZmZlciBhbmQKICAgIGFkZCB0aGUgYXBwcm9wcmlhdGUgU0hBLTEgcGFkZGluZy4gVGhlbiB3ZSBkbyB0aGUgZmluYWwgdXBkYXRlCiAgICBvbiBhIGNvcHkgb2YgdGhlIHN0YXRlIHNvIHRoYXQgaWYgdGhlIHVzZXIgd2FudHMgdG8gZ2V0CiAgICBpbnRlcm1lZGlhdGUgZGlnZXN0cyB0aGV5IGNhbiBkbyBzby4gKi8KCiAgICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKICAgIHRvIGVuc3VyZSBpdHMgbGVuZ3RoIGlzIGNvbmdydWVudCB0byA0NDggbW9kIDUxMi4gSW4gb3RoZXIgd29yZHMsCiAgICB0aGUgZGF0YSB0byBiZSBkaWdlc3RlZCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNTEyIGJpdHMgKG9yIDEyOCBieXRlcykuCiAgICBUaGlzIGRhdGEgaW5jbHVkZXMgdGhlIG1lc3NhZ2UsIHNvbWUgcGFkZGluZywgYW5kIHRoZSBsZW5ndGggb2YgdGhlCiAgICBtZXNzYWdlLiBTaW5jZSB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIHdpbGwgYmUgZW5jb2RlZCBhcyA4IGJ5dGVzICg2NAogICAgYml0cyksIHRoYXQgbWVhbnMgdGhhdCB0aGUgbGFzdCBzZWdtZW50IG9mIHRoZSBkYXRhIG11c3QgaGF2ZSA1NiBieXRlcwogICAgKDQ0OCBiaXRzKSBvZiBtZXNzYWdlIGFuZCBwYWRkaW5nLiBUaGVyZWZvcmUsIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UKICAgIHBsdXMgdGhlIHBhZGRpbmcgbXVzdCBiZSBjb25ncnVlbnQgdG8gNDQ4IG1vZCA1MTIgYmVjYXVzZQogICAgNTEyIC0gMTI4ID0gNDQ4LgoKICAgIEluIG9yZGVyIHRvIGZpbGwgdXAgdGhlIG1lc3NhZ2UgbGVuZ3RoIGl0IG11c3QgYmUgZmlsbGVkIHdpdGgKICAgIHBhZGRpbmcgdGhhdCBiZWdpbnMgd2l0aCAxIGJpdCBmb2xsb3dlZCBieSBhbGwgMCBiaXRzLiBQYWRkaW5nCiAgICBtdXN0ICphbHdheXMqIGJlIHByZXNlbnQsIHNvIGlmIHRoZSBtZXNzYWdlIGxlbmd0aCBpcyBhbHJlYWR5CiAgICBjb25ncnVlbnQgdG8gNDQ4IG1vZCA1MTIsIHRoZW4gNTEyIHBhZGRpbmcgYml0cyBtdXN0IGJlIGFkZGVkLiAqLwoKICAgIHZhciBmaW5hbEJsb2NrID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZpbmFsQmxvY2sucHV0Qnl0ZXMoX2lucHV0LmJ5dGVzKCkpOwoKICAgIC8vIGNvbXB1dGUgcmVtYWluaW5nIHNpemUgdG8gYmUgZGlnZXN0ZWQgKGluY2x1ZGUgbWVzc2FnZSBsZW5ndGggc2l6ZSkKICAgIHZhciByZW1haW5pbmcgPSAoCiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW21kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDFdICsKICAgICAgbWQubWVzc2FnZUxlbmd0aFNpemUpOwoKICAgIC8vIGFkZCBwYWRkaW5nIGZvciBvdmVyZmxvdyBibG9ja1NpemUgLSBvdmVyZmxvdwogICAgLy8gX3BhZGRpbmcgc3RhcnRzIHdpdGggMSBieXRlIHdpdGggZmlyc3QgYml0IGlzIHNldCAoYnl0ZSB2YWx1ZSAxMjgpLCB0aGVuCiAgICAvLyB0aGVyZSBtYXkgYmUgdXAgdG8gKGJsb2NrU2l6ZSAtIDEpIG90aGVyIHBhZCBieXRlcwogICAgdmFyIG92ZXJmbG93ID0gcmVtYWluaW5nICYgKG1kLmJsb2NrTGVuZ3RoIC0gMSk7CiAgICBmaW5hbEJsb2NrLnB1dEJ5dGVzKF9wYWRkaW5nLnN1YnN0cigwLCBtZC5ibG9ja0xlbmd0aCAtIG92ZXJmbG93KSk7CgogICAgLy8gc2VyaWFsaXplIG1lc3NhZ2UgbGVuZ3RoIGluIGJpdHMgaW4gYmlnLWVuZGlhbiBvcmRlcjsgc2luY2UgbGVuZ3RoCiAgICAvLyBpcyBzdG9yZWQgaW4gYnl0ZXMgd2UgbXVsdGlwbHkgYnkgOCBhbmQgYWRkIGNhcnJ5IGZyb20gbmV4dCBpbnQKICAgIHZhciBtZXNzYWdlTGVuZ3RoID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHZhciBuZXh0LCBjYXJyeTsKICAgIHZhciBiaXRzID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbMF0gKiA4OwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aDsgKytpKSB7CiAgICAgIG5leHQgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpICsgMV0gKiA4OwogICAgICBjYXJyeSA9IChuZXh0IC8gMHgxMDAwMDAwMDApID4+PiAwOwogICAgICBiaXRzICs9IGNhcnJ5OwogICAgICBmaW5hbEJsb2NrLnB1dEludDMyKGJpdHMgPj4+IDApOwogICAgICBiaXRzID0gbmV4dDsKICAgIH0KCiAgICB2YXIgczIgPSB7CiAgICAgIGgwOiBfc3RhdGUuaDAsCiAgICAgIGgxOiBfc3RhdGUuaDEsCiAgICAgIGgyOiBfc3RhdGUuaDIsCiAgICAgIGgzOiBfc3RhdGUuaDMsCiAgICAgIGg0OiBfc3RhdGUuaDQKICAgIH07CiAgICBfdXBkYXRlKHMyLCBfdywgZmluYWxCbG9jayk7CiAgICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBydmFsLnB1dEludDMyKHMyLmgwKTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDEpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oMik7CiAgICBydmFsLnB1dEludDMyKHMyLmgzKTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDQpOwogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgcmV0dXJuIG1kOwp9OwoKLy8gc2hhLTEgcGFkZGluZyBieXRlcyBub3QgaW5pdGlhbGl6ZWQgeWV0CnZhciBfcGFkZGluZyA9IG51bGw7CnZhciBfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKCi8qKgogKiBJbml0aWFsaXplcyB0aGUgY29uc3RhbnQgdGFibGVzLgogKi8KZnVuY3Rpb24gX2luaXQoKSB7CiAgLy8gY3JlYXRlIHBhZGRpbmcKICBfcGFkZGluZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4KTsKICBfcGFkZGluZyArPSBmb3JnZS51dGlsLmZpbGxTdHJpbmcoU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwKSwgNjQpOwoKICAvLyBub3cgaW5pdGlhbGl6ZWQKICBfaW5pdGlhbGl6ZWQgPSB0cnVlOwp9CgovKioKICogVXBkYXRlcyBhIFNIQS0xIHN0YXRlIHdpdGggdGhlIGdpdmVuIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gcyB0aGUgU0hBLTEgc3RhdGUgdG8gdXBkYXRlLgogKiBAcGFyYW0gdyB0aGUgYXJyYXkgdG8gdXNlIHRvIHN0b3JlIHdvcmRzLgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGUgYnVmZmVyIHRvIHVwZGF0ZSB3aXRoLgogKi8KZnVuY3Rpb24gX3VwZGF0ZShzLCB3LCBieXRlcykgewogIC8vIGNvbnN1bWUgNTEyIGJpdCAoNjQgYnl0ZSkgY2h1bmtzCiAgdmFyIHQsIGEsIGIsIGMsIGQsIGUsIGYsIGk7CiAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aCgpOwogIHdoaWxlKGxlbiA+PSA2NCkgewogICAgLy8gdGhlIHcgYXJyYXkgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBzaXh0ZWVuIDMyLWJpdCBiaWctZW5kaWFuIHdvcmRzCiAgICAvLyBhbmQgdGhlbiBleHRlbmRlZCBpbnRvIDgwIDMyLWJpdCB3b3JkcyBhY2NvcmRpbmcgdG8gU0hBLTEgYWxnb3JpdGhtCiAgICAvLyBhbmQgZm9yIDMyLTc5IHVzaW5nIE1heCBMb2NrdHl1a2hpbidzIG9wdGltaXphdGlvbgoKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYSA9IHMuaDA7CiAgICBiID0gcy5oMTsKICAgIGMgPSBzLmgyOwogICAgZCA9IHMuaDM7CiAgICBlID0gcy5oNDsKCiAgICAvLyByb3VuZCAxCiAgICBmb3IoaSA9IDA7IGkgPCAxNjsgKytpKSB7CiAgICAgIHQgPSBieXRlcy5nZXRJbnQzMigpOwogICAgICB3W2ldID0gdDsKICAgICAgZiA9IGQgXiAoYiAmIChjIF4gZCkpOwogICAgICB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBmICsgZSArIDB4NUE4Mjc5OTkgKyB0OwogICAgICBlID0gZDsKICAgICAgZCA9IGM7CiAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7CiAgICAgIGIgPSBhOwogICAgICBhID0gdDsKICAgIH0KICAgIGZvcig7IGkgPCAyMDsgKytpKSB7CiAgICAgIHQgPSAod1tpIC0gM10gXiB3W2kgLSA4XSBeIHdbaSAtIDE0XSBeIHdbaSAtIDE2XSk7CiAgICAgIHQgPSAodCA8PCAxKSB8ICh0ID4+PiAzMSk7CiAgICAgIHdbaV0gPSB0OwogICAgICBmID0gZCBeIChiICYgKGMgXiBkKSk7CiAgICAgIHQgPSAoKGEgPDwgNSkgfCAoYSA+Pj4gMjcpKSArIGYgKyBlICsgMHg1QTgyNzk5OSArIHQ7CiAgICAgIGUgPSBkOwogICAgICBkID0gYzsKICAgICAgYyA9IChiIDw8IDMwKSB8IChiID4+PiAyKTsKICAgICAgYiA9IGE7CiAgICAgIGEgPSB0OwogICAgfQogICAgLy8gcm91bmQgMgogICAgZm9yKDsgaSA8IDMyOyArK2kpIHsKICAgICAgdCA9ICh3W2kgLSAzXSBeIHdbaSAtIDhdIF4gd1tpIC0gMTRdIF4gd1tpIC0gMTZdKTsKICAgICAgdCA9ICh0IDw8IDEpIHwgKHQgPj4+IDMxKTsKICAgICAgd1tpXSA9IHQ7CiAgICAgIGYgPSBiIF4gYyBeIGQ7CiAgICAgIHQgPSAoKGEgPDwgNSkgfCAoYSA+Pj4gMjcpKSArIGYgKyBlICsgMHg2RUQ5RUJBMSArIHQ7CiAgICAgIGUgPSBkOwogICAgICBkID0gYzsKICAgICAgYyA9IChiIDw8IDMwKSB8IChiID4+PiAyKTsKICAgICAgYiA9IGE7CiAgICAgIGEgPSB0OwogICAgfQogICAgZm9yKDsgaSA8IDQwOyArK2kpIHsKICAgICAgdCA9ICh3W2kgLSA2XSBeIHdbaSAtIDE2XSBeIHdbaSAtIDI4XSBeIHdbaSAtIDMyXSk7CiAgICAgIHQgPSAodCA8PCAyKSB8ICh0ID4+PiAzMCk7CiAgICAgIHdbaV0gPSB0OwogICAgICBmID0gYiBeIGMgXiBkOwogICAgICB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBmICsgZSArIDB4NkVEOUVCQTEgKyB0OwogICAgICBlID0gZDsKICAgICAgZCA9IGM7CiAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7CiAgICAgIGIgPSBhOwogICAgICBhID0gdDsKICAgIH0KICAgIC8vIHJvdW5kIDMKICAgIGZvcig7IGkgPCA2MDsgKytpKSB7CiAgICAgIHQgPSAod1tpIC0gNl0gXiB3W2kgLSAxNl0gXiB3W2kgLSAyOF0gXiB3W2kgLSAzMl0pOwogICAgICB0ID0gKHQgPDwgMikgfCAodCA+Pj4gMzApOwogICAgICB3W2ldID0gdDsKICAgICAgZiA9IChiICYgYykgfCAoZCAmIChiIF4gYykpOwogICAgICB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBmICsgZSArIDB4OEYxQkJDREMgKyB0OwogICAgICBlID0gZDsKICAgICAgZCA9IGM7CiAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7CiAgICAgIGIgPSBhOwogICAgICBhID0gdDsKICAgIH0KICAgIC8vIHJvdW5kIDQKICAgIGZvcig7IGkgPCA4MDsgKytpKSB7CiAgICAgIHQgPSAod1tpIC0gNl0gXiB3W2kgLSAxNl0gXiB3W2kgLSAyOF0gXiB3W2kgLSAzMl0pOwogICAgICB0ID0gKHQgPDwgMikgfCAodCA+Pj4gMzApOwogICAgICB3W2ldID0gdDsKICAgICAgZiA9IGIgXiBjIF4gZDsKICAgICAgdCA9ICgoYSA8PCA1KSB8IChhID4+PiAyNykpICsgZiArIGUgKyAweENBNjJDMUQ2ICsgdDsKICAgICAgZSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gKGIgPDwgMzApIHwgKGIgPj4+IDIpOwogICAgICBiID0gYTsKICAgICAgYSA9IHQ7CiAgICB9CgogICAgLy8gdXBkYXRlIGhhc2ggc3RhdGUKICAgIHMuaDAgPSAocy5oMCArIGEpIHwgMDsKICAgIHMuaDEgPSAocy5oMSArIGIpIHwgMDsKICAgIHMuaDIgPSAocy5oMiArIGMpIHwgMDsKICAgIHMuaDMgPSAocy5oMyArIGQpIHwgMDsKICAgIHMuaDQgPSAocy5oNCArIGUpIHwgMDsKCiAgICBsZW4gLT0gNjQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdzaGExJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3NoYTEnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFNlY3VyZSBIYXNoIEFsZ29yaXRobSB3aXRoIDI1Ni1iaXQgZGlnZXN0IChTSEEtMjU2KSBpbXBsZW1lbnRhdGlvbi4KICoKICogU2VlIEZJUFMgMTgwLTIgZm9yIGRldGFpbHMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDE1IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHNoYTI1NiA9IGZvcmdlLnNoYTI1NiA9IGZvcmdlLnNoYTI1NiB8fCB7fTsKZm9yZ2UubWQgPSBmb3JnZS5tZCB8fCB7fTsKZm9yZ2UubWQuYWxnb3JpdGhtcyA9IGZvcmdlLm1kLmFsZ29yaXRobXMgfHwge307CmZvcmdlLm1kLnNoYTI1NiA9IGZvcmdlLm1kLmFsZ29yaXRobXMuc2hhMjU2ID0gc2hhMjU2OwoKLyoqCiAqIENyZWF0ZXMgYSBTSEEtMjU2IG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICoKICogQHJldHVybiBhIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICovCnNoYTI1Ni5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICAvLyBkbyBpbml0aWFsaXphdGlvbiBhcyBuZWNlc3NhcnkKICBpZighX2luaXRpYWxpemVkKSB7CiAgICBfaW5pdCgpOwogIH0KCiAgLy8gU0hBLTI1NiBzdGF0ZSBjb250YWlucyBlaWdodCAzMi1iaXQgaW50ZWdlcnMKICB2YXIgX3N0YXRlID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIHdvcmQgc3RvcmFnZQogIHZhciBfdyA9IG5ldyBBcnJheSg2NCk7CgogIC8vIG1lc3NhZ2UgZGlnZXN0IG9iamVjdAogIHZhciBtZCA9IHsKICAgIGFsZ29yaXRobTogJ3NoYTI1NicsCiAgICBibG9ja0xlbmd0aDogNjQsCiAgICBkaWdlc3RMZW5ndGg6IDMyLAogICAgLy8gNTYtYml0IGxlbmd0aCBvZiBtZXNzYWdlIHNvIGZhciAoZG9lcyBub3QgaW5jbHVkaW5nIHBhZGRpbmcpCiAgICBtZXNzYWdlTGVuZ3RoOiAwLAogICAgLy8gdHJ1ZSBtZXNzYWdlIGxlbmd0aAogICAgZnVsbE1lc3NhZ2VMZW5ndGg6IG51bGwsCiAgICAvLyBzaXplIG9mIG1lc3NhZ2UgbGVuZ3RoIGluIGJ5dGVzCiAgICBtZXNzYWdlTGVuZ3RoU2l6ZTogOAogIH07CgogIC8qKgogICAqIFN0YXJ0cyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQuc3RhcnQgPSBmdW5jdGlvbigpIHsKICAgIC8vIHVwIHRvIDU2LWJpdCBtZXNzYWdlIGxlbmd0aCBmb3IgY29udmVuaWVuY2UKICAgIG1kLm1lc3NhZ2VMZW5ndGggPSAwOwoKICAgIC8vIGZ1bGwgbWVzc2FnZSBsZW5ndGggKHNldCBtZC5tZXNzYWdlTGVuZ3RoNjQgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5KQogICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGggPSBtZC5tZXNzYWdlTGVuZ3RoNjQgPSBbXTsKICAgIHZhciBpbnQzMnMgPSBtZC5tZXNzYWdlTGVuZ3RoU2l6ZSAvIDQ7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgaW50MzJzOyArK2kpIHsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGgucHVzaCgwKTsKICAgIH0KICAgIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBfc3RhdGUgPSB7CiAgICAgIGgwOiAweDZBMDlFNjY3LAogICAgICBoMTogMHhCQjY3QUU4NSwKICAgICAgaDI6IDB4M0M2RUYzNzIsCiAgICAgIGgzOiAweEE1NEZGNTNBLAogICAgICBoNDogMHg1MTBFNTI3RiwKICAgICAgaDU6IDB4OUIwNTY4OEMsCiAgICAgIGg2OiAweDFGODNEOUFCLAogICAgICBoNzogMHg1QkUwQ0QxOQogICAgfTsKICAgIHJldHVybiBtZDsKICB9OwogIC8vIHN0YXJ0IGRpZ2VzdCBhdXRvbWF0aWNhbGx5IGZvciBmaXJzdCB0aW1lCiAgbWQuc3RhcnQoKTsKCiAgLyoqCiAgICogVXBkYXRlcyB0aGUgZGlnZXN0IHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UgaW5wdXQuIFRoZSBnaXZlbiBpbnB1dCBjYW4KICAgKiB0cmVhdGVkIGFzIHJhdyBpbnB1dCAobm8gZW5jb2Rpbmcgd2lsbCBiZSBhcHBsaWVkKSBvciBhbiBlbmNvZGluZyBvZgogICAqICd1dGY4JyBtYXliZSBnaXZlbiB0byBlbmNvZGUgdGhlIGlucHV0IHVzaW5nIFVURi04LgogICAqCiAgICogQHBhcmFtIG1zZyB0aGUgbWVzc2FnZSBpbnB1dCB0byB1cGRhdGUgd2l0aC4KICAgKiBAcGFyYW0gZW5jb2RpbmcgdGhlIGVuY29kaW5nIHRvIHVzZSAoZGVmYXVsdDogJ3JhdycsIG90aGVyOiAndXRmOCcpLgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQudXBkYXRlID0gZnVuY3Rpb24obXNnLCBlbmNvZGluZykgewogICAgaWYoZW5jb2RpbmcgPT09ICd1dGY4JykgewogICAgICBtc2cgPSBmb3JnZS51dGlsLmVuY29kZVV0ZjgobXNnKTsKICAgIH0KCiAgICAvLyB1cGRhdGUgbWVzc2FnZSBsZW5ndGgKICAgIHZhciBsZW4gPSBtc2cubGVuZ3RoOwogICAgbWQubWVzc2FnZUxlbmd0aCArPSBsZW47CiAgICBsZW4gPSBbKGxlbiAvIDB4MTAwMDAwMDAwKSA+Pj4gMCwgbGVuID4+PiAwXTsKICAgIGZvcih2YXIgaSA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldICs9IGxlblsxXTsKICAgICAgbGVuWzFdID0gbGVuWzBdICsgKChtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSAvIDB4MTAwMDAwMDAwKSA+Pj4gMCk7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gPj4+IDA7CiAgICAgIGxlblswXSA9ICgobGVuWzFdIC8gMHgxMDAwMDAwMDApID4+PiAwKTsKICAgIH0KCiAgICAvLyBhZGQgYnl0ZXMgdG8gaW5wdXQgYnVmZmVyCiAgICBfaW5wdXQucHV0Qnl0ZXMobXNnKTsKCiAgICAvLyBwcm9jZXNzIGJ5dGVzCiAgICBfdXBkYXRlKF9zdGF0ZSwgX3csIF9pbnB1dCk7CgogICAgLy8gY29tcGFjdCBpbnB1dCBidWZmZXIgZXZlcnkgMksgb3IgaWYgZW1wdHkKICAgIGlmKF9pbnB1dC5yZWFkID4gMjA0OCB8fCBfaW5wdXQubGVuZ3RoKCkgPT09IDApIHsKICAgICAgX2lucHV0LmNvbXBhY3QoKTsKICAgIH0KCiAgICByZXR1cm4gbWQ7CiAgfTsKCiAgLyoqCiAgICogUHJvZHVjZXMgdGhlIGRpZ2VzdC4KICAgKgogICAqIEByZXR1cm4gYSBieXRlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkaWdlc3QgdmFsdWUuCiAgICovCiAgbWQuZGlnZXN0ID0gZnVuY3Rpb24oKSB7CiAgICAvKiBOb3RlOiBIZXJlIHdlIGNvcHkgdGhlIHJlbWFpbmluZyBieXRlcyBpbiB0aGUgaW5wdXQgYnVmZmVyIGFuZAogICAgYWRkIHRoZSBhcHByb3ByaWF0ZSBTSEEtMjU2IHBhZGRpbmcuIFRoZW4gd2UgZG8gdGhlIGZpbmFsIHVwZGF0ZQogICAgb24gYSBjb3B5IG9mIHRoZSBzdGF0ZSBzbyB0aGF0IGlmIHRoZSB1c2VyIHdhbnRzIHRvIGdldAogICAgaW50ZXJtZWRpYXRlIGRpZ2VzdHMgdGhleSBjYW4gZG8gc28uICovCgogICAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlCiAgICB0byBlbnN1cmUgaXRzIGxlbmd0aCBpcyBjb25ncnVlbnQgdG8gNDQ4IG1vZCA1MTIuIEluIG90aGVyIHdvcmRzLAogICAgdGhlIGRhdGEgdG8gYmUgZGlnZXN0ZWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDUxMiBiaXRzIChvciAxMjggYnl0ZXMpLgogICAgVGhpcyBkYXRhIGluY2x1ZGVzIHRoZSBtZXNzYWdlLCBzb21lIHBhZGRpbmcsIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQogICAgbWVzc2FnZS4gU2luY2UgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSB3aWxsIGJlIGVuY29kZWQgYXMgOCBieXRlcyAoNjQKICAgIGJpdHMpLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGxhc3Qgc2VnbWVudCBvZiB0aGUgZGF0YSBtdXN0IGhhdmUgNTYgYnl0ZXMKICAgICg0NDggYml0cykgb2YgbWVzc2FnZSBhbmQgcGFkZGluZy4gVGhlcmVmb3JlLCB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlCiAgICBwbHVzIHRoZSBwYWRkaW5nIG11c3QgYmUgY29uZ3J1ZW50IHRvIDQ0OCBtb2QgNTEyIGJlY2F1c2UKICAgIDUxMiAtIDEyOCA9IDQ0OC4KCiAgICBJbiBvcmRlciB0byBmaWxsIHVwIHRoZSBtZXNzYWdlIGxlbmd0aCBpdCBtdXN0IGJlIGZpbGxlZCB3aXRoCiAgICBwYWRkaW5nIHRoYXQgYmVnaW5zIHdpdGggMSBiaXQgZm9sbG93ZWQgYnkgYWxsIDAgYml0cy4gUGFkZGluZwogICAgbXVzdCAqYWx3YXlzKiBiZSBwcmVzZW50LCBzbyBpZiB0aGUgbWVzc2FnZSBsZW5ndGggaXMgYWxyZWFkeQogICAgY29uZ3J1ZW50IHRvIDQ0OCBtb2QgNTEyLCB0aGVuIDUxMiBwYWRkaW5nIGJpdHMgbXVzdCBiZSBhZGRlZC4gKi8KCiAgICB2YXIgZmluYWxCbG9jayA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBmaW5hbEJsb2NrLnB1dEJ5dGVzKF9pbnB1dC5ieXRlcygpKTsKCiAgICAvLyBjb21wdXRlIHJlbWFpbmluZyBzaXplIHRvIGJlIGRpZ2VzdGVkIChpbmNsdWRlIG1lc3NhZ2UgbGVuZ3RoIHNpemUpCiAgICB2YXIgcmVtYWluaW5nID0gKAogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aFttZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGggLSAxXSArCiAgICAgIG1kLm1lc3NhZ2VMZW5ndGhTaXplKTsKCiAgICAvLyBhZGQgcGFkZGluZyBmb3Igb3ZlcmZsb3cgYmxvY2tTaXplIC0gb3ZlcmZsb3cKICAgIC8vIF9wYWRkaW5nIHN0YXJ0cyB3aXRoIDEgYnl0ZSB3aXRoIGZpcnN0IGJpdCBpcyBzZXQgKGJ5dGUgdmFsdWUgMTI4KSwgdGhlbgogICAgLy8gdGhlcmUgbWF5IGJlIHVwIHRvIChibG9ja1NpemUgLSAxKSBvdGhlciBwYWQgYnl0ZXMKICAgIHZhciBvdmVyZmxvdyA9IHJlbWFpbmluZyAmIChtZC5ibG9ja0xlbmd0aCAtIDEpOwogICAgZmluYWxCbG9jay5wdXRCeXRlcyhfcGFkZGluZy5zdWJzdHIoMCwgbWQuYmxvY2tMZW5ndGggLSBvdmVyZmxvdykpOwoKICAgIC8vIHNlcmlhbGl6ZSBtZXNzYWdlIGxlbmd0aCBpbiBiaXRzIGluIGJpZy1lbmRpYW4gb3JkZXI7IHNpbmNlIGxlbmd0aAogICAgLy8gaXMgc3RvcmVkIGluIGJ5dGVzIHdlIG11bHRpcGx5IGJ5IDggYW5kIGFkZCBjYXJyeSBmcm9tIG5leHQgaW50CiAgICB2YXIgbWVzc2FnZUxlbmd0aCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICB2YXIgbmV4dCwgY2Fycnk7CiAgICB2YXIgYml0cyA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoWzBdICogODsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGg7ICsraSkgewogICAgICBuZXh0ID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaSArIDFdICogODsKICAgICAgY2FycnkgPSAobmV4dCAvIDB4MTAwMDAwMDAwKSA+Pj4gMDsKICAgICAgYml0cyArPSBjYXJyeTsKICAgICAgZmluYWxCbG9jay5wdXRJbnQzMihiaXRzID4+PiAwKTsKICAgICAgYml0cyA9IG5leHQ7CiAgICB9CgogICAgdmFyIHMyID0gewogICAgICBoMDogX3N0YXRlLmgwLAogICAgICBoMTogX3N0YXRlLmgxLAogICAgICBoMjogX3N0YXRlLmgyLAogICAgICBoMzogX3N0YXRlLmgzLAogICAgICBoNDogX3N0YXRlLmg0LAogICAgICBoNTogX3N0YXRlLmg1LAogICAgICBoNjogX3N0YXRlLmg2LAogICAgICBoNzogX3N0YXRlLmg3CiAgICB9OwogICAgX3VwZGF0ZShzMiwgX3csIGZpbmFsQmxvY2spOwogICAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oMCk7CiAgICBydmFsLnB1dEludDMyKHMyLmgxKTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDIpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oMyk7CiAgICBydmFsLnB1dEludDMyKHMyLmg0KTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDUpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oNik7CiAgICBydmFsLnB1dEludDMyKHMyLmg3KTsKICAgIHJldHVybiBydmFsOwogIH07CgogIHJldHVybiBtZDsKfTsKCi8vIHNoYS0yNTYgcGFkZGluZyBieXRlcyBub3QgaW5pdGlhbGl6ZWQgeWV0CnZhciBfcGFkZGluZyA9IG51bGw7CnZhciBfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKCi8vIHRhYmxlIG9mIGNvbnN0YW50cwp2YXIgX2sgPSBudWxsOwoKLyoqCiAqIEluaXRpYWxpemVzIHRoZSBjb25zdGFudCB0YWJsZXMuCiAqLwpmdW5jdGlvbiBfaW5pdCgpIHsKICAvLyBjcmVhdGUgcGFkZGluZwogIF9wYWRkaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgpOwogIF9wYWRkaW5nICs9IGZvcmdlLnV0aWwuZmlsbFN0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDApLCA2NCk7CgogIC8vIGNyZWF0ZSBLIHRhYmxlIGZvciBTSEEtMjU2CiAgX2sgPSBbCiAgICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LAogICAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSwKICAgIDB4ZDgwN2FhOTgsIDB4MTI4MzViMDEsIDB4MjQzMTg1YmUsIDB4NTUwYzdkYzMsCiAgICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LAogICAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYywKICAgIDB4MmRlOTJjNmYsIDB4NGE3NDg0YWEsIDB4NWNiMGE5ZGMsIDB4NzZmOTg4ZGEsCiAgICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LAogICAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NywKICAgIDB4MjdiNzBhODUsIDB4MmUxYjIxMzgsIDB4NGQyYzZkZmMsIDB4NTMzODBkMTMsCiAgICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LAogICAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMywKICAgIDB4ZDE5MmU4MTksIDB4ZDY5OTA2MjQsIDB4ZjQwZTM1ODUsIDB4MTA2YWEwNzAsCiAgICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LAogICAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMywKICAgIDB4NzQ4ZjgyZWUsIDB4NzhhNTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgsCiAgICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXTsKCiAgLy8gbm93IGluaXRpYWxpemVkCiAgX2luaXRpYWxpemVkID0gdHJ1ZTsKfQoKLyoqCiAqIFVwZGF0ZXMgYSBTSEEtMjU2IHN0YXRlIHdpdGggdGhlIGdpdmVuIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gcyB0aGUgU0hBLTI1NiBzdGF0ZSB0byB1cGRhdGUuCiAqIEBwYXJhbSB3IHRoZSBhcnJheSB0byB1c2UgdG8gc3RvcmUgd29yZHMuCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZSBidWZmZXIgdG8gdXBkYXRlIHdpdGguCiAqLwpmdW5jdGlvbiBfdXBkYXRlKHMsIHcsIGJ5dGVzKSB7CiAgLy8gY29uc3VtZSA1MTIgYml0ICg2NCBieXRlKSBjaHVua3MKICB2YXIgdDEsIHQyLCBzMCwgczEsIGNoLCBtYWosIGksIGEsIGIsIGMsIGQsIGUsIGYsIGcsIGg7CiAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aCgpOwogIHdoaWxlKGxlbiA+PSA2NCkgewogICAgLy8gdGhlIHcgYXJyYXkgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBzaXh0ZWVuIDMyLWJpdCBiaWctZW5kaWFuIHdvcmRzCiAgICAvLyBhbmQgdGhlbiBleHRlbmRlZCBpbnRvIDY0IDMyLWJpdCB3b3JkcyBhY2NvcmRpbmcgdG8gU0hBLTI1NgogICAgZm9yKGkgPSAwOyBpIDwgMTY7ICsraSkgewogICAgICB3W2ldID0gYnl0ZXMuZ2V0SW50MzIoKTsKICAgIH0KICAgIGZvcig7IGkgPCA2NDsgKytpKSB7CiAgICAgIC8vIFhPUiB3b3JkIDIgd29yZHMgYWdvIHJvdCByaWdodCAxNywgcm90IHJpZ2h0IDE5LCBzaGZ0IHJpZ2h0IDEwCiAgICAgIHQxID0gd1tpIC0gMl07CiAgICAgIHQxID0KICAgICAgICAoKHQxID4+PiAxNykgfCAodDEgPDwgMTUpKSBeCiAgICAgICAgKCh0MSA+Pj4gMTkpIHwgKHQxIDw8IDEzKSkgXgogICAgICAgICh0MSA+Pj4gMTApOwogICAgICAvLyBYT1Igd29yZCAxNSB3b3JkcyBhZ28gcm90IHJpZ2h0IDcsIHJvdCByaWdodCAxOCwgc2hmdCByaWdodCAzCiAgICAgIHQyID0gd1tpIC0gMTVdOwogICAgICB0MiA9CiAgICAgICAgKCh0MiA+Pj4gNykgfCAodDIgPDwgMjUpKSBeCiAgICAgICAgKCh0MiA+Pj4gMTgpIHwgKHQyIDw8IDE0KSkgXgogICAgICAgICh0MiA+Pj4gMyk7CiAgICAgIC8vIHN1bSh0MSwgd29yZCA3IGFnbywgdDIsIHdvcmQgMTYgYWdvKSBtb2R1bG8gMl4zMgogICAgICB3W2ldID0gKHQxICsgd1tpIC0gN10gKyB0MiArIHdbaSAtIDE2XSkgfCAwOwogICAgfQoKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYSA9IHMuaDA7CiAgICBiID0gcy5oMTsKICAgIGMgPSBzLmgyOwogICAgZCA9IHMuaDM7CiAgICBlID0gcy5oNDsKICAgIGYgPSBzLmg1OwogICAgZyA9IHMuaDY7CiAgICBoID0gcy5oNzsKCiAgICAvLyByb3VuZCBmdW5jdGlvbgogICAgZm9yKGkgPSAwOyBpIDwgNjQ7ICsraSkgewogICAgICAvLyBTdW0xKGUpCiAgICAgIHMxID0KICAgICAgICAoKGUgPj4+IDYpIHwgKGUgPDwgMjYpKSBeCiAgICAgICAgKChlID4+PiAxMSkgfCAoZSA8PCAyMSkpIF4KICAgICAgICAoKGUgPj4+IDI1KSB8IChlIDw8IDcpKTsKICAgICAgLy8gQ2goZSwgZiwgZykgKG9wdGltaXplZCB0aGUgc2FtZSB3YXkgYXMgU0hBLTEpCiAgICAgIGNoID0gZyBeIChlICYgKGYgXiBnKSk7CiAgICAgIC8vIFN1bTAoYSkKICAgICAgczAgPQogICAgICAgICgoYSA+Pj4gMikgfCAoYSA8PCAzMCkpIF4KICAgICAgICAoKGEgPj4+IDEzKSB8IChhIDw8IDE5KSkgXgogICAgICAgICgoYSA+Pj4gMjIpIHwgKGEgPDwgMTApKTsKICAgICAgLy8gTWFqKGEsIGIsIGMpIChvcHRpbWl6ZWQgdGhlIHNhbWUgd2F5IGFzIFNIQS0xKQogICAgICBtYWogPSAoYSAmIGIpIHwgKGMgJiAoYSBeIGIpKTsKCiAgICAgIC8vIG1haW4gYWxnb3JpdGhtCiAgICAgIHQxID0gaCArIHMxICsgY2ggKyBfa1tpXSArIHdbaV07CiAgICAgIHQyID0gczAgKyBtYWo7CiAgICAgIGggPSBnOwogICAgICBnID0gZjsKICAgICAgZiA9IGU7CiAgICAgIGUgPSAoZCArIHQxKSB8IDA7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiA9IGE7CiAgICAgIGEgPSAodDEgKyB0MikgfCAwOwogICAgfQoKICAgIC8vIHVwZGF0ZSBoYXNoIHN0YXRlCiAgICBzLmgwID0gKHMuaDAgKyBhKSB8IDA7CiAgICBzLmgxID0gKHMuaDEgKyBiKSB8IDA7CiAgICBzLmgyID0gKHMuaDIgKyBjKSB8IDA7CiAgICBzLmgzID0gKHMuaDMgKyBkKSB8IDA7CiAgICBzLmg0ID0gKHMuaDQgKyBlKSB8IDA7CiAgICBzLmg1ID0gKHMuaDUgKyBmKSB8IDA7CiAgICBzLmg2ID0gKHMuaDYgKyBnKSB8IDA7CiAgICBzLmg3ID0gKHMuaDcgKyBoKSB8IDA7CiAgICBsZW4gLT0gNjQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdzaGEyNTYnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvc2hhMjU2JyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBTZWN1cmUgSGFzaCBBbGdvcml0aG0gd2l0aCBhIDEwMjQtYml0IGJsb2NrIHNpemUgaW1wbGVtZW50YXRpb24uCiAqCiAqIFRoaXMgaW5jbHVkZXM6IFNIQS01MTIsIFNIQS0zODQsIFNIQS01MTIvMjI0LCBhbmQgU0hBLTUxMi8yNTYuIEZvcgogKiBTSEEtMjU2IChibG9jayBzaXplIDUxMiBiaXRzKSwgc2VlIHNoYTI1Ni5qcy4KICoKICogU2VlIEZJUFMgMTgwLTQgZm9yIGRldGFpbHMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHNoYTUxMiA9IGZvcmdlLnNoYTUxMiA9IGZvcmdlLnNoYTUxMiB8fCB7fTsKZm9yZ2UubWQgPSBmb3JnZS5tZCB8fCB7fTsKZm9yZ2UubWQuYWxnb3JpdGhtcyA9IGZvcmdlLm1kLmFsZ29yaXRobXMgfHwge307CgovLyBTSEEtNTEyCmZvcmdlLm1kLnNoYTUxMiA9IGZvcmdlLm1kLmFsZ29yaXRobXMuc2hhNTEyID0gc2hhNTEyOwoKLy8gU0hBLTM4NAp2YXIgc2hhMzg0ID0gZm9yZ2Uuc2hhMzg0ID0gZm9yZ2Uuc2hhNTEyLnNoYTM4NCA9IGZvcmdlLnNoYTUxMi5zaGEzODQgfHwge307CnNoYTM4NC5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gc2hhNTEyLmNyZWF0ZSgnU0hBLTM4NCcpOwp9Owpmb3JnZS5tZC5zaGEzODQgPSBmb3JnZS5tZC5hbGdvcml0aG1zLnNoYTM4NCA9IHNoYTM4NDsKCi8vIFNIQS01MTIvMjU2CmZvcmdlLnNoYTUxMi5zaGEyNTYgPSBmb3JnZS5zaGE1MTIuc2hhMjU2IHx8IHsKICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHNoYTUxMi5jcmVhdGUoJ1NIQS01MTIvMjU2Jyk7CiAgfQp9Owpmb3JnZS5tZFsnc2hhNTEyLzI1NiddID0gZm9yZ2UubWQuYWxnb3JpdGhtc1snc2hhNTEyLzI1NiddID0KICBmb3JnZS5zaGE1MTIuc2hhMjU2OwoKLy8gU0hBLTUxMi8yMjQKZm9yZ2Uuc2hhNTEyLnNoYTIyNCA9IGZvcmdlLnNoYTUxMi5zaGEyMjQgfHwgewogIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gc2hhNTEyLmNyZWF0ZSgnU0hBLTUxMi8yMjQnKTsKICB9Cn07CmZvcmdlLm1kWydzaGE1MTIvMjI0J10gPSBmb3JnZS5tZC5hbGdvcml0aG1zWydzaGE1MTIvMjI0J10gPQogIGZvcmdlLnNoYTUxMi5zaGEyMjQ7CgovKioKICogQ3JlYXRlcyBhIFNIQS0yIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICoKICogQHBhcmFtIGFsZ29yaXRobSB0aGUgYWxnb3JpdGhtIHRvIHVzZSAoU0hBLTUxMiwgU0hBLTM4NCwgU0hBLTUxMi8yMjQsCiAqICAgICAgICAgIFNIQS01MTIvMjU2KS4KICoKICogQHJldHVybiBhIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICovCnNoYTUxMi5jcmVhdGUgPSBmdW5jdGlvbihhbGdvcml0aG0pIHsKICAvLyBkbyBpbml0aWFsaXphdGlvbiBhcyBuZWNlc3NhcnkKICBpZighX2luaXRpYWxpemVkKSB7CiAgICBfaW5pdCgpOwogIH0KCiAgaWYodHlwZW9mIGFsZ29yaXRobSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGFsZ29yaXRobSA9ICdTSEEtNTEyJzsKICB9CgogIGlmKCEoYWxnb3JpdGhtIGluIF9zdGF0ZXMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU0hBLTUxMiBhbGdvcml0aG06ICcgKyBhbGdvcml0aG0pOwogIH0KCiAgLy8gU0hBLTUxMiBzdGF0ZSBjb250YWlucyBlaWdodCA2NC1iaXQgaW50ZWdlcnMgKGVhY2ggYXMgdHdvIDMyLWJpdCBpbnRzKQogIHZhciBfc3RhdGUgPSBfc3RhdGVzW2FsZ29yaXRobV07CiAgdmFyIF9oID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIDY0LWJpdCB3b3JkIHN0b3JhZ2UKICB2YXIgX3cgPSBuZXcgQXJyYXkoODApOwogIGZvcih2YXIgd2kgPSAwOyB3aSA8IDgwOyArK3dpKSB7CiAgICBfd1t3aV0gPSBuZXcgQXJyYXkoMik7CiAgfQoKICAvLyBtZXNzYWdlIGRpZ2VzdCBvYmplY3QKICB2YXIgbWQgPSB7CiAgICAvLyBTSEEtNTEyID0+IHNoYTUxMgogICAgYWxnb3JpdGhtOiBhbGdvcml0aG0ucmVwbGFjZSgnLScsICcnKS50b0xvd2VyQ2FzZSgpLAogICAgYmxvY2tMZW5ndGg6IDEyOCwKICAgIGRpZ2VzdExlbmd0aDogNjQsCiAgICAvLyA1Ni1iaXQgbGVuZ3RoIG9mIG1lc3NhZ2Ugc28gZmFyIChkb2VzIG5vdCBpbmNsdWRpbmcgcGFkZGluZykKICAgIG1lc3NhZ2VMZW5ndGg6IDAsCiAgICAvLyB0cnVlIG1lc3NhZ2UgbGVuZ3RoCiAgICBmdWxsTWVzc2FnZUxlbmd0aDogbnVsbCwKICAgIC8vIHNpemUgb2YgbWVzc2FnZSBsZW5ndGggaW4gYnl0ZXMKICAgIG1lc3NhZ2VMZW5ndGhTaXplOiAxNgogIH07CgogIC8qKgogICAqIFN0YXJ0cyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQuc3RhcnQgPSBmdW5jdGlvbigpIHsKICAgIC8vIHVwIHRvIDU2LWJpdCBtZXNzYWdlIGxlbmd0aCBmb3IgY29udmVuaWVuY2UKICAgIG1kLm1lc3NhZ2VMZW5ndGggPSAwOwoKICAgIC8vIGZ1bGwgbWVzc2FnZSBsZW5ndGggKHNldCBtZC5tZXNzYWdlTGVuZ3RoMTI4IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSkKICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoID0gbWQubWVzc2FnZUxlbmd0aDEyOCA9IFtdOwogICAgdmFyIGludDMycyA9IG1kLm1lc3NhZ2VMZW5ndGhTaXplIC8gNDsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBpbnQzMnM7ICsraSkgewogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aC5wdXNoKDApOwogICAgfQogICAgX2lucHV0ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIF9oID0gbmV3IEFycmF5KF9zdGF0ZS5sZW5ndGgpOwogICAgZm9yKHZhciBpID0gMDsgaSA8IF9zdGF0ZS5sZW5ndGg7ICsraSkgewogICAgICBfaFtpXSA9IF9zdGF0ZVtpXS5zbGljZSgwKTsKICAgIH0KICAgIHJldHVybiBtZDsKICB9OwogIC8vIHN0YXJ0IGRpZ2VzdCBhdXRvbWF0aWNhbGx5IGZvciBmaXJzdCB0aW1lCiAgbWQuc3RhcnQoKTsKCiAgLyoqCiAgICogVXBkYXRlcyB0aGUgZGlnZXN0IHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UgaW5wdXQuIFRoZSBnaXZlbiBpbnB1dCBjYW4KICAgKiB0cmVhdGVkIGFzIHJhdyBpbnB1dCAobm8gZW5jb2Rpbmcgd2lsbCBiZSBhcHBsaWVkKSBvciBhbiBlbmNvZGluZyBvZgogICAqICd1dGY4JyBtYXliZSBnaXZlbiB0byBlbmNvZGUgdGhlIGlucHV0IHVzaW5nIFVURi04LgogICAqCiAgICogQHBhcmFtIG1zZyB0aGUgbWVzc2FnZSBpbnB1dCB0byB1cGRhdGUgd2l0aC4KICAgKiBAcGFyYW0gZW5jb2RpbmcgdGhlIGVuY29kaW5nIHRvIHVzZSAoZGVmYXVsdDogJ3JhdycsIG90aGVyOiAndXRmOCcpLgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQudXBkYXRlID0gZnVuY3Rpb24obXNnLCBlbmNvZGluZykgewogICAgaWYoZW5jb2RpbmcgPT09ICd1dGY4JykgewogICAgICBtc2cgPSBmb3JnZS51dGlsLmVuY29kZVV0ZjgobXNnKTsKICAgIH0KCiAgICAvLyB1cGRhdGUgbWVzc2FnZSBsZW5ndGgKICAgIHZhciBsZW4gPSBtc2cubGVuZ3RoOwogICAgbWQubWVzc2FnZUxlbmd0aCArPSBsZW47CiAgICBsZW4gPSBbKGxlbiAvIDB4MTAwMDAwMDAwKSA+Pj4gMCwgbGVuID4+PiAwXTsKICAgIGZvcih2YXIgaSA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldICs9IGxlblsxXTsKICAgICAgbGVuWzFdID0gbGVuWzBdICsgKChtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSAvIDB4MTAwMDAwMDAwKSA+Pj4gMCk7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gPj4+IDA7CiAgICAgIGxlblswXSA9ICgobGVuWzFdIC8gMHgxMDAwMDAwMDApID4+PiAwKTsKICAgIH0KCiAgICAvLyBhZGQgYnl0ZXMgdG8gaW5wdXQgYnVmZmVyCiAgICBfaW5wdXQucHV0Qnl0ZXMobXNnKTsKCiAgICAvLyBwcm9jZXNzIGJ5dGVzCiAgICBfdXBkYXRlKF9oLCBfdywgX2lucHV0KTsKCiAgICAvLyBjb21wYWN0IGlucHV0IGJ1ZmZlciBldmVyeSAySyBvciBpZiBlbXB0eQogICAgaWYoX2lucHV0LnJlYWQgPiAyMDQ4IHx8IF9pbnB1dC5sZW5ndGgoKSA9PT0gMCkgewogICAgICBfaW5wdXQuY29tcGFjdCgpOwogICAgfQoKICAgIHJldHVybiBtZDsKICB9OwoKICAvKioKICAgKiBQcm9kdWNlcyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiBhIGJ5dGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRpZ2VzdCB2YWx1ZS4KICAgKi8KICBtZC5kaWdlc3QgPSBmdW5jdGlvbigpIHsKICAgIC8qIE5vdGU6IEhlcmUgd2UgY29weSB0aGUgcmVtYWluaW5nIGJ5dGVzIGluIHRoZSBpbnB1dCBidWZmZXIgYW5kCiAgICBhZGQgdGhlIGFwcHJvcHJpYXRlIFNIQS01MTIgcGFkZGluZy4gVGhlbiB3ZSBkbyB0aGUgZmluYWwgdXBkYXRlCiAgICBvbiBhIGNvcHkgb2YgdGhlIHN0YXRlIHNvIHRoYXQgaWYgdGhlIHVzZXIgd2FudHMgdG8gZ2V0CiAgICBpbnRlcm1lZGlhdGUgZGlnZXN0cyB0aGV5IGNhbiBkbyBzby4gKi8KCiAgICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKICAgIHRvIGVuc3VyZSBpdHMgbGVuZ3RoIGlzIGNvbmdydWVudCB0byA4OTYgbW9kIDEwMjQuIEluIG90aGVyIHdvcmRzLAogICAgdGhlIGRhdGEgdG8gYmUgZGlnZXN0ZWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDEwMjQgYml0cyAob3IgMTI4IGJ5dGVzKS4KICAgIFRoaXMgZGF0YSBpbmNsdWRlcyB0aGUgbWVzc2FnZSwgc29tZSBwYWRkaW5nLCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKICAgIG1lc3NhZ2UuIFNpbmNlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBlbmNvZGVkIGFzIDE2IGJ5dGVzICgxMjgKICAgIGJpdHMpLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGxhc3Qgc2VnbWVudCBvZiB0aGUgZGF0YSBtdXN0IGhhdmUgMTEyIGJ5dGVzCiAgICAoODk2IGJpdHMpIG9mIG1lc3NhZ2UgYW5kIHBhZGRpbmcuIFRoZXJlZm9yZSwgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZQogICAgcGx1cyB0aGUgcGFkZGluZyBtdXN0IGJlIGNvbmdydWVudCB0byA4OTYgbW9kIDEwMjQgYmVjYXVzZQogICAgMTAyNCAtIDEyOCA9IDg5Ni4KCiAgICBJbiBvcmRlciB0byBmaWxsIHVwIHRoZSBtZXNzYWdlIGxlbmd0aCBpdCBtdXN0IGJlIGZpbGxlZCB3aXRoCiAgICBwYWRkaW5nIHRoYXQgYmVnaW5zIHdpdGggMSBiaXQgZm9sbG93ZWQgYnkgYWxsIDAgYml0cy4gUGFkZGluZwogICAgbXVzdCAqYWx3YXlzKiBiZSBwcmVzZW50LCBzbyBpZiB0aGUgbWVzc2FnZSBsZW5ndGggaXMgYWxyZWFkeQogICAgY29uZ3J1ZW50IHRvIDg5NiBtb2QgMTAyNCwgdGhlbiAxMDI0IHBhZGRpbmcgYml0cyBtdXN0IGJlIGFkZGVkLiAqLwoKICAgIHZhciBmaW5hbEJsb2NrID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZpbmFsQmxvY2sucHV0Qnl0ZXMoX2lucHV0LmJ5dGVzKCkpOwoKICAgIC8vIGNvbXB1dGUgcmVtYWluaW5nIHNpemUgdG8gYmUgZGlnZXN0ZWQgKGluY2x1ZGUgbWVzc2FnZSBsZW5ndGggc2l6ZSkKICAgIHZhciByZW1haW5pbmcgPSAoCiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW21kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDFdICsKICAgICAgbWQubWVzc2FnZUxlbmd0aFNpemUpOwoKICAgIC8vIGFkZCBwYWRkaW5nIGZvciBvdmVyZmxvdyBibG9ja1NpemUgLSBvdmVyZmxvdwogICAgLy8gX3BhZGRpbmcgc3RhcnRzIHdpdGggMSBieXRlIHdpdGggZmlyc3QgYml0IGlzIHNldCAoYnl0ZSB2YWx1ZSAxMjgpLCB0aGVuCiAgICAvLyB0aGVyZSBtYXkgYmUgdXAgdG8gKGJsb2NrU2l6ZSAtIDEpIG90aGVyIHBhZCBieXRlcwogICAgdmFyIG92ZXJmbG93ID0gcmVtYWluaW5nICYgKG1kLmJsb2NrTGVuZ3RoIC0gMSk7CiAgICBmaW5hbEJsb2NrLnB1dEJ5dGVzKF9wYWRkaW5nLnN1YnN0cigwLCBtZC5ibG9ja0xlbmd0aCAtIG92ZXJmbG93KSk7CgogICAgLy8gc2VyaWFsaXplIG1lc3NhZ2UgbGVuZ3RoIGluIGJpdHMgaW4gYmlnLWVuZGlhbiBvcmRlcjsgc2luY2UgbGVuZ3RoCiAgICAvLyBpcyBzdG9yZWQgaW4gYnl0ZXMgd2UgbXVsdGlwbHkgYnkgOCBhbmQgYWRkIGNhcnJ5IGZyb20gbmV4dCBpbnQKICAgIHZhciBtZXNzYWdlTGVuZ3RoID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHZhciBuZXh0LCBjYXJyeTsKICAgIHZhciBiaXRzID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbMF0gKiA4OwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aDsgKytpKSB7CiAgICAgIG5leHQgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpICsgMV0gKiA4OwogICAgICBjYXJyeSA9IChuZXh0IC8gMHgxMDAwMDAwMDApID4+PiAwOwogICAgICBiaXRzICs9IGNhcnJ5OwogICAgICBmaW5hbEJsb2NrLnB1dEludDMyKGJpdHMgPj4+IDApOwogICAgICBiaXRzID0gbmV4dDsKICAgIH0KCiAgICB2YXIgaCA9IG5ldyBBcnJheShfaC5sZW5ndGgpOwogICAgZm9yKHZhciBpID0gMDsgaSA8IF9oLmxlbmd0aDsgKytpKSB7CiAgICAgIGhbaV0gPSBfaFtpXS5zbGljZSgwKTsKICAgIH0KICAgIF91cGRhdGUoaCwgX3csIGZpbmFsQmxvY2spOwogICAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgdmFyIGhsZW47CiAgICBpZihhbGdvcml0aG0gPT09ICdTSEEtNTEyJykgewogICAgICBobGVuID0gaC5sZW5ndGg7CiAgICB9IGVsc2UgaWYoYWxnb3JpdGhtID09PSAnU0hBLTM4NCcpIHsKICAgICAgaGxlbiA9IGgubGVuZ3RoIC0gMjsKICAgIH0gZWxzZSB7CiAgICAgIGhsZW4gPSBoLmxlbmd0aCAtIDQ7CiAgICB9CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgaGxlbjsgKytpKSB7CiAgICAgIHJ2YWwucHV0SW50MzIoaFtpXVswXSk7CiAgICAgIGlmKGkgIT09IGhsZW4gLSAxIHx8IGFsZ29yaXRobSAhPT0gJ1NIQS01MTIvMjI0JykgewogICAgICAgIHJ2YWwucHV0SW50MzIoaFtpXVsxXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBydmFsOwogIH07CgogIHJldHVybiBtZDsKfTsKCi8vIHNoYS01MTIgcGFkZGluZyBieXRlcyBub3QgaW5pdGlhbGl6ZWQgeWV0CnZhciBfcGFkZGluZyA9IG51bGw7CnZhciBfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKCi8vIHRhYmxlIG9mIGNvbnN0YW50cwp2YXIgX2sgPSBudWxsOwoKLy8gaW5pdGlhbCBoYXNoIHN0YXRlcwp2YXIgX3N0YXRlcyA9IG51bGw7CgovKioKICogSW5pdGlhbGl6ZXMgdGhlIGNvbnN0YW50IHRhYmxlcy4KICovCmZ1bmN0aW9uIF9pbml0KCkgewogIC8vIGNyZWF0ZSBwYWRkaW5nCiAgX3BhZGRpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCk7CiAgX3BhZGRpbmcgKz0gZm9yZ2UudXRpbC5maWxsU3RyaW5nKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMCksIDEyOCk7CgogIC8vIGNyZWF0ZSBLIHRhYmxlIGZvciBTSEEtNTEyCiAgX2sgPSBbCiAgICBbMHg0MjhhMmY5OCwgMHhkNzI4YWUyMl0sIFsweDcxMzc0NDkxLCAweDIzZWY2NWNkXSwKICAgIFsweGI1YzBmYmNmLCAweGVjNGQzYjJmXSwgWzB4ZTliNWRiYTUsIDB4ODE4OWRiYmNdLAogICAgWzB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzhdLCBbMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOV0sCiAgICBbMHg5MjNmODJhNCwgMHhhZjE5NGY5Yl0sIFsweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4XSwKICAgIFsweGQ4MDdhYTk4LCAweGEzMDMwMjQyXSwgWzB4MTI4MzViMDEsIDB4NDU3MDZmYmVdLAogICAgWzB4MjQzMTg1YmUsIDB4NGVlNGIyOGNdLCBbMHg1NTBjN2RjMywgMHhkNWZmYjRlMl0sCiAgICBbMHg3MmJlNWQ3NCwgMHhmMjdiODk2Zl0sIFsweDgwZGViMWZlLCAweDNiMTY5NmIxXSwKICAgIFsweDliZGMwNmE3LCAweDI1YzcxMjM1XSwgWzB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTRdLAogICAgWzB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDJdLCBbMHhlZmJlNDc4NiwgMHgzODRmMjVlM10sCiAgICBbMHgwZmMxOWRjNiwgMHg4YjhjZDViNV0sIFsweDI0MGNhMWNjLCAweDc3YWM5YzY1XSwKICAgIFsweDJkZTkyYzZmLCAweDU5MmIwMjc1XSwgWzB4NGE3NDg0YWEsIDB4NmVhNmU0ODNdLAogICAgWzB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDRdLCBbMHg3NmY5ODhkYSwgMHg4MzExNTNiNV0sCiAgICBbMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYl0sIFsweGE4MzFjNjZkLCAweDJkYjQzMjEwXSwKICAgIFsweGIwMDMyN2M4LCAweDk4ZmIyMTNmXSwgWzB4YmY1OTdmYzcsIDB4YmVlZjBlZTRdLAogICAgWzB4YzZlMDBiZjMsIDB4M2RhODhmYzJdLCBbMHhkNWE3OTE0NywgMHg5MzBhYTcyNV0sCiAgICBbMHgwNmNhNjM1MSwgMHhlMDAzODI2Zl0sIFsweDE0MjkyOTY3LCAweDBhMGU2ZTcwXSwKICAgIFsweDI3YjcwYTg1LCAweDQ2ZDIyZmZjXSwgWzB4MmUxYjIxMzgsIDB4NWMyNmM5MjZdLAogICAgWzB4NGQyYzZkZmMsIDB4NWFjNDJhZWRdLCBbMHg1MzM4MGQxMywgMHg5ZDk1YjNkZl0sCiAgICBbMHg2NTBhNzM1NCwgMHg4YmFmNjNkZV0sIFsweDc2NmEwYWJiLCAweDNjNzdiMmE4XSwKICAgIFsweDgxYzJjOTJlLCAweDQ3ZWRhZWU2XSwgWzB4OTI3MjJjODUsIDB4MTQ4MjM1M2JdLAogICAgWzB4YTJiZmU4YTEsIDB4NGNmMTAzNjRdLCBbMHhhODFhNjY0YiwgMHhiYzQyMzAwMV0sCiAgICBbMHhjMjRiOGI3MCwgMHhkMGY4OTc5MV0sIFsweGM3NmM1MWEzLCAweDA2NTRiZTMwXSwKICAgIFsweGQxOTJlODE5LCAweGQ2ZWY1MjE4XSwgWzB4ZDY5OTA2MjQsIDB4NTU2NWE5MTBdLAogICAgWzB4ZjQwZTM1ODUsIDB4NTc3MTIwMmFdLCBbMHgxMDZhYTA3MCwgMHgzMmJiZDFiOF0sCiAgICBbMHgxOWE0YzExNiwgMHhiOGQyZDBjOF0sIFsweDFlMzc2YzA4LCAweDUxNDFhYjUzXSwKICAgIFsweDI3NDg3NzRjLCAweGRmOGVlYjk5XSwgWzB4MzRiMGJjYjUsIDB4ZTE5YjQ4YThdLAogICAgWzB4MzkxYzBjYjMsIDB4YzVjOTVhNjNdLCBbMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYl0sCiAgICBbMHg1YjljY2E0ZiwgMHg3NzYzZTM3M10sIFsweDY4MmU2ZmYzLCAweGQ2YjJiOGEzXSwKICAgIFsweDc0OGY4MmVlLCAweDVkZWZiMmZjXSwgWzB4NzhhNTYzNmYsIDB4NDMxNzJmNjBdLAogICAgWzB4ODRjODc4MTQsIDB4YTFmMGFiNzJdLCBbMHg4Y2M3MDIwOCwgMHgxYTY0MzllY10sCiAgICBbMHg5MGJlZmZmYSwgMHgyMzYzMWUyOF0sIFsweGE0NTA2Y2ViLCAweGRlODJiZGU5XSwKICAgIFsweGJlZjlhM2Y3LCAweGIyYzY3OTE1XSwgWzB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmJdLAogICAgWzB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWNdLCBbMHhkMTg2YjhjNywgMHgyMWMwYzIwN10sCiAgICBbMHhlYWRhN2RkNiwgMHhjZGUwZWIxZV0sIFsweGY1N2Q0ZjdmLCAweGVlNmVkMTc4XSwKICAgIFsweDA2ZjA2N2FhLCAweDcyMTc2ZmJhXSwgWzB4MGE2MzdkYzUsIDB4YTJjODk4YTZdLAogICAgWzB4MTEzZjk4MDQsIDB4YmVmOTBkYWVdLCBbMHgxYjcxMGIzNSwgMHgxMzFjNDcxYl0sCiAgICBbMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NF0sIFsweDMyY2FhYjdiLCAweDQwYzcyNDkzXSwKICAgIFsweDNjOWViZTBhLCAweDE1YzliZWJjXSwgWzB4NDMxZDY3YzQsIDB4OWMxMDBkNGNdLAogICAgWzB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjZdLCBbMHg1OTdmMjk5YywgMHhmYzY1N2UyYV0sCiAgICBbMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlY10sIFsweDZjNDQxOThjLCAweDRhNDc1ODE3XQogIF07CgogIC8vIGluaXRpYWwgaGFzaCBzdGF0ZXMKICBfc3RhdGVzID0ge307CiAgX3N0YXRlc1snU0hBLTUxMiddID0gWwogICAgWzB4NmEwOWU2NjcsIDB4ZjNiY2M5MDhdLAogICAgWzB4YmI2N2FlODUsIDB4ODRjYWE3M2JdLAogICAgWzB4M2M2ZWYzNzIsIDB4ZmU5NGY4MmJdLAogICAgWzB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjFdLAogICAgWzB4NTEwZTUyN2YsIDB4YWRlNjgyZDFdLAogICAgWzB4OWIwNTY4OGMsIDB4MmIzZTZjMWZdLAogICAgWzB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmJdLAogICAgWzB4NWJlMGNkMTksIDB4MTM3ZTIxNzldCiAgXTsKICBfc3RhdGVzWydTSEEtMzg0J10gPSBbCiAgICBbMHhjYmJiOWQ1ZCwgMHhjMTA1OWVkOF0sCiAgICBbMHg2MjlhMjkyYSwgMHgzNjdjZDUwN10sCiAgICBbMHg5MTU5MDE1YSwgMHgzMDcwZGQxN10sCiAgICBbMHgxNTJmZWNkOCwgMHhmNzBlNTkzOV0sCiAgICBbMHg2NzMzMjY2NywgMHhmZmMwMGIzMV0sCiAgICBbMHg4ZWI0NGE4NywgMHg2ODU4MTUxMV0sCiAgICBbMHhkYjBjMmUwZCwgMHg2NGY5OGZhN10sCiAgICBbMHg0N2I1NDgxZCwgMHhiZWZhNGZhNF0KICBdOwogIF9zdGF0ZXNbJ1NIQS01MTIvMjU2J10gPSBbCiAgICBbMHgyMjMxMjE5NCwgMHhGQzJCRjcyQ10sCiAgICBbMHg5RjU1NUZBMywgMHhDODRDNjRDMl0sCiAgICBbMHgyMzkzQjg2QiwgMHg2RjUzQjE1MV0sCiAgICBbMHg5NjM4NzcxOSwgMHg1OTQwRUFCRF0sCiAgICBbMHg5NjI4M0VFMiwgMHhBODhFRkZFM10sCiAgICBbMHhCRTVFMUUyNSwgMHg1Mzg2Mzk5Ml0sCiAgICBbMHgyQjAxOTlGQywgMHgyQzg1QjhBQV0sCiAgICBbMHgwRUI3MkREQywgMHg4MUM1MkNBMl0KICBdOwogIF9zdGF0ZXNbJ1NIQS01MTIvMjI0J10gPSBbCiAgICBbMHg4QzNEMzdDOCwgMHgxOTU0NERBMl0sCiAgICBbMHg3M0UxOTk2NiwgMHg4OURDRDRENl0sCiAgICBbMHgxREZBQjdBRSwgMHgzMkZGOUM4Ml0sCiAgICBbMHg2NzlERDUxNCwgMHg1ODJGOUZDRl0sCiAgICBbMHgwRjZEMkI2OSwgMHg3QkQ0NERBOF0sCiAgICBbMHg3N0UzNkY3MywgMHgwNEM0ODk0Ml0sCiAgICBbMHgzRjlEODVBOCwgMHg2QTFEMzZDOF0sCiAgICBbMHgxMTEyRTZBRCwgMHg5MUQ2OTJBMV0KICBdOwoKICAvLyBub3cgaW5pdGlhbGl6ZWQKICBfaW5pdGlhbGl6ZWQgPSB0cnVlOwp9CgovKioKICogVXBkYXRlcyBhIFNIQS01MTIgc3RhdGUgd2l0aCB0aGUgZ2l2ZW4gYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBzIHRoZSBTSEEtNTEyIHN0YXRlIHRvIHVwZGF0ZS4KICogQHBhcmFtIHcgdGhlIGFycmF5IHRvIHVzZSB0byBzdG9yZSB3b3Jkcy4KICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlIGJ1ZmZlciB0byB1cGRhdGUgd2l0aC4KICovCmZ1bmN0aW9uIF91cGRhdGUocywgdywgYnl0ZXMpIHsKICAvLyBjb25zdW1lIDUxMiBiaXQgKDEyOCBieXRlKSBjaHVua3MKICB2YXIgdDFfaGksIHQxX2xvOwogIHZhciB0Ml9oaSwgdDJfbG87CiAgdmFyIHMwX2hpLCBzMF9sbzsKICB2YXIgczFfaGksIHMxX2xvOwogIHZhciBjaF9oaSwgY2hfbG87CiAgdmFyIG1hal9oaSwgbWFqX2xvOwogIHZhciBhX2hpLCBhX2xvOwogIHZhciBiX2hpLCBiX2xvOwogIHZhciBjX2hpLCBjX2xvOwogIHZhciBkX2hpLCBkX2xvOwogIHZhciBlX2hpLCBlX2xvOwogIHZhciBmX2hpLCBmX2xvOwogIHZhciBnX2hpLCBnX2xvOwogIHZhciBoX2hpLCBoX2xvOwogIHZhciBpLCBoaSwgbG8sIHcyLCB3NywgdzE1LCB3MTY7CiAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aCgpOwogIHdoaWxlKGxlbiA+PSAxMjgpIHsKICAgIC8vIHRoZSB3IGFycmF5IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggc2l4dGVlbiA2NC1iaXQgYmlnLWVuZGlhbiB3b3JkcwogICAgLy8gYW5kIHRoZW4gZXh0ZW5kZWQgaW50byA2NCA2NC1iaXQgd29yZHMgYWNjb3JkaW5nIHRvIFNIQS01MTIKICAgIGZvcihpID0gMDsgaSA8IDE2OyArK2kpIHsKICAgICAgd1tpXVswXSA9IGJ5dGVzLmdldEludDMyKCkgPj4+IDA7CiAgICAgIHdbaV1bMV0gPSBieXRlcy5nZXRJbnQzMigpID4+PiAwOwogICAgfQogICAgZm9yKDsgaSA8IDgwOyArK2kpIHsKICAgICAgLy8gZm9yIHdvcmQgMiB3b3JkcyBhZ286IFJPVFIgMTkoeCkgXiBST1RSIDYxKHgpIF4gU0hSIDYoeCkKICAgICAgdzIgPSB3W2kgLSAyXTsKICAgICAgaGkgPSB3MlswXTsKICAgICAgbG8gPSB3MlsxXTsKCiAgICAgIC8vIGhpZ2ggYml0cwogICAgICB0MV9oaSA9ICgKICAgICAgICAoKGhpID4+PiAxOSkgfCAobG8gPDwgMTMpKSBeIC8vIFJPVFIgMTkKICAgICAgICAoKGxvID4+PiAyOSkgfCAoaGkgPDwgMykpIF4gLy8gUk9UUiA2MS8oc3dhcCArIFJPVFIgMjkpCiAgICAgICAgKGhpID4+PiA2KSkgPj4+IDA7IC8vIFNIUiA2CiAgICAgIC8vIGxvdyBiaXRzCiAgICAgIHQxX2xvID0gKAogICAgICAgICgoaGkgPDwgMTMpIHwgKGxvID4+PiAxOSkpIF4gLy8gUk9UUiAxOQogICAgICAgICgobG8gPDwgMykgfCAoaGkgPj4+IDI5KSkgXiAvLyBST1RSIDYxLyhzd2FwICsgUk9UUiAyOSkKICAgICAgICAoKGhpIDw8IDI2KSB8IChsbyA+Pj4gNikpKSA+Pj4gMDsgLy8gU0hSIDYKCiAgICAgIC8vIGZvciB3b3JkIDE1IHdvcmRzIGFnbzogUk9UUiAxKHgpIF4gUk9UUiA4KHgpIF4gU0hSIDcoeCkKICAgICAgdzE1ID0gd1tpIC0gMTVdOwogICAgICBoaSA9IHcxNVswXTsKICAgICAgbG8gPSB3MTVbMV07CgogICAgICAvLyBoaWdoIGJpdHMKICAgICAgdDJfaGkgPSAoCiAgICAgICAgKChoaSA+Pj4gMSkgfCAobG8gPDwgMzEpKSBeIC8vIFJPVFIgMQogICAgICAgICgoaGkgPj4+IDgpIHwgKGxvIDw8IDI0KSkgXiAvLyBST1RSIDgKICAgICAgICAoaGkgPj4+IDcpKSA+Pj4gMDsgLy8gU0hSIDcKICAgICAgLy8gbG93IGJpdHMKICAgICAgdDJfbG8gPSAoCiAgICAgICAgKChoaSA8PCAzMSkgfCAobG8gPj4+IDEpKSBeIC8vIFJPVFIgMQogICAgICAgICgoaGkgPDwgMjQpIHwgKGxvID4+PiA4KSkgXiAvLyBST1RSIDgKICAgICAgICAoKGhpIDw8IDI1KSB8IChsbyA+Pj4gNykpKSA+Pj4gMDsgLy8gU0hSIDcKCiAgICAgIC8vIHN1bSh0MSwgd29yZCA3IGFnbywgdDIsIHdvcmQgMTYgYWdvKSBtb2R1bG8gMl42NCAoY2FycnkgbG8gb3ZlcmZsb3cpCiAgICAgIHc3ID0gd1tpIC0gN107CiAgICAgIHcxNiA9IHdbaSAtIDE2XTsKICAgICAgbG8gPSAodDFfbG8gKyB3N1sxXSArIHQyX2xvICsgdzE2WzFdKTsKICAgICAgd1tpXVswXSA9ICh0MV9oaSArIHc3WzBdICsgdDJfaGkgKyB3MTZbMF0gKwogICAgICAgICgobG8gLyAweDEwMDAwMDAwMCkgPj4+IDApKSA+Pj4gMDsKICAgICAgd1tpXVsxXSA9IGxvID4+PiAwOwogICAgfQoKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYV9oaSA9IHNbMF1bMF07CiAgICBhX2xvID0gc1swXVsxXTsKICAgIGJfaGkgPSBzWzFdWzBdOwogICAgYl9sbyA9IHNbMV1bMV07CiAgICBjX2hpID0gc1syXVswXTsKICAgIGNfbG8gPSBzWzJdWzFdOwogICAgZF9oaSA9IHNbM11bMF07CiAgICBkX2xvID0gc1szXVsxXTsKICAgIGVfaGkgPSBzWzRdWzBdOwogICAgZV9sbyA9IHNbNF1bMV07CiAgICBmX2hpID0gc1s1XVswXTsKICAgIGZfbG8gPSBzWzVdWzFdOwogICAgZ19oaSA9IHNbNl1bMF07CiAgICBnX2xvID0gc1s2XVsxXTsKICAgIGhfaGkgPSBzWzddWzBdOwogICAgaF9sbyA9IHNbN11bMV07CgogICAgLy8gcm91bmQgZnVuY3Rpb24KICAgIGZvcihpID0gMDsgaSA8IDgwOyArK2kpIHsKICAgICAgLy8gU3VtMShlKSA9IFJPVFIgMTQoZSkgXiBST1RSIDE4KGUpIF4gUk9UUiA0MShlKQogICAgICBzMV9oaSA9ICgKICAgICAgICAoKGVfaGkgPj4+IDE0KSB8IChlX2xvIDw8IDE4KSkgXiAvLyBST1RSIDE0CiAgICAgICAgKChlX2hpID4+PiAxOCkgfCAoZV9sbyA8PCAxNCkpIF4gLy8gUk9UUiAxOAogICAgICAgICgoZV9sbyA+Pj4gOSkgfCAoZV9oaSA8PCAyMykpKSA+Pj4gMDsgLy8gUk9UUiA0MS8oc3dhcCArIFJPVFIgOSkKICAgICAgczFfbG8gPSAoCiAgICAgICAgKChlX2hpIDw8IDE4KSB8IChlX2xvID4+PiAxNCkpIF4gLy8gUk9UUiAxNAogICAgICAgICgoZV9oaSA8PCAxNCkgfCAoZV9sbyA+Pj4gMTgpKSBeIC8vIFJPVFIgMTgKICAgICAgICAoKGVfbG8gPDwgMjMpIHwgKGVfaGkgPj4+IDkpKSkgPj4+IDA7IC8vIFJPVFIgNDEvKHN3YXAgKyBST1RSIDkpCgogICAgICAvLyBDaChlLCBmLCBnKSAob3B0aW1pemVkIHRoZSBzYW1lIHdheSBhcyBTSEEtMSkKICAgICAgY2hfaGkgPSAoZ19oaSBeIChlX2hpICYgKGZfaGkgXiBnX2hpKSkpID4+PiAwOwogICAgICBjaF9sbyA9IChnX2xvIF4gKGVfbG8gJiAoZl9sbyBeIGdfbG8pKSkgPj4+IDA7CgogICAgICAvLyBTdW0wKGEpID0gUk9UUiAyOChhKSBeIFJPVFIgMzQoYSkgXiBST1RSIDM5KGEpCiAgICAgIHMwX2hpID0gKAogICAgICAgICgoYV9oaSA+Pj4gMjgpIHwgKGFfbG8gPDwgNCkpIF4gLy8gUk9UUiAyOAogICAgICAgICgoYV9sbyA+Pj4gMikgfCAoYV9oaSA8PCAzMCkpIF4gLy8gUk9UUiAzNC8oc3dhcCArIFJPVFIgMikKICAgICAgICAoKGFfbG8gPj4+IDcpIHwgKGFfaGkgPDwgMjUpKSkgPj4+IDA7IC8vIFJPVFIgMzkvKHN3YXAgKyBST1RSIDcpCiAgICAgIHMwX2xvID0gKAogICAgICAgICgoYV9oaSA8PCA0KSB8IChhX2xvID4+PiAyOCkpIF4gLy8gUk9UUiAyOAogICAgICAgICgoYV9sbyA8PCAzMCkgfCAoYV9oaSA+Pj4gMikpIF4gLy8gUk9UUiAzNC8oc3dhcCArIFJPVFIgMikKICAgICAgICAoKGFfbG8gPDwgMjUpIHwgKGFfaGkgPj4+IDcpKSkgPj4+IDA7IC8vIFJPVFIgMzkvKHN3YXAgKyBST1RSIDcpCgogICAgICAvLyBNYWooYSwgYiwgYykgKG9wdGltaXplZCB0aGUgc2FtZSB3YXkgYXMgU0hBLTEpCiAgICAgIG1hal9oaSA9ICgoYV9oaSAmIGJfaGkpIHwgKGNfaGkgJiAoYV9oaSBeIGJfaGkpKSkgPj4+IDA7CiAgICAgIG1hal9sbyA9ICgoYV9sbyAmIGJfbG8pIHwgKGNfbG8gJiAoYV9sbyBeIGJfbG8pKSkgPj4+IDA7CgogICAgICAvLyBtYWluIGFsZ29yaXRobQogICAgICAvLyB0MSA9IChoICsgczEgKyBjaCArIF9rW2ldICsgX3dbaV0pIG1vZHVsbyAyXjY0IChjYXJyeSBsbyBvdmVyZmxvdykKICAgICAgbG8gPSAoaF9sbyArIHMxX2xvICsgY2hfbG8gKyBfa1tpXVsxXSArIHdbaV1bMV0pOwogICAgICB0MV9oaSA9IChoX2hpICsgczFfaGkgKyBjaF9oaSArIF9rW2ldWzBdICsgd1tpXVswXSArCiAgICAgICAgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgICB0MV9sbyA9IGxvID4+PiAwOwoKICAgICAgLy8gdDIgPSBzMCArIG1haiBtb2R1bG8gMl42NCAoY2FycnkgbG8gb3ZlcmZsb3cpCiAgICAgIGxvID0gczBfbG8gKyBtYWpfbG87CiAgICAgIHQyX2hpID0gKHMwX2hpICsgbWFqX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgICB0Ml9sbyA9IGxvID4+PiAwOwoKICAgICAgaF9oaSA9IGdfaGk7CiAgICAgIGhfbG8gPSBnX2xvOwoKICAgICAgZ19oaSA9IGZfaGk7CiAgICAgIGdfbG8gPSBmX2xvOwoKICAgICAgZl9oaSA9IGVfaGk7CiAgICAgIGZfbG8gPSBlX2xvOwoKICAgICAgLy8gZSA9IChkICsgdDEpIG1vZHVsbyAyXjY0IChjYXJyeSBsbyBvdmVyZmxvdykKICAgICAgbG8gPSBkX2xvICsgdDFfbG87CiAgICAgIGVfaGkgPSAoZF9oaSArIHQxX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgICBlX2xvID0gbG8gPj4+IDA7CgogICAgICBkX2hpID0gY19oaTsKICAgICAgZF9sbyA9IGNfbG87CgogICAgICBjX2hpID0gYl9oaTsKICAgICAgY19sbyA9IGJfbG87CgogICAgICBiX2hpID0gYV9oaTsKICAgICAgYl9sbyA9IGFfbG87CgogICAgICAvLyBhID0gKHQxICsgdDIpIG1vZHVsbyAyXjY0IChjYXJyeSBsbyBvdmVyZmxvdykKICAgICAgbG8gPSB0MV9sbyArIHQyX2xvOwogICAgICBhX2hpID0gKHQxX2hpICsgdDJfaGkgKyAoKGxvIC8gMHgxMDAwMDAwMDApID4+PiAwKSkgPj4+IDA7CiAgICAgIGFfbG8gPSBsbyA+Pj4gMDsKICAgIH0KCiAgICAvLyB1cGRhdGUgaGFzaCBzdGF0ZSAoYWRkaXRpb25hbCBtb2R1bG8gMl42NCkKICAgIGxvID0gc1swXVsxXSArIGFfbG87CiAgICBzWzBdWzBdID0gKHNbMF1bMF0gKyBhX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1swXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1sxXVsxXSArIGJfbG87CiAgICBzWzFdWzBdID0gKHNbMV1bMF0gKyBiX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1sxXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1syXVsxXSArIGNfbG87CiAgICBzWzJdWzBdID0gKHNbMl1bMF0gKyBjX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1syXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1szXVsxXSArIGRfbG87CiAgICBzWzNdWzBdID0gKHNbM11bMF0gKyBkX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1szXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s0XVsxXSArIGVfbG87CiAgICBzWzRdWzBdID0gKHNbNF1bMF0gKyBlX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s0XVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s1XVsxXSArIGZfbG87CiAgICBzWzVdWzBdID0gKHNbNV1bMF0gKyBmX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s1XVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s2XVsxXSArIGdfbG87CiAgICBzWzZdWzBdID0gKHNbNl1bMF0gKyBnX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s2XVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s3XVsxXSArIGhfbG87CiAgICBzWzddWzBdID0gKHNbN11bMF0gKyBoX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s3XVsxXSA9IGxvID4+PiAwOwoKICAgIGxlbiAtPSAxMjg7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdzaGE1MTInOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvc2hhNTEyJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBOb2RlLmpzIG1vZHVsZSBmb3IgRm9yZ2UgbWVzc2FnZSBkaWdlc3RzLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgMjAxMS0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UubWQgPSBmb3JnZS5tZCB8fCB7fTsKZm9yZ2UubWQuYWxnb3JpdGhtcyA9IHsKICBtZDU6IGZvcmdlLm1kNSwKICBzaGExOiBmb3JnZS5zaGExLAogIHNoYTI1NjogZm9yZ2Uuc2hhMjU2Cn07CmZvcmdlLm1kLm1kNSA9IGZvcmdlLm1kNTsKZm9yZ2UubWQuc2hhMSA9IGZvcmdlLnNoYTE7CmZvcmdlLm1kLnNoYTI1NiA9IGZvcmdlLnNoYTI1NjsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ21kJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoCiAgJ2pzL21kJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vbWQ1JywgJy4vc2hhMScsICcuL3NoYTI1NicsICcuL3NoYTUxMiddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBIYXNoLWJhc2VkIE1lc3NhZ2UgQXV0aGVudGljYXRpb24gQ29kZSBpbXBsZW1lbnRhdGlvbi4gUmVxdWlyZXMgYSBtZXNzYWdlCiAqIGRpZ2VzdCBvYmplY3QgdGhhdCBjYW4gYmUgb2J0YWluZWQsIGZvciBleGFtcGxlLCBmcm9tIGZvcmdlLm1kLnNoYTEgb3IKICogZm9yZ2UubWQubWQ1LgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMiBEaWdpdGFsIEJhemFhciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8qIEhNQUMgQVBJICovCnZhciBobWFjID0gZm9yZ2UuaG1hYyA9IGZvcmdlLmhtYWMgfHwge307CgovKioKICogQ3JlYXRlcyBhbiBITUFDIG9iamVjdCB0aGF0IHVzZXMgdGhlIGdpdmVuIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICoKICogQHJldHVybiBhbiBITUFDIG9iamVjdC4KICovCmhtYWMuY3JlYXRlID0gZnVuY3Rpb24oKSB7CiAgLy8gdGhlIGhtYWMga2V5IHRvIHVzZQogIHZhciBfa2V5ID0gbnVsbDsKCiAgLy8gdGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHVzZQogIHZhciBfbWQgPSBudWxsOwoKICAvLyB0aGUgaW5uZXIgcGFkZGluZwogIHZhciBfaXBhZGRpbmcgPSBudWxsOwoKICAvLyB0aGUgb3V0ZXIgcGFkZGluZwogIHZhciBfb3BhZGRpbmcgPSBudWxsOwoKICAvLyBobWFjIGNvbnRleHQKICB2YXIgY3R4ID0ge307CgogIC8qKgogICAqIFN0YXJ0cyBvciByZXN0YXJ0cyB0aGUgSE1BQyB3aXRoIHRoZSBnaXZlbiBrZXkgYW5kIG1lc3NhZ2UgZGlnZXN0LgogICAqCiAgICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2UsIG51bGwgdG8gcmV1c2UgdGhlIHByZXZpb3VzIG9uZSwKICAgKiAgICAgICAgICAgYSBzdHJpbmcgdG8gdXNlIGJ1aWx0aW4gJ3NoYTEnLCAnbWQ1JywgJ3NoYTI1NicuCiAgICogQHBhcmFtIGtleSB0aGUga2V5IHRvIHVzZSBhcyBhIHN0cmluZywgYXJyYXkgb2YgYnl0ZXMsIGJ5dGUgYnVmZmVyLAogICAqICAgICAgICAgICBvciBudWxsIHRvIHJldXNlIHRoZSBwcmV2aW91cyBrZXkuCiAgICovCiAgY3R4LnN0YXJ0ID0gZnVuY3Rpb24obWQsIGtleSkgewogICAgaWYobWQgIT09IG51bGwpIHsKICAgICAgaWYodHlwZW9mIG1kID09PSAnc3RyaW5nJykgewogICAgICAgIC8vIGNyZWF0ZSBidWlsdGluIG1lc3NhZ2UgZGlnZXN0CiAgICAgICAgbWQgPSBtZC50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmKG1kIGluIGZvcmdlLm1kLmFsZ29yaXRobXMpIHsKICAgICAgICAgIF9tZCA9IGZvcmdlLm1kLmFsZ29yaXRobXNbbWRdLmNyZWF0ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gaGFzaCBhbGdvcml0aG0gIicgKyBtZCArICciJyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIC8vIHN0b3JlIG1lc3NhZ2UgZGlnZXN0CiAgICAgICAgX21kID0gbWQ7CiAgICAgIH0KICAgIH0KCiAgICBpZihrZXkgPT09IG51bGwpIHsKICAgICAgLy8gcmV1c2UgcHJldmlvdXMga2V5CiAgICAgIGtleSA9IF9rZXk7CiAgICB9IGVsc2UgewogICAgICBpZih0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykgewogICAgICAgIC8vIGNvbnZlcnQgc3RyaW5nIGludG8gYnl0ZSBidWZmZXIKICAgICAgICBrZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihrZXkpOwogICAgICB9IGVsc2UgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGtleSkpIHsKICAgICAgICAvLyBjb252ZXJ0IGJ5dGUgYXJyYXkgaW50byBieXRlIGJ1ZmZlcgogICAgICAgIHZhciB0bXAgPSBrZXk7CiAgICAgICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICBrZXkucHV0Qnl0ZSh0bXBbaV0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gaWYga2V5IGlzIGxvbmdlciB0aGFuIGJsb2Nrc2l6ZSwgaGFzaCBpdAogICAgICB2YXIga2V5bGVuID0ga2V5Lmxlbmd0aCgpOwogICAgICBpZihrZXlsZW4gPiBfbWQuYmxvY2tMZW5ndGgpIHsKICAgICAgICBfbWQuc3RhcnQoKTsKICAgICAgICBfbWQudXBkYXRlKGtleS5ieXRlcygpKTsKICAgICAgICBrZXkgPSBfbWQuZGlnZXN0KCk7CiAgICAgIH0KCiAgICAgIC8vIG1peCBrZXkgaW50byBpbm5lciBhbmQgb3V0ZXIgcGFkZGluZwogICAgICAvLyBpcGFkZGluZyA9IFsweDM2ICogYmxvY2tzaXplXSBeIGtleQogICAgICAvLyBvcGFkZGluZyA9IFsweDVDICogYmxvY2tzaXplXSBeIGtleQogICAgICBfaXBhZGRpbmcgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBfb3BhZGRpbmcgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBrZXlsZW4gPSBrZXkubGVuZ3RoKCk7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBrZXlsZW47ICsraSkgewogICAgICAgIHZhciB0bXAgPSBrZXkuYXQoaSk7CiAgICAgICAgX2lwYWRkaW5nLnB1dEJ5dGUoMHgzNiBeIHRtcCk7CiAgICAgICAgX29wYWRkaW5nLnB1dEJ5dGUoMHg1QyBeIHRtcCk7CiAgICAgIH0KCiAgICAgIC8vIGlmIGtleSBpcyBzaG9ydGVyIHRoYW4gYmxvY2tzaXplLCBhZGQgYWRkaXRpb25hbCBwYWRkaW5nCiAgICAgIGlmKGtleWxlbiA8IF9tZC5ibG9ja0xlbmd0aCkgewogICAgICAgIHZhciB0bXAgPSBfbWQuYmxvY2tMZW5ndGggLSBrZXlsZW47CiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcDsgKytpKSB7CiAgICAgICAgICBfaXBhZGRpbmcucHV0Qnl0ZSgweDM2KTsKICAgICAgICAgIF9vcGFkZGluZy5wdXRCeXRlKDB4NUMpOwogICAgICAgIH0KICAgICAgfQogICAgICBfa2V5ID0ga2V5OwogICAgICBfaXBhZGRpbmcgPSBfaXBhZGRpbmcuYnl0ZXMoKTsKICAgICAgX29wYWRkaW5nID0gX29wYWRkaW5nLmJ5dGVzKCk7CiAgICB9CgogICAgLy8gZGlnZXN0IGlzIGRvbmUgbGlrZSBzbzogaGFzaChvcGFkZGluZyB8IGhhc2goaXBhZGRpbmcgfCBtZXNzYWdlKSkKCiAgICAvLyBwcmVwYXJlIHRvIGRvIGlubmVyIGhhc2gKICAgIC8vIGhhc2goaXBhZGRpbmcgfCBtZXNzYWdlKQogICAgX21kLnN0YXJ0KCk7CiAgICBfbWQudXBkYXRlKF9pcGFkZGluZyk7CiAgfTsKCiAgLyoqCiAgICogVXBkYXRlcyB0aGUgSE1BQyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlIGJ5dGVzLgogICAqCiAgICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyB0byB1cGRhdGUgd2l0aC4KICAgKi8KICBjdHgudXBkYXRlID0gZnVuY3Rpb24oYnl0ZXMpIHsKICAgIF9tZC51cGRhdGUoYnl0ZXMpOwogIH07CgogIC8qKgogICAqIFByb2R1Y2VzIHRoZSBNZXNzYWdlIEF1dGhlbnRpY2F0aW9uIENvZGUgKE1BQykuCiAgICoKICAgKiBAcmV0dXJuIGEgYnl0ZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGlnZXN0IHZhbHVlLgogICAqLwogIGN0eC5nZXRNYWMgPSBmdW5jdGlvbigpIHsKICAgIC8vIGRpZ2VzdCBpcyBkb25lIGxpa2Ugc286IGhhc2gob3BhZGRpbmcgfCBoYXNoKGlwYWRkaW5nIHwgbWVzc2FnZSkpCiAgICAvLyBoZXJlIHdlIGRvIHRoZSBvdXRlciBoYXNoaW5nCiAgICB2YXIgaW5uZXIgPSBfbWQuZGlnZXN0KCkuYnl0ZXMoKTsKICAgIF9tZC5zdGFydCgpOwogICAgX21kLnVwZGF0ZShfb3BhZGRpbmcpOwogICAgX21kLnVwZGF0ZShpbm5lcik7CiAgICByZXR1cm4gX21kLmRpZ2VzdCgpOwogIH07CiAgLy8gYWxpYXMgZm9yIGdldE1hYwogIGN0eC5kaWdlc3QgPSBjdHguZ2V0TWFjOwoKICByZXR1cm4gY3R4Owp9OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnaG1hYyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9obWFjJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vbWQnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgYmFzaWMgUEVNIChQcml2YWN5IEVuaGFuY2VkIE1haWwpIGFsZ29yaXRobXMuCiAqCiAqIFNlZTogUkZDIDE0MjEuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqCiAqIEEgRm9yZ2UgUEVNIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBmaWVsZHM6CiAqCiAqIHR5cGU6IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgbWVzc2FnZSAoZWc6ICJSU0EgUFJJVkFURSBLRVkiKS4KICoKICogcHJvY1R5cGU6IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgcHJvY2Vzc2luZyBwZXJmb3JtZWQgb24gdGhlIG1lc3NhZ2UsCiAqICAgaXQgaGFzIHR3byBzdWJmaWVsZHM6IHZlcnNpb24gYW5kIHR5cGUsIGVnOiA0LEVOQ1JZUFRFRC4KICoKICogY29udGVudERvbWFpbjogaWRlbnRpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IGluIHRoZSBtZXNzYWdlLCB0eXBpY2FsbHkKICogICBvbmx5IHVzZXMgdGhlIHZhbHVlOiAiUkZDODIyIi4KICoKICogZGVrSW5mbzogaWRlbnRpZmllcyB0aGUgbWVzc2FnZSBlbmNyeXB0aW9uIGFsZ29yaXRobSBhbmQgbW9kZSBhbmQgaW5jbHVkZXMKICogICBhbnkgcGFyYW1ldGVycyBmb3IgdGhlIGFsZ29yaXRobSwgaXQgaGFzIHR3byBzdWJmaWVsZHM6IGFsZ29yaXRobSBhbmQKICogICBwYXJhbWV0ZXJzLCBlZzogREVTLUNCQyxGODE0M0VERTU5NjBDNTk3LgogKgogKiBoZWFkZXJzOiBjb250YWlucyBhbGwgb3RoZXIgUEVNIGVuY2Fwc3VsYXRlZCBoZWFkZXJzIC0tIHdoZXJlIG9yZGVyIGlzCiAqICAgc2lnbmlmaWNhbnQgKGZvciBwYWlyaW5nIGRhdGEgbGlrZSByZWNpcGllbnQgSUQgKyBrZXkgaW5mbykuCiAqCiAqIGJvZHk6IHRoZSBiaW5hcnktZW5jb2RlZCBib2R5LgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIHNob3J0Y3V0IGZvciBwZW0gQVBJCnZhciBwZW0gPSBmb3JnZS5wZW0gPSBmb3JnZS5wZW0gfHwge307CgovKioKICogRW5jb2RlcyAoc2VyaWFsaXplcykgdGhlIGdpdmVuIFBFTSBvYmplY3QuCiAqCiAqIEBwYXJhbSBtc2cgdGhlIFBFTSBtZXNzYWdlIG9iamVjdCB0byBlbmNvZGUuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lIGZvciB0aGUgYm9keSwgKGRlZmF1bHQ6IDY0KS4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBzdHJpbmcuCiAqLwpwZW0uZW5jb2RlID0gZnVuY3Rpb24obXNnLCBvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIHJ2YWwgPSAnLS0tLS1CRUdJTiAnICsgbXNnLnR5cGUgKyAnLS0tLS1cclxuJzsKCiAgLy8gZW5jb2RlIHNwZWNpYWwgaGVhZGVycwogIHZhciBoZWFkZXI7CiAgaWYobXNnLnByb2NUeXBlKSB7CiAgICBoZWFkZXIgPSB7CiAgICAgIG5hbWU6ICdQcm9jLVR5cGUnLAogICAgICB2YWx1ZXM6IFtTdHJpbmcobXNnLnByb2NUeXBlLnZlcnNpb24pLCBtc2cucHJvY1R5cGUudHlwZV0KICAgIH07CiAgICBydmFsICs9IGZvbGRIZWFkZXIoaGVhZGVyKTsKICB9CiAgaWYobXNnLmNvbnRlbnREb21haW4pIHsKICAgIGhlYWRlciA9IHtuYW1lOiAnQ29udGVudC1Eb21haW4nLCB2YWx1ZXM6IFttc2cuY29udGVudERvbWFpbl19OwogICAgcnZhbCArPSBmb2xkSGVhZGVyKGhlYWRlcik7CiAgfQogIGlmKG1zZy5kZWtJbmZvKSB7CiAgICBoZWFkZXIgPSB7bmFtZTogJ0RFSy1JbmZvJywgdmFsdWVzOiBbbXNnLmRla0luZm8uYWxnb3JpdGhtXX07CiAgICBpZihtc2cuZGVrSW5mby5wYXJhbWV0ZXJzKSB7CiAgICAgIGhlYWRlci52YWx1ZXMucHVzaChtc2cuZGVrSW5mby5wYXJhbWV0ZXJzKTsKICAgIH0KICAgIHJ2YWwgKz0gZm9sZEhlYWRlcihoZWFkZXIpOwogIH0KCiAgaWYobXNnLmhlYWRlcnMpIHsKICAgIC8vIGVuY29kZSBhbGwgb3RoZXIgaGVhZGVycwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5oZWFkZXJzLmxlbmd0aDsgKytpKSB7CiAgICAgIHJ2YWwgKz0gZm9sZEhlYWRlcihtc2cuaGVhZGVyc1tpXSk7CiAgICB9CiAgfQoKICAvLyB0ZXJtaW5hdGUgaGVhZGVyCiAgaWYobXNnLnByb2NUeXBlKSB7CiAgICBydmFsICs9ICdcclxuJzsKICB9CgogIC8vIGFkZCBib2R5CiAgcnZhbCArPSBmb3JnZS51dGlsLmVuY29kZTY0KG1zZy5ib2R5LCBvcHRpb25zLm1heGxpbmUgfHwgNjQpICsgJ1xyXG4nOwoKICBydmFsICs9ICctLS0tLUVORCAnICsgbXNnLnR5cGUgKyAnLS0tLS1cclxuJzsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBEZWNvZGVzIChkZXNlcmlhbGl6ZXMpIGFsbCBQRU0gbWVzc2FnZXMgZm91bmQgaW4gdGhlIGdpdmVuIHN0cmluZy4KICoKICogQHBhcmFtIHN0ciB0aGUgUEVNLWZvcm1hdHRlZCBzdHJpbmcgdG8gZGVjb2RlLgogKgogKiBAcmV0dXJuIHRoZSBQRU0gbWVzc2FnZSBvYmplY3RzIGluIGFuIGFycmF5LgogKi8KcGVtLmRlY29kZSA9IGZ1bmN0aW9uKHN0cikgewogIHZhciBydmFsID0gW107CgogIC8vIHNwbGl0IHN0cmluZyBpbnRvIFBFTSBtZXNzYWdlcyAoYmUgbGVuaWVudCB3L0VPRiBvbiBCRUdJTiBsaW5lKQogIHZhciByTWVzc2FnZSA9IC9ccyotLS0tLUJFR0lOIChbQS1aMC05LSBdKyktLS0tLVxyP1xuPyhbXHgyMS1ceDdlXHNdKz8oPzpccj9cblxyP1xuKSk/KFs6QS1aYS16MC05K1wvPVxzXSs/KS0tLS0tRU5EIFwxLS0tLS0vZzsKICB2YXIgckhlYWRlciA9IC8oW1x4MjEtXHg3ZV0rKTpccyooW1x4MjEtXHg3ZVxzXjpdKykvOwogIHZhciByQ1JMRiA9IC9ccj9cbi87CiAgdmFyIG1hdGNoOwogIHdoaWxlKHRydWUpIHsKICAgIG1hdGNoID0gck1lc3NhZ2UuZXhlYyhzdHIpOwogICAgaWYoIW1hdGNoKSB7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIHZhciBtc2cgPSB7CiAgICAgIHR5cGU6IG1hdGNoWzFdLAogICAgICBwcm9jVHlwZTogbnVsbCwKICAgICAgY29udGVudERvbWFpbjogbnVsbCwKICAgICAgZGVrSW5mbzogbnVsbCwKICAgICAgaGVhZGVyczogW10sCiAgICAgIGJvZHk6IGZvcmdlLnV0aWwuZGVjb2RlNjQobWF0Y2hbM10pCiAgICB9OwogICAgcnZhbC5wdXNoKG1zZyk7CgogICAgLy8gbm8gaGVhZGVycwogICAgaWYoIW1hdGNoWzJdKSB7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIC8vIHBhcnNlIGhlYWRlcnMKICAgIHZhciBsaW5lcyA9IG1hdGNoWzJdLnNwbGl0KHJDUkxGKTsKICAgIHZhciBsaSA9IDA7CiAgICB3aGlsZShtYXRjaCAmJiBsaSA8IGxpbmVzLmxlbmd0aCkgewogICAgICAvLyBnZXQgbGluZSwgdHJpbSBhbnkgcmhzIHdoaXRlc3BhY2UKICAgICAgdmFyIGxpbmUgPSBsaW5lc1tsaV0ucmVwbGFjZSgvXHMrJC8sICcnKTsKCiAgICAgIC8vIFJGQzI4MjIgdW5mb2xkIGFueSBmb2xsb3dpbmcgZm9sZGVkIGxpbmVzCiAgICAgIGZvcih2YXIgbmwgPSBsaSArIDE7IG5sIDwgbGluZXMubGVuZ3RoOyArK25sKSB7CiAgICAgICAgdmFyIG5leHQgPSBsaW5lc1tubF07CiAgICAgICAgaWYoIS9ccy8udGVzdChuZXh0WzBdKSkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGxpbmUgKz0gbmV4dDsKICAgICAgICBsaSA9IG5sOwogICAgICB9CgogICAgICAvLyBwYXJzZSBoZWFkZXIKICAgICAgbWF0Y2ggPSBsaW5lLm1hdGNoKHJIZWFkZXIpOwogICAgICBpZihtYXRjaCkgewogICAgICAgIHZhciBoZWFkZXIgPSB7bmFtZTogbWF0Y2hbMV0sIHZhbHVlczogW119OwogICAgICAgIHZhciB2YWx1ZXMgPSBtYXRjaFsyXS5zcGxpdCgnLCcpOwogICAgICAgIGZvcih2YXIgdmkgPSAwOyB2aSA8IHZhbHVlcy5sZW5ndGg7ICsrdmkpIHsKICAgICAgICAgIGhlYWRlci52YWx1ZXMucHVzaChsdHJpbSh2YWx1ZXNbdmldKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBQcm9jLVR5cGUgbXVzdCBiZSB0aGUgZmlyc3QgaGVhZGVyCiAgICAgICAgaWYoIW1zZy5wcm9jVHlwZSkgewogICAgICAgICAgaWYoaGVhZGVyLm5hbWUgIT09ICdQcm9jLVR5cGUnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQRU0gZm9ybWF0dGVkIG1lc3NhZ2UuIFRoZSBmaXJzdCAnICsKICAgICAgICAgICAgICAnZW5jYXBzdWxhdGVkIGhlYWRlciBtdXN0IGJlICJQcm9jLVR5cGUiLicpOwogICAgICAgICAgfSBlbHNlIGlmKGhlYWRlci52YWx1ZXMubGVuZ3RoICE9PSAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQRU0gZm9ybWF0dGVkIG1lc3NhZ2UuIFRoZSAiUHJvYy1UeXBlIiAnICsKICAgICAgICAgICAgICAnaGVhZGVyIG11c3QgaGF2ZSB0d28gc3ViZmllbGRzLicpOwogICAgICAgICAgfQogICAgICAgICAgbXNnLnByb2NUeXBlID0ge3ZlcnNpb246IHZhbHVlc1swXSwgdHlwZTogdmFsdWVzWzFdfTsKICAgICAgICB9IGVsc2UgaWYoIW1zZy5jb250ZW50RG9tYWluICYmIGhlYWRlci5uYW1lID09PSAnQ29udGVudC1Eb21haW4nKSB7CiAgICAgICAgICAvLyBzcGVjaWFsLWNhc2UgQ29udGVudC1Eb21haW4KICAgICAgICAgIG1zZy5jb250ZW50RG9tYWluID0gdmFsdWVzWzBdIHx8ICcnOwogICAgICAgIH0gZWxzZSBpZighbXNnLmRla0luZm8gJiYgaGVhZGVyLm5hbWUgPT09ICdERUstSW5mbycpIHsKICAgICAgICAgIC8vIHNwZWNpYWwtY2FzZSBERUstSW5mbwogICAgICAgICAgaWYoaGVhZGVyLnZhbHVlcy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4gVGhlICJERUstSW5mbyIgJyArCiAgICAgICAgICAgICAgJ2hlYWRlciBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHN1YmZpZWxkLicpOwogICAgICAgICAgfQogICAgICAgICAgbXNnLmRla0luZm8gPSB7YWxnb3JpdGhtOiB2YWx1ZXNbMF0sIHBhcmFtZXRlcnM6IHZhbHVlc1sxXSB8fCBudWxsfTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbXNnLmhlYWRlcnMucHVzaChoZWFkZXIpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgKytsaTsKICAgIH0KCiAgICBpZihtc2cucHJvY1R5cGUgPT09ICdFTkNSWVBURUQnICYmICFtc2cuZGVrSW5mbykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiAnICsKICAgICAgICAnaGVhZGVyIG11c3QgYmUgcHJlc2VudCBpZiAiUHJvYy1UeXBlIiBpcyAiRU5DUllQVEVEIi4nKTsKICAgIH0KICB9CgogIGlmKHJ2YWwubGVuZ3RoID09PSAwKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLicpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgpmdW5jdGlvbiBmb2xkSGVhZGVyKGhlYWRlcikgewogIHZhciBydmFsID0gaGVhZGVyLm5hbWUgKyAnOiAnOwoKICAvLyBlbnN1cmUgdmFsdWVzIHdpdGggQ1JMRiBhcmUgZm9sZGVkCiAgdmFyIHZhbHVlcyA9IFtdOwogIHZhciBpbnNlcnRTcGFjZSA9IGZ1bmN0aW9uKG1hdGNoLCAkMSkgewogICAgcmV0dXJuICcgJyArICQxOwogIH07CiAgZm9yKHZhciBpID0gMDsgaSA8IGhlYWRlci52YWx1ZXMubGVuZ3RoOyArK2kpIHsKICAgIHZhbHVlcy5wdXNoKGhlYWRlci52YWx1ZXNbaV0ucmVwbGFjZSgvXihcUytcclxuKS8sIGluc2VydFNwYWNlKSk7CiAgfQogIHJ2YWwgKz0gdmFsdWVzLmpvaW4oJywnKSArICdcclxuJzsKCiAgLy8gZG8gZm9sZGluZwogIHZhciBsZW5ndGggPSAwOwogIHZhciBjYW5kaWRhdGUgPSAtMTsKICBmb3IodmFyIGkgPSAwOyBpIDwgcnZhbC5sZW5ndGg7ICsraSwgKytsZW5ndGgpIHsKICAgIGlmKGxlbmd0aCA+IDY1ICYmIGNhbmRpZGF0ZSAhPT0gLTEpIHsKICAgICAgdmFyIGluc2VydCA9IHJ2YWxbY2FuZGlkYXRlXTsKICAgICAgaWYoaW5zZXJ0ID09PSAnLCcpIHsKICAgICAgICArK2NhbmRpZGF0ZTsKICAgICAgICBydmFsID0gcnZhbC5zdWJzdHIoMCwgY2FuZGlkYXRlKSArICdcclxuICcgKyBydmFsLnN1YnN0cihjYW5kaWRhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHJ2YWwgPSBydmFsLnN1YnN0cigwLCBjYW5kaWRhdGUpICsKICAgICAgICAgICdcclxuJyArIGluc2VydCArIHJ2YWwuc3Vic3RyKGNhbmRpZGF0ZSArIDEpOwogICAgICB9CiAgICAgIGxlbmd0aCA9IChpIC0gY2FuZGlkYXRlIC0gMSk7CiAgICAgIGNhbmRpZGF0ZSA9IC0xOwogICAgICArK2k7CiAgICB9IGVsc2UgaWYocnZhbFtpXSA9PT0gJyAnIHx8IHJ2YWxbaV0gPT09ICdcdCcgfHwgcnZhbFtpXSA9PT0gJywnKSB7CiAgICAgIGNhbmRpZGF0ZSA9IGk7CiAgICB9CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKZnVuY3Rpb24gbHRyaW0oc3RyKSB7CiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXHMrLywgJycpOwp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdwZW0nOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcGVtJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBERVMgKERhdGEgRW5jcnlwdGlvbiBTdGFuZGFyZCkgaW1wbGVtZW50YXRpb24uCiAqCiAqIFRoaXMgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgREVTIGFzIHdlbGwgYXMgM0RFUy1FREUgaW4gRUNCIGFuZCBDQkMgbW9kZS4KICogSXQgaXMgYmFzZWQgb24gdGhlIEJTRC1saWNlbnNlZCBpbXBsZW1lbnRhdGlvbiBieSBQYXVsIFRlcm86CiAqCiAqIFBhdWwgVGVybywgSnVseSAyMDAxCiAqIGh0dHA6Ly93d3cudGVyby5jby51ay9kZXMvCiAqCiAqIE9wdGltaXNlZCBmb3IgcGVyZm9ybWFuY2Ugd2l0aCBsYXJnZSBibG9ja3MgYnkgTWljaGFlbCBIYXl3b3J0aCwgTm92ZW1iZXIgMjAwMQogKiBodHRwOi8vd3d3Lm5ldGRlYWxpbmcuY29tCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQKICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCiAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBhdXRob3IgU3RlZmFuIFNpZWdsCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMiBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8qIERFUyBBUEkgKi8KZm9yZ2UuZGVzID0gZm9yZ2UuZGVzIHx8IHt9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGNpcGhlciA9IGZvcmdlLmNpcGhlci5jcmVhdGVDaXBoZXIoJ0RFUy08bW9kZT4nLCBrZXkpOwogKiBjaXBoZXIuc3RhcnQoe2l2OiBpdn0pOwogKgogKiBDcmVhdGVzIGFuIERFUyBjaXBoZXIgb2JqZWN0IHRvIGVuY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICogVGhlIG91dHB1dCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgJ291dHB1dCcgbWVtYmVyIG9mIHRoZSByZXR1cm5lZCBjaXBoZXIuCiAqCiAqIFRoZSBrZXkgYW5kIGl2IG1heSBiZSBnaXZlbiBhcyBiaW5hcnktZW5jb2RlZCBzdHJpbmdzIG9mIGJ5dGVzIG9yCiAqIGJ5dGUgYnVmZmVycy4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UgKDY0IG9yIDE5MiBiaXRzKS4KICogQHBhcmFtIGl2IHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICogQHBhcmFtIG1vZGUgdGhlIGNpcGhlciBtb2RlIHRvIHVzZSAoZGVmYXVsdDogJ0NCQycgaWYgSVYgaXMKICogICAgICAgICAgZ2l2ZW4sICdFQ0InIGlmIG51bGwpLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5kZXMuc3RhcnRFbmNyeXB0aW5nID0gZnVuY3Rpb24oa2V5LCBpdiwgb3V0cHV0LCBtb2RlKSB7CiAgdmFyIGNpcGhlciA9IF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG91dHB1dCwKICAgIGRlY3J5cHQ6IGZhbHNlLAogICAgbW9kZTogbW9kZSB8fCAoaXYgPT09IG51bGwgPyAnRUNCJyA6ICdDQkMnKQogIH0pOwogIGNpcGhlci5zdGFydChpdik7CiAgcmV0dXJuIGNpcGhlcjsKfTsKCi8qKgogKiBEZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2U6CiAqCiAqIHZhciBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKCdERVMtPG1vZGU+Jywga2V5KTsKICoKICogQ3JlYXRlcyBhbiBERVMgY2lwaGVyIG9iamVjdCB0byBlbmNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqCiAqIFRoZSBrZXkgbWF5IGJlIGdpdmVuIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlICg2NCBvciAxOTIgYml0cykuCiAqIEBwYXJhbSBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UuZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXIgPSBmdW5jdGlvbihrZXksIG1vZGUpIHsKICByZXR1cm4gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogbnVsbCwKICAgIGRlY3J5cHQ6IGZhbHNlLAogICAgbW9kZTogbW9kZQogIH0pOwp9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGRlY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCdERVMtPG1vZGU+Jywga2V5KTsKICogZGVjaXBoZXIuc3RhcnQoe2l2OiBpdn0pOwogKgogKiBDcmVhdGVzIGFuIERFUyBjaXBoZXIgb2JqZWN0IHRvIGRlY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICogVGhlIG91dHB1dCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgJ291dHB1dCcgbWVtYmVyIG9mIHRoZSByZXR1cm5lZCBjaXBoZXIuCiAqCiAqIFRoZSBrZXkgYW5kIGl2IG1heSBiZSBnaXZlbiBhcyBiaW5hcnktZW5jb2RlZCBzdHJpbmdzIG9mIGJ5dGVzIG9yCiAqIGJ5dGUgYnVmZmVycy4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UgKDY0IG9yIDE5MiBiaXRzKS4KICogQHBhcmFtIGl2IHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICogQHBhcmFtIG1vZGUgdGhlIGNpcGhlciBtb2RlIHRvIHVzZSAoZGVmYXVsdDogJ0NCQycgaWYgSVYgaXMKICogICAgICAgICAgZ2l2ZW4sICdFQ0InIGlmIG51bGwpLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5kZXMuc3RhcnREZWNyeXB0aW5nID0gZnVuY3Rpb24oa2V5LCBpdiwgb3V0cHV0LCBtb2RlKSB7CiAgdmFyIGNpcGhlciA9IF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG91dHB1dCwKICAgIGRlY3J5cHQ6IHRydWUsCiAgICBtb2RlOiBtb2RlIHx8IChpdiA9PT0gbnVsbCA/ICdFQ0InIDogJ0NCQycpCiAgfSk7CiAgY2lwaGVyLnN0YXJ0KGl2KTsKICByZXR1cm4gY2lwaGVyOwp9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGRlY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCdERVMtPG1vZGU+Jywga2V5KTsKICoKICogQ3JlYXRlcyBhbiBERVMgY2lwaGVyIG9iamVjdCB0byBkZWNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqCiAqIFRoZSBrZXkgbWF5IGJlIGdpdmVuIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlICg2NCBvciAxOTIgYml0cykuCiAqIEBwYXJhbSBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UuZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIgPSBmdW5jdGlvbihrZXksIG1vZGUpIHsKICByZXR1cm4gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogbnVsbCwKICAgIGRlY3J5cHQ6IHRydWUsCiAgICBtb2RlOiBtb2RlCiAgfSk7Cn07CgovKioKICogQ3JlYXRlcyBhIG5ldyBERVMgY2lwaGVyIGFsZ29yaXRobSBvYmplY3QuCiAqCiAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBhbGdvcml0aG0uCiAqIEBwYXJhbSBtb2RlIHRoZSBtb2RlIGZhY3RvcnkgZnVuY3Rpb24uCiAqCiAqIEByZXR1cm4gdGhlIERFUyBhbGdvcml0aG0gb2JqZWN0LgogKi8KZm9yZ2UuZGVzLkFsZ29yaXRobSA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUpIHsKICB2YXIgc2VsZiA9IHRoaXM7CiAgc2VsZi5uYW1lID0gbmFtZTsKICBzZWxmLm1vZGUgPSBuZXcgbW9kZSh7CiAgICBibG9ja1NpemU6IDgsCiAgICBjaXBoZXI6IHsKICAgICAgZW5jcnlwdDogZnVuY3Rpb24oaW5CbG9jaywgb3V0QmxvY2spIHsKICAgICAgICByZXR1cm4gX3VwZGF0ZUJsb2NrKHNlbGYuX2tleXMsIGluQmxvY2ssIG91dEJsb2NrLCBmYWxzZSk7CiAgICAgIH0sCiAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uKGluQmxvY2ssIG91dEJsb2NrKSB7CiAgICAgICAgcmV0dXJuIF91cGRhdGVCbG9jayhzZWxmLl9rZXlzLCBpbkJsb2NrLCBvdXRCbG9jaywgdHJ1ZSk7CiAgICAgIH0KICAgIH0KICB9KTsKICBzZWxmLl9pbml0ID0gZmFsc2U7Cn07CgovKioKICogSW5pdGlhbGl6ZXMgdGhpcyBERVMgYWxnb3JpdGhtIGJ5IGV4cGFuZGluZyBpdHMga2V5LgogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIGtleSB0aGUga2V5IHRvIHVzZSB3aXRoIHRoaXMgYWxnb3JpdGhtLgogKiAgICAgICAgICBkZWNyeXB0IHRydWUgaWYgdGhlIGFsZ29yaXRobSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgZm9yIGRlY3J5cHRpb24sCiAqICAgICAgICAgICAgZmFsc2UgZm9yIGVuY3J5cHRpb24uCiAqLwpmb3JnZS5kZXMuQWxnb3JpdGhtLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24ob3B0aW9ucykgewogIGlmKHRoaXMuX2luaXQpIHsKICAgIHJldHVybjsKICB9CgogIHZhciBrZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihvcHRpb25zLmtleSk7CiAgaWYodGhpcy5uYW1lLmluZGV4T2YoJzNERVMnKSA9PT0gMCkgewogICAgaWYoa2V5Lmxlbmd0aCgpICE9PSAyNCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgVHJpcGxlLURFUyBrZXkgc2l6ZTogJyArIGtleS5sZW5ndGgoKSAqIDgpOwogICAgfQogIH0KCiAgLy8gZG8ga2V5IGV4cGFuc2lvbiB0byAxNiBvciA0OCBzdWJrZXlzIChzaW5nbGUgb3IgdHJpcGxlIERFUykKICB0aGlzLl9rZXlzID0gX2NyZWF0ZUtleXMoa2V5KTsKICB0aGlzLl9pbml0ID0gdHJ1ZTsKfTsKCgovKiogUmVnaXN0ZXIgREVTIGFsZ29yaXRobXMgKiovCgpyZWdpc3RlckFsZ29yaXRobSgnREVTLUVDQicsIGZvcmdlLmNpcGhlci5tb2Rlcy5lY2IpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLUNCQycsIGZvcmdlLmNpcGhlci5tb2Rlcy5jYmMpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLUNGQicsIGZvcmdlLmNpcGhlci5tb2Rlcy5jZmIpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLU9GQicsIGZvcmdlLmNpcGhlci5tb2Rlcy5vZmIpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLUNUUicsIGZvcmdlLmNpcGhlci5tb2Rlcy5jdHIpOwoKcmVnaXN0ZXJBbGdvcml0aG0oJzNERVMtRUNCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmVjYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCczREVTLUNCQycsIGZvcmdlLmNpcGhlci5tb2Rlcy5jYmMpOwpyZWdpc3RlckFsZ29yaXRobSgnM0RFUy1DRkInLCBmb3JnZS5jaXBoZXIubW9kZXMuY2ZiKTsKcmVnaXN0ZXJBbGdvcml0aG0oJzNERVMtT0ZCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLm9mYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCczREVTLUNUUicsIGZvcmdlLmNpcGhlci5tb2Rlcy5jdHIpOwoKZnVuY3Rpb24gcmVnaXN0ZXJBbGdvcml0aG0obmFtZSwgbW9kZSkgewogIHZhciBmYWN0b3J5ID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gbmV3IGZvcmdlLmRlcy5BbGdvcml0aG0obmFtZSwgbW9kZSk7CiAgfTsKICBmb3JnZS5jaXBoZXIucmVnaXN0ZXJBbGdvcml0aG0obmFtZSwgZmFjdG9yeSk7Cn0KCgovKiogREVTIGltcGxlbWVudGF0aW9uICoqLwoKdmFyIHNwZnVuY3Rpb24xID0gWzB4MTAxMDQwMCwwLDB4MTAwMDAsMHgxMDEwNDA0LDB4MTAxMDAwNCwweDEwNDA0LDB4NCwweDEwMDAwLDB4NDAwLDB4MTAxMDQwMCwweDEwMTA0MDQsMHg0MDAsMHgxMDAwNDA0LDB4MTAxMDAwNCwweDEwMDAwMDAsMHg0LDB4NDA0LDB4MTAwMDQwMCwweDEwMDA0MDAsMHgxMDQwMCwweDEwNDAwLDB4MTAxMDAwMCwweDEwMTAwMDAsMHgxMDAwNDA0LDB4MTAwMDQsMHgxMDAwMDA0LDB4MTAwMDAwNCwweDEwMDA0LDAsMHg0MDQsMHgxMDQwNCwweDEwMDAwMDAsMHgxMDAwMCwweDEwMTA0MDQsMHg0LDB4MTAxMDAwMCwweDEwMTA0MDAsMHgxMDAwMDAwLDB4MTAwMDAwMCwweDQwMCwweDEwMTAwMDQsMHgxMDAwMCwweDEwNDAwLDB4MTAwMDAwNCwweDQwMCwweDQsMHgxMDAwNDA0LDB4MTA0MDQsMHgxMDEwNDA0LDB4MTAwMDQsMHgxMDEwMDAwLDB4MTAwMDQwNCwweDEwMDAwMDQsMHg0MDQsMHgxMDQwNCwweDEwMTA0MDAsMHg0MDQsMHgxMDAwNDAwLDB4MTAwMDQwMCwwLDB4MTAwMDQsMHgxMDQwMCwwLDB4MTAxMDAwNF07CnZhciBzcGZ1bmN0aW9uMiA9IFstMHg3ZmVmN2ZlMCwtMHg3ZmZmODAwMCwweDgwMDAsMHgxMDgwMjAsMHgxMDAwMDAsMHgyMCwtMHg3ZmVmZmZlMCwtMHg3ZmZmN2ZlMCwtMHg3ZmZmZmZlMCwtMHg3ZmVmN2ZlMCwtMHg3ZmVmODAwMCwtMHg4MDAwMDAwMCwtMHg3ZmZmODAwMCwweDEwMDAwMCwweDIwLC0weDdmZWZmZmUwLDB4MTA4MDAwLDB4MTAwMDIwLC0weDdmZmY3ZmUwLDAsLTB4ODAwMDAwMDAsMHg4MDAwLDB4MTA4MDIwLC0weDdmZjAwMDAwLDB4MTAwMDIwLC0weDdmZmZmZmUwLDAsMHgxMDgwMDAsMHg4MDIwLC0weDdmZWY4MDAwLC0weDdmZjAwMDAwLDB4ODAyMCwwLDB4MTA4MDIwLC0weDdmZWZmZmUwLDB4MTAwMDAwLC0weDdmZmY3ZmUwLC0weDdmZjAwMDAwLC0weDdmZWY4MDAwLDB4ODAwMCwtMHg3ZmYwMDAwMCwtMHg3ZmZmODAwMCwweDIwLC0weDdmZWY3ZmUwLDB4MTA4MDIwLDB4MjAsMHg4MDAwLC0weDgwMDAwMDAwLDB4ODAyMCwtMHg3ZmVmODAwMCwweDEwMDAwMCwtMHg3ZmZmZmZlMCwweDEwMDAyMCwtMHg3ZmZmN2ZlMCwtMHg3ZmZmZmZlMCwweDEwMDAyMCwweDEwODAwMCwwLC0weDdmZmY4MDAwLDB4ODAyMCwtMHg4MDAwMDAwMCwtMHg3ZmVmZmZlMCwtMHg3ZmVmN2ZlMCwweDEwODAwMF07CnZhciBzcGZ1bmN0aW9uMyA9IFsweDIwOCwweDgwMjAyMDAsMCwweDgwMjAwMDgsMHg4MDAwMjAwLDAsMHgyMDIwOCwweDgwMDAyMDAsMHgyMDAwOCwweDgwMDAwMDgsMHg4MDAwMDA4LDB4MjAwMDAsMHg4MDIwMjA4LDB4MjAwMDgsMHg4MDIwMDAwLDB4MjA4LDB4ODAwMDAwMCwweDgsMHg4MDIwMjAwLDB4MjAwLDB4MjAyMDAsMHg4MDIwMDAwLDB4ODAyMDAwOCwweDIwMjA4LDB4ODAwMDIwOCwweDIwMjAwLDB4MjAwMDAsMHg4MDAwMjA4LDB4OCwweDgwMjAyMDgsMHgyMDAsMHg4MDAwMDAwLDB4ODAyMDIwMCwweDgwMDAwMDAsMHgyMDAwOCwweDIwOCwweDIwMDAwLDB4ODAyMDIwMCwweDgwMDAyMDAsMCwweDIwMCwweDIwMDA4LDB4ODAyMDIwOCwweDgwMDAyMDAsMHg4MDAwMDA4LDB4MjAwLDAsMHg4MDIwMDA4LDB4ODAwMDIwOCwweDIwMDAwLDB4ODAwMDAwMCwweDgwMjAyMDgsMHg4LDB4MjAyMDgsMHgyMDIwMCwweDgwMDAwMDgsMHg4MDIwMDAwLDB4ODAwMDIwOCwweDIwOCwweDgwMjAwMDAsMHgyMDIwOCwweDgsMHg4MDIwMDA4LDB4MjAyMDBdOwp2YXIgc3BmdW5jdGlvbjQgPSBbMHg4MDIwMDEsMHgyMDgxLDB4MjA4MSwweDgwLDB4ODAyMDgwLDB4ODAwMDgxLDB4ODAwMDAxLDB4MjAwMSwwLDB4ODAyMDAwLDB4ODAyMDAwLDB4ODAyMDgxLDB4ODEsMCwweDgwMDA4MCwweDgwMDAwMSwweDEsMHgyMDAwLDB4ODAwMDAwLDB4ODAyMDAxLDB4ODAsMHg4MDAwMDAsMHgyMDAxLDB4MjA4MCwweDgwMDA4MSwweDEsMHgyMDgwLDB4ODAwMDgwLDB4MjAwMCwweDgwMjA4MCwweDgwMjA4MSwweDgxLDB4ODAwMDgwLDB4ODAwMDAxLDB4ODAyMDAwLDB4ODAyMDgxLDB4ODEsMCwwLDB4ODAyMDAwLDB4MjA4MCwweDgwMDA4MCwweDgwMDA4MSwweDEsMHg4MDIwMDEsMHgyMDgxLDB4MjA4MSwweDgwLDB4ODAyMDgxLDB4ODEsMHgxLDB4MjAwMCwweDgwMDAwMSwweDIwMDEsMHg4MDIwODAsMHg4MDAwODEsMHgyMDAxLDB4MjA4MCwweDgwMDAwMCwweDgwMjAwMSwweDgwLDB4ODAwMDAwLDB4MjAwMCwweDgwMjA4MF07CnZhciBzcGZ1bmN0aW9uNSA9IFsweDEwMCwweDIwODAxMDAsMHgyMDgwMDAwLDB4NDIwMDAxMDAsMHg4MDAwMCwweDEwMCwweDQwMDAwMDAwLDB4MjA4MDAwMCwweDQwMDgwMTAwLDB4ODAwMDAsMHgyMDAwMTAwLDB4NDAwODAxMDAsMHg0MjAwMDEwMCwweDQyMDgwMDAwLDB4ODAxMDAsMHg0MDAwMDAwMCwweDIwMDAwMDAsMHg0MDA4MDAwMCwweDQwMDgwMDAwLDAsMHg0MDAwMDEwMCwweDQyMDgwMTAwLDB4NDIwODAxMDAsMHgyMDAwMTAwLDB4NDIwODAwMDAsMHg0MDAwMDEwMCwwLDB4NDIwMDAwMDAsMHgyMDgwMTAwLDB4MjAwMDAwMCwweDQyMDAwMDAwLDB4ODAxMDAsMHg4MDAwMCwweDQyMDAwMTAwLDB4MTAwLDB4MjAwMDAwMCwweDQwMDAwMDAwLDB4MjA4MDAwMCwweDQyMDAwMTAwLDB4NDAwODAxMDAsMHgyMDAwMTAwLDB4NDAwMDAwMDAsMHg0MjA4MDAwMCwweDIwODAxMDAsMHg0MDA4MDEwMCwweDEwMCwweDIwMDAwMDAsMHg0MjA4MDAwMCwweDQyMDgwMTAwLDB4ODAxMDAsMHg0MjAwMDAwMCwweDQyMDgwMTAwLDB4MjA4MDAwMCwwLDB4NDAwODAwMDAsMHg0MjAwMDAwMCwweDgwMTAwLDB4MjAwMDEwMCwweDQwMDAwMTAwLDB4ODAwMDAsMCwweDQwMDgwMDAwLDB4MjA4MDEwMCwweDQwMDAwMTAwXTsKdmFyIHNwZnVuY3Rpb242ID0gWzB4MjAwMDAwMTAsMHgyMDQwMDAwMCwweDQwMDAsMHgyMDQwNDAxMCwweDIwNDAwMDAwLDB4MTAsMHgyMDQwNDAxMCwweDQwMDAwMCwweDIwMDA0MDAwLDB4NDA0MDEwLDB4NDAwMDAwLDB4MjAwMDAwMTAsMHg0MDAwMTAsMHgyMDAwNDAwMCwweDIwMDAwMDAwLDB4NDAxMCwwLDB4NDAwMDEwLDB4MjAwMDQwMTAsMHg0MDAwLDB4NDA0MDAwLDB4MjAwMDQwMTAsMHgxMCwweDIwNDAwMDEwLDB4MjA0MDAwMTAsMCwweDQwNDAxMCwweDIwNDA0MDAwLDB4NDAxMCwweDQwNDAwMCwweDIwNDA0MDAwLDB4MjAwMDAwMDAsMHgyMDAwNDAwMCwweDEwLDB4MjA0MDAwMTAsMHg0MDQwMDAsMHgyMDQwNDAxMCwweDQwMDAwMCwweDQwMTAsMHgyMDAwMDAxMCwweDQwMDAwMCwweDIwMDA0MDAwLDB4MjAwMDAwMDAsMHg0MDEwLDB4MjAwMDAwMTAsMHgyMDQwNDAxMCwweDQwNDAwMCwweDIwNDAwMDAwLDB4NDA0MDEwLDB4MjA0MDQwMDAsMCwweDIwNDAwMDEwLDB4MTAsMHg0MDAwLDB4MjA0MDAwMDAsMHg0MDQwMTAsMHg0MDAwLDB4NDAwMDEwLDB4MjAwMDQwMTAsMCwweDIwNDA0MDAwLDB4MjAwMDAwMDAsMHg0MDAwMTAsMHgyMDAwNDAxMF07CnZhciBzcGZ1bmN0aW9uNyA9IFsweDIwMDAwMCwweDQyMDAwMDIsMHg0MDAwODAyLDAsMHg4MDAsMHg0MDAwODAyLDB4MjAwODAyLDB4NDIwMDgwMCwweDQyMDA4MDIsMHgyMDAwMDAsMCwweDQwMDAwMDIsMHgyLDB4NDAwMDAwMCwweDQyMDAwMDIsMHg4MDIsMHg0MDAwODAwLDB4MjAwODAyLDB4MjAwMDAyLDB4NDAwMDgwMCwweDQwMDAwMDIsMHg0MjAwMDAwLDB4NDIwMDgwMCwweDIwMDAwMiwweDQyMDAwMDAsMHg4MDAsMHg4MDIsMHg0MjAwODAyLDB4MjAwODAwLDB4MiwweDQwMDAwMDAsMHgyMDA4MDAsMHg0MDAwMDAwLDB4MjAwODAwLDB4MjAwMDAwLDB4NDAwMDgwMiwweDQwMDA4MDIsMHg0MjAwMDAyLDB4NDIwMDAwMiwweDIsMHgyMDAwMDIsMHg0MDAwMDAwLDB4NDAwMDgwMCwweDIwMDAwMCwweDQyMDA4MDAsMHg4MDIsMHgyMDA4MDIsMHg0MjAwODAwLDB4ODAyLDB4NDAwMDAwMiwweDQyMDA4MDIsMHg0MjAwMDAwLDB4MjAwODAwLDAsMHgyLDB4NDIwMDgwMiwwLDB4MjAwODAyLDB4NDIwMDAwMCwweDgwMCwweDQwMDAwMDIsMHg0MDAwODAwLDB4ODAwLDB4MjAwMDAyXTsKdmFyIHNwZnVuY3Rpb244ID0gWzB4MTAwMDEwNDAsMHgxMDAwLDB4NDAwMDAsMHgxMDA0MTA0MCwweDEwMDAwMDAwLDB4MTAwMDEwNDAsMHg0MCwweDEwMDAwMDAwLDB4NDAwNDAsMHgxMDA0MDAwMCwweDEwMDQxMDQwLDB4NDEwMDAsMHgxMDA0MTAwMCwweDQxMDQwLDB4MTAwMCwweDQwLDB4MTAwNDAwMDAsMHgxMDAwMDA0MCwweDEwMDAxMDAwLDB4MTA0MCwweDQxMDAwLDB4NDAwNDAsMHgxMDA0MDA0MCwweDEwMDQxMDAwLDB4MTA0MCwwLDAsMHgxMDA0MDA0MCwweDEwMDAwMDQwLDB4MTAwMDEwMDAsMHg0MTA0MCwweDQwMDAwLDB4NDEwNDAsMHg0MDAwMCwweDEwMDQxMDAwLDB4MTAwMCwweDQwLDB4MTAwNDAwNDAsMHgxMDAwLDB4NDEwNDAsMHgxMDAwMTAwMCwweDQwLDB4MTAwMDAwNDAsMHgxMDA0MDAwMCwweDEwMDQwMDQwLDB4MTAwMDAwMDAsMHg0MDAwMCwweDEwMDAxMDQwLDAsMHgxMDA0MTA0MCwweDQwMDQwLDB4MTAwMDAwNDAsMHgxMDA0MDAwMCwweDEwMDAxMDAwLDB4MTAwMDEwNDAsMCwweDEwMDQxMDQwLDB4NDEwMDAsMHg0MTAwMCwweDEwNDAsMHgxMDQwLDB4NDAwNDAsMHgxMDAwMDAwMCwweDEwMDQxMDAwXTsKCi8qKgogKiBDcmVhdGUgbmVjZXNzYXJ5IHN1YiBrZXlzLgogKgogKiBAcGFyYW0ga2V5IHRoZSA2NC1iaXQgb3IgMTkyLWJpdCBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIGV4cGFuZGVkIGtleXMuCiAqLwpmdW5jdGlvbiBfY3JlYXRlS2V5cyhrZXkpIHsKICB2YXIgcGMyYnl0ZXMwICA9IFswLDB4NCwweDIwMDAwMDAwLDB4MjAwMDAwMDQsMHgxMDAwMCwweDEwMDA0LDB4MjAwMTAwMDAsMHgyMDAxMDAwNCwweDIwMCwweDIwNCwweDIwMDAwMjAwLDB4MjAwMDAyMDQsMHgxMDIwMCwweDEwMjA0LDB4MjAwMTAyMDAsMHgyMDAxMDIwNF0sCiAgICAgIHBjMmJ5dGVzMSAgPSBbMCwweDEsMHgxMDAwMDAsMHgxMDAwMDEsMHg0MDAwMDAwLDB4NDAwMDAwMSwweDQxMDAwMDAsMHg0MTAwMDAxLDB4MTAwLDB4MTAxLDB4MTAwMTAwLDB4MTAwMTAxLDB4NDAwMDEwMCwweDQwMDAxMDEsMHg0MTAwMTAwLDB4NDEwMDEwMV0sCiAgICAgIHBjMmJ5dGVzMiAgPSBbMCwweDgsMHg4MDAsMHg4MDgsMHgxMDAwMDAwLDB4MTAwMDAwOCwweDEwMDA4MDAsMHgxMDAwODA4LDAsMHg4LDB4ODAwLDB4ODA4LDB4MTAwMDAwMCwweDEwMDAwMDgsMHgxMDAwODAwLDB4MTAwMDgwOF0sCiAgICAgIHBjMmJ5dGVzMyAgPSBbMCwweDIwMDAwMCwweDgwMDAwMDAsMHg4MjAwMDAwLDB4MjAwMCwweDIwMjAwMCwweDgwMDIwMDAsMHg4MjAyMDAwLDB4MjAwMDAsMHgyMjAwMDAsMHg4MDIwMDAwLDB4ODIyMDAwMCwweDIyMDAwLDB4MjIyMDAwLDB4ODAyMjAwMCwweDgyMjIwMDBdLAogICAgICBwYzJieXRlczQgID0gWzAsMHg0MDAwMCwweDEwLDB4NDAwMTAsMCwweDQwMDAwLDB4MTAsMHg0MDAxMCwweDEwMDAsMHg0MTAwMCwweDEwMTAsMHg0MTAxMCwweDEwMDAsMHg0MTAwMCwweDEwMTAsMHg0MTAxMF0sCiAgICAgIHBjMmJ5dGVzNSAgPSBbMCwweDQwMCwweDIwLDB4NDIwLDAsMHg0MDAsMHgyMCwweDQyMCwweDIwMDAwMDAsMHgyMDAwNDAwLDB4MjAwMDAyMCwweDIwMDA0MjAsMHgyMDAwMDAwLDB4MjAwMDQwMCwweDIwMDAwMjAsMHgyMDAwNDIwXSwKICAgICAgcGMyYnl0ZXM2ICA9IFswLDB4MTAwMDAwMDAsMHg4MDAwMCwweDEwMDgwMDAwLDB4MiwweDEwMDAwMDAyLDB4ODAwMDIsMHgxMDA4MDAwMiwwLDB4MTAwMDAwMDAsMHg4MDAwMCwweDEwMDgwMDAwLDB4MiwweDEwMDAwMDAyLDB4ODAwMDIsMHgxMDA4MDAwMl0sCiAgICAgIHBjMmJ5dGVzNyAgPSBbMCwweDEwMDAwLDB4ODAwLDB4MTA4MDAsMHgyMDAwMDAwMCwweDIwMDEwMDAwLDB4MjAwMDA4MDAsMHgyMDAxMDgwMCwweDIwMDAwLDB4MzAwMDAsMHgyMDgwMCwweDMwODAwLDB4MjAwMjAwMDAsMHgyMDAzMDAwMCwweDIwMDIwODAwLDB4MjAwMzA4MDBdLAogICAgICBwYzJieXRlczggID0gWzAsMHg0MDAwMCwwLDB4NDAwMDAsMHgyLDB4NDAwMDIsMHgyLDB4NDAwMDIsMHgyMDAwMDAwLDB4MjA0MDAwMCwweDIwMDAwMDAsMHgyMDQwMDAwLDB4MjAwMDAwMiwweDIwNDAwMDIsMHgyMDAwMDAyLDB4MjA0MDAwMl0sCiAgICAgIHBjMmJ5dGVzOSAgPSBbMCwweDEwMDAwMDAwLDB4OCwweDEwMDAwMDA4LDAsMHgxMDAwMDAwMCwweDgsMHgxMDAwMDAwOCwweDQwMCwweDEwMDAwNDAwLDB4NDA4LDB4MTAwMDA0MDgsMHg0MDAsMHgxMDAwMDQwMCwweDQwOCwweDEwMDAwNDA4XSwKICAgICAgcGMyYnl0ZXMxMCA9IFswLDB4MjAsMCwweDIwLDB4MTAwMDAwLDB4MTAwMDIwLDB4MTAwMDAwLDB4MTAwMDIwLDB4MjAwMCwweDIwMjAsMHgyMDAwLDB4MjAyMCwweDEwMjAwMCwweDEwMjAyMCwweDEwMjAwMCwweDEwMjAyMF0sCiAgICAgIHBjMmJ5dGVzMTEgPSBbMCwweDEwMDAwMDAsMHgyMDAsMHgxMDAwMjAwLDB4MjAwMDAwLDB4MTIwMDAwMCwweDIwMDIwMCwweDEyMDAyMDAsMHg0MDAwMDAwLDB4NTAwMDAwMCwweDQwMDAyMDAsMHg1MDAwMjAwLDB4NDIwMDAwMCwweDUyMDAwMDAsMHg0MjAwMjAwLDB4NTIwMDIwMF0sCiAgICAgIHBjMmJ5dGVzMTIgPSBbMCwweDEwMDAsMHg4MDAwMDAwLDB4ODAwMTAwMCwweDgwMDAwLDB4ODEwMDAsMHg4MDgwMDAwLDB4ODA4MTAwMCwweDEwLDB4MTAxMCwweDgwMDAwMTAsMHg4MDAxMDEwLDB4ODAwMTAsMHg4MTAxMCwweDgwODAwMTAsMHg4MDgxMDEwXSwKICAgICAgcGMyYnl0ZXMxMyA9IFswLDB4NCwweDEwMCwweDEwNCwwLDB4NCwweDEwMCwweDEwNCwweDEsMHg1LDB4MTAxLDB4MTA1LDB4MSwweDUsMHgxMDEsMHgxMDVdOwoKICAvLyBob3cgbWFueSBpdGVyYXRpb25zICgxIGZvciBkZXMsIDMgZm9yIHRyaXBsZSBkZXMpCiAgLy8gY2hhbmdlZCBieSBQYXVsIDE2LzYvMjAwNyB0byB1c2UgVHJpcGxlIERFUyBmb3IgOSsgYnl0ZSBrZXlzCiAgdmFyIGl0ZXJhdGlvbnMgPSBrZXkubGVuZ3RoKCkgPiA4ID8gMyA6IDE7CgogIC8vIHN0b3JlcyB0aGUgcmV0dXJuIGtleXMKICB2YXIga2V5cyA9IFtdOwoKICAvLyBub3cgZGVmaW5lIHRoZSBsZWZ0IHNoaWZ0cyB3aGljaCBuZWVkIHRvIGJlIGRvbmUKICB2YXIgc2hpZnRzID0gWzAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDBdOwoKICB2YXIgbiA9IDAsIHRtcDsKICBmb3IodmFyIGogPSAwOyBqIDwgaXRlcmF0aW9uczsgaiArKykgewogICAgdmFyIGxlZnQgPSBrZXkuZ2V0SW50MzIoKTsKICAgIHZhciByaWdodCA9IGtleS5nZXRJbnQzMigpOwoKICAgIHRtcCA9ICgobGVmdCA+Pj4gNCkgXiByaWdodCkgJiAweDBmMGYwZjBmOwogICAgcmlnaHQgXj0gdG1wOwogICAgbGVmdCBePSAodG1wIDw8IDQpOwoKICAgIHRtcCA9ICgocmlnaHQgPj4+IC0xNikgXiBsZWZ0KSAmIDB4MDAwMGZmZmY7CiAgICBsZWZ0IF49IHRtcDsKICAgIHJpZ2h0IF49ICh0bXAgPDwgLTE2KTsKCiAgICB0bXAgPSAoKGxlZnQgPj4+IDIpIF4gcmlnaHQpICYgMHgzMzMzMzMzMzsKICAgIHJpZ2h0IF49IHRtcDsKICAgIGxlZnQgXj0gKHRtcCA8PCAyKTsKCiAgICB0bXAgPSAoKHJpZ2h0ID4+PiAtMTYpIF4gbGVmdCkgJiAweDAwMDBmZmZmOwogICAgbGVmdCBePSB0bXA7CiAgICByaWdodCBePSAodG1wIDw8IC0xNik7CgogICAgdG1wID0gKChsZWZ0ID4+PiAxKSBeIHJpZ2h0KSAmIDB4NTU1NTU1NTU7CiAgICByaWdodCBePSB0bXA7CiAgICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogICAgdG1wID0gKChyaWdodCA+Pj4gOCkgXiBsZWZ0KSAmIDB4MDBmZjAwZmY7CiAgICBsZWZ0IF49IHRtcDsKICAgIHJpZ2h0IF49ICh0bXAgPDwgOCk7CgogICAgdG1wID0gKChsZWZ0ID4+PiAxKSBeIHJpZ2h0KSAmIDB4NTU1NTU1NTU7CiAgICByaWdodCBePSB0bXA7CiAgICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogICAgLy8gcmlnaHQgbmVlZHMgdG8gYmUgc2hpZnRlZCBhbmQgT1InZCB3aXRoIGxhc3QgZm91ciBiaXRzIG9mIGxlZnQKICAgIHRtcCA9IChsZWZ0IDw8IDgpIHwgKChyaWdodCA+Pj4gMjApICYgMHgwMDAwMDBmMCk7CgogICAgLy8gbGVmdCBuZWVkcyB0byBiZSBwdXQgdXBzaWRlIGRvd24KICAgIGxlZnQgPSAoKHJpZ2h0IDw8IDI0KSB8ICgocmlnaHQgPDwgOCkgJiAweGZmMDAwMCkgfAogICAgICAoKHJpZ2h0ID4+PiA4KSAmIDB4ZmYwMCkgfCAoKHJpZ2h0ID4+PiAyNCkgJiAweGYwKSk7CiAgICByaWdodCA9IHRtcDsKCiAgICAvLyBub3cgZ28gdGhyb3VnaCBhbmQgcGVyZm9ybSB0aGVzZSBzaGlmdHMgb24gdGhlIGxlZnQgYW5kIHJpZ2h0IGtleXMKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaGlmdHMubGVuZ3RoOyArK2kpIHsKICAgICAgLy9zaGlmdCB0aGUga2V5cyBlaXRoZXIgb25lIG9yIHR3byBiaXRzIHRvIHRoZSBsZWZ0CiAgICAgIGlmKHNoaWZ0c1tpXSkgewogICAgICAgIGxlZnQgPSAobGVmdCA8PCAyKSB8IChsZWZ0ID4+PiAyNik7CiAgICAgICAgcmlnaHQgPSAocmlnaHQgPDwgMikgfCAocmlnaHQgPj4+IDI2KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZWZ0ID0gKGxlZnQgPDwgMSkgfCAobGVmdCA+Pj4gMjcpOwogICAgICAgIHJpZ2h0ID0gKHJpZ2h0IDw8IDEpIHwgKHJpZ2h0ID4+PiAyNyk7CiAgICAgIH0KICAgICAgbGVmdCAmPSAtMHhmOwogICAgICByaWdodCAmPSAtMHhmOwoKICAgICAgLy8gbm93IGFwcGx5IFBDLTIsIGluIHN1Y2ggYSB3YXkgdGhhdCBFIGlzIGVhc2llciB3aGVuIGVuY3J5cHRpbmcgb3IKICAgICAgLy8gZGVjcnlwdGluZyB0aGlzIGNvbnZlcnNpb24gd2lsbCBsb29rIGxpa2UgUEMtMiBleGNlcHQgb25seSB0aGUgbGFzdCA2CiAgICAgIC8vIGJpdHMgb2YgZWFjaCBieXRlIGFyZSB1c2VkIHJhdGhlciB0aGFuIDQ4IGNvbnNlY3V0aXZlIGJpdHMgYW5kIHRoZQogICAgICAvLyBvcmRlciBvZiBsaW5lcyB3aWxsIGJlIGFjY29yZGluZyB0byBob3cgdGhlIFMgc2VsZWN0aW9uIGZ1bmN0aW9ucyB3aWxsCiAgICAgIC8vIGJlIGFwcGxpZWQ6IFMyLCBTNCwgUzYsIFM4LCBTMSwgUzMsIFM1LCBTNwogICAgICB2YXIgbGVmdHRtcCA9ICgKICAgICAgICBwYzJieXRlczBbbGVmdCA+Pj4gMjhdIHwgcGMyYnl0ZXMxWyhsZWZ0ID4+PiAyNCkgJiAweGZdIHwKICAgICAgICBwYzJieXRlczJbKGxlZnQgPj4+IDIwKSAmIDB4Zl0gfCBwYzJieXRlczNbKGxlZnQgPj4+IDE2KSAmIDB4Zl0gfAogICAgICAgIHBjMmJ5dGVzNFsobGVmdCA+Pj4gMTIpICYgMHhmXSB8IHBjMmJ5dGVzNVsobGVmdCA+Pj4gOCkgJiAweGZdIHwKICAgICAgICBwYzJieXRlczZbKGxlZnQgPj4+IDQpICYgMHhmXSk7CiAgICAgIHZhciByaWdodHRtcCA9ICgKICAgICAgICBwYzJieXRlczdbcmlnaHQgPj4+IDI4XSB8IHBjMmJ5dGVzOFsocmlnaHQgPj4+IDI0KSAmIDB4Zl0gfAogICAgICAgIHBjMmJ5dGVzOVsocmlnaHQgPj4+IDIwKSAmIDB4Zl0gfCBwYzJieXRlczEwWyhyaWdodCA+Pj4gMTYpICYgMHhmXSB8CiAgICAgICAgcGMyYnl0ZXMxMVsocmlnaHQgPj4+IDEyKSAmIDB4Zl0gfCBwYzJieXRlczEyWyhyaWdodCA+Pj4gOCkgJiAweGZdIHwKICAgICAgICBwYzJieXRlczEzWyhyaWdodCA+Pj4gNCkgJiAweGZdKTsKICAgICAgdG1wID0gKChyaWdodHRtcCA+Pj4gMTYpIF4gbGVmdHRtcCkgJiAweDAwMDBmZmZmOwogICAgICBrZXlzW24rK10gPSBsZWZ0dG1wIF4gdG1wOwogICAgICBrZXlzW24rK10gPSByaWdodHRtcCBeICh0bXAgPDwgMTYpOwogICAgfQogIH0KCiAgcmV0dXJuIGtleXM7Cn0KCi8qKgogKiBVcGRhdGVzIGEgc2luZ2xlIGJsb2NrICgxIGJ5dGUpIHVzaW5nIERFUy4gVGhlIHVwZGF0ZSB3aWxsIGVpdGhlcgogKiBlbmNyeXB0IG9yIGRlY3J5cHQgdGhlIGJsb2NrLgogKgogKiBAcGFyYW0ga2V5cyB0aGUgZXhwYW5kZWQga2V5cy4KICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBibG9jayAoYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzKS4KICogQHBhcmFtIG91dHB1dCB0aGUgdXBkYXRlZCBvdXRwdXQgYmxvY2suCiAqIEBwYXJhbSBkZWNyeXB0IHRydWUgdG8gZGVjcnlwdCB0aGUgYmxvY2ssIGZhbHNlIHRvIGVuY3J5cHQgaXQuCiAqLwpmdW5jdGlvbiBfdXBkYXRlQmxvY2soa2V5cywgaW5wdXQsIG91dHB1dCwgZGVjcnlwdCkgewogIC8vIHNldCB1cCBsb29wcyBmb3Igc2luZ2xlIG9yIHRyaXBsZSBERVMKICB2YXIgaXRlcmF0aW9ucyA9IGtleXMubGVuZ3RoID09PSAzMiA/IDMgOiA5OwogIHZhciBsb29waW5nOwogIGlmKGl0ZXJhdGlvbnMgPT09IDMpIHsKICAgIGxvb3BpbmcgPSBkZWNyeXB0ID8gWzMwLCAtMiwgLTJdIDogWzAsIDMyLCAyXTsKICB9IGVsc2UgewogICAgbG9vcGluZyA9IChkZWNyeXB0ID8KICAgICAgWzk0LCA2MiwgLTIsIDMyLCA2NCwgMiwgMzAsIC0yLCAtMl0gOgogICAgICBbMCwgMzIsIDIsIDYyLCAzMCwgLTIsIDY0LCA5NiwgMl0pOwogIH0KCiAgdmFyIHRtcDsKCiAgdmFyIGxlZnQgPSBpbnB1dFswXTsKICB2YXIgcmlnaHQgPSBpbnB1dFsxXTsKCiAgLy8gZmlyc3QgZWFjaCA2NCBiaXQgY2h1bmsgb2YgdGhlIG1lc3NhZ2UgbXVzdCBiZSBwZXJtdXRlZCBhY2NvcmRpbmcgdG8gSVAKICB0bXAgPSAoKGxlZnQgPj4+IDQpIF4gcmlnaHQpICYgMHgwZjBmMGYwZjsKICByaWdodCBePSB0bXA7CiAgbGVmdCBePSAodG1wIDw8IDQpOwoKICB0bXAgPSAoKGxlZnQgPj4+IDE2KSBeIHJpZ2h0KSAmIDB4MDAwMGZmZmY7CiAgcmlnaHQgXj0gdG1wOwogIGxlZnQgXj0gKHRtcCA8PCAxNik7CgogIHRtcCA9ICgocmlnaHQgPj4+IDIpIF4gbGVmdCkgJiAweDMzMzMzMzMzOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgMik7CgogIHRtcCA9ICgocmlnaHQgPj4+IDgpIF4gbGVmdCkgJiAweDAwZmYwMGZmOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgOCk7CgogIHRtcCA9ICgobGVmdCA+Pj4gMSkgXiByaWdodCkgJiAweDU1NTU1NTU1OwogIHJpZ2h0IF49IHRtcDsKICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogIC8vIHJvdGF0ZSBsZWZ0IDEgYml0CiAgbGVmdCA9ICgobGVmdCA8PCAxKSB8IChsZWZ0ID4+PiAzMSkpOwogIHJpZ2h0ID0gKChyaWdodCA8PCAxKSB8IChyaWdodCA+Pj4gMzEpKTsKCiAgZm9yKHZhciBqID0gMDsgaiA8IGl0ZXJhdGlvbnM7IGogKz0gMykgewogICAgdmFyIGVuZGxvb3AgPSBsb29waW5nW2ogKyAxXTsKICAgIHZhciBsb29waW5jID0gbG9vcGluZ1tqICsgMl07CgogICAgLy8gbm93IGdvIHRocm91Z2ggYW5kIHBlcmZvcm0gdGhlIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbgogICAgZm9yKHZhciBpID0gbG9vcGluZ1tqXTsgaSAhPSBlbmRsb29wOyBpICs9IGxvb3BpbmMpIHsKICAgICAgdmFyIHJpZ2h0MSA9IHJpZ2h0IF4ga2V5c1tpXTsKICAgICAgdmFyIHJpZ2h0MiA9ICgocmlnaHQgPj4+IDQpIHwgKHJpZ2h0IDw8IDI4KSkgXiBrZXlzW2kgKyAxXTsKCiAgICAgIC8vIHBhc3NpbmcgdGhlc2UgYnl0ZXMgdGhyb3VnaCB0aGUgUyBzZWxlY3Rpb24gZnVuY3Rpb25zCiAgICAgIHRtcCA9IGxlZnQ7CiAgICAgIGxlZnQgPSByaWdodDsKICAgICAgcmlnaHQgPSB0bXAgXiAoCiAgICAgICAgc3BmdW5jdGlvbjJbKHJpZ2h0MSA+Pj4gMjQpICYgMHgzZl0gfAogICAgICAgIHNwZnVuY3Rpb240WyhyaWdodDEgPj4+IDE2KSAmIDB4M2ZdIHwKICAgICAgICBzcGZ1bmN0aW9uNlsocmlnaHQxID4+PiAgOCkgJiAweDNmXSB8CiAgICAgICAgc3BmdW5jdGlvbjhbcmlnaHQxICYgMHgzZl0gfAogICAgICAgIHNwZnVuY3Rpb24xWyhyaWdodDIgPj4+IDI0KSAmIDB4M2ZdIHwKICAgICAgICBzcGZ1bmN0aW9uM1socmlnaHQyID4+PiAxNikgJiAweDNmXSB8CiAgICAgICAgc3BmdW5jdGlvbjVbKHJpZ2h0MiA+Pj4gIDgpICYgMHgzZl0gfAogICAgICAgIHNwZnVuY3Rpb243W3JpZ2h0MiAmIDB4M2ZdKTsKICAgIH0KICAgIC8vIHVucmV2ZXJzZSBsZWZ0IGFuZCByaWdodAogICAgdG1wID0gbGVmdDsKICAgIGxlZnQgPSByaWdodDsKICAgIHJpZ2h0ID0gdG1wOwogIH0KCiAgLy8gcm90YXRlIHJpZ2h0IDEgYml0CiAgbGVmdCA9ICgobGVmdCA+Pj4gMSkgfCAobGVmdCA8PCAzMSkpOwogIHJpZ2h0ID0gKChyaWdodCA+Pj4gMSkgfCAocmlnaHQgPDwgMzEpKTsKCiAgLy8gbm93IHBlcmZvcm0gSVAtMSwgd2hpY2ggaXMgSVAgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbgogIHRtcCA9ICgobGVmdCA+Pj4gMSkgXiByaWdodCkgJiAweDU1NTU1NTU1OwogIHJpZ2h0IF49IHRtcDsKICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogIHRtcCA9ICgocmlnaHQgPj4+IDgpIF4gbGVmdCkgJiAweDAwZmYwMGZmOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgOCk7CgogIHRtcCA9ICgocmlnaHQgPj4+IDIpIF4gbGVmdCkgJiAweDMzMzMzMzMzOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgMik7CgogIHRtcCA9ICgobGVmdCA+Pj4gMTYpIF4gcmlnaHQpICYgMHgwMDAwZmZmZjsKICByaWdodCBePSB0bXA7CiAgbGVmdCBePSAodG1wIDw8IDE2KTsKCiAgdG1wID0gKChsZWZ0ID4+PiA0KSBeIHJpZ2h0KSAmIDB4MGYwZjBmMGY7CiAgcmlnaHQgXj0gdG1wOwogIGxlZnQgXj0gKHRtcCA8PCA0KTsKCiAgb3V0cHV0WzBdID0gbGVmdDsKICBvdXRwdXRbMV0gPSByaWdodDsKfQoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogZm9yZ2UuY2lwaGVyLmNyZWF0ZUNpcGhlcignREVTLTxtb2RlPicsIGtleSk7CiAqIGZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlcignREVTLTxtb2RlPicsIGtleSk7CiAqCiAqIENyZWF0ZXMgYSBkZXByZWNhdGVkIERFUyBjaXBoZXIgb2JqZWN0LiBUaGlzIG9iamVjdCdzIG1vZGUgd2lsbCBkZWZhdWx0IHRvCiAqIENCQyAoY2lwaGVyLWJsb2NrLWNoYWluaW5nKS4KICoKICogVGhlIGtleSBtYXkgYmUgZ2l2ZW4gYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMgb3IgYSBieXRlIGJ1ZmZlci4KICoKICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgdG8gdXNlLgogKiAgICAgICAgICBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlICg2NCBvciAxOTIgYml0cykuCiAqICAgICAgICAgIG91dHB1dCB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvLgogKiAgICAgICAgICBkZWNyeXB0IHRydWUgZm9yIGRlY3J5cHRpb24sIGZhbHNlIGZvciBlbmNyeXB0aW9uLgogKiAgICAgICAgICBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZnVuY3Rpb24gX2NyZWF0ZUNpcGhlcihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIG1vZGUgPSAob3B0aW9ucy5tb2RlIHx8ICdDQkMnKS50b1VwcGVyQ2FzZSgpOwogIHZhciBhbGdvcml0aG0gPSAnREVTLScgKyBtb2RlOwoKICB2YXIgY2lwaGVyOwogIGlmKG9wdGlvbnMuZGVjcnlwdCkgewogICAgY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0gZWxzZSB7CiAgICBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0KCiAgLy8gYmFja3dhcmRzIGNvbXBhdGlibGUgc3RhcnQgQVBJCiAgdmFyIHN0YXJ0ID0gY2lwaGVyLnN0YXJ0OwogIGNpcGhlci5zdGFydCA9IGZ1bmN0aW9uKGl2LCBvcHRpb25zKSB7CiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogc3VwcG9ydCBzZWNvbmQgYXJnIGFzIG91dHB1dCBidWZmZXIKICAgIHZhciBvdXRwdXQgPSBudWxsOwogICAgaWYob3B0aW9ucyBpbnN0YW5jZW9mIGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcikgewogICAgICBvdXRwdXQgPSBvcHRpb25zOwogICAgICBvcHRpb25zID0ge307CiAgICB9CiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIG9wdGlvbnMub3V0cHV0ID0gb3V0cHV0OwogICAgb3B0aW9ucy5pdiA9IGl2OwogICAgc3RhcnQuY2FsbChjaXBoZXIsIG9wdGlvbnMpOwogIH07CgogIHJldHVybiBjaXBoZXI7Cn0KCgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdkZXMnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgKICAnanMvZGVzJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vY2lwaGVyJywgJy4vY2lwaGVyTW9kZXMnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFBhc3N3b3JkLUJhc2VkIEtleS1EZXJpdmF0aW9uIEZ1bmN0aW9uICMyIGltcGxlbWVudGF0aW9uLgogKgogKiBTZWUgUkZDIDI4OTggZm9yIGRldGFpbHMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHBrY3M1ID0gZm9yZ2UucGtjczUgPSBmb3JnZS5wa2NzNSB8fCB7fTsKCnZhciBfbm9kZWpzID0gKAogIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSk7CnZhciBjcnlwdG87CmlmKF9ub2RlanMgJiYgIWZvcmdlLmRpc2FibGVOYXRpdmVDb2RlKSB7CiAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7Cn0KCi8qKgogKiBEZXJpdmVzIGEga2V5IGZyb20gYSBwYXNzd29yZC4KICoKICogQHBhcmFtIHAgdGhlIHBhc3N3b3JkIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKiBAcGFyYW0gcyB0aGUgc2FsdCBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcy4KICogQHBhcmFtIGMgdGhlIGl0ZXJhdGlvbiBjb3VudCwgYSBwb3NpdGl2ZSBpbnRlZ2VyLgogKiBAcGFyYW0gZGtMZW4gdGhlIGludGVuZGVkIGxlbmd0aCwgaW4gYnl0ZXMsIG9mIHRoZSBkZXJpdmVkIGtleSwKICogICAgICAgICAgKG1heDogMl4zMiAtIDEpICogaGFzaCBsZW5ndGggb2YgdGhlIFBSRi4KICogQHBhcmFtIFttZF0gdGhlIG1lc3NhZ2UgZGlnZXN0IChvciBhbGdvcml0aG0gaWRlbnRpZmllciBhcyBhIHN0cmluZykgdG8gdXNlCiAqICAgICAgICAgIGluIHRoZSBQUkYsIGRlZmF1bHRzIHRvIFNIQS0xLgogKiBAcGFyYW0gW2NhbGxiYWNrKGVyciwga2V5KV0gcHJlc2VuY2UgdHJpZ2dlcnMgYXN5bmNocm9ub3VzIHZlcnNpb24sIGNhbGxlZAogKiAgICAgICAgICBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogKgogKiBAcmV0dXJuIHRoZSBkZXJpdmVkIGtleSwgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMsIGZvciB0aGUKICogICAgICAgICAgIHN5bmNocm9ub3VzIHZlcnNpb24gKGlmIG5vIGNhbGxiYWNrIGlzIHNwZWNpZmllZCkuCiAqLwpmb3JnZS5wYmtkZjIgPSBwa2NzNS5wYmtkZjIgPSBmdW5jdGlvbihwLCBzLCBjLCBka0xlbiwgbWQsIGNhbGxiYWNrKSB7CiAgaWYodHlwZW9mIG1kID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG1kOwogICAgbWQgPSBudWxsOwogIH0KCiAgLy8gdXNlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpZiBwb3NzaWJsZSBhbmQgbm90IGRpc2FibGVkLCBub3RlIHRoYXQKICAvLyBzb21lIG5vZGUgdmVyc2lvbnMgb25seSBzdXBwb3J0IFNIQS0xLCBvdGhlcnMgYWxsb3cgZGlnZXN0IHRvIGJlIGNoYW5nZWQKICBpZihfbm9kZWpzICYmICFmb3JnZS5kaXNhYmxlTmF0aXZlQ29kZSAmJiBjcnlwdG8ucGJrZGYyICYmCiAgICAobWQgPT09IG51bGwgfHwgdHlwZW9mIG1kICE9PSAnb2JqZWN0JykgJiYKICAgIChjcnlwdG8ucGJrZGYyU3luYy5sZW5ndGggPiA0IHx8ICghbWQgfHwgbWQgPT09ICdzaGExJykpKSB7CiAgICBpZih0eXBlb2YgbWQgIT09ICdzdHJpbmcnKSB7CiAgICAgIC8vIGRlZmF1bHQgcHJmIHRvIFNIQS0xCiAgICAgIG1kID0gJ3NoYTEnOwogICAgfQogICAgcyA9IG5ldyBCdWZmZXIocywgJ2JpbmFyeScpOwogICAgaWYoIWNhbGxiYWNrKSB7CiAgICAgIGlmKGNyeXB0by5wYmtkZjJTeW5jLmxlbmd0aCA9PT0gNCkgewogICAgICAgIHJldHVybiBjcnlwdG8ucGJrZGYyU3luYyhwLCBzLCBjLCBka0xlbikudG9TdHJpbmcoJ2JpbmFyeScpOwogICAgICB9CiAgICAgIHJldHVybiBjcnlwdG8ucGJrZGYyU3luYyhwLCBzLCBjLCBka0xlbiwgbWQpLnRvU3RyaW5nKCdiaW5hcnknKTsKICAgIH0KICAgIGlmKGNyeXB0by5wYmtkZjJTeW5jLmxlbmd0aCA9PT0gNCkgewogICAgICByZXR1cm4gY3J5cHRvLnBia2RmMihwLCBzLCBjLCBka0xlbiwgZnVuY3Rpb24oZXJyLCBrZXkpIHsKICAgICAgICBpZihlcnIpIHsKICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICAgIH0KICAgICAgICBjYWxsYmFjayhudWxsLCBrZXkudG9TdHJpbmcoJ2JpbmFyeScpKTsKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gY3J5cHRvLnBia2RmMihwLCBzLCBjLCBka0xlbiwgbWQsIGZ1bmN0aW9uKGVyciwga2V5KSB7CiAgICAgIGlmKGVycikgewogICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICB9CiAgICAgIGNhbGxiYWNrKG51bGwsIGtleS50b1N0cmluZygnYmluYXJ5JykpOwogICAgfSk7CiAgfQoKICBpZih0eXBlb2YgbWQgPT09ICd1bmRlZmluZWQnIHx8IG1kID09PSBudWxsKSB7CiAgICAvLyBkZWZhdWx0IHByZiB0byBTSEEtMQogICAgbWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIH0KICBpZih0eXBlb2YgbWQgPT09ICdzdHJpbmcnKSB7CiAgICBpZighKG1kIGluIGZvcmdlLm1kLmFsZ29yaXRobXMpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBoYXNoIGFsZ29yaXRobTogJyArIG1kKTsKICAgIH0KICAgIG1kID0gZm9yZ2UubWRbbWRdLmNyZWF0ZSgpOwogIH0KCiAgdmFyIGhMZW4gPSBtZC5kaWdlc3RMZW5ndGg7CgogIC8qIDEuIElmIGRrTGVuID4gKDJeMzIgLSAxKSAqIGhMZW4sIG91dHB1dCAiZGVyaXZlZCBrZXkgdG9vIGxvbmciIGFuZAogICAgc3RvcC4gKi8KICBpZihka0xlbiA+ICgweEZGRkZGRkZGICogaExlbikpIHsKICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ0Rlcml2ZWQga2V5IGlzIHRvbyBsb25nLicpOwogICAgaWYoY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICB9CiAgICB0aHJvdyBlcnI7CiAgfQoKICAvKiAyLiBMZXQgbGVuIGJlIHRoZSBudW1iZXIgb2YgaExlbi1vY3RldCBibG9ja3MgaW4gdGhlIGRlcml2ZWQga2V5LAogICAgcm91bmRpbmcgdXAsIGFuZCBsZXQgciBiZSB0aGUgbnVtYmVyIG9mIG9jdGV0cyBpbiB0aGUgbGFzdAogICAgYmxvY2s6CgogICAgbGVuID0gQ0VJTChka0xlbiAvIGhMZW4pLAogICAgciA9IGRrTGVuIC0gKGxlbiAtIDEpICogaExlbi4gKi8KICB2YXIgbGVuID0gTWF0aC5jZWlsKGRrTGVuIC8gaExlbik7CiAgdmFyIHIgPSBka0xlbiAtIChsZW4gLSAxKSAqIGhMZW47CgogIC8qIDMuIEZvciBlYWNoIGJsb2NrIG9mIHRoZSBkZXJpdmVkIGtleSBhcHBseSB0aGUgZnVuY3Rpb24gRiBkZWZpbmVkCiAgICBiZWxvdyB0byB0aGUgcGFzc3dvcmQgUCwgdGhlIHNhbHQgUywgdGhlIGl0ZXJhdGlvbiBjb3VudCBjLCBhbmQKICAgIHRoZSBibG9jayBpbmRleCB0byBjb21wdXRlIHRoZSBibG9jazoKCiAgICBUXzEgPSBGKFAsIFMsIGMsIDEpLAogICAgVF8yID0gRihQLCBTLCBjLCAyKSwKICAgIC4uLgogICAgVF9sZW4gPSBGKFAsIFMsIGMsIGxlbiksCgogICAgd2hlcmUgdGhlIGZ1bmN0aW9uIEYgaXMgZGVmaW5lZCBhcyB0aGUgZXhjbHVzaXZlLW9yIHN1bSBvZiB0aGUKICAgIGZpcnN0IGMgaXRlcmF0ZXMgb2YgdGhlIHVuZGVybHlpbmcgcHNldWRvcmFuZG9tIGZ1bmN0aW9uIFBSRgogICAgYXBwbGllZCB0byB0aGUgcGFzc3dvcmQgUCBhbmQgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHNhbHQgUwogICAgYW5kIHRoZSBibG9jayBpbmRleCBpOgoKICAgIEYoUCwgUywgYywgaSkgPSB1XzEgWE9SIHVfMiBYT1IgLi4uIFhPUiB1X2MKCiAgICB3aGVyZQoKICAgIHVfMSA9IFBSRihQLCBTIHx8IElOVChpKSksCiAgICB1XzIgPSBQUkYoUCwgdV8xKSwKICAgIC4uLgogICAgdV9jID0gUFJGKFAsIHVfe2MtMX0pLgoKICAgIEhlcmUsIElOVChpKSBpcyBhIGZvdXItb2N0ZXQgZW5jb2Rpbmcgb2YgdGhlIGludGVnZXIgaSwgbW9zdAogICAgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QuICovCiAgdmFyIHByZiA9IGZvcmdlLmhtYWMuY3JlYXRlKCk7CiAgcHJmLnN0YXJ0KG1kLCBwKTsKICB2YXIgZGsgPSAnJzsKICB2YXIgeG9yLCB1X2MsIHVfYzE7CgogIC8vIHN5bmMgdmVyc2lvbgogIGlmKCFjYWxsYmFjaykgewogICAgZm9yKHZhciBpID0gMTsgaSA8PSBsZW47ICsraSkgewogICAgICAvLyBQUkYoUCwgUyB8fCBJTlQoaSkpIChmaXJzdCBpdGVyYXRpb24pCiAgICAgIHByZi5zdGFydChudWxsLCBudWxsKTsKICAgICAgcHJmLnVwZGF0ZShzKTsKICAgICAgcHJmLnVwZGF0ZShmb3JnZS51dGlsLmludDMyVG9CeXRlcyhpKSk7CiAgICAgIHhvciA9IHVfYzEgPSBwcmYuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKCiAgICAgIC8vIFBSRihQLCB1X3tjLTF9KSAob3RoZXIgaXRlcmF0aW9ucykKICAgICAgZm9yKHZhciBqID0gMjsgaiA8PSBjOyArK2opIHsKICAgICAgICBwcmYuc3RhcnQobnVsbCwgbnVsbCk7CiAgICAgICAgcHJmLnVwZGF0ZSh1X2MxKTsKICAgICAgICB1X2MgPSBwcmYuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKICAgICAgICAvLyBGKHAsIHMsIGMsIGkpCiAgICAgICAgeG9yID0gZm9yZ2UudXRpbC54b3JCeXRlcyh4b3IsIHVfYywgaExlbik7CiAgICAgICAgdV9jMSA9IHVfYzsKICAgICAgfQoKICAgICAgLyogNC4gQ29uY2F0ZW5hdGUgdGhlIGJsb2NrcyBhbmQgZXh0cmFjdCB0aGUgZmlyc3QgZGtMZW4gb2N0ZXRzIHRvCiAgICAgICAgcHJvZHVjZSBhIGRlcml2ZWQga2V5IERLOgoKICAgICAgICBESyA9IFRfMSB8fCBUXzIgfHwgIC4uLiAgfHwgVF9sZW48MC4uci0xPiAqLwogICAgICBkayArPSAoaSA8IGxlbikgPyB4b3IgOiB4b3Iuc3Vic3RyKDAsIHIpOwogICAgfQogICAgLyogNS4gT3V0cHV0IHRoZSBkZXJpdmVkIGtleSBESy4gKi8KICAgIHJldHVybiBkazsKICB9CgogIC8vIGFzeW5jIHZlcnNpb24KICB2YXIgaSA9IDEsIGo7CiAgZnVuY3Rpb24gb3V0ZXIoKSB7CiAgICBpZihpID4gbGVuKSB7CiAgICAgIC8vIGRvbmUKICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGRrKTsKICAgIH0KCiAgICAvLyBQUkYoUCwgUyB8fCBJTlQoaSkpIChmaXJzdCBpdGVyYXRpb24pCiAgICBwcmYuc3RhcnQobnVsbCwgbnVsbCk7CiAgICBwcmYudXBkYXRlKHMpOwogICAgcHJmLnVwZGF0ZShmb3JnZS51dGlsLmludDMyVG9CeXRlcyhpKSk7CiAgICB4b3IgPSB1X2MxID0gcHJmLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CgogICAgLy8gUFJGKFAsIHVfe2MtMX0pIChvdGhlciBpdGVyYXRpb25zKQogICAgaiA9IDI7CiAgICBpbm5lcigpOwogIH0KCiAgZnVuY3Rpb24gaW5uZXIoKSB7CiAgICBpZihqIDw9IGMpIHsKICAgICAgcHJmLnN0YXJ0KG51bGwsIG51bGwpOwogICAgICBwcmYudXBkYXRlKHVfYzEpOwogICAgICB1X2MgPSBwcmYuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKICAgICAgLy8gRihwLCBzLCBjLCBpKQogICAgICB4b3IgPSBmb3JnZS51dGlsLnhvckJ5dGVzKHhvciwgdV9jLCBoTGVuKTsKICAgICAgdV9jMSA9IHVfYzsKICAgICAgKytqOwogICAgICByZXR1cm4gZm9yZ2UudXRpbC5zZXRJbW1lZGlhdGUoaW5uZXIpOwogICAgfQoKICAgIC8qIDQuIENvbmNhdGVuYXRlIHRoZSBibG9ja3MgYW5kIGV4dHJhY3QgdGhlIGZpcnN0IGRrTGVuIG9jdGV0cyB0bwogICAgICBwcm9kdWNlIGEgZGVyaXZlZCBrZXkgREs6CgogICAgICBESyA9IFRfMSB8fCBUXzIgfHwgIC4uLiAgfHwgVF9sZW48MC4uci0xPiAqLwogICAgZGsgKz0gKGkgPCBsZW4pID8geG9yIDogeG9yLnN1YnN0cigwLCByKTsKCiAgICArK2k7CiAgICBvdXRlcigpOwogIH0KCiAgb3V0ZXIoKTsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3Bia2RmMic7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wYmtkZjInLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9obWFjJywgJy4vbWQnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEEgamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBhIGNyeXB0b2dyYXBoaWNhbGx5LXNlY3VyZQogKiBQc2V1ZG8gUmFuZG9tIE51bWJlciBHZW5lcmF0b3IgKFBSTkcpLiBUaGUgRm9ydHVuYSBhbGdvcml0aG0gaXMgZm9sbG93ZWQKICogaGVyZSB0aG91Z2ggdGhlIHVzZSBvZiBTSEEtMjU2IGlzIG5vdCBlbmZvcmNlZDsgd2hlbiBnZW5lcmF0aW5nIGFuCiAqIGEgUFJORyBjb250ZXh0LCB0aGUgaGFzaGluZyBhbGdvcml0aG0gYW5kIGJsb2NrIGNpcGhlciB1c2VkIGZvcgogKiB0aGUgZ2VuZXJhdG9yIGFyZSBzcGVjaWZpZWQgdmlhIGEgcGx1Z2luLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCnZhciBfbm9kZWpzID0gKAogIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSk7CnZhciBfY3J5cHRvID0gbnVsbDsKaWYoIWZvcmdlLmRpc2FibGVOYXRpdmVDb2RlICYmIF9ub2RlanMgJiYgIXByb2Nlc3MudmVyc2lvbnNbJ25vZGUtd2Via2l0J10pIHsKICBfY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7Cn0KCi8qIFBSTkcgQVBJICovCnZhciBwcm5nID0gZm9yZ2UucHJuZyA9IGZvcmdlLnBybmcgfHwge307CgovKioKICogQ3JlYXRlcyBhIG5ldyBQUk5HIGNvbnRleHQuCiAqCiAqIEEgUFJORyBwbHVnaW4gbXVzdCBiZSBwYXNzZWQgaW4gdGhhdCB3aWxsIHByb3ZpZGU6CiAqCiAqIDEuIEEgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUga2V5IGFuZCBzZWVkIG9mIGEgUFJORyBjb250ZXh0LiBJdAogKiAgIHdpbGwgYmUgZ2l2ZW4gYSAxNiBieXRlIGtleSBhbmQgYSAxNiBieXRlIHNlZWQuIEFueSBrZXkgZXhwYW5zaW9uCiAqICAgb3IgdHJhbnNmb3JtYXRpb24gb2YgdGhlIHNlZWQgZnJvbSBhIGJ5dGUgc3RyaW5nIGludG8gYW4gYXJyYXkgb2YKICogICBpbnRlZ2VycyAob3Igc2ltaWxhcikgc2hvdWxkIGJlIHBlcmZvcm1lZC4KICogMi4gVGhlIGNyeXB0b2dyYXBoaWMgZnVuY3Rpb24gdXNlZCBieSB0aGUgZ2VuZXJhdG9yLiBJdCB0YWtlcyBhIGtleSBhbmQKICogICBhIHNlZWQuCiAqIDMuIEEgc2VlZCBpbmNyZW1lbnQgZnVuY3Rpb24uIEl0IHRha2VzIHRoZSBzZWVkIGFuZCByZXR1cm5zIHNlZWQgKyAxLgogKiA0LiBBbiBhcGkgdG8gY3JlYXRlIGEgbWVzc2FnZSBkaWdlc3QuCiAqCiAqIEZvciBhbiBleGFtcGxlLCBzZWUgcmFuZG9tLmpzLgogKgogKiBAcGFyYW0gcGx1Z2luIHRoZSBQUk5HIHBsdWdpbiB0byB1c2UuCiAqLwpwcm5nLmNyZWF0ZSA9IGZ1bmN0aW9uKHBsdWdpbikgewogIHZhciBjdHggPSB7CiAgICBwbHVnaW46IHBsdWdpbiwKICAgIGtleTogbnVsbCwKICAgIHNlZWQ6IG51bGwsCiAgICB0aW1lOiBudWxsLAogICAgLy8gbnVtYmVyIG9mIHJlc2VlZHMgc28gZmFyCiAgICByZXNlZWRzOiAwLAogICAgLy8gYW1vdW50IG9mIGRhdGEgZ2VuZXJhdGVkIHNvIGZhcgogICAgZ2VuZXJhdGVkOiAwCiAgfTsKCiAgLy8gY3JlYXRlIDMyIGVudHJvcHkgcG9vbHMgKGVhY2ggaXMgYSBtZXNzYWdlIGRpZ2VzdCkKICB2YXIgbWQgPSBwbHVnaW4ubWQ7CiAgdmFyIHBvb2xzID0gbmV3IEFycmF5KDMyKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgMzI7ICsraSkgewogICAgcG9vbHNbaV0gPSBtZC5jcmVhdGUoKTsKICB9CiAgY3R4LnBvb2xzID0gcG9vbHM7CgogIC8vIGVudHJvcHkgcG9vbHMgYXJlIHdyaXR0ZW4gdG8gY3ljbGljYWxseSwgc3RhcnRpbmcgYXQgaW5kZXggMAogIGN0eC5wb29sID0gMDsKCiAgLyoqCiAgICogR2VuZXJhdGVzIHJhbmRvbSBieXRlcy4gVGhlIGJ5dGVzIG1heSBiZSBnZW5lcmF0ZWQgc3luY2hyb25vdXNseSBvcgogICAqIGFzeW5jaHJvbm91c2x5LiBXZWIgd29ya2VycyBtdXN0IHVzZSB0aGUgYXN5bmNocm9ub3VzIGludGVyZmFjZSBvcgogICAqIGVsc2UgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KICAgKgogICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZW5lcmF0ZS4KICAgKiBAcGFyYW0gW2NhbGxiYWNrKGVyciwgYnl0ZXMpXSBjYWxsZWQgb25jZSB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcy4KICAgKgogICAqIEByZXR1cm4gY291bnQgcmFuZG9tIGJ5dGVzIGFzIGEgc3RyaW5nLgogICAqLwogIGN0eC5nZW5lcmF0ZSA9IGZ1bmN0aW9uKGNvdW50LCBjYWxsYmFjaykgewogICAgLy8gZG8gc3luY2hyb25vdXNseQogICAgaWYoIWNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBjdHguZ2VuZXJhdGVTeW5jKGNvdW50KTsKICAgIH0KCiAgICAvLyBzaW1wbGUgZ2VuZXJhdG9yIHVzaW5nIGNvdW50ZXItYmFzZWQgQ0JDCiAgICB2YXIgY2lwaGVyID0gY3R4LnBsdWdpbi5jaXBoZXI7CiAgICB2YXIgaW5jcmVtZW50ID0gY3R4LnBsdWdpbi5pbmNyZW1lbnQ7CiAgICB2YXIgZm9ybWF0S2V5ID0gY3R4LnBsdWdpbi5mb3JtYXRLZXk7CiAgICB2YXIgZm9ybWF0U2VlZCA9IGN0eC5wbHVnaW4uZm9ybWF0U2VlZDsKICAgIHZhciBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKCiAgICAvLyByZXNldCBrZXkgZm9yIGV2ZXJ5IHJlcXVlc3QKICAgIGN0eC5rZXkgPSBudWxsOwoKICAgIGdlbmVyYXRlKCk7CgogICAgZnVuY3Rpb24gZ2VuZXJhdGUoZXJyKSB7CiAgICAgIGlmKGVycikgewogICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICB9CgogICAgICAvLyBzdWZmaWNpZW50IGJ5dGVzIGdlbmVyYXRlZAogICAgICBpZihiLmxlbmd0aCgpID49IGNvdW50KSB7CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGIuZ2V0Qnl0ZXMoY291bnQpKTsKICAgICAgfQoKICAgICAgLy8gaWYgYW1vdW50IG9mIGRhdGEgZ2VuZXJhdGVkIGlzIGdyZWF0ZXIgdGhhbiAxIE1pQiwgdHJpZ2dlciByZXNlZWQKICAgICAgaWYoY3R4LmdlbmVyYXRlZCA+IDB4ZmZmZmYpIHsKICAgICAgICBjdHgua2V5ID0gbnVsbDsKICAgICAgfQoKICAgICAgaWYoY3R4LmtleSA9PT0gbnVsbCkgewogICAgICAgIC8vIHByZXZlbnQgc3RhY2sgb3ZlcmZsb3cKICAgICAgICByZXR1cm4gZm9yZ2UudXRpbC5uZXh0VGljayhmdW5jdGlvbigpIHsKICAgICAgICAgIF9yZXNlZWQoZ2VuZXJhdGUpOwogICAgICAgIH0pOwogICAgICB9CgogICAgICAvLyBnZW5lcmF0ZSB0aGUgcmFuZG9tIGJ5dGVzCiAgICAgIHZhciBieXRlcyA9IGNpcGhlcihjdHgua2V5LCBjdHguc2VlZCk7CiAgICAgIGN0eC5nZW5lcmF0ZWQgKz0gYnl0ZXMubGVuZ3RoOwogICAgICBiLnB1dEJ5dGVzKGJ5dGVzKTsKCiAgICAgIC8vIGdlbmVyYXRlIGJ5dGVzIGZvciBhIG5ldyBrZXkgYW5kIHNlZWQKICAgICAgY3R4LmtleSA9IGZvcm1hdEtleShjaXBoZXIoY3R4LmtleSwgaW5jcmVtZW50KGN0eC5zZWVkKSkpOwogICAgICBjdHguc2VlZCA9IGZvcm1hdFNlZWQoY2lwaGVyKGN0eC5rZXksIGN0eC5zZWVkKSk7CgogICAgICBmb3JnZS51dGlsLnNldEltbWVkaWF0ZShnZW5lcmF0ZSk7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogR2VuZXJhdGVzIHJhbmRvbSBieXRlcyBzeW5jaHJvbm91c2x5LgogICAqCiAgICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHRvIGdlbmVyYXRlLgogICAqCiAgICogQHJldHVybiBjb3VudCByYW5kb20gYnl0ZXMgYXMgYSBzdHJpbmcuCiAgICovCiAgY3R4LmdlbmVyYXRlU3luYyA9IGZ1bmN0aW9uKGNvdW50KSB7CiAgICAvLyBzaW1wbGUgZ2VuZXJhdG9yIHVzaW5nIGNvdW50ZXItYmFzZWQgQ0JDCiAgICB2YXIgY2lwaGVyID0gY3R4LnBsdWdpbi5jaXBoZXI7CiAgICB2YXIgaW5jcmVtZW50ID0gY3R4LnBsdWdpbi5pbmNyZW1lbnQ7CiAgICB2YXIgZm9ybWF0S2V5ID0gY3R4LnBsdWdpbi5mb3JtYXRLZXk7CiAgICB2YXIgZm9ybWF0U2VlZCA9IGN0eC5wbHVnaW4uZm9ybWF0U2VlZDsKCiAgICAvLyByZXNldCBrZXkgZm9yIGV2ZXJ5IHJlcXVlc3QKICAgIGN0eC5rZXkgPSBudWxsOwoKICAgIHZhciBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHdoaWxlKGIubGVuZ3RoKCkgPCBjb3VudCkgewogICAgICAvLyBpZiBhbW91bnQgb2YgZGF0YSBnZW5lcmF0ZWQgaXMgZ3JlYXRlciB0aGFuIDEgTWlCLCB0cmlnZ2VyIHJlc2VlZAogICAgICBpZihjdHguZ2VuZXJhdGVkID4gMHhmZmZmZikgewogICAgICAgIGN0eC5rZXkgPSBudWxsOwogICAgICB9CgogICAgICBpZihjdHgua2V5ID09PSBudWxsKSB7CiAgICAgICAgX3Jlc2VlZFN5bmMoKTsKICAgICAgfQoKICAgICAgLy8gZ2VuZXJhdGUgdGhlIHJhbmRvbSBieXRlcwogICAgICB2YXIgYnl0ZXMgPSBjaXBoZXIoY3R4LmtleSwgY3R4LnNlZWQpOwogICAgICBjdHguZ2VuZXJhdGVkICs9IGJ5dGVzLmxlbmd0aDsKICAgICAgYi5wdXRCeXRlcyhieXRlcyk7CgogICAgICAvLyBnZW5lcmF0ZSBieXRlcyBmb3IgYSBuZXcga2V5IGFuZCBzZWVkCiAgICAgIGN0eC5rZXkgPSBmb3JtYXRLZXkoY2lwaGVyKGN0eC5rZXksIGluY3JlbWVudChjdHguc2VlZCkpKTsKICAgICAgY3R4LnNlZWQgPSBmb3JtYXRTZWVkKGNpcGhlcihjdHgua2V5LCBjdHguc2VlZCkpOwogICAgfQoKICAgIHJldHVybiBiLmdldEJ5dGVzKGNvdW50KTsKICB9OwoKICAvKioKICAgKiBQcml2YXRlIGZ1bmN0aW9uIHRoYXQgYXN5bmNocm9ub3VzbHkgcmVzZWVkcyBhIGdlbmVyYXRvci4KICAgKgogICAqIEBwYXJhbSBjYWxsYmFjayhlcnIpIGNhbGxlZCBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogICAqLwogIGZ1bmN0aW9uIF9yZXNlZWQoY2FsbGJhY2spIHsKICAgIGlmKGN0eC5wb29sc1swXS5tZXNzYWdlTGVuZ3RoID49IDMyKSB7CiAgICAgIF9zZWVkKCk7CiAgICAgIHJldHVybiBjYWxsYmFjaygpOwogICAgfQogICAgLy8gbm90IGVub3VnaCBzZWVkIGRhdGEuLi4KICAgIHZhciBuZWVkZWQgPSAoMzIgLSBjdHgucG9vbHNbMF0ubWVzc2FnZUxlbmd0aCkgPDwgNTsKICAgIGN0eC5zZWVkRmlsZShuZWVkZWQsIGZ1bmN0aW9uKGVyciwgYnl0ZXMpIHsKICAgICAgaWYoZXJyKSB7CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICAgIH0KICAgICAgY3R4LmNvbGxlY3QoYnl0ZXMpOwogICAgICBfc2VlZCgpOwogICAgICBjYWxsYmFjaygpOwogICAgfSk7CiAgfQoKICAvKioKICAgKiBQcml2YXRlIGZ1bmN0aW9uIHRoYXQgc3luY2hyb25vdXNseSByZXNlZWRzIGEgZ2VuZXJhdG9yLgogICAqLwogIGZ1bmN0aW9uIF9yZXNlZWRTeW5jKCkgewogICAgaWYoY3R4LnBvb2xzWzBdLm1lc3NhZ2VMZW5ndGggPj0gMzIpIHsKICAgICAgcmV0dXJuIF9zZWVkKCk7CiAgICB9CiAgICAvLyBub3QgZW5vdWdoIHNlZWQgZGF0YS4uLgogICAgdmFyIG5lZWRlZCA9ICgzMiAtIGN0eC5wb29sc1swXS5tZXNzYWdlTGVuZ3RoKSA8PCA1OwogICAgY3R4LmNvbGxlY3QoY3R4LnNlZWRGaWxlU3luYyhuZWVkZWQpKTsKICAgIF9zZWVkKCk7CiAgfQoKICAvKioKICAgKiBQcml2YXRlIGZ1bmN0aW9uIHRoYXQgc2VlZHMgYSBnZW5lcmF0b3Igb25jZSBlbm91Z2ggYnl0ZXMgYXJlIGF2YWlsYWJsZS4KICAgKi8KICBmdW5jdGlvbiBfc2VlZCgpIHsKICAgIC8vIGNyZWF0ZSBhIHBsdWdpbi1iYXNlZCBtZXNzYWdlIGRpZ2VzdAogICAgdmFyIG1kID0gY3R4LnBsdWdpbi5tZC5jcmVhdGUoKTsKCiAgICAvLyBkaWdlc3QgcG9vbCAwJ3MgZW50cm9weSBhbmQgcmVzdGFydCBpdAogICAgbWQudXBkYXRlKGN0eC5wb29sc1swXS5kaWdlc3QoKS5nZXRCeXRlcygpKTsKICAgIGN0eC5wb29sc1swXS5zdGFydCgpOwoKICAgIC8vIGRpZ2VzdCB0aGUgZW50cm9weSBvZiBvdGhlciBwb29scyB3aG9zZSBpbmRleCBrIG1lZXQgdGhlCiAgICAvLyBjb25kaXRpb24gJzJeayBtb2QgbiA9PSAwJyB3aGVyZSBuIGlzIHRoZSBudW1iZXIgb2YgcmVzZWVkcwogICAgdmFyIGsgPSAxOwogICAgZm9yKHZhciBpID0gMTsgaSA8IDMyOyArK2kpIHsKICAgICAgLy8gcHJldmVudCBzaWduZWQgbnVtYmVycyBmcm9tIGJlaW5nIHVzZWQKICAgICAgayA9IChrID09PSAzMSkgPyAweDgwMDAwMDAwIDogKGsgPDwgMik7CiAgICAgIGlmKGsgJSBjdHgucmVzZWVkcyA9PT0gMCkgewogICAgICAgIG1kLnVwZGF0ZShjdHgucG9vbHNbaV0uZGlnZXN0KCkuZ2V0Qnl0ZXMoKSk7CiAgICAgICAgY3R4LnBvb2xzW2ldLnN0YXJ0KCk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBnZXQgZGlnZXN0IGZvciBrZXkgYnl0ZXMgYW5kIGl0ZXJhdGUgYWdhaW4gZm9yIHNlZWQgYnl0ZXMKICAgIHZhciBrZXlCeXRlcyA9IG1kLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CiAgICBtZC5zdGFydCgpOwogICAgbWQudXBkYXRlKGtleUJ5dGVzKTsKICAgIHZhciBzZWVkQnl0ZXMgPSBtZC5kaWdlc3QoKS5nZXRCeXRlcygpOwoKICAgIC8vIHVwZGF0ZQogICAgY3R4LmtleSA9IGN0eC5wbHVnaW4uZm9ybWF0S2V5KGtleUJ5dGVzKTsKICAgIGN0eC5zZWVkID0gY3R4LnBsdWdpbi5mb3JtYXRTZWVkKHNlZWRCeXRlcyk7CiAgICBjdHgucmVzZWVkcyA9IChjdHgucmVzZWVkcyA9PT0gMHhmZmZmZmZmZikgPyAwIDogY3R4LnJlc2VlZHMgKyAxOwogICAgY3R4LmdlbmVyYXRlZCA9IDA7CiAgfQoKICAvKioKICAgKiBUaGUgYnVpbHQtaW4gZGVmYXVsdCBzZWVkRmlsZS4gVGhpcyBzZWVkRmlsZSBpcyB1c2VkIHdoZW4gZW50cm9weQogICAqIGlzIG5lZWRlZCBpbW1lZGlhdGVseS4KICAgKgogICAqIEBwYXJhbSBuZWVkZWQgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGFyZSBuZWVkZWQuCiAgICoKICAgKiBAcmV0dXJuIHRoZSByYW5kb20gYnl0ZXMuCiAgICovCiAgZnVuY3Rpb24gZGVmYXVsdFNlZWRGaWxlKG5lZWRlZCkgewogICAgLy8gdXNlIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIHN0cm9uZyBzb3VyY2Ugb2YgZW50cm9weSBpZiBhdmFpbGFibGUKICAgIHZhciBnZXRSYW5kb21WYWx1ZXMgPSBudWxsOwogICAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIF9jcnlwdG8gPSB3aW5kb3cuY3J5cHRvIHx8IHdpbmRvdy5tc0NyeXB0bzsKICAgICAgaWYoX2NyeXB0byAmJiBfY3J5cHRvLmdldFJhbmRvbVZhbHVlcykgewogICAgICAgIGdldFJhbmRvbVZhbHVlcyA9IGZ1bmN0aW9uKGFycikgewogICAgICAgICAgcmV0dXJuIF9jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7CiAgICAgICAgfTsKICAgICAgfQogICAgfQoKICAgIHZhciBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGlmKGdldFJhbmRvbVZhbHVlcykgewogICAgICB3aGlsZShiLmxlbmd0aCgpIDwgbmVlZGVkKSB7CiAgICAgICAgLy8gbWF4IGJ5dGUgbGVuZ3RoIGlzIDY1NTM2IGJlZm9yZSBRdW90YUV4Y2VlZGVkRXJyb3IgaXMgdGhyb3duCiAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvV2ViQ3J5cHRvQVBJLyNSYW5kb21Tb3VyY2UtbWV0aG9kLWdldFJhbmRvbVZhbHVlcwogICAgICAgIHZhciBjb3VudCA9IE1hdGgubWF4KDEsIE1hdGgubWluKG5lZWRlZCAtIGIubGVuZ3RoKCksIDY1NTM2KSAvIDQpOwogICAgICAgIHZhciBlbnRyb3B5ID0gbmV3IFVpbnQzMkFycmF5KE1hdGguZmxvb3IoY291bnQpKTsKICAgICAgICB0cnkgewogICAgICAgICAgZ2V0UmFuZG9tVmFsdWVzKGVudHJvcHkpOwogICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGVudHJvcHkubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgYi5wdXRJbnQzMihlbnRyb3B5W2ldKTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgIC8qIG9ubHkgaWdub3JlIFF1b3RhRXhjZWVkZWRFcnJvciAqLwogICAgICAgICAgaWYoISh0eXBlb2YgUXVvdGFFeGNlZWRlZEVycm9yICE9PSAndW5kZWZpbmVkJyAmJgogICAgICAgICAgICBlIGluc3RhbmNlb2YgUXVvdGFFeGNlZWRlZEVycm9yKSkgewogICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIGJlIHNhZCBhbmQgYWRkIHNvbWUgd2VhayByYW5kb20gZGF0YQogICAgaWYoYi5sZW5ndGgoKSA8IG5lZWRlZCkgewogICAgICAvKiBEcmF3cyBmcm9tIFBhcmstTWlsbGVyICJtaW5pbWFsIHN0YW5kYXJkIiAzMSBiaXQgUFJORywKICAgICAgaW1wbGVtZW50ZWQgd2l0aCBEYXZpZCBHLiBDYXJ0YSdzIG9wdGltaXphdGlvbjogd2l0aCAzMiBiaXQgbWF0aAogICAgICBhbmQgd2l0aG91dCBkaXZpc2lvbiAoUHVibGljIERvbWFpbikuICovCiAgICAgIHZhciBoaSwgbG8sIG5leHQ7CiAgICAgIHZhciBzZWVkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHgwMTAwMDApOwogICAgICB3aGlsZShiLmxlbmd0aCgpIDwgbmVlZGVkKSB7CiAgICAgICAgbG8gPSAxNjgwNyAqIChzZWVkICYgMHhGRkZGKTsKICAgICAgICBoaSA9IDE2ODA3ICogKHNlZWQgPj4gMTYpOwogICAgICAgIGxvICs9IChoaSAmIDB4N0ZGRikgPDwgMTY7CiAgICAgICAgbG8gKz0gaGkgPj4gMTU7CiAgICAgICAgbG8gPSAobG8gJiAweDdGRkZGRkZGKSArIChsbyA+PiAzMSk7CiAgICAgICAgc2VlZCA9IGxvICYgMHhGRkZGRkZGRjsKCiAgICAgICAgLy8gY29uc3VtZSBsb3dlciAzIGJ5dGVzIG9mIHNlZWQKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMzsgKytpKSB7CiAgICAgICAgICAvLyB0aHJvdyBpbiBtb3JlIHBzZXVkbyByYW5kb20KICAgICAgICAgIG5leHQgPSBzZWVkID4+PiAoaSA8PCAzKTsKICAgICAgICAgIG5leHQgXj0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHgwMTAwKTsKICAgICAgICAgIGIucHV0Qnl0ZShTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHQgJiAweEZGKSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIGIuZ2V0Qnl0ZXMobmVlZGVkKTsKICB9CiAgLy8gaW5pdGlhbGl6ZSBzZWVkIGZpbGUgQVBJcwogIGlmKF9jcnlwdG8pIHsKICAgIC8vIHVzZSBub2RlanMgYXN5bmMgQVBJCiAgICBjdHguc2VlZEZpbGUgPSBmdW5jdGlvbihuZWVkZWQsIGNhbGxiYWNrKSB7CiAgICAgIF9jcnlwdG8ucmFuZG9tQnl0ZXMobmVlZGVkLCBmdW5jdGlvbihlcnIsIGJ5dGVzKSB7CiAgICAgICAgaWYoZXJyKSB7CiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTsKICAgICAgICB9CiAgICAgICAgY2FsbGJhY2sobnVsbCwgYnl0ZXMudG9TdHJpbmcoKSk7CiAgICAgIH0pOwogICAgfTsKICAgIC8vIHVzZSBub2RlanMgc3luYyBBUEkKICAgIGN0eC5zZWVkRmlsZVN5bmMgPSBmdW5jdGlvbihuZWVkZWQpIHsKICAgICAgcmV0dXJuIF9jcnlwdG8ucmFuZG9tQnl0ZXMobmVlZGVkKS50b1N0cmluZygpOwogICAgfTsKICB9IGVsc2UgewogICAgY3R4LnNlZWRGaWxlID0gZnVuY3Rpb24obmVlZGVkLCBjYWxsYmFjaykgewogICAgICB0cnkgewogICAgICAgIGNhbGxiYWNrKG51bGwsIGRlZmF1bHRTZWVkRmlsZShuZWVkZWQpKTsKICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgY2FsbGJhY2soZSk7CiAgICAgIH0KICAgIH07CiAgICBjdHguc2VlZEZpbGVTeW5jID0gZGVmYXVsdFNlZWRGaWxlOwogIH0KCiAgLyoqCiAgICogQWRkcyBlbnRyb3B5IHRvIGEgcHJuZyBjdHgncyBhY2N1bXVsYXRvci4KICAgKgogICAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZXMgb2YgZW50cm9weSBhcyBhIHN0cmluZy4KICAgKi8KICBjdHguY29sbGVjdCA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgICAvLyBpdGVyYXRlIG92ZXIgcG9vbHMgZGlzdHJpYnV0aW5nIGVudHJvcHkgY3ljbGljYWxseQogICAgdmFyIGNvdW50ID0gYnl0ZXMubGVuZ3RoOwogICAgZm9yKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgY3R4LnBvb2xzW2N0eC5wb29sXS51cGRhdGUoYnl0ZXMuc3Vic3RyKGksIDEpKTsKICAgICAgY3R4LnBvb2wgPSAoY3R4LnBvb2wgPT09IDMxKSA/IDAgOiBjdHgucG9vbCArIDE7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogQ29sbGVjdHMgYW4gaW50ZWdlciBvZiBuIGJpdHMuCiAgICoKICAgKiBAcGFyYW0gaSB0aGUgaW50ZWdlciBlbnRyb3B5LgogICAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICAgKi8KICBjdHguY29sbGVjdEludCA9IGZ1bmN0aW9uKGksIG4pIHsKICAgIHZhciBieXRlcyA9ICcnOwogICAgZm9yKHZhciB4ID0gMDsgeCA8IG47IHggKz0gOCkgewogICAgICBieXRlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChpID4+IHgpICYgMHhGRik7CiAgICB9CiAgICBjdHguY29sbGVjdChieXRlcyk7CiAgfTsKCiAgLyoqCiAgICogUmVnaXN0ZXJzIGEgV2ViIFdvcmtlciB0byByZWNlaXZlIGltbWVkaWF0ZSBlbnRyb3B5IGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIHVudGlsIFdlYiBXb3JrZXJzIGNhbiBhY2Nlc3MgdGhlIG5hdGl2ZSBjcnlwdG8KICAgKiBBUEkuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UgZm9yIGVhY2ggY3JlYXRlZCB3b3JrZXIsIG9uY2UgaW4KICAgKiB0aGUgbWFpbiB0aHJlYWQsIGFuZCBvbmNlIGluIHRoZSB3b3JrZXIgaXRzZWxmLgogICAqCiAgICogQHBhcmFtIHdvcmtlciB0aGUgd29ya2VyIHRvIHJlZ2lzdGVyLgogICAqLwogIGN0eC5yZWdpc3RlcldvcmtlciA9IGZ1bmN0aW9uKHdvcmtlcikgewogICAgLy8gd29ya2VyIHJlY2VpdmVzIHJhbmRvbSBieXRlcwogICAgaWYod29ya2VyID09PSBzZWxmKSB7CiAgICAgIGN0eC5zZWVkRmlsZSA9IGZ1bmN0aW9uKG5lZWRlZCwgY2FsbGJhY2spIHsKICAgICAgICBmdW5jdGlvbiBsaXN0ZW5lcihlKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IGUuZGF0YTsKICAgICAgICAgIGlmKGRhdGEuZm9yZ2UgJiYgZGF0YS5mb3JnZS5wcm5nKSB7CiAgICAgICAgICAgIHNlbGYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyKTsKICAgICAgICAgICAgY2FsbGJhY2soZGF0YS5mb3JnZS5wcm5nLmVyciwgZGF0YS5mb3JnZS5wcm5nLmJ5dGVzKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIpOwogICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe2ZvcmdlOiB7cHJuZzoge25lZWRlZDogbmVlZGVkfX19KTsKICAgICAgfTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIG1haW4gdGhyZWFkIHNlbmRzIHJhbmRvbSBieXRlcyB1cG9uIHJlcXVlc3QKICAgICAgdmFyIGxpc3RlbmVyID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBkYXRhID0gZS5kYXRhOwogICAgICAgIGlmKGRhdGEuZm9yZ2UgJiYgZGF0YS5mb3JnZS5wcm5nKSB7CiAgICAgICAgICBjdHguc2VlZEZpbGUoZGF0YS5mb3JnZS5wcm5nLm5lZWRlZCwgZnVuY3Rpb24oZXJyLCBieXRlcykgewogICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2ZvcmdlOiB7cHJuZzoge2VycjogZXJyLCBieXRlczogYnl0ZXN9fX0pOwogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9OwogICAgICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgZXZlbnQgbGlzdGVuZXIgd2hlbiB0aGUgd29ya2VyIGRpZXM/CiAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIpOwogICAgfQogIH07CgogIHJldHVybiBjdHg7Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdwcm5nJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BybmcnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9tZCcsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cgp9KSgpOwoKLyoqCiAqIEFuIEFQSSBmb3IgZ2V0dGluZyBjcnlwdG9ncmFwaGljYWxseS1zZWN1cmUgcmFuZG9tIGJ5dGVzLiBUaGUgYnl0ZXMgYXJlCiAqIGdlbmVyYXRlZCB1c2luZyB0aGUgRm9ydHVuYSBhbGdvcml0aG0gZGV2aXNlZCBieSBCcnVjZSBTY2huZWllciBhbmQKICogTmllbHMgRmVyZ3Vzb24uCiAqCiAqIEdldHRpbmcgc3Ryb25nIHJhbmRvbSBieXRlcyBpcyBub3QgeWV0IGVhc3kgdG8gZG8gaW4gamF2YXNjcmlwdC4gVGhlIG9ubHkKICogdHJ1aXNoIHJhbmRvbSBlbnRyb3B5IHRoYXQgY2FuIGJlIGNvbGxlY3RlZCBpcyBmcm9tIHRoZSBtb3VzZSwga2V5Ym9hcmQsIG9yCiAqIGZyb20gdGltaW5nIHdpdGggcmVzcGVjdCB0byBwYWdlIGxvYWRzLCBldGMuIFRoaXMgZ2VuZXJhdG9yIG1ha2VzIGEgcG9vcgogKiBhdHRlbXB0IGF0IHByb3ZpZGluZyByYW5kb20gYnl0ZXMgd2hlbiB0aG9zZSBzb3VyY2VzIGhhdmVuJ3QgeWV0IHByb3ZpZGVkCiAqIGVub3VnaCBlbnRyb3B5IHRvIGluaXRpYWxseSBzZWVkIG9yIHRvIHJlc2VlZCB0aGUgUFJORy4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBmb3JnZS5yYW5kb20gYWxyZWFkeSBkZWZpbmVkCmlmKGZvcmdlLnJhbmRvbSAmJiBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMpIHsKICByZXR1cm47Cn0KCihmdW5jdGlvbihqUXVlcnkpIHsKCi8vIHRoZSBkZWZhdWx0IHBybmcgcGx1Z2luLCB1c2VzIEFFUy0xMjgKdmFyIHBybmdfYWVzID0ge307CnZhciBfcHJuZ19hZXNfb3V0cHV0ID0gbmV3IEFycmF5KDQpOwp2YXIgX3BybmdfYWVzX2J1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CnBybmdfYWVzLmZvcm1hdEtleSA9IGZ1bmN0aW9uKGtleSkgewogIC8vIGNvbnZlcnQgdGhlIGtleSBpbnRvIDMyLWJpdCBpbnRlZ2VycwogIHZhciB0bXAgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihrZXkpOwogIGtleSA9IG5ldyBBcnJheSg0KTsKICBrZXlbMF0gPSB0bXAuZ2V0SW50MzIoKTsKICBrZXlbMV0gPSB0bXAuZ2V0SW50MzIoKTsKICBrZXlbMl0gPSB0bXAuZ2V0SW50MzIoKTsKICBrZXlbM10gPSB0bXAuZ2V0SW50MzIoKTsKCiAgLy8gcmV0dXJuIHRoZSBleHBhbmRlZCBrZXkKICByZXR1cm4gZm9yZ2UuYWVzLl9leHBhbmRLZXkoa2V5LCBmYWxzZSk7Cn07CnBybmdfYWVzLmZvcm1hdFNlZWQgPSBmdW5jdGlvbihzZWVkKSB7CiAgLy8gY29udmVydCBzZWVkIGludG8gMzItYml0IGludGVnZXJzCiAgdmFyIHRtcCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKHNlZWQpOwogIHNlZWQgPSBuZXcgQXJyYXkoNCk7CiAgc2VlZFswXSA9IHRtcC5nZXRJbnQzMigpOwogIHNlZWRbMV0gPSB0bXAuZ2V0SW50MzIoKTsKICBzZWVkWzJdID0gdG1wLmdldEludDMyKCk7CiAgc2VlZFszXSA9IHRtcC5nZXRJbnQzMigpOwogIHJldHVybiBzZWVkOwp9Owpwcm5nX2Flcy5jaXBoZXIgPSBmdW5jdGlvbihrZXksIHNlZWQpIHsKICBmb3JnZS5hZXMuX3VwZGF0ZUJsb2NrKGtleSwgc2VlZCwgX3BybmdfYWVzX291dHB1dCwgZmFsc2UpOwogIF9wcm5nX2Flc19idWZmZXIucHV0SW50MzIoX3BybmdfYWVzX291dHB1dFswXSk7CiAgX3BybmdfYWVzX2J1ZmZlci5wdXRJbnQzMihfcHJuZ19hZXNfb3V0cHV0WzFdKTsKICBfcHJuZ19hZXNfYnVmZmVyLnB1dEludDMyKF9wcm5nX2Flc19vdXRwdXRbMl0pOwogIF9wcm5nX2Flc19idWZmZXIucHV0SW50MzIoX3BybmdfYWVzX291dHB1dFszXSk7CiAgcmV0dXJuIF9wcm5nX2Flc19idWZmZXIuZ2V0Qnl0ZXMoKTsKfTsKcHJuZ19hZXMuaW5jcmVtZW50ID0gZnVuY3Rpb24oc2VlZCkgewogIC8vIEZJWE1FOiBkbyB3ZSBjYXJlIGFib3V0IGNhcnJ5IG9yIHNpZ25lZCBpc3N1ZXM/CiAgKytzZWVkWzNdOwogIHJldHVybiBzZWVkOwp9Owpwcm5nX2Flcy5tZCA9IGZvcmdlLm1kLnNoYTI1NjsKCi8qKgogKiBDcmVhdGVzIGEgbmV3IFBSTkcuCiAqLwpmdW5jdGlvbiBzcGF3blBybmcoKSB7CiAgdmFyIGN0eCA9IGZvcmdlLnBybmcuY3JlYXRlKHBybmdfYWVzKTsKCiAgLyoqCiAgICogR2V0cyByYW5kb20gYnl0ZXMuIElmIGEgbmF0aXZlIHNlY3VyZSBjcnlwdG8gQVBJIGlzIHVuYXZhaWxhYmxlLCB0aGlzCiAgICogbWV0aG9kIHRyaWVzIHRvIG1ha2UgdGhlIGJ5dGVzIG1vcmUgdW5wcmVkaWN0YWJsZSBieSBkcmF3aW5nIGZyb20gZGF0YSB0aGF0CiAgICogY2FuIGJlIGNvbGxlY3RlZCBmcm9tIHRoZSB1c2VyIG9mIHRoZSBicm93c2VyLCBlZzogbW91c2UgbW92ZW1lbnQuCiAgICoKICAgKiBJZiBhIGNhbGxiYWNrIGlzIGdpdmVuLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4KICAgKgogICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZXQuCiAgICogQHBhcmFtIFtjYWxsYmFjayhlcnIsIGJ5dGVzKV0gY2FsbGVkIG9uY2UgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCiAgICoKICAgKiBAcmV0dXJuIHRoZSByYW5kb20gYnl0ZXMgaW4gYSBzdHJpbmcuCiAgICovCiAgY3R4LmdldEJ5dGVzID0gZnVuY3Rpb24oY291bnQsIGNhbGxiYWNrKSB7CiAgICByZXR1cm4gY3R4LmdlbmVyYXRlKGNvdW50LCBjYWxsYmFjayk7CiAgfTsKCiAgLyoqCiAgICogR2V0cyByYW5kb20gYnl0ZXMgYXN5bmNocm9ub3VzbHkuIElmIGEgbmF0aXZlIHNlY3VyZSBjcnlwdG8gQVBJIGlzCiAgICogdW5hdmFpbGFibGUsIHRoaXMgbWV0aG9kIHRyaWVzIHRvIG1ha2UgdGhlIGJ5dGVzIG1vcmUgdW5wcmVkaWN0YWJsZSBieQogICAqIGRyYXdpbmcgZnJvbSBkYXRhIHRoYXQgY2FuIGJlIGNvbGxlY3RlZCBmcm9tIHRoZSB1c2VyIG9mIHRoZSBicm93c2VyLAogICAqIGVnOiBtb3VzZSBtb3ZlbWVudC4KICAgKgogICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZXQuCiAgICoKICAgKiBAcmV0dXJuIHRoZSByYW5kb20gYnl0ZXMgaW4gYSBzdHJpbmcuCiAgICovCiAgY3R4LmdldEJ5dGVzU3luYyA9IGZ1bmN0aW9uKGNvdW50KSB7CiAgICByZXR1cm4gY3R4LmdlbmVyYXRlKGNvdW50KTsKICB9OwoKICByZXR1cm4gY3R4Owp9CgovLyBjcmVhdGUgZGVmYXVsdCBwcm5nIGNvbnRleHQKdmFyIF9jdHggPSBzcGF3blBybmcoKTsKCi8vIGFkZCBvdGhlciBzb3VyY2VzIG9mIGVudHJvcHkgb25seSBpZiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBpcyBub3QKLy8gYXZhaWxhYmxlIC0tIG90aGVyd2lzZSB0aGlzIHNvdXJjZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdXNlZCBieSB0aGUgcHJuZwp2YXIgX25vZGVqcyA9ICgKICB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLm5vZGUpOwp2YXIgZ2V0UmFuZG9tVmFsdWVzID0gbnVsbDsKaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKICB2YXIgX2NyeXB0byA9IHdpbmRvdy5jcnlwdG8gfHwgd2luZG93Lm1zQ3J5cHRvOwogIGlmKF9jcnlwdG8gJiYgX2NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHsKICAgIGdldFJhbmRvbVZhbHVlcyA9IGZ1bmN0aW9uKGFycikgewogICAgICByZXR1cm4gX2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTsKICAgIH07CiAgfQp9CmlmKGZvcmdlLmRpc2FibGVOYXRpdmVDb2RlIHx8ICghX25vZGVqcyAmJiAhZ2V0UmFuZG9tVmFsdWVzKSkgewogIC8vIGlmIHRoaXMgaXMgYSB3ZWIgd29ya2VyLCBkbyBub3QgdXNlIHdlYWsgZW50cm9weSwgaW5zdGVhZCByZWdpc3RlciB0bwogIC8vIHJlY2VpdmUgc3Ryb25nIGVudHJvcHkgYXN5bmNocm9ub3VzbHkgZnJvbSB0aGUgbWFpbiB0aHJlYWQKICBpZih0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB3aW5kb3cuZG9jdW1lbnQgPT09IHVuZGVmaW5lZCkgewogICAgLy8gRklYTUU6CiAgfQoKICAvLyBnZXQgbG9hZCB0aW1lIGVudHJvcHkKICBfY3R4LmNvbGxlY3RJbnQoK25ldyBEYXRlKCksIDMyKTsKCiAgLy8gYWRkIHNvbWUgZW50cm9weSBmcm9tIG5hdmlnYXRvciBvYmplY3QKICBpZih0eXBlb2YobmF2aWdhdG9yKSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgIHZhciBfbmF2Qnl0ZXMgPSAnJzsKICAgIGZvcih2YXIga2V5IGluIG5hdmlnYXRvcikgewogICAgICB0cnkgewogICAgICAgIGlmKHR5cGVvZihuYXZpZ2F0b3Jba2V5XSkgPT0gJ3N0cmluZycpIHsKICAgICAgICAgIF9uYXZCeXRlcyArPSBuYXZpZ2F0b3Jba2V5XTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIC8qIFNvbWUgbmF2aWdhdG9yIGtleXMgbWlnaHQgbm90IGJlIGFjY2Vzc2libGUsIGUuZy4gdGhlIGdlb2xvY2F0aW9uCiAgICAgICAgICBhdHRyaWJ1dGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0b3VjaGVkIGluIE1vemlsbGEgY2hyb21lOi8vCiAgICAgICAgICBjb250ZXh0LgoKICAgICAgICAgIFNpbGVudGx5IGlnbm9yZSB0aGlzIGFuZCBqdXN0IGRvbid0IHVzZSB0aGlzIGFzIGEgc291cmNlIG9mCiAgICAgICAgICBlbnRyb3B5LiAqLwogICAgICB9CiAgICB9CiAgICBfY3R4LmNvbGxlY3QoX25hdkJ5dGVzKTsKICAgIF9uYXZCeXRlcyA9IG51bGw7CiAgfQoKICAvLyBhZGQgbW91c2UgYW5kIGtleWJvYXJkIGNvbGxlY3RvcnMgaWYganF1ZXJ5IGlzIGF2YWlsYWJsZQogIGlmKGpRdWVyeSkgewogICAgLy8gc2V0IHVwIG1vdXNlIGVudHJvcHkgY2FwdHVyZQogICAgalF1ZXJ5KCkubW91c2Vtb3ZlKGZ1bmN0aW9uKGUpIHsKICAgICAgLy8gYWRkIG1vdXNlIGNvb3JkcwogICAgICBfY3R4LmNvbGxlY3RJbnQoZS5jbGllbnRYLCAxNik7CiAgICAgIF9jdHguY29sbGVjdEludChlLmNsaWVudFksIDE2KTsKICAgIH0pOwoKICAgIC8vIHNldCB1cCBrZXlib2FyZCBlbnRyb3B5IGNhcHR1cmUKICAgIGpRdWVyeSgpLmtleXByZXNzKGZ1bmN0aW9uKGUpIHsKICAgICAgX2N0eC5jb2xsZWN0SW50KGUuY2hhckNvZGUsIDgpOwogICAgfSk7CiAgfQp9CgovKiBSYW5kb20gQVBJICovCmlmKCFmb3JnZS5yYW5kb20pIHsKICBmb3JnZS5yYW5kb20gPSBfY3R4Owp9IGVsc2UgewogIC8vIGV4dGVuZCBmb3JnZS5yYW5kb20gd2l0aCBfY3R4CiAgZm9yKHZhciBrZXkgaW4gX2N0eCkgewogICAgZm9yZ2UucmFuZG9tW2tleV0gPSBfY3R4W2tleV07CiAgfQp9CgovLyBleHBvc2Ugc3Bhd24gUFJORwpmb3JnZS5yYW5kb20uY3JlYXRlSW5zdGFuY2UgPSBzcGF3blBybmc7Cgp9KSh0eXBlb2YoalF1ZXJ5KSAhPT0gJ3VuZGVmaW5lZCcgPyBqUXVlcnkgOiBudWxsKTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3JhbmRvbSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9yYW5kb20nLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9hZXMnLCAnLi9tZCcsICcuL3BybmcnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFJDMiBpbXBsZW1lbnRhdGlvbi4KICoKICogQGF1dGhvciBTdGVmYW4gU2llZ2wKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqCiAqIEluZm9ybWF0aW9uIG9uIHRoZSBSQzIgY2lwaGVyIGlzIGF2YWlsYWJsZSBmcm9tIFJGQyAjMjI2OCwKICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjI2OC50eHQKICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Cgp2YXIgcGlUYWJsZSA9IFsKICAweGQ5LCAweDc4LCAweGY5LCAweGM0LCAweDE5LCAweGRkLCAweGI1LCAweGVkLCAweDI4LCAweGU5LCAweGZkLCAweDc5LCAweDRhLCAweGEwLCAweGQ4LCAweDlkLAogIDB4YzYsIDB4N2UsIDB4MzcsIDB4ODMsIDB4MmIsIDB4NzYsIDB4NTMsIDB4OGUsIDB4NjIsIDB4NGMsIDB4NjQsIDB4ODgsIDB4NDQsIDB4OGIsIDB4ZmIsIDB4YTIsCiAgMHgxNywgMHg5YSwgMHg1OSwgMHhmNSwgMHg4NywgMHhiMywgMHg0ZiwgMHgxMywgMHg2MSwgMHg0NSwgMHg2ZCwgMHg4ZCwgMHgwOSwgMHg4MSwgMHg3ZCwgMHgzMiwKICAweGJkLCAweDhmLCAweDQwLCAweGViLCAweDg2LCAweGI3LCAweDdiLCAweDBiLCAweGYwLCAweDk1LCAweDIxLCAweDIyLCAweDVjLCAweDZiLCAweDRlLCAweDgyLAogIDB4NTQsIDB4ZDYsIDB4NjUsIDB4OTMsIDB4Y2UsIDB4NjAsIDB4YjIsIDB4MWMsIDB4NzMsIDB4NTYsIDB4YzAsIDB4MTQsIDB4YTcsIDB4OGMsIDB4ZjEsIDB4ZGMsCiAgMHgxMiwgMHg3NSwgMHhjYSwgMHgxZiwgMHgzYiwgMHhiZSwgMHhlNCwgMHhkMSwgMHg0MiwgMHgzZCwgMHhkNCwgMHgzMCwgMHhhMywgMHgzYywgMHhiNiwgMHgyNiwKICAweDZmLCAweGJmLCAweDBlLCAweGRhLCAweDQ2LCAweDY5LCAweDA3LCAweDU3LCAweDI3LCAweGYyLCAweDFkLCAweDliLCAweGJjLCAweDk0LCAweDQzLCAweDAzLAogIDB4ZjgsIDB4MTEsIDB4YzcsIDB4ZjYsIDB4OTAsIDB4ZWYsIDB4M2UsIDB4ZTcsIDB4MDYsIDB4YzMsIDB4ZDUsIDB4MmYsIDB4YzgsIDB4NjYsIDB4MWUsIDB4ZDcsCiAgMHgwOCwgMHhlOCwgMHhlYSwgMHhkZSwgMHg4MCwgMHg1MiwgMHhlZSwgMHhmNywgMHg4NCwgMHhhYSwgMHg3MiwgMHhhYywgMHgzNSwgMHg0ZCwgMHg2YSwgMHgyYSwKICAweDk2LCAweDFhLCAweGQyLCAweDcxLCAweDVhLCAweDE1LCAweDQ5LCAweDc0LCAweDRiLCAweDlmLCAweGQwLCAweDVlLCAweDA0LCAweDE4LCAweGE0LCAweGVjLAogIDB4YzIsIDB4ZTAsIDB4NDEsIDB4NmUsIDB4MGYsIDB4NTEsIDB4Y2IsIDB4Y2MsIDB4MjQsIDB4OTEsIDB4YWYsIDB4NTAsIDB4YTEsIDB4ZjQsIDB4NzAsIDB4MzksCiAgMHg5OSwgMHg3YywgMHgzYSwgMHg4NSwgMHgyMywgMHhiOCwgMHhiNCwgMHg3YSwgMHhmYywgMHgwMiwgMHgzNiwgMHg1YiwgMHgyNSwgMHg1NSwgMHg5NywgMHgzMSwKICAweDJkLCAweDVkLCAweGZhLCAweDk4LCAweGUzLCAweDhhLCAweDkyLCAweGFlLCAweDA1LCAweGRmLCAweDI5LCAweDEwLCAweDY3LCAweDZjLCAweGJhLCAweGM5LAogIDB4ZDMsIDB4MDAsIDB4ZTYsIDB4Y2YsIDB4ZTEsIDB4OWUsIDB4YTgsIDB4MmMsIDB4NjMsIDB4MTYsIDB4MDEsIDB4M2YsIDB4NTgsIDB4ZTIsIDB4ODksIDB4YTksCiAgMHgwZCwgMHgzOCwgMHgzNCwgMHgxYiwgMHhhYiwgMHgzMywgMHhmZiwgMHhiMCwgMHhiYiwgMHg0OCwgMHgwYywgMHg1ZiwgMHhiOSwgMHhiMSwgMHhjZCwgMHgyZSwKICAweGM1LCAweGYzLCAweGRiLCAweDQ3LCAweGU1LCAweGE1LCAweDljLCAweDc3LCAweDBhLCAweGE2LCAweDIwLCAweDY4LCAweGZlLCAweDdmLCAweGMxLCAweGFkCl07Cgp2YXIgcyA9IFsxLCAyLCAzLCA1XTsKCgovKioKICogUm90YXRlIGEgd29yZCBsZWZ0IGJ5IGdpdmVuIG51bWJlciBvZiBiaXRzLgogKgogKiBCaXRzIHRoYXQgYXJlIHNoaWZ0ZWQgb3V0IG9uIHRoZSBsZWZ0IGFyZSBwdXQgYmFjayBpbiBvbiB0aGUgcmlnaHQKICogaGFuZCBzaWRlLgogKgogKiBAcGFyYW0gd29yZCBUaGUgd29yZCB0byBzaGlmdCBsZWZ0LgogKiBAcGFyYW0gYml0cyBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQgYnkuCiAqIEByZXR1cm4gVGhlIHJvdGF0ZWQgd29yZC4KICovCnZhciByb2wgPSBmdW5jdGlvbih3b3JkLCBiaXRzKSB7CiAgcmV0dXJuICgod29yZCA8PCBiaXRzKSAmIDB4ZmZmZikgfCAoKHdvcmQgJiAweGZmZmYpID4+ICgxNiAtIGJpdHMpKTsKfTsKCi8qKgogKiBSb3RhdGUgYSB3b3JkIHJpZ2h0IGJ5IGdpdmVuIG51bWJlciBvZiBiaXRzLgogKgogKiBCaXRzIHRoYXQgYXJlIHNoaWZ0ZWQgb3V0IG9uIHRoZSByaWdodCBhcmUgcHV0IGJhY2sgaW4gb24gdGhlIGxlZnQKICogaGFuZCBzaWRlLgogKgogKiBAcGFyYW0gd29yZCBUaGUgd29yZCB0byBzaGlmdCByaWdodC4KICogQHBhcmFtIGJpdHMgVGhlIG51bWJlciBvZiBiaXRzIHRvIHNoaWZ0IGJ5LgogKiBAcmV0dXJuIFRoZSByb3RhdGVkIHdvcmQuCiAqLwp2YXIgcm9yID0gZnVuY3Rpb24od29yZCwgYml0cykgewogIHJldHVybiAoKHdvcmQgJiAweGZmZmYpID4+IGJpdHMpIHwgKCh3b3JkIDw8ICgxNiAtIGJpdHMpKSAmIDB4ZmZmZik7Cn07CgoKLyogUkMyIEFQSSAqLwpmb3JnZS5yYzIgPSBmb3JnZS5yYzIgfHwge307CgovKioKICogUGVyZm9ybSBSQzIga2V5IGV4cGFuc2lvbiBhcyBwZXIgUkZDICMyMjY4LCBzZWN0aW9uIDIuCiAqCiAqIEBwYXJhbSBrZXkgdmFyaWFibGUtbGVuZ3RoIHVzZXIga2V5IChiZXR3ZWVuIDEgYW5kIDEyOCBieXRlcykKICogQHBhcmFtIGVmZktleUJpdHMgbnVtYmVyIG9mIGVmZmVjdGl2ZSBrZXkgYml0cyAoZGVmYXVsdDogMTI4KQogKiBAcmV0dXJuIHRoZSBleHBhbmRlZCBSQzIga2V5IChCeXRlQnVmZmVyIG9mIDEyOCBieXRlcykKICovCmZvcmdlLnJjMi5leHBhbmRLZXkgPSBmdW5jdGlvbihrZXksIGVmZktleUJpdHMpIHsKICBpZih0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykgewogICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoa2V5KTsKICB9CiAgZWZmS2V5Qml0cyA9IGVmZktleUJpdHMgfHwgMTI4OwoKICAvKiBpbnRyb2R1Y2UgdmFyaWFibGVzIHRoYXQgbWF0Y2ggdGhlIG5hbWVzIHVzZWQgaW4gUkZDICMyMjY4ICovCiAgdmFyIEwgPSBrZXk7CiAgdmFyIFQgPSBrZXkubGVuZ3RoKCk7CiAgdmFyIFQxID0gZWZmS2V5Qml0czsKICB2YXIgVDggPSBNYXRoLmNlaWwoVDEgLyA4KTsKICB2YXIgVE0gPSAweGZmID4+IChUMSAmIDB4MDcpOwogIHZhciBpOwoKICBmb3IoaSA9IFQ7IGkgPCAxMjg7IGkgKyspIHsKICAgIEwucHV0Qnl0ZShwaVRhYmxlWyhMLmF0KGkgLSAxKSArIEwuYXQoaSAtIFQpKSAmIDB4ZmZdKTsKICB9CgogIEwuc2V0QXQoMTI4IC0gVDgsIHBpVGFibGVbTC5hdCgxMjggLSBUOCkgJiBUTV0pOwoKICBmb3IoaSA9IDEyNyAtIFQ4OyBpID49IDA7IGkgLS0pIHsKICAgIEwuc2V0QXQoaSwgcGlUYWJsZVtMLmF0KGkgKyAxKSBeIEwuYXQoaSArIFQ4KV0pOwogIH0KCiAgcmV0dXJuIEw7Cn07CgoKLyoqCiAqIENyZWF0ZXMgYSBSQzIgY2lwaGVyIG9iamVjdC4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UgKGFzIGJhc2UgZm9yIGtleSBnZW5lcmF0aW9uKS4KICogQHBhcmFtIGJpdHMgdGhlIG51bWJlciBvZiBlZmZlY3RpdmUga2V5IGJpdHMuCiAqIEBwYXJhbSBlbmNyeXB0IGZhbHNlIGZvciBkZWNyeXB0aW9uLCB0cnVlIGZvciBlbmNyeXB0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwp2YXIgY3JlYXRlQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBiaXRzLCBlbmNyeXB0KSB7CiAgdmFyIF9maW5pc2ggPSBmYWxzZSwgX2lucHV0ID0gbnVsbCwgX291dHB1dCA9IG51bGwsIF9pdiA9IG51bGw7CiAgdmFyIG1peFJvdW5kLCBtYXNoUm91bmQ7CiAgdmFyIGksIGosIEsgPSBbXTsKCiAgLyogRXhwYW5kIGtleSBhbmQgZmlsbCBpbnRvIEtbXSBBcnJheSAqLwogIGtleSA9IGZvcmdlLnJjMi5leHBhbmRLZXkoa2V5LCBiaXRzKTsKICBmb3IoaSA9IDA7IGkgPCA2NDsgaSArKykgewogICAgSy5wdXNoKGtleS5nZXRJbnQxNkxlKCkpOwogIH0KCiAgaWYoZW5jcnlwdCkgewogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSBtaXhpbmcgcm91bmQgImluIHBsYWNlIi4KICAgICAqCiAgICAgKiBAcGFyYW0gUiBBcnJheSBvZiBmb3VyIHdvcmRzIHRvIHBlcmZvcm0gbWl4aW5nIG9uLgogICAgICovCiAgICBtaXhSb3VuZCA9IGZ1bmN0aW9uKFIpIHsKICAgICAgZm9yKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgUltpXSArPSBLW2pdICsgKFJbKGkgKyAzKSAlIDRdICYgUlsoaSArIDIpICUgNF0pICsKICAgICAgICAgICgoflJbKGkgKyAzKSAlIDRdKSAmIFJbKGkgKyAxKSAlIDRdKTsKICAgICAgICBSW2ldID0gcm9sKFJbaV0sIHNbaV0pOwogICAgICAgIGogKys7CiAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSBtYXNoaW5nIHJvdW5kICJpbiBwbGFjZSIuCiAgICAgKgogICAgICogQHBhcmFtIFIgQXJyYXkgb2YgZm91ciB3b3JkcyB0byBwZXJmb3JtIG1hc2hpbmcgb24uCiAgICAgKi8KICAgIG1hc2hSb3VuZCA9IGZ1bmN0aW9uKFIpIHsKICAgICAgZm9yKGkgPSAwOyBpIDwgNDsgaSArKykgewogICAgICAgIFJbaV0gKz0gS1tSWyhpICsgMykgJSA0XSAmIDYzXTsKICAgICAgfQogICAgfTsKICB9IGVsc2UgewogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSByLW1peGluZyByb3VuZCAiaW4gcGxhY2UiLgogICAgICoKICAgICAqIEBwYXJhbSBSIEFycmF5IG9mIGZvdXIgd29yZHMgdG8gcGVyZm9ybSBtaXhpbmcgb24uCiAgICAgKi8KICAgIG1peFJvdW5kID0gZnVuY3Rpb24oUikgewogICAgICBmb3IoaSA9IDM7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgUltpXSA9IHJvcihSW2ldLCBzW2ldKTsKICAgICAgICBSW2ldIC09IEtbal0gKyAoUlsoaSArIDMpICUgNF0gJiBSWyhpICsgMikgJSA0XSkgKwogICAgICAgICAgKCh+UlsoaSArIDMpICUgNF0pICYgUlsoaSArIDEpICUgNF0pOwogICAgICAgIGogLS07CiAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSByLW1hc2hpbmcgcm91bmQgImluIHBsYWNlIi4KICAgICAqCiAgICAgKiBAcGFyYW0gUiBBcnJheSBvZiBmb3VyIHdvcmRzIHRvIHBlcmZvcm0gbWFzaGluZyBvbi4KICAgICAqLwogICAgbWFzaFJvdW5kID0gZnVuY3Rpb24oUikgewogICAgICBmb3IoaSA9IDM7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgUltpXSAtPSBLW1JbKGkgKyAzKSAlIDRdICYgNjNdOwogICAgICB9CiAgICB9OwogIH0KCiAgLyoqCiAgICogUnVuIHRoZSBzcGVjaWZpZWQgY2lwaGVyIGV4ZWN1dGlvbiBwbGFuLgogICAqCiAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBmb3VyIHdvcmRzIGZyb20gdGhlIGlucHV0IGJ1ZmZlciwgYXBwbGllcyB0aGUgSVYgb24KICAgKiBpdCAoaWYgcmVxdWVzdGVkKSBhbmQgcnVucyB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHBsYW4uCiAgICoKICAgKiBUaGUgcGxhbiBtdXN0IGJlIHB1dCB0b2dldGhlciBpbiBmb3JtIG9mIGEgYXJyYXkgb2YgYXJyYXlzLiAgV2hlcmUgdGhlCiAgICogb3V0ZXIgb25lIGlzIHNpbXBseSBhIGxpc3Qgb2Ygc3RlcHMgdG8gcGVyZm9ybSBhbmQgdGhlIGlubmVyIG9uZSBuZWVkcwogICAqIHRvIGhhdmUgdHdvIGVsZW1lbnRzOiB0aGUgZmlyc3Qgb25lIHRlbGxpbmcgaG93IG1hbnkgcm91bmRzIHRvIHBlcmZvcm0sCiAgICogdGhlIHNlY29uZCBvbmUgdGVsbGluZyB3aGF0IHRvIGRvIChpLmUuIHRoZSBmdW5jdGlvbiB0byBjYWxsKS4KICAgKgogICAqIEBwYXJhbSB7QXJyYXl9IHBsYW4gVGhlIHBsYW4gdG8gZXhlY3V0ZS4KICAgKi8KICB2YXIgcnVuUGxhbiA9IGZ1bmN0aW9uKHBsYW4pIHsKICAgIHZhciBSID0gW107CgogICAgLyogR2V0IGRhdGEgZnJvbSBpbnB1dCBidWZmZXIgYW5kIGZpbGwgdGhlIGZvdXIgd29yZHMgaW50byBSICovCiAgICBmb3IoaSA9IDA7IGkgPCA0OyBpICsrKSB7CiAgICAgIHZhciB2YWwgPSBfaW5wdXQuZ2V0SW50MTZMZSgpOwoKICAgICAgaWYoX2l2ICE9PSBudWxsKSB7CiAgICAgICAgaWYoZW5jcnlwdCkgewogICAgICAgICAgLyogV2UncmUgZW5jcnlwdGluZywgYXBwbHkgdGhlIElWIGZpcnN0LiAqLwogICAgICAgICAgdmFsIF49IF9pdi5nZXRJbnQxNkxlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8qIFdlJ3JlIGRlY3J5cHRpb24sIGtlZXAgY2lwaGVyIHRleHQgZm9yIG5leHQgYmxvY2suICovCiAgICAgICAgICBfaXYucHV0SW50MTZMZSh2YWwpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgUi5wdXNoKHZhbCAmIDB4ZmZmZik7CiAgICB9CgogICAgLyogUmVzZXQgZ2xvYmFsICJqIiB2YXJpYWJsZSBhcyBwZXIgc3BlYy4gKi8KICAgIGogPSBlbmNyeXB0ID8gMCA6IDYzOwoKICAgIC8qIFJ1biBleGVjdXRpb24gcGxhbi4gKi8KICAgIGZvcih2YXIgcHRyID0gMDsgcHRyIDwgcGxhbi5sZW5ndGg7IHB0ciArKykgewogICAgICBmb3IodmFyIGN0ciA9IDA7IGN0ciA8IHBsYW5bcHRyXVswXTsgY3RyICsrKSB7CiAgICAgICAgcGxhbltwdHJdWzFdKFIpOwogICAgICB9CiAgICB9CgogICAgLyogV3JpdGUgYmFjayByZXN1bHQgdG8gb3V0cHV0IGJ1ZmZlci4gKi8KICAgIGZvcihpID0gMDsgaSA8IDQ7IGkgKyspIHsKICAgICAgaWYoX2l2ICE9PSBudWxsKSB7CiAgICAgICAgaWYoZW5jcnlwdCkgewogICAgICAgICAgLyogV2UncmUgZW5jcnlwdGluZyBpbiBDQkMtbW9kZSwgZmVlZCBiYWNrIGVuY3J5cHRlZCBieXRlcyBpbnRvCiAgICAgICAgICAgICBJViBidWZmZXIgdG8gY2FycnkgaXQgZm9yd2FyZCB0byBuZXh0IGJsb2NrLiAqLwogICAgICAgICAgX2l2LnB1dEludDE2TGUoUltpXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIFJbaV0gXj0gX2l2LmdldEludDE2TGUoKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIF9vdXRwdXQucHV0SW50MTZMZShSW2ldKTsKICAgIH0KICB9OwoKCiAgLyogQ3JlYXRlIGNpcGhlciBvYmplY3QgKi8KICB2YXIgY2lwaGVyID0gbnVsbDsKICBjaXBoZXIgPSB7CiAgICAvKioKICAgICAqIFN0YXJ0cyBvciByZXN0YXJ0cyB0aGUgZW5jcnlwdGlvbiBvciBkZWNyeXB0aW9uIHByb2Nlc3MsIHdoaWNoZXZlcgogICAgICogd2FzIHByZXZpb3VzbHkgY29uZmlndXJlZC4KICAgICAqCiAgICAgKiBUbyB1c2UgdGhlIGNpcGhlciBpbiBDQkMgbW9kZSwgaXYgbWF5IGJlIGdpdmVuIGVpdGhlciBhcyBhIHN0cmluZwogICAgICogb2YgYnl0ZXMsIG9yIGFzIGEgYnl0ZSBidWZmZXIuICBGb3IgRUNCIG1vZGUsIGdpdmUgbnVsbCBhcyBpdi4KICAgICAqCiAgICAgKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UsIG51bGwgZm9yIEVDQiBtb2RlLgogICAgICogQHBhcmFtIG91dHB1dCB0aGUgb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICAgICAqLwogICAgc3RhcnQ6IGZ1bmN0aW9uKGl2LCBvdXRwdXQpIHsKICAgICAgaWYoaXYpIHsKICAgICAgICAvKiBDQkMgbW9kZSAqLwogICAgICAgIGlmKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIGl2ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoaXYpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgX2ZpbmlzaCA9IGZhbHNlOwogICAgICBfaW5wdXQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBfb3V0cHV0ID0gb3V0cHV0IHx8IG5ldyBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBfaXYgPSBpdjsKCiAgICAgIGNpcGhlci5vdXRwdXQgPSBfb3V0cHV0OwogICAgfSwKCiAgICAvKioKICAgICAqIFVwZGF0ZXMgdGhlIG5leHQgYmxvY2suCiAgICAgKgogICAgICogQHBhcmFtIGlucHV0IHRoZSBidWZmZXIgdG8gcmVhZCBmcm9tLgogICAgICovCiAgICB1cGRhdGU6IGZ1bmN0aW9uKGlucHV0KSB7CiAgICAgIGlmKCFfZmluaXNoKSB7CiAgICAgICAgLy8gbm90IGZpbmlzaGluZywgc28gZmlsbCB0aGUgaW5wdXQgYnVmZmVyIHdpdGggbW9yZSBpbnB1dAogICAgICAgIF9pbnB1dC5wdXRCdWZmZXIoaW5wdXQpOwogICAgICB9CgogICAgICB3aGlsZShfaW5wdXQubGVuZ3RoKCkgPj0gOCkgewogICAgICAgIHJ1blBsYW4oWwogICAgICAgICAgICBbIDUsIG1peFJvdW5kIF0sCiAgICAgICAgICAgIFsgMSwgbWFzaFJvdW5kIF0sCiAgICAgICAgICAgIFsgNiwgbWl4Um91bmQgXSwKICAgICAgICAgICAgWyAxLCBtYXNoUm91bmQgXSwKICAgICAgICAgICAgWyA1LCBtaXhSb3VuZCBdCiAgICAgICAgICBdKTsKICAgICAgfQogICAgfSwKCiAgICAvKioKICAgICAqIEZpbmlzaGVzIGVuY3J5cHRpbmcgb3IgZGVjcnlwdGluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gcGFkIGEgcGFkZGluZyBmdW5jdGlvbiB0byB1c2UsIG51bGwgZm9yIFBLQ1MjNyBwYWRkaW5nLAogICAgICogICAgICAgICAgIHNpZ25hdHVyZShibG9ja1NpemUsIGJ1ZmZlciwgZGVjcnlwdCkuCiAgICAgKgogICAgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIG9uIGVycm9yLgogICAgICovCiAgICBmaW5pc2g6IGZ1bmN0aW9uKHBhZCkgewogICAgICB2YXIgcnZhbCA9IHRydWU7CgogICAgICBpZihlbmNyeXB0KSB7CiAgICAgICAgaWYocGFkKSB7CiAgICAgICAgICBydmFsID0gcGFkKDgsIF9pbnB1dCwgIWVuY3J5cHQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBhZGQgUEtDUyM3IHBhZGRpbmcgdG8gYmxvY2sgKGVhY2ggcGFkIGJ5dGUgaXMgdGhlCiAgICAgICAgICAvLyB2YWx1ZSBvZiB0aGUgbnVtYmVyIG9mIHBhZCBieXRlcykKICAgICAgICAgIHZhciBwYWRkaW5nID0gKF9pbnB1dC5sZW5ndGgoKSA9PT0gOCkgPyA4IDogKDggLSBfaW5wdXQubGVuZ3RoKCkpOwogICAgICAgICAgX2lucHV0LmZpbGxXaXRoQnl0ZShwYWRkaW5nLCBwYWRkaW5nKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmKHJ2YWwpIHsKICAgICAgICAvLyBkbyBmaW5hbCB1cGRhdGUKICAgICAgICBfZmluaXNoID0gdHJ1ZTsKICAgICAgICBjaXBoZXIudXBkYXRlKCk7CiAgICAgIH0KCiAgICAgIGlmKCFlbmNyeXB0KSB7CiAgICAgICAgLy8gY2hlY2sgZm9yIGVycm9yOiBpbnB1dCBkYXRhIG5vdCBhIG11bHRpcGxlIG9mIGJsb2NrIHNpemUKICAgICAgICBydmFsID0gKF9pbnB1dC5sZW5ndGgoKSA9PT0gMCk7CiAgICAgICAgaWYocnZhbCkgewogICAgICAgICAgaWYocGFkKSB7CiAgICAgICAgICAgIHJ2YWwgPSBwYWQoOCwgX291dHB1dCwgIWVuY3J5cHQpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gZW5zdXJlIHBhZGRpbmcgYnl0ZSBjb3VudCBpcyB2YWxpZAogICAgICAgICAgICB2YXIgbGVuID0gX291dHB1dC5sZW5ndGgoKTsKICAgICAgICAgICAgdmFyIGNvdW50ID0gX291dHB1dC5hdChsZW4gLSAxKTsKCiAgICAgICAgICAgIGlmKGNvdW50ID4gbGVuKSB7CiAgICAgICAgICAgICAgcnZhbCA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIC8vIHRyaW0gb2ZmIHBhZGRpbmcgYnl0ZXMKICAgICAgICAgICAgICBfb3V0cHV0LnRydW5jYXRlKGNvdW50KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHJ2YWw7CiAgICB9CiAgfTsKCiAgcmV0dXJuIGNpcGhlcjsKfTsKCgovKioKICogQ3JlYXRlcyBhbiBSQzIgY2lwaGVyIG9iamVjdCB0byBlbmNyeXB0IGRhdGEgaW4gRUNCIG9yIENCQyBtb2RlIHVzaW5nIHRoZQogKiBnaXZlbiBzeW1tZXRyaWMga2V5LiBUaGUgb3V0cHV0IHdpbGwgYmUgc3RvcmVkIGluIHRoZSAnb3V0cHV0JyBtZW1iZXIKICogb2YgdGhlIHJldHVybmVkIGNpcGhlci4KICoKICogVGhlIGtleSBhbmQgaXYgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqIFRoZSBjaXBoZXIgaXMgaW5pdGlhbGl6ZWQgdG8gdXNlIDEyOCBlZmZlY3RpdmUga2V5IGJpdHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UuCiAqIEBwYXJhbSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5yYzIuc3RhcnRFbmNyeXB0aW5nID0gZnVuY3Rpb24oa2V5LCBpdiwgb3V0cHV0KSB7CiAgdmFyIGNpcGhlciA9IGZvcmdlLnJjMi5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGtleSwgMTI4KTsKICBjaXBoZXIuc3RhcnQoaXYsIG91dHB1dCk7CiAgcmV0dXJuIGNpcGhlcjsKfTsKCi8qKgogKiBDcmVhdGVzIGFuIFJDMiBjaXBoZXIgb2JqZWN0IHRvIGVuY3J5cHQgZGF0YSBpbiBFQ0Igb3IgQ0JDIG1vZGUgdXNpbmcgdGhlCiAqIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqCiAqIFRoZSBrZXkgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqCiAqIFRvIHN0YXJ0IGVuY3J5cHRpbmcgY2FsbCBzdGFydCgpIG9uIHRoZSBjaXBoZXIgd2l0aCBhbiBpdiBhbmQgb3B0aW9uYWwKICogb3V0cHV0IGJ1ZmZlci4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLnJjMi5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBiaXRzKSB7CiAgcmV0dXJuIGNyZWF0ZUNpcGhlcihrZXksIGJpdHMsIHRydWUpOwp9OwoKLyoqCiAqIENyZWF0ZXMgYW4gUkMyIGNpcGhlciBvYmplY3QgdG8gZGVjcnlwdCBkYXRhIGluIEVDQiBvciBDQkMgbW9kZSB1c2luZyB0aGUKICogZ2l2ZW4gc3ltbWV0cmljIGtleS4gVGhlIG91dHB1dCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgJ291dHB1dCcgbWVtYmVyCiAqIG9mIHRoZSByZXR1cm5lZCBjaXBoZXIuCiAqCiAqIFRoZSBrZXkgYW5kIGl2IG1heSBiZSBnaXZlbiBhcyBhIHN0cmluZyBvZiBieXRlcyBvciBhIGJ5dGUgYnVmZmVyLgogKiBUaGUgY2lwaGVyIGlzIGluaXRpYWxpemVkIHRvIHVzZSAxMjggZWZmZWN0aXZlIGtleSBiaXRzLgogKgogKiBAcGFyYW0ga2V5IHRoZSBzeW1tZXRyaWMga2V5IHRvIHVzZS4KICogQHBhcmFtIGl2IHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UucmMyLnN0YXJ0RGVjcnlwdGluZyA9IGZ1bmN0aW9uKGtleSwgaXYsIG91dHB1dCkgewogIHZhciBjaXBoZXIgPSBmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihrZXksIDEyOCk7CiAgY2lwaGVyLnN0YXJ0KGl2LCBvdXRwdXQpOwogIHJldHVybiBjaXBoZXI7Cn07CgovKioKICogQ3JlYXRlcyBhbiBSQzIgY2lwaGVyIG9iamVjdCB0byBkZWNyeXB0IGRhdGEgaW4gRUNCIG9yIENCQyBtb2RlIHVzaW5nIHRoZQogKiBnaXZlbiBzeW1tZXRyaWMga2V5LgogKgogKiBUaGUga2V5IG1heSBiZSBnaXZlbiBhcyBhIHN0cmluZyBvZiBieXRlcyBvciBhIGJ5dGUgYnVmZmVyLgogKgogKiBUbyBzdGFydCBkZWNyeXB0aW5nIGNhbGwgc3RhcnQoKSBvbiB0aGUgY2lwaGVyIHdpdGggYW4gaXYgYW5kIG9wdGlvbmFsCiAqIG91dHB1dCBidWZmZXIuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlciA9IGZ1bmN0aW9uKGtleSwgYml0cykgewogIHJldHVybiBjcmVhdGVDaXBoZXIoa2V5LCBiaXRzLCBmYWxzZSk7Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdyYzInOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcmMyJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8vIENvcHlyaWdodCAoYykgMjAwNSAgVG9tIFd1Ci8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi8vIFNlZSAiTElDRU5TRSIgZm9yIGRldGFpbHMuCgovLyBCYXNpYyBKYXZhU2NyaXB0IEJOIGxpYnJhcnkgLSBzdWJzZXQgdXNlZnVsIGZvciBSU0EgZW5jcnlwdGlvbi4KCi8qCkxpY2Vuc2luZyAoTElDRU5TRSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBzb2Z0d2FyZSBpcyBjb3ZlcmVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0OgoqLwovKgogKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSAgVG9tIFd1CiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQogKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUy1JUyIgQU5EIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAqIEVYUFJFU1MsIElNUExJRUQgT1IgT1RIRVJXSVNFLCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkKICogV0FSUkFOVFkgT0YgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgogKgogKiBJTiBOTyBFVkVOVCBTSEFMTCBUT00gV1UgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5DSURFTlRBTCwKICogSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9GIEFOWSBLSU5ELCBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSCiAqIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgT1IgTk9UIEFEVklTRUQgT0YKICogVEhFIFBPU1NJQklMSVRZIE9GIERBTUFHRSwgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBBUklTSU5HIE9VVAogKiBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogKgogKiBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBjb25kaXRpb24gYXBwbGllczoKICoKICogQWxsIHJlZGlzdHJpYnV0aW9ucyBtdXN0IHJldGFpbiBhbiBpbnRhY3QgY29weSBvZiB0aGlzIGNvcHlyaWdodCBub3RpY2UKICogYW5kIGRpc2NsYWltZXIuCiAqLwovKgpBZGRyZXNzIGFsbCBxdWVzdGlvbnMgcmVnYXJkaW5nIHRoaXMgbGljZW5zZSB0bzoKCiAgVG9tIFd1CiAgdGp3QGNzLlN0YW5mb3JkLkVEVQoqLwoKKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIEJpdHMgcGVyIGRpZ2l0CnZhciBkYml0czsKCi8vIEphdmFTY3JpcHQgZW5naW5lIGFuYWx5c2lzCnZhciBjYW5hcnkgPSAweGRlYWRiZWVmY2FmZTsKdmFyIGpfbG0gPSAoKGNhbmFyeSYweGZmZmZmZik9PTB4ZWZjYWZlKTsKCi8vIChwdWJsaWMpIENvbnN0cnVjdG9yCmZ1bmN0aW9uIEJpZ0ludGVnZXIoYSxiLGMpIHsKICB0aGlzLmRhdGEgPSBbXTsKICBpZihhICE9IG51bGwpCiAgICBpZigibnVtYmVyIiA9PSB0eXBlb2YgYSkgdGhpcy5mcm9tTnVtYmVyKGEsYixjKTsKICAgIGVsc2UgaWYoYiA9PSBudWxsICYmICJzdHJpbmciICE9IHR5cGVvZiBhKSB0aGlzLmZyb21TdHJpbmcoYSwyNTYpOwogICAgZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKTsKfQoKLy8gcmV0dXJuIG5ldywgdW5zZXQgQmlnSW50ZWdlcgpmdW5jdGlvbiBuYmkoKSB7IHJldHVybiBuZXcgQmlnSW50ZWdlcihudWxsKTsgfQoKLy8gYW06IENvbXB1dGUgd19qICs9ICh4KnRoaXNfaSksIHByb3BhZ2F0ZSBjYXJyaWVzLAovLyBjIGlzIGluaXRpYWwgY2FycnksIHJldHVybnMgZmluYWwgY2FycnkuCi8vIGMgPCAzKmR2YWx1ZSwgeCA8IDIqZHZhbHVlLCB0aGlzX2kgPCBkdmFsdWUKLy8gV2UgbmVlZCB0byBzZWxlY3QgdGhlIGZhc3Rlc3Qgb25lIHRoYXQgd29ya3MgaW4gdGhpcyBlbnZpcm9ubWVudC4KCi8vIGFtMTogdXNlIGEgc2luZ2xlIG11bHQgYW5kIGRpdmlkZSB0byBnZXQgdGhlIGhpZ2ggYml0cywKLy8gbWF4IGRpZ2l0IGJpdHMgc2hvdWxkIGJlIDI2IGJlY2F1c2UKLy8gbWF4IGludGVybmFsIHZhbHVlID0gMipkdmFsdWVeMi0yKmR2YWx1ZSAoPCAyXjUzKQpmdW5jdGlvbiBhbTEoaSx4LHcsaixjLG4pIHsKICB3aGlsZSgtLW4gPj0gMCkgewogICAgdmFyIHYgPSB4KnRoaXMuZGF0YVtpKytdK3cuZGF0YVtqXStjOwogICAgYyA9IE1hdGguZmxvb3Iodi8weDQwMDAwMDApOwogICAgdy5kYXRhW2orK10gPSB2JjB4M2ZmZmZmZjsKICB9CiAgcmV0dXJuIGM7Cn0KLy8gYW0yIGF2b2lkcyBhIGJpZyBtdWx0LWFuZC1leHRyYWN0IGNvbXBsZXRlbHkuCi8vIE1heCBkaWdpdCBiaXRzIHNob3VsZCBiZSA8PSAzMCBiZWNhdXNlIHdlIGRvIGJpdHdpc2Ugb3BzCi8vIG9uIHZhbHVlcyB1cCB0byAyKmhkdmFsdWVeMi1oZHZhbHVlLTEgKDwgMl4zMSkKZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKSB7CiAgdmFyIHhsID0geCYweDdmZmYsIHhoID0geD4+MTU7CiAgd2hpbGUoLS1uID49IDApIHsKICAgIHZhciBsID0gdGhpcy5kYXRhW2ldJjB4N2ZmZjsKICAgIHZhciBoID0gdGhpcy5kYXRhW2krK10+PjE1OwogICAgdmFyIG0gPSB4aCpsK2gqeGw7CiAgICBsID0geGwqbCsoKG0mMHg3ZmZmKTw8MTUpK3cuZGF0YVtqXSsoYyYweDNmZmZmZmZmKTsKICAgIGMgPSAobD4+PjMwKSsobT4+PjE1KSt4aCpoKyhjPj4+MzApOwogICAgdy5kYXRhW2orK10gPSBsJjB4M2ZmZmZmZmY7CiAgfQogIHJldHVybiBjOwp9Ci8vIEFsdGVybmF0ZWx5LCBzZXQgbWF4IGRpZ2l0IGJpdHMgdG8gMjggc2luY2Ugc29tZQovLyBicm93c2VycyBzbG93IGRvd24gd2hlbiBkZWFsaW5nIHdpdGggMzItYml0IG51bWJlcnMuCmZ1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbikgewogIHZhciB4bCA9IHgmMHgzZmZmLCB4aCA9IHg+PjE0OwogIHdoaWxlKC0tbiA+PSAwKSB7CiAgICB2YXIgbCA9IHRoaXMuZGF0YVtpXSYweDNmZmY7CiAgICB2YXIgaCA9IHRoaXMuZGF0YVtpKytdPj4xNDsKICAgIHZhciBtID0geGgqbCtoKnhsOwogICAgbCA9IHhsKmwrKChtJjB4M2ZmZik8PDE0KSt3LmRhdGFbal0rYzsKICAgIGMgPSAobD4+MjgpKyhtPj4xNCkreGgqaDsKICAgIHcuZGF0YVtqKytdID0gbCYweGZmZmZmZmY7CiAgfQogIHJldHVybiBjOwp9CgovLyBub2RlLmpzIChubyBicm93c2VyKQppZih0eXBlb2YobmF2aWdhdG9yKSA9PT0gJ3VuZGVmaW5lZCcpCnsKICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYW0gPSBhbTM7CiAgIGRiaXRzID0gMjg7Cn0gZWxzZSBpZihqX2xtICYmIChuYXZpZ2F0b3IuYXBwTmFtZSA9PSAiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIikpIHsKICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbSA9IGFtMjsKICBkYml0cyA9IDMwOwp9IGVsc2UgaWYoal9sbSAmJiAobmF2aWdhdG9yLmFwcE5hbWUgIT0gIk5ldHNjYXBlIikpIHsKICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbSA9IGFtMTsKICBkYml0cyA9IDI2Owp9IGVsc2UgeyAvLyBNb3ppbGxhL05ldHNjYXBlIHNlZW1zIHRvIHByZWZlciBhbTMKICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbSA9IGFtMzsKICBkYml0cyA9IDI4Owp9CgpCaWdJbnRlZ2VyLnByb3RvdHlwZS5EQiA9IGRiaXRzOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETSA9ICgoMTw8ZGJpdHMpLTEpOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5EViA9ICgxPDxkYml0cyk7Cgp2YXIgQklfRlAgPSA1MjsKQmlnSW50ZWdlci5wcm90b3R5cGUuRlYgPSBNYXRoLnBvdygyLEJJX0ZQKTsKQmlnSW50ZWdlci5wcm90b3R5cGUuRjEgPSBCSV9GUC1kYml0czsKQmlnSW50ZWdlci5wcm90b3R5cGUuRjIgPSAyKmRiaXRzLUJJX0ZQOwoKLy8gRGlnaXQgY29udmVyc2lvbnMKdmFyIEJJX1JNID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CnZhciBCSV9SQyA9IG5ldyBBcnJheSgpOwp2YXIgcnIsdnY7CnJyID0gIjAiLmNoYXJDb2RlQXQoMCk7CmZvcih2diA9IDA7IHZ2IDw9IDk7ICsrdnYpIEJJX1JDW3JyKytdID0gdnY7CnJyID0gImEiLmNoYXJDb2RlQXQoMCk7CmZvcih2diA9IDEwOyB2diA8IDM2OyArK3Z2KSBCSV9SQ1tycisrXSA9IHZ2OwpyciA9ICJBIi5jaGFyQ29kZUF0KDApOwpmb3IodnYgPSAxMDsgdnYgPCAzNjsgKyt2dikgQklfUkNbcnIrK10gPSB2djsKCmZ1bmN0aW9uIGludDJjaGFyKG4pIHsgcmV0dXJuIEJJX1JNLmNoYXJBdChuKTsgfQpmdW5jdGlvbiBpbnRBdChzLGkpIHsKICB2YXIgYyA9IEJJX1JDW3MuY2hhckNvZGVBdChpKV07CiAgcmV0dXJuIChjPT1udWxsKT8tMTpjOwp9CgovLyAocHJvdGVjdGVkKSBjb3B5IHRoaXMgdG8gcgpmdW5jdGlvbiBibnBDb3B5VG8ocikgewogIGZvcih2YXIgaSA9IHRoaXMudC0xOyBpID49IDA7IC0taSkgci5kYXRhW2ldID0gdGhpcy5kYXRhW2ldOwogIHIudCA9IHRoaXMudDsKICByLnMgPSB0aGlzLnM7Cn0KCi8vIChwcm90ZWN0ZWQpIHNldCBmcm9tIGludGVnZXIgdmFsdWUgeCwgLURWIDw9IHggPCBEVgpmdW5jdGlvbiBibnBGcm9tSW50KHgpIHsKICB0aGlzLnQgPSAxOwogIHRoaXMucyA9ICh4PDApPy0xOjA7CiAgaWYoeCA+IDApIHRoaXMuZGF0YVswXSA9IHg7CiAgZWxzZSBpZih4IDwgLTEpIHRoaXMuZGF0YVswXSA9IHgrdGhpcy5EVjsKICBlbHNlIHRoaXMudCA9IDA7Cn0KCi8vIHJldHVybiBiaWdpbnQgaW5pdGlhbGl6ZWQgdG8gdmFsdWUKZnVuY3Rpb24gbmJ2KGkpIHsgdmFyIHIgPSBuYmkoKTsgci5mcm9tSW50KGkpOyByZXR1cm4gcjsgfQoKLy8gKHByb3RlY3RlZCkgc2V0IGZyb20gc3RyaW5nIGFuZCByYWRpeApmdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYikgewogIHZhciBrOwogIGlmKGIgPT0gMTYpIGsgPSA0OwogIGVsc2UgaWYoYiA9PSA4KSBrID0gMzsKICBlbHNlIGlmKGIgPT0gMjU2KSBrID0gODsgLy8gYnl0ZSBhcnJheQogIGVsc2UgaWYoYiA9PSAyKSBrID0gMTsKICBlbHNlIGlmKGIgPT0gMzIpIGsgPSA1OwogIGVsc2UgaWYoYiA9PSA0KSBrID0gMjsKICBlbHNlIHsgdGhpcy5mcm9tUmFkaXgocyxiKTsgcmV0dXJuOyB9CiAgdGhpcy50ID0gMDsKICB0aGlzLnMgPSAwOwogIHZhciBpID0gcy5sZW5ndGgsIG1pID0gZmFsc2UsIHNoID0gMDsKICB3aGlsZSgtLWkgPj0gMCkgewogICAgdmFyIHggPSAoaz09OCk/c1tpXSYweGZmOmludEF0KHMsaSk7CiAgICBpZih4IDwgMCkgewogICAgICBpZihzLmNoYXJBdChpKSA9PSAiLSIpIG1pID0gdHJ1ZTsKICAgICAgY29udGludWU7CiAgICB9CiAgICBtaSA9IGZhbHNlOwogICAgaWYoc2ggPT0gMCkKICAgICAgdGhpcy5kYXRhW3RoaXMudCsrXSA9IHg7CiAgICBlbHNlIGlmKHNoK2sgPiB0aGlzLkRCKSB7CiAgICAgIHRoaXMuZGF0YVt0aGlzLnQtMV0gfD0gKHgmKCgxPDwodGhpcy5EQi1zaCkpLTEpKTw8c2g7CiAgICAgIHRoaXMuZGF0YVt0aGlzLnQrK10gPSAoeD4+KHRoaXMuREItc2gpKTsKICAgIH0gZWxzZQogICAgICB0aGlzLmRhdGFbdGhpcy50LTFdIHw9IHg8PHNoOwogICAgc2ggKz0gazsKICAgIGlmKHNoID49IHRoaXMuREIpIHNoIC09IHRoaXMuREI7CiAgfQogIGlmKGsgPT0gOCAmJiAoc1swXSYweDgwKSAhPSAwKSB7CiAgICB0aGlzLnMgPSAtMTsKICAgIGlmKHNoID4gMCkgdGhpcy5kYXRhW3RoaXMudC0xXSB8PSAoKDE8PCh0aGlzLkRCLXNoKSktMSk8PHNoOwogIH0KICB0aGlzLmNsYW1wKCk7CiAgaWYobWkpIEJpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHRoaXMpOwp9CgovLyAocHJvdGVjdGVkKSBjbGFtcCBvZmYgZXhjZXNzIGhpZ2ggd29yZHMKZnVuY3Rpb24gYm5wQ2xhbXAoKSB7CiAgdmFyIGMgPSB0aGlzLnMmdGhpcy5ETTsKICB3aGlsZSh0aGlzLnQgPiAwICYmIHRoaXMuZGF0YVt0aGlzLnQtMV0gPT0gYykgLS10aGlzLnQ7Cn0KCi8vIChwdWJsaWMpIHJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW4gZ2l2ZW4gcmFkaXgKZnVuY3Rpb24gYm5Ub1N0cmluZyhiKSB7CiAgaWYodGhpcy5zIDwgMCkgcmV0dXJuICItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIpOwogIHZhciBrOwogIGlmKGIgPT0gMTYpIGsgPSA0OwogIGVsc2UgaWYoYiA9PSA4KSBrID0gMzsKICBlbHNlIGlmKGIgPT0gMikgayA9IDE7CiAgZWxzZSBpZihiID09IDMyKSBrID0gNTsKICBlbHNlIGlmKGIgPT0gNCkgayA9IDI7CiAgZWxzZSByZXR1cm4gdGhpcy50b1JhZGl4KGIpOwogIHZhciBrbSA9ICgxPDxrKS0xLCBkLCBtID0gZmFsc2UsIHIgPSAiIiwgaSA9IHRoaXMudDsKICB2YXIgcCA9IHRoaXMuREItKGkqdGhpcy5EQiklazsKICBpZihpLS0gPiAwKSB7CiAgICBpZihwIDwgdGhpcy5EQiAmJiAoZCA9IHRoaXMuZGF0YVtpXT4+cCkgPiAwKSB7IG0gPSB0cnVlOyByID0gaW50MmNoYXIoZCk7IH0KICAgIHdoaWxlKGkgPj0gMCkgewogICAgICBpZihwIDwgaykgewogICAgICAgIGQgPSAodGhpcy5kYXRhW2ldJigoMTw8cCktMSkpPDwoay1wKTsKICAgICAgICBkIHw9IHRoaXMuZGF0YVstLWldPj4ocCs9dGhpcy5EQi1rKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkID0gKHRoaXMuZGF0YVtpXT4+KHAtPWspKSZrbTsKICAgICAgICBpZihwIDw9IDApIHsgcCArPSB0aGlzLkRCOyAtLWk7IH0KICAgICAgfQogICAgICBpZihkID4gMCkgbSA9IHRydWU7CiAgICAgIGlmKG0pIHIgKz0gaW50MmNoYXIoZCk7CiAgICB9CiAgfQogIHJldHVybiBtP3I6IjAiOwp9CgovLyAocHVibGljKSAtdGhpcwpmdW5jdGlvbiBibk5lZ2F0ZSgpIHsgdmFyIHIgPSBuYmkoKTsgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMscik7IHJldHVybiByOyB9CgovLyAocHVibGljKSB8dGhpc3wKZnVuY3Rpb24gYm5BYnMoKSB7IHJldHVybiAodGhpcy5zPDApP3RoaXMubmVnYXRlKCk6dGhpczsgfQoKLy8gKHB1YmxpYykgcmV0dXJuICsgaWYgdGhpcyA+IGEsIC0gaWYgdGhpcyA8IGEsIDAgaWYgZXF1YWwKZnVuY3Rpb24gYm5Db21wYXJlVG8oYSkgewogIHZhciByID0gdGhpcy5zLWEuczsKICBpZihyICE9IDApIHJldHVybiByOwogIHZhciBpID0gdGhpcy50OwogIHIgPSBpLWEudDsKICBpZihyICE9IDApIHJldHVybiAodGhpcy5zPDApPy1yOnI7CiAgd2hpbGUoLS1pID49IDApIGlmKChyPXRoaXMuZGF0YVtpXS1hLmRhdGFbaV0pICE9IDApIHJldHVybiByOwogIHJldHVybiAwOwp9CgovLyByZXR1cm5zIGJpdCBsZW5ndGggb2YgdGhlIGludGVnZXIgeApmdW5jdGlvbiBuYml0cyh4KSB7CiAgdmFyIHIgPSAxLCB0OwogIGlmKCh0PXg+Pj4xNikgIT0gMCkgeyB4ID0gdDsgciArPSAxNjsgfQogIGlmKCh0PXg+PjgpICE9IDApIHsgeCA9IHQ7IHIgKz0gODsgfQogIGlmKCh0PXg+PjQpICE9IDApIHsgeCA9IHQ7IHIgKz0gNDsgfQogIGlmKCh0PXg+PjIpICE9IDApIHsgeCA9IHQ7IHIgKz0gMjsgfQogIGlmKCh0PXg+PjEpICE9IDApIHsgeCA9IHQ7IHIgKz0gMTsgfQogIHJldHVybiByOwp9CgovLyAocHVibGljKSByZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIGluICJ0aGlzIgpmdW5jdGlvbiBibkJpdExlbmd0aCgpIHsKICBpZih0aGlzLnQgPD0gMCkgcmV0dXJuIDA7CiAgcmV0dXJuIHRoaXMuREIqKHRoaXMudC0xKStuYml0cyh0aGlzLmRhdGFbdGhpcy50LTFdXih0aGlzLnMmdGhpcy5ETSkpOwp9CgovLyAocHJvdGVjdGVkKSByID0gdGhpcyA8PCBuKkRCCmZ1bmN0aW9uIGJucERMU2hpZnRUbyhuLHIpIHsKICB2YXIgaTsKICBmb3IoaSA9IHRoaXMudC0xOyBpID49IDA7IC0taSkgci5kYXRhW2krbl0gPSB0aGlzLmRhdGFbaV07CiAgZm9yKGkgPSBuLTE7IGkgPj0gMDsgLS1pKSByLmRhdGFbaV0gPSAwOwogIHIudCA9IHRoaXMudCtuOwogIHIucyA9IHRoaXMuczsKfQoKLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgPj4gbipEQgpmdW5jdGlvbiBibnBEUlNoaWZ0VG8obixyKSB7CiAgZm9yKHZhciBpID0gbjsgaSA8IHRoaXMudDsgKytpKSByLmRhdGFbaS1uXSA9IHRoaXMuZGF0YVtpXTsKICByLnQgPSBNYXRoLm1heCh0aGlzLnQtbiwwKTsKICByLnMgPSB0aGlzLnM7Cn0KCi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIDw8IG4KZnVuY3Rpb24gYm5wTFNoaWZ0VG8obixyKSB7CiAgdmFyIGJzID0gbiV0aGlzLkRCOwogIHZhciBjYnMgPSB0aGlzLkRCLWJzOwogIHZhciBibSA9ICgxPDxjYnMpLTE7CiAgdmFyIGRzID0gTWF0aC5mbG9vcihuL3RoaXMuREIpLCBjID0gKHRoaXMuczw8YnMpJnRoaXMuRE0sIGk7CiAgZm9yKGkgPSB0aGlzLnQtMTsgaSA+PSAwOyAtLWkpIHsKICAgIHIuZGF0YVtpK2RzKzFdID0gKHRoaXMuZGF0YVtpXT4+Y2JzKXxjOwogICAgYyA9ICh0aGlzLmRhdGFbaV0mYm0pPDxiczsKICB9CiAgZm9yKGkgPSBkcy0xOyBpID49IDA7IC0taSkgci5kYXRhW2ldID0gMDsKICByLmRhdGFbZHNdID0gYzsKICByLnQgPSB0aGlzLnQrZHMrMTsKICByLnMgPSB0aGlzLnM7CiAgci5jbGFtcCgpOwp9CgovLyAocHJvdGVjdGVkKSByID0gdGhpcyA+PiBuCmZ1bmN0aW9uIGJucFJTaGlmdFRvKG4scikgewogIHIucyA9IHRoaXMuczsKICB2YXIgZHMgPSBNYXRoLmZsb29yKG4vdGhpcy5EQik7CiAgaWYoZHMgPj0gdGhpcy50KSB7IHIudCA9IDA7IHJldHVybjsgfQogIHZhciBicyA9IG4ldGhpcy5EQjsKICB2YXIgY2JzID0gdGhpcy5EQi1iczsKICB2YXIgYm0gPSAoMTw8YnMpLTE7CiAgci5kYXRhWzBdID0gdGhpcy5kYXRhW2RzXT4+YnM7CiAgZm9yKHZhciBpID0gZHMrMTsgaSA8IHRoaXMudDsgKytpKSB7CiAgICByLmRhdGFbaS1kcy0xXSB8PSAodGhpcy5kYXRhW2ldJmJtKTw8Y2JzOwogICAgci5kYXRhW2ktZHNdID0gdGhpcy5kYXRhW2ldPj5iczsKICB9CiAgaWYoYnMgPiAwKSByLmRhdGFbdGhpcy50LWRzLTFdIHw9ICh0aGlzLnMmYm0pPDxjYnM7CiAgci50ID0gdGhpcy50LWRzOwogIHIuY2xhbXAoKTsKfQoKLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgLSBhCmZ1bmN0aW9uIGJucFN1YlRvKGEscikgewogIHZhciBpID0gMCwgYyA9IDAsIG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKICB3aGlsZShpIDwgbSkgewogICAgYyArPSB0aGlzLmRhdGFbaV0tYS5kYXRhW2ldOwogICAgci5kYXRhW2krK10gPSBjJnRoaXMuRE07CiAgICBjID4+PSB0aGlzLkRCOwogIH0KICBpZihhLnQgPCB0aGlzLnQpIHsKICAgIGMgLT0gYS5zOwogICAgd2hpbGUoaSA8IHRoaXMudCkgewogICAgICBjICs9IHRoaXMuZGF0YVtpXTsKICAgICAgci5kYXRhW2krK10gPSBjJnRoaXMuRE07CiAgICAgIGMgPj49IHRoaXMuREI7CiAgICB9CiAgICBjICs9IHRoaXMuczsKICB9IGVsc2UgewogICAgYyArPSB0aGlzLnM7CiAgICB3aGlsZShpIDwgYS50KSB7CiAgICAgIGMgLT0gYS5kYXRhW2ldOwogICAgICByLmRhdGFbaSsrXSA9IGMmdGhpcy5ETTsKICAgICAgYyA+Pj0gdGhpcy5EQjsKICAgIH0KICAgIGMgLT0gYS5zOwogIH0KICByLnMgPSAoYzwwKT8tMTowOwogIGlmKGMgPCAtMSkgci5kYXRhW2krK10gPSB0aGlzLkRWK2M7CiAgZWxzZSBpZihjID4gMCkgci5kYXRhW2krK10gPSBjOwogIHIudCA9IGk7CiAgci5jbGFtcCgpOwp9CgovLyAocHJvdGVjdGVkKSByID0gdGhpcyAqIGEsIHIgIT0gdGhpcyxhIChIQUMgMTQuMTIpCi8vICJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBvbmUgaWYgYXBwcm9wcmlhdGUuCmZ1bmN0aW9uIGJucE11bHRpcGx5VG8oYSxyKSB7CiAgdmFyIHggPSB0aGlzLmFicygpLCB5ID0gYS5hYnMoKTsKICB2YXIgaSA9IHgudDsKICByLnQgPSBpK3kudDsKICB3aGlsZSgtLWkgPj0gMCkgci5kYXRhW2ldID0gMDsKICBmb3IoaSA9IDA7IGkgPCB5LnQ7ICsraSkgci5kYXRhW2kreC50XSA9IHguYW0oMCx5LmRhdGFbaV0scixpLDAseC50KTsKICByLnMgPSAwOwogIHIuY2xhbXAoKTsKICBpZih0aGlzLnMgIT0gYS5zKSBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocixyKTsKfQoKLy8gKHByb3RlY3RlZCkgciA9IHRoaXNeMiwgciAhPSB0aGlzIChIQUMgMTQuMTYpCmZ1bmN0aW9uIGJucFNxdWFyZVRvKHIpIHsKICB2YXIgeCA9IHRoaXMuYWJzKCk7CiAgdmFyIGkgPSByLnQgPSAyKngudDsKICB3aGlsZSgtLWkgPj0gMCkgci5kYXRhW2ldID0gMDsKICBmb3IoaSA9IDA7IGkgPCB4LnQtMTsgKytpKSB7CiAgICB2YXIgYyA9IHguYW0oaSx4LmRhdGFbaV0sciwyKmksMCwxKTsKICAgIGlmKChyLmRhdGFbaSt4LnRdKz14LmFtKGkrMSwyKnguZGF0YVtpXSxyLDIqaSsxLGMseC50LWktMSkpID49IHguRFYpIHsKICAgICAgci5kYXRhW2kreC50XSAtPSB4LkRWOwogICAgICByLmRhdGFbaSt4LnQrMV0gPSAxOwogICAgfQogIH0KICBpZihyLnQgPiAwKSByLmRhdGFbci50LTFdICs9IHguYW0oaSx4LmRhdGFbaV0sciwyKmksMCwxKTsKICByLnMgPSAwOwogIHIuY2xhbXAoKTsKfQoKLy8gKHByb3RlY3RlZCkgZGl2aWRlIHRoaXMgYnkgbSwgcXVvdGllbnQgYW5kIHJlbWFpbmRlciB0byBxLCByIChIQUMgMTQuMjApCi8vIHIgIT0gcSwgdGhpcyAhPSBtLiAgcSBvciByIG1heSBiZSBudWxsLgpmdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscikgewogIHZhciBwbSA9IG0uYWJzKCk7CiAgaWYocG0udCA8PSAwKSByZXR1cm47CiAgdmFyIHB0ID0gdGhpcy5hYnMoKTsKICBpZihwdC50IDwgcG0udCkgewogICAgaWYocSAhPSBudWxsKSBxLmZyb21JbnQoMCk7CiAgICBpZihyICE9IG51bGwpIHRoaXMuY29weVRvKHIpOwogICAgcmV0dXJuOwogIH0KICBpZihyID09IG51bGwpIHIgPSBuYmkoKTsKICB2YXIgeSA9IG5iaSgpLCB0cyA9IHRoaXMucywgbXMgPSBtLnM7CiAgdmFyIG5zaCA9IHRoaXMuREItbmJpdHMocG0uZGF0YVtwbS50LTFdKTsJLy8gbm9ybWFsaXplIG1vZHVsdXMKICBpZihuc2ggPiAwKSB7IHBtLmxTaGlmdFRvKG5zaCx5KTsgcHQubFNoaWZ0VG8obnNoLHIpOyB9IGVsc2UgeyBwbS5jb3B5VG8oeSk7IHB0LmNvcHlUbyhyKTsgfQogIHZhciB5cyA9IHkudDsKICB2YXIgeTAgPSB5LmRhdGFbeXMtMV07CiAgaWYoeTAgPT0gMCkgcmV0dXJuOwogIHZhciB5dCA9IHkwKigxPDx0aGlzLkYxKSsoKHlzPjEpP3kuZGF0YVt5cy0yXT4+dGhpcy5GMjowKTsKICB2YXIgZDEgPSB0aGlzLkZWL3l0LCBkMiA9ICgxPDx0aGlzLkYxKS95dCwgZSA9IDE8PHRoaXMuRjI7CiAgdmFyIGkgPSByLnQsIGogPSBpLXlzLCB0ID0gKHE9PW51bGwpP25iaSgpOnE7CiAgeS5kbFNoaWZ0VG8oaix0KTsKICBpZihyLmNvbXBhcmVUbyh0KSA+PSAwKSB7CiAgICByLmRhdGFbci50KytdID0gMTsKICAgIHIuc3ViVG8odCxyKTsKICB9CiAgQmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpOwogIHQuc3ViVG8oeSx5KTsJLy8gIm5lZ2F0aXZlIiB5IHNvIHdlIGNhbiByZXBsYWNlIHN1YiB3aXRoIGFtIGxhdGVyCiAgd2hpbGUoeS50IDwgeXMpIHkuZGF0YVt5LnQrK10gPSAwOwogIHdoaWxlKC0taiA+PSAwKSB7CiAgICAvLyBFc3RpbWF0ZSBxdW90aWVudCBkaWdpdAogICAgdmFyIHFkID0gKHIuZGF0YVstLWldPT15MCk/dGhpcy5ETTpNYXRoLmZsb29yKHIuZGF0YVtpXSpkMSsoci5kYXRhW2ktMV0rZSkqZDIpOwogICAgaWYoKHIuZGF0YVtpXSs9eS5hbSgwLHFkLHIsaiwwLHlzKSkgPCBxZCkgewkvLyBUcnkgaXQgb3V0CiAgICAgIHkuZGxTaGlmdFRvKGosdCk7CiAgICAgIHIuc3ViVG8odCxyKTsKICAgICAgd2hpbGUoci5kYXRhW2ldIDwgLS1xZCkgci5zdWJUbyh0LHIpOwogICAgfQogIH0KICBpZihxICE9IG51bGwpIHsKICAgIHIuZHJTaGlmdFRvKHlzLHEpOwogICAgaWYodHMgIT0gbXMpIEJpZ0ludGVnZXIuWkVSTy5zdWJUbyhxLHEpOwogIH0KICByLnQgPSB5czsKICByLmNsYW1wKCk7CiAgaWYobnNoID4gMCkgci5yU2hpZnRUbyhuc2gscik7CS8vIERlbm9ybWFsaXplIHJlbWFpbmRlcgogIGlmKHRzIDwgMCkgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHIscik7Cn0KCi8vIChwdWJsaWMpIHRoaXMgbW9kIGEKZnVuY3Rpb24gYm5Nb2QoYSkgewogIHZhciByID0gbmJpKCk7CiAgdGhpcy5hYnMoKS5kaXZSZW1UbyhhLG51bGwscik7CiAgaWYodGhpcy5zIDwgMCAmJiByLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pID4gMCkgYS5zdWJUbyhyLHIpOwogIHJldHVybiByOwp9CgovLyBNb2R1bGFyIHJlZHVjdGlvbiB1c2luZyAiY2xhc3NpYyIgYWxnb3JpdGhtCmZ1bmN0aW9uIENsYXNzaWMobSkgeyB0aGlzLm0gPSBtOyB9CmZ1bmN0aW9uIGNDb252ZXJ0KHgpIHsKICBpZih4LnMgPCAwIHx8IHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgcmV0dXJuIHgubW9kKHRoaXMubSk7CiAgZWxzZSByZXR1cm4geDsKfQpmdW5jdGlvbiBjUmV2ZXJ0KHgpIHsgcmV0dXJuIHg7IH0KZnVuY3Rpb24gY1JlZHVjZSh4KSB7IHguZGl2UmVtVG8odGhpcy5tLG51bGwseCk7IH0KZnVuY3Rpb24gY011bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQpmdW5jdGlvbiBjU3FyVG8oeCxyKSB7IHguc3F1YXJlVG8ocik7IHRoaXMucmVkdWNlKHIpOyB9CgpDbGFzc2ljLnByb3RvdHlwZS5jb252ZXJ0ID0gY0NvbnZlcnQ7CkNsYXNzaWMucHJvdG90eXBlLnJldmVydCA9IGNSZXZlcnQ7CkNsYXNzaWMucHJvdG90eXBlLnJlZHVjZSA9IGNSZWR1Y2U7CkNsYXNzaWMucHJvdG90eXBlLm11bFRvID0gY011bFRvOwpDbGFzc2ljLnByb3RvdHlwZS5zcXJUbyA9IGNTcXJUbzsKCi8vIChwcm90ZWN0ZWQpIHJldHVybiAiLTEvdGhpcyAlIDJeREIiOyB1c2VmdWwgZm9yIE1vbnQuIHJlZHVjdGlvbgovLyBqdXN0aWZpY2F0aW9uOgovLyAgICAgICAgIHh5ID09IDEgKG1vZCBtKQovLyAgICAgICAgIHh5ID0gIDEra20KLy8gICB4eSgyLXh5KSA9ICgxK2ttKSgxLWttKQovLyB4W3koMi14eSldID0gMS1rXjJtXjIKLy8geFt5KDIteHkpXSA9PSAxIChtb2QgbV4yKQovLyBpZiB5IGlzIDEveCBtb2QgbSwgdGhlbiB5KDIteHkpIGlzIDEveCBtb2QgbV4yCi8vIHNob3VsZCByZWR1Y2UgeCBhbmQgeSgyLXh5KSBieSBtXjIgYXQgZWFjaCBzdGVwIHRvIGtlZXAgc2l6ZSBib3VuZGVkLgovLyBKUyBtdWx0aXBseSAib3ZlcmZsb3dzIiBkaWZmZXJlbnRseSBmcm9tIEMvQysrLCBzbyBjYXJlIGlzIG5lZWRlZCBoZXJlLgpmdW5jdGlvbiBibnBJbnZEaWdpdCgpIHsKICBpZih0aGlzLnQgPCAxKSByZXR1cm4gMDsKICB2YXIgeCA9IHRoaXMuZGF0YVswXTsKICBpZigoeCYxKSA9PSAwKSByZXR1cm4gMDsKICB2YXIgeSA9IHgmMzsJCS8vIHkgPT0gMS94IG1vZCAyXjIKICB5ID0gKHkqKDItKHgmMHhmKSp5KSkmMHhmOwkvLyB5ID09IDEveCBtb2QgMl40CiAgeSA9ICh5KigyLSh4JjB4ZmYpKnkpKSYweGZmOwkvLyB5ID09IDEveCBtb2QgMl44CiAgeSA9ICh5KigyLSgoKHgmMHhmZmZmKSp5KSYweGZmZmYpKSkmMHhmZmZmOwkvLyB5ID09IDEveCBtb2QgMl4xNgogIC8vIGxhc3Qgc3RlcCAtIGNhbGN1bGF0ZSBpbnZlcnNlIG1vZCBEViBkaXJlY3RseTsKICAvLyBhc3N1bWVzIDE2IDwgREIgPD0gMzIgYW5kIGFzc3VtZXMgYWJpbGl0eSB0byBoYW5kbGUgNDgtYml0IGludHMKICB5ID0gKHkqKDIteCp5JXRoaXMuRFYpKSV0aGlzLkRWOwkJLy8geSA9PSAxL3ggbW9kIDJeZGJpdHMKICAvLyB3ZSByZWFsbHkgd2FudCB0aGUgbmVnYXRpdmUgaW52ZXJzZSwgYW5kIC1EViA8IHkgPCBEVgogIHJldHVybiAoeT4wKT90aGlzLkRWLXk6LXk7Cn0KCi8vIE1vbnRnb21lcnkgcmVkdWN0aW9uCmZ1bmN0aW9uIE1vbnRnb21lcnkobSkgewogIHRoaXMubSA9IG07CiAgdGhpcy5tcCA9IG0uaW52RGlnaXQoKTsKICB0aGlzLm1wbCA9IHRoaXMubXAmMHg3ZmZmOwogIHRoaXMubXBoID0gdGhpcy5tcD4+MTU7CiAgdGhpcy51bSA9ICgxPDwobS5EQi0xNSkpLTE7CiAgdGhpcy5tdDIgPSAyKm0udDsKfQoKLy8geFIgbW9kIG0KZnVuY3Rpb24gbW9udENvbnZlcnQoeCkgewogIHZhciByID0gbmJpKCk7CiAgeC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7CiAgci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTsKICBpZih4LnMgPCAwICYmIHIuY29tcGFyZVRvKEJpZ0ludGVnZXIuWkVSTykgPiAwKSB0aGlzLm0uc3ViVG8ocixyKTsKICByZXR1cm4gcjsKfQoKLy8geC9SIG1vZCBtCmZ1bmN0aW9uIG1vbnRSZXZlcnQoeCkgewogIHZhciByID0gbmJpKCk7CiAgeC5jb3B5VG8ocik7CiAgdGhpcy5yZWR1Y2Uocik7CiAgcmV0dXJuIHI7Cn0KCi8vIHggPSB4L1IgbW9kIG0gKEhBQyAxNC4zMikKZnVuY3Rpb24gbW9udFJlZHVjZSh4KSB7CiAgd2hpbGUoeC50IDw9IHRoaXMubXQyKQkvLyBwYWQgeCBzbyBhbSBoYXMgZW5vdWdoIHJvb20gbGF0ZXIKICAgIHguZGF0YVt4LnQrK10gPSAwOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLm0udDsgKytpKSB7CiAgICAvLyBmYXN0ZXIgd2F5IG9mIGNhbGN1bGF0aW5nIHUwID0geC5kYXRhW2ldKm1wIG1vZCBEVgogICAgdmFyIGogPSB4LmRhdGFbaV0mMHg3ZmZmOwogICAgdmFyIHUwID0gKGoqdGhpcy5tcGwrKCgoaip0aGlzLm1waCsoeC5kYXRhW2ldPj4xNSkqdGhpcy5tcGwpJnRoaXMudW0pPDwxNSkpJnguRE07CiAgICAvLyB1c2UgYW0gdG8gY29tYmluZSB0aGUgbXVsdGlwbHktc2hpZnQtYWRkIGludG8gb25lIGNhbGwKICAgIGogPSBpK3RoaXMubS50OwogICAgeC5kYXRhW2pdICs9IHRoaXMubS5hbSgwLHUwLHgsaSwwLHRoaXMubS50KTsKICAgIC8vIHByb3BhZ2F0ZSBjYXJyeQogICAgd2hpbGUoeC5kYXRhW2pdID49IHguRFYpIHsgeC5kYXRhW2pdIC09IHguRFY7IHguZGF0YVsrK2pdKys7IH0KICB9CiAgeC5jbGFtcCgpOwogIHguZHJTaGlmdFRvKHRoaXMubS50LHgpOwogIGlmKHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgeC5zdWJUbyh0aGlzLm0seCk7Cn0KCi8vIHIgPSAieF4yL1IgbW9kIG0iOyB4ICE9IHIKZnVuY3Rpb24gbW9udFNxclRvKHgscikgeyB4LnNxdWFyZVRvKHIpOyB0aGlzLnJlZHVjZShyKTsgfQoKLy8gciA9ICJ4eS9SIG1vZCBtIjsgeCx5ICE9IHIKZnVuY3Rpb24gbW9udE11bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQoKTW9udGdvbWVyeS5wcm90b3R5cGUuY29udmVydCA9IG1vbnRDb252ZXJ0OwpNb250Z29tZXJ5LnByb3RvdHlwZS5yZXZlcnQgPSBtb250UmV2ZXJ0OwpNb250Z29tZXJ5LnByb3RvdHlwZS5yZWR1Y2UgPSBtb250UmVkdWNlOwpNb250Z29tZXJ5LnByb3RvdHlwZS5tdWxUbyA9IG1vbnRNdWxUbzsKTW9udGdvbWVyeS5wcm90b3R5cGUuc3FyVG8gPSBtb250U3FyVG87CgovLyAocHJvdGVjdGVkKSB0cnVlIGlmZiB0aGlzIGlzIGV2ZW4KZnVuY3Rpb24gYm5wSXNFdmVuKCkgeyByZXR1cm4gKCh0aGlzLnQ+MCk/KHRoaXMuZGF0YVswXSYxKTp0aGlzLnMpID09IDA7IH0KCi8vIChwcm90ZWN0ZWQpIHRoaXNeZSwgZSA8IDJeMzIsIGRvaW5nIHNxciBhbmQgbXVsIHdpdGggInIiIChIQUMgMTQuNzkpCmZ1bmN0aW9uIGJucEV4cChlLHopIHsKICBpZihlID4gMHhmZmZmZmZmZiB8fCBlIDwgMSkgcmV0dXJuIEJpZ0ludGVnZXIuT05FOwogIHZhciByID0gbmJpKCksIHIyID0gbmJpKCksIGcgPSB6LmNvbnZlcnQodGhpcyksIGkgPSBuYml0cyhlKS0xOwogIGcuY29weVRvKHIpOwogIHdoaWxlKC0taSA+PSAwKSB7CiAgICB6LnNxclRvKHIscjIpOwogICAgaWYoKGUmKDE8PGkpKSA+IDApIHoubXVsVG8ocjIsZyxyKTsKICAgIGVsc2UgeyB2YXIgdCA9IHI7IHIgPSByMjsgcjIgPSB0OyB9CiAgfQogIHJldHVybiB6LnJldmVydChyKTsKfQoKLy8gKHB1YmxpYykgdGhpc15lICUgbSwgMCA8PSBlIDwgMl4zMgpmdW5jdGlvbiBibk1vZFBvd0ludChlLG0pIHsKICB2YXIgejsKICBpZihlIDwgMjU2IHx8IG0uaXNFdmVuKCkpIHogPSBuZXcgQ2xhc3NpYyhtKTsgZWxzZSB6ID0gbmV3IE1vbnRnb21lcnkobSk7CiAgcmV0dXJuIHRoaXMuZXhwKGUseik7Cn0KCi8vIHByb3RlY3RlZApCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb3B5VG8gPSBibnBDb3B5VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21JbnQgPSBibnBGcm9tSW50OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tU3RyaW5nID0gYm5wRnJvbVN0cmluZzsKQmlnSW50ZWdlci5wcm90b3R5cGUuY2xhbXAgPSBibnBDbGFtcDsKQmlnSW50ZWdlci5wcm90b3R5cGUuZGxTaGlmdFRvID0gYm5wRExTaGlmdFRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kclNoaWZ0VG8gPSBibnBEUlNoaWZ0VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmxTaGlmdFRvID0gYm5wTFNoaWZ0VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLnJTaGlmdFRvID0gYm5wUlNoaWZ0VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLnN1YlRvID0gYm5wU3ViVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5VG8gPSBibnBNdWx0aXBseVRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmVUbyA9IGJucFNxdWFyZVRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZSZW1UbyA9IGJucERpdlJlbVRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5pbnZEaWdpdCA9IGJucEludkRpZ2l0OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBibnBJc0V2ZW47CkJpZ0ludGVnZXIucHJvdG90eXBlLmV4cCA9IGJucEV4cDsKCi8vIHB1YmxpYwpCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGJuVG9TdHJpbmc7CkJpZ0ludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGJuTmVnYXRlOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBibkFiczsKQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZVRvID0gYm5Db21wYXJlVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IGJuQml0TGVuZ3RoOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2QgPSBibk1vZDsKQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93SW50ID0gYm5Nb2RQb3dJbnQ7CgovLyAiY29uc3RhbnRzIgpCaWdJbnRlZ2VyLlpFUk8gPSBuYnYoMCk7CkJpZ0ludGVnZXIuT05FID0gbmJ2KDEpOwoKLy8ganNibjIgbGliCgovL0NvcHlyaWdodCAoYykgMjAwNS0yMDA5ICBUb20gV3UKLy9BbGwgUmlnaHRzIFJlc2VydmVkLgovL1NlZSAiTElDRU5TRSIgZm9yIGRldGFpbHMgKFNlZSBqc2JuLmpzIGZvciBMSUNFTlNFKS4KCi8vRXh0ZW5kZWQgSmF2YVNjcmlwdCBCTiBmdW5jdGlvbnMsIHJlcXVpcmVkIGZvciBSU0EgcHJpdmF0ZSBvcHMuCgovL1ZlcnNpb24gMS4xOiBuZXcgQmlnSW50ZWdlcigiMCIsIDEwKSByZXR1cm5zICJwcm9wZXIiIHplcm8KCi8vKHB1YmxpYykKZnVuY3Rpb24gYm5DbG9uZSgpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5jb3B5VG8ocik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHJldHVybiB2YWx1ZSBhcyBpbnRlZ2VyCmZ1bmN0aW9uIGJuSW50VmFsdWUoKSB7CmlmKHRoaXMucyA8IDApIHsKIGlmKHRoaXMudCA9PSAxKSByZXR1cm4gdGhpcy5kYXRhWzBdLXRoaXMuRFY7CiBlbHNlIGlmKHRoaXMudCA9PSAwKSByZXR1cm4gLTE7Cn0gZWxzZSBpZih0aGlzLnQgPT0gMSkgcmV0dXJuIHRoaXMuZGF0YVswXTsKZWxzZSBpZih0aGlzLnQgPT0gMCkgcmV0dXJuIDA7Ci8vIGFzc3VtZXMgMTYgPCBEQiA8IDMyCnJldHVybiAoKHRoaXMuZGF0YVsxXSYoKDE8PCgzMi10aGlzLkRCKSktMSkpPDx0aGlzLkRCKXx0aGlzLmRhdGFbMF07Cn0KCi8vKHB1YmxpYykgcmV0dXJuIHZhbHVlIGFzIGJ5dGUKZnVuY3Rpb24gYm5CeXRlVmFsdWUoKSB7IHJldHVybiAodGhpcy50PT0wKT90aGlzLnM6KHRoaXMuZGF0YVswXTw8MjQpPj4yNDsgfQoKLy8ocHVibGljKSByZXR1cm4gdmFsdWUgYXMgc2hvcnQgKGFzc3VtZXMgREI+PTE2KQpmdW5jdGlvbiBiblNob3J0VmFsdWUoKSB7IHJldHVybiAodGhpcy50PT0wKT90aGlzLnM6KHRoaXMuZGF0YVswXTw8MTYpPj4xNjsgfQoKLy8ocHJvdGVjdGVkKSByZXR1cm4geCBzLnQuIHJeeCA8IERWCmZ1bmN0aW9uIGJucENodW5rU2l6ZShyKSB7IHJldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2cocikpOyB9CgovLyhwdWJsaWMpIDAgaWYgdGhpcyA9PSAwLCAxIGlmIHRoaXMgPiAwCmZ1bmN0aW9uIGJuU2lnTnVtKCkgewppZih0aGlzLnMgPCAwKSByZXR1cm4gLTE7CmVsc2UgaWYodGhpcy50IDw9IDAgfHwgKHRoaXMudCA9PSAxICYmIHRoaXMuZGF0YVswXSA8PSAwKSkgcmV0dXJuIDA7CmVsc2UgcmV0dXJuIDE7Cn0KCi8vKHByb3RlY3RlZCkgY29udmVydCB0byByYWRpeCBzdHJpbmcKZnVuY3Rpb24gYm5wVG9SYWRpeChiKSB7CmlmKGIgPT0gbnVsbCkgYiA9IDEwOwppZih0aGlzLnNpZ251bSgpID09IDAgfHwgYiA8IDIgfHwgYiA+IDM2KSByZXR1cm4gIjAiOwp2YXIgY3MgPSB0aGlzLmNodW5rU2l6ZShiKTsKdmFyIGEgPSBNYXRoLnBvdyhiLGNzKTsKdmFyIGQgPSBuYnYoYSksIHkgPSBuYmkoKSwgeiA9IG5iaSgpLCByID0gIiI7CnRoaXMuZGl2UmVtVG8oZCx5LHopOwp3aGlsZSh5LnNpZ251bSgpID4gMCkgewogciA9IChhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEpICsgcjsKIHkuZGl2UmVtVG8oZCx5LHopOwp9CnJldHVybiB6LmludFZhbHVlKCkudG9TdHJpbmcoYikgKyByOwp9CgovLyhwcm90ZWN0ZWQpIGNvbnZlcnQgZnJvbSByYWRpeCBzdHJpbmcKZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYikgewp0aGlzLmZyb21JbnQoMCk7CmlmKGIgPT0gbnVsbCkgYiA9IDEwOwp2YXIgY3MgPSB0aGlzLmNodW5rU2l6ZShiKTsKdmFyIGQgPSBNYXRoLnBvdyhiLGNzKSwgbWkgPSBmYWxzZSwgaiA9IDAsIHcgPSAwOwpmb3IodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkgewogdmFyIHggPSBpbnRBdChzLGkpOwogaWYoeCA8IDApIHsKICAgaWYocy5jaGFyQXQoaSkgPT0gIi0iICYmIHRoaXMuc2lnbnVtKCkgPT0gMCkgbWkgPSB0cnVlOwogICBjb250aW51ZTsKIH0KIHcgPSBiKncreDsKIGlmKCsraiA+PSBjcykgewogICB0aGlzLmRNdWx0aXBseShkKTsKICAgdGhpcy5kQWRkT2Zmc2V0KHcsMCk7CiAgIGogPSAwOwogICB3ID0gMDsKIH0KfQppZihqID4gMCkgewogdGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coYixqKSk7CiB0aGlzLmRBZGRPZmZzZXQodywwKTsKfQppZihtaSkgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyk7Cn0KCi8vKHByb3RlY3RlZCkgYWx0ZXJuYXRlIGNvbnN0cnVjdG9yCmZ1bmN0aW9uIGJucEZyb21OdW1iZXIoYSxiLGMpIHsKaWYoIm51bWJlciIgPT0gdHlwZW9mIGIpIHsKIC8vIG5ldyBCaWdJbnRlZ2VyKGludCxpbnQsUk5HKQogaWYoYSA8IDIpIHRoaXMuZnJvbUludCgxKTsKIGVsc2UgewogICB0aGlzLmZyb21OdW1iZXIoYSxjKTsKICAgaWYoIXRoaXMudGVzdEJpdChhLTEpKSAgLy8gZm9yY2UgTVNCIHNldAogICAgIHRoaXMuYml0d2lzZVRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChhLTEpLG9wX29yLHRoaXMpOwogICBpZih0aGlzLmlzRXZlbigpKSB0aGlzLmRBZGRPZmZzZXQoMSwwKTsgLy8gZm9yY2Ugb2RkCiAgIHdoaWxlKCF0aGlzLmlzUHJvYmFibGVQcmltZShiKSkgewogICAgIHRoaXMuZEFkZE9mZnNldCgyLDApOwogICAgIGlmKHRoaXMuYml0TGVuZ3RoKCkgPiBhKSB0aGlzLnN1YlRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChhLTEpLHRoaXMpOwogICB9CiB9Cn0gZWxzZSB7CiAvLyBuZXcgQmlnSW50ZWdlcihpbnQsUk5HKQogdmFyIHggPSBuZXcgQXJyYXkoKSwgdCA9IGEmNzsKIHgubGVuZ3RoID0gKGE+PjMpKzE7CiBiLm5leHRCeXRlcyh4KTsKIGlmKHQgPiAwKSB4WzBdICY9ICgoMTw8dCktMSk7IGVsc2UgeFswXSA9IDA7CiB0aGlzLmZyb21TdHJpbmcoeCwyNTYpOwp9Cn0KCi8vKHB1YmxpYykgY29udmVydCB0byBiaWdlbmRpYW4gYnl0ZSBhcnJheQpmdW5jdGlvbiBiblRvQnl0ZUFycmF5KCkgewp2YXIgaSA9IHRoaXMudCwgciA9IG5ldyBBcnJheSgpOwpyWzBdID0gdGhpcy5zOwp2YXIgcCA9IHRoaXMuREItKGkqdGhpcy5EQiklOCwgZCwgayA9IDA7CmlmKGktLSA+IDApIHsKIGlmKHAgPCB0aGlzLkRCICYmIChkID0gdGhpcy5kYXRhW2ldPj5wKSAhPSAodGhpcy5zJnRoaXMuRE0pPj5wKQogICByW2srK10gPSBkfCh0aGlzLnM8PCh0aGlzLkRCLXApKTsKIHdoaWxlKGkgPj0gMCkgewogICBpZihwIDwgOCkgewogICAgIGQgPSAodGhpcy5kYXRhW2ldJigoMTw8cCktMSkpPDwoOC1wKTsKICAgICBkIHw9IHRoaXMuZGF0YVstLWldPj4ocCs9dGhpcy5EQi04KTsKICAgfSBlbHNlIHsKICAgICBkID0gKHRoaXMuZGF0YVtpXT4+KHAtPTgpKSYweGZmOwogICAgIGlmKHAgPD0gMCkgeyBwICs9IHRoaXMuREI7IC0taTsgfQogICB9CiAgIGlmKChkJjB4ODApICE9IDApIGQgfD0gLTI1NjsKICAgaWYoayA9PSAwICYmICh0aGlzLnMmMHg4MCkgIT0gKGQmMHg4MCkpICsrazsKICAgaWYoayA+IDAgfHwgZCAhPSB0aGlzLnMpIHJbaysrXSA9IGQ7CiB9Cn0KcmV0dXJuIHI7Cn0KCmZ1bmN0aW9uIGJuRXF1YWxzKGEpIHsgcmV0dXJuKHRoaXMuY29tcGFyZVRvKGEpPT0wKTsgfQpmdW5jdGlvbiBibk1pbihhKSB7IHJldHVybih0aGlzLmNvbXBhcmVUbyhhKTwwKT90aGlzOmE7IH0KZnVuY3Rpb24gYm5NYXgoYSkgeyByZXR1cm4odGhpcy5jb21wYXJlVG8oYSk+MCk/dGhpczphOyB9CgovLyhwcm90ZWN0ZWQpIHIgPSB0aGlzIG9wIGEgKGJpdHdpc2UpCmZ1bmN0aW9uIGJucEJpdHdpc2VUbyhhLG9wLHIpIHsKdmFyIGksIGYsIG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKZm9yKGkgPSAwOyBpIDwgbTsgKytpKSByLmRhdGFbaV0gPSBvcCh0aGlzLmRhdGFbaV0sYS5kYXRhW2ldKTsKaWYoYS50IDwgdGhpcy50KSB7CiBmID0gYS5zJnRoaXMuRE07CiBmb3IoaSA9IG07IGkgPCB0aGlzLnQ7ICsraSkgci5kYXRhW2ldID0gb3AodGhpcy5kYXRhW2ldLGYpOwogci50ID0gdGhpcy50Owp9IGVsc2UgewogZiA9IHRoaXMucyZ0aGlzLkRNOwogZm9yKGkgPSBtOyBpIDwgYS50OyArK2kpIHIuZGF0YVtpXSA9IG9wKGYsYS5kYXRhW2ldKTsKIHIudCA9IGEudDsKfQpyLnMgPSBvcCh0aGlzLnMsYS5zKTsKci5jbGFtcCgpOwp9CgovLyhwdWJsaWMpIHRoaXMgJiBhCmZ1bmN0aW9uIG9wX2FuZCh4LHkpIHsgcmV0dXJuIHgmeTsgfQpmdW5jdGlvbiBibkFuZChhKSB7IHZhciByID0gbmJpKCk7IHRoaXMuYml0d2lzZVRvKGEsb3BfYW5kLHIpOyByZXR1cm4gcjsgfQoKLy8ocHVibGljKSB0aGlzIHwgYQpmdW5jdGlvbiBvcF9vcih4LHkpIHsgcmV0dXJuIHh8eTsgfQpmdW5jdGlvbiBibk9yKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5iaXR3aXNlVG8oYSxvcF9vcixyKTsgcmV0dXJuIHI7IH0KCi8vKHB1YmxpYykgdGhpcyBeIGEKZnVuY3Rpb24gb3BfeG9yKHgseSkgeyByZXR1cm4geF55OyB9CmZ1bmN0aW9uIGJuWG9yKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5iaXR3aXNlVG8oYSxvcF94b3Iscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHRoaXMgJiB+YQpmdW5jdGlvbiBvcF9hbmRub3QoeCx5KSB7IHJldHVybiB4Jn55OyB9CmZ1bmN0aW9uIGJuQW5kTm90KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5iaXR3aXNlVG8oYSxvcF9hbmRub3Qscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIH50aGlzCmZ1bmN0aW9uIGJuTm90KCkgewp2YXIgciA9IG5iaSgpOwpmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy50OyArK2kpIHIuZGF0YVtpXSA9IHRoaXMuRE0mfnRoaXMuZGF0YVtpXTsKci50ID0gdGhpcy50OwpyLnMgPSB+dGhpcy5zOwpyZXR1cm4gcjsKfQoKLy8ocHVibGljKSB0aGlzIDw8IG4KZnVuY3Rpb24gYm5TaGlmdExlZnQobikgewp2YXIgciA9IG5iaSgpOwppZihuIDwgMCkgdGhpcy5yU2hpZnRUbygtbixyKTsgZWxzZSB0aGlzLmxTaGlmdFRvKG4scik7CnJldHVybiByOwp9CgovLyhwdWJsaWMpIHRoaXMgPj4gbgpmdW5jdGlvbiBiblNoaWZ0UmlnaHQobikgewp2YXIgciA9IG5iaSgpOwppZihuIDwgMCkgdGhpcy5sU2hpZnRUbygtbixyKTsgZWxzZSB0aGlzLnJTaGlmdFRvKG4scik7CnJldHVybiByOwp9CgovL3JldHVybiBpbmRleCBvZiBsb3dlc3QgMS1iaXQgaW4geCwgeCA8IDJeMzEKZnVuY3Rpb24gbGJpdCh4KSB7CmlmKHggPT0gMCkgcmV0dXJuIC0xOwp2YXIgciA9IDA7CmlmKCh4JjB4ZmZmZikgPT0gMCkgeyB4ID4+PSAxNjsgciArPSAxNjsgfQppZigoeCYweGZmKSA9PSAwKSB7IHggPj49IDg7IHIgKz0gODsgfQppZigoeCYweGYpID09IDApIHsgeCA+Pj0gNDsgciArPSA0OyB9CmlmKCh4JjMpID09IDApIHsgeCA+Pj0gMjsgciArPSAyOyB9CmlmKCh4JjEpID09IDApICsrcjsKcmV0dXJuIHI7Cn0KCi8vKHB1YmxpYykgcmV0dXJucyBpbmRleCBvZiBsb3dlc3QgMS1iaXQgKG9yIC0xIGlmIG5vbmUpCmZ1bmN0aW9uIGJuR2V0TG93ZXN0U2V0Qml0KCkgewpmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy50OyArK2kpCiBpZih0aGlzLmRhdGFbaV0gIT0gMCkgcmV0dXJuIGkqdGhpcy5EQitsYml0KHRoaXMuZGF0YVtpXSk7CmlmKHRoaXMucyA8IDApIHJldHVybiB0aGlzLnQqdGhpcy5EQjsKcmV0dXJuIC0xOwp9CgovL3JldHVybiBudW1iZXIgb2YgMSBiaXRzIGluIHgKZnVuY3Rpb24gY2JpdCh4KSB7CnZhciByID0gMDsKd2hpbGUoeCAhPSAwKSB7IHggJj0geC0xOyArK3I7IH0KcmV0dXJuIHI7Cn0KCi8vKHB1YmxpYykgcmV0dXJuIG51bWJlciBvZiBzZXQgYml0cwpmdW5jdGlvbiBibkJpdENvdW50KCkgewp2YXIgciA9IDAsIHggPSB0aGlzLnMmdGhpcy5ETTsKZm9yKHZhciBpID0gMDsgaSA8IHRoaXMudDsgKytpKSByICs9IGNiaXQodGhpcy5kYXRhW2ldXngpOwpyZXR1cm4gcjsKfQoKLy8ocHVibGljKSB0cnVlIGlmZiBudGggYml0IGlzIHNldApmdW5jdGlvbiBiblRlc3RCaXQobikgewp2YXIgaiA9IE1hdGguZmxvb3Iobi90aGlzLkRCKTsKaWYoaiA+PSB0aGlzLnQpIHJldHVybih0aGlzLnMhPTApOwpyZXR1cm4oKHRoaXMuZGF0YVtqXSYoMTw8KG4ldGhpcy5EQikpKSE9MCk7Cn0KCi8vKHByb3RlY3RlZCkgdGhpcyBvcCAoMTw8bikKZnVuY3Rpb24gYm5wQ2hhbmdlQml0KG4sb3ApIHsKdmFyIHIgPSBCaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQobik7CnRoaXMuYml0d2lzZVRvKHIsb3Ascik7CnJldHVybiByOwp9CgovLyhwdWJsaWMpIHRoaXMgfCAoMTw8bikKZnVuY3Rpb24gYm5TZXRCaXQobikgeyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixvcF9vcik7IH0KCi8vKHB1YmxpYykgdGhpcyAmIH4oMTw8bikKZnVuY3Rpb24gYm5DbGVhckJpdChuKSB7IHJldHVybiB0aGlzLmNoYW5nZUJpdChuLG9wX2FuZG5vdCk7IH0KCi8vKHB1YmxpYykgdGhpcyBeICgxPDxuKQpmdW5jdGlvbiBibkZsaXBCaXQobikgeyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixvcF94b3IpOyB9CgovLyhwcm90ZWN0ZWQpIHIgPSB0aGlzICsgYQpmdW5jdGlvbiBibnBBZGRUbyhhLHIpIHsKdmFyIGkgPSAwLCBjID0gMCwgbSA9IE1hdGgubWluKGEudCx0aGlzLnQpOwp3aGlsZShpIDwgbSkgewogYyArPSB0aGlzLmRhdGFbaV0rYS5kYXRhW2ldOwogci5kYXRhW2krK10gPSBjJnRoaXMuRE07CiBjID4+PSB0aGlzLkRCOwp9CmlmKGEudCA8IHRoaXMudCkgewogYyArPSBhLnM7CiB3aGlsZShpIDwgdGhpcy50KSB7CiAgIGMgKz0gdGhpcy5kYXRhW2ldOwogICByLmRhdGFbaSsrXSA9IGMmdGhpcy5ETTsKICAgYyA+Pj0gdGhpcy5EQjsKIH0KIGMgKz0gdGhpcy5zOwp9IGVsc2UgewogYyArPSB0aGlzLnM7CiB3aGlsZShpIDwgYS50KSB7CiAgIGMgKz0gYS5kYXRhW2ldOwogICByLmRhdGFbaSsrXSA9IGMmdGhpcy5ETTsKICAgYyA+Pj0gdGhpcy5EQjsKIH0KIGMgKz0gYS5zOwp9CnIucyA9IChjPDApPy0xOjA7CmlmKGMgPiAwKSByLmRhdGFbaSsrXSA9IGM7CmVsc2UgaWYoYyA8IC0xKSByLmRhdGFbaSsrXSA9IHRoaXMuRFYrYzsKci50ID0gaTsKci5jbGFtcCgpOwp9CgovLyhwdWJsaWMpIHRoaXMgKyBhCmZ1bmN0aW9uIGJuQWRkKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5hZGRUbyhhLHIpOyByZXR1cm4gcjsgfQoKLy8ocHVibGljKSB0aGlzIC0gYQpmdW5jdGlvbiBiblN1YnRyYWN0KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5zdWJUbyhhLHIpOyByZXR1cm4gcjsgfQoKLy8ocHVibGljKSB0aGlzICogYQpmdW5jdGlvbiBibk11bHRpcGx5KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5tdWx0aXBseVRvKGEscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHRoaXMgLyBhCmZ1bmN0aW9uIGJuRGl2aWRlKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5kaXZSZW1UbyhhLHIsbnVsbCk7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHRoaXMgJSBhCmZ1bmN0aW9uIGJuUmVtYWluZGVyKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5kaXZSZW1UbyhhLG51bGwscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIFt0aGlzL2EsdGhpcyVhXQpmdW5jdGlvbiBibkRpdmlkZUFuZFJlbWFpbmRlcihhKSB7CnZhciBxID0gbmJpKCksIHIgPSBuYmkoKTsKdGhpcy5kaXZSZW1UbyhhLHEscik7CnJldHVybiBuZXcgQXJyYXkocSxyKTsKfQoKLy8ocHJvdGVjdGVkKSB0aGlzICo9IG4sIHRoaXMgPj0gMCwgMSA8IG4gPCBEVgpmdW5jdGlvbiBibnBETXVsdGlwbHkobikgewp0aGlzLmRhdGFbdGhpcy50XSA9IHRoaXMuYW0oMCxuLTEsdGhpcywwLDAsdGhpcy50KTsKKyt0aGlzLnQ7CnRoaXMuY2xhbXAoKTsKfQoKLy8ocHJvdGVjdGVkKSB0aGlzICs9IG4gPDwgdyB3b3JkcywgdGhpcyA+PSAwCmZ1bmN0aW9uIGJucERBZGRPZmZzZXQobix3KSB7CmlmKG4gPT0gMCkgcmV0dXJuOwp3aGlsZSh0aGlzLnQgPD0gdykgdGhpcy5kYXRhW3RoaXMudCsrXSA9IDA7CnRoaXMuZGF0YVt3XSArPSBuOwp3aGlsZSh0aGlzLmRhdGFbd10gPj0gdGhpcy5EVikgewogdGhpcy5kYXRhW3ddIC09IHRoaXMuRFY7CiBpZigrK3cgPj0gdGhpcy50KSB0aGlzLmRhdGFbdGhpcy50KytdID0gMDsKICsrdGhpcy5kYXRhW3ddOwp9Cn0KCi8vQSAibnVsbCIgcmVkdWNlcgpmdW5jdGlvbiBOdWxsRXhwKCkge30KZnVuY3Rpb24gbk5vcCh4KSB7IHJldHVybiB4OyB9CmZ1bmN0aW9uIG5NdWxUbyh4LHkscikgeyB4Lm11bHRpcGx5VG8oeSxyKTsgfQpmdW5jdGlvbiBuU3FyVG8oeCxyKSB7IHguc3F1YXJlVG8ocik7IH0KCk51bGxFeHAucHJvdG90eXBlLmNvbnZlcnQgPSBuTm9wOwpOdWxsRXhwLnByb3RvdHlwZS5yZXZlcnQgPSBuTm9wOwpOdWxsRXhwLnByb3RvdHlwZS5tdWxUbyA9IG5NdWxUbzsKTnVsbEV4cC5wcm90b3R5cGUuc3FyVG8gPSBuU3FyVG87CgovLyhwdWJsaWMpIHRoaXNeZQpmdW5jdGlvbiBiblBvdyhlKSB7IHJldHVybiB0aGlzLmV4cChlLG5ldyBOdWxsRXhwKCkpOyB9CgovLyhwcm90ZWN0ZWQpIHIgPSBsb3dlciBuIHdvcmRzIG9mICJ0aGlzICogYSIsIGEudCA8PSBuCi8vInRoaXMiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0ZS4KZnVuY3Rpb24gYm5wTXVsdGlwbHlMb3dlclRvKGEsbixyKSB7CnZhciBpID0gTWF0aC5taW4odGhpcy50K2EudCxuKTsKci5zID0gMDsgLy8gYXNzdW1lcyBhLHRoaXMgPj0gMApyLnQgPSBpOwp3aGlsZShpID4gMCkgci5kYXRhWy0taV0gPSAwOwp2YXIgajsKZm9yKGogPSByLnQtdGhpcy50OyBpIDwgajsgKytpKSByLmRhdGFbaSt0aGlzLnRdID0gdGhpcy5hbSgwLGEuZGF0YVtpXSxyLGksMCx0aGlzLnQpOwpmb3IoaiA9IE1hdGgubWluKGEudCxuKTsgaSA8IGo7ICsraSkgdGhpcy5hbSgwLGEuZGF0YVtpXSxyLGksMCxuLWkpOwpyLmNsYW1wKCk7Cn0KCi8vKHByb3RlY3RlZCkgciA9ICJ0aGlzICogYSIgd2l0aG91dCBsb3dlciBuIHdvcmRzLCBuID4gMAovLyJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBvbmUgaWYgYXBwcm9wcmlhdGUuCmZ1bmN0aW9uIGJucE11bHRpcGx5VXBwZXJUbyhhLG4scikgewotLW47CnZhciBpID0gci50ID0gdGhpcy50K2EudC1uOwpyLnMgPSAwOyAvLyBhc3N1bWVzIGEsdGhpcyA+PSAwCndoaWxlKC0taSA+PSAwKSByLmRhdGFbaV0gPSAwOwpmb3IoaSA9IE1hdGgubWF4KG4tdGhpcy50LDApOyBpIDwgYS50OyArK2kpCiByLmRhdGFbdGhpcy50K2ktbl0gPSB0aGlzLmFtKG4taSxhLmRhdGFbaV0sciwwLDAsdGhpcy50K2ktbik7CnIuY2xhbXAoKTsKci5kclNoaWZ0VG8oMSxyKTsKfQoKLy9CYXJyZXR0IG1vZHVsYXIgcmVkdWN0aW9uCmZ1bmN0aW9uIEJhcnJldHQobSkgewovLyBzZXR1cCBCYXJyZXR0CnRoaXMucjIgPSBuYmkoKTsKdGhpcy5xMyA9IG5iaSgpOwpCaWdJbnRlZ2VyLk9ORS5kbFNoaWZ0VG8oMiptLnQsdGhpcy5yMik7CnRoaXMubXUgPSB0aGlzLnIyLmRpdmlkZShtKTsKdGhpcy5tID0gbTsKfQoKZnVuY3Rpb24gYmFycmV0dENvbnZlcnQoeCkgewppZih4LnMgPCAwIHx8IHgudCA+IDIqdGhpcy5tLnQpIHJldHVybiB4Lm1vZCh0aGlzLm0pOwplbHNlIGlmKHguY29tcGFyZVRvKHRoaXMubSkgPCAwKSByZXR1cm4geDsKZWxzZSB7IHZhciByID0gbmJpKCk7IHguY29weVRvKHIpOyB0aGlzLnJlZHVjZShyKTsgcmV0dXJuIHI7IH0KfQoKZnVuY3Rpb24gYmFycmV0dFJldmVydCh4KSB7IHJldHVybiB4OyB9CgovL3ggPSB4IG1vZCBtIChIQUMgMTQuNDIpCmZ1bmN0aW9uIGJhcnJldHRSZWR1Y2UoeCkgewp4LmRyU2hpZnRUbyh0aGlzLm0udC0xLHRoaXMucjIpOwppZih4LnQgPiB0aGlzLm0udCsxKSB7IHgudCA9IHRoaXMubS50KzE7IHguY2xhbXAoKTsgfQp0aGlzLm11Lm11bHRpcGx5VXBwZXJUbyh0aGlzLnIyLHRoaXMubS50KzEsdGhpcy5xMyk7CnRoaXMubS5tdWx0aXBseUxvd2VyVG8odGhpcy5xMyx0aGlzLm0udCsxLHRoaXMucjIpOwp3aGlsZSh4LmNvbXBhcmVUbyh0aGlzLnIyKSA8IDApIHguZEFkZE9mZnNldCgxLHRoaXMubS50KzEpOwp4LnN1YlRvKHRoaXMucjIseCk7CndoaWxlKHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgeC5zdWJUbyh0aGlzLm0seCk7Cn0KCi8vciA9IHheMiBtb2QgbTsgeCAhPSByCmZ1bmN0aW9uIGJhcnJldHRTcXJUbyh4LHIpIHsgeC5zcXVhcmVUbyhyKTsgdGhpcy5yZWR1Y2Uocik7IH0KCi8vciA9IHgqeSBtb2QgbTsgeCx5ICE9IHIKZnVuY3Rpb24gYmFycmV0dE11bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQoKQmFycmV0dC5wcm90b3R5cGUuY29udmVydCA9IGJhcnJldHRDb252ZXJ0OwpCYXJyZXR0LnByb3RvdHlwZS5yZXZlcnQgPSBiYXJyZXR0UmV2ZXJ0OwpCYXJyZXR0LnByb3RvdHlwZS5yZWR1Y2UgPSBiYXJyZXR0UmVkdWNlOwpCYXJyZXR0LnByb3RvdHlwZS5tdWxUbyA9IGJhcnJldHRNdWxUbzsKQmFycmV0dC5wcm90b3R5cGUuc3FyVG8gPSBiYXJyZXR0U3FyVG87CgovLyhwdWJsaWMpIHRoaXNeZSAlIG0gKEhBQyAxNC44NSkKZnVuY3Rpb24gYm5Nb2RQb3coZSxtKSB7CnZhciBpID0gZS5iaXRMZW5ndGgoKSwgaywgciA9IG5idigxKSwgejsKaWYoaSA8PSAwKSByZXR1cm4gcjsKZWxzZSBpZihpIDwgMTgpIGsgPSAxOwplbHNlIGlmKGkgPCA0OCkgayA9IDM7CmVsc2UgaWYoaSA8IDE0NCkgayA9IDQ7CmVsc2UgaWYoaSA8IDc2OCkgayA9IDU7CmVsc2UgayA9IDY7CmlmKGkgPCA4KQogeiA9IG5ldyBDbGFzc2ljKG0pOwplbHNlIGlmKG0uaXNFdmVuKCkpCiB6ID0gbmV3IEJhcnJldHQobSk7CmVsc2UKIHogPSBuZXcgTW9udGdvbWVyeShtKTsKCi8vIHByZWNvbXB1dGF0aW9uCnZhciBnID0gbmV3IEFycmF5KCksIG4gPSAzLCBrMSA9IGstMSwga20gPSAoMTw8ayktMTsKZ1sxXSA9IHouY29udmVydCh0aGlzKTsKaWYoayA+IDEpIHsKIHZhciBnMiA9IG5iaSgpOwogei5zcXJUbyhnWzFdLGcyKTsKIHdoaWxlKG4gPD0ga20pIHsKICAgZ1tuXSA9IG5iaSgpOwogICB6Lm11bFRvKGcyLGdbbi0yXSxnW25dKTsKICAgbiArPSAyOwogfQp9Cgp2YXIgaiA9IGUudC0xLCB3LCBpczEgPSB0cnVlLCByMiA9IG5iaSgpLCB0OwppID0gbmJpdHMoZS5kYXRhW2pdKS0xOwp3aGlsZShqID49IDApIHsKIGlmKGkgPj0gazEpIHcgPSAoZS5kYXRhW2pdPj4oaS1rMSkpJmttOwogZWxzZSB7CiAgIHcgPSAoZS5kYXRhW2pdJigoMTw8KGkrMSkpLTEpKTw8KGsxLWkpOwogICBpZihqID4gMCkgdyB8PSBlLmRhdGFbai0xXT4+KHRoaXMuREIraS1rMSk7CiB9CgogbiA9IGs7CiB3aGlsZSgodyYxKSA9PSAwKSB7IHcgPj49IDE7IC0tbjsgfQogaWYoKGkgLT0gbikgPCAwKSB7IGkgKz0gdGhpcy5EQjsgLS1qOyB9CiBpZihpczEpIHsgIC8vIHJldCA9PSAxLCBkb24ndCBib3RoZXIgc3F1YXJpbmcgb3IgbXVsdGlwbHlpbmcgaXQKICAgZ1t3XS5jb3B5VG8ocik7CiAgIGlzMSA9IGZhbHNlOwogfSBlbHNlIHsKICAgd2hpbGUobiA+IDEpIHsgei5zcXJUbyhyLHIyKTsgei5zcXJUbyhyMixyKTsgbiAtPSAyOyB9CiAgIGlmKG4gPiAwKSB6LnNxclRvKHIscjIpOyBlbHNlIHsgdCA9IHI7IHIgPSByMjsgcjIgPSB0OyB9CiAgIHoubXVsVG8ocjIsZ1t3XSxyKTsKIH0KCiB3aGlsZShqID49IDAgJiYgKGUuZGF0YVtqXSYoMTw8aSkpID09IDApIHsKICAgei5zcXJUbyhyLHIyKTsgdCA9IHI7IHIgPSByMjsgcjIgPSB0OwogICBpZigtLWkgPCAwKSB7IGkgPSB0aGlzLkRCLTE7IC0tajsgfQogfQp9CnJldHVybiB6LnJldmVydChyKTsKfQoKLy8ocHVibGljKSBnY2QodGhpcyxhKSAoSEFDIDE0LjU0KQpmdW5jdGlvbiBibkdDRChhKSB7CnZhciB4ID0gKHRoaXMuczwwKT90aGlzLm5lZ2F0ZSgpOnRoaXMuY2xvbmUoKTsKdmFyIHkgPSAoYS5zPDApP2EubmVnYXRlKCk6YS5jbG9uZSgpOwppZih4LmNvbXBhcmVUbyh5KSA8IDApIHsgdmFyIHQgPSB4OyB4ID0geTsgeSA9IHQ7IH0KdmFyIGkgPSB4LmdldExvd2VzdFNldEJpdCgpLCBnID0geS5nZXRMb3dlc3RTZXRCaXQoKTsKaWYoZyA8IDApIHJldHVybiB4OwppZihpIDwgZykgZyA9IGk7CmlmKGcgPiAwKSB7CiB4LnJTaGlmdFRvKGcseCk7CiB5LnJTaGlmdFRvKGcseSk7Cn0Kd2hpbGUoeC5zaWdudW0oKSA+IDApIHsKIGlmKChpID0geC5nZXRMb3dlc3RTZXRCaXQoKSkgPiAwKSB4LnJTaGlmdFRvKGkseCk7CiBpZigoaSA9IHkuZ2V0TG93ZXN0U2V0Qml0KCkpID4gMCkgeS5yU2hpZnRUbyhpLHkpOwogaWYoeC5jb21wYXJlVG8oeSkgPj0gMCkgewogICB4LnN1YlRvKHkseCk7CiAgIHguclNoaWZ0VG8oMSx4KTsKIH0gZWxzZSB7CiAgIHkuc3ViVG8oeCx5KTsKICAgeS5yU2hpZnRUbygxLHkpOwogfQp9CmlmKGcgPiAwKSB5LmxTaGlmdFRvKGcseSk7CnJldHVybiB5Owp9CgovLyhwcm90ZWN0ZWQpIHRoaXMgJSBuLCBuIDwgMl4yNgpmdW5jdGlvbiBibnBNb2RJbnQobikgewppZihuIDw9IDApIHJldHVybiAwOwp2YXIgZCA9IHRoaXMuRFYlbiwgciA9ICh0aGlzLnM8MCk/bi0xOjA7CmlmKHRoaXMudCA+IDApCiBpZihkID09IDApIHIgPSB0aGlzLmRhdGFbMF0lbjsKIGVsc2UgZm9yKHZhciBpID0gdGhpcy50LTE7IGkgPj0gMDsgLS1pKSByID0gKGQqcit0aGlzLmRhdGFbaV0pJW47CnJldHVybiByOwp9CgovLyhwdWJsaWMpIDEvdGhpcyAlIG0gKEhBQyAxNC42MSkKZnVuY3Rpb24gYm5Nb2RJbnZlcnNlKG0pIHsKdmFyIGFjID0gbS5pc0V2ZW4oKTsKaWYoKHRoaXMuaXNFdmVuKCkgJiYgYWMpIHx8IG0uc2lnbnVtKCkgPT0gMCkgcmV0dXJuIEJpZ0ludGVnZXIuWkVSTzsKdmFyIHUgPSBtLmNsb25lKCksIHYgPSB0aGlzLmNsb25lKCk7CnZhciBhID0gbmJ2KDEpLCBiID0gbmJ2KDApLCBjID0gbmJ2KDApLCBkID0gbmJ2KDEpOwp3aGlsZSh1LnNpZ251bSgpICE9IDApIHsKIHdoaWxlKHUuaXNFdmVuKCkpIHsKICAgdS5yU2hpZnRUbygxLHUpOwogICBpZihhYykgewogICAgIGlmKCFhLmlzRXZlbigpIHx8ICFiLmlzRXZlbigpKSB7IGEuYWRkVG8odGhpcyxhKTsgYi5zdWJUbyhtLGIpOyB9CiAgICAgYS5yU2hpZnRUbygxLGEpOwogICB9IGVsc2UgaWYoIWIuaXNFdmVuKCkpIGIuc3ViVG8obSxiKTsKICAgYi5yU2hpZnRUbygxLGIpOwogfQogd2hpbGUodi5pc0V2ZW4oKSkgewogICB2LnJTaGlmdFRvKDEsdik7CiAgIGlmKGFjKSB7CiAgICAgaWYoIWMuaXNFdmVuKCkgfHwgIWQuaXNFdmVuKCkpIHsgYy5hZGRUbyh0aGlzLGMpOyBkLnN1YlRvKG0sZCk7IH0KICAgICBjLnJTaGlmdFRvKDEsYyk7CiAgIH0gZWxzZSBpZighZC5pc0V2ZW4oKSkgZC5zdWJUbyhtLGQpOwogICBkLnJTaGlmdFRvKDEsZCk7CiB9CiBpZih1LmNvbXBhcmVUbyh2KSA+PSAwKSB7CiAgIHUuc3ViVG8odix1KTsKICAgaWYoYWMpIGEuc3ViVG8oYyxhKTsKICAgYi5zdWJUbyhkLGIpOwogfSBlbHNlIHsKICAgdi5zdWJUbyh1LHYpOwogICBpZihhYykgYy5zdWJUbyhhLGMpOwogICBkLnN1YlRvKGIsZCk7CiB9Cn0KaWYodi5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpICE9IDApIHJldHVybiBCaWdJbnRlZ2VyLlpFUk87CmlmKGQuY29tcGFyZVRvKG0pID49IDApIHJldHVybiBkLnN1YnRyYWN0KG0pOwppZihkLnNpZ251bSgpIDwgMCkgZC5hZGRUbyhtLGQpOyBlbHNlIHJldHVybiBkOwppZihkLnNpZ251bSgpIDwgMCkgcmV0dXJuIGQuYWRkKG0pOyBlbHNlIHJldHVybiBkOwp9Cgp2YXIgbG93cHJpbWVzID0gWzIsMyw1LDcsMTEsMTMsMTcsMTksMjMsMjksMzEsMzcsNDEsNDMsNDcsNTMsNTksNjEsNjcsNzEsNzMsNzksODMsODksOTcsMTAxLDEwMywxMDcsMTA5LDExMywxMjcsMTMxLDEzNywxMzksMTQ5LDE1MSwxNTcsMTYzLDE2NywxNzMsMTc5LDE4MSwxOTEsMTkzLDE5NywxOTksMjExLDIyMywyMjcsMjI5LDIzMywyMzksMjQxLDI1MSwyNTcsMjYzLDI2OSwyNzEsMjc3LDI4MSwyODMsMjkzLDMwNywzMTEsMzEzLDMxNywzMzEsMzM3LDM0NywzNDksMzUzLDM1OSwzNjcsMzczLDM3OSwzODMsMzg5LDM5Nyw0MDEsNDA5LDQxOSw0MjEsNDMxLDQzMyw0MzksNDQzLDQ0OSw0NTcsNDYxLDQ2Myw0NjcsNDc5LDQ4Nyw0OTEsNDk5LDUwMyw1MDldOwp2YXIgbHBsaW0gPSAoMTw8MjYpL2xvd3ByaW1lc1tsb3dwcmltZXMubGVuZ3RoLTFdOwoKLy8ocHVibGljKSB0ZXN0IHByaW1hbGl0eSB3aXRoIGNlcnRhaW50eSA+PSAxLS41XnQKZnVuY3Rpb24gYm5Jc1Byb2JhYmxlUHJpbWUodCkgewp2YXIgaSwgeCA9IHRoaXMuYWJzKCk7CmlmKHgudCA9PSAxICYmIHguZGF0YVswXSA8PSBsb3dwcmltZXNbbG93cHJpbWVzLmxlbmd0aC0xXSkgewogZm9yKGkgPSAwOyBpIDwgbG93cHJpbWVzLmxlbmd0aDsgKytpKQogICBpZih4LmRhdGFbMF0gPT0gbG93cHJpbWVzW2ldKSByZXR1cm4gdHJ1ZTsKIHJldHVybiBmYWxzZTsKfQppZih4LmlzRXZlbigpKSByZXR1cm4gZmFsc2U7CmkgPSAxOwp3aGlsZShpIDwgbG93cHJpbWVzLmxlbmd0aCkgewogdmFyIG0gPSBsb3dwcmltZXNbaV0sIGogPSBpKzE7CiB3aGlsZShqIDwgbG93cHJpbWVzLmxlbmd0aCAmJiBtIDwgbHBsaW0pIG0gKj0gbG93cHJpbWVzW2orK107CiBtID0geC5tb2RJbnQobSk7CiB3aGlsZShpIDwgaikgaWYobSVsb3dwcmltZXNbaSsrXSA9PSAwKSByZXR1cm4gZmFsc2U7Cn0KcmV0dXJuIHgubWlsbGVyUmFiaW4odCk7Cn0KCi8vKHByb3RlY3RlZCkgdHJ1ZSBpZiBwcm9iYWJseSBwcmltZSAoSEFDIDQuMjQsIE1pbGxlci1SYWJpbikKZnVuY3Rpb24gYm5wTWlsbGVyUmFiaW4odCkgewp2YXIgbjEgPSB0aGlzLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTsKdmFyIGsgPSBuMS5nZXRMb3dlc3RTZXRCaXQoKTsKaWYoayA8PSAwKSByZXR1cm4gZmFsc2U7CnZhciByID0gbjEuc2hpZnRSaWdodChrKTsKdmFyIHBybmcgPSBibkdldFBybmcoKTsKdmFyIGE7CmZvcih2YXIgaSA9IDA7IGkgPCB0OyArK2kpIHsKIC8vIHNlbGVjdCB3aXRuZXNzICdhJyBhdCByYW5kb20gZnJvbSBiZXR3ZWVuIDEgYW5kIG4xCiBkbyB7CiAgIGEgPSBuZXcgQmlnSW50ZWdlcih0aGlzLmJpdExlbmd0aCgpLCBwcm5nKTsKIH0KIHdoaWxlKGEuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA8PSAwIHx8IGEuY29tcGFyZVRvKG4xKSA+PSAwKTsKIHZhciB5ID0gYS5tb2RQb3cocix0aGlzKTsKIGlmKHkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSAhPSAwICYmIHkuY29tcGFyZVRvKG4xKSAhPSAwKSB7CiAgIHZhciBqID0gMTsKICAgd2hpbGUoaisrIDwgayAmJiB5LmNvbXBhcmVUbyhuMSkgIT0gMCkgewogICAgIHkgPSB5Lm1vZFBvd0ludCgyLHRoaXMpOwogICAgIGlmKHkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA9PSAwKSByZXR1cm4gZmFsc2U7CiAgIH0KICAgaWYoeS5jb21wYXJlVG8objEpICE9IDApIHJldHVybiBmYWxzZTsKIH0KfQpyZXR1cm4gdHJ1ZTsKfQoKLy8gZ2V0IHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgpmdW5jdGlvbiBibkdldFBybmcoKSB7CiAgLy8gY3JlYXRlIHBybmcgd2l0aCBhcGkgdGhhdCBtYXRjaGVzIEJpZ0ludGVnZXIgc2VjdXJlIHJhbmRvbQogIHJldHVybiB7CiAgICAvLyB4IGlzIGFuIGFycmF5IHRvIGZpbGwgd2l0aCBieXRlcwogICAgbmV4dEJ5dGVzOiBmdW5jdGlvbih4KSB7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgeFtpXSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDB4MDEwMCk7CiAgICAgIH0KICAgIH0KICB9Owp9CgovL3Byb3RlY3RlZApCaWdJbnRlZ2VyLnByb3RvdHlwZS5jaHVua1NpemUgPSBibnBDaHVua1NpemU7CkJpZ0ludGVnZXIucHJvdG90eXBlLnRvUmFkaXggPSBibnBUb1JhZGl4OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tUmFkaXggPSBibnBGcm9tUmFkaXg7CkJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21OdW1iZXIgPSBibnBGcm9tTnVtYmVyOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXR3aXNlVG8gPSBibnBCaXR3aXNlVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmNoYW5nZUJpdCA9IGJucENoYW5nZUJpdDsKQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG8gPSBibnBBZGRUbzsKQmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5ID0gYm5wRE11bHRpcGx5OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0ID0gYm5wREFkZE9mZnNldDsKQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHlMb3dlclRvID0gYm5wTXVsdGlwbHlMb3dlclRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVVwcGVyVG8gPSBibnBNdWx0aXBseVVwcGVyVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludCA9IGJucE1vZEludDsKQmlnSW50ZWdlci5wcm90b3R5cGUubWlsbGVyUmFiaW4gPSBibnBNaWxsZXJSYWJpbjsKCi8vcHVibGljCkJpZ0ludGVnZXIucHJvdG90eXBlLmNsb25lID0gYm5DbG9uZTsKQmlnSW50ZWdlci5wcm90b3R5cGUuaW50VmFsdWUgPSBibkludFZhbHVlOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5ieXRlVmFsdWUgPSBibkJ5dGVWYWx1ZTsKQmlnSW50ZWdlci5wcm90b3R5cGUuc2hvcnRWYWx1ZSA9IGJuU2hvcnRWYWx1ZTsKQmlnSW50ZWdlci5wcm90b3R5cGUuc2lnbnVtID0gYm5TaWdOdW07CkJpZ0ludGVnZXIucHJvdG90eXBlLnRvQnl0ZUFycmF5ID0gYm5Ub0J5dGVBcnJheTsKQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gYm5FcXVhbHM7CkJpZ0ludGVnZXIucHJvdG90eXBlLm1pbiA9IGJuTWluOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5tYXggPSBibk1heDsKQmlnSW50ZWdlci5wcm90b3R5cGUuYW5kID0gYm5BbmQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gYm5PcjsKQmlnSW50ZWdlci5wcm90b3R5cGUueG9yID0gYm5Yb3I7CkJpZ0ludGVnZXIucHJvdG90eXBlLmFuZE5vdCA9IGJuQW5kTm90OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBibk5vdDsKQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gYm5TaGlmdExlZnQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBiblNoaWZ0UmlnaHQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLmdldExvd2VzdFNldEJpdCA9IGJuR2V0TG93ZXN0U2V0Qml0OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRDb3VudCA9IGJuQml0Q291bnQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLnRlc3RCaXQgPSBiblRlc3RCaXQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLnNldEJpdCA9IGJuU2V0Qml0OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5jbGVhckJpdCA9IGJuQ2xlYXJCaXQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLmZsaXBCaXQgPSBibkZsaXBCaXQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLmFkZCA9IGJuQWRkOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGJuU3VidHJhY3Q7CkJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gYm5NdWx0aXBseTsKQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gYm5EaXZpZGU7CkJpZ0ludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IGJuUmVtYWluZGVyOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGVBbmRSZW1haW5kZXIgPSBibkRpdmlkZUFuZFJlbWFpbmRlcjsKQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gYm5Nb2RQb3c7CkJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludmVyc2UgPSBibk1vZEludmVyc2U7CkJpZ0ludGVnZXIucHJvdG90eXBlLnBvdyA9IGJuUG93OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5nY2QgPSBibkdDRDsKQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gYm5Jc1Byb2JhYmxlUHJpbWU7CgovL0JpZ0ludGVnZXIgaW50ZXJmYWNlcyBub3QgaW1wbGVtZW50ZWQgaW4ganNibjoKCi8vQmlnSW50ZWdlcihpbnQgc2lnbnVtLCBieXRlW10gbWFnbml0dWRlKQovL2RvdWJsZSBkb3VibGVWYWx1ZSgpCi8vZmxvYXQgZmxvYXRWYWx1ZSgpCi8vaW50IGhhc2hDb2RlKCkKLy9sb25nIGxvbmdWYWx1ZSgpCi8vc3RhdGljIEJpZ0ludGVnZXIgdmFsdWVPZihsb25nIHZhbCkKCmZvcmdlLmpzYm4gPSBmb3JnZS5qc2JuIHx8IHt9Owpmb3JnZS5qc2JuLkJpZ0ludGVnZXIgPSBCaWdJbnRlZ2VyOwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnanNibic7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9qc2JuJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgUEtDUyMxIHYyLjI6IFJTQS1PRUFQCiAqCiAqIE1vZGlmaWVkIGJ1dCBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIE1JVCBhbmQgQlNEIGxpY2Vuc2VkIGNvZGU6CiAqCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ranVyL2pzandzL2Jsb2IvbWFzdGVyL3JzYS5qczoKICoKICogVGhlICdqc2p3cycoSlNPTiBXZWIgU2lnbmF0dXJlIEphdmFTY3JpcHQgTGlicmFyeSkgTGljZW5zZQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgS2VuamkgVXJ1c2hpbWEKICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogKiBUSEUgU09GVFdBUkUuCiAqCiAqIGh0dHA6Ly93ZWJyc2EuY3ZzLnNvdXJjZWZvcmdlLm5ldC92aWV3dmMvd2VicnNhL0NsaWVudC9SU0FFUy1PQUVQLmpzP2NvbnRlbnQtdHlwZT10ZXh0JTJGcGxhaW46CiAqCiAqIFJTQUVTLU9BRVAuanMKICogJElkOiBSU0FFUy1PQUVQLmpzLHYgMS4xLjEuMSAyMDAzLzAzLzE5IDE1OjM3OjIwIGVsbGlzcHJpdGNoYXJkIEV4cCAkCiAqIEphdmFTY3JpcHQgSW1wbGVtZW50YXRpb24gb2YgUEtDUyAjMSB2Mi4xIFJTQSBDUllQVE9HUkFQSFkgU1RBTkRBUkQgKFJTQSBMYWJvcmF0b3JpZXMsIEp1bmUgMTQsIDIwMDIpCiAqIENvcHlyaWdodCAoQykgRWxsaXMgUHJpdGNoYXJkLCBHdWFyZGlhbiBVbmxpbWl0ZWQgMjAwMy4KICogQ29udGFjdDogZWxsaXNAbnVraW5ldGljcy5jb20KICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgogKgogKiBPZmZpY2lhbCBkb2N1bWVudGF0aW9uOiBodHRwOi8vd3d3LnJzYS5jb20vcnNhbGFicy9ub2RlLmFzcD9pZD0yMTI1CiAqCiAqIEBhdXRob3IgRXZhbiBKb25lcyAoaHR0cDovL2V2YW5qb25lcy5jYS8pCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLy8gc2hvcnRjdXQgZm9yIFBLQ1MjMSBBUEkKdmFyIHBrY3MxID0gZm9yZ2UucGtjczEgPSBmb3JnZS5wa2NzMSB8fCB7fTsKCi8qKgogKiBFbmNvZGUgdGhlIGdpdmVuIFJTQUVTLU9BRVAgbWVzc2FnZSAoTSkgdXNpbmcga2V5LCB3aXRoIG9wdGlvbmFsIGxhYmVsIChMKQogKiBhbmQgc2VlZC4KICoKICogVGhpcyBtZXRob2QgZG9lcyBub3QgcGVyZm9ybSBSU0EgZW5jcnlwdGlvbiwgaXQgb25seSBlbmNvZGVzIHRoZSBtZXNzYWdlCiAqIHVzaW5nIFJTQUVTLU9BRVAuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIFJTQSBrZXkgdG8gdXNlLgogKiBAcGFyYW0gbWVzc2FnZSB0aGUgbWVzc2FnZSB0byBlbmNvZGUuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgbGFiZWwgYW4gb3B0aW9uYWwgbGFiZWwgdG8gdXNlLgogKiAgICAgICAgICBzZWVkIHRoZSBzZWVkIHRvIHVzZS4KICogICAgICAgICAgbWQgdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UsIHVuZGVmaW5lZCBmb3IgU0hBLTEuCiAqICAgICAgICAgIG1nZjEgb3B0aW9uYWwgbWdmMSBwYXJhbWV0ZXJzOgogKiAgICAgICAgICAgIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIGZvciBNR0YxLgogKgogKiBAcmV0dXJuIHRoZSBlbmNvZGVkIG1lc3NhZ2UgYnl0ZXMuCiAqLwpwa2NzMS5lbmNvZGVfcnNhX29hZXAgPSBmdW5jdGlvbihrZXksIG1lc3NhZ2UsIG9wdGlvbnMpIHsKICAvLyBwYXJzZSBhcmd1bWVudHMKICB2YXIgbGFiZWw7CiAgdmFyIHNlZWQ7CiAgdmFyIG1kOwogIHZhciBtZ2YxTWQ7CiAgLy8gbGVnYWN5IGFyZ3MgKGxhYmVsLCBzZWVkLCBtZCkKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHsKICAgIGxhYmVsID0gb3B0aW9uczsKICAgIHNlZWQgPSBhcmd1bWVudHNbM10gfHwgdW5kZWZpbmVkOwogICAgbWQgPSBhcmd1bWVudHNbNF0gfHwgdW5kZWZpbmVkOwogIH0gZWxzZSBpZihvcHRpb25zKSB7CiAgICBsYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwgdW5kZWZpbmVkOwogICAgc2VlZCA9IG9wdGlvbnMuc2VlZCB8fCB1bmRlZmluZWQ7CiAgICBtZCA9IG9wdGlvbnMubWQgfHwgdW5kZWZpbmVkOwogICAgaWYob3B0aW9ucy5tZ2YxICYmIG9wdGlvbnMubWdmMS5tZCkgewogICAgICBtZ2YxTWQgPSBvcHRpb25zLm1nZjEubWQ7CiAgICB9CiAgfQoKICAvLyBkZWZhdWx0IE9BRVAgdG8gU0hBLTEgbWVzc2FnZSBkaWdlc3QKICBpZighbWQpIHsKICAgIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB9IGVsc2UgewogICAgbWQuc3RhcnQoKTsKICB9CgogIC8vIGRlZmF1bHQgTUdGLTEgdG8gc2FtZSBhcyBPQUVQCiAgaWYoIW1nZjFNZCkgewogICAgbWdmMU1kID0gbWQ7CiAgfQoKICAvLyBjb21wdXRlIGxlbmd0aCBpbiBieXRlcyBhbmQgY2hlY2sgb3V0cHV0CiAgdmFyIGtleUxlbmd0aCA9IE1hdGguY2VpbChrZXkubi5iaXRMZW5ndGgoKSAvIDgpOwogIHZhciBtYXhMZW5ndGggPSBrZXlMZW5ndGggLSAyICogbWQuZGlnZXN0TGVuZ3RoIC0gMjsKICBpZihtZXNzYWdlLmxlbmd0aCA+IG1heExlbmd0aCkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdSU0FFUy1PQUVQIGlucHV0IG1lc3NhZ2UgbGVuZ3RoIGlzIHRvbyBsb25nLicpOwogICAgZXJyb3IubGVuZ3RoID0gbWVzc2FnZS5sZW5ndGg7CiAgICBlcnJvci5tYXhMZW5ndGggPSBtYXhMZW5ndGg7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIGlmKCFsYWJlbCkgewogICAgbGFiZWwgPSAnJzsKICB9CiAgbWQudXBkYXRlKGxhYmVsLCAncmF3Jyk7CiAgdmFyIGxIYXNoID0gbWQuZGlnZXN0KCk7CgogIHZhciBQUyA9ICcnOwogIHZhciBQU19sZW5ndGggPSBtYXhMZW5ndGggLSBtZXNzYWdlLmxlbmd0aDsKICBmb3IgKHZhciBpID0gMDsgaSA8IFBTX2xlbmd0aDsgaSsrKSB7CiAgICBQUyArPSAnXHgwMCc7CiAgfQoKICB2YXIgREIgPSBsSGFzaC5nZXRCeXRlcygpICsgUFMgKyAnXHgwMScgKyBtZXNzYWdlOwoKICBpZighc2VlZCkgewogICAgc2VlZCA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlcyhtZC5kaWdlc3RMZW5ndGgpOwogIH0gZWxzZSBpZihzZWVkLmxlbmd0aCAhPT0gbWQuZGlnZXN0TGVuZ3RoKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0ludmFsaWQgUlNBRVMtT0FFUCBzZWVkLiBUaGUgc2VlZCBsZW5ndGggbXVzdCAnICsKICAgICAgJ21hdGNoIHRoZSBkaWdlc3QgbGVuZ3RoLicpCiAgICBlcnJvci5zZWVkTGVuZ3RoID0gc2VlZC5sZW5ndGg7CiAgICBlcnJvci5kaWdlc3RMZW5ndGggPSBtZC5kaWdlc3RMZW5ndGg7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBkYk1hc2sgPSByc2FfbWdmMShzZWVkLCBrZXlMZW5ndGggLSBtZC5kaWdlc3RMZW5ndGggLSAxLCBtZ2YxTWQpOwogIHZhciBtYXNrZWREQiA9IGZvcmdlLnV0aWwueG9yQnl0ZXMoREIsIGRiTWFzaywgREIubGVuZ3RoKTsKCiAgdmFyIHNlZWRNYXNrID0gcnNhX21nZjEobWFza2VkREIsIG1kLmRpZ2VzdExlbmd0aCwgbWdmMU1kKTsKICB2YXIgbWFza2VkU2VlZCA9IGZvcmdlLnV0aWwueG9yQnl0ZXMoc2VlZCwgc2VlZE1hc2ssIHNlZWQubGVuZ3RoKTsKCiAgLy8gcmV0dXJuIGVuY29kZWQgbWVzc2FnZQogIHJldHVybiAnXHgwMCcgKyBtYXNrZWRTZWVkICsgbWFza2VkREI7Cn07CgovKioKICogRGVjb2RlIHRoZSBnaXZlbiBSU0FFUy1PQUVQIGVuY29kZWQgbWVzc2FnZSAoRU0pIHVzaW5nIGtleSwgd2l0aCBvcHRpb25hbAogKiBsYWJlbCAoTCkuCiAqCiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHBlcmZvcm0gUlNBIGRlY3J5cHRpb24sIGl0IG9ubHkgZGVjb2RlcyB0aGUgbWVzc2FnZQogKiB1c2luZyBSU0FFUy1PQUVQLgogKgogKiBAcGFyYW0ga2V5IHRoZSBSU0Ega2V5IHRvIHVzZS4KICogQHBhcmFtIGVtIHRoZSBlbmNvZGVkIG1lc3NhZ2UgdG8gZGVjb2RlLgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2U6CiAqICAgICAgICAgIGxhYmVsIGFuIG9wdGlvbmFsIGxhYmVsIHRvIHVzZS4KICogICAgICAgICAgbWQgdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UgZm9yIE9BRVAsIHVuZGVmaW5lZCBmb3IgU0hBLTEuCiAqICAgICAgICAgIG1nZjEgb3B0aW9uYWwgbWdmMSBwYXJhbWV0ZXJzOgogKiAgICAgICAgICAgIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIGZvciBNR0YxLgogKgogKiBAcmV0dXJuIHRoZSBkZWNvZGVkIG1lc3NhZ2UgYnl0ZXMuCiAqLwpwa2NzMS5kZWNvZGVfcnNhX29hZXAgPSBmdW5jdGlvbihrZXksIGVtLCBvcHRpb25zKSB7CiAgLy8gcGFyc2UgYXJncwogIHZhciBsYWJlbDsKICB2YXIgbWQ7CiAgdmFyIG1nZjFNZDsKICAvLyBsZWdhY3kgYXJncwogIGlmKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykgewogICAgbGFiZWwgPSBvcHRpb25zOwogICAgbWQgPSBhcmd1bWVudHNbM10gfHwgdW5kZWZpbmVkOwogIH0gZWxzZSBpZihvcHRpb25zKSB7CiAgICBsYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwgdW5kZWZpbmVkOwogICAgbWQgPSBvcHRpb25zLm1kIHx8IHVuZGVmaW5lZDsKICAgIGlmKG9wdGlvbnMubWdmMSAmJiBvcHRpb25zLm1nZjEubWQpIHsKICAgICAgbWdmMU1kID0gb3B0aW9ucy5tZ2YxLm1kOwogICAgfQogIH0KCiAgLy8gY29tcHV0ZSBsZW5ndGggaW4gYnl0ZXMKICB2YXIga2V5TGVuZ3RoID0gTWF0aC5jZWlsKGtleS5uLmJpdExlbmd0aCgpIC8gOCk7CgogIGlmKGVtLmxlbmd0aCAhPT0ga2V5TGVuZ3RoKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1JTQUVTLU9BRVAgZW5jb2RlZCBtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkLicpOwogICAgZXJyb3IubGVuZ3RoID0gZW0ubGVuZ3RoOwogICAgZXJyb3IuZXhwZWN0ZWRMZW5ndGggPSBrZXlMZW5ndGg7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIGRlZmF1bHQgT0FFUCB0byBTSEEtMSBtZXNzYWdlIGRpZ2VzdAogIGlmKG1kID09PSB1bmRlZmluZWQpIHsKICAgIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB9IGVsc2UgewogICAgbWQuc3RhcnQoKTsKICB9CgogIC8vIGRlZmF1bHQgTUdGLTEgdG8gc2FtZSBhcyBPQUVQCiAgaWYoIW1nZjFNZCkgewogICAgbWdmMU1kID0gbWQ7CiAgfQoKICBpZihrZXlMZW5ndGggPCAyICogbWQuZGlnZXN0TGVuZ3RoICsgMikgewogICAgdGhyb3cgbmV3IEVycm9yKCdSU0FFUy1PQUVQIGtleSBpcyB0b28gc2hvcnQgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLicpOwogIH0KCiAgaWYoIWxhYmVsKSB7CiAgICBsYWJlbCA9ICcnOwogIH0KICBtZC51cGRhdGUobGFiZWwsICdyYXcnKTsKICB2YXIgbEhhc2ggPSBtZC5kaWdlc3QoKS5nZXRCeXRlcygpOwoKICAvLyBzcGxpdCB0aGUgbWVzc2FnZSBpbnRvIGl0cyBwYXJ0cwogIHZhciB5ID0gZW0uY2hhckF0KDApOwogIHZhciBtYXNrZWRTZWVkID0gZW0uc3Vic3RyaW5nKDEsIG1kLmRpZ2VzdExlbmd0aCArIDEpOwogIHZhciBtYXNrZWREQiA9IGVtLnN1YnN0cmluZygxICsgbWQuZGlnZXN0TGVuZ3RoKTsKCiAgdmFyIHNlZWRNYXNrID0gcnNhX21nZjEobWFza2VkREIsIG1kLmRpZ2VzdExlbmd0aCwgbWdmMU1kKTsKICB2YXIgc2VlZCA9IGZvcmdlLnV0aWwueG9yQnl0ZXMobWFza2VkU2VlZCwgc2VlZE1hc2ssIG1hc2tlZFNlZWQubGVuZ3RoKTsKCiAgdmFyIGRiTWFzayA9IHJzYV9tZ2YxKHNlZWQsIGtleUxlbmd0aCAtIG1kLmRpZ2VzdExlbmd0aCAtIDEsIG1nZjFNZCk7CiAgdmFyIGRiID0gZm9yZ2UudXRpbC54b3JCeXRlcyhtYXNrZWREQiwgZGJNYXNrLCBtYXNrZWREQi5sZW5ndGgpOwoKICB2YXIgbEhhc2hQcmltZSA9IGRiLnN1YnN0cmluZygwLCBtZC5kaWdlc3RMZW5ndGgpOwoKICAvLyBjb25zdGFudCB0aW1lIGNoZWNrIHRoYXQgYWxsIHZhbHVlcyBtYXRjaCB3aGF0IGlzIGV4cGVjdGVkCiAgdmFyIGVycm9yID0gKHkgIT09ICdceDAwJyk7CgogIC8vIGNvbnN0YW50IHRpbWUgY2hlY2sgbEhhc2ggdnMgbEhhc2hQcmltZQogIGZvcih2YXIgaSA9IDA7IGkgPCBtZC5kaWdlc3RMZW5ndGg7ICsraSkgewogICAgZXJyb3IgfD0gKGxIYXNoLmNoYXJBdChpKSAhPT0gbEhhc2hQcmltZS5jaGFyQXQoaSkpOwogIH0KCiAgLy8gImNvbnN0YW50IHRpbWUiIGZpbmQgdGhlIDB4MSBieXRlIHNlcGFyYXRpbmcgdGhlIHBhZGRpbmcgKHplcm9zKSBmcm9tIHRoZQogIC8vIG1lc3NhZ2UKICAvLyBUT0RPOiBJdCBtdXN0IGJlIHBvc3NpYmxlIHRvIGRvIHRoaXMgaW4gYSBiZXR0ZXIvc21hcnRlciB3YXk/CiAgdmFyIGluX3BzID0gMTsKICB2YXIgaW5kZXggPSBtZC5kaWdlc3RMZW5ndGg7CiAgZm9yKHZhciBqID0gbWQuZGlnZXN0TGVuZ3RoOyBqIDwgZGIubGVuZ3RoOyBqKyspIHsKICAgIHZhciBjb2RlID0gZGIuY2hhckNvZGVBdChqKTsKCiAgICB2YXIgaXNfMCA9IChjb2RlICYgMHgxKSBeIDB4MTsKCiAgICAvLyBub24temVybyBpZiBub3QgMCBvciAxIGluIHRoZSBwcyBzZWN0aW9uCiAgICB2YXIgZXJyb3JfbWFzayA9IGluX3BzID8gMHhmZmZlIDogMHgwMDAwOwogICAgZXJyb3IgfD0gKGNvZGUgJiBlcnJvcl9tYXNrKTsKCiAgICAvLyBsYXRjaCBpbl9wcyB0byB6ZXJvIGFmdGVyIHdlIGZpbmQgMHgxCiAgICBpbl9wcyA9IGluX3BzICYgaXNfMDsKICAgIGluZGV4ICs9IGluX3BzOwogIH0KCiAgaWYoZXJyb3IgfHwgZGIuY2hhckNvZGVBdChpbmRleCkgIT09IDB4MSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTQUVTLU9BRVAgcGFkZGluZy4nKTsKICB9CgogIHJldHVybiBkYi5zdWJzdHJpbmcoaW5kZXggKyAxKTsKfTsKCmZ1bmN0aW9uIHJzYV9tZ2YxKHNlZWQsIG1hc2tMZW5ndGgsIGhhc2gpIHsKICAvLyBkZWZhdWx0IHRvIFNIQS0xIG1lc3NhZ2UgZGlnZXN0CiAgaWYoIWhhc2gpIHsKICAgIGhhc2ggPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIH0KICB2YXIgdCA9ICcnOwogIHZhciBjb3VudCA9IE1hdGguY2VpbChtYXNrTGVuZ3RoIC8gaGFzaC5kaWdlc3RMZW5ndGgpOwogIGZvcih2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICB2YXIgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoCiAgICAgIChpID4+IDI0KSAmIDB4RkYsIChpID4+IDE2KSAmIDB4RkYsIChpID4+IDgpICYgMHhGRiwgaSAmIDB4RkYpOwogICAgaGFzaC5zdGFydCgpOwogICAgaGFzaC51cGRhdGUoc2VlZCArIGMpOwogICAgdCArPSBoYXNoLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CiAgfQogIHJldHVybiB0LnN1YnN0cmluZygwLCBtYXNrTGVuZ3RoKTsKfQoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncGtjczEnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcGtjczEnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJywgJy4vcmFuZG9tJywgJy4vc2hhMSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBQcmltZSBudW1iZXIgZ2VuZXJhdGlvbiBBUEkuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIGZvcmdlLnByaW1lIGFscmVhZHkgZGVmaW5lZAppZihmb3JnZS5wcmltZSkgewogIHJldHVybjsKfQoKLyogUFJJTUUgQVBJICovCnZhciBwcmltZSA9IGZvcmdlLnByaW1lID0gZm9yZ2UucHJpbWUgfHwge307Cgp2YXIgQmlnSW50ZWdlciA9IGZvcmdlLmpzYm4uQmlnSW50ZWdlcjsKCi8vIHByaW1lcyBhcmUgMzBrK2kgZm9yIGkgPSAxLCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5CnZhciBHQ0RfMzBfREVMVEEgPSBbNiwgNCwgMiwgNCwgMiwgNCwgNiwgMl07CnZhciBUSElSVFkgPSBuZXcgQmlnSW50ZWdlcihudWxsKTsKVEhJUlRZLmZyb21JbnQoMzApOwp2YXIgb3Bfb3IgPSBmdW5jdGlvbih4LCB5KSB7cmV0dXJuIHh8eTt9OwoKLyoqCiAqIEdlbmVyYXRlcyBhIHJhbmRvbSBwcm9iYWJsZSBwcmltZSB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgYml0cy4KICoKICogQWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyBjYW4gYmUgc3BlY2lmaWVkIGJ5IG5hbWUgYXMgYSBzdHJpbmcgb3IgYXMgYW4KICogb2JqZWN0IHdpdGggY3VzdG9tIG9wdGlvbnMgbGlrZSBzbzoKICoKICogewogKiAgIG5hbWU6ICdQUklNRUlOQycsCiAqICAgb3B0aW9uczogewogKiAgICAgbWF4QmxvY2tUaW1lOiA8dGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gYmxvY2sgdGhlIG1haW4KICogICAgICAgdGhyZWFkIGJlZm9yZSBhbGxvd2luZyBJL08gb3RoZXIgSlMgdG8gcnVuPiwKICogICAgIG1pbGxlclJhYmluVGVzdHM6IDx0aGUgbnVtYmVyIG9mIG1pbGxlci1yYWJpbiB0ZXN0cyB0byBydW4+LAogKiAgICAgd29ya2VyU2NyaXB0OiA8dGhlIHdvcmtlciBzY3JpcHQgVVJMPiwKICogICAgIHdvcmtlcnM6IDx0aGUgbnVtYmVyIG9mIHdlYiB3b3JrZXJzIChpZiBzdXBwb3J0ZWQpIHRvIHVzZSwKICogICAgICAgLTEgdG8gdXNlIGVzdGltYXRlZCBjb3JlcyBtaW51cyBvbmU+LgogKiAgICAgd29ya0xvYWQ6IHRoZSBzaXplIG9mIHRoZSB3b3JrIGxvYWQsIGllOiBudW1iZXIgb2YgcG9zc2libGUgcHJpbWUKICogICAgICAgbnVtYmVycyBmb3IgZWFjaCB3ZWIgd29ya2VyIHRvIGNoZWNrIHBlciB3b3JrIGFzc2lnbm1lbnQsCiAqICAgICAgIChkZWZhdWx0OiAxMDApLgogKiAgIH0KICogfQogKgogKiBAcGFyYW0gYml0cyB0aGUgbnVtYmVyIG9mIGJpdHMgZm9yIHRoZSBwcmltZSBudW1iZXIuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZS4KICogICAgICAgICAgW2FsZ29yaXRobV0gdGhlIGFsZ29yaXRobSB0byB1c2UgKGRlZmF1bHQ6ICdQUklNRUlOQycpLgogKiAgICAgICAgICBbcHJuZ10gYSBjdXN0b20gY3J5cHRvLXNlY3VyZSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlLAogKiAgICAgICAgICAgIHRoYXQgbXVzdCBkZWZpbmUgImdldEJ5dGVzU3luYyIuCiAqCiAqIEByZXR1cm4gY2FsbGJhY2soZXJyLCBudW0pIGNhbGxlZCBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogKi8KcHJpbWUuZ2VuZXJhdGVQcm9iYWJsZVByaW1lID0gZnVuY3Rpb24oYml0cywgb3B0aW9ucywgY2FsbGJhY2spIHsKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRpb25zOwogICAgb3B0aW9ucyA9IHt9OwogIH0KICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgLy8gZGVmYXVsdCB0byBQUklNRUlOQyBhbGdvcml0aG0KICB2YXIgYWxnb3JpdGhtID0gb3B0aW9ucy5hbGdvcml0aG0gfHwgJ1BSSU1FSU5DJzsKICBpZih0eXBlb2YgYWxnb3JpdGhtID09PSAnc3RyaW5nJykgewogICAgYWxnb3JpdGhtID0ge25hbWU6IGFsZ29yaXRobX07CiAgfQogIGFsZ29yaXRobS5vcHRpb25zID0gYWxnb3JpdGhtLm9wdGlvbnMgfHwge307CgogIC8vIGNyZWF0ZSBwcm5nIHdpdGggYXBpIHRoYXQgbWF0Y2hlcyBCaWdJbnRlZ2VyIHNlY3VyZSByYW5kb20KICB2YXIgcHJuZyA9IG9wdGlvbnMucHJuZyB8fCBmb3JnZS5yYW5kb207CiAgdmFyIHJuZyA9IHsKICAgIC8vIHggaXMgYW4gYXJyYXkgdG8gZmlsbCB3aXRoIGJ5dGVzCiAgICBuZXh0Qnl0ZXM6IGZ1bmN0aW9uKHgpIHsKICAgICAgdmFyIGIgPSBwcm5nLmdldEJ5dGVzU3luYyh4Lmxlbmd0aCk7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgeFtpXSA9IGIuY2hhckNvZGVBdChpKTsKICAgICAgfQogICAgfQogIH07CgogIGlmKGFsZ29yaXRobS5uYW1lID09PSAnUFJJTUVJTkMnKSB7CiAgICByZXR1cm4gcHJpbWVpbmNGaW5kUHJpbWUoYml0cywgcm5nLCBhbGdvcml0aG0ub3B0aW9ucywgY2FsbGJhY2spOwogIH0KCiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByaW1lIGdlbmVyYXRpb24gYWxnb3JpdGhtOiAnICsgYWxnb3JpdGhtLm5hbWUpOwp9OwoKZnVuY3Rpb24gcHJpbWVpbmNGaW5kUHJpbWUoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjaykgewogIGlmKCd3b3JrZXJzJyBpbiBvcHRpb25zKSB7CiAgICByZXR1cm4gcHJpbWVpbmNGaW5kUHJpbWVXaXRoV29ya2VycyhiaXRzLCBybmcsIG9wdGlvbnMsIGNhbGxiYWNrKTsKICB9CiAgcmV0dXJuIHByaW1laW5jRmluZFByaW1lV2l0aG91dFdvcmtlcnMoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjayk7Cn0KCmZ1bmN0aW9uIHByaW1laW5jRmluZFByaW1lV2l0aG91dFdvcmtlcnMoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjaykgewogIC8vIGluaXRpYWxpemUgcmFuZG9tIG51bWJlcgogIHZhciBudW0gPSBnZW5lcmF0ZVJhbmRvbShiaXRzLCBybmcpOwoKICAvKiBOb3RlOiBBbGwgcHJpbWVzIGFyZSBvZiB0aGUgZm9ybSAzMGsraSBmb3IgaSA8IDMwIGFuZCBnY2QoMzAsIGkpPTEuIFRoZQogIG51bWJlciB3ZSBhcmUgZ2l2ZW4gaXMgYWx3YXlzIGFsaWduZWQgYXQgMzBrICsgMS4gRWFjaCB0aW1lIHRoZSBudW1iZXIgaXMKICBkZXRlcm1pbmVkIG5vdCB0byBiZSBwcmltZSB3ZSBhZGQgdG8gZ2V0IHRvIHRoZSBuZXh0ICdpJywgZWc6IGlmIHRoZSBudW1iZXIKICB3YXMgYXQgMzBrICsgMSB3ZSBhZGQgNi4gKi8KICB2YXIgZGVsdGFJZHggPSAwOwoKICAvLyBnZXQgcmVxdWlyZWQgbnVtYmVyIG9mIE1SIHRlc3RzCiAgdmFyIG1yVGVzdHMgPSBnZXRNaWxsZXJSYWJpblRlc3RzKG51bS5iaXRMZW5ndGgoKSk7CiAgaWYoJ21pbGxlclJhYmluVGVzdHMnIGluIG9wdGlvbnMpIHsKICAgIG1yVGVzdHMgPSBvcHRpb25zLm1pbGxlclJhYmluVGVzdHM7CiAgfQoKICAvLyBmaW5kIHByaW1lIG5lYXJlc3QgdG8gJ251bScgZm9yIG1heEJsb2NrVGltZSBtcwogIC8vIDEwIG1zIGdpdmVzIDVtcyBvZiBsZWV3YXkgZm9yIG90aGVyIGNhbGN1bGF0aW9ucyBiZWZvcmUgZHJvcHBpbmcKICAvLyBiZWxvdyA2MGZwcyAoMTAwMC82MCA9PSAxNi42NyksIGJ1dCBpbiByZWFsaXR5LCB0aGUgbnVtYmVyIHdpbGwKICAvLyBsaWtlbHkgYmUgaGlnaGVyIGR1ZSB0byBhbiAnYXRvbWljJyBiaWcgaW50IG1vZFBvdwogIHZhciBtYXhCbG9ja1RpbWUgPSAxMDsKICBpZignbWF4QmxvY2tUaW1lJyBpbiBvcHRpb25zKSB7CiAgICBtYXhCbG9ja1RpbWUgPSBvcHRpb25zLm1heEJsb2NrVGltZTsKICB9CiAgdmFyIHN0YXJ0ID0gK25ldyBEYXRlKCk7CiAgZG8gewogICAgLy8gb3ZlcmZsb3csIHJlZ2VuZXJhdGUgcmFuZG9tIG51bWJlcgogICAgaWYobnVtLmJpdExlbmd0aCgpID4gYml0cykgewogICAgICBudW0gPSBnZW5lcmF0ZVJhbmRvbShiaXRzLCBybmcpOwogICAgfQogICAgLy8gZG8gcHJpbWFsaXR5IHRlc3QKICAgIGlmKG51bS5pc1Byb2JhYmxlUHJpbWUobXJUZXN0cykpIHsKICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG51bSk7CiAgICB9CiAgICAvLyBnZXQgbmV4dCBwb3RlbnRpYWwgcHJpbWUKICAgIG51bS5kQWRkT2Zmc2V0KEdDRF8zMF9ERUxUQVtkZWx0YUlkeCsrICUgOF0sIDApOwogIH0gd2hpbGUobWF4QmxvY2tUaW1lIDwgMCB8fCAoK25ldyBEYXRlKCkgLSBzdGFydCA8IG1heEJsb2NrVGltZSkpOwoKICAvLyBrZWVwIHRyeWluZyAoc2V0SW1tZWRpYXRlIHdvdWxkIGJlIGJldHRlciBoZXJlKQogIGZvcmdlLnV0aWwuc2V0SW1tZWRpYXRlKGZ1bmN0aW9uKCkgewogICAgcHJpbWVpbmNGaW5kUHJpbWVXaXRob3V0V29ya2VycyhiaXRzLCBybmcsIG9wdGlvbnMsIGNhbGxiYWNrKTsKICB9KTsKfQoKZnVuY3Rpb24gcHJpbWVpbmNGaW5kUHJpbWVXaXRoV29ya2VycyhiaXRzLCBybmcsIG9wdGlvbnMsIGNhbGxiYWNrKSB7CiAgLy8gd2ViIHdvcmtlcnMgdW5hdmFpbGFibGUKICBpZih0eXBlb2YgV29ya2VyID09PSAndW5kZWZpbmVkJykgewogICAgcmV0dXJuIHByaW1laW5jRmluZFByaW1lV2l0aG91dFdvcmtlcnMoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjayk7CiAgfQoKICAvLyBpbml0aWFsaXplIHJhbmRvbSBudW1iZXIKICB2YXIgbnVtID0gZ2VuZXJhdGVSYW5kb20oYml0cywgcm5nKTsKCiAgLy8gdXNlIHdlYiB3b3JrZXJzIHRvIGdlbmVyYXRlIGtleXMKICB2YXIgbnVtV29ya2VycyA9IG9wdGlvbnMud29ya2VyczsKICB2YXIgd29ya0xvYWQgPSBvcHRpb25zLndvcmtMb2FkIHx8IDEwMDsKICB2YXIgcmFuZ2UgPSB3b3JrTG9hZCAqIDMwIC8gODsKICB2YXIgd29ya2VyU2NyaXB0ID0gb3B0aW9ucy53b3JrZXJTY3JpcHQgfHwgJ2ZvcmdlL3ByaW1lLndvcmtlci5qcyc7CiAgaWYobnVtV29ya2VycyA9PT0gLTEpIHsKICAgIHJldHVybiBmb3JnZS51dGlsLmVzdGltYXRlQ29yZXMoZnVuY3Rpb24oZXJyLCBjb3JlcykgewogICAgICBpZihlcnIpIHsKICAgICAgICAvLyBkZWZhdWx0IHRvIDIKICAgICAgICBjb3JlcyA9IDI7CiAgICAgIH0KICAgICAgbnVtV29ya2VycyA9IGNvcmVzIC0gMTsKICAgICAgZ2VuZXJhdGUoKTsKICAgIH0pOwogIH0KICBnZW5lcmF0ZSgpOwoKICBmdW5jdGlvbiBnZW5lcmF0ZSgpIHsKICAgIC8vIHJlcXVpcmUgYXQgbGVhc3QgMSB3b3JrZXIKICAgIG51bVdvcmtlcnMgPSBNYXRoLm1heCgxLCBudW1Xb3JrZXJzKTsKCiAgICAvLyBUT0RPOiBjb25zaWRlciBvcHRpbWl6aW5nIGJ5IHN0YXJ0aW5nIHdvcmtlcnMgb3V0c2lkZSBnZXRQcmltZSgpIC4uLgogICAgLy8gbm90ZSB0aGF0IGluIG9yZGVyIHRvIGNsZWFuIHVwIHRoZXkgd2lsbCBoYXZlIHRvIGJlIG1hZGUgaW50ZXJuYWxseQogICAgLy8gYXN5bmNocm9ub3VzIHdoaWNoIG1heSBhY3R1YWxseSBiZSBzbG93ZXIKCiAgICAvLyBzdGFydCB3b3JrZXJzIGltbWVkaWF0ZWx5CiAgICB2YXIgd29ya2VycyA9IFtdOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG51bVdvcmtlcnM7ICsraSkgewogICAgICAvLyBGSVhNRTogZml4IHBhdGggb3IgdXNlIGJsb2IgVVJMcwogICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtlcih3b3JrZXJTY3JpcHQpOwogICAgfQogICAgdmFyIHJ1bm5pbmcgPSBudW1Xb3JrZXJzOwoKICAgIC8vIGxpc3RlbiBmb3IgcmVxdWVzdHMgZnJvbSB3b3JrZXJzIGFuZCBhc3NpZ24gcmFuZ2VzIHRvIGZpbmQgcHJpbWUKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBudW1Xb3JrZXJzOyArK2kpIHsKICAgICAgd29ya2Vyc1tpXS5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgd29ya2VyTWVzc2FnZSk7CiAgICB9CgogICAgLyogTm90ZTogVGhlIGRpc3RyaWJ1dGlvbiBvZiByYW5kb20gbnVtYmVycyBpcyB1bmtub3duLiBUaGVyZWZvcmUsIGVhY2gKICAgIHdlYiB3b3JrZXIgaXMgY29udGludW91c2x5IGFsbG9jYXRlZCBhIHJhbmdlIG9mIG51bWJlcnMgdG8gY2hlY2sgZm9yIGEKICAgIHJhbmRvbSBudW1iZXIgdW50aWwgb25lIGlzIGZvdW5kLgoKICAgIEV2ZXJ5IDMwIG51bWJlcnMgd2lsbCBiZSBjaGVja2VkIGp1c3QgOCB0aW1lcywgYmVjYXVzZSBwcmltZSBudW1iZXJzCiAgICBoYXZlIHRoZSBmb3JtOgoKICAgIDMwaytpLCBmb3IgaSA8IDMwIGFuZCBnY2QoMzAsIGkpPTEgKHRoZXJlIGFyZSA4IHZhbHVlcyBvZiBpIGZvciB0aGlzKQoKICAgIFRoZXJlZm9yZSwgaWYgd2Ugd2FudCBhIHdlYiB3b3JrZXIgdG8gcnVuIE4gY2hlY2tzIGJlZm9yZSBhc2tpbmcgZm9yCiAgICBhIG5ldyByYW5nZSBvZiBudW1iZXJzLCBlYWNoIHJhbmdlIG11c3QgY29udGFpbiBOKjMwLzggbnVtYmVycy4KCiAgICBGb3IgMTAwIGNoZWNrcyAod29ya0xvYWQpLCB0aGlzIGlzIGEgcmFuZ2Ugb2YgMzc1LiAqLwoKICAgIHZhciBmb3VuZCA9IGZhbHNlOwogICAgZnVuY3Rpb24gd29ya2VyTWVzc2FnZShlKSB7CiAgICAgIC8vIGlnbm9yZSBtZXNzYWdlLCBwcmltZSBhbHJlYWR5IGZvdW5kCiAgICAgIGlmKGZvdW5kKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICAtLXJ1bm5pbmc7CiAgICAgIHZhciBkYXRhID0gZS5kYXRhOwogICAgICBpZihkYXRhLmZvdW5kKSB7CiAgICAgICAgLy8gdGVybWluYXRlIGFsbCB3b3JrZXJzCiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHdvcmtlcnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHdvcmtlcnNbaV0udGVybWluYXRlKCk7CiAgICAgICAgfQogICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgbmV3IEJpZ0ludGVnZXIoZGF0YS5wcmltZSwgMTYpKTsKICAgICAgfQoKICAgICAgLy8gb3ZlcmZsb3csIHJlZ2VuZXJhdGUgcmFuZG9tIG51bWJlcgogICAgICBpZihudW0uYml0TGVuZ3RoKCkgPiBiaXRzKSB7CiAgICAgICAgbnVtID0gZ2VuZXJhdGVSYW5kb20oYml0cywgcm5nKTsKICAgICAgfQoKICAgICAgLy8gYXNzaWduIG5ldyByYW5nZSB0byBjaGVjawogICAgICB2YXIgaGV4ID0gbnVtLnRvU3RyaW5nKDE2KTsKCiAgICAgIC8vIHN0YXJ0IHByaW1lIHNlYXJjaAogICAgICBlLnRhcmdldC5wb3N0TWVzc2FnZSh7CiAgICAgICAgaGV4OiBoZXgsCiAgICAgICAgd29ya0xvYWQ6IHdvcmtMb2FkCiAgICAgIH0pOwoKICAgICAgbnVtLmRBZGRPZmZzZXQocmFuZ2UsIDApOwogICAgfQogIH0KfQoKLyoqCiAqIEdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgdXNpbmcgdGhlIGdpdmVuIG51bWJlciBvZiBiaXRzIGFuZCBSTkcuCiAqCiAqIEBwYXJhbSBiaXRzIHRoZSBudW1iZXIgb2YgYml0cyBmb3IgdGhlIG51bWJlci4KICogQHBhcmFtIHJuZyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSByYW5kb20gbnVtYmVyLgogKi8KZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb20oYml0cywgcm5nKSB7CiAgdmFyIG51bSA9IG5ldyBCaWdJbnRlZ2VyKGJpdHMsIHJuZyk7CiAgLy8gZm9yY2UgTVNCIHNldAogIHZhciBiaXRzMSA9IGJpdHMgLSAxOwogIGlmKCFudW0udGVzdEJpdChiaXRzMSkpIHsKICAgIG51bS5iaXR3aXNlVG8oQmlnSW50ZWdlci5PTkUuc2hpZnRMZWZ0KGJpdHMxKSwgb3Bfb3IsIG51bSk7CiAgfQogIC8vIGFsaWduIG51bWJlciBvbiAzMGsrMSBib3VuZGFyeQogIG51bS5kQWRkT2Zmc2V0KDMxIC0gbnVtLm1vZChUSElSVFkpLmJ5dGVWYWx1ZSgpLCAwKTsKICByZXR1cm4gbnVtOwp9CgovKioKICogUmV0dXJucyB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIE1pbGxlci1SYWJpbiB0ZXN0cyB0byBnZW5lcmF0ZSBhCiAqIHByaW1lIHdpdGggYW4gZXJyb3IgcHJvYmFiaWxpdHkgb2YgKDEvMileODAuCiAqCiAqIFNlZSBIYW5kYm9vayBvZiBBcHBsaWVkIENyeXB0b2dyYXBoeSBDaGFwdGVyIDQsIFRhYmxlIDQuNC4KICoKICogQHBhcmFtIGJpdHMgdGhlIGJpdCBzaXplLgogKgogKiBAcmV0dXJuIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgaXRlcmF0aW9ucy4KICovCmZ1bmN0aW9uIGdldE1pbGxlclJhYmluVGVzdHMoYml0cykgewogIGlmKGJpdHMgPD0gMTAwKSByZXR1cm4gMjc7CiAgaWYoYml0cyA8PSAxNTApIHJldHVybiAxODsKICBpZihiaXRzIDw9IDIwMCkgcmV0dXJuIDE1OwogIGlmKGJpdHMgPD0gMjUwKSByZXR1cm4gMTI7CiAgaWYoYml0cyA8PSAzMDApIHJldHVybiA5OwogIGlmKGJpdHMgPD0gMzUwKSByZXR1cm4gODsKICBpZihiaXRzIDw9IDQwMCkgcmV0dXJuIDc7CiAgaWYoYml0cyA8PSA1MDApIHJldHVybiA2OwogIGlmKGJpdHMgPD0gNjAwKSByZXR1cm4gNTsKICBpZihiaXRzIDw9IDgwMCkgcmV0dXJuIDQ7CiAgaWYoYml0cyA8PSAxMjUwKSByZXR1cm4gMzsKICByZXR1cm4gMjsKfQoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncHJpbWUnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcHJpbWUnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJywgJy4vanNibicsICcuL3JhbmRvbSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKCn0pKCk7CgovKioKICogSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBiYXNpYyBSU0EgYWxnb3JpdGhtcy4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICoKICogVGhlIG9ubHkgYWxnb3JpdGhtIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIFBLSSBpcyBSU0EuCiAqCiAqIEFuIFJTQSBrZXkgaXMgb2Z0ZW4gc3RvcmVkIGluIEFTTi4xIERFUiBmb3JtYXQuIFRoZSBTdWJqZWN0UHVibGljS2V5SW5mbwogKiBBU04uMSBzdHJ1Y3R1cmUgaXMgY29tcG9zZWQgb2YgYW4gYWxnb3JpdGhtIG9mIHR5cGUgQWxnb3JpdGhtSWRlbnRpZmllcgogKiBhbmQgYSBzdWJqZWN0UHVibGljS2V5IG9mIHR5cGUgYml0IHN0cmluZy4KICoKICogVGhlIEFsZ29yaXRobUlkZW50aWZpZXIgY29udGFpbnMgYW4gT2JqZWN0IElkZW50aWZpZXIgKE9JRCkgYW5kIHBhcmFtZXRlcnMKICogZm9yIHRoZSBhbGdvcml0aG0sIGlmIGFueS4gSW4gdGhlIGNhc2Ugb2YgUlNBLCB0aGVyZSBhcmVuJ3QgYW55LgogKgogKiBTdWJqZWN0UHVibGljS2V5SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIGFsZ29yaXRobSBBbGdvcml0aG1JZGVudGlmaWVyLAogKiAgIHN1YmplY3RQdWJsaWNLZXkgQklUIFNUUklORwogKiB9CiAqCiAqIEFsZ29yaXRobUlkZW50aWZlciA6Oj0gU0VRVUVOQ0UgewogKiAgIGFsZ29yaXRobSBPQkpFQ1QgSURFTlRJRklFUiwKICogICBwYXJhbWV0ZXJzIEFOWSBERUZJTkVEIEJZIGFsZ29yaXRobSBPUFRJT05BTAogKiB9CiAqCiAqIEZvciBhbiBSU0EgcHVibGljIGtleSwgdGhlIHN1YmplY3RQdWJsaWNLZXkgaXM6CiAqCiAqIFJTQVB1YmxpY0tleSA6Oj0gU0VRVUVOQ0UgewogKiAgIG1vZHVsdXMgICAgICAgICAgICBJTlRFR0VSLCAgICAtLSBuCiAqICAgcHVibGljRXhwb25lbnQgICAgIElOVEVHRVIgICAgIC0tIGUKICogfQogKgogKiBQcml2YXRlS2V5SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBwcml2YXRlS2V5QWxnb3JpdGhtICAgICAgIFByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyLAogKiAgIHByaXZhdGVLZXkgICAgICAgICAgICAgICAgUHJpdmF0ZUtleSwKICogICBhdHRyaWJ1dGVzICAgICAgICAgICBbMF0gIElNUExJQ0lUIEF0dHJpYnV0ZXMgT1BUSU9OQUwKICogfQogKgogKiBWZXJzaW9uIDo6PSBJTlRFR0VSCiAqIFByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyIDo6PSBBbGdvcml0aG1JZGVudGlmaWVyCiAqIFByaXZhdGVLZXkgOjo9IE9DVEVUIFNUUklORwogKiBBdHRyaWJ1dGVzIDo6PSBTRVQgT0YgQXR0cmlidXRlCiAqCiAqIEFuIFJTQSBwcml2YXRlIGtleSBhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKICoKICogUlNBUHJpdmF0ZUtleSA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gVmVyc2lvbiwKICogICBtb2R1bHVzIElOVEVHRVIsIC0tIG4KICogICBwdWJsaWNFeHBvbmVudCBJTlRFR0VSLCAtLSBlCiAqICAgcHJpdmF0ZUV4cG9uZW50IElOVEVHRVIsIC0tIGQKICogICBwcmltZTEgSU5URUdFUiwgLS0gcAogKiAgIHByaW1lMiBJTlRFR0VSLCAtLSBxCiAqICAgZXhwb25lbnQxIElOVEVHRVIsIC0tIGQgbW9kIChwLTEpCiAqICAgZXhwb25lbnQyIElOVEVHRVIsIC0tIGQgbW9kIChxLTEpCiAqICAgY29lZmZpY2llbnQgSU5URUdFUiAtLSAoaW52ZXJzZSBvZiBxKSBtb2QgcAogKiB9CiAqCiAqIFZlcnNpb24gOjo9IElOVEVHRVIKICoKICogVGhlIE9JRCBmb3IgdGhlIFJTQSBrZXkgYWxnb3JpdGhtIGlzOiAxLjIuODQwLjExMzU0OS4xLjEuMQogKi8KKGZ1bmN0aW9uKCkgewpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KCmlmKHR5cGVvZiBCaWdJbnRlZ2VyID09PSAndW5kZWZpbmVkJykgewogIHZhciBCaWdJbnRlZ2VyID0gZm9yZ2UuanNibi5CaWdJbnRlZ2VyOwp9CgovLyBzaG9ydGN1dCBmb3IgYXNuLjEgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKCi8qCiAqIFJTQSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCBzZWUgUkZDIDIzMTMuCiAqLwpmb3JnZS5wa2kgPSBmb3JnZS5wa2kgfHwge307CmZvcmdlLnBraS5yc2EgPSBmb3JnZS5yc2EgPSBmb3JnZS5yc2EgfHwge307CnZhciBwa2kgPSBmb3JnZS5wa2k7CgovLyBmb3IgZmluZGluZyBwcmltZXMsIHdoaWNoIGFyZSAzMGsraSBmb3IgaSA9IDEsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjkKdmFyIEdDRF8zMF9ERUxUQSA9IFs2LCA0LCAyLCA0LCAyLCA0LCA2LCAyXTsKCi8vIHZhbGlkYXRvciBmb3IgYSBQcml2YXRlS2V5SW5mbyBzdHJ1Y3R1cmUKdmFyIHByaXZhdGVLZXlWYWxpZGF0b3IgPSB7CiAgLy8gUHJpdmF0ZUtleUluZm8KICBuYW1lOiAnUHJpdmF0ZUtleUluZm8nLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICAvLyBWZXJzaW9uIChJTlRFR0VSKQogICAgbmFtZTogJ1ByaXZhdGVLZXlJbmZvLnZlcnNpb24nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleVZlcnNpb24nCiAgfSwgewogICAgLy8gcHJpdmF0ZUtleUFsZ29yaXRobQogICAgbmFtZTogJ1ByaXZhdGVLZXlJbmZvLnByaXZhdGVLZXlBbGdvcml0aG0nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICB2YWx1ZTogW3sKICAgICAgbmFtZTogJ0FsZ29yaXRobUlkZW50aWZpZXIuYWxnb3JpdGhtJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5T2lkJwogICAgfV0KICB9LCB7CiAgICAvLyBQcml2YXRlS2V5CiAgICBuYW1lOiAnUHJpdmF0ZUtleUluZm8nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXknCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYW4gUlNBIHByaXZhdGUga2V5CnZhciByc2FQcml2YXRlS2V5VmFsaWRhdG9yID0gewogIC8vIFJTQVByaXZhdGVLZXkKICBuYW1lOiAnUlNBUHJpdmF0ZUtleScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIC8vIFZlcnNpb24gKElOVEVHRVIpCiAgICBuYW1lOiAnUlNBUHJpdmF0ZUtleS52ZXJzaW9uJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXlWZXJzaW9uJwogIH0sIHsKICAgIC8vIG1vZHVsdXMgKG4pCiAgICBuYW1lOiAnUlNBUHJpdmF0ZUtleS5tb2R1bHVzJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXlNb2R1bHVzJwogIH0sIHsKICAgIC8vIHB1YmxpY0V4cG9uZW50IChlKQogICAgbmFtZTogJ1JTQVByaXZhdGVLZXkucHVibGljRXhwb25lbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleVB1YmxpY0V4cG9uZW50JwogIH0sIHsKICAgIC8vIHByaXZhdGVFeHBvbmVudCAoZCkKICAgIG5hbWU6ICdSU0FQcml2YXRlS2V5LnByaXZhdGVFeHBvbmVudCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5UHJpdmF0ZUV4cG9uZW50JwogIH0sIHsKICAgIC8vIHByaW1lMSAocCkKICAgIG5hbWU6ICdSU0FQcml2YXRlS2V5LnByaW1lMScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5UHJpbWUxJwogIH0sIHsKICAgIC8vIHByaW1lMiAocSkKICAgIG5hbWU6ICdSU0FQcml2YXRlS2V5LnByaW1lMicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5UHJpbWUyJwogIH0sIHsKICAgIC8vIGV4cG9uZW50MSAoZCBtb2QgKHAtMSkpCiAgICBuYW1lOiAnUlNBUHJpdmF0ZUtleS5leHBvbmVudDEnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleUV4cG9uZW50MScKICB9LCB7CiAgICAvLyBleHBvbmVudDIgKGQgbW9kIChxLTEpKQogICAgbmFtZTogJ1JTQVByaXZhdGVLZXkuZXhwb25lbnQyJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXlFeHBvbmVudDInCiAgfSwgewogICAgLy8gY29lZmZpY2llbnQgKChpbnZlcnNlIG9mIHEpIG1vZCBwKQogICAgbmFtZTogJ1JTQVByaXZhdGVLZXkuY29lZmZpY2llbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleUNvZWZmaWNpZW50JwogIH1dCn07CgovLyB2YWxpZGF0b3IgZm9yIGFuIFJTQSBwdWJsaWMga2V5CnZhciByc2FQdWJsaWNLZXlWYWxpZGF0b3IgPSB7CiAgLy8gUlNBUHVibGljS2V5CiAgbmFtZTogJ1JTQVB1YmxpY0tleScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIC8vIG1vZHVsdXMgKG4pCiAgICBuYW1lOiAnUlNBUHVibGljS2V5Lm1vZHVsdXMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHVibGljS2V5TW9kdWx1cycKICB9LCB7CiAgICAvLyBwdWJsaWNFeHBvbmVudCAoZSkKICAgIG5hbWU6ICdSU0FQdWJsaWNLZXkuZXhwb25lbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHVibGljS2V5RXhwb25lbnQnCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYW4gU3ViamVjdFB1YmxpY0tleUluZm8gc3RydWN0dXJlCi8vIE5vdGU6IEN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggYW4gUlNBIHB1YmxpYyBrZXkKdmFyIHB1YmxpY0tleVZhbGlkYXRvciA9IGZvcmdlLnBraS5yc2EucHVibGljS2V5VmFsaWRhdG9yID0gewogIG5hbWU6ICdTdWJqZWN0UHVibGljS2V5SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICBjYXB0dXJlQXNuMTogJ3N1YmplY3RQdWJsaWNLZXlJbmZvJywKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdTdWJqZWN0UHVibGljS2V5SW5mby5BbGdvcml0aG1JZGVudGlmaWVyJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdBbGdvcml0aG1JZGVudGlmaWVyLmFsZ29yaXRobScsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlOiAncHVibGljS2V5T2lkJwogICAgfV0KICB9LCB7CiAgICAvLyBzdWJqZWN0UHVibGljS2V5CiAgICBuYW1lOiAnU3ViamVjdFB1YmxpY0tleUluZm8uc3ViamVjdFB1YmxpY0tleScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuQklUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgdmFsdWU6IFt7CiAgICAgIC8vIFJTQVB1YmxpY0tleQogICAgICBuYW1lOiAnU3ViamVjdFB1YmxpY0tleUluZm8uc3ViamVjdFB1YmxpY0tleS5SU0FQdWJsaWNLZXknLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ3JzYVB1YmxpY0tleScKICAgIH1dCiAgfV0KfTsKCi8qKgogKiBXcmFwIGRpZ2VzdCBpbiBEaWdlc3RJbmZvIG9iamVjdC4KICoKICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIEVNU0EtUEtDUzEtdjFfNS1FTkNPREUgYXMgcGVyIFJGQyAzNDQ3LgogKgogKiBEaWdlc3RJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgZGlnZXN0QWxnb3JpdGhtIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgZGlnZXN0IERpZ2VzdAogKiB9CiAqCiAqIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICogRGlnZXN0IDo6PSBPQ1RFVCBTVFJJTkcKICoKICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3Qgd2l0aCB0aGUgaGFzaCB0byBzaWduLgogKgogKiBAcmV0dXJuIHRoZSBlbmNvZGVkIG1lc3NhZ2UgKHJlYWR5IGZvciBSU0EgZW5jcnl0aW9uKQogKi8KdmFyIGVtc2FQa2NzMXYxNWVuY29kZSA9IGZ1bmN0aW9uKG1kKSB7CiAgLy8gZ2V0IHRoZSBvaWQgZm9yIHRoZSBhbGdvcml0aG0KICB2YXIgb2lkOwogIGlmKG1kLmFsZ29yaXRobSBpbiBwa2kub2lkcykgewogICAgb2lkID0gcGtpLm9pZHNbbWQuYWxnb3JpdGhtXTsKICB9IGVsc2UgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobS4nKTsKICAgIGVycm9yLmFsZ29yaXRobSA9IG1kLmFsZ29yaXRobTsKICAgIHRocm93IGVycm9yOwogIH0KICB2YXIgb2lkQnl0ZXMgPSBhc24xLm9pZFRvRGVyKG9pZCkuZ2V0Qnl0ZXMoKTsKCiAgLy8gY3JlYXRlIHRoZSBkaWdlc3QgaW5mbwogIHZhciBkaWdlc3RJbmZvID0gYXNuMS5jcmVhdGUoCiAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CiAgdmFyIGRpZ2VzdEFsZ29yaXRobSA9IGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgW10pOwogIGRpZ2VzdEFsZ29yaXRobS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLCBvaWRCeXRlcykpOwogIGRpZ2VzdEFsZ29yaXRobS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5OVUxMLCBmYWxzZSwgJycpKTsKICB2YXIgZGlnZXN0ID0gYXNuMS5jcmVhdGUoCiAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgZmFsc2UsIG1kLmRpZ2VzdCgpLmdldEJ5dGVzKCkpOwogIGRpZ2VzdEluZm8udmFsdWUucHVzaChkaWdlc3RBbGdvcml0aG0pOwogIGRpZ2VzdEluZm8udmFsdWUucHVzaChkaWdlc3QpOwoKICAvLyBlbmNvZGUgZGlnZXN0IGluZm8KICByZXR1cm4gYXNuMS50b0RlcihkaWdlc3RJbmZvKS5nZXRCeXRlcygpOwp9OwoKLyoqCiAqIFBlcmZvcm1zIHheYyBtb2QgbiAoUlNBIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbiBvcGVyYXRpb24pLgogKgogKiBAcGFyYW0geCB0aGUgbnVtYmVyIHRvIHJhaXNlIGFuZCBtb2QuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB1c2UuCiAqIEBwYXJhbSBwdWIgdHJ1ZSBpZiB0aGUga2V5IGlzIHB1YmxpYywgZmFsc2UgaWYgcHJpdmF0ZS4KICoKICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHheYyBtb2Qgbi4KICovCnZhciBfbW9kUG93ID0gZnVuY3Rpb24oeCwga2V5LCBwdWIpIHsKICBpZihwdWIpIHsKICAgIHJldHVybiB4Lm1vZFBvdyhrZXkuZSwga2V5Lm4pOwogIH0KCiAgaWYoIWtleS5wIHx8ICFrZXkucSkgewogICAgLy8gYWxsb3cgY2FsY3VsYXRpb24gd2l0aG91dCBDUlQgcGFyYW1zIChzbG93KQogICAgcmV0dXJuIHgubW9kUG93KGtleS5kLCBrZXkubik7CiAgfQoKICAvLyBwcmUtY29tcHV0ZSBkUCwgZFEsIGFuZCBxSW52IGlmIG5lY2Vzc2FyeQogIGlmKCFrZXkuZFApIHsKICAgIGtleS5kUCA9IGtleS5kLm1vZChrZXkucC5zdWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSkpOwogIH0KICBpZigha2V5LmRRKSB7CiAgICBrZXkuZFEgPSBrZXkuZC5tb2Qoa2V5LnEuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpKTsKICB9CiAgaWYoIWtleS5xSW52KSB7CiAgICBrZXkucUludiA9IGtleS5xLm1vZEludmVyc2Uoa2V5LnApOwogIH0KCiAgLyogQ2hpbmVzZSByZW1haW5kZXIgdGhlb3JlbSAoQ1JUKSBzdGF0ZXM6CgogICAgU3VwcG9zZSBuMSwgbjIsIC4uLiwgbmsgYXJlIHBvc2l0aXZlIGludGVnZXJzIHdoaWNoIGFyZSBwYWlyd2lzZQogICAgY29wcmltZSAobjEgYW5kIG4yIGhhdmUgbm8gY29tbW9uIGZhY3RvcnMgb3RoZXIgdGhhbiAxKS4gRm9yIGFueQogICAgaW50ZWdlcnMgeDEsIHgyLCAuLi4sIHhrIHRoZXJlIGV4aXN0cyBhbiBpbnRlZ2VyIHggc29sdmluZyB0aGUKICAgIHN5c3RlbSBvZiBzaW11bHRhbmVvdXMgY29uZ3J1ZW5jZXMgKHdoZXJlIH49IG1lYW5zIG1vZHVsYXJseQogICAgY29uZ3J1ZW50IHNvIGEgfj0gYiBtb2QgbiBtZWFucyBhIG1vZCBuID0gYiBtb2Qgbik6CgogICAgeCB+PSB4MSBtb2QgbjEKICAgIHggfj0geDIgbW9kIG4yCiAgICAuLi4KICAgIHggfj0geGsgbW9kIG5rCgogICAgVGhpcyBzeXN0ZW0gb2YgY29uZ3J1ZW5jZXMgaGFzIGEgc2luZ2xlIHNpbXVsdGFuZW91cyBzb2x1dGlvbiB4CiAgICBiZXR3ZWVuIDAgYW5kIG4gLSAxLiBGdXJ0aGVybW9yZSwgZWFjaCB4ayBzb2x1dGlvbiBhbmQgeCBpdHNlbGYKICAgIGlzIGNvbmdydWVudCBtb2R1bG8gdGhlIHByb2R1Y3QgbiA9IG4xKm4yKi4uLipuay4KICAgIFNvIHgxIG1vZCBuID0geDIgbW9kIG4gPSB4ayBtb2QgbiA9IHggbW9kIG4uCgogICAgVGhlIHNpbmdsZSBzaW11bHRhbmVvdXMgc29sdXRpb24geCBjYW4gYmUgc29sdmVkIHdpdGggdGhlIGZvbGxvd2luZwogICAgZXF1YXRpb246CgogICAgeCA9IHN1bSh4aSpyaSpzaSkgbW9kIG4gd2hlcmUgcmkgPSBuL25pIGFuZCBzaSA9IHJpXi0xIG1vZCBuaS4KCiAgICBXaGVyZSB4IGlzIGxlc3MgdGhhbiBuLCB4aSA9IHggbW9kIG5pLgoKICAgIEZvciBSU0Egd2UgYXJlIG9ubHkgY29uY2VybmVkIHdpdGggayA9IDIuIFRoZSBtb2R1bHVzIG4gPSBwcSwgd2hlcmUKICAgIHAgYW5kIHEgYXJlIGNvcHJpbWUuIFRoZSBSU0EgZGVjcnlwdGlvbiBhbGdvcml0aG0gaXM6CgogICAgeSA9IHheZCBtb2QgbgoKICAgIEdpdmVuIHRoZSBhYm92ZToKCiAgICB4MSA9IHheZCBtb2QgcAogICAgcjEgPSBuL3AgPSBxCiAgICBzMSA9IHFeLTEgbW9kIHAKICAgIHgyID0geF5kIG1vZCBxCiAgICByMiA9IG4vcSA9IHAKICAgIHMyID0gcF4tMSBtb2QgcQoKICAgIFNvIHkgPSAoeDFyMXMxICsgeDJyMnMyKSBtb2QgbgogICAgICAgICA9ICgoeF5kIG1vZCBwKXEocV4tMSBtb2QgcCkgKyAoeF5kIG1vZCBxKXAocF4tMSBtb2QgcSkpIG1vZCBuCgogICAgQWNjb3JkaW5nIHRvIEZlcm1hdCdzIExpdHRsZSBUaGVvcmVtLCBpZiB0aGUgbW9kdWx1cyBQIGlzIHByaW1lLAogICAgZm9yIGFueSBpbnRlZ2VyIEEgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgUCwgQV4oUC0xKSB+PSAxIG1vZCBQLgogICAgU2luY2UgQSBpcyBub3QgZGl2aXNpYmxlIGJ5IFAgaXQgZm9sbG93cyB0aGF0IGlmOgogICAgTiB+PSBNIG1vZCAoUCAtIDEpLCB0aGVuIEFeTiBtb2QgUCA9IEFeTSBtb2QgUC4gVGhlcmVmb3JlOgoKICAgIEFeTiBtb2QgUCA9IEFeKE0gbW9kIChQIC0gMSkpIG1vZCBQLiAoVGhlIGxhdHRlciB0YWtlcyBsZXNzIGVmZm9ydAogICAgdG8gY2FsY3VsYXRlKS4gSW4gb3JkZXIgdG8gY2FsY3VsYXRlIHheZCBtb2QgcCBtb3JlIHF1aWNrbHkgdGhlCiAgICBleHBvbmVudCBkIG1vZCAocCAtIDEpIGlzIHN0b3JlZCBpbiB0aGUgUlNBIHByaXZhdGUga2V5ICh0aGUgc2FtZQogICAgaXMgZG9uZSBmb3IgeF5kIG1vZCBxKS4gVGhlc2UgdmFsdWVzIGFyZSByZWZlcnJlZCB0byBhcyBkUCBhbmQgZFEKICAgIHJlc3BlY3RpdmVseS4gVGhlcmVmb3JlIHdlIG5vdyBoYXZlOgoKICAgIHkgPSAoKHheZFAgbW9kIHApcShxXi0xIG1vZCBwKSArICh4XmRRIG1vZCBxKXAocF4tMSBtb2QgcSkpIG1vZCBuCgogICAgU2luY2Ugd2UnbGwgYmUgcmVkdWNpbmcgeF5kUCBieSBtb2R1bG8gcCAoc2FtZSBmb3IgcSkgd2UgY2FuIGFsc28KICAgIHJlZHVjZSB4IGJ5IHAgKGFuZCBxIHJlc3BlY3RpdmVseSkgYmVmb3JlIGhhbmQuIFRoZXJlZm9yZSwgbGV0CgogICAgeHAgPSAoKHggbW9kIHApXmRQIG1vZCBwKSwgYW5kCiAgICB4cSA9ICgoeCBtb2QgcSleZFEgbW9kIHEpLCB5aWVsZGluZzoKCiAgICB5ID0gKHhwKnEqKHFeLTEgbW9kIHApICsgeHEqcCoocF4tMSBtb2QgcSkpIG1vZCBuCgogICAgVGhpcyBjYW4gYmUgZnVydGhlciByZWR1Y2VkIHRvIGEgc2ltcGxlIGFsZ29yaXRobSB0aGF0IG9ubHkKICAgIHJlcXVpcmVzIDEgaW52ZXJzZSAodGhlIHEgaW52ZXJzZSBpcyB1c2VkKSB0byBiZSB1c2VkIGFuZCBzdG9yZWQuCiAgICBUaGUgYWxnb3JpdGhtIGlzIGNhbGxlZCBHYXJuZXIncyBhbGdvcml0aG0uIElmIHFJbnYgaXMgdGhlCiAgICBpbnZlcnNlIG9mIHEsIHdlIHNpbXBseSBjYWxjdWxhdGU6CgogICAgeSA9IChxSW52Kih4cCAtIHhxKSBtb2QgcCkgKiBxICsgeHEKCiAgICBIb3dldmVyLCB0aGVyZSBhcmUgdHdvIGZ1cnRoZXIgY29tcGxpY2F0aW9ucy4gRmlyc3QsIHdlIG5lZWQgdG8KICAgIGVuc3VyZSB0aGF0IHhwID4geHEgdG8gcHJldmVudCBzaWduZWQgQmlnSW50ZWdlcnMgZnJvbSBiZWluZyB1c2VkCiAgICBzbyB3ZSBhZGQgcCB1bnRpbCB0aGlzIGlzIHRydWUgKHNpbmNlIHdlIHdpbGwgYmUgbW9kJ2luZyB3aXRoCiAgICBwIGFueXdheSkuIFRoZW4sIHRoZXJlIGlzIGEga25vd24gdGltaW5nIGF0dGFjayBvbiBhbGdvcml0aG1zCiAgICB1c2luZyB0aGUgQ1JULiBUbyBtaXRpZ2F0ZSB0aGlzIHJpc2ssICJjcnlwdG9ncmFwaGljIGJsaW5kaW5nIgogICAgc2hvdWxkIGJlIHVzZWQuIFRoaXMgcmVxdWlyZXMgc2ltcGx5IGdlbmVyYXRpbmcgYSByYW5kb20gbnVtYmVyIHIKICAgIGJldHdlZW4gMCBhbmQgbi0xIGFuZCBpdHMgaW52ZXJzZSBhbmQgbXVsdGlwbHlpbmcgeCBieSByXmUgYmVmb3JlCiAgICBjYWxjdWxhdGluZyB5IGFuZCB0aGVuIG11bHRpcGx5aW5nIHkgYnkgcl4tMSBhZnRlcndhcmRzLiBOb3RlIHRoYXQKICAgIHIgbXVzdCBiZSBjb3ByaW1lIHdpdGggbiAoZ2NkKHIsIG4pID09PSAxKSBpbiBvcmRlciB0byBoYXZlIGFuCiAgICBpbnZlcnNlLgogICovCgogIC8vIGNyeXB0b2dyYXBoaWMgYmxpbmRpbmcKICB2YXIgcjsKICBkbyB7CiAgICByID0gbmV3IEJpZ0ludGVnZXIoCiAgICAgIGZvcmdlLnV0aWwuYnl0ZXNUb0hleChmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMoa2V5Lm4uYml0TGVuZ3RoKCkgLyA4KSksCiAgICAgIDE2KTsKICB9IHdoaWxlKHIuY29tcGFyZVRvKGtleS5uKSA+PSAwIHx8ICFyLmdjZChrZXkubikuZXF1YWxzKEJpZ0ludGVnZXIuT05FKSk7CiAgeCA9IHgubXVsdGlwbHkoci5tb2RQb3coa2V5LmUsIGtleS5uKSkubW9kKGtleS5uKTsKCiAgLy8gY2FsY3VsYXRlIHhwIGFuZCB4cQogIHZhciB4cCA9IHgubW9kKGtleS5wKS5tb2RQb3coa2V5LmRQLCBrZXkucCk7CiAgdmFyIHhxID0geC5tb2Qoa2V5LnEpLm1vZFBvdyhrZXkuZFEsIGtleS5xKTsKCiAgLy8geHAgbXVzdCBiZSBsYXJnZXIgdGhhbiB4cSB0byBhdm9pZCBzaWduZWQgYml0IHVzYWdlCiAgd2hpbGUoeHAuY29tcGFyZVRvKHhxKSA8IDApIHsKICAgIHhwID0geHAuYWRkKGtleS5wKTsKICB9CgogIC8vIGRvIGxhc3Qgc3RlcAogIHZhciB5ID0geHAuc3VidHJhY3QoeHEpCiAgICAubXVsdGlwbHkoa2V5LnFJbnYpLm1vZChrZXkucCkKICAgIC5tdWx0aXBseShrZXkucSkuYWRkKHhxKTsKCiAgLy8gcmVtb3ZlIGVmZmVjdCBvZiByYW5kb20gZm9yIGNyeXB0b2dyYXBoaWMgYmxpbmRpbmcKICB5ID0geS5tdWx0aXBseShyLm1vZEludmVyc2Uoa2V5Lm4pKS5tb2Qoa2V5Lm4pOwoKICByZXR1cm4geTsKfTsKCi8qKgogKiBOT1RFOiBUSElTIE1FVEhPRCBJUyBERVBSRUNBVEVELCB1c2UgJ3NpZ24nIG9uIGEgcHJpdmF0ZSBrZXkgb2JqZWN0IG9yCiAqICdlbmNyeXB0JyBvbiBhIHB1YmxpYyBrZXkgb2JqZWN0IGluc3RlYWQuCiAqCiAqIFBlcmZvcm1zIFJTQSBlbmNyeXB0aW9uLgogKgogKiBUaGUgcGFyYW1ldGVyIGJ0IGNvbnRyb2xzIHdoZXRoZXIgdG8gcHV0IHBhZGRpbmcgYnl0ZXMgYmVmb3JlIHRoZQogKiBtZXNzYWdlIHBhc3NlZCBpbi4gU2V0IGJ0IHRvIGVpdGhlciB0cnVlIG9yIGZhbHNlIHRvIGRpc2FibGUgcGFkZGluZwogKiBjb21wbGV0ZWx5IChpbiBvcmRlciB0byBoYW5kbGUgZS5nLiBFTVNBLVBTUyBlbmNvZGluZyBzZXBlcmF0ZWx5IGJlZm9yZSksCiAqIHNpZ25hbGluZyB3aGV0aGVyIHRoZSBlbmNyeXB0aW9uIG9wZXJhdGlvbiBpcyBhIHB1YmxpYyBrZXkgb3BlcmF0aW9uCiAqIChpLmUuIGVuY3J5cHRpbmcgZGF0YSkgb3Igbm90LCBpLmUuIHByaXZhdGUga2V5IG9wZXJhdGlvbiAoZGF0YSBzaWduaW5nKS4KICoKICogRm9yIFBLQ1MjMSB2MS41IHBhZGRpbmcgcGFzcyBpbiB0aGUgYmxvY2sgdHlwZSB0byB1c2UsIGkuZS4gZWl0aGVyIDB4MDEKICogKGZvciBzaWduaW5nKSBvciAweDAyIChmb3IgZW5jcnlwdGlvbikuIFRoZSBrZXkgb3BlcmF0aW9uIG1vZGUgKHByaXZhdGUKICogb3IgcHVibGljKSBpcyBkZXJpdmVkIGZyb20gdGhpcyBmbGFnIGluIHRoYXQgY2FzZSkuCiAqCiAqIEBwYXJhbSBtIHRoZSBtZXNzYWdlIHRvIGVuY3J5cHQgYXMgYSBieXRlIHN0cmluZy4KICogQHBhcmFtIGtleSB0aGUgUlNBIGtleSB0byB1c2UuCiAqIEBwYXJhbSBidCBmb3IgUEtDUyMxIHYxLjUgcGFkZGluZywgdGhlIGJsb2NrIHR5cGUgdG8gdXNlCiAqICAgKDB4MDEgZm9yIHByaXZhdGUga2V5LCAweDAyIGZvciBwdWJsaWMpLAogKiAgIHRvIGRpc2FibGUgcGFkZGluZzogdHJ1ZSA9IHB1YmxpYyBrZXksIGZhbHNlID0gcHJpdmF0ZSBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIGVuY3J5cHRlZCBieXRlcyBhcyBhIHN0cmluZy4KICovCnBraS5yc2EuZW5jcnlwdCA9IGZ1bmN0aW9uKG0sIGtleSwgYnQpIHsKICB2YXIgcHViID0gYnQ7CiAgdmFyIGViOwoKICAvLyBnZXQgdGhlIGxlbmd0aCBvZiB0aGUgbW9kdWx1cyBpbiBieXRlcwogIHZhciBrID0gTWF0aC5jZWlsKGtleS5uLmJpdExlbmd0aCgpIC8gOCk7CgogIGlmKGJ0ICE9PSBmYWxzZSAmJiBidCAhPT0gdHJ1ZSkgewogICAgLy8gbGVnYWN5LCBkZWZhdWx0IHRvIFBLQ1MjMSB2MS41IHBhZGRpbmcKICAgIHB1YiA9IChidCA9PT0gMHgwMik7CiAgICBlYiA9IF9lbmNvZGVQa2NzMV92MV81KG0sIGtleSwgYnQpOwogIH0gZWxzZSB7CiAgICBlYiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBlYi5wdXRCeXRlcyhtKTsKICB9CgogIC8vIGxvYWQgZW5jcnlwdGlvbiBibG9jayBhcyBiaWcgaW50ZWdlciAneCcKICAvLyBGSVhNRTogaGV4IGNvbnZlcnNpb24gaW5lZmZpY2llbnQsIGdldCBCaWdJbnRlZ2VyIHcvYnl0ZSBzdHJpbmdzCiAgdmFyIHggPSBuZXcgQmlnSW50ZWdlcihlYi50b0hleCgpLCAxNik7CgogIC8vIGRvIFJTQSBlbmNyeXB0aW9uCiAgdmFyIHkgPSBfbW9kUG93KHgsIGtleSwgcHViKTsKCiAgLy8gY29udmVydCB5IGludG8gdGhlIGVuY3J5cHRlZCBkYXRhIGJ5dGUgc3RyaW5nLCBpZiB5IGlzIHNob3J0ZXIgaW4KICAvLyBieXRlcyB0aGFuIGssIHRoZW4gcHJlcGVuZCB6ZXJvIGJ5dGVzIHRvIGZpbGwgdXAgZWQKICAvLyBGSVhNRTogaGV4IGNvbnZlcnNpb24gaW5lZmZpY2llbnQsIGdldCBCaWdJbnRlZ2VyIHcvYnl0ZSBzdHJpbmdzCiAgdmFyIHloZXggPSB5LnRvU3RyaW5nKDE2KTsKICB2YXIgZWQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHZhciB6ZXJvcyA9IGsgLSBNYXRoLmNlaWwoeWhleC5sZW5ndGggLyAyKTsKICB3aGlsZSh6ZXJvcyA+IDApIHsKICAgIGVkLnB1dEJ5dGUoMHgwMCk7CiAgICAtLXplcm9zOwogIH0KICBlZC5wdXRCeXRlcyhmb3JnZS51dGlsLmhleFRvQnl0ZXMoeWhleCkpOwogIHJldHVybiBlZC5nZXRCeXRlcygpOwp9OwoKLyoqCiAqIE5PVEU6IFRISVMgTUVUSE9EIElTIERFUFJFQ0FURUQsIHVzZSAnZGVjcnlwdCcgb24gYSBwcml2YXRlIGtleSBvYmplY3Qgb3IKICogJ3ZlcmlmeScgb24gYSBwdWJsaWMga2V5IG9iamVjdCBpbnN0ZWFkLgogKgogKiBQZXJmb3JtcyBSU0EgZGVjcnlwdGlvbi4KICoKICogVGhlIHBhcmFtZXRlciBtbCBjb250cm9scyB3aGV0aGVyIHRvIGFwcGx5IFBLQ1MjMSB2MS41IHBhZGRpbmcKICogb3Igbm90LiAgU2V0IG1sID0gZmFsc2UgdG8gZGlzYWJsZSBwYWRkaW5nIHJlbW92YWwgY29tcGxldGVseQogKiAoaW4gb3JkZXIgdG8gaGFuZGxlIGUuZy4gRU1TQS1QU1MgbGF0ZXIgb24pIGFuZCBzaW1wbHkgcGFzcyBiYWNrCiAqIHRoZSBSU0EgZW5jcnlwdGlvbiBibG9jay4KICoKICogQHBhcmFtIGVkIHRoZSBlbmNyeXB0ZWQgZGF0YSB0byBkZWNyeXB0IGluIGFzIGEgYnl0ZSBzdHJpbmcuCiAqIEBwYXJhbSBrZXkgdGhlIFJTQSBrZXkgdG8gdXNlLgogKiBAcGFyYW0gcHViIHRydWUgZm9yIGEgcHVibGljIGtleSBvcGVyYXRpb24sIGZhbHNlIGZvciBwcml2YXRlLgogKiBAcGFyYW0gbWwgdGhlIG1lc3NhZ2UgbGVuZ3RoLCBpZiBrbm93biwgZmFsc2UgdG8gZGlzYWJsZSBwYWRkaW5nLgogKgogKiBAcmV0dXJuIHRoZSBkZWNyeXB0ZWQgbWVzc2FnZSBhcyBhIGJ5dGUgc3RyaW5nLgogKi8KcGtpLnJzYS5kZWNyeXB0ID0gZnVuY3Rpb24oZWQsIGtleSwgcHViLCBtbCkgewogIC8vIGdldCB0aGUgbGVuZ3RoIG9mIHRoZSBtb2R1bHVzIGluIGJ5dGVzCiAgdmFyIGsgPSBNYXRoLmNlaWwoa2V5Lm4uYml0TGVuZ3RoKCkgLyA4KTsKCiAgLy8gZXJyb3IgaWYgdGhlIGxlbmd0aCBvZiB0aGUgZW5jcnlwdGVkIGRhdGEgRUQgaXMgbm90IGsKICBpZihlZC5sZW5ndGggIT09IGspIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignRW5jcnlwdGVkIG1lc3NhZ2UgbGVuZ3RoIGlzIGludmFsaWQuJyk7CiAgICBlcnJvci5sZW5ndGggPSBlZC5sZW5ndGg7CiAgICBlcnJvci5leHBlY3RlZCA9IGs7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIGNvbnZlcnQgZW5jcnlwdGVkIGRhdGEgaW50byBhIGJpZyBpbnRlZ2VyCiAgLy8gRklYTUU6IGhleCBjb252ZXJzaW9uIGluZWZmaWNpZW50LCBnZXQgQmlnSW50ZWdlciB3L2J5dGUgc3RyaW5ncwogIHZhciB5ID0gbmV3IEJpZ0ludGVnZXIoZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoZWQpLnRvSGV4KCksIDE2KTsKCiAgLy8geSBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbW9kdWx1cyBvciBpdCB3YXNuJ3QgdGhlIHJlc3VsdCBvZgogIC8vIGEgcHJldmlvdXMgbW9kIG9wZXJhdGlvbiAoZW5jcnlwdGlvbikgdXNpbmcgdGhhdCBtb2R1bHVzCiAgaWYoeS5jb21wYXJlVG8oa2V5Lm4pID49IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIG1lc3NhZ2UgaXMgaW52YWxpZC4nKTsKICB9CgogIC8vIGRvIFJTQSBkZWNyeXB0aW9uCiAgdmFyIHggPSBfbW9kUG93KHksIGtleSwgcHViKTsKCiAgLy8gY3JlYXRlIHRoZSBlbmNyeXB0aW9uIGJsb2NrLCBpZiB4IGlzIHNob3J0ZXIgaW4gYnl0ZXMgdGhhbiBrLCB0aGVuCiAgLy8gcHJlcGVuZCB6ZXJvIGJ5dGVzIHRvIGZpbGwgdXAgZWIKICAvLyBGSVhNRTogaGV4IGNvbnZlcnNpb24gaW5lZmZpY2llbnQsIGdldCBCaWdJbnRlZ2VyIHcvYnl0ZSBzdHJpbmdzCiAgdmFyIHhoZXggPSB4LnRvU3RyaW5nKDE2KTsKICB2YXIgZWIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHZhciB6ZXJvcyA9IGsgLSBNYXRoLmNlaWwoeGhleC5sZW5ndGggLyAyKTsKICB3aGlsZSh6ZXJvcyA+IDApIHsKICAgIGViLnB1dEJ5dGUoMHgwMCk7CiAgICAtLXplcm9zOwogIH0KICBlYi5wdXRCeXRlcyhmb3JnZS51dGlsLmhleFRvQnl0ZXMoeGhleCkpOwoKICBpZihtbCAhPT0gZmFsc2UpIHsKICAgIC8vIGxlZ2FjeSwgZGVmYXVsdCB0byBQS0NTIzEgdjEuNSBwYWRkaW5nCiAgICByZXR1cm4gX2RlY29kZVBrY3MxX3YxXzUoZWIuZ2V0Qnl0ZXMoKSwga2V5LCBwdWIpOwogIH0KCiAgLy8gcmV0dXJuIG1lc3NhZ2UKICByZXR1cm4gZWIuZ2V0Qnl0ZXMoKTsKfTsKCi8qKgogKiBDcmVhdGVzIGFuIFJTQSBrZXktcGFpciBnZW5lcmF0aW9uIHN0YXRlIG9iamVjdC4gSXQgaXMgdXNlZCB0byBhbGxvdwogKiBrZXktZ2VuZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQgaW4gc3RlcHMuIEl0IGFsc28gYWxsb3dzIGZvciBhIFVJIHRvCiAqIGRpc3BsYXkgcHJvZ3Jlc3MgdXBkYXRlcy4KICoKICogQHBhcmFtIGJpdHMgdGhlIHNpemUgZm9yIHRoZSBwcml2YXRlIGtleSBpbiBiaXRzLCBkZWZhdWx0cyB0byAyMDQ4LgogKiBAcGFyYW0gZSB0aGUgcHVibGljIGV4cG9uZW50IHRvIHVzZSwgZGVmYXVsdHMgdG8gNjU1MzcgKDB4MTAwMDEpLgogKiBAcGFyYW0gW29wdGlvbnNdIHRoZSBvcHRpb25zIHRvIHVzZS4KICogICAgICAgICAgcHJuZyBhIGN1c3RvbSBjcnlwdG8tc2VjdXJlIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciB0byB1c2UsCiAqICAgICAgICAgICAgdGhhdCBtdXN0IGRlZmluZSAiZ2V0Qnl0ZXNTeW5jIi4KICogICAgICAgICAgYWxnb3JpdGhtIHRoZSBhbGdvcml0aG0gdG8gdXNlIChkZWZhdWx0OiAnUFJJTUVJTkMnKS4KICoKICogQHJldHVybiB0aGUgc3RhdGUgb2JqZWN0IHRvIHVzZSB0byBnZW5lcmF0ZSB0aGUga2V5LXBhaXIuCiAqLwpwa2kucnNhLmNyZWF0ZUtleVBhaXJHZW5lcmF0aW9uU3RhdGUgPSBmdW5jdGlvbihiaXRzLCBlLCBvcHRpb25zKSB7CiAgLy8gVE9ETzogbWlncmF0ZSBzdGVwLWJhc2VkIHByaW1lIGdlbmVyYXRpb24gY29kZSB0byBmb3JnZS5wcmltZQoKICAvLyBzZXQgZGVmYXVsdCBiaXRzCiAgaWYodHlwZW9mKGJpdHMpID09PSAnc3RyaW5nJykgewogICAgYml0cyA9IHBhcnNlSW50KGJpdHMsIDEwKTsKICB9CiAgYml0cyA9IGJpdHMgfHwgMjA0ODsKCiAgLy8gY3JlYXRlIHBybmcgd2l0aCBhcGkgdGhhdCBtYXRjaGVzIEJpZ0ludGVnZXIgc2VjdXJlIHJhbmRvbQogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHZhciBwcm5nID0gb3B0aW9ucy5wcm5nIHx8IGZvcmdlLnJhbmRvbTsKICB2YXIgcm5nID0gewogICAgLy8geCBpcyBhbiBhcnJheSB0byBmaWxsIHdpdGggYnl0ZXMKICAgIG5leHRCeXRlczogZnVuY3Rpb24oeCkgewogICAgICB2YXIgYiA9IHBybmcuZ2V0Qnl0ZXNTeW5jKHgubGVuZ3RoKTsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyArK2kpIHsKICAgICAgICB4W2ldID0gYi5jaGFyQ29kZUF0KGkpOwogICAgICB9CiAgICB9CiAgfTsKCiAgdmFyIGFsZ29yaXRobSA9IG9wdGlvbnMuYWxnb3JpdGhtIHx8ICdQUklNRUlOQyc7CgogIC8vIGNyZWF0ZSBQUklNRUlOQyBhbGdvcml0aG0gc3RhdGUKICB2YXIgcnZhbDsKICBpZihhbGdvcml0aG0gPT09ICdQUklNRUlOQycpIHsKICAgIHJ2YWwgPSB7CiAgICAgIGFsZ29yaXRobTogYWxnb3JpdGhtLAogICAgICBzdGF0ZTogMCwKICAgICAgYml0czogYml0cywKICAgICAgcm5nOiBybmcsCiAgICAgIGVJbnQ6IGUgfHwgNjU1MzcsCiAgICAgIGU6IG5ldyBCaWdJbnRlZ2VyKG51bGwpLAogICAgICBwOiBudWxsLAogICAgICBxOiBudWxsLAogICAgICBxQml0czogYml0cyA+PiAxLAogICAgICBwQml0czogYml0cyAtIChiaXRzID4+IDEpLAogICAgICBwcVN0YXRlOiAwLAogICAgICBudW06IG51bGwsCiAgICAgIGtleXM6IG51bGwKICAgIH07CiAgICBydmFsLmUuZnJvbUludChydmFsLmVJbnQpOwogIH0gZWxzZSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IGdlbmVyYXRpb24gYWxnb3JpdGhtOiAnICsgYWxnb3JpdGhtKTsKICB9CgogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEF0dGVtcHRzIHRvIHJ1bnMgdGhlIGtleS1nZW5lcmF0aW9uIGFsZ29yaXRobSBmb3IgYXQgbW9zdCBuIHNlY29uZHMKICogKGFwcHJveGltYXRlbHkpIHVzaW5nIHRoZSBnaXZlbiBzdGF0ZS4gV2hlbiBrZXktZ2VuZXJhdGlvbiBoYXMgY29tcGxldGVkLAogKiB0aGUga2V5cyB3aWxsIGJlIHN0b3JlZCBpbiBzdGF0ZS5rZXlzLgogKgogKiBUbyB1c2UgdGhpcyBmdW5jdGlvbiB0byB1cGRhdGUgYSBVSSB3aGlsZSBnZW5lcmF0aW5nIGEga2V5IG9yIHRvIHByZXZlbnQKICogY2F1c2luZyBicm93c2VyIGxvY2t1cHMvd2FybmluZ3MsIHNldCAibiIgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIDAuIEEKICogc2ltcGxlIHBhdHRlcm4gZm9yIGdlbmVyYXRpbmcgYSBrZXkgYW5kIHNob3dpbmcgYSBwcm9ncmVzcyBpbmRpY2F0b3IgaXM6CiAqCiAqIHZhciBzdGF0ZSA9IHBraS5yc2EuY3JlYXRlS2V5UGFpckdlbmVyYXRpb25TdGF0ZSgyMDQ4KTsKICogdmFyIHN0ZXAgPSBmdW5jdGlvbigpIHsKICogICAvLyBzdGVwIGtleS1nZW5lcmF0aW9uLCBydW4gYWxnb3JpdGhtIGZvciAxMDAgbXMsIHJlcGVhdAogKiAgIGlmKCFmb3JnZS5wa2kucnNhLnN0ZXBLZXlQYWlyR2VuZXJhdGlvblN0YXRlKHN0YXRlLCAxMDApKSB7CiAqICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEpOwogKiAgIH0gZWxzZSB7CiAqICAgICAvLyBrZXktZ2VuZXJhdGlvbiBjb21wbGV0ZQogKiAgICAgLy8gVE9ETzogdHVybiBvZmYgcHJvZ3Jlc3MgaW5kaWNhdG9yIGhlcmUKICogICAgIC8vIFRPRE86IHVzZSB0aGUgZ2VuZXJhdGVkIGtleS1wYWlyIGluICJzdGF0ZS5rZXlzIgogKiAgIH0KICogfTsKICogLy8gVE9ETzogdHVybiBvbiBwcm9ncmVzcyBpbmRpY2F0b3IgaGVyZQogKiBzZXRUaW1lb3V0KHN0ZXAsIDApOwogKgogKiBAcGFyYW0gc3RhdGUgdGhlIHN0YXRlIHRvIHVzZS4KICogQHBhcmFtIG4gdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBydW4gdGhlIGFsZ29yaXRobSBmb3IsIDAKICogICAgICAgICAgdG8gcnVuIHRoZSBhbGdvcml0aG0gdG8gY29tcGxldGlvbi4KICoKICogQHJldHVybiB0cnVlIGlmIHRoZSBrZXktZ2VuZXJhdGlvbiBjb21wbGV0ZWQsIGZhbHNlIGlmIG5vdC4KICovCnBraS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGUgPSBmdW5jdGlvbihzdGF0ZSwgbikgewogIC8vIHNldCBkZWZhdWx0IGFsZ29yaXRobSBpZiBub3Qgc2V0CiAgaWYoISgnYWxnb3JpdGhtJyBpbiBzdGF0ZSkpIHsKICAgIHN0YXRlLmFsZ29yaXRobSA9ICdQUklNRUlOQyc7CiAgfQoKICAvLyBUT0RPOiBtaWdyYXRlIHN0ZXAtYmFzZWQgcHJpbWUgZ2VuZXJhdGlvbiBjb2RlIHRvIGZvcmdlLnByaW1lCiAgLy8gVE9ETzogYWJzdHJhY3QgYXMgUFJJTUVJTkMgYWxnb3JpdGhtCgogIC8vIGRvIGtleSBnZW5lcmF0aW9uIChiYXNlZCBvbiBUb20gV3UncyByc2EuanMsIHNlZSBqc2JuLmpzIGxpY2Vuc2UpCiAgLy8gd2l0aCBzb21lIG1pbm9yIG9wdGltaXphdGlvbnMgYW5kIGRlc2lnbmVkIHRvIHJ1biBpbiBzdGVwcwoKICAvLyBsb2NhbCBzdGF0ZSB2YXJzCiAgdmFyIFRISVJUWSA9IG5ldyBCaWdJbnRlZ2VyKG51bGwpOwogIFRISVJUWS5mcm9tSW50KDMwKTsKICB2YXIgZGVsdGFJZHggPSAwOwogIHZhciBvcF9vciA9IGZ1bmN0aW9uKHgseSkgeyByZXR1cm4geHx5OyB9OwoKICAvLyBrZWVwIHN0ZXBwaW5nIHVudGlsIHRpbWUgbGltaXQgaXMgcmVhY2hlZCBvciBkb25lCiAgdmFyIHQxID0gK25ldyBEYXRlKCk7CiAgdmFyIHQyOwogIHZhciB0b3RhbCA9IDA7CiAgd2hpbGUoc3RhdGUua2V5cyA9PT0gbnVsbCAmJiAobiA8PSAwIHx8IHRvdGFsIDwgbikpIHsKICAgIC8vIGdlbmVyYXRlIHAgb3IgcQogICAgaWYoc3RhdGUuc3RhdGUgPT09IDApIHsKICAgICAgLyogTm90ZTogQWxsIHByaW1lcyBhcmUgb2YgdGhlIGZvcm06CgogICAgICAgIDMwaytpLCBmb3IgaSA8IDMwIGFuZCBnY2QoMzAsIGkpPTEsIHdoZXJlIHRoZXJlIGFyZSA4IHZhbHVlcyBmb3IgaQoKICAgICAgICBXaGVuIHdlIGdlbmVyYXRlIGEgcmFuZG9tIG51bWJlciwgd2UgYWx3YXlzIGFsaWduIGl0IGF0IDMwayArIDEuIEVhY2gKICAgICAgICB0aW1lIHRoZSBudW1iZXIgaXMgZGV0ZXJtaW5lZCBub3QgdG8gYmUgcHJpbWUgd2UgYWRkIHRvIGdldCB0byB0aGUKICAgICAgICBuZXh0ICdpJywgZWc6IGlmIHRoZSBudW1iZXIgd2FzIGF0IDMwayArIDEgd2UgYWRkIDYuICovCiAgICAgIHZhciBiaXRzID0gKHN0YXRlLnAgPT09IG51bGwpID8gc3RhdGUucEJpdHMgOiBzdGF0ZS5xQml0czsKICAgICAgdmFyIGJpdHMxID0gYml0cyAtIDE7CgogICAgICAvLyBnZXQgYSByYW5kb20gbnVtYmVyCiAgICAgIGlmKHN0YXRlLnBxU3RhdGUgPT09IDApIHsKICAgICAgICBzdGF0ZS5udW0gPSBuZXcgQmlnSW50ZWdlcihiaXRzLCBzdGF0ZS5ybmcpOwogICAgICAgIC8vIGZvcmNlIE1TQiBzZXQKICAgICAgICBpZighc3RhdGUubnVtLnRlc3RCaXQoYml0czEpKSB7CiAgICAgICAgICBzdGF0ZS5udW0uYml0d2lzZVRvKAogICAgICAgICAgICBCaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQoYml0czEpLCBvcF9vciwgc3RhdGUubnVtKTsKICAgICAgICB9CiAgICAgICAgLy8gYWxpZ24gbnVtYmVyIG9uIDMwaysxIGJvdW5kYXJ5CiAgICAgICAgc3RhdGUubnVtLmRBZGRPZmZzZXQoMzEgLSBzdGF0ZS5udW0ubW9kKFRISVJUWSkuYnl0ZVZhbHVlKCksIDApOwogICAgICAgIGRlbHRhSWR4ID0gMDsKCiAgICAgICAgKytzdGF0ZS5wcVN0YXRlOwogICAgICB9IGVsc2UgaWYoc3RhdGUucHFTdGF0ZSA9PT0gMSkgewogICAgICAgIC8vIHRyeSB0byBtYWtlIHRoZSBudW1iZXIgYSBwcmltZQogICAgICAgIGlmKHN0YXRlLm51bS5iaXRMZW5ndGgoKSA+IGJpdHMpIHsKICAgICAgICAgIC8vIG92ZXJmbG93LCB0cnkgYWdhaW4KICAgICAgICAgIHN0YXRlLnBxU3RhdGUgPSAwOwogICAgICAgICAgLy8gZG8gcHJpbWFsaXR5IHRlc3QKICAgICAgICB9IGVsc2UgaWYoc3RhdGUubnVtLmlzUHJvYmFibGVQcmltZSgKICAgICAgICAgIF9nZXRNaWxsZXJSYWJpblRlc3RzKHN0YXRlLm51bS5iaXRMZW5ndGgoKSkpKSB7CiAgICAgICAgICArK3N0YXRlLnBxU3RhdGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIGdldCBuZXh0IHBvdGVudGlhbCBwcmltZQogICAgICAgICAgc3RhdGUubnVtLmRBZGRPZmZzZXQoR0NEXzMwX0RFTFRBW2RlbHRhSWR4KysgJSA4XSwgMCk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYoc3RhdGUucHFTdGF0ZSA9PT0gMikgewogICAgICAgIC8vIGVuc3VyZSBudW1iZXIgaXMgY29wcmltZSB3aXRoIGUKICAgICAgICBzdGF0ZS5wcVN0YXRlID0KICAgICAgICAgIChzdGF0ZS5udW0uc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpLmdjZChzdGF0ZS5lKQogICAgICAgICAgLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgPT09IDApID8gMyA6IDA7CiAgICAgIH0gZWxzZSBpZihzdGF0ZS5wcVN0YXRlID09PSAzKSB7CiAgICAgICAgLy8gc3RvcmUgcCBvciBxCiAgICAgICAgc3RhdGUucHFTdGF0ZSA9IDA7CiAgICAgICAgaWYoc3RhdGUucCA9PT0gbnVsbCkgewogICAgICAgICAgc3RhdGUucCA9IHN0YXRlLm51bTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc3RhdGUucSA9IHN0YXRlLm51bTsKICAgICAgICB9CgogICAgICAgIC8vIGFkdmFuY2Ugc3RhdGUgaWYgYm90aCBwIGFuZCBxIGFyZSByZWFkeQogICAgICAgIGlmKHN0YXRlLnAgIT09IG51bGwgJiYgc3RhdGUucSAhPT0gbnVsbCkgewogICAgICAgICAgKytzdGF0ZS5zdGF0ZTsKICAgICAgICB9CiAgICAgICAgc3RhdGUubnVtID0gbnVsbDsKICAgICAgfQogICAgfSBlbHNlIGlmKHN0YXRlLnN0YXRlID09PSAxKSB7CiAgICAgIC8vIGVuc3VyZSBwIGlzIGxhcmdlciB0aGFuIHEgKHN3YXAgdGhlbSBpZiBub3QpCiAgICAgIGlmKHN0YXRlLnAuY29tcGFyZVRvKHN0YXRlLnEpIDwgMCkgewogICAgICAgIHN0YXRlLm51bSA9IHN0YXRlLnA7CiAgICAgICAgc3RhdGUucCA9IHN0YXRlLnE7CiAgICAgICAgc3RhdGUucSA9IHN0YXRlLm51bTsKICAgICAgfQogICAgICArK3N0YXRlLnN0YXRlOwogICAgfSBlbHNlIGlmKHN0YXRlLnN0YXRlID09PSAyKSB7CiAgICAgIC8vIGNvbXB1dGUgcGhpOiAocCAtIDEpKHEgLSAxKSAoRXVsZXIncyB0b3RpZW50IGZ1bmN0aW9uKQogICAgICBzdGF0ZS5wMSA9IHN0YXRlLnAuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOwogICAgICBzdGF0ZS5xMSA9IHN0YXRlLnEuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOwogICAgICBzdGF0ZS5waGkgPSBzdGF0ZS5wMS5tdWx0aXBseShzdGF0ZS5xMSk7CiAgICAgICsrc3RhdGUuc3RhdGU7CiAgICB9IGVsc2UgaWYoc3RhdGUuc3RhdGUgPT09IDMpIHsKICAgICAgLy8gZW5zdXJlIGUgYW5kIHBoaSBhcmUgY29wcmltZQogICAgICBpZihzdGF0ZS5waGkuZ2NkKHN0YXRlLmUpLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgPT09IDApIHsKICAgICAgICAvLyBwaGkgYW5kIGUgYXJlIGNvcHJpbWUsIGFkdmFuY2UKICAgICAgICArK3N0YXRlLnN0YXRlOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIHBoaSBhbmQgZSBhcmVuJ3QgY29wcmltZSwgc28gZ2VuZXJhdGUgYSBuZXcgcCBhbmQgcQogICAgICAgIHN0YXRlLnAgPSBudWxsOwogICAgICAgIHN0YXRlLnEgPSBudWxsOwogICAgICAgIHN0YXRlLnN0YXRlID0gMDsKICAgICAgfQogICAgfSBlbHNlIGlmKHN0YXRlLnN0YXRlID09PSA0KSB7CiAgICAgIC8vIGNyZWF0ZSBuLCBlbnN1cmUgbiBpcyBoYXMgdGhlIHJpZ2h0IG51bWJlciBvZiBiaXRzCiAgICAgIHN0YXRlLm4gPSBzdGF0ZS5wLm11bHRpcGx5KHN0YXRlLnEpOwoKICAgICAgLy8gZW5zdXJlIG4gaXMgcmlnaHQgbnVtYmVyIG9mIGJpdHMKICAgICAgaWYoc3RhdGUubi5iaXRMZW5ndGgoKSA9PT0gc3RhdGUuYml0cykgewogICAgICAgIC8vIHN1Y2Nlc3MsIGFkdmFuY2UKICAgICAgICArK3N0YXRlLnN0YXRlOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIGZhaWxlZCwgZ2V0IG5ldyBxCiAgICAgICAgc3RhdGUucSA9IG51bGw7CiAgICAgICAgc3RhdGUuc3RhdGUgPSAwOwogICAgICB9CiAgICB9IGVsc2UgaWYoc3RhdGUuc3RhdGUgPT09IDUpIHsKICAgICAgLy8gc2V0IGtleXMKICAgICAgdmFyIGQgPSBzdGF0ZS5lLm1vZEludmVyc2Uoc3RhdGUucGhpKTsKICAgICAgc3RhdGUua2V5cyA9IHsKICAgICAgICBwcml2YXRlS2V5OiBwa2kucnNhLnNldFByaXZhdGVLZXkoCiAgICAgICAgICBzdGF0ZS5uLCBzdGF0ZS5lLCBkLCBzdGF0ZS5wLCBzdGF0ZS5xLAogICAgICAgICAgZC5tb2Qoc3RhdGUucDEpLCBkLm1vZChzdGF0ZS5xMSksCiAgICAgICAgICBzdGF0ZS5xLm1vZEludmVyc2Uoc3RhdGUucCkpLAogICAgICAgIHB1YmxpY0tleTogcGtpLnJzYS5zZXRQdWJsaWNLZXkoc3RhdGUubiwgc3RhdGUuZSkKICAgICAgfTsKICAgIH0KCiAgICAvLyB1cGRhdGUgdGltaW5nCiAgICB0MiA9ICtuZXcgRGF0ZSgpOwogICAgdG90YWwgKz0gdDIgLSB0MTsKICAgIHQxID0gdDI7CiAgfQoKICByZXR1cm4gc3RhdGUua2V5cyAhPT0gbnVsbDsKfTsKCi8qKgogKiBHZW5lcmF0ZXMgYW4gUlNBIHB1YmxpYy1wcml2YXRlIGtleSBwYWlyIGluIGEgc2luZ2xlIGNhbGwuCiAqCiAqIFRvIGdlbmVyYXRlIGEga2V5LXBhaXIgaW4gc3RlcHMgKHRvIGFsbG93IGZvciBwcm9ncmVzcyB1cGRhdGVzIGFuZCB0bwogKiBwcmV2ZW50IGJsb2NraW5nIG9yIHdhcm5pbmdzIGluIHNsb3cgYnJvd3NlcnMpIHRoZW4gdXNlIHRoZSBrZXktcGFpcgogKiBnZW5lcmF0aW9uIHN0YXRlIGZ1bmN0aW9ucy4KICoKICogVG8gZ2VuZXJhdGUgYSBrZXktcGFpciBhc3luY2hyb25vdXNseSAoZWl0aGVyIHRocm91Z2ggd2ViLXdvcmtlcnMsIGlmCiAqIGF2YWlsYWJsZSwgb3IgYnkgYnJlYWtpbmcgdXAgdGhlIHdvcmsgb24gdGhlIG1haW4gdGhyZWFkKSwgcGFzcyBhCiAqIGNhbGxiYWNrIGZ1bmN0aW9uLgogKgogKiBAcGFyYW0gW2JpdHNdIHRoZSBzaXplIGZvciB0aGUgcHJpdmF0ZSBrZXkgaW4gYml0cywgZGVmYXVsdHMgdG8gMjA0OC4KICogQHBhcmFtIFtlXSB0aGUgcHVibGljIGV4cG9uZW50IHRvIHVzZSwgZGVmYXVsdHMgdG8gNjU1MzcuCiAqIEBwYXJhbSBbb3B0aW9uc10gb3B0aW9ucyBmb3Iga2V5LXBhaXIgZ2VuZXJhdGlvbiwgaWYgZ2l2ZW4gdGhlbiAnYml0cycKICogICAgICAgICAgYW5kICdlJyBtdXN0ICpub3QqIGJlIGdpdmVuOgogKiAgICAgICAgICBiaXRzIHRoZSBzaXplIGZvciB0aGUgcHJpdmF0ZSBrZXkgaW4gYml0cywgKGRlZmF1bHQ6IDIwNDgpLgogKiAgICAgICAgICBlIHRoZSBwdWJsaWMgZXhwb25lbnQgdG8gdXNlLCAoZGVmYXVsdDogNjU1MzcgKDB4MTAwMDEpKS4KICogICAgICAgICAgd29ya2VyU2NyaXB0IHRoZSB3b3JrZXIgc2NyaXB0IFVSTC4KICogICAgICAgICAgd29ya2VycyB0aGUgbnVtYmVyIG9mIHdlYiB3b3JrZXJzIChpZiBzdXBwb3J0ZWQpIHRvIHVzZSwKICogICAgICAgICAgICAoZGVmYXVsdDogMikuCiAqICAgICAgICAgIHdvcmtMb2FkIHRoZSBzaXplIG9mIHRoZSB3b3JrIGxvYWQsIGllOiBudW1iZXIgb2YgcG9zc2libGUgcHJpbWUKICogICAgICAgICAgICBudW1iZXJzIGZvciBlYWNoIHdlYiB3b3JrZXIgdG8gY2hlY2sgcGVyIHdvcmsgYXNzaWdubWVudCwKICogICAgICAgICAgICAoZGVmYXVsdDogMTAwKS4KICogICAgICAgICAgZSB0aGUgcHVibGljIGV4cG9uZW50IHRvIHVzZSwgZGVmYXVsdHMgdG8gNjU1MzcuCiAqICAgICAgICAgIHBybmcgYSBjdXN0b20gY3J5cHRvLXNlY3VyZSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlLAogKiAgICAgICAgICAgIHRoYXQgbXVzdCBkZWZpbmUgImdldEJ5dGVzU3luYyIuCiAqICAgICAgICAgIGFsZ29yaXRobSB0aGUgYWxnb3JpdGhtIHRvIHVzZSAoZGVmYXVsdDogJ1BSSU1FSU5DJykuCiAqIEBwYXJhbSBbY2FsbGJhY2soZXJyLCBrZXlwYWlyKV0gY2FsbGVkIG9uY2UgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCiAqCiAqIEByZXR1cm4gYW4gb2JqZWN0IHdpdGggcHJpdmF0ZUtleSBhbmQgcHVibGljS2V5IHByb3BlcnRpZXMuCiAqLwpwa2kucnNhLmdlbmVyYXRlS2V5UGFpciA9IGZ1bmN0aW9uKGJpdHMsIGUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7CiAgLy8gKGJpdHMpLCAob3B0aW9ucyksIChjYWxsYmFjaykKICBpZihhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7CiAgICBpZih0eXBlb2YgYml0cyA9PT0gJ29iamVjdCcpIHsKICAgICAgb3B0aW9ucyA9IGJpdHM7CiAgICAgIGJpdHMgPSB1bmRlZmluZWQ7CiAgICB9IGVsc2UgaWYodHlwZW9mIGJpdHMgPT09ICdmdW5jdGlvbicpIHsKICAgICAgY2FsbGJhY2sgPSBiaXRzOwogICAgICBiaXRzID0gdW5kZWZpbmVkOwogICAgfQogIH0gZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7CiAgICAvLyAoYml0cywgZSksIChiaXRzLCBvcHRpb25zKSwgKGJpdHMsIGNhbGxiYWNrKSwgKG9wdGlvbnMsIGNhbGxiYWNrKQogICAgaWYodHlwZW9mIGJpdHMgPT09ICdudW1iZXInKSB7CiAgICAgIGlmKHR5cGVvZiBlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgY2FsbGJhY2sgPSBlOwogICAgICAgIGUgPSB1bmRlZmluZWQ7CiAgICAgIH0gZWxzZSBpZih0eXBlb2YgZSAhPT0gJ251bWJlcicpIHsKICAgICAgICBvcHRpb25zID0gZTsKICAgICAgICBlID0gdW5kZWZpbmVkOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBvcHRpb25zID0gYml0czsKICAgICAgY2FsbGJhY2sgPSBlOwogICAgICBiaXRzID0gdW5kZWZpbmVkOwogICAgICBlID0gdW5kZWZpbmVkOwogICAgfQogIH0gZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7CiAgICAvLyAoYml0cywgZSwgb3B0aW9ucyksIChiaXRzLCBlLCBjYWxsYmFjayksIChiaXRzLCBvcHRpb25zLCBjYWxsYmFjaykKICAgIGlmKHR5cGVvZiBlID09PSAnbnVtYmVyJykgewogICAgICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGNhbGxiYWNrID0gb3B0aW9uczsKICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjYWxsYmFjayA9IG9wdGlvbnM7CiAgICAgIG9wdGlvbnMgPSBlOwogICAgICBlID0gdW5kZWZpbmVkOwogICAgfQogIH0KICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICBpZihiaXRzID09PSB1bmRlZmluZWQpIHsKICAgIGJpdHMgPSBvcHRpb25zLmJpdHMgfHwgMjA0ODsKICB9CiAgaWYoZSA9PT0gdW5kZWZpbmVkKSB7CiAgICBlID0gb3B0aW9ucy5lIHx8IDB4MTAwMDE7CiAgfQogIHZhciBzdGF0ZSA9IHBraS5yc2EuY3JlYXRlS2V5UGFpckdlbmVyYXRpb25TdGF0ZShiaXRzLCBlLCBvcHRpb25zKTsKICBpZighY2FsbGJhY2spIHsKICAgIHBraS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGUoc3RhdGUsIDApOwogICAgcmV0dXJuIHN0YXRlLmtleXM7CiAgfQogIF9nZW5lcmF0ZUtleVBhaXIoc3RhdGUsIG9wdGlvbnMsIGNhbGxiYWNrKTsKfTsKCi8qKgogKiBTZXRzIGFuIFJTQSBwdWJsaWMga2V5IGZyb20gQmlnSW50ZWdlcnMgbW9kdWx1cyBhbmQgZXhwb25lbnQuCiAqCiAqIEBwYXJhbSBuIHRoZSBtb2R1bHVzLgogKiBAcGFyYW0gZSB0aGUgZXhwb25lbnQuCiAqCiAqIEByZXR1cm4gdGhlIHB1YmxpYyBrZXkuCiAqLwpwa2kuc2V0UnNhUHVibGljS2V5ID0gcGtpLnJzYS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbihuLCBlKSB7CiAgdmFyIGtleSA9IHsKICAgIG46IG4sCiAgICBlOiBlCiAgfTsKCiAgLyoqCiAgICogRW5jcnlwdHMgdGhlIGdpdmVuIGRhdGEgd2l0aCB0aGlzIHB1YmxpYyBrZXkuIE5ld2VyIGFwcGxpY2F0aW9ucwogICAqIHNob3VsZCB1c2UgdGhlICdSU0EtT0FFUCcgZGVjcnlwdGlvbiBzY2hlbWUsICdSU0FFUy1QS0NTMS1WMV81JyBpcyBmb3IKICAgKiBsZWdhY3kgYXBwbGljYXRpb25zLgogICAqCiAgICogQHBhcmFtIGRhdGEgdGhlIGJ5dGUgc3RyaW5nIHRvIGVuY3J5cHQuCiAgICogQHBhcmFtIHNjaGVtZSB0aGUgZW5jcnlwdGlvbiBzY2hlbWUgdG8gdXNlOgogICAqICAgICAgICAgICdSU0FFUy1QS0NTMS1WMV81JyAoZGVmYXVsdCksCiAgICogICAgICAgICAgJ1JTQS1PQUVQJywKICAgKiAgICAgICAgICAnUkFXJywgJ05PTkUnLCBvciBudWxsIHRvIHBlcmZvcm0gcmF3IFJTQSBlbmNyeXB0aW9uLAogICAqICAgICAgICAgIGFuIG9iamVjdCB3aXRoIGFuICdlbmNvZGUnIHByb3BlcnR5IHNldCB0byBhIGZ1bmN0aW9uCiAgICogICAgICAgICAgd2l0aCB0aGUgc2lnbmF0dXJlICdmdW5jdGlvbihkYXRhLCBrZXkpJyB0aGF0IHJldHVybnMKICAgKiAgICAgICAgICBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGVuY29kZWQgZGF0YS4KICAgKiBAcGFyYW0gc2NoZW1lT3B0aW9ucyBhbnkgc2NoZW1lLXNwZWNpZmljIG9wdGlvbnMuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBlbmNyeXB0ZWQgYnl0ZSBzdHJpbmcuCiAgICovCiAga2V5LmVuY3J5cHQgPSBmdW5jdGlvbihkYXRhLCBzY2hlbWUsIHNjaGVtZU9wdGlvbnMpIHsKICAgIGlmKHR5cGVvZiBzY2hlbWUgPT09ICdzdHJpbmcnKSB7CiAgICAgIHNjaGVtZSA9IHNjaGVtZS50b1VwcGVyQ2FzZSgpOwogICAgfSBlbHNlIGlmKHNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHNjaGVtZSA9ICdSU0FFUy1QS0NTMS1WMV81JzsKICAgIH0KCiAgICBpZihzY2hlbWUgPT09ICdSU0FFUy1QS0NTMS1WMV81JykgewogICAgICBzY2hlbWUgPSB7CiAgICAgICAgZW5jb2RlOiBmdW5jdGlvbihtLCBrZXksIHB1YikgewogICAgICAgICAgcmV0dXJuIF9lbmNvZGVQa2NzMV92MV81KG0sIGtleSwgMHgwMikuZ2V0Qnl0ZXMoKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9IGVsc2UgaWYoc2NoZW1lID09PSAnUlNBLU9BRVAnIHx8IHNjaGVtZSA9PT0gJ1JTQUVTLU9BRVAnKSB7CiAgICAgIHNjaGVtZSA9IHsKICAgICAgICBlbmNvZGU6IGZ1bmN0aW9uKG0sIGtleSkgewogICAgICAgICAgcmV0dXJuIGZvcmdlLnBrY3MxLmVuY29kZV9yc2Ffb2FlcChrZXksIG0sIHNjaGVtZU9wdGlvbnMpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0gZWxzZSBpZihbJ1JBVycsICdOT05FJywgJ05VTEwnLCBudWxsXS5pbmRleE9mKHNjaGVtZSkgIT09IC0xKSB7CiAgICAgIHNjaGVtZSA9IHsgZW5jb2RlOiBmdW5jdGlvbihlKSB7IHJldHVybiBlOyB9IH07CiAgICB9IGVsc2UgaWYodHlwZW9mIHNjaGVtZSA9PT0gJ3N0cmluZycpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBlbmNyeXB0aW9uIHNjaGVtZTogIicgKyBzY2hlbWUgKyAnIi4nKTsKICAgIH0KCiAgICAvLyBkbyBzY2hlbWUtYmFzZWQgZW5jb2RpbmcgdGhlbiByc2EgZW5jcnlwdGlvbgogICAgdmFyIGUgPSBzY2hlbWUuZW5jb2RlKGRhdGEsIGtleSwgdHJ1ZSk7CiAgICByZXR1cm4gcGtpLnJzYS5lbmNyeXB0KGUsIGtleSwgdHJ1ZSk7CiAgfTsKCiAgLyoqCiAgICogVmVyaWZpZXMgdGhlIGdpdmVuIHNpZ25hdHVyZSBhZ2FpbnN0IHRoZSBnaXZlbiBkaWdlc3QuCiAgICoKICAgKiBQS0NTIzEgc3VwcG9ydHMgbXVsdGlwbGUgKGN1cnJlbnRseSB0d28pIHNpZ25hdHVyZSBzY2hlbWVzOgogICAqIFJTQVNTQS1QS0NTMS1WMV81IGFuZCBSU0FTU0EtUFNTLgogICAqCiAgICogQnkgZGVmYXVsdCB0aGlzIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlICJvbGQgc2NoZW1lIiwgaS5lLgogICAqIFJTQVNTQS1QS0NTMS1WMV81LCBpbiB3aGljaCBjYXNlIG9uY2UgUlNBLWRlY3J5cHRlZCwgdGhlCiAgICogc2lnbmF0dXJlIGlzIGFuIE9DVEVUIFNUUklORyB0aGF0IGhvbGRzIGEgRGlnZXN0SW5mby4KICAgKgogICAqIERpZ2VzdEluZm8gOjo9IFNFUVVFTkNFIHsKICAgKiAgIGRpZ2VzdEFsZ29yaXRobSBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyLAogICAqICAgZGlnZXN0IERpZ2VzdAogICAqIH0KICAgKiBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyIDo6PSBBbGdvcml0aG1JZGVudGlmaWVyCiAgICogRGlnZXN0IDo6PSBPQ1RFVCBTVFJJTkcKICAgKgogICAqIFRvIHBlcmZvcm0gUFNTIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24sIHByb3ZpZGUgYW4gaW5zdGFuY2UKICAgKiBvZiBGb3JnZSBQU1Mgb2JqZWN0IGFzIHRoZSBzY2hlbWUgcGFyYW1ldGVyLgogICAqCiAgICogQHBhcmFtIGRpZ2VzdCB0aGUgbWVzc2FnZSBkaWdlc3QgaGFzaCB0byBjb21wYXJlIGFnYWluc3QgdGhlIHNpZ25hdHVyZSwKICAgKiAgICAgICAgICBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZy4KICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5LCBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZy4KICAgKiBAcGFyYW0gc2NoZW1lIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gc2NoZW1lIHRvIHVzZToKICAgKiAgICAgICAgICAnUlNBU1NBLVBLQ1MxLVYxXzUnIG9yIHVuZGVmaW5lZCBmb3IgUlNBU1NBIFBLQ1MjMSB2MS41LAogICAqICAgICAgICAgIGEgRm9yZ2UgUFNTIG9iamVjdCBmb3IgUlNBU1NBLVBTUywKICAgKiAgICAgICAgICAnTk9ORScgb3IgbnVsbCBmb3Igbm9uZSwgRGlnZXN0SW5mbyB3aWxsIG5vdCBiZSBleHBlY3RlZCwgYnV0CiAgICogICAgICAgICAgICBQS0NTIzEgdjEuNSBwYWRkaW5nIHdpbGwgc3RpbGwgYmUgdXNlZC4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIHdhcyB2ZXJpZmllZCwgZmFsc2UgaWYgbm90LgogICAqLwogICBrZXkudmVyaWZ5ID0gZnVuY3Rpb24oZGlnZXN0LCBzaWduYXR1cmUsIHNjaGVtZSkgewogICAgIGlmKHR5cGVvZiBzY2hlbWUgPT09ICdzdHJpbmcnKSB7CiAgICAgICBzY2hlbWUgPSBzY2hlbWUudG9VcHBlckNhc2UoKTsKICAgICB9IGVsc2UgaWYoc2NoZW1lID09PSB1bmRlZmluZWQpIHsKICAgICAgIHNjaGVtZSA9ICdSU0FTU0EtUEtDUzEtVjFfNSc7CiAgICAgfQoKICAgICBpZihzY2hlbWUgPT09ICdSU0FTU0EtUEtDUzEtVjFfNScpIHsKICAgICAgIHNjaGVtZSA9IHsKICAgICAgICAgdmVyaWZ5OiBmdW5jdGlvbihkaWdlc3QsIGQpIHsKICAgICAgICAgICAvLyByZW1vdmUgcGFkZGluZwogICAgICAgICAgIGQgPSBfZGVjb2RlUGtjczFfdjFfNShkLCBrZXksIHRydWUpOwogICAgICAgICAgIC8vIGQgaXMgQVNOLjEgQkVSLWVuY29kZWQgRGlnZXN0SW5mbwogICAgICAgICAgIHZhciBvYmogPSBhc24xLmZyb21EZXIoZCk7CiAgICAgICAgICAgLy8gY29tcGFyZSB0aGUgZ2l2ZW4gZGlnZXN0IHRvIHRoZSBkZWNyeXB0ZWQgb25lCiAgICAgICAgICAgcmV0dXJuIGRpZ2VzdCA9PT0gb2JqLnZhbHVlWzFdLnZhbHVlOwogICAgICAgICB9CiAgICAgICB9OwogICAgIH0gZWxzZSBpZihzY2hlbWUgPT09ICdOT05FJyB8fCBzY2hlbWUgPT09ICdOVUxMJyB8fCBzY2hlbWUgPT09IG51bGwpIHsKICAgICAgIHNjaGVtZSA9IHsKICAgICAgICAgdmVyaWZ5OiBmdW5jdGlvbihkaWdlc3QsIGQpIHsKICAgICAgICAgICAvLyByZW1vdmUgcGFkZGluZwogICAgICAgICAgIGQgPSBfZGVjb2RlUGtjczFfdjFfNShkLCBrZXksIHRydWUpOwogICAgICAgICAgIHJldHVybiBkaWdlc3QgPT09IGQ7CiAgICAgICAgIH0KICAgICAgIH07CiAgICAgfQoKICAgICAvLyBkbyByc2EgZGVjcnlwdGlvbiB3L28gYW55IGRlY29kaW5nLCB0aGVuIHZlcmlmeSAtLSB3aGljaCBkb2VzIGRlY29kaW5nCiAgICAgdmFyIGQgPSBwa2kucnNhLmRlY3J5cHQoc2lnbmF0dXJlLCBrZXksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gc2NoZW1lLnZlcmlmeShkaWdlc3QsIGQsIGtleS5uLmJpdExlbmd0aCgpKTsKICB9OwoKICByZXR1cm4ga2V5Owp9OwoKLyoqCiAqIFNldHMgYW4gUlNBIHByaXZhdGUga2V5IGZyb20gQmlnSW50ZWdlcnMgbW9kdWx1cywgZXhwb25lbnQsIHByaW1lcywKICogcHJpbWUgZXhwb25lbnRzLCBhbmQgbW9kdWxhciBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlLgogKgogKiBAcGFyYW0gbiB0aGUgbW9kdWx1cy4KICogQHBhcmFtIGUgdGhlIHB1YmxpYyBleHBvbmVudC4KICogQHBhcmFtIGQgdGhlIHByaXZhdGUgZXhwb25lbnQgKChpbnZlcnNlIG9mIGUpIG1vZCBuKS4KICogQHBhcmFtIHAgdGhlIGZpcnN0IHByaW1lLgogKiBAcGFyYW0gcSB0aGUgc2Vjb25kIHByaW1lLgogKiBAcGFyYW0gZFAgZXhwb25lbnQxIChkIG1vZCAocC0xKSkuCiAqIEBwYXJhbSBkUSBleHBvbmVudDIgKGQgbW9kIChxLTEpKS4KICogQHBhcmFtIHFJbnYgKChpbnZlcnNlIG9mIHEpIG1vZCBwKQogKgogKiBAcmV0dXJuIHRoZSBwcml2YXRlIGtleS4KICovCnBraS5zZXRSc2FQcml2YXRlS2V5ID0gcGtpLnJzYS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24oCiAgbiwgZSwgZCwgcCwgcSwgZFAsIGRRLCBxSW52KSB7CiAgdmFyIGtleSA9IHsKICAgIG46IG4sCiAgICBlOiBlLAogICAgZDogZCwKICAgIHA6IHAsCiAgICBxOiBxLAogICAgZFA6IGRQLAogICAgZFE6IGRRLAogICAgcUludjogcUludgogIH07CgogIC8qKgogICAqIERlY3J5cHRzIHRoZSBnaXZlbiBkYXRhIHdpdGggdGhpcyBwcml2YXRlIGtleS4gVGhlIGRlY3J5cHRpb24gc2NoZW1lCiAgICogbXVzdCBtYXRjaCB0aGUgb25lIHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4KICAgKgogICAqIEBwYXJhbSBkYXRhIHRoZSBieXRlIHN0cmluZyB0byBkZWNyeXB0LgogICAqIEBwYXJhbSBzY2hlbWUgdGhlIGRlY3J5cHRpb24gc2NoZW1lIHRvIHVzZToKICAgKiAgICAgICAgICAnUlNBRVMtUEtDUzEtVjFfNScgKGRlZmF1bHQpLAogICAqICAgICAgICAgICdSU0EtT0FFUCcsCiAgICogICAgICAgICAgJ1JBVycsICdOT05FJywgb3IgbnVsbCB0byBwZXJmb3JtIHJhdyBSU0EgZGVjcnlwdGlvbi4KICAgKiBAcGFyYW0gc2NoZW1lT3B0aW9ucyBhbnkgc2NoZW1lLXNwZWNpZmljIG9wdGlvbnMuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBkZWNyeXB0ZWQgYnl0ZSBzdHJpbmcuCiAgICovCiAga2V5LmRlY3J5cHQgPSBmdW5jdGlvbihkYXRhLCBzY2hlbWUsIHNjaGVtZU9wdGlvbnMpIHsKICAgIGlmKHR5cGVvZiBzY2hlbWUgPT09ICdzdHJpbmcnKSB7CiAgICAgIHNjaGVtZSA9IHNjaGVtZS50b1VwcGVyQ2FzZSgpOwogICAgfSBlbHNlIGlmKHNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHNjaGVtZSA9ICdSU0FFUy1QS0NTMS1WMV81JzsKICAgIH0KCiAgICAvLyBkbyByc2EgZGVjcnlwdGlvbiB3L28gYW55IGRlY29kaW5nCiAgICB2YXIgZCA9IHBraS5yc2EuZGVjcnlwdChkYXRhLCBrZXksIGZhbHNlLCBmYWxzZSk7CgogICAgaWYoc2NoZW1lID09PSAnUlNBRVMtUEtDUzEtVjFfNScpIHsKICAgICAgc2NoZW1lID0geyBkZWNvZGU6IF9kZWNvZGVQa2NzMV92MV81IH07CiAgICB9IGVsc2UgaWYoc2NoZW1lID09PSAnUlNBLU9BRVAnIHx8IHNjaGVtZSA9PT0gJ1JTQUVTLU9BRVAnKSB7CiAgICAgIHNjaGVtZSA9IHsKICAgICAgICBkZWNvZGU6IGZ1bmN0aW9uKGQsIGtleSkgewogICAgICAgICAgcmV0dXJuIGZvcmdlLnBrY3MxLmRlY29kZV9yc2Ffb2FlcChrZXksIGQsIHNjaGVtZU9wdGlvbnMpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0gZWxzZSBpZihbJ1JBVycsICdOT05FJywgJ05VTEwnLCBudWxsXS5pbmRleE9mKHNjaGVtZSkgIT09IC0xKSB7CiAgICAgIHNjaGVtZSA9IHsgZGVjb2RlOiBmdW5jdGlvbihkKSB7IHJldHVybiBkOyB9IH07CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyArIHNjaGVtZSArICciLicpOwogICAgfQoKICAgIC8vIGRlY29kZSBhY2NvcmRpbmcgdG8gc2NoZW1lCiAgICByZXR1cm4gc2NoZW1lLmRlY29kZShkLCBrZXksIGZhbHNlKTsKICB9OwoKICAvKioKICAgKiBTaWducyB0aGUgZ2l2ZW4gZGlnZXN0LCBwcm9kdWNpbmcgYSBzaWduYXR1cmUuCiAgICoKICAgKiBQS0NTIzEgc3VwcG9ydHMgbXVsdGlwbGUgKGN1cnJlbnRseSB0d28pIHNpZ25hdHVyZSBzY2hlbWVzOgogICAqIFJTQVNTQS1QS0NTMS1WMV81IGFuZCBSU0FTU0EtUFNTLgogICAqCiAgICogQnkgZGVmYXVsdCB0aGlzIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlICJvbGQgc2NoZW1lIiwgaS5lLgogICAqIFJTQVNTQS1QS0NTMS1WMV81LiBJbiBvcmRlciB0byBnZW5lcmF0ZSBhIFBTUyBzaWduYXR1cmUsIHByb3ZpZGUKICAgKiBhbiBpbnN0YW5jZSBvZiBGb3JnZSBQU1Mgb2JqZWN0IGFzIHRoZSBzY2hlbWUgcGFyYW1ldGVyLgogICAqCiAgICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3Qgd2l0aCB0aGUgaGFzaCB0byBzaWduLgogICAqIEBwYXJhbSBzY2hlbWUgdGhlIHNpZ25hdHVyZSBzY2hlbWUgdG8gdXNlOgogICAqICAgICAgICAgICdSU0FTU0EtUEtDUzEtVjFfNScgb3IgdW5kZWZpbmVkIGZvciBSU0FTU0EgUEtDUyMxIHYxLjUsCiAgICogICAgICAgICAgYSBGb3JnZSBQU1Mgb2JqZWN0IGZvciBSU0FTU0EtUFNTLAogICAqICAgICAgICAgICdOT05FJyBvciBudWxsIGZvciBub25lLCBEaWdlc3RJbmZvIHdpbGwgbm90IGJlIHVzZWQgYnV0CiAgICogICAgICAgICAgICBQS0NTIzEgdjEuNSBwYWRkaW5nIHdpbGwgc3RpbGwgYmUgdXNlZC4KICAgKgogICAqIEByZXR1cm4gdGhlIHNpZ25hdHVyZSBhcyBhIGJ5dGUgc3RyaW5nLgogICAqLwogIGtleS5zaWduID0gZnVuY3Rpb24obWQsIHNjaGVtZSkgewogICAgLyogTm90ZTogVGhlIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIFJTQSBvcGVyYXRpb25zIGlzIGJlaW5nCiAgICAgIHRyYW5zaXRpb25lZCBhd2F5IGZyb20gYSBQS0NTIzEgdjEuNSBoYXJkLWNvZGVkIHNjaGVtZS4gU29tZSBsZWdhY3kKICAgICAgY29kZSBsaWtlIHRoZSB1c2Ugb2YgYW4gZW5jb2RpbmcgYmxvY2sgaWRlbnRpZmllciAnYnQnIHdpbGwgZXZlbnR1YWxseQogICAgICBiZSByZW1vdmVkLiAqLwoKICAgIC8vIHByaXZhdGUga2V5IG9wZXJhdGlvbgogICAgdmFyIGJ0ID0gZmFsc2U7CgogICAgaWYodHlwZW9mIHNjaGVtZSA9PT0gJ3N0cmluZycpIHsKICAgICAgc2NoZW1lID0gc2NoZW1lLnRvVXBwZXJDYXNlKCk7CiAgICB9CgogICAgaWYoc2NoZW1lID09PSB1bmRlZmluZWQgfHwgc2NoZW1lID09PSAnUlNBU1NBLVBLQ1MxLVYxXzUnKSB7CiAgICAgIHNjaGVtZSA9IHsgZW5jb2RlOiBlbXNhUGtjczF2MTVlbmNvZGUgfTsKICAgICAgYnQgPSAweDAxOwogICAgfSBlbHNlIGlmKHNjaGVtZSA9PT0gJ05PTkUnIHx8IHNjaGVtZSA9PT0gJ05VTEwnIHx8IHNjaGVtZSA9PT0gbnVsbCkgewogICAgICBzY2hlbWUgPSB7IGVuY29kZTogZnVuY3Rpb24oKSB7IHJldHVybiBtZDsgfSB9OwogICAgICBidCA9IDB4MDE7CiAgICB9CgogICAgLy8gZW5jb2RlIGFuZCB0aGVuIGVuY3J5cHQKICAgIHZhciBkID0gc2NoZW1lLmVuY29kZShtZCwga2V5Lm4uYml0TGVuZ3RoKCkpOwogICAgcmV0dXJuIHBraS5yc2EuZW5jcnlwdChkLCBrZXksIGJ0KTsKICB9OwoKICByZXR1cm4ga2V5Owp9OwoKLyoqCiAqIFdyYXBzIGFuIFJTQVByaXZhdGVLZXkgQVNOLjEgb2JqZWN0IGluIGFuIEFTTi4xIFByaXZhdGVLZXlJbmZvIG9iamVjdC4KICoKICogQHBhcmFtIHJzYUtleSB0aGUgQVNOLjEgUlNBUHJpdmF0ZUtleS4KICoKICogQHJldHVybiB0aGUgQVNOLjEgUHJpdmF0ZUtleUluZm8uCiAqLwpwa2kud3JhcFJzYVByaXZhdGVLZXkgPSBmdW5jdGlvbihyc2FLZXkpIHsKICAvLyBQcml2YXRlS2V5SW5mbwogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyB2ZXJzaW9uICgwKQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoMCkuZ2V0Qnl0ZXMoKSksCiAgICAvLyBwcml2YXRlS2V5QWxnb3JpdGhtCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKHBraS5vaWRzLnJzYUVuY3J5cHRpb24pLmdldEJ5dGVzKCkpLAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgIF0pLAogICAgLy8gUHJpdmF0ZUtleQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsCiAgICAgIGFzbjEudG9EZXIocnNhS2V5KS5nZXRCeXRlcygpKQogICAgXSk7Cn07CgovKioKICogQ29udmVydHMgYSBwcml2YXRlIGtleSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgYSBQcml2YXRlS2V5SW5mbyBjb250YWluaW5nIGFuCiAqICAgICAgICAgIFJTQVByaXZhdGVLZXkgb3IgYW4gUlNBUHJpdmF0ZUtleS4KICoKICogQHJldHVybiB0aGUgcHJpdmF0ZSBrZXkuCiAqLwpwa2kucHJpdmF0ZUtleUZyb21Bc24xID0gZnVuY3Rpb24ob2JqKSB7CiAgLy8gZ2V0IFByaXZhdGVLZXlJbmZvCiAgdmFyIGNhcHR1cmUgPSB7fTsKICB2YXIgZXJyb3JzID0gW107CiAgaWYoYXNuMS52YWxpZGF0ZShvYmosIHByaXZhdGVLZXlWYWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpIHsKICAgIG9iaiA9IGFzbjEuZnJvbURlcihmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnByaXZhdGVLZXkpKTsKICB9CgogIC8vIGdldCBSU0FQcml2YXRlS2V5CiAgY2FwdHVyZSA9IHt9OwogIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcnNhUHJpdmF0ZUtleVZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBwcml2YXRlIGtleS4gJyArCiAgICAgICdBU04uMSBvYmplY3QgZG9lcyBub3QgY29udGFpbiBhbiBSU0FQcml2YXRlS2V5LicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvLyBOb3RlOiBWZXJzaW9uIGlzIGN1cnJlbnRseSBpZ25vcmVkLgogIC8vIGNhcHR1cmUucHJpdmF0ZUtleVZlcnNpb24KICAvLyBGSVhNRTogaW5lZmZpY2llbnQsIGdldCBhIEJpZ0ludGVnZXIgdGhhdCB1c2VzIGJ5dGUgc3RyaW5ncwogIHZhciBuLCBlLCBkLCBwLCBxLCBkUCwgZFEsIHFJbnY7CiAgbiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHJpdmF0ZUtleU1vZHVsdXMpLnRvSGV4KCk7CiAgZSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHJpdmF0ZUtleVB1YmxpY0V4cG9uZW50KS50b0hleCgpOwogIGQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnByaXZhdGVLZXlQcml2YXRlRXhwb25lbnQpLnRvSGV4KCk7CiAgcCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHJpdmF0ZUtleVByaW1lMSkudG9IZXgoKTsKICBxID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5wcml2YXRlS2V5UHJpbWUyKS50b0hleCgpOwogIGRQID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5wcml2YXRlS2V5RXhwb25lbnQxKS50b0hleCgpOwogIGRRID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5wcml2YXRlS2V5RXhwb25lbnQyKS50b0hleCgpOwogIHFJbnYgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnByaXZhdGVLZXlDb2VmZmljaWVudCkudG9IZXgoKTsKCiAgLy8gc2V0IHByaXZhdGUga2V5CiAgcmV0dXJuIHBraS5zZXRSc2FQcml2YXRlS2V5KAogICAgbmV3IEJpZ0ludGVnZXIobiwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIoZSwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIoZCwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIocCwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIocSwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIoZFAsIDE2KSwKICAgIG5ldyBCaWdJbnRlZ2VyKGRRLCAxNiksCiAgICBuZXcgQmlnSW50ZWdlcihxSW52LCAxNikpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgcHJpdmF0ZSBrZXkgdG8gYW4gQVNOLjEgUlNBUHJpdmF0ZUtleS4KICoKICogQHBhcmFtIGtleSB0aGUgcHJpdmF0ZSBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIGFuIFJTQVByaXZhdGVLZXkuCiAqLwpwa2kucHJpdmF0ZUtleVRvQXNuMSA9IHBraS5wcml2YXRlS2V5VG9SU0FQcml2YXRlS2V5ID0gZnVuY3Rpb24oa2V5KSB7CiAgLy8gUlNBUHJpdmF0ZUtleQogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyB2ZXJzaW9uICgwID0gb25seSAyIHByaW1lcywgMSBtdWx0aXBsZSBwcmltZXMpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBhc24xLmludGVnZXJUb0RlcigwKS5nZXRCeXRlcygpKSwKICAgIC8vIG1vZHVsdXMgKG4pCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5uKSksCiAgICAvLyBwdWJsaWNFeHBvbmVudCAoZSkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIF9iblRvQnl0ZXMoa2V5LmUpKSwKICAgIC8vIHByaXZhdGVFeHBvbmVudCAoZCkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIF9iblRvQnl0ZXMoa2V5LmQpKSwKICAgIC8vIHByaXZhdGVLZXlQcmltZTEgKHApCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5wKSksCiAgICAvLyBwcml2YXRlS2V5UHJpbWUyIChxKQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgX2JuVG9CeXRlcyhrZXkucSkpLAogICAgLy8gcHJpdmF0ZUtleUV4cG9uZW50MSAoZFApCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5kUCkpLAogICAgLy8gcHJpdmF0ZUtleUV4cG9uZW50MiAoZFEpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5kUSkpLAogICAgLy8gY29lZmZpY2llbnQgKHFJbnYpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5xSW52KSkKICBdKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIHB1YmxpYyBrZXkgZnJvbSBhbiBBU04uMSBTdWJqZWN0UHVibGljS2V5SW5mbyBvciBSU0FQdWJsaWNLZXkuCiAqCiAqIEBwYXJhbSBvYmogdGhlIGFzbjEgcmVwcmVzZW50YXRpb24gb2YgYSBTdWJqZWN0UHVibGljS2V5SW5mbyBvciBSU0FQdWJsaWNLZXkuCiAqCiAqIEByZXR1cm4gdGhlIHB1YmxpYyBrZXkuCiAqLwpwa2kucHVibGljS2V5RnJvbUFzbjEgPSBmdW5jdGlvbihvYmopIHsKICAvLyBnZXQgU3ViamVjdFB1YmxpY0tleUluZm8KICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZihhc24xLnZhbGlkYXRlKG9iaiwgcHVibGljS2V5VmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICAvLyBnZXQgb2lkCiAgICB2YXIgb2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLnB1YmxpY0tleU9pZCk7CiAgICBpZihvaWQgIT09IHBraS5vaWRzLnJzYUVuY3J5cHRpb24pIHsKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBwdWJsaWMga2V5LiBVbmtub3duIE9JRC4nKTsKICAgICAgZXJyb3Iub2lkID0gb2lkOwogICAgICB0aHJvdyBlcnJvcjsKICAgIH0KICAgIG9iaiA9IGNhcHR1cmUucnNhUHVibGljS2V5OwogIH0KCiAgLy8gZ2V0IFJTQSBwYXJhbXMKICBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHJzYVB1YmxpY0tleVZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBwdWJsaWMga2V5LiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBkb2VzIG5vdCBjb250YWluIGFuIFJTQVB1YmxpY0tleS4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gRklYTUU6IGluZWZmaWNpZW50LCBnZXQgYSBCaWdJbnRlZ2VyIHRoYXQgdXNlcyBieXRlIHN0cmluZ3MKICB2YXIgbiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHVibGljS2V5TW9kdWx1cykudG9IZXgoKTsKICB2YXIgZSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHVibGljS2V5RXhwb25lbnQpLnRvSGV4KCk7CgogIC8vIHNldCBwdWJsaWMga2V5CiAgcmV0dXJuIHBraS5zZXRSc2FQdWJsaWNLZXkoCiAgICBuZXcgQmlnSW50ZWdlcihuLCAxNiksCiAgICBuZXcgQmlnSW50ZWdlcihlLCAxNikpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgcHVibGljIGtleSB0byBhbiBBU04uMSBTdWJqZWN0UHVibGljS2V5SW5mby4KICoKICogQHBhcmFtIGtleSB0aGUgcHVibGljIGtleS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIFN1YmplY3RQdWJsaWNLZXlJbmZvLgogKi8KcGtpLnB1YmxpY0tleVRvQXNuMSA9IHBraS5wdWJsaWNLZXlUb1N1YmplY3RQdWJsaWNLZXlJbmZvID0gZnVuY3Rpb24oa2V5KSB7CiAgLy8gU3ViamVjdFB1YmxpY0tleUluZm8KICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gQWxnb3JpdGhtSWRlbnRpZmllcgogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBhbGdvcml0aG0KICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgIGFzbjEub2lkVG9EZXIocGtpLm9pZHMucnNhRW5jcnlwdGlvbikuZ2V0Qnl0ZXMoKSksCiAgICAgIC8vIHBhcmFtZXRlcnMgKG51bGwpCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuTlVMTCwgZmFsc2UsICcnKQogICAgXSksCiAgICAvLyBzdWJqZWN0UHVibGljS2V5CiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLkJJVFNUUklORywgZmFsc2UsIFsKICAgICAgcGtpLnB1YmxpY0tleVRvUlNBUHVibGljS2V5KGtleSkKICAgIF0pCiAgXSk7Cn07CgovKioKICogQ29udmVydHMgYSBwdWJsaWMga2V5IHRvIGFuIEFTTi4xIFJTQVB1YmxpY0tleS4KICoKICogQHBhcmFtIGtleSB0aGUgcHVibGljIGtleS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIFJTQVB1YmxpY0tleS4KICovCnBraS5wdWJsaWNLZXlUb1JTQVB1YmxpY0tleSA9IGZ1bmN0aW9uKGtleSkgewogIC8vIFJTQVB1YmxpY0tleQogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyBtb2R1bHVzIChuKQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgX2JuVG9CeXRlcyhrZXkubikpLAogICAgLy8gcHVibGljRXhwb25lbnQgKGUpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5lKSkKICBdKTsKfTsKCi8qKgogKiBFbmNvZGVzIGEgbWVzc2FnZSB1c2luZyBQS0NTIzEgdjEuNSBwYWRkaW5nLgogKgogKiBAcGFyYW0gbSB0aGUgbWVzc2FnZSB0byBlbmNvZGUuCiAqIEBwYXJhbSBrZXkgdGhlIFJTQSBrZXkgdG8gdXNlLgogKiBAcGFyYW0gYnQgdGhlIGJsb2NrIHR5cGUgdG8gdXNlLCBpLmUuIGVpdGhlciAweDAxIChmb3Igc2lnbmluZykgb3IgMHgwMgogKiAgICAgICAgICAoZm9yIGVuY3J5cHRpb24pLgogKgogKiBAcmV0dXJuIHRoZSBwYWRkZWQgYnl0ZSBidWZmZXIuCiAqLwpmdW5jdGlvbiBfZW5jb2RlUGtjczFfdjFfNShtLCBrZXksIGJ0KSB7CiAgdmFyIGViID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKCiAgLy8gZ2V0IHRoZSBsZW5ndGggb2YgdGhlIG1vZHVsdXMgaW4gYnl0ZXMKICB2YXIgayA9IE1hdGguY2VpbChrZXkubi5iaXRMZW5ndGgoKSAvIDgpOwoKICAvKiB1c2UgUEtDUyMxIHYxLjUgcGFkZGluZyAqLwogIGlmKG0ubGVuZ3RoID4gKGsgLSAxMSkpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignTWVzc2FnZSBpcyB0b28gbG9uZyBmb3IgUEtDUyMxIHYxLjUgcGFkZGluZy4nKTsKICAgIGVycm9yLmxlbmd0aCA9IG0ubGVuZ3RoOwogICAgZXJyb3IubWF4ID0gayAtIDExOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvKiBBIGJsb2NrIHR5cGUgQlQsIGEgcGFkZGluZyBzdHJpbmcgUFMsIGFuZCB0aGUgZGF0YSBEIHNoYWxsIGJlCiAgICBmb3JtYXR0ZWQgaW50byBhbiBvY3RldCBzdHJpbmcgRUIsIHRoZSBlbmNyeXB0aW9uIGJsb2NrOgoKICAgIEVCID0gMDAgfHwgQlQgfHwgUFMgfHwgMDAgfHwgRAoKICAgIFRoZSBibG9jayB0eXBlIEJUIHNoYWxsIGJlIGEgc2luZ2xlIG9jdGV0IGluZGljYXRpbmcgdGhlIHN0cnVjdHVyZSBvZgogICAgdGhlIGVuY3J5cHRpb24gYmxvY2suIEZvciB0aGlzIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IGl0IHNoYWxsIGhhdmUKICAgIHZhbHVlIDAwLCAwMSwgb3IgMDIuIEZvciBhIHByaXZhdGUta2V5IG9wZXJhdGlvbiwgdGhlIGJsb2NrIHR5cGUKICAgIHNoYWxsIGJlIDAwIG9yIDAxLiBGb3IgYSBwdWJsaWMta2V5IG9wZXJhdGlvbiwgaXQgc2hhbGwgYmUgMDIuCgogICAgVGhlIHBhZGRpbmcgc3RyaW5nIFBTIHNoYWxsIGNvbnNpc3Qgb2Ygay0zLXx8RHx8IG9jdGV0cy4gRm9yIGJsb2NrCiAgICB0eXBlIDAwLCB0aGUgb2N0ZXRzIHNoYWxsIGhhdmUgdmFsdWUgMDA7IGZvciBibG9jayB0eXBlIDAxLCB0aGV5CiAgICBzaGFsbCBoYXZlIHZhbHVlIEZGOyBhbmQgZm9yIGJsb2NrIHR5cGUgMDIsIHRoZXkgc2hhbGwgYmUKICAgIHBzZXVkb3JhbmRvbWx5IGdlbmVyYXRlZCBhbmQgbm9uemVyby4gVGhpcyBtYWtlcyB0aGUgbGVuZ3RoIG9mIHRoZQogICAgZW5jcnlwdGlvbiBibG9jayBFQiBlcXVhbCB0byBrLiAqLwoKICAvLyBidWlsZCB0aGUgZW5jcnlwdGlvbiBibG9jawogIGViLnB1dEJ5dGUoMHgwMCk7CiAgZWIucHV0Qnl0ZShidCk7CgogIC8vIGNyZWF0ZSB0aGUgcGFkZGluZwogIHZhciBwYWROdW0gPSBrIC0gMyAtIG0ubGVuZ3RoOwogIHZhciBwYWRCeXRlOwogIC8vIHByaXZhdGUga2V5IG9wCiAgaWYoYnQgPT09IDB4MDAgfHwgYnQgPT09IDB4MDEpIHsKICAgIHBhZEJ5dGUgPSAoYnQgPT09IDB4MDApID8gMHgwMCA6IDB4RkY7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgcGFkTnVtOyArK2kpIHsKICAgICAgZWIucHV0Qnl0ZShwYWRCeXRlKTsKICAgIH0KICB9IGVsc2UgewogICAgLy8gcHVibGljIGtleSBvcAogICAgLy8gcGFkIHdpdGggcmFuZG9tIG5vbi16ZXJvIHZhbHVlcwogICAgd2hpbGUocGFkTnVtID4gMCkgewogICAgICB2YXIgbnVtWmVyb3MgPSAwOwogICAgICB2YXIgcGFkQnl0ZXMgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMocGFkTnVtKTsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHBhZE51bTsgKytpKSB7CiAgICAgICAgcGFkQnl0ZSA9IHBhZEJ5dGVzLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaWYocGFkQnl0ZSA9PT0gMCkgewogICAgICAgICAgKytudW1aZXJvczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZWIucHV0Qnl0ZShwYWRCeXRlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcGFkTnVtID0gbnVtWmVyb3M7CiAgICB9CiAgfQoKICAvLyB6ZXJvIGZvbGxvd2VkIGJ5IG1lc3NhZ2UKICBlYi5wdXRCeXRlKDB4MDApOwogIGViLnB1dEJ5dGVzKG0pOwoKICByZXR1cm4gZWI7Cn0KCi8qKgogKiBEZWNvZGVzIGEgbWVzc2FnZSB1c2luZyBQS0NTIzEgdjEuNSBwYWRkaW5nLgogKgogKiBAcGFyYW0gZW0gdGhlIG1lc3NhZ2UgdG8gZGVjb2RlLgogKiBAcGFyYW0ga2V5IHRoZSBSU0Ega2V5IHRvIHVzZS4KICogQHBhcmFtIHB1YiB0cnVlIGlmIHRoZSBrZXkgaXMgYSBwdWJsaWMga2V5LCBmYWxzZSBpZiBpdCBpcyBwcml2YXRlLgogKiBAcGFyYW0gbWwgdGhlIG1lc3NhZ2UgbGVuZ3RoLCBpZiBzcGVjaWZpZWQuCiAqCiAqIEByZXR1cm4gdGhlIGRlY29kZWQgYnl0ZXMuCiAqLwpmdW5jdGlvbiBfZGVjb2RlUGtjczFfdjFfNShlbSwga2V5LCBwdWIsIG1sKSB7CiAgLy8gZ2V0IHRoZSBsZW5ndGggb2YgdGhlIG1vZHVsdXMgaW4gYnl0ZXMKICB2YXIgayA9IE1hdGguY2VpbChrZXkubi5iaXRMZW5ndGgoKSAvIDgpOwoKICAvKiBJdCBpcyBhbiBlcnJvciBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG9jY3VyczoKCiAgICAxLiBUaGUgZW5jcnlwdGlvbiBibG9jayBFQiBjYW5ub3QgYmUgcGFyc2VkIHVuYW1iaWd1b3VzbHkuCiAgICAyLiBUaGUgcGFkZGluZyBzdHJpbmcgUFMgY29uc2lzdHMgb2YgZmV3ZXIgdGhhbiBlaWdodCBvY3RldHMKICAgICAgb3IgaXMgaW5jb25zaXNlbnQgd2l0aCB0aGUgYmxvY2sgdHlwZSBCVC4KICAgIDMuIFRoZSBkZWNyeXB0aW9uIHByb2Nlc3MgaXMgYSBwdWJsaWMta2V5IG9wZXJhdGlvbiBhbmQgdGhlIGJsb2NrCiAgICAgIHR5cGUgQlQgaXMgbm90IDAwIG9yIDAxLCBvciB0aGUgZGVjcnlwdGlvbiBwcm9jZXNzIGlzIGEKICAgICAgcHJpdmF0ZS1rZXkgb3BlcmF0aW9uIGFuZCB0aGUgYmxvY2sgdHlwZSBpcyBub3QgMDIuCiAgICovCgogIC8vIHBhcnNlIHRoZSBlbmNyeXB0aW9uIGJsb2NrCiAgdmFyIGViID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoZW0pOwogIHZhciBmaXJzdCA9IGViLmdldEJ5dGUoKTsKICB2YXIgYnQgPSBlYi5nZXRCeXRlKCk7CiAgaWYoZmlyc3QgIT09IDB4MDAgfHwKICAgIChwdWIgJiYgYnQgIT09IDB4MDAgJiYgYnQgIT09IDB4MDEpIHx8CiAgICAoIXB1YiAmJiBidCAhPSAweDAyKSB8fAogICAgKHB1YiAmJiBidCA9PT0gMHgwMCAmJiB0eXBlb2YobWwpID09PSAndW5kZWZpbmVkJykpIHsKICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvbiBibG9jayBpcyBpbnZhbGlkLicpOwogIH0KCiAgdmFyIHBhZE51bSA9IDA7CiAgaWYoYnQgPT09IDB4MDApIHsKICAgIC8vIGNoZWNrIGFsbCBwYWRkaW5nIGJ5dGVzIGZvciAweDAwCiAgICBwYWROdW0gPSBrIC0gMyAtIG1sOwogICAgZm9yKHZhciBpID0gMDsgaSA8IHBhZE51bTsgKytpKSB7CiAgICAgIGlmKGViLmdldEJ5dGUoKSAhPT0gMHgwMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvbiBibG9jayBpcyBpbnZhbGlkLicpOwogICAgICB9CiAgICB9CiAgfSBlbHNlIGlmKGJ0ID09PSAweDAxKSB7CiAgICAvLyBmaW5kIHRoZSBmaXJzdCBieXRlIHRoYXQgaXNuJ3QgMHhGRiwgc2hvdWxkIGJlIGFmdGVyIGFsbCBwYWRkaW5nCiAgICBwYWROdW0gPSAwOwogICAgd2hpbGUoZWIubGVuZ3RoKCkgPiAxKSB7CiAgICAgIGlmKGViLmdldEJ5dGUoKSAhPT0gMHhGRikgewogICAgICAgIC0tZWIucmVhZDsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICArK3BhZE51bTsKICAgIH0KICB9IGVsc2UgaWYoYnQgPT09IDB4MDIpIHsKICAgIC8vIGxvb2sgZm9yIDB4MDAgYnl0ZQogICAgcGFkTnVtID0gMDsKICAgIHdoaWxlKGViLmxlbmd0aCgpID4gMSkgewogICAgICBpZihlYi5nZXRCeXRlKCkgPT09IDB4MDApIHsKICAgICAgICAtLWViLnJlYWQ7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgKytwYWROdW07CiAgICB9CiAgfQoKICAvLyB6ZXJvIG11c3QgYmUgMHgwMCBhbmQgcGFkTnVtIG11c3QgYmUgKGsgLSAzIC0gbWVzc2FnZSBsZW5ndGgpCiAgdmFyIHplcm8gPSBlYi5nZXRCeXRlKCk7CiAgaWYoemVybyAhPT0gMHgwMCB8fCBwYWROdW0gIT09IChrIC0gMyAtIGViLmxlbmd0aCgpKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0aW9uIGJsb2NrIGlzIGludmFsaWQuJyk7CiAgfQoKICByZXR1cm4gZWIuZ2V0Qnl0ZXMoKTsKfQoKLyoqCiAqIFJ1bnMgdGhlIGtleS1nZW5lcmF0aW9uIGFsZ29yaXRobSBhc3luY2hyb25vdXNseSwgZWl0aGVyIGluIHRoZSBiYWNrZ3JvdW5kCiAqIHZpYSBXZWIgV29ya2Vycywgb3IgdXNpbmcgdGhlIG1haW4gdGhyZWFkIGFuZCBzZXRJbW1lZGlhdGUuCiAqCiAqIEBwYXJhbSBzdGF0ZSB0aGUga2V5LXBhaXIgZ2VuZXJhdGlvbiBzdGF0ZS4KICogQHBhcmFtIFtvcHRpb25zXSBvcHRpb25zIGZvciBrZXktcGFpciBnZW5lcmF0aW9uOgogKiAgICAgICAgICB3b3JrZXJTY3JpcHQgdGhlIHdvcmtlciBzY3JpcHQgVVJMLgogKiAgICAgICAgICB3b3JrZXJzIHRoZSBudW1iZXIgb2Ygd2ViIHdvcmtlcnMgKGlmIHN1cHBvcnRlZCkgdG8gdXNlLAogKiAgICAgICAgICAgIChkZWZhdWx0OiAyLCAtMSB0byB1c2UgZXN0aW1hdGVkIGNvcmVzIG1pbnVzIG9uZSkuCiAqICAgICAgICAgIHdvcmtMb2FkIHRoZSBzaXplIG9mIHRoZSB3b3JrIGxvYWQsIGllOiBudW1iZXIgb2YgcG9zc2libGUgcHJpbWUKICogICAgICAgICAgICBudW1iZXJzIGZvciBlYWNoIHdlYiB3b3JrZXIgdG8gY2hlY2sgcGVyIHdvcmsgYXNzaWdubWVudCwKICogICAgICAgICAgICAoZGVmYXVsdDogMTAwKS4KICogQHBhcmFtIGNhbGxiYWNrKGVyciwga2V5cGFpcikgY2FsbGVkIG9uY2UgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCiAqLwpmdW5jdGlvbiBfZ2VuZXJhdGVLZXlQYWlyKHN0YXRlLCBvcHRpb25zLCBjYWxsYmFjaykgewogIGlmKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdGlvbnM7CiAgICBvcHRpb25zID0ge307CiAgfQogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICB2YXIgb3B0cyA9IHsKICAgIGFsZ29yaXRobTogewogICAgICBuYW1lOiBvcHRpb25zLmFsZ29yaXRobSB8fCAnUFJJTUVJTkMnLAogICAgICBvcHRpb25zOiB7CiAgICAgICAgd29ya2Vyczogb3B0aW9ucy53b3JrZXJzIHx8IDIsCiAgICAgICAgd29ya0xvYWQ6IG9wdGlvbnMud29ya0xvYWQgfHwgMTAwLAogICAgICAgIHdvcmtlclNjcmlwdDogb3B0aW9ucy53b3JrZXJTY3JpcHQKICAgICAgfQogICAgfQogIH07CiAgaWYoJ3BybmcnIGluIG9wdGlvbnMpIHsKICAgIG9wdHMucHJuZyA9IG9wdGlvbnMucHJuZzsKICB9CgogIGdlbmVyYXRlKCk7CgogIGZ1bmN0aW9uIGdlbmVyYXRlKCkgewogICAgLy8gZmluZCBwIGFuZCB0aGVuIHEgKGRvbmUgaW4gc2VyaWVzIHRvIHNpbXBsaWZ5KQogICAgZ2V0UHJpbWUoc3RhdGUucEJpdHMsIGZ1bmN0aW9uKGVyciwgbnVtKSB7CiAgICAgIGlmKGVycikgewogICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICB9CiAgICAgIHN0YXRlLnAgPSBudW07CiAgICAgIGlmKHN0YXRlLnEgIT09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmluaXNoKGVyciwgc3RhdGUucSk7CiAgICAgIH0KICAgICAgZ2V0UHJpbWUoc3RhdGUucUJpdHMsIGZpbmlzaCk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGdldFByaW1lKGJpdHMsIGNhbGxiYWNrKSB7CiAgICBmb3JnZS5wcmltZS5nZW5lcmF0ZVByb2JhYmxlUHJpbWUoYml0cywgb3B0cywgY2FsbGJhY2spOwogIH0KCiAgZnVuY3Rpb24gZmluaXNoKGVyciwgbnVtKSB7CiAgICBpZihlcnIpIHsKICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICB9CgogICAgLy8gc2V0IHEKICAgIHN0YXRlLnEgPSBudW07CgogICAgLy8gZW5zdXJlIHAgaXMgbGFyZ2VyIHRoYW4gcSAoc3dhcCB0aGVtIGlmIG5vdCkKICAgIGlmKHN0YXRlLnAuY29tcGFyZVRvKHN0YXRlLnEpIDwgMCkgewogICAgICB2YXIgdG1wID0gc3RhdGUucDsKICAgICAgc3RhdGUucCA9IHN0YXRlLnE7CiAgICAgIHN0YXRlLnEgPSB0bXA7CiAgICB9CgogICAgLy8gZW5zdXJlIHAgaXMgY29wcmltZSB3aXRoIGUKICAgIGlmKHN0YXRlLnAuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpLmdjZChzdGF0ZS5lKQogICAgICAuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSAhPT0gMCkgewogICAgICBzdGF0ZS5wID0gbnVsbDsKICAgICAgZ2VuZXJhdGUoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIGVuc3VyZSBxIGlzIGNvcHJpbWUgd2l0aCBlCiAgICBpZihzdGF0ZS5xLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKS5nY2Qoc3RhdGUuZSkKICAgICAgLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgIT09IDApIHsKICAgICAgc3RhdGUucSA9IG51bGw7CiAgICAgIGdldFByaW1lKHN0YXRlLnFCaXRzLCBmaW5pc2gpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gY29tcHV0ZSBwaGk6IChwIC0gMSkocSAtIDEpIChFdWxlcidzIHRvdGllbnQgZnVuY3Rpb24pCiAgICBzdGF0ZS5wMSA9IHN0YXRlLnAuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOwogICAgc3RhdGUucTEgPSBzdGF0ZS5xLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTsKICAgIHN0YXRlLnBoaSA9IHN0YXRlLnAxLm11bHRpcGx5KHN0YXRlLnExKTsKCiAgICAvLyBlbnN1cmUgZSBhbmQgcGhpIGFyZSBjb3ByaW1lCiAgICBpZihzdGF0ZS5waGkuZ2NkKHN0YXRlLmUpLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgIT09IDApIHsKICAgICAgLy8gcGhpIGFuZCBlIGFyZW4ndCBjb3ByaW1lLCBzbyBnZW5lcmF0ZSBhIG5ldyBwIGFuZCBxCiAgICAgIHN0YXRlLnAgPSBzdGF0ZS5xID0gbnVsbDsKICAgICAgZ2VuZXJhdGUoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIGNyZWF0ZSBuLCBlbnN1cmUgbiBpcyBoYXMgdGhlIHJpZ2h0IG51bWJlciBvZiBiaXRzCiAgICBzdGF0ZS5uID0gc3RhdGUucC5tdWx0aXBseShzdGF0ZS5xKTsKICAgIGlmKHN0YXRlLm4uYml0TGVuZ3RoKCkgIT09IHN0YXRlLmJpdHMpIHsKICAgICAgLy8gZmFpbGVkLCBnZXQgbmV3IHEKICAgICAgc3RhdGUucSA9IG51bGw7CiAgICAgIGdldFByaW1lKHN0YXRlLnFCaXRzLCBmaW5pc2gpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gc2V0IGtleXMKICAgIHZhciBkID0gc3RhdGUuZS5tb2RJbnZlcnNlKHN0YXRlLnBoaSk7CiAgICBzdGF0ZS5rZXlzID0gewogICAgICBwcml2YXRlS2V5OiBwa2kucnNhLnNldFByaXZhdGVLZXkoCiAgICAgICAgc3RhdGUubiwgc3RhdGUuZSwgZCwgc3RhdGUucCwgc3RhdGUucSwKICAgICAgICBkLm1vZChzdGF0ZS5wMSksIGQubW9kKHN0YXRlLnExKSwKICAgICAgICBzdGF0ZS5xLm1vZEludmVyc2Uoc3RhdGUucCkpLAogICAgICBwdWJsaWNLZXk6IHBraS5yc2Euc2V0UHVibGljS2V5KHN0YXRlLm4sIHN0YXRlLmUpCiAgICB9OwoKICAgIGNhbGxiYWNrKG51bGwsIHN0YXRlLmtleXMpOwogIH0KfQoKLyoqCiAqIENvbnZlcnRzIGEgcG9zaXRpdmUgQmlnSW50ZWdlciBpbnRvIDIncy1jb21wbGVtZW50IGJpZy1lbmRpYW4gYnl0ZXMuCiAqCiAqIEBwYXJhbSBiIHRoZSBiaWcgaW50ZWdlciB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBieXRlcy4KICovCmZ1bmN0aW9uIF9iblRvQnl0ZXMoYikgewogIC8vIHByZXBlbmQgMHgwMCBpZiBmaXJzdCBieXRlID49IDB4ODAKICB2YXIgaGV4ID0gYi50b1N0cmluZygxNik7CiAgaWYoaGV4WzBdID49ICc4JykgewogICAgaGV4ID0gJzAwJyArIGhleDsKICB9CiAgcmV0dXJuIGZvcmdlLnV0aWwuaGV4VG9CeXRlcyhoZXgpOwp9CgovKioKICogUmV0dXJucyB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIE1pbGxlci1SYWJpbiB0ZXN0cyB0byBnZW5lcmF0ZSBhCiAqIHByaW1lIHdpdGggYW4gZXJyb3IgcHJvYmFiaWxpdHkgb2YgKDEvMileODAuCiAqCiAqIFNlZSBIYW5kYm9vayBvZiBBcHBsaWVkIENyeXB0b2dyYXBoeSBDaGFwdGVyIDQsIFRhYmxlIDQuNC4KICoKICogQHBhcmFtIGJpdHMgdGhlIGJpdCBzaXplLgogKgogKiBAcmV0dXJuIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgaXRlcmF0aW9ucy4KICovCmZ1bmN0aW9uIF9nZXRNaWxsZXJSYWJpblRlc3RzKGJpdHMpIHsKICBpZihiaXRzIDw9IDEwMCkgcmV0dXJuIDI3OwogIGlmKGJpdHMgPD0gMTUwKSByZXR1cm4gMTg7CiAgaWYoYml0cyA8PSAyMDApIHJldHVybiAxNTsKICBpZihiaXRzIDw9IDI1MCkgcmV0dXJuIDEyOwogIGlmKGJpdHMgPD0gMzAwKSByZXR1cm4gOTsKICBpZihiaXRzIDw9IDM1MCkgcmV0dXJuIDg7CiAgaWYoYml0cyA8PSA0MDApIHJldHVybiA3OwogIGlmKGJpdHMgPD0gNTAwKSByZXR1cm4gNjsKICBpZihiaXRzIDw9IDYwMCkgcmV0dXJuIDU7CiAgaWYoYml0cyA8PSA4MDApIHJldHVybiA0OwogIGlmKGJpdHMgPD0gMTI1MCkgcmV0dXJuIDM7CiAgcmV0dXJuIDI7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3JzYSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9yc2EnLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYXNuMScsCiAgJy4vanNibicsCiAgJy4vb2lkcycsCiAgJy4vcGtjczEnLAogICcuL3ByaW1lJywKICAnLi9yYW5kb20nLAogICcuL3V0aWwnCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFBhc3N3b3JkLWJhc2VkIGVuY3J5cHRpb24gZnVuY3Rpb25zLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKiBAYXV0aG9yIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqIENvcHlyaWdodCAoYykgMjAxMiBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKgogKiBBbiBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbzoKICoKICogRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gOjo9IFNFUVVFTkNFIHsKICogICBlbmNyeXB0aW9uQWxnb3JpdGhtICBFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWREYXRhICAgICAgICBFbmNyeXB0ZWREYXRhIH0KICoKICogRW5jcnlwdGlvbkFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogRW5jcnlwdGVkRGF0YSA6Oj0gT0NURVQgU1RSSU5HCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKaWYodHlwZW9mIEJpZ0ludGVnZXIgPT09ICd1bmRlZmluZWQnKSB7CiAgdmFyIEJpZ0ludGVnZXIgPSBmb3JnZS5qc2JuLkJpZ0ludGVnZXI7Cn0KCi8vIHNob3J0Y3V0IGZvciBhc24uMSBBUEkKdmFyIGFzbjEgPSBmb3JnZS5hc24xOwoKLyogUGFzc3dvcmQtYmFzZWQgZW5jcnlwdGlvbiBpbXBsZW1lbnRhdGlvbi4gKi8KdmFyIHBraSA9IGZvcmdlLnBraSA9IGZvcmdlLnBraSB8fCB7fTsKcGtpLnBiZSA9IGZvcmdlLnBiZSA9IGZvcmdlLnBiZSB8fCB7fTsKdmFyIG9pZHMgPSBwa2kub2lkczsKCi8vIHZhbGlkYXRvciBmb3IgYW4gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gc3RydWN0dXJlCi8vIE5vdGU6IEN1cnJlbnRseSBvbmx5IHdvcmtzIHcvYWxnb3JpdGhtIHBhcmFtcwp2YXIgZW5jcnlwdGVkUHJpdmF0ZUtleVZhbGlkYXRvciA9IHsKICBuYW1lOiAnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8nLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uZW5jcnlwdGlvbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2VuY3J5cHRpb25PaWQnCiAgICB9LCB7CiAgICAgIG5hbWU6ICdBbGdvcml0aG1JZGVudGlmaWVyLnBhcmFtZXRlcnMnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIGNhcHR1cmVBc24xOiAnZW5jcnlwdGlvblBhcmFtcycKICAgIH1dCiAgfSwgewogICAgLy8gZW5jcnlwdGVkRGF0YQogICAgbmFtZTogJ0VuY3J5cHRlZFByaXZhdGVLZXlJbmZvLmVuY3J5cHRlZERhdGEnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2VuY3J5cHRlZERhdGEnCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYSBQQkVTMkFsZ29yaXRobXMgc3RydWN0dXJlCi8vIE5vdGU6IEN1cnJlbnRseSBvbmx5IHdvcmtzIHcvUEJLREYyICsgQUVTIGVuY3J5cHRpb24gc2NoZW1lcwp2YXIgUEJFUzJBbGdvcml0aG1zVmFsaWRhdG9yID0gewogIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnUEJFUzJBbGdvcml0aG1zLmtleURlcml2YXRpb25GdW5jJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMua2V5RGVyaXZhdGlvbkZ1bmMub2lkJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdrZGZPaWQnCiAgICB9LCB7CiAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMucGFyYW1zJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnUEJFUzJBbGdvcml0aG1zLnBhcmFtcy5zYWx0JywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAna2RmU2FsdCcKICAgICAgfSwgewogICAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMucGFyYW1zLml0ZXJhdGlvbkNvdW50JywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgICAgb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgICBjYXB0dXJlOiAna2RmSXRlcmF0aW9uQ291bnQnCiAgICAgIH1dCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnUEJFUzJBbGdvcml0aG1zLmVuY3J5cHRpb25TY2hlbWUub2lkJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdlbmNPaWQnCiAgICB9LCB7CiAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZS5pdicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdlbmNJdicKICAgIH1dCiAgfV0KfTsKCnZhciBwa2NzMTJQYmVQYXJhbXNWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ3BrY3MtMTJQYmVQYXJhbXMnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAncGtjcy0xMlBiZVBhcmFtcy5zYWx0JywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5PQ1RFVFNUUklORywKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdzYWx0JwogIH0sIHsKICAgIG5hbWU6ICdwa2NzLTEyUGJlUGFyYW1zLml0ZXJhdGlvbnMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAnaXRlcmF0aW9ucycKICB9XQp9OwoKLyoqCiAqIEVuY3J5cHRzIGEgQVNOLjEgUHJpdmF0ZUtleUluZm8gb2JqZWN0LCBwcm9kdWNpbmcgYW4gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqCiAqIFBCRVMyQWxnb3JpdGhtcyBBTEdPUklUSE0tSURFTlRJRklFUiA6Oj0KICogICB7IHtQQkVTMi1wYXJhbXMgSURFTlRJRklFRCBCWSBpZC1QQkVTMn0sIC4uLn0KICoKICogaWQtUEJFUzIgT0JKRUNUIElERU5USUZJRVIgOjo9IHtwa2NzLTUgMTN9CiAqCiAqIFBCRVMyLXBhcmFtcyA6Oj0gU0VRVUVOQ0UgewogKiAgIGtleURlcml2YXRpb25GdW5jIEFsZ29yaXRobUlkZW50aWZpZXIge3tQQkVTMi1LREZzfX0sCiAqICAgZW5jcnlwdGlvblNjaGVtZSBBbGdvcml0aG1JZGVudGlmaWVyIHt7UEJFUzItRW5jc319CiAqIH0KICoKICogUEJFUzItS0RGcyBBTEdPUklUSE0tSURFTlRJRklFUiA6Oj0KICogICB7IHtQQktERjItcGFyYW1zIElERU5USUZJRUQgQlkgaWQtUEJLREYyfSwgLi4uIH0KICoKICogUEJFUzItRW5jcyBBTEdPUklUSE0tSURFTlRJRklFUiA6Oj0geyAuLi4gfQogKgogKiBQQktERjItcGFyYW1zIDo6PSBTRVFVRU5DRSB7CiAqICAgc2FsdCBDSE9JQ0UgewogKiAgICAgc3BlY2lmaWVkIE9DVEVUIFNUUklORywKICogICAgIG90aGVyU291cmNlIEFsZ29yaXRobUlkZW50aWZpZXIge3tQQktERjItU2FsdFNvdXJjZXN9fQogKiAgIH0sCiAqICAgaXRlcmF0aW9uQ291bnQgSU5URUdFUiAoMS4uTUFYKSwKICogICBrZXlMZW5ndGggSU5URUdFUiAoMS4uTUFYKSBPUFRJT05BTCwKICogICBwcmYgQWxnb3JpdGhtSWRlbnRpZmllciB7e1BCS0RGMi1QUkZzfX0gREVGQVVMVCBhbGdpZC1obWFjV2l0aFNIQTEKICogfQogKgogKiBAcGFyYW0gb2JqIHRoZSBBU04uMSBQcml2YXRlS2V5SW5mbyBvYmplY3QuCiAqIEBwYXJhbSBwYXNzd29yZCB0aGUgcGFzc3dvcmQgdG8gZW5jcnlwdCB3aXRoLgogKiBAcGFyYW0gb3B0aW9uczoKICogICAgICAgICAgYWxnb3JpdGhtIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byB1c2UKICogICAgICAgICAgICAoJ2FlczEyOCcsICdhZXMxOTInLCAnYWVzMjU2JywgJzNkZXMnKSwgZGVmYXVsdHMgdG8gJ2FlczEyOCcuCiAqICAgICAgICAgIGNvdW50IHRoZSBpdGVyYXRpb24gY291bnQgdG8gdXNlLgogKiAgICAgICAgICBzYWx0U2l6ZSB0aGUgc2FsdCBzaXplIHRvIHVzZS4KICoKICogQHJldHVybiB0aGUgQVNOLjEgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqLwpwa2kuZW5jcnlwdFByaXZhdGVLZXlJbmZvID0gZnVuY3Rpb24ob2JqLCBwYXNzd29yZCwgb3B0aW9ucykgewogIC8vIHNldCBkZWZhdWx0IG9wdGlvbnMKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICBvcHRpb25zLnNhbHRTaXplID0gb3B0aW9ucy5zYWx0U2l6ZSB8fCA4OwogIG9wdGlvbnMuY291bnQgPSBvcHRpb25zLmNvdW50IHx8IDIwNDg7CiAgb3B0aW9ucy5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobSB8fCAnYWVzMTI4JzsKCiAgLy8gZ2VuZXJhdGUgUEJFIHBhcmFtcwogIHZhciBzYWx0ID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzU3luYyhvcHRpb25zLnNhbHRTaXplKTsKICB2YXIgY291bnQgPSBvcHRpb25zLmNvdW50OwogIHZhciBjb3VudEJ5dGVzID0gYXNuMS5pbnRlZ2VyVG9EZXIoY291bnQpOwogIHZhciBka0xlbjsKICB2YXIgZW5jcnlwdGlvbkFsZ29yaXRobTsKICB2YXIgZW5jcnlwdGVkRGF0YTsKICBpZihvcHRpb25zLmFsZ29yaXRobS5pbmRleE9mKCdhZXMnKSA9PT0gMCB8fCBvcHRpb25zLmFsZ29yaXRobSA9PT0gJ2RlcycpIHsKICAgIC8vIERvIFBCRVMyCiAgICB2YXIgaXZMZW4sIGVuY09pZCwgY2lwaGVyRm47CiAgICBzd2l0Y2gob3B0aW9ucy5hbGdvcml0aG0pIHsKICAgIGNhc2UgJ2FlczEyOCc6CiAgICAgIGRrTGVuID0gMTY7CiAgICAgIGl2TGVuID0gMTY7CiAgICAgIGVuY09pZCA9IG9pZHNbJ2FlczEyOC1DQkMnXTsKICAgICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgYnJlYWs7CiAgICBjYXNlICdhZXMxOTInOgogICAgICBka0xlbiA9IDI0OwogICAgICBpdkxlbiA9IDE2OwogICAgICBlbmNPaWQgPSBvaWRzWydhZXMxOTItQ0JDJ107CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnYWVzMjU2JzoKICAgICAgZGtMZW4gPSAzMjsKICAgICAgaXZMZW4gPSAxNjsKICAgICAgZW5jT2lkID0gb2lkc1snYWVzMjU2LUNCQyddOwogICAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyOwogICAgICBicmVhazsKICAgIGNhc2UgJ2Rlcyc6CiAgICAgIGRrTGVuID0gODsKICAgICAgaXZMZW4gPSA4OwogICAgICBlbmNPaWQgPSBvaWRzWydkZXNDQkMnXTsKICAgICAgY2lwaGVyRm4gPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCBlbmNyeXB0IHByaXZhdGUga2V5LiBVbmtub3duIGVuY3J5cHRpb24gYWxnb3JpdGhtLicpOwogICAgICBlcnJvci5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLy8gZW5jcnlwdCBwcml2YXRlIGtleSB1c2luZyBwYmUgU0hBLTEgYW5kIEFFUy9ERVMKICAgIHZhciBkayA9IGZvcmdlLnBrY3M1LnBia2RmMihwYXNzd29yZCwgc2FsdCwgY291bnQsIGRrTGVuKTsKICAgIHZhciBpdiA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlc1N5bmMoaXZMZW4pOwogICAgdmFyIGNpcGhlciA9IGNpcGhlckZuKGRrKTsKICAgIGNpcGhlci5zdGFydChpdik7CiAgICBjaXBoZXIudXBkYXRlKGFzbjEudG9EZXIob2JqKSk7CiAgICBjaXBoZXIuZmluaXNoKCk7CiAgICBlbmNyeXB0ZWREYXRhID0gY2lwaGVyLm91dHB1dC5nZXRCeXRlcygpOwoKICAgIGVuY3J5cHRpb25BbGdvcml0aG0gPSBhc24xLmNyZWF0ZSgKICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihvaWRzWydwa2NzNVBCRVMyJ10pLmdldEJ5dGVzKCkpLAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8ga2V5RGVyaXZhdGlvbkZ1bmMKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAgIGFzbjEub2lkVG9EZXIob2lkc1sncGtjczVQQktERjInXSkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICAvLyBQQktERjItcGFyYW1zCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICAgIC8vIHNhbHQKICAgICAgICAgICAgYXNuMS5jcmVhdGUoCiAgICAgICAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIHNhbHQpLAogICAgICAgICAgICAvLyBpdGVyYXRpb24gY291bnQKICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgICAgICAgICBjb3VudEJ5dGVzLmdldEJ5dGVzKCkpCiAgICAgICAgICBdKQogICAgICAgIF0pLAogICAgICAgIC8vIGVuY3J5cHRpb25TY2hlbWUKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAgIGFzbjEub2lkVG9EZXIoZW5jT2lkKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIGl2CiAgICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIGl2KQogICAgICAgIF0pCiAgICAgIF0pCiAgICBdKTsKICB9IGVsc2UgaWYob3B0aW9ucy5hbGdvcml0aG0gPT09ICczZGVzJykgewogICAgLy8gRG8gUEtDUzEyIFBCRQogICAgZGtMZW4gPSAyNDsKCiAgICB2YXIgc2FsdEJ5dGVzID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcihzYWx0KTsKICAgIHZhciBkayA9IHBraS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocGFzc3dvcmQsIHNhbHRCeXRlcywgMSwgY291bnQsIGRrTGVuKTsKICAgIHZhciBpdiA9IHBraS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocGFzc3dvcmQsIHNhbHRCeXRlcywgMiwgY291bnQsIGRrTGVuKTsKICAgIHZhciBjaXBoZXIgPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcihkayk7CiAgICBjaXBoZXIuc3RhcnQoaXYpOwogICAgY2lwaGVyLnVwZGF0ZShhc24xLnRvRGVyKG9iaikpOwogICAgY2lwaGVyLmZpbmlzaCgpOwogICAgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5vdXRwdXQuZ2V0Qnl0ZXMoKTsKCiAgICBlbmNyeXB0aW9uQWxnb3JpdGhtID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgIGFzbjEub2lkVG9EZXIob2lkc1sncGJlV2l0aFNIQUFuZDMtS2V5VHJpcGxlREVTLUNCQyddKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGtjcy0xMlBiZVBhcmFtcwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gc2FsdAogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLCBzYWx0KSwKICAgICAgICAvLyBpdGVyYXRpb24gY291bnQKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgICAgY291bnRCeXRlcy5nZXRCeXRlcygpKQogICAgICBdKQogICAgXSk7CiAgfSBlbHNlIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IGVuY3J5cHQgcHJpdmF0ZSBrZXkuIFVua25vd24gZW5jcnlwdGlvbiBhbGdvcml0aG0uJyk7CiAgICBlcnJvci5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8KICB2YXIgcnZhbCA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIGVuY3J5cHRpb25BbGdvcml0aG0KICAgIGVuY3J5cHRpb25BbGdvcml0aG0sCiAgICAvLyBlbmNyeXB0ZWREYXRhCiAgICBhc24xLmNyZWF0ZSgKICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIGVuY3J5cHRlZERhdGEpCiAgXSk7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogRGVjcnlwdHMgYSBBU04uMSBQcml2YXRlS2V5SW5mbyBvYmplY3QuCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIG9iamVjdC4KICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byBkZWNyeXB0IHdpdGguCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIFByaXZhdGVLZXlJbmZvIG9uIHN1Y2Nlc3MsIG51bGwgb24gZmFpbHVyZS4KICovCnBraS5kZWNyeXB0UHJpdmF0ZUtleUluZm8gPSBmdW5jdGlvbihvYmosIHBhc3N3b3JkKSB7CiAgdmFyIHJ2YWwgPSBudWxsOwoKICAvLyBnZXQgUEJFIHBhcmFtcwogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgZW5jcnlwdGVkUHJpdmF0ZUtleVZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkuICcgKwogICAgICAnQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZ2V0IGNpcGhlcgogIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuZW5jcnlwdGlvbk9pZCk7CiAgdmFyIGNpcGhlciA9IHBraS5wYmUuZ2V0Q2lwaGVyKG9pZCwgY2FwdHVyZS5lbmNyeXB0aW9uUGFyYW1zLCBwYXNzd29yZCk7CgogIC8vIGdldCBlbmNyeXB0ZWQgZGF0YQogIHZhciBlbmNyeXB0ZWQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLmVuY3J5cHRlZERhdGEpOwoKICBjaXBoZXIudXBkYXRlKGVuY3J5cHRlZCk7CiAgaWYoY2lwaGVyLmZpbmlzaCgpKSB7CiAgICBydmFsID0gYXNuMS5mcm9tRGVyKGNpcGhlci5vdXRwdXQpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgYSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyB0byBQRU0gZm9ybWF0LgogKgogKiBAcGFyYW0gZXBraSB0aGUgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqIEBwYXJhbSBtYXhsaW5lIHRoZSBtYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUsIGRlZmF1bHRzIHRvIDY0LgogKgogKiBAcmV0dXJuIHRoZSBQRU0tZm9ybWF0dGVkIGVuY3J5cHRlZCBwcml2YXRlIGtleS4KICovCnBraS5lbmNyeXB0ZWRQcml2YXRlS2V5VG9QZW0gPSBmdW5jdGlvbihlcGtpLCBtYXhsaW5lKSB7CiAgLy8gY29udmVydCB0byBERVIsIHRoZW4gUEVNLWVuY29kZQogIHZhciBtc2cgPSB7CiAgICB0eXBlOiAnRU5DUllQVEVEIFBSSVZBVEUgS0VZJywKICAgIGJvZHk6IGFzbjEudG9EZXIoZXBraSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgUEVNLWVuY29kZWQgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gdG8gQVNOLjEgZm9ybWF0LiBEZWNyeXB0aW9uCiAqIGlzIG5vdCBwZXJmb3JtZWQuCiAqCiAqIEBwYXJhbSBwZW0gdGhlIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIGluIFBFTS1mb3JtYXQuCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLgogKi8KcGtpLmVuY3J5cHRlZFByaXZhdGVLZXlGcm9tUGVtID0gZnVuY3Rpb24ocGVtKSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdFTkNSWVBURUQgUFJJVkFURSBLRVknKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGVuY3J5cHRlZCBwcml2YXRlIGtleSBmcm9tIFBFTTsgJyArCiAgICAgICdQRU0gaGVhZGVyIHR5cGUgaXMgIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIuJyk7CiAgICBlcnJvci5oZWFkZXJUeXBlID0gbXNnLnR5cGU7CiAgICB0aHJvdyBlcnJvcjsKICB9CiAgaWYobXNnLnByb2NUeXBlICYmIG1zZy5wcm9jVHlwZS50eXBlID09PSAnRU5DUllQVEVEJykgewogICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkgZnJvbSBQRU07ICcgKwogICAgICAnUEVNIGlzIGVuY3J5cHRlZC4nKTsKICB9CgogIC8vIGNvbnZlcnQgREVSIHRvIEFTTi4xIG9iamVjdAogIHJldHVybiBhc24xLmZyb21EZXIobXNnLmJvZHkpOwp9OwoKLyoqCiAqIEVuY3J5cHRzIGFuIFJTQSBwcml2YXRlIGtleS4gQnkgZGVmYXVsdCwgdGhlIGtleSB3aWxsIGJlIHdyYXBwZWQgaW4KICogYSBQcml2YXRlS2V5SW5mbyBhbmQgZW5jcnlwdGVkIHRvIHByb2R1Y2UgYSBQS0NTIzggRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqIFRoaXMgaXMgdGhlIHN0YW5kYXJkLCBwcmVmZXJyZWQgd2F5IHRvIGVuY3J5cHQgYSBwcml2YXRlIGtleS4KICoKICogVG8gcHJvZHVjZSBhIG5vbi1zdGFuZGFyZCBQRU0tZW5jcnlwdGVkIHByaXZhdGUga2V5IHRoYXQgdXNlcyBlbmNhcHN1bGF0ZWQKICogaGVhZGVycyB0byBpbmRpY2F0ZSB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gKG9sZC1zdHlsZSBub24tUEtDUyM4IE9wZW5TU0wKICogcHJpdmF0ZSBrZXkgZW5jcnlwdGlvbiksIHNldCB0aGUgJ2xlZ2FjeScgb3B0aW9uIHRvIHRydWUuIE5vdGU6IFVzaW5nIHRoaXMKICogb3B0aW9uIHdpbGwgY2F1c2UgdGhlIGl0ZXJhdGlvbiBjb3VudCB0byBiZSBmb3JjZWQgdG8gMS4KICoKICogTm90ZTogVGhlICdkZXMnIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQsIGJ1dCBpdCBpcyBub3QgY29uc2lkZXJlZCB0byBiZQogKiBzZWN1cmUgYmVjYXVzZSBpdCBvbmx5IHVzZXMgYSBzaW5nbGUgNTYtYml0IGtleS4gSWYgcG9zc2libGUsIGl0IGlzIGhpZ2hseQogKiByZWNvbW1lbmRlZCB0aGF0IGEgZGlmZmVyZW50IGFsZ29yaXRobSBiZSB1c2VkLgogKgogKiBAcGFyYW0gcnNhS2V5IHRoZSBSU0Ega2V5IHRvIGVuY3J5cHQuCiAqIEBwYXJhbSBwYXNzd29yZCB0aGUgcGFzc3dvcmQgdG8gdXNlLgogKiBAcGFyYW0gb3B0aW9uczoKICogICAgICAgICAgYWxnb3JpdGhtOiB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gdG8gdXNlCiAqICAgICAgICAgICAgKCdhZXMxMjgnLCAnYWVzMTkyJywgJ2FlczI1NicsICczZGVzJywgJ2RlcycpLgogKiAgICAgICAgICBjb3VudDogdGhlIGl0ZXJhdGlvbiBjb3VudCB0byB1c2UuCiAqICAgICAgICAgIHNhbHRTaXplOiB0aGUgc2FsdCBzaXplIHRvIHVzZS4KICogICAgICAgICAgbGVnYWN5OiBvdXRwdXQgYW4gb2xkIG5vbi1QS0NTIzggUEVNLWVuY3J5cHRlZCtlbmNhcHN1bGF0ZWQKICogICAgICAgICAgICBoZWFkZXJzIChERUstSW5mbykgcHJpdmF0ZSBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIFBFTS1lbmNvZGVkIEFTTi4xIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLgogKi8KcGtpLmVuY3J5cHRSc2FQcml2YXRlS2V5ID0gZnVuY3Rpb24ocnNhS2V5LCBwYXNzd29yZCwgb3B0aW9ucykgewogIC8vIHN0YW5kYXJkIFBLQ1MjOAogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIGlmKCFvcHRpb25zLmxlZ2FjeSkgewogICAgLy8gZW5jcnlwdCBQcml2YXRlS2V5SW5mbwogICAgdmFyIHJ2YWwgPSBwa2kud3JhcFJzYVByaXZhdGVLZXkocGtpLnByaXZhdGVLZXlUb0FzbjEocnNhS2V5KSk7CiAgICBydmFsID0gcGtpLmVuY3J5cHRQcml2YXRlS2V5SW5mbyhydmFsLCBwYXNzd29yZCwgb3B0aW9ucyk7CiAgICByZXR1cm4gcGtpLmVuY3J5cHRlZFByaXZhdGVLZXlUb1BlbShydmFsKTsKICB9CgogIC8vIGxlZ2FjeSBub24tUEtDUyM4CiAgdmFyIGFsZ29yaXRobTsKICB2YXIgaXY7CiAgdmFyIGRrTGVuOwogIHZhciBjaXBoZXJGbjsKICBzd2l0Y2gob3B0aW9ucy5hbGdvcml0aG0pIHsKICBjYXNlICdhZXMxMjgnOgogICAgYWxnb3JpdGhtID0gJ0FFUy0xMjgtQ0JDJzsKICAgIGRrTGVuID0gMTY7CiAgICBpdiA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpOwogICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIGNhc2UgJ2FlczE5Mic6CiAgICBhbGdvcml0aG0gPSAnQUVTLTE5Mi1DQkMnOwogICAgZGtMZW4gPSAyNDsKICAgIGl2ID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzU3luYygxNik7CiAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyOwogICAgYnJlYWs7CiAgY2FzZSAnYWVzMjU2JzoKICAgIGFsZ29yaXRobSA9ICdBRVMtMjU2LUNCQyc7CiAgICBka0xlbiA9IDMyOwogICAgaXYgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXNTeW5jKDE2KTsKICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICczZGVzJzoKICAgIGFsZ29yaXRobSA9ICdERVMtRURFMy1DQkMnOwogICAgZGtMZW4gPSAyNDsKICAgIGl2ID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzU3luYyg4KTsKICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICdkZXMnOgogICAgYWxnb3JpdGhtID0gJ0RFUy1DQkMnOwogICAgZGtMZW4gPSA4OwogICAgaXYgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXNTeW5jKDgpOwogICAgY2lwaGVyRm4gPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIGRlZmF1bHQ6CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBlbmNyeXB0IFJTQSBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgJyArCiAgICAgICdlbmNyeXB0aW9uIGFsZ29yaXRobSAiJyArIG9wdGlvbnMuYWxnb3JpdGhtICsgJyIuJyk7CiAgICBlcnJvci5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZW5jcnlwdCBwcml2YXRlIGtleSB1c2luZyBPcGVuU1NMIGxlZ2FjeSBrZXkgZGVyaXZhdGlvbgogIHZhciBkayA9IGZvcmdlLnBiZS5vcGVuc3NsRGVyaXZlQnl0ZXMocGFzc3dvcmQsIGl2LnN1YnN0cigwLCA4KSwgZGtMZW4pOwogIHZhciBjaXBoZXIgPSBjaXBoZXJGbihkayk7CiAgY2lwaGVyLnN0YXJ0KGl2KTsKICBjaXBoZXIudXBkYXRlKGFzbjEudG9EZXIocGtpLnByaXZhdGVLZXlUb0FzbjEocnNhS2V5KSkpOwogIGNpcGhlci5maW5pc2goKTsKCiAgdmFyIG1zZyA9IHsKICAgIHR5cGU6ICdSU0EgUFJJVkFURSBLRVknLAogICAgcHJvY1R5cGU6IHsKICAgICAgdmVyc2lvbjogJzQnLAogICAgICB0eXBlOiAnRU5DUllQVEVEJwogICAgfSwKICAgIGRla0luZm86IHsKICAgICAgYWxnb3JpdGhtOiBhbGdvcml0aG0sCiAgICAgIHBhcmFtZXRlcnM6IGZvcmdlLnV0aWwuYnl0ZXNUb0hleChpdikudG9VcHBlckNhc2UoKQogICAgfSwKICAgIGJvZHk6IGNpcGhlci5vdXRwdXQuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnKTsKfTsKCi8qKgogKiBEZWNyeXB0cyBhbiBSU0EgcHJpdmF0ZSBrZXkuCiAqCiAqIEBwYXJhbSBwZW0gdGhlIFBFTS1mb3JtYXR0ZWQgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gdG8gZGVjcnlwdC4KICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byB1c2UuCiAqCiAqIEByZXR1cm4gdGhlIFJTQSBrZXkgb24gc3VjY2VzcywgbnVsbCBvbiBmYWlsdXJlLgogKi8KcGtpLmRlY3J5cHRSc2FQcml2YXRlS2V5ID0gZnVuY3Rpb24ocGVtLCBwYXNzd29yZCkgewogIHZhciBydmFsID0gbnVsbDsKCiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdFTkNSWVBURUQgUFJJVkFURSBLRVknICYmCiAgICBtc2cudHlwZSAhPT0gJ1BSSVZBVEUgS0VZJyAmJgogICAgbXNnLnR5cGUgIT09ICdSU0EgUFJJVkFURSBLRVknKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaGVhZGVyIHR5cGUgJyArCiAgICAgICdpcyBub3QgIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIsICJQUklWQVRFIEtFWSIsIG9yICJSU0EgUFJJVkFURSBLRVkiLicpOwogICAgZXJyb3IuaGVhZGVyVHlwZSA9IGVycm9yOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB2YXIgZGtMZW47CiAgICB2YXIgY2lwaGVyRm47CiAgICBzd2l0Y2gobXNnLmRla0luZm8uYWxnb3JpdGhtKSB7CiAgICBjYXNlICdERVMtQ0JDJzoKICAgICAgZGtMZW4gPSA4OwogICAgICBjaXBoZXJGbiA9IGZvcmdlLmRlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyOwogICAgICBicmVhazsKICAgIGNhc2UgJ0RFUy1FREUzLUNCQyc6CiAgICAgIGRrTGVuID0gMjQ7CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnQUVTLTEyOC1DQkMnOgogICAgICBka0xlbiA9IDE2OwogICAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyOwogICAgICBicmVhazsKICAgIGNhc2UgJ0FFUy0xOTItQ0JDJzoKICAgICAgZGtMZW4gPSAyNDsKICAgICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjsKICAgICAgYnJlYWs7CiAgICBjYXNlICdBRVMtMjU2LUNCQyc6CiAgICAgIGRrTGVuID0gMzI7CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnUkMyLTQwLUNCQyc6CiAgICAgIGRrTGVuID0gNTsKICAgICAgY2lwaGVyRm4gPSBmdW5jdGlvbihrZXkpIHsKICAgICAgICByZXR1cm4gZm9yZ2UucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoa2V5LCA0MCk7CiAgICAgIH07CiAgICAgIGJyZWFrOwogICAgY2FzZSAnUkMyLTY0LUNCQyc6CiAgICAgIGRrTGVuID0gODsKICAgICAgY2lwaGVyRm4gPSBmdW5jdGlvbihrZXkpIHsKICAgICAgICByZXR1cm4gZm9yZ2UucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoa2V5LCA2NCk7CiAgICAgIH07CiAgICAgIGJyZWFrOwogICAgY2FzZSAnUkMyLTEyOC1DQkMnOgogICAgICBka0xlbiA9IDE2OwogICAgICBjaXBoZXJGbiA9IGZ1bmN0aW9uKGtleSkgewogICAgICAgIHJldHVybiBmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihrZXksIDEyOCk7CiAgICAgIH07CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDb3VsZCBub3QgZGVjcnlwdCBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgJyArCiAgICAgICAgJ2VuY3J5cHRpb24gYWxnb3JpdGhtICInICsgbXNnLmRla0luZm8uYWxnb3JpdGhtICsgJyIuJyk7CiAgICAgIGVycm9yLmFsZ29yaXRobSA9IG1zZy5kZWtJbmZvLmFsZ29yaXRobTsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLy8gdXNlIE9wZW5TU0wgbGVnYWN5IGtleSBkZXJpdmF0aW9uCiAgICB2YXIgaXYgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMobXNnLmRla0luZm8ucGFyYW1ldGVycyk7CiAgICB2YXIgZGsgPSBmb3JnZS5wYmUub3BlbnNzbERlcml2ZUJ5dGVzKHBhc3N3b3JkLCBpdi5zdWJzdHIoMCwgOCksIGRrTGVuKTsKICAgIHZhciBjaXBoZXIgPSBjaXBoZXJGbihkayk7CiAgICBjaXBoZXIuc3RhcnQoaXYpOwogICAgY2lwaGVyLnVwZGF0ZShmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuYm9keSkpOwogICAgaWYoY2lwaGVyLmZpbmlzaCgpKSB7CiAgICAgIHJ2YWwgPSBjaXBoZXIub3V0cHV0LmdldEJ5dGVzKCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcnZhbDsKICAgIH0KICB9IGVsc2UgewogICAgcnZhbCA9IG1zZy5ib2R5OwogIH0KCiAgaWYobXNnLnR5cGUgPT09ICdFTkNSWVBURUQgUFJJVkFURSBLRVknKSB7CiAgICBydmFsID0gcGtpLmRlY3J5cHRQcml2YXRlS2V5SW5mbyhhc24xLmZyb21EZXIocnZhbCksIHBhc3N3b3JkKTsKICB9IGVsc2UgewogICAgLy8gZGVjcnlwdGlvbiBhbHJlYWR5IHBlcmZvcm1lZCBhYm92ZQogICAgcnZhbCA9IGFzbjEuZnJvbURlcihydmFsKTsKICB9CgogIGlmKHJ2YWwgIT09IG51bGwpIHsKICAgIHJ2YWwgPSBwa2kucHJpdmF0ZUtleUZyb21Bc24xKHJ2YWwpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogRGVyaXZlcyBhIFBLQ1MjMTIga2V5LgogKgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlcml2ZSB0aGUga2V5IG1hdGVyaWFsIGZyb20sIG51bGwgb3IKICogICAgICAgICAgdW5kZWZpbmVkIGZvciBub25lLgogKiBAcGFyYW0gc2FsdCB0aGUgc2FsdCwgYXMgYSBCeXRlQnVmZmVyLCB0byB1c2UuCiAqIEBwYXJhbSBpZCB0aGUgUEtDUyMxMiBJRCBieXRlICgxID0ga2V5IG1hdGVyaWFsLCAyID0gSVYsIDMgPSBNQUMpLgogKiBAcGFyYW0gaXRlciB0aGUgaXRlcmF0aW9uIGNvdW50LgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGRlcml2ZSBmcm9tIHRoZSBwYXNzd29yZC4KICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2UsIGRlZmF1bHRzIHRvIFNIQS0xLgogKgogKiBAcmV0dXJuIGEgQnl0ZUJ1ZmZlciB3aXRoIHRoZSBieXRlcyBkZXJpdmVkIGZyb20gdGhlIHBhc3N3b3JkLgogKi8KcGtpLnBiZS5nZW5lcmF0ZVBrY3MxMktleSA9IGZ1bmN0aW9uKHBhc3N3b3JkLCBzYWx0LCBpZCwgaXRlciwgbiwgbWQpIHsKICB2YXIgaiwgbDsKCiAgaWYodHlwZW9mIG1kID09PSAndW5kZWZpbmVkJyB8fCBtZCA9PT0gbnVsbCkgewogICAgbWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIH0KCiAgdmFyIHUgPSBtZC5kaWdlc3RMZW5ndGg7CiAgdmFyIHYgPSBtZC5ibG9ja0xlbmd0aDsKICB2YXIgcmVzdWx0ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwoKICAvKiBDb252ZXJ0IHBhc3N3b3JkIHRvIFVuaWNvZGUgYnl0ZSBidWZmZXIgKyB0cmFpbGluZyAwLWJ5dGUuICovCiAgdmFyIHBhc3NCdWYgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKCk7CiAgaWYocGFzc3dvcmQgIT09IG51bGwgJiYgcGFzc3dvcmQgIT09IHVuZGVmaW5lZCkgewogICAgZm9yKGwgPSAwOyBsIDwgcGFzc3dvcmQubGVuZ3RoOyBsKyspIHsKICAgICAgcGFzc0J1Zi5wdXRJbnQxNihwYXNzd29yZC5jaGFyQ29kZUF0KGwpKTsKICAgIH0KICAgIHBhc3NCdWYucHV0SW50MTYoMCk7CiAgfQoKICAvKiBMZW5ndGggb2Ygc2FsdCBhbmQgcGFzc3dvcmQgaW4gQllURVMuICovCiAgdmFyIHAgPSBwYXNzQnVmLmxlbmd0aCgpOwogIHZhciBzID0gc2FsdC5sZW5ndGgoKTsKCiAgLyogMS4gQ29uc3RydWN0IGEgc3RyaW5nLCBEICh0aGUgImRpdmVyc2lmaWVyIiksIGJ5IGNvbmNhdGVuYXRpbmcKICAgICAgICB2IGNvcGllcyBvZiBJRC4gKi8KICB2YXIgRCA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICBELmZpbGxXaXRoQnl0ZShpZCwgdik7CgogIC8qIDIuIENvbmNhdGVuYXRlIGNvcGllcyBvZiB0aGUgc2FsdCB0b2dldGhlciB0byBjcmVhdGUgYSBzdHJpbmcgUyBvZiBsZW5ndGgKICAgICAgICB2ICogY2VpbChzIC8gdikgYnl0ZXMgKHRoZSBmaW5hbCBjb3B5IG9mIHRoZSBzYWx0IG1heSBiZSB0cnVuYWN0ZWQKICAgICAgICB0byBjcmVhdGUgUykuCiAgICAgICAgTm90ZSB0aGF0IGlmIHRoZSBzYWx0IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gc28gaXMgUy4gKi8KICB2YXIgU2xlbiA9IHYgKiBNYXRoLmNlaWwocyAvIHYpOwogIHZhciBTID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogIGZvcihsID0gMDsgbCA8IFNsZW47IGwgKyspIHsKICAgIFMucHV0Qnl0ZShzYWx0LmF0KGwgJSBzKSk7CiAgfQoKICAvKiAzLiBDb25jYXRlbmF0ZSBjb3BpZXMgb2YgdGhlIHBhc3N3b3JkIHRvZ2V0aGVyIHRvIGNyZWF0ZSBhIHN0cmluZyBQIG9mCiAgICAgICAgbGVuZ3RoIHYgKiBjZWlsKHAgLyB2KSBieXRlcyAodGhlIGZpbmFsIGNvcHkgb2YgdGhlIHBhc3N3b3JkIG1heSBiZQogICAgICAgIHRydW5jYXRlZCB0byBjcmVhdGUgUCkuCiAgICAgICAgTm90ZSB0aGF0IGlmIHRoZSBwYXNzd29yZCBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHNvIGlzIFAuICovCiAgdmFyIFBsZW4gPSB2ICogTWF0aC5jZWlsKHAgLyB2KTsKICB2YXIgUCA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICBmb3IobCA9IDA7IGwgPCBQbGVuOyBsICsrKSB7CiAgICBQLnB1dEJ5dGUocGFzc0J1Zi5hdChsICUgcCkpOwogIH0KCiAgLyogNC4gU2V0IEk9U3x8UCB0byBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBTIGFuZCBQLiAqLwogIHZhciBJID0gUzsKICBJLnB1dEJ1ZmZlcihQKTsKCiAgLyogNS4gU2V0IGM9Y2VpbChuIC8gdSkuICovCiAgdmFyIGMgPSBNYXRoLmNlaWwobiAvIHUpOwoKICAvKiA2LiBGb3IgaT0xLCAyLCAuLi4sIGMsIGRvIHRoZSBmb2xsb3dpbmc6ICovCiAgZm9yKHZhciBpID0gMTsgaSA8PSBjOyBpICsrKSB7CiAgICAvKiBhKSBTZXQgQWk9SF5yKER8fEkpLiAobC5lLiB0aGUgcnRoIGhhc2ggb2YgRHx8SSwgSChIKEgoLi4uSChEfHxJKSkpKSAqLwogICAgdmFyIGJ1ZiA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICAgIGJ1Zi5wdXRCeXRlcyhELmJ5dGVzKCkpOwogICAgYnVmLnB1dEJ5dGVzKEkuYnl0ZXMoKSk7CiAgICBmb3IodmFyIHJvdW5kID0gMDsgcm91bmQgPCBpdGVyOyByb3VuZCArKykgewogICAgICBtZC5zdGFydCgpOwogICAgICBtZC51cGRhdGUoYnVmLmdldEJ5dGVzKCkpOwogICAgICBidWYgPSBtZC5kaWdlc3QoKTsKICAgIH0KCiAgICAvKiBiKSBDb25jYXRlbmF0ZSBjb3BpZXMgb2YgQWkgdG8gY3JlYXRlIGEgc3RyaW5nIEIgb2YgbGVuZ3RoIHYgYnl0ZXMgKHRoZQogICAgICAgICAgZmluYWwgY29weSBvZiBBaSBtYXkgYmUgdHJ1bmNhdGVkIHRvIGNyZWF0ZSBCKS4gKi8KICAgIHZhciBCID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgZm9yKGwgPSAwOyBsIDwgdjsgbCArKykgewogICAgICBCLnB1dEJ5dGUoYnVmLmF0KGwgJSB1KSk7CiAgICB9CgogICAgLyogYykgVHJlYXRpbmcgSSBhcyBhIGNvbmNhdGVuYXRpb24gSTAsIEkxLCAuLi4sIElrLTEgb2Ygdi1ieXRlIGJsb2NrcywKICAgICAgICAgIHdoZXJlIGs9Y2VpbChzIC8gdikgKyBjZWlsKHAgLyB2KSwgbW9kaWZ5IEkgYnkgc2V0dGluZwogICAgICAgICAgSWo9KElqK0IrMSkgbW9kIDJ2IGZvciBlYWNoIGouICAqLwogICAgdmFyIGsgPSBNYXRoLmNlaWwocyAvIHYpICsgTWF0aC5jZWlsKHAgLyB2KTsKICAgIHZhciBJbmV3ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgZm9yKGogPSAwOyBqIDwgazsgaiArKykgewogICAgICB2YXIgY2h1bmsgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKEkuZ2V0Qnl0ZXModikpOwogICAgICB2YXIgeCA9IDB4MWZmOwogICAgICBmb3IobCA9IEIubGVuZ3RoKCkgLSAxOyBsID49IDA7IGwgLS0pIHsKICAgICAgICB4ID0geCA+PiA4OwogICAgICAgIHggKz0gQi5hdChsKSArIGNodW5rLmF0KGwpOwogICAgICAgIGNodW5rLnNldEF0KGwsIHggJiAweGZmKTsKICAgICAgfQogICAgICBJbmV3LnB1dEJ1ZmZlcihjaHVuayk7CiAgICB9CiAgICBJID0gSW5ldzsKCiAgICAvKiBBZGQgQWkgdG8gQS4gKi8KICAgIHJlc3VsdC5wdXRCdWZmZXIoYnVmKTsKICB9CgogIHJlc3VsdC50cnVuY2F0ZShyZXN1bHQubGVuZ3RoKCkgLSBuKTsKICByZXR1cm4gcmVzdWx0Owp9OwoKLyoqCiAqIEdldCBuZXcgRm9yZ2UgY2lwaGVyIG9iamVjdCBpbnN0YW5jZS4KICoKICogQHBhcmFtIG9pZCB0aGUgT0lEIChpbiBzdHJpbmcgbm90YXRpb24pLgogKiBAcGFyYW0gcGFyYW1zIHRoZSBBU04uMSBwYXJhbXMgb2JqZWN0LgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aC4KICoKICogQHJldHVybiBuZXcgY2lwaGVyIG9iamVjdCBpbnN0YW5jZS4KICovCnBraS5wYmUuZ2V0Q2lwaGVyID0gZnVuY3Rpb24ob2lkLCBwYXJhbXMsIHBhc3N3b3JkKSB7CiAgc3dpdGNoKG9pZCkgewogIGNhc2UgcGtpLm9pZHNbJ3BrY3M1UEJFUzInXToKICAgIHJldHVybiBwa2kucGJlLmdldENpcGhlckZvclBCRVMyKG9pZCwgcGFyYW1zLCBwYXNzd29yZCk7CgogIGNhc2UgcGtpLm9pZHNbJ3BiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMnXToKICBjYXNlIHBraS5vaWRzWydwYmV3aXRoU0hBQW5kNDBCaXRSQzItQ0JDJ106CiAgICByZXR1cm4gcGtpLnBiZS5nZXRDaXBoZXJGb3JQS0NTMTJQQkUob2lkLCBwYXJhbXMsIHBhc3N3b3JkKTsKCiAgZGVmYXVsdDoKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgZW5jcnlwdGVkIFBCRSBkYXRhIGJsb2NrLiBVbnN1cHBvcnRlZCBPSUQuJyk7CiAgICBlcnJvci5vaWQgPSBvaWQ7CiAgICBlcnJvci5zdXBwb3J0ZWRPaWRzID0gWwogICAgICAncGtjczVQQkVTMicsCiAgICAgICdwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDJywKICAgICAgJ3BiZXdpdGhTSEFBbmQ0MEJpdFJDMi1DQkMnCiAgICBdOwogICAgdGhyb3cgZXJyb3I7CiAgfQp9OwoKLyoqCiAqIEdldCBuZXcgRm9yZ2UgY2lwaGVyIG9iamVjdCBpbnN0YW5jZSBhY2NvcmRpbmcgdG8gUEJFUzIgcGFyYW1zIGJsb2NrLgogKgogKiBUaGUgcmV0dXJuZWQgY2lwaGVyIGluc3RhbmNlIGlzIGFscmVhZHkgc3RhcnRlZCB1c2luZyB0aGUgSVYKICogZnJvbSBQQkVTMiBwYXJhbWV0ZXIgYmxvY2suCiAqCiAqIEBwYXJhbSBvaWQgdGhlIFBLQ1MjNSBQQktERjIgT0lEIChpbiBzdHJpbmcgbm90YXRpb24pLgogKiBAcGFyYW0gcGFyYW1zIHRoZSBBU04uMSBQQkVTMi1wYXJhbXMgb2JqZWN0LgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aC4KICoKICogQHJldHVybiBuZXcgY2lwaGVyIG9iamVjdCBpbnN0YW5jZS4KICovCnBraS5wYmUuZ2V0Q2lwaGVyRm9yUEJFUzIgPSBmdW5jdGlvbihvaWQsIHBhcmFtcywgcGFzc3dvcmQpIHsKICAvLyBnZXQgUEJFIHBhcmFtcwogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKHBhcmFtcywgUEJFUzJBbGdvcml0aG1zVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gYWxnb3JpdGhtICcgKwogICAgICAncGFyYW1ldGVycy4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gY2hlY2sgb2lkcwogIG9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5rZGZPaWQpOwogIGlmKG9pZCAhPT0gcGtpLm9pZHNbJ3BrY3M1UEJLREYyJ10pIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgZW5jcnlwdGVkIHByaXZhdGUga2V5LiAnICsKICAgICAgJ1Vuc3VwcG9ydGVkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIE9JRC4nKTsKICAgIGVycm9yLm9pZCA9IG9pZDsKICAgIGVycm9yLnN1cHBvcnRlZE9pZHMgPSBbJ3BrY3M1UEJLREYyJ107CiAgICB0aHJvdyBlcnJvcjsKICB9CiAgb2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLmVuY09pZCk7CiAgaWYob2lkICE9PSBwa2kub2lkc1snYWVzMTI4LUNCQyddICYmCiAgICBvaWQgIT09IHBraS5vaWRzWydhZXMxOTItQ0JDJ10gJiYKICAgIG9pZCAhPT0gcGtpLm9pZHNbJ2FlczI1Ni1DQkMnXSAmJgogICAgb2lkICE9PSBwa2kub2lkc1snZGVzLUVERTMtQ0JDJ10gJiYKICAgIG9pZCAhPT0gcGtpLm9pZHNbJ2Rlc0NCQyddKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIGVuY3J5cHRlZCBwcml2YXRlIGtleS4gJyArCiAgICAgICdVbnN1cHBvcnRlZCBlbmNyeXB0aW9uIHNjaGVtZSBPSUQuJyk7CiAgICBlcnJvci5vaWQgPSBvaWQ7CiAgICBlcnJvci5zdXBwb3J0ZWRPaWRzID0gWwogICAgICAnYWVzMTI4LUNCQycsICdhZXMxOTItQ0JDJywgJ2FlczI1Ni1DQkMnLCAnZGVzLUVERTMtQ0JDJywgJ2Rlc0NCQyddOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvLyBzZXQgUEJFIHBhcmFtcwogIHZhciBzYWx0ID0gY2FwdHVyZS5rZGZTYWx0OwogIHZhciBjb3VudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUua2RmSXRlcmF0aW9uQ291bnQpOwogIGNvdW50ID0gY291bnQuZ2V0SW50KGNvdW50Lmxlbmd0aCgpIDw8IDMpOwogIHZhciBka0xlbjsKICB2YXIgY2lwaGVyRm47CiAgc3dpdGNoKHBraS5vaWRzW29pZF0pIHsKICBjYXNlICdhZXMxMjgtQ0JDJzoKICAgIGRrTGVuID0gMTY7CiAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyOwogICAgYnJlYWs7CiAgY2FzZSAnYWVzMTkyLUNCQyc6CiAgICBka0xlbiA9IDI0OwogICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIGNhc2UgJ2FlczI1Ni1DQkMnOgogICAgZGtMZW4gPSAzMjsKICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICdkZXMtRURFMy1DQkMnOgogICAgZGtMZW4gPSAyNDsKICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICdkZXNDQkMnOgogICAgZGtMZW4gPSA4OwogICAgY2lwaGVyRm4gPSBmb3JnZS5kZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIH0KCiAgLy8gZGVjcnlwdCBwcml2YXRlIGtleSB1c2luZyBwYmUgU0hBLTEgYW5kIEFFUy9ERVMKICB2YXIgZGsgPSBmb3JnZS5wa2NzNS5wYmtkZjIocGFzc3dvcmQsIHNhbHQsIGNvdW50LCBka0xlbik7CiAgdmFyIGl2ID0gY2FwdHVyZS5lbmNJdjsKICB2YXIgY2lwaGVyID0gY2lwaGVyRm4oZGspOwogIGNpcGhlci5zdGFydChpdik7CgogIHJldHVybiBjaXBoZXI7Cn07CgovKioKICogR2V0IG5ldyBGb3JnZSBjaXBoZXIgb2JqZWN0IGluc3RhbmNlIGZvciBQS0NTIzEyIFBCRS4KICoKICogVGhlIHJldHVybmVkIGNpcGhlciBpbnN0YW5jZSBpcyBhbHJlYWR5IHN0YXJ0ZWQgdXNpbmcgdGhlIGtleSAmIElWCiAqIGRlcml2ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcGFzc3dvcmQgYW5kIFBLQ1MjMTIgUEJFIHNhbHQuCiAqCiAqIEBwYXJhbSBvaWQgVGhlIFBLQ1MjMTIgUEJFIE9JRCAoaW4gc3RyaW5nIG5vdGF0aW9uKS4KICogQHBhcmFtIHBhcmFtcyBUaGUgQVNOLjEgUEtDUyMxMiBQQkUtcGFyYW1zIG9iamVjdC4KICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZCB0byBkZWNyeXB0IHdpdGguCiAqCiAqIEByZXR1cm4gdGhlIG5ldyBjaXBoZXIgb2JqZWN0IGluc3RhbmNlLgogKi8KcGtpLnBiZS5nZXRDaXBoZXJGb3JQS0NTMTJQQkUgPSBmdW5jdGlvbihvaWQsIHBhcmFtcywgcGFzc3dvcmQpIHsKICAvLyBnZXQgUEJFIHBhcmFtcwogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKHBhcmFtcywgcGtjczEyUGJlUGFyYW1zVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gYWxnb3JpdGhtICcgKwogICAgICAncGFyYW1ldGVycy4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgdmFyIHNhbHQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnNhbHQpOwogIHZhciBjb3VudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUuaXRlcmF0aW9ucyk7CiAgY291bnQgPSBjb3VudC5nZXRJbnQoY291bnQubGVuZ3RoKCkgPDwgMyk7CgogIHZhciBka0xlbiwgZEl2TGVuLCBjaXBoZXJGbjsKICBzd2l0Y2gob2lkKSB7CiAgICBjYXNlIHBraS5vaWRzWydwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDJ106CiAgICAgIGRrTGVuID0gMjQ7CiAgICAgIGRJdkxlbiA9IDg7CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLnN0YXJ0RGVjcnlwdGluZzsKICAgICAgYnJlYWs7CgogICAgY2FzZSBwa2kub2lkc1sncGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyddOgogICAgICBka0xlbiA9IDU7CiAgICAgIGRJdkxlbiA9IDg7CiAgICAgIGNpcGhlckZuID0gZnVuY3Rpb24oa2V5LCBpdikgewogICAgICAgIHZhciBjaXBoZXIgPSBmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihrZXksIDQwKTsKICAgICAgICBjaXBoZXIuc3RhcnQoaXYsIG51bGwpOwogICAgICAgIHJldHVybiBjaXBoZXI7CiAgICAgIH07CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgUEtDUyAjMTIgUEJFIGRhdGEgYmxvY2suIFVuc3VwcG9ydGVkIE9JRC4nKTsKICAgICAgZXJyb3Iub2lkID0gb2lkOwogICAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBrZXkgPSBwa2kucGJlLmdlbmVyYXRlUGtjczEyS2V5KHBhc3N3b3JkLCBzYWx0LCAxLCBjb3VudCwgZGtMZW4pOwogIHZhciBpdiA9IHBraS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocGFzc3dvcmQsIHNhbHQsIDIsIGNvdW50LCBkSXZMZW4pOwoKICByZXR1cm4gY2lwaGVyRm4oa2V5LCBpdik7Cn07CgovKioKICogT3BlblNTTCdzIGxlZ2FjeSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4KICoKICogU2VlOiBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL0VWUF9CeXRlc1RvS2V5Lmh0bWwKICoKICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byBkZXJpdmUgdGhlIGtleSBmcm9tLgogKiBAcGFyYW0gc2FsdCB0aGUgc2FsdCB0byB1c2UsIG51bGwgZm9yIG5vbmUuCiAqIEBwYXJhbSBka0xlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCBmb3IgdGhlIGRlcml2ZWQga2V5LgogKiBAcGFyYW0gW29wdGlvbnNdIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgW21kXSBhbiBvcHRpb25hbCBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlLgogKi8KcGtpLnBiZS5vcGVuc3NsRGVyaXZlQnl0ZXMgPSBmdW5jdGlvbihwYXNzd29yZCwgc2FsdCwgZGtMZW4sIG1kKSB7CiAgaWYodHlwZW9mIG1kID09PSAndW5kZWZpbmVkJyB8fCBtZCA9PT0gbnVsbCkgewogICAgbWQgPSBmb3JnZS5tZC5tZDUuY3JlYXRlKCk7CiAgfQogIGlmKHNhbHQgPT09IG51bGwpIHsKICAgIHNhbHQgPSAnJzsKICB9CiAgdmFyIGRpZ2VzdHMgPSBbaGFzaChtZCwgcGFzc3dvcmQgKyBzYWx0KV07CiAgZm9yKHZhciBsZW5ndGggPSAxNiwgaSA9IDE7IGxlbmd0aCA8IGRrTGVuOyArK2ksIGxlbmd0aCArPSAxNikgewogICAgZGlnZXN0cy5wdXNoKGhhc2gobWQsIGRpZ2VzdHNbaSAtIDFdICsgcGFzc3dvcmQgKyBzYWx0KSk7CiAgfQogIHJldHVybiBkaWdlc3RzLmpvaW4oJycpLnN1YnN0cigwLCBka0xlbik7Cn07CgpmdW5jdGlvbiBoYXNoKG1kLCBieXRlcykgewogIHJldHVybiBtZC5zdGFydCgpLnVwZGF0ZShieXRlcykuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKfQoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncGJlJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BiZScsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hZXMnLAogICcuL2FzbjEnLAogICcuL2RlcycsCiAgJy4vbWQnLAogICcuL29pZHMnLAogICcuL3BlbScsCiAgJy4vcGJrZGYyJywKICAnLi9yYW5kb20nLAogICcuL3JjMicsCiAgJy4vcnNhJywKICAnLi91dGlsJwpdLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIEFTTi4xIHZhbGlkYXRvcnMgZm9yIFBLQ1MjNyB2MS41LgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKiBAYXV0aG9yIFN0ZWZhbiBTaWVnbAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgU3RlZmFuIFNpZWdsIDxzdGVzaWVAYnJva2VucGlwZS5kZT4KICoKICogVGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIFBLQ1MjNyBpcyBhcyBmb2xsb3dzCiAqIChzZWUgUkZDICMyMzE1IGZvciBkZXRhaWxzLCBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMzE1LnR4dCk6CiAqCiAqIEEgUEtDUyM3IG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBDb250ZW50SW5mbyBvbiByb290IGxldmVsLCB3aGljaCBtYXkKICogY29udGFpbiBhbnkgbnVtYmVyIG9mIGZ1cnRoZXIgQ29udGVudEluZm8gbmVzdGVkIGludG8gaXQuCiAqCiAqIENvbnRlbnRJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgY29udGVudFR5cGUgICAgICAgICAgICAgICAgQ29udGVudFR5cGUsCiAqICAgY29udGVudCAgICAgICAgICAgICAgIFswXSAgRVhQTElDSVQgQU5ZIERFRklORUQgQlkgY29udGVudFR5cGUgT1BUSU9OQUwKICogfQogKgogKiBDb250ZW50VHlwZSA6Oj0gT0JKRUNUIElERU5USUZJRVIKICoKICogRW52ZWxvcGVkRGF0YSA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgIFZlcnNpb24sCiAqICAgcmVjaXBpZW50SW5mb3MgICAgICAgICAgICAgUmVjaXBpZW50SW5mb3MsCiAqICAgZW5jcnlwdGVkQ29udGVudEluZm8gICAgICAgRW5jcnlwdGVkQ29udGVudEluZm8KICogfQogKgogKiBFbmNyeXB0ZWREYXRhIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBlbmNyeXB0ZWRDb250ZW50SW5mbyAgICAgICBFbmNyeXB0ZWRDb250ZW50SW5mbwogKiB9CiAqCiAqIGlkLXNpZ25lZERhdGEgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgaXNvKDEpIG1lbWJlci1ib2R5KDIpCiAqICAgdXMoODQwKSByc2Fkc2koMTEzNTQ5KSBwa2NzKDEpIHBrY3M3KDcpIDIgfQogKgogKiBTaWduZWREYXRhIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgICAgSU5URUdFUiwKICogICBkaWdlc3RBbGdvcml0aG1zICBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVycywKICogICBjb250ZW50SW5mbyAgICAgICBDb250ZW50SW5mbywKICogICBjZXJ0aWZpY2F0ZXMgICAgICBbMF0gSU1QTElDSVQgQ2VydGlmaWNhdGVzIE9QVElPTkFMLAogKiAgIGNybHMgICAgICAgICAgICAgIFsxXSBJTVBMSUNJVCBDZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0cyBPUFRJT05BTCwKICogICBzaWduZXJJbmZvcyAgICAgICBTaWduZXJJbmZvcwogKiB9CiAqCiAqIFNpZ25lckluZm9zIDo6PSBTRVQgT0YgU2lnbmVySW5mbwogKgogKiBTaWduZXJJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBpc3N1ZXJBbmRTZXJpYWxOdW1iZXIgICAgICBJc3N1ZXJBbmRTZXJpYWxOdW1iZXIsCiAqICAgZGlnZXN0QWxnb3JpdGhtICAgICAgICAgICAgRGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllciwKICogICBhdXRoZW50aWNhdGVkQXR0cmlidXRlcyAgICBbMF0gSU1QTElDSVQgQXR0cmlidXRlcyBPUFRJT05BTCwKICogICBkaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtICBEaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWREaWdlc3QgICAgICAgICAgICBFbmNyeXB0ZWREaWdlc3QsCiAqICAgdW5hdXRoZW50aWNhdGVkQXR0cmlidXRlcyAgWzFdIElNUExJQ0lUIEF0dHJpYnV0ZXMgT1BUSU9OQUwKICogfQogKgogKiBFbmNyeXB0ZWREaWdlc3QgOjo9IE9DVEVUIFNUUklORwogKgogKiBBdHRyaWJ1dGVzIDo6PSBTRVQgT0YgQXR0cmlidXRlCiAqCiAqIEF0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgewogKiAgIGF0dHJUeXBlICAgIE9CSkVDVCBJREVOVElGSUVSLAogKiAgIGF0dHJWYWx1ZXMgIFNFVCBPRiBBdHRyaWJ1dGVWYWx1ZQogKiB9CiAqCiAqIEF0dHJpYnV0ZVZhbHVlIDo6PSBBTlkKICoKICogVmVyc2lvbiA6Oj0gSU5URUdFUgogKgogKiBSZWNpcGllbnRJbmZvcyA6Oj0gU0VUIE9GIFJlY2lwaWVudEluZm8KICoKICogRW5jcnlwdGVkQ29udGVudEluZm8gOjo9IFNFUVVFTkNFIHsKICogICBjb250ZW50VHlwZSAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUsCiAqICAgY29udGVudEVuY3J5cHRpb25BbGdvcml0aG0gIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWRDb250ZW50ICAgICAgIFswXSAgSU1QTElDSVQgRW5jcnlwdGVkQ29udGVudCBPUFRJT05BTAogKiB9CiAqCiAqIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciA6Oj0gQWxnb3JpdGhtSWRlbnRpZmllcgogKgogKiBUaGUgQWxnb3JpdGhtSWRlbnRpZmllciBjb250YWlucyBhbiBPYmplY3QgSWRlbnRpZmllciAoT0lEKSBhbmQgcGFyYW1ldGVycwogKiBmb3IgdGhlIGFsZ29yaXRobSwgaWYgYW55LiBJbiB0aGUgY2FzZSBvZiBBRVMgYW5kIERFUzMsIHRoZXJlIGlzIG9ubHkgb25lLAogKiB0aGUgSVYuCiAqCiAqIEFsZ29yaXRobUlkZW50aWZlciA6Oj0gU0VRVUVOQ0UgewogKiAgICBhbGdvcml0aG0gT0JKRUNUIElERU5USUZJRVIsCiAqICAgIHBhcmFtZXRlcnMgQU5ZIERFRklORUQgQlkgYWxnb3JpdGhtIE9QVElPTkFMCiAqIH0KICoKICogRW5jcnlwdGVkQ29udGVudCA6Oj0gT0NURVQgU1RSSU5HCiAqCiAqIFJlY2lwaWVudEluZm8gOjo9IFNFUVVFTkNFIHsKICogICB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBpc3N1ZXJBbmRTZXJpYWxOdW1iZXIgICAgICAgSXNzdWVyQW5kU2VyaWFsTnVtYmVyLAogKiAgIGtleUVuY3J5cHRpb25BbGdvcml0aG0gICAgICBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWRLZXkgICAgICAgICAgICAgICAgRW5jcnlwdGVkS2V5CiAqIH0KICoKICogSXNzdWVyQW5kU2VyaWFsTnVtYmVyIDo6PSBTRVFVRU5DRSB7CiAqICAgaXNzdWVyICAgICAgICAgICAgICAgICAgICAgIE5hbWUsCiAqICAgc2VyaWFsTnVtYmVyICAgICAgICAgICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyCiAqIH0KICoKICogQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIgOjo9IElOVEVHRVIKICoKICogS2V5RW5jcnlwdGlvbkFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogRW5jcnlwdGVkS2V5IDo6PSBPQ1RFVCBTVFJJTkcKICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBzaG9ydGN1dCBmb3IgQVNOLjEgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKCi8vIHNob3J0Y3V0IGZvciBQS0NTIzcgQVBJCnZhciBwN3YgPSBmb3JnZS5wa2NzN2FzbjEgPSBmb3JnZS5wa2NzN2FzbjEgfHwge307CmZvcmdlLnBrY3M3ID0gZm9yZ2UucGtjczcgfHwge307CmZvcmdlLnBrY3M3LmFzbjEgPSBwN3Y7Cgp2YXIgY29udGVudEluZm9WYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NvbnRlbnRJbmZvJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ0NvbnRlbnRJbmZvLkNvbnRlbnRUeXBlJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAnY29udGVudFR5cGUnCiAgfSwgewogICAgbmFtZTogJ0NvbnRlbnRJbmZvLmNvbnRlbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDAsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgY2FwdHVyZUFzbjE6ICdjb250ZW50JwogIH1dCn07CnA3di5jb250ZW50SW5mb1ZhbGlkYXRvciA9IGNvbnRlbnRJbmZvVmFsaWRhdG9yOwoKdmFyIGVuY3J5cHRlZENvbnRlbnRJbmZvVmFsaWRhdG9yID0gewogIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mby5jb250ZW50VHlwZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2NvbnRlbnRUeXBlJwogIH0sIHsKICAgIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mby5jb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnRW5jcnlwdGVkQ29udGVudEluZm8uY29udGVudEVuY3J5cHRpb25BbGdvcml0aG0uYWxnb3JpdGhtJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdlbmNBbGdvcml0aG0nCiAgICB9LCB7CiAgICAgIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mby5jb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobS5wYXJhbWV0ZXInLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIGNhcHR1cmVBc24xOiAnZW5jUGFyYW1ldGVyJwogICAgfV0KICB9LCB7CiAgICBuYW1lOiAnRW5jcnlwdGVkQ29udGVudEluZm8uZW5jcnlwdGVkQ29udGVudCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMCwKICAgIC8qIFRoZSBQS0NTIzcgc3RydWN0dXJlIG91dHB1dCBieSBPcGVuU1NMIHNvbWV3aGF0IGRpZmZlcnMgZnJvbSB3aGF0CiAgICAgKiBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZG8gZ2VuZXJhdGUuCiAgICAgKgogICAgICogT3BlblNTTCBnZW5lcmF0ZXMgYSBzdHJ1Y3R1cmUgbGlrZSB0aGlzOgogICAgICogU0VRVUVOQ0UgewogICAgICogICAgLi4uCiAgICAgKiAgICBbMF0KICAgICAqICAgICAgIDI2IERBIDY3IEQyIDE3IDlDIDQ1IDNDIEIxIDJBIEE4IDU5IDJGIDI5IDMzIDM4CiAgICAgKiAgICAgICBDMyBDMyBERiA4NiA3MSA3NCA3QSAxOSA5RiA0MCBEMCAyOSBCRSA4NSA5MCA0NQogICAgICogICAgICAgLi4uCiAgICAgKiB9CiAgICAgKgogICAgICogV2hlcmVhcyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgKGFuZCB0aGlzIFBLQ1MjNyBtb2R1bGUpIGdlbmVyYXRlOgogICAgICogU0VRVUVOQ0UgewogICAgICogICAgLi4uCiAgICAgKiAgICBbMF0gewogICAgICogICAgICAgT0NURVQgU1RSSU5HCiAgICAgKiAgICAgICAgICAyNiBEQSA2NyBEMiAxNyA5QyA0NSAzQyBCMSAyQSBBOCA1OSAyRiAyOSAzMyAzOAogICAgICogICAgICAgICAgQzMgQzMgREYgODYgNzEgNzQgN0EgMTkgOUYgNDAgRDAgMjkgQkUgODUgOTAgNDUKICAgICAqICAgICAgICAgIC4uLgogICAgICogICAgfQogICAgICogfQogICAgICoKICAgICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgYm90aCwgd2UganVzdCBjYXB0dXJlIHRoZSBjb250ZXh0IHNwZWNpZmljCiAgICAgKiBmaWVsZCBoZXJlLiAgVGhlIE9DVEVUIFNUUklORyBiaXQgaXMgcmVtb3ZlZCBiZWxvdy4KICAgICAqLwogICAgY2FwdHVyZTogJ2VuY3J5cHRlZENvbnRlbnQnLAogICAgY2FwdHVyZUFzbjE6ICdlbmNyeXB0ZWRDb250ZW50QXNuMScKICB9XQp9OwoKcDd2LmVudmVsb3BlZERhdGFWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0VudmVsb3BlZERhdGEnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnRW52ZWxvcGVkRGF0YS5WZXJzaW9uJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ZlcnNpb24nCiAgfSwgewogICAgbmFtZTogJ0VudmVsb3BlZERhdGEuUmVjaXBpZW50SW5mb3MnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFVCwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgY2FwdHVyZUFzbjE6ICdyZWNpcGllbnRJbmZvcycKICB9XS5jb25jYXQoZW5jcnlwdGVkQ29udGVudEluZm9WYWxpZGF0b3IpCn07CgpwN3YuZW5jcnlwdGVkRGF0YVZhbGlkYXRvciA9IHsKICBuYW1lOiAnRW5jcnlwdGVkRGF0YScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdFbmNyeXB0ZWREYXRhLlZlcnNpb24nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAndmVyc2lvbicKICB9XS5jb25jYXQoZW5jcnlwdGVkQ29udGVudEluZm9WYWxpZGF0b3IpCn07Cgp2YXIgc2lnbmVyVmFsaWRhdG9yID0gewogIG5hbWU6ICdTaWduZXJJbmZvJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ1NpZ25lckluZm8udmVyc2lvbicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZQogIH0sIHsKICAgIG5hbWU6ICdTaWduZXJJbmZvLmlzc3VlckFuZFNlcmlhbE51bWJlcicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnU2lnbmVySW5mby5pc3N1ZXJBbmRTZXJpYWxOdW1iZXIuaXNzdWVyJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2lzc3VlcicKICAgIH0sIHsKICAgICAgbmFtZTogJ1NpZ25lckluZm8uaXNzdWVyQW5kU2VyaWFsTnVtYmVyLnNlcmlhbE51bWJlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ3NlcmlhbCcKICAgIH1dCiAgfSwgewogICAgbmFtZTogJ1NpZ25lckluZm8uZGlnZXN0QWxnb3JpdGhtJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdTaWduZXJJbmZvLmRpZ2VzdEFsZ29yaXRobS5hbGdvcml0aG0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2RpZ2VzdEFsZ29yaXRobScKICAgIH0sIHsKICAgICAgbmFtZTogJ1NpZ25lckluZm8uZGlnZXN0QWxnb3JpdGhtLnBhcmFtZXRlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlQXNuMTogJ2RpZ2VzdFBhcmFtZXRlcicsCiAgICAgIG9wdGlvbmFsOiB0cnVlCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdTaWduZXJJbmZvLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICB0eXBlOiAwLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmU6ICdhdXRoZW50aWNhdGVkQXR0cmlidXRlcycKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVySW5mby5kaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgY2FwdHVyZTogJ3NpZ25hdHVyZUFsZ29yaXRobScKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVySW5mby5lbmNyeXB0ZWREaWdlc3QnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3NpZ25hdHVyZScKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVySW5mby51bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICB0eXBlOiAxLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmU6ICd1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzJwogIH1dCn07CgpwN3Yuc2lnbmVkRGF0YVZhbGlkYXRvciA9IHsKICBuYW1lOiAnU2lnbmVkRGF0YScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdTaWduZWREYXRhLlZlcnNpb24nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAndmVyc2lvbicKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVkRGF0YS5EaWdlc3RBbGdvcml0aG1zJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVQsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnZGlnZXN0QWxnb3JpdGhtcycKICB9LAogIGNvbnRlbnRJbmZvVmFsaWRhdG9yLAogIHsKICAgIG5hbWU6ICdTaWduZWREYXRhLkNlcnRpZmljYXRlcycsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMCwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgY2FwdHVyZUFzbjE6ICdjZXJ0aWZpY2F0ZXMnCiAgfSwgewogICAgbmFtZTogJ1NpZ25lZERhdGEuQ2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdHMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDEsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnY3JscycKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVkRGF0YS5TaWduZXJJbmZvcycsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VULAogICAgY2FwdHVyZTogJ3NpZ25lckluZm9zJywKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgdmFsdWU6IFtzaWduZXJWYWxpZGF0b3JdCiAgfV0KfTsKCnA3di5yZWNpcGllbnRJbmZvVmFsaWRhdG9yID0gewogIG5hbWU6ICdSZWNpcGllbnRJbmZvJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ1JlY2lwaWVudEluZm8udmVyc2lvbicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICd2ZXJzaW9uJwogIH0sIHsKICAgIG5hbWU6ICdSZWNpcGllbnRJbmZvLmlzc3VlckFuZFNlcmlhbCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnUmVjaXBpZW50SW5mby5pc3N1ZXJBbmRTZXJpYWwuaXNzdWVyJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2lzc3VlcicKICAgIH0sIHsKICAgICAgbmFtZTogJ1JlY2lwaWVudEluZm8uaXNzdWVyQW5kU2VyaWFsLnNlcmlhbE51bWJlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ3NlcmlhbCcKICAgIH1dCiAgfSwgewogICAgbmFtZTogJ1JlY2lwaWVudEluZm8ua2V5RW5jcnlwdGlvbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnUmVjaXBpZW50SW5mby5rZXlFbmNyeXB0aW9uQWxnb3JpdGhtLmFsZ29yaXRobScsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlOiAnZW5jQWxnb3JpdGhtJwogICAgfSwgewogICAgICBuYW1lOiAnUmVjaXBpZW50SW5mby5rZXlFbmNyeXB0aW9uQWxnb3JpdGhtLnBhcmFtZXRlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlQXNuMTogJ2VuY1BhcmFtZXRlcicKICAgIH1dCiAgfSwgewogICAgbmFtZTogJ1JlY2lwaWVudEluZm8uZW5jcnlwdGVkS2V5JywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5PQ1RFVFNUUklORywKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdlbmNLZXknCiAgfV0KfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3BrY3M3YXNuMSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wa2NzN2FzbjEnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9hc24xJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIG1hc2sgZ2VuZXJhdGlvbiBmdW5jdGlvbiBNR0YxLgogKgogKiBAYXV0aG9yIFN0ZWZhbiBTaWVnbAogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgU3RlZmFuIFNpZWdsIDxzdGVzaWVAYnJva2VucGlwZS5kZT4KICogQ29weXJpZ2h0IChjKSAyMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UubWdmID0gZm9yZ2UubWdmIHx8IHt9Owp2YXIgbWdmMSA9IGZvcmdlLm1nZi5tZ2YxID0gZm9yZ2UubWdmMSA9IGZvcmdlLm1nZjEgfHwge307CgovKioKICogQ3JlYXRlcyBhIE1HRjEgbWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9uIG9iamVjdC4KICoKICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBBUEkgdG8gdXNlIChlZzogZm9yZ2UubWQuc2hhMS5jcmVhdGUoKSkuCiAqCiAqIEByZXR1cm4gYSBtYXNrIGdlbmVyYXRpb24gZnVuY3Rpb24gb2JqZWN0LgogKi8KbWdmMS5jcmVhdGUgPSBmdW5jdGlvbihtZCkgewogIHZhciBtZ2YgPSB7CiAgICAvKioKICAgICAqIEdlbmVyYXRlIG1hc2sgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gc2VlZCBUaGUgc2VlZCBmb3IgbWFzayBnZW5lcmF0aW9uLgogICAgICogQHBhcmFtIG1hc2tMZW4gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlLgogICAgICogQHJldHVybiB7U3RyaW5nfSBUaGUgZ2VuZXJhdGVkIG1hc2suCiAgICAgKi8KICAgIGdlbmVyYXRlOiBmdW5jdGlvbihzZWVkLCBtYXNrTGVuKSB7CiAgICAgIC8qIDIuIExldCBUIGJlIHRoZSBlbXB0eSBvY3RldCBzdHJpbmcuICovCiAgICAgIHZhciB0ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwoKICAgICAgLyogMy4gRm9yIGNvdW50ZXIgZnJvbSAwIHRvIGNlaWwobWFza0xlbiAvIGhMZW4pLCBkbyB0aGUgZm9sbG93aW5nOiAqLwogICAgICB2YXIgbGVuID0gTWF0aC5jZWlsKG1hc2tMZW4gLyBtZC5kaWdlc3RMZW5ndGgpOwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAvKiBhLiBDb252ZXJ0IGNvdW50ZXIgdG8gYW4gb2N0ZXQgc3RyaW5nIEMgb2YgbGVuZ3RoIDQgb2N0ZXRzICovCiAgICAgICAgdmFyIGMgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKCk7CiAgICAgICAgYy5wdXRJbnQzMihpKTsKCiAgICAgICAgLyogYi4gQ29uY2F0ZW5hdGUgdGhlIGhhc2ggb2YgdGhlIHNlZWQgbWdmU2VlZCBhbmQgQyB0byB0aGUgb2N0ZXQKICAgICAgICAgKiBzdHJpbmcgVDogKi8KICAgICAgICBtZC5zdGFydCgpOwogICAgICAgIG1kLnVwZGF0ZShzZWVkICsgYy5nZXRCeXRlcygpKTsKICAgICAgICB0LnB1dEJ1ZmZlcihtZC5kaWdlc3QoKSk7CiAgICAgIH0KCiAgICAgIC8qIE91dHB1dCB0aGUgbGVhZGluZyBtYXNrTGVuIG9jdGV0cyBvZiBUIGFzIHRoZSBvY3RldCBzdHJpbmcgbWFzay4gKi8KICAgICAgdC50cnVuY2F0ZSh0Lmxlbmd0aCgpIC0gbWFza0xlbik7CiAgICAgIHJldHVybiB0LmdldEJ5dGVzKCk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIG1nZjsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ21nZjEnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvbWdmMScsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogTm9kZS5qcyBtb2R1bGUgZm9yIEZvcmdlIG1hc2sgZ2VuZXJhdGlvbiBmdW5jdGlvbnMuCiAqCiAqIEBhdXRob3IgU3RlZmFuIFNpZWdsCiAqCiAqIENvcHlyaWdodCAyMDEyIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UubWdmID0gZm9yZ2UubWdmIHx8IHt9Owpmb3JnZS5tZ2YubWdmMSA9IGZvcmdlLm1nZjE7Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdtZ2YnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvbWdmJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vbWdmMSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIFBLQ1MjMSBQU1Mgc2lnbmF0dXJlIHBhZGRpbmcuCiAqCiAqIEBhdXRob3IgU3RlZmFuIFNpZWdsCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMiBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIHNob3J0Y3V0IGZvciBQU1MgQVBJCnZhciBwc3MgPSBmb3JnZS5wc3MgPSBmb3JnZS5wc3MgfHwge307CgovKioKICogQ3JlYXRlcyBhIFBTUyBzaWduYXR1cmUgc2NoZW1lIG9iamVjdC4KICoKICogVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBwcm92aWRlIGEgc2FsdCBmb3IgZW5jb2Rpbmc6CiAqCiAqIDEuIFNwZWNpZnkgdGhlIHNhbHRMZW5ndGggb25seSBhbmQgdGhlIGJ1aWx0LWluIFBSTkcgd2lsbCBnZW5lcmF0ZSBpdC4KICogMi4gU3BlY2lmeSB0aGUgc2FsdExlbmd0aCBhbmQgYSBjdXN0b20gUFJORyB3aXRoICdnZXRCeXRlc1N5bmMnIGRlZmluZWQgdGhhdAogKiAgIHdpbGwgYmUgdXNlZC4KICogMy4gU3BlY2lmeSB0aGUgc2FsdCBpdHNlbGYgYXMgYSBmb3JnZS51dGlsLkJ5dGVCdWZmZXIuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgbWQgdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UsIGEgZm9yZ2UgbWQgaW5zdGFuY2UuCiAqICAgICAgICAgIG1nZiB0aGUgbWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9uIHRvIHVzZSwgYSBmb3JnZSBtZ2YgaW5zdGFuY2UuCiAqICAgICAgICAgIFtzYWx0TGVuZ3RoXSB0aGUgbGVuZ3RoIG9mIHRoZSBzYWx0IGluIG9jdGV0cy4KICogICAgICAgICAgW3BybmddIHRoZSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlIHRvIHByb2R1Y2UgYSBzYWx0LgogKiAgICAgICAgICBbc2FsdF0gdGhlIHNhbHQgdG8gdXNlIHdoZW4gZW5jb2RpbmcuCiAqCiAqIEByZXR1cm4gYSBzaWduYXR1cmUgc2NoZW1lIG9iamVjdC4KICovCnBzcy5jcmVhdGUgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdy9sZWdhY3kgYXJnczogaGFzaCwgbWdmLCBzTGVuCiAgaWYoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykgewogICAgb3B0aW9ucyA9IHsKICAgICAgbWQ6IGFyZ3VtZW50c1swXSwKICAgICAgbWdmOiBhcmd1bWVudHNbMV0sCiAgICAgIHNhbHRMZW5ndGg6IGFyZ3VtZW50c1syXQogICAgfTsKICB9CgogIHZhciBoYXNoID0gb3B0aW9ucy5tZDsKICB2YXIgbWdmID0gb3B0aW9ucy5tZ2Y7CiAgdmFyIGhMZW4gPSBoYXNoLmRpZ2VzdExlbmd0aDsKCiAgdmFyIHNhbHRfID0gb3B0aW9ucy5zYWx0IHx8IG51bGw7CiAgaWYodHlwZW9mIHNhbHRfID09PSAnc3RyaW5nJykgewogICAgLy8gYXNzdW1lIGJpbmFyeS1lbmNvZGVkIHN0cmluZwogICAgc2FsdF8gPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihzYWx0Xyk7CiAgfQoKICB2YXIgc0xlbjsKICBpZignc2FsdExlbmd0aCcgaW4gb3B0aW9ucykgewogICAgc0xlbiA9IG9wdGlvbnMuc2FsdExlbmd0aDsKICB9IGVsc2UgaWYoc2FsdF8gIT09IG51bGwpIHsKICAgIHNMZW4gPSBzYWx0Xy5sZW5ndGgoKTsKICB9IGVsc2UgewogICAgdGhyb3cgbmV3IEVycm9yKCdTYWx0IGxlbmd0aCBub3Qgc3BlY2lmaWVkIG9yIHNwZWNpZmljIHNhbHQgbm90IGdpdmVuLicpOwogIH0KCiAgaWYoc2FsdF8gIT09IG51bGwgJiYgc2FsdF8ubGVuZ3RoKCkgIT09IHNMZW4pIHsKICAgIHRocm93IG5ldyBFcnJvcignR2l2ZW4gc2FsdCBsZW5ndGggZG9lcyBub3QgbWF0Y2ggbGVuZ3RoIG9mIGdpdmVuIHNhbHQuJyk7CiAgfQoKICB2YXIgcHJuZyA9IG9wdGlvbnMucHJuZyB8fCBmb3JnZS5yYW5kb207CgogIHZhciBwc3NvYmogPSB7fTsKCiAgLyoqCiAgICogRW5jb2RlcyBhIFBTUyBzaWduYXR1cmUuCiAgICoKICAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgRU1TQS1QU1MtRU5DT0RFIGFzIHBlciBSRkMgMzQ0Nywgc2VjdGlvbiA5LjEuMS4KICAgKgogICAqIEBwYXJhbSBtZCB0aGUgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0IHdpdGggdGhlIGhhc2ggdG8gc2lnbi4KICAgKiBAcGFyYW0gbW9kc0JpdHMgdGhlIGxlbmd0aCBvZiB0aGUgUlNBIG1vZHVsdXMgaW4gYml0cy4KICAgKgogICAqIEByZXR1cm4gdGhlIGVuY29kZWQgbWVzc2FnZSBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBsZW5ndGgKICAgKiAgICAgICAgICAgY2VpbCgobW9kQml0cyAtIDEpIC8gOCkuCiAgICovCiAgcHNzb2JqLmVuY29kZSA9IGZ1bmN0aW9uKG1kLCBtb2RCaXRzKSB7CiAgICB2YXIgaTsKICAgIHZhciBlbUJpdHMgPSBtb2RCaXRzIC0gMTsKICAgIHZhciBlbUxlbiA9IE1hdGguY2VpbChlbUJpdHMgLyA4KTsKCiAgICAvKiAyLiBMZXQgbUhhc2ggPSBIYXNoKE0pLCBhbiBvY3RldCBzdHJpbmcgb2YgbGVuZ3RoIGhMZW4uICovCiAgICB2YXIgbUhhc2ggPSBtZC5kaWdlc3QoKS5nZXRCeXRlcygpOwoKICAgIC8qIDMuIElmIGVtTGVuIDwgaExlbiArIHNMZW4gKyAyLCBvdXRwdXQgImVuY29kaW5nIGVycm9yIiBhbmQgc3RvcC4gKi8KICAgIGlmKGVtTGVuIDwgaExlbiArIHNMZW4gKyAyKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTWVzc2FnZSBpcyB0b28gbG9uZyB0byBlbmNyeXB0LicpOwogICAgfQoKICAgIC8qIDQuIEdlbmVyYXRlIGEgcmFuZG9tIG9jdGV0IHN0cmluZyBzYWx0IG9mIGxlbmd0aCBzTGVuOyBpZiBzTGVuID0gMCwKICAgICAqICAgIHRoZW4gc2FsdCBpcyB0aGUgZW1wdHkgc3RyaW5nLiAqLwogICAgdmFyIHNhbHQ7CiAgICBpZihzYWx0XyA9PT0gbnVsbCkgewogICAgICBzYWx0ID0gcHJuZy5nZXRCeXRlc1N5bmMoc0xlbik7CiAgICB9IGVsc2UgewogICAgICBzYWx0ID0gc2FsdF8uYnl0ZXMoKTsKICAgIH0KCiAgICAvKiA1LiBMZXQgTScgPSAoMHgpMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfHwgbUhhc2ggfHwgc2FsdDsgKi8KICAgIHZhciBtXyA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICAgIG1fLmZpbGxXaXRoQnl0ZSgwLCA4KTsKICAgIG1fLnB1dEJ5dGVzKG1IYXNoKTsKICAgIG1fLnB1dEJ5dGVzKHNhbHQpOwoKICAgIC8qIDYuIExldCBIID0gSGFzaChNJyksIGFuIG9jdGV0IHN0cmluZyBvZiBsZW5ndGggaExlbi4gKi8KICAgIGhhc2guc3RhcnQoKTsKICAgIGhhc2gudXBkYXRlKG1fLmdldEJ5dGVzKCkpOwogICAgdmFyIGggPSBoYXNoLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CgogICAgLyogNy4gR2VuZXJhdGUgYW4gb2N0ZXQgc3RyaW5nIFBTIGNvbnNpc3Rpbmcgb2YgZW1MZW4gLSBzTGVuIC0gaExlbiAtIDIKICAgICAqICAgIHplcm8gb2N0ZXRzLiAgVGhlIGxlbmd0aCBvZiBQUyBtYXkgYmUgMC4gKi8KICAgIHZhciBwcyA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICAgIHBzLmZpbGxXaXRoQnl0ZSgwLCBlbUxlbiAtIHNMZW4gLSBoTGVuIC0gMik7CgogICAgLyogOC4gTGV0IERCID0gUFMgfHwgMHgwMSB8fCBzYWx0OyBEQiBpcyBhbiBvY3RldCBzdHJpbmcgb2YgbGVuZ3RoCiAgICAgKiAgICBlbUxlbiAtIGhMZW4gLSAxLiAqLwogICAgcHMucHV0Qnl0ZSgweDAxKTsKICAgIHBzLnB1dEJ5dGVzKHNhbHQpOwogICAgdmFyIGRiID0gcHMuZ2V0Qnl0ZXMoKTsKCiAgICAvKiA5LiBMZXQgZGJNYXNrID0gTUdGKEgsIGVtTGVuIC0gaExlbiAtIDEpLiAqLwogICAgdmFyIG1hc2tMZW4gPSBlbUxlbiAtIGhMZW4gLSAxOwogICAgdmFyIGRiTWFzayA9IG1nZi5nZW5lcmF0ZShoLCBtYXNrTGVuKTsKCiAgICAvKiAxMC4gTGV0IG1hc2tlZERCID0gREIgXHhvciBkYk1hc2suICovCiAgICB2YXIgbWFza2VkREIgPSAnJzsKICAgIGZvcihpID0gMDsgaSA8IG1hc2tMZW47IGkgKyspIHsKICAgICAgbWFza2VkREIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYi5jaGFyQ29kZUF0KGkpIF4gZGJNYXNrLmNoYXJDb2RlQXQoaSkpOwogICAgfQoKICAgIC8qIDExLiBTZXQgdGhlIGxlZnRtb3N0IDhlbUxlbiAtIGVtQml0cyBiaXRzIG9mIHRoZSBsZWZ0bW9zdCBvY3RldCBpbgogICAgICogICAgIG1hc2tlZERCIHRvIHplcm8uICovCiAgICB2YXIgbWFzayA9ICgweEZGMDAgPj4gKDggKiBlbUxlbiAtIGVtQml0cykpICYgMHhGRjsKICAgIG1hc2tlZERCID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXNrZWREQi5jaGFyQ29kZUF0KDApICYgfm1hc2spICsKICAgICAgbWFza2VkREIuc3Vic3RyKDEpOwoKICAgIC8qIDEyLiBMZXQgRU0gPSBtYXNrZWREQiB8fCBIIHx8IDB4YmMuCiAgICAgKiAxMy4gT3V0cHV0IEVNLiAqLwogICAgcmV0dXJuIG1hc2tlZERCICsgaCArIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhiYyk7CiAgfTsKCiAgLyoqCiAgICogVmVyaWZpZXMgYSBQU1Mgc2lnbmF0dXJlLgogICAqCiAgICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIEVNU0EtUFNTLVZFUklGWSBhcyBwZXIgUkZDIDM0NDcsIHNlY3Rpb24gOS4xLjIuCiAgICoKICAgKiBAcGFyYW0gbUhhc2ggdGhlIG1lc3NhZ2UgZGlnZXN0IGhhc2gsIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nLCB0bwogICAqICAgICAgICAgY29tcGFyZSBhZ2FpbnN0IHRoZSBzaWduYXR1cmUuCiAgICogQHBhcmFtIGVtIHRoZSBlbmNvZGVkIG1lc3NhZ2UsIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nCiAgICogICAgICAgICAgKFJTQSBkZWNyeXB0aW9uIHJlc3VsdCkuCiAgICogQHBhcmFtIG1vZHNCaXRzIHRoZSBsZW5ndGggb2YgdGhlIFJTQSBtb2R1bHVzIGluIGJpdHMuCiAgICoKICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNpZ25hdHVyZSB3YXMgdmVyaWZpZWQsIGZhbHNlIGlmIG5vdC4KICAgKi8KICBwc3NvYmoudmVyaWZ5ID0gZnVuY3Rpb24obUhhc2gsIGVtLCBtb2RCaXRzKSB7CiAgICB2YXIgaTsKICAgIHZhciBlbUJpdHMgPSBtb2RCaXRzIC0gMTsKICAgIHZhciBlbUxlbiA9IE1hdGguY2VpbChlbUJpdHMgLyA4KTsKCiAgICAvKiBjLiBDb252ZXJ0IHRoZSBtZXNzYWdlIHJlcHJlc2VudGF0aXZlIG0gdG8gYW4gZW5jb2RlZCBtZXNzYWdlIEVNCiAgICAgKiAgICBvZiBsZW5ndGggZW1MZW4gPSBjZWlsKChtb2RCaXRzIC0gMSkgLyA4KSBvY3RldHMsIHdoZXJlIG1vZEJpdHMKICAgICAqICAgIGlzIHRoZSBsZW5ndGggaW4gYml0cyBvZiB0aGUgUlNBIG1vZHVsdXMgbiAqLwogICAgZW0gPSBlbS5zdWJzdHIoLWVtTGVuKTsKCiAgICAvKiAzLiBJZiBlbUxlbiA8IGhMZW4gKyBzTGVuICsgMiwgb3V0cHV0ICJpbmNvbnNpc3RlbnQiIGFuZCBzdG9wLiAqLwogICAgaWYoZW1MZW4gPCBoTGVuICsgc0xlbiArIDIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvbnNpc3RlbnQgcGFyYW1ldGVycyB0byBQU1Mgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4nKTsKICAgIH0KCiAgICAvKiA0LiBJZiB0aGUgcmlnaHRtb3N0IG9jdGV0IG9mIEVNIGRvZXMgbm90IGhhdmUgaGV4YWRlY2ltYWwgdmFsdWUKICAgICAqICAgIDB4YmMsIG91dHB1dCAiaW5jb25zaXN0ZW50IiBhbmQgc3RvcC4gKi8KICAgIGlmKGVtLmNoYXJDb2RlQXQoZW1MZW4gLSAxKSAhPT0gMHhiYykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWQgbWVzc2FnZSBkb2VzIG5vdCBlbmQgaW4gMHhCQy4nKTsKICAgIH0KCiAgICAvKiA1LiBMZXQgbWFza2VkREIgYmUgdGhlIGxlZnRtb3N0IGVtTGVuIC0gaExlbiAtIDEgb2N0ZXRzIG9mIEVNLCBhbmQKICAgICAqICAgIGxldCBIIGJlIHRoZSBuZXh0IGhMZW4gb2N0ZXRzLiAqLwogICAgdmFyIG1hc2tMZW4gPSBlbUxlbiAtIGhMZW4gLSAxOwogICAgdmFyIG1hc2tlZERCID0gZW0uc3Vic3RyKDAsIG1hc2tMZW4pOwogICAgdmFyIGggPSBlbS5zdWJzdHIobWFza0xlbiwgaExlbik7CgogICAgLyogNi4gSWYgdGhlIGxlZnRtb3N0IDhlbUxlbiAtIGVtQml0cyBiaXRzIG9mIHRoZSBsZWZ0bW9zdCBvY3RldCBpbgogICAgICogICAgbWFza2VkREIgYXJlIG5vdCBhbGwgZXF1YWwgdG8gemVybywgb3V0cHV0ICJpbmNvbnNpc3RlbnQiIGFuZCBzdG9wLiAqLwogICAgdmFyIG1hc2sgPSAoMHhGRjAwID4+ICg4ICogZW1MZW4gLSBlbUJpdHMpKSAmIDB4RkY7CiAgICBpZigobWFza2VkREIuY2hhckNvZGVBdCgwKSAmIG1hc2spICE9PSAwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignQml0cyBiZXlvbmQga2V5c2l6ZSBub3QgemVybyBhcyBleHBlY3RlZC4nKTsKICAgIH0KCiAgICAvKiA3LiBMZXQgZGJNYXNrID0gTUdGKEgsIGVtTGVuIC0gaExlbiAtIDEpLiAqLwogICAgdmFyIGRiTWFzayA9IG1nZi5nZW5lcmF0ZShoLCBtYXNrTGVuKTsKCiAgICAvKiA4LiBMZXQgREIgPSBtYXNrZWREQiBceG9yIGRiTWFzay4gKi8KICAgIHZhciBkYiA9ICcnOwogICAgZm9yKGkgPSAwOyBpIDwgbWFza0xlbjsgaSArKykgewogICAgICBkYiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hc2tlZERCLmNoYXJDb2RlQXQoaSkgXiBkYk1hc2suY2hhckNvZGVBdChpKSk7CiAgICB9CgogICAgLyogOS4gU2V0IHRoZSBsZWZ0bW9zdCA4ZW1MZW4gLSBlbUJpdHMgYml0cyBvZiB0aGUgbGVmdG1vc3Qgb2N0ZXQKICAgICAqIGluIERCIHRvIHplcm8uICovCiAgICBkYiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGIuY2hhckNvZGVBdCgwKSAmIH5tYXNrKSArIGRiLnN1YnN0cigxKTsKCiAgICAvKiAxMC4gSWYgdGhlIGVtTGVuIC0gaExlbiAtIHNMZW4gLSAyIGxlZnRtb3N0IG9jdGV0cyBvZiBEQiBhcmUgbm90IHplcm8KICAgICAqIG9yIGlmIHRoZSBvY3RldCBhdCBwb3NpdGlvbiBlbUxlbiAtIGhMZW4gLSBzTGVuIC0gMSAodGhlIGxlZnRtb3N0CiAgICAgKiBwb3NpdGlvbiBpcyAicG9zaXRpb24gMSIpIGRvZXMgbm90IGhhdmUgaGV4YWRlY2ltYWwgdmFsdWUgMHgwMSwKICAgICAqIG91dHB1dCAiaW5jb25zaXN0ZW50IiBhbmQgc3RvcC4gKi8KICAgIHZhciBjaGVja0xlbiA9IGVtTGVuIC0gaExlbiAtIHNMZW4gLSAyOwogICAgZm9yKGkgPSAwOyBpIDwgY2hlY2tMZW47IGkgKyspIHsKICAgICAgaWYoZGIuY2hhckNvZGVBdChpKSAhPT0gMHgwMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignTGVmdG1vc3Qgb2N0ZXRzIG5vdCB6ZXJvIGFzIGV4cGVjdGVkJyk7CiAgICAgIH0KICAgIH0KCiAgICBpZihkYi5jaGFyQ29kZUF0KGNoZWNrTGVuKSAhPT0gMHgwMSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29uc2lzdGVudCBQU1Mgc2lnbmF0dXJlLCAweDAxIG1hcmtlciBub3QgZm91bmQnKTsKICAgIH0KCiAgICAvKiAxMS4gTGV0IHNhbHQgYmUgdGhlIGxhc3Qgc0xlbiBvY3RldHMgb2YgREIuICovCiAgICB2YXIgc2FsdCA9IGRiLnN1YnN0cigtc0xlbik7CgogICAgLyogMTIuICBMZXQgTScgPSAoMHgpMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfHwgbUhhc2ggfHwgc2FsdCAqLwogICAgdmFyIG1fID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgbV8uZmlsbFdpdGhCeXRlKDAsIDgpOwogICAgbV8ucHV0Qnl0ZXMobUhhc2gpOwogICAgbV8ucHV0Qnl0ZXMoc2FsdCk7CgogICAgLyogMTMuIExldCBIJyA9IEhhc2goTScpLCBhbiBvY3RldCBzdHJpbmcgb2YgbGVuZ3RoIGhMZW4uICovCiAgICBoYXNoLnN0YXJ0KCk7CiAgICBoYXNoLnVwZGF0ZShtXy5nZXRCeXRlcygpKTsKICAgIHZhciBoXyA9IGhhc2guZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKCiAgICAvKiAxNC4gSWYgSCA9IEgnLCBvdXRwdXQgImNvbnNpc3RlbnQuIiBPdGhlcndpc2UsIG91dHB1dCAiaW5jb25zaXN0ZW50LiIgKi8KICAgIHJldHVybiBoID09PSBoXzsKICB9OwoKICByZXR1cm4gcHNzb2JqOwp9OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncHNzJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BzcycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3JhbmRvbScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBYLjUwOSBhbmQgcmVsYXRlZCBjb21wb25lbnRzIChzdWNoIGFzCiAqIENlcnRpZmljYXRpb24gU2lnbmluZyBSZXF1ZXN0cykgb2YgYSBQdWJsaWMgS2V5IEluZnJhc3RydWN0dXJlLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKgogKiBUaGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgYW4gWC41MDl2MyBjZXJ0aWZpY2F0ZSBpcyBhcyBmb2xsb3dzCiAqIChzZWUgUkZDIDI0NTkpOgogKgogKiBDZXJ0aWZpY2F0ZSA6Oj0gU0VRVUVOQ0UgewogKiAgIHRic0NlcnRpZmljYXRlICAgICAgIFRCU0NlcnRpZmljYXRlLAogKiAgIHNpZ25hdHVyZUFsZ29yaXRobSAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgc2lnbmF0dXJlVmFsdWUgICAgICAgQklUIFNUUklORwogKiB9CiAqCiAqIFRCU0NlcnRpZmljYXRlIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgIFswXSAgRVhQTElDSVQgVmVyc2lvbiBERUZBVUxUIHYxLAogKiAgIHNlcmlhbE51bWJlciAgICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyLAogKiAgIHNpZ25hdHVyZSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgaXNzdWVyICAgICAgICAgICAgICAgTmFtZSwKICogICB2YWxpZGl0eSAgICAgICAgICAgICBWYWxpZGl0eSwKICogICBzdWJqZWN0ICAgICAgICAgICAgICBOYW1lLAogKiAgIHN1YmplY3RQdWJsaWNLZXlJbmZvIFN1YmplY3RQdWJsaWNLZXlJbmZvLAogKiAgIGlzc3VlclVuaXF1ZUlEICBbMV0gIElNUExJQ0lUIFVuaXF1ZUlkZW50aWZpZXIgT1BUSU9OQUwsCiAqICAgICAgICAgICAgICAgICAgICAgICAgLS0gSWYgcHJlc2VudCwgdmVyc2lvbiBzaGFsbCBiZSB2MiBvciB2MwogKiAgIHN1YmplY3RVbmlxdWVJRCBbMl0gIElNUExJQ0lUIFVuaXF1ZUlkZW50aWZpZXIgT1BUSU9OQUwsCiAqICAgICAgICAgICAgICAgICAgICAgICAgLS0gSWYgcHJlc2VudCwgdmVyc2lvbiBzaGFsbCBiZSB2MiBvciB2MwogKiAgIGV4dGVuc2lvbnMgICAgICBbM10gIEVYUExJQ0lUIEV4dGVuc2lvbnMgT1BUSU9OQUwKICogICAgICAgICAgICAgICAgICAgICAgICAtLSBJZiBwcmVzZW50LCB2ZXJzaW9uIHNoYWxsIGJlIHYzCiAqIH0KICoKICogVmVyc2lvbiA6Oj0gSU5URUdFUiAgeyB2MSgwKSwgdjIoMSksIHYzKDIpIH0KICoKICogQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIgOjo9IElOVEVHRVIKICoKICogTmFtZSA6Oj0gQ0hPSUNFIHsKICogICAvLyBvbmx5IG9uZSBwb3NzaWJsZSBjaG9pY2UgZm9yIG5vdwogKiAgIFJETlNlcXVlbmNlCiAqIH0KICoKICogUkROU2VxdWVuY2UgOjo9IFNFUVVFTkNFIE9GIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKICoKICogUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSA6Oj0gU0VUIE9GIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZQogKgogKiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgOjo9IFNFUVVFTkNFIHsKICogICB0eXBlICAgICBBdHRyaWJ1dGVUeXBlLAogKiAgIHZhbHVlICAgIEF0dHJpYnV0ZVZhbHVlCiAqIH0KICogQXR0cmlidXRlVHlwZSA6Oj0gT0JKRUNUIElERU5USUZJRVIKICogQXR0cmlidXRlVmFsdWUgOjo9IEFOWSBERUZJTkVEIEJZIEF0dHJpYnV0ZVR5cGUKICoKICogVmFsaWRpdHkgOjo9IFNFUVVFTkNFIHsKICogICBub3RCZWZvcmUgICAgICBUaW1lLAogKiAgIG5vdEFmdGVyICAgICAgIFRpbWUKICogfQogKgogKiBUaW1lIDo6PSBDSE9JQ0UgewogKiAgIHV0Y1RpbWUgICAgICAgIFVUQ1RpbWUsCiAqICAgZ2VuZXJhbFRpbWUgICAgR2VuZXJhbGl6ZWRUaW1lCiAqIH0KICoKICogVW5pcXVlSWRlbnRpZmllciA6Oj0gQklUIFNUUklORwogKgogKiBTdWJqZWN0UHVibGljS2V5SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIGFsZ29yaXRobSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgc3ViamVjdFB1YmxpY0tleSAgICAgQklUIFNUUklORwogKiB9CiAqCiAqIEV4dGVuc2lvbnMgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLk1BWCkgT0YgRXh0ZW5zaW9uCiAqCiAqIEV4dGVuc2lvbiA6Oj0gU0VRVUVOQ0UgewogKiAgIGV4dG5JRCAgICAgIE9CSkVDVCBJREVOVElGSUVSLAogKiAgIGNyaXRpY2FsICAgIEJPT0xFQU4gREVGQVVMVCBGQUxTRSwKICogICBleHRuVmFsdWUgICBPQ1RFVCBTVFJJTkcKICogfQogKgogKiBUaGUgb25seSBrZXkgYWxnb3JpdGhtIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIFBLSSBpcyBSU0EuCiAqCiAqIFJTQVNTQS1QU1Mgc2lnbmF0dXJlcyBhcmUgZGVzY3JpYmVkIGluIFJGQyAzNDQ3IGFuZCBSRkMgNDA1NS4KICoKICogUEtDUyMxMCB2MS43IGRlc2NyaWJlcyBjZXJ0aWZpY2F0ZSBzaWduaW5nIHJlcXVlc3RzOgogKgogKiBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm86CiAqCiAqIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gICAgICAgSU5URUdFUiB7IHYxKDApIH0gKHYxLC4uLiksCiAqICAgc3ViamVjdCAgICAgICBOYW1lLAogKiAgIHN1YmplY3RQS0luZm8gU3ViamVjdFB1YmxpY0tleUluZm97eyBQS0luZm9BbGdvcml0aG1zIH19LAogKiAgIGF0dHJpYnV0ZXMgICAgWzBdIEF0dHJpYnV0ZXN7eyBDUklBdHRyaWJ1dGVzIH19CiAqIH0KICoKICogQXR0cmlidXRlcyB7IEFUVFJJQlVURTpJT1NldCB9IDo6PSBTRVQgT0YgQXR0cmlidXRle3sgSU9TZXQgfX0KICoKICogQ1JJQXR0cmlidXRlcyAgQVRUUklCVVRFICA6Oj0gewogKiAgIC4uLiAtLSBhZGQgYW55IGxvY2FsbHkgZGVmaW5lZCBhdHRyaWJ1dGVzIGhlcmUgLS0gfQogKgogKiBBdHRyaWJ1dGUgeyBBVFRSSUJVVEU6SU9TZXQgfSA6Oj0gU0VRVUVOQ0UgewogKiAgIHR5cGUgICBBVFRSSUJVVEUuJmlkKHtJT1NldH0pLAogKiAgIHZhbHVlcyBTRVQgU0laRSgxLi5NQVgpIE9GIEFUVFJJQlVURS4mVHlwZSh7SU9TZXR9e0B0eXBlfSkKICogfQogKgogKiBDZXJ0aWZpY2F0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewogKiAgIGNlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8sCiAqICAgc2lnbmF0dXJlQWxnb3JpdGhtIEFsZ29yaXRobUlkZW50aWZpZXJ7eyBTaWduYXR1cmVBbGdvcml0aG1zIH19LAogKiAgIHNpZ25hdHVyZSAgICAgICAgICBCSVQgU1RSSU5HCiAqIH0KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBzaG9ydGN1dCBmb3IgYXNuLjEgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKCi8qIFB1YmxpYyBLZXkgSW5mcmFzdHJ1Y3R1cmUgKFBLSSkgaW1wbGVtZW50YXRpb24uICovCnZhciBwa2kgPSBmb3JnZS5wa2kgPSBmb3JnZS5wa2kgfHwge307CnZhciBvaWRzID0gcGtpLm9pZHM7CgovLyBzaG9ydCBuYW1lIE9JRCBtYXBwaW5ncwp2YXIgX3Nob3J0TmFtZXMgPSB7fTsKX3Nob3J0TmFtZXNbJ0NOJ10gPSBvaWRzWydjb21tb25OYW1lJ107Cl9zaG9ydE5hbWVzWydjb21tb25OYW1lJ10gPSAnQ04nOwpfc2hvcnROYW1lc1snQyddID0gb2lkc1snY291bnRyeU5hbWUnXTsKX3Nob3J0TmFtZXNbJ2NvdW50cnlOYW1lJ10gPSAnQyc7Cl9zaG9ydE5hbWVzWydMJ10gPSBvaWRzWydsb2NhbGl0eU5hbWUnXTsKX3Nob3J0TmFtZXNbJ2xvY2FsaXR5TmFtZSddID0gJ0wnOwpfc2hvcnROYW1lc1snU1QnXSA9IG9pZHNbJ3N0YXRlT3JQcm92aW5jZU5hbWUnXTsKX3Nob3J0TmFtZXNbJ3N0YXRlT3JQcm92aW5jZU5hbWUnXSA9ICdTVCc7Cl9zaG9ydE5hbWVzWydPJ10gPSBvaWRzWydvcmdhbml6YXRpb25OYW1lJ107Cl9zaG9ydE5hbWVzWydvcmdhbml6YXRpb25OYW1lJ10gPSAnTyc7Cl9zaG9ydE5hbWVzWydPVSddID0gb2lkc1snb3JnYW5pemF0aW9uYWxVbml0TmFtZSddOwpfc2hvcnROYW1lc1snb3JnYW5pemF0aW9uYWxVbml0TmFtZSddID0gJ09VJzsKX3Nob3J0TmFtZXNbJ0UnXSA9IG9pZHNbJ2VtYWlsQWRkcmVzcyddOwpfc2hvcnROYW1lc1snZW1haWxBZGRyZXNzJ10gPSAnRSc7CgovLyB2YWxpZGF0b3IgZm9yIGFuIFN1YmplY3RQdWJsaWNLZXlJbmZvIHN0cnVjdHVyZQovLyBOb3RlOiBDdXJyZW50bHkgb25seSB3b3JrcyB3aXRoIGFuIFJTQSBwdWJsaWMga2V5CnZhciBwdWJsaWNLZXlWYWxpZGF0b3IgPSBmb3JnZS5wa2kucnNhLnB1YmxpY0tleVZhbGlkYXRvcjsKCi8vIHZhbGlkYXRvciBmb3IgYW4gWC41MDl2MyBjZXJ0aWZpY2F0ZQp2YXIgeDUwOUNlcnRpZmljYXRlVmFsaWRhdG9yID0gewogIG5hbWU6ICdDZXJ0aWZpY2F0ZScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAndGJzQ2VydGlmaWNhdGUnLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS52ZXJzaW9uJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgICAgdHlwZTogMCwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUudmVyc2lvbi5pbnRlZ2VyJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICAgIGNhcHR1cmU6ICdjZXJ0VmVyc2lvbicKICAgICAgfV0KICAgIH0sIHsKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnNlcmlhbE51bWJlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2NlcnRTZXJpYWxOdW1iZXInCiAgICB9LCB7CiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS5zaWduYXR1cmUnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIHZhbHVlOiBbewogICAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS5zaWduYXR1cmUuYWxnb3JpdGhtJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRpbmZvU2lnbmF0dXJlT2lkJwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnNpZ25hdHVyZS5wYXJhbWV0ZXJzJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgICAgY2FwdHVyZUFzbjE6ICdjZXJ0aW5mb1NpZ25hdHVyZVBhcmFtcycKICAgICAgfV0KICAgIH0sIHsKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLmlzc3VlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgY2FwdHVyZUFzbjE6ICdjZXJ0SXNzdWVyJwogICAgfSwgewogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUudmFsaWRpdHknLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIC8vIE5vdGU6IFVUQyBhbmQgZ2VuZXJhbGl6ZWQgdGltZXMgbWF5IGJvdGggYXBwZWFyIHNvIHRoZSBjYXB0dXJlCiAgICAgIC8vIG5hbWVzIGFyZSBiYXNlZCBvbiB0aGVpciBkZXRlY3RlZCBvcmRlciwgdGhlIG5hbWVzIHVzZWQgYmVsb3cKICAgICAgLy8gYXJlIG9ubHkgZm9yIHRoZSBjb21tb24gY2FzZSwgd2hpY2ggdmFsaWRpdHkgdGltZSByZWFsbHkgbWVhbnMKICAgICAgLy8gIm5vdEJlZm9yZSIgYW5kIHdoaWNoIG1lYW5zICJub3RBZnRlciIgd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IG9yZGVyCiAgICAgIHZhbHVlOiBbewogICAgICAgIC8vIG5vdEJlZm9yZSAoVGltZSkgKFVUQyB0aW1lIGNhc2UpCiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnZhbGlkaXR5Lm5vdEJlZm9yZSAodXRjKScsCiAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgIHR5cGU6IGFzbjEuVHlwZS5VVENUSU1FLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBvcHRpb25hbDogdHJ1ZSwKICAgICAgICBjYXB0dXJlOiAnY2VydFZhbGlkaXR5MVVUQ1RpbWUnCiAgICAgIH0sIHsKICAgICAgICAvLyBub3RCZWZvcmUgKFRpbWUpIChnZW5lcmFsaXplZCB0aW1lIGNhc2UpCiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnZhbGlkaXR5Lm5vdEJlZm9yZSAoZ2VuZXJhbGl6ZWQpJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLkdFTkVSQUxJWkVEVElNRSwKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRWYWxpZGl0eTJHZW5lcmFsaXplZFRpbWUnCiAgICAgIH0sIHsKICAgICAgICAvLyBub3RBZnRlciAoVGltZSkgKG9ubHkgVVRDIHRpbWUgaXMgc3VwcG9ydGVkKQogICAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS52YWxpZGl0eS5ub3RBZnRlciAodXRjKScsCiAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgIHR5cGU6IGFzbjEuVHlwZS5VVENUSU1FLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBvcHRpb25hbDogdHJ1ZSwKICAgICAgICBjYXB0dXJlOiAnY2VydFZhbGlkaXR5M1VUQ1RpbWUnCiAgICAgIH0sIHsKICAgICAgICAvLyBub3RBZnRlciAoVGltZSkgKG9ubHkgVVRDIHRpbWUgaXMgc3VwcG9ydGVkKQogICAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS52YWxpZGl0eS5ub3RBZnRlciAoZ2VuZXJhbGl6ZWQpJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLkdFTkVSQUxJWkVEVElNRSwKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRWYWxpZGl0eTRHZW5lcmFsaXplZFRpbWUnCiAgICAgIH1dCiAgICB9LCB7CiAgICAgIC8vIE5hbWUgKHN1YmplY3QpIChSRE5TZXF1ZW5jZSkKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnN1YmplY3QnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIGNhcHR1cmVBc24xOiAnY2VydFN1YmplY3QnCiAgICB9LAogICAgICAvLyBTdWJqZWN0UHVibGljS2V5SW5mbwogICAgICBwdWJsaWNLZXlWYWxpZGF0b3IsCiAgICB7CiAgICAgIC8vIGlzc3VlclVuaXF1ZUlEIChvcHRpb25hbCkKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLmlzc3VlclVuaXF1ZUlEJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgICAgdHlwZTogMSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuaXNzdWVyVW5pcXVlSUQuaWQnLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuQklUU1RSSU5HLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAnY2VydElzc3VlclVuaXF1ZUlkJwogICAgICB9XQogICAgfSwgewogICAgICAvLyBzdWJqZWN0VW5pcXVlSUQgKG9wdGlvbmFsKQogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuc3ViamVjdFVuaXF1ZUlEJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgICAgdHlwZTogMiwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuc3ViamVjdFVuaXF1ZUlELmlkJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLkJJVFNUUklORywKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRTdWJqZWN0VW5pcXVlSWQnCiAgICAgIH1dCiAgICB9LCB7CiAgICAgIC8vIEV4dGVuc2lvbnMgKG9wdGlvbmFsKQogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuZXh0ZW5zaW9ucycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICAgIHR5cGU6IDMsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2NlcnRFeHRlbnNpb25zJywKICAgICAgb3B0aW9uYWw6IHRydWUKICAgIH1dCiAgfSwgewogICAgLy8gQWxnb3JpdGhtSWRlbnRpZmllciAoc2lnbmF0dXJlIGFsZ29yaXRobSkKICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5zaWduYXR1cmVBbGdvcml0aG0nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICB2YWx1ZTogW3sKICAgICAgLy8gYWxnb3JpdGhtCiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5zaWduYXR1cmVBbGdvcml0aG0uYWxnb3JpdGhtJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdjZXJ0U2lnbmF0dXJlT2lkJwogICAgfSwgewogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuc2lnbmF0dXJlLnBhcmFtZXRlcnMnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2NlcnRTaWduYXR1cmVQYXJhbXMnCiAgICB9XQogIH0sIHsKICAgIC8vIFNpZ25hdHVyZVZhbHVlCiAgICBuYW1lOiAnQ2VydGlmaWNhdGUuc2lnbmF0dXJlVmFsdWUnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLkJJVFNUUklORywKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdjZXJ0U2lnbmF0dXJlJwogIH1dCn07Cgp2YXIgcnNhc3NhUHNzUGFyYW1ldGVyVmFsaWRhdG9yID0gewogIG5hbWU6ICdyc2Fwc3MnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAncnNhcHNzLmhhc2hBbGdvcml0aG0nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDAsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAncnNhcHNzLmhhc2hBbGdvcml0aG0uQWxnb3JpdGhtSWRlbnRpZmllcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5DbGFzcy5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAncnNhcHNzLmhhc2hBbGdvcml0aG0uQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0nLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAnaGFzaE9pZCcKICAgICAgICAvKiBwYXJhbWV0ZXIgYmxvY2sgb21pdHRlZCwgZm9yIFNIQTEgTlVMTCBhbnlob3cuICovCiAgICAgIH1dCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdyc2Fwc3MubWFza0dlbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdyc2Fwc3MubWFza0dlbkFsZ29yaXRobS5BbGdvcml0aG1JZGVudGlmaWVyJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLkNsYXNzLlNFUVVFTkNFLAogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgIHZhbHVlOiBbewogICAgICAgIG5hbWU6ICdyc2Fwc3MubWFza0dlbkFsZ29yaXRobS5BbGdvcml0aG1JZGVudGlmaWVyLmFsZ29yaXRobScsCiAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICAgIGNhcHR1cmU6ICdtYXNrR2VuT2lkJwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ3JzYXBzcy5tYXNrR2VuQWxnb3JpdGhtLkFsZ29yaXRobUlkZW50aWZpZXIucGFyYW1zJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICAgIHZhbHVlOiBbewogICAgICAgICAgbmFtZTogJ3JzYXBzcy5tYXNrR2VuQWxnb3JpdGhtLkFsZ29yaXRobUlkZW50aWZpZXIucGFyYW1zLmFsZ29yaXRobScsCiAgICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICAgICAgY2FwdHVyZTogJ21hc2tHZW5IYXNoT2lkJwogICAgICAgICAgLyogcGFyYW1ldGVyIGJsb2NrIG9taXR0ZWQsIGZvciBTSEExIE5VTEwgYW55aG93LiAqLwogICAgICAgIH1dCiAgICAgIH1dCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdyc2Fwc3Muc2FsdExlbmd0aCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMiwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdyc2Fwc3Muc2FsdExlbmd0aC5zYWx0TGVuZ3RoJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLkNsYXNzLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ3NhbHRMZW5ndGgnCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdyc2Fwc3MudHJhaWxlckZpZWxkJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICB0eXBlOiAzLAogICAgb3B0aW9uYWw6IHRydWUsCiAgICB2YWx1ZTogW3sKICAgICAgbmFtZTogJ3JzYXBzcy50cmFpbGVyLnRyYWlsZXInLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuQ2xhc3MuSU5URUdFUiwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlOiAndHJhaWxlcicKICAgIH1dCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYSBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8gc3RydWN0dXJlCnZhciBjZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm9WYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICBjYXB0dXJlQXNuMTogJ2NlcnRpZmljYXRpb25SZXF1ZXN0SW5mbycsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLmludGVnZXInLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAnY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvVmVyc2lvbicKICB9LCB7CiAgICAvLyBOYW1lIChzdWJqZWN0KSAoUkROU2VxdWVuY2UpCiAgICBuYW1lOiAnQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLnN1YmplY3QnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBjYXB0dXJlQXNuMTogJ2NlcnRpZmljYXRpb25SZXF1ZXN0SW5mb1N1YmplY3QnCiAgfSwKICAvLyBTdWJqZWN0UHVibGljS2V5SW5mbwogIHB1YmxpY0tleVZhbGlkYXRvciwKICB7CiAgICBuYW1lOiAnQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLmF0dHJpYnV0ZXMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDAsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgY2FwdHVyZTogJ2NlcnRpZmljYXRpb25SZXF1ZXN0SW5mb0F0dHJpYnV0ZXMnLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8uYXR0cmlidXRlcycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgdmFsdWU6IFt7CiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0SW5mby5hdHRyaWJ1dGVzLnR5cGUnLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0SW5mby5hdHRyaWJ1dGVzLnZhbHVlJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLlNFVCwKICAgICAgICBjb25zdHJ1Y3RlZDogdHJ1ZQogICAgICB9XQogICAgfV0KICB9XQp9OwoKLy8gdmFsaWRhdG9yIGZvciBhIENlcnRpZmljYXRpb25SZXF1ZXN0IHN0cnVjdHVyZQp2YXIgY2VydGlmaWNhdGlvblJlcXVlc3RWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0JywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIGNhcHR1cmVBc24xOiAnY3NyJywKICB2YWx1ZTogWwogICAgY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvVmFsaWRhdG9yLCB7CiAgICAvLyBBbGdvcml0aG1JZGVudGlmaWVyIChzaWduYXR1cmUgYWxnb3JpdGhtKQogICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZUFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICAvLyBhbGdvcml0aG0KICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZUFsZ29yaXRobS5hbGdvcml0aG0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2NzclNpZ25hdHVyZU9pZCcKICAgIH0sIHsKICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZUFsZ29yaXRobS5wYXJhbWV0ZXJzJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICBvcHRpb25hbDogdHJ1ZSwKICAgICAgY2FwdHVyZUFzbjE6ICdjc3JTaWduYXR1cmVQYXJhbXMnCiAgICB9XQogIH0sIHsKICAgIC8vIHNpZ25hdHVyZQogICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuQklUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2NzclNpZ25hdHVyZScKICB9XQp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJETlNlcXVlbmNlIG9mIEFTTi4xIERFUi1lbmNvZGVkIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKICogc2V0cyBpbnRvIGFuIGFycmF5IHdpdGggb2JqZWN0cyB0aGF0IGhhdmUgdHlwZSBhbmQgdmFsdWUgcHJvcGVydGllcy4KICoKICogQHBhcmFtIHJkbiB0aGUgUkROU2VxdWVuY2UgdG8gY29udmVydC4KICogQHBhcmFtIG1kIGEgbWVzc2FnZSBkaWdlc3QgdG8gYXBwZW5kIHR5cGUgYW5kIHZhbHVlIHRvIGlmIHByb3ZpZGVkLgogKi8KcGtpLlJETkF0dHJpYnV0ZXNBc0FycmF5ID0gZnVuY3Rpb24ocmRuLCBtZCkgewogIHZhciBydmFsID0gW107CgogIC8vIGVhY2ggdmFsdWUgaW4gJ3JkbicgaW4gaXMgYSBTRVQgb2YgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZQogIHZhciBzZXQsIGF0dHIsIG9iajsKICBmb3IodmFyIHNpID0gMDsgc2kgPCByZG4udmFsdWUubGVuZ3RoOyArK3NpKSB7CiAgICAvLyBnZXQgdGhlIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgc2V0CiAgICBzZXQgPSByZG4udmFsdWVbc2ldOwoKICAgIC8vIGVhY2ggdmFsdWUgaW4gdGhlIFNFVCBpcyBhbiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgc2VxdWVuY2UKICAgIC8vIGNvbnRhaW5pbmcgZmlyc3QgYSB0eXBlIChhbiBPSUQpIGFuZCBzZWNvbmQgYSB2YWx1ZSAoZGVmaW5lZCBieQogICAgLy8gdGhlIE9JRCkKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzZXQudmFsdWUubGVuZ3RoOyArK2kpIHsKICAgICAgb2JqID0ge307CiAgICAgIGF0dHIgPSBzZXQudmFsdWVbaV07CiAgICAgIG9iai50eXBlID0gYXNuMS5kZXJUb09pZChhdHRyLnZhbHVlWzBdLnZhbHVlKTsKICAgICAgb2JqLnZhbHVlID0gYXR0ci52YWx1ZVsxXS52YWx1ZTsKICAgICAgb2JqLnZhbHVlVGFnQ2xhc3MgPSBhdHRyLnZhbHVlWzFdLnR5cGU7CiAgICAgIC8vIGlmIHRoZSBPSUQgaXMga25vd24sIGdldCBpdHMgbmFtZSBhbmQgc2hvcnQgbmFtZQogICAgICBpZihvYmoudHlwZSBpbiBvaWRzKSB7CiAgICAgICAgb2JqLm5hbWUgPSBvaWRzW29iai50eXBlXTsKICAgICAgICBpZihvYmoubmFtZSBpbiBfc2hvcnROYW1lcykgewogICAgICAgICAgb2JqLnNob3J0TmFtZSA9IF9zaG9ydE5hbWVzW29iai5uYW1lXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYobWQpIHsKICAgICAgICBtZC51cGRhdGUob2JqLnR5cGUpOwogICAgICAgIG1kLnVwZGF0ZShvYmoudmFsdWUpOwogICAgICB9CiAgICAgIHJ2YWwucHVzaChvYmopOwogICAgfQogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgQVNOLjEgQ1JJQXR0cmlidXRlcyBpbnRvIGFuIGFycmF5IHdpdGggb2JqZWN0cyB0aGF0IGhhdmUgdHlwZSBhbmQKICogdmFsdWUgcHJvcGVydGllcy4KICoKICogQHBhcmFtIGF0dHJpYnV0ZXMgdGhlIENSSUF0dHJpYnV0ZXMgdG8gY29udmVydC4KICovCnBraS5DUklBdHRyaWJ1dGVzQXNBcnJheSA9IGZ1bmN0aW9uKGF0dHJpYnV0ZXMpIHsKICB2YXIgcnZhbCA9IFtdOwoKICAvLyBlYWNoIHZhbHVlIGluICdhdHRyaWJ1dGVzJyBpbiBpcyBhIFNFUVVFTkNFIHdpdGggYW4gT0lEIGFuZCBhIFNFVAogIGZvcih2YXIgc2kgPSAwOyBzaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyArK3NpKSB7CiAgICAvLyBnZXQgdGhlIGF0dHJpYnV0ZSBzZXF1ZW5jZQogICAgdmFyIHNlcSA9IGF0dHJpYnV0ZXNbc2ldOwoKICAgIC8vIGVhY2ggdmFsdWUgaW4gdGhlIFNFUVVFTkNFIGNvbnRhaW5pbmcgZmlyc3QgYSB0eXBlIChhbiBPSUQpIGFuZAogICAgLy8gc2Vjb25kIGEgc2V0IG9mIHZhbHVlcyAoZGVmaW5lZCBieSB0aGUgT0lEKQogICAgdmFyIHR5cGUgPSBhc24xLmRlclRvT2lkKHNlcS52YWx1ZVswXS52YWx1ZSk7CiAgICB2YXIgdmFsdWVzID0gc2VxLnZhbHVlWzFdLnZhbHVlOwogICAgZm9yKHZhciB2aSA9IDA7IHZpIDwgdmFsdWVzLmxlbmd0aDsgKyt2aSkgewogICAgICB2YXIgb2JqID0ge307CiAgICAgIG9iai50eXBlID0gdHlwZTsKICAgICAgb2JqLnZhbHVlID0gdmFsdWVzW3ZpXS52YWx1ZTsKICAgICAgb2JqLnZhbHVlVGFnQ2xhc3MgPSB2YWx1ZXNbdmldLnR5cGU7CiAgICAgIC8vIGlmIHRoZSBPSUQgaXMga25vd24sIGdldCBpdHMgbmFtZSBhbmQgc2hvcnQgbmFtZQogICAgICBpZihvYmoudHlwZSBpbiBvaWRzKSB7CiAgICAgICAgb2JqLm5hbWUgPSBvaWRzW29iai50eXBlXTsKICAgICAgICBpZihvYmoubmFtZSBpbiBfc2hvcnROYW1lcykgewogICAgICAgICAgb2JqLnNob3J0TmFtZSA9IF9zaG9ydE5hbWVzW29iai5uYW1lXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gcGFyc2UgZXh0ZW5zaW9ucwogICAgICBpZihvYmoudHlwZSA9PT0gb2lkcy5leHRlbnNpb25SZXF1ZXN0KSB7CiAgICAgICAgb2JqLmV4dGVuc2lvbnMgPSBbXTsKICAgICAgICBmb3IodmFyIGVpID0gMDsgZWkgPCBvYmoudmFsdWUubGVuZ3RoOyArK2VpKSB7CiAgICAgICAgICBvYmouZXh0ZW5zaW9ucy5wdXNoKHBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvbkZyb21Bc24xKG9iai52YWx1ZVtlaV0pKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcnZhbC5wdXNoKG9iaik7CiAgICB9CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGFuIGlzc3VlciBvciBzdWJqZWN0IGF0dHJpYnV0ZSBmcm9tIGl0cyBuYW1lLCB0eXBlLCBvciBzaG9ydCBuYW1lLgogKgogKiBAcGFyYW0gb2JqIHRoZSBpc3N1ZXIgb3Igc3ViamVjdCBvYmplY3QuCiAqIEBwYXJhbSBvcHRpb25zIGEgc2hvcnQgbmFtZSBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGg6CiAqICAgICAgICAgIHNob3J0TmFtZSB0aGUgc2hvcnQgbmFtZSBmb3IgdGhlIGF0dHJpYnV0ZS4KICogICAgICAgICAgbmFtZSB0aGUgbmFtZSBmb3IgdGhlIGF0dHJpYnV0ZS4KICogICAgICAgICAgdHlwZSB0aGUgdHlwZSBmb3IgdGhlIGF0dHJpYnV0ZS4KICoKICogQHJldHVybiB0aGUgYXR0cmlidXRlLgogKi8KZnVuY3Rpb24gX2dldEF0dHJpYnV0ZShvYmosIG9wdGlvbnMpIHsKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHsKICAgIG9wdGlvbnMgPSB7c2hvcnROYW1lOiBvcHRpb25zfTsKICB9CgogIHZhciBydmFsID0gbnVsbDsKICB2YXIgYXR0cjsKICBmb3IodmFyIGkgPSAwOyBydmFsID09PSBudWxsICYmIGkgPCBvYmouYXR0cmlidXRlcy5sZW5ndGg7ICsraSkgewogICAgYXR0ciA9IG9iai5hdHRyaWJ1dGVzW2ldOwogICAgaWYob3B0aW9ucy50eXBlICYmIG9wdGlvbnMudHlwZSA9PT0gYXR0ci50eXBlKSB7CiAgICAgIHJ2YWwgPSBhdHRyOwogICAgfSBlbHNlIGlmKG9wdGlvbnMubmFtZSAmJiBvcHRpb25zLm5hbWUgPT09IGF0dHIubmFtZSkgewogICAgICBydmFsID0gYXR0cjsKICAgIH0gZWxzZSBpZihvcHRpb25zLnNob3J0TmFtZSAmJiBvcHRpb25zLnNob3J0TmFtZSA9PT0gYXR0ci5zaG9ydE5hbWUpIHsKICAgICAgcnZhbCA9IGF0dHI7CiAgICB9CiAgfQogIHJldHVybiBydmFsOwp9CgovKioKICogQ29udmVydHMgc2lnbmF0dXJlIHBhcmFtZXRlcnMgZnJvbSBBU04uMSBzdHJ1Y3R1cmUuCiAqCiAqIEN1cnJlbnRseSBvbmx5IFJTQVNTQS1QU1Mgc3VwcG9ydGVkLiAgVGhlIFBLQ1MjMSB2MS41IHNpZ25hdHVyZSBzY2hlbWUgaGFkCiAqIG5vIHBhcmFtZXRlcnMuCiAqCiAqIFJTQVNTQS1QU1MtcGFyYW1zICA6Oj0gIFNFUVVFTkNFICB7CiAqICAgaGFzaEFsZ29yaXRobSAgICAgIFswXSBIYXNoQWxnb3JpdGhtIERFRkFVTFQKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYTFJZGVudGlmaWVyLAogKiAgIG1hc2tHZW5BbGdvcml0aG0gICBbMV0gTWFza0dlbkFsZ29yaXRobSBERUZBVUxUCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ2YxU0hBMUlkZW50aWZpZXIsCiAqICAgc2FsdExlbmd0aCAgICAgICAgIFsyXSBJTlRFR0VSIERFRkFVTFQgMjAsCiAqICAgdHJhaWxlckZpZWxkICAgICAgIFszXSBJTlRFR0VSIERFRkFVTFQgMQogKiB9CiAqCiAqIEhhc2hBbGdvcml0aG0gIDo6PSAgQWxnb3JpdGhtSWRlbnRpZmllcgogKgogKiBNYXNrR2VuQWxnb3JpdGhtICA6Oj0gIEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogQWxnb3JpdGhtSWRlbnRpZmVyIDo6PSBTRVFVRU5DRSB7CiAqICAgYWxnb3JpdGhtIE9CSkVDVCBJREVOVElGSUVSLAogKiAgIHBhcmFtZXRlcnMgQU5ZIERFRklORUQgQlkgYWxnb3JpdGhtIE9QVElPTkFMCiAqIH0KICoKICogQHBhcmFtIG9pZCBUaGUgT0lEIHNwZWNpZnlpbmcgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0KICogQHBhcmFtIG9iaiBUaGUgQVNOLjEgc3RydWN0dXJlIGhvbGRpbmcgdGhlIHBhcmFtZXRlcnMKICogQHBhcmFtIGZpbGxEZWZhdWx0cyBXaGV0aGVyIHRvIHVzZSByZXR1cm4gZGVmYXVsdCB2YWx1ZXMgd2hlcmUgb21pdHRlZAogKiBAcmV0dXJuIHNpZ25hdHVyZSBwYXJhbWV0ZXIgb2JqZWN0CiAqLwp2YXIgX3JlYWRTaWduYXR1cmVQYXJhbWV0ZXJzID0gZnVuY3Rpb24ob2lkLCBvYmosIGZpbGxEZWZhdWx0cykgewogIHZhciBwYXJhbXMgPSB7fTsKCiAgaWYob2lkICE9PSBvaWRzWydSU0FTU0EtUFNTJ10pIHsKICAgIHJldHVybiBwYXJhbXM7CiAgfQoKICBpZihmaWxsRGVmYXVsdHMpIHsKICAgIHBhcmFtcyA9IHsKICAgICAgaGFzaDogewogICAgICAgIGFsZ29yaXRobU9pZDogb2lkc1snc2hhMSddCiAgICAgIH0sCiAgICAgIG1nZjogewogICAgICAgIGFsZ29yaXRobU9pZDogb2lkc1snbWdmMSddLAogICAgICAgIGhhc2g6IHsKICAgICAgICAgIGFsZ29yaXRobU9pZDogb2lkc1snc2hhMSddCiAgICAgICAgfQogICAgICB9LAogICAgICBzYWx0TGVuZ3RoOiAyMAogICAgfTsKICB9CgogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcnNhc3NhUHNzUGFyYW1ldGVyVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFJTQVNTQS1QU1MgcGFyYW1ldGVyIGJsb2NrLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICBpZihjYXB0dXJlLmhhc2hPaWQgIT09IHVuZGVmaW5lZCkgewogICAgcGFyYW1zLmhhc2ggPSBwYXJhbXMuaGFzaCB8fCB7fTsKICAgIHBhcmFtcy5oYXNoLmFsZ29yaXRobU9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5oYXNoT2lkKTsKICB9CgogIGlmKGNhcHR1cmUubWFza0dlbk9pZCAhPT0gdW5kZWZpbmVkKSB7CiAgICBwYXJhbXMubWdmID0gcGFyYW1zLm1nZiB8fCB7fTsKICAgIHBhcmFtcy5tZ2YuYWxnb3JpdGhtT2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLm1hc2tHZW5PaWQpOwogICAgcGFyYW1zLm1nZi5oYXNoID0gcGFyYW1zLm1nZi5oYXNoIHx8IHt9OwogICAgcGFyYW1zLm1nZi5oYXNoLmFsZ29yaXRobU9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5tYXNrR2VuSGFzaE9pZCk7CiAgfQoKICBpZihjYXB0dXJlLnNhbHRMZW5ndGggIT09IHVuZGVmaW5lZCkgewogICAgcGFyYW1zLnNhbHRMZW5ndGggPSBjYXB0dXJlLnNhbHRMZW5ndGguY2hhckNvZGVBdCgwKTsKICB9CgogIHJldHVybiBwYXJhbXM7Cn07CgovKioKICogQ29udmVydHMgYW4gWC41MDkgY2VydGlmaWNhdGUgZnJvbSBQRU0gZm9ybWF0LgogKgogKiBOb3RlOiBJZiB0aGUgY2VydGlmaWNhdGUgaXMgdG8gYmUgdmVyaWZpZWQgdGhlbiBjb21wdXRlIGhhc2ggc2hvdWxkCiAqIGJlIHNldCB0byB0cnVlLiBUaGlzIHdpbGwgc2NhbiB0aGUgVEJTQ2VydGlmaWNhdGUgcGFydCBvZiB0aGUgQVNOLjEKICogb2JqZWN0IHdoaWxlIGl0IGlzIGNvbnZlcnRlZCBzbyBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY29udmVydGVkIGJhY2sKICogdG8gQVNOLjEtREVSLWVuY29kaW5nIGxhdGVyLgogKgogKiBAcGFyYW0gcGVtIHRoZSBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlLgogKiBAcGFyYW0gY29tcHV0ZUhhc2ggdHJ1ZSB0byBjb21wdXRlIHRoZSBoYXNoIGZvciB2ZXJpZmljYXRpb24uCiAqIEBwYXJhbSBzdHJpY3QgdHJ1ZSB0byBiZSBzdHJpY3Qgd2hlbiBjaGVja2luZyBBU04uMSB2YWx1ZSBsZW5ndGhzLCBmYWxzZSB0bwogKiAgICAgICAgICBhbGxvdyB0cnVuY2F0ZWQgdmFsdWVzIChkZWZhdWx0OiB0cnVlKS4KICoKICogQHJldHVybiB0aGUgY2VydGlmaWNhdGUuCiAqLwpwa2kuY2VydGlmaWNhdGVGcm9tUGVtID0gZnVuY3Rpb24ocGVtLCBjb21wdXRlSGFzaCwgc3RyaWN0KSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdDRVJUSUZJQ0FURScgJiYKICAgIG1zZy50eXBlICE9PSAnWDUwOSBDRVJUSUZJQ0FURScgJiYKICAgIG1zZy50eXBlICE9PSAnVFJVU1RFRCBDRVJUSUZJQ0FURScpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgY2VydGlmaWNhdGUgZnJvbSBQRU07IFBFTSBoZWFkZXIgdHlwZSAnICsKICAgICAgJ2lzIG5vdCAiQ0VSVElGSUNBVEUiLCAiWDUwOSBDRVJUSUZJQ0FURSIsIG9yICJUUlVTVEVEIENFUlRJRklDQVRFIi4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlIGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLicpOwogIH0KCiAgLy8gY29udmVydCBERVIgdG8gQVNOLjEgb2JqZWN0CiAgdmFyIG9iaiA9IGFzbjEuZnJvbURlcihtc2cuYm9keSwgc3RyaWN0KTsKCiAgcmV0dXJuIHBraS5jZXJ0aWZpY2F0ZUZyb21Bc24xKG9iaiwgY29tcHV0ZUhhc2gpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFguNTA5IGNlcnRpZmljYXRlIHRvIFBFTSBmb3JtYXQuCiAqCiAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZS4KICogQHBhcmFtIG1heGxpbmUgdGhlIG1heGltdW0gY2hhcmFjdGVycyBwZXIgbGluZSwgZGVmYXVsdHMgdG8gNjQuCiAqCiAqIEByZXR1cm4gdGhlIFBFTS1mb3JtYXR0ZWQgY2VydGlmaWNhdGUuCiAqLwpwa2kuY2VydGlmaWNhdGVUb1BlbSA9IGZ1bmN0aW9uKGNlcnQsIG1heGxpbmUpIHsKICAvLyBjb252ZXJ0IHRvIEFTTi4xLCB0aGVuIERFUiwgdGhlbiBQRU0tZW5jb2RlCiAgdmFyIG1zZyA9IHsKICAgIHR5cGU6ICdDRVJUSUZJQ0FURScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5jZXJ0aWZpY2F0ZVRvQXNuMShjZXJ0KSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJTQSBwdWJsaWMga2V5IGZyb20gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIHBlbSB0aGUgUEVNLWZvcm1hdHRlZCBwdWJsaWMga2V5LgogKgogKiBAcmV0dXJuIHRoZSBwdWJsaWMga2V5LgogKi8KcGtpLnB1YmxpY0tleUZyb21QZW0gPSBmdW5jdGlvbihwZW0pIHsKICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShwZW0pWzBdOwoKICBpZihtc2cudHlwZSAhPT0gJ1BVQkxJQyBLRVknICYmIG1zZy50eXBlICE9PSAnUlNBIFBVQkxJQyBLRVknKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IHB1YmxpYyBrZXkgZnJvbSBQRU07IFBFTSBoZWFkZXIgJyArCiAgICAgICd0eXBlIGlzIG5vdCAiUFVCTElDIEtFWSIgb3IgIlJTQSBQVUJMSUMgS0VZIi4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IHB1YmxpYyBrZXkgZnJvbSBQRU07IFBFTSBpcyBlbmNyeXB0ZWQuJyk7CiAgfQoKICAvLyBjb252ZXJ0IERFUiB0byBBU04uMSBvYmplY3QKICB2YXIgb2JqID0gYXNuMS5mcm9tRGVyKG1zZy5ib2R5KTsKCiAgcmV0dXJuIHBraS5wdWJsaWNLZXlGcm9tQXNuMShvYmopOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJTQSBwdWJsaWMga2V5IHRvIFBFTSBmb3JtYXQgKHVzaW5nIGEgU3ViamVjdFB1YmxpY0tleUluZm8pLgogKgogKiBAcGFyYW0ga2V5IHRoZSBwdWJsaWMga2V5LgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBwdWJsaWMga2V5LgogKi8KcGtpLnB1YmxpY0tleVRvUGVtID0gZnVuY3Rpb24oa2V5LCBtYXhsaW5lKSB7CiAgLy8gY29udmVydCB0byBBU04uMSwgdGhlbiBERVIsIHRoZW4gUEVNLWVuY29kZQogIHZhciBtc2cgPSB7CiAgICB0eXBlOiAnUFVCTElDIEtFWScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5wdWJsaWNLZXlUb0FzbjEoa2V5KSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJTQSBwdWJsaWMga2V5IHRvIFBFTSBmb3JtYXQgKHVzaW5nIGFuIFJTQVB1YmxpY0tleSkuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHB1YmxpYyBrZXkuCiAqIEBwYXJhbSBtYXhsaW5lIHRoZSBtYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUsIGRlZmF1bHRzIHRvIDY0LgogKgogKiBAcmV0dXJuIHRoZSBQRU0tZm9ybWF0dGVkIHB1YmxpYyBrZXkuCiAqLwpwa2kucHVibGljS2V5VG9SU0FQdWJsaWNLZXlQZW0gPSBmdW5jdGlvbihrZXksIG1heGxpbmUpIHsKICAvLyBjb252ZXJ0IHRvIEFTTi4xLCB0aGVuIERFUiwgdGhlbiBQRU0tZW5jb2RlCiAgdmFyIG1zZyA9IHsKICAgIHR5cGU6ICdSU0EgUFVCTElDIEtFWScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5wdWJsaWNLZXlUb1JTQVB1YmxpY0tleShrZXkpKS5nZXRCeXRlcygpCiAgfTsKICByZXR1cm4gZm9yZ2UucGVtLmVuY29kZShtc2csIHttYXhsaW5lOiBtYXhsaW5lfSk7Cn07CgovKioKICogR2V0cyBhIGZpbmdlcnByaW50IGZvciB0aGUgZ2l2ZW4gcHVibGljIGtleS4KICoKICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgdG8gdXNlLgogKiAgICAgICAgICBbbWRdIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIChkZWZhdWx0cyB0byBmb3JnZS5tZC5zaGExKS4KICogICAgICAgICAgW3R5cGVdIHRoZSB0eXBlIG9mIGZpbmdlcnByaW50LCBzdWNoIGFzICdSU0FQdWJsaWNLZXknLAogKiAgICAgICAgICAgICdTdWJqZWN0UHVibGljS2V5SW5mbycgKGRlZmF1bHRzIHRvICdSU0FQdWJsaWNLZXknKS4KICogICAgICAgICAgW2VuY29kaW5nXSBhbiBhbHRlcm5hdGl2ZSBvdXRwdXQgZW5jb2RpbmcsIHN1Y2ggYXMgJ2hleCcKICogICAgICAgICAgICAoZGVmYXVsdHMgdG8gbm9uZSwgb3V0cHV0cyBhIGJ5dGUgYnVmZmVyKS4KICogICAgICAgICAgW2RlbGltaXRlcl0gdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBieXRlcyBmb3IgJ2hleCcgZW5jb2RlZAogKiAgICAgICAgICAgIG91dHB1dCwgZWc6ICc6JyAoZGVmYXVsdHMgdG8gbm9uZSkuCiAqCiAqIEByZXR1cm4gdGhlIGZpbmdlcnByaW50IGFzIGEgYnl0ZSBidWZmZXIgb3Igb3RoZXIgZW5jb2RpbmcgYmFzZWQgb24gb3B0aW9ucy4KICovCnBraS5nZXRQdWJsaWNLZXlGaW5nZXJwcmludCA9IGZ1bmN0aW9uKGtleSwgb3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHZhciBtZCA9IG9wdGlvbnMubWQgfHwgZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnUlNBUHVibGljS2V5JzsKCiAgdmFyIGJ5dGVzOwogIHN3aXRjaCh0eXBlKSB7CiAgY2FzZSAnUlNBUHVibGljS2V5JzoKICAgIGJ5dGVzID0gYXNuMS50b0Rlcihwa2kucHVibGljS2V5VG9SU0FQdWJsaWNLZXkoa2V5KSkuZ2V0Qnl0ZXMoKTsKICAgIGJyZWFrOwogIGNhc2UgJ1N1YmplY3RQdWJsaWNLZXlJbmZvJzoKICAgIGJ5dGVzID0gYXNuMS50b0Rlcihwa2kucHVibGljS2V5VG9Bc24xKGtleSkpLmdldEJ5dGVzKCk7CiAgICBicmVhazsKICBkZWZhdWx0OgogICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGZpbmdlcnByaW50IHR5cGUgIicgKyBvcHRpb25zLnR5cGUgKyAnIi4nKTsKICB9CgogIC8vIGhhc2ggcHVibGljIGtleSBieXRlcwogIG1kLnN0YXJ0KCk7CiAgbWQudXBkYXRlKGJ5dGVzKTsKICB2YXIgZGlnZXN0ID0gbWQuZGlnZXN0KCk7CiAgaWYob3B0aW9ucy5lbmNvZGluZyA9PT0gJ2hleCcpIHsKICAgIHZhciBoZXggPSBkaWdlc3QudG9IZXgoKTsKICAgIGlmKG9wdGlvbnMuZGVsaW1pdGVyKSB7CiAgICAgIHJldHVybiBoZXgubWF0Y2goLy57Mn0vZykuam9pbihvcHRpb25zLmRlbGltaXRlcik7CiAgICB9CiAgICByZXR1cm4gaGV4OwogIH0gZWxzZSBpZihvcHRpb25zLmVuY29kaW5nID09PSAnYmluYXJ5JykgewogICAgcmV0dXJuIGRpZ2VzdC5nZXRCeXRlcygpOwogIH0gZWxzZSBpZihvcHRpb25zLmVuY29kaW5nKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2RpbmcgIicgKyBvcHRpb25zLmVuY29kaW5nICsgJyIuJyk7CiAgfQogIHJldHVybiBkaWdlc3Q7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzEwIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKSBmcm9tIFBFTSBmb3JtYXQuCiAqCiAqIE5vdGU6IElmIHRoZSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgaXMgdG8gYmUgdmVyaWZpZWQgdGhlbiBjb21wdXRlIGhhc2gKICogc2hvdWxkIGJlIHNldCB0byB0cnVlLiBUaGlzIHdpbGwgc2NhbiB0aGUgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHBhcnQgb2YKICogdGhlIEFTTi4xIG9iamVjdCB3aGlsZSBpdCBpcyBjb252ZXJ0ZWQgc28gaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNvbnZlcnRlZAogKiBiYWNrIHRvIEFTTi4xLURFUi1lbmNvZGluZyBsYXRlci4KICoKICogQHBhcmFtIHBlbSB0aGUgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZS4KICogQHBhcmFtIGNvbXB1dGVIYXNoIHRydWUgdG8gY29tcHV0ZSB0aGUgaGFzaCBmb3IgdmVyaWZpY2F0aW9uLgogKiBAcGFyYW0gc3RyaWN0IHRydWUgdG8gYmUgc3RyaWN0IHdoZW4gY2hlY2tpbmcgQVNOLjEgdmFsdWUgbGVuZ3RocywgZmFsc2UgdG8KICogICAgICAgICAgYWxsb3cgdHJ1bmNhdGVkIHZhbHVlcyAoZGVmYXVsdDogdHJ1ZSkuCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKS4KICovCnBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdEZyb21QZW0gPSBmdW5jdGlvbihwZW0sIGNvbXB1dGVIYXNoLCBzdHJpY3QpIHsKICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShwZW0pWzBdOwoKICBpZihtc2cudHlwZSAhPT0gJ0NFUlRJRklDQVRFIFJFUVVFU1QnKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRpb24gcmVxdWVzdCBmcm9tIFBFTTsgJyArCiAgICAgICdQRU0gaGVhZGVyIHR5cGUgaXMgbm90ICJDRVJUSUZJQ0FURSBSRVFVRVNUIi4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRpb24gcmVxdWVzdCBmcm9tIFBFTTsgJyArCiAgICAgICdQRU0gaXMgZW5jcnlwdGVkLicpOwogIH0KCiAgLy8gY29udmVydCBERVIgdG8gQVNOLjEgb2JqZWN0CiAgdmFyIG9iaiA9IGFzbjEuZnJvbURlcihtc2cuYm9keSwgc3RyaWN0KTsKCiAgcmV0dXJuIHBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdEZyb21Bc24xKG9iaiwgY29tcHV0ZUhhc2gpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgUEtDUyMxMCBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgKENTUikgdG8gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIGNzciB0aGUgY2VydGlmaWNhdGlvbiByZXF1ZXN0LgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAqLwpwa2kuY2VydGlmaWNhdGlvblJlcXVlc3RUb1BlbSA9IGZ1bmN0aW9uKGNzciwgbWF4bGluZSkgewogIC8vIGNvbnZlcnQgdG8gQVNOLjEsIHRoZW4gREVSLCB0aGVuIFBFTS1lbmNvZGUKICB2YXIgbXNnID0gewogICAgdHlwZTogJ0NFUlRJRklDQVRFIFJFUVVFU1QnLAogICAgYm9keTogYXNuMS50b0Rlcihwa2kuY2VydGlmaWNhdGlvblJlcXVlc3RUb0FzbjEoY3NyKSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENyZWF0ZXMgYW4gZW1wdHkgWC41MDl2MyBSU0EgY2VydGlmaWNhdGUuCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRlLgogKi8KcGtpLmNyZWF0ZUNlcnRpZmljYXRlID0gZnVuY3Rpb24oKSB7CiAgdmFyIGNlcnQgPSB7fTsKICBjZXJ0LnZlcnNpb24gPSAweDAyOwogIGNlcnQuc2VyaWFsTnVtYmVyID0gJzAwJzsKICBjZXJ0LnNpZ25hdHVyZU9pZCA9IG51bGw7CiAgY2VydC5zaWduYXR1cmUgPSBudWxsOwogIGNlcnQuc2lnaW5mbyA9IHt9OwogIGNlcnQuc2lnaW5mby5hbGdvcml0aG1PaWQgPSBudWxsOwogIGNlcnQudmFsaWRpdHkgPSB7fTsKICBjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZSA9IG5ldyBEYXRlKCk7CiAgY2VydC52YWxpZGl0eS5ub3RBZnRlciA9IG5ldyBEYXRlKCk7CgogIGNlcnQuaXNzdWVyID0ge307CiAgY2VydC5pc3N1ZXIuZ2V0RmllbGQgPSBmdW5jdGlvbihzbikgewogICAgcmV0dXJuIF9nZXRBdHRyaWJ1dGUoY2VydC5pc3N1ZXIsIHNuKTsKICB9OwogIGNlcnQuaXNzdWVyLmFkZEZpZWxkID0gZnVuY3Rpb24oYXR0cikgewogICAgX2ZpbGxNaXNzaW5nRmllbGRzKFthdHRyXSk7CiAgICBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzLnB1c2goYXR0cik7CiAgfTsKICBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzID0gW107CiAgY2VydC5pc3N1ZXIuaGFzaCA9IG51bGw7CgogIGNlcnQuc3ViamVjdCA9IHt9OwogIGNlcnQuc3ViamVjdC5nZXRGaWVsZCA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjZXJ0LnN1YmplY3QsIHNuKTsKICB9OwogIGNlcnQuc3ViamVjdC5hZGRGaWVsZCA9IGZ1bmN0aW9uKGF0dHIpIHsKICAgIF9maWxsTWlzc2luZ0ZpZWxkcyhbYXR0cl0pOwogICAgY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNlcnQuc3ViamVjdC5hdHRyaWJ1dGVzID0gW107CiAgY2VydC5zdWJqZWN0Lmhhc2ggPSBudWxsOwoKICBjZXJ0LmV4dGVuc2lvbnMgPSBbXTsKICBjZXJ0LnB1YmxpY0tleSA9IG51bGw7CiAgY2VydC5tZCA9IG51bGw7CgogIC8qKgogICAqIFNldHMgdGhlIHN1YmplY3Qgb2YgdGhpcyBjZXJ0aWZpY2F0ZS4KICAgKgogICAqIEBwYXJhbSBhdHRycyB0aGUgYXJyYXkgb2Ygc3ViamVjdCBhdHRyaWJ1dGVzIHRvIHVzZS4KICAgKiBAcGFyYW0gdW5pcXVlSWQgYW4gb3B0aW9uYWwgYSB1bmlxdWUgSUQgdG8gdXNlLgogICAqLwogIGNlcnQuc2V0U3ViamVjdCA9IGZ1bmN0aW9uKGF0dHJzLCB1bmlxdWVJZCkgewogICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzLCBjbGVhciBoYXNoCiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoYXR0cnMpOwogICAgY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXMgPSBhdHRyczsKICAgIGRlbGV0ZSBjZXJ0LnN1YmplY3QudW5pcXVlSWQ7CiAgICBpZih1bmlxdWVJZCkgewogICAgICBjZXJ0LnN1YmplY3QudW5pcXVlSWQgPSB1bmlxdWVJZDsKICAgIH0KICAgIGNlcnQuc3ViamVjdC5oYXNoID0gbnVsbDsKICB9OwoKICAvKioKICAgKiBTZXRzIHRoZSBpc3N1ZXIgb2YgdGhpcyBjZXJ0aWZpY2F0ZS4KICAgKgogICAqIEBwYXJhbSBhdHRycyB0aGUgYXJyYXkgb2YgaXNzdWVyIGF0dHJpYnV0ZXMgdG8gdXNlLgogICAqIEBwYXJhbSB1bmlxdWVJZCBhbiBvcHRpb25hbCBhIHVuaXF1ZSBJRCB0byB1c2UuCiAgICovCiAgY2VydC5zZXRJc3N1ZXIgPSBmdW5jdGlvbihhdHRycywgdW5pcXVlSWQpIHsKICAgIC8vIHNldCBuZXcgYXR0cmlidXRlcywgY2xlYXIgaGFzaAogICAgX2ZpbGxNaXNzaW5nRmllbGRzKGF0dHJzKTsKICAgIGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMgPSBhdHRyczsKICAgIGRlbGV0ZSBjZXJ0Lmlzc3Vlci51bmlxdWVJZDsKICAgIGlmKHVuaXF1ZUlkKSB7CiAgICAgIGNlcnQuaXNzdWVyLnVuaXF1ZUlkID0gdW5pcXVlSWQ7CiAgICB9CiAgICBjZXJ0Lmlzc3Vlci5oYXNoID0gbnVsbDsKICB9OwoKICAvKioKICAgKiBTZXRzIHRoZSBleHRlbnNpb25zIG9mIHRoaXMgY2VydGlmaWNhdGUuCiAgICoKICAgKiBAcGFyYW0gZXh0cyB0aGUgYXJyYXkgb2YgZXh0ZW5zaW9ucyB0byB1c2UuCiAgICovCiAgY2VydC5zZXRFeHRlbnNpb25zID0gZnVuY3Rpb24oZXh0cykgewogICAgZm9yKHZhciBpID0gMDsgaSA8IGV4dHMubGVuZ3RoOyArK2kpIHsKICAgICAgX2ZpbGxNaXNzaW5nRXh0ZW5zaW9uRmllbGRzKGV4dHNbaV0sIHtjZXJ0OiBjZXJ0fSk7CiAgICB9CiAgICAvLyBzZXQgbmV3IGV4dGVuc2lvbnMKICAgIGNlcnQuZXh0ZW5zaW9ucyA9IGV4dHM7CiAgfTsKCiAgLyoqCiAgICogR2V0cyBhbiBleHRlbnNpb24gYnkgaXRzIG5hbWUgb3IgaWQuCiAgICoKICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgbmFtZSB0byB1c2Ugb3IgYW4gb2JqZWN0IHdpdGg6CiAgICogICAgICAgICAgbmFtZSB0aGUgbmFtZSB0byB1c2UuCiAgICogICAgICAgICAgaWQgdGhlIGlkIHRvIHVzZS4KICAgKgogICAqIEByZXR1cm4gdGhlIGV4dGVuc2lvbiBvciBudWxsIGlmIG5vdCBmb3VuZC4KICAgKi8KICBjZXJ0LmdldEV4dGVuc2lvbiA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgIGlmKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykgewogICAgICBvcHRpb25zID0ge25hbWU6IG9wdGlvbnN9OwogICAgfQoKICAgIHZhciBydmFsID0gbnVsbDsKICAgIHZhciBleHQ7CiAgICBmb3IodmFyIGkgPSAwOyBydmFsID09PSBudWxsICYmIGkgPCBjZXJ0LmV4dGVuc2lvbnMubGVuZ3RoOyArK2kpIHsKICAgICAgZXh0ID0gY2VydC5leHRlbnNpb25zW2ldOwogICAgICBpZihvcHRpb25zLmlkICYmIGV4dC5pZCA9PT0gb3B0aW9ucy5pZCkgewogICAgICAgIHJ2YWwgPSBleHQ7CiAgICAgIH0gZWxzZSBpZihvcHRpb25zLm5hbWUgJiYgZXh0Lm5hbWUgPT09IG9wdGlvbnMubmFtZSkgewogICAgICAgIHJ2YWwgPSBleHQ7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBydmFsOwogIH07CgogIC8qKgogICAqIFNpZ25zIHRoaXMgY2VydGlmaWNhdGUgdXNpbmcgdGhlIGdpdmVuIHByaXZhdGUga2V5LgogICAqCiAgICogQHBhcmFtIGtleSB0aGUgcHJpdmF0ZSBrZXkgdG8gc2lnbiB3aXRoLgogICAqIEBwYXJhbSBtZCB0aGUgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0IHRvIHVzZSAoZGVmYXVsdHMgdG8gZm9yZ2UubWQuc2hhMSkuCiAgICovCiAgY2VydC5zaWduID0gZnVuY3Rpb24oa2V5LCBtZCkgewogICAgLy8gVE9ETzogZ2V0IHNpZ25hdHVyZSBPSUQgZnJvbSBwcml2YXRlIGtleQogICAgY2VydC5tZCA9IG1kIHx8IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICB2YXIgYWxnb3JpdGhtT2lkID0gb2lkc1tjZXJ0Lm1kLmFsZ29yaXRobSArICdXaXRoUlNBRW5jcnlwdGlvbiddOwogICAgaWYoIWFsZ29yaXRobU9pZCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRlIGRpZ2VzdC4gJyArCiAgICAgICAgJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QgYWxnb3JpdGhtIE9JRC4nKTsKICAgICAgZXJyb3IuYWxnb3JpdGhtID0gY2VydC5tZC5hbGdvcml0aG07CiAgICAgIHRocm93IGVycm9yOwogICAgfQogICAgY2VydC5zaWduYXR1cmVPaWQgPSBjZXJ0LnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gYWxnb3JpdGhtT2lkOwoKICAgIC8vIGdldCBUQlNDZXJ0aWZpY2F0ZSwgY29udmVydCB0byBERVIKICAgIGNlcnQudGJzQ2VydGlmaWNhdGUgPSBwa2kuZ2V0VEJTQ2VydGlmaWNhdGUoY2VydCk7CiAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNlcnQudGJzQ2VydGlmaWNhdGUpOwoKICAgIC8vIGRpZ2VzdCBhbmQgc2lnbgogICAgY2VydC5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgICBjZXJ0LnNpZ25hdHVyZSA9IGtleS5zaWduKGNlcnQubWQpOwogIH07CgogIC8qKgogICAqIEF0dGVtcHRzIHZlcmlmeSB0aGUgc2lnbmF0dXJlIG9uIHRoZSBwYXNzZWQgY2VydGlmaWNhdGUgdXNpbmcgdGhpcwogICAqIGNlcnRpZmljYXRlJ3MgcHVibGljIGtleS4KICAgKgogICAqIEBwYXJhbSBjaGlsZCB0aGUgY2VydGlmaWNhdGUgdG8gdmVyaWZ5LgogICAqCiAgICogQHJldHVybiB0cnVlIGlmIHZlcmlmaWVkLCBmYWxzZSBpZiBub3QuCiAgICovCiAgY2VydC52ZXJpZnkgPSBmdW5jdGlvbihjaGlsZCkgewogICAgdmFyIHJ2YWwgPSBmYWxzZTsKCiAgICBpZighY2VydC5pc3N1ZWQoY2hpbGQpKSB7CiAgICAgIHZhciBpc3N1ZXIgPSBjaGlsZC5pc3N1ZXI7CiAgICAgIHZhciBzdWJqZWN0ID0gY2VydC5zdWJqZWN0OwogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1RoZSBwYXJlbnQgY2VydGlmaWNhdGUgZGlkIG5vdCBpc3N1ZSB0aGUgZ2l2ZW4gY2hpbGQgJyArCiAgICAgICAgJ2NlcnRpZmljYXRlOyB0aGUgY2hpbGQgY2VydGlmaWNhdGVcJ3MgaXNzdWVyIGRvZXMgbm90IG1hdGNoIHRoZSAnICsKICAgICAgICAncGFyZW50XCdzIHN1YmplY3QuJyk7CiAgICAgIGVycm9yLmV4cGVjdGVkSXNzdWVyID0gaXNzdWVyLmF0dHJpYnV0ZXM7CiAgICAgIGVycm9yLmFjdHVhbElzc3VlciA9IHN1YmplY3QuYXR0cmlidXRlczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgdmFyIG1kID0gY2hpbGQubWQ7CiAgICBpZihtZCA9PT0gbnVsbCkgewogICAgICAvLyBjaGVjayBzaWduYXR1cmUgT0lEIGZvciBzdXBwb3J0ZWQgc2lnbmF0dXJlIHR5cGVzCiAgICAgIGlmKGNoaWxkLnNpZ25hdHVyZU9pZCBpbiBvaWRzKSB7CiAgICAgICAgdmFyIG9pZCA9IG9pZHNbY2hpbGQuc2lnbmF0dXJlT2lkXTsKICAgICAgICBzd2l0Y2gob2lkKSB7CiAgICAgICAgY2FzZSAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ21kNVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24nOgogICAgICAgICAgbWQgPSBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgICBtZCA9IGZvcmdlLm1kLnNoYTUxMi5jcmVhdGUoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1JTQVNTQS1QU1MnOgogICAgICAgICAgbWQgPSBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYobWQgPT09IG51bGwpIHsKICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRlIGRpZ2VzdC4gJyArCiAgICAgICAgICAnVW5rbm93biBzaWduYXR1cmUgT0lELicpOwogICAgICAgIGVycm9yLnNpZ25hdHVyZU9pZCA9IGNoaWxkLnNpZ25hdHVyZU9pZDsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQoKICAgICAgLy8gcHJvZHVjZSBERVIgZm9ybWF0dGVkIFRCU0NlcnRpZmljYXRlIGFuZCBkaWdlc3QgaXQKICAgICAgdmFyIHRic0NlcnRpZmljYXRlID0gY2hpbGQudGJzQ2VydGlmaWNhdGUgfHwgcGtpLmdldFRCU0NlcnRpZmljYXRlKGNoaWxkKTsKICAgICAgdmFyIGJ5dGVzID0gYXNuMS50b0Rlcih0YnNDZXJ0aWZpY2F0ZSk7CiAgICAgIG1kLnVwZGF0ZShieXRlcy5nZXRCeXRlcygpKTsKICAgIH0KCiAgICBpZihtZCAhPT0gbnVsbCkgewogICAgICB2YXIgc2NoZW1lOwoKICAgICAgc3dpdGNoKGNoaWxkLnNpZ25hdHVyZU9pZCkgewogICAgICBjYXNlIG9pZHMuc2hhMVdpdGhSU0FFbmNyeXB0aW9uOgogICAgICAgIHNjaGVtZSA9IHVuZGVmaW5lZDsgIC8qIHVzZSBQS0NTIzEgdjEuNSBwYWRkaW5nIHNjaGVtZSAqLwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIG9pZHNbJ1JTQVNTQS1QU1MnXToKICAgICAgICB2YXIgaGFzaCwgbWdmOwoKICAgICAgICAvKiBpbml0aWFsaXplIG1nZiAqLwogICAgICAgIGhhc2ggPSBvaWRzW2NoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmhhc2guYWxnb3JpdGhtT2lkXTsKICAgICAgICBpZihoYXNoID09PSB1bmRlZmluZWQgfHwgZm9yZ2UubWRbaGFzaF0gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBNR0YgaGFzaCBmdW5jdGlvbi4nKTsKICAgICAgICAgIGVycm9yLm9pZCA9IGNoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmhhc2guYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IGhhc2g7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIG1nZiA9IG9pZHNbY2hpbGQuc2lnbmF0dXJlUGFyYW1ldGVycy5tZ2YuYWxnb3JpdGhtT2lkXTsKICAgICAgICBpZihtZ2YgPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZ2ZbbWdmXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE1HRiBmdW5jdGlvbi4nKTsKICAgICAgICAgIGVycm9yLm9pZCA9IGNoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmFsZ29yaXRobU9pZDsKICAgICAgICAgIGVycm9yLm5hbWUgPSBtZ2Y7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIG1nZiA9IGZvcmdlLm1nZlttZ2ZdLmNyZWF0ZShmb3JnZS5tZFtoYXNoXS5jcmVhdGUoKSk7CgogICAgICAgIC8qIGluaXRpYWxpemUgaGFzaCBmdW5jdGlvbiAqLwogICAgICAgIGhhc2ggPSBvaWRzW2NoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMuaGFzaC5hbGdvcml0aG1PaWRdOwogICAgICAgIGlmKGhhc2ggPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZFtoYXNoXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB0aHJvdyB7CiAgICAgICAgICAgIG1lc3NhZ2U6ICdVbnN1cHBvcnRlZCBSU0FTU0EtUFNTIGhhc2ggZnVuY3Rpb24uJywKICAgICAgICAgICAgb2lkOiBjaGlsZC5zaWduYXR1cmVQYXJhbWV0ZXJzLmhhc2guYWxnb3JpdGhtT2lkLAogICAgICAgICAgICBuYW1lOiBoYXNoCiAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgc2NoZW1lID0gZm9yZ2UucHNzLmNyZWF0ZShmb3JnZS5tZFtoYXNoXS5jcmVhdGUoKSwgbWdmLAogICAgICAgICAgY2hpbGQuc2lnbmF0dXJlUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgLy8gdmVyaWZ5IHNpZ25hdHVyZSBvbiBjZXJ0IHVzaW5nIHB1YmxpYyBrZXkKICAgICAgcnZhbCA9IGNlcnQucHVibGljS2V5LnZlcmlmeSgKICAgICAgICBtZC5kaWdlc3QoKS5nZXRCeXRlcygpLCBjaGlsZC5zaWduYXR1cmUsIHNjaGVtZSk7CiAgICB9CgogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgLyoqCiAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY2VydGlmaWNhdGUncyBpc3N1ZXIgbWF0Y2hlcyB0aGUgcGFzc2VkCiAgICogY2VydGlmaWNhdGUncyBzdWJqZWN0LiBOb3RlIHRoYXQgbm8gc2lnbmF0dXJlIGNoZWNrIGlzIHBlcmZvcm1lZC4KICAgKgogICAqIEBwYXJhbSBwYXJlbnQgdGhlIGNlcnRpZmljYXRlIHRvIGNoZWNrLgogICAqCiAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgY2VydGlmaWNhdGUncyBpc3N1ZXIgbWF0Y2hlcyB0aGUgcGFzc2VkIGNlcnRpZmljYXRlJ3MKICAgKiAgICAgICAgIHN1YmplY3QuCiAgICovCiAgY2VydC5pc0lzc3VlciA9IGZ1bmN0aW9uKHBhcmVudCkgewogICAgdmFyIHJ2YWwgPSBmYWxzZTsKCiAgICB2YXIgaSA9IGNlcnQuaXNzdWVyOwogICAgdmFyIHMgPSBwYXJlbnQuc3ViamVjdDsKCiAgICAvLyBjb21wYXJlIGhhc2hlcyBpZiBwcmVzZW50CiAgICBpZihpLmhhc2ggJiYgcy5oYXNoKSB7CiAgICAgIHJ2YWwgPSAoaS5oYXNoID09PSBzLmhhc2gpOwogICAgfSBlbHNlIGlmKGkuYXR0cmlidXRlcy5sZW5ndGggPT09IHMuYXR0cmlidXRlcy5sZW5ndGgpIHsKICAgICAgLy8gYWxsIGF0dHJpYnV0ZXMgYXJlIHRoZSBzYW1lIHNvIGlzc3VlciBtYXRjaGVzIHN1YmplY3QKICAgICAgcnZhbCA9IHRydWU7CiAgICAgIHZhciBpYXR0ciwgc2F0dHI7CiAgICAgIGZvcih2YXIgbiA9IDA7IHJ2YWwgJiYgbiA8IGkuYXR0cmlidXRlcy5sZW5ndGg7ICsrbikgewogICAgICAgIGlhdHRyID0gaS5hdHRyaWJ1dGVzW25dOwogICAgICAgIHNhdHRyID0gcy5hdHRyaWJ1dGVzW25dOwogICAgICAgIGlmKGlhdHRyLnR5cGUgIT09IHNhdHRyLnR5cGUgfHwgaWF0dHIudmFsdWUgIT09IHNhdHRyLnZhbHVlKSB7CiAgICAgICAgICAvLyBhdHRyaWJ1dGUgbWlzbWF0Y2gKICAgICAgICAgIHJ2YWwgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBjZXJ0aWZpY2F0ZSdzIHN1YmplY3QgbWF0Y2hlcyB0aGUgaXNzdWVyIG9mIHRoZQogICAqIGdpdmVuIGNlcnRpZmljYXRlKS4gTm90ZSB0aGF0IG5vdCBzaWduYXR1cmUgY2hlY2sgaXMgcGVyZm9ybWVkLgogICAqCiAgICogQHBhcmFtIGNoaWxkIHRoZSBjZXJ0aWZpY2F0ZSB0byBjaGVjay4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIGNlcnRpZmljYXRlJ3Mgc3ViamVjdCBtYXRjaGVzIHRoZSBwYXNzZWQKICAgKiAgICAgICAgIGNlcnRpZmljYXRlJ3MgaXNzdWVyLgogICAqLwogIGNlcnQuaXNzdWVkID0gZnVuY3Rpb24oY2hpbGQpIHsKICAgIHJldHVybiBjaGlsZC5pc0lzc3VlcihjZXJ0KTsKICB9OwoKICAvKioKICAgKiBHZW5lcmF0ZXMgdGhlIHN1YmplY3RLZXlJZGVudGlmaWVyIGZvciB0aGlzIGNlcnRpZmljYXRlIGFzIGJ5dGUgYnVmZmVyLgogICAqCiAgICogQHJldHVybiB0aGUgc3ViamVjdEtleUlkZW50aWZpZXIgZm9yIHRoaXMgY2VydGlmaWNhdGUgYXMgYnl0ZSBidWZmZXIuCiAgICovCiAgY2VydC5nZW5lcmF0ZVN1YmplY3RLZXlJZGVudGlmaWVyID0gZnVuY3Rpb24oKSB7CiAgICAvKiBTZWU6IDQuMi4xLjIgc2VjdGlvbiBvZiB0aGUgdGhlIFJGQzMyODAsIGtleUlkZW50aWZpZXIgaXMgZWl0aGVyOgoKICAgICAgKDEpIFRoZSBrZXlJZGVudGlmaWVyIGlzIGNvbXBvc2VkIG9mIHRoZSAxNjAtYml0IFNIQS0xIGhhc2ggb2YgdGhlCiAgICAgICAgdmFsdWUgb2YgdGhlIEJJVCBTVFJJTkcgc3ViamVjdFB1YmxpY0tleSAoZXhjbHVkaW5nIHRoZSB0YWcsCiAgICAgICAgbGVuZ3RoLCBhbmQgbnVtYmVyIG9mIHVudXNlZCBiaXRzKS4KCiAgICAgICgyKSBUaGUga2V5SWRlbnRpZmllciBpcyBjb21wb3NlZCBvZiBhIGZvdXIgYml0IHR5cGUgZmllbGQgd2l0aAogICAgICAgIHRoZSB2YWx1ZSAwMTAwIGZvbGxvd2VkIGJ5IHRoZSBsZWFzdCBzaWduaWZpY2FudCA2MCBiaXRzIG9mIHRoZQogICAgICAgIFNIQS0xIGhhc2ggb2YgdGhlIHZhbHVlIG9mIHRoZSBCSVQgU1RSSU5HIHN1YmplY3RQdWJsaWNLZXkKICAgICAgICAoZXhjbHVkaW5nIHRoZSB0YWcsIGxlbmd0aCwgYW5kIG51bWJlciBvZiB1bnVzZWQgYml0IHN0cmluZyBiaXRzKS4KICAgICovCgogICAgLy8gc2tpcHBpbmcgdGhlIHRhZywgbGVuZ3RoLCBhbmQgbnVtYmVyIG9mIHVudXNlZCBiaXRzIGlzIHRoZSBzYW1lCiAgICAvLyBhcyBqdXN0IHVzaW5nIHRoZSBSU0FQdWJsaWNLZXkgKGZvciBSU0Ega2V5cywgd2hpY2ggYXJlIHRoZQogICAgLy8gb25seSBvbmVzIHN1cHBvcnRlZCkKICAgIHJldHVybiBwa2kuZ2V0UHVibGljS2V5RmluZ2VycHJpbnQoY2VydC5wdWJsaWNLZXksIHt0eXBlOiAnUlNBUHVibGljS2V5J30pOwogIH07CgogIC8qKgogICAqIFZlcmlmaWVzIHRoZSBzdWJqZWN0S2V5SWRlbnRpZmllciBleHRlbnNpb24gdmFsdWUgZm9yIHRoaXMgY2VydGlmaWNhdGUKICAgKiBhZ2FpbnN0IGl0cyBwdWJsaWMga2V5LiBJZiBubyBleHRlbnNpb24gaXMgZm91bmQsIGZhbHNlIHdpbGwgYmUKICAgKiByZXR1cm5lZC4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB2ZXJpZmllZCwgZmFsc2UgaWYgbm90LgogICAqLwogIGNlcnQudmVyaWZ5U3ViamVjdEtleUlkZW50aWZpZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBvaWQgPSBvaWRzWydzdWJqZWN0S2V5SWRlbnRpZmllciddOwogICAgZm9yKHZhciBpID0gMDsgaSA8IGNlcnQuZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkgewogICAgICB2YXIgZXh0ID0gY2VydC5leHRlbnNpb25zW2ldOwogICAgICBpZihleHQuaWQgPT09IG9pZCkgewogICAgICAgIHZhciBza2kgPSBjZXJ0LmdlbmVyYXRlU3ViamVjdEtleUlkZW50aWZpZXIoKS5nZXRCeXRlcygpOwogICAgICAgIHJldHVybiAoZm9yZ2UudXRpbC5oZXhUb0J5dGVzKGV4dC5zdWJqZWN0S2V5SWRlbnRpZmllcikgPT09IHNraSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9OwoKICByZXR1cm4gY2VydDsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBYLjUwOXYzIFJTQSBjZXJ0aWZpY2F0ZSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogTm90ZTogSWYgdGhlIGNlcnRpZmljYXRlIGlzIHRvIGJlIHZlcmlmaWVkIHRoZW4gY29tcHV0ZSBoYXNoIHNob3VsZAogKiBiZSBzZXQgdG8gdHJ1ZS4gVGhlcmUgaXMgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9uIGZvciBjb252ZXJ0aW5nCiAqIGEgY2VydGlmaWNhdGUgYmFjayB0byBBU04uMSBzbyB0aGUgVEJTQ2VydGlmaWNhdGUgcGFydCBvZiB0aGUgQVNOLjEKICogb2JqZWN0IG5lZWRzIHRvIGJlIHNjYW5uZWQgYmVmb3JlIHRoZSBjZXJ0IG9iamVjdCBpcyBjcmVhdGVkLgogKgogKiBAcGFyYW0gb2JqIHRoZSBhc24xIHJlcHJlc2VudGF0aW9uIG9mIGFuIFguNTA5djMgUlNBIGNlcnRpZmljYXRlLgogKiBAcGFyYW0gY29tcHV0ZUhhc2ggdHJ1ZSB0byBjb21wdXRlIHRoZSBoYXNoIGZvciB2ZXJpZmljYXRpb24uCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRlLgogKi8KcGtpLmNlcnRpZmljYXRlRnJvbUFzbjEgPSBmdW5jdGlvbihvYmosIGNvbXB1dGVIYXNoKSB7CiAgLy8gdmFsaWRhdGUgY2VydGlmaWNhdGUgYW5kIGNhcHR1cmUgZGF0YQogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgeDUwOUNlcnRpZmljYXRlVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFguNTA5IGNlcnRpZmljYXRlLiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBpcyBub3QgYW4gWDUwOXYzIENlcnRpZmljYXRlLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvLyBlbnN1cmUgc2lnbmF0dXJlIGlzIG5vdCBpbnRlcnByZXRlZCBhcyBhbiBlbWJlZGRlZCBBU04uMSBvYmplY3QKICBpZih0eXBlb2YgY2FwdHVyZS5jZXJ0U2lnbmF0dXJlICE9PSAnc3RyaW5nJykgewogICAgdmFyIGNlcnRTaWduYXR1cmUgPSAnXHgwMCc7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgY2FwdHVyZS5jZXJ0U2lnbmF0dXJlLmxlbmd0aDsgKytpKSB7CiAgICAgIGNlcnRTaWduYXR1cmUgKz0gYXNuMS50b0RlcihjYXB0dXJlLmNlcnRTaWduYXR1cmVbaV0pLmdldEJ5dGVzKCk7CiAgICB9CiAgICBjYXB0dXJlLmNlcnRTaWduYXR1cmUgPSBjZXJ0U2lnbmF0dXJlOwogIH0KCiAgLy8gZ2V0IG9pZAogIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUucHVibGljS2V5T2lkKTsKICBpZihvaWQgIT09IHBraS5vaWRzWydyc2FFbmNyeXB0aW9uJ10pIHsKICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgcHVibGljIGtleS4gT0lEIGlzIG5vdCBSU0EuJyk7CiAgfQoKICAvLyBjcmVhdGUgY2VydGlmaWNhdGUKICB2YXIgY2VydCA9IHBraS5jcmVhdGVDZXJ0aWZpY2F0ZSgpOwogIGNlcnQudmVyc2lvbiA9IGNhcHR1cmUuY2VydFZlcnNpb24gPwogICAgY2FwdHVyZS5jZXJ0VmVyc2lvbi5jaGFyQ29kZUF0KDApIDogMDsKICB2YXIgc2VyaWFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5jZXJ0U2VyaWFsTnVtYmVyKTsKICBjZXJ0LnNlcmlhbE51bWJlciA9IHNlcmlhbC50b0hleCgpOwogIGNlcnQuc2lnbmF0dXJlT2lkID0gZm9yZ2UuYXNuMS5kZXJUb09pZChjYXB0dXJlLmNlcnRTaWduYXR1cmVPaWQpOwogIGNlcnQuc2lnbmF0dXJlUGFyYW1ldGVycyA9IF9yZWFkU2lnbmF0dXJlUGFyYW1ldGVycygKICAgIGNlcnQuc2lnbmF0dXJlT2lkLCBjYXB0dXJlLmNlcnRTaWduYXR1cmVQYXJhbXMsIHRydWUpOwogIGNlcnQuc2lnaW5mby5hbGdvcml0aG1PaWQgPSBmb3JnZS5hc24xLmRlclRvT2lkKGNhcHR1cmUuY2VydGluZm9TaWduYXR1cmVPaWQpOwogIGNlcnQuc2lnaW5mby5wYXJhbWV0ZXJzID0gX3JlYWRTaWduYXR1cmVQYXJhbWV0ZXJzKGNlcnQuc2lnaW5mby5hbGdvcml0aG1PaWQsCiAgICBjYXB0dXJlLmNlcnRpbmZvU2lnbmF0dXJlUGFyYW1zLCBmYWxzZSk7CiAgLy8gc2tpcCAidW51c2VkIGJpdHMiIGluIHNpZ25hdHVyZSB2YWx1ZSBCSVRTVFJJTkcKICB2YXIgc2lnbmF0dXJlID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5jZXJ0U2lnbmF0dXJlKTsKICArK3NpZ25hdHVyZS5yZWFkOwogIGNlcnQuc2lnbmF0dXJlID0gc2lnbmF0dXJlLmdldEJ5dGVzKCk7CgogIHZhciB2YWxpZGl0eSA9IFtdOwogIGlmKGNhcHR1cmUuY2VydFZhbGlkaXR5MVVUQ1RpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLnV0Y1RpbWVUb0RhdGUoY2FwdHVyZS5jZXJ0VmFsaWRpdHkxVVRDVGltZSkpOwogIH0KICBpZihjYXB0dXJlLmNlcnRWYWxpZGl0eTJHZW5lcmFsaXplZFRpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLmdlbmVyYWxpemVkVGltZVRvRGF0ZSgKICAgICAgY2FwdHVyZS5jZXJ0VmFsaWRpdHkyR2VuZXJhbGl6ZWRUaW1lKSk7CiAgfQogIGlmKGNhcHR1cmUuY2VydFZhbGlkaXR5M1VUQ1RpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLnV0Y1RpbWVUb0RhdGUoY2FwdHVyZS5jZXJ0VmFsaWRpdHkzVVRDVGltZSkpOwogIH0KICBpZihjYXB0dXJlLmNlcnRWYWxpZGl0eTRHZW5lcmFsaXplZFRpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLmdlbmVyYWxpemVkVGltZVRvRGF0ZSgKICAgICAgY2FwdHVyZS5jZXJ0VmFsaWRpdHk0R2VuZXJhbGl6ZWRUaW1lKSk7CiAgfQogIGlmKHZhbGlkaXR5Lmxlbmd0aCA+IDIpIHsKICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgbm90QmVmb3JlL25vdEFmdGVyIHZhbGlkaXR5IHRpbWVzOyBtb3JlICcgKwogICAgICAndGhhbiB0d28gdGltZXMgd2VyZSBwcm92aWRlZCBpbiB0aGUgY2VydGlmaWNhdGUuJyk7CiAgfQogIGlmKHZhbGlkaXR5Lmxlbmd0aCA8IDIpIHsKICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgbm90QmVmb3JlL25vdEFmdGVyIHZhbGlkaXR5IHRpbWVzOyB0aGV5ICcgKwogICAgICAnd2VyZSBub3QgcHJvdmlkZWQgYXMgZWl0aGVyIFVUQ1RpbWUgb3IgR2VuZXJhbGl6ZWRUaW1lLicpOwogIH0KICBjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZSA9IHZhbGlkaXR5WzBdOwogIGNlcnQudmFsaWRpdHkubm90QWZ0ZXIgPSB2YWxpZGl0eVsxXTsKCiAgLy8ga2VlcCBUQlNDZXJ0aWZpY2F0ZSB0byBwcmVzZXJ2ZSBzaWduYXR1cmUgd2hlbiBleHBvcnRpbmcKICBjZXJ0LnRic0NlcnRpZmljYXRlID0gY2FwdHVyZS50YnNDZXJ0aWZpY2F0ZTsKCiAgaWYoY29tcHV0ZUhhc2gpIHsKICAgIC8vIGNoZWNrIHNpZ25hdHVyZSBPSUQgZm9yIHN1cHBvcnRlZCBzaWduYXR1cmUgdHlwZXMKICAgIGNlcnQubWQgPSBudWxsOwogICAgaWYoY2VydC5zaWduYXR1cmVPaWQgaW4gb2lkcykgewogICAgICB2YXIgb2lkID0gb2lkc1tjZXJ0LnNpZ25hdHVyZU9pZF07CiAgICAgIHN3aXRjaChvaWQpIHsKICAgICAgY2FzZSAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICBjZXJ0Lm1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnbWQ1V2l0aFJTQUVuY3J5cHRpb24nOgogICAgICAgIGNlcnQubWQgPSBmb3JnZS5tZC5tZDUuY3JlYXRlKCk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3NoYTI1NldpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICBjZXJ0Lm1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY2VydC5tZCA9IGZvcmdlLm1kLnNoYTUxMi5jcmVhdGUoKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnUlNBU1NBLVBTUyc6CiAgICAgICAgY2VydC5tZCA9IGZvcmdlLm1kLnNoYTI1Ni5jcmVhdGUoKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgaWYoY2VydC5tZCA9PT0gbnVsbCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRlIGRpZ2VzdC4gJyArCiAgICAgICAgJ1Vua25vd24gc2lnbmF0dXJlIE9JRC4nKTsKICAgICAgZXJyb3Iuc2lnbmF0dXJlT2lkID0gY2VydC5zaWduYXR1cmVPaWQ7CiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIC8vIHByb2R1Y2UgREVSIGZvcm1hdHRlZCBUQlNDZXJ0aWZpY2F0ZSBhbmQgZGlnZXN0IGl0CiAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNlcnQudGJzQ2VydGlmaWNhdGUpOwogICAgY2VydC5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgfQoKICAvLyBoYW5kbGUgaXNzdWVyLCBidWlsZCBpc3N1ZXIgbWVzc2FnZSBkaWdlc3QKICB2YXIgaW1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICBjZXJ0Lmlzc3Vlci5nZXRGaWVsZCA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjZXJ0Lmlzc3Vlciwgc24pOwogIH07CiAgY2VydC5pc3N1ZXIuYWRkRmllbGQgPSBmdW5jdGlvbihhdHRyKSB7CiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoW2F0dHJdKTsKICAgIGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMgPSBwa2kuUkROQXR0cmlidXRlc0FzQXJyYXkoY2FwdHVyZS5jZXJ0SXNzdWVyLCBpbWQpOwogIGlmKGNhcHR1cmUuY2VydElzc3VlclVuaXF1ZUlkKSB7CiAgICBjZXJ0Lmlzc3Vlci51bmlxdWVJZCA9IGNhcHR1cmUuY2VydElzc3VlclVuaXF1ZUlkOwogIH0KICBjZXJ0Lmlzc3Vlci5oYXNoID0gaW1kLmRpZ2VzdCgpLnRvSGV4KCk7CgogIC8vIGhhbmRsZSBzdWJqZWN0LCBidWlsZCBzdWJqZWN0IG1lc3NhZ2UgZGlnZXN0CiAgdmFyIHNtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgY2VydC5zdWJqZWN0LmdldEZpZWxkID0gZnVuY3Rpb24oc24pIHsKICAgIHJldHVybiBfZ2V0QXR0cmlidXRlKGNlcnQuc3ViamVjdCwgc24pOwogIH07CiAgY2VydC5zdWJqZWN0LmFkZEZpZWxkID0gZnVuY3Rpb24oYXR0cikgewogICAgX2ZpbGxNaXNzaW5nRmllbGRzKFthdHRyXSk7CiAgICBjZXJ0LnN1YmplY3QuYXR0cmlidXRlcy5wdXNoKGF0dHIpOwogIH07CiAgY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXMgPSBwa2kuUkROQXR0cmlidXRlc0FzQXJyYXkoY2FwdHVyZS5jZXJ0U3ViamVjdCwgc21kKTsKICBpZihjYXB0dXJlLmNlcnRTdWJqZWN0VW5pcXVlSWQpIHsKICAgIGNlcnQuc3ViamVjdC51bmlxdWVJZCA9IGNhcHR1cmUuY2VydFN1YmplY3RVbmlxdWVJZDsKICB9CiAgY2VydC5zdWJqZWN0Lmhhc2ggPSBzbWQuZGlnZXN0KCkudG9IZXgoKTsKCiAgLy8gaGFuZGxlIGV4dGVuc2lvbnMKICBpZihjYXB0dXJlLmNlcnRFeHRlbnNpb25zKSB7CiAgICBjZXJ0LmV4dGVuc2lvbnMgPSBwa2kuY2VydGlmaWNhdGVFeHRlbnNpb25zRnJvbUFzbjEoY2FwdHVyZS5jZXJ0RXh0ZW5zaW9ucyk7CiAgfSBlbHNlIHsKICAgIGNlcnQuZXh0ZW5zaW9ucyA9IFtdOwogIH0KCiAgLy8gY29udmVydCBSU0EgcHVibGljIGtleSBmcm9tIEFTTi4xCiAgY2VydC5wdWJsaWNLZXkgPSBwa2kucHVibGljS2V5RnJvbUFzbjEoY2FwdHVyZS5zdWJqZWN0UHVibGljS2V5SW5mbyk7CgogIHJldHVybiBjZXJ0Owp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIEFTTi4xIGV4dGVuc2lvbnMgb2JqZWN0ICh3aXRoIGV4dGVuc2lvbiBzZXF1ZW5jZXMgYXMgaXRzCiAqIHZhbHVlcykgaW50byBhbiBhcnJheSBvZiBleHRlbnNpb24gb2JqZWN0cyB3aXRoIHR5cGVzIGFuZCB2YWx1ZXMuCiAqCiAqIFN1cHBvcnRlZCBleHRlbnNpb25zOgogKgogKiBpZC1jZS1rZXlVc2FnZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTUgfQogKiBLZXlVc2FnZSA6Oj0gQklUIFNUUklORyB7CiAqICAgZGlnaXRhbFNpZ25hdHVyZSAgICAgICAgKDApLAogKiAgIG5vblJlcHVkaWF0aW9uICAgICAgICAgICgxKSwKICogICBrZXlFbmNpcGhlcm1lbnQgICAgICAgICAoMiksCiAqICAgZGF0YUVuY2lwaGVybWVudCAgICAgICAgKDMpLAogKiAgIGtleUFncmVlbWVudCAgICAgICAgICAgICg0KSwKICogICBrZXlDZXJ0U2lnbiAgICAgICAgICAgICAoNSksCiAqICAgY1JMU2lnbiAgICAgICAgICAgICAgICAgKDYpLAogKiAgIGVuY2lwaGVyT25seSAgICAgICAgICAgICg3KSwKICogICBkZWNpcGhlck9ubHkgICAgICAgICAgICAoOCkKICogfQogKgogKiBpZC1jZS1iYXNpY0NvbnN0cmFpbnRzIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAxOSB9CiAqIEJhc2ljQ29uc3RyYWludHMgOjo9IFNFUVVFTkNFIHsKICogICBjQSAgICAgICAgICAgICAgICAgICAgICBCT09MRUFOIERFRkFVTFQgRkFMU0UsCiAqICAgcGF0aExlbkNvbnN0cmFpbnQgICAgICAgSU5URUdFUiAoMC4uTUFYKSBPUFRJT05BTAogKiB9CiAqCiAqIHN1YmplY3RBbHROYW1lIEVYVEVOU0lPTiA6Oj0gewogKiAgIFNZTlRBWCBHZW5lcmFsTmFtZXMKICogICBJREVOVElGSUVEIEJZIGlkLWNlLXN1YmplY3RBbHROYW1lCiAqIH0KICoKICogR2VuZXJhbE5hbWVzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIEdlbmVyYWxOYW1lCiAqCiAqIEdlbmVyYWxOYW1lIDo6PSBDSE9JQ0UgewogKiAgIG90aGVyTmFtZSAgICAgIFswXSBJTlNUQU5DRSBPRiBPVEhFUi1OQU1FLAogKiAgIHJmYzgyMk5hbWUgICAgIFsxXSBJQTVTdHJpbmcsCiAqICAgZE5TTmFtZSAgICAgICAgWzJdIElBNVN0cmluZywKICogICB4NDAwQWRkcmVzcyAgICBbM10gT1JBZGRyZXNzLAogKiAgIGRpcmVjdG9yeU5hbWUgIFs0XSBOYW1lLAogKiAgIGVkaVBhcnR5TmFtZSAgIFs1XSBFRElQYXJ0eU5hbWUsCiAqICAgdW5pZm9ybVJlc291cmNlSWRlbnRpZmllciBbNl0gSUE1U3RyaW5nLAogKiAgIElQQWRkcmVzcyAgICAgIFs3XSBPQ1RFVCBTVFJJTkcsCiAqICAgcmVnaXN0ZXJlZElEICAgWzhdIE9CSkVDVCBJREVOVElGSUVSCiAqIH0KICoKICogT1RIRVItTkFNRSA6Oj0gVFlQRS1JREVOVElGSUVSCiAqCiAqIEVESVBhcnR5TmFtZSA6Oj0gU0VRVUVOQ0UgewogKiAgIG5hbWVBc3NpZ25lciBbMF0gRGlyZWN0b3J5U3RyaW5nIHt1Yi1uYW1lfSBPUFRJT05BTCwKICogICBwYXJ0eU5hbWUgICAgWzFdIERpcmVjdG9yeVN0cmluZyB7dWItbmFtZX0KICogfQogKgogKiBAcGFyYW0gZXh0cyB0aGUgZXh0ZW5zaW9ucyBBU04uMSB3aXRoIGV4dGVuc2lvbiBzZXF1ZW5jZXMgdG8gcGFyc2UuCiAqCiAqIEByZXR1cm4gdGhlIGFycmF5LgogKi8KcGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uc0Zyb21Bc24xID0gZnVuY3Rpb24oZXh0cykgewogIHZhciBydmFsID0gW107CiAgZm9yKHZhciBpID0gMDsgaSA8IGV4dHMudmFsdWUubGVuZ3RoOyArK2kpIHsKICAgIC8vIGdldCBleHRlbnNpb24gc2VxdWVuY2UKICAgIHZhciBleHRzZXEgPSBleHRzLnZhbHVlW2ldOwogICAgZm9yKHZhciBlaSA9IDA7IGVpIDwgZXh0c2VxLnZhbHVlLmxlbmd0aDsgKytlaSkgewogICAgICBydmFsLnB1c2gocGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uRnJvbUFzbjEoZXh0c2VxLnZhbHVlW2VpXSkpOwogICAgfQogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUGFyc2VzIGEgc2luZ2xlIGNlcnRpZmljYXRlIGV4dGVuc2lvbiBmcm9tIEFTTi4xLgogKgogKiBAcGFyYW0gZXh0IHRoZSBleHRlbnNpb24gaW4gQVNOLjEgZm9ybWF0LgogKgogKiBAcmV0dXJuIHRoZSBwYXJzZWQgZXh0ZW5zaW9uIGFzIGFuIG9iamVjdC4KICovCnBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvbkZyb21Bc24xID0gZnVuY3Rpb24oZXh0KSB7CiAgLy8gYW4gZXh0ZW5zaW9uIGhhczoKICAvLyBbMF0gZXh0bklEICAgICAgT0JKRUNUIElERU5USUZJRVIKICAvLyBbMV0gY3JpdGljYWwgICAgQk9PTEVBTiBERUZBVUxUIEZBTFNFCiAgLy8gWzJdIGV4dG5WYWx1ZSAgIE9DVEVUIFNUUklORwogIHZhciBlID0ge307CiAgZS5pZCA9IGFzbjEuZGVyVG9PaWQoZXh0LnZhbHVlWzBdLnZhbHVlKTsKICBlLmNyaXRpY2FsID0gZmFsc2U7CiAgaWYoZXh0LnZhbHVlWzFdLnR5cGUgPT09IGFzbjEuVHlwZS5CT09MRUFOKSB7CiAgICBlLmNyaXRpY2FsID0gKGV4dC52YWx1ZVsxXS52YWx1ZS5jaGFyQ29kZUF0KDApICE9PSAweDAwKTsKICAgIGUudmFsdWUgPSBleHQudmFsdWVbMl0udmFsdWU7CiAgfSBlbHNlIHsKICAgIGUudmFsdWUgPSBleHQudmFsdWVbMV0udmFsdWU7CiAgfQogIC8vIGlmIHRoZSBvaWQgaXMga25vd24sIGdldCBpdHMgbmFtZQogIGlmKGUuaWQgaW4gb2lkcykgewogICAgZS5uYW1lID0gb2lkc1tlLmlkXTsKCiAgICAvLyBoYW5kbGUga2V5IHVzYWdlCiAgICBpZihlLm5hbWUgPT09ICdrZXlVc2FnZScpIHsKICAgICAgLy8gZ2V0IHZhbHVlIGFzIEJJVCBTVFJJTkcKICAgICAgdmFyIGV2ID0gYXNuMS5mcm9tRGVyKGUudmFsdWUpOwogICAgICB2YXIgYjIgPSAweDAwOwogICAgICB2YXIgYjMgPSAweDAwOwogICAgICBpZihldi52YWx1ZS5sZW5ndGggPiAxKSB7CiAgICAgICAgLy8gc2tpcCBmaXJzdCBieXRlLCBqdXN0IGluZGljYXRlcyB1bnVzZWQgYml0cyB3aGljaAogICAgICAgIC8vIHdpbGwgYmUgcGFkZGVkIHdpdGggMHMgYW55d2F5CiAgICAgICAgLy8gZ2V0IGJ5dGVzIHdpdGggZmxhZyBiaXRzCiAgICAgICAgYjIgPSBldi52YWx1ZS5jaGFyQ29kZUF0KDEpOwogICAgICAgIGIzID0gZXYudmFsdWUubGVuZ3RoID4gMiA/IGV2LnZhbHVlLmNoYXJDb2RlQXQoMikgOiAwOwogICAgICB9CiAgICAgIC8vIHNldCBmbGFncwogICAgICBlLmRpZ2l0YWxTaWduYXR1cmUgPSAoYjIgJiAweDgwKSA9PT0gMHg4MDsKICAgICAgZS5ub25SZXB1ZGlhdGlvbiA9IChiMiAmIDB4NDApID09PSAweDQwOwogICAgICBlLmtleUVuY2lwaGVybWVudCA9IChiMiAmIDB4MjApID09PSAweDIwOwogICAgICBlLmRhdGFFbmNpcGhlcm1lbnQgPSAoYjIgJiAweDEwKSA9PT0gMHgxMDsKICAgICAgZS5rZXlBZ3JlZW1lbnQgPSAoYjIgJiAweDA4KSA9PT0gMHgwODsKICAgICAgZS5rZXlDZXJ0U2lnbiA9IChiMiAmIDB4MDQpID09PSAweDA0OwogICAgICBlLmNSTFNpZ24gPSAoYjIgJiAweDAyKSA9PT0gMHgwMjsKICAgICAgZS5lbmNpcGhlck9ubHkgPSAoYjIgJiAweDAxKSA9PT0gMHgwMTsKICAgICAgZS5kZWNpcGhlck9ubHkgPSAoYjMgJiAweDgwKSA9PT0gMHg4MDsKICAgIH0gZWxzZSBpZihlLm5hbWUgPT09ICdiYXNpY0NvbnN0cmFpbnRzJykgewogICAgICAvLyBoYW5kbGUgYmFzaWMgY29uc3RyYWludHMKICAgICAgLy8gZ2V0IHZhbHVlIGFzIFNFUVVFTkNFCiAgICAgIHZhciBldiA9IGFzbjEuZnJvbURlcihlLnZhbHVlKTsKICAgICAgLy8gZ2V0IGNBIEJPT0xFQU4gZmxhZyAoZGVmYXVsdHMgdG8gZmFsc2UpCiAgICAgIGlmKGV2LnZhbHVlLmxlbmd0aCA+IDAgJiYgZXYudmFsdWVbMF0udHlwZSA9PT0gYXNuMS5UeXBlLkJPT0xFQU4pIHsKICAgICAgICBlLmNBID0gKGV2LnZhbHVlWzBdLnZhbHVlLmNoYXJDb2RlQXQoMCkgIT09IDB4MDApOwogICAgICB9IGVsc2UgewogICAgICAgIGUuY0EgPSBmYWxzZTsKICAgICAgfQogICAgICAvLyBnZXQgcGF0aCBsZW5ndGggY29uc3RyYWludAogICAgICB2YXIgdmFsdWUgPSBudWxsOwogICAgICBpZihldi52YWx1ZS5sZW5ndGggPiAwICYmIGV2LnZhbHVlWzBdLnR5cGUgPT09IGFzbjEuVHlwZS5JTlRFR0VSKSB7CiAgICAgICAgdmFsdWUgPSBldi52YWx1ZVswXS52YWx1ZTsKICAgICAgfSBlbHNlIGlmKGV2LnZhbHVlLmxlbmd0aCA+IDEpIHsKICAgICAgICB2YWx1ZSA9IGV2LnZhbHVlWzFdLnZhbHVlOwogICAgICB9CiAgICAgIGlmKHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgZS5wYXRoTGVuQ29uc3RyYWludCA9IGFzbjEuZGVyVG9JbnRlZ2VyKHZhbHVlKTsKICAgICAgfQogICAgfSBlbHNlIGlmKGUubmFtZSA9PT0gJ2V4dEtleVVzYWdlJykgewogICAgICAvLyBoYW5kbGUgZXh0S2V5VXNhZ2UKICAgICAgLy8gdmFsdWUgaXMgYSBTRVFVRU5DRSBvZiBPSURzCiAgICAgIHZhciBldiA9IGFzbjEuZnJvbURlcihlLnZhbHVlKTsKICAgICAgZm9yKHZhciB2aSA9IDA7IHZpIDwgZXYudmFsdWUubGVuZ3RoOyArK3ZpKSB7CiAgICAgICAgdmFyIG9pZCA9IGFzbjEuZGVyVG9PaWQoZXYudmFsdWVbdmldLnZhbHVlKTsKICAgICAgICBpZihvaWQgaW4gb2lkcykgewogICAgICAgICAgZVtvaWRzW29pZF1dID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZVtvaWRdID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSBpZihlLm5hbWUgPT09ICduc0NlcnRUeXBlJykgewogICAgICAvLyBoYW5kbGUgbnNDZXJ0VHlwZQogICAgICAvLyBnZXQgdmFsdWUgYXMgQklUIFNUUklORwogICAgICB2YXIgZXYgPSBhc24xLmZyb21EZXIoZS52YWx1ZSk7CiAgICAgIHZhciBiMiA9IDB4MDA7CiAgICAgIGlmKGV2LnZhbHVlLmxlbmd0aCA+IDEpIHsKICAgICAgICAvLyBza2lwIGZpcnN0IGJ5dGUsIGp1c3QgaW5kaWNhdGVzIHVudXNlZCBiaXRzIHdoaWNoCiAgICAgICAgLy8gd2lsbCBiZSBwYWRkZWQgd2l0aCAwcyBhbnl3YXkKICAgICAgICAvLyBnZXQgYnl0ZXMgd2l0aCBmbGFnIGJpdHMKICAgICAgICBiMiA9IGV2LnZhbHVlLmNoYXJDb2RlQXQoMSk7CiAgICAgIH0KICAgICAgLy8gc2V0IGZsYWdzCiAgICAgIGUuY2xpZW50ID0gKGIyICYgMHg4MCkgPT09IDB4ODA7CiAgICAgIGUuc2VydmVyID0gKGIyICYgMHg0MCkgPT09IDB4NDA7CiAgICAgIGUuZW1haWwgPSAoYjIgJiAweDIwKSA9PT0gMHgyMDsKICAgICAgZS5vYmpzaWduID0gKGIyICYgMHgxMCkgPT09IDB4MTA7CiAgICAgIGUucmVzZXJ2ZWQgPSAoYjIgJiAweDA4KSA9PT0gMHgwODsKICAgICAgZS5zc2xDQSA9IChiMiAmIDB4MDQpID09PSAweDA0OwogICAgICBlLmVtYWlsQ0EgPSAoYjIgJiAweDAyKSA9PT0gMHgwMjsKICAgICAgZS5vYmpDQSA9IChiMiAmIDB4MDEpID09PSAweDAxOwogICAgfSBlbHNlIGlmKAogICAgICBlLm5hbWUgPT09ICdzdWJqZWN0QWx0TmFtZScgfHwKICAgICAgZS5uYW1lID09PSAnaXNzdWVyQWx0TmFtZScpIHsKICAgICAgLy8gaGFuZGxlIHN1YmplY3RBbHROYW1lL2lzc3VlckFsdE5hbWUKICAgICAgZS5hbHROYW1lcyA9IFtdOwoKICAgICAgLy8gZXYgaXMgYSBTWU5UQVggU0VRVUVOQ0UKICAgICAgdmFyIGduOwogICAgICB2YXIgZXYgPSBhc24xLmZyb21EZXIoZS52YWx1ZSk7CiAgICAgIGZvcih2YXIgbiA9IDA7IG4gPCBldi52YWx1ZS5sZW5ndGg7ICsrbikgewogICAgICAgIC8vIGdldCBHZW5lcmFsTmFtZQogICAgICAgIGduID0gZXYudmFsdWVbbl07CgogICAgICAgIHZhciBhbHROYW1lID0gewogICAgICAgICAgdHlwZTogZ24udHlwZSwKICAgICAgICAgIHZhbHVlOiBnbi52YWx1ZQogICAgICAgIH07CiAgICAgICAgZS5hbHROYW1lcy5wdXNoKGFsdE5hbWUpOwoKICAgICAgICAvLyBOb3RlOiBTdXBwb3J0IGZvciB0eXBlcyAxLDIsNiw3LDgKICAgICAgICBzd2l0Y2goZ24udHlwZSkgewogICAgICAgIC8vIHJmYzgyMk5hbWUKICAgICAgICBjYXNlIDE6CiAgICAgICAgLy8gZE5TTmFtZQogICAgICAgIGNhc2UgMjoKICAgICAgICAvLyB1bmlmb3JtUmVzb3VyY2VJZGVudGlmaWVyIChVUkkpCiAgICAgICAgY2FzZSA2OgogICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gSVBBZGRyZXNzCiAgICAgICAgY2FzZSA3OgogICAgICAgICAgLy8gY29udmVydCB0byBJUHY0L0lQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uCiAgICAgICAgICBhbHROYW1lLmlwID0gZm9yZ2UudXRpbC5ieXRlc1RvSVAoZ24udmFsdWUpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gcmVnaXN0ZXJlZElECiAgICAgICAgY2FzZSA4OgogICAgICAgICAgYWx0TmFtZS5vaWQgPSBhc24xLmRlclRvT2lkKGduLnZhbHVlKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAvLyB1bnN1cHBvcnRlZAogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIGlmKGUubmFtZSA9PT0gJ3N1YmplY3RLZXlJZGVudGlmaWVyJykgewogICAgICAvLyB2YWx1ZSBpcyBhbiBPQ1RFVFNUUklORyB3L3RoZSBoYXNoIG9mIHRoZSBrZXktdHlwZSBzcGVjaWZpYwogICAgICAvLyBwdWJsaWMga2V5IHN0cnVjdHVyZSAoZWc6IFJTQVB1YmxpY0tleSkKICAgICAgdmFyIGV2ID0gYXNuMS5mcm9tRGVyKGUudmFsdWUpOwogICAgICBlLnN1YmplY3RLZXlJZGVudGlmaWVyID0gZm9yZ2UudXRpbC5ieXRlc1RvSGV4KGV2LnZhbHVlKTsKICAgIH0KICB9CiAgcmV0dXJuIGU7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzEwIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogTm90ZTogSWYgdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdCBpcyB0byBiZSB2ZXJpZmllZCB0aGVuIGNvbXB1dGUgaGFzaAogKiBzaG91bGQgYmUgc2V0IHRvIHRydWUuIFRoZXJlIGlzIGN1cnJlbnRseSBubyBpbXBsZW1lbnRhdGlvbiBmb3IgY29udmVydGluZwogKiBhIGNlcnRpZmljYXRlIGJhY2sgdG8gQVNOLjEgc28gdGhlIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyBwYXJ0IG9mIHRoZQogKiBBU04uMSBvYmplY3QgbmVlZHMgdG8gYmUgc2Nhbm5lZCBiZWZvcmUgdGhlIGNzciBvYmplY3QgaXMgY3JlYXRlZC4KICoKICogQHBhcmFtIG9iaiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIFBLQ1MjMTAgY2VydGlmaWNhdGlvbiByZXF1ZXN0IChDU1IpLgogKiBAcGFyYW0gY29tcHV0ZUhhc2ggdHJ1ZSB0byBjb21wdXRlIHRoZSBoYXNoIGZvciB2ZXJpZmljYXRpb24uCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKS4KICovCnBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdEZyb21Bc24xID0gZnVuY3Rpb24ob2JqLCBjb21wdXRlSGFzaCkgewogIC8vIHZhbGlkYXRlIGNlcnRpZmljYXRpb24gcmVxdWVzdCBhbmQgY2FwdHVyZSBkYXRhCiAgdmFyIGNhcHR1cmUgPSB7fTsKICB2YXIgZXJyb3JzID0gW107CiAgaWYoIWFzbjEudmFsaWRhdGUob2JqLCBjZXJ0aWZpY2F0aW9uUmVxdWVzdFZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzEwIGNlcnRpZmljYXRlIHJlcXVlc3QuICcgKwogICAgICAnQVNOLjEgb2JqZWN0IGlzIG5vdCBhIFBLQ1MjMTAgQ2VydGlmaWNhdGlvblJlcXVlc3QuJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIGVuc3VyZSBzaWduYXR1cmUgaXMgbm90IGludGVycHJldGVkIGFzIGFuIGVtYmVkZGVkIEFTTi4xIG9iamVjdAogIGlmKHR5cGVvZiBjYXB0dXJlLmNzclNpZ25hdHVyZSAhPT0gJ3N0cmluZycpIHsKICAgIHZhciBjc3JTaWduYXR1cmUgPSAnXHgwMCc7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgY2FwdHVyZS5jc3JTaWduYXR1cmUubGVuZ3RoOyArK2kpIHsKICAgICAgY3NyU2lnbmF0dXJlICs9IGFzbjEudG9EZXIoY2FwdHVyZS5jc3JTaWduYXR1cmVbaV0pLmdldEJ5dGVzKCk7CiAgICB9CiAgICBjYXB0dXJlLmNzclNpZ25hdHVyZSA9IGNzclNpZ25hdHVyZTsKICB9CgogIC8vIGdldCBvaWQKICB2YXIgb2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLnB1YmxpY0tleU9pZCk7CiAgaWYob2lkICE9PSBwa2kub2lkcy5yc2FFbmNyeXB0aW9uKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIHB1YmxpYyBrZXkuIE9JRCBpcyBub3QgUlNBLicpOwogIH0KCiAgLy8gY3JlYXRlIGNlcnRpZmljYXRpb24gcmVxdWVzdAogIHZhciBjc3IgPSBwa2kuY3JlYXRlQ2VydGlmaWNhdGlvblJlcXVlc3QoKTsKICBjc3IudmVyc2lvbiA9IGNhcHR1cmUuY3NyVmVyc2lvbiA/IGNhcHR1cmUuY3NyVmVyc2lvbi5jaGFyQ29kZUF0KDApIDogMDsKICBjc3Iuc2lnbmF0dXJlT2lkID0gZm9yZ2UuYXNuMS5kZXJUb09pZChjYXB0dXJlLmNzclNpZ25hdHVyZU9pZCk7CiAgY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMgPSBfcmVhZFNpZ25hdHVyZVBhcmFtZXRlcnMoCiAgICBjc3Iuc2lnbmF0dXJlT2lkLCBjYXB0dXJlLmNzclNpZ25hdHVyZVBhcmFtcywgdHJ1ZSk7CiAgY3NyLnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gZm9yZ2UuYXNuMS5kZXJUb09pZChjYXB0dXJlLmNzclNpZ25hdHVyZU9pZCk7CiAgY3NyLnNpZ2luZm8ucGFyYW1ldGVycyA9IF9yZWFkU2lnbmF0dXJlUGFyYW1ldGVycygKICAgIGNzci5zaWdpbmZvLmFsZ29yaXRobU9pZCwgY2FwdHVyZS5jc3JTaWduYXR1cmVQYXJhbXMsIGZhbHNlKTsKICAvLyBza2lwICJ1bnVzZWQgYml0cyIgaW4gc2lnbmF0dXJlIHZhbHVlIEJJVFNUUklORwogIHZhciBzaWduYXR1cmUgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLmNzclNpZ25hdHVyZSk7CiAgKytzaWduYXR1cmUucmVhZDsKICBjc3Iuc2lnbmF0dXJlID0gc2lnbmF0dXJlLmdldEJ5dGVzKCk7CgogIC8vIGtlZXAgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHRvIHByZXNlcnZlIHNpZ25hdHVyZSB3aGVuIGV4cG9ydGluZwogIGNzci5jZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8gPSBjYXB0dXJlLmNlcnRpZmljYXRpb25SZXF1ZXN0SW5mbzsKCiAgaWYoY29tcHV0ZUhhc2gpIHsKICAgIC8vIGNoZWNrIHNpZ25hdHVyZSBPSUQgZm9yIHN1cHBvcnRlZCBzaWduYXR1cmUgdHlwZXMKICAgIGNzci5tZCA9IG51bGw7CiAgICBpZihjc3Iuc2lnbmF0dXJlT2lkIGluIG9pZHMpIHsKICAgICAgdmFyIG9pZCA9IG9pZHNbY3NyLnNpZ25hdHVyZU9pZF07CiAgICAgIHN3aXRjaChvaWQpIHsKICAgICAgY2FzZSAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICBjc3IubWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdtZDVXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY3NyLm1kID0gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY3NyLm1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY3NyLm1kID0gZm9yZ2UubWQuc2hhNTEyLmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdSU0FTU0EtUFNTJzoKICAgICAgICBjc3IubWQgPSBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGlmKGNzci5tZCA9PT0gbnVsbCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRpb24gcmVxdWVzdCBkaWdlc3QuICcgKwogICAgICAgICdVbmtub3duIHNpZ25hdHVyZSBPSUQuJyk7CiAgICAgIGVycm9yLnNpZ25hdHVyZU9pZCA9IGNzci5zaWduYXR1cmVPaWQ7CiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIC8vIHByb2R1Y2UgREVSIGZvcm1hdHRlZCBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8gYW5kIGRpZ2VzdCBpdAogICAgdmFyIGJ5dGVzID0gYXNuMS50b0Rlcihjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvKTsKICAgIGNzci5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgfQoKICAvLyBoYW5kbGUgc3ViamVjdCwgYnVpbGQgc3ViamVjdCBtZXNzYWdlIGRpZ2VzdAogIHZhciBzbWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIGNzci5zdWJqZWN0LmdldEZpZWxkID0gZnVuY3Rpb24oc24pIHsKICAgIHJldHVybiBfZ2V0QXR0cmlidXRlKGNzci5zdWJqZWN0LCBzbik7CiAgfTsKICBjc3Iuc3ViamVjdC5hZGRGaWVsZCA9IGZ1bmN0aW9uKGF0dHIpIHsKICAgIF9maWxsTWlzc2luZ0ZpZWxkcyhbYXR0cl0pOwogICAgY3NyLnN1YmplY3QuYXR0cmlidXRlcy5wdXNoKGF0dHIpOwogIH07CiAgY3NyLnN1YmplY3QuYXR0cmlidXRlcyA9IHBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheSgKICAgIGNhcHR1cmUuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvU3ViamVjdCwgc21kKTsKICBjc3Iuc3ViamVjdC5oYXNoID0gc21kLmRpZ2VzdCgpLnRvSGV4KCk7CgogIC8vIGNvbnZlcnQgUlNBIHB1YmxpYyBrZXkgZnJvbSBBU04uMQogIGNzci5wdWJsaWNLZXkgPSBwa2kucHVibGljS2V5RnJvbUFzbjEoY2FwdHVyZS5zdWJqZWN0UHVibGljS2V5SW5mbyk7CgogIC8vIGNvbnZlcnQgYXR0cmlidXRlcyBmcm9tIEFTTi4xCiAgY3NyLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjc3IsIHNuKTsKICB9OwogIGNzci5hZGRBdHRyaWJ1dGUgPSBmdW5jdGlvbihhdHRyKSB7CiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoW2F0dHJdKTsKICAgIGNzci5hdHRyaWJ1dGVzLnB1c2goYXR0cik7CiAgfTsKICBjc3IuYXR0cmlidXRlcyA9IHBraS5DUklBdHRyaWJ1dGVzQXNBcnJheSgKICAgIGNhcHR1cmUuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvQXR0cmlidXRlcyB8fCBbXSk7CgogIHJldHVybiBjc3I7Cn07CgovKioKICogQ3JlYXRlcyBhbiBlbXB0eSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgKGEgQ1NSIG9yIGNlcnRpZmljYXRlIHNpZ25pbmcKICogcmVxdWVzdCkuIE9uY2UgY3JlYXRlZCwgaXRzIHB1YmxpYyBrZXkgYW5kIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCBhbmQgdGhlbgogKiBpdCBjYW4gYmUgc2lnbmVkLgogKgogKiBAcmV0dXJuIHRoZSBlbXB0eSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAqLwpwa2kuY3JlYXRlQ2VydGlmaWNhdGlvblJlcXVlc3QgPSBmdW5jdGlvbigpIHsKICB2YXIgY3NyID0ge307CiAgY3NyLnZlcnNpb24gPSAweDAwOwogIGNzci5zaWduYXR1cmVPaWQgPSBudWxsOwogIGNzci5zaWduYXR1cmUgPSBudWxsOwogIGNzci5zaWdpbmZvID0ge307CiAgY3NyLnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gbnVsbDsKCiAgY3NyLnN1YmplY3QgPSB7fTsKICBjc3Iuc3ViamVjdC5nZXRGaWVsZCA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjc3Iuc3ViamVjdCwgc24pOwogIH07CiAgY3NyLnN1YmplY3QuYWRkRmllbGQgPSBmdW5jdGlvbihhdHRyKSB7CiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoW2F0dHJdKTsKICAgIGNzci5zdWJqZWN0LmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNzci5zdWJqZWN0LmF0dHJpYnV0ZXMgPSBbXTsKICBjc3Iuc3ViamVjdC5oYXNoID0gbnVsbDsKCiAgY3NyLnB1YmxpY0tleSA9IG51bGw7CiAgY3NyLmF0dHJpYnV0ZXMgPSBbXTsKICBjc3IuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24oc24pIHsKICAgIHJldHVybiBfZ2V0QXR0cmlidXRlKGNzciwgc24pOwogIH07CiAgY3NyLmFkZEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKGF0dHIpIHsKICAgIF9maWxsTWlzc2luZ0ZpZWxkcyhbYXR0cl0pOwogICAgY3NyLmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNzci5tZCA9IG51bGw7CgogIC8qKgogICAqIFNldHMgdGhlIHN1YmplY3Qgb2YgdGhpcyBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAgICoKICAgKiBAcGFyYW0gYXR0cnMgdGhlIGFycmF5IG9mIHN1YmplY3QgYXR0cmlidXRlcyB0byB1c2UuCiAgICovCiAgY3NyLnNldFN1YmplY3QgPSBmdW5jdGlvbihhdHRycykgewogICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoYXR0cnMpOwogICAgY3NyLnN1YmplY3QuYXR0cmlidXRlcyA9IGF0dHJzOwogICAgY3NyLnN1YmplY3QuaGFzaCA9IG51bGw7CiAgfTsKCiAgLyoqCiAgICogU2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0aGlzIGNlcnRpZmljYXRpb24gcmVxdWVzdC4KICAgKgogICAqIEBwYXJhbSBhdHRycyB0aGUgYXJyYXkgb2YgYXR0cmlidXRlcyB0byB1c2UuCiAgICovCiAgY3NyLnNldEF0dHJpYnV0ZXMgPSBmdW5jdGlvbihhdHRycykgewogICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoYXR0cnMpOwogICAgY3NyLmF0dHJpYnV0ZXMgPSBhdHRyczsKICB9OwoKICAvKioKICAgKiBTaWducyB0aGlzIGNlcnRpZmljYXRpb24gcmVxdWVzdCB1c2luZyB0aGUgZ2l2ZW4gcHJpdmF0ZSBrZXkuCiAgICoKICAgKiBAcGFyYW0ga2V5IHRoZSBwcml2YXRlIGtleSB0byBzaWduIHdpdGguCiAgICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIChkZWZhdWx0cyB0byBmb3JnZS5tZC5zaGExKS4KICAgKi8KICBjc3Iuc2lnbiA9IGZ1bmN0aW9uKGtleSwgbWQpIHsKICAgIC8vIFRPRE86IGdldCBzaWduYXR1cmUgT0lEIGZyb20gcHJpdmF0ZSBrZXkKICAgIGNzci5tZCA9IG1kIHx8IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICB2YXIgYWxnb3JpdGhtT2lkID0gb2lkc1tjc3IubWQuYWxnb3JpdGhtICsgJ1dpdGhSU0FFbmNyeXB0aW9uJ107CiAgICBpZighYWxnb3JpdGhtT2lkKSB7CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbXB1dGUgY2VydGlmaWNhdGlvbiByZXF1ZXN0IGRpZ2VzdC4gJyArCiAgICAgICAgJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QgYWxnb3JpdGhtIE9JRC4nKTsKICAgICAgZXJyb3IuYWxnb3JpdGhtID0gY3NyLm1kLmFsZ29yaXRobTsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CiAgICBjc3Iuc2lnbmF0dXJlT2lkID0gY3NyLnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gYWxnb3JpdGhtT2lkOwoKICAgIC8vIGdldCBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8sIGNvbnZlcnQgdG8gREVSCiAgICBjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvID0gcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyhjc3IpOwogICAgdmFyIGJ5dGVzID0gYXNuMS50b0Rlcihjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvKTsKCiAgICAvLyBkaWdlc3QgYW5kIHNpZ24KICAgIGNzci5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgICBjc3Iuc2lnbmF0dXJlID0ga2V5LnNpZ24oY3NyLm1kKTsKICB9OwoKICAvKioKICAgKiBBdHRlbXB0cyB2ZXJpZnkgdGhlIHNpZ25hdHVyZSBvbiB0aGUgcGFzc2VkIGNlcnRpZmljYXRpb24gcmVxdWVzdCB1c2luZwogICAqIGl0cyBwdWJsaWMga2V5LgogICAqCiAgICogQSBDU1IgdGhhdCBoYXMgYmVlbiBleHBvcnRlZCB0byBhIGZpbGUgaW4gUEVNIGZvcm1hdCBjYW4gYmUgdmVyaWZpZWQgdXNpbmcKICAgKiBPcGVuU1NMIHVzaW5nIHRoaXMgY29tbWFuZDoKICAgKgogICAqIG9wZW5zc2wgcmVxIC1pbiA8dGhlLWNzci1wZW0tZmlsZT4gLXZlcmlmeSAtbm9vdXQgLXRleHQKICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB2ZXJpZmllZCwgZmFsc2UgaWYgbm90LgogICAqLwogIGNzci52ZXJpZnkgPSBmdW5jdGlvbigpIHsKICAgIHZhciBydmFsID0gZmFsc2U7CgogICAgdmFyIG1kID0gY3NyLm1kOwogICAgaWYobWQgPT09IG51bGwpIHsKICAgICAgLy8gY2hlY2sgc2lnbmF0dXJlIE9JRCBmb3Igc3VwcG9ydGVkIHNpZ25hdHVyZSB0eXBlcwogICAgICBpZihjc3Iuc2lnbmF0dXJlT2lkIGluIG9pZHMpIHsKICAgICAgICAvLyBUT0RPOiBjcmVhdGUgRFJZIGBPSUQgdG8gbWRgIGZ1bmN0aW9uCiAgICAgICAgdmFyIG9pZCA9IG9pZHNbY3NyLnNpZ25hdHVyZU9pZF07CiAgICAgICAgc3dpdGNoKG9pZCkgewogICAgICAgIGNhc2UgJ3NoYTFXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgICBtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdtZDVXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgICBtZCA9IGZvcmdlLm1kLm1kNS5jcmVhdGUoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3NoYTI1NldpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24nOgogICAgICAgICAgbWQgPSBmb3JnZS5tZC5zaGE1MTIuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdSU0FTU0EtUFNTJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmKG1kID09PSBudWxsKSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDb3VsZCBub3QgY29tcHV0ZSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgZGlnZXN0LiAnICsKICAgICAgICAgICdVbmtub3duIHNpZ25hdHVyZSBPSUQuJyk7CiAgICAgICAgZXJyb3Iuc2lnbmF0dXJlT2lkID0gY3NyLnNpZ25hdHVyZU9pZDsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQoKICAgICAgLy8gcHJvZHVjZSBERVIgZm9ybWF0dGVkIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyBhbmQgZGlnZXN0IGl0CiAgICAgIHZhciBjcmkgPSBjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHx8CiAgICAgICAgcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyhjc3IpOwogICAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNyaSk7CiAgICAgIG1kLnVwZGF0ZShieXRlcy5nZXRCeXRlcygpKTsKICAgIH0KCiAgICBpZihtZCAhPT0gbnVsbCkgewogICAgICB2YXIgc2NoZW1lOwoKICAgICAgc3dpdGNoKGNzci5zaWduYXR1cmVPaWQpIHsKICAgICAgY2FzZSBvaWRzLnNoYTFXaXRoUlNBRW5jcnlwdGlvbjoKICAgICAgICAvKiB1c2UgUEtDUyMxIHYxLjUgcGFkZGluZyBzY2hlbWUgKi8KICAgICAgICBicmVhazsKICAgICAgY2FzZSBvaWRzWydSU0FTU0EtUFNTJ106CiAgICAgICAgdmFyIGhhc2gsIG1nZjsKCiAgICAgICAgLyogaW5pdGlhbGl6ZSBtZ2YgKi8KICAgICAgICBoYXNoID0gb2lkc1tjc3Iuc2lnbmF0dXJlUGFyYW1ldGVycy5tZ2YuaGFzaC5hbGdvcml0aG1PaWRdOwogICAgICAgIGlmKGhhc2ggPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZFtoYXNoXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE1HRiBoYXNoIGZ1bmN0aW9uLicpOwogICAgICAgICAgZXJyb3Iub2lkID0gY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmhhc2guYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IGhhc2g7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIG1nZiA9IG9pZHNbY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmFsZ29yaXRobU9pZF07CiAgICAgICAgaWYobWdmID09PSB1bmRlZmluZWQgfHwgZm9yZ2UubWdmW21nZl0gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBNR0YgZnVuY3Rpb24uJyk7CiAgICAgICAgICBlcnJvci5vaWQgPSBjc3Iuc2lnbmF0dXJlUGFyYW1ldGVycy5tZ2YuYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IG1nZjsKICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgIH0KCiAgICAgICAgbWdmID0gZm9yZ2UubWdmW21nZl0uY3JlYXRlKGZvcmdlLm1kW2hhc2hdLmNyZWF0ZSgpKTsKCiAgICAgICAgLyogaW5pdGlhbGl6ZSBoYXNoIGZ1bmN0aW9uICovCiAgICAgICAgaGFzaCA9IG9pZHNbY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMuaGFzaC5hbGdvcml0aG1PaWRdOwogICAgICAgIGlmKGhhc2ggPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZFtoYXNoXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIFJTQVNTQS1QU1MgaGFzaCBmdW5jdGlvbi4nKTsKICAgICAgICAgIGVycm9yLm9pZCA9IGNzci5zaWduYXR1cmVQYXJhbWV0ZXJzLmhhc2guYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IGhhc2g7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIHNjaGVtZSA9IGZvcmdlLnBzcy5jcmVhdGUoZm9yZ2UubWRbaGFzaF0uY3JlYXRlKCksIG1nZiwKICAgICAgICAgIGNzci5zaWduYXR1cmVQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgICAvLyB2ZXJpZnkgc2lnbmF0dXJlIG9uIGNzciB1c2luZyBpdHMgcHVibGljIGtleQogICAgICBydmFsID0gY3NyLnB1YmxpY0tleS52ZXJpZnkoCiAgICAgICAgbWQuZGlnZXN0KCkuZ2V0Qnl0ZXMoKSwgY3NyLnNpZ25hdHVyZSwgc2NoZW1lKTsKICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICByZXR1cm4gY3NyOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFguNTA5IHN1YmplY3Qgb3IgaXNzdWVyIHRvIGFuIEFTTi4xIFJETlNlcXVlbmNlLgogKgogKiBAcGFyYW0gb2JqIHRoZSBzdWJqZWN0IG9yIGlzc3VlciAoZGlzdGluZ3Vpc2hlZCBuYW1lKS4KICoKICogQHJldHVybiB0aGUgQVNOLjEgUkROU2VxdWVuY2UuCiAqLwpmdW5jdGlvbiBfZG5Ub0FzbjEob2JqKSB7CiAgLy8gY3JlYXRlIGFuIGVtcHR5IFJETlNlcXVlbmNlCiAgdmFyIHJ2YWwgPSBhc24xLmNyZWF0ZSgKICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFtdKTsKCiAgLy8gaXRlcmF0ZSBvdmVyIGF0dHJpYnV0ZXMKICB2YXIgYXR0ciwgc2V0OwogIHZhciBhdHRycyA9IG9iai5hdHRyaWJ1dGVzOwogIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkgewogICAgYXR0ciA9IGF0dHJzW2ldOwogICAgdmFyIHZhbHVlID0gYXR0ci52YWx1ZTsKCiAgICAvLyByZXVzZSB0YWcgY2xhc3MgZm9yIGF0dHJpYnV0ZSB2YWx1ZSBpZiBhdmFpbGFibGUKICAgIHZhciB2YWx1ZVRhZ0NsYXNzID0gYXNuMS5UeXBlLlBSSU5UQUJMRVNUUklORzsKICAgIGlmKCd2YWx1ZVRhZ0NsYXNzJyBpbiBhdHRyKSB7CiAgICAgIHZhbHVlVGFnQ2xhc3MgPSBhdHRyLnZhbHVlVGFnQ2xhc3M7CgogICAgICBpZih2YWx1ZVRhZ0NsYXNzID09PSBhc24xLlR5cGUuVVRGOCkgewogICAgICAgIHZhbHVlID0gZm9yZ2UudXRpbC5lbmNvZGVVdGY4KHZhbHVlKTsKICAgICAgfQogICAgICAvLyBGSVhNRTogaGFuZGxlIG1vcmUgZW5jb2RpbmdzCiAgICB9CgogICAgLy8gY3JlYXRlIGEgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSBzZXQKICAgIC8vIGVhY2ggdmFsdWUgaW4gdGhlIHNldCBpcyBhbiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgZmlyc3QKICAgIC8vIGNvbnRhaW5pbmcgdGhlIHR5cGUgKGFuIE9JRCkgYW5kIHNlY29uZCB0aGUgdmFsdWUKICAgIHNldCA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBbCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAvLyBBdHRyaWJ1dGVUeXBlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0RlcihhdHRyLnR5cGUpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIEF0dHJpYnV0ZVZhbHVlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIHZhbHVlVGFnQ2xhc3MsIGZhbHNlLCB2YWx1ZSkKICAgICAgXSkKICAgIF0pOwogICAgcnZhbC52YWx1ZS5wdXNoKHNldCk7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEdldHMgYWxsIHByaW50YWJsZSBhdHRyaWJ1dGVzICh0eXBpY2FsbHkgb2YgYW4gaXNzdWVyIG9yIHN1YmplY3QpIGluIGEKICogc2ltcGxpZmllZCBKU09OIGZvcm1hdCBmb3IgZGlzcGxheS4KICoKICogQHBhcmFtIGF0dHJzIHRoZSBhdHRyaWJ1dGVzLgogKgogKiBAcmV0dXJuIHRoZSBKU09OIGZvciBkaXNwbGF5LgogKi8KZnVuY3Rpb24gX2dldEF0dHJpYnV0ZXNBc0pzb24oYXR0cnMpIHsKICB2YXIgcnZhbCA9IHt9OwogIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkgewogICAgdmFyIGF0dHIgPSBhdHRyc1tpXTsKICAgIGlmKGF0dHIuc2hvcnROYW1lICYmICgKICAgICAgYXR0ci52YWx1ZVRhZ0NsYXNzID09PSBhc24xLlR5cGUuVVRGOCB8fAogICAgICBhdHRyLnZhbHVlVGFnQ2xhc3MgPT09IGFzbjEuVHlwZS5QUklOVEFCTEVTVFJJTkcgfHwKICAgICAgYXR0ci52YWx1ZVRhZ0NsYXNzID09PSBhc24xLlR5cGUuSUE1U1RSSU5HKSkgewogICAgICB2YXIgdmFsdWUgPSBhdHRyLnZhbHVlOwogICAgICBpZihhdHRyLnZhbHVlVGFnQ2xhc3MgPT09IGFzbjEuVHlwZS5VVEY4KSB7CiAgICAgICAgdmFsdWUgPSBmb3JnZS51dGlsLmVuY29kZVV0ZjgoYXR0ci52YWx1ZSk7CiAgICAgIH0KICAgICAgaWYoIShhdHRyLnNob3J0TmFtZSBpbiBydmFsKSkgewogICAgICAgIHJ2YWxbYXR0ci5zaG9ydE5hbWVdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZihmb3JnZS51dGlsLmlzQXJyYXkocnZhbFthdHRyLnNob3J0TmFtZV0pKSB7CiAgICAgICAgcnZhbFthdHRyLnNob3J0TmFtZV0ucHVzaCh2YWx1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcnZhbFthdHRyLnNob3J0TmFtZV0gPSBbcnZhbFthdHRyLnNob3J0TmFtZV0sIHZhbHVlXTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEZpbGxzIGluIG1pc3NpbmcgZmllbGRzIGluIGF0dHJpYnV0ZXMuCiAqCiAqIEBwYXJhbSBhdHRycyB0aGUgYXR0cmlidXRlcyB0byBmaWxsIG1pc3NpbmcgZmllbGRzIGluLgogKi8KZnVuY3Rpb24gX2ZpbGxNaXNzaW5nRmllbGRzKGF0dHJzKSB7CiAgdmFyIGF0dHI7CiAgZm9yKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgKytpKSB7CiAgICBhdHRyID0gYXR0cnNbaV07CgogICAgLy8gcG9wdWxhdGUgbWlzc2luZyBuYW1lCiAgICBpZih0eXBlb2YgYXR0ci5uYW1lID09PSAndW5kZWZpbmVkJykgewogICAgICBpZihhdHRyLnR5cGUgJiYgYXR0ci50eXBlIGluIHBraS5vaWRzKSB7CiAgICAgICAgYXR0ci5uYW1lID0gcGtpLm9pZHNbYXR0ci50eXBlXTsKICAgICAgfSBlbHNlIGlmKGF0dHIuc2hvcnROYW1lICYmIGF0dHIuc2hvcnROYW1lIGluIF9zaG9ydE5hbWVzKSB7CiAgICAgICAgYXR0ci5uYW1lID0gcGtpLm9pZHNbX3Nob3J0TmFtZXNbYXR0ci5zaG9ydE5hbWVdXTsKICAgICAgfQogICAgfQoKICAgIC8vIHBvcHVsYXRlIG1pc3NpbmcgdHlwZSAoT0lEKQogICAgaWYodHlwZW9mIGF0dHIudHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgaWYoYXR0ci5uYW1lICYmIGF0dHIubmFtZSBpbiBwa2kub2lkcykgewogICAgICAgIGF0dHIudHlwZSA9IHBraS5vaWRzW2F0dHIubmFtZV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdBdHRyaWJ1dGUgdHlwZSBub3Qgc3BlY2lmaWVkLicpOwogICAgICAgIGVycm9yLmF0dHJpYnV0ZSA9IGF0dHI7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvLyBwb3B1bGF0ZSBtaXNzaW5nIHNob3J0bmFtZQogICAgaWYodHlwZW9mIGF0dHIuc2hvcnROYW1lID09PSAndW5kZWZpbmVkJykgewogICAgICBpZihhdHRyLm5hbWUgJiYgYXR0ci5uYW1lIGluIF9zaG9ydE5hbWVzKSB7CiAgICAgICAgYXR0ci5zaG9ydE5hbWUgPSBfc2hvcnROYW1lc1thdHRyLm5hbWVdOwogICAgICB9CiAgICB9CgogICAgLy8gY29udmVydCBleHRlbnNpb25zIHRvIHZhbHVlCiAgICBpZihhdHRyLnR5cGUgPT09IG9pZHMuZXh0ZW5zaW9uUmVxdWVzdCkgewogICAgICBhdHRyLnZhbHVlQ29uc3RydWN0ZWQgPSB0cnVlOwogICAgICBhdHRyLnZhbHVlVGFnQ2xhc3MgPSBhc24xLlR5cGUuU0VRVUVOQ0U7CiAgICAgIGlmKCFhdHRyLnZhbHVlICYmIGF0dHIuZXh0ZW5zaW9ucykgewogICAgICAgIGF0dHIudmFsdWUgPSBbXTsKICAgICAgICBmb3IodmFyIGVpID0gMDsgZWkgPCBhdHRyLmV4dGVuc2lvbnMubGVuZ3RoOyArK2VpKSB7CiAgICAgICAgICBhdHRyLnZhbHVlLnB1c2gocGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uVG9Bc24xKAogICAgICAgICAgICBfZmlsbE1pc3NpbmdFeHRlbnNpb25GaWVsZHMoYXR0ci5leHRlbnNpb25zW2VpXSkpKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBpZih0eXBlb2YgYXR0ci52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdBdHRyaWJ1dGUgdmFsdWUgbm90IHNwZWNpZmllZC4nKTsKICAgICAgZXJyb3IuYXR0cmlidXRlID0gYXR0cjsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CiAgfQp9CgovKioKICogRmlsbHMgaW4gbWlzc2luZyBmaWVsZHMgaW4gY2VydGlmaWNhdGUgZXh0ZW5zaW9ucy4KICoKICogQHBhcmFtIGUgdGhlIGV4dGVuc2lvbi4KICogQHBhcmFtIFtvcHRpb25zXSB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIFtjZXJ0XSB0aGUgY2VydGlmaWNhdGUgdGhlIGV4dGVuc2lvbnMgYXJlIGZvci4KICoKICogQHJldHVybiB0aGUgZXh0ZW5zaW9uLgogKi8KZnVuY3Rpb24gX2ZpbGxNaXNzaW5nRXh0ZW5zaW9uRmllbGRzKGUsIG9wdGlvbnMpIHsKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgLy8gcG9wdWxhdGUgbWlzc2luZyBuYW1lCiAgaWYodHlwZW9mIGUubmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGlmKGUuaWQgJiYgZS5pZCBpbiBwa2kub2lkcykgewogICAgICBlLm5hbWUgPSBwa2kub2lkc1tlLmlkXTsKICAgIH0KICB9CgogIC8vIHBvcHVsYXRlIG1pc3NpbmcgaWQKICBpZih0eXBlb2YgZS5pZCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGlmKGUubmFtZSAmJiBlLm5hbWUgaW4gcGtpLm9pZHMpIHsKICAgICAgZS5pZCA9IHBraS5vaWRzW2UubmFtZV07CiAgICB9IGVsc2UgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0V4dGVuc2lvbiBJRCBub3Qgc3BlY2lmaWVkLicpOwogICAgICBlcnJvci5leHRlbnNpb24gPSBlOwogICAgICB0aHJvdyBlcnJvcjsKICAgIH0KICB9CgogIGlmKHR5cGVvZiBlLnZhbHVlICE9PSAndW5kZWZpbmVkJykgewogICAgcmV0dXJuIGU7CiAgfQoKICAvLyBoYW5kbGUgbWlzc2luZyB2YWx1ZToKCiAgLy8gdmFsdWUgaXMgYSBCSVQgU1RSSU5HCiAgaWYoZS5uYW1lID09PSAna2V5VXNhZ2UnKSB7CiAgICAvLyBidWlsZCBmbGFncwogICAgdmFyIHVudXNlZCA9IDA7CiAgICB2YXIgYjIgPSAweDAwOwogICAgdmFyIGIzID0gMHgwMDsKICAgIGlmKGUuZGlnaXRhbFNpZ25hdHVyZSkgewogICAgICBiMiB8PSAweDgwOwogICAgICB1bnVzZWQgPSA3OwogICAgfQogICAgaWYoZS5ub25SZXB1ZGlhdGlvbikgewogICAgICBiMiB8PSAweDQwOwogICAgICB1bnVzZWQgPSA2OwogICAgfQogICAgaWYoZS5rZXlFbmNpcGhlcm1lbnQpIHsKICAgICAgYjIgfD0gMHgyMDsKICAgICAgdW51c2VkID0gNTsKICAgIH0KICAgIGlmKGUuZGF0YUVuY2lwaGVybWVudCkgewogICAgICBiMiB8PSAweDEwOwogICAgICB1bnVzZWQgPSA0OwogICAgfQogICAgaWYoZS5rZXlBZ3JlZW1lbnQpIHsKICAgICAgYjIgfD0gMHgwODsKICAgICAgdW51c2VkID0gMzsKICAgIH0KICAgIGlmKGUua2V5Q2VydFNpZ24pIHsKICAgICAgYjIgfD0gMHgwNDsKICAgICAgdW51c2VkID0gMjsKICAgIH0KICAgIGlmKGUuY1JMU2lnbikgewogICAgICBiMiB8PSAweDAyOwogICAgICB1bnVzZWQgPSAxOwogICAgfQogICAgaWYoZS5lbmNpcGhlck9ubHkpIHsKICAgICAgYjIgfD0gMHgwMTsKICAgICAgdW51c2VkID0gMDsKICAgIH0KICAgIGlmKGUuZGVjaXBoZXJPbmx5KSB7CiAgICAgIGIzIHw9IDB4ODA7CiAgICAgIHVudXNlZCA9IDc7CiAgICB9CgogICAgLy8gY3JlYXRlIGJpdCBzdHJpbmcKICAgIHZhciB2YWx1ZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodW51c2VkKTsKICAgIGlmKGIzICE9PSAwKSB7CiAgICAgIHZhbHVlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYjIpICsgU3RyaW5nLmZyb21DaGFyQ29kZShiMyk7CiAgICB9IGVsc2UgaWYoYjIgIT09IDApIHsKICAgICAgdmFsdWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiMik7CiAgICB9CiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuQklUU1RSSU5HLCBmYWxzZSwgdmFsdWUpOwogIH0gZWxzZSBpZihlLm5hbWUgPT09ICdiYXNpY0NvbnN0cmFpbnRzJykgewogICAgLy8gYmFzaWNDb25zdHJhaW50cyBpcyBhIFNFUVVFTkNFCiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFtdKTsKICAgIC8vIGNBIEJPT0xFQU4gZmxhZyBkZWZhdWx0cyB0byBmYWxzZQogICAgaWYoZS5jQSkgewogICAgICBlLnZhbHVlLnZhbHVlLnB1c2goYXNuMS5jcmVhdGUoCiAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CT09MRUFOLCBmYWxzZSwKICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkYpKSk7CiAgICB9CiAgICBpZigncGF0aExlbkNvbnN0cmFpbnQnIGluIGUpIHsKICAgICAgZS52YWx1ZS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoZS5wYXRoTGVuQ29uc3RyYWludCkuZ2V0Qnl0ZXMoKSkpOwogICAgfQogIH0gZWxzZSBpZihlLm5hbWUgPT09ICdleHRLZXlVc2FnZScpIHsKICAgIC8vIGV4dEtleVVzYWdlIGlzIGEgU0VRVUVOQ0Ugb2YgT0lEcwogICAgZS52YWx1ZSA9IGFzbjEuY3JlYXRlKAogICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CiAgICB2YXIgc2VxID0gZS52YWx1ZS52YWx1ZTsKICAgIGZvcih2YXIga2V5IGluIGUpIHsKICAgICAgaWYoZVtrZXldICE9PSB0cnVlKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgLy8ga2V5IGlzIG5hbWUgaW4gT0lEIG1hcAogICAgICBpZihrZXkgaW4gb2lkcykgewogICAgICAgIHNlcS5wdXNoKGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELAogICAgICAgICAgZmFsc2UsIGFzbjEub2lkVG9EZXIob2lkc1trZXldKS5nZXRCeXRlcygpKSk7CiAgICAgIH0gZWxzZSBpZihrZXkuaW5kZXhPZignLicpICE9PSAtMSkgewogICAgICAgIC8vIGFzc3VtZSBrZXkgaXMgYW4gT0lECiAgICAgICAgc2VxLnB1c2goYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsCiAgICAgICAgICBmYWxzZSwgYXNuMS5vaWRUb0RlcihrZXkpLmdldEJ5dGVzKCkpKTsKICAgICAgfQogICAgfQogIH0gZWxzZSBpZihlLm5hbWUgPT09ICduc0NlcnRUeXBlJykgewogICAgLy8gbnNDZXJ0VHlwZSBpcyBhIEJJVCBTVFJJTkcKICAgIC8vIGJ1aWxkIGZsYWdzCiAgICB2YXIgdW51c2VkID0gMDsKICAgIHZhciBiMiA9IDB4MDA7CgogICAgaWYoZS5jbGllbnQpIHsKICAgICAgYjIgfD0gMHg4MDsKICAgICAgdW51c2VkID0gNzsKICAgIH0KICAgIGlmKGUuc2VydmVyKSB7CiAgICAgIGIyIHw9IDB4NDA7CiAgICAgIHVudXNlZCA9IDY7CiAgICB9CiAgICBpZihlLmVtYWlsKSB7CiAgICAgIGIyIHw9IDB4MjA7CiAgICAgIHVudXNlZCA9IDU7CiAgICB9CiAgICBpZihlLm9ianNpZ24pIHsKICAgICAgYjIgfD0gMHgxMDsKICAgICAgdW51c2VkID0gNDsKICAgIH0KICAgIGlmKGUucmVzZXJ2ZWQpIHsKICAgICAgYjIgfD0gMHgwODsKICAgICAgdW51c2VkID0gMzsKICAgIH0KICAgIGlmKGUuc3NsQ0EpIHsKICAgICAgYjIgfD0gMHgwNDsKICAgICAgdW51c2VkID0gMjsKICAgIH0KICAgIGlmKGUuZW1haWxDQSkgewogICAgICBiMiB8PSAweDAyOwogICAgICB1bnVzZWQgPSAxOwogICAgfQogICAgaWYoZS5vYmpDQSkgewogICAgICBiMiB8PSAweDAxOwogICAgICB1bnVzZWQgPSAwOwogICAgfQoKICAgIC8vIGNyZWF0ZSBiaXQgc3RyaW5nCiAgICB2YXIgdmFsdWUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHVudXNlZCk7CiAgICBpZihiMiAhPT0gMCkgewogICAgICB2YWx1ZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGIyKTsKICAgIH0KICAgIGUudmFsdWUgPSBhc24xLmNyZWF0ZSgKICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CSVRTVFJJTkcsIGZhbHNlLCB2YWx1ZSk7CiAgfSBlbHNlIGlmKGUubmFtZSA9PT0gJ3N1YmplY3RBbHROYW1lJyB8fCBlLm5hbWUgPT09ICdpc3N1ZXJBbHROYW1lJykgewogICAgLy8gU1lOVEFYIFNFUVVFTkNFCiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgW10pOwoKICAgIHZhciBhbHROYW1lOwogICAgZm9yKHZhciBuID0gMDsgbiA8IGUuYWx0TmFtZXMubGVuZ3RoOyArK24pIHsKICAgICAgYWx0TmFtZSA9IGUuYWx0TmFtZXNbbl07CiAgICAgIHZhciB2YWx1ZSA9IGFsdE5hbWUudmFsdWU7CiAgICAgIC8vIGhhbmRsZSBJUAogICAgICBpZihhbHROYW1lLnR5cGUgPT09IDcgJiYgYWx0TmFtZS5pcCkgewogICAgICAgIHZhbHVlID0gZm9yZ2UudXRpbC5ieXRlc0Zyb21JUChhbHROYW1lLmlwKTsKICAgICAgICBpZih2YWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKAogICAgICAgICAgICAnRXh0ZW5zaW9uICJpcCIgdmFsdWUgaXMgbm90IGEgdmFsaWQgSVB2NCBvciBJUHY2IGFkZHJlc3MuJyk7CiAgICAgICAgICBlcnJvci5leHRlbnNpb24gPSBlOwogICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYoYWx0TmFtZS50eXBlID09PSA4KSB7CiAgICAgICAgLy8gaGFuZGxlIE9JRAogICAgICAgIGlmKGFsdE5hbWUub2lkKSB7CiAgICAgICAgICB2YWx1ZSA9IGFzbjEub2lkVG9EZXIoYXNuMS5vaWRUb0RlcihhbHROYW1lLm9pZCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBkZXByZWNhdGVkIC4uLiBjb252ZXJ0IHZhbHVlIHRvIE9JRAogICAgICAgICAgdmFsdWUgPSBhc24xLm9pZFRvRGVyKHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZS52YWx1ZS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgYWx0TmFtZS50eXBlLCBmYWxzZSwKICAgICAgICB2YWx1ZSkpOwogICAgfQogIH0gZWxzZSBpZihlLm5hbWUgPT09ICdzdWJqZWN0S2V5SWRlbnRpZmllcicgJiYgb3B0aW9ucy5jZXJ0KSB7CiAgICB2YXIgc2tpID0gb3B0aW9ucy5jZXJ0LmdlbmVyYXRlU3ViamVjdEtleUlkZW50aWZpZXIoKTsKICAgIGUuc3ViamVjdEtleUlkZW50aWZpZXIgPSBza2kudG9IZXgoKTsKICAgIC8vIE9DVEVUU1RSSU5HIHcvZGlnZXN0CiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLCBza2kuZ2V0Qnl0ZXMoKSk7CiAgfQoKICAvLyBlbnN1cmUgdmFsdWUgaGFzIGJlZW4gZGVmaW5lZCBieSBub3cKICBpZih0eXBlb2YgZS52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignRXh0ZW5zaW9uIHZhbHVlIG5vdCBzcGVjaWZpZWQuJyk7CiAgICBlcnJvci5leHRlbnNpb24gPSBlOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICByZXR1cm4gZTsKfQoKLyoqCiAqIENvbnZlcnQgc2lnbmF0dXJlIHBhcmFtZXRlcnMgb2JqZWN0IHRvIEFTTi4xCiAqCiAqIEBwYXJhbSB7U3RyaW5nfSBvaWQgU2lnbmF0dXJlIGFsZ29yaXRobSBPSUQKICogQHBhcmFtIHBhcmFtcyBUaGUgc2lnbmF0dXJlIHBhcmFtZXRycyBvYmplY3QKICogQHJldHVybiBBU04uMSBvYmplY3QgcmVwcmVzZW50aW5nIHNpZ25hdHVyZSBwYXJhbWV0ZXJzCiAqLwpmdW5jdGlvbiBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMShvaWQsIHBhcmFtcykgewogIHN3aXRjaChvaWQpIHsKICBjYXNlIG9pZHNbJ1JTQVNTQS1QU1MnXToKICAgIHZhciBwYXJ0cyA9IFtdOwoKICAgIGlmKHBhcmFtcy5oYXNoLmFsZ29yaXRobU9pZCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgIHBhcnRzLnB1c2goYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgICBhc24xLm9pZFRvRGVyKHBhcmFtcy5oYXNoLmFsZ29yaXRobU9pZCkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICBdKQogICAgICBdKSk7CiAgICB9CgogICAgaWYocGFyYW1zLm1nZi5hbGdvcml0aG1PaWQgIT09IHVuZGVmaW5lZCkgewogICAgICBwYXJ0cy5wdXNoKGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMSwgdHJ1ZSwgWwogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgYXNuMS5vaWRUb0RlcihwYXJhbXMubWdmLmFsZ29yaXRobU9pZCkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgICBhc24xLm9pZFRvRGVyKHBhcmFtcy5tZ2YuaGFzaC5hbGdvcml0aG1PaWQpLmdldEJ5dGVzKCkpLAogICAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICAgIF0pCiAgICAgICAgXSkKICAgICAgXSkpOwogICAgfQoKICAgIGlmKHBhcmFtcy5zYWx0TGVuZ3RoICE9PSB1bmRlZmluZWQpIHsKICAgICAgcGFydHMucHVzaChhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDIsIHRydWUsIFsKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIocGFyYW1zLnNhbHRMZW5ndGgpLmdldEJ5dGVzKCkpCiAgICAgIF0pKTsKICAgIH0KCiAgICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgcGFydHMpOwoKICBkZWZhdWx0OgogICAgcmV0dXJuIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuTlVMTCwgZmFsc2UsICcnKTsKICB9Cn0KCi8qKgogKiBDb252ZXJ0cyBhIGNlcnRpZmljYXRpb24gcmVxdWVzdCdzIGF0dHJpYnV0ZXMgdG8gYW4gQVNOLjEgc2V0IG9mCiAqIENSSUF0dHJpYnV0ZXMuCiAqCiAqIEBwYXJhbSBjc3IgY2VydGlmaWNhdGlvbiByZXF1ZXN0LgogKgogKiBAcmV0dXJuIHRoZSBBU04uMSBzZXQgb2YgQ1JJQXR0cmlidXRlcy4KICovCmZ1bmN0aW9uIF9DUklBdHRyaWJ1dGVzVG9Bc24xKGNzcikgewogIC8vIGNyZWF0ZSBhbiBlbXB0eSBjb250ZXh0LXNwZWNpZmljIGNvbnRhaW5lcgogIHZhciBydmFsID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbXSk7CgogIC8vIG5vIGF0dHJpYnV0ZXMsIHJldHVybiBlbXB0eSBjb250YWluZXIKICBpZihjc3IuYXR0cmlidXRlcy5sZW5ndGggPT09IDApIHsKICAgIHJldHVybiBydmFsOwogIH0KCiAgLy8gZWFjaCBhdHRyaWJ1dGUgaGFzIGEgc2VxdWVuY2Ugd2l0aCBhIHR5cGUgYW5kIGEgc2V0IG9mIHZhbHVlcwogIHZhciBhdHRycyA9IGNzci5hdHRyaWJ1dGVzOwogIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkgewogICAgdmFyIGF0dHIgPSBhdHRyc1tpXTsKICAgIHZhciB2YWx1ZSA9IGF0dHIudmFsdWU7CgogICAgLy8gcmV1c2UgdGFnIGNsYXNzIGZvciBhdHRyaWJ1dGUgdmFsdWUgaWYgYXZhaWxhYmxlCiAgICB2YXIgdmFsdWVUYWdDbGFzcyA9IGFzbjEuVHlwZS5VVEY4OwogICAgaWYoJ3ZhbHVlVGFnQ2xhc3MnIGluIGF0dHIpIHsKICAgICAgdmFsdWVUYWdDbGFzcyA9IGF0dHIudmFsdWVUYWdDbGFzczsKICAgIH0KICAgIGlmKHZhbHVlVGFnQ2xhc3MgPT09IGFzbjEuVHlwZS5VVEY4KSB7CiAgICAgIHZhbHVlID0gZm9yZ2UudXRpbC5lbmNvZGVVdGY4KHZhbHVlKTsKICAgIH0KICAgIHZhciB2YWx1ZUNvbnN0cnVjdGVkID0gZmFsc2U7CiAgICBpZigndmFsdWVDb25zdHJ1Y3RlZCcgaW4gYXR0cikgewogICAgICB2YWx1ZUNvbnN0cnVjdGVkID0gYXR0ci52YWx1ZUNvbnN0cnVjdGVkOwogICAgfQogICAgLy8gRklYTUU6IGhhbmRsZSBtb3JlIGVuY29kaW5ncwoKICAgIC8vIGNyZWF0ZSBhIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgc2V0CiAgICAvLyBlYWNoIHZhbHVlIGluIHRoZSBzZXQgaXMgYW4gQXR0cmlidXRlVHlwZUFuZFZhbHVlIGZpcnN0CiAgICAvLyBjb250YWluaW5nIHRoZSB0eXBlIChhbiBPSUQpIGFuZCBzZWNvbmQgdGhlIHZhbHVlCiAgICB2YXIgc2VxID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBBdHRyaWJ1dGVUeXBlCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKGF0dHIudHlwZSkuZ2V0Qnl0ZXMoKSksCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBbCiAgICAgICAgLy8gQXR0cmlidXRlVmFsdWUKICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCB2YWx1ZVRhZ0NsYXNzLCB2YWx1ZUNvbnN0cnVjdGVkLCB2YWx1ZSkKICAgICAgXSkKICAgIF0pOwogICAgcnZhbC52YWx1ZS5wdXNoKHNlcSk7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEdldHMgdGhlIEFTTi4xIFRCU0NlcnRpZmljYXRlIHBhcnQgb2YgYW4gWC41MDl2MyBjZXJ0aWZpY2F0ZS4KICoKICogQHBhcmFtIGNlcnQgdGhlIGNlcnRpZmljYXRlLgogKgogKiBAcmV0dXJuIHRoZSBhc24xIFRCU0NlcnRpZmljYXRlLgogKi8KcGtpLmdldFRCU0NlcnRpZmljYXRlID0gZnVuY3Rpb24oY2VydCkgewogIC8vIFRCU0NlcnRpZmljYXRlCiAgdmFyIHRicyA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIHZlcnNpb24KICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICAvLyBpbnRlZ2VyCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoY2VydC52ZXJzaW9uKS5nZXRCeXRlcygpKQogICAgXSksCiAgICAvLyBzZXJpYWxOdW1iZXIKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIGZvcmdlLnV0aWwuaGV4VG9CeXRlcyhjZXJ0LnNlcmlhbE51bWJlcikpLAogICAgLy8gc2lnbmF0dXJlCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihjZXJ0LnNpZ2luZm8uYWxnb3JpdGhtT2lkKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycwogICAgICBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMSgKICAgICAgICBjZXJ0LnNpZ2luZm8uYWxnb3JpdGhtT2lkLCBjZXJ0LnNpZ2luZm8ucGFyYW1ldGVycykKICAgIF0pLAogICAgLy8gaXNzdWVyCiAgICBfZG5Ub0FzbjEoY2VydC5pc3N1ZXIpLAogICAgLy8gdmFsaWRpdHkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgLy8gbm90QmVmb3JlCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuVVRDVElNRSwgZmFsc2UsCiAgICAgICAgYXNuMS5kYXRlVG9VdGNUaW1lKGNlcnQudmFsaWRpdHkubm90QmVmb3JlKSksCiAgICAgIC8vIG5vdEFmdGVyCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuVVRDVElNRSwgZmFsc2UsCiAgICAgICAgYXNuMS5kYXRlVG9VdGNUaW1lKGNlcnQudmFsaWRpdHkubm90QWZ0ZXIpKQogICAgXSksCiAgICAvLyBzdWJqZWN0CiAgICBfZG5Ub0FzbjEoY2VydC5zdWJqZWN0KSwKICAgIC8vIFN1YmplY3RQdWJsaWNLZXlJbmZvCiAgICBwa2kucHVibGljS2V5VG9Bc24xKGNlcnQucHVibGljS2V5KQogIF0pOwoKICBpZihjZXJ0Lmlzc3Vlci51bmlxdWVJZCkgewogICAgLy8gaXNzdWVyVW5pcXVlSUQgKG9wdGlvbmFsKQogICAgdGJzLnZhbHVlLnB1c2goCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMSwgdHJ1ZSwgWwogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuQklUU1RSSU5HLCBmYWxzZSwKICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMCkgKwogICAgICAgICAgY2VydC5pc3N1ZXIudW5pcXVlSWQKICAgICAgICApCiAgICAgIF0pCiAgICApOwogIH0KICBpZihjZXJ0LnN1YmplY3QudW5pcXVlSWQpIHsKICAgIC8vIHN1YmplY3RVbmlxdWVJRCAob3B0aW9uYWwpCiAgICB0YnMudmFsdWUucHVzaCgKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAyLCB0cnVlLCBbCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CSVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwKSArCiAgICAgICAgICBjZXJ0LnN1YmplY3QudW5pcXVlSWQKICAgICAgICApCiAgICAgIF0pCiAgICApOwogIH0KCiAgaWYoY2VydC5leHRlbnNpb25zLmxlbmd0aCA+IDApIHsKICAgIC8vIGV4dGVuc2lvbnMgKG9wdGlvbmFsKQogICAgdGJzLnZhbHVlLnB1c2gocGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uc1RvQXNuMShjZXJ0LmV4dGVuc2lvbnMpKTsKICB9CgogIHJldHVybiB0YnM7Cn07CgovKioKICogR2V0cyB0aGUgQVNOLjEgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHBhcnQgb2YgYQogKiBQS0NTIzEwIENlcnRpZmljYXRpb25SZXF1ZXN0LgogKgogKiBAcGFyYW0gY3NyIHRoZSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAqCiAqIEByZXR1cm4gdGhlIGFzbjEgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLgogKi8KcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyA9IGZ1bmN0aW9uKGNzcikgewogIC8vIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbwogIHZhciBjcmkgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyB2ZXJzaW9uCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBhc24xLmludGVnZXJUb0Rlcihjc3IudmVyc2lvbikuZ2V0Qnl0ZXMoKSksCiAgICAvLyBzdWJqZWN0CiAgICBfZG5Ub0FzbjEoY3NyLnN1YmplY3QpLAogICAgLy8gU3ViamVjdFB1YmxpY0tleUluZm8KICAgIHBraS5wdWJsaWNLZXlUb0FzbjEoY3NyLnB1YmxpY0tleSksCiAgICAvLyBhdHRyaWJ1dGVzCiAgICBfQ1JJQXR0cmlidXRlc1RvQXNuMShjc3IpCiAgXSk7CgogIHJldHVybiBjcmk7Cn07CgovKioKICogQ29udmVydHMgYSBEaXN0aW5ndWlzaGVkTmFtZSAoc3ViamVjdCBvciBpc3N1ZXIpIHRvIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIGRuIHRoZSBEaXN0aW5ndWlzaGVkTmFtZS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIERpc3Rpbmd1aXNoZWROYW1lLgogKi8KcGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xID0gZnVuY3Rpb24oZG4pIHsKICByZXR1cm4gX2RuVG9Bc24xKGRuKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBYLjUwOXYzIFJTQSBjZXJ0aWZpY2F0ZSB0byBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhbiBYLjUwOXYzIFJTQSBjZXJ0aWZpY2F0ZS4KICovCnBraS5jZXJ0aWZpY2F0ZVRvQXNuMSA9IGZ1bmN0aW9uKGNlcnQpIHsKICAvLyBwcmVmZXIgY2FjaGVkIFRCU0NlcnRpZmljYXRlIG92ZXIgZ2VuZXJhdGluZyBvbmUKICB2YXIgdGJzQ2VydGlmaWNhdGUgPSBjZXJ0LnRic0NlcnRpZmljYXRlIHx8IHBraS5nZXRUQlNDZXJ0aWZpY2F0ZShjZXJ0KTsKCiAgLy8gQ2VydGlmaWNhdGUKICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gVEJTQ2VydGlmaWNhdGUKICAgIHRic0NlcnRpZmljYXRlLAogICAgLy8gQWxnb3JpdGhtSWRlbnRpZmllciAoc2lnbmF0dXJlIGFsZ29yaXRobSkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgLy8gYWxnb3JpdGhtCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKGNlcnQuc2lnbmF0dXJlT2lkKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycwogICAgICBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMShjZXJ0LnNpZ25hdHVyZU9pZCwgY2VydC5zaWduYXR1cmVQYXJhbWV0ZXJzKQogICAgXSksCiAgICAvLyBTaWduYXR1cmVWYWx1ZQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CSVRTVFJJTkcsIGZhbHNlLAogICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDApICsgY2VydC5zaWduYXR1cmUpCiAgXSk7Cn07CgovKioKICogQ29udmVydHMgWC41MDl2MyBjZXJ0aWZpY2F0ZSBleHRlbnNpb25zIHRvIEFTTi4xLgogKgogKiBAcGFyYW0gZXh0cyB0aGUgZXh0ZW5zaW9ucyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBleHRlbnNpb25zIGluIEFTTi4xIGZvcm1hdC4KICovCnBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvbnNUb0FzbjEgPSBmdW5jdGlvbihleHRzKSB7CiAgLy8gY3JlYXRlIHRvcC1sZXZlbCBleHRlbnNpb24gY29udGFpbmVyCiAgdmFyIHJ2YWwgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDMsIHRydWUsIFtdKTsKCiAgLy8gY3JlYXRlIGV4dGVuc2lvbiBzZXF1ZW5jZSAoc3RvcmVzIGEgc2VxdWVuY2UgZm9yIGVhY2ggZXh0ZW5zaW9uKQogIHZhciBzZXEgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CiAgcnZhbC52YWx1ZS5wdXNoKHNlcSk7CgogIGZvcih2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgKytpKSB7CiAgICBzZXEudmFsdWUucHVzaChwa2kuY2VydGlmaWNhdGVFeHRlbnNpb25Ub0FzbjEoZXh0c1tpXSkpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgYSBzaW5nbGUgY2VydGlmaWNhdGUgZXh0ZW5zaW9uIHRvIEFTTi4xLgogKgogKiBAcGFyYW0gZXh0IHRoZSBleHRlbnNpb24gdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgZXh0ZW5zaW9uIGluIEFTTi4xIGZvcm1hdC4KICovCnBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvblRvQXNuMSA9IGZ1bmN0aW9uKGV4dCkgewogIC8vIGNyZWF0ZSBhIHNlcXVlbmNlIGZvciBlYWNoIGV4dGVuc2lvbgogIHZhciBleHRzZXEgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CgogIC8vIGV4dG5JRCAoT0lEKQogIGV4dHNlcS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgYXNuMS5vaWRUb0RlcihleHQuaWQpLmdldEJ5dGVzKCkpKTsKCiAgLy8gY3JpdGljYWwgZGVmYXVsdHMgdG8gZmFsc2UKICBpZihleHQuY3JpdGljYWwpIHsKICAgIC8vIGNyaXRpY2FsIEJPT0xFQU4gREVGQVVMVCBGQUxTRQogICAgZXh0c2VxLnZhbHVlLnB1c2goYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuQk9PTEVBTiwgZmFsc2UsCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRikpKTsKICB9CgogIHZhciB2YWx1ZSA9IGV4dC52YWx1ZTsKICBpZih0eXBlb2YgZXh0LnZhbHVlICE9PSAnc3RyaW5nJykgewogICAgLy8gdmFsdWUgaXMgYXNuLjEKICAgIHZhbHVlID0gYXNuMS50b0Rlcih2YWx1ZSkuZ2V0Qnl0ZXMoKTsKICB9CgogIC8vIGV4dG5WYWx1ZSAoT0NURVQgU1RSSU5HKQogIGV4dHNlcS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIHZhbHVlKSk7CgogIHJldHVybiBleHRzZXE7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzEwIGNlcnRpZmljYXRpb24gcmVxdWVzdCB0byBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBjc3IgdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdC4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIGNlcnRpZmljYXRpb24gcmVxdWVzdC4KICovCnBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdFRvQXNuMSA9IGZ1bmN0aW9uKGNzcikgewogIC8vIHByZWZlciBjYWNoZWQgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIG92ZXIgZ2VuZXJhdGluZyBvbmUKICB2YXIgY3JpID0gY3NyLmNlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyB8fAogICAgcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyhjc3IpOwoKICAvLyBDZXJ0aWZpY2F0ZQogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8KICAgIGNyaSwKICAgIC8vIEFsZ29yaXRobUlkZW50aWZpZXIgKHNpZ25hdHVyZSBhbGdvcml0aG0pCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0Rlcihjc3Iuc2lnbmF0dXJlT2lkKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycwogICAgICBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMShjc3Iuc2lnbmF0dXJlT2lkLCBjc3Iuc2lnbmF0dXJlUGFyYW1ldGVycykKICAgIF0pLAogICAgLy8gc2lnbmF0dXJlCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLkJJVFNUUklORywgZmFsc2UsCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMCkgKyBjc3Iuc2lnbmF0dXJlKQogIF0pOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBDQSBzdG9yZS4KICoKICogQHBhcmFtIGNlcnRzIGFuIG9wdGlvbmFsIGFycmF5IG9mIGNlcnRpZmljYXRlIG9iamVjdHMgb3IgUEVNLWZvcm1hdHRlZAogKiAgICAgICAgICBjZXJ0aWZpY2F0ZSBzdHJpbmdzIHRvIGFkZCB0byB0aGUgQ0Egc3RvcmUuCiAqCiAqIEByZXR1cm4gdGhlIENBIHN0b3JlLgogKi8KcGtpLmNyZWF0ZUNhU3RvcmUgPSBmdW5jdGlvbihjZXJ0cykgewogIC8vIGNyZWF0ZSBDQSBzdG9yZQogIHZhciBjYVN0b3JlID0gewogICAgLy8gc3RvcmVkIGNlcnRpZmljYXRlcwogICAgY2VydHM6IHt9CiAgfTsKCiAgLyoqCiAgICogR2V0cyB0aGUgY2VydGlmaWNhdGUgdGhhdCBpc3N1ZWQgdGhlIHBhc3NlZCBjZXJ0aWZpY2F0ZSBvciBpdHMKICAgKiAncGFyZW50Jy4KICAgKgogICAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZSB0byBnZXQgdGhlIHBhcmVudCBmb3IuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBwYXJlbnQgY2VydGlmaWNhdGUgb3IgbnVsbCBpZiBub25lIHdhcyBmb3VuZC4KICAgKi8KICBjYVN0b3JlLmdldElzc3VlciA9IGZ1bmN0aW9uKGNlcnQpIHsKICAgIHZhciBydmFsID0gZ2V0QnlTdWJqZWN0KGNlcnQuaXNzdWVyKTsKCiAgICAvLyBzZWUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMKICAgIC8qaWYoZm9yZ2UudXRpbC5pc0FycmF5KHJ2YWwpKSB7CiAgICAgIC8vIFRPRE86IHJlc29sdmUgbXVsdGlwbGUgbWF0Y2hlcyBieSBjaGVja2luZwogICAgICAvLyBhdXRob3JpdHlLZXkvc3ViamVjdEtleS9pc3N1ZXJVbmlxdWVJRC9vdGhlciBpZGVudGlmaWVycywgZXRjLgogICAgICAvLyBGSVhNRTogb3IgYWx0ZXJuYXRpdmVseSBkbyBhdXRob3JpdHkga2V5IG1hcHBpbmcKICAgICAgLy8gaWYgcG9zc2libGUgKFguNTA5djEgY2VydHMgY2FuJ3Qgd29yaz8pCiAgICAgIHRocm93IG5ldyBFcnJvcignUmVzb2x2aW5nIG11bHRpcGxlIGlzc3VlciBtYXRjaGVzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJyk7CiAgICB9Ki8KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBBZGRzIGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0byB0aGUgc3RvcmUuCiAgICoKICAgKiBAcGFyYW0gY2VydCB0aGUgY2VydGlmaWNhdGUgdG8gYWRkIGFzIGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSAoZWl0aGVyIGEKICAgKiAgICAgICAgICBwa2kuY2VydGlmaWNhdGUgb2JqZWN0IG9yIGEgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZSkuCiAgICovCiAgY2FTdG9yZS5hZGRDZXJ0aWZpY2F0ZSA9IGZ1bmN0aW9uKGNlcnQpIHsKICAgIC8vIGNvbnZlcnQgZnJvbSBwZW0gaWYgbmVjZXNzYXJ5CiAgICBpZih0eXBlb2YgY2VydCA9PT0gJ3N0cmluZycpIHsKICAgICAgY2VydCA9IGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUZyb21QZW0oY2VydCk7CiAgICB9CgogICAgLy8gcHJvZHVjZSBzdWJqZWN0IGhhc2ggaWYgaXQgZG9lc24ndCBleGlzdAogICAgaWYoIWNlcnQuc3ViamVjdC5oYXNoKSB7CiAgICAgIHZhciBtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgIGNlcnQuc3ViamVjdC5hdHRyaWJ1dGVzID0gIHBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheSgKICAgICAgICBfZG5Ub0FzbjEoY2VydC5zdWJqZWN0KSwgbWQpOwogICAgICBjZXJ0LnN1YmplY3QuaGFzaCA9IG1kLmRpZ2VzdCgpLnRvSGV4KCk7CiAgICB9CgogICAgaWYoY2VydC5zdWJqZWN0Lmhhc2ggaW4gY2FTdG9yZS5jZXJ0cykgewogICAgICAvLyBzdWJqZWN0IGhhc2ggYWxyZWFkeSBleGlzdHMsIGFwcGVuZCB0byBhcnJheQogICAgICB2YXIgdG1wID0gY2FTdG9yZS5jZXJ0c1tjZXJ0LnN1YmplY3QuaGFzaF07CiAgICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkodG1wKSkgewogICAgICAgIHRtcCA9IFt0bXBdOwogICAgICB9CiAgICAgIHRtcC5wdXNoKGNlcnQpOwogICAgfSBlbHNlIHsKICAgICAgY2FTdG9yZS5jZXJ0c1tjZXJ0LnN1YmplY3QuaGFzaF0gPSBjZXJ0OwogICAgfQogIH07CgogIC8qKgogICAqIENoZWNrcyB0byBzZWUgaWYgdGhlIGdpdmVuIGNlcnRpZmljYXRlIGlzIGluIHRoZSBzdG9yZS4KICAgKgogICAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZSB0byBjaGVjay4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMgaW4gdGhlIHN0b3JlLCBmYWxzZSBpZiBub3QuCiAgICovCiAgY2FTdG9yZS5oYXNDZXJ0aWZpY2F0ZSA9IGZ1bmN0aW9uKGNlcnQpIHsKICAgIHZhciBtYXRjaCA9IGdldEJ5U3ViamVjdChjZXJ0LnN1YmplY3QpOwogICAgaWYoIW1hdGNoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkobWF0Y2gpKSB7CiAgICAgIG1hdGNoID0gW21hdGNoXTsKICAgIH0KICAgIC8vIGNvbXBhcmUgREVSLWVuY29kaW5nIG9mIGNlcnRpZmljYXRlcwogICAgdmFyIGRlcjEgPSBhc24xLnRvRGVyKHBraS5jZXJ0aWZpY2F0ZVRvQXNuMShjZXJ0KSkuZ2V0Qnl0ZXMoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtYXRjaC5sZW5ndGg7ICsraSkgewogICAgICB2YXIgZGVyMiA9IGFzbjEudG9EZXIocGtpLmNlcnRpZmljYXRlVG9Bc24xKG1hdGNoW2ldKSkuZ2V0Qnl0ZXMoKTsKICAgICAgaWYoZGVyMSA9PT0gZGVyMikgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKCiAgZnVuY3Rpb24gZ2V0QnlTdWJqZWN0KHN1YmplY3QpIHsKICAgIC8vIHByb2R1Y2Ugc3ViamVjdCBoYXNoIGlmIGl0IGRvZXNuJ3QgZXhpc3QKICAgIGlmKCFzdWJqZWN0Lmhhc2gpIHsKICAgICAgdmFyIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgICAgc3ViamVjdC5hdHRyaWJ1dGVzID0gIHBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheShfZG5Ub0FzbjEoc3ViamVjdCksIG1kKTsKICAgICAgc3ViamVjdC5oYXNoID0gbWQuZGlnZXN0KCkudG9IZXgoKTsKICAgIH0KICAgIHJldHVybiBjYVN0b3JlLmNlcnRzW3N1YmplY3QuaGFzaF0gfHwgbnVsbDsKICB9CgogIC8vIGF1dG8tYWRkIHBhc3NlZCBpbiBjZXJ0cwogIGlmKGNlcnRzKSB7CiAgICAvLyBwYXJzZSBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlcyBhcyBuZWNlc3NhcnkKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjZXJ0cy5sZW5ndGg7ICsraSkgewogICAgICB2YXIgY2VydCA9IGNlcnRzW2ldOwogICAgICBjYVN0b3JlLmFkZENlcnRpZmljYXRlKGNlcnQpOwogICAgfQogIH0KCiAgcmV0dXJuIGNhU3RvcmU7Cn07CgovKioKICogQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGVycm9ycywgYmFzZWQgb24gVExTLgogKi8KcGtpLmNlcnRpZmljYXRlRXJyb3IgPSB7CiAgYmFkX2NlcnRpZmljYXRlOiAnZm9yZ2UucGtpLkJhZENlcnRpZmljYXRlJywKICB1bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTogJ2ZvcmdlLnBraS5VbnN1cHBvcnRlZENlcnRpZmljYXRlJywKICBjZXJ0aWZpY2F0ZV9yZXZva2VkOiAnZm9yZ2UucGtpLkNlcnRpZmljYXRlUmV2b2tlZCcsCiAgY2VydGlmaWNhdGVfZXhwaXJlZDogJ2ZvcmdlLnBraS5DZXJ0aWZpY2F0ZUV4cGlyZWQnLAogIGNlcnRpZmljYXRlX3Vua25vd246ICdmb3JnZS5wa2kuQ2VydGlmaWNhdGVVbmtub3duJywKICB1bmtub3duX2NhOiAnZm9yZ2UucGtpLlVua25vd25DZXJ0aWZpY2F0ZUF1dGhvcml0eScKfTsKCi8qKgogKiBWZXJpZmllcyBhIGNlcnRpZmljYXRlIGNoYWluIGFnYWluc3QgdGhlIGdpdmVuIENlcnRpZmljYXRlIEF1dGhvcml0eSBzdG9yZQogKiB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSB2ZXJpZnkgY2FsbGJhY2suCiAqCiAqIEBwYXJhbSBjYVN0b3JlIGEgY2VydGlmaWNhdGUgc3RvcmUgdG8gdmVyaWZ5IGFnYWluc3QuCiAqIEBwYXJhbSBjaGFpbiB0aGUgY2VydGlmaWNhdGUgY2hhaW4gdG8gdmVyaWZ5LCB3aXRoIHRoZSByb290IG9yIGhpZ2hlc3QKICogICAgICAgICAgYXV0aG9yaXR5IGF0IHRoZSBlbmQgKGFuIGFycmF5IG9mIGNlcnRpZmljYXRlcykuCiAqIEBwYXJhbSB2ZXJpZnkgY2FsbGVkIGZvciBldmVyeSBjZXJ0aWZpY2F0ZSBpbiB0aGUgY2hhaW4uCiAqCiAqIFRoZSB2ZXJpZnkgY2FsbGJhY2sgaGFzIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOgogKgogKiB2ZXJpZmllZCAtIFNldCB0byB0cnVlIGlmIGNlcnRpZmljYXRlIHdhcyB2ZXJpZmllZCwgb3RoZXJ3aXNlIHRoZQogKiAgIHBraS5jZXJ0aWZpY2F0ZUVycm9yIGZvciB3aHkgdGhlIGNlcnRpZmljYXRlIGZhaWxlZC4KICogZGVwdGggLSBUaGUgY3VycmVudCBpbmRleCBpbiB0aGUgY2hhaW4sIHdoZXJlIDAgaXMgdGhlIGVuZCBwb2ludCdzIGNlcnQuCiAqIGNlcnRzIC0gVGhlIGNlcnRpZmljYXRlIGNoYWluLCAqTk9URSogYW4gZW1wdHkgY2hhaW4gaW5kaWNhdGVzIGFuIGFub255bW91cwogKiAgIGVuZCBwb2ludC4KICoKICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIGFuZCBvbiBmYWlsdXJlIGVpdGhlciB0aGUgYXBwcm9wcmlhdGUKICogcGtpLmNlcnRpZmljYXRlRXJyb3Igb3IgYW4gb2JqZWN0IHdpdGggJ2Vycm9yJyBzZXQgdG8gdGhlIGFwcHJvcHJpYXRlCiAqIHBraS5jZXJ0aWZpY2F0ZUVycm9yIGFuZCAnbWVzc2FnZScgc2V0IHRvIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLCBlcnJvciB0aHJvd24gaWYgbm90LgogKi8KcGtpLnZlcmlmeUNlcnRpZmljYXRlQ2hhaW4gPSBmdW5jdGlvbihjYVN0b3JlLCBjaGFpbiwgdmVyaWZ5KSB7CiAgLyogRnJvbTogUkZDMzI4MCAtIEludGVybmV0IFguNTA5IFB1YmxpYyBLZXkgSW5mcmFzdHJ1Y3R1cmUgQ2VydGlmaWNhdGUKICAgIFNlY3Rpb24gNjogQ2VydGlmaWNhdGlvbiBQYXRoIFZhbGlkYXRpb24KICAgIFNlZSBpbmxpbmUgcGFyZW50aGV0aWNhbHMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24uCgogICAgVGhlIHByaW1hcnkgZ29hbCBvZiBwYXRoIHZhbGlkYXRpb24gaXMgdG8gdmVyaWZ5IHRoZSBiaW5kaW5nIGJldHdlZW4KICAgIGEgc3ViamVjdCBkaXN0aW5ndWlzaGVkIG5hbWUgb3IgYSBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUgYW5kIHN1YmplY3QKICAgIHB1YmxpYyBrZXksIGFzIHJlcHJlc2VudGVkIGluIHRoZSBlbmQgZW50aXR5IGNlcnRpZmljYXRlLCBiYXNlZCBvbiB0aGUKICAgIHB1YmxpYyBrZXkgb2YgdGhlIHRydXN0IGFuY2hvci4gVGhpcyByZXF1aXJlcyBvYnRhaW5pbmcgYSBzZXF1ZW5jZSBvZgogICAgY2VydGlmaWNhdGVzIHRoYXQgc3VwcG9ydCB0aGF0IGJpbmRpbmcuIFRoYXQgc2VxdWVuY2Ugc2hvdWxkIGJlIHByb3ZpZGVkCiAgICBpbiB0aGUgcGFzc2VkICdjaGFpbicuIFRoZSB0cnVzdCBhbmNob3Igc2hvdWxkIGJlIGluIHRoZSBnaXZlbiBDQQogICAgc3RvcmUuIFRoZSAnZW5kIGVudGl0eScgY2VydGlmaWNhdGUgaXMgdGhlIGNlcnRpZmljYXRlIHByb3ZpZGVkIGJ5IHRoZQogICAgZW5kIHBvaW50ICh0eXBpY2FsbHkgYSBzZXJ2ZXIpIGFuZCBpcyB0aGUgZmlyc3QgaW4gdGhlIGNoYWluLgoKICAgIFRvIG1lZXQgdGhpcyBnb2FsLCB0aGUgcGF0aCB2YWxpZGF0aW9uIHByb2Nlc3MgdmVyaWZpZXMsIGFtb25nIG90aGVyCiAgICB0aGluZ3MsIHRoYXQgYSBwcm9zcGVjdGl2ZSBjZXJ0aWZpY2F0aW9uIHBhdGggKGEgc2VxdWVuY2Ugb2YgbgogICAgY2VydGlmaWNhdGVzIG9yIGEgJ2NoYWluJykgc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAoYSkgZm9yIGFsbCB4IGluIHsxLCAuLi4sIG4tMX0sIHRoZSBzdWJqZWN0IG9mIGNlcnRpZmljYXRlIHggaXMKICAgICAgICAgIHRoZSBpc3N1ZXIgb2YgY2VydGlmaWNhdGUgeCsxOwoKICAgIChiKSBjZXJ0aWZpY2F0ZSAxIGlzIGlzc3VlZCBieSB0aGUgdHJ1c3QgYW5jaG9yOwoKICAgIChjKSBjZXJ0aWZpY2F0ZSBuIGlzIHRoZSBjZXJ0aWZpY2F0ZSB0byBiZSB2YWxpZGF0ZWQ7IGFuZAoKICAgIChkKSBmb3IgYWxsIHggaW4gezEsIC4uLiwgbn0sIHRoZSBjZXJ0aWZpY2F0ZSB3YXMgdmFsaWQgYXQgdGhlCiAgICAgICAgICB0aW1lIGluIHF1ZXN0aW9uLgoKICAgIE5vdGUgdGhhdCBoZXJlICduJyBpcyBpbmRleCAwIGluIHRoZSBjaGFpbiBhbmQgMSBpcyB0aGUgbGFzdCBjZXJ0aWZpY2F0ZQogICAgaW4gdGhlIGNoYWluIGFuZCBpdCBtdXN0IGJlIHNpZ25lZCBieSBhIGNlcnRpZmljYXRlIGluIHRoZSBjb25uZWN0aW9uJ3MKICAgIENBIHN0b3JlLgoKICAgIFRoZSBwYXRoIHZhbGlkYXRpb24gcHJvY2VzcyBhbHNvIGRldGVybWluZXMgdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZQogICAgcG9saWNpZXMgdGhhdCBhcmUgdmFsaWQgZm9yIHRoaXMgcGF0aCwgYmFzZWQgb24gdGhlIGNlcnRpZmljYXRlIHBvbGljaWVzCiAgICBleHRlbnNpb24sIHBvbGljeSBtYXBwaW5nIGV4dGVuc2lvbiwgcG9saWN5IGNvbnN0cmFpbnRzIGV4dGVuc2lvbiwgYW5kCiAgICBpbmhpYml0IGFueS1wb2xpY3kgZXh0ZW5zaW9uLgoKICAgIE5vdGU6IFBvbGljeSBtYXBwaW5nIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIChOb3QgUmVxdWlyZWQpLgoKICAgIE5vdGU6IElmIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgYW4gdW5zdXBwb3J0ZWQgY3JpdGljYWwgZXh0ZW5zaW9uLCB0aGVuIGl0CiAgICBtdXN0IGJlIHJlamVjdGVkLgoKICAgIE5vdGU6IEEgY2VydGlmaWNhdGUgaXMgc2VsZi1pc3N1ZWQgaWYgdGhlIEROcyB0aGF0IGFwcGVhciBpbiB0aGUgc3ViamVjdAogICAgYW5kIGlzc3VlciBmaWVsZHMgYXJlIGlkZW50aWNhbCBhbmQgYXJlIG5vdCBlbXB0eS4KCiAgICBUaGUgcGF0aCB2YWxpZGF0aW9uIGFsZ29yaXRobSBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgc2V2ZW4gaW5wdXRzIGFyZQogICAgcHJvdmlkZWQgdG8gdGhlIHBhdGggcHJvY2Vzc2luZyBsb2dpYy4gV2hhdCB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uCiAgICB3aWxsIHVzZSBpcyBwcm92aWRlZCBwYXJlbnRoZXRpY2FsbHk6CgogICAgKGEpIGEgcHJvc3BlY3RpdmUgY2VydGlmaWNhdGlvbiBwYXRoIG9mIGxlbmd0aCBuICh0aGUgJ2NoYWluJykKICAgIChiKSB0aGUgY3VycmVudCBkYXRlL3RpbWU6ICgnbm93JykuCiAgICAoYykgdXNlci1pbml0aWFsLXBvbGljeS1zZXQ6IEEgc2V0IG9mIGNlcnRpZmljYXRlIHBvbGljeSBpZGVudGlmaWVycwogICAgICAgICAgbmFtaW5nIHRoZSBwb2xpY2llcyB0aGF0IGFyZSBhY2NlcHRhYmxlIHRvIHRoZSBjZXJ0aWZpY2F0ZSB1c2VyLgogICAgICAgICAgVGhlIHVzZXItaW5pdGlhbC1wb2xpY3ktc2V0IGNvbnRhaW5zIHRoZSBzcGVjaWFsIHZhbHVlIGFueS1wb2xpY3kKICAgICAgICAgIGlmIHRoZSB1c2VyIGlzIG5vdCBjb25jZXJuZWQgYWJvdXQgY2VydGlmaWNhdGUgcG9saWN5CiAgICAgICAgICAoTm90IGltcGxlbWVudGVkLiBBbnkgcG9saWN5IGlzIGFjY2VwdGVkKS4KICAgIChkKSB0cnVzdCBhbmNob3IgaW5mb3JtYXRpb24sIGRlc2NyaWJpbmcgYSBDQSB0aGF0IHNlcnZlcyBhcyBhIHRydXN0CiAgICAgICAgICBhbmNob3IgZm9yIHRoZSBjZXJ0aWZpY2F0aW9uIHBhdGguIFRoZSB0cnVzdCBhbmNob3IgaW5mb3JtYXRpb24KICAgICAgICAgIGluY2x1ZGVzOgoKICAgICAgKDEpICB0aGUgdHJ1c3RlZCBpc3N1ZXIgbmFtZSwKICAgICAgKDIpICB0aGUgdHJ1c3RlZCBwdWJsaWMga2V5IGFsZ29yaXRobSwKICAgICAgKDMpICB0aGUgdHJ1c3RlZCBwdWJsaWMga2V5LCBhbmQKICAgICAgKDQpICBvcHRpb25hbGx5LCB0aGUgdHJ1c3RlZCBwdWJsaWMga2V5IHBhcmFtZXRlcnMgYXNzb2NpYXRlZAogICAgICAgICAgICAgd2l0aCB0aGUgcHVibGljIGtleS4KCiAgICAgIChUcnVzdCBhbmNob3JzIGFyZSBwcm92aWRlZCB2aWEgY2VydGlmaWNhdGVzIGluIHRoZSBDQSBzdG9yZSkuCgogICAgICBUaGUgdHJ1c3QgYW5jaG9yIGluZm9ybWF0aW9uIG1heSBiZSBwcm92aWRlZCB0byB0aGUgcGF0aCBwcm9jZXNzaW5nCiAgICAgIHByb2NlZHVyZSBpbiB0aGUgZm9ybSBvZiBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLiBUaGUgdHJ1c3RlZCBhbmNob3IKICAgICAgaW5mb3JtYXRpb24gaXMgdHJ1c3RlZCBiZWNhdXNlIGl0IHdhcyBkZWxpdmVyZWQgdG8gdGhlIHBhdGggcHJvY2Vzc2luZwogICAgICBwcm9jZWR1cmUgYnkgc29tZSB0cnVzdHdvcnRoeSBvdXQtb2YtYmFuZCBwcm9jZWR1cmUuIElmIHRoZSB0cnVzdGVkCiAgICAgIHB1YmxpYyBrZXkgYWxnb3JpdGhtIHJlcXVpcmVzIHBhcmFtZXRlcnMsIHRoZW4gdGhlIHBhcmFtZXRlcnMgYXJlCiAgICAgIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIHRydXN0ZWQgcHVibGljIGtleSAoTm8gcGFyYW1ldGVycyB1c2VkIGluIHRoaXMKICAgICAgaW1wbGVtZW50YXRpb24pLgoKICAgIChlKSBpbml0aWFsLXBvbGljeS1tYXBwaW5nLWluaGliaXQsIHdoaWNoIGluZGljYXRlcyBpZiBwb2xpY3kgbWFwcGluZyBpcwogICAgICAgICAgYWxsb3dlZCBpbiB0aGUgY2VydGlmaWNhdGlvbiBwYXRoLgogICAgICAgICAgKE5vdCBpbXBsZW1lbnRlZCwgbm8gcG9saWN5IGNoZWNraW5nKQoKICAgIChmKSBpbml0aWFsLWV4cGxpY2l0LXBvbGljeSwgd2hpY2ggaW5kaWNhdGVzIGlmIHRoZSBwYXRoIG11c3QgYmUgdmFsaWQKICAgICAgICAgIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNlcnRpZmljYXRlIHBvbGljaWVzIGluIHRoZSB1c2VyLWluaXRpYWwtCiAgICAgICAgICBwb2xpY3ktc2V0LgogICAgICAgICAgKE5vdCBpbXBsZW1lbnRlZCwgbm8gcG9saWN5IGNoZWNraW5nKQoKICAgIChnKSBpbml0aWFsLWFueS1wb2xpY3ktaW5oaWJpdCwgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgdGhlCiAgICAgICAgICBhbnlQb2xpY3kgT0lEIHNob3VsZCBiZSBwcm9jZXNzZWQgaWYgaXQgaXMgaW5jbHVkZWQgaW4gYQogICAgICAgICAgY2VydGlmaWNhdGUuCiAgICAgICAgICAoTm90IGltcGxlbWVudGVkLCBzbyBhbnkgcG9saWN5IGlzIHZhbGlkIHByb3ZpZGVkIHRoYXQgaXQgaXMKICAgICAgICAgIG5vdCBtYXJrZWQgYXMgY3JpdGljYWwpICovCgogIC8qIEJhc2ljIFBhdGggUHJvY2Vzc2luZzoKCiAgICBGb3IgZWFjaCBjZXJ0aWZpY2F0ZSBpbiB0aGUgJ2NoYWluJywgdGhlIGZvbGxvd2luZyBpcyBjaGVja2VkOgoKICAgIDEuIFRoZSBjZXJ0aWZpY2F0ZSB2YWxpZGl0eSBwZXJpb2QgaW5jbHVkZXMgdGhlIGN1cnJlbnQgdGltZS4KICAgIDIuIFRoZSBjZXJ0aWZpY2F0ZSB3YXMgc2lnbmVkIGJ5IGl0cyBwYXJlbnQgKHdoZXJlIHRoZSBwYXJlbnQgaXMgZWl0aGVyCiAgICAgICB0aGUgbmV4dCBpbiB0aGUgY2hhaW4gb3IgZnJvbSB0aGUgQ0Egc3RvcmUpLiBBbGxvdyBwcm9jZXNzaW5nIHRvCiAgICAgICBjb250aW51ZSB0byB0aGUgbmV4dCBzdGVwIGlmIG5vIHBhcmVudCBpcyBmb3VuZCBidXQgdGhlIGNlcnRpZmljYXRlIGlzCiAgICAgICBpbiB0aGUgQ0Egc3RvcmUuCiAgICAzLiBUT0RPOiBUaGUgY2VydGlmaWNhdGUgaGFzIG5vdCBiZWVuIHJldm9rZWQuCiAgICA0LiBUaGUgY2VydGlmaWNhdGUgaXNzdWVyIG5hbWUgbWF0Y2hlcyB0aGUgcGFyZW50J3Mgc3ViamVjdCBuYW1lLgogICAgNS4gVE9ETzogSWYgdGhlIGNlcnRpZmljYXRlIGlzIHNlbGYtaXNzdWVkIGFuZCBub3QgdGhlIGZpbmFsIGNlcnRpZmljYXRlCiAgICAgICBpbiB0aGUgY2hhaW4sIHNraXAgdGhpcyBzdGVwLCBvdGhlcndpc2UgdmVyaWZ5IHRoYXQgdGhlIHN1YmplY3QgbmFtZQogICAgICAgaXMgd2l0aGluIG9uZSBvZiB0aGUgcGVybWl0dGVkIHN1YnRyZWVzIG9mIFguNTAwIGRpc3Rpbmd1aXNoZWQgbmFtZXMKICAgICAgIGFuZCB0aGF0IGVhY2ggb2YgdGhlIGFsdGVybmF0aXZlIG5hbWVzIGluIHRoZSBzdWJqZWN0QWx0TmFtZSBleHRlbnNpb24KICAgICAgIChjcml0aWNhbCBvciBub24tY3JpdGljYWwpIGlzIHdpdGhpbiBvbmUgb2YgdGhlIHBlcm1pdHRlZCBzdWJ0cmVlcyBmb3IKICAgICAgIHRoYXQgbmFtZSB0eXBlLgogICAgNi4gVE9ETzogSWYgdGhlIGNlcnRpZmljYXRlIGlzIHNlbGYtaXNzdWVkIGFuZCBub3QgdGhlIGZpbmFsIGNlcnRpZmljYXRlCiAgICAgICBpbiB0aGUgY2hhaW4sIHNraXAgdGhpcyBzdGVwLCBvdGhlcndpc2UgdmVyaWZ5IHRoYXQgdGhlIHN1YmplY3QgbmFtZQogICAgICAgaXMgbm90IHdpdGhpbiBvbmUgb2YgdGhlIGV4Y2x1ZGVkIHN1YnRyZWVzIGZvciBYLjUwMCBkaXN0aW5ndWlzaGVkCiAgICAgICBuYW1lcyBhbmQgbm9uZSBvZiB0aGUgc3ViamVjdEFsdE5hbWUgZXh0ZW5zaW9uIG5hbWVzIGFyZSBleGNsdWRlZCBmb3IKICAgICAgIHRoYXQgbmFtZSB0eXBlLgogICAgNy4gVGhlIG90aGVyIHN0ZXBzIGluIHRoZSBhbGdvcml0aG0gZm9yIGJhc2ljIHBhdGggcHJvY2Vzc2luZyBpbnZvbHZlCiAgICAgICBoYW5kbGluZyB0aGUgcG9saWN5IGV4dGVuc2lvbiB3aGljaCBpcyBub3QgcHJlc2VudGx5IHN1cHBvcnRlZCBpbiB0aGlzCiAgICAgICBpbXBsZW1lbnRhdGlvbi4gSW5zdGVhZCwgaWYgYSBjcml0aWNhbCBwb2xpY3kgZXh0ZW5zaW9uIGlzIGZvdW5kLCB0aGUKICAgICAgIGNlcnRpZmljYXRlIGlzIHJlamVjdGVkIGFzIG5vdCBzdXBwb3J0ZWQuCiAgICA4LiBJZiB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHRoZSBmaXJzdCBvciBpZiBpdHMgdGhlIG9ubHkgY2VydGlmaWNhdGUgaW4KICAgICAgIHRoZSBjaGFpbiAoaGF2aW5nIG5vIHBhcmVudCBmcm9tIHRoZSBDQSBzdG9yZSBvciBpcyBzZWxmLXNpZ25lZCkgYW5kIGl0CiAgICAgICBoYXMgYSBjcml0aWNhbCBrZXkgdXNhZ2UgZXh0ZW5zaW9uLCB2ZXJpZnkgdGhhdCB0aGUga2V5Q2VydFNpZ24gYml0IGlzCiAgICAgICBzZXQuIElmIHRoZSBrZXkgdXNhZ2UgZXh0ZW5zaW9uIGV4aXN0cywgdmVyaWZ5IHRoYXQgdGhlIGJhc2ljCiAgICAgICBjb25zdHJhaW50cyBleHRlbnNpb24gZXhpc3RzLiBJZiB0aGUgYmFzaWMgY29uc3RyYWludHMgZXh0ZW5zaW9uIGV4aXN0cywKICAgICAgIHZlcmlmeSB0aGF0IHRoZSBjQSBmbGFnIGlzIHNldC4gSWYgcGF0aExlbkNvbnN0cmFpbnQgaXMgc2V0LCBlbnN1cmUgdGhhdAogICAgICAgdGhlIG51bWJlciBvZiBjZXJ0aWZpY2F0ZXMgdGhhdCBwcmVjZWRlIGluIHRoZSBjaGFpbiAoY29tZSBlYXJsaWVyCiAgICAgICBpbiB0aGUgY2hhaW4gYXMgaW1wbGVtZW50ZWQgYmVsb3cpLCBleGNsdWRpbmcgdGhlIHZlcnkgZmlyc3QgaW4gdGhlCiAgICAgICBjaGFpbiAodHlwaWNhbGx5IHRoZSBlbmQtZW50aXR5IG9uZSksIGlzbid0IGdyZWF0ZXIgdGhhbiB0aGUKICAgICAgIHBhdGhMZW5Db25zdHJhaW50LiBUaGlzIGNvbnN0cmFpbnQgbGltaXRzIHRoZSBudW1iZXIgb2YgaW50ZXJtZWRpYXRlCiAgICAgICBDQXMgdGhhdCBtYXkgYXBwZWFyIGJlbG93IGEgQ0EgYmVmb3JlIG9ubHkgZW5kLWVudGl0eSBjZXJ0aWZpY2F0ZXMKICAgICAgIG1heSBiZSBpc3N1ZWQuICovCgogIC8vIGNvcHkgY2VydCBjaGFpbiByZWZlcmVuY2VzIHRvIGFub3RoZXIgYXJyYXkgdG8gcHJvdGVjdCBhZ2FpbnN0IGNoYW5nZXMKICAvLyBpbiB2ZXJpZnkgY2FsbGJhY2sKICBjaGFpbiA9IGNoYWluLnNsaWNlKDApOwogIHZhciBjZXJ0cyA9IGNoYWluLnNsaWNlKDApOwoKICAvLyBnZXQgY3VycmVudCBkYXRlCiAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CgogIC8vIHZlcmlmeSBlYWNoIGNlcnQgaW4gdGhlIGNoYWluIHVzaW5nIGl0cyBwYXJlbnQsIHdoZXJlIHRoZSBwYXJlbnQKICAvLyBpcyBlaXRoZXIgdGhlIG5leHQgaW4gdGhlIGNoYWluIG9yIGZyb20gdGhlIENBIHN0b3JlCiAgdmFyIGZpcnN0ID0gdHJ1ZTsKICB2YXIgZXJyb3IgPSBudWxsOwogIHZhciBkZXB0aCA9IDA7CiAgZG8gewogICAgdmFyIGNlcnQgPSBjaGFpbi5zaGlmdCgpOwogICAgdmFyIHBhcmVudCA9IG51bGw7CiAgICB2YXIgc2VsZlNpZ25lZCA9IGZhbHNlOwoKICAgIC8vIDEuIGNoZWNrIHZhbGlkIHRpbWUKICAgIGlmKG5vdyA8IGNlcnQudmFsaWRpdHkubm90QmVmb3JlIHx8IG5vdyA+IGNlcnQudmFsaWRpdHkubm90QWZ0ZXIpIHsKICAgICAgZXJyb3IgPSB7CiAgICAgICAgbWVzc2FnZTogJ0NlcnRpZmljYXRlIGlzIG5vdCB2YWxpZCB5ZXQgb3IgaGFzIGV4cGlyZWQuJywKICAgICAgICBlcnJvcjogcGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfZXhwaXJlZCwKICAgICAgICBub3RCZWZvcmU6IGNlcnQudmFsaWRpdHkubm90QmVmb3JlLAogICAgICAgIG5vdEFmdGVyOiBjZXJ0LnZhbGlkaXR5Lm5vdEFmdGVyLAogICAgICAgIG5vdzogbm93CiAgICAgIH07CiAgICB9CgogICAgLy8gMi4gdmVyaWZ5IHdpdGggcGFyZW50IGZyb20gY2hhaW4gb3IgQ0Egc3RvcmUKICAgIGlmKGVycm9yID09PSBudWxsKSB7CiAgICAgIHBhcmVudCA9IGNoYWluWzBdIHx8IGNhU3RvcmUuZ2V0SXNzdWVyKGNlcnQpOwogICAgICBpZihwYXJlbnQgPT09IG51bGwpIHsKICAgICAgICAvLyBjaGVjayBmb3Igc2VsZi1zaWduZWQgY2VydAogICAgICAgIGlmKGNlcnQuaXNJc3N1ZXIoY2VydCkpIHsKICAgICAgICAgIHNlbGZTaWduZWQgPSB0cnVlOwogICAgICAgICAgcGFyZW50ID0gY2VydDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmKHBhcmVudCkgewogICAgICAgIC8vIEZJWE1FOiBjdXJyZW50IENBIHN0b3JlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGhhdmUgbXVsdGlwbGUKICAgICAgICAvLyBjZXJ0aWZpY2F0ZXMgd2hlcmUgdGhlIGlzc3VlciBjYW4ndCBiZSBkZXRlcm1pbmVkIGZyb20gdGhlCiAgICAgICAgLy8gY2VydGlmaWNhdGUgKGhhcHBlbnMgcmFyZWx5IHdpdGgsIGVnOiBvbGQgY2VydGlmaWNhdGVzKSBzbyBub3JtYWxpemUKICAgICAgICAvLyBieSBhbHdheXMgcHV0dGluZyBwYXJlbnRzIGludG8gYW4gYXJyYXkKICAgICAgICAvLyBUT0RPOiB0aGVyZSdzIG1heSBiZSBhbiBleHRyZW1lIGRlZ2VuZXJhdGUgY2FzZSBjdXJyZW50bHkgdW5jb3ZlcmVkCiAgICAgICAgLy8gd2hlcmUgYW4gb2xkIGludGVybWVkaWF0ZSBjZXJ0aWZpY2F0ZSBzZWVtcyB0byBoYXZlIGEgbWF0Y2hpbmcgcGFyZW50CiAgICAgICAgLy8gYnV0IG5vbmUgb2YgdGhlIHBhcmVudHMgYWN0dWFsbHkgdmVyaWZ5IC4uLiBidXQgdGhlIGludGVybWVkaWF0ZQogICAgICAgIC8vIGlzIGluIHRoZSBDQSBhbmQgaXQgc2hvdWxkIHBhc3MgdGhpcyBjaGVjazsgbmVlZHMgaW52ZXN0aWdhdGlvbgogICAgICAgIHZhciBwYXJlbnRzID0gcGFyZW50OwogICAgICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkocGFyZW50cykpIHsKICAgICAgICAgIHBhcmVudHMgPSBbcGFyZW50c107CiAgICAgICAgfQoKICAgICAgICAvLyB0cnkgdG8gdmVyaWZ5IHdpdGggZWFjaCBwb3NzaWJsZSBwYXJlbnQgKHR5cGljYWxseSBvbmx5IG9uZSkKICAgICAgICB2YXIgdmVyaWZpZWQgPSBmYWxzZTsKICAgICAgICB3aGlsZSghdmVyaWZpZWQgJiYgcGFyZW50cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRzLnNoaWZ0KCk7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICB2ZXJpZmllZCA9IHBhcmVudC52ZXJpZnkoY2VydCk7CiAgICAgICAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgICAgIC8vIGZhaWx1cmUgdG8gdmVyaWZ5LCBkb24ndCBjYXJlIHdoeSwgdHJ5IG5leHQgb25lCiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZighdmVyaWZpZWQpIHsKICAgICAgICAgIGVycm9yID0gewogICAgICAgICAgICBtZXNzYWdlOiAnQ2VydGlmaWNhdGUgc2lnbmF0dXJlIGlzIGludmFsaWQuJywKICAgICAgICAgICAgZXJyb3I6IHBraS5jZXJ0aWZpY2F0ZUVycm9yLmJhZF9jZXJ0aWZpY2F0ZQogICAgICAgICAgfTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmKGVycm9yID09PSBudWxsICYmICghcGFyZW50IHx8IHNlbGZTaWduZWQpICYmCiAgICAgICAgIWNhU3RvcmUuaGFzQ2VydGlmaWNhdGUoY2VydCkpIHsKICAgICAgICAvLyBubyBwYXJlbnQgaXNzdWVyIGFuZCBjZXJ0aWZpY2F0ZSBpdHNlbGYgaXMgbm90IHRydXN0ZWQKICAgICAgICBlcnJvciA9IHsKICAgICAgICAgIG1lc3NhZ2U6ICdDZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZC4nLAogICAgICAgICAgZXJyb3I6IHBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2EKICAgICAgICB9OwogICAgICB9CiAgICB9CgogICAgLy8gVE9ETzogMy4gY2hlY2sgcmV2b2tlZAoKICAgIC8vIDQuIGNoZWNrIGZvciBtYXRjaGluZyBpc3N1ZXIvc3ViamVjdAogICAgaWYoZXJyb3IgPT09IG51bGwgJiYgcGFyZW50ICYmICFjZXJ0LmlzSXNzdWVyKHBhcmVudCkpIHsKICAgICAgLy8gcGFyZW50IGlzIG5vdCBpc3N1ZXIKICAgICAgZXJyb3IgPSB7CiAgICAgICAgbWVzc2FnZTogJ0NlcnRpZmljYXRlIGlzc3VlciBpcyBpbnZhbGlkLicsCiAgICAgICAgZXJyb3I6IHBraS5jZXJ0aWZpY2F0ZUVycm9yLmJhZF9jZXJ0aWZpY2F0ZQogICAgICB9OwogICAgfQoKICAgIC8vIDUuIFRPRE86IGNoZWNrIG5hbWVzIHdpdGggcGVybWl0dGVkIG5hbWVzIHRyZWUKCiAgICAvLyA2LiBUT0RPOiBjaGVjayBuYW1lcyBhZ2FpbnN0IGV4Y2x1ZGVkIG5hbWVzIHRyZWUKCiAgICAvLyA3LiBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgY3JpdGljYWwgZXh0ZW5zaW9ucwogICAgaWYoZXJyb3IgPT09IG51bGwpIHsKICAgICAgLy8gc3VwcG9ydGVkIGV4dGVuc2lvbnMKICAgICAgdmFyIHNlID0gewogICAgICAgIGtleVVzYWdlOiB0cnVlLAogICAgICAgIGJhc2ljQ29uc3RyYWludHM6IHRydWUKICAgICAgfTsKICAgICAgZm9yKHZhciBpID0gMDsgZXJyb3IgPT09IG51bGwgJiYgaSA8IGNlcnQuZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciBleHQgPSBjZXJ0LmV4dGVuc2lvbnNbaV07CiAgICAgICAgaWYoZXh0LmNyaXRpY2FsICYmICEoZXh0Lm5hbWUgaW4gc2UpKSB7CiAgICAgICAgICBlcnJvciA9IHsKICAgICAgICAgICAgbWVzc2FnZToKICAgICAgICAgICAgICAnQ2VydGlmaWNhdGUgaGFzIGFuIHVuc3VwcG9ydGVkIGNyaXRpY2FsIGV4dGVuc2lvbi4nLAogICAgICAgICAgICBlcnJvcjogcGtpLmNlcnRpZmljYXRlRXJyb3IudW5zdXBwb3J0ZWRfY2VydGlmaWNhdGUKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gOC4gY2hlY2sgZm9yIENBIGlmIGNlcnQgaXMgbm90IGZpcnN0IG9yIGlzIHRoZSBvbmx5IGNlcnRpZmljYXRlCiAgICAvLyByZW1haW5pbmcgaW4gY2hhaW4gd2l0aCBubyBwYXJlbnQgb3IgaXMgc2VsZi1zaWduZWQKICAgIGlmKGVycm9yID09PSBudWxsICYmCiAgICAgICghZmlyc3QgfHwgKGNoYWluLmxlbmd0aCA9PT0gMCAmJiAoIXBhcmVudCB8fCBzZWxmU2lnbmVkKSkpKSB7CiAgICAgIC8vIGZpcnN0IGNoZWNrIGtleVVzYWdlIGV4dGVuc2lvbiBhbmQgdGhlbiBiYXNpYyBjb25zdHJhaW50cwogICAgICB2YXIgYmNFeHQgPSBjZXJ0LmdldEV4dGVuc2lvbignYmFzaWNDb25zdHJhaW50cycpOwogICAgICB2YXIga2V5VXNhZ2VFeHQgPSBjZXJ0LmdldEV4dGVuc2lvbigna2V5VXNhZ2UnKTsKICAgICAgaWYoa2V5VXNhZ2VFeHQgIT09IG51bGwpIHsKICAgICAgICAvLyBrZXlDZXJ0U2lnbiBtdXN0IGJlIHRydWUgYW5kIHRoZXJlIG11c3QgYmUgYSBiYXNpYwogICAgICAgIC8vIGNvbnN0cmFpbnRzIGV4dGVuc2lvbgogICAgICAgIGlmKCFrZXlVc2FnZUV4dC5rZXlDZXJ0U2lnbiB8fCBiY0V4dCA9PT0gbnVsbCkgewogICAgICAgICAgLy8gYmFkIGNlcnRpZmljYXRlCiAgICAgICAgICBlcnJvciA9IHsKICAgICAgICAgICAgbWVzc2FnZToKICAgICAgICAgICAgICAnQ2VydGlmaWNhdGUga2V5VXNhZ2Ugb3IgYmFzaWNDb25zdHJhaW50cyBjb25mbGljdCAnICsKICAgICAgICAgICAgICAnb3IgaW5kaWNhdGUgdGhhdCB0aGUgY2VydGlmaWNhdGUgaXMgbm90IGEgQ0EuICcgKwogICAgICAgICAgICAgICdJZiB0aGUgY2VydGlmaWNhdGUgaXMgdGhlIG9ubHkgb25lIGluIHRoZSBjaGFpbiBvciAnICsKICAgICAgICAgICAgICAnaXNuXCd0IHRoZSBmaXJzdCB0aGVuIHRoZSBjZXJ0aWZpY2F0ZSBtdXN0IGJlIGEgJyArCiAgICAgICAgICAgICAgJ3ZhbGlkIENBLicsCiAgICAgICAgICAgIGVycm9yOiBwa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGUKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIGJhc2ljIGNvbnN0cmFpbnRzIGNBIGZsYWcgbXVzdCBiZSBzZXQKICAgICAgaWYoZXJyb3IgPT09IG51bGwgJiYgYmNFeHQgIT09IG51bGwgJiYgIWJjRXh0LmNBKSB7CiAgICAgICAgLy8gYmFkIGNlcnRpZmljYXRlCiAgICAgICAgZXJyb3IgPSB7CiAgICAgICAgICBtZXNzYWdlOgogICAgICAgICAgICAnQ2VydGlmaWNhdGUgYmFzaWNDb25zdHJhaW50cyBpbmRpY2F0ZXMgdGhlIGNlcnRpZmljYXRlICcgKwogICAgICAgICAgICAnaXMgbm90IGEgQ0EuJywKICAgICAgICAgIGVycm9yOiBwa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGUKICAgICAgICB9OwogICAgICB9CiAgICAgIC8vIGlmIGVycm9yIGlzIG5vdCBudWxsIGFuZCBrZXlVc2FnZSBpcyBhdmFpbGFibGUsIHRoZW4gd2Uga25vdyBpdAogICAgICAvLyBoYXMga2V5Q2VydFNpZ24gYW5kIHRoZXJlIGlzIGEgYmFzaWMgY29uc3RyYWludHMgZXh0ZW5zaW9uIHRvbywKICAgICAgLy8gd2hpY2ggbWVhbnMgd2UgY2FuIGNoZWNrIHBhdGhMZW5Db25zdHJhaW50IChpZiBpdCBleGlzdHMpCiAgICAgIGlmKGVycm9yID09PSBudWxsICYmIGtleVVzYWdlRXh0ICE9PSBudWxsICYmCiAgICAgICAgJ3BhdGhMZW5Db25zdHJhaW50JyBpbiBiY0V4dCkgewogICAgICAgIC8vIHBhdGhMZW4gaXMgdGhlIG1heGltdW0gIyBvZiBpbnRlcm1lZGlhdGUgQ0EgY2VydHMgdGhhdCBjYW4gYmUKICAgICAgICAvLyBmb3VuZCBiZXR3ZWVuIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlIGFuZCB0aGUgZW5kLWVudGl0eSAoZGVwdGggMCkKICAgICAgICAvLyBjZXJ0aWZpY2F0ZTsgdGhpcyBudW1iZXIgZG9lcyBub3QgaW5jbHVkZSB0aGUgZW5kLWVudGl0eSAoZGVwdGggMCwKICAgICAgICAvLyBsYXN0IGluIHRoZSBjaGFpbikgZXZlbiBpZiBpdCBoYXBwZW5zIHRvIGJlIGEgQ0EgY2VydGlmaWNhdGUgaXRzZWxmCiAgICAgICAgdmFyIHBhdGhMZW4gPSBkZXB0aCAtIDE7CiAgICAgICAgaWYocGF0aExlbiA+IGJjRXh0LnBhdGhMZW5Db25zdHJhaW50KSB7CiAgICAgICAgICAvLyBwYXRoTGVuQ29uc3RyYWludCB2aW9sYXRlZCwgYmFkIGNlcnRpZmljYXRlCiAgICAgICAgICBlcnJvciA9IHsKICAgICAgICAgICAgbWVzc2FnZToKICAgICAgICAgICAgICAnQ2VydGlmaWNhdGUgYmFzaWNDb25zdHJhaW50cyBwYXRoTGVuQ29uc3RyYWludCB2aW9sYXRlZC4nLAogICAgICAgICAgICBlcnJvcjogcGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlCiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIGNhbGwgYXBwbGljYXRpb24gY2FsbGJhY2sKICAgIHZhciB2ZmQgPSAoZXJyb3IgPT09IG51bGwpID8gdHJ1ZSA6IGVycm9yLmVycm9yOwogICAgdmFyIHJldCA9IHZlcmlmeSA/IHZlcmlmeSh2ZmQsIGRlcHRoLCBjZXJ0cykgOiB2ZmQ7CiAgICBpZihyZXQgPT09IHRydWUpIHsKICAgICAgLy8gY2xlYXIgYW55IHNldCBlcnJvcgogICAgICBlcnJvciA9IG51bGw7CiAgICB9IGVsc2UgewogICAgICAvLyBpZiBwYXNzZWQgYmFzaWMgdGVzdHMsIHNldCBkZWZhdWx0IG1lc3NhZ2UgYW5kIGFsZXJ0CiAgICAgIGlmKHZmZCA9PT0gdHJ1ZSkgewogICAgICAgIGVycm9yID0gewogICAgICAgICAgbWVzc2FnZTogJ1RoZSBhcHBsaWNhdGlvbiByZWplY3RlZCB0aGUgY2VydGlmaWNhdGUuJywKICAgICAgICAgIGVycm9yOiBwa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGUKICAgICAgICB9OwogICAgICB9CgogICAgICAvLyBjaGVjayBmb3IgY3VzdG9tIGVycm9yIGluZm8KICAgICAgaWYocmV0IHx8IHJldCA9PT0gMCkgewogICAgICAgIC8vIHNldCBjdXN0b20gbWVzc2FnZSBhbmQgZXJyb3IKICAgICAgICBpZih0eXBlb2YgcmV0ID09PSAnb2JqZWN0JyAmJiAhZm9yZ2UudXRpbC5pc0FycmF5KHJldCkpIHsKICAgICAgICAgIGlmKHJldC5tZXNzYWdlKSB7CiAgICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gcmV0Lm1lc3NhZ2U7CiAgICAgICAgICB9CiAgICAgICAgICBpZihyZXQuZXJyb3IpIHsKICAgICAgICAgICAgZXJyb3IuZXJyb3IgPSByZXQuZXJyb3I7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmKHR5cGVvZiByZXQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAvLyBzZXQgY3VzdG9tIGVycm9yCiAgICAgICAgICBlcnJvci5lcnJvciA9IHJldDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIHRocm93IGVycm9yCiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIC8vIG5vIGxvbmdlciBmaXJzdCBjZXJ0IGluIGNoYWluCiAgICBmaXJzdCA9IGZhbHNlOwogICAgKytkZXB0aDsKICB9IHdoaWxlKGNoYWluLmxlbmd0aCA+IDApOwoKICByZXR1cm4gdHJ1ZTsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3g1MDknOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZS5wa2k7CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3g1MDknLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYWVzJywKICAnLi9hc24xJywKICAnLi9kZXMnLAogICcuL21kJywKICAnLi9tZ2YnLAogICcuL29pZHMnLAogICcuL3BlbScsCiAgJy4vcHNzJywKICAnLi9yc2EnLAogICcuL3V0aWwnCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgUEtDUyMxMi4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICogQGF1dGhvciBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgU3RlZmFuIFNpZWdsIDxzdGVzaWVAYnJva2VucGlwZS5kZT4KICoKICogVGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIFBLQ1MjMTIgaXMgYXMgZm9sbG93cwogKiAoc2VlIGZ0cDovL2Z0cC5yc2FzZWN1cml0eS5jb20vcHViL3BrY3MvcGtjcy0xMi9wa2NzLTEyLXRjMS5wZGYgZm9yIGRldGFpbHMpCiAqCiAqIFBGWCA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gIElOVEVHRVIge3YzKDMpfSh2MywuLi4pLAogKiAgIGF1dGhTYWZlIENvbnRlbnRJbmZvLAogKiAgIG1hY0RhdGEgIE1hY0RhdGEgT1BUSU9OQUwKICogfQogKgogKiBNYWNEYXRhIDo6PSBTRVFVRU5DRSB7CiAqICAgbWFjIERpZ2VzdEluZm8sCiAqICAgbWFjU2FsdCBPQ1RFVCBTVFJJTkcsCiAqICAgaXRlcmF0aW9ucyBJTlRFR0VSIERFRkFVTFQgMQogKiB9CiAqIE5vdGU6IFRoZSBpdGVyYXRpb25zIGRlZmF1bHQgaXMgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBhbmQgaXRzIHVzZSBpcwogKiBkZXByZWNhdGVkLiBBIGhpZ2hlciB2YWx1ZSwgbGlrZSAxMDI0LCBpcyByZWNvbW1lbmRlZC4KICoKICogRGlnZXN0SW5mbyBpcyBkZWZpbmVkIGluIFBLQ1MjNyBhcyBmb2xsb3dzOgogKgogKiBEaWdlc3RJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgZGlnZXN0QWxnb3JpdGhtIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgZGlnZXN0IERpZ2VzdAogKiB9CiAqCiAqIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogVGhlIEFsZ29yaXRobUlkZW50aWZpZXIgY29udGFpbnMgYW4gT2JqZWN0IElkZW50aWZpZXIgKE9JRCkgYW5kIHBhcmFtZXRlcnMKICogZm9yIHRoZSBhbGdvcml0aG0sIGlmIGFueS4gSW4gdGhlIGNhc2Ugb2YgU0hBMSB0aGVyZSBpcyBub25lLgogKgogKiBBbGdvcml0aG1JZGVudGlmZXIgOjo9IFNFUVVFTkNFIHsKICogICAgYWxnb3JpdGhtIE9CSkVDVCBJREVOVElGSUVSLAogKiAgICBwYXJhbWV0ZXJzIEFOWSBERUZJTkVEIEJZIGFsZ29yaXRobSBPUFRJT05BTAogKiB9CiAqCiAqIERpZ2VzdCA6Oj0gT0NURVQgU1RSSU5HCiAqCiAqCiAqIENvbnRlbnRJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgY29udGVudFR5cGUgQ29udGVudFR5cGUsCiAqICAgY29udGVudCAgICAgWzBdIEVYUExJQ0lUIEFOWSBERUZJTkVEIEJZIGNvbnRlbnRUeXBlIE9QVElPTkFMCiAqIH0KICoKICogQ29udGVudFR5cGUgOjo9IE9CSkVDVCBJREVOVElGSUVSCiAqCiAqIEF1dGhlbnRpY2F0ZWRTYWZlIDo6PSBTRVFVRU5DRSBPRiBDb250ZW50SW5mbwogKiAtLSBEYXRhIGlmIHVuZW5jcnlwdGVkCiAqIC0tIEVuY3J5cHRlZERhdGEgaWYgcGFzc3dvcmQtZW5jcnlwdGVkCiAqIC0tIEVudmVsb3BlZERhdGEgaWYgcHVibGljIGtleS1lbmNyeXB0ZWQKICoKICoKICogU2FmZUNvbnRlbnRzIDo6PSBTRVFVRU5DRSBPRiBTYWZlQmFnCiAqCiAqIFNhZmVCYWcgOjo9IFNFUVVFTkNFIHsKICogICBiYWdJZCAgICAgQkFHLVRZUEUuJmlkICh7UEtDUzEyQmFnU2V0fSkKICogICBiYWdWYWx1ZSAgWzBdIEVYUExJQ0lUIEJBRy1UWVBFLiZUeXBlKHtQS0NTMTJCYWdTZXR9e0BiYWdJZH0pLAogKiAgIGJhZ0F0dHJpYnV0ZXMgU0VUIE9GIFBLQ1MxMkF0dHJpYnV0ZSBPUFRJT05BTAogKiB9CiAqCiAqIFBLQ1MxMkF0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgewogKiAgIGF0dHJJZCBBVFRSSUJVVEUuJmlkICh7UEtDUzEyQXR0clNldH0pLAogKiAgIGF0dHJWYWx1ZXMgU0VUIE9GIEFUVFJJQlVURS4mVHlwZSAoe1BLQ1MxMkF0dHJTZXR9e0BhdHRySWR9KQogKiB9IC0tIFRoaXMgdHlwZSBpcyBjb21wYXRpYmxlIHdpdGggdGhlIFguNTAwIHR5cGUg4oCZQXR0cmlidXRl4oCZCiAqCiAqIFBLQ1MxMkF0dHJTZXQgQVRUUklCVVRFIDo6PSB7CiAqICAgZnJpZW5kbHlOYW1lIHwgLS0gZnJvbSBQS0NTICM5CiAqICAgbG9jYWxLZXlJZCwgLS0gZnJvbSBQS0NTICM5CiAqICAgLi4uIC0tIE90aGVyIGF0dHJpYnV0ZXMgYXJlIGFsbG93ZWQKICogfQogKgogKiBDZXJ0QmFnIDo6PSBTRVFVRU5DRSB7CiAqICAgY2VydElkICAgIEJBRy1UWVBFLiZpZCAgICh7Q2VydFR5cGVzfSksCiAqICAgY2VydFZhbHVlIFswXSBFWFBMSUNJVCBCQUctVFlQRS4mVHlwZSAoe0NlcnRUeXBlc317QGNlcnRJZH0pCiAqIH0KICoKICogeDUwOUNlcnRpZmljYXRlIEJBRy1UWVBFIDo6PSB7T0NURVQgU1RSSU5HIElERU5USUZJRUQgQlkge2NlcnRUeXBlcyAxfX0KICogICAtLSBERVItZW5jb2RlZCBYLjUwOSBjZXJ0aWZpY2F0ZSBzdG9yZWQgaW4gT0NURVQgU1RSSU5HCiAqCiAqIHNkc2lDZXJ0aWZpY2F0ZSBCQUctVFlQRSA6Oj0ge0lBNVN0cmluZyBJREVOVElGSUVEIEJZIHtjZXJ0VHlwZXMgMn19CiAqIC0tIEJhc2U2NC1lbmNvZGVkIFNEU0kgY2VydGlmaWNhdGUgc3RvcmVkIGluIElBNVN0cmluZwogKgogKiBDZXJ0VHlwZXMgQkFHLVRZUEUgOjo9IHsKICogICB4NTA5Q2VydGlmaWNhdGUgfAogKiAgIHNkc2lDZXJ0aWZpY2F0ZSwKICogICAuLi4gLS0gRm9yIGZ1dHVyZSBleHRlbnNpb25zCiAqIH0KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBzaG9ydGN1dCBmb3IgYXNuLjEgJiBQS0kgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKdmFyIHBraSA9IGZvcmdlLnBraTsKCi8vIHNob3J0Y3V0IGZvciBQS0NTIzEyIEFQSQp2YXIgcDEyID0gZm9yZ2UucGtjczEyID0gZm9yZ2UucGtjczEyIHx8IHt9OwoKdmFyIGNvbnRlbnRJbmZvVmFsaWRhdG9yID0gewogIG5hbWU6ICdDb250ZW50SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwgIC8vIGEgQ29udGVudEluZm8KICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdDb250ZW50SW5mby5jb250ZW50VHlwZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2NvbnRlbnRUeXBlJwogIH0sIHsKICAgIG5hbWU6ICdDb250ZW50SW5mby5jb250ZW50JywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnY29udGVudCcKICB9XQp9OwoKdmFyIHBmeFZhbGlkYXRvciA9IHsKICBuYW1lOiAnUEZYJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ1BGWC52ZXJzaW9uJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ZlcnNpb24nCiAgfSwKICBjb250ZW50SW5mb1ZhbGlkYXRvciwgewogICAgbmFtZTogJ1BGWC5tYWNEYXRhJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgb3B0aW9uYWw6IHRydWUsCiAgICBjYXB0dXJlQXNuMTogJ21hYycsCiAgICB2YWx1ZTogW3sKICAgICAgbmFtZTogJ1BGWC5tYWNEYXRhLm1hYycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLCAgLy8gRGlnZXN0SW5mbwogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgdmFsdWU6IFt7CiAgICAgICAgbmFtZTogJ1BGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0nLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsICAvLyBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyCiAgICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgICAgdmFsdWU6IFt7CiAgICAgICAgICBuYW1lOiAnUEZYLm1hY0RhdGEubWFjLmRpZ2VzdEFsZ29yaXRobS5hbGdvcml0aG0nLAogICAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICAgIGNhcHR1cmU6ICdtYWNBbGdvcml0aG0nCiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ1BGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0ucGFyYW1ldGVycycsCiAgICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgICBjYXB0dXJlQXNuMTogJ21hY0FsZ29yaXRobVBhcmFtZXRlcnMnCiAgICAgICAgfV0KICAgICAgfSwgewogICAgICAgIG5hbWU6ICdQRlgubWFjRGF0YS5tYWMuZGlnZXN0JywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAnbWFjRGlnZXN0JwogICAgICB9XQogICAgfSwgewogICAgICBuYW1lOiAnUEZYLm1hY0RhdGEubWFjU2FsdCcsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdtYWNTYWx0JwogICAgfSwgewogICAgICBuYW1lOiAnUEZYLm1hY0RhdGEuaXRlcmF0aW9ucycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgIGNhcHR1cmU6ICdtYWNJdGVyYXRpb25zJwogICAgfV0KICB9XQp9OwoKdmFyIHNhZmVCYWdWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ1NhZmVCYWcnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnU2FmZUJhZy5iYWdJZCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2JhZ0lkJwogIH0sIHsKICAgIG5hbWU6ICdTYWZlQmFnLmJhZ1ZhbHVlJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnYmFnVmFsdWUnCiAgfSwgewogICAgbmFtZTogJ1NhZmVCYWcuYmFnQXR0cmlidXRlcycsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VULAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmU6ICdiYWdBdHRyaWJ1dGVzJwogIH1dCn07Cgp2YXIgYXR0cmlidXRlVmFsaWRhdG9yID0gewogIG5hbWU6ICdBdHRyaWJ1dGUnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnQXR0cmlidXRlLmF0dHJJZCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ29pZCcKICB9LCB7CiAgICBuYW1lOiAnQXR0cmlidXRlLmF0dHJWYWx1ZXMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFVCwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgY2FwdHVyZTogJ3ZhbHVlcycKICB9XQp9OwoKdmFyIGNlcnRCYWdWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NlcnRCYWcnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnQ2VydEJhZy5jZXJ0SWQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdjZXJ0SWQnCiAgfSwgewogICAgbmFtZTogJ0NlcnRCYWcuY2VydFZhbHVlJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIC8qIFNvIGZhciB3ZSBvbmx5IHN1cHBvcnQgWC41MDkgY2VydGlmaWNhdGVzICh3aGljaCBhcmUgd3JhcHBlZCBpbgogICAgICAgYW4gT0NURVQgU1RSSU5HLCBoZW5jZSBoYXJkIGNvZGUgdGhhdCBoZXJlKS4gKi8KICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnQ2VydEJhZy5jZXJ0VmFsdWVbMF0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuQ2xhc3MuT0NURVRTVFJJTkcsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2NlcnQnCiAgICB9XQogIH1dCn07CgovKioKICogU2VhcmNoIFNhZmVDb250ZW50cyBzdHJ1Y3R1cmUgZm9yIGJhZ3Mgd2l0aCBtYXRjaGluZyBhdHRyaWJ1dGVzLgogKgogKiBUaGUgc2VhcmNoIGNhbiBvcHRpb25hbGx5IGJlIG5hcnJvd2VkIGJ5IGEgY2VydGFpbiBiYWcgdHlwZS4KICoKICogQHBhcmFtIHNhZmVDb250ZW50cyB0aGUgU2FmZUNvbnRlbnRzIHN0cnVjdHVyZSB0byBzZWFyY2ggaW4uCiAqIEBwYXJhbSBhdHRyTmFtZSB0aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIGNvbXBhcmUgYWdhaW5zdC4KICogQHBhcmFtIGF0dHJWYWx1ZSB0aGUgYXR0cmlidXRlIHZhbHVlIHRvIHNlYXJjaCBmb3IuCiAqIEBwYXJhbSBbYmFnVHlwZV0gYmFnIHR5cGUgdG8gbmFycm93IHNlYXJjaCBieS4KICoKICogQHJldHVybiBhbiBhcnJheSBvZiBtYXRjaGluZyBiYWdzLgogKi8KZnVuY3Rpb24gX2dldEJhZ3NCeUF0dHJpYnV0ZShzYWZlQ29udGVudHMsIGF0dHJOYW1lLCBhdHRyVmFsdWUsIGJhZ1R5cGUpIHsKICB2YXIgcmVzdWx0ID0gW107CgogIGZvcih2YXIgaSA9IDA7IGkgPCBzYWZlQ29udGVudHMubGVuZ3RoOyBpICsrKSB7CiAgICBmb3IodmFyIGogPSAwOyBqIDwgc2FmZUNvbnRlbnRzW2ldLnNhZmVCYWdzLmxlbmd0aDsgaiArKykgewogICAgICB2YXIgYmFnID0gc2FmZUNvbnRlbnRzW2ldLnNhZmVCYWdzW2pdOwogICAgICBpZihiYWdUeXBlICE9PSB1bmRlZmluZWQgJiYgYmFnLnR5cGUgIT09IGJhZ1R5cGUpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICAvLyBvbmx5IGZpbHRlciBieSBiYWcgdHlwZSwgbm8gYXR0cmlidXRlIHNwZWNpZmllZAogICAgICBpZihhdHRyTmFtZSA9PT0gbnVsbCkgewogICAgICAgIHJlc3VsdC5wdXNoKGJhZyk7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYoYmFnLmF0dHJpYnV0ZXNbYXR0ck5hbWVdICE9PSB1bmRlZmluZWQgJiYKICAgICAgICBiYWcuYXR0cmlidXRlc1thdHRyTmFtZV0uaW5kZXhPZihhdHRyVmFsdWUpID49IDApIHsKICAgICAgICByZXN1bHQucHVzaChiYWcpOwogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gcmVzdWx0Owp9CgovKioKICogQ29udmVydHMgYSBQS0NTIzEyIFBGWCBpbiBBU04uMSBub3RhdGlvbiBpbnRvIGEgUEZYIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiBUaGUgUEtDUyMxMiBQRlggaW4gQVNOLjEgbm90YXRpb24uCiAqIEBwYXJhbSBzdHJpY3QgdHJ1ZSB0byB1c2Ugc3RyaWN0IERFUiBkZWNvZGluZywgZmFsc2Ugbm90IHRvIChkZWZhdWx0OiB0cnVlKS4KICogQHBhcmFtIHtTdHJpbmd9IHBhc3N3b3JkIFBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aCAob3B0aW9uYWwpLgogKgogKiBAcmV0dXJuIFBLQ1MjMTIgUEZYIG9iamVjdC4KICovCnAxMi5wa2NzMTJGcm9tQXNuMSA9IGZ1bmN0aW9uKG9iaiwgc3RyaWN0LCBwYXNzd29yZCkgewogIC8vIGhhbmRsZSBhcmdzCiAgaWYodHlwZW9mIHN0cmljdCA9PT0gJ3N0cmluZycpIHsKICAgIHBhc3N3b3JkID0gc3RyaWN0OwogICAgc3RyaWN0ID0gdHJ1ZTsKICB9IGVsc2UgaWYoc3RyaWN0ID09PSB1bmRlZmluZWQpIHsKICAgIHN0cmljdCA9IHRydWU7CiAgfQoKICAvLyB2YWxpZGF0ZSBQRlggYW5kIGNhcHR1cmUgZGF0YQogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcGZ4VmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFBLQ1MjMTIgUEZYLiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBpcyBub3QgYW4gUEtDUyMxMiBQRlguJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcjsKICAgIHRocm93IGVycm9yOwogIH0KCiAgdmFyIHBmeCA9IHsKICAgIHZlcnNpb246IGNhcHR1cmUudmVyc2lvbi5jaGFyQ29kZUF0KDApLAogICAgc2FmZUNvbnRlbnRzOiBbXSwKCiAgICAvKioKICAgICAqIEdldHMgYmFncyB3aXRoIG1hdGNoaW5nIGF0dHJpYnV0ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGZpbHRlciB0aGUgYXR0cmlidXRlcyB0byBmaWx0ZXIgYnk6CiAgICAgKiAgICAgICAgICBbbG9jYWxLZXlJZF0gdGhlIGxvY2FsS2V5SWQgdG8gc2VhcmNoIGZvci4KICAgICAqICAgICAgICAgIFtsb2NhbEtleUlkSGV4XSB0aGUgbG9jYWxLZXlJZCBpbiBoZXggdG8gc2VhcmNoIGZvci4KICAgICAqICAgICAgICAgIFtmcmllbmRseU5hbWVdIHRoZSBmcmllbmRseSBuYW1lIHRvIHNlYXJjaCBmb3IuCiAgICAgKiAgICAgICAgICBbYmFnVHlwZV0gYmFnIHR5cGUgdG8gbmFycm93IGVhY2ggYXR0cmlidXRlIHNlYXJjaCBieS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGEgbWFwIG9mIGF0dHJpYnV0ZSB0eXBlIHRvIGFuIGFycmF5IG9mIG1hdGNoaW5nIGJhZ3Mgb3IsIGlmIG5vCiAgICAgKiAgICAgICAgICAgYXR0cmlidXRlIHdhcyBnaXZlbiBidXQgYSBiYWcgdHlwZSwgdGhlIG1hcCBrZXkgd2lsbCBiZSB0aGUKICAgICAqICAgICAgICAgICBiYWcgdHlwZS4KICAgICAqLwogICAgZ2V0QmFnczogZnVuY3Rpb24oZmlsdGVyKSB7CiAgICAgIHZhciBydmFsID0ge307CgogICAgICB2YXIgbG9jYWxLZXlJZDsKICAgICAgaWYoJ2xvY2FsS2V5SWQnIGluIGZpbHRlcikgewogICAgICAgIGxvY2FsS2V5SWQgPSBmaWx0ZXIubG9jYWxLZXlJZDsKICAgICAgfSBlbHNlIGlmKCdsb2NhbEtleUlkSGV4JyBpbiBmaWx0ZXIpIHsKICAgICAgICBsb2NhbEtleUlkID0gZm9yZ2UudXRpbC5oZXhUb0J5dGVzKGZpbHRlci5sb2NhbEtleUlkSGV4KTsKICAgICAgfQoKICAgICAgLy8gZmlsdGVyIG9uIGJhZ1R5cGUgb25seQogICAgICBpZihsb2NhbEtleUlkID09PSB1bmRlZmluZWQgJiYgISgnZnJpZW5kbHlOYW1lJyBpbiBmaWx0ZXIpICYmCiAgICAgICAgJ2JhZ1R5cGUnIGluIGZpbHRlcikgewogICAgICAgIHJ2YWxbZmlsdGVyLmJhZ1R5cGVdID0gX2dldEJhZ3NCeUF0dHJpYnV0ZSgKICAgICAgICAgIHBmeC5zYWZlQ29udGVudHMsIG51bGwsIG51bGwsIGZpbHRlci5iYWdUeXBlKTsKICAgICAgfQoKICAgICAgaWYobG9jYWxLZXlJZCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgcnZhbC5sb2NhbEtleUlkID0gX2dldEJhZ3NCeUF0dHJpYnV0ZSgKICAgICAgICAgIHBmeC5zYWZlQ29udGVudHMsICdsb2NhbEtleUlkJywKICAgICAgICAgIGxvY2FsS2V5SWQsIGZpbHRlci5iYWdUeXBlKTsKICAgICAgfQogICAgICBpZignZnJpZW5kbHlOYW1lJyBpbiBmaWx0ZXIpIHsKICAgICAgICBydmFsLmZyaWVuZGx5TmFtZSA9IF9nZXRCYWdzQnlBdHRyaWJ1dGUoCiAgICAgICAgICBwZnguc2FmZUNvbnRlbnRzLCAnZnJpZW5kbHlOYW1lJywKICAgICAgICAgIGZpbHRlci5mcmllbmRseU5hbWUsIGZpbHRlci5iYWdUeXBlKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHJ2YWw7CiAgICB9LAoKICAgIC8qKgogICAgICogREVQUkVDQVRFRDogdXNlIGdldEJhZ3MoKSBpbnN0ZWFkLgogICAgICoKICAgICAqIEdldCBiYWdzIHdpdGggbWF0Y2hpbmcgZnJpZW5kbHlOYW1lIGF0dHJpYnV0ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gZnJpZW5kbHlOYW1lIHRoZSBmcmllbmRseSBuYW1lIHRvIHNlYXJjaCBmb3IuCiAgICAgKiBAcGFyYW0gW2JhZ1R5cGVdIGJhZyB0eXBlIHRvIG5hcnJvdyBzZWFyY2ggYnkuCiAgICAgKgogICAgICogQHJldHVybiBhbiBhcnJheSBvZiBiYWdzIHdpdGggbWF0Y2hpbmcgZnJpZW5kbHlOYW1lIGF0dHJpYnV0ZS4KICAgICAqLwogICAgZ2V0QmFnc0J5RnJpZW5kbHlOYW1lOiBmdW5jdGlvbihmcmllbmRseU5hbWUsIGJhZ1R5cGUpIHsKICAgICAgcmV0dXJuIF9nZXRCYWdzQnlBdHRyaWJ1dGUoCiAgICAgICAgcGZ4LnNhZmVDb250ZW50cywgJ2ZyaWVuZGx5TmFtZScsIGZyaWVuZGx5TmFtZSwgYmFnVHlwZSk7CiAgICB9LAoKICAgIC8qKgogICAgICogREVQUkVDQVRFRDogdXNlIGdldEJhZ3MoKSBpbnN0ZWFkLgogICAgICoKICAgICAqIEdldCBiYWdzIHdpdGggbWF0Y2hpbmcgbG9jYWxLZXlJZCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHBhcmFtIGxvY2FsS2V5SWQgdGhlIGxvY2FsS2V5SWQgdG8gc2VhcmNoIGZvci4KICAgICAqIEBwYXJhbSBbYmFnVHlwZV0gYmFnIHR5cGUgdG8gbmFycm93IHNlYXJjaCBieS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIGJhZ3Mgd2l0aCBtYXRjaGluZyBsb2NhbEtleUlkIGF0dHJpYnV0ZS4KICAgICAqLwogICAgZ2V0QmFnc0J5TG9jYWxLZXlJZDogZnVuY3Rpb24obG9jYWxLZXlJZCwgYmFnVHlwZSkgewogICAgICByZXR1cm4gX2dldEJhZ3NCeUF0dHJpYnV0ZSgKICAgICAgICBwZnguc2FmZUNvbnRlbnRzLCAnbG9jYWxLZXlJZCcsIGxvY2FsS2V5SWQsIGJhZ1R5cGUpOwogICAgfQogIH07CgogIGlmKGNhcHR1cmUudmVyc2lvbi5jaGFyQ29kZUF0KDApICE9PSAzKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1BLQ1MjMTIgUEZYIG9mIHZlcnNpb24gb3RoZXIgdGhhbiAzIG5vdCBzdXBwb3J0ZWQuJyk7CiAgICBlcnJvci52ZXJzaW9uID0gY2FwdHVyZS52ZXJzaW9uLmNoYXJDb2RlQXQoMCk7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIGlmKGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5jb250ZW50VHlwZSkgIT09IHBraS5vaWRzLmRhdGEpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignT25seSBQS0NTIzEyIFBGWCBpbiBwYXNzd29yZCBpbnRlZ3JpdHkgbW9kZSBzdXBwb3J0ZWQuJyk7CiAgICBlcnJvci5vaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuY29udGVudFR5cGUpOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICB2YXIgZGF0YSA9IGNhcHR1cmUuY29udGVudC52YWx1ZVswXTsKICBpZihkYXRhLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgIGRhdGEudHlwZSAhPT0gYXNuMS5UeXBlLk9DVEVUU1RSSU5HKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BLQ1MjMTIgYXV0aFNhZmUgY29udGVudCBkYXRhIGlzIG5vdCBhbiBPQ1RFVCBTVFJJTkcuJyk7CiAgfQogIGRhdGEgPSBfZGVjb2RlUGtjczdEYXRhKGRhdGEpOwoKICAvLyBjaGVjayBmb3IgTUFDCiAgaWYoY2FwdHVyZS5tYWMpIHsKICAgIHZhciBtZCA9IG51bGw7CiAgICB2YXIgbWFjS2V5Qnl0ZXMgPSAwOwogICAgdmFyIG1hY0FsZ29yaXRobSA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5tYWNBbGdvcml0aG0pOwogICAgc3dpdGNoKG1hY0FsZ29yaXRobSkgewogICAgY2FzZSBwa2kub2lkcy5zaGExOgogICAgICBtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgIG1hY0tleUJ5dGVzID0gMjA7CiAgICAgIGJyZWFrOwogICAgY2FzZSBwa2kub2lkcy5zaGEyNTY6CiAgICAgIG1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICBtYWNLZXlCeXRlcyA9IDMyOwogICAgICBicmVhazsKICAgIGNhc2UgcGtpLm9pZHMuc2hhMzg0OgogICAgICBtZCA9IGZvcmdlLm1kLnNoYTM4NC5jcmVhdGUoKTsKICAgICAgbWFjS2V5Qnl0ZXMgPSA0ODsKICAgICAgYnJlYWs7CiAgICBjYXNlIHBraS5vaWRzLnNoYTUxMjoKICAgICAgbWQgPSBmb3JnZS5tZC5zaGE1MTIuY3JlYXRlKCk7CiAgICAgIG1hY0tleUJ5dGVzID0gNjQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSBwa2kub2lkcy5tZDU6CiAgICAgIG1kID0gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpOwogICAgICBtYWNLZXlCeXRlcyA9IDE2OwogICAgICBicmVhazsKICAgIH0KICAgIGlmKG1kID09PSBudWxsKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyMxMiB1c2VzIHVuc3VwcG9ydGVkIE1BQyBhbGdvcml0aG06ICcgKyBtYWNBbGdvcml0aG0pOwogICAgfQoKICAgIC8vIHZlcmlmeSBNQUMgKGl0ZXJhdGlvbnMgZGVmYXVsdCB0byAxKQogICAgdmFyIG1hY1NhbHQgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKGNhcHR1cmUubWFjU2FsdCk7CiAgICB2YXIgbWFjSXRlcmF0aW9ucyA9ICgoJ21hY0l0ZXJhdGlvbnMnIGluIGNhcHR1cmUpID8KICAgICAgcGFyc2VJbnQoZm9yZ2UudXRpbC5ieXRlc1RvSGV4KGNhcHR1cmUubWFjSXRlcmF0aW9ucyksIDE2KSA6IDEpOwogICAgdmFyIG1hY0tleSA9IHAxMi5nZW5lcmF0ZUtleSgKICAgICAgcGFzc3dvcmQsIG1hY1NhbHQsIDMsIG1hY0l0ZXJhdGlvbnMsIG1hY0tleUJ5dGVzLCBtZCk7CiAgICB2YXIgbWFjID0gZm9yZ2UuaG1hYy5jcmVhdGUoKTsKICAgIG1hYy5zdGFydChtZCwgbWFjS2V5KTsKICAgIG1hYy51cGRhdGUoZGF0YS52YWx1ZSk7CiAgICB2YXIgbWFjVmFsdWUgPSBtYWMuZ2V0TWFjKCk7CiAgICBpZihtYWNWYWx1ZS5nZXRCeXRlcygpICE9PSBjYXB0dXJlLm1hY0RpZ2VzdCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BLQ1MjMTIgTUFDIGNvdWxkIG5vdCBiZSB2ZXJpZmllZC4gSW52YWxpZCBwYXNzd29yZD8nKTsKICAgIH0KICB9CgogIF9kZWNvZGVBdXRoZW50aWNhdGVkU2FmZShwZngsIGRhdGEudmFsdWUsIHN0cmljdCwgcGFzc3dvcmQpOwogIHJldHVybiBwZng7Cn07CgovKioKICogRGVjb2RlcyBQS0NTIzcgRGF0YS4gUEtDUyM3IChSRkMgMjMxNSkgZGVmaW5lcyAiRGF0YSIgYXMgYW4gT0NURVQgU1RSSU5HLAogKiBidXQgaXQgaXMgc29tZXRpbWVzIGFuIE9DVEVUIFNUUklORyB0aGF0IGlzIGNvbXBvc2VkL2NvbnN0cnVjdGVkIG9mIGNodW5rcywKICogZWFjaCBpdHMgb3duIE9DVEVUIFNUUklORy4gVGhpcyBpcyBCRVItZW5jb2RpbmcgdnMuIERFUi1lbmNvZGluZy4gVGhpcwogKiBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoaXMgY29ybmVyLWNhc2UgaW50byB0aGUgdXN1YWwgc2ltcGxlLAogKiBub24tY29tcG9zZWQvY29uc3RydWN0ZWQgT0NURVQgU1RSSU5HLgogKgogKiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBtb3ZlZCB0byBBU04uMSBhdCBzb21lIHBvaW50IHRvIGJldHRlciBkZWFsIHdpdGgKICogbW9yZSBCRVItZW5jb2RpbmcgaXNzdWVzLCBzaG91bGQgdGhleSBhcmlzZS4KICoKICogQHBhcmFtIGRhdGEgdGhlIEFTTi4xIERhdGEgb2JqZWN0IHRvIHRyYW5zZm9ybS4KICovCmZ1bmN0aW9uIF9kZWNvZGVQa2NzN0RhdGEoZGF0YSkgewogIC8vIGhhbmRsZSBzcGVjaWFsIGNhc2Ugb2YgImNodW5rZWQiIGRhdGEgY29udGVudDogYW4gb2N0ZXQgc3RyaW5nIGNvbXBvc2VkCiAgLy8gb2Ygb3RoZXIgb2N0ZXQgc3RyaW5ncwogIGlmKGRhdGEuY29tcG9zZWQgfHwgZGF0YS5jb25zdHJ1Y3RlZCkgewogICAgdmFyIHZhbHVlID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBkYXRhLnZhbHVlLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhbHVlLnB1dEJ5dGVzKGRhdGEudmFsdWVbaV0udmFsdWUpOwogICAgfQogICAgZGF0YS5jb21wb3NlZCA9IGRhdGEuY29uc3RydWN0ZWQgPSBmYWxzZTsKICAgIGRhdGEudmFsdWUgPSB2YWx1ZS5nZXRCeXRlcygpOwogIH0KICByZXR1cm4gZGF0YTsKfQoKLyoqCiAqIERlY29kZSBQS0NTIzEyIEF1dGhlbnRpY2F0ZWRTYWZlIChCRVIgZW5jb2RlZCkgaW50byBQRlggb2JqZWN0LgogKgogKiBUaGUgQXV0aGVudGljYXRlZFNhZmUgaXMgYSBCRVItZW5jb2RlZCBTRVFVRU5DRSBPRiBDb250ZW50SW5mby4KICoKICogQHBhcmFtIHBmeCBUaGUgUEtDUyMxMiBQRlggb2JqZWN0IHRvIGZpbGwuCiAqIEBwYXJhbSB7U3RyaW5nfSBhdXRoU2FmZSBCRVItZW5jb2RlZCBBdXRoZW50aWNhdGVkU2FmZS4KICogQHBhcmFtIHN0cmljdCB0cnVlIHRvIHVzZSBzdHJpY3QgREVSIGRlY29kaW5nLCBmYWxzZSBub3QgdG8uCiAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzd29yZCBQYXNzd29yZCB0byBkZWNyeXB0IHdpdGggKG9wdGlvbmFsKS4KICovCmZ1bmN0aW9uIF9kZWNvZGVBdXRoZW50aWNhdGVkU2FmZShwZngsIGF1dGhTYWZlLCBzdHJpY3QsIHBhc3N3b3JkKSB7CiAgYXV0aFNhZmUgPSBhc24xLmZyb21EZXIoYXV0aFNhZmUsIHN0cmljdCk7ICAvKiBhY3R1YWxseSBpdCdzIEJFUiBlbmNvZGVkICovCgogIGlmKGF1dGhTYWZlLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgIGF1dGhTYWZlLnR5cGUgIT09IGFzbjEuVHlwZS5TRVFVRU5DRSB8fAogICAgIGF1dGhTYWZlLmNvbnN0cnVjdGVkICE9PSB0cnVlKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BLQ1MjMTIgQXV0aGVudGljYXRlZFNhZmUgZXhwZWN0ZWQgdG8gYmUgYSAnICsKICAgICAgJ1NFUVVFTkNFIE9GIENvbnRlbnRJbmZvJyk7CiAgfQoKICBmb3IodmFyIGkgPSAwOyBpIDwgYXV0aFNhZmUudmFsdWUubGVuZ3RoOyBpICsrKSB7CiAgICB2YXIgY29udGVudEluZm8gPSBhdXRoU2FmZS52YWx1ZVtpXTsKCiAgICAvLyB2YWxpZGF0ZSBjb250ZW50SW5mbyBhbmQgY2FwdHVyZSBkYXRhCiAgICB2YXIgY2FwdHVyZSA9IHt9OwogICAgdmFyIGVycm9ycyA9IFtdOwogICAgaWYoIWFzbjEudmFsaWRhdGUoY29udGVudEluZm8sIGNvbnRlbnRJbmZvVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgQ29udGVudEluZm8uJyk7CiAgICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgdmFyIG9iaiA9IHsKICAgICAgZW5jcnlwdGVkOiBmYWxzZQogICAgfTsKICAgIHZhciBzYWZlQ29udGVudHMgPSBudWxsOwogICAgdmFyIGRhdGEgPSBjYXB0dXJlLmNvbnRlbnQudmFsdWVbMF07CiAgICBzd2l0Y2goYXNuMS5kZXJUb09pZChjYXB0dXJlLmNvbnRlbnRUeXBlKSkgewogICAgY2FzZSBwa2kub2lkcy5kYXRhOgogICAgICBpZihkYXRhLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgICAgICBkYXRhLnR5cGUgIT09IGFzbjEuVHlwZS5PQ1RFVFNUUklORykgewogICAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyMxMiBTYWZlQ29udGVudHMgRGF0YSBpcyBub3QgYW4gT0NURVQgU1RSSU5HLicpOwogICAgICB9CiAgICAgIHNhZmVDb250ZW50cyA9IF9kZWNvZGVQa2NzN0RhdGEoZGF0YSkudmFsdWU7CiAgICAgIGJyZWFrOwogICAgY2FzZSBwa2kub2lkcy5lbmNyeXB0ZWREYXRhOgogICAgICBzYWZlQ29udGVudHMgPSBfZGVjcnlwdFNhZmVDb250ZW50cyhkYXRhLCBwYXNzd29yZCk7CiAgICAgIG9iai5lbmNyeXB0ZWQgPSB0cnVlOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgUEtDUyMxMiBjb250ZW50VHlwZS4nKTsKICAgICAgZXJyb3IuY29udGVudFR5cGUgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuY29udGVudFR5cGUpOwogICAgICB0aHJvdyBlcnJvcjsKICAgIH0KCiAgICBvYmouc2FmZUJhZ3MgPSBfZGVjb2RlU2FmZUNvbnRlbnRzKHNhZmVDb250ZW50cywgc3RyaWN0LCBwYXNzd29yZCk7CiAgICBwZnguc2FmZUNvbnRlbnRzLnB1c2gob2JqKTsKICB9Cn0KCi8qKgogKiBEZWNyeXB0IFBLQ1MjNyBFbmNyeXB0ZWREYXRhIHN0cnVjdHVyZS4KICoKICogQHBhcmFtIGRhdGEgQVNOLjEgZW5jb2RlZCBFbmNyeXB0ZWRDb250ZW50SW5mbyBvYmplY3QuCiAqIEBwYXJhbSBwYXNzd29yZCBUaGUgdXNlci1wcm92aWRlZCBwYXNzd29yZC4KICoKICogQHJldHVybiBUaGUgZGVjcnlwdGVkIFNhZmVDb250ZW50cyAoQVNOLjEgb2JqZWN0KS4KICovCmZ1bmN0aW9uIF9kZWNyeXB0U2FmZUNvbnRlbnRzKGRhdGEsIHBhc3N3b3JkKSB7CiAgdmFyIGNhcHR1cmUgPSB7fTsKICB2YXIgZXJyb3JzID0gW107CiAgaWYoIWFzbjEudmFsaWRhdGUoCiAgICBkYXRhLCBmb3JnZS5wa2NzNy5hc24xLmVuY3J5cHRlZERhdGFWYWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgRW5jcnlwdGVkQ29udGVudEluZm8uJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuY29udGVudFR5cGUpOwogIGlmKG9pZCAhPT0gcGtpLm9pZHMuZGF0YSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKAogICAgICAnUEtDUyMxMiBFbmNyeXB0ZWRDb250ZW50SW5mbyBDb250ZW50VHlwZSBpcyBub3QgRGF0YS4nKTsKICAgIGVycm9yLm9pZCA9IG9pZDsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZ2V0IGNpcGhlcgogIG9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5lbmNBbGdvcml0aG0pOwogIHZhciBjaXBoZXIgPSBwa2kucGJlLmdldENpcGhlcihvaWQsIGNhcHR1cmUuZW5jUGFyYW1ldGVyLCBwYXNzd29yZCk7CgogIC8vIGdldCBlbmNyeXB0ZWQgZGF0YQogIHZhciBlbmNyeXB0ZWRDb250ZW50QXNuMSA9IF9kZWNvZGVQa2NzN0RhdGEoY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50QXNuMSk7CiAgdmFyIGVuY3J5cHRlZCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGVuY3J5cHRlZENvbnRlbnRBc24xLnZhbHVlKTsKCiAgY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQpOwogIGlmKCFjaXBoZXIuZmluaXNoKCkpIHsKICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgUEtDUyMxMiBTYWZlQ29udGVudHMuJyk7CiAgfQoKICByZXR1cm4gY2lwaGVyLm91dHB1dC5nZXRCeXRlcygpOwp9CgovKioKICogRGVjb2RlIFBLQ1MjMTIgU2FmZUNvbnRlbnRzIChCRVItZW5jb2RlZCkgaW50byBhcnJheSBvZiBCYWcgb2JqZWN0cy4KICoKICogVGhlIHNhZmVDb250ZW50cyBpcyBhIEJFUi1lbmNvZGVkIFNFUVVFTkNFIE9GIFNhZmVCYWcuCiAqCiAqIEBwYXJhbSB7U3RyaW5nfSBzYWZlQ29udGVudHMgQkVSLWVuY29kZWQgc2FmZUNvbnRlbnRzLgogKiBAcGFyYW0gc3RyaWN0IHRydWUgdG8gdXNlIHN0cmljdCBERVIgZGVjb2RpbmcsIGZhbHNlIG5vdCB0by4KICogQHBhcmFtIHtTdHJpbmd9IHBhc3N3b3JkIFBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aCAob3B0aW9uYWwpLgogKgogKiBAcmV0dXJuIHtBcnJheX0gQXJyYXkgb2YgQmFnIG9iamVjdHMuCiAqLwpmdW5jdGlvbiBfZGVjb2RlU2FmZUNvbnRlbnRzKHNhZmVDb250ZW50cywgc3RyaWN0LCBwYXNzd29yZCkgewogIC8vIGlmIHN0cmljdCBhbmQgbm8gc2FmZSBjb250ZW50cywgcmV0dXJuIGVtcHR5IHNhZmVzCiAgaWYoIXN0cmljdCAmJiBzYWZlQ29udGVudHMubGVuZ3RoID09PSAwKSB7CiAgICByZXR1cm4gW107CiAgfQoKICAvLyBhY3R1YWxseSBpdCdzIEJFUi1lbmNvZGVkCiAgc2FmZUNvbnRlbnRzID0gYXNuMS5mcm9tRGVyKHNhZmVDb250ZW50cywgc3RyaWN0KTsKCiAgaWYoc2FmZUNvbnRlbnRzLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgc2FmZUNvbnRlbnRzLnR5cGUgIT09IGFzbjEuVHlwZS5TRVFVRU5DRSB8fAogICAgc2FmZUNvbnRlbnRzLmNvbnN0cnVjdGVkICE9PSB0cnVlKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICdQS0NTIzEyIFNhZmVDb250ZW50cyBleHBlY3RlZCB0byBiZSBhIFNFUVVFTkNFIE9GIFNhZmVCYWcuJyk7CiAgfQoKICB2YXIgcmVzID0gW107CiAgZm9yKHZhciBpID0gMDsgaSA8IHNhZmVDb250ZW50cy52YWx1ZS5sZW5ndGg7IGkrKykgewogICAgdmFyIHNhZmVCYWcgPSBzYWZlQ29udGVudHMudmFsdWVbaV07CgogICAgLy8gdmFsaWRhdGUgU2FmZUJhZyBhbmQgY2FwdHVyZSBkYXRhCiAgICB2YXIgY2FwdHVyZSA9IHt9OwogICAgdmFyIGVycm9ycyA9IFtdOwogICAgaWYoIWFzbjEudmFsaWRhdGUoc2FmZUJhZywgc2FmZUJhZ1ZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFNhZmVCYWcuJyk7CiAgICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLyogQ3JlYXRlIGJhZyBvYmplY3QgYW5kIHB1c2ggdG8gcmVzdWx0IGFycmF5LiAqLwogICAgdmFyIGJhZyA9IHsKICAgICAgdHlwZTogYXNuMS5kZXJUb09pZChjYXB0dXJlLmJhZ0lkKSwKICAgICAgYXR0cmlidXRlczogX2RlY29kZUJhZ0F0dHJpYnV0ZXMoY2FwdHVyZS5iYWdBdHRyaWJ1dGVzKQogICAgfTsKICAgIHJlcy5wdXNoKGJhZyk7CgogICAgdmFyIHZhbGlkYXRvciwgZGVjb2RlcjsKICAgIHZhciBiYWdBc24xID0gY2FwdHVyZS5iYWdWYWx1ZS52YWx1ZVswXTsKICAgIHN3aXRjaChiYWcudHlwZSkgewogICAgICBjYXNlIHBraS5vaWRzLnBrY3M4U2hyb3VkZWRLZXlCYWc6CiAgICAgICAgLyogYmFnQXNuMSBoYXMgYSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbywgd2hpY2ggd2UgbmVlZCB0byBkZWNyeXB0LgogICAgICAgICAgIEFmdGVyd2FyZHMgd2UgY2FuIGhhbmRsZSBpdCBsaWtlIGEga2V5QmFnLAogICAgICAgICAgIHdoaWNoIGlzIGEgUHJpdmF0ZUtleUluZm8uICovCiAgICAgICAgYmFnQXNuMSA9IHBraS5kZWNyeXB0UHJpdmF0ZUtleUluZm8oYmFnQXNuMSwgcGFzc3dvcmQpOwogICAgICAgIGlmKGJhZ0FzbjEgPT09IG51bGwpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgJ1VuYWJsZSB0byBkZWNyeXB0IFBLQ1MjOCBTaHJvdWRlZEtleUJhZywgd3JvbmcgcGFzc3dvcmQ/Jyk7CiAgICAgICAgfQoKICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgY2FzZSBwa2kub2lkcy5rZXlCYWc6CiAgICAgICAgLyogQSBQS0NTIzEyIGtleUJhZyBpcyBhIHNpbXBsZSBQcml2YXRlS2V5SW5mbyBhcyB1bmRlcnN0b29kIGJ5IG91cgogICAgICAgICAgIFBLSSBtb2R1bGUsIGhlbmNlIHdlIGRvbid0IGhhdmUgdG8gZG8gdmFsaWRhdGlvbi9jYXB0dXJpbmcgaGVyZSwKICAgICAgICAgICBqdXN0IHBhc3Mgd2hhdCB3ZSBhbHJlYWR5IGdvdC4gKi8KICAgICAgICB0cnkgewogICAgICAgICAgYmFnLmtleSA9IHBraS5wcml2YXRlS2V5RnJvbUFzbjEoYmFnQXNuMSk7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAvLyBpZ25vcmUgdW5rbm93biBrZXkgdHlwZSwgcGFzcyBhc24xIHZhbHVlCiAgICAgICAgICBiYWcua2V5ID0gbnVsbDsKICAgICAgICAgIGJhZy5hc24xID0gYmFnQXNuMTsKICAgICAgICB9CiAgICAgICAgY29udGludWU7ICAvKiBOb3RoaW5nIG1vcmUgdG8gZG8uICovCgogICAgICBjYXNlIHBraS5vaWRzLmNlcnRCYWc6CiAgICAgICAgLyogQSBQS0NTIzEyIGNlcnRCYWcgY2FuIHdyYXAgYm90aCBYLjUwOSBhbmQgc2RzaSBjZXJ0aWZpY2F0ZXMuCiAgICAgICAgICAgVGhlcmVmb3JlIHB1dCB0aGUgU2FmZUJhZyBjb250ZW50IHRocm91Z2ggYW5vdGhlciB2YWxpZGF0b3IgdG8KICAgICAgICAgICBjYXB0dXJlIHRoZSBmaWVsZHMuICBBZnRlcndhcmRzIGNoZWNrICYgc3RvcmUgdGhlIHJlc3VsdHMuICovCiAgICAgICAgdmFsaWRhdG9yID0gY2VydEJhZ1ZhbGlkYXRvcjsKICAgICAgICBkZWNvZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpZihhc24xLmRlclRvT2lkKGNhcHR1cmUuY2VydElkKSAhPT0gcGtpLm9pZHMueDUwOUNlcnRpZmljYXRlKSB7CiAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigKICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgY2VydGlmaWNhdGUgdHlwZSwgb25seSBYLjUwOSBzdXBwb3J0ZWQuJyk7CiAgICAgICAgICAgIGVycm9yLm9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5jZXJ0SWQpOwogICAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyB0cnVlPXByb2R1Y2UgY2VydCBoYXNoCiAgICAgICAgICB2YXIgY2VydEFzbjEgPSBhc24xLmZyb21EZXIoY2FwdHVyZS5jZXJ0LCBzdHJpY3QpOwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgYmFnLmNlcnQgPSBwa2kuY2VydGlmaWNhdGVGcm9tQXNuMShjZXJ0QXNuMSwgdHJ1ZSk7CiAgICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgLy8gaWdub3JlIHVua25vd24gY2VydCB0eXBlLCBwYXNzIGFzbjEgdmFsdWUKICAgICAgICAgICAgYmFnLmNlcnQgPSBudWxsOwogICAgICAgICAgICBiYWcuYXNuMSA9IGNlcnRBc24xOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgYnJlYWs7CgogICAgICBkZWZhdWx0OgogICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgUEtDUyMxMiBTYWZlQmFnIHR5cGUuJyk7CiAgICAgICAgZXJyb3Iub2lkID0gYmFnLnR5cGU7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLyogVmFsaWRhdGUgU2FmZUJhZyB2YWx1ZSAoaS5lLiBDZXJ0QmFnLCBldGMuKSBhbmQgY2FwdHVyZSBkYXRhIGlmIG5lZWRlZC4gKi8KICAgIGlmKHZhbGlkYXRvciAhPT0gdW5kZWZpbmVkICYmCiAgICAgICAhYXNuMS52YWxpZGF0ZShiYWdBc24xLCB2YWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpIHsKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzEyICcgKyB2YWxpZGF0b3IubmFtZSk7CiAgICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLyogQ2FsbCBkZWNvZGVyIGZ1bmN0aW9uIGZyb20gYWJvdmUgdG8gc3RvcmUgdGhlIHJlc3VsdHMuICovCiAgICBkZWNvZGVyKCk7CiAgfQoKICByZXR1cm4gcmVzOwp9CgovKioKICogRGVjb2RlIFBLQ1MjMTIgU0VUIE9GIFBLQ1MxMkF0dHJpYnV0ZSBpbnRvIEphdmFTY3JpcHQgb2JqZWN0LgogKgogKiBAcGFyYW0gYXR0cmlidXRlcyBTRVQgT0YgUEtDUzEyQXR0cmlidXRlIChBU04uMSBvYmplY3QpLgogKgogKiBAcmV0dXJuIHRoZSBkZWNvZGVkIGF0dHJpYnV0ZXMuCiAqLwpmdW5jdGlvbiBfZGVjb2RlQmFnQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7CiAgdmFyIGRlY29kZWRBdHRycyA9IHt9OwoKICBpZihhdHRyaWJ1dGVzICE9PSB1bmRlZmluZWQpIHsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhciBjYXB0dXJlID0ge307CiAgICAgIHZhciBlcnJvcnMgPSBbXTsKICAgICAgaWYoIWFzbjEudmFsaWRhdGUoYXR0cmlidXRlc1tpXSwgYXR0cmlidXRlVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzEyIEJhZ0F0dHJpYnV0ZS4nKTsKICAgICAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KCiAgICAgIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUub2lkKTsKICAgICAgaWYocGtpLm9pZHNbb2lkXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgLy8gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHR5cGUsIGlnbm9yZS4KICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgZGVjb2RlZEF0dHJzW3BraS5vaWRzW29pZF1dID0gW107CiAgICAgIGZvcih2YXIgaiA9IDA7IGogPCBjYXB0dXJlLnZhbHVlcy5sZW5ndGg7ICsraikgewogICAgICAgIGRlY29kZWRBdHRyc1twa2kub2lkc1tvaWRdXS5wdXNoKGNhcHR1cmUudmFsdWVzW2pdLnZhbHVlKTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIGRlY29kZWRBdHRyczsKfQoKLyoqCiAqIFdyYXBzIGEgcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlIGluIGEgUEtDUyMxMiBQRlggd3JhcHBlci4gSWYgYQogKiBwYXNzd29yZCBpcyBwcm92aWRlZCB0aGVuIHRoZSBwcml2YXRlIGtleSB3aWxsIGJlIGVuY3J5cHRlZC4KICoKICogQW4gZW50aXJlIGNlcnRpZmljYXRlIGNoYWluIG1heSBhbHNvIGJlIGluY2x1ZGVkLiBUbyBkbyB0aGlzLCBwYXNzCiAqIGFuIGFycmF5IGZvciB0aGUgImNlcnQiIHBhcmFtZXRlciB3aGVyZSB0aGUgZmlyc3QgY2VydGlmaWNhdGUgaXMKICogdGhlIG9uZSB0aGF0IGlzIHBhaXJlZCB3aXRoIHRoZSBwcml2YXRlIGtleSBhbmQgZWFjaCBzdWJzZXF1ZW50IG9uZQogKiB2ZXJpZmllcyB0aGUgcHJldmlvdXMgb25lLiBUaGUgY2VydGlmaWNhdGVzIG1heSBiZSBpbiBQRU0gZm9ybWF0IG9yCiAqIGhhdmUgYmVlbiBhbHJlYWR5IHBhcnNlZCBieSBGb3JnZS4KICoKICogQHRvZG8gaW1wbGVtZW50IHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gZm9yIHRoZSB3aG9sZSBwYWNrYWdlCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHByaXZhdGUga2V5LgogKiBAcGFyYW0gY2VydCB0aGUgY2VydGlmaWNhdGUgKG1heSBiZSBhbiBhcnJheSBvZiBjZXJ0aWZpY2F0ZXMgaW4gb3JkZXIKICogICAgICAgICAgdG8gc3BlY2lmeSBhIGNlcnRpZmljYXRlIGNoYWluKS4KICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byB1c2UsIG51bGwgZm9yIG5vbmUuCiAqIEBwYXJhbSBvcHRpb25zOgogKiAgICAgICAgICBhbGdvcml0aG0gdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIHRvIHVzZQogKiAgICAgICAgICAgICgnYWVzMTI4JywgJ2FlczE5MicsICdhZXMyNTYnLCAnM2RlcycpLCBkZWZhdWx0cyB0byAnYWVzMTI4Jy4KICogICAgICAgICAgY291bnQgdGhlIGl0ZXJhdGlvbiBjb3VudCB0byB1c2UuCiAqICAgICAgICAgIHNhbHRTaXplIHRoZSBzYWx0IHNpemUgdG8gdXNlLgogKiAgICAgICAgICB1c2VNYWMgdHJ1ZSB0byBpbmNsdWRlIGEgTUFDLCBmYWxzZSBub3QgdG8sIGRlZmF1bHRzIHRvIHRydWUuCiAqICAgICAgICAgIGxvY2FsS2V5SWQgdGhlIGxvY2FsIGtleSBJRCB0byB1c2UsIGluIGhleC4KICogICAgICAgICAgZnJpZW5kbHlOYW1lIHRoZSBmcmllbmRseSBuYW1lIHRvIHVzZS4KICogICAgICAgICAgZ2VuZXJhdGVMb2NhbEtleUlkIHRydWUgdG8gZ2VuZXJhdGUgYSByYW5kb20gbG9jYWwga2V5IElELAogKiAgICAgICAgICAgIGZhbHNlIG5vdCB0bywgZGVmYXVsdHMgdG8gdHJ1ZS4KICoKICogQHJldHVybiB0aGUgUEtDUyMxMiBQRlggQVNOLjEgb2JqZWN0LgogKi8KcDEyLnRvUGtjczEyQXNuMSA9IGZ1bmN0aW9uKGtleSwgY2VydCwgcGFzc3dvcmQsIG9wdGlvbnMpIHsKICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zCiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgb3B0aW9ucy5zYWx0U2l6ZSA9IG9wdGlvbnMuc2FsdFNpemUgfHwgODsKICBvcHRpb25zLmNvdW50ID0gb3B0aW9ucy5jb3VudCB8fCAyMDQ4OwogIG9wdGlvbnMuYWxnb3JpdGhtID0gb3B0aW9ucy5hbGdvcml0aG0gfHwgb3B0aW9ucy5lbmNBbGdvcml0aG0gfHwgJ2FlczEyOCc7CiAgaWYoISgndXNlTWFjJyBpbiBvcHRpb25zKSkgewogICAgb3B0aW9ucy51c2VNYWMgPSB0cnVlOwogIH0KICBpZighKCdsb2NhbEtleUlkJyBpbiBvcHRpb25zKSkgewogICAgb3B0aW9ucy5sb2NhbEtleUlkID0gbnVsbDsKICB9CiAgaWYoISgnZ2VuZXJhdGVMb2NhbEtleUlkJyBpbiBvcHRpb25zKSkgewogICAgb3B0aW9ucy5nZW5lcmF0ZUxvY2FsS2V5SWQgPSB0cnVlOwogIH0KCiAgdmFyIGxvY2FsS2V5SWQgPSBvcHRpb25zLmxvY2FsS2V5SWQ7CiAgdmFyIGJhZ0F0dHJzOwogIGlmKGxvY2FsS2V5SWQgIT09IG51bGwpIHsKICAgIGxvY2FsS2V5SWQgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMobG9jYWxLZXlJZCk7CiAgfSBlbHNlIGlmKG9wdGlvbnMuZ2VuZXJhdGVMb2NhbEtleUlkKSB7CiAgICAvLyB1c2UgU0hBLTEgb2YgcGFpcmVkIGNlcnQsIGlmIGF2YWlsYWJsZQogICAgaWYoY2VydCkgewogICAgICB2YXIgcGFpcmVkQ2VydCA9IGZvcmdlLnV0aWwuaXNBcnJheShjZXJ0KSA/IGNlcnRbMF0gOiBjZXJ0OwogICAgICBpZih0eXBlb2YgcGFpcmVkQ2VydCA9PT0gJ3N0cmluZycpIHsKICAgICAgICBwYWlyZWRDZXJ0ID0gcGtpLmNlcnRpZmljYXRlRnJvbVBlbShwYWlyZWRDZXJ0KTsKICAgICAgfQogICAgICB2YXIgc2hhMSA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgIHNoYTEudXBkYXRlKGFzbjEudG9EZXIocGtpLmNlcnRpZmljYXRlVG9Bc24xKHBhaXJlZENlcnQpKS5nZXRCeXRlcygpKTsKICAgICAgbG9jYWxLZXlJZCA9IHNoYTEuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBTSEEtMSBvZiBwdWJsaWMga2V5ICh3aGljaCBjYW4gYmUgZ2VuZXJhdGVkCiAgICAgIC8vIGZyb20gcHJpdmF0ZSBrZXkgY29tcG9uZW50cyksIHNlZTogY2VydC5nZW5lcmF0ZVN1YmplY3RLZXlJZGVudGlmaWVyCiAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBieXRlcwogICAgICBsb2NhbEtleUlkID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzKDIwKTsKICAgIH0KICB9CgogIHZhciBhdHRycyA9IFtdOwogIGlmKGxvY2FsS2V5SWQgIT09IG51bGwpIHsKICAgIGF0dHJzLnB1c2goCiAgICAgIC8vIGxvY2FsS2V5SUQKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGF0dHJJZAogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgIGFzbjEub2lkVG9EZXIocGtpLm9pZHMubG9jYWxLZXlJZCkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgLy8gYXR0clZhbHVlcwogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICAgICAgbG9jYWxLZXlJZCkKICAgICAgICBdKQogICAgICBdKSk7CiAgfQogIGlmKCdmcmllbmRseU5hbWUnIGluIG9wdGlvbnMpIHsKICAgIGF0dHJzLnB1c2goCiAgICAgIC8vIGZyaWVuZGx5TmFtZQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gYXR0cklkCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5mcmllbmRseU5hbWUpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIGF0dHJWYWx1ZXMKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwgWwogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CTVBTVFJJTkcsIGZhbHNlLAogICAgICAgICAgICBvcHRpb25zLmZyaWVuZGx5TmFtZSkKICAgICAgICBdKQogICAgICBdKSk7CiAgfQoKICBpZihhdHRycy5sZW5ndGggPiAwKSB7CiAgICBiYWdBdHRycyA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBhdHRycyk7CiAgfQoKICAvLyBjb2xsZWN0IGNvbnRlbnRzIGZvciBBdXRoZW50aWNhdGVkU2FmZQogIHZhciBjb250ZW50cyA9IFtdOwoKICAvLyBjcmVhdGUgc2FmZSBiYWcocykgZm9yIGNlcnRpZmljYXRlIGNoYWluCiAgdmFyIGNoYWluID0gW107CiAgaWYoY2VydCAhPT0gbnVsbCkgewogICAgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGNlcnQpKSB7CiAgICAgIGNoYWluID0gY2VydDsKICAgIH0gZWxzZSB7CiAgICAgIGNoYWluID0gW2NlcnRdOwogICAgfQogIH0KCiAgdmFyIGNlcnRTYWZlQmFncyA9IFtdOwogIGZvcih2YXIgaSA9IDA7IGkgPCBjaGFpbi5sZW5ndGg7ICsraSkgewogICAgLy8gY29udmVydCBjZXJ0IGZyb20gUEVNIGFzIG5lY2Vzc2FyeQogICAgY2VydCA9IGNoYWluW2ldOwogICAgaWYodHlwZW9mIGNlcnQgPT09ICdzdHJpbmcnKSB7CiAgICAgIGNlcnQgPSBwa2kuY2VydGlmaWNhdGVGcm9tUGVtKGNlcnQpOwogICAgfQoKICAgIC8vIFNhZmVCYWcKICAgIHZhciBjZXJ0QmFnQXR0cnMgPSAoaSA9PT0gMCkgPyBiYWdBdHRycyA6IHVuZGVmaW5lZDsKICAgIHZhciBjZXJ0QXNuMSA9IHBraS5jZXJ0aWZpY2F0ZVRvQXNuMShjZXJ0KTsKICAgIHZhciBjZXJ0U2FmZUJhZyA9CiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAvLyBiYWdJZAogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgIGFzbjEub2lkVG9EZXIocGtpLm9pZHMuY2VydEJhZykuZ2V0Qnl0ZXMoKSksCiAgICAgICAgLy8gYmFnVmFsdWUKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgIC8vIENlcnRCYWcKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgICAgLy8gY2VydElkCiAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgICBhc24xLm9pZFRvRGVyKHBraS5vaWRzLng1MDlDZXJ0aWZpY2F0ZSkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICAgIC8vIGNlcnRWYWx1ZSAoeDUwOUNlcnRpZmljYXRlKQogICAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgICAgICAgYXNuMS50b0RlcihjZXJ0QXNuMSkuZ2V0Qnl0ZXMoKSkKICAgICAgICAgICAgXSldKV0pLAogICAgICAgIC8vIGJhZ0F0dHJpYnV0ZXMgKE9QVElPTkFMKQogICAgICAgIGNlcnRCYWdBdHRycwogICAgICBdKTsKICAgIGNlcnRTYWZlQmFncy5wdXNoKGNlcnRTYWZlQmFnKTsKICB9CgogIGlmKGNlcnRTYWZlQmFncy5sZW5ndGggPiAwKSB7CiAgICAvLyBTYWZlQ29udGVudHMKICAgIHZhciBjZXJ0U2FmZUNvbnRlbnRzID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIGNlcnRTYWZlQmFncyk7CgogICAgLy8gQ29udGVudEluZm8KICAgIHZhciBjZXJ0Q0kgPQogICAgICAvLyBQS0NTIzcgQ29udGVudEluZm8KICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGNvbnRlbnRUeXBlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgLy8gT0lEIGZvciB0aGUgY29udGVudCB0eXBlIGlzICdkYXRhJwogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5kYXRhKS5nZXRCeXRlcygpKSwKICAgICAgICAvLyBjb250ZW50CiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsCiAgICAgICAgICAgIGFzbjEudG9EZXIoY2VydFNhZmVDb250ZW50cykuZ2V0Qnl0ZXMoKSkKICAgICAgICBdKQogICAgICBdKTsKICAgIGNvbnRlbnRzLnB1c2goY2VydENJKTsKICB9CgogIC8vIGNyZWF0ZSBzYWZlIGNvbnRlbnRzIGZvciBwcml2YXRlIGtleQogIHZhciBrZXlCYWcgPSBudWxsOwogIGlmKGtleSAhPT0gbnVsbCkgewogICAgLy8gU2FmZUJhZwogICAgdmFyIHBrQXNuMSA9IHBraS53cmFwUnNhUHJpdmF0ZUtleShwa2kucHJpdmF0ZUtleVRvQXNuMShrZXkpKTsKICAgIGlmKHBhc3N3b3JkID09PSBudWxsKSB7CiAgICAgIC8vIG5vIGVuY3J5cHRpb24KICAgICAga2V5QmFnID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGJhZ0lkCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5rZXlCYWcpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIGJhZ1ZhbHVlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgICAvLyBQcml2YXRlS2V5SW5mbwogICAgICAgICAgcGtBc24xCiAgICAgICAgXSksCiAgICAgICAgLy8gYmFnQXR0cmlidXRlcyAoT1BUSU9OQUwpCiAgICAgICAgYmFnQXR0cnMKICAgICAgXSk7CiAgICB9IGVsc2UgewogICAgICAvLyBlbmNyeXB0ZWQgUHJpdmF0ZUtleUluZm8KICAgICAga2V5QmFnID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGJhZ0lkCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5wa2NzOFNocm91ZGVkS2V5QmFnKS5nZXRCeXRlcygpKSwKICAgICAgICAvLyBiYWdWYWx1ZQogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICAgICAgLy8gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8KICAgICAgICAgIHBraS5lbmNyeXB0UHJpdmF0ZUtleUluZm8ocGtBc24xLCBwYXNzd29yZCwgb3B0aW9ucykKICAgICAgICBdKSwKICAgICAgICAvLyBiYWdBdHRyaWJ1dGVzIChPUFRJT05BTCkKICAgICAgICBiYWdBdHRycwogICAgICBdKTsKICAgIH0KCiAgICAvLyBTYWZlQ29udGVudHMKICAgIHZhciBrZXlTYWZlQ29udGVudHMgPQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBba2V5QmFnXSk7CgogICAgLy8gQ29udGVudEluZm8KICAgIHZhciBrZXlDSSA9CiAgICAgIC8vIFBLQ1MjNyBDb250ZW50SW5mbwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gY29udGVudFR5cGUKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAvLyBPSUQgZm9yIHRoZSBjb250ZW50IHR5cGUgaXMgJ2RhdGEnCiAgICAgICAgICBhc24xLm9pZFRvRGVyKHBraS5vaWRzLmRhdGEpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIGNvbnRlbnQKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICAgICAgYXNuMS50b0RlcihrZXlTYWZlQ29udGVudHMpLmdldEJ5dGVzKCkpCiAgICAgICAgXSkKICAgICAgXSk7CiAgICBjb250ZW50cy5wdXNoKGtleUNJKTsKICB9CgogIC8vIGNyZWF0ZSBBdXRoZW50aWNhdGVkU2FmZSBieSBzdHJpbmdpbmcgdG9nZXRoZXIgdGhlIGNvbnRlbnRzCiAgdmFyIHNhZmUgPSBhc24xLmNyZWF0ZSgKICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIGNvbnRlbnRzKTsKCiAgdmFyIG1hY0RhdGE7CiAgaWYob3B0aW9ucy51c2VNYWMpIHsKICAgIC8vIE1hY0RhdGEKICAgIHZhciBzaGExID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgIHZhciBtYWNTYWx0ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigKICAgICAgZm9yZ2UucmFuZG9tLmdldEJ5dGVzKG9wdGlvbnMuc2FsdFNpemUpKTsKICAgIHZhciBjb3VudCA9IG9wdGlvbnMuY291bnQ7CiAgICAvLyAxNjAtYml0IGtleQogICAgdmFyIGtleSA9IHAxMi5nZW5lcmF0ZUtleShwYXNzd29yZCwgbWFjU2FsdCwgMywgY291bnQsIDIwKTsKICAgIHZhciBtYWMgPSBmb3JnZS5obWFjLmNyZWF0ZSgpOwogICAgbWFjLnN0YXJ0KHNoYTEsIGtleSk7CiAgICBtYWMudXBkYXRlKGFzbjEudG9EZXIoc2FmZSkuZ2V0Qnl0ZXMoKSk7CiAgICB2YXIgbWFjVmFsdWUgPSBtYWMuZ2V0TWFjKCk7CiAgICBtYWNEYXRhID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBtYWMgRGlnZXN0SW5mbwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gZGlnZXN0QWxnb3JpdGhtCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgLy8gYWxnb3JpdGhtID0gU0hBLTEKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5zaGExKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIHBhcmFtZXRlcnMgPSBOdWxsCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICBdKSwKICAgICAgICAvLyBkaWdlc3QKICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsCiAgICAgICAgICBmYWxzZSwgbWFjVmFsdWUuZ2V0Qnl0ZXMoKSkKICAgICAgXSksCiAgICAgIC8vIG1hY1NhbHQgT0NURVQgU1RSSU5HCiAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLCBtYWNTYWx0LmdldEJ5dGVzKCkpLAogICAgICAvLyBpdGVyYXRpb25zIElOVEVHRVIgKFhYWDogT25seSBzdXBwb3J0IGNvdW50IDwgNjU1MzYpCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoY291bnQpLmdldEJ5dGVzKCkKICAgICAgKQogICAgXSk7CiAgfQoKICAvLyBQRlgKICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gdmVyc2lvbiAoMykKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIGFzbjEuaW50ZWdlclRvRGVyKDMpLmdldEJ5dGVzKCkpLAogICAgLy8gUEtDUyM3IENvbnRlbnRJbmZvCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGNvbnRlbnRUeXBlCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAvLyBPSUQgZm9yIHRoZSBjb250ZW50IHR5cGUgaXMgJ2RhdGEnCiAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5kYXRhKS5nZXRCeXRlcygpKSwKICAgICAgLy8gY29udGVudAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgYXNuMS50b0RlcihzYWZlKS5nZXRCeXRlcygpKQogICAgICBdKQogICAgXSksCiAgICBtYWNEYXRhCiAgXSk7Cn07CgovKioKICogRGVyaXZlcyBhIFBLQ1MjMTIga2V5LgogKgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlcml2ZSB0aGUga2V5IG1hdGVyaWFsIGZyb20sIG51bGwgb3IKICogICAgICAgICAgdW5kZWZpbmVkIGZvciBub25lLgogKiBAcGFyYW0gc2FsdCB0aGUgc2FsdCwgYXMgYSBCeXRlQnVmZmVyLCB0byB1c2UuCiAqIEBwYXJhbSBpZCB0aGUgUEtDUyMxMiBJRCBieXRlICgxID0ga2V5IG1hdGVyaWFsLCAyID0gSVYsIDMgPSBNQUMpLgogKiBAcGFyYW0gaXRlciB0aGUgaXRlcmF0aW9uIGNvdW50LgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGRlcml2ZSBmcm9tIHRoZSBwYXNzd29yZC4KICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2UsIGRlZmF1bHRzIHRvIFNIQS0xLgogKgogKiBAcmV0dXJuIGEgQnl0ZUJ1ZmZlciB3aXRoIHRoZSBieXRlcyBkZXJpdmVkIGZyb20gdGhlIHBhc3N3b3JkLgogKi8KcDEyLmdlbmVyYXRlS2V5ID0gZm9yZ2UucGJlLmdlbmVyYXRlUGtjczEyS2V5OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncGtjczEyJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BrY3MxMicsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hc24xJywKICAnLi9obWFjJywKICAnLi9vaWRzJywKICAnLi9wa2NzN2FzbjEnLAogICcuL3BiZScsCiAgJy4vcmFuZG9tJywKICAnLi9yc2EnLAogICcuL3NoYTEnLAogICcuL3V0aWwnLAogICcuL3g1MDknCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgYSBiYXNpYyBQdWJsaWMgS2V5IEluZnJhc3RydWN0dXJlLCBpbmNsdWRpbmcKICogc3VwcG9ydCBmb3IgUlNBIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXlzLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIHNob3J0Y3V0IGZvciBhc24uMSBBUEkKdmFyIGFzbjEgPSBmb3JnZS5hc24xOwoKLyogUHVibGljIEtleSBJbmZyYXN0cnVjdHVyZSAoUEtJKSBpbXBsZW1lbnRhdGlvbi4gKi8KdmFyIHBraSA9IGZvcmdlLnBraSA9IGZvcmdlLnBraSB8fCB7fTsKCi8qKgogKiBOT1RFOiBUSElTIE1FVEhPRCBJUyBERVBSRUNBVEVELiBVc2UgcGVtLmRlY29kZSgpIGluc3RlYWQuCiAqCiAqIENvbnZlcnRzIFBFTS1mb3JtYXR0ZWQgZGF0YSB0byBERVIuCiAqCiAqIEBwYXJhbSBwZW0gdGhlIFBFTS1mb3JtYXR0ZWQgZGF0YS4KICoKICogQHJldHVybiB0aGUgREVSLWZvcm1hdHRlZCBkYXRhLgogKi8KcGtpLnBlbVRvRGVyID0gZnVuY3Rpb24ocGVtKSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IFBFTSB0byBERVI7IFBFTSBpcyBlbmNyeXB0ZWQuJyk7CiAgfQogIHJldHVybiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuYm9keSk7Cn07CgovKioKICogQ29udmVydHMgYW4gUlNBIHByaXZhdGUga2V5IGZyb20gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIHBlbSB0aGUgUEVNLWZvcm1hdHRlZCBwcml2YXRlIGtleS4KICoKICogQHJldHVybiB0aGUgcHJpdmF0ZSBrZXkuCiAqLwpwa2kucHJpdmF0ZUtleUZyb21QZW0gPSBmdW5jdGlvbihwZW0pIHsKICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShwZW0pWzBdOwoKICBpZihtc2cudHlwZSAhPT0gJ1BSSVZBVEUgS0VZJyAmJiBtc2cudHlwZSAhPT0gJ1JTQSBQUklWQVRFIEtFWScpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgcHJpdmF0ZSBrZXkgZnJvbSBQRU07IFBFTSAnICsKICAgICAgJ2hlYWRlciB0eXBlIGlzIG5vdCAiUFJJVkFURSBLRVkiIG9yICJSU0EgUFJJVkFURSBLRVkiLicpOwogICAgZXJyb3IuaGVhZGVyVHlwZSA9IG1zZy50eXBlOwogICAgdGhyb3cgZXJyb3I7CiAgfQogIGlmKG1zZy5wcm9jVHlwZSAmJiBtc2cucHJvY1R5cGUudHlwZSA9PT0gJ0VOQ1JZUFRFRCcpIHsKICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgcHJpdmF0ZSBrZXkgZnJvbSBQRU07IFBFTSBpcyBlbmNyeXB0ZWQuJyk7CiAgfQoKICAvLyBjb252ZXJ0IERFUiB0byBBU04uMSBvYmplY3QKICB2YXIgb2JqID0gYXNuMS5mcm9tRGVyKG1zZy5ib2R5KTsKCiAgcmV0dXJuIHBraS5wcml2YXRlS2V5RnJvbUFzbjEob2JqKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBSU0EgcHJpdmF0ZSBrZXkgdG8gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIGtleSB0aGUgcHJpdmF0ZSBrZXkuCiAqIEBwYXJhbSBtYXhsaW5lIHRoZSBtYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUsIGRlZmF1bHRzIHRvIDY0LgogKgogKiBAcmV0dXJuIHRoZSBQRU0tZm9ybWF0dGVkIHByaXZhdGUga2V5LgogKi8KcGtpLnByaXZhdGVLZXlUb1BlbSA9IGZ1bmN0aW9uKGtleSwgbWF4bGluZSkgewogIC8vIGNvbnZlcnQgdG8gQVNOLjEsIHRoZW4gREVSLCB0aGVuIFBFTS1lbmNvZGUKICB2YXIgbXNnID0gewogICAgdHlwZTogJ1JTQSBQUklWQVRFIEtFWScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5wcml2YXRlS2V5VG9Bc24xKGtleSkpLmdldEJ5dGVzKCkKICB9OwogIHJldHVybiBmb3JnZS5wZW0uZW5jb2RlKG1zZywge21heGxpbmU6IG1heGxpbmV9KTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIFByaXZhdGVLZXlJbmZvIHRvIFBFTSBmb3JtYXQuCiAqCiAqIEBwYXJhbSBwa2kgdGhlIFByaXZhdGVLZXlJbmZvLgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBwcml2YXRlIGtleS4KICovCnBraS5wcml2YXRlS2V5SW5mb1RvUGVtID0gZnVuY3Rpb24ocGtpLCBtYXhsaW5lKSB7CiAgLy8gY29udmVydCB0byBERVIsIHRoZW4gUEVNLWVuY29kZQogIHZhciBtc2cgPSB7CiAgICB0eXBlOiAnUFJJVkFURSBLRVknLAogICAgYm9keTogYXNuMS50b0Rlcihwa2kpLmdldEJ5dGVzKCkKICB9OwogIHJldHVybiBmb3JnZS5wZW0uZW5jb2RlKG1zZywge21heGxpbmU6IG1heGxpbmV9KTsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3BraSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wa2knLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYXNuMScsCiAgJy4vb2lkcycsCiAgJy4vcGJlJywKICAnLi9wZW0nLAogICcuL3Bia2RmMicsCiAgJy4vcGtjczEyJywKICAnLi9wc3MnLAogICcuL3JzYScsCiAgJy4vdXRpbCcsCiAgJy4veDUwOScKXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQSBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKS4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICoKICogVGhlIFRMUyBIYW5kc2hha2UgUHJvdG9jb2wgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBzdGVwczoKICoKICogLSBFeGNoYW5nZSBoZWxsbyBtZXNzYWdlcyB0byBhZ3JlZSBvbiBhbGdvcml0aG1zLCBleGNoYW5nZSByYW5kb20gdmFsdWVzLAogKiBhbmQgY2hlY2sgZm9yIHNlc3Npb24gcmVzdW1wdGlvbi4KICoKICogLSBFeGNoYW5nZSB0aGUgbmVjZXNzYXJ5IGNyeXB0b2dyYXBoaWMgcGFyYW1ldGVycyB0byBhbGxvdyB0aGUgY2xpZW50IGFuZAogKiBzZXJ2ZXIgdG8gYWdyZWUgb24gYSBwcmVtYXN0ZXIgc2VjcmV0LgogKgogKiAtIEV4Y2hhbmdlIGNlcnRpZmljYXRlcyBhbmQgY3J5cHRvZ3JhcGhpYyBpbmZvcm1hdGlvbiB0byBhbGxvdyB0aGUgY2xpZW50CiAqIGFuZCBzZXJ2ZXIgdG8gYXV0aGVudGljYXRlIHRoZW1zZWx2ZXMuCiAqCiAqIC0gR2VuZXJhdGUgYSBtYXN0ZXIgc2VjcmV0IGZyb20gdGhlIHByZW1hc3RlciBzZWNyZXQgYW5kIGV4Y2hhbmdlZCByYW5kb20KICogdmFsdWVzLgogKgogKiAtIFByb3ZpZGUgc2VjdXJpdHkgcGFyYW1ldGVycyB0byB0aGUgcmVjb3JkIGxheWVyLgogKgogKiAtIEFsbG93IHRoZSBjbGllbnQgYW5kIHNlcnZlciB0byB2ZXJpZnkgdGhhdCB0aGVpciBwZWVyIGhhcyBjYWxjdWxhdGVkIHRoZQogKiBzYW1lIHNlY3VyaXR5IHBhcmFtZXRlcnMgYW5kIHRoYXQgdGhlIGhhbmRzaGFrZSBvY2N1cnJlZCB3aXRob3V0IHRhbXBlcmluZwogKiBieSBhbiBhdHRhY2tlci4KICoKICogVXAgdG8gNCBkaWZmZXJlbnQgbWVzc2FnZXMgbWF5IGJlIHNlbnQgZHVyaW5nIGEga2V5IGV4Y2hhbmdlLiBUaGUgc2VydmVyCiAqIGNlcnRpZmljYXRlLCB0aGUgc2VydmVyIGtleSBleGNoYW5nZSwgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSwgYW5kIHRoZQogKiBjbGllbnQga2V5IGV4Y2hhbmdlLgogKgogKiBBIHR5cGljYWwgaGFuZHNoYWtlIChmcm9tIHRoZSBjbGllbnQncyBwZXJzcGVjdGl2ZSkuCiAqCiAqIDEuIENsaWVudCBzZW5kcyBDbGllbnRIZWxsby4KICogMi4gQ2xpZW50IHJlY2VpdmVzIFNlcnZlckhlbGxvLgogKiAzLiBDbGllbnQgcmVjZWl2ZXMgb3B0aW9uYWwgQ2VydGlmaWNhdGUuCiAqIDQuIENsaWVudCByZWNlaXZlcyBvcHRpb25hbCBTZXJ2ZXJLZXlFeGNoYW5nZS4KICogNS4gQ2xpZW50IHJlY2VpdmVzIFNlcnZlckhlbGxvRG9uZS4KICogNi4gQ2xpZW50IHNlbmRzIG9wdGlvbmFsIENlcnRpZmljYXRlLgogKiA3LiBDbGllbnQgc2VuZHMgQ2xpZW50S2V5RXhjaGFuZ2UuCiAqIDguIENsaWVudCBzZW5kcyBvcHRpb25hbCBDZXJ0aWZpY2F0ZVZlcmlmeS4KICogOS4gQ2xpZW50IHNlbmRzIENoYW5nZUNpcGhlclNwZWMuCiAqIDEwLiBDbGllbnQgc2VuZHMgRmluaXNoZWQuCiAqIDExLiBDbGllbnQgcmVjZWl2ZXMgQ2hhbmdlQ2lwaGVyU3BlYy4KICogMTIuIENsaWVudCByZWNlaXZlcyBGaW5pc2hlZC4KICogMTMuIENsaWVudCBzZW5kcy9yZWNlaXZlcyBhcHBsaWNhdGlvbiBkYXRhLgogKgogKiBUbyByZXVzZSBhbiBleGlzdGluZyBzZXNzaW9uOgogKgogKiAxLiBDbGllbnQgc2VuZHMgQ2xpZW50SGVsbG8gd2l0aCBzZXNzaW9uIElEIGZvciByZXVzZS4KICogMi4gQ2xpZW50IHJlY2VpdmVzIFNlcnZlckhlbGxvIHdpdGggc2FtZSBzZXNzaW9uIElEIGlmIHJldXNpbmcuCiAqIDMuIENsaWVudCByZWNlaXZlcyBDaGFuZ2VDaXBoZXJTcGVjIG1lc3NhZ2UgaWYgcmV1c2luZy4KICogNC4gQ2xpZW50IHJlY2VpdmVzIEZpbmlzaGVkLgogKiA1LiBDbGllbnQgc2VuZHMgQ2hhbmdlQ2lwaGVyU3BlYy4KICogNi4gQ2xpZW50IHNlbmRzIEZpbmlzaGVkLgogKgogKiBOb3RlOiBDbGllbnQgaWdub3JlcyBIZWxsb1JlcXVlc3QgaWYgaW4gdGhlIG1pZGRsZSBvZiBhIGhhbmRzaGFrZS4KICoKICogUmVjb3JkIExheWVyOgogKgogKiBUaGUgcmVjb3JkIGxheWVyIGZyYWdtZW50cyBpbmZvcm1hdGlvbiBibG9ja3MgaW50byBUTFNQbGFpbnRleHQgcmVjb3JkcwogKiBjYXJyeWluZyBkYXRhIGluIGNodW5rcyBvZiAyXjE0IGJ5dGVzIG9yIGxlc3MuIENsaWVudCBtZXNzYWdlIGJvdW5kYXJpZXMgYXJlCiAqIG5vdCBwcmVzZXJ2ZWQgaW4gdGhlIHJlY29yZCBsYXllciAoaS5lLiwgbXVsdGlwbGUgY2xpZW50IG1lc3NhZ2VzIG9mIHRoZQogKiBzYW1lIENvbnRlbnRUeXBlIE1BWSBiZSBjb2FsZXNjZWQgaW50byBhIHNpbmdsZSBUTFNQbGFpbnRleHQgcmVjb3JkLCBvciBhCiAqIHNpbmdsZSBtZXNzYWdlIE1BWSBiZSBmcmFnbWVudGVkIGFjcm9zcyBzZXZlcmFsIHJlY29yZHMpLgogKgogKiBzdHJ1Y3QgewogKiAgIHVpbnQ4IG1ham9yOwogKiAgIHVpbnQ4IG1pbm9yOwogKiB9IFByb3RvY29sVmVyc2lvbjsKICoKICogc3RydWN0IHsKICogICBDb250ZW50VHlwZSB0eXBlOwogKiAgIFByb3RvY29sVmVyc2lvbiB2ZXJzaW9uOwogKiAgIHVpbnQxNiBsZW5ndGg7CiAqICAgb3BhcXVlIGZyYWdtZW50W1RMU1BsYWludGV4dC5sZW5ndGhdOwogKiB9IFRMU1BsYWludGV4dDsKICoKICogdHlwZToKICogICBUaGUgaGlnaGVyLWxldmVsIHByb3RvY29sIHVzZWQgdG8gcHJvY2VzcyB0aGUgZW5jbG9zZWQgZnJhZ21lbnQuCiAqCiAqIHZlcnNpb246CiAqICAgVGhlIHZlcnNpb24gb2YgdGhlIHByb3RvY29sIGJlaW5nIGVtcGxveWVkLiBUTFMgVmVyc2lvbiAxLjIgdXNlcyB2ZXJzaW9uCiAqICAgezMsIDN9LiBUTFMgVmVyc2lvbiAxLjAgdXNlcyB2ZXJzaW9uIHszLCAxfS4gTm90ZSB0aGF0IGEgY2xpZW50IHRoYXQKICogICBzdXBwb3J0cyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBUTFMgbWF5IG5vdCBrbm93IHdoYXQgdmVyc2lvbiB3aWxsIGJlCiAqICAgZW1wbG95ZWQgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSBTZXJ2ZXJIZWxsby4KICoKICogbGVuZ3RoOgogKiAgIFRoZSBsZW5ndGggKGluIGJ5dGVzKSBvZiB0aGUgZm9sbG93aW5nIFRMU1BsYWludGV4dC5mcmFnbWVudC4gVGhlIGxlbmd0aAogKiAgIE1VU1QgTk9UIGV4Y2VlZCAyXjE0ID0gMTYzODQgYnl0ZXMuCiAqCiAqIGZyYWdtZW50OgogKiAgIFRoZSBhcHBsaWNhdGlvbiBkYXRhLiBUaGlzIGRhdGEgaXMgdHJhbnNwYXJlbnQgYW5kIHRyZWF0ZWQgYXMgYW4KICogICBpbmRlcGVuZGVudCBibG9jayB0byBiZSBkZWFsdCB3aXRoIGJ5IHRoZSBoaWdoZXItbGV2ZWwgcHJvdG9jb2wgc3BlY2lmaWVkCiAqICAgYnkgdGhlIHR5cGUgZmllbGQuCiAqCiAqIEltcGxlbWVudGF0aW9ucyBNVVNUIE5PVCBzZW5kIHplcm8tbGVuZ3RoIGZyYWdtZW50cyBvZiBIYW5kc2hha2UsIEFsZXJ0LCBvcgogKiBDaGFuZ2VDaXBoZXJTcGVjIGNvbnRlbnQgdHlwZXMuIFplcm8tbGVuZ3RoIGZyYWdtZW50cyBvZiBBcHBsaWNhdGlvbiBkYXRhCiAqIE1BWSBiZSBzZW50IGFzIHRoZXkgYXJlIHBvdGVudGlhbGx5IHVzZWZ1bCBhcyBhIHRyYWZmaWMgYW5hbHlzaXMKICogY291bnRlcm1lYXN1cmUuCiAqCiAqIE5vdGU6IERhdGEgb2YgZGlmZmVyZW50IFRMUyByZWNvcmQgbGF5ZXIgY29udGVudCB0eXBlcyBNQVkgYmUgaW50ZXJsZWF2ZWQuCiAqIEFwcGxpY2F0aW9uIGRhdGEgaXMgZ2VuZXJhbGx5IG9mIGxvd2VyIHByZWNlZGVuY2UgZm9yIHRyYW5zbWlzc2lvbiB0aGFuCiAqIG90aGVyIGNvbnRlbnQgdHlwZXMuIEhvd2V2ZXIsIHJlY29yZHMgTVVTVCBiZSBkZWxpdmVyZWQgdG8gdGhlIG5ldHdvcmsgaW4KICogdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBhcmUgcHJvdGVjdGVkIGJ5IHRoZSByZWNvcmQgbGF5ZXIuIFJlY2lwaWVudHMgTVVTVAogKiByZWNlaXZlIGFuZCBwcm9jZXNzIGludGVybGVhdmVkIGFwcGxpY2F0aW9uIGxheWVyIHRyYWZmaWMgZHVyaW5nIGhhbmRzaGFrZXMKICogc3Vic2VxdWVudCB0byB0aGUgZmlyc3Qgb25lIG9uIGEgY29ubmVjdGlvbi4KICoKICogc3RydWN0IHsKICogICBDb250ZW50VHlwZSB0eXBlOyAgICAgICAvLyBzYW1lIGFzIFRMU1BsYWludGV4dC50eXBlCiAqICAgUHJvdG9jb2xWZXJzaW9uIHZlcnNpb247Ly8gc2FtZSBhcyBUTFNQbGFpbnRleHQudmVyc2lvbgogKiAgIHVpbnQxNiBsZW5ndGg7CiAqICAgb3BhcXVlIGZyYWdtZW50W1RMU0NvbXByZXNzZWQubGVuZ3RoXTsKICogfSBUTFNDb21wcmVzc2VkOwogKgogKiBsZW5ndGg6CiAqICAgVGhlIGxlbmd0aCAoaW4gYnl0ZXMpIG9mIHRoZSBmb2xsb3dpbmcgVExTQ29tcHJlc3NlZC5mcmFnbWVudC4KICogICBUaGUgbGVuZ3RoIE1VU1QgTk9UIGV4Y2VlZCAyXjE0ICsgMTAyNC4KICoKICogZnJhZ21lbnQ6CiAqICAgVGhlIGNvbXByZXNzZWQgZm9ybSBvZiBUTFNQbGFpbnRleHQuZnJhZ21lbnQuCiAqCiAqIE5vdGU6IEEgQ29tcHJlc3Npb25NZXRob2QubnVsbCBvcGVyYXRpb24gaXMgYW4gaWRlbnRpdHkgb3BlcmF0aW9uOyBubyBmaWVsZHMKICogYXJlIGFsdGVyZWQuIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIHNpbmNlIG5vIGNvbXByZXNzaW9uIGlzIHN1cHBvcnRlZCwKICogdW5jb21wcmVzc2VkIHJlY29yZHMgYXJlIGFsd2F5cyB0aGUgc2FtZSBhcyBjb21wcmVzc2VkIHJlY29yZHMuCiAqCiAqIEVuY3J5cHRpb24gSW5mb3JtYXRpb246CiAqCiAqIFRoZSBlbmNyeXB0aW9uIGFuZCBNQUMgZnVuY3Rpb25zIHRyYW5zbGF0ZSBhIFRMU0NvbXByZXNzZWQgc3RydWN0dXJlIGludG8gYQogKiBUTFNDaXBoZXJ0ZXh0LiBUaGUgZGVjcnlwdGlvbiBmdW5jdGlvbnMgcmV2ZXJzZSB0aGUgcHJvY2Vzcy4gVGhlIE1BQyBvZiB0aGUKICogcmVjb3JkIGFsc28gaW5jbHVkZXMgYSBzZXF1ZW5jZSBudW1iZXIgc28gdGhhdCBtaXNzaW5nLCBleHRyYSwgb3IgcmVwZWF0ZWQKICogbWVzc2FnZXMgYXJlIGRldGVjdGFibGUuCiAqCiAqIHN0cnVjdCB7CiAqICAgQ29udGVudFR5cGUgdHlwZTsKICogICBQcm90b2NvbFZlcnNpb24gdmVyc2lvbjsKICogICB1aW50MTYgbGVuZ3RoOwogKiAgIHNlbGVjdCAoU2VjdXJpdHlQYXJhbWV0ZXJzLmNpcGhlcl90eXBlKSB7CiAqICAgICBjYXNlIHN0cmVhbTogR2VuZXJpY1N0cmVhbUNpcGhlcjsKICogICAgIGNhc2UgYmxvY2s6ICBHZW5lcmljQmxvY2tDaXBoZXI7CiAqICAgICBjYXNlIGFlYWQ6ICAgR2VuZXJpY0FFQURDaXBoZXI7CiAqICAgfSBmcmFnbWVudDsKICogfSBUTFNDaXBoZXJ0ZXh0OwogKgogKiB0eXBlOgogKiAgIFRoZSB0eXBlIGZpZWxkIGlzIGlkZW50aWNhbCB0byBUTFNDb21wcmVzc2VkLnR5cGUuCiAqCiAqIHZlcnNpb246CiAqICAgVGhlIHZlcnNpb24gZmllbGQgaXMgaWRlbnRpY2FsIHRvIFRMU0NvbXByZXNzZWQudmVyc2lvbi4KICoKICogbGVuZ3RoOgogKiAgIFRoZSBsZW5ndGggKGluIGJ5dGVzKSBvZiB0aGUgZm9sbG93aW5nIFRMU0NpcGhlcnRleHQuZnJhZ21lbnQuCiAqICAgVGhlIGxlbmd0aCBNVVNUIE5PVCBleGNlZWQgMl4xNCArIDIwNDguCiAqCiAqIGZyYWdtZW50OgogKiAgIFRoZSBlbmNyeXB0ZWQgZm9ybSBvZiBUTFNDb21wcmVzc2VkLmZyYWdtZW50LCB3aXRoIHRoZSBNQUMuCiAqCiAqIE5vdGU6IE9ubHkgQ0JDIEJsb2NrIENpcGhlcnMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLgogKgogKiBUaGUgVExTQ29tcHJlc3NlZC5mcmFnbWVudCBzdHJ1Y3R1cmVzIGFyZSBjb252ZXJ0ZWQgdG8vZnJvbSBibG9jawogKiBUTFNDaXBoZXJ0ZXh0LmZyYWdtZW50IHN0cnVjdHVyZXMuCiAqCiAqIHN0cnVjdCB7CiAqICAgb3BhcXVlIElWW1NlY3VyaXR5UGFyYW1ldGVycy5yZWNvcmRfaXZfbGVuZ3RoXTsKICogICBibG9jay1jaXBoZXJlZCBzdHJ1Y3QgewogKiAgICAgb3BhcXVlIGNvbnRlbnRbVExTQ29tcHJlc3NlZC5sZW5ndGhdOwogKiAgICAgb3BhcXVlIE1BQ1tTZWN1cml0eVBhcmFtZXRlcnMubWFjX2xlbmd0aF07CiAqICAgICB1aW50OCBwYWRkaW5nW0dlbmVyaWNCbG9ja0NpcGhlci5wYWRkaW5nX2xlbmd0aF07CiAqICAgICB1aW50OCBwYWRkaW5nX2xlbmd0aDsKICogICB9OwogKiB9IEdlbmVyaWNCbG9ja0NpcGhlcjsKICoKICogVGhlIE1BQyBpcyBnZW5lcmF0ZWQgYXMgZGVzY3JpYmVkIGluIFNlY3Rpb24gNi4yLjMuMS4KICoKICogSVY6CiAqICAgVGhlIEluaXRpYWxpemF0aW9uIFZlY3RvciAoSVYpIFNIT1VMRCBiZSBjaG9zZW4gYXQgcmFuZG9tLCBhbmQgTVVTVCBiZQogKiAgIHVucHJlZGljdGFibGUuIE5vdGUgdGhhdCBpbiB2ZXJzaW9ucyBvZiBUTFMgcHJpb3IgdG8gMS4xLCB0aGVyZSB3YXMgbm8KICogICBJViBmaWVsZCwgYW5kIHRoZSBsYXN0IGNpcGhlcnRleHQgYmxvY2sgb2YgdGhlIHByZXZpb3VzIHJlY29yZCAodGhlICJDQkMKICogICByZXNpZHVlIikgd2FzIHVzZWQgYXMgdGhlIElWLiBUaGlzIHdhcyBjaGFuZ2VkIHRvIHByZXZlbnQgdGhlIGF0dGFja3MKICogICBkZXNjcmliZWQgaW4gW0NCQ0FUVF0uIEZvciBibG9jayBjaXBoZXJzLCB0aGUgSVYgbGVuZ3RoIGlzIG9mIGxlbmd0aAogKiAgIFNlY3VyaXR5UGFyYW1ldGVycy5yZWNvcmRfaXZfbGVuZ3RoLCB3aGljaCBpcyBlcXVhbCB0byB0aGUKICogICBTZWN1cml0eVBhcmFtZXRlcnMuYmxvY2tfc2l6ZS4KICoKICogcGFkZGluZzoKICogICBQYWRkaW5nIHRoYXQgaXMgYWRkZWQgdG8gZm9yY2UgdGhlIGxlbmd0aCBvZiB0aGUgcGxhaW50ZXh0IHRvIGJlIGFuCiAqICAgaW50ZWdyYWwgbXVsdGlwbGUgb2YgdGhlIGJsb2NrIGNpcGhlcidzIGJsb2NrIGxlbmd0aC4gVGhlIHBhZGRpbmcgTUFZIGJlCiAqICAgYW55IGxlbmd0aCB1cCB0byAyNTUgYnl0ZXMsIGFzIGxvbmcgYXMgaXQgcmVzdWx0cyBpbiB0aGUKICogICBUTFNDaXBoZXJ0ZXh0Lmxlbmd0aCBiZWluZyBhbiBpbnRlZ3JhbCBtdWx0aXBsZSBvZiB0aGUgYmxvY2sgbGVuZ3RoLgogKiAgIExlbmd0aHMgbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5IG1pZ2h0IGJlIGRlc2lyYWJsZSB0byBmcnVzdHJhdGUgYXR0YWNrcyBvbgogKiAgIGEgcHJvdG9jb2wgdGhhdCBhcmUgYmFzZWQgb24gYW5hbHlzaXMgb2YgdGhlIGxlbmd0aHMgb2YgZXhjaGFuZ2VkCiAqICAgbWVzc2FnZXMuIEVhY2ggdWludDggaW4gdGhlIHBhZGRpbmcgZGF0YSB2ZWN0b3IgTVVTVCBiZSBmaWxsZWQgd2l0aCB0aGUKICogICBwYWRkaW5nIGxlbmd0aCB2YWx1ZS4gVGhlIHJlY2VpdmVyIE1VU1QgY2hlY2sgdGhpcyBwYWRkaW5nIGFuZCBNVVNUIHVzZQogKiAgIHRoZSBiYWRfcmVjb3JkX21hYyBhbGVydCB0byBpbmRpY2F0ZSBwYWRkaW5nIGVycm9ycy4KICoKICogcGFkZGluZ19sZW5ndGg6CiAqICAgVGhlIHBhZGRpbmcgbGVuZ3RoIE1VU1QgYmUgc3VjaCB0aGF0IHRoZSB0b3RhbCBzaXplIG9mIHRoZQogKiAgIEdlbmVyaWNCbG9ja0NpcGhlciBzdHJ1Y3R1cmUgaXMgYSBtdWx0aXBsZSBvZiB0aGUgY2lwaGVyJ3MgYmxvY2sgbGVuZ3RoLgogKiAgIExlZ2FsIHZhbHVlcyByYW5nZSBmcm9tIHplcm8gdG8gMjU1LCBpbmNsdXNpdmUuIFRoaXMgbGVuZ3RoIHNwZWNpZmllcyB0aGUKICogICBsZW5ndGggb2YgdGhlIHBhZGRpbmcgZmllbGQgZXhjbHVzaXZlIG9mIHRoZSBwYWRkaW5nX2xlbmd0aCBmaWVsZCBpdHNlbGYuCiAqCiAqIFRoZSBlbmNyeXB0ZWQgZGF0YSBsZW5ndGggKFRMU0NpcGhlcnRleHQubGVuZ3RoKSBpcyBvbmUgbW9yZSB0aGFuIHRoZSBzdW0gb2YKICogU2VjdXJpdHlQYXJhbWV0ZXJzLmJsb2NrX2xlbmd0aCwgVExTQ29tcHJlc3NlZC5sZW5ndGgsCiAqIFNlY3VyaXR5UGFyYW1ldGVycy5tYWNfbGVuZ3RoLCBhbmQgcGFkZGluZ19sZW5ndGguCiAqCiAqIEV4YW1wbGU6IElmIHRoZSBibG9jayBsZW5ndGggaXMgOCBieXRlcywgdGhlIGNvbnRlbnQgbGVuZ3RoCiAqIChUTFNDb21wcmVzc2VkLmxlbmd0aCkgaXMgNjEgYnl0ZXMsIGFuZCB0aGUgTUFDIGxlbmd0aCBpcyAyMCBieXRlcywgdGhlbiB0aGUKICogbGVuZ3RoIGJlZm9yZSBwYWRkaW5nIGlzIDgyIGJ5dGVzICh0aGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIElWLiBUaHVzLCB0aGUKICogcGFkZGluZyBsZW5ndGggbW9kdWxvIDggbXVzdCBiZSBlcXVhbCB0byA2IGluIG9yZGVyIHRvIG1ha2UgdGhlIHRvdGFsIGxlbmd0aAogKiBhbiBldmVuIG11bHRpcGxlIG9mIDggYnl0ZXMgKHRoZSBibG9jayBsZW5ndGgpLiBUaGUgcGFkZGluZyBsZW5ndGggY2FuIGJlCiAqIDYsIDE0LCAyMiwgYW5kIHNvIG9uLCB0aHJvdWdoIDI1NC4gSWYgdGhlIHBhZGRpbmcgbGVuZ3RoIHdlcmUgdGhlIG1pbmltdW0KICogbmVjZXNzYXJ5LCA2LCB0aGUgcGFkZGluZyB3b3VsZCBiZSA2IGJ5dGVzLCBlYWNoIGNvbnRhaW5pbmcgdGhlIHZhbHVlIDYuCiAqIFRodXMsIHRoZSBsYXN0IDggb2N0ZXRzIG9mIHRoZSBHZW5lcmljQmxvY2tDaXBoZXIgYmVmb3JlIGJsb2NrIGVuY3J5cHRpb24KICogd291bGQgYmUgeHggMDYgMDYgMDYgMDYgMDYgMDYgMDYsIHdoZXJlIHh4IGlzIHRoZSBsYXN0IG9jdGV0IG9mIHRoZSBNQUMuCiAqCiAqIE5vdGU6IFdpdGggYmxvY2sgY2lwaGVycyBpbiBDQkMgbW9kZSAoQ2lwaGVyIEJsb2NrIENoYWluaW5nKSwgaXQgaXMgY3JpdGljYWwKICogdGhhdCB0aGUgZW50aXJlIHBsYWludGV4dCBvZiB0aGUgcmVjb3JkIGJlIGtub3duIGJlZm9yZSBhbnkgY2lwaGVydGV4dCBpcwogKiB0cmFuc21pdHRlZC4gT3RoZXJ3aXNlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGF0dGFja2VyIHRvIG1vdW50IHRoZSBhdHRhY2sKICogZGVzY3JpYmVkIGluIFtDQkNBVFRdLgogKgogKiBJbXBsZW1lbnRhdGlvbiBub3RlOiBDYW52ZWwgZXQgYWwuIFtDQkNUSU1FXSBoYXZlIGRlbW9uc3RyYXRlZCBhIHRpbWluZwogKiBhdHRhY2sgb24gQ0JDIHBhZGRpbmcgYmFzZWQgb24gdGhlIHRpbWUgcmVxdWlyZWQgdG8gY29tcHV0ZSB0aGUgTUFDLiBJbgogKiBvcmRlciB0byBkZWZlbmQgYWdhaW5zdCB0aGlzIGF0dGFjaywgaW1wbGVtZW50YXRpb25zIE1VU1QgZW5zdXJlIHRoYXQKICogcmVjb3JkIHByb2Nlc3NpbmcgdGltZSBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSB3aGV0aGVyIG9yIG5vdCB0aGUgcGFkZGluZwogKiBpcyBjb3JyZWN0LiBJbiBnZW5lcmFsLCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byBjb21wdXRlIHRoZSBNQUMgZXZlbgogKiBpZiB0aGUgcGFkZGluZyBpcyBpbmNvcnJlY3QsIGFuZCBvbmx5IHRoZW4gcmVqZWN0IHRoZSBwYWNrZXQuIEZvciBpbnN0YW5jZSwKICogaWYgdGhlIHBhZCBhcHBlYXJzIHRvIGJlIGluY29ycmVjdCwgdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGFzc3VtZSBhCiAqIHplcm8tbGVuZ3RoIHBhZCBhbmQgdGhlbiBjb21wdXRlIHRoZSBNQUMuIFRoaXMgbGVhdmVzIGEgc21hbGwgdGltaW5nCiAqIGNoYW5uZWwsIHNpbmNlIE1BQyBwZXJmb3JtYW5jZSBkZXBlbmRzLCB0byBzb21lIGV4dGVudCwgb24gdGhlIHNpemUgb2YgdGhlCiAqIGRhdGEgZnJhZ21lbnQsIGJ1dCBpdCBpcyBub3QgYmVsaWV2ZWQgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGJlIGV4cGxvaXRhYmxlLAogKiBkdWUgdG8gdGhlIGxhcmdlIGJsb2NrIHNpemUgb2YgZXhpc3RpbmcgTUFDcyBhbmQgdGhlIHNtYWxsIHNpemUgb2YgdGhlCiAqIHRpbWluZyBzaWduYWwuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLyoqCiAqIEdlbmVyYXRlcyBwc2V1ZG8gcmFuZG9tIGJ5dGVzIGJ5IG1peGluZyB0aGUgcmVzdWx0IG9mIHR3byBoYXNoIGZ1bmN0aW9ucywKICogTUQ1IGFuZCBTSEEtMS4KICoKICogcHJmX1RMUzEoc2VjcmV0LCBsYWJlbCwgc2VlZCkgPQogKiAgIFBfTUQ1KFMxLCBsYWJlbCArIHNlZWQpIFhPUiBQX1NIQS0xKFMyLCBsYWJlbCArIHNlZWQpOwogKgogKiBFYWNoIFBfaGFzaCBmdW5jdGlvbiBmdW5jdGlvbnMgYXMgZm9sbG93czoKICoKICogUF9oYXNoKHNlY3JldCwgc2VlZCkgPSBITUFDX2hhc2goc2VjcmV0LCBBKDEpICsgc2VlZCkgKwogKiAgICAgICAgICAgICAgICAgICAgICAgIEhNQUNfaGFzaChzZWNyZXQsIEEoMikgKyBzZWVkKSArCiAqICAgICAgICAgICAgICAgICAgICAgICAgSE1BQ19oYXNoKHNlY3JldCwgQSgzKSArIHNlZWQpICsgLi4uCiAqIEEoKSBpcyBkZWZpbmVkIGFzOgogKiAgIEEoMCkgPSBzZWVkCiAqICAgQShpKSA9IEhNQUNfaGFzaChzZWNyZXQsIEEoaS0xKSkKICoKICogVGhlICcrJyBvcGVyYXRvciBkZW5vdGVzIGNvbmNhdGVuYXRpb24uCiAqCiAqIEFzIG1hbnkgaXRlcmF0aW9ucyBBKE4pIGFzIGFyZSBuZWVkZWQgYXJlIHBlcmZvcm1lZCB0byBnZW5lcmF0ZSBlbm91Z2gKICogcHNldWRvIHJhbmRvbSBieXRlIG91dHB1dC4gSWYgYW4gaXRlcmF0aW9uIGNyZWF0ZXMgbW9yZSBkYXRhIHRoYW4gaXMKICogbmVjZXNzYXJ5LCB0aGVuIGl0IGlzIHRydW5jYXRlZC4KICoKICogVGhlcmVmb3JlOgogKiBBKDEpID0gSE1BQ19oYXNoKHNlY3JldCwgQSgwKSkKICogICAgICA9IEhNQUNfaGFzaChzZWNyZXQsIHNlZWQpCiAqIEEoMikgPSBITUFDX2hhc2goc2VjcmV0LCBBKDEpKQogKiAgICAgID0gSE1BQ19oYXNoKHNlY3JldCwgSE1BQ19oYXNoKHNlY3JldCwgc2VlZCkpCiAqCiAqIFRoZXJlZm9yZToKICogUF9oYXNoKHNlY3JldCwgc2VlZCkgPQogKiAgIEhNQUNfaGFzaChzZWNyZXQsIEhNQUNfaGFzaChzZWNyZXQsIEEoMCkpICsgc2VlZCkgKwogKiAgIEhNQUNfaGFzaChzZWNyZXQsIEhNQUNfaGFzaChzZWNyZXQsIEEoMSkpICsgc2VlZCkgKwogKiAgIC4uLgogKgogKiBUaGVyZWZvcmU6CiAqIFBfaGFzaChzZWNyZXQsIHNlZWQpID0KICogICBITUFDX2hhc2goc2VjcmV0LCBITUFDX2hhc2goc2VjcmV0LCBzZWVkKSArIHNlZWQpICsKICogICBITUFDX2hhc2goc2VjcmV0LCBITUFDX2hhc2goc2VjcmV0LCBITUFDX2hhc2goc2VjcmV0LCBzZWVkKSkgKyBzZWVkKSArCiAqICAgLi4uCiAqCiAqIEBwYXJhbSBzZWNyZXQgdGhlIHNlY3JldCB0byB1c2UuCiAqIEBwYXJhbSBsYWJlbCB0aGUgbGFiZWwgdG8gdXNlLgogKiBAcGFyYW0gc2VlZCB0aGUgc2VlZCB2YWx1ZSB0byB1c2UuCiAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZS4KICoKICogQHJldHVybiB0aGUgcHNldWRvIHJhbmRvbSBieXRlcyBpbiBhIGJ5dGUgYnVmZmVyLgogKi8KdmFyIHByZl9UTFMxID0gZnVuY3Rpb24oc2VjcmV0LCBsYWJlbCwgc2VlZCwgbGVuZ3RoKSB7CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwoKICAvKiBGb3IgVExTIDEuMCwgdGhlIHNlY3JldCBpcyBzcGxpdCBpbiBoYWxmLCBpbnRvIHR3byBzZWNyZXRzIG9mIGVxdWFsCiAgICBsZW5ndGguIElmIHRoZSBzZWNyZXQgaGFzIGFuIG9kZCBsZW5ndGggdGhlbiB0aGUgbGFzdCBieXRlIG9mIHRoZSBmaXJzdAogICAgaGFsZiB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBzZWNvbmQuIFRoZSBsZW5ndGggb2YgdGhlCiAgICB0d28gc2VjcmV0cyBpcyBoYWxmIG9mIHRoZSBzZWNyZXQgcm91bmRlZCB1cC4gKi8KICB2YXIgaWR4ID0gKHNlY3JldC5sZW5ndGggPj4gMSk7CiAgdmFyIHNsZW4gPSBpZHggKyAoc2VjcmV0Lmxlbmd0aCAmIDEpOwogIHZhciBzMSA9IHNlY3JldC5zdWJzdHIoMCwgc2xlbik7CiAgdmFyIHMyID0gc2VjcmV0LnN1YnN0cihpZHgsIHNsZW4pOwogIHZhciBhaSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdmFyIGhtYWMgPSBmb3JnZS5obWFjLmNyZWF0ZSgpOwogIHNlZWQgPSBsYWJlbCArIHNlZWQ7CgogIC8vIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdGhhdCBtdXN0IGJlIHBlcmZvcm1lZCB0byBnZW5lcmF0ZQogIC8vIGVub3VnaCBvdXRwdXQgYnl0ZXMsIG1kNSBjcmVhdGVzIDE2IGJ5dGUgaGFzaGVzLCBzaGExIGNyZWF0ZXMgMjAKICB2YXIgbWQ1aXRyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDE2KTsKICB2YXIgc2hhMWl0ciA9IE1hdGguY2VpbChsZW5ndGggLyAyMCk7CgogIC8vIGRvIG1kNSBpdGVyYXRpb25zCiAgaG1hYy5zdGFydCgnTUQ1JywgczEpOwogIHZhciBtZDVieXRlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgYWkucHV0Qnl0ZXMoc2VlZCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IG1kNWl0cjsgKytpKSB7CiAgICAvLyBITUFDX2hhc2goc2VjcmV0LCBBKGktMSkpCiAgICBobWFjLnN0YXJ0KG51bGwsIG51bGwpOwogICAgaG1hYy51cGRhdGUoYWkuZ2V0Qnl0ZXMoKSk7CiAgICBhaS5wdXRCdWZmZXIoaG1hYy5kaWdlc3QoKSk7CgogICAgLy8gSE1BQ19oYXNoKHNlY3JldCwgQShpKSArIHNlZWQpCiAgICBobWFjLnN0YXJ0KG51bGwsIG51bGwpOwogICAgaG1hYy51cGRhdGUoYWkuYnl0ZXMoKSArIHNlZWQpOwogICAgbWQ1Ynl0ZXMucHV0QnVmZmVyKGhtYWMuZGlnZXN0KCkpOwogIH0KCiAgLy8gZG8gc2hhMSBpdGVyYXRpb25zCiAgaG1hYy5zdGFydCgnU0hBMScsIHMyKTsKICB2YXIgc2hhMWJ5dGVzID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBhaS5jbGVhcigpOwogIGFpLnB1dEJ5dGVzKHNlZWQpOwogIGZvcih2YXIgaSA9IDA7IGkgPCBzaGExaXRyOyArK2kpIHsKICAgIC8vIEhNQUNfaGFzaChzZWNyZXQsIEEoaS0xKSkKICAgIGhtYWMuc3RhcnQobnVsbCwgbnVsbCk7CiAgICBobWFjLnVwZGF0ZShhaS5nZXRCeXRlcygpKTsKICAgIGFpLnB1dEJ1ZmZlcihobWFjLmRpZ2VzdCgpKTsKCiAgICAvLyBITUFDX2hhc2goc2VjcmV0LCBBKGkpICsgc2VlZCkKICAgIGhtYWMuc3RhcnQobnVsbCwgbnVsbCk7CiAgICBobWFjLnVwZGF0ZShhaS5ieXRlcygpICsgc2VlZCk7CiAgICBzaGExYnl0ZXMucHV0QnVmZmVyKGhtYWMuZGlnZXN0KCkpOwogIH0KCiAgLy8gWE9SIHRoZSBtZDUgYnl0ZXMgd2l0aCB0aGUgc2hhMSBieXRlcwogIHJ2YWwucHV0Qnl0ZXMoZm9yZ2UudXRpbC54b3JCeXRlcygKICAgIG1kNWJ5dGVzLmdldEJ5dGVzKCksIHNoYTFieXRlcy5nZXRCeXRlcygpLCBsZW5ndGgpKTsKCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2VuZXJhdGVzIHBzZXVkbyByYW5kb20gYnl0ZXMgdXNpbmcgYSBTSEEyNTYgYWxnb3JpdGhtLiBGb3IgVExTIDEuMi4KICoKICogQHBhcmFtIHNlY3JldCB0aGUgc2VjcmV0IHRvIHVzZS4KICogQHBhcmFtIGxhYmVsIHRoZSBsYWJlbCB0byB1c2UuCiAqIEBwYXJhbSBzZWVkIHRoZSBzZWVkIHZhbHVlIHRvIHVzZS4KICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlLgogKgogKiBAcmV0dXJuIHRoZSBwc2V1ZG8gcmFuZG9tIGJ5dGVzIGluIGEgYnl0ZSBidWZmZXIuCiAqLwp2YXIgcHJmX3NoYTI1NiA9IGZ1bmN0aW9uKHNlY3JldCwgbGFiZWwsIHNlZWQsIGxlbmd0aCkgewogICAvLyBGSVhNRTogaW1wbGVtZW50IG1lIGZvciBUTFMgMS4yCn07CgovKioKICogR2V0cyBhIE1BQyBmb3IgYSByZWNvcmQgdXNpbmcgdGhlIFNIQS0xIGhhc2ggYWxnb3JpdGhtLgogKgogKiBAcGFyYW0ga2V5IHRoZSBtYWMga2V5LgogKiBAcGFyYW0gc3RhdGUgdGhlIHNlcXVlbmNlIG51bWJlciAoYXJyYXkgb2YgdHdvIDMyLWJpdCBpbnRlZ2VycykuCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICoKICogQHJldHVybiB0aGUgc2hhLTEgaGFzaCAoMjAgYnl0ZXMpIGZvciB0aGUgZ2l2ZW4gcmVjb3JkLgogKi8KdmFyIGhtYWNfc2hhMSA9IGZ1bmN0aW9uKGtleSwgc2VxTnVtLCByZWNvcmQpIHsKICAvKiBNQUMgaXMgY29tcHV0ZWQgbGlrZSBzbzoKICBITUFDX2hhc2goCiAgICBrZXksIHNlcU51bSArCiAgICAgIFRMU0NvbXByZXNzZWQudHlwZSArCiAgICAgIFRMU0NvbXByZXNzZWQudmVyc2lvbiArCiAgICAgIFRMU0NvbXByZXNzZWQubGVuZ3RoICsKICAgICAgVExTQ29tcHJlc3NlZC5mcmFnbWVudCkKICAqLwogIHZhciBobWFjID0gZm9yZ2UuaG1hYy5jcmVhdGUoKTsKICBobWFjLnN0YXJ0KCdTSEExJywga2V5KTsKICB2YXIgYiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgYi5wdXRJbnQzMihzZXFOdW1bMF0pOwogIGIucHV0SW50MzIoc2VxTnVtWzFdKTsKICBiLnB1dEJ5dGUocmVjb3JkLnR5cGUpOwogIGIucHV0Qnl0ZShyZWNvcmQudmVyc2lvbi5tYWpvcik7CiAgYi5wdXRCeXRlKHJlY29yZC52ZXJzaW9uLm1pbm9yKTsKICBiLnB1dEludDE2KHJlY29yZC5sZW5ndGgpOwogIGIucHV0Qnl0ZXMocmVjb3JkLmZyYWdtZW50LmJ5dGVzKCkpOwogIGhtYWMudXBkYXRlKGIuZ2V0Qnl0ZXMoKSk7CiAgcmV0dXJuIGhtYWMuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKfTsKCi8qKgogKiBDb21wcmVzc2VzIHRoZSBUTFNQbGFpbnRleHQgcmVjb3JkIGludG8gYSBUTFNDb21wcmVzc2VkIHJlY29yZCB1c2luZyB0aGUKICogZGVmbGF0ZSBhbGdvcml0aG0uCiAqCiAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgVExTUGxhaW50ZXh0IHJlY29yZCB0byBjb21wcmVzcy4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdmFyIGRlZmxhdGUgPSBmdW5jdGlvbihjLCByZWNvcmQsIHMpIHsKICB2YXIgcnZhbCA9IGZhbHNlOwoKICB0cnkgewogICAgdmFyIGJ5dGVzID0gYy5kZWZsYXRlKHJlY29yZC5mcmFnbWVudC5nZXRCeXRlcygpKTsKICAgIHJlY29yZC5mcmFnbWVudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKTsKICAgIHJlY29yZC5sZW5ndGggPSBieXRlcy5sZW5ndGg7CiAgICBydmFsID0gdHJ1ZTsKICB9IGNhdGNoKGV4KSB7CiAgICAvLyBkZWZsYXRlIGVycm9yLCBmYWlsIG91dAogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogRGVjb21wcmVzc2VzIHRoZSBUTFNDb21wcmVzc2VkIHJlY29yZCBpbnRvIGEgVExTUGxhaW50ZXh0IHJlY29yZCB1c2luZyB0aGUKICogZGVmbGF0ZSBhbGdvcml0aG0uCiAqCiAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgVExTQ29tcHJlc3NlZCByZWNvcmQgdG8gZGVjb21wcmVzcy4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdmFyIGluZmxhdGUgPSBmdW5jdGlvbihjLCByZWNvcmQsIHMpIHsKICB2YXIgcnZhbCA9IGZhbHNlOwoKICB0cnkgewogICAgdmFyIGJ5dGVzID0gYy5pbmZsYXRlKHJlY29yZC5mcmFnbWVudC5nZXRCeXRlcygpKTsKICAgIHJlY29yZC5mcmFnbWVudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKTsKICAgIHJlY29yZC5sZW5ndGggPSBieXRlcy5sZW5ndGg7CiAgICBydmFsID0gdHJ1ZTsKICB9IGNhdGNoKGV4KSB7CiAgICAvLyBpbmZsYXRlIGVycm9yLCBmYWlsIG91dAogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUmVhZHMgYSBUTFMgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciBmcm9tIGEgYnl0ZSBidWZmZXIuCiAqCiAqIFZhcmlhYmxlLWxlbmd0aCB2ZWN0b3JzIGFyZSBkZWZpbmVkIGJ5IHNwZWNpZnlpbmcgYSBzdWJyYW5nZSBvZiBsZWdhbAogKiBsZW5ndGhzLCBpbmNsdXNpdmVseSwgdXNpbmcgdGhlIG5vdGF0aW9uIDxmbG9vci4uY2VpbGluZz4uIFdoZW4gdGhlc2UgYXJlCiAqIGVuY29kZWQsIHRoZSBhY3R1YWwgbGVuZ3RoIHByZWNlZGVzIHRoZSB2ZWN0b3IncyBjb250ZW50cyBpbiB0aGUgYnl0ZQogKiBzdHJlYW0uIFRoZSBsZW5ndGggd2lsbCBiZSBpbiB0aGUgZm9ybSBvZiBhIG51bWJlciBjb25zdW1pbmcgYXMgbWFueSBieXRlcwogKiBhcyByZXF1aXJlZCB0byBob2xkIHRoZSB2ZWN0b3IncyBzcGVjaWZpZWQgbWF4aW11bSAoY2VpbGluZykgbGVuZ3RoLiBBCiAqIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3Igd2l0aCBhbiBhY3R1YWwgbGVuZ3RoIGZpZWxkIG9mIHplcm8gaXMgcmVmZXJyZWQgdG8KICogYXMgYW4gZW1wdHkgdmVjdG9yLgogKgogKiBAcGFyYW0gYiB0aGUgYnl0ZSBidWZmZXIuCiAqIEBwYXJhbSBsZW5CeXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHN0b3JlIHRoZSBsZW5ndGguCiAqCiAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyBieXRlIGJ1ZmZlci4KICovCnZhciByZWFkVmVjdG9yID0gZnVuY3Rpb24oYiwgbGVuQnl0ZXMpIHsKICB2YXIgbGVuID0gMDsKICBzd2l0Y2gobGVuQnl0ZXMpIHsKICBjYXNlIDE6CiAgICBsZW4gPSBiLmdldEJ5dGUoKTsKICAgIGJyZWFrOwogIGNhc2UgMjoKICAgIGxlbiA9IGIuZ2V0SW50MTYoKTsKICAgIGJyZWFrOwogIGNhc2UgMzoKICAgIGxlbiA9IGIuZ2V0SW50MjQoKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIGxlbiA9IGIuZ2V0SW50MzIoKTsKICAgIGJyZWFrOwogIH0KCiAgLy8gcmVhZCB2ZWN0b3IgYnl0ZXMgaW50byBhIG5ldyBidWZmZXIKICByZXR1cm4gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoYi5nZXRCeXRlcyhsZW4pKTsKfTsKCi8qKgogKiBXcml0ZXMgYSBUTFMgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciB0byBhIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gYiB0aGUgYnl0ZSBidWZmZXIuCiAqIEBwYXJhbSBsZW5CeXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHN0b3JlIHRoZSBsZW5ndGguCiAqIEBwYXJhbSB2IHRoZSBieXRlIGJ1ZmZlciB2ZWN0b3IuCiAqLwp2YXIgd3JpdGVWZWN0b3IgPSBmdW5jdGlvbihiLCBsZW5CeXRlcywgdikgewogIC8vIGVuY29kZSBsZW5ndGggYXQgdGhlIHN0YXJ0IG9mIHRoZSB2ZWN0b3IsIHdoZXJlIHRoZSBudW1iZXIgb2YgYnl0ZXMgZm9yCiAgLy8gdGhlIGxlbmd0aCBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaXQgd291bGQgdGFrZSB0byBlbmNvZGUgdGhlCiAgLy8gdmVjdG9yJ3MgY2VpbGluZwogIGIucHV0SW50KHYubGVuZ3RoKCksIGxlbkJ5dGVzIDw8IDMpOwogIGIucHV0QnVmZmVyKHYpOwp9OwoKLyoqCiAqIFRoZSB0bHMgaW1wbGVtZW50YXRpb24uCiAqLwp2YXIgdGxzID0ge307CgovKioKICogVmVyc2lvbjogVExTIDEuMiA9IDMuMywgVExTIDEuMSA9IDMuMiwgVExTIDEuMCA9IDMuMS4gQm90aCBUTFMgMS4xIGFuZAogKiBUTFMgMS4yIHdlcmUgc3RpbGwgdG9vIG5ldyAoaWU6IG9wZW5TU0wgZGlkbid0IGltcGxlbWVudCB0aGVtKSBhdCB0aGUgdGltZQogKiBvZiB0aGlzIGltcGxlbWVudGF0aW9uIHNvIFRMUyAxLjAgd2FzIGltcGxlbWVudGVkIGluc3RlYWQuCiAqLwp0bHMuVmVyc2lvbnMgPSB7CiAgVExTXzFfMDoge21ham9yOiAzLCBtaW5vcjogMX0sCiAgVExTXzFfMToge21ham9yOiAzLCBtaW5vcjogMn0sCiAgVExTXzFfMjoge21ham9yOiAzLCBtaW5vcjogM30KfTsKdGxzLlN1cHBvcnRlZFZlcnNpb25zID0gWwogIHRscy5WZXJzaW9ucy5UTFNfMV8xLAogIHRscy5WZXJzaW9ucy5UTFNfMV8wCl07CnRscy5WZXJzaW9uID0gdGxzLlN1cHBvcnRlZFZlcnNpb25zWzBdOwoKLyoqCiAqIE1heGltdW0gZnJhZ21lbnQgc2l6ZS4gVHJ1ZSBtYXhpbXVtIGlzIDE2Mzg0LCBidXQgd2UgZnJhZ21lbnQgYmVmb3JlIHRoYXQKICogdG8gYWxsb3cgZm9yIHVudXN1YWwgc21hbGwgaW5jcmVhc2VzIGR1cmluZyBjb21wcmVzc2lvbi4KICovCnRscy5NYXhGcmFnbWVudCA9IDE2Mzg0IC0gMTAyNDsKCi8qKgogKiBXaGV0aGVyIHRoaXMgZW50aXR5IGlzIGNvbnNpZGVyZWQgdGhlICJjbGllbnQiIG9yICJzZXJ2ZXIiLgogKiBlbnVtIHsgc2VydmVyLCBjbGllbnQgfSBDb25uZWN0aW9uRW5kOwogKi8KdGxzLkNvbm5lY3Rpb25FbmQgPSB7CiAgc2VydmVyOiAwLAogIGNsaWVudDogMQp9OwoKLyoqCiAqIFBzZXVkby1yYW5kb20gZnVuY3Rpb24gYWxnb3JpdGhtIHVzZWQgdG8gZ2VuZXJhdGUga2V5cyBmcm9tIHRoZSBtYXN0ZXIKICogc2VjcmV0LgogKiBlbnVtIHsgdGxzX3ByZl9zaGEyNTYgfSBQUkZBbGdvcml0aG07CiAqLwp0bHMuUFJGQWxnb3JpdGhtID0gewogIHRsc19wcmZfc2hhMjU2OiAwCn07CgovKioKICogQnVsayBlbmNyeXB0aW9uIGFsZ29yaXRobXMuCiAqIGVudW0geyBudWxsLCByYzQsIGRlczMsIGFlcyB9IEJ1bGtDaXBoZXJBbGdvcml0aG07CiAqLwp0bHMuQnVsa0NpcGhlckFsZ29yaXRobSA9IHsKICBub25lOiBudWxsLAogIHJjNDogMCwKICBkZXMzOiAxLAogIGFlczogMgp9OwoKLyoqCiAqIENpcGhlciB0eXBlcy4KICogZW51bSB7IHN0cmVhbSwgYmxvY2ssIGFlYWQgfSBDaXBoZXJUeXBlOwogKi8KdGxzLkNpcGhlclR5cGUgPSB7CiAgc3RyZWFtOiAwLAogIGJsb2NrOiAxLAogIGFlYWQ6IDIKfTsKCi8qKgogKiBNQUMgKE1lc3NhZ2UgQXV0aGVudGljYXRpb24gQ29kZSkgYWxnb3JpdGhtcy4KICogZW51bSB7IG51bGwsIGhtYWNfbWQ1LCBobWFjX3NoYTEsIGhtYWNfc2hhMjU2LAogKiAgIGhtYWNfc2hhMzg0LCBobWFjX3NoYTUxMn0gTUFDQWxnb3JpdGhtOwogKi8KdGxzLk1BQ0FsZ29yaXRobSA9IHsKICBub25lOiBudWxsLAogIGhtYWNfbWQ1OiAwLAogIGhtYWNfc2hhMTogMSwKICBobWFjX3NoYTI1NjogMiwKICBobWFjX3NoYTM4NDogMywKICBobWFjX3NoYTUxMjogNAp9OwoKLyoqCiAqIENvbXByZXNzaW9uIGFsZ29yaXRobXMuCiAqIGVudW0geyBudWxsKDApLCBkZWZsYXRlKDEpLCAoMjU1KSB9IENvbXByZXNzaW9uTWV0aG9kOwogKi8KdGxzLkNvbXByZXNzaW9uTWV0aG9kID0gewogIG5vbmU6IDAsCiAgZGVmbGF0ZTogMQp9OwoKLyoqCiAqIFRMUyByZWNvcmQgY29udGVudCB0eXBlcy4KICogZW51bSB7CiAqICAgY2hhbmdlX2NpcGhlcl9zcGVjKDIwKSwgYWxlcnQoMjEpLCBoYW5kc2hha2UoMjIpLAogKiAgIGFwcGxpY2F0aW9uX2RhdGEoMjMpLCAoMjU1KQogKiB9IENvbnRlbnRUeXBlOwogKi8KdGxzLkNvbnRlbnRUeXBlID0gewogIGNoYW5nZV9jaXBoZXJfc3BlYzogMjAsCiAgYWxlcnQ6IDIxLAogIGhhbmRzaGFrZTogMjIsCiAgYXBwbGljYXRpb25fZGF0YTogMjMsCiAgaGVhcnRiZWF0OiAyNAp9OwoKLyoqCiAqIFRMUyBoYW5kc2hha2UgdHlwZXMuCiAqIGVudW0gewogKiAgIGhlbGxvX3JlcXVlc3QoMCksIGNsaWVudF9oZWxsbygxKSwgc2VydmVyX2hlbGxvKDIpLAogKiAgIGNlcnRpZmljYXRlKDExKSwgc2VydmVyX2tleV9leGNoYW5nZSAoMTIpLAogKiAgIGNlcnRpZmljYXRlX3JlcXVlc3QoMTMpLCBzZXJ2ZXJfaGVsbG9fZG9uZSgxNCksCiAqICAgY2VydGlmaWNhdGVfdmVyaWZ5KDE1KSwgY2xpZW50X2tleV9leGNoYW5nZSgxNiksCiAqICAgZmluaXNoZWQoMjApLCAoMjU1KQogKiB9IEhhbmRzaGFrZVR5cGU7CiAqLwp0bHMuSGFuZHNoYWtlVHlwZSA9IHsKICBoZWxsb19yZXF1ZXN0OiAwLAogIGNsaWVudF9oZWxsbzogMSwKICBzZXJ2ZXJfaGVsbG86IDIsCiAgY2VydGlmaWNhdGU6IDExLAogIHNlcnZlcl9rZXlfZXhjaGFuZ2U6IDEyLAogIGNlcnRpZmljYXRlX3JlcXVlc3Q6IDEzLAogIHNlcnZlcl9oZWxsb19kb25lOiAxNCwKICBjZXJ0aWZpY2F0ZV92ZXJpZnk6IDE1LAogIGNsaWVudF9rZXlfZXhjaGFuZ2U6IDE2LAogIGZpbmlzaGVkOiAyMAp9OwoKLyoqCiAqIFRMUyBBbGVydCBQcm90b2NvbC4KICoKICogZW51bSB7IHdhcm5pbmcoMSksIGZhdGFsKDIpLCAoMjU1KSB9IEFsZXJ0TGV2ZWw7CiAqCiAqIGVudW0gewogKiAgIGNsb3NlX25vdGlmeSgwKSwKICogICB1bmV4cGVjdGVkX21lc3NhZ2UoMTApLAogKiAgIGJhZF9yZWNvcmRfbWFjKDIwKSwKICogICBkZWNyeXB0aW9uX2ZhaWxlZCgyMSksCiAqICAgcmVjb3JkX292ZXJmbG93KDIyKSwKICogICBkZWNvbXByZXNzaW9uX2ZhaWx1cmUoMzApLAogKiAgIGhhbmRzaGFrZV9mYWlsdXJlKDQwKSwKICogICBiYWRfY2VydGlmaWNhdGUoNDIpLAogKiAgIHVuc3VwcG9ydGVkX2NlcnRpZmljYXRlKDQzKSwKICogICBjZXJ0aWZpY2F0ZV9yZXZva2VkKDQ0KSwKICogICBjZXJ0aWZpY2F0ZV9leHBpcmVkKDQ1KSwKICogICBjZXJ0aWZpY2F0ZV91bmtub3duKDQ2KSwKICogICBpbGxlZ2FsX3BhcmFtZXRlcig0NyksCiAqICAgdW5rbm93bl9jYSg0OCksCiAqICAgYWNjZXNzX2RlbmllZCg0OSksCiAqICAgZGVjb2RlX2Vycm9yKDUwKSwKICogICBkZWNyeXB0X2Vycm9yKDUxKSwKICogICBleHBvcnRfcmVzdHJpY3Rpb24oNjApLAogKiAgIHByb3RvY29sX3ZlcnNpb24oNzApLAogKiAgIGluc3VmZmljaWVudF9zZWN1cml0eSg3MSksCiAqICAgaW50ZXJuYWxfZXJyb3IoODApLAogKiAgIHVzZXJfY2FuY2VsZWQoOTApLAogKiAgIG5vX3JlbmVnb3RpYXRpb24oMTAwKSwKICogICAoMjU1KQogKiB9IEFsZXJ0RGVzY3JpcHRpb247CiAqCiAqIHN0cnVjdCB7CiAqICAgQWxlcnRMZXZlbCBsZXZlbDsKICogICBBbGVydERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwogKiB9IEFsZXJ0OwogKi8KdGxzLkFsZXJ0ID0ge307CnRscy5BbGVydC5MZXZlbCA9IHsKICB3YXJuaW5nOiAxLAogIGZhdGFsOiAyCn07CnRscy5BbGVydC5EZXNjcmlwdGlvbiA9IHsKICBjbG9zZV9ub3RpZnk6IDAsCiAgdW5leHBlY3RlZF9tZXNzYWdlOiAxMCwKICBiYWRfcmVjb3JkX21hYzogMjAsCiAgZGVjcnlwdGlvbl9mYWlsZWQ6IDIxLAogIHJlY29yZF9vdmVyZmxvdzogMjIsCiAgZGVjb21wcmVzc2lvbl9mYWlsdXJlOiAzMCwKICBoYW5kc2hha2VfZmFpbHVyZTogNDAsCiAgYmFkX2NlcnRpZmljYXRlOiA0MiwKICB1bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTogNDMsCiAgY2VydGlmaWNhdGVfcmV2b2tlZDogNDQsCiAgY2VydGlmaWNhdGVfZXhwaXJlZDogNDUsCiAgY2VydGlmaWNhdGVfdW5rbm93bjogNDYsCiAgaWxsZWdhbF9wYXJhbWV0ZXI6IDQ3LAogIHVua25vd25fY2E6IDQ4LAogIGFjY2Vzc19kZW5pZWQ6IDQ5LAogIGRlY29kZV9lcnJvcjogNTAsCiAgZGVjcnlwdF9lcnJvcjogNTEsCiAgZXhwb3J0X3Jlc3RyaWN0aW9uOiA2MCwKICBwcm90b2NvbF92ZXJzaW9uOiA3MCwKICBpbnN1ZmZpY2llbnRfc2VjdXJpdHk6IDcxLAogIGludGVybmFsX2Vycm9yOiA4MCwKICB1c2VyX2NhbmNlbGVkOiA5MCwKICBub19yZW5lZ290aWF0aW9uOiAxMDAKfTsKCi8qKgogKiBUTFMgSGVhcnRiZWF0IE1lc3NhZ2UgdHlwZXMuCiAqIGVudW0gewogKiAgIGhlYXJ0YmVhdF9yZXF1ZXN0KDEpLAogKiAgIGhlYXJ0YmVhdF9yZXNwb25zZSgyKSwKICogICAoMjU1KQogKiB9IEhlYXJ0YmVhdE1lc3NhZ2VUeXBlOwogKi8KdGxzLkhlYXJ0YmVhdE1lc3NhZ2VUeXBlID0gewogIGhlYXJ0YmVhdF9yZXF1ZXN0OiAxLAogIGhlYXJ0YmVhdF9yZXNwb25zZTogMgp9OwoKLyoqCiAqIFN1cHBvcnRlZCBjaXBoZXIgc3VpdGVzLgogKi8KdGxzLkNpcGhlclN1aXRlcyA9IHt9OwoKLyoqCiAqIEdldHMgYSBzdXBwb3J0ZWQgY2lwaGVyIHN1aXRlIGZyb20gaXRzIDIgYnl0ZSBJRC4KICoKICogQHBhcmFtIHR3b0J5dGVzIHR3byBieXRlcyBpbiBhIHN0cmluZy4KICoKICogQHJldHVybiB0aGUgbWF0Y2hpbmcgc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSBvciBudWxsLgogKi8KdGxzLmdldENpcGhlclN1aXRlID0gZnVuY3Rpb24odHdvQnl0ZXMpIHsKICB2YXIgcnZhbCA9IG51bGw7CiAgZm9yKHZhciBrZXkgaW4gdGxzLkNpcGhlclN1aXRlcykgewogICAgdmFyIGNzID0gdGxzLkNpcGhlclN1aXRlc1trZXldOwogICAgaWYoY3MuaWRbMF0gPT09IHR3b0J5dGVzLmNoYXJDb2RlQXQoMCkgJiYKICAgICAgY3MuaWRbMV0gPT09IHR3b0J5dGVzLmNoYXJDb2RlQXQoMSkpIHsKICAgICAgcnZhbCA9IGNzOwogICAgICBicmVhazsKICAgIH0KICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYW4gdW5leHBlY3RlZCByZWNvcmQgaXMgZW5jb3VudGVyZWQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqLwp0bHMuaGFuZGxlVW5leHBlY3RlZCA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIC8vIGlmIGNvbm5lY3Rpb24gaXMgY2xpZW50IGFuZCBjbG9zZWQsIGlnbm9yZSB1bmV4cGVjdGVkIG1lc3NhZ2VzCiAgdmFyIGlnbm9yZSA9ICghYy5vcGVuICYmIGMuZW50aXR5ID09PSB0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnQpOwogIGlmKCFpZ25vcmUpIHsKICAgIGMuZXJyb3IoYywgewogICAgICBtZXNzYWdlOiAnVW5leHBlY3RlZCBtZXNzYWdlLiBSZWNlaXZlZCBUTFMgcmVjb3JkIG91dCBvZiBvcmRlci4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi51bmV4cGVjdGVkX21lc3NhZ2UKICAgICAgfQogICAgfSk7CiAgfQp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgY2xpZW50IHJlY2VpdmVzIGEgSGVsbG9SZXF1ZXN0IHJlY29yZC4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVIZWxsb1JlcXVlc3QgPSBmdW5jdGlvbihjLCByZWNvcmQsIGxlbmd0aCkgewogIC8vIGlnbm9yZSByZW5lZ290aWF0aW9uIHJlcXVlc3RzIGZyb20gdGhlIHNlcnZlciBkdXJpbmcgYSBoYW5kc2hha2UsIGJ1dAogIC8vIGlmIGhhbmRzaGFraW5nLCBzZW5kIGEgd2FybmluZyBhbGVydCB0aGF0IHJlbmVnb3RhdGlvbiBpcyBkZW5pZWQKICBpZighYy5oYW5kc2hha2luZyAmJiBjLmhhbmRzaGFrZXMgPiAwKSB7CiAgICAvLyBzZW5kIGFsZXJ0IHdhcm5pbmcKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlQWxlcnQoYywgewogICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC53YXJuaW5nLAogICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5ub19yZW5lZ290aWF0aW9uCiAgICB9KSk7CiAgICB0bHMuZmx1c2goYyk7CiAgfQoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIFBhcnNlcyBhIGhlbGxvIG1lc3NhZ2UgZnJvbSBhIENsaWVudEhlbGxvIG9yIFNlcnZlckhlbGxvIHJlY29yZC4KICoKICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkIHRvIHBhcnNlLgogKgogKiBAcmV0dXJuIHRoZSBwYXJzZWQgbWVzc2FnZS4KICovCnRscy5wYXJzZUhlbGxvTWVzc2FnZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgdmFyIG1zZyA9IG51bGw7CgogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CgogIC8vIG1pbmltdW0gb2YgMzggYnl0ZXMgaW4gbWVzc2FnZQogIGlmKGxlbmd0aCA8IDM4KSB7CiAgICBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogY2xpZW50ID8KICAgICAgICAnSW52YWxpZCBTZXJ2ZXJIZWxsbyBtZXNzYWdlLiBNZXNzYWdlIHRvbyBzaG9ydC4nIDoKICAgICAgICAnSW52YWxpZCBDbGllbnRIZWxsbyBtZXNzYWdlLiBNZXNzYWdlIHRvbyBzaG9ydC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcgogICAgICB9CiAgICB9KTsKICB9IGVsc2UgewogICAgLy8gdXNlICdyZW1haW5pbmcnIHRvIGNhbGN1bGF0ZSAjIG9mIHJlbWFpbmluZyBieXRlcyBpbiB0aGUgbWVzc2FnZQogICAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgICB2YXIgcmVtYWluaW5nID0gYi5sZW5ndGgoKTsKICAgIG1zZyA9IHsKICAgICAgdmVyc2lvbjogewogICAgICAgIG1ham9yOiBiLmdldEJ5dGUoKSwKICAgICAgICBtaW5vcjogYi5nZXRCeXRlKCkKICAgICAgfSwKICAgICAgcmFuZG9tOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihiLmdldEJ5dGVzKDMyKSksCiAgICAgIHNlc3Npb25faWQ6IHJlYWRWZWN0b3IoYiwgMSksCiAgICAgIGV4dGVuc2lvbnM6IFtdCiAgICB9OwogICAgaWYoY2xpZW50KSB7CiAgICAgIG1zZy5jaXBoZXJfc3VpdGUgPSBiLmdldEJ5dGVzKDIpOwogICAgICBtc2cuY29tcHJlc3Npb25fbWV0aG9kID0gYi5nZXRCeXRlKCk7CiAgICB9IGVsc2UgewogICAgICBtc2cuY2lwaGVyX3N1aXRlcyA9IHJlYWRWZWN0b3IoYiwgMik7CiAgICAgIG1zZy5jb21wcmVzc2lvbl9tZXRob2RzID0gcmVhZFZlY3RvcihiLCAxKTsKICAgIH0KCiAgICAvLyByZWFkIGV4dGVuc2lvbnMgaWYgdGhlcmUgYXJlIGFueSBieXRlcyBsZWZ0IGluIHRoZSBtZXNzYWdlCiAgICByZW1haW5pbmcgPSBsZW5ndGggLSAocmVtYWluaW5nIC0gYi5sZW5ndGgoKSk7CiAgICBpZihyZW1haW5pbmcgPiAwKSB7CiAgICAgIC8vIHBhcnNlIGV4dGVuc2lvbnMKICAgICAgdmFyIGV4dHMgPSByZWFkVmVjdG9yKGIsIDIpOwogICAgICB3aGlsZShleHRzLmxlbmd0aCgpID4gMCkgewogICAgICAgIG1zZy5leHRlbnNpb25zLnB1c2goewogICAgICAgICAgdHlwZTogW2V4dHMuZ2V0Qnl0ZSgpLCBleHRzLmdldEJ5dGUoKV0sCiAgICAgICAgICBkYXRhOiByZWFkVmVjdG9yKGV4dHMsIDIpCiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIC8vIFRPRE86IG1ha2UgZXh0ZW5zaW9uIHN1cHBvcnQgbW9kdWxhcgogICAgICBpZighY2xpZW50KSB7CiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5leHRlbnNpb25zLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICB2YXIgZXh0ID0gbXNnLmV4dGVuc2lvbnNbaV07CgogICAgICAgICAgLy8gc3VwcG9ydCBTTkkgZXh0ZW5zaW9uCiAgICAgICAgICBpZihleHQudHlwZVswXSA9PT0gMHgwMCAmJiBleHQudHlwZVsxXSA9PT0gMHgwMCkgewogICAgICAgICAgICAvLyBnZXQgc2VydmVyIG5hbWUgbGlzdAogICAgICAgICAgICB2YXIgc25sID0gcmVhZFZlY3RvcihleHQuZGF0YSwgMik7CiAgICAgICAgICAgIHdoaWxlKHNubC5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgICAvLyByZWFkIHNlcnZlciBuYW1lIHR5cGUKICAgICAgICAgICAgICB2YXIgc25UeXBlID0gc25sLmdldEJ5dGUoKTsKCiAgICAgICAgICAgICAgLy8gb25seSBIb3N0TmFtZSB0eXBlICgweDAwKSBpcyBrbm93biwgYnJlYWsgb3V0IGlmCiAgICAgICAgICAgICAgLy8gYW5vdGhlciB0eXBlIGlzIGRldGVjdGVkCiAgICAgICAgICAgICAgaWYoc25UeXBlICE9PSAweDAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIC8vIGFkZCBob3N0IG5hbWUgdG8gc2VydmVyIG5hbWUgbGlzdAogICAgICAgICAgICAgIGMuc2Vzc2lvbi5leHRlbnNpb25zLnNlcnZlcl9uYW1lLnNlcnZlck5hbWVMaXN0LnB1c2goCiAgICAgICAgICAgICAgICByZWFkVmVjdG9yKHNubCwgMikuZ2V0Qnl0ZXMoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyB2ZXJzaW9uIGFscmVhZHkgc2V0LCBkbyBub3QgYWxsb3cgdmVyc2lvbiBjaGFuZ2UKICAgIGlmKGMuc2Vzc2lvbi52ZXJzaW9uKSB7CiAgICAgIGlmKG1zZy52ZXJzaW9uLm1ham9yICE9PSBjLnNlc3Npb24udmVyc2lvbi5tYWpvciB8fAogICAgICAgIG1zZy52ZXJzaW9uLm1pbm9yICE9PSBjLnNlc3Npb24udmVyc2lvbi5taW5vcikgewogICAgICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgICAgIG1lc3NhZ2U6ICdUTFMgdmVyc2lvbiBjaGFuZ2UgaXMgZGlzYWxsb3dlZCBkdXJpbmcgcmVuZWdvdGlhdGlvbi4nLAogICAgICAgICAgc2VuZDogdHJ1ZSwKICAgICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24ucHJvdG9jb2xfdmVyc2lvbgogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLy8gZ2V0IHRoZSBjaG9zZW4gKFNlcnZlckhlbGxvKSBjaXBoZXIgc3VpdGUKICAgIGlmKGNsaWVudCkgewogICAgICAvLyBGSVhNRTogc2hvdWxkIGJlIGNoZWNraW5nIGNvbmZpZ3VyZWQgYWNjZXB0YWJsZSBjaXBoZXIgc3VpdGVzCiAgICAgIGMuc2Vzc2lvbi5jaXBoZXJTdWl0ZSA9IHRscy5nZXRDaXBoZXJTdWl0ZShtc2cuY2lwaGVyX3N1aXRlKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIGdldCBhIHN1cHBvcnRlZCBwcmVmZXJyZWQgKENsaWVudEhlbGxvKSBjaXBoZXIgc3VpdGUKICAgICAgLy8gY2hvb3NlIHRoZSBmaXJzdCBzdXBwb3J0ZWQgY2lwaGVyIHN1aXRlCiAgICAgIHZhciB0bXAgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuY2lwaGVyX3N1aXRlcy5ieXRlcygpKTsKICAgICAgd2hpbGUodG1wLmxlbmd0aCgpID4gMCkgewogICAgICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgY2hlY2tpbmcgY29uZmlndXJlZCBhY2NlcHRhYmxlIHN1aXRlcwogICAgICAgIC8vIGNpcGhlciBzdWl0ZXMgdGFrZSB1cCAyIGJ5dGVzCiAgICAgICAgYy5zZXNzaW9uLmNpcGhlclN1aXRlID0gdGxzLmdldENpcGhlclN1aXRlKHRtcC5nZXRCeXRlcygyKSk7CiAgICAgICAgaWYoYy5zZXNzaW9uLmNpcGhlclN1aXRlICE9PSBudWxsKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBjaXBoZXIgc3VpdGUgbm90IHN1cHBvcnRlZAogICAgaWYoYy5zZXNzaW9uLmNpcGhlclN1aXRlID09PSBudWxsKSB7CiAgICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnTm8gY2lwaGVyIHN1aXRlcyBpbiBjb21tb24uJywKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5oYW5kc2hha2VfZmFpbHVyZQogICAgICAgIH0sCiAgICAgICAgY2lwaGVyU3VpdGU6IGZvcmdlLnV0aWwuYnl0ZXNUb0hleChtc2cuY2lwaGVyX3N1aXRlKQogICAgICB9KTsKICAgIH0KCiAgICAvLyBUT0RPOiBoYW5kbGUgY29tcHJlc3Npb24gbWV0aG9kcwogICAgaWYoY2xpZW50KSB7CiAgICAgIGMuc2Vzc2lvbi5jb21wcmVzc2lvbk1ldGhvZCA9IG1zZy5jb21wcmVzc2lvbl9tZXRob2Q7CiAgICB9IGVsc2UgewogICAgICAvLyBubyBjb21wcmVzc2lvbgogICAgICBjLnNlc3Npb24uY29tcHJlc3Npb25NZXRob2QgPSB0bHMuQ29tcHJlc3Npb25NZXRob2Qubm9uZTsKICAgIH0KICB9CgogIHJldHVybiBtc2c7Cn07CgovKioKICogQ3JlYXRlcyBzZWN1cml0eSBwYXJhbWV0ZXJzIGZvciB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBiYXNlZCBvbiB0aGUgZ2l2ZW4KICogaGVsbG8gbWVzc2FnZS4KICoKICogQHBhcmFtIGMgdGhlIFRMUyBjb25uZWN0aW9uLgogKiBAcGFyYW0gbXNnIHRoZSBoZWxsbyBtZXNzYWdlLgogKi8KdGxzLmNyZWF0ZVNlY3VyaXR5UGFyYW1ldGVycyA9IGZ1bmN0aW9uKGMsIG1zZykgewogIC8qIE5vdGU6IHNlY3VyaXR5IHBhcmFtcyBhcmUgZnJvbSBUTFMgMS4yLCBzb21lIHZhbHVlcyBsaWtlIHByZl9hbGdvcml0aG0KICBhcmUgaWdub3JlZCBmb3IgVExTIDEuMC8xLjEgYW5kIHRoZSBidWlsdGluIGFzIHNwZWNpZmllZCBpbiB0aGUgc3BlYyBpcwogIHVzZWQuICovCgogIC8vIFRPRE86IGhhbmRsZSBvdGhlciBvcHRpb25zIGZyb20gc2VydmVyIHdoZW4gbW9yZSBzdXBwb3J0ZWQKCiAgLy8gZ2V0IGNsaWVudCBhbmQgc2VydmVyIHJhbmRvbXMKICB2YXIgY2xpZW50ID0gKGMuZW50aXR5ID09PSB0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnQpOwogIHZhciBtc2dSYW5kb20gPSBtc2cucmFuZG9tLmJ5dGVzKCk7CiAgdmFyIGNSYW5kb20gPSBjbGllbnQgPyBjLnNlc3Npb24uc3AuY2xpZW50X3JhbmRvbSA6IG1zZ1JhbmRvbTsKICB2YXIgc1JhbmRvbSA9IGNsaWVudCA/IG1zZ1JhbmRvbSA6IHRscy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpOwoKICAvLyBjcmVhdGUgbmV3IHNlY3VyaXR5IHBhcmFtZXRlcnMKICBjLnNlc3Npb24uc3AgPSB7CiAgICBlbnRpdHk6IGMuZW50aXR5LAogICAgcHJmX2FsZ29yaXRobTogdGxzLlBSRkFsZ29yaXRobS50bHNfcHJmX3NoYTI1NiwKICAgIGJ1bGtfY2lwaGVyX2FsZ29yaXRobTogbnVsbCwKICAgIGNpcGhlcl90eXBlOiBudWxsLAogICAgZW5jX2tleV9sZW5ndGg6IG51bGwsCiAgICBibG9ja19sZW5ndGg6IG51bGwsCiAgICBmaXhlZF9pdl9sZW5ndGg6IG51bGwsCiAgICByZWNvcmRfaXZfbGVuZ3RoOiBudWxsLAogICAgbWFjX2FsZ29yaXRobTogbnVsbCwKICAgIG1hY19sZW5ndGg6IG51bGwsCiAgICBtYWNfa2V5X2xlbmd0aDogbnVsbCwKICAgIGNvbXByZXNzaW9uX2FsZ29yaXRobTogYy5zZXNzaW9uLmNvbXByZXNzaW9uTWV0aG9kLAogICAgcHJlX21hc3Rlcl9zZWNyZXQ6IG51bGwsCiAgICBtYXN0ZXJfc2VjcmV0OiBudWxsLAogICAgY2xpZW50X3JhbmRvbTogY1JhbmRvbSwKICAgIHNlcnZlcl9yYW5kb206IHNSYW5kb20KICB9Owp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgY2xpZW50IHJlY2VpdmVzIGEgU2VydmVySGVsbG8gcmVjb3JkLgogKgogKiBXaGVuIGEgU2VydmVySGVsbG8gbWVzc2FnZSB3aWxsIGJlIHNlbnQ6CiAqICAgVGhlIHNlcnZlciB3aWxsIHNlbmQgdGhpcyBtZXNzYWdlIGluIHJlc3BvbnNlIHRvIGEgY2xpZW50IGhlbGxvIG1lc3NhZ2UKICogICB3aGVuIGl0IHdhcyBhYmxlIHRvIGZpbmQgYW4gYWNjZXB0YWJsZSBzZXQgb2YgYWxnb3JpdGhtcy4gSWYgaXQgY2Fubm90CiAqICAgZmluZCBzdWNoIGEgbWF0Y2gsIGl0IHdpbGwgcmVzcG9uZCB3aXRoIGEgaGFuZHNoYWtlIGZhaWx1cmUgYWxlcnQuCiAqCiAqIHVpbnQyNCBsZW5ndGg7CiAqIHN0cnVjdCB7CiAqICAgUHJvdG9jb2xWZXJzaW9uIHNlcnZlcl92ZXJzaW9uOwogKiAgIFJhbmRvbSByYW5kb207CiAqICAgU2Vzc2lvbklEIHNlc3Npb25faWQ7CiAqICAgQ2lwaGVyU3VpdGUgY2lwaGVyX3N1aXRlOwogKiAgIENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uX21ldGhvZDsKICogICBzZWxlY3QoZXh0ZW5zaW9uc19wcmVzZW50KSB7CiAqICAgICBjYXNlIGZhbHNlOgogKiAgICAgICBzdHJ1Y3Qge307CiAqICAgICBjYXNlIHRydWU6CiAqICAgICAgIEV4dGVuc2lvbiBleHRlbnNpb25zPDAuLjJeMTYtMT47CiAqICAgfTsKICogfSBTZXJ2ZXJIZWxsbzsKICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVTZXJ2ZXJIZWxsbyA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgdmFyIG1zZyA9IHRscy5wYXJzZUhlbGxvTWVzc2FnZShjLCByZWNvcmQsIGxlbmd0aCk7CiAgaWYoYy5mYWlsKSB7CiAgICByZXR1cm47CiAgfQoKICAvLyBlbnN1cmUgc2VydmVyIHZlcnNpb24gaXMgY29tcGF0aWJsZQogIGlmKG1zZy52ZXJzaW9uLm1pbm9yIDw9IGMudmVyc2lvbi5taW5vcikgewogICAgYy52ZXJzaW9uLm1pbm9yID0gbXNnLnZlcnNpb24ubWlub3I7CiAgfSBlbHNlIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0luY29tcGF0aWJsZSBUTFMgdmVyc2lvbi4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9uCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gaW5kaWNhdGUgc2Vzc2lvbiB2ZXJzaW9uIGhhcyBiZWVuIHNldAogIGMuc2Vzc2lvbi52ZXJzaW9uID0gYy52ZXJzaW9uOwoKICAvLyBnZXQgdGhlIHNlc3Npb24gSUQgZnJvbSB0aGUgbWVzc2FnZQogIHZhciBzZXNzaW9uSWQgPSBtc2cuc2Vzc2lvbl9pZC5ieXRlcygpOwoKICAvLyBpZiB0aGUgc2Vzc2lvbiBJRCBpcyBub3QgYmxhbmsgYW5kIG1hdGNoZXMgdGhlIGNhY2hlZCBvbmUsIHJlc3VtZQogIC8vIHRoZSBzZXNzaW9uCiAgaWYoc2Vzc2lvbklkLmxlbmd0aCA+IDAgJiYgc2Vzc2lvbklkID09PSBjLnNlc3Npb24uaWQpIHsKICAgIC8vIHJlc3VtaW5nIHNlc3Npb24sIGV4cGVjdCBhIENoYW5nZUNpcGhlclNwZWMgbmV4dAogICAgYy5leHBlY3QgPSBTQ0M7CiAgICBjLnNlc3Npb24ucmVzdW1pbmcgPSB0cnVlOwoKICAgIC8vIGdldCBuZXcgc2VydmVyIHJhbmRvbQogICAgYy5zZXNzaW9uLnNwLnNlcnZlcl9yYW5kb20gPSBtc2cucmFuZG9tLmJ5dGVzKCk7CiAgfSBlbHNlIHsKICAgIC8vIG5vdCByZXN1bWluZywgZXhwZWN0IGEgc2VydmVyIENlcnRpZmljYXRlIG1lc3NhZ2UgbmV4dAogICAgYy5leHBlY3QgPSBTQ0U7CiAgICBjLnNlc3Npb24ucmVzdW1pbmcgPSBmYWxzZTsKCiAgICAvLyBjcmVhdGUgbmV3IHNlY3VyaXR5IHBhcmFtZXRlcnMKICAgIHRscy5jcmVhdGVTZWN1cml0eVBhcmFtZXRlcnMoYywgbXNnKTsKICB9CgogIC8vIHNldCBuZXcgc2Vzc2lvbiBJRAogIGMuc2Vzc2lvbi5pZCA9IHNlc3Npb25JZDsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIHNlcnZlciByZWNlaXZlcyBhIENsaWVudEhlbGxvIHJlY29yZC4KICoKICogV2hlbiBhIENsaWVudEhlbGxvIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFdoZW4gYSBjbGllbnQgZmlyc3QgY29ubmVjdHMgdG8gYSBzZXJ2ZXIgaXQgaXMgcmVxdWlyZWQgdG8gc2VuZCB0aGUKICogICBjbGllbnQgaGVsbG8gYXMgaXRzIGZpcnN0IG1lc3NhZ2UuIFRoZSBjbGllbnQgY2FuIGFsc28gc2VuZCBhIGNsaWVudAogKiAgIGhlbGxvIGluIHJlc3BvbnNlIHRvIGEgaGVsbG8gcmVxdWVzdCBvciBvbiBpdHMgb3duIGluaXRpYXRpdmUgaW4gb3JkZXIKICogICB0byByZW5lZ290aWF0ZSB0aGUgc2VjdXJpdHkgcGFyYW1ldGVycyBpbiBhbiBleGlzdGluZyBjb25uZWN0aW9uLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlLgogKi8KdGxzLmhhbmRsZUNsaWVudEhlbGxvID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICB2YXIgbXNnID0gdGxzLnBhcnNlSGVsbG9NZXNzYWdlKGMsIHJlY29yZCwgbGVuZ3RoKTsKICBpZihjLmZhaWwpIHsKICAgIHJldHVybjsKICB9CgogIC8vIGdldCB0aGUgc2Vzc2lvbiBJRCBmcm9tIHRoZSBtZXNzYWdlCiAgdmFyIHNlc3Npb25JZCA9IG1zZy5zZXNzaW9uX2lkLmJ5dGVzKCk7CgogIC8vIHNlZSBpZiB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCBpcyBpbiB0aGUgY2FjaGUKICB2YXIgc2Vzc2lvbiA9IG51bGw7CiAgaWYoYy5zZXNzaW9uQ2FjaGUpIHsKICAgIHNlc3Npb24gPSBjLnNlc3Npb25DYWNoZS5nZXRTZXNzaW9uKHNlc3Npb25JZCk7CiAgICBpZihzZXNzaW9uID09PSBudWxsKSB7CiAgICAgIC8vIHNlc3Npb24gSUQgbm90IGZvdW5kCiAgICAgIHNlc3Npb25JZCA9ICcnOwogICAgfSBlbHNlIGlmKHNlc3Npb24udmVyc2lvbi5tYWpvciAhPT0gbXNnLnZlcnNpb24ubWFqb3IgfHwKICAgICAgc2Vzc2lvbi52ZXJzaW9uLm1pbm9yID4gbXNnLnZlcnNpb24ubWlub3IpIHsKICAgICAgLy8gaWYgc2Vzc2lvbiB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIGNsaWVudCB2ZXJzaW9uLCBkbyBub3QgcmVzdW1lCiAgICAgIHNlc3Npb24gPSBudWxsOwogICAgICBzZXNzaW9uSWQgPSAnJzsKICAgIH0KICB9CgogIC8vIG5vIHNlc3Npb24gZm91bmQgdG8gcmVzdW1lLCBnZW5lcmF0ZSBhIG5ldyBzZXNzaW9uIElECiAgaWYoc2Vzc2lvbklkLmxlbmd0aCA9PT0gMCkgewogICAgc2Vzc2lvbklkID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzKDMyKTsKICB9CgogIC8vIHVwZGF0ZSBzZXNzaW9uCiAgYy5zZXNzaW9uLmlkID0gc2Vzc2lvbklkOwogIGMuc2Vzc2lvbi5jbGllbnRIZWxsb1ZlcnNpb24gPSBtc2cudmVyc2lvbjsKICBjLnNlc3Npb24uc3AgPSB7fTsKICBpZihzZXNzaW9uKSB7CiAgICAvLyB1c2UgdmVyc2lvbiBhbmQgc2VjdXJpdHkgcGFyYW1ldGVycyBmcm9tIHJlc3VtZWQgc2Vzc2lvbgogICAgYy52ZXJzaW9uID0gYy5zZXNzaW9uLnZlcnNpb24gPSBzZXNzaW9uLnZlcnNpb247CiAgICBjLnNlc3Npb24uc3AgPSBzZXNzaW9uLnNwOwogIH0gZWxzZSB7CiAgICAvLyB1c2UgaGlnaGVzdCBjb21wYXRpYmxlIG1pbm9yIHZlcnNpb24KICAgIHZhciB2ZXJzaW9uOwogICAgZm9yKHZhciBpID0gMTsgaSA8IHRscy5TdXBwb3J0ZWRWZXJzaW9ucy5sZW5ndGg7ICsraSkgewogICAgICB2ZXJzaW9uID0gdGxzLlN1cHBvcnRlZFZlcnNpb25zW2ldOwogICAgICBpZih2ZXJzaW9uLm1pbm9yIDw9IG1zZy52ZXJzaW9uLm1pbm9yKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGMudmVyc2lvbiA9IHttYWpvcjogdmVyc2lvbi5tYWpvciwgbWlub3I6IHZlcnNpb24ubWlub3J9OwogICAgYy5zZXNzaW9uLnZlcnNpb24gPSBjLnZlcnNpb247CiAgfQoKICAvLyBpZiBhIHNlc3Npb24gaXMgc2V0LCByZXN1bWUgaXQKICBpZihzZXNzaW9uICE9PSBudWxsKSB7CiAgICAvLyByZXN1bWluZyBzZXNzaW9uLCBleHBlY3QgYSBDaGFuZ2VDaXBoZXJTcGVjIG5leHQKICAgIGMuZXhwZWN0ID0gQ0NDOwogICAgYy5zZXNzaW9uLnJlc3VtaW5nID0gdHJ1ZTsKCiAgICAvLyBnZXQgbmV3IGNsaWVudCByYW5kb20KICAgIGMuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tID0gbXNnLnJhbmRvbS5ieXRlcygpOwogIH0gZWxzZSB7CiAgICAvLyBub3QgcmVzdW1pbmcsIGV4cGVjdCBhIENlcnRpZmljYXRlIG9yIENsaWVudEtleUV4Y2hhbmdlCiAgICBjLmV4cGVjdCA9IChjLnZlcmlmeUNsaWVudCAhPT0gZmFsc2UpID8gQ0NFIDogQ0tFOwogICAgYy5zZXNzaW9uLnJlc3VtaW5nID0gZmFsc2U7CgogICAgLy8gY3JlYXRlIG5ldyBzZWN1cml0eSBwYXJhbWV0ZXJzCiAgICB0bHMuY3JlYXRlU2VjdXJpdHlQYXJhbWV0ZXJzKGMsIG1zZyk7CiAgfQoKICAvLyBjb25uZWN0aW9uIG5vdyBvcGVuCiAgYy5vcGVuID0gdHJ1ZTsKCiAgLy8gcXVldWUgc2VydmVyIGhlbGxvCiAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgIGRhdGE6IHRscy5jcmVhdGVTZXJ2ZXJIZWxsbyhjKQogIH0pKTsKCiAgaWYoYy5zZXNzaW9uLnJlc3VtaW5nKSB7CiAgICAvLyBxdWV1ZSBjaGFuZ2UgY2lwaGVyIHNwZWMgbWVzc2FnZQogICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuY2hhbmdlX2NpcGhlcl9zcGVjLAogICAgICBkYXRhOiB0bHMuY3JlYXRlQ2hhbmdlQ2lwaGVyU3BlYygpCiAgICB9KSk7CgogICAgLy8gY3JlYXRlIHBlbmRpbmcgc3RhdGUKICAgIGMuc3RhdGUucGVuZGluZyA9IHRscy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoYyk7CgogICAgLy8gY2hhbmdlIGN1cnJlbnQgd3JpdGUgc3RhdGUgdG8gcGVuZGluZyB3cml0ZSBzdGF0ZQogICAgYy5zdGF0ZS5jdXJyZW50LndyaXRlID0gYy5zdGF0ZS5wZW5kaW5nLndyaXRlOwoKICAgIC8vIHF1ZXVlIGZpbmlzaGVkCiAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5oYW5kc2hha2UsCiAgICAgIGRhdGE6IHRscy5jcmVhdGVGaW5pc2hlZChjKQogICAgfSkpOwogIH0gZWxzZSB7CiAgICAvLyBxdWV1ZSBzZXJ2ZXIgY2VydGlmaWNhdGUKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgZGF0YTogdGxzLmNyZWF0ZUNlcnRpZmljYXRlKGMpCiAgICB9KSk7CgogICAgaWYoIWMuZmFpbCkgewogICAgICAvLyBxdWV1ZSBzZXJ2ZXIga2V5IGV4Y2hhbmdlCiAgICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgICAgIGRhdGE6IHRscy5jcmVhdGVTZXJ2ZXJLZXlFeGNoYW5nZShjKQogICAgICB9KSk7CgogICAgICAvLyByZXF1ZXN0IGNsaWVudCBjZXJ0aWZpY2F0ZSBpZiBzZXQKICAgICAgaWYoYy52ZXJpZnlDbGllbnQgIT09IGZhbHNlKSB7CiAgICAgICAgLy8gcXVldWUgY2VydGlmaWNhdGUgcmVxdWVzdAogICAgICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5oYW5kc2hha2UsCiAgICAgICAgICBkYXRhOiB0bHMuY3JlYXRlQ2VydGlmaWNhdGVSZXF1ZXN0KGMpCiAgICAgICAgfSkpOwogICAgICB9CgogICAgICAvLyBxdWV1ZSBzZXJ2ZXIgaGVsbG8gZG9uZQogICAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgICBkYXRhOiB0bHMuY3JlYXRlU2VydmVySGVsbG9Eb25lKGMpCiAgICAgIH0pKTsKICAgIH0KICB9CgogIC8vIHNlbmQgcmVjb3JkcwogIHRscy5mbHVzaChjKTsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIENlcnRpZmljYXRlIHJlY29yZC4KICoKICogV2hlbiB0aGlzIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFRoZSBzZXJ2ZXIgbXVzdCBzZW5kIGEgY2VydGlmaWNhdGUgd2hlbmV2ZXIgdGhlIGFncmVlZC11cG9uIGtleSBleGNoYW5nZQogKiAgIG1ldGhvZCBpcyBub3QgYW4gYW5vbnltb3VzIG9uZS4gVGhpcyBtZXNzYWdlIHdpbGwgYWx3YXlzIGltbWVkaWF0ZWx5CiAqICAgZm9sbG93IHRoZSBzZXJ2ZXIgaGVsbG8gbWVzc2FnZS4KICoKICogTWVhbmluZyBvZiB0aGlzIG1lc3NhZ2U6CiAqICAgVGhlIGNlcnRpZmljYXRlIHR5cGUgbXVzdCBiZSBhcHByb3ByaWF0ZSBmb3IgdGhlIHNlbGVjdGVkIGNpcGhlciBzdWl0ZSdzCiAqICAga2V5IGV4Y2hhbmdlIGFsZ29yaXRobSwgYW5kIGlzIGdlbmVyYWxseSBhbiBYLjUwOXYzIGNlcnRpZmljYXRlLiBJdCBtdXN0CiAqICAgY29udGFpbiBhIGtleSB3aGljaCBtYXRjaGVzIHRoZSBrZXkgZXhjaGFuZ2UgbWV0aG9kLCBhcyBmb2xsb3dzLiBVbmxlc3MKICogICBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGUgc2lnbmluZyBhbGdvcml0aG0gZm9yIHRoZSBjZXJ0aWZpY2F0ZSBtdXN0IGJlCiAqICAgdGhlIHNhbWUgYXMgdGhlIGFsZ29yaXRobSBmb3IgdGhlIGNlcnRpZmljYXRlIGtleS4gVW5sZXNzIG90aGVyd2lzZQogKiAgIHNwZWNpZmllZCwgdGhlIHB1YmxpYyBrZXkgbWF5IGJlIG9mIGFueSBsZW5ndGguCiAqCiAqIG9wYXF1ZSBBU04uMUNlcnQ8MS4uMl4yNC0xPjsKICogc3RydWN0IHsKICogICBBU04uMUNlcnQgY2VydGlmaWNhdGVfbGlzdDwxLi4yXjI0LTE+OwogKiB9IENlcnRpZmljYXRlOwogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlLgogKi8KdGxzLmhhbmRsZUNlcnRpZmljYXRlID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICAvLyBtaW5pbXVtIG9mIDMgYnl0ZXMgaW4gbWVzc2FnZQogIGlmKGxlbmd0aCA8IDMpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2VydGlmaWNhdGUgbWVzc2FnZS4gTWVzc2FnZSB0b28gc2hvcnQuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXIKICAgICAgfQogICAgfSk7CiAgfQoKICB2YXIgYiA9IHJlY29yZC5mcmFnbWVudDsKICB2YXIgbXNnID0gewogICAgY2VydGlmaWNhdGVfbGlzdDogcmVhZFZlY3RvcihiLCAzKQogIH07CgogIC8qIFRoZSBzZW5kZXIncyBjZXJ0aWZpY2F0ZSB3aWxsIGJlIGZpcnN0IGluIHRoZSBsaXN0IChjaGFpbiksIGVhY2gKICAgIHN1YnNlcXVlbnQgb25lIHRoYXQgZm9sbG93cyB3aWxsIGNlcnRpZnkgdGhlIHByZXZpb3VzIG9uZSwgYnV0IHJvb3QKICAgIGNlcnRpZmljYXRlcyAoc2VsZi1zaWduZWQpIHRoYXQgc3BlY2lmeSB0aGUgY2VydGlmaWNhdGUgYXV0aG9yaXR5IG1heQogICAgYmUgb21pdHRlZCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsaWVudHMgbXVzdCBhbHJlYWR5IHBvc3Nlc3MgaXQuICovCiAgdmFyIGNlcnQsIGFzbjE7CiAgdmFyIGNlcnRzID0gW107CiAgdHJ5IHsKICAgIHdoaWxlKG1zZy5jZXJ0aWZpY2F0ZV9saXN0Lmxlbmd0aCgpID4gMCkgewogICAgICAvLyBlYWNoIGVudHJ5IGluIG1zZy5jZXJ0aWZpY2F0ZV9saXN0IGlzIGEgdmVjdG9yIHdpdGggMyBsZW4gYnl0ZXMKICAgICAgY2VydCA9IHJlYWRWZWN0b3IobXNnLmNlcnRpZmljYXRlX2xpc3QsIDMpOwogICAgICBhc24xID0gZm9yZ2UuYXNuMS5mcm9tRGVyKGNlcnQpOwogICAgICBjZXJ0ID0gZm9yZ2UucGtpLmNlcnRpZmljYXRlRnJvbUFzbjEoYXNuMSwgdHJ1ZSk7CiAgICAgIGNlcnRzLnB1c2goY2VydCk7CiAgICB9CiAgfSBjYXRjaChleCkgewogICAgcmV0dXJuIGMuZXJyb3IoYywgewogICAgICBtZXNzYWdlOiAnQ291bGQgbm90IHBhcnNlIGNlcnRpZmljYXRlIGxpc3QuJywKICAgICAgY2F1c2U6IGV4LAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGUKICAgICAgfQogICAgfSk7CiAgfQoKICAvLyBlbnN1cmUgYXQgbGVhc3QgMSBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQgaWYgaW4gY2xpZW50LW1vZGUKICAvLyBvciBpZiB2ZXJpZnlDbGllbnQgd2FzIHNldCB0byB0cnVlIHRvIHJlcXVpcmUgYSBjZXJ0aWZpY2F0ZQogIC8vIChhcyBvcHBvc2VkIHRvICdvcHRpb25hbCcpCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICBpZigoY2xpZW50IHx8IGMudmVyaWZ5Q2xpZW50ID09PSB0cnVlKSAmJiBjZXJ0cy5sZW5ndGggPT09IDApIHsKICAgIC8vIGVycm9yLCBubyBjZXJ0aWZpY2F0ZQogICAgYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6IGNsaWVudCA/CiAgICAgICAgJ05vIHNlcnZlciBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4nIDoKICAgICAgICAnTm8gY2xpZW50IGNlcnRpZmljYXRlIHByb3ZpZGVkLicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCiAgICAgIH0KICAgIH0pOwogIH0gZWxzZSBpZihjZXJ0cy5sZW5ndGggPT09IDApIHsKICAgIC8vIG5vIGNlcnRzIHRvIHZlcmlmeQogICAgLy8gZXhwZWN0IGEgU2VydmVyS2V5RXhjaGFuZ2Ugb3IgQ2xpZW50S2V5RXhjaGFuZ2UgbWVzc2FnZSBuZXh0CiAgICBjLmV4cGVjdCA9IGNsaWVudCA/IFNLRSA6IENLRTsKICB9IGVsc2UgewogICAgLy8gc2F2ZSBjZXJ0aWZpY2F0ZSBpbiBzZXNzaW9uCiAgICBpZihjbGllbnQpIHsKICAgICAgYy5zZXNzaW9uLnNlcnZlckNlcnRpZmljYXRlID0gY2VydHNbMF07CiAgICB9IGVsc2UgewogICAgICBjLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUgPSBjZXJ0c1swXTsKICAgIH0KCiAgICBpZih0bHMudmVyaWZ5Q2VydGlmaWNhdGVDaGFpbihjLCBjZXJ0cykpIHsKICAgICAgLy8gZXhwZWN0IGEgU2VydmVyS2V5RXhjaGFuZ2Ugb3IgQ2xpZW50S2V5RXhjaGFuZ2UgbWVzc2FnZSBuZXh0CiAgICAgIGMuZXhwZWN0ID0gY2xpZW50ID8gU0tFIDogQ0tFOwogICAgfQogIH0KCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIFNlcnZlcktleUV4Y2hhbmdlIHJlY29yZC4KICoKICogV2hlbiB0aGlzIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFRoaXMgbWVzc2FnZSB3aWxsIGJlIHNlbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZQogKiAgIG1lc3NhZ2UgKG9yIHRoZSBzZXJ2ZXIgaGVsbG8gbWVzc2FnZSwgaWYgdGhpcyBpcyBhbiBhbm9ueW1vdXMKICogICBuZWdvdGlhdGlvbikuCiAqCiAqICAgVGhlIHNlcnZlciBrZXkgZXhjaGFuZ2UgbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBzZXJ2ZXIgb25seSB3aGVuIHRoZQogKiAgIHNlcnZlciBjZXJ0aWZpY2F0ZSBtZXNzYWdlIChpZiBzZW50KSBkb2VzIG5vdCBjb250YWluIGVub3VnaCBkYXRhIHRvCiAqICAgYWxsb3cgdGhlIGNsaWVudCB0byBleGNoYW5nZSBhIHByZW1hc3RlciBzZWNyZXQuCiAqCiAqIE1lYW5pbmcgb2YgdGhpcyBtZXNzYWdlOgogKiAgIFRoaXMgbWVzc2FnZSBjb252ZXlzIGNyeXB0b2dyYXBoaWMgaW5mb3JtYXRpb24gdG8gYWxsb3cgdGhlIGNsaWVudCB0bwogKiAgIGNvbW11bmljYXRlIHRoZSBwcmVtYXN0ZXIgc2VjcmV0OiBlaXRoZXIgYW4gUlNBIHB1YmxpYyBrZXkgdG8gZW5jcnlwdAogKiAgIHRoZSBwcmVtYXN0ZXIgc2VjcmV0IHdpdGgsIG9yIGEgRGlmZmllLUhlbGxtYW4gcHVibGljIGtleSB3aXRoIHdoaWNoIHRoZQogKiAgIGNsaWVudCBjYW4gY29tcGxldGUgYSBrZXkgZXhjaGFuZ2UgKHdpdGggdGhlIHJlc3VsdCBiZWluZyB0aGUgcHJlbWFzdGVyCiAqICAgc2VjcmV0LikKICoKICogZW51bSB7CiAqICAgZGhlX2RzcywgZGhlX3JzYSwgZGhfYW5vbiwgcnNhLCBkaF9kc3MsIGRoX3JzYQogKiB9IEtleUV4Y2hhbmdlQWxnb3JpdGhtOwogKgogKiBzdHJ1Y3QgewogKiAgIG9wYXF1ZSBkaF9wPDEuLjJeMTYtMT47CiAqICAgb3BhcXVlIGRoX2c8MS4uMl4xNi0xPjsKICogICBvcGFxdWUgZGhfWXM8MS4uMl4xNi0xPjsKICogfSBTZXJ2ZXJESFBhcmFtczsKICoKICogc3RydWN0IHsKICogICBzZWxlY3QoS2V5RXhjaGFuZ2VBbGdvcml0aG0pIHsKICogICAgIGNhc2UgZGhfYW5vbjoKICogICAgICAgU2VydmVyREhQYXJhbXMgcGFyYW1zOwogKiAgICAgY2FzZSBkaGVfZHNzOgogKiAgICAgY2FzZSBkaGVfcnNhOgogKiAgICAgICBTZXJ2ZXJESFBhcmFtcyBwYXJhbXM7CiAqICAgICAgIGRpZ2l0YWxseS1zaWduZWQgc3RydWN0IHsKICogICAgICAgICBvcGFxdWUgY2xpZW50X3JhbmRvbVszMl07CiAqICAgICAgICAgb3BhcXVlIHNlcnZlcl9yYW5kb21bMzJdOwogKiAgICAgICAgIFNlcnZlckRIUGFyYW1zIHBhcmFtczsKICogICAgICAgfSBzaWduZWRfcGFyYW1zOwogKiAgICAgY2FzZSByc2E6CiAqICAgICBjYXNlIGRoX2RzczoKICogICAgIGNhc2UgZGhfcnNhOgogKiAgICAgICBzdHJ1Y3Qge307CiAqICAgfTsKICogfSBTZXJ2ZXJLZXlFeGNoYW5nZTsKICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVTZXJ2ZXJLZXlFeGNoYW5nZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgLy8gdGhpcyBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIFJTQSwgbm8gRGlmZmllLUhlbGxtYW4gc3VwcG9ydAogIC8vIHNvIGFueSBsZW5ndGggPiAwIGlzIGludmFsaWQKICBpZihsZW5ndGggPiAwKSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGtleSBwYXJhbWV0ZXJzLiBPbmx5IFJTQSBpcyBzdXBwb3J0ZWQuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24udW5zdXBwb3J0ZWRfY2VydGlmaWNhdGUKICAgICAgfQogICAgfSk7CiAgfQoKICAvLyBleHBlY3QgYW4gb3B0aW9uYWwgQ2VydGlmaWNhdGVSZXF1ZXN0IG1lc3NhZ2UgbmV4dAogIGMuZXhwZWN0ID0gU0NSOwoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgY2xpZW50IHJlY2VpdmVzIGEgQ2xpZW50S2V5RXhjaGFuZ2UgcmVjb3JkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlLgogKi8KdGxzLmhhbmRsZUNsaWVudEtleUV4Y2hhbmdlID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICAvLyB0aGlzIGltcGxlbWVudGF0aW9uIG9ubHkgc3VwcG9ydHMgUlNBLCBubyBEaWZmaWUtSGVsbG1hbiBzdXBwb3J0CiAgLy8gc28gYW55IGxlbmd0aCA8IDQ4IGlzIGludmFsaWQKICBpZihsZW5ndGggPCA0OCkgewogICAgcmV0dXJuIGMuZXJyb3IoYywgewogICAgICBtZXNzYWdlOiAnSW52YWxpZCBrZXkgcGFyYW1ldGVycy4gT25seSBSU0EgaXMgc3VwcG9ydGVkLicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVuc3VwcG9ydGVkX2NlcnRpZmljYXRlCiAgICAgIH0KICAgIH0pOwogIH0KCiAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgdmFyIG1zZyA9IHsKICAgIGVuY19wcmVfbWFzdGVyX3NlY3JldDogcmVhZFZlY3RvcihiLCAyKS5nZXRCeXRlcygpCiAgfTsKCiAgLy8gZG8gcnNhIGRlY3J5cHRpb24KICB2YXIgcHJpdmF0ZUtleSA9IG51bGw7CiAgaWYoYy5nZXRQcml2YXRlS2V5KSB7CiAgICB0cnkgewogICAgICBwcml2YXRlS2V5ID0gYy5nZXRQcml2YXRlS2V5KGMsIGMuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZSk7CiAgICAgIHByaXZhdGVLZXkgPSBmb3JnZS5wa2kucHJpdmF0ZUtleUZyb21QZW0ocHJpdmF0ZUtleSk7CiAgICB9IGNhdGNoKGV4KSB7CiAgICAgIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZ2V0IHByaXZhdGUga2V5LicsCiAgICAgICAgY2F1c2U6IGV4LAogICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICB9CgogIGlmKHByaXZhdGVLZXkgPT09IG51bGwpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ05vIHByaXZhdGUga2V5IHNldC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5pbnRlcm5hbF9lcnJvcgogICAgICB9CiAgICB9KTsKICB9CgogIHRyeSB7CiAgICAvLyBkZWNyeXB0IDQ4LWJ5dGUgcHJlLW1hc3RlciBzZWNyZXQKICAgIHZhciBzcCA9IGMuc2Vzc2lvbi5zcDsKICAgIHNwLnByZV9tYXN0ZXJfc2VjcmV0ID0gcHJpdmF0ZUtleS5kZWNyeXB0KG1zZy5lbmNfcHJlX21hc3Rlcl9zZWNyZXQpOwoKICAgIC8vIGVuc3VyZSBjbGllbnQgaGVsbG8gdmVyc2lvbiBtYXRjaGVzIGZpcnN0IDIgYnl0ZXMKICAgIHZhciB2ZXJzaW9uID0gYy5zZXNzaW9uLmNsaWVudEhlbGxvVmVyc2lvbjsKICAgIGlmKHZlcnNpb24ubWFqb3IgIT09IHNwLnByZV9tYXN0ZXJfc2VjcmV0LmNoYXJDb2RlQXQoMCkgfHwKICAgICAgdmVyc2lvbi5taW5vciAhPT0gc3AucHJlX21hc3Rlcl9zZWNyZXQuY2hhckNvZGVBdCgxKSkgewogICAgICAvLyBlcnJvciwgZG8gbm90IHNlbmQgYWxlcnQgKHNlZSBCTEVJIGF0dGFjayBiZWxvdykKICAgICAgdGhyb3cgbmV3IEVycm9yKCdUTFMgdmVyc2lvbiByb2xsYmFjayBhdHRhY2sgZGV0ZWN0ZWQuJyk7CiAgICB9CiAgfSBjYXRjaChleCkgewogICAgLyogTm90ZTogRGFuaWVsIEJsZWljaGVuYmFjaGVyIFtCTEVJXSBjYW4gYmUgdXNlZCB0byBhdHRhY2sgYQogICAgICBUTFMgc2VydmVyIHdoaWNoIGlzIHVzaW5nIFBLQ1MjMSBlbmNvZGVkIFJTQSwgc28gaW5zdGVhZCBvZgogICAgICBmYWlsaW5nIGhlcmUsIHdlIGdlbmVyYXRlIDQ4IHJhbmRvbSBieXRlcyBhbmQgdXNlIHRoYXQgYXMKICAgICAgdGhlIHByZS1tYXN0ZXIgc2VjcmV0LiAqLwogICAgc3AucHJlX21hc3Rlcl9zZWNyZXQgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMoNDgpOwogIH0KCiAgLy8gZXhwZWN0IGEgQ2VydGlmaWNhdGVWZXJpZnkgbWVzc2FnZSBpZiBhIENlcnRpZmljYXRlIHdhcyByZWNlaXZlZCB0aGF0CiAgLy8gZG9lcyBub3QgaGF2ZSBmaXhlZCBEaWZmaWUtSGVsbG1hbiBwYXJhbXMsIG90aGVyd2lzZSBleHBlY3QKICAvLyBDaGFuZ2VDaXBoZXJTcGVjCiAgYy5leHBlY3QgPSBDQ0M7CiAgaWYoYy5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlICE9PSBudWxsKSB7CiAgICAvLyBvbmx5IFJTQSBzdXBwb3J0LCBzbyBleHBlY3QgQ2VydGlmaWNhdGVWZXJpZnkKICAgIC8vIFRPRE86IHN1cHBvcnQgRGlmZmllLUhlbGxtYW4KICAgIGMuZXhwZWN0ID0gQ0NWOwogIH0KCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIENlcnRpZmljYXRlUmVxdWVzdCByZWNvcmQuCiAqCiAqIFdoZW4gdGhpcyBtZXNzYWdlIHdpbGwgYmUgc2VudDoKICogICBBIG5vbi1hbm9ueW1vdXMgc2VydmVyIGNhbiBvcHRpb25hbGx5IHJlcXVlc3QgYSBjZXJ0aWZpY2F0ZSBmcm9tIHRoZQogKiAgIGNsaWVudCwgaWYgYXBwcm9wcmlhdGUgZm9yIHRoZSBzZWxlY3RlZCBjaXBoZXIgc3VpdGUuIFRoaXMgbWVzc2FnZSwgaWYKICogICBzZW50LCB3aWxsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgU2VydmVyIEtleSBFeGNoYW5nZSBtZXNzYWdlIChpZiBpdCBpcwogKiAgIHNlbnQ7IG90aGVyd2lzZSwgdGhlIFNlcnZlciBDZXJ0aWZpY2F0ZSBtZXNzYWdlKS4KICoKICogZW51bSB7CiAqICAgcnNhX3NpZ24oMSksIGRzc19zaWduKDIpLCByc2FfZml4ZWRfZGgoMyksIGRzc19maXhlZF9kaCg0KSwKICogICByc2FfZXBoZW1lcmFsX2RoX1JFU0VSVkVEKDUpLCBkc3NfZXBoZW1lcmFsX2RoX1JFU0VSVkVEKDYpLAogKiAgIGZvcnRlenphX2Rtc19SRVNFUlZFRCgyMCksICgyNTUpCiAqIH0gQ2xpZW50Q2VydGlmaWNhdGVUeXBlOwogKgogKiBvcGFxdWUgRGlzdGluZ3Vpc2hlZE5hbWU8MS4uMl4xNi0xPjsKICoKICogc3RydWN0IHsKICogICBDbGllbnRDZXJ0aWZpY2F0ZVR5cGUgY2VydGlmaWNhdGVfdHlwZXM8MS4uMl44LTE+OwogKiAgIFNpZ25hdHVyZUFuZEhhc2hBbGdvcml0aG0gc3VwcG9ydGVkX3NpZ25hdHVyZV9hbGdvcml0aG1zPDJeMTYtMT47CiAqICAgRGlzdGluZ3Vpc2hlZE5hbWUgY2VydGlmaWNhdGVfYXV0aG9yaXRpZXM8MC4uMl4xNi0xPjsKICogfSBDZXJ0aWZpY2F0ZVJlcXVlc3Q7CiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UuCiAqLwp0bHMuaGFuZGxlQ2VydGlmaWNhdGVSZXF1ZXN0ID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICAvLyBtaW5pbXVtIG9mIDMgYnl0ZXMgaW4gbWVzc2FnZQogIGlmKGxlbmd0aCA8IDMpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2VydGlmaWNhdGVSZXF1ZXN0LiBNZXNzYWdlIHRvbyBzaG9ydC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcgogICAgICB9CiAgICB9KTsKICB9CgogIC8vIFRPRE86IFRMUyAxLjIrIGhhcyBkaWZmZXJlbnQgZm9ybWF0IGluY2x1ZGluZwogIC8vIFNpZ25hdHVyZUFuZEhhc2hBbGdvcml0aG0gYWZ0ZXIgY2VydCB0eXBlcwogIHZhciBiID0gcmVjb3JkLmZyYWdtZW50OwogIHZhciBtc2cgPSB7CiAgICBjZXJ0aWZpY2F0ZV90eXBlczogcmVhZFZlY3RvcihiLCAxKSwKICAgIGNlcnRpZmljYXRlX2F1dGhvcml0aWVzOiByZWFkVmVjdG9yKGIsIDIpCiAgfTsKCiAgLy8gc2F2ZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IGluIHNlc3Npb24KICBjLnNlc3Npb24uY2VydGlmaWNhdGVSZXF1ZXN0ID0gbXNnOwoKICAvLyBleHBlY3QgYSBTZXJ2ZXJIZWxsb0RvbmUgbWVzc2FnZSBuZXh0CiAgYy5leHBlY3QgPSBTSEQ7CgogIC8vIGNvbnRpbnVlCiAgYy5wcm9jZXNzKCk7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYSBzZXJ2ZXIgcmVjZWl2ZXMgYSBDZXJ0aWZpY2F0ZVZlcmlmeSByZWNvcmQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UuCiAqLwp0bHMuaGFuZGxlQ2VydGlmaWNhdGVWZXJpZnkgPSBmdW5jdGlvbihjLCByZWNvcmQsIGxlbmd0aCkgewogIGlmKGxlbmd0aCA8IDIpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2VydGlmaWNhdGVWZXJpZnkuIE1lc3NhZ2UgdG9vIHNob3J0LicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gcmV3aW5kIHRvIGdldCBmdWxsIGJ5dGVzIGZvciBtZXNzYWdlIHNvIGl0IGNhbiBiZSBtYW51YWxseQogIC8vIGRpZ2VzdGVkIGJlbG93IChzcGVjaWFsIGNhc2UgZm9yIENlcnRpZmljYXRlVmVyaWZ5IG1lc3NhZ2VzIGJlY2F1c2UKICAvLyB0aGV5IG11c3QgYmUgZGlnZXN0ZWQgKmFmdGVyKiBoYW5kbGluZyBhcyBvcHBvc2VkIHRvIGFsbCBvdGhlcnMpCiAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgYi5yZWFkIC09IDQ7CiAgdmFyIG1zZ0J5dGVzID0gYi5ieXRlcygpOwogIGIucmVhZCArPSA0OwoKICB2YXIgbXNnID0gewogICAgc2lnbmF0dXJlOiByZWFkVmVjdG9yKGIsIDIpLmdldEJ5dGVzKCkKICB9OwoKICAvLyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgRFNBCgogIC8vIGdlbmVyYXRlIGRhdGEgdG8gdmVyaWZ5CiAgdmFyIHZlcmlmeSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdmVyaWZ5LnB1dEJ1ZmZlcihjLnNlc3Npb24ubWQ1LmRpZ2VzdCgpKTsKICB2ZXJpZnkucHV0QnVmZmVyKGMuc2Vzc2lvbi5zaGExLmRpZ2VzdCgpKTsKICB2ZXJpZnkgPSB2ZXJpZnkuZ2V0Qnl0ZXMoKTsKCiAgdHJ5IHsKICAgIHZhciBjZXJ0ID0gYy5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlOwogICAgLypiID0gZm9yZ2UucGtpLnJzYS5kZWNyeXB0KAogICAgICBtc2cuc2lnbmF0dXJlLCBjZXJ0LnB1YmxpY0tleSwgdHJ1ZSwgdmVyaWZ5Lmxlbmd0aCk7CiAgICBpZihiICE9PSB2ZXJpZnkpIHsqLwogICAgaWYoIWNlcnQucHVibGljS2V5LnZlcmlmeSh2ZXJpZnksIG1zZy5zaWduYXR1cmUsICdOT05FJykpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdDZXJ0aWZpY2F0ZVZlcmlmeSBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2guJyk7CiAgICB9CgogICAgLy8gZGlnZXN0IG1lc3NhZ2Ugbm93IHRoYXQgaXQgaGFzIGJlZW4gaGFuZGxlZAogICAgYy5zZXNzaW9uLm1kNS51cGRhdGUobXNnQnl0ZXMpOwogICAgYy5zZXNzaW9uLnNoYTEudXBkYXRlKG1zZ0J5dGVzKTsKICB9IGNhdGNoKGV4KSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdCYWQgc2lnbmF0dXJlIGluIENlcnRpZmljYXRlVmVyaWZ5LicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmhhbmRzaGFrZV9mYWlsdXJlCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gZXhwZWN0IENoYW5nZUNpcGhlclNwZWMKICBjLmV4cGVjdCA9IENDQzsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIFNlcnZlckhlbGxvRG9uZSByZWNvcmQuCiAqCiAqIFdoZW4gdGhpcyBtZXNzYWdlIHdpbGwgYmUgc2VudDoKICogICBUaGUgc2VydmVyIGhlbGxvIGRvbmUgbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gaW5kaWNhdGUgdGhlIGVuZAogKiAgIG9mIHRoZSBzZXJ2ZXIgaGVsbG8gYW5kIGFzc29jaWF0ZWQgbWVzc2FnZXMuIEFmdGVyIHNlbmRpbmcgdGhpcyBtZXNzYWdlCiAqICAgdGhlIHNlcnZlciB3aWxsIHdhaXQgZm9yIGEgY2xpZW50IHJlc3BvbnNlLgogKgogKiBNZWFuaW5nIG9mIHRoaXMgbWVzc2FnZToKICogICBUaGlzIG1lc3NhZ2UgbWVhbnMgdGhhdCB0aGUgc2VydmVyIGlzIGRvbmUgc2VuZGluZyBtZXNzYWdlcyB0byBzdXBwb3J0CiAqICAgdGhlIGtleSBleGNoYW5nZSwgYW5kIHRoZSBjbGllbnQgY2FuIHByb2NlZWQgd2l0aCBpdHMgcGhhc2Ugb2YgdGhlIGtleQogKiAgIGV4Y2hhbmdlLgogKgogKiAgIFVwb24gcmVjZWlwdCBvZiB0aGUgc2VydmVyIGhlbGxvIGRvbmUgbWVzc2FnZSB0aGUgY2xpZW50IHNob3VsZCB2ZXJpZnkKICogICB0aGF0IHRoZSBzZXJ2ZXIgcHJvdmlkZWQgYSB2YWxpZCBjZXJ0aWZpY2F0ZSBpZiByZXF1aXJlZCBhbmQgY2hlY2sgdGhhdAogKiAgIHRoZSBzZXJ2ZXIgaGVsbG8gcGFyYW1ldGVycyBhcmUgYWNjZXB0YWJsZS4KICoKICogc3RydWN0IHt9IFNlcnZlckhlbGxvRG9uZTsKICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVTZXJ2ZXJIZWxsb0RvbmUgPSBmdW5jdGlvbihjLCByZWNvcmQsIGxlbmd0aCkgewogIC8vIGxlbiBtdXN0IGJlIDAgYnl0ZXMKICBpZihsZW5ndGggPiAwKSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIFNlcnZlckhlbGxvRG9uZSBtZXNzYWdlLiBJbnZhbGlkIGxlbmd0aC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5yZWNvcmRfb3ZlcmZsb3cKICAgICAgfQogICAgfSk7CiAgfQoKICBpZihjLnNlcnZlckNlcnRpZmljYXRlID09PSBudWxsKSB7CiAgICAvLyBubyBzZXJ2ZXIgY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkCiAgICB2YXIgZXJyb3IgPSB7CiAgICAgIG1lc3NhZ2U6ICdObyBzZXJ2ZXIgY2VydGlmaWNhdGUgcHJvdmlkZWQuIE5vdCBlbm91Z2ggc2VjdXJpdHkuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uaW5zdWZmaWNpZW50X3NlY3VyaXR5CiAgICAgIH0KICAgIH07CgogICAgLy8gY2FsbCBhcHBsaWNhdGlvbiBjYWxsYmFjawogICAgdmFyIGRlcHRoID0gMDsKICAgIHZhciByZXQgPSBjLnZlcmlmeShjLCBlcnJvci5hbGVydC5kZXNjcmlwdGlvbiwgZGVwdGgsIFtdKTsKICAgIGlmKHJldCAhPT0gdHJ1ZSkgewogICAgICAvLyBjaGVjayBmb3IgY3VzdG9tIGFsZXJ0IGluZm8KICAgICAgaWYocmV0IHx8IHJldCA9PT0gMCkgewogICAgICAgIC8vIHNldCBjdXN0b20gbWVzc2FnZSBhbmQgYWxlcnQgZGVzY3JpcHRpb24KICAgICAgICBpZih0eXBlb2YgcmV0ID09PSAnb2JqZWN0JyAmJiAhZm9yZ2UudXRpbC5pc0FycmF5KHJldCkpIHsKICAgICAgICAgIGlmKHJldC5tZXNzYWdlKSB7CiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSByZXQubWVzc2FnZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmKHJldC5hbGVydCkgewogICAgICAgICAgICBlcnJvci5hbGVydC5kZXNjcmlwdGlvbiA9IHJldC5hbGVydDsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYodHlwZW9mIHJldCA9PT0gJ251bWJlcicpIHsKICAgICAgICAgIC8vIHNldCBjdXN0b20gYWxlcnQgZGVzY3JpcHRpb24KICAgICAgICAgIGVycm9yLmFsZXJ0LmRlc2NyaXB0aW9uID0gcmV0OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gc2VuZCBlcnJvcgogICAgICByZXR1cm4gYy5lcnJvcihjLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBjcmVhdGUgY2xpZW50IGNlcnRpZmljYXRlIG1lc3NhZ2UgaWYgcmVxdWVzdGVkCiAgaWYoYy5zZXNzaW9uLmNlcnRpZmljYXRlUmVxdWVzdCAhPT0gbnVsbCkgewogICAgcmVjb3JkID0gdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5oYW5kc2hha2UsCiAgICAgIGRhdGE6IHRscy5jcmVhdGVDZXJ0aWZpY2F0ZShjKQogICAgfSk7CiAgICB0bHMucXVldWUoYywgcmVjb3JkKTsKICB9CgogIC8vIGNyZWF0ZSBjbGllbnQga2V5IGV4Y2hhbmdlIG1lc3NhZ2UKICByZWNvcmQgPSB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgIGRhdGE6IHRscy5jcmVhdGVDbGllbnRLZXlFeGNoYW5nZShjKQogIH0pOwogIHRscy5xdWV1ZShjLCByZWNvcmQpOwoKICAvLyBleHBlY3Qgbm8gbWVzc2FnZXMgdW50aWwgdGhlIGZvbGxvd2luZyBjYWxsYmFjayBoYXMgYmVlbiBjYWxsZWQKICBjLmV4cGVjdCA9IFNFUjsKCiAgLy8gY3JlYXRlIGNhbGxiYWNrIHRvIGhhbmRsZSBjbGllbnQgc2lnbmF0dXJlIChmb3IgY2xpZW50LWNlcnRzKQogIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKGMsIHNpZ25hdHVyZSkgewogICAgaWYoYy5zZXNzaW9uLmNlcnRpZmljYXRlUmVxdWVzdCAhPT0gbnVsbCAmJgogICAgICBjLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUgIT09IG51bGwpIHsKICAgICAgLy8gY3JlYXRlIGNlcnRpZmljYXRlIHZlcmlmeSBtZXNzYWdlCiAgICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgICAgIGRhdGE6IHRscy5jcmVhdGVDZXJ0aWZpY2F0ZVZlcmlmeShjLCBzaWduYXR1cmUpCiAgICAgIH0pKTsKICAgIH0KCiAgICAvLyBjcmVhdGUgY2hhbmdlIGNpcGhlciBzcGVjIG1lc3NhZ2UKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYywKICAgICAgZGF0YTogdGxzLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMoKQogICAgfSkpOwoKICAgIC8vIGNyZWF0ZSBwZW5kaW5nIHN0YXRlCiAgICBjLnN0YXRlLnBlbmRpbmcgPSB0bHMuY3JlYXRlQ29ubmVjdGlvblN0YXRlKGMpOwoKICAgIC8vIGNoYW5nZSBjdXJyZW50IHdyaXRlIHN0YXRlIHRvIHBlbmRpbmcgd3JpdGUgc3RhdGUKICAgIGMuc3RhdGUuY3VycmVudC53cml0ZSA9IGMuc3RhdGUucGVuZGluZy53cml0ZTsKCiAgICAvLyBjcmVhdGUgZmluaXNoZWQgbWVzc2FnZQogICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgICBkYXRhOiB0bHMuY3JlYXRlRmluaXNoZWQoYykKICAgIH0pKTsKCiAgICAvLyBleHBlY3QgYSBzZXJ2ZXIgQ2hhbmdlQ2lwaGVyU3BlYyBtZXNzYWdlIG5leHQKICAgIGMuZXhwZWN0ID0gU0NDOwoKICAgIC8vIHNlbmQgcmVjb3JkcwogICAgdGxzLmZsdXNoKGMpOwoKICAgIC8vIGNvbnRpbnVlCiAgICBjLnByb2Nlc3MoKTsKICB9OwoKICAvLyBpZiB0aGVyZSBpcyBubyBjZXJ0aWZpY2F0ZSByZXF1ZXN0IG9yIG5vIGNsaWVudCBjZXJ0aWZpY2F0ZSwgZG8KICAvLyBjYWxsYmFjayBpbW1lZGlhdGVseQogIGlmKGMuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3QgPT09IG51bGwgfHwKICAgIGMuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZSA9PT0gbnVsbCkgewogICAgcmV0dXJuIGNhbGxiYWNrKGMsIG51bGwpOwogIH0KCiAgLy8gb3RoZXJ3aXNlIGdldCB0aGUgY2xpZW50IHNpZ25hdHVyZQogIHRscy5nZXRDbGllbnRTaWduYXR1cmUoYywgY2FsbGJhY2spOwp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgQ2hhbmdlQ2lwaGVyU3BlYyByZWNvcmQgaXMgcmVjZWl2ZWQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqLwp0bHMuaGFuZGxlQ2hhbmdlQ2lwaGVyU3BlYyA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIGlmKHJlY29yZC5mcmFnbWVudC5nZXRCeXRlKCkgIT09IDB4MDEpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2hhbmdlQ2lwaGVyU3BlYyBtZXNzYWdlIHJlY2VpdmVkLicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gY3JlYXRlIHBlbmRpbmcgc3RhdGUgaWY6CiAgLy8gMS4gUmVzdW1pbmcgc2Vzc2lvbiBpbiBjbGllbnQgbW9kZSBPUgogIC8vIDIuIE5PVCByZXN1bWluZyBzZXNzaW9uIGluIHNlcnZlciBtb2RlCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICBpZigoYy5zZXNzaW9uLnJlc3VtaW5nICYmIGNsaWVudCkgfHwgKCFjLnNlc3Npb24ucmVzdW1pbmcgJiYgIWNsaWVudCkpIHsKICAgIGMuc3RhdGUucGVuZGluZyA9IHRscy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoYyk7CiAgfQoKICAvLyBjaGFuZ2UgY3VycmVudCByZWFkIHN0YXRlIHRvIHBlbmRpbmcgcmVhZCBzdGF0ZQogIGMuc3RhdGUuY3VycmVudC5yZWFkID0gYy5zdGF0ZS5wZW5kaW5nLnJlYWQ7CgogIC8vIGNsZWFyIHBlbmRpbmcgc3RhdGUgaWY6CiAgLy8gMS4gTk9UIHJlc3VtaW5nIHNlc3Npb24gaW4gY2xpZW50IG1vZGUgT1IKICAvLyAyLiByZXN1bWluZyBhIHNlc3Npb24gaW4gc2VydmVyIG1vZGUKICBpZigoIWMuc2Vzc2lvbi5yZXN1bWluZyAmJiBjbGllbnQpIHx8IChjLnNlc3Npb24ucmVzdW1pbmcgJiYgIWNsaWVudCkpIHsKICAgIGMuc3RhdGUucGVuZGluZyA9IG51bGw7CiAgfQoKICAvLyBleHBlY3QgYSBGaW5pc2hlZCByZWNvcmQgbmV4dAogIGMuZXhwZWN0ID0gY2xpZW50ID8gU0ZJIDogQ0ZJOwoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgRmluaXNoZWQgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBXaGVuIHRoaXMgbWVzc2FnZSB3aWxsIGJlIHNlbnQ6CiAqICAgQSBmaW5pc2hlZCBtZXNzYWdlIGlzIGFsd2F5cyBzZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgY2hhbmdlCiAqICAgY2lwaGVyIHNwZWMgbWVzc2FnZSB0byB2ZXJpZnkgdGhhdCB0aGUga2V5IGV4Y2hhbmdlIGFuZAogKiAgIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3NlcyB3ZXJlIHN1Y2Nlc3NmdWwuIEl0IGlzIGVzc2VudGlhbCB0aGF0IGEKICogICBjaGFuZ2UgY2lwaGVyIHNwZWMgbWVzc2FnZSBiZSByZWNlaXZlZCBiZXR3ZWVuIHRoZSBvdGhlcgogKiAgIGhhbmRzaGFrZSBtZXNzYWdlcyBhbmQgdGhlIEZpbmlzaGVkIG1lc3NhZ2UuCiAqCiAqIE1lYW5pbmcgb2YgdGhpcyBtZXNzYWdlOgogKiAgIFRoZSBmaW5pc2hlZCBtZXNzYWdlIGlzIHRoZSBmaXJzdCBwcm90ZWN0ZWQgd2l0aCB0aGUganVzdC0KICogICBuZWdvdGlhdGVkIGFsZ29yaXRobXMsIGtleXMsIGFuZCBzZWNyZXRzLiBSZWNpcGllbnRzIG9mIGZpbmlzaGVkCiAqICAgbWVzc2FnZXMgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgY29udGVudHMgYXJlIGNvcnJlY3QuICBPbmNlIGEgc2lkZQogKiAgIGhhcyBzZW50IGl0cyBGaW5pc2hlZCBtZXNzYWdlIGFuZCByZWNlaXZlZCBhbmQgdmFsaWRhdGVkIHRoZQogKiAgIEZpbmlzaGVkIG1lc3NhZ2UgZnJvbSBpdHMgcGVlciwgaXQgbWF5IGJlZ2luIHRvIHNlbmQgYW5kIHJlY2VpdmUKICogICBhcHBsaWNhdGlvbiBkYXRhIG92ZXIgdGhlIGNvbm5lY3Rpb24uCiAqCiAqIHN0cnVjdCB7CiAqICAgb3BhcXVlIHZlcmlmeV9kYXRhW3ZlcmlmeV9kYXRhX2xlbmd0aF07CiAqIH0gRmluaXNoZWQ7CiAqCiAqIHZlcmlmeV9kYXRhCiAqICAgUFJGKG1hc3Rlcl9zZWNyZXQsIGZpbmlzaGVkX2xhYmVsLCBIYXNoKGhhbmRzaGFrZV9tZXNzYWdlcykpCiAqICAgICBbMC4udmVyaWZ5X2RhdGFfbGVuZ3RoLTFdOwogKgogKiBmaW5pc2hlZF9sYWJlbAogKiAgIEZvciBGaW5pc2hlZCBtZXNzYWdlcyBzZW50IGJ5IHRoZSBjbGllbnQsIHRoZSBzdHJpbmcKICogICAiY2xpZW50IGZpbmlzaGVkIi4gRm9yIEZpbmlzaGVkIG1lc3NhZ2VzIHNlbnQgYnkgdGhlIHNlcnZlciwgdGhlCiAqICAgc3RyaW5nICJzZXJ2ZXIgZmluaXNoZWQiLgogKgogKiB2ZXJpZnlfZGF0YV9sZW5ndGggZGVwZW5kcyBvbiB0aGUgY2lwaGVyIHN1aXRlLiBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkCiAqIGJ5IHRoZSBjaXBoZXIgc3VpdGUsIHRoZW4gaXQgaXMgMTIuIFZlcnNpb25zIG9mIFRMUyA8IDEuMiBhbHdheXMgdXNlZAogKiAxMiBieXRlcy4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVGaW5pc2hlZCA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgLy8gcmV3aW5kIHRvIGdldCBmdWxsIGJ5dGVzIGZvciBtZXNzYWdlIHNvIGl0IGNhbiBiZSBtYW51YWxseQogIC8vIGRpZ2VzdGVkIGJlbG93IChzcGVjaWFsIGNhc2UgZm9yIEZpbmlzaGVkIG1lc3NhZ2VzIGJlY2F1c2UgdGhleQogIC8vIG11c3QgYmUgZGlnZXN0ZWQgKmFmdGVyKiBoYW5kbGluZyBhcyBvcHBvc2VkIHRvIGFsbCBvdGhlcnMpCiAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgYi5yZWFkIC09IDQ7CiAgdmFyIG1zZ0J5dGVzID0gYi5ieXRlcygpOwogIGIucmVhZCArPSA0OwoKICAvLyBtZXNzYWdlIGNvbnRhaW5zIG9ubHkgdmVyaWZ5X2RhdGEKICB2YXIgdmQgPSByZWNvcmQuZnJhZ21lbnQuZ2V0Qnl0ZXMoKTsKCiAgLy8gZW5zdXJlIHZlcmlmeSBkYXRhIGlzIGNvcnJlY3QKICBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBiLnB1dEJ1ZmZlcihjLnNlc3Npb24ubWQ1LmRpZ2VzdCgpKTsKICBiLnB1dEJ1ZmZlcihjLnNlc3Npb24uc2hhMS5kaWdlc3QoKSk7CgogIC8vIHNldCBsYWJlbCBiYXNlZCBvbiBlbnRpdHkgdHlwZQogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CiAgdmFyIGxhYmVsID0gY2xpZW50ID8gJ3NlcnZlciBmaW5pc2hlZCcgOiAnY2xpZW50IGZpbmlzaGVkJzsKCiAgLy8gVE9ETzogZGV0ZXJtaW5lIHByZiBmdW5jdGlvbiBhbmQgdmVyaWZ5IGxlbmd0aCBmb3IgVExTIDEuMgogIHZhciBzcCA9IGMuc2Vzc2lvbi5zcDsKICB2YXIgdmRsID0gMTI7CiAgdmFyIHByZiA9IHByZl9UTFMxOwogIGIgPSBwcmYoc3AubWFzdGVyX3NlY3JldCwgbGFiZWwsIGIuZ2V0Qnl0ZXMoKSwgdmRsKTsKICBpZihiLmdldEJ5dGVzKCkgIT09IHZkKSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIHZlcmlmeV9kYXRhIGluIEZpbmlzaGVkIG1lc3NhZ2UuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uZGVjcnlwdF9lcnJvcgogICAgICB9CiAgICB9KTsKICB9CgogIC8vIGRpZ2VzdCBmaW5pc2hlZCBtZXNzYWdlIG5vdyB0aGF0IGl0IGhhcyBiZWVuIGhhbmRsZWQKICBjLnNlc3Npb24ubWQ1LnVwZGF0ZShtc2dCeXRlcyk7CiAgYy5zZXNzaW9uLnNoYTEudXBkYXRlKG1zZ0J5dGVzKTsKCiAgLy8gcmVzdW1pbmcgc2Vzc2lvbiBhcyBjbGllbnQgb3IgTk9UIHJlc3VtaW5nIHNlc3Npb24gYXMgc2VydmVyCiAgaWYoKGMuc2Vzc2lvbi5yZXN1bWluZyAmJiBjbGllbnQpIHx8ICghYy5zZXNzaW9uLnJlc3VtaW5nICYmICFjbGllbnQpKSB7CiAgICAvLyBjcmVhdGUgY2hhbmdlIGNpcGhlciBzcGVjIG1lc3NhZ2UKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYywKICAgICAgZGF0YTogdGxzLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMoKQogICAgfSkpOwoKICAgIC8vIGNoYW5nZSBjdXJyZW50IHdyaXRlIHN0YXRlIHRvIHBlbmRpbmcgd3JpdGUgc3RhdGUsIGNsZWFyIHBlbmRpbmcKICAgIGMuc3RhdGUuY3VycmVudC53cml0ZSA9IGMuc3RhdGUucGVuZGluZy53cml0ZTsKICAgIGMuc3RhdGUucGVuZGluZyA9IG51bGw7CgogICAgLy8gY3JlYXRlIGZpbmlzaGVkIG1lc3NhZ2UKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgZGF0YTogdGxzLmNyZWF0ZUZpbmlzaGVkKGMpCiAgICB9KSk7CiAgfQoKICAvLyBleHBlY3QgYXBwbGljYXRpb24gZGF0YSBuZXh0CiAgYy5leHBlY3QgPSBjbGllbnQgPyBTQUQgOiBDQUQ7CgogIC8vIGhhbmRzaGFrZSBjb21wbGV0ZQogIGMuaGFuZHNoYWtpbmcgPSBmYWxzZTsKICArK2MuaGFuZHNoYWtlczsKCiAgLy8gc2F2ZSBhY2Nlc3MgdG8gcGVlciBjZXJ0aWZpY2F0ZQogIGMucGVlckNlcnRpZmljYXRlID0gY2xpZW50ID8KICAgIGMuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZSA6IGMuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZTsKCiAgLy8gc2VuZCByZWNvcmRzCiAgdGxzLmZsdXNoKGMpOwoKICAvLyBub3cgY29ubmVjdGVkCiAgYy5pc0Nvbm5lY3RlZCA9IHRydWU7CiAgYy5jb25uZWN0ZWQoYyk7CgogIC8vIGNvbnRpbnVlCiAgYy5wcm9jZXNzKCk7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYW4gQWxlcnQgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKi8KdGxzLmhhbmRsZUFsZXJ0ID0gZnVuY3Rpb24oYywgcmVjb3JkKSB7CiAgLy8gcmVhZCBhbGVydAogIHZhciBiID0gcmVjb3JkLmZyYWdtZW50OwogIHZhciBhbGVydCA9IHsKICAgIGxldmVsOiBiLmdldEJ5dGUoKSwKICAgIGRlc2NyaXB0aW9uOiBiLmdldEJ5dGUoKQogIH07CgogIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIGEgdGFibGU/CiAgLy8gZ2V0IGFwcHJvcHJpYXRlIG1lc3NhZ2UKICB2YXIgbXNnOwogIHN3aXRjaChhbGVydC5kZXNjcmlwdGlvbikgewogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeToKICAgIG1zZyA9ICdDb25uZWN0aW9uIGNsb3NlZC4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlOgogICAgbXNnID0gJ1VuZXhwZWN0ZWQgbWVzc2FnZS4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX3JlY29yZF9tYWM6CiAgICBtc2cgPSAnQmFkIHJlY29yZCBNQUMuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmRlY3J5cHRpb25fZmFpbGVkOgogICAgbXNnID0gJ0RlY3J5cHRpb24gZmFpbGVkLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5yZWNvcmRfb3ZlcmZsb3c6CiAgICBtc2cgPSAnUmVjb3JkIG92ZXJmbG93Lic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvbXByZXNzaW9uX2ZhaWx1cmU6CiAgICBtc2cgPSAnRGVjb21wcmVzc2lvbiBmYWlsZWQuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmhhbmRzaGFrZV9mYWlsdXJlOgogICAgbXNnID0gJ0hhbmRzaGFrZSBmYWlsdXJlLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGU6CiAgICBtc2cgPSAnQmFkIGNlcnRpZmljYXRlLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZToKICAgIG1zZyA9ICdVbnN1cHBvcnRlZCBjZXJ0aWZpY2F0ZS4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfcmV2b2tlZDoKICAgIG1zZyA9ICdDZXJ0aWZpY2F0ZSByZXZva2VkLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkOgogICAgbXNnID0gJ0NlcnRpZmljYXRlIGV4cGlyZWQuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246CiAgICBtc2cgPSAnQ2VydGlmaWNhdGUgdW5rbm93bi4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXI6CiAgICBtc2cgPSAnSWxsZWdhbCBwYXJhbWV0ZXIuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVua25vd25fY2E6CiAgICBtc2cgPSAnVW5rbm93biBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmFjY2Vzc19kZW5pZWQ6CiAgICBtc2cgPSAnQWNjZXNzIGRlbmllZC4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uZGVjb2RlX2Vycm9yOgogICAgbXNnID0gJ0RlY29kZSBlcnJvci4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uZGVjcnlwdF9lcnJvcjoKICAgIG1zZyA9ICdEZWNyeXB0IGVycm9yLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5leHBvcnRfcmVzdHJpY3Rpb246CiAgICBtc2cgPSAnRXhwb3J0IHJlc3RyaWN0aW9uLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9uOgogICAgbXNnID0gJ1Vuc3VwcG9ydGVkIHByb3RvY29sIHZlcnNpb24uJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmluc3VmZmljaWVudF9zZWN1cml0eToKICAgIG1zZyA9ICdJbnN1ZmZpY2llbnQgc2VjdXJpdHkuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yOgogICAgbXNnID0gJ0ludGVybmFsIGVycm9yLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51c2VyX2NhbmNlbGVkOgogICAgbXNnID0gJ1VzZXIgY2FuY2VsZWQuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLm5vX3JlbmVnb3RpYXRpb246CiAgICBtc2cgPSAnUmVuZWdvdGlhdGlvbiBub3Qgc3VwcG9ydGVkLic7CiAgICBicmVhazsKICBkZWZhdWx0OgogICAgbXNnID0gJ1Vua25vd24gZXJyb3IuJzsKICAgIGJyZWFrOwogIH0KCiAgLy8gY2xvc2UgY29ubmVjdGlvbiBvbiBjbG9zZV9ub3RpZnksIG5vdCBhbiBlcnJvcgogIGlmKGFsZXJ0LmRlc2NyaXB0aW9uID09PSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2xvc2Vfbm90aWZ5KSB7CiAgICByZXR1cm4gYy5jbG9zZSgpOwogIH0KCiAgLy8gY2FsbCBlcnJvciBoYW5kbGVyCiAgYy5lcnJvcihjLCB7CiAgICBtZXNzYWdlOiBtc2csCiAgICBzZW5kOiBmYWxzZSwKICAgIC8vIG9yaWdpbiBpcyB0aGUgb3Bwb3NpdGUgZW5kCiAgICBvcmlnaW46IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KSA/ICdzZXJ2ZXInIDogJ2NsaWVudCcsCiAgICBhbGVydDogYWxlcnQKICB9KTsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIEhhbmRzaGFrZSByZWNvcmQgaXMgcmVjZWl2ZWQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqLwp0bHMuaGFuZGxlSGFuZHNoYWtlID0gZnVuY3Rpb24oYywgcmVjb3JkKSB7CiAgLy8gZ2V0IHRoZSBoYW5kc2hha2UgdHlwZSBhbmQgbWVzc2FnZSBsZW5ndGgKICB2YXIgYiA9IHJlY29yZC5mcmFnbWVudDsKICB2YXIgdHlwZSA9IGIuZ2V0Qnl0ZSgpOwogIHZhciBsZW5ndGggPSBiLmdldEludDI0KCk7CgogIC8vIHNlZSBpZiB0aGUgcmVjb3JkIGZyYWdtZW50IGRvZXNuJ3QgeWV0IGNvbnRhaW4gdGhlIGZ1bGwgbWVzc2FnZQogIGlmKGxlbmd0aCA+IGIubGVuZ3RoKCkpIHsKICAgIC8vIGNhY2hlIHRoZSByZWNvcmQsIGNsZWFyIGl0cyBmcmFnbWVudCwgYW5kIHJlc2V0IHRoZSBidWZmZXIgcmVhZAogICAgLy8gcG9pbnRlciBiZWZvcmUgdGhlIHR5cGUgYW5kIGxlbmd0aCB3ZXJlIHJlYWQKICAgIGMuZnJhZ21lbnRlZCA9IHJlY29yZDsKICAgIHJlY29yZC5mcmFnbWVudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBiLnJlYWQgLT0gNDsKCiAgICAvLyBjb250aW51ZQogICAgcmV0dXJuIGMucHJvY2VzcygpOwogIH0KCiAgLy8gZnVsbCBtZXNzYWdlIG5vdyBhdmFpbGFibGUsIGNsZWFyIGNhY2hlLCByZXNldCByZWFkIHBvaW50ZXIgdG8KICAvLyBiZWZvcmUgdHlwZSBhbmQgbGVuZ3RoCiAgYy5mcmFnbWVudGVkID0gbnVsbDsKICBiLnJlYWQgLT0gNDsKCiAgLy8gc2F2ZSB0aGUgaGFuZHNoYWtlIGJ5dGVzIGZvciBkaWdlc3Rpb24gYWZ0ZXIgaGFuZGxlciBpcyBmb3VuZAogIC8vIChpbmNsdWRlIHR5cGUgYW5kIGxlbmd0aCBvZiBoYW5kc2hha2UgbXNnKQogIHZhciBieXRlcyA9IGIuYnl0ZXMobGVuZ3RoICsgNCk7CgogIC8vIHJlc3RvcmUgcmVhZCBwb2ludGVyCiAgYi5yZWFkICs9IDQ7CgogIC8vIGhhbmRsZSBleHBlY3RlZCBtZXNzYWdlCiAgaWYodHlwZSBpbiBoc1RhYmxlW2MuZW50aXR5XVtjLmV4cGVjdF0pIHsKICAgIC8vIGluaXRpYWxpemUgc2VydmVyIHNlc3Npb24KICAgIGlmKGMuZW50aXR5ID09PSB0bHMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXIgJiYgIWMub3BlbiAmJiAhYy5mYWlsKSB7CiAgICAgIGMuaGFuZHNoYWtpbmcgPSB0cnVlOwogICAgICBjLnNlc3Npb24gPSB7CiAgICAgICAgdmVyc2lvbjogbnVsbCwKICAgICAgICBleHRlbnNpb25zOiB7CiAgICAgICAgICBzZXJ2ZXJfbmFtZTogewogICAgICAgICAgICBzZXJ2ZXJOYW1lTGlzdDogW10KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNpcGhlclN1aXRlOiBudWxsLAogICAgICAgIGNvbXByZXNzaW9uTWV0aG9kOiBudWxsLAogICAgICAgIHNlcnZlckNlcnRpZmljYXRlOiBudWxsLAogICAgICAgIGNsaWVudENlcnRpZmljYXRlOiBudWxsLAogICAgICAgIG1kNTogZm9yZ2UubWQubWQ1LmNyZWF0ZSgpLAogICAgICAgIHNoYTE6IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCkKICAgICAgfTsKICAgIH0KCiAgICAvKiBVcGRhdGUgaGFuZHNoYWtlIG1lc3NhZ2VzIGRpZ2VzdC4gRmluaXNoZWQgYW5kIENlcnRpZmljYXRlVmVyaWZ5CiAgICAgIG1lc3NhZ2VzIGFyZSBub3QgZGlnZXN0ZWQgaGVyZS4gVGhleSBjYW4ndCBiZSBkaWdlc3RlZCBhcyBwYXJ0IG9mCiAgICAgIHRoZSB2ZXJpZnlfZGF0YSB0aGF0IHRoZXkgY29udGFpbi4gVGhlc2UgbWVzc2FnZXMgYXJlIG1hbnVhbGx5CiAgICAgIGRpZ2VzdGVkIGluIHRoZWlyIGhhbmRsZXJzLiBIZWxsb1JlcXVlc3QgbWVzc2FnZXMgYXJlIHNpbXBseSBuZXZlcgogICAgICBpbmNsdWRlZCBpbiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UgZGlnZXN0IGFjY29yZGluZyB0byBzcGVjLiAqLwogICAgaWYodHlwZSAhPT0gdGxzLkhhbmRzaGFrZVR5cGUuaGVsbG9fcmVxdWVzdCAmJgogICAgICB0eXBlICE9PSB0bHMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZV92ZXJpZnkgJiYKICAgICAgdHlwZSAhPT0gdGxzLkhhbmRzaGFrZVR5cGUuZmluaXNoZWQpIHsKICAgICAgYy5zZXNzaW9uLm1kNS51cGRhdGUoYnl0ZXMpOwogICAgICBjLnNlc3Npb24uc2hhMS51cGRhdGUoYnl0ZXMpOwogICAgfQoKICAgIC8vIGhhbmRsZSBzcGVjaWZpYyBoYW5kc2hha2UgdHlwZSByZWNvcmQKICAgIGhzVGFibGVbYy5lbnRpdHldW2MuZXhwZWN0XVt0eXBlXShjLCByZWNvcmQsIGxlbmd0aCk7CiAgfSBlbHNlIHsKICAgIC8vIHVuZXhwZWN0ZWQgcmVjb3JkCiAgICB0bHMuaGFuZGxlVW5leHBlY3RlZChjLCByZWNvcmQpOwogIH0KfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhbiBBcHBsaWNhdGlvbkRhdGEgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKi8KdGxzLmhhbmRsZUFwcGxpY2F0aW9uRGF0YSA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIC8vIGJ1ZmZlciBkYXRhLCBub3RpZnkgdGhhdCBpdHMgcmVhZHkKICBjLmRhdGEucHV0QnVmZmVyKHJlY29yZC5mcmFnbWVudCk7CiAgYy5kYXRhUmVhZHkoYyk7CgogIC8vIGNvbnRpbnVlCiAgYy5wcm9jZXNzKCk7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYSBIZWFydGJlYXQgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKi8KdGxzLmhhbmRsZUhlYXJ0YmVhdCA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIC8vIGdldCB0aGUgaGVhcnRiZWF0IHR5cGUgYW5kIHBheWxvYWQKICB2YXIgYiA9IHJlY29yZC5mcmFnbWVudDsKICB2YXIgdHlwZSA9IGIuZ2V0Qnl0ZSgpOwogIHZhciBsZW5ndGggPSBiLmdldEludDE2KCk7CiAgdmFyIHBheWxvYWQgPSBiLmdldEJ5dGVzKGxlbmd0aCk7CgogIGlmKHR5cGUgPT09IHRscy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCkgewogICAgLy8gZGlzY2FyZCByZXF1ZXN0IGR1cmluZyBoYW5kc2hha2Ugb3IgaWYgbGVuZ3RoIGlzIHRvbyBsYXJnZQogICAgaWYoYy5oYW5kc2hha2luZyB8fCBsZW5ndGggPiBwYXlsb2FkLmxlbmd0aCkgewogICAgICAvLyBjb250aW51ZQogICAgICByZXR1cm4gYy5wcm9jZXNzKCk7CiAgICB9CiAgICAvLyByZXRyYW5zbWl0IHBheWxvYWQKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhlYXJ0YmVhdCwKICAgICAgZGF0YTogdGxzLmNyZWF0ZUhlYXJ0YmVhdCgKICAgICAgICB0bHMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuaGVhcnRiZWF0X3Jlc3BvbnNlLCBwYXlsb2FkKQogICAgfSkpOwogICAgdGxzLmZsdXNoKGMpOwogIH0gZWxzZSBpZih0eXBlID09PSB0bHMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuaGVhcnRiZWF0X3Jlc3BvbnNlKSB7CiAgICAvLyBjaGVjayBwYXlsb2FkIGFnYWluc3QgZXhwZWN0ZWQgcGF5bG9hZCwgZGlzY2FyZCBoZWFydGJlYXQgaWYgbm8gbWF0Y2gKICAgIGlmKHBheWxvYWQgIT09IGMuZXhwZWN0ZWRIZWFydGJlYXRQYXlsb2FkKSB7CiAgICAgIC8vIGNvbnRpbnVlCiAgICAgIHJldHVybiBjLnByb2Nlc3MoKTsKICAgIH0KCiAgICAvLyBub3RpZnkgdGhhdCBhIHZhbGlkIGhlYXJ0YmVhdCB3YXMgcmVjZWl2ZWQKICAgIGlmKGMuaGVhcnRiZWF0UmVjZWl2ZWQpIHsKICAgICAgYy5oZWFydGJlYXRSZWNlaXZlZChjLCBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihwYXlsb2FkKSk7CiAgICB9CiAgfQoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIFRoZSB0cmFuc2lzdGlvbmFsIHN0YXRlIHRhYmxlcyBmb3IgcmVjZWl2aW5nIFRMUyByZWNvcmRzLiBJdCBtYXBzIHRoZQogKiBjdXJyZW50IFRMUyBlbmdpbmUgc3RhdGUgYW5kIGEgcmVjZWl2ZWQgcmVjb3JkIHRvIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZQogKiByZWNvcmQgYW5kIHVwZGF0ZSB0aGUgc3RhdGUuCiAqCiAqIEZvciBpbnN0YW5jZSwgaWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgU0hFLCB0aGVuIHRoZSBUTFMgZW5naW5lIGlzIGV4cGVjdGluZwogKiBhIFNlcnZlckhlbGxvIHJlY29yZC4gT25jZSBhIHJlY29yZCBpcyByZWNlaXZlZCwgdGhlIGhhbmRsZXIgZnVuY3Rpb24gaXMKICogbG9va2VkIHVwIHVzaW5nIHRoZSBzdGF0ZSBTSEUgYW5kIHRoZSByZWNvcmQncyBjb250ZW50IHR5cGUuCiAqCiAqIFRoZSByZXN1bHRpbmcgZnVuY3Rpb24gd2lsbCBlaXRoZXIgYmUgYW4gZXJyb3IgaGFuZGxlciBvciBhIHJlY29yZCBoYW5kbGVyLgogKiBUaGUgZnVuY3Rpb24gd2lsbCB0YWtlIHdoYXRldmVyIGFjdGlvbiBpcyBhcHByb3ByaWF0ZSBhbmQgdXBkYXRlIHRoZSBzdGF0ZQogKiBmb3IgdGhlIG5leHQgcmVjb3JkLgogKgogKiBUaGUgc3RhdGVzIGFyZSBhbGwgYmFzZWQgb24gcG9zc2libGUgc2VydmVyIHJlY29yZCB0eXBlcy4gTm90ZSB0aGF0IHRoZQogKiBjbGllbnQgd2lsbCBuZXZlciBzcGVjaWZpY2FsbHkgZXhwZWN0IHRvIHJlY2VpdmUgYSBIZWxsb1JlcXVlc3Qgb3IgYW4gYWxlcnQKICogZnJvbSB0aGUgc2VydmVyIHNvIHRoZXJlIGlzIG5vIHN0YXRlIHRoYXQgcmVmbGVjdHMgdGhpcy4gVGhlc2UgbWVzc2FnZXMgbWF5CiAqIG9jY3VyIGF0IGFueSB0aW1lLgogKgogKiBUaGVyZSBhcmUgdHdvIHRhYmxlcyBmb3IgbWFwcGluZyBzdGF0ZXMgYmVjYXVzZSB0aGVyZSBpcyBhIHNlY29uZCB0aWVyIG9mCiAqIHR5cGVzIGZvciBoYW5kc2hha2UgbWVzc2FnZXMuIE9uY2UgYSByZWNvcmQgd2l0aCBhIGNvbnRlbnQgdHlwZSBvZiBoYW5kc2hha2UKICogaXMgcmVjZWl2ZWQsIHRoZSBoYW5kc2hha2UgcmVjb3JkIGhhbmRsZXIgd2lsbCBsb29rIHVwIHRoZSBoYW5kc2hha2UgdHlwZSBpbgogKiB0aGUgc2Vjb25kYXJ5IG1hcCB0byBnZXQgaXRzIGFwcHJvcHJpYXRlIGhhbmRsZXIuCiAqCiAqIFZhbGlkIG1lc3NhZ2Ugb3JkZXJzIGFyZSBhcyBmb2xsb3dzOgogKgogKiA9PT09PT09PT09PT09PT09PT09PT09PUZVTEwgSEFORFNIQUtFPT09PT09PT09PT09PT09PT09PT09PQogKiBDbGllbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlcgogKgogKiBDbGllbnRIZWxsbyAgICAgICAgICAgICAgICAgIC0tLS0tLS0tPgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJIZWxsbwogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlcktleUV4Y2hhbmdlKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VydGlmaWNhdGVSZXF1ZXN0KgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLSAgICAgIFNlcnZlckhlbGxvRG9uZQogKiBDZXJ0aWZpY2F0ZSoKICogQ2xpZW50S2V5RXhjaGFuZ2UKICogQ2VydGlmaWNhdGVWZXJpZnkqCiAqIFtDaGFuZ2VDaXBoZXJTcGVjXQogKiBGaW5pc2hlZCAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tPgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtDaGFuZ2VDaXBoZXJTcGVjXQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLSAgICAgICAgICAgICBGaW5pc2hlZAogKiBBcHBsaWNhdGlvbiBEYXRhICAgICAgICAgICAgIDwtLS0tLS0tPiAgICAgQXBwbGljYXRpb24gRGF0YQogKgogKiA9PT09PT09PT09PT09PT09PT09PT1TRVNTSU9OIFJFU1VNUFRJT049PT09PT09PT09PT09PT09PT09PT0KICogQ2xpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVyCiAqCiAqIENsaWVudEhlbGxvICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tPgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVySGVsbG8KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0NoYW5nZUNpcGhlclNwZWNdCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLSAgICAgICAgICAgICBGaW5pc2hlZAogKiBbQ2hhbmdlQ2lwaGVyU3BlY10KICogRmluaXNoZWQgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0+CiAqIEFwcGxpY2F0aW9uIERhdGEgICAgICAgICAgICAgIDwtLS0tLS0tPiAgICAgQXBwbGljYXRpb24gRGF0YQogKi8KLy8gY2xpZW50IGV4cGVjdCBzdGF0ZXMgKGluZGljYXRlIHdoaWNoIHJlY29yZHMgYXJlIGV4cGVjdGVkIHRvIGJlIHJlY2VpdmVkKQp2YXIgU0hFID0gMDsgLy8gcmN2IHNlcnZlciBoZWxsbwp2YXIgU0NFID0gMTsgLy8gcmN2IHNlcnZlciBjZXJ0aWZpY2F0ZQp2YXIgU0tFID0gMjsgLy8gcmN2IHNlcnZlciBrZXkgZXhjaGFuZ2UKdmFyIFNDUiA9IDM7IC8vIHJjdiBjZXJ0aWZpY2F0ZSByZXF1ZXN0CnZhciBTSEQgPSA0OyAvLyByY3Ygc2VydmVyIGhlbGxvIGRvbmUKdmFyIFNDQyA9IDU7IC8vIHJjdiBjaGFuZ2UgY2lwaGVyIHNwZWMKdmFyIFNGSSA9IDY7IC8vIHJjdiBmaW5pc2hlZAp2YXIgU0FEID0gNzsgLy8gcmN2IGFwcGxpY2F0aW9uIGRhdGEKdmFyIFNFUiA9IDg7IC8vIG5vdCBleHBlY3RpbmcgYW55IG1lc3NhZ2VzIGF0IHRoaXMgcG9pbnQKCi8vIHNlcnZlciBleHBlY3Qgc3RhdGVzCnZhciBDSEUgPSAwOyAvLyByY3YgY2xpZW50IGhlbGxvCnZhciBDQ0UgPSAxOyAvLyByY3YgY2xpZW50IGNlcnRpZmljYXRlCnZhciBDS0UgPSAyOyAvLyByY3YgY2xpZW50IGtleSBleGNoYW5nZQp2YXIgQ0NWID0gMzsgLy8gcmN2IGNlcnRpZmljYXRlIHZlcmlmeQp2YXIgQ0NDID0gNDsgLy8gcmN2IGNoYW5nZSBjaXBoZXIgc3BlYwp2YXIgQ0ZJID0gNTsgLy8gcmN2IGZpbmlzaGVkCnZhciBDQUQgPSA2OyAvLyByY3YgYXBwbGljYXRpb24gZGF0YQp2YXIgQ0VSID0gNzsgLy8gbm90IGV4cGVjdGluZyBhbnkgbWVzc2FnZXMgYXQgdGhpcyBwb2ludAoKLy8gbWFwIGNsaWVudCBjdXJyZW50IGV4cGVjdCBzdGF0ZSBhbmQgY29udGVudCB0eXBlIHRvIGZ1bmN0aW9uCnZhciBfXyA9IHRscy5oYW5kbGVVbmV4cGVjdGVkOwp2YXIgUjAgPSB0bHMuaGFuZGxlQ2hhbmdlQ2lwaGVyU3BlYzsKdmFyIFIxID0gdGxzLmhhbmRsZUFsZXJ0Owp2YXIgUjIgPSB0bHMuaGFuZGxlSGFuZHNoYWtlOwp2YXIgUjMgPSB0bHMuaGFuZGxlQXBwbGljYXRpb25EYXRhOwp2YXIgUjQgPSB0bHMuaGFuZGxlSGVhcnRiZWF0Owp2YXIgY3RUYWJsZSA9IFtdOwpjdFRhYmxlW3Rscy5Db25uZWN0aW9uRW5kLmNsaWVudF0gPSBbCi8vICAgICAgQ0MsQUwsSFMsQUQsSEIKLypTSEUqL1tfXyxSMSxSMixfXyxSNF0sCi8qU0NFKi9bX18sUjEsUjIsX18sUjRdLAovKlNLRSovW19fLFIxLFIyLF9fLFI0XSwKLypTQ1IqL1tfXyxSMSxSMixfXyxSNF0sCi8qU0hEKi9bX18sUjEsUjIsX18sUjRdLAovKlNDQyovW1IwLFIxLF9fLF9fLFI0XSwKLypTRkkqL1tfXyxSMSxSMixfXyxSNF0sCi8qU0FEKi9bX18sUjEsUjIsUjMsUjRdLAovKlNFUiovW19fLFIxLFIyLF9fLFI0XQpdOwoKLy8gbWFwIHNlcnZlciBjdXJyZW50IGV4cGVjdCBzdGF0ZSBhbmQgY29udGVudCB0eXBlIHRvIGZ1bmN0aW9uCmN0VGFibGVbdGxzLkNvbm5lY3Rpb25FbmQuc2VydmVyXSA9IFsKLy8gICAgICBDQyxBTCxIUyxBRAovKkNIRSovW19fLFIxLFIyLF9fLFI0XSwKLypDQ0UqL1tfXyxSMSxSMixfXyxSNF0sCi8qQ0tFKi9bX18sUjEsUjIsX18sUjRdLAovKkNDViovW19fLFIxLFIyLF9fLFI0XSwKLypDQ0MqL1tSMCxSMSxfXyxfXyxSNF0sCi8qQ0ZJKi9bX18sUjEsUjIsX18sUjRdLAovKkNBRCovW19fLFIxLFIyLFIzLFI0XSwKLypDRVIqL1tfXyxSMSxSMixfXyxSNF0KXTsKCi8vIG1hcCBjbGllbnQgY3VycmVudCBleHBlY3Qgc3RhdGUgYW5kIGhhbmRzaGFrZSB0eXBlIHRvIGZ1bmN0aW9uCnZhciBIMCA9IHRscy5oYW5kbGVIZWxsb1JlcXVlc3Q7CnZhciBIMSA9IHRscy5oYW5kbGVTZXJ2ZXJIZWxsbzsKdmFyIEgyID0gdGxzLmhhbmRsZUNlcnRpZmljYXRlOwp2YXIgSDMgPSB0bHMuaGFuZGxlU2VydmVyS2V5RXhjaGFuZ2U7CnZhciBINCA9IHRscy5oYW5kbGVDZXJ0aWZpY2F0ZVJlcXVlc3Q7CnZhciBINSA9IHRscy5oYW5kbGVTZXJ2ZXJIZWxsb0RvbmU7CnZhciBINiA9IHRscy5oYW5kbGVGaW5pc2hlZDsKdmFyIGhzVGFibGUgPSBbXTsKaHNUYWJsZVt0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnRdID0gWwovLyAgICAgIEhSLDAxLFNILDAzLDA0LDA1LDA2LDA3LDA4LDA5LDEwLFNDLFNLLENSLEhELDE1LENLLDE3LDE4LDE5LEZJCi8qU0hFKi9bX18sX18sSDEsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX19dLAovKlNDRSovW0gwLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLEgyLEgzLEg0LEg1LF9fLF9fLF9fLF9fLF9fLF9fXSwKLypTS0UqL1tIMCxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxIMyxINCxINSxfXyxfXyxfXyxfXyxfXyxfX10sCi8qU0NSKi9bSDAsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sSDQsSDUsX18sX18sX18sX18sX18sX19dLAovKlNIRCovW0gwLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLEg1LF9fLF9fLF9fLF9fLF9fLF9fXSwKLypTQ0MqL1tIMCxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfX10sCi8qU0ZJKi9bSDAsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sSDZdLAovKlNBRCovW0gwLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXSwKLypTRVIqL1tIMCxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfX10KXTsKCi8vIG1hcCBzZXJ2ZXIgY3VycmVudCBleHBlY3Qgc3RhdGUgYW5kIGhhbmRzaGFrZSB0eXBlIHRvIGZ1bmN0aW9uCi8vIE5vdGU6IENBRFtDSF0gZG9lcyBub3QgbWFwIHRvIEZCIGJlY2F1c2UgcmVuZWdvdGF0aW9uIGlzIHByb2hpYml0ZWQKdmFyIEg3ID0gdGxzLmhhbmRsZUNsaWVudEhlbGxvOwp2YXIgSDggPSB0bHMuaGFuZGxlQ2xpZW50S2V5RXhjaGFuZ2U7CnZhciBIOSA9IHRscy5oYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmeTsKaHNUYWJsZVt0bHMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXJdID0gWwovLyAgICAgIDAxLENILDAyLDAzLDA0LDA1LDA2LDA3LDA4LDA5LDEwLENDLDEyLDEzLDE0LENWLENLLDE3LDE4LDE5LEZJCi8qQ0hFKi9bX18sSDcsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX19dLAovKkNDRSovW19fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLEgyLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXSwKLypDS0UqL1tfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxIOCxfXyxfXyxfXyxfX10sCi8qQ0NWKi9bX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sSDksX18sX18sX18sX18sX19dLAovKkNDQyovW19fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXSwKLypDRkkqL1tfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxINl0sCi8qQ0FEKi9bX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX19dLAovKkNFUiovW19fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXQpdOwoKLyoqCiAqIEdlbmVyYXRlcyB0aGUgbWFzdGVyX3NlY3JldCBhbmQga2V5cyB1c2luZyB0aGUgZ2l2ZW4gc2VjdXJpdHkgcGFyYW1ldGVycy4KICoKICogVGhlIHNlY3VyaXR5IHBhcmFtZXRlcnMgZm9yIGEgVExTIGNvbm5lY3Rpb24gc3RhdGUgYXJlIGRlZmluZWQgYXMgc3VjaDoKICoKICogc3RydWN0IHsKICogICBDb25uZWN0aW9uRW5kICAgICAgICAgIGVudGl0eTsKICogICBQUkZBbGdvcml0aG0gICAgICAgICAgIHByZl9hbGdvcml0aG07CiAqICAgQnVsa0NpcGhlckFsZ29yaXRobSAgICBidWxrX2NpcGhlcl9hbGdvcml0aG07CiAqICAgQ2lwaGVyVHlwZSAgICAgICAgICAgICBjaXBoZXJfdHlwZTsKICogICB1aW50OCAgICAgICAgICAgICAgICAgIGVuY19rZXlfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgYmxvY2tfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgZml4ZWRfaXZfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgcmVjb3JkX2l2X2xlbmd0aDsKICogICBNQUNBbGdvcml0aG0gICAgICAgICAgIG1hY19hbGdvcml0aG07CiAqICAgdWludDggICAgICAgICAgICAgICAgICBtYWNfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgbWFjX2tleV9sZW5ndGg7CiAqICAgQ29tcHJlc3Npb25NZXRob2QgICAgICBjb21wcmVzc2lvbl9hbGdvcml0aG07CiAqICAgb3BhcXVlICAgICAgICAgICAgICAgICBtYXN0ZXJfc2VjcmV0WzQ4XTsKICogICBvcGFxdWUgICAgICAgICAgICAgICAgIGNsaWVudF9yYW5kb21bMzJdOwogKiAgIG9wYXF1ZSAgICAgICAgICAgICAgICAgc2VydmVyX3JhbmRvbVszMl07CiAqIH0gU2VjdXJpdHlQYXJhbWV0ZXJzOwogKgogKiBOb3RlIHRoYXQgdGhpcyBkZWZpbml0aW9uIGlzIGZyb20gVExTIDEuMi4gSW4gVExTIDEuMCBzb21lIG9mIHRoZXNlCiAqIHBhcmFtZXRlcnMgYXJlIGlnbm9yZWQgYmVjYXVzZSwgZm9yIGluc3RhbmNlLCB0aGUgUFJGQWxnb3JpdGhtIGlzIGEKICogYnVpbHRpbi1maXhlZCBhbGdvcml0aG0gY29tYmluaW5nIGl0ZXJhdGlvbnMgb2YgTUQ1IGFuZCBTSEEtMSBpbiBUTFMgMS4wLgogKgogKiBUaGUgUmVjb3JkIFByb3RvY29sIHJlcXVpcmVzIGFuIGFsZ29yaXRobSB0byBnZW5lcmF0ZSBrZXlzIHJlcXVpcmVkIGJ5IHRoZQogKiBjdXJyZW50IGNvbm5lY3Rpb24gc3RhdGUuCiAqCiAqIFRoZSBtYXN0ZXIgc2VjcmV0IGlzIGV4cGFuZGVkIGludG8gYSBzZXF1ZW5jZSBvZiBzZWN1cmUgYnl0ZXMsIHdoaWNoIGlzIHRoZW4KICogc3BsaXQgdG8gYSBjbGllbnQgd3JpdGUgTUFDIGtleSwgYSBzZXJ2ZXIgd3JpdGUgTUFDIGtleSwgYSBjbGllbnQgd3JpdGUKICogZW5jcnlwdGlvbiBrZXksIGFuZCBhIHNlcnZlciB3cml0ZSBlbmNyeXB0aW9uIGtleS4gSW4gVExTIDEuMCBhIGNsaWVudCB3cml0ZQogKiBJViBhbmQgc2VydmVyIHdyaXRlIElWIGFyZSBhbHNvIGdlbmVyYXRlZC4gRWFjaCBvZiB0aGVzZSBpcyBnZW5lcmF0ZWQgZnJvbQogKiB0aGUgYnl0ZSBzZXF1ZW5jZSBpbiB0aGF0IG9yZGVyLiBVbnVzZWQgdmFsdWVzIGFyZSBlbXB0eS4gSW4gVExTIDEuMiwgc29tZQogKiBBRUFEIGNpcGhlcnMgbWF5IGFkZGl0aW9uYWxseSByZXF1aXJlIGEgY2xpZW50IHdyaXRlIElWIGFuZCBhIHNlcnZlciB3cml0ZQogKiBJViAoc2VlIFNlY3Rpb24gNi4yLjMuMykuCiAqCiAqIFdoZW4ga2V5cywgTUFDIGtleXMsIGFuZCBJVnMgYXJlIGdlbmVyYXRlZCwgdGhlIG1hc3RlciBzZWNyZXQgaXMgdXNlZCBhcyBhbgogKiBlbnRyb3B5IHNvdXJjZS4KICoKICogVG8gZ2VuZXJhdGUgdGhlIGtleSBtYXRlcmlhbCwgY29tcHV0ZToKICoKICogbWFzdGVyX3NlY3JldCA9IFBSRihwcmVfbWFzdGVyX3NlY3JldCwgIm1hc3RlciBzZWNyZXQiLAogKiAgICAgICAgICAgICAgICAgICAgIENsaWVudEhlbGxvLnJhbmRvbSArIFNlcnZlckhlbGxvLnJhbmRvbSkKICoKICoga2V5X2Jsb2NrID0gUFJGKFNlY3VyaXR5UGFyYW1ldGVycy5tYXN0ZXJfc2VjcmV0LAogKiAgICAgICAgICAgICAgICAgImtleSBleHBhbnNpb24iLAogKiAgICAgICAgICAgICAgICAgU2VjdXJpdHlQYXJhbWV0ZXJzLnNlcnZlcl9yYW5kb20gKwogKiAgICAgICAgICAgICAgICAgU2VjdXJpdHlQYXJhbWV0ZXJzLmNsaWVudF9yYW5kb20pOwogKgogKiB1bnRpbCBlbm91Z2ggb3V0cHV0IGhhcyBiZWVuIGdlbmVyYXRlZC4gVGhlbiwgdGhlIGtleV9ibG9jayBpcwogKiBwYXJ0aXRpb25lZCBhcyBmb2xsb3dzOgogKgogKiBjbGllbnRfd3JpdGVfTUFDX2tleVtTZWN1cml0eVBhcmFtZXRlcnMubWFjX2tleV9sZW5ndGhdCiAqIHNlcnZlcl93cml0ZV9NQUNfa2V5W1NlY3VyaXR5UGFyYW1ldGVycy5tYWNfa2V5X2xlbmd0aF0KICogY2xpZW50X3dyaXRlX2tleVtTZWN1cml0eVBhcmFtZXRlcnMuZW5jX2tleV9sZW5ndGhdCiAqIHNlcnZlcl93cml0ZV9rZXlbU2VjdXJpdHlQYXJhbWV0ZXJzLmVuY19rZXlfbGVuZ3RoXQogKiBjbGllbnRfd3JpdGVfSVZbU2VjdXJpdHlQYXJhbWV0ZXJzLmZpeGVkX2l2X2xlbmd0aF0KICogc2VydmVyX3dyaXRlX0lWW1NlY3VyaXR5UGFyYW1ldGVycy5maXhlZF9pdl9sZW5ndGhdCiAqCiAqIEluIFRMUyAxLjIsIHRoZSBjbGllbnRfd3JpdGVfSVYgYW5kIHNlcnZlcl93cml0ZV9JViBhcmUgb25seSBnZW5lcmF0ZWQgZm9yCiAqIGltcGxpY2l0IG5vbmNlIHRlY2huaXF1ZXMgYXMgZGVzY3JpYmVkIGluIFNlY3Rpb24gMy4yLjEgb2YgW0FFQURdLiBUaGlzCiAqIGltcGxlbWVudGF0aW9uIHVzZXMgVExTIDEuMCBzbyBJVnMgYXJlIGdlbmVyYXRlZC4KICoKICogSW1wbGVtZW50YXRpb24gbm90ZTogVGhlIGN1cnJlbnRseSBkZWZpbmVkIGNpcGhlciBzdWl0ZSB3aGljaCByZXF1aXJlcyB0aGUKICogbW9zdCBtYXRlcmlhbCBpcyBBRVNfMjU2X0NCQ19TSEEyNTYuIEl0IHJlcXVpcmVzIDIgeCAzMiBieXRlIGtleXMgYW5kIDIgeCAzMgogKiBieXRlIE1BQyBrZXlzLCBmb3IgYSB0b3RhbCAxMjggYnl0ZXMgb2Yga2V5IG1hdGVyaWFsLiBJbiBUTFMgMS4wIGl0IGFsc28KICogcmVxdWlyZXMgMiB4IDE2IGJ5dGUgSVZzLCBzbyBpdCBhY3R1YWxseSB0YWtlcyAxNjAgYnl0ZXMgb2Yga2V5IG1hdGVyaWFsLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHNwIHRoZSBzZWN1cml0eSBwYXJhbWV0ZXJzIHRvIHVzZS4KICoKICogQHJldHVybiB0aGUgc2VjdXJpdHkga2V5cy4KICovCnRscy5nZW5lcmF0ZUtleXMgPSBmdW5jdGlvbihjLCBzcCkgewogIC8vIFRMU19SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEgKHJlcXVpcmVkIHRvIGJlIGNvbXBsaWFudCB3aXRoIFRMUyAxLjIpICYKICAvLyBUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIGFyZSB0aGUgb25seSBjaXBoZXIgc3VpdGVzIGltcGxlbWVudGVkCiAgLy8gYXQgcHJlc2VudAoKICAvLyBUTFNfREhFX0RTU19XSVRIXzNERVNfRURFX0NCQ19TSEEgaXMgcmVxdWlyZWQgdG8gYmUgY29tcGxpYW50IHdpdGgKICAvLyBUTFMgMS4wIGJ1dCB3ZSBkb24ndCBjYXJlIHJpZ2h0IG5vdyBiZWNhdXNlIEFFUyBpcyBiZXR0ZXIgYW5kIHdlIGhhdmUKICAvLyBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgaXQKCiAgLy8gVE9ETzogVExTIDEuMiBpbXBsZW1lbnRhdGlvbgogIC8qCiAgLy8gZGV0ZXJtaW5lIHRoZSBQUkYKICB2YXIgcHJmOwogIHN3aXRjaChzcC5wcmZfYWxnb3JpdGhtKSB7CiAgY2FzZSB0bHMuUFJGQWxnb3JpdGhtLnRsc19wcmZfc2hhMjU2OgogICAgcHJmID0gcHJmX3NoYTI1NjsKICAgIGJyZWFrOwogIGRlZmF1bHQ6CiAgICAvLyBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUFJGJyk7CiAgfQogICovCgogIC8vIFRMUyAxLjAvMS4xIGltcGxlbWVudGF0aW9uCiAgdmFyIHByZiA9IHByZl9UTFMxOwoKICAvLyBjb25jYXRlbmF0ZSBzZXJ2ZXIgYW5kIGNsaWVudCByYW5kb20KICB2YXIgcmFuZG9tID0gc3AuY2xpZW50X3JhbmRvbSArIHNwLnNlcnZlcl9yYW5kb207CgogIC8vIG9ubHkgY3JlYXRlIG1hc3RlciBzZWNyZXQgaWYgc2Vzc2lvbiBpcyBuZXcKICBpZighYy5zZXNzaW9uLnJlc3VtaW5nKSB7CiAgICAvLyBjcmVhdGUgbWFzdGVyIHNlY3JldCwgY2xlYW4gdXAgcHJlLW1hc3RlciBzZWNyZXQKICAgIHNwLm1hc3Rlcl9zZWNyZXQgPSBwcmYoCiAgICAgIHNwLnByZV9tYXN0ZXJfc2VjcmV0LCAnbWFzdGVyIHNlY3JldCcsIHJhbmRvbSwgNDgpLmJ5dGVzKCk7CiAgICBzcC5wcmVfbWFzdGVyX3NlY3JldCA9IG51bGw7CiAgfQoKICAvLyBnZW5lcmF0ZSB0aGUgYW1vdW50IG9mIGtleSBtYXRlcmlhbCBuZWVkZWQKICByYW5kb20gPSBzcC5zZXJ2ZXJfcmFuZG9tICsgc3AuY2xpZW50X3JhbmRvbTsKICB2YXIgbGVuZ3RoID0gMiAqIHNwLm1hY19rZXlfbGVuZ3RoICsgMiAqIHNwLmVuY19rZXlfbGVuZ3RoOwoKICAvLyBpbmNsdWRlIElWIGZvciBUTFMvMS4wCiAgdmFyIHRsczEwID0gKGMudmVyc2lvbi5tYWpvciA9PT0gdGxzLlZlcnNpb25zLlRMU18xXzAubWFqb3IgJiYKICAgIGMudmVyc2lvbi5taW5vciA9PT0gdGxzLlZlcnNpb25zLlRMU18xXzAubWlub3IpOwogIGlmKHRsczEwKSB7CiAgICBsZW5ndGggKz0gMiAqIHNwLmZpeGVkX2l2X2xlbmd0aDsKICB9CiAgdmFyIGttID0gcHJmKHNwLm1hc3Rlcl9zZWNyZXQsICdrZXkgZXhwYW5zaW9uJywgcmFuZG9tLCBsZW5ndGgpOwoKICAvLyBzcGxpdCB0aGUga2V5IG1hdGVyaWFsIGludG8gdGhlIE1BQyBhbmQgZW5jcnlwdGlvbiBrZXlzCiAgdmFyIHJ2YWwgPSB7CiAgICBjbGllbnRfd3JpdGVfTUFDX2tleToga20uZ2V0Qnl0ZXMoc3AubWFjX2tleV9sZW5ndGgpLAogICAgc2VydmVyX3dyaXRlX01BQ19rZXk6IGttLmdldEJ5dGVzKHNwLm1hY19rZXlfbGVuZ3RoKSwKICAgIGNsaWVudF93cml0ZV9rZXk6IGttLmdldEJ5dGVzKHNwLmVuY19rZXlfbGVuZ3RoKSwKICAgIHNlcnZlcl93cml0ZV9rZXk6IGttLmdldEJ5dGVzKHNwLmVuY19rZXlfbGVuZ3RoKQogIH07CgogIC8vIGluY2x1ZGUgVExTIDEuMCBJVnMKICBpZih0bHMxMCkgewogICAgcnZhbC5jbGllbnRfd3JpdGVfSVYgPSBrbS5nZXRCeXRlcyhzcC5maXhlZF9pdl9sZW5ndGgpOwogICAgcnZhbC5zZXJ2ZXJfd3JpdGVfSVYgPSBrbS5nZXRCeXRlcyhzcC5maXhlZF9pdl9sZW5ndGgpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ3JlYXRlcyBhIG5ldyBpbml0aWFsaXplZCBUTFMgY29ubmVjdGlvbiBzdGF0ZS4gQSBjb25uZWN0aW9uIHN0YXRlIGhhcwogKiBhIHJlYWQgbW9kZSBhbmQgYSB3cml0ZSBtb2RlLgogKgogKiBjb21wcmVzc2lvbiBzdGF0ZToKICogICBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLgogKgogKiBjaXBoZXIgc3RhdGU6CiAqICAgVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtLiBUaGlzIHdpbGwgY29uc2lzdCBvZiB0aGUKICogICBzY2hlZHVsZWQga2V5IGZvciB0aGF0IGNvbm5lY3Rpb24uIEZvciBzdHJlYW0gY2lwaGVycywgdGhpcyB3aWxsIGFsc28KICogICBjb250YWluIHdoYXRldmVyIHN0YXRlIGluZm9ybWF0aW9uIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyB0aGUgc3RyZWFtIHRvCiAqICAgY29udGludWUgdG8gZW5jcnlwdCBvciBkZWNyeXB0IGRhdGEuCiAqCiAqIE1BQyBrZXk6CiAqICAgVGhlIE1BQyBrZXkgZm9yIHRoZSBjb25uZWN0aW9uLgogKgogKiBzZXF1ZW5jZSBudW1iZXI6CiAqICAgRWFjaCBjb25uZWN0aW9uIHN0YXRlIGNvbnRhaW5zIGEgc2VxdWVuY2UgbnVtYmVyLCB3aGljaCBpcyBtYWludGFpbmVkCiAqICAgc2VwYXJhdGVseSBmb3IgcmVhZCBhbmQgd3JpdGUgc3RhdGVzLiBUaGUgc2VxdWVuY2UgbnVtYmVyIE1VU1QgYmUgc2V0IHRvCiAqICAgemVybyB3aGVuZXZlciBhIGNvbm5lY3Rpb24gc3RhdGUgaXMgbWFkZSB0aGUgYWN0aXZlIHN0YXRlLiBTZXF1ZW5jZQogKiAgIG51bWJlcnMgYXJlIG9mIHR5cGUgdWludDY0IGFuZCBtYXkgbm90IGV4Y2VlZCAyXjY0LTEuIFNlcXVlbmNlIG51bWJlcnMgZG8KICogICBub3Qgd3JhcC4gSWYgYSBUTFMgaW1wbGVtZW50YXRpb24gd291bGQgbmVlZCB0byB3cmFwIGEgc2VxdWVuY2UgbnVtYmVyLAogKiAgIGl0IG11c3QgcmVuZWdvdGlhdGUgaW5zdGVhZC4gQSBzZXF1ZW5jZSBudW1iZXIgaXMgaW5jcmVtZW50ZWQgYWZ0ZXIgZWFjaAogKiAgIHJlY29yZDogc3BlY2lmaWNhbGx5LCB0aGUgZmlyc3QgcmVjb3JkIHRyYW5zbWl0dGVkIHVuZGVyIGEgcGFydGljdWxhcgogKiAgIGNvbm5lY3Rpb24gc3RhdGUgTVVTVCB1c2Ugc2VxdWVuY2UgbnVtYmVyIDAuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBuZXcgaW5pdGlhbGl6ZWQgVExTIGNvbm5lY3Rpb24gc3RhdGUuCiAqLwp0bHMuY3JlYXRlQ29ubmVjdGlvblN0YXRlID0gZnVuY3Rpb24oYykgewogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CgogIHZhciBjcmVhdGVNb2RlID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgbW9kZSA9IHsKICAgICAgLy8gdHdvIDMyLWJpdCBudW1iZXJzLCBmaXJzdCBpcyBtb3N0IHNpZ25pZmljYW50CiAgICAgIHNlcXVlbmNlTnVtYmVyOiBbMCwgMF0sCiAgICAgIG1hY0tleTogbnVsbCwKICAgICAgbWFjTGVuZ3RoOiAwLAogICAgICBtYWNGdW5jdGlvbjogbnVsbCwKICAgICAgY2lwaGVyU3RhdGU6IG51bGwsCiAgICAgIGNpcGhlckZ1bmN0aW9uOiBmdW5jdGlvbihyZWNvcmQpIHtyZXR1cm4gdHJ1ZTt9LAogICAgICBjb21wcmVzc2lvblN0YXRlOiBudWxsLAogICAgICBjb21wcmVzc0Z1bmN0aW9uOiBmdW5jdGlvbihyZWNvcmQpIHtyZXR1cm4gdHJ1ZTt9LAogICAgICB1cGRhdGVTZXF1ZW5jZU51bWJlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgaWYobW9kZS5zZXF1ZW5jZU51bWJlclsxXSA9PT0gMHhGRkZGRkZGRikgewogICAgICAgICAgbW9kZS5zZXF1ZW5jZU51bWJlclsxXSA9IDA7CiAgICAgICAgICArK21vZGUuc2VxdWVuY2VOdW1iZXJbMF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICsrbW9kZS5zZXF1ZW5jZU51bWJlclsxXTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gbW9kZTsKICB9OwogIHZhciBzdGF0ZSA9IHsKICAgIHJlYWQ6IGNyZWF0ZU1vZGUoKSwKICAgIHdyaXRlOiBjcmVhdGVNb2RlKCkKICB9OwoKICAvLyB1cGRhdGUgZnVuY3Rpb24gaW4gcmVhZCBtb2RlIHdpbGwgZGVjcnlwdCB0aGVuIGRlY29tcHJlc3MgYSByZWNvcmQKICBzdGF0ZS5yZWFkLnVwZGF0ZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogICAgaWYoIXN0YXRlLnJlYWQuY2lwaGVyRnVuY3Rpb24ocmVjb3JkLCBzdGF0ZS5yZWFkKSkgewogICAgICBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGRlY3J5cHQgcmVjb3JkIG9yIGJhZCBNQUMuJywKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgLy8gZG9lc24ndCBtYXR0ZXIgaWYgZGVjcnlwdGlvbiBmYWlsZWQgb3IgTUFDIHdhcwogICAgICAgICAgLy8gaW52YWxpZCwgcmV0dXJuIHRoZSBzYW1lIGVycm9yIHNvIGFzIG5vdCB0byByZXZlYWwKICAgICAgICAgIC8vIHdoaWNoIG9uZSBvY2N1cnJlZAogICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfcmVjb3JkX21hYwogICAgICAgIH0KICAgICAgfSk7CiAgICB9IGVsc2UgaWYoIXN0YXRlLnJlYWQuY29tcHJlc3NGdW5jdGlvbihjLCByZWNvcmQsIHN0YXRlLnJlYWQpKSB7CiAgICAgIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZGVjb21wcmVzcyByZWNvcmQuJywKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvbXByZXNzaW9uX2ZhaWx1cmUKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgcmV0dXJuICFjLmZhaWw7CiAgfTsKCiAgLy8gdXBkYXRlIGZ1bmN0aW9uIGluIHdyaXRlIG1vZGUgd2lsbCBjb21wcmVzcyB0aGVuIGVuY3J5cHQgYSByZWNvcmQKICBzdGF0ZS53cml0ZS51cGRhdGUgPSBmdW5jdGlvbihjLCByZWNvcmQpIHsKICAgIGlmKCFzdGF0ZS53cml0ZS5jb21wcmVzc0Z1bmN0aW9uKGMsIHJlY29yZCwgc3RhdGUud3JpdGUpKSB7CiAgICAgIC8vIGVycm9yLCBidXQgZG8gbm90IHNlbmQgYWxlcnQgc2luY2UgaXQgd291bGQgcmVxdWlyZQogICAgICAvLyBjb21wcmVzc2lvbiBhcyB3ZWxsCiAgICAgIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgY29tcHJlc3MgcmVjb3JkLicsCiAgICAgICAgc2VuZDogZmFsc2UsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0gZWxzZSBpZighc3RhdGUud3JpdGUuY2lwaGVyRnVuY3Rpb24ocmVjb3JkLCBzdGF0ZS53cml0ZSkpIHsKICAgICAgLy8gZXJyb3IsIGJ1dCBkbyBub3Qgc2VuZCBhbGVydCBzaW5jZSBpdCB3b3VsZCByZXF1aXJlCiAgICAgIC8vIGVuY3J5cHRpb24gYXMgd2VsbAogICAgICBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGVuY3J5cHQgcmVjb3JkLicsCiAgICAgICAgc2VuZDogZmFsc2UsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICAgIHJldHVybiAhYy5mYWlsOwogIH07CgogIC8vIGhhbmRsZSBzZWN1cml0eSBwYXJhbWV0ZXJzCiAgaWYoYy5zZXNzaW9uKSB7CiAgICB2YXIgc3AgPSBjLnNlc3Npb24uc3A7CiAgICBjLnNlc3Npb24uY2lwaGVyU3VpdGUuaW5pdFNlY3VyaXR5UGFyYW1ldGVycyhzcCk7CgogICAgLy8gZ2VuZXJhdGUga2V5cwogICAgc3Aua2V5cyA9IHRscy5nZW5lcmF0ZUtleXMoYywgc3ApOwogICAgc3RhdGUucmVhZC5tYWNLZXkgPSBjbGllbnQgPwogICAgICBzcC5rZXlzLnNlcnZlcl93cml0ZV9NQUNfa2V5IDogc3Aua2V5cy5jbGllbnRfd3JpdGVfTUFDX2tleTsKICAgIHN0YXRlLndyaXRlLm1hY0tleSA9IGNsaWVudCA/CiAgICAgIHNwLmtleXMuY2xpZW50X3dyaXRlX01BQ19rZXkgOiBzcC5rZXlzLnNlcnZlcl93cml0ZV9NQUNfa2V5OwoKICAgIC8vIGNpcGhlciBzdWl0ZSBzZXR1cAogICAgYy5zZXNzaW9uLmNpcGhlclN1aXRlLmluaXRDb25uZWN0aW9uU3RhdGUoc3RhdGUsIGMsIHNwKTsKCiAgICAvLyBjb21wcmVzc2lvbiBzZXR1cAogICAgc3dpdGNoKHNwLmNvbXByZXNzaW9uX2FsZ29yaXRobSkgewogICAgY2FzZSB0bHMuQ29tcHJlc3Npb25NZXRob2Qubm9uZToKICAgICAgYnJlYWs7CiAgICBjYXNlIHRscy5Db21wcmVzc2lvbk1ldGhvZC5kZWZsYXRlOgogICAgICBzdGF0ZS5yZWFkLmNvbXByZXNzRnVuY3Rpb24gPSBpbmZsYXRlOwogICAgICBzdGF0ZS53cml0ZS5jb21wcmVzc0Z1bmN0aW9uID0gZGVmbGF0ZTsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbXByZXNzaW9uIGFsZ29yaXRobS4nKTsKICAgIH0KICB9CgogIHJldHVybiBzdGF0ZTsKfTsKCi8qKgogKiBDcmVhdGVzIGEgUmFuZG9tIHN0cnVjdHVyZS4KICoKICogc3RydWN0IHsKICogICB1aW50MzIgZ210X3VuaXhfdGltZTsKICogICBvcGFxdWUgcmFuZG9tX2J5dGVzWzI4XTsKICogfSBSYW5kb207CiAqCiAqIGdtdF91bml4X3RpbWU6CiAqICAgVGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSBpbiBzdGFuZGFyZCBVTklYIDMyLWJpdCBmb3JtYXQgKHNlY29uZHMgc2luY2UKICogICB0aGUgbWlkbmlnaHQgc3RhcnRpbmcgSmFuIDEsIDE5NzAsIFVUQywgaWdub3JpbmcgbGVhcCBzZWNvbmRzKSBhY2NvcmRpbmcKICogICB0byB0aGUgc2VuZGVyJ3MgaW50ZXJuYWwgY2xvY2suIENsb2NrcyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIHNldAogKiAgIGNvcnJlY3RseSBieSB0aGUgYmFzaWMgVExTIHByb3RvY29sOyBoaWdoZXItbGV2ZWwgb3IgYXBwbGljYXRpb24KICogICBwcm90b2NvbHMgbWF5IGRlZmluZSBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cy4gTm90ZSB0aGF0LCBmb3IgaGlzdG9yaWNhbAogKiAgIHJlYXNvbnMsIHRoZSBkYXRhIGVsZW1lbnQgaXMgbmFtZWQgdXNpbmcgR01ULCB0aGUgcHJlZGVjZXNzb3Igb2YgdGhlCiAqICAgY3VycmVudCB3b3JsZHdpZGUgdGltZSBiYXNlLCBVVEMuCiAqIHJhbmRvbV9ieXRlczoKICogICAyOCBieXRlcyBnZW5lcmF0ZWQgYnkgYSBzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCiAqCiAqIEByZXR1cm4gdGhlIFJhbmRvbSBzdHJ1Y3R1cmUgYXMgYSBieXRlIGFycmF5LgogKi8KdGxzLmNyZWF0ZVJhbmRvbSA9IGZ1bmN0aW9uKCkgewogIC8vIGdldCBVVEMgbWlsbGlzZWNvbmRzCiAgdmFyIGQgPSBuZXcgRGF0ZSgpOwogIHZhciB1dGMgPSArZCArIGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwOwogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBydmFsLnB1dEludDMyKHV0Yyk7CiAgcnZhbC5wdXRCeXRlcyhmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMoMjgpKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgVExTIHJlY29yZCB3aXRoIHRoZSBnaXZlbiB0eXBlIGFuZCBkYXRhLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIG9wdGlvbnM6CiAqICAgdHlwZTogdGhlIHJlY29yZCB0eXBlLgogKiAgIGRhdGE6IHRoZSBwbGFpbiB0ZXh0IGRhdGEgaW4gYSBieXRlIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGUgY3JlYXRlZCByZWNvcmQuCiAqLwp0bHMuY3JlYXRlUmVjb3JkID0gZnVuY3Rpb24oYywgb3B0aW9ucykgewogIGlmKCFvcHRpb25zLmRhdGEpIHsKICAgIHJldHVybiBudWxsOwogIH0KICB2YXIgcmVjb3JkID0gewogICAgdHlwZTogb3B0aW9ucy50eXBlLAogICAgdmVyc2lvbjogewogICAgICBtYWpvcjogYy52ZXJzaW9uLm1ham9yLAogICAgICBtaW5vcjogYy52ZXJzaW9uLm1pbm9yCiAgICB9LAogICAgbGVuZ3RoOiBvcHRpb25zLmRhdGEubGVuZ3RoKCksCiAgICBmcmFnbWVudDogb3B0aW9ucy5kYXRhCiAgfTsKICByZXR1cm4gcmVjb3JkOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBUTFMgYWxlcnQgcmVjb3JkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIGFsZXJ0OgogKiAgIGxldmVsOiB0aGUgVExTIGFsZXJ0IGxldmVsLgogKiAgIGRlc2NyaXB0aW9uOiB0aGUgVExTIGFsZXJ0IGRlc2NyaXB0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBjcmVhdGVkIGFsZXJ0IHJlY29yZC4KICovCnRscy5jcmVhdGVBbGVydCA9IGZ1bmN0aW9uKGMsIGFsZXJ0KSB7CiAgdmFyIGIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGIucHV0Qnl0ZShhbGVydC5sZXZlbCk7CiAgYi5wdXRCeXRlKGFsZXJ0LmRlc2NyaXB0aW9uKTsKICByZXR1cm4gdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuYWxlcnQsCiAgICBkYXRhOiBiCiAgfSk7Cn07CgovKiBUaGUgc3RydWN0dXJlIG9mIGEgVExTIGhhbmRzaGFrZSBtZXNzYWdlLgogKgogKiBzdHJ1Y3QgewogKiAgICBIYW5kc2hha2VUeXBlIG1zZ190eXBlOyAgICAvLyBoYW5kc2hha2UgdHlwZQogKiAgICB1aW50MjQgbGVuZ3RoOyAgICAgICAgICAgICAvLyBieXRlcyBpbiBtZXNzYWdlCiAqICAgIHNlbGVjdChIYW5kc2hha2VUeXBlKSB7CiAqICAgICAgIGNhc2UgaGVsbG9fcmVxdWVzdDogICAgICAgSGVsbG9SZXF1ZXN0OwogKiAgICAgICBjYXNlIGNsaWVudF9oZWxsbzogICAgICAgIENsaWVudEhlbGxvOwogKiAgICAgICBjYXNlIHNlcnZlcl9oZWxsbzogICAgICAgIFNlcnZlckhlbGxvOwogKiAgICAgICBjYXNlIGNlcnRpZmljYXRlOiAgICAgICAgIENlcnRpZmljYXRlOwogKiAgICAgICBjYXNlIHNlcnZlcl9rZXlfZXhjaGFuZ2U6IFNlcnZlcktleUV4Y2hhbmdlOwogKiAgICAgICBjYXNlIGNlcnRpZmljYXRlX3JlcXVlc3Q6IENlcnRpZmljYXRlUmVxdWVzdDsKICogICAgICAgY2FzZSBzZXJ2ZXJfaGVsbG9fZG9uZTogICBTZXJ2ZXJIZWxsb0RvbmU7CiAqICAgICAgIGNhc2UgY2VydGlmaWNhdGVfdmVyaWZ5OiAgQ2VydGlmaWNhdGVWZXJpZnk7CiAqICAgICAgIGNhc2UgY2xpZW50X2tleV9leGNoYW5nZTogQ2xpZW50S2V5RXhjaGFuZ2U7CiAqICAgICAgIGNhc2UgZmluaXNoZWQ6ICAgICAgICAgICAgRmluaXNoZWQ7CiAqICAgIH0gYm9keTsKICogfSBIYW5kc2hha2U7CiAqLwoKLyoqCiAqIENyZWF0ZXMgYSBDbGllbnRIZWxsbyBtZXNzYWdlLgogKgogKiBvcGFxdWUgU2Vzc2lvbklEPDAuLjMyPjsKICogZW51bSB7IG51bGwoMCksIGRlZmxhdGUoMSksICgyNTUpIH0gQ29tcHJlc3Npb25NZXRob2Q7CiAqIHVpbnQ4IENpcGhlclN1aXRlWzJdOwogKgogKiBzdHJ1Y3QgewogKiAgIFByb3RvY29sVmVyc2lvbiBjbGllbnRfdmVyc2lvbjsKICogICBSYW5kb20gcmFuZG9tOwogKiAgIFNlc3Npb25JRCBzZXNzaW9uX2lkOwogKiAgIENpcGhlclN1aXRlIGNpcGhlcl9zdWl0ZXM8Mi4uMl4xNi0yPjsKICogICBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbl9tZXRob2RzPDEuLjJeOC0xPjsKICogICBzZWxlY3QoZXh0ZW5zaW9uc19wcmVzZW50KSB7CiAqICAgICBjYXNlIGZhbHNlOgogKiAgICAgICBzdHJ1Y3Qge307CiAqICAgICBjYXNlIHRydWU6CiAqICAgICAgIEV4dGVuc2lvbiBleHRlbnNpb25zPDAuLjJeMTYtMT47CiAqICAgfTsKICogfSBDbGllbnRIZWxsbzsKICoKICogVGhlIGV4dGVuc2lvbiBmb3JtYXQgZm9yIGV4dGVuZGVkIGNsaWVudCBoZWxsb3MgYW5kIHNlcnZlciBoZWxsb3MgaXM6CiAqCiAqIHN0cnVjdCB7CiAqICAgRXh0ZW5zaW9uVHlwZSBleHRlbnNpb25fdHlwZTsKICogICBvcGFxdWUgZXh0ZW5zaW9uX2RhdGE8MC4uMl4xNi0xPjsKICogfSBFeHRlbnNpb247CiAqCiAqIEhlcmU6CiAqCiAqIC0gImV4dGVuc2lvbl90eXBlIiBpZGVudGlmaWVzIHRoZSBwYXJ0aWN1bGFyIGV4dGVuc2lvbiB0eXBlLgogKiAtICJleHRlbnNpb25fZGF0YSIgY29udGFpbnMgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIHBhcnRpY3VsYXIKICogZXh0ZW5zaW9uIHR5cGUuCiAqCiAqIFRoZSBleHRlbnNpb24gdHlwZXMgZGVmaW5lZCBpbiB0aGlzIGRvY3VtZW50IGFyZToKICoKICogZW51bSB7CiAqICAgc2VydmVyX25hbWUoMCksIG1heF9mcmFnbWVudF9sZW5ndGgoMSksCiAqICAgY2xpZW50X2NlcnRpZmljYXRlX3VybCgyKSwgdHJ1c3RlZF9jYV9rZXlzKDMpLAogKiAgIHRydW5jYXRlZF9obWFjKDQpLCBzdGF0dXNfcmVxdWVzdCg1KSwgKDY1NTM1KQogKiB9IEV4dGVuc2lvblR5cGU7CiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBDbGllbnRIZWxsbyBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVDbGllbnRIZWxsbyA9IGZ1bmN0aW9uKGMpIHsKICAvLyBzYXZlIGhlbGxvIHZlcnNpb24KICBjLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uID0gewogICAgbWFqb3I6IGMudmVyc2lvbi5tYWpvciwKICAgIG1pbm9yOiBjLnZlcnNpb24ubWlub3IKICB9OwoKICAvLyBjcmVhdGUgc3VwcG9ydGVkIGNpcGhlciBzdWl0ZXMKICB2YXIgY2lwaGVyU3VpdGVzID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgYy5jaXBoZXJTdWl0ZXMubGVuZ3RoOyArK2kpIHsKICAgIHZhciBjcyA9IGMuY2lwaGVyU3VpdGVzW2ldOwogICAgY2lwaGVyU3VpdGVzLnB1dEJ5dGUoY3MuaWRbMF0pOwogICAgY2lwaGVyU3VpdGVzLnB1dEJ5dGUoY3MuaWRbMV0pOwogIH0KICB2YXIgY1N1aXRlcyA9IGNpcGhlclN1aXRlcy5sZW5ndGgoKTsKCiAgLy8gY3JlYXRlIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2RzLCBudWxsIGFsd2F5cyBzdXBwb3J0ZWQsIGJ1dAogIC8vIGFsc28gc3VwcG9ydCBkZWZsYXRlIGlmIGNvbm5lY3Rpb24gaGFzIGluZmxhdGUgYW5kIGRlZmxhdGUgbWV0aG9kcwogIHZhciBjb21wcmVzc2lvbk1ldGhvZHMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGNvbXByZXNzaW9uTWV0aG9kcy5wdXRCeXRlKHRscy5Db21wcmVzc2lvbk1ldGhvZC5ub25lKTsKICAvLyBGSVhNRTogZGVmbGF0ZSBzdXBwb3J0IGRpc2FibGVkIHVudGlsIGlzc3VlcyB3aXRoIHJhdyBkZWZsYXRlIGRhdGEKICAvLyB3aXRob3V0IHpsaWIgaGVhZGVycyBhcmUgcmVzb2x2ZWQKICAvKgogIGlmKGMuaW5mbGF0ZSAhPT0gbnVsbCAmJiBjLmRlZmxhdGUgIT09IG51bGwpIHsKICAgIGNvbXByZXNzaW9uTWV0aG9kcy5wdXRCeXRlKHRscy5Db21wcmVzc2lvbk1ldGhvZC5kZWZsYXRlKTsKICB9CiAgKi8KICB2YXIgY01ldGhvZHMgPSBjb21wcmVzc2lvbk1ldGhvZHMubGVuZ3RoKCk7CgogIC8vIGNyZWF0ZSBUTFMgU05JIChzZXJ2ZXIgbmFtZSBpbmRpY2F0aW9uKSBleHRlbnNpb24gaWYgdmlydHVhbCBob3N0CiAgLy8gaGFzIGJlZW4gc3BlY2lmaWVkLCBzZWUgUkZDIDM1NDYKICB2YXIgZXh0ZW5zaW9ucyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgaWYoYy52aXJ0dWFsSG9zdCkgewogICAgLy8gY3JlYXRlIGV4dGVuc2lvbiBzdHJ1Y3QKICAgIHZhciBleHQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgZXh0LnB1dEJ5dGUoMHgwMCk7IC8vIHR5cGUgc2VydmVyX25hbWUgKEV4dGVuc2lvblR5cGUgaXMgMiBieXRlcykKICAgIGV4dC5wdXRCeXRlKDB4MDApOwoKICAgIC8qIEluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIHNlcnZlciBuYW1lLCBjbGllbnRzIE1BWSBpbmNsdWRlIGFuCiAgICAgKiBleHRlbnNpb24gb2YgdHlwZSAic2VydmVyX25hbWUiIGluIHRoZSAoZXh0ZW5kZWQpIGNsaWVudCBoZWxsby4KICAgICAqIFRoZSAiZXh0ZW5zaW9uX2RhdGEiIGZpZWxkIG9mIHRoaXMgZXh0ZW5zaW9uIFNIQUxMIGNvbnRhaW4KICAgICAqICJTZXJ2ZXJOYW1lTGlzdCIgd2hlcmU6CiAgICAgKgogICAgICogc3RydWN0IHsKICAgICAqICAgTmFtZVR5cGUgbmFtZV90eXBlOwogICAgICogICBzZWxlY3QobmFtZV90eXBlKSB7CiAgICAgKiAgICAgY2FzZSBob3N0X25hbWU6IEhvc3ROYW1lOwogICAgICogICB9IG5hbWU7CiAgICAgKiB9IFNlcnZlck5hbWU7CiAgICAgKgogICAgICogZW51bSB7CiAgICAgKiAgIGhvc3RfbmFtZSgwKSwgKDI1NSkKICAgICAqIH0gTmFtZVR5cGU7CiAgICAgKgogICAgICogb3BhcXVlIEhvc3ROYW1lPDEuLjJeMTYtMT47CiAgICAgKgogICAgICogc3RydWN0IHsKICAgICAqICAgU2VydmVyTmFtZSBzZXJ2ZXJfbmFtZV9saXN0PDEuLjJeMTYtMT4KICAgICAqIH0gU2VydmVyTmFtZUxpc3Q7CiAgICAgKi8KICAgIHZhciBzZXJ2ZXJOYW1lID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHNlcnZlck5hbWUucHV0Qnl0ZSgweDAwKTsgLy8gdHlwZSBob3N0X25hbWUKICAgIHdyaXRlVmVjdG9yKHNlcnZlck5hbWUsIDIsIGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGMudmlydHVhbEhvc3QpKTsKCiAgICAvLyBTZXJ2ZXJOYW1lTGlzdCBpcyBpbiBleHRlbnNpb25fZGF0YQogICAgdmFyIHNuTGlzdCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICB3cml0ZVZlY3Rvcihzbkxpc3QsIDIsIHNlcnZlck5hbWUpOwogICAgd3JpdGVWZWN0b3IoZXh0LCAyLCBzbkxpc3QpOwogICAgZXh0ZW5zaW9ucy5wdXRCdWZmZXIoZXh0KTsKICB9CiAgdmFyIGV4dExlbmd0aCA9IGV4dGVuc2lvbnMubGVuZ3RoKCk7CiAgaWYoZXh0TGVuZ3RoID4gMCkgewogICAgLy8gYWRkIGV4dGVuc2lvbiB2ZWN0b3IgbGVuZ3RoCiAgICBleHRMZW5ndGggKz0gMjsKICB9CgogIC8vIGRldGVybWluZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlCiAgLy8gY2lwaGVyIHN1aXRlcyBhbmQgY29tcHJlc3Npb24gbWV0aG9kcyBzaXplIHdpbGwgbmVlZCB0byBiZQogIC8vIHVwZGF0ZWQgaWYgbW9yZSBnZXQgYWRkZWQgdG8gdGhlIGxpc3QKICB2YXIgc2Vzc2lvbklkID0gYy5zZXNzaW9uLmlkOwogIHZhciBsZW5ndGggPQogICAgc2Vzc2lvbklkLmxlbmd0aCArIDEgKyAvLyBzZXNzaW9uIElEIHZlY3RvcgogICAgMiArICAgICAgICAgICAgICAgICAgICAvLyB2ZXJzaW9uIChtYWpvciArIG1pbm9yKQogICAgNCArIDI4ICsgICAgICAgICAgICAgICAvLyByYW5kb20gdGltZSBhbmQgcmFuZG9tIGJ5dGVzCiAgICAyICsgY1N1aXRlcyArICAgICAgICAgIC8vIGNpcGhlciBzdWl0ZXMgdmVjdG9yCiAgICAxICsgY01ldGhvZHMgKyAgICAgICAgIC8vIGNvbXByZXNzaW9uIG1ldGhvZHMgdmVjdG9yCiAgICBleHRMZW5ndGg7ICAgICAgICAgICAgIC8vIGV4dGVuc2lvbnMgdmVjdG9yCgogIC8vIGJ1aWxkIHJlY29yZCBmcmFnbWVudAogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBydmFsLnB1dEJ5dGUodGxzLkhhbmRzaGFrZVR5cGUuY2xpZW50X2hlbGxvKTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZHNoYWtlIGxlbmd0aAogIHJ2YWwucHV0Qnl0ZShjLnZlcnNpb24ubWFqb3IpOyAgICAgICAgICAgICAvLyBtYWpvciB2ZXJzaW9uCiAgcnZhbC5wdXRCeXRlKGMudmVyc2lvbi5taW5vcik7ICAgICAgICAgICAgIC8vIG1pbm9yIHZlcnNpb24KICBydmFsLnB1dEJ5dGVzKGMuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tKTsgLy8gcmFuZG9tIHRpbWUgKyBieXRlcwogIHdyaXRlVmVjdG9yKHJ2YWwsIDEsIGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKHNlc3Npb25JZCkpOwogIHdyaXRlVmVjdG9yKHJ2YWwsIDIsIGNpcGhlclN1aXRlcyk7CiAgd3JpdGVWZWN0b3IocnZhbCwgMSwgY29tcHJlc3Npb25NZXRob2RzKTsKICBpZihleHRMZW5ndGggPiAwKSB7CiAgICB3cml0ZVZlY3RvcihydmFsLCAyLCBleHRlbnNpb25zKTsKICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ3JlYXRlcyBhIFNlcnZlckhlbGxvIG1lc3NhZ2UuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBTZXJ2ZXJIZWxsbyBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVTZXJ2ZXJIZWxsbyA9IGZ1bmN0aW9uKGMpIHsKICAvLyBkZXRlcm1pbmUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZQogIHZhciBzZXNzaW9uSWQgPSBjLnNlc3Npb24uaWQ7CiAgdmFyIGxlbmd0aCA9CiAgICBzZXNzaW9uSWQubGVuZ3RoICsgMSArIC8vIHNlc3Npb24gSUQgdmVjdG9yCiAgICAyICsgICAgICAgICAgICAgICAgICAgIC8vIHZlcnNpb24gKG1ham9yICsgbWlub3IpCiAgICA0ICsgMjggKyAgICAgICAgICAgICAgIC8vIHJhbmRvbSB0aW1lIGFuZCByYW5kb20gYnl0ZXMKICAgIDIgKyAgICAgICAgICAgICAgICAgICAgLy8gY2hvc2VuIGNpcGhlciBzdWl0ZQogICAgMTsgICAgICAgICAgICAgICAgICAgICAvLyBjaG9zZW4gY29tcHJlc3Npb24gbWV0aG9kCgogIC8vIGJ1aWxkIHJlY29yZCBmcmFnbWVudAogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBydmFsLnB1dEJ5dGUodGxzLkhhbmRzaGFrZVR5cGUuc2VydmVyX2hlbGxvKTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZHNoYWtlIGxlbmd0aAogIHJ2YWwucHV0Qnl0ZShjLnZlcnNpb24ubWFqb3IpOyAgICAgICAgICAgICAvLyBtYWpvciB2ZXJzaW9uCiAgcnZhbC5wdXRCeXRlKGMudmVyc2lvbi5taW5vcik7ICAgICAgICAgICAgIC8vIG1pbm9yIHZlcnNpb24KICBydmFsLnB1dEJ5dGVzKGMuc2Vzc2lvbi5zcC5zZXJ2ZXJfcmFuZG9tKTsgLy8gcmFuZG9tIHRpbWUgKyBieXRlcwogIHdyaXRlVmVjdG9yKHJ2YWwsIDEsIGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKHNlc3Npb25JZCkpOwogIHJ2YWwucHV0Qnl0ZShjLnNlc3Npb24uY2lwaGVyU3VpdGUuaWRbMF0pOwogIHJ2YWwucHV0Qnl0ZShjLnNlc3Npb24uY2lwaGVyU3VpdGUuaWRbMV0pOwogIHJ2YWwucHV0Qnl0ZShjLnNlc3Npb24uY29tcHJlc3Npb25NZXRob2QpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBDZXJ0aWZpY2F0ZSBtZXNzYWdlLgogKgogKiBXaGVuIHRoaXMgbWVzc2FnZSB3aWxsIGJlIHNlbnQ6CiAqICAgVGhpcyBpcyB0aGUgZmlyc3QgbWVzc2FnZSB0aGUgY2xpZW50IGNhbiBzZW5kIGFmdGVyIHJlY2VpdmluZyBhIHNlcnZlcgogKiAgIGhlbGxvIGRvbmUgbWVzc2FnZSBhbmQgdGhlIGZpcnN0IG1lc3NhZ2UgdGhlIHNlcnZlciBjYW4gc2VuZCBhZnRlcgogKiAgIHNlbmRpbmcgYSBTZXJ2ZXJIZWxsby4gVGhpcyBjbGllbnQgbWVzc2FnZSBpcyBvbmx5IHNlbnQgaWYgdGhlIHNlcnZlcgogKiAgIHJlcXVlc3RzIGEgY2VydGlmaWNhdGUuIElmIG5vIHN1aXRhYmxlIGNlcnRpZmljYXRlIGlzIGF2YWlsYWJsZSwgdGhlCiAqICAgY2xpZW50IHNob3VsZCBzZW5kIGEgY2VydGlmaWNhdGUgbWVzc2FnZSBjb250YWluaW5nIG5vIGNlcnRpZmljYXRlcy4gSWYKICogICBjbGllbnQgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQgYnkgdGhlIHNlcnZlciBmb3IgdGhlIGhhbmRzaGFrZSB0bwogKiAgIGNvbnRpbnVlLCBpdCBtYXkgcmVzcG9uZCB3aXRoIGEgZmF0YWwgaGFuZHNoYWtlIGZhaWx1cmUgYWxlcnQuCiAqCiAqIG9wYXF1ZSBBU04uMUNlcnQ8MS4uMl4yNC0xPjsKICoKICogc3RydWN0IHsKICogICBBU04uMUNlcnQgY2VydGlmaWNhdGVfbGlzdDwwLi4yXjI0LTE+OwogKiB9IENlcnRpZmljYXRlOwogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgQ2VydGlmaWNhdGUgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlQ2VydGlmaWNhdGUgPSBmdW5jdGlvbihjKSB7CiAgLy8gVE9ETzogY2hlY2sgY2VydGlmaWNhdGUgcmVxdWVzdCB0byBlbnN1cmUgdHlwZXMgYXJlIHN1cHBvcnRlZAoKICAvLyBnZXQgYSBjZXJ0aWZpY2F0ZSAoYSBjZXJ0aWZpY2F0ZSBhcyBhIFBFTSBzdHJpbmcpCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICB2YXIgY2VydCA9IG51bGw7CiAgaWYoYy5nZXRDZXJ0aWZpY2F0ZSkgewogICAgdmFyIGhpbnQ7CiAgICBpZihjbGllbnQpIHsKICAgICAgaGludCA9IGMuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3Q7CiAgICB9IGVsc2UgewogICAgICBoaW50ID0gYy5zZXNzaW9uLmV4dGVuc2lvbnMuc2VydmVyX25hbWUuc2VydmVyTmFtZUxpc3Q7CiAgICB9CiAgICBjZXJ0ID0gYy5nZXRDZXJ0aWZpY2F0ZShjLCBoaW50KTsKICB9CgogIC8vIGJ1ZmZlciB0byBob2xkIGNlcnRpZmljYXRlIGxpc3QKICB2YXIgY2VydExpc3QgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGlmKGNlcnQgIT09IG51bGwpIHsKICAgIHRyeSB7CiAgICAgIC8vIG5vcm1hbGl6ZSBjZXJ0IHRvIGEgY2hhaW4gb2YgY2VydGlmaWNhdGVzCiAgICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkoY2VydCkpIHsKICAgICAgICBjZXJ0ID0gW2NlcnRdOwogICAgICB9CiAgICAgIHZhciBhc24xID0gbnVsbDsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGNlcnQubGVuZ3RoOyArK2kpIHsKICAgICAgICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShjZXJ0W2ldKVswXTsKICAgICAgICBpZihtc2cudHlwZSAhPT0gJ0NFUlRJRklDQVRFJyAmJgogICAgICAgICAgbXNnLnR5cGUgIT09ICdYNTA5IENFUlRJRklDQVRFJyAmJgogICAgICAgICAgbXNnLnR5cGUgIT09ICdUUlVTVEVEIENFUlRJRklDQVRFJykgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBjZXJ0aWZpY2F0ZSBmcm9tIFBFTTsgUEVNICcgKwogICAgICAgICAgICAnaGVhZGVyIHR5cGUgaXMgbm90ICJDRVJUSUZJQ0FURSIsICJYNTA5IENFUlRJRklDQVRFIiwgb3IgJyArCiAgICAgICAgICAgICciVFJVU1RFRCBDRVJUSUZJQ0FURSIuJyk7CiAgICAgICAgICBlcnJvci5oZWFkZXJUeXBlID0gbXNnLnR5cGU7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CiAgICAgICAgaWYobXNnLnByb2NUeXBlICYmIG1zZy5wcm9jVHlwZS50eXBlID09PSAnRU5DUllQVEVEJykgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBjZXJ0aWZpY2F0ZSBmcm9tIFBFTTsgUEVNIGlzIGVuY3J5cHRlZC4nKTsKICAgICAgICB9CgogICAgICAgIHZhciBkZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuYm9keSk7CiAgICAgICAgaWYoYXNuMSA9PT0gbnVsbCkgewogICAgICAgICAgYXNuMSA9IGZvcmdlLmFzbjEuZnJvbURlcihkZXIuYnl0ZXMoKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgLy8gY2VydGlmaWNhdGUgZW50cnkgaXMgaXRzZWxmIGEgdmVjdG9yIHdpdGggMyBsZW5ndGggYnl0ZXMKICAgICAgICB2YXIgY2VydEJ1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICAgICAgd3JpdGVWZWN0b3IoY2VydEJ1ZmZlciwgMywgZGVyKTsKCiAgICAgICAgLy8gYWRkIGNlcnQgdmVjdG9yIHRvIGNlcnQgbGlzdCB2ZWN0b3IKICAgICAgICBjZXJ0TGlzdC5wdXRCdWZmZXIoY2VydEJ1ZmZlcik7CiAgICAgIH0KCiAgICAgIC8vIHNhdmUgY2VydGlmaWNhdGUKICAgICAgY2VydCA9IGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUZyb21Bc24xKGFzbjEpOwogICAgICBpZihjbGllbnQpIHsKICAgICAgICBjLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUgPSBjZXJ0OwogICAgICB9IGVsc2UgewogICAgICAgIGMuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IGNlcnQ7CiAgICAgIH0KICAgIH0gY2F0Y2goZXgpIHsKICAgICAgcmV0dXJuIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3Qgc2VuZCBjZXJ0aWZpY2F0ZSBsaXN0LicsCiAgICAgICAgY2F1c2U6IGV4LAogICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZQogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfQoKICAvLyBkZXRlcm1pbmUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZQogIHZhciBsZW5ndGggPSAzICsgY2VydExpc3QubGVuZ3RoKCk7IC8vIGNlcnQgbGlzdCB2ZWN0b3IKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZSk7CiAgcnZhbC5wdXRJbnQyNChsZW5ndGgpOwogIHdyaXRlVmVjdG9yKHJ2YWwsIDMsIGNlcnRMaXN0KTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgQ2xpZW50S2V5RXhjaGFuZ2UgbWVzc2FnZS4KICoKICogV2hlbiB0aGlzIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFRoaXMgbWVzc2FnZSBpcyBhbHdheXMgc2VudCBieSB0aGUgY2xpZW50LiBJdCB3aWxsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUKICogICBjbGllbnQgY2VydGlmaWNhdGUgbWVzc2FnZSwgaWYgaXQgaXMgc2VudC4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgdGhlIGZpcnN0CiAqICAgbWVzc2FnZSBzZW50IGJ5IHRoZSBjbGllbnQgYWZ0ZXIgaXQgcmVjZWl2ZXMgdGhlIHNlcnZlciBoZWxsbyBkb25lCiAqICAgbWVzc2FnZS4KICoKICogTWVhbmluZyBvZiB0aGlzIG1lc3NhZ2U6CiAqICAgV2l0aCB0aGlzIG1lc3NhZ2UsIHRoZSBwcmVtYXN0ZXIgc2VjcmV0IGlzIHNldCwgZWl0aGVyIHRob3VnaCBkaXJlY3QKICogICB0cmFuc21pc3Npb24gb2YgdGhlIFJTQS1lbmNyeXB0ZWQgc2VjcmV0LCBvciBieSB0aGUgdHJhbnNtaXNzaW9uIG9mCiAqICAgRGlmZmllLUhlbGxtYW4gcGFyYW1ldGVycyB3aGljaCB3aWxsIGFsbG93IGVhY2ggc2lkZSB0byBhZ3JlZSB1cG9uIHRoZQogKiAgIHNhbWUgcHJlbWFzdGVyIHNlY3JldC4gV2hlbiB0aGUga2V5IGV4Y2hhbmdlIG1ldGhvZCBpcyBESF9SU0Egb3IgREhfRFNTLAogKiAgIGNsaWVudCBjZXJ0aWZpY2F0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIHRoZSBjbGllbnQgd2FzIGFibGUgdG8KICogICByZXNwb25kIHdpdGggYSBjZXJ0aWZpY2F0ZSB3aGljaCBjb250YWluZWQgYSBEaWZmaWUtSGVsbG1hbiBwdWJsaWMga2V5CiAqICAgd2hvc2UgcGFyYW1ldGVycyAoZ3JvdXAgYW5kIGdlbmVyYXRvcikgbWF0Y2hlZCB0aG9zZSBzcGVjaWZpZWQgYnkgdGhlCiAqICAgc2VydmVyIGluIGl0cyBjZXJ0aWZpY2F0ZSwgdGhpcyBtZXNzYWdlIHdpbGwgbm90IGNvbnRhaW4gYW55IGRhdGEuCiAqCiAqIE1lYW5pbmcgb2YgdGhpcyBtZXNzYWdlOgogKiAgIElmIFJTQSBpcyBiZWluZyB1c2VkIGZvciBrZXkgYWdyZWVtZW50IGFuZCBhdXRoZW50aWNhdGlvbiwgdGhlIGNsaWVudAogKiAgIGdlbmVyYXRlcyBhIDQ4LWJ5dGUgcHJlbWFzdGVyIHNlY3JldCwgZW5jcnlwdHMgaXQgdXNpbmcgdGhlIHB1YmxpYyBrZXkKICogICBmcm9tIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSBvciB0aGUgdGVtcG9yYXJ5IFJTQSBrZXkgcHJvdmlkZWQgaW4gYQogKiAgIHNlcnZlciBrZXkgZXhjaGFuZ2UgbWVzc2FnZSwgYW5kIHNlbmRzIHRoZSByZXN1bHQgaW4gYW4gZW5jcnlwdGVkCiAqICAgcHJlbWFzdGVyIHNlY3JldCBtZXNzYWdlLiBUaGlzIHN0cnVjdHVyZSBpcyBhIHZhcmlhbnQgb2YgdGhlIGNsaWVudAogKiAgIGtleSBleGNoYW5nZSBtZXNzYWdlLCBub3QgYSBtZXNzYWdlIGluIGl0c2VsZi4KICoKICogc3RydWN0IHsKICogICBzZWxlY3QoS2V5RXhjaGFuZ2VBbGdvcml0aG0pIHsKICogICAgIGNhc2UgcnNhOiBFbmNyeXB0ZWRQcmVNYXN0ZXJTZWNyZXQ7CiAqICAgICBjYXNlIGRpZmZpZV9oZWxsbWFuOiBDbGllbnREaWZmaWVIZWxsbWFuUHVibGljOwogKiAgIH0gZXhjaGFuZ2Vfa2V5czsKICogfSBDbGllbnRLZXlFeGNoYW5nZTsKICoKICogc3RydWN0IHsKICogICBQcm90b2NvbFZlcnNpb24gY2xpZW50X3ZlcnNpb247CiAqICAgb3BhcXVlIHJhbmRvbVs0Nl07CiAqIH0gUHJlTWFzdGVyU2VjcmV0OwogKgogKiBzdHJ1Y3QgewogKiAgIHB1YmxpYy1rZXktZW5jcnlwdGVkIFByZU1hc3RlclNlY3JldCBwcmVfbWFzdGVyX3NlY3JldDsKICogfSBFbmNyeXB0ZWRQcmVNYXN0ZXJTZWNyZXQ7CiAqCiAqIEEgcHVibGljLWtleS1lbmNyeXB0ZWQgZWxlbWVudCBpcyBlbmNvZGVkIGFzIGEgdmVjdG9yIDwwLi4yXjE2LTE+LgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgQ2xpZW50S2V5RXhjaGFuZ2UgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlQ2xpZW50S2V5RXhjaGFuZ2UgPSBmdW5jdGlvbihjKSB7CiAgLy8gY3JlYXRlIGJ1ZmZlciB0byBlbmNyeXB0CiAgdmFyIGIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwoKICAvLyBhZGQgaGlnaGVzdCBjbGllbnQtc3VwcG9ydGVkIHByb3RvY29sIHRvIGhlbHAgc2VydmVyIGF2b2lkIHZlcnNpb24KICAvLyByb2xsYmFjayBhdHRhY2tzCiAgYi5wdXRCeXRlKGMuc2Vzc2lvbi5jbGllbnRIZWxsb1ZlcnNpb24ubWFqb3IpOwogIGIucHV0Qnl0ZShjLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uLm1pbm9yKTsKCiAgLy8gZ2VuZXJhdGUgYW5kIGFkZCA0NiByYW5kb20gYnl0ZXMKICBiLnB1dEJ5dGVzKGZvcmdlLnJhbmRvbS5nZXRCeXRlcyg0NikpOwoKICAvLyBzYXZlIHByZS1tYXN0ZXIgc2VjcmV0CiAgdmFyIHNwID0gYy5zZXNzaW9uLnNwOwogIHNwLnByZV9tYXN0ZXJfc2VjcmV0ID0gYi5nZXRCeXRlcygpOwoKICAvLyBSU0EtZW5jcnlwdCB0aGUgcHJlLW1hc3RlciBzZWNyZXQKICB2YXIga2V5ID0gYy5zZXNzaW9uLnNlcnZlckNlcnRpZmljYXRlLnB1YmxpY0tleTsKICBiID0ga2V5LmVuY3J5cHQoc3AucHJlX21hc3Rlcl9zZWNyZXQpOwoKICAvKiBOb3RlOiBUaGUgZW5jcnlwdGVkIHByZS1tYXN0ZXIgc2VjcmV0IHdpbGwgYmUgc3RvcmVkIGluIGEKICAgIHB1YmxpYy1rZXktZW5jcnlwdGVkIG9wYXF1ZSB2ZWN0b3IgdGhhdCBoYXMgdGhlIGxlbmd0aCBwcmVmaXhlZCB1c2luZwogICAgMiBieXRlcywgc28gaW5jbHVkZSB0aG9zZSAyIGJ5dGVzIGluIHRoZSBoYW5kc2hha2UgbWVzc2FnZSBsZW5ndGguIFRoaXMKICAgIGlzIGRvbmUgYXMgYSBtaW5vciBvcHRpbWl6YXRpb24gaW5zdGVhZCBvZiBjYWxsaW5nIHdyaXRlVmVjdG9yKCkuICovCgogIC8vIGRldGVybWluZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlCiAgdmFyIGxlbmd0aCA9IGIubGVuZ3RoICsgMjsKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5jbGllbnRfa2V5X2V4Y2hhbmdlKTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7CiAgLy8gYWRkIHZlY3RvciBsZW5ndGggYnl0ZXMKICBydmFsLnB1dEludDE2KGIubGVuZ3RoKTsKICBydmFsLnB1dEJ5dGVzKGIpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBTZXJ2ZXJLZXlFeGNoYW5nZSBtZXNzYWdlLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgU2VydmVyS2V5RXhjaGFuZ2UgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlU2VydmVyS2V5RXhjaGFuZ2UgPSBmdW5jdGlvbihjKSB7CiAgLy8gdGhpcyBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIFJTQSwgbm8gRGlmZmllLUhlbGxtYW4gc3VwcG9ydCwKICAvLyBzbyB0aGlzIHJlY29yZCBpcyBlbXB0eQoKICAvLyBkZXRlcm1pbmUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZQogIHZhciBsZW5ndGggPSAwOwoKICAvLyBidWlsZCByZWNvcmQgZnJhZ21lbnQKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgaWYobGVuZ3RoID4gMCkgewogICAgcnZhbC5wdXRCeXRlKHRscy5IYW5kc2hha2VUeXBlLnNlcnZlcl9rZXlfZXhjaGFuZ2UpOwogICAgcnZhbC5wdXRJbnQyNChsZW5ndGgpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIHRoZSBzaWduZWQgZGF0YSB1c2VkIHRvIHZlcmlmeSBhIGNsaWVudC1zaWRlIGNlcnRpZmljYXRlLiBTZWUKICogdGxzLmNyZWF0ZUNlcnRpZmljYXRlVmVyaWZ5KCkgZm9yIGRldGFpbHMuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGNhbGxiYWNrIHRvIGNhbGwgb25jZSB0aGUgc2lnbmVkIGRhdGEgaXMgcmVhZHkuCiAqLwp0bHMuZ2V0Q2xpZW50U2lnbmF0dXJlID0gZnVuY3Rpb24oYywgY2FsbGJhY2spIHsKICAvLyBnZW5lcmF0ZSBkYXRhIHRvIFJTQSBlbmNyeXB0CiAgdmFyIGIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGIucHV0QnVmZmVyKGMuc2Vzc2lvbi5tZDUuZGlnZXN0KCkpOwogIGIucHV0QnVmZmVyKGMuc2Vzc2lvbi5zaGExLmRpZ2VzdCgpKTsKICBiID0gYi5nZXRCeXRlcygpOwoKICAvLyBjcmVhdGUgZGVmYXVsdCBzaWduaW5nIGZ1bmN0aW9uIGFzIG5lY2Vzc2FyeQogIGMuZ2V0U2lnbmF0dXJlID0gYy5nZXRTaWduYXR1cmUgfHwgZnVuY3Rpb24oYywgYiwgY2FsbGJhY2spIHsKICAgIC8vIGRvIHJzYSBlbmNyeXB0aW9uLCBjYWxsIGNhbGxiYWNrCiAgICB2YXIgcHJpdmF0ZUtleSA9IG51bGw7CiAgICBpZihjLmdldFByaXZhdGVLZXkpIHsKICAgICAgdHJ5IHsKICAgICAgICBwcml2YXRlS2V5ID0gYy5nZXRQcml2YXRlS2V5KGMsIGMuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZSk7CiAgICAgICAgcHJpdmF0ZUtleSA9IGZvcmdlLnBraS5wcml2YXRlS2V5RnJvbVBlbShwcml2YXRlS2V5KTsKICAgICAgfSBjYXRjaChleCkgewogICAgICAgIGMuZXJyb3IoYywgewogICAgICAgICAgbWVzc2FnZTogJ0NvdWxkIG5vdCBnZXQgcHJpdmF0ZSBrZXkuJywKICAgICAgICAgIGNhdXNlOiBleCwKICAgICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgICBhbGVydDogewogICAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KICAgIGlmKHByaXZhdGVLZXkgPT09IG51bGwpIHsKICAgICAgYy5lcnJvcihjLCB7CiAgICAgICAgbWVzc2FnZTogJ05vIHByaXZhdGUga2V5IHNldC4nLAogICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGIgPSBwcml2YXRlS2V5LnNpZ24oYiwgbnVsbCk7CiAgICB9CiAgICBjYWxsYmFjayhjLCBiKTsKICB9OwoKICAvLyBnZXQgY2xpZW50IHNpZ25hdHVyZQogIGMuZ2V0U2lnbmF0dXJlKGMsIGIsIGNhbGxiYWNrKTsKfTsKCi8qKgogKiBDcmVhdGVzIGEgQ2VydGlmaWNhdGVWZXJpZnkgbWVzc2FnZS4KICoKICogTWVhbmluZyBvZiB0aGlzIG1lc3NhZ2U6CiAqICAgVGhpcyBzdHJ1Y3R1cmUgY29udmV5cyB0aGUgY2xpZW50J3MgRGlmZmllLUhlbGxtYW4gcHVibGljIHZhbHVlCiAqICAgKFljKSBpZiBpdCB3YXMgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gdGhlIGNsaWVudCdzIGNlcnRpZmljYXRlLgogKiAgIFRoZSBlbmNvZGluZyB1c2VkIGZvciBZYyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBlbnVtZXJhdGVkCiAqICAgUHVibGljVmFsdWVFbmNvZGluZy4gVGhpcyBzdHJ1Y3R1cmUgaXMgYSB2YXJpYW50IG9mIHRoZSBjbGllbnQKICogICBrZXkgZXhjaGFuZ2UgbWVzc2FnZSwgbm90IGEgbWVzc2FnZSBpbiBpdHNlbGYuCiAqCiAqIFdoZW4gdGhpcyBtZXNzYWdlIHdpbGwgYmUgc2VudDoKICogICBUaGlzIG1lc3NhZ2UgaXMgdXNlZCB0byBwcm92aWRlIGV4cGxpY2l0IHZlcmlmaWNhdGlvbiBvZiBhIGNsaWVudAogKiAgIGNlcnRpZmljYXRlLiBUaGlzIG1lc3NhZ2UgaXMgb25seSBzZW50IGZvbGxvd2luZyBhIGNsaWVudAogKiAgIGNlcnRpZmljYXRlIHRoYXQgaGFzIHNpZ25pbmcgY2FwYWJpbGl0eSAoaS5lLiBhbGwgY2VydGlmaWNhdGVzCiAqICAgZXhjZXB0IHRob3NlIGNvbnRhaW5pbmcgZml4ZWQgRGlmZmllLUhlbGxtYW4gcGFyYW1ldGVycykuIFdoZW4KICogICBzZW50LCBpdCB3aWxsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgY2xpZW50IGtleSBleGNoYW5nZSBtZXNzYWdlLgogKgogKiBzdHJ1Y3QgewogKiAgIFNpZ25hdHVyZSBzaWduYXR1cmU7CiAqIH0gQ2VydGlmaWNhdGVWZXJpZnk7CiAqCiAqIENlcnRpZmljYXRlVmVyaWZ5LnNpZ25hdHVyZS5tZDVfaGFzaAogKiAgIE1ENShoYW5kc2hha2VfbWVzc2FnZXMpOwogKgogKiBDZXJ0aWZpY2F0ZS5zaWduYXR1cmUuc2hhX2hhc2gKICogICBTSEEoaGFuZHNoYWtlX21lc3NhZ2VzKTsKICoKICogSGVyZSBoYW5kc2hha2VfbWVzc2FnZXMgcmVmZXJzIHRvIGFsbCBoYW5kc2hha2UgbWVzc2FnZXMgc2VudCBvcgogKiByZWNlaXZlZCBzdGFydGluZyBhdCBjbGllbnQgaGVsbG8gdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcgdGhpcwogKiBtZXNzYWdlLCBpbmNsdWRpbmcgdGhlIHR5cGUgYW5kIGxlbmd0aCBmaWVsZHMgb2YgdGhlIGhhbmRzaGFrZQogKiBtZXNzYWdlcy4KICoKICogc2VsZWN0KFNpZ25hdHVyZUFsZ29yaXRobSkgewogKiAgIGNhc2UgYW5vbnltb3VzOiBzdHJ1Y3QgeyB9OwogKiAgIGNhc2UgcnNhOgogKiAgICAgZGlnaXRhbGx5LXNpZ25lZCBzdHJ1Y3QgewogKiAgICAgICBvcGFxdWUgbWQ1X2hhc2hbMTZdOwogKiAgICAgICBvcGFxdWUgc2hhX2hhc2hbMjBdOwogKiAgICAgfTsKICogICBjYXNlIGRzYToKICogICAgIGRpZ2l0YWxseS1zaWduZWQgc3RydWN0IHsKICogICAgICAgb3BhcXVlIHNoYV9oYXNoWzIwXTsKICogICAgIH07CiAqIH0gU2lnbmF0dXJlOwogKgogKiBJbiBkaWdpdGFsIHNpZ25pbmcsIG9uZS13YXkgaGFzaCBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgaW5wdXQgZm9yIGEKICogc2lnbmluZyBhbGdvcml0aG0uIEEgZGlnaXRhbGx5LXNpZ25lZCBlbGVtZW50IGlzIGVuY29kZWQgYXMgYW4gb3BhcXVlCiAqIHZlY3RvciA8MC4uMl4xNi0xPiwgd2hlcmUgdGhlIGxlbmd0aCBpcyBzcGVjaWZpZWQgYnkgdGhlIHNpZ25pbmcKICogYWxnb3JpdGhtIGFuZCBrZXkuCiAqCiAqIEluIFJTQSBzaWduaW5nLCBhIDM2LWJ5dGUgc3RydWN0dXJlIG9mIHR3byBoYXNoZXMgKG9uZSBTSEEgYW5kIG9uZQogKiBNRDUpIGlzIHNpZ25lZCAoZW5jcnlwdGVkIHdpdGggdGhlIHByaXZhdGUga2V5KS4gSXQgaXMgZW5jb2RlZCB3aXRoCiAqIFBLQ1MgIzEgYmxvY2sgdHlwZSAwIG9yIHR5cGUgMSBhcyBkZXNjcmliZWQgaW4gW1BLQ1MxXS4KICoKICogSW4gRFNTLCB0aGUgMjAgYnl0ZXMgb2YgdGhlIFNIQSBoYXNoIGFyZSBydW4gZGlyZWN0bHkgdGhyb3VnaCB0aGUKICogRGlnaXRhbCBTaWduaW5nIEFsZ29yaXRobSB3aXRoIG5vIGFkZGl0aW9uYWwgaGFzaGluZy4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSB0byBpbmNsdWRlIGluIHRoZSBtZXNzYWdlLgogKgogKiBAcmV0dXJuIHRoZSBDZXJ0aWZpY2F0ZVZlcmlmeSBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVDZXJ0aWZpY2F0ZVZlcmlmeSA9IGZ1bmN0aW9uKGMsIHNpZ25hdHVyZSkgewogIC8qIE5vdGU6IFRoZSBzaWduYXR1cmUgd2lsbCBiZSBzdG9yZWQgaW4gYSAiZGlnaXRhbGx5LXNpZ25lZCIgb3BhcXVlCiAgICB2ZWN0b3IgdGhhdCBoYXMgdGhlIGxlbmd0aCBwcmVmaXhlZCB1c2luZyAyIGJ5dGVzLCBzbyBpbmNsdWRlIHRob3NlCiAgICAyIGJ5dGVzIGluIHRoZSBoYW5kc2hha2UgbWVzc2FnZSBsZW5ndGguIFRoaXMgaXMgZG9uZSBhcyBhIG1pbm9yCiAgICBvcHRpbWl6YXRpb24gaW5zdGVhZCBvZiBjYWxsaW5nIHdyaXRlVmVjdG9yKCkuICovCgogIC8vIGRldGVybWluZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlCiAgdmFyIGxlbmd0aCA9IHNpZ25hdHVyZS5sZW5ndGggKyAyOwoKICAvLyBidWlsZCByZWNvcmQgZnJhZ21lbnQKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgcnZhbC5wdXRCeXRlKHRscy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlX3ZlcmlmeSk7CiAgcnZhbC5wdXRJbnQyNChsZW5ndGgpOwogIC8vIGFkZCB2ZWN0b3IgbGVuZ3RoIGJ5dGVzCiAgcnZhbC5wdXRJbnQxNihzaWduYXR1cmUubGVuZ3RoKTsKICBydmFsLnB1dEJ5dGVzKHNpZ25hdHVyZSk7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ3JlYXRlcyBhIENlcnRpZmljYXRlUmVxdWVzdCBtZXNzYWdlLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgQ2VydGlmaWNhdGVSZXF1ZXN0IGJ5dGUgYnVmZmVyLgogKi8KdGxzLmNyZWF0ZUNlcnRpZmljYXRlUmVxdWVzdCA9IGZ1bmN0aW9uKGMpIHsKICAvLyBUT0RPOiBzdXBwb3J0IG90aGVyIGNlcnRpZmljYXRlIHR5cGVzCiAgdmFyIGNlcnRUeXBlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGNvbW1vbiBSU0EgY2VydGlmaWNhdGUgdHlwZQogIGNlcnRUeXBlcy5wdXRCeXRlKDB4MDEpOwoKICAvLyBUT0RPOiB2ZXJpZnkgdGhhdCB0aGlzIGRhdGEgZm9ybWF0IGlzIGNvcnJlY3QKICAvLyBhZGQgZGlzdGluZ3Vpc2hlZCBuYW1lcyBmcm9tIENBIHN0b3JlCiAgdmFyIGNBcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgZm9yKHZhciBrZXkgaW4gYy5jYVN0b3JlLmNlcnRzKSB7CiAgICB2YXIgY2VydCA9IGMuY2FTdG9yZS5jZXJ0c1trZXldOwogICAgdmFyIGRuID0gZm9yZ2UucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKGNlcnQuc3ViamVjdCk7CiAgICBjQXMucHV0QnVmZmVyKGZvcmdlLmFzbjEudG9EZXIoZG4pKTsKICB9CgogIC8vIFRPRE86IFRMUyAxLjIrIGhhcyBhIGRpZmZlcmVudCBmb3JtYXQKCiAgLy8gZGV0ZXJtaW5lIGxlbmd0aCBvZiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UKICB2YXIgbGVuZ3RoID0KICAgIDEgKyBjZXJ0VHlwZXMubGVuZ3RoKCkgKwogICAgMiArIGNBcy5sZW5ndGgoKTsKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZV9yZXF1ZXN0KTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7CiAgd3JpdGVWZWN0b3IocnZhbCwgMSwgY2VydFR5cGVzKTsKICB3cml0ZVZlY3RvcihydmFsLCAyLCBjQXMpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBTZXJ2ZXJIZWxsb0RvbmUgbWVzc2FnZS4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqCiAqIEByZXR1cm4gdGhlIFNlcnZlckhlbGxvRG9uZSBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVTZXJ2ZXJIZWxsb0RvbmUgPSBmdW5jdGlvbihjKSB7CiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5zZXJ2ZXJfaGVsbG9fZG9uZSk7CiAgcnZhbC5wdXRJbnQyNCgwKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgQ2hhbmdlQ2lwaGVyU3BlYyBtZXNzYWdlLgogKgogKiBUaGUgY2hhbmdlIGNpcGhlciBzcGVjIHByb3RvY29sIGV4aXN0cyB0byBzaWduYWwgdHJhbnNpdGlvbnMgaW4KICogY2lwaGVyaW5nIHN0cmF0ZWdpZXMuIFRoZSBwcm90b2NvbCBjb25zaXN0cyBvZiBhIHNpbmdsZSBtZXNzYWdlLAogKiB3aGljaCBpcyBlbmNyeXB0ZWQgYW5kIGNvbXByZXNzZWQgdW5kZXIgdGhlIGN1cnJlbnQgKG5vdCB0aGUgcGVuZGluZykKICogY29ubmVjdGlvbiBzdGF0ZS4gVGhlIG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBzaW5nbGUgYnl0ZSBvZiB2YWx1ZSAxLgogKgogKiBzdHJ1Y3QgewogKiAgIGVudW0geyBjaGFuZ2VfY2lwaGVyX3NwZWMoMSksICgyNTUpIH0gdHlwZTsKICogfSBDaGFuZ2VDaXBoZXJTcGVjOwogKgogKiBAcmV0dXJuIHRoZSBDaGFuZ2VDaXBoZXJTcGVjIGJ5dGUgYnVmZmVyLgogKi8KdGxzLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgcnZhbC5wdXRCeXRlKDB4MDEpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBGaW5pc2hlZCBtZXNzYWdlLgogKgogKiBzdHJ1Y3QgewogKiAgIG9wYXF1ZSB2ZXJpZnlfZGF0YVsxMl07CiAqIH0gRmluaXNoZWQ7CiAqCiAqIHZlcmlmeV9kYXRhCiAqICAgUFJGKG1hc3Rlcl9zZWNyZXQsIGZpbmlzaGVkX2xhYmVsLCBNRDUoaGFuZHNoYWtlX21lc3NhZ2VzKSArCiAqICAgU0hBLTEoaGFuZHNoYWtlX21lc3NhZ2VzKSkgWzAuLjExXTsKICoKICogZmluaXNoZWRfbGFiZWwKICogICBGb3IgRmluaXNoZWQgbWVzc2FnZXMgc2VudCBieSB0aGUgY2xpZW50LCB0aGUgc3RyaW5nICJjbGllbnQKICogICBmaW5pc2hlZCIuIEZvciBGaW5pc2hlZCBtZXNzYWdlcyBzZW50IGJ5IHRoZSBzZXJ2ZXIsIHRoZQogKiAgIHN0cmluZyAic2VydmVyIGZpbmlzaGVkIi4KICoKICogaGFuZHNoYWtlX21lc3NhZ2VzCiAqICAgQWxsIG9mIHRoZSBkYXRhIGZyb20gYWxsIGhhbmRzaGFrZSBtZXNzYWdlcyB1cCB0byBidXQgbm90CiAqICAgaW5jbHVkaW5nIHRoaXMgbWVzc2FnZS4gVGhpcyBpcyBvbmx5IGRhdGEgdmlzaWJsZSBhdCB0aGUKICogICBoYW5kc2hha2UgbGF5ZXIgYW5kIGRvZXMgbm90IGluY2x1ZGUgcmVjb3JkIGxheWVyIGhlYWRlcnMuCiAqICAgVGhpcyBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBhbGwgdGhlIEhhbmRzaGFrZSBzdHJ1Y3R1cmVzIGFzCiAqICAgZGVmaW5lZCBpbiA3LjQgZXhjaGFuZ2VkIHRodXMgZmFyLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgRmluaXNoZWQgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlRmluaXNoZWQgPSBmdW5jdGlvbihjKSB7CiAgLy8gZ2VuZXJhdGUgdmVyaWZ5X2RhdGEKICB2YXIgYiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgYi5wdXRCdWZmZXIoYy5zZXNzaW9uLm1kNS5kaWdlc3QoKSk7CiAgYi5wdXRCdWZmZXIoYy5zZXNzaW9uLnNoYTEuZGlnZXN0KCkpOwoKICAvLyBUT0RPOiBkZXRlcm1pbmUgcHJmIGZ1bmN0aW9uIGFuZCB2ZXJpZnkgbGVuZ3RoIGZvciBUTFMgMS4yCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICB2YXIgc3AgPSBjLnNlc3Npb24uc3A7CiAgdmFyIHZkbCA9IDEyOwogIHZhciBwcmYgPSBwcmZfVExTMTsKICB2YXIgbGFiZWwgPSBjbGllbnQgPyAnY2xpZW50IGZpbmlzaGVkJyA6ICdzZXJ2ZXIgZmluaXNoZWQnOwogIGIgPSBwcmYoc3AubWFzdGVyX3NlY3JldCwgbGFiZWwsIGIuZ2V0Qnl0ZXMoKSwgdmRsKTsKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5maW5pc2hlZCk7CiAgcnZhbC5wdXRJbnQyNChiLmxlbmd0aCgpKTsKICBydmFsLnB1dEJ1ZmZlcihiKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgSGVhcnRiZWF0TWVzc2FnZSAoU2VlIFJGQyA2NTIwKS4KICoKICogc3RydWN0IHsKICogICBIZWFydGJlYXRNZXNzYWdlVHlwZSB0eXBlOwogKiAgIHVpbnQxNiBwYXlsb2FkX2xlbmd0aDsKICogICBvcGFxdWUgcGF5bG9hZFtIZWFydGJlYXRNZXNzYWdlLnBheWxvYWRfbGVuZ3RoXTsKICogICBvcGFxdWUgcGFkZGluZ1twYWRkaW5nX2xlbmd0aF07CiAqIH0gSGVhcnRiZWF0TWVzc2FnZTsKICoKICogVGhlIHRvdGFsIGxlbmd0aCBvZiBhIEhlYXJ0YmVhdE1lc3NhZ2UgTVVTVCBOT1QgZXhjZWVkIDJeMTQgb3IKICogbWF4X2ZyYWdtZW50X2xlbmd0aCB3aGVuIG5lZ290aWF0ZWQgYXMgZGVmaW5lZCBpbiBbUkZDNjA2Nl0uCiAqCiAqIHR5cGU6IFRoZSBtZXNzYWdlIHR5cGUsIGVpdGhlciBoZWFydGJlYXRfcmVxdWVzdCBvciBoZWFydGJlYXRfcmVzcG9uc2UuCiAqCiAqIHBheWxvYWRfbGVuZ3RoOiBUaGUgbGVuZ3RoIG9mIHRoZSBwYXlsb2FkLgogKgogKiBwYXlsb2FkOiBUaGUgcGF5bG9hZCBjb25zaXN0cyBvZiBhcmJpdHJhcnkgY29udGVudC4KICoKICogcGFkZGluZzogVGhlIHBhZGRpbmcgaXMgcmFuZG9tIGNvbnRlbnQgdGhhdCBNVVNUIGJlIGlnbm9yZWQgYnkgdGhlCiAqICAgcmVjZWl2ZXIuIFRoZSBsZW5ndGggb2YgYSBIZWFydGJlYXRNZXNzYWdlIGlzIFRMU1BsYWludGV4dC5sZW5ndGgKICogICBmb3IgVExTIGFuZCBEVExTUGxhaW50ZXh0Lmxlbmd0aCBmb3IgRFRMUy4gRnVydGhlcm1vcmUsIHRoZQogKiAgIGxlbmd0aCBvZiB0aGUgdHlwZSBmaWVsZCBpcyAxIGJ5dGUsIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQogKiAgIHBheWxvYWRfbGVuZ3RoIGlzIDIuIFRoZXJlZm9yZSwgdGhlIHBhZGRpbmdfbGVuZ3RoIGlzCiAqICAgVExTUGxhaW50ZXh0Lmxlbmd0aCAtIHBheWxvYWRfbGVuZ3RoIC0gMyBmb3IgVExTIGFuZAogKiAgIERUTFNQbGFpbnRleHQubGVuZ3RoIC0gcGF5bG9hZF9sZW5ndGggLSAzIGZvciBEVExTLiBUaGUKICogICBwYWRkaW5nX2xlbmd0aCBNVVNUIGJlIGF0IGxlYXN0IDE2LgogKgogKiBUaGUgc2VuZGVyIG9mIGEgSGVhcnRiZWF0TWVzc2FnZSBNVVNUIHVzZSBhIHJhbmRvbSBwYWRkaW5nIG9mIGF0CiAqIGxlYXN0IDE2IGJ5dGVzLiBUaGUgcGFkZGluZyBvZiBhIHJlY2VpdmVkIEhlYXJ0YmVhdE1lc3NhZ2UgbWVzc2FnZQogKiBNVVNUIGJlIGlnbm9yZWQuCiAqCiAqIElmIHRoZSBwYXlsb2FkX2xlbmd0aCBvZiBhIHJlY2VpdmVkIEhlYXJ0YmVhdE1lc3NhZ2UgaXMgdG9vIGxhcmdlLAogKiB0aGUgcmVjZWl2ZWQgSGVhcnRiZWF0TWVzc2FnZSBNVVNUIGJlIGRpc2NhcmRlZCBzaWxlbnRseS4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSB0eXBlIHRoZSB0bHMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuCiAqIEBwYXJhbSBwYXlsb2FkIHRoZSBoZWFydGJlYXQgZGF0YSB0byBzZW5kIGFzIHRoZSBwYXlsb2FkLgogKiBAcGFyYW0gW3BheWxvYWRMZW5ndGhdIHRoZSBwYXlsb2FkIGxlbmd0aCB0byB1c2UsIGRlZmF1bHRzIHRvIHRoZQogKiAgICAgICAgICBhY3R1YWwgcGF5bG9hZCBsZW5ndGguCiAqCiAqIEByZXR1cm4gdGhlIEhlYXJ0YmVhdFJlcXVlc3QgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlSGVhcnRiZWF0ID0gZnVuY3Rpb24odHlwZSwgcGF5bG9hZCwgcGF5bG9hZExlbmd0aCkgewogIGlmKHR5cGVvZiBwYXlsb2FkTGVuZ3RoID09PSAndW5kZWZpbmVkJykgewogICAgcGF5bG9hZExlbmd0aCA9IHBheWxvYWQubGVuZ3RoOwogIH0KICAvLyBidWlsZCByZWNvcmQgZnJhZ21lbnQKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgcnZhbC5wdXRCeXRlKHR5cGUpOyAgICAgICAgICAgICAgIC8vIGhlYXJ0YmVhdCBtZXNzYWdlIHR5cGUKICBydmFsLnB1dEludDE2KHBheWxvYWRMZW5ndGgpOyAgICAgLy8gcGF5bG9hZCBsZW5ndGgKICBydmFsLnB1dEJ5dGVzKHBheWxvYWQpOyAgICAgICAgICAgLy8gcGF5bG9hZAogIC8vIHBhZGRpbmcKICB2YXIgcGxhaW50ZXh0TGVuZ3RoID0gcnZhbC5sZW5ndGgoKTsKICB2YXIgcGFkZGluZ0xlbmd0aCA9IE1hdGgubWF4KDE2LCBwbGFpbnRleHRMZW5ndGggLSBwYXlsb2FkTGVuZ3RoIC0gMyk7CiAgcnZhbC5wdXRCeXRlcyhmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMocGFkZGluZ0xlbmd0aCkpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEZyYWdtZW50cywgY29tcHJlc3NlcywgZW5jcnlwdHMsIGFuZCBxdWV1ZXMgYSByZWNvcmQgZm9yIGRlbGl2ZXJ5LgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkIHRvIHF1ZXVlLgogKi8KdGxzLnF1ZXVlID0gZnVuY3Rpb24oYywgcmVjb3JkKSB7CiAgLy8gZXJyb3IgZHVyaW5nIHJlY29yZCBjcmVhdGlvbgogIGlmKCFyZWNvcmQpIHsKICAgIHJldHVybjsKICB9CgogIC8vIGlmIHRoZSByZWNvcmQgaXMgYSBoYW5kc2hha2UgcmVjb3JkLCB1cGRhdGUgaGFuZHNoYWtlIGhhc2hlcwogIGlmKHJlY29yZC50eXBlID09PSB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlKSB7CiAgICB2YXIgYnl0ZXMgPSByZWNvcmQuZnJhZ21lbnQuYnl0ZXMoKTsKICAgIGMuc2Vzc2lvbi5tZDUudXBkYXRlKGJ5dGVzKTsKICAgIGMuc2Vzc2lvbi5zaGExLnVwZGF0ZShieXRlcyk7CiAgICBieXRlcyA9IG51bGw7CiAgfQoKICAvLyBoYW5kbGUgcmVjb3JkIGZyYWdtZW50YXRpb24KICB2YXIgcmVjb3JkczsKICBpZihyZWNvcmQuZnJhZ21lbnQubGVuZ3RoKCkgPD0gdGxzLk1heEZyYWdtZW50KSB7CiAgICByZWNvcmRzID0gW3JlY29yZF07CiAgfSBlbHNlIHsKICAgIC8vIGZyYWdtZW50IGRhdGEgYXMgbG9uZyBhcyBpdCBpcyB0b28gbG9uZwogICAgcmVjb3JkcyA9IFtdOwogICAgdmFyIGRhdGEgPSByZWNvcmQuZnJhZ21lbnQuYnl0ZXMoKTsKICAgIHdoaWxlKGRhdGEubGVuZ3RoID4gdGxzLk1heEZyYWdtZW50KSB7CiAgICAgIHJlY29yZHMucHVzaCh0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiByZWNvcmQudHlwZSwKICAgICAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihkYXRhLnNsaWNlKDAsIHRscy5NYXhGcmFnbWVudCkpCiAgICAgIH0pKTsKICAgICAgZGF0YSA9IGRhdGEuc2xpY2UodGxzLk1heEZyYWdtZW50KTsKICAgIH0KICAgIC8vIGFkZCBsYXN0IHJlY29yZAogICAgaWYoZGF0YS5sZW5ndGggPiAwKSB7CiAgICAgIHJlY29yZHMucHVzaCh0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiByZWNvcmQudHlwZSwKICAgICAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihkYXRhKQogICAgICB9KSk7CiAgICB9CiAgfQoKICAvLyBjb21wcmVzcyBhbmQgZW5jcnlwdCBhbGwgZnJhZ21lbnRlZCByZWNvcmRzCiAgZm9yKHZhciBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoICYmICFjLmZhaWw7ICsraSkgewogICAgLy8gdXBkYXRlIHRoZSByZWNvcmQgdXNpbmcgY3VycmVudCB3cml0ZSBzdGF0ZQogICAgdmFyIHJlYyA9IHJlY29yZHNbaV07CiAgICB2YXIgcyA9IGMuc3RhdGUuY3VycmVudC53cml0ZTsKICAgIGlmKHMudXBkYXRlKGMsIHJlYykpIHsKICAgICAgLy8gc3RvcmUgcmVjb3JkCiAgICAgIGMucmVjb3Jkcy5wdXNoKHJlYyk7CiAgICB9CiAgfQp9OwoKLyoqCiAqIEZsdXNoZXMgYWxsIHF1ZXVlZCByZWNvcmRzIHRvIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCBjYWxscyB0aGUKICogdGxzRGF0YVJlYWR5KCkgaGFuZGxlciBvbiB0aGUgZ2l2ZW4gY29ubmVjdGlvbi4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdGxzLmZsdXNoID0gZnVuY3Rpb24oYykgewogIGZvcih2YXIgaSA9IDA7IGkgPCBjLnJlY29yZHMubGVuZ3RoOyArK2kpIHsKICAgIHZhciByZWNvcmQgPSBjLnJlY29yZHNbaV07CgogICAgLy8gYWRkIHJlY29yZCBoZWFkZXIgYW5kIGZyYWdtZW50CiAgICBjLnRsc0RhdGEucHV0Qnl0ZShyZWNvcmQudHlwZSk7CiAgICBjLnRsc0RhdGEucHV0Qnl0ZShyZWNvcmQudmVyc2lvbi5tYWpvcik7CiAgICBjLnRsc0RhdGEucHV0Qnl0ZShyZWNvcmQudmVyc2lvbi5taW5vcik7CiAgICBjLnRsc0RhdGEucHV0SW50MTYocmVjb3JkLmZyYWdtZW50Lmxlbmd0aCgpKTsKICAgIGMudGxzRGF0YS5wdXRCdWZmZXIoYy5yZWNvcmRzW2ldLmZyYWdtZW50KTsKICB9CiAgYy5yZWNvcmRzID0gW107CiAgcmV0dXJuIGMudGxzRGF0YVJlYWR5KGMpOwp9OwoKLyoqCiAqIE1hcHMgYSBwa2kuY2VydGlmaWNhdGVFcnJvciB0byBhIHRscy5BbGVydC5EZXNjcmlwdGlvbi4KICoKICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0byBtYXAuCiAqCiAqIEByZXR1cm4gdGhlIGFsZXJ0IGRlc2NyaXB0aW9uLgogKi8KdmFyIF9jZXJ0RXJyb3JUb0FsZXJ0RGVzYyA9IGZ1bmN0aW9uKGVycm9yKSB7CiAgc3dpdGNoKGVycm9yKSB7CiAgY2FzZSB0cnVlOgogICAgcmV0dXJuIHRydWU7CiAgY2FzZSBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGU6CiAgICByZXR1cm4gdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVuc3VwcG9ydGVkX2NlcnRpZmljYXRlOgogICAgcmV0dXJuIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX3Jldm9rZWQ6CiAgICByZXR1cm4gdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Jldm9rZWQ7CiAgY2FzZSBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV9leHBpcmVkOgogICAgcmV0dXJuIHRscy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkOwogIGNhc2UgZm9yZ2UucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfdW5rbm93bjoKICAgIHJldHVybiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfdW5rbm93bjsKICBjYXNlIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2E6CiAgICByZXR1cm4gdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVua25vd25fY2E7CiAgZGVmYXVsdDoKICAgIHJldHVybiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlOwogIH0KfTsKCi8qKgogKiBNYXBzIGEgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uIHRvIGEgcGtpLmNlcnRpZmljYXRlRXJyb3IuCiAqCiAqIEBwYXJhbSBkZXNjIHRoZSBhbGVydCBkZXNjcmlwdGlvbi4KICoKICogQHJldHVybiB0aGUgY2VydGlmaWNhdGUgZXJyb3IuCiAqLwp2YXIgX2FsZXJ0RGVzY1RvQ2VydEVycm9yID0gZnVuY3Rpb24oZGVzYykgewogIHN3aXRjaChkZXNjKSB7CiAgY2FzZSB0cnVlOgogICAgcmV0dXJuIHRydWU7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlOgogICAgcmV0dXJuIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmJhZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZToKICAgIHJldHVybiBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9yZXZva2VkOgogICAgcmV0dXJuIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX3Jldm9rZWQ7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfZXhwaXJlZDoKICAgIHJldHVybiBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV9leHBpcmVkOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246CiAgICByZXR1cm4gZm9yZ2UucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfdW5rbm93bjsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bmtub3duX2NhOgogICAgcmV0dXJuIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2E7CiAgZGVmYXVsdDoKICAgIHJldHVybiBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGU7CiAgfQp9OwoKLyoqCiAqIFZlcmlmaWVzIGEgY2VydGlmaWNhdGUgY2hhaW4gYWdhaW5zdCB0aGUgZ2l2ZW4gY29ubmVjdGlvbidzCiAqIENlcnRpZmljYXRlIEF1dGhvcml0eSBzdG9yZS4KICoKICogQHBhcmFtIGMgdGhlIFRMUyBjb25uZWN0aW9uLgogKiBAcGFyYW0gY2hhaW4gdGhlIGNlcnRpZmljYXRlIGNoYWluIHRvIHZlcmlmeSwgd2l0aCB0aGUgcm9vdCBvciBoaWdoZXN0CiAqICAgICAgICAgIGF1dGhvcml0eSBhdCB0aGUgZW5kLgogKgogKiBAcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYgbm90LgogKi8KdGxzLnZlcmlmeUNlcnRpZmljYXRlQ2hhaW4gPSBmdW5jdGlvbihjLCBjaGFpbikgewogIHRyeSB7CiAgICAvLyB2ZXJpZnkgY2hhaW4KICAgIGZvcmdlLnBraS52ZXJpZnlDZXJ0aWZpY2F0ZUNoYWluKGMuY2FTdG9yZSwgY2hhaW4sCiAgICAgIGZ1bmN0aW9uIHZlcmlmeSh2ZmQsIGRlcHRoLCBjaGFpbikgewogICAgICAgIC8vIGNvbnZlcnQgcGtpLmNlcnRpZmljYXRlRXJyb3IgdG8gdGxzIGFsZXJ0IGRlc2NyaXB0aW9uCiAgICAgICAgdmFyIGRlc2MgPSBfY2VydEVycm9yVG9BbGVydERlc2ModmZkKTsKCiAgICAgICAgLy8gY2FsbCBhcHBsaWNhdGlvbiBjYWxsYmFjawogICAgICAgIHZhciByZXQgPSBjLnZlcmlmeShjLCB2ZmQsIGRlcHRoLCBjaGFpbik7CiAgICAgICAgaWYocmV0ICE9PSB0cnVlKSB7CiAgICAgICAgICBpZih0eXBlb2YgcmV0ID09PSAnb2JqZWN0JyAmJiAhZm9yZ2UudXRpbC5pc0FycmF5KHJldCkpIHsKICAgICAgICAgICAgLy8gdGhyb3cgY3VzdG9tIGVycm9yCiAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignVGhlIGFwcGxpY2F0aW9uIHJlamVjdGVkIHRoZSBjZXJ0aWZpY2F0ZS4nKTsKICAgICAgICAgICAgZXJyb3Iuc2VuZCA9IHRydWU7CiAgICAgICAgICAgIGVycm9yLmFsZXJ0ID0gewogICAgICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGUKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYocmV0Lm1lc3NhZ2UpIHsKICAgICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gcmV0Lm1lc3NhZ2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYocmV0LmFsZXJ0KSB7CiAgICAgICAgICAgICAgZXJyb3IuYWxlcnQuZGVzY3JpcHRpb24gPSByZXQuYWxlcnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gY29udmVydCB0bHMgYWxlcnQgZGVzY3JpcHRpb24gdG8gcGtpLmNlcnRpZmljYXRlRXJyb3IKICAgICAgICAgIGlmKHJldCAhPT0gdmZkKSB7CiAgICAgICAgICAgIHJldCA9IF9hbGVydERlc2NUb0NlcnRFcnJvcihyZXQpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJldDsKICAgICAgfSk7CiAgfSBjYXRjaChleCkgewogICAgLy8gYnVpbGQgdGxzIGVycm9yIGlmIG5vdCBhbHJlYWR5IGN1c3RvbWl6ZWQKICAgIHZhciBlcnIgPSBleDsKICAgIGlmKHR5cGVvZiBlcnIgIT09ICdvYmplY3QnIHx8IGZvcmdlLnV0aWwuaXNBcnJheShlcnIpKSB7CiAgICAgIGVyciA9IHsKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgZGVzY3JpcHRpb246IF9jZXJ0RXJyb3JUb0FsZXJ0RGVzYyhleCkKICAgICAgICB9CiAgICAgIH07CiAgICB9CiAgICBpZighKCdzZW5kJyBpbiBlcnIpKSB7CiAgICAgIGVyci5zZW5kID0gdHJ1ZTsKICAgIH0KICAgIGlmKCEoJ2FsZXJ0JyBpbiBlcnIpKSB7CiAgICAgIGVyci5hbGVydCA9IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiBfY2VydEVycm9yVG9BbGVydERlc2MoZXJyLmVycm9yKQogICAgICB9OwogICAgfQoKICAgIC8vIHNlbmQgZXJyb3IKICAgIGMuZXJyb3IoYywgZXJyKTsKICB9CgogIHJldHVybiAhYy5mYWlsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgVExTIHNlc3Npb24gY2FjaGUuCiAqCiAqIEBwYXJhbSBjYWNoZSBvcHRpb25hbCBtYXAgb2Ygc2Vzc2lvbiBJRCB0byBjYWNoZWQgc2Vzc2lvbi4KICogQHBhcmFtIGNhcGFjaXR5IHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBjYWNoZSAoZGVmYXVsdDogMTAwKS4KICoKICogQHJldHVybiB0aGUgbmV3IFRMUyBzZXNzaW9uIGNhY2hlLgogKi8KdGxzLmNyZWF0ZVNlc3Npb25DYWNoZSA9IGZ1bmN0aW9uKGNhY2hlLCBjYXBhY2l0eSkgewogIHZhciBydmFsID0gbnVsbDsKCiAgLy8gYXNzdW1lIGlucHV0IGlzIGFscmVhZHkgYSBzZXNzaW9uIGNhY2hlIG9iamVjdAogIGlmKGNhY2hlICYmIGNhY2hlLmdldFNlc3Npb24gJiYgY2FjaGUuc2V0U2Vzc2lvbiAmJiBjYWNoZS5vcmRlcikgewogICAgcnZhbCA9IGNhY2hlOwogIH0gZWxzZSB7CiAgICAvLyBjcmVhdGUgY2FjaGUKICAgIHJ2YWwgPSB7fTsKICAgIHJ2YWwuY2FjaGUgPSBjYWNoZSB8fCB7fTsKICAgIHJ2YWwuY2FwYWNpdHkgPSBNYXRoLm1heChjYXBhY2l0eSB8fCAxMDAsIDEpOwogICAgcnZhbC5vcmRlciA9IFtdOwoKICAgIC8vIHN0b3JlIG9yZGVyIGZvciBzZXNzaW9ucywgZGVsZXRlIHNlc3Npb24gb3ZlcmZsb3cKICAgIGZvcih2YXIga2V5IGluIGNhY2hlKSB7CiAgICAgIGlmKHJ2YWwub3JkZXIubGVuZ3RoIDw9IGNhcGFjaXR5KSB7CiAgICAgICAgcnZhbC5vcmRlci5wdXNoKGtleSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGVsZXRlIGNhY2hlW2tleV07CiAgICAgIH0KICAgIH0KCiAgICAvLyBnZXQgYSBzZXNzaW9uIGZyb20gYSBzZXNzaW9uIElEIChvciBnZXQgYW55IHNlc3Npb24pCiAgICBydmFsLmdldFNlc3Npb24gPSBmdW5jdGlvbihzZXNzaW9uSWQpIHsKICAgICAgdmFyIHNlc3Npb24gPSBudWxsOwogICAgICB2YXIga2V5ID0gbnVsbDsKCiAgICAgIC8vIGlmIHNlc3Npb24gSUQgcHJvdmlkZWQsIHVzZSBpdAogICAgICBpZihzZXNzaW9uSWQpIHsKICAgICAgICBrZXkgPSBmb3JnZS51dGlsLmJ5dGVzVG9IZXgoc2Vzc2lvbklkKTsKICAgICAgfSBlbHNlIGlmKHJ2YWwub3JkZXIubGVuZ3RoID4gMCkgewogICAgICAgIC8vIGdldCBmaXJzdCBzZXNzaW9uIGZyb20gY2FjaGUKICAgICAgICBrZXkgPSBydmFsLm9yZGVyWzBdOwogICAgICB9CgogICAgICBpZihrZXkgIT09IG51bGwgJiYga2V5IGluIHJ2YWwuY2FjaGUpIHsKICAgICAgICAvLyBnZXQgY2FjaGVkIHNlc3Npb24gYW5kIHJlbW92ZSBmcm9tIGNhY2hlCiAgICAgICAgc2Vzc2lvbiA9IHJ2YWwuY2FjaGVba2V5XTsKICAgICAgICBkZWxldGUgcnZhbC5jYWNoZVtrZXldOwogICAgICAgIGZvcih2YXIgaSBpbiBydmFsLm9yZGVyKSB7CiAgICAgICAgICBpZihydmFsLm9yZGVyW2ldID09PSBrZXkpIHsKICAgICAgICAgICAgcnZhbC5vcmRlci5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHNlc3Npb247CiAgICB9OwoKICAgIC8vIHNldCBhIHNlc3Npb24gaW4gdGhlIGNhY2hlCiAgICBydmFsLnNldFNlc3Npb24gPSBmdW5jdGlvbihzZXNzaW9uSWQsIHNlc3Npb24pIHsKICAgICAgLy8gcmVtb3ZlIHNlc3Npb24gZnJvbSBjYWNoZSBpZiBhdCBjYXBhY2l0eQogICAgICBpZihydmFsLm9yZGVyLmxlbmd0aCA9PT0gcnZhbC5jYXBhY2l0eSkgewogICAgICAgIHZhciBrZXkgPSBydmFsLm9yZGVyLnNoaWZ0KCk7CiAgICAgICAgZGVsZXRlIHJ2YWwuY2FjaGVba2V5XTsKICAgICAgfQogICAgICAvLyBhZGQgc2Vzc2lvbiB0byBjYWNoZQogICAgICB2YXIga2V5ID0gZm9yZ2UudXRpbC5ieXRlc1RvSGV4KHNlc3Npb25JZCk7CiAgICAgIHJ2YWwub3JkZXIucHVzaChrZXkpOwogICAgICBydmFsLmNhY2hlW2tleV0gPSBzZXNzaW9uOwogICAgfTsKICB9CgogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgVExTIGNvbm5lY3Rpb24uCiAqCiAqIFNlZSBwdWJsaWMgY3JlYXRlQ29ubmVjdGlvbigpIGRvY3MgZm9yIG1vcmUgZGV0YWlscy4KICoKICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgZm9yIHRoaXMgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgbmV3IFRMUyBjb25uZWN0aW9uLgogKi8KdGxzLmNyZWF0ZUNvbm5lY3Rpb24gPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgdmFyIGNhU3RvcmUgPSBudWxsOwogIGlmKG9wdGlvbnMuY2FTdG9yZSkgewogICAgLy8gaWYgQ0Egc3RvcmUgaXMgYW4gYXJyYXksIGNvbnZlcnQgaXQgdG8gYSBDQSBzdG9yZSBvYmplY3QKICAgIGlmKGZvcmdlLnV0aWwuaXNBcnJheShvcHRpb25zLmNhU3RvcmUpKSB7CiAgICAgIGNhU3RvcmUgPSBmb3JnZS5wa2kuY3JlYXRlQ2FTdG9yZShvcHRpb25zLmNhU3RvcmUpOwogICAgfSBlbHNlIHsKICAgICAgY2FTdG9yZSA9IG9wdGlvbnMuY2FTdG9yZTsKICAgIH0KICB9IGVsc2UgewogICAgLy8gY3JlYXRlIGVtcHR5IENBIHN0b3JlCiAgICBjYVN0b3JlID0gZm9yZ2UucGtpLmNyZWF0ZUNhU3RvcmUoKTsKICB9CgogIC8vIHNldHVwIGRlZmF1bHQgY2lwaGVyIHN1aXRlcwogIHZhciBjaXBoZXJTdWl0ZXMgPSBvcHRpb25zLmNpcGhlclN1aXRlcyB8fCBudWxsOwogIGlmKGNpcGhlclN1aXRlcyA9PT0gbnVsbCkgewogICAgY2lwaGVyU3VpdGVzID0gW107CiAgICBmb3IodmFyIGtleSBpbiB0bHMuQ2lwaGVyU3VpdGVzKSB7CiAgICAgIGNpcGhlclN1aXRlcy5wdXNoKHRscy5DaXBoZXJTdWl0ZXNba2V5XSk7CiAgICB9CiAgfQoKICAvLyBzZXQgZGVmYXVsdCBlbnRpdHkKICB2YXIgZW50aXR5ID0gKG9wdGlvbnMuc2VydmVyIHx8IGZhbHNlKSA/CiAgICB0bHMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXIgOiB0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnQ7CgogIC8vIGNyZWF0ZSBzZXNzaW9uIGNhY2hlIGlmIHJlcXVlc3RlZAogIHZhciBzZXNzaW9uQ2FjaGUgPSBvcHRpb25zLnNlc3Npb25DYWNoZSA/CiAgICB0bHMuY3JlYXRlU2Vzc2lvbkNhY2hlKG9wdGlvbnMuc2Vzc2lvbkNhY2hlKSA6IG51bGw7CgogIC8vIGNyZWF0ZSBUTFMgY29ubmVjdGlvbgogIHZhciBjID0gewogICAgdmVyc2lvbjoge21ham9yOiB0bHMuVmVyc2lvbi5tYWpvciwgbWlub3I6IHRscy5WZXJzaW9uLm1pbm9yfSwKICAgIGVudGl0eTogZW50aXR5LAogICAgc2Vzc2lvbklkOiBvcHRpb25zLnNlc3Npb25JZCwKICAgIGNhU3RvcmU6IGNhU3RvcmUsCiAgICBzZXNzaW9uQ2FjaGU6IHNlc3Npb25DYWNoZSwKICAgIGNpcGhlclN1aXRlczogY2lwaGVyU3VpdGVzLAogICAgY29ubmVjdGVkOiBvcHRpb25zLmNvbm5lY3RlZCwKICAgIHZpcnR1YWxIb3N0OiBvcHRpb25zLnZpcnR1YWxIb3N0IHx8IG51bGwsCiAgICB2ZXJpZnlDbGllbnQ6IG9wdGlvbnMudmVyaWZ5Q2xpZW50IHx8IGZhbHNlLAogICAgdmVyaWZ5OiBvcHRpb25zLnZlcmlmeSB8fCBmdW5jdGlvbihjbiwgdmZkLCBkcHRoLCBjdHMpIHtyZXR1cm4gdmZkO30sCiAgICBnZXRDZXJ0aWZpY2F0ZTogb3B0aW9ucy5nZXRDZXJ0aWZpY2F0ZSB8fCBudWxsLAogICAgZ2V0UHJpdmF0ZUtleTogb3B0aW9ucy5nZXRQcml2YXRlS2V5IHx8IG51bGwsCiAgICBnZXRTaWduYXR1cmU6IG9wdGlvbnMuZ2V0U2lnbmF0dXJlIHx8IG51bGwsCiAgICBpbnB1dDogZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKSwKICAgIHRsc0RhdGE6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCksCiAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpLAogICAgdGxzRGF0YVJlYWR5OiBvcHRpb25zLnRsc0RhdGFSZWFkeSwKICAgIGRhdGFSZWFkeTogb3B0aW9ucy5kYXRhUmVhZHksCiAgICBoZWFydGJlYXRSZWNlaXZlZDogb3B0aW9ucy5oZWFydGJlYXRSZWNlaXZlZCwKICAgIGNsb3NlZDogb3B0aW9ucy5jbG9zZWQsCiAgICBlcnJvcjogZnVuY3Rpb24oYywgZXgpIHsKICAgICAgLy8gc2V0IG9yaWdpbiBpZiBub3Qgc2V0CiAgICAgIGV4Lm9yaWdpbiA9IGV4Lm9yaWdpbiB8fAogICAgICAgICgoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCkgPyAnY2xpZW50JyA6ICdzZXJ2ZXInKTsKCiAgICAgIC8vIHNlbmQgVExTIGFsZXJ0CiAgICAgIGlmKGV4LnNlbmQpIHsKICAgICAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZUFsZXJ0KGMsIGV4LmFsZXJ0KSk7CiAgICAgICAgdGxzLmZsdXNoKGMpOwogICAgICB9CgogICAgICAvLyBlcnJvciBpcyBmYXRhbCBieSBkZWZhdWx0CiAgICAgIHZhciBmYXRhbCA9IChleC5mYXRhbCAhPT0gZmFsc2UpOwogICAgICBpZihmYXRhbCkgewogICAgICAgIC8vIHNldCBmYWlsIGZsYWcKICAgICAgICBjLmZhaWwgPSB0cnVlOwogICAgICB9CgogICAgICAvLyBjYWxsIGVycm9yIGhhbmRsZXIgZmlyc3QKICAgICAgb3B0aW9ucy5lcnJvcihjLCBleCk7CgogICAgICBpZihmYXRhbCkgewogICAgICAgIC8vIGZhdGFsIGVycm9yLCBjbG9zZSBjb25uZWN0aW9uLCBkbyBub3QgY2xlYXIgZmFpbAogICAgICAgIGMuY2xvc2UoZmFsc2UpOwogICAgICB9CiAgICB9LAogICAgZGVmbGF0ZTogb3B0aW9ucy5kZWZsYXRlIHx8IG51bGwsCiAgICBpbmZsYXRlOiBvcHRpb25zLmluZmxhdGUgfHwgbnVsbAogIH07CgogIC8qKgogICAqIFJlc2V0cyBhIGNsb3NlZCBUTFMgY29ubmVjdGlvbiBmb3IgcmV1c2UuIENhbGxlZCBpbiBjLmNsb3NlKCkuCiAgICoKICAgKiBAcGFyYW0gY2xlYXJGYWlsIHRydWUgdG8gY2xlYXIgdGhlIGZhaWwgZmxhZyAoZGVmYXVsdDogdHJ1ZSkuCiAgICovCiAgYy5yZXNldCA9IGZ1bmN0aW9uKGNsZWFyRmFpbCkgewogICAgYy52ZXJzaW9uID0ge21ham9yOiB0bHMuVmVyc2lvbi5tYWpvciwgbWlub3I6IHRscy5WZXJzaW9uLm1pbm9yfTsKICAgIGMucmVjb3JkID0gbnVsbDsKICAgIGMuc2Vzc2lvbiA9IG51bGw7CiAgICBjLnBlZXJDZXJ0aWZpY2F0ZSA9IG51bGw7CiAgICBjLnN0YXRlID0gewogICAgICBwZW5kaW5nOiBudWxsLAogICAgICBjdXJyZW50OiBudWxsCiAgICB9OwogICAgYy5leHBlY3QgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCkgPyBTSEUgOiBDSEU7CiAgICBjLmZyYWdtZW50ZWQgPSBudWxsOwogICAgYy5yZWNvcmRzID0gW107CiAgICBjLm9wZW4gPSBmYWxzZTsKICAgIGMuaGFuZHNoYWtlcyA9IDA7CiAgICBjLmhhbmRzaGFraW5nID0gZmFsc2U7CiAgICBjLmlzQ29ubmVjdGVkID0gZmFsc2U7CiAgICBjLmZhaWwgPSAhKGNsZWFyRmFpbCB8fCB0eXBlb2YoY2xlYXJGYWlsKSA9PT0gJ3VuZGVmaW5lZCcpOwogICAgYy5pbnB1dC5jbGVhcigpOwogICAgYy50bHNEYXRhLmNsZWFyKCk7CiAgICBjLmRhdGEuY2xlYXIoKTsKICAgIGMuc3RhdGUuY3VycmVudCA9IHRscy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoYyk7CiAgfTsKCiAgLy8gZG8gaW5pdGlhbCByZXNldCBvZiBjb25uZWN0aW9uCiAgYy5yZXNldCgpOwoKICAvKioKICAgKiBVcGRhdGVzIHRoZSBjdXJyZW50IFRMUyBlbmdpbmUgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIHJlY29yZC4KICAgKgogICAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbi4KICAgKiBAcGFyYW0gcmVjb3JkIHRoZSBUTFMgcmVjb3JkIHRvIGFjdCBvbi4KICAgKi8KICB2YXIgX3VwZGF0ZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogICAgLy8gZ2V0IHJlY29yZCBoYW5kbGVyIChhbGlnbiB0eXBlIGluIHRhYmxlIGJ5IHN1YnRyYWN0aW5nIGxvd2VzdCkKICAgIHZhciBhbGlnbmVkID0gcmVjb3JkLnR5cGUgLSB0bHMuQ29udGVudFR5cGUuY2hhbmdlX2NpcGhlcl9zcGVjOwogICAgdmFyIGhhbmRsZXJzID0gY3RUYWJsZVtjLmVudGl0eV1bYy5leHBlY3RdOwogICAgaWYoYWxpZ25lZCBpbiBoYW5kbGVycykgewogICAgICBoYW5kbGVyc1thbGlnbmVkXShjLCByZWNvcmQpOwogICAgfSBlbHNlIHsKICAgICAgLy8gdW5leHBlY3RlZCByZWNvcmQKICAgICAgdGxzLmhhbmRsZVVuZXhwZWN0ZWQoYywgcmVjb3JkKTsKICAgIH0KICB9OwoKICAvKioKICAgKiBSZWFkcyB0aGUgcmVjb3JkIGhlYWRlciBhbmQgaW5pdGlhbGl6ZXMgdGhlIG5leHQgcmVjb3JkIG9uIHRoZSBnaXZlbgogICAqIGNvbm5lY3Rpb24uCiAgICoKICAgKiBAcGFyYW0gYyB0aGUgVExTIGNvbm5lY3Rpb24gd2l0aCB0aGUgbmV4dCByZWNvcmQuCiAgICoKICAgKiBAcmV0dXJuIDAgaWYgdGhlIGlucHV0IGRhdGEgY291bGQgYmUgcHJvY2Vzc2VkLCBvdGhlcndpc2UgdGhlCiAgICogICAgICAgICBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgZm9yIGRhdGEgdG8gYmUgcHJvY2Vzc2VkLgogICAqLwogIHZhciBfcmVhZFJlY29yZEhlYWRlciA9IGZ1bmN0aW9uKGMpIHsKICAgIHZhciBydmFsID0gMDsKCiAgICAvLyBnZXQgaW5wdXQgYnVmZmVyIGFuZCBpdHMgbGVuZ3RoCiAgICB2YXIgYiA9IGMuaW5wdXQ7CiAgICB2YXIgbGVuID0gYi5sZW5ndGgoKTsKCiAgICAvLyBuZWVkIGF0IGxlYXN0IDUgYnl0ZXMgdG8gaW5pdGlhbGl6ZSBhIHJlY29yZAogICAgaWYobGVuIDwgNSkgewogICAgICBydmFsID0gNSAtIGxlbjsKICAgIH0gZWxzZSB7CiAgICAgIC8vIGVub3VnaCBieXRlcyBmb3IgaGVhZGVyCiAgICAgIC8vIGluaXRpYWxpemUgcmVjb3JkCiAgICAgIGMucmVjb3JkID0gewogICAgICAgIHR5cGU6IGIuZ2V0Qnl0ZSgpLAogICAgICAgIHZlcnNpb246IHsKICAgICAgICAgIG1ham9yOiBiLmdldEJ5dGUoKSwKICAgICAgICAgIG1pbm9yOiBiLmdldEJ5dGUoKQogICAgICAgIH0sCiAgICAgICAgbGVuZ3RoOiBiLmdldEludDE2KCksCiAgICAgICAgZnJhZ21lbnQ6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCksCiAgICAgICAgcmVhZHk6IGZhbHNlCiAgICAgIH07CgogICAgICAvLyBjaGVjayByZWNvcmQgdmVyc2lvbgogICAgICB2YXIgY29tcGF0aWJsZVZlcnNpb24gPSAoYy5yZWNvcmQudmVyc2lvbi5tYWpvciA9PT0gYy52ZXJzaW9uLm1ham9yKTsKICAgICAgaWYoY29tcGF0aWJsZVZlcnNpb24gJiYgYy5zZXNzaW9uICYmIGMuc2Vzc2lvbi52ZXJzaW9uKSB7CiAgICAgICAgLy8gc2Vzc2lvbiB2ZXJzaW9uIGFscmVhZHkgc2V0LCByZXF1aXJlIHNhbWUgbWlub3IgdmVyc2lvbgogICAgICAgIGNvbXBhdGlibGVWZXJzaW9uID0gKGMucmVjb3JkLnZlcnNpb24ubWlub3IgPT09IGMudmVyc2lvbi5taW5vcik7CiAgICAgIH0KICAgICAgaWYoIWNvbXBhdGlibGVWZXJzaW9uKSB7CiAgICAgICAgYy5lcnJvcihjLCB7CiAgICAgICAgICBtZXNzYWdlOiAnSW5jb21wYXRpYmxlIFRMUyB2ZXJzaW9uLicsCiAgICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9uCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBSZWFkcyB0aGUgbmV4dCByZWNvcmQncyBjb250ZW50cyBhbmQgYXBwZW5kcyBpdHMgbWVzc2FnZSB0byBhbnkKICAgKiBwcmV2aW91c2x5IGZyYWdtZW50ZWQgbWVzc2FnZS4KICAgKgogICAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbiB3aXRoIHRoZSBuZXh0IHJlY29yZC4KICAgKgogICAqIEByZXR1cm4gMCBpZiB0aGUgaW5wdXQgZGF0YSBjb3VsZCBiZSBwcm9jZXNzZWQsIG90aGVyd2lzZSB0aGUKICAgKiAgICAgICAgIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBmb3IgZGF0YSB0byBiZSBwcm9jZXNzZWQuCiAgICovCiAgdmFyIF9yZWFkUmVjb3JkID0gZnVuY3Rpb24oYykgewogICAgdmFyIHJ2YWwgPSAwOwoKICAgIC8vIGVuc3VyZSB0aGVyZSBpcyBlbm91Z2ggaW5wdXQgZGF0YSB0byBnZXQgdGhlIGVudGlyZSByZWNvcmQKICAgIHZhciBiID0gYy5pbnB1dDsKICAgIHZhciBsZW4gPSBiLmxlbmd0aCgpOwogICAgaWYobGVuIDwgYy5yZWNvcmQubGVuZ3RoKSB7CiAgICAgIC8vIG5vdCBlbm91Z2ggZGF0YSB5ZXQsIHJldHVybiBob3cgbXVjaCBpcyByZXF1aXJlZAogICAgICBydmFsID0gYy5yZWNvcmQubGVuZ3RoIC0gbGVuOwogICAgfSBlbHNlIHsKICAgICAgLy8gdGhlcmUgaXMgZW5vdWdoIGRhdGEgdG8gcGFyc2UgdGhlIHBlbmRpbmcgcmVjb3JkCiAgICAgIC8vIGZpbGwgcmVjb3JkIGZyYWdtZW50IGFuZCBjb21wYWN0IGlucHV0IGJ1ZmZlcgogICAgICBjLnJlY29yZC5mcmFnbWVudC5wdXRCeXRlcyhiLmdldEJ5dGVzKGMucmVjb3JkLmxlbmd0aCkpOwogICAgICBiLmNvbXBhY3QoKTsKCiAgICAgIC8vIHVwZGF0ZSByZWNvcmQgdXNpbmcgY3VycmVudCByZWFkIHN0YXRlCiAgICAgIHZhciBzID0gYy5zdGF0ZS5jdXJyZW50LnJlYWQ7CiAgICAgIGlmKHMudXBkYXRlKGMsIGMucmVjb3JkKSkgewogICAgICAgIC8vIHNlZSBpZiB0aGVyZSBpcyBhIHByZXZpb3VzbHkgZnJhZ21lbnRlZCBtZXNzYWdlIHRoYXQgdGhlCiAgICAgICAgLy8gbmV3IHJlY29yZCdzIG1lc3NhZ2UgZnJhZ21lbnQgc2hvdWxkIGJlIGFwcGVuZGVkIHRvCiAgICAgICAgaWYoYy5mcmFnbWVudGVkICE9PSBudWxsKSB7CiAgICAgICAgICAvLyBpZiB0aGUgcmVjb3JkIHR5cGUgbWF0Y2hlcyBhIHByZXZpb3VzbHkgZnJhZ21lbnRlZAogICAgICAgICAgLy8gcmVjb3JkLCBhcHBlbmQgdGhlIHJlY29yZCBmcmFnbWVudCB0byBpdAogICAgICAgICAgaWYoYy5mcmFnbWVudGVkLnR5cGUgPT09IGMucmVjb3JkLnR5cGUpIHsKICAgICAgICAgICAgLy8gY29uY2F0ZW5hdGUgcmVjb3JkIGZyYWdtZW50cwogICAgICAgICAgICBjLmZyYWdtZW50ZWQuZnJhZ21lbnQucHV0QnVmZmVyKGMucmVjb3JkLmZyYWdtZW50KTsKICAgICAgICAgICAgYy5yZWNvcmQgPSBjLmZyYWdtZW50ZWQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBlcnJvciwgaW52YWxpZCBmcmFnbWVudGVkIHJlY29yZAogICAgICAgICAgICBjLmVycm9yKGMsIHsKICAgICAgICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBmcmFnbWVudGVkIHJlY29yZC4nLAogICAgICAgICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoKICAgICAgICAgICAgICAgICAgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVuZXhwZWN0ZWRfbWVzc2FnZQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyByZWNvcmQgaXMgbm93IHJlYWR5CiAgICAgICAgYy5yZWNvcmQucmVhZHkgPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgLyoqCiAgICogUGVyZm9ybXMgYSBoYW5kc2hha2UgdXNpbmcgdGhlIFRMUyBIYW5kc2hha2UgUHJvdG9jb2wsIGFzIGEgY2xpZW50LgogICAqCiAgICogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBjb25uZWN0aW9uIGlzIGluIGNsaWVudCBtb2RlLgogICAqCiAgICogQHBhcmFtIHNlc3Npb25JZCB0aGUgc2Vzc2lvbiBJRCB0byB1c2UsIG51bGwgdG8gc3RhcnQgYSBuZXcgb25lLgogICAqLwogIGMuaGFuZHNoYWtlID0gZnVuY3Rpb24oc2Vzc2lvbklkKSB7CiAgICAvLyBlcnJvciB0byBjYWxsIHRoaXMgaW4gbm9uLWNsaWVudCBtb2RlCiAgICBpZihjLmVudGl0eSAhPT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KSB7CiAgICAgIC8vIG5vdCBmYXRhbCBlcnJvcgogICAgICBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnQ2Fubm90IGluaXRpYXRlIGhhbmRzaGFrZSBhcyBhIHNlcnZlci4nLAogICAgICAgIGZhdGFsOiBmYWxzZQogICAgICB9KTsKICAgIH0gZWxzZSBpZihjLmhhbmRzaGFraW5nKSB7CiAgICAgIC8vIGhhbmRzaGFrZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLCBmYWlsIGJ1dCBub3QgZmF0YWwgZXJyb3IKICAgICAgYy5lcnJvcihjLCB7CiAgICAgICAgbWVzc2FnZTogJ0hhbmRzaGFrZSBhbHJlYWR5IGluIHByb2dyZXNzLicsCiAgICAgICAgZmF0YWw6IGZhbHNlCiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgLy8gY2xlYXIgZmFpbCBmbGFnIG9uIHJldXNlCiAgICAgIGlmKGMuZmFpbCAmJiAhYy5vcGVuICYmIGMuaGFuZHNoYWtlcyA9PT0gMCkgewogICAgICAgIGMuZmFpbCA9IGZhbHNlOwogICAgICB9CgogICAgICAvLyBub3cgaGFuZHNoYWtpbmcKICAgICAgYy5oYW5kc2hha2luZyA9IHRydWU7CgogICAgICAvLyBkZWZhdWx0IHRvIGJsYW5rIChuZXcgc2Vzc2lvbikKICAgICAgc2Vzc2lvbklkID0gc2Vzc2lvbklkIHx8ICcnOwoKICAgICAgLy8gaWYgYSBzZXNzaW9uIElEIHdhcyBzcGVjaWZpZWQsIHRyeSB0byBmaW5kIGl0IGluIHRoZSBjYWNoZQogICAgICB2YXIgc2Vzc2lvbiA9IG51bGw7CiAgICAgIGlmKHNlc3Npb25JZC5sZW5ndGggPiAwKSB7CiAgICAgICAgaWYoYy5zZXNzaW9uQ2FjaGUpIHsKICAgICAgICAgIHNlc3Npb24gPSBjLnNlc3Npb25DYWNoZS5nZXRTZXNzaW9uKHNlc3Npb25JZCk7CiAgICAgICAgfQoKICAgICAgICAvLyBtYXRjaGluZyBzZXNzaW9uIG5vdCBmb3VuZCBpbiBjYWNoZSwgY2xlYXIgc2Vzc2lvbiBJRAogICAgICAgIGlmKHNlc3Npb24gPT09IG51bGwpIHsKICAgICAgICAgIHNlc3Npb25JZCA9ICcnOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gbm8gc2Vzc2lvbiBnaXZlbiwgZ3JhYiBhIHNlc3Npb24gZnJvbSB0aGUgY2FjaGUsIGlmIGF2YWlsYWJsZQogICAgICBpZihzZXNzaW9uSWQubGVuZ3RoID09PSAwICYmIGMuc2Vzc2lvbkNhY2hlKSB7CiAgICAgICAgc2Vzc2lvbiA9IGMuc2Vzc2lvbkNhY2hlLmdldFNlc3Npb24oKTsKICAgICAgICBpZihzZXNzaW9uICE9PSBudWxsKSB7CiAgICAgICAgICBzZXNzaW9uSWQgPSBzZXNzaW9uLmlkOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gc2V0IHVwIHNlc3Npb24KICAgICAgYy5zZXNzaW9uID0gewogICAgICAgIGlkOiBzZXNzaW9uSWQsCiAgICAgICAgdmVyc2lvbjogbnVsbCwKICAgICAgICBjaXBoZXJTdWl0ZTogbnVsbCwKICAgICAgICBjb21wcmVzc2lvbk1ldGhvZDogbnVsbCwKICAgICAgICBzZXJ2ZXJDZXJ0aWZpY2F0ZTogbnVsbCwKICAgICAgICBjZXJ0aWZpY2F0ZVJlcXVlc3Q6IG51bGwsCiAgICAgICAgY2xpZW50Q2VydGlmaWNhdGU6IG51bGwsCiAgICAgICAgc3A6IHt9LAogICAgICAgIG1kNTogZm9yZ2UubWQubWQ1LmNyZWF0ZSgpLAogICAgICAgIHNoYTE6IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCkKICAgICAgfTsKCiAgICAgIC8vIHVzZSBleGlzdGluZyBzZXNzaW9uIGluZm9ybWF0aW9uCiAgICAgIGlmKHNlc3Npb24pIHsKICAgICAgICAvLyBvbmx5IHVwZGF0ZSB2ZXJzaW9uIG9uIGNvbm5lY3Rpb24sIHNlc3Npb24gdmVyc2lvbiBub3QgeWV0IHNldAogICAgICAgIGMudmVyc2lvbiA9IHNlc3Npb24udmVyc2lvbjsKICAgICAgICBjLnNlc3Npb24uc3AgPSBzZXNzaW9uLnNwOwogICAgICB9CgogICAgICAvLyBnZW5lcmF0ZSBuZXcgY2xpZW50IHJhbmRvbQogICAgICBjLnNlc3Npb24uc3AuY2xpZW50X3JhbmRvbSA9IHRscy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpOwoKICAgICAgLy8gY29ubmVjdGlvbiBub3cgb3BlbgogICAgICBjLm9wZW4gPSB0cnVlOwoKICAgICAgLy8gc2VuZCBoZWxsbwogICAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgICBkYXRhOiB0bHMuY3JlYXRlQ2xpZW50SGVsbG8oYykKICAgICAgfSkpOwogICAgICB0bHMuZmx1c2goYyk7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogQ2FsbGVkIHdoZW4gVExTIHByb3RvY29sIGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQgZnJvbSBzb21ld2hlcmUgYW5kIHNob3VsZAogICAqIGJlIHByb2Nlc3NlZCBieSB0aGUgVExTIGVuZ2luZS4KICAgKgogICAqIEBwYXJhbSBkYXRhIHRoZSBUTFMgcHJvdG9jb2wgZGF0YSwgYXMgYSBzdHJpbmcsIHRvIHByb2Nlc3MuCiAgICoKICAgKiBAcmV0dXJuIDAgaWYgdGhlIGRhdGEgY291bGQgYmUgcHJvY2Vzc2VkLCBvdGhlcndpc2UgdGhlIG51bWJlciBvZiBieXRlcwogICAqICAgICAgICAgcmVxdWlyZWQgZm9yIGRhdGEgdG8gYmUgcHJvY2Vzc2VkLgogICAqLwogIGMucHJvY2VzcyA9IGZ1bmN0aW9uKGRhdGEpIHsKICAgIHZhciBydmFsID0gMDsKCiAgICAvLyBidWZmZXIgaW5wdXQgZGF0YQogICAgaWYoZGF0YSkgewogICAgICBjLmlucHV0LnB1dEJ5dGVzKGRhdGEpOwogICAgfQoKICAgIC8vIHByb2Nlc3MgbmV4dCByZWNvcmQgaWYgbm8gZmFpbHVyZSwgcHJvY2VzcyB3aWxsIGJlIGNhbGxlZCBhZnRlcgogICAgLy8gZWFjaCByZWNvcmQgaXMgaGFuZGxlZCAoc2luY2UgaGFuZGxpbmcgY2FuIGJlIGFzeW5jaHJvbm91cykKICAgIGlmKCFjLmZhaWwpIHsKICAgICAgLy8gcmVzZXQgcmVjb3JkIGlmIHJlYWR5IGFuZCBub3cgZW1wdHkKICAgICAgaWYoYy5yZWNvcmQgIT09IG51bGwgJiYKICAgICAgICBjLnJlY29yZC5yZWFkeSAmJiBjLnJlY29yZC5mcmFnbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICBjLnJlY29yZCA9IG51bGw7CiAgICAgIH0KCiAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgcmVjb3JkLCB0cnkgdG8gcmVhZCByZWNvcmQgaGVhZGVyCiAgICAgIGlmKGMucmVjb3JkID09PSBudWxsKSB7CiAgICAgICAgcnZhbCA9IF9yZWFkUmVjb3JkSGVhZGVyKGMpOwogICAgICB9CgogICAgICAvLyByZWFkIHRoZSBuZXh0IHJlY29yZCAoaWYgcmVjb3JkIG5vdCB5ZXQgcmVhZHkpCiAgICAgIGlmKCFjLmZhaWwgJiYgYy5yZWNvcmQgIT09IG51bGwgJiYgIWMucmVjb3JkLnJlYWR5KSB7CiAgICAgICAgcnZhbCA9IF9yZWFkUmVjb3JkKGMpOwogICAgICB9CgogICAgICAvLyByZWNvcmQgcmVhZHkgdG8gYmUgaGFuZGxlZCwgdXBkYXRlIGVuZ2luZSBzdGF0ZQogICAgICBpZighYy5mYWlsICYmIGMucmVjb3JkICE9PSBudWxsICYmIGMucmVjb3JkLnJlYWR5KSB7CiAgICAgICAgX3VwZGF0ZShjLCBjLnJlY29yZCk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBSZXF1ZXN0cyB0aGF0IGFwcGxpY2F0aW9uIGRhdGEgYmUgcGFja2FnZWQgaW50byBhIFRMUyByZWNvcmQuIFRoZQogICAqIHRsc0RhdGFSZWFkeSBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIFRMUyByZWNvcmQocykgaGF2ZSBiZWVuCiAgICogcHJlcGFyZWQuCiAgICoKICAgKiBAcGFyYW0gZGF0YSB0aGUgYXBwbGljYXRpb24gZGF0YSwgYXMgYSByYXcgJ2JpbmFyeScgZW5jb2RlZCBzdHJpbmcsIHRvCiAgICogICAgICAgICAgYmUgc2VudDsgdG8gc2VuZCB1dGYtMTYvdXRmLTggc3RyaW5nIGRhdGEsIHVzZSB0aGUgcmV0dXJuIHZhbHVlCiAgICogICAgICAgICAgb2YgdXRpbC5lbmNvZGVVdGY4KHN0cikuCiAgICoKICAgKiBAcmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAgKi8KICBjLnByZXBhcmUgPSBmdW5jdGlvbihkYXRhKSB7CiAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5hcHBsaWNhdGlvbl9kYXRhLAogICAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihkYXRhKQogICAgfSkpOwogICAgcmV0dXJuIHRscy5mbHVzaChjKTsKICB9OwoKICAvKioKICAgKiBSZXF1ZXN0cyB0aGF0IGEgaGVhcnRiZWF0IHJlcXVlc3QgYmUgcGFja2FnZWQgaW50byBhIFRMUyByZWNvcmQgZm9yCiAgICogdHJhbnNtaXNzaW9uLiBUaGUgdGxzRGF0YVJlYWR5IGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2hlbiBUTFMgcmVjb3JkKHMpCiAgICogaGF2ZSBiZWVuIHByZXBhcmVkLgogICAqCiAgICogV2hlbiBhIGhlYXJ0YmVhdCByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCwgdGhlIGhlYXJ0YmVhdFJlY2VpdmVkCiAgICogaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBtYXRjaGluZyBwYXlsb2FkLiBUaGlzIGhhbmRsZXIgY2FuCiAgICogYmUgdXNlZCB0byBjbGVhciBhIHJldHJhbnNtaXNzaW9uIHRpbWVyLCBldGMuCiAgICoKICAgKiBAcGFyYW0gcGF5bG9hZCB0aGUgaGVhcnRiZWF0IGRhdGEgdG8gc2VuZCBhcyB0aGUgcGF5bG9hZCBpbiB0aGUgbWVzc2FnZS4KICAgKiBAcGFyYW0gW3BheWxvYWRMZW5ndGhdIHRoZSBwYXlsb2FkIGxlbmd0aCB0byB1c2UsIGRlZmF1bHRzIHRvIHRoZQogICAqICAgICAgICAgIGFjdHVhbCBwYXlsb2FkIGxlbmd0aC4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogICAqLwogIGMucHJlcGFyZUhlYXJ0YmVhdFJlcXVlc3QgPSBmdW5jdGlvbihwYXlsb2FkLCBwYXlsb2FkTGVuZ3RoKSB7CiAgICBpZihwYXlsb2FkIGluc3RhbmNlb2YgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKSB7CiAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmJ5dGVzKCk7CiAgICB9CiAgICBpZih0eXBlb2YgcGF5bG9hZExlbmd0aCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgcGF5bG9hZExlbmd0aCA9IHBheWxvYWQubGVuZ3RoOwogICAgfQogICAgYy5leHBlY3RlZEhlYXJ0YmVhdFBheWxvYWQgPSBwYXlsb2FkOwogICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGVhcnRiZWF0LAogICAgICBkYXRhOiB0bHMuY3JlYXRlSGVhcnRiZWF0KAogICAgICAgIHRscy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCwgcGF5bG9hZCwgcGF5bG9hZExlbmd0aCkKICAgIH0pKTsKICAgIHJldHVybiB0bHMuZmx1c2goYyk7CiAgfTsKCiAgLyoqCiAgICogQ2xvc2VzIHRoZSBjb25uZWN0aW9uIChzZW5kcyBhIGNsb3NlX25vdGlmeSBhbGVydCkuCiAgICoKICAgKiBAcGFyYW0gY2xlYXJGYWlsIHRydWUgdG8gY2xlYXIgdGhlIGZhaWwgZmxhZyAoZGVmYXVsdDogdHJ1ZSkuCiAgICovCiAgYy5jbG9zZSA9IGZ1bmN0aW9uKGNsZWFyRmFpbCkgewogICAgLy8gc2F2ZSBzZXNzaW9uIGlmIGNvbm5lY3Rpb24gZGlkbid0IGZhaWwKICAgIGlmKCFjLmZhaWwgJiYgYy5zZXNzaW9uQ2FjaGUgJiYgYy5zZXNzaW9uKSB7CiAgICAgIC8vIG9ubHkgbmVlZCB0byBwcmVzZXJ2ZSBzZXNzaW9uIElELCB2ZXJzaW9uLCBhbmQgc2VjdXJpdHkgcGFyYW1zCiAgICAgIHZhciBzZXNzaW9uID0gewogICAgICAgIGlkOiBjLnNlc3Npb24uaWQsCiAgICAgICAgdmVyc2lvbjogYy5zZXNzaW9uLnZlcnNpb24sCiAgICAgICAgc3A6IGMuc2Vzc2lvbi5zcAogICAgICB9OwogICAgICBzZXNzaW9uLnNwLmtleXMgPSBudWxsOwogICAgICBjLnNlc3Npb25DYWNoZS5zZXRTZXNzaW9uKHNlc3Npb24uaWQsIHNlc3Npb24pOwogICAgfQoKICAgIGlmKGMub3BlbikgewogICAgICAvLyBjb25uZWN0aW9uIG5vIGxvbmdlciBvcGVuLCBjbGVhciBpbnB1dAogICAgICBjLm9wZW4gPSBmYWxzZTsKICAgICAgYy5pbnB1dC5jbGVhcigpOwoKICAgICAgLy8gaWYgY29ubmVjdGVkIG9yIGhhbmRzaGFraW5nLCBzZW5kIGFuIGFsZXJ0CiAgICAgIGlmKGMuaXNDb25uZWN0ZWQgfHwgYy5oYW5kc2hha2luZykgewogICAgICAgIGMuaXNDb25uZWN0ZWQgPSBjLmhhbmRzaGFraW5nID0gZmFsc2U7CgogICAgICAgIC8vIHNlbmQgY2xvc2Vfbm90aWZ5IGFsZXJ0CiAgICAgICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVBbGVydChjLCB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLndhcm5pbmcsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeQogICAgICAgIH0pKTsKICAgICAgICB0bHMuZmx1c2goYyk7CiAgICAgIH0KCiAgICAgIC8vIGNhbGwgaGFuZGxlcgogICAgICBjLmNsb3NlZChjKTsKICAgIH0KCiAgICAvLyByZXNldCBUTFMgY29ubmVjdGlvbiwgZG8gbm90IGNsZWFyIGZhaWwgZmxhZwogICAgYy5yZXNldChjbGVhckZhaWwpOwogIH07CgogIHJldHVybiBjOwp9OwoKLyogVExTIEFQSSAqLwpmb3JnZS50bHMgPSBmb3JnZS50bHMgfHwge307CgovLyBleHBvc2Ugbm9uLWZ1bmN0aW9ucwpmb3IodmFyIGtleSBpbiB0bHMpIHsKICBpZih0eXBlb2YgdGxzW2tleV0gIT09ICdmdW5jdGlvbicpIHsKICAgIGZvcmdlLnRsc1trZXldID0gdGxzW2tleV07CiAgfQp9CgovLyBleHBvc2UgcHJmX3RsczEgZm9yIHRlc3RpbmcKZm9yZ2UudGxzLnByZl90bHMxID0gcHJmX1RMUzE7CgovLyBleHBvc2Ugc2hhMSBobWFjIG1ldGhvZApmb3JnZS50bHMuaG1hY19zaGExID0gaG1hY19zaGExOwoKLy8gZXhwb3NlIHNlc3Npb24gY2FjaGUgY3JlYXRpb24KZm9yZ2UudGxzLmNyZWF0ZVNlc3Npb25DYWNoZSA9IHRscy5jcmVhdGVTZXNzaW9uQ2FjaGU7CgovKioKICogQ3JlYXRlcyBhIG5ldyBUTFMgY29ubmVjdGlvbi4gVGhpcyBkb2VzIG5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucyBhYm91dCB0aGUKICogdHJhbnNwb3J0IGxheWVyIHRoYXQgVExTIGlzIHdvcmtpbmcgb24gdG9wIG9mLCBpZTogaXQgZG9lcyBub3QgYXNzdW1lIHRoZXJlCiAqIGlzIGEgVENQL0lQIGNvbm5lY3Rpb24gb3IgZXN0YWJsaXNoIG9uZS4gQSBUTFMgY29ubmVjdGlvbiBpcyB0b3RhbGx5CiAqIGFic3RyYWN0ZWQgYXdheSBmcm9tIHRoZSBsYXllciBpcyBydW5zIG9uIHRvcCBvZiwgaXQgbWVyZWx5IGVzdGFibGlzaGVzIGEKICogc2VjdXJlIGNoYW5uZWwgYmV0d2VlbiBhIGNsaWVudCIgYW5kIGEgInNlcnZlciIuCiAqCiAqIEEgVExTIGNvbm5lY3Rpb24gY29udGFpbnMgNCBjb25uZWN0aW9uIHN0YXRlczogcGVuZGluZyByZWFkIGFuZCB3cml0ZSwgYW5kCiAqIGN1cnJlbnQgcmVhZCBhbmQgd3JpdGUuCiAqCiAqIEF0IGluaXRpYWxpemF0aW9uLCB0aGUgY3VycmVudCByZWFkIGFuZCB3cml0ZSBzdGF0ZXMgd2lsbCBiZSBudWxsLiBPbmx5IG9uY2UKICogdGhlIHNlY3VyaXR5IHBhcmFtZXRlcnMgaGF2ZSBiZWVuIHNldCBhbmQgdGhlIGtleXMgaGF2ZSBiZWVuIGdlbmVyYXRlZCBjYW4KICogdGhlIHBlbmRpbmcgc3RhdGVzIGJlIGNvbnZlcnRlZCBpbnRvIGN1cnJlbnQgc3RhdGVzLiBDdXJyZW50IHN0YXRlcyB3aWxsIGJlCiAqIHVwZGF0ZWQgZm9yIGVhY2ggcmVjb3JkIHByb2Nlc3NlZC4KICoKICogQSBjdXN0b20gY2VydGlmaWNhdGUgdmVyaWZ5IGNhbGxiYWNrIG1heSBiZSBwcm92aWRlZCB0byBjaGVjayBpbmZvcm1hdGlvbgogKiBsaWtlIHRoZSBjb21tb24gbmFtZSBvbiB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUuIEl0IHdpbGwgYmUgY2FsbGVkIGZvcgogKiBldmVyeSBjZXJ0aWZpY2F0ZSBpbiB0aGUgY2hhaW4uIEl0IGhhcyB0aGUgZm9sbG93aW5nIHNpZ25hdHVyZToKICoKICogdmFyaWFibGUgZnVuYyhjLCBjZXJ0cywgaW5kZXgsIHByZVZlcmlmeSkKICogV2hlcmU6CiAqIGMgICAgICAgICBUaGUgVExTIGNvbm5lY3Rpb24KICogdmVyaWZpZWQgIFNldCB0byB0cnVlIGlmIGNlcnRpZmljYXRlIHdhcyB2ZXJpZmllZCwgb3RoZXJ3aXNlIHRoZSBhbGVydAogKiAgICAgICAgICAgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uIGZvciB3aHkgdGhlIGNlcnRpZmljYXRlIGZhaWxlZC4KICogZGVwdGggICAgIFRoZSBjdXJyZW50IGluZGV4IGluIHRoZSBjaGFpbiwgd2hlcmUgMCBpcyB0aGUgc2VydmVyJ3MgY2VydC4KICogY2VydHMgICAgIFRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiwgKk5PVEUqIGlmIHRoZSBzZXJ2ZXIgd2FzIGFub255bW91cyB0aGVuCiAqICAgICAgICAgICB0aGUgY2hhaW4gd2lsbCBiZSBlbXB0eS4KICoKICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIGFuZCBvbiBmYWlsdXJlIGVpdGhlciB0aGUgYXBwcm9wcmlhdGUKICogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uIG9yIGFuIG9iamVjdCB3aXRoICdhbGVydCcgc2V0IHRvIHRoZSBhcHByb3ByaWF0ZQogKiB0bHMuQWxlcnQuRGVzY3JpcHRpb24gYW5kICdtZXNzYWdlJyBzZXQgdG8gYSBjdXN0b20gZXJyb3IgbWVzc2FnZS4gSWYgdHJ1ZQogKiBpcyBub3QgcmV0dXJuZWQgdGhlbiB0aGUgY29ubmVjdGlvbiB3aWxsIGFib3J0IHVzaW5nLCBpbiBvcmRlciBvZgogKiBhdmFpbGFiaWxpdHksIGZpcnN0IHRoZSByZXR1cm5lZCBhbGVydCBkZXNjcmlwdGlvbiwgc2Vjb25kIHRoZSBwcmVWZXJpZnkKICogYWxlcnQgZGVzY3JpcHRpb24sIGFuZCBsYXN0bHkgdGhlIGRlZmF1bHQgJ2JhZF9jZXJ0aWZpY2F0ZScuCiAqCiAqIFRoZXJlIGFyZSB0aHJlZSBjYWxsYmFja3MgdGhhdCBjYW4gYmUgdXNlZCB0byBtYWtlIHVzZSBvZiBjbGllbnQtc2lkZQogKiBjZXJ0aWZpY2F0ZXMgd2hlcmUgZWFjaCB0YWtlcyB0aGUgVExTIGNvbm5lY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtZXRlcjoKICoKICogZ2V0Q2VydGlmaWNhdGUoY29ubiwgaGludCkKICogICBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIGhpbnQgYXMgdG8gd2hpY2ggY2VydGlmaWNhdGUgc2hvdWxkIGJlCiAqICAgcmV0dXJuZWQuIElmIHRoZSBjb25uZWN0aW9uIGVudGl0eSBpcyBhIGNsaWVudCwgdGhlbiB0aGUgaGludCB3aWxsIGJlCiAqICAgdGhlIENlcnRpZmljYXRlUmVxdWVzdCBtZXNzYWdlIGZyb20gdGhlIHNlcnZlciB0aGF0IGlzIHBhcnQgb2YgdGhlCiAqICAgVExTIHByb3RvY29sLiBJZiB0aGUgY29ubmVjdGlvbiBlbnRpdHkgaXMgYSBzZXJ2ZXIsIHRoZW4gaXQgd2lsbCBiZQogKiAgIHRoZSBzZXJ2ZXJuYW1lIGxpc3QgcHJvdmlkZWQgdmlhIGFuIFNOSSBleHRlbnNpb24gdGhlIENsaWVudEhlbGxvLCBpZgogKiAgIG9uZSB3YXMgcHJvdmlkZWQgKGVtcHR5IGFycmF5IGlmIG5vdCkuIFRoZSBoaW50IGNhbiBiZSBleGFtaW5lZCB0bwogKiAgIGRldGVybWluZSB3aGljaCBjZXJ0aWZpY2F0ZSB0byB1c2UgKGFkdmFuY2VkKS4gTW9zdCBpbXBsZW1lbnRhdGlvbnMKICogICB3aWxsIGp1c3QgcmV0dXJuIGEgY2VydGlmaWNhdGUuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhCiAqICAgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZSBvciBhbiBhcnJheSBvZiBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlcwogKiAgIHRoYXQgY29uc3RpdHV0ZSBhIGNlcnRpZmljYXRlIGNoYWluLCB3aXRoIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkvY2hhaW4KICogICBiZWluZyB0aGUgY2xpZW50J3MgY2VydGlmaWNhdGUuCiAqIGdldFByaXZhdGVLZXkoY29ubiwgY2VydGlmaWNhdGUpCiAqICAgVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYW4gZm9yZ2UucGtpIFguNTA5IGNlcnRpZmljYXRlIG9iamVjdCB0aGF0CiAqICAgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBrZXkuIFRoZSByZXR1cm4gdmFsdWUgbXVzdAogKiAgIGJlIGEgUEVNLWZvcm1hdHRlZCBwcml2YXRlIGtleS4KICogZ2V0U2lnbmF0dXJlKGNvbm4sIGJ5dGVzLCBjYWxsYmFjaykKICogICBUaGlzIGNhbGxiYWNrIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgZ2V0UHJpdmF0ZUtleSBpZiB0aGUgcHJpdmF0ZSBrZXkKICogICBpcyBub3QgZGlyZWN0bHkgYWNjZXNzaWJsZSBpbiBqYXZhc2NyaXB0IG9yIHNob3VsZCBub3QgYmUuIEZvcgogKiAgIGluc3RhbmNlLCBhIHNlY3VyZSBleHRlcm5hbCB3ZWIgc2VydmljZSBjb3VsZCBwcm92aWRlIHRoZSBzaWduYXR1cmUKICogICBpbiBleGNoYW5nZSBmb3IgYXBwcm9wcmlhdGUgY3JlZGVudGlhbHMuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEKICogICBzdHJpbmcgb2YgYnl0ZXMgdG8gYmUgc2lnbmVkIHRoYXQgYXJlIHBhcnQgb2YgdGhlIFRMUyBwcm90b2NvbC4gVGhlc2UKICogICBieXRlcyBhcmUgdXNlZCB0byB2ZXJpZnkgdGhhdCB0aGUgcHJpdmF0ZSBrZXkgZm9yIHRoZSBwcmV2aW91c2x5CiAqICAgcHJvdmlkZWQgY2xpZW50LXNpZGUgY2VydGlmaWNhdGUgaXMgYWNjZXNzaWJsZSB0byB0aGUgY2xpZW50LiBUaGUKICogICBjYWxsYmFjayBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgMiBwYXJhbWV0ZXJzLCB0aGUgVExTIGNvbm5lY3Rpb24KICogICBhbmQgdGhlIFJTQSBlbmNyeXB0ZWQgKHNpZ25lZCkgYnl0ZXMgYXMgYSBzdHJpbmcuIFRoaXMgY2FsbGJhY2sgbXVzdAogKiAgIGJlIGNhbGxlZCBvbmNlIHRoZSBzaWduYXR1cmUgaXMgcmVhZHkuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIGZvciB0aGlzIGNvbm5lY3Rpb246CiAqICAgc2VydmVyOiB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHNlcnZlci1zaWRlLCBmYWxzZSBmb3IgY2xpZW50LgogKiAgIHNlc3Npb25JZDogYSBzZXNzaW9uIElEIHRvIHJldXNlLCBudWxsIGZvciBhIG5ldyBjb25uZWN0aW9uLgogKiAgIGNhU3RvcmU6IGFuIGFycmF5IG9mIGNlcnRpZmljYXRlcyB0byB0cnVzdC4KICogICBzZXNzaW9uQ2FjaGU6IGEgc2Vzc2lvbiBjYWNoZSB0byB1c2UuCiAqICAgY2lwaGVyU3VpdGVzOiBhbiBvcHRpb25hbCBhcnJheSBvZiBjaXBoZXIgc3VpdGVzIHRvIHVzZSwKICogICAgIHNlZSB0bHMuQ2lwaGVyU3VpdGVzLgogKiAgIGNvbm5lY3RlZDogZnVuY3Rpb24oY29ubikgY2FsbGVkIHdoZW4gdGhlIGZpcnN0IGhhbmRzaGFrZSBjb21wbGV0ZXMuCiAqICAgdmlydHVhbEhvc3Q6IHRoZSB2aXJ0dWFsIHNlcnZlciBuYW1lIHRvIHVzZSBpbiBhIFRMUyBTTkkgZXh0ZW5zaW9uLgogKiAgIHZlcmlmeUNsaWVudDogdHJ1ZSB0byByZXF1aXJlIGEgY2xpZW50IGNlcnRpZmljYXRlIGluIHNlcnZlciBtb2RlLAogKiAgICAgJ29wdGlvbmFsJyB0byByZXF1ZXN0IG9uZSwgZmFsc2Ugbm90IHRvIChkZWZhdWx0OiBmYWxzZSkuCiAqICAgdmVyaWZ5OiBhIGhhbmRsZXIgdXNlZCB0byBjdXN0b20gdmVyaWZ5IGNlcnRpZmljYXRlcyBpbiB0aGUgY2hhaW4uCiAqICAgZ2V0Q2VydGlmaWNhdGU6IGFuIG9wdGlvbmFsIGNhbGxiYWNrIHVzZWQgdG8gZ2V0IGEgY2VydGlmaWNhdGUgb3IKICogICAgIGEgY2hhaW4gb2YgY2VydGlmaWNhdGVzIChhcyBhbiBhcnJheSkuCiAqICAgZ2V0UHJpdmF0ZUtleTogYW4gb3B0aW9uYWwgY2FsbGJhY2sgdXNlZCB0byBnZXQgYSBwcml2YXRlIGtleS4KICogICBnZXRTaWduYXR1cmU6IGFuIG9wdGlvbmFsIGNhbGxiYWNrIHVzZWQgdG8gZ2V0IGEgc2lnbmF0dXJlLgogKiAgIHRsc0RhdGFSZWFkeTogZnVuY3Rpb24oY29ubikgY2FsbGVkIHdoZW4gVExTIHByb3RvY29sIGRhdGEgaGFzIGJlZW4KICogICAgIHByZXBhcmVkIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkICh0eXBpY2FsbHkgc2VudCBvdmVyIGEgc29ja2V0CiAqICAgICBjb25uZWN0aW9uIHRvIGl0cyBkZXN0aW5hdGlvbiksIHJlYWQgZnJvbSBjb25uLnRsc0RhdGEgYnVmZmVyLgogKiAgIGRhdGFSZWFkeTogZnVuY3Rpb24oY29ubikgY2FsbGVkIHdoZW4gYXBwbGljYXRpb24gZGF0YSBoYXMKICogICAgIGJlZW4gcGFyc2VkIGZyb20gYSBUTFMgcmVjb3JkIGFuZCBzaG91bGQgYmUgY29uc3VtZWQgYnkgdGhlCiAqICAgICBhcHBsaWNhdGlvbiwgcmVhZCBmcm9tIGNvbm4uZGF0YSBidWZmZXIuCiAqICAgY2xvc2VkOiBmdW5jdGlvbihjb25uKSBjYWxsZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQuCiAqICAgZXJyb3I6IGZ1bmN0aW9uKGNvbm4sIGVycm9yKSBjYWxsZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAqICAgZGVmbGF0ZTogZnVuY3Rpb24oaW5CeXRlcykgaWYgcHJvdmlkZWQsIHdpbGwgZGVmbGF0ZSBUTFMgcmVjb3JkcyB1c2luZwogKiAgICAgdGhlIGRlZmxhdGUgYWxnb3JpdGhtIGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgaXQuCiAqICAgaW5mbGF0ZTogZnVuY3Rpb24oaW5CeXRlcykgaWYgcHJvdmlkZWQsIHdpbGwgaW5mbGF0ZSBUTFMgcmVjb3JkcyB1c2luZwogKiAgICAgdGhlIGRlZmxhdGUgYWxnb3JpdGhtIGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgaXQuCiAqCiAqIEByZXR1cm4gdGhlIG5ldyBUTFMgY29ubmVjdGlvbi4KICovCmZvcmdlLnRscy5jcmVhdGVDb25uZWN0aW9uID0gdGxzLmNyZWF0ZUNvbm5lY3Rpb247Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICd0bHMnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvdGxzJyxbCiAgJ3JlcXVpcmUnLAogICdtb2R1bGUnLAogICcuL2FzbjEnLAogICcuL2htYWMnLAogICcuL21kJywKICAnLi9wZW0nLAogICcuL3BraScsCiAgJy4vcmFuZG9tJywKICAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEEgSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBBRVMgQ2lwaGVyIFN1aXRlcyBmb3IgVExTLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCnZhciB0bHMgPSBmb3JnZS50bHM7CgovKioKICogU3VwcG9ydGVkIGNpcGhlciBzdWl0ZXMuCiAqLwp0bHMuQ2lwaGVyU3VpdGVzWydUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBJ10gPSB7CiAgaWQ6IFsweDAwLDB4MmZdLAogIG5hbWU6ICdUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBJywKICBpbml0U2VjdXJpdHlQYXJhbWV0ZXJzOiBmdW5jdGlvbihzcCkgewogICAgc3AuYnVsa19jaXBoZXJfYWxnb3JpdGhtID0gdGxzLkJ1bGtDaXBoZXJBbGdvcml0aG0uYWVzOwogICAgc3AuY2lwaGVyX3R5cGUgPSB0bHMuQ2lwaGVyVHlwZS5ibG9jazsKICAgIHNwLmVuY19rZXlfbGVuZ3RoID0gMTY7CiAgICBzcC5ibG9ja19sZW5ndGggPSAxNjsKICAgIHNwLmZpeGVkX2l2X2xlbmd0aCA9IDE2OwogICAgc3AucmVjb3JkX2l2X2xlbmd0aCA9IDE2OwogICAgc3AubWFjX2FsZ29yaXRobSA9IHRscy5NQUNBbGdvcml0aG0uaG1hY19zaGExOwogICAgc3AubWFjX2xlbmd0aCA9IDIwOwogICAgc3AubWFjX2tleV9sZW5ndGggPSAyMDsKICB9LAogIGluaXRDb25uZWN0aW9uU3RhdGU6IGluaXRDb25uZWN0aW9uU3RhdGUKfTsKdGxzLkNpcGhlclN1aXRlc1snVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSddID0gewogIGlkOiBbMHgwMCwweDM1XSwKICBuYW1lOiAnVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQScsCiAgaW5pdFNlY3VyaXR5UGFyYW1ldGVyczogZnVuY3Rpb24oc3ApIHsKICAgIHNwLmJ1bGtfY2lwaGVyX2FsZ29yaXRobSA9IHRscy5CdWxrQ2lwaGVyQWxnb3JpdGhtLmFlczsKICAgIHNwLmNpcGhlcl90eXBlID0gdGxzLkNpcGhlclR5cGUuYmxvY2s7CiAgICBzcC5lbmNfa2V5X2xlbmd0aCA9IDMyOwogICAgc3AuYmxvY2tfbGVuZ3RoID0gMTY7CiAgICBzcC5maXhlZF9pdl9sZW5ndGggPSAxNjsKICAgIHNwLnJlY29yZF9pdl9sZW5ndGggPSAxNjsKICAgIHNwLm1hY19hbGdvcml0aG0gPSB0bHMuTUFDQWxnb3JpdGhtLmhtYWNfc2hhMTsKICAgIHNwLm1hY19sZW5ndGggPSAyMDsKICAgIHNwLm1hY19rZXlfbGVuZ3RoID0gMjA7CiAgfSwKICBpbml0Q29ubmVjdGlvblN0YXRlOiBpbml0Q29ubmVjdGlvblN0YXRlCn07CgpmdW5jdGlvbiBpbml0Q29ubmVjdGlvblN0YXRlKHN0YXRlLCBjLCBzcCkgewogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IGZvcmdlLnRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CgogIC8vIGNpcGhlciBzZXR1cAogIHN0YXRlLnJlYWQuY2lwaGVyU3RhdGUgPSB7CiAgICBpbml0OiBmYWxzZSwKICAgIGNpcGhlcjogZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCdBRVMtQ0JDJywgY2xpZW50ID8KICAgICAgc3Aua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5IDogc3Aua2V5cy5jbGllbnRfd3JpdGVfa2V5KSwKICAgIGl2OiBjbGllbnQgPyBzcC5rZXlzLnNlcnZlcl93cml0ZV9JViA6IHNwLmtleXMuY2xpZW50X3dyaXRlX0lWCiAgfTsKICBzdGF0ZS53cml0ZS5jaXBoZXJTdGF0ZSA9IHsKICAgIGluaXQ6IGZhbHNlLAogICAgY2lwaGVyOiBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKCdBRVMtQ0JDJywgY2xpZW50ID8KICAgICAgc3Aua2V5cy5jbGllbnRfd3JpdGVfa2V5IDogc3Aua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5KSwKICAgIGl2OiBjbGllbnQgPyBzcC5rZXlzLmNsaWVudF93cml0ZV9JViA6IHNwLmtleXMuc2VydmVyX3dyaXRlX0lWCiAgfTsKICBzdGF0ZS5yZWFkLmNpcGhlckZ1bmN0aW9uID0gZGVjcnlwdF9hZXNfY2JjX3NoYTE7CiAgc3RhdGUud3JpdGUuY2lwaGVyRnVuY3Rpb24gPSBlbmNyeXB0X2Flc19jYmNfc2hhMTsKCiAgLy8gTUFDIHNldHVwCiAgc3RhdGUucmVhZC5tYWNMZW5ndGggPSBzdGF0ZS53cml0ZS5tYWNMZW5ndGggPSBzcC5tYWNfbGVuZ3RoOwogIHN0YXRlLnJlYWQubWFjRnVuY3Rpb24gPSBzdGF0ZS53cml0ZS5tYWNGdW5jdGlvbiA9IHRscy5obWFjX3NoYTE7Cn0KCi8qKgogKiBFbmNyeXB0cyB0aGUgVExTQ29tcHJlc3NlZCByZWNvcmQgaW50byBhIFRMU0NpcGhlclRleHQgcmVjb3JkIHVzaW5nIEFFUwogKiBpbiBDQkMgbW9kZS4KICoKICogQHBhcmFtIHJlY29yZCB0aGUgVExTQ29tcHJlc3NlZCByZWNvcmQgdG8gZW5jcnlwdC4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KZnVuY3Rpb24gZW5jcnlwdF9hZXNfY2JjX3NoYTEocmVjb3JkLCBzKSB7CiAgdmFyIHJ2YWwgPSBmYWxzZTsKCiAgLy8gYXBwZW5kIE1BQyB0byBmcmFnbWVudCwgdXBkYXRlIHNlcXVlbmNlIG51bWJlcgogIHZhciBtYWMgPSBzLm1hY0Z1bmN0aW9uKHMubWFjS2V5LCBzLnNlcXVlbmNlTnVtYmVyLCByZWNvcmQpOwogIHJlY29yZC5mcmFnbWVudC5wdXRCeXRlcyhtYWMpOwogIHMudXBkYXRlU2VxdWVuY2VOdW1iZXIoKTsKCiAgLy8gVExTIDEuMSsgdXNlIGFuIGV4cGxpY2l0IElWIGV2ZXJ5IHRpbWUgdG8gcHJvdGVjdCBhZ2FpbnN0IENCQyBhdHRhY2tzCiAgdmFyIGl2OwogIGlmKHJlY29yZC52ZXJzaW9uLm1pbm9yID09PSB0bHMuVmVyc2lvbnMuVExTXzFfMC5taW5vcikgewogICAgLy8gdXNlIHRoZSBwcmUtZ2VuZXJhdGVkIElWIHdoZW4gaW5pdGlhbGl6aW5nIGZvciBUTFMgMS4wLCBvdGhlcndpc2UgdXNlCiAgICAvLyB0aGUgcmVzaWR1ZSBmcm9tIHRoZSBwcmV2aW91cyBlbmNyeXB0aW9uCiAgICBpdiA9IHMuY2lwaGVyU3RhdGUuaW5pdCA/IG51bGwgOiBzLmNpcGhlclN0YXRlLml2OwogIH0gZWxzZSB7CiAgICBpdiA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpOwogIH0KCiAgcy5jaXBoZXJTdGF0ZS5pbml0ID0gdHJ1ZTsKCiAgLy8gc3RhcnQgY2lwaGVyCiAgdmFyIGNpcGhlciA9IHMuY2lwaGVyU3RhdGUuY2lwaGVyOwogIGNpcGhlci5zdGFydCh7aXY6IGl2fSk7CgogIC8vIFRMUyAxLjErIHdyaXRlIElWIGludG8gb3V0cHV0CiAgaWYocmVjb3JkLnZlcnNpb24ubWlub3IgPj0gdGxzLlZlcnNpb25zLlRMU18xXzEubWlub3IpIHsKICAgIGNpcGhlci5vdXRwdXQucHV0Qnl0ZXMoaXYpOwogIH0KCiAgLy8gZG8gZW5jcnlwdGlvbiAoZGVmYXVsdCBwYWRkaW5nIGlzIGFwcHJvcHJpYXRlKQogIGNpcGhlci51cGRhdGUocmVjb3JkLmZyYWdtZW50KTsKICBpZihjaXBoZXIuZmluaXNoKGVuY3J5cHRfYWVzX2NiY19zaGExX3BhZGRpbmcpKSB7CiAgICAvLyBzZXQgcmVjb3JkIGZyYWdtZW50IHRvIGVuY3J5cHRlZCBvdXRwdXQKICAgIHJlY29yZC5mcmFnbWVudCA9IGNpcGhlci5vdXRwdXQ7CiAgICByZWNvcmQubGVuZ3RoID0gcmVjb3JkLmZyYWdtZW50Lmxlbmd0aCgpOwogICAgcnZhbCA9IHRydWU7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEhhbmRsZXMgcGFkZGluZyBmb3IgYWVzX2NiY19zaGExIGluIGVuY3J5cHQgbW9kZS4KICoKICogQHBhcmFtIGJsb2NrU2l6ZSB0aGUgYmxvY2sgc2l6ZS4KICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBidWZmZXIuCiAqIEBwYXJhbSBkZWNyeXB0IHRydWUgaW4gZGVjcnlwdCBtb2RlLCBmYWxzZSBpbiBlbmNyeXB0IG1vZGUuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KZnVuY3Rpb24gZW5jcnlwdF9hZXNfY2JjX3NoYTFfcGFkZGluZyhibG9ja1NpemUsIGlucHV0LCBkZWNyeXB0KSB7CiAgLyogVGhlIGVuY3J5cHRlZCBkYXRhIGxlbmd0aCAoVExTQ2lwaGVydGV4dC5sZW5ndGgpIGlzIG9uZSBtb3JlIHRoYW4gdGhlIHN1bQogICBvZiBTZWN1cml0eVBhcmFtZXRlcnMuYmxvY2tfbGVuZ3RoLCBUTFNDb21wcmVzc2VkLmxlbmd0aCwKICAgU2VjdXJpdHlQYXJhbWV0ZXJzLm1hY19sZW5ndGgsIGFuZCBwYWRkaW5nX2xlbmd0aC4KCiAgIFRoZSBwYWRkaW5nIG1heSBiZSBhbnkgbGVuZ3RoIHVwIHRvIDI1NSBieXRlcyBsb25nLCBhcyBsb25nIGFzIGl0IHJlc3VsdHMgaW4KICAgdGhlIFRMU0NpcGhlcnRleHQubGVuZ3RoIGJlaW5nIGFuIGludGVncmFsIG11bHRpcGxlIG9mIHRoZSBibG9jayBsZW5ndGguCiAgIExlbmd0aHMgbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5IG1pZ2h0IGJlIGRlc2lyYWJsZSB0byBmcnVzdHJhdGUgYXR0YWNrcyBvbiBhCiAgIHByb3RvY29sIGJhc2VkIG9uIGFuYWx5c2lzIG9mIHRoZSBsZW5ndGhzIG9mIGV4Y2hhbmdlZCBtZXNzYWdlcy4gRWFjaCB1aW50OAogICBpbiB0aGUgcGFkZGluZyBkYXRhIHZlY3RvciBtdXN0IGJlIGZpbGxlZCB3aXRoIHRoZSBwYWRkaW5nIGxlbmd0aCB2YWx1ZS4KCiAgIFRoZSBwYWRkaW5nIGxlbmd0aCBzaG91bGQgYmUgc3VjaCB0aGF0IHRoZSB0b3RhbCBzaXplIG9mIHRoZQogICBHZW5lcmljQmxvY2tDaXBoZXIgc3RydWN0dXJlIGlzIGEgbXVsdGlwbGUgb2YgdGhlIGNpcGhlcidzIGJsb2NrIGxlbmd0aC4KICAgTGVnYWwgdmFsdWVzIHJhbmdlIGZyb20gemVybyB0byAyNTUsIGluY2x1c2l2ZS4gVGhpcyBsZW5ndGggc3BlY2lmaWVzIHRoZQogICBsZW5ndGggb2YgdGhlIHBhZGRpbmcgZmllbGQgZXhjbHVzaXZlIG9mIHRoZSBwYWRkaW5nX2xlbmd0aCBmaWVsZCBpdHNlbGYuCgogICBUaGlzIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIFBLQ1MjNyBiZWNhdXNlIHRoZSBwYWRkaW5nIHZhbHVlIGlzIDEKICAgbGVzcyB0aGFuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHBhZGRpbmcgYnl0ZXMgaWYgeW91IGluY2x1ZGUgdGhlCiAgIHBhZGRpbmdfbGVuZ3RoIHVpbnQ4IGl0c2VsZiBhcyBhIHBhZGRpbmcgYnl0ZS4gKi8KICBpZighZGVjcnlwdCkgewogICAgLy8gZ2V0IHRoZSBudW1iZXIgb2YgcGFkZGluZyBieXRlcyByZXF1aXJlZCB0byByZWFjaCB0aGUgYmxvY2tTaXplIGFuZAogICAgLy8gc3VidHJhY3QgMSBmb3IgdGhlIHBhZGRpbmcgdmFsdWUgKHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHBhZGRpbmdfbGVuZ3RoCiAgICAvLyB1aW50OCkKICAgIHZhciBwYWRkaW5nID0gYmxvY2tTaXplIC0gKGlucHV0Lmxlbmd0aCgpICUgYmxvY2tTaXplKTsKICAgIGlucHV0LmZpbGxXaXRoQnl0ZShwYWRkaW5nIC0gMSwgcGFkZGluZyk7CiAgfQogIHJldHVybiB0cnVlOwp9CgovKioKICogSGFuZGxlcyBwYWRkaW5nIGZvciBhZXNfY2JjX3NoYTEgaW4gZGVjcnlwdCBtb2RlLgogKgogKiBAcGFyYW0gYmxvY2tTaXplIHRoZSBibG9jayBzaXplLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBvdXRwdXQgYnVmZmVyLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIGluIGRlY3J5cHQgbW9kZSwgZmFsc2UgaW4gZW5jcnlwdCBtb2RlLgogKgogKiBAcmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICovCmZ1bmN0aW9uIGRlY3J5cHRfYWVzX2NiY19zaGExX3BhZGRpbmcoYmxvY2tTaXplLCBvdXRwdXQsIGRlY3J5cHQpIHsKICB2YXIgcnZhbCA9IHRydWU7CiAgaWYoZGVjcnlwdCkgewogICAgLyogVGhlIGxhc3QgYnl0ZSBpbiB0aGUgb3V0cHV0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHBhZGRpbmcgYnl0ZXMgbm90CiAgICAgIGluY2x1ZGluZyBpdHNlbGYuIEVhY2ggb2YgdGhlIHBhZGRpbmcgYnl0ZXMgaGFzIHRoZSBzYW1lIHZhbHVlIGFzIHRoYXQKICAgICAgbGFzdCBieXRlIChrbm93biBhcyB0aGUgcGFkZGluZ19sZW5ndGgpLiBIZXJlIHdlIGNoZWNrIGFsbCBwYWRkaW5nCiAgICAgIGJ5dGVzIHRvIGVuc3VyZSB0aGV5IGhhdmUgdGhlIHZhbHVlIG9mIHBhZGRpbmdfbGVuZ3RoIGV2ZW4gaWYgb25lIG9mCiAgICAgIHRoZW0gaXMgYmFkIGluIG9yZGVyIHRvIHdhcmQtb2ZmIHRpbWluZyBhdHRhY2tzLiAqLwogICAgdmFyIGxlbiA9IG91dHB1dC5sZW5ndGgoKTsKICAgIHZhciBwYWRkaW5nTGVuZ3RoID0gb3V0cHV0Lmxhc3QoKTsKICAgIGZvcih2YXIgaSA9IGxlbiAtIDEgLSBwYWRkaW5nTGVuZ3RoOyBpIDwgbGVuIC0gMTsgKytpKSB7CiAgICAgIHJ2YWwgPSBydmFsICYmIChvdXRwdXQuYXQoaSkgPT0gcGFkZGluZ0xlbmd0aCk7CiAgICB9CiAgICBpZihydmFsKSB7CiAgICAgIC8vIHRyaW0gb2ZmIHBhZGRpbmcgYnl0ZXMgYW5kIGxhc3QgcGFkZGluZyBsZW5ndGggYnl0ZQogICAgICBvdXRwdXQudHJ1bmNhdGUocGFkZGluZ0xlbmd0aCArIDEpOwogICAgfQogIH0KICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIERlY3J5cHRzIGEgVExTQ2lwaGVyVGV4dCByZWNvcmQgaW50byBhIFRMU0NvbXByZXNzZWQgcmVjb3JkIHVzaW5nCiAqIEFFUyBpbiBDQkMgbW9kZS4KICoKICogQHBhcmFtIHJlY29yZCB0aGUgVExTQ2lwaGVyVGV4dCByZWNvcmQgdG8gZGVjcnlwdC4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdmFyIGNvdW50ID0gMDsKZnVuY3Rpb24gZGVjcnlwdF9hZXNfY2JjX3NoYTEocmVjb3JkLCBzKSB7CiAgdmFyIHJ2YWwgPSBmYWxzZTsKICArK2NvdW50OwoKICB2YXIgaXY7CiAgaWYocmVjb3JkLnZlcnNpb24ubWlub3IgPT09IHRscy5WZXJzaW9ucy5UTFNfMV8wLm1pbm9yKSB7CiAgICAvLyB1c2UgcHJlLWdlbmVyYXRlZCBJViB3aGVuIGluaXRpYWxpemluZyBmb3IgVExTIDEuMCwgb3RoZXJ3aXNlIHVzZSB0aGUKICAgIC8vIHJlc2lkdWUgZnJvbSB0aGUgcHJldmlvdXMgZGVjcnlwdGlvbgogICAgaXYgPSBzLmNpcGhlclN0YXRlLmluaXQgPyBudWxsIDogcy5jaXBoZXJTdGF0ZS5pdjsKICB9IGVsc2UgewogICAgLy8gVExTIDEuMSsgdXNlIGFuIGV4cGxpY2l0IElWIGV2ZXJ5IHRpbWUgdG8gcHJvdGVjdCBhZ2FpbnN0IENCQyBhdHRhY2tzCiAgICAvLyB0aGF0IGlzIGFwcGVuZGVkIHRvIHRoZSByZWNvcmQgZnJhZ21lbnQKICAgIGl2ID0gcmVjb3JkLmZyYWdtZW50LmdldEJ5dGVzKDE2KTsKICB9CgogIHMuY2lwaGVyU3RhdGUuaW5pdCA9IHRydWU7CgogIC8vIHN0YXJ0IGNpcGhlcgogIHZhciBjaXBoZXIgPSBzLmNpcGhlclN0YXRlLmNpcGhlcjsKICBjaXBoZXIuc3RhcnQoe2l2OiBpdn0pOwoKICAvLyBkbyBkZWNyeXB0aW9uCiAgY2lwaGVyLnVwZGF0ZShyZWNvcmQuZnJhZ21lbnQpOwogIHJ2YWwgPSBjaXBoZXIuZmluaXNoKGRlY3J5cHRfYWVzX2NiY19zaGExX3BhZGRpbmcpOwoKICAvLyBldmVuIGlmIGRlY3J5cHRpb24gZmFpbHMsIGtlZXAgZ29pbmcgdG8gbWluaW1pemUgdGltaW5nIGF0dGFja3MKCiAgLy8gZGVjcnlwdGVkIGRhdGE6CiAgLy8gZmlyc3QgKGxlbiAtIDIwKSBieXRlcyA9IGFwcGxpY2F0aW9uIGRhdGEKICAvLyBsYXN0IDIwIGJ5dGVzICAgICAgICAgID0gTUFDCiAgdmFyIG1hY0xlbiA9IHMubWFjTGVuZ3RoOwoKICAvLyBjcmVhdGUgYSByYW5kb20gTUFDIHRvIGNoZWNrIGFnYWluc3Qgc2hvdWxkIHRoZSBtYWMgbGVuZ3RoIGNoZWNrIGZhaWwKICAvLyBOb3RlOiBkbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgdGhlIGZhaWx1cmUgdG8ga2VlcCB0aW1pbmcgY29uc2lzdGVudAogIHZhciBtYWMgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXNTeW5jKG1hY0xlbik7CgogIC8vIGdldCBmcmFnbWVudCBhbmQgbWFjCiAgdmFyIGxlbiA9IGNpcGhlci5vdXRwdXQubGVuZ3RoKCk7CiAgaWYobGVuID49IG1hY0xlbikgewogICAgcmVjb3JkLmZyYWdtZW50ID0gY2lwaGVyLm91dHB1dC5nZXRCeXRlcyhsZW4gLSBtYWNMZW4pOwogICAgbWFjID0gY2lwaGVyLm91dHB1dC5nZXRCeXRlcyhtYWNMZW4pOwogIH0gZWxzZSB7CiAgICAvLyBiYWQgZGF0YSwgYnV0IGdldCBieXRlcyBhbnl3YXkgdG8gdHJ5IHRvIGtlZXAgdGltaW5nIGNvbnNpc3RlbnQKICAgIHJlY29yZC5mcmFnbWVudCA9IGNpcGhlci5vdXRwdXQuZ2V0Qnl0ZXMoKTsKICB9CiAgcmVjb3JkLmZyYWdtZW50ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIocmVjb3JkLmZyYWdtZW50KTsKICByZWNvcmQubGVuZ3RoID0gcmVjb3JkLmZyYWdtZW50Lmxlbmd0aCgpOwoKICAvLyBzZWUgaWYgZGF0YSBpbnRlZ3JpdHkgY2hlY2tzIG91dCwgdXBkYXRlIHNlcXVlbmNlIG51bWJlcgogIHZhciBtYWMyID0gcy5tYWNGdW5jdGlvbihzLm1hY0tleSwgcy5zZXF1ZW5jZU51bWJlciwgcmVjb3JkKTsKICBzLnVwZGF0ZVNlcXVlbmNlTnVtYmVyKCk7CiAgcnZhbCA9IGNvbXBhcmVNYWNzKHMubWFjS2V5LCBtYWMsIG1hYzIpICYmIHJ2YWw7CiAgcmV0dXJuIHJ2YWw7Cn0KCi8qKgogKiBTYWZlbHkgY29tcGFyZSB0d28gTUFDcy4gVGhpcyBmdW5jdGlvbiB3aWxsIGNvbXBhcmUgdHdvIE1BQ3MgaW4gYSB3YXkKICogdGhhdCBwcm90ZWN0cyBhZ2FpbnN0IHRpbWluZyBhdHRhY2tzLgogKgogKiBUT0RPOiBFeHBvc2UgZWxzZXdoZXJlIGFzIGEgdXRpbGl0eSBBUEkuCiAqCiAqIFNlZTogaHR0cHM6Ly93d3cubmNjZ3JvdXAudHJ1c3QvdXMvYWJvdXQtdXMvbmV3c3Jvb20tYW5kLWV2ZW50cy9ibG9nLzIwMTEvZmVicnVhcnkvZG91YmxlLWhtYWMtdmVyaWZpY2F0aW9uLwogKgogKiBAcGFyYW0ga2V5IHRoZSBNQUMga2V5IHRvIHVzZS4KICogQHBhcmFtIG1hYzEgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAqIEBwYXJhbSBtYWMyIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKgogKiBAcmV0dXJuIHRydWUgaWYgdGhlIE1BQ3MgYXJlIHRoZSBzYW1lLCBmYWxzZSBpZiBub3QuCiAqLwpmdW5jdGlvbiBjb21wYXJlTWFjcyhrZXksIG1hYzEsIG1hYzIpIHsKICB2YXIgaG1hYyA9IGZvcmdlLmhtYWMuY3JlYXRlKCk7CgogIGhtYWMuc3RhcnQoJ1NIQTEnLCBrZXkpOwogIGhtYWMudXBkYXRlKG1hYzEpOwogIG1hYzEgPSBobWFjLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CgogIGhtYWMuc3RhcnQobnVsbCwgbnVsbCk7CiAgaG1hYy51cGRhdGUobWFjMik7CiAgbWFjMiA9IGhtYWMuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKCiAgcmV0dXJuIG1hYzEgPT09IG1hYzI7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2Flc0NpcGhlclN1aXRlcyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9hZXNDaXBoZXJTdWl0ZXMnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9hZXMnLCAnLi90bHMnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogRGVidWdnaW5nIHN1cHBvcnQgZm9yIHdlYiBhcHBsaWNhdGlvbnMuCiAqCiAqIEBhdXRob3IgRGF2aWQgSS4gTGVobiA8ZGxlaG5AZGlnaXRhbGJhemFhci5jb20+CiAqCiAqIENvcHlyaWdodCAyMDA4LTIwMTMgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovKiBERUJVRyBBUEkgKi8KZm9yZ2UuZGVidWcgPSBmb3JnZS5kZWJ1ZyB8fCB7fTsKCi8vIFByaXZhdGUgc3RvcmFnZSBmb3IgZGVidWdnaW5nLgovLyBVc2VmdWwgdG8gZXhwb3NlIGRhdGEgdGhhdCBpcyBvdGhlcndpc2UgdW52aWV3YWJsZSBiZWhpbmQgY2xvc3VyZXMuCi8vIE5PVEU6IHJlbWVtYmVyIHRoYXQgdGhpcyBjYW4gaG9sZCByZWZlcmVuY2VzIHRvIGRhdGEgYW5kIGNhdXNlIGxlYWtzIQovLyBmb3JtYXQgaXMgImZvcmdlLl9kZWJ1Zy48bW9kdWxlbmFtZT4uPGRhdGFuYW1lPiA9IGRhdGEiCi8vIEV4YW1wbGU6Ci8vIChmdW5jdGlvbigpIHsKLy8gICB2YXIgY2F0ID0gJ2ZvcmdlLnRlc3QuVGVzdCc7IC8vIGRlYnVnZ2luZyBjYXRlZ29yeQovLyAgIHZhciBzU3RhdGUgPSB7Li4ufTsgLy8gbG9jYWwgc3RhdGUKLy8gICBmb3JnZS5kZWJ1Zy5zZXQoY2F0LCAnc1N0YXRlJywgc1N0YXRlKTsKLy8gfSkoKTsKZm9yZ2UuZGVidWcuc3RvcmFnZSA9IHt9OwoKLyoqCiAqIEdldHMgZGVidWcgZGF0YS4gT21pdCBuYW1lIGZvciBhbGwgY2F0IGRhdGEgIE9taXQgbmFtZSBhbmQgY2F0IGZvcgogKiBhbGwgZGF0YS4KICoKICogQHBhcmFtIGNhdCBuYW1lIG9mIGRlYnVnZ2luZyBjYXRlZ29yeS4KICogQHBhcmFtIG5hbWUgbmFtZSBvZiBkYXRhIHRvIGdldCAob3B0aW9uYWwpLgogKiBAcmV0dXJuIG9iamVjdCB3aXRoIHJlcXVlc3RlZCBkZWJ1ZyBkYXRhIG9yIHVuZGVmaW5lZC4KICovCmZvcmdlLmRlYnVnLmdldCA9IGZ1bmN0aW9uKGNhdCwgbmFtZSkgewogIHZhciBydmFsOwogIGlmKHR5cGVvZihjYXQpID09PSAndW5kZWZpbmVkJykgewogICAgcnZhbCA9IGZvcmdlLmRlYnVnLnN0b3JhZ2U7CiAgfSBlbHNlIGlmKGNhdCBpbiBmb3JnZS5kZWJ1Zy5zdG9yYWdlKSB7CiAgICBpZih0eXBlb2YobmFtZSkgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHJ2YWwgPSBmb3JnZS5kZWJ1Zy5zdG9yYWdlW2NhdF07CiAgICB9IGVsc2UgewogICAgICBydmFsID0gZm9yZ2UuZGVidWcuc3RvcmFnZVtjYXRdW25hbWVdOwogICAgfQogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTZXRzIGRlYnVnIGRhdGEuCiAqCiAqIEBwYXJhbSBjYXQgbmFtZSBvZiBkZWJ1Z2dpbmcgY2F0ZWdvcnkuCiAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgZGF0YSB0byBzZXQuCiAqIEBwYXJhbSBkYXRhIGRhdGEgdG8gc2V0LgogKi8KZm9yZ2UuZGVidWcuc2V0ID0gZnVuY3Rpb24oY2F0LCBuYW1lLCBkYXRhKSB7CiAgaWYoIShjYXQgaW4gZm9yZ2UuZGVidWcuc3RvcmFnZSkpIHsKICAgIGZvcmdlLmRlYnVnLnN0b3JhZ2VbY2F0XSA9IHt9OwogIH0KICBmb3JnZS5kZWJ1Zy5zdG9yYWdlW2NhdF1bbmFtZV0gPSBkYXRhOwp9OwoKLyoqCiAqIENsZWFycyBkZWJ1ZyBkYXRhLiBPbWl0IG5hbWUgZm9yIGFsbCBjYXQgZGF0YS4gT21pdCBuYW1lIGFuZCBjYXQgZm9yCiAqIGFsbCBkYXRhLgogKgogKiBAcGFyYW0gY2F0IG5hbWUgb2YgZGVidWdnaW5nIGNhdGVnb3J5LgogKiBAcGFyYW0gbmFtZSBuYW1lIG9mIGRhdGEgdG8gY2xlYXIgb3Igb21pdCB0byBjbGVhciBlbnRpcmUgY2F0ZWdvcnkuCiAqLwpmb3JnZS5kZWJ1Zy5jbGVhciA9IGZ1bmN0aW9uKGNhdCwgbmFtZSkgewogIGlmKHR5cGVvZihjYXQpID09PSAndW5kZWZpbmVkJykgewogICAgZm9yZ2UuZGVidWcuc3RvcmFnZSA9IHt9OwogIH0gZWxzZSBpZihjYXQgaW4gZm9yZ2UuZGVidWcuc3RvcmFnZSkgewogICAgaWYodHlwZW9mKG5hbWUpID09PSAndW5kZWZpbmVkJykgewogICAgICBkZWxldGUgZm9yZ2UuZGVidWcuc3RvcmFnZVtjYXRdOwogICAgfSBlbHNlIHsKICAgICAgZGVsZXRlIGZvcmdlLmRlYnVnLnN0b3JhZ2VbY2F0XVtuYW1lXTsKICAgIH0KICB9Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdkZWJ1Zyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9kZWJ1ZycsWydyZXF1aXJlJywgJ21vZHVsZSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIFJTQS1LRU0uCiAqCiAqIEBhdXRob3IgTGF1dGFybyBDb3p6YW5pIFJvZHJpZ3VlegogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQgTGF1dGFybyBDb3p6YW5pIDxsYXV0YXJvLmNvenphbmlAc2N5dGwuY29tPgogKiBDb3B5cmlnaHQgKGMpIDIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Cgpmb3JnZS5rZW0gPSBmb3JnZS5rZW0gfHwge307Cgp2YXIgQmlnSW50ZWdlciA9IGZvcmdlLmpzYm4uQmlnSW50ZWdlcjsKCi8qKgogKiBUaGUgQVBJIGZvciB0aGUgUlNBIEtleSBFbmNhcHN1bGF0aW9uIE1lY2hhbmlzbSAoUlNBLUtFTSkgZnJvbSBJU08gMTgwMzMtMi4KICovCmZvcmdlLmtlbS5yc2EgPSB7fTsKCi8qKgogKiBDcmVhdGVzIGFuIFJTQSBLRU0gQVBJIG9iamVjdCBmb3IgZ2VuZXJhdGluZyBhIHNlY3JldCBhc3ltbWV0cmljIGtleS4KICoKICogVGhlIHN5bW1ldHJpYyBrZXkgbWF5IGJlIGdlbmVyYXRlZCB2aWEgYSBjYWxsIHRvICdlbmNyeXB0Jywgd2hpY2ggd2lsbAogKiBwcm9kdWNlIGEgY2lwaGVydGV4dCB0byBiZSB0cmFuc21pdHRlZCB0byB0aGUgcmVjaXBpZW50IGFuZCBhIGtleSB0byBiZQogKiBrZXB0IHNlY3JldC4gVGhlIGNpcGhlcnRleHQgaXMgYSBwYXJhbWV0ZXIgdG8gYmUgcGFzc2VkIHRvICdkZWNyeXB0JyB3aGljaAogKiB3aWxsIHByb2R1Y2UgdGhlIHNhbWUgc2VjcmV0IGtleSBmb3IgdGhlIHJlY2lwaWVudCB0byB1c2UgdG8gZGVjcnlwdCBhCiAqIG1lc3NhZ2UgdGhhdCB3YXMgZW5jcnlwdGVkIHdpdGggdGhlIHNlY3JldCBrZXkuCiAqCiAqIEBwYXJhbSBrZGYgdGhlIEtERiBBUEkgdG8gdXNlIChlZzogbmV3IGZvcmdlLmtlbS5rZGYxKCkpLgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIFtwcm5nXSBhIGN1c3RvbSBjcnlwdG8tc2VjdXJlIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciB0byB1c2UsCiAqICAgICAgICAgICAgdGhhdCBtdXN0IGRlZmluZSAiZ2V0Qnl0ZXNTeW5jIi4KICovCmZvcmdlLmtlbS5yc2EuY3JlYXRlID0gZnVuY3Rpb24oa2RmLCBvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIHBybmcgPSBvcHRpb25zLnBybmcgfHwgZm9yZ2UucmFuZG9tOwoKICB2YXIga2VtID0ge307CgogIC8qKgogICAqIEdlbmVyYXRlcyBhIHNlY3JldCBrZXkgYW5kIGl0cyBlbmNhcHN1bGF0aW9uLgogICAqCiAgICogQHBhcmFtIHB1YmxpY0tleSB0aGUgUlNBIHB1YmxpYyBrZXkgdG8gZW5jcnlwdCB3aXRoLgogICAqIEBwYXJhbSBrZXlMZW5ndGggdGhlIGxlbmd0aCwgaW4gYnl0ZXMsIG9mIHRoZSBzZWNyZXQga2V5IHRvIGdlbmVyYXRlLgogICAqCiAgICogQHJldHVybiBhbiBvYmplY3Qgd2l0aDoKICAgKiAgIGVuY2Fwc3VsYXRpb246IHRoZSBjaXBoZXJ0ZXh0IGZvciBnZW5lcmF0aW5nIHRoZSBzZWNyZXQga2V5LCBhcyBhCiAgICogICAgIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcy4KICAgKiAgIGtleTogdGhlIHNlY3JldCBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW5nIGEgbWVzc2FnZS4KICAgKi8KICBrZW0uZW5jcnlwdCA9IGZ1bmN0aW9uKHB1YmxpY0tleSwga2V5TGVuZ3RoKSB7CiAgICAvLyBnZW5lcmF0ZSBhIHJhbmRvbSByIHdoZXJlIDEgPiByID4gbgogICAgdmFyIGJ5dGVMZW5ndGggPSBNYXRoLmNlaWwocHVibGljS2V5Lm4uYml0TGVuZ3RoKCkgLyA4KTsKICAgIHZhciByOwogICAgZG8gewogICAgICByID0gbmV3IEJpZ0ludGVnZXIoCiAgICAgICAgZm9yZ2UudXRpbC5ieXRlc1RvSGV4KHBybmcuZ2V0Qnl0ZXNTeW5jKGJ5dGVMZW5ndGgpKSwKICAgICAgICAxNikubW9kKHB1YmxpY0tleS5uKTsKICAgIH0gd2hpbGUoci5lcXVhbHMoQmlnSW50ZWdlci5aRVJPKSk7CgogICAgLy8gcHJlcGVuZCByIHdpdGggemVyb3MKICAgIHIgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMoci50b1N0cmluZygxNikpOwogICAgdmFyIHplcm9zID0gYnl0ZUxlbmd0aCAtIHIubGVuZ3RoOwogICAgaWYoemVyb3MgPiAwKSB7CiAgICAgIHIgPSBmb3JnZS51dGlsLmZpbGxTdHJpbmcoU3RyaW5nLmZyb21DaGFyQ29kZSgwKSwgemVyb3MpICsgcjsKICAgIH0KCiAgICAvLyBlbmNyeXB0IHRoZSByYW5kb20KICAgIHZhciBlbmNhcHN1bGF0aW9uID0gcHVibGljS2V5LmVuY3J5cHQociwgJ05PTkUnKTsKCiAgICAvLyBnZW5lcmF0ZSB0aGUgc2VjcmV0IGtleQogICAgdmFyIGtleSA9IGtkZi5nZW5lcmF0ZShyLCBrZXlMZW5ndGgpOwoKICAgIHJldHVybiB7ZW5jYXBzdWxhdGlvbjogZW5jYXBzdWxhdGlvbiwga2V5OiBrZXl9OwogIH07CgogIC8qKgogICAqIERlY3J5cHRzIGFuIGVuY2Fwc3VsYXRlZCBzZWNyZXQga2V5LgogICAqCiAgICogQHBhcmFtIHByaXZhdGVLZXkgdGhlIFJTQSBwcml2YXRlIGtleSB0byBkZWNyeXB0IHdpdGguCiAgICogQHBhcmFtIGVuY2Fwc3VsYXRpb24gdGhlIGNpcGhlcnRleHQgZm9yIGdlbmVyYXRpbmcgdGhlIHNlY3JldCBrZXksIGFzCiAgICogICAgICAgICAgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAgICogQHBhcmFtIGtleUxlbmd0aCB0aGUgbGVuZ3RoLCBpbiBieXRlcywgb2YgdGhlIHNlY3JldCBrZXkgdG8gZ2VuZXJhdGUuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBzZWNyZXQga2V5IGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogICAqLwogIGtlbS5kZWNyeXB0ID0gZnVuY3Rpb24ocHJpdmF0ZUtleSwgZW5jYXBzdWxhdGlvbiwga2V5TGVuZ3RoKSB7CiAgICAvLyBkZWNyeXB0IHRoZSBlbmNhcHN1bGF0aW9uIGFuZCBnZW5lcmF0ZSB0aGUgc2VjcmV0IGtleQogICAgdmFyIHIgPSBwcml2YXRlS2V5LmRlY3J5cHQoZW5jYXBzdWxhdGlvbiwgJ05PTkUnKTsKICAgIHJldHVybiBrZGYuZ2VuZXJhdGUociwga2V5TGVuZ3RoKTsKICB9OwoKICByZXR1cm4ga2VtOwp9OwoKLy8gVE9ETzogYWRkIGZvcmdlLmtlbS5rZGYuY3JlYXRlKCdLREYxJywge21kOiAuLi4sIC4uLn0pIEFQST8KCi8qKgogKiBDcmVhdGVzIGEga2V5IGRlcml2YXRpb24gQVBJIG9iamVjdCB0aGF0IGltcGxlbWVudHMgS0RGMSBwZXIgSVNPIDE4MDMzLTIuCiAqCiAqIEBwYXJhbSBtZCB0aGUgaGFzaCBBUEkgdG8gdXNlLgogKiBAcGFyYW0gW2RpZ2VzdExlbmd0aF0gYW4gb3B0aW9uYWwgZGlnZXN0IGxlbmd0aCB0aGF0IG11c3QgYmUgcG9zaXRpdmUgYW5kCiAqICAgICAgICAgIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtZC5kaWdlc3RMZW5ndGguCiAqCiAqIEByZXR1cm4gYSBLREYxIEFQSSBvYmplY3QuCiAqLwpmb3JnZS5rZW0ua2RmMSA9IGZ1bmN0aW9uKG1kLCBkaWdlc3RMZW5ndGgpIHsKICBfY3JlYXRlS0RGKHRoaXMsIG1kLCAwLCBkaWdlc3RMZW5ndGggfHwgbWQuZGlnZXN0TGVuZ3RoKTsKfTsKCi8qKgogKiBDcmVhdGVzIGEga2V5IGRlcml2YXRpb24gQVBJIG9iamVjdCB0aGF0IGltcGxlbWVudHMgS0RGMiBwZXIgSVNPIDE4MDMzLTIuCiAqCiAqIEBwYXJhbSBtZCB0aGUgaGFzaCBBUEkgdG8gdXNlLgogKiBAcGFyYW0gW2RpZ2VzdExlbmd0aF0gYW4gb3B0aW9uYWwgZGlnZXN0IGxlbmd0aCB0aGF0IG11c3QgYmUgcG9zaXRpdmUgYW5kCiAqICAgICAgICAgIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtZC5kaWdlc3RMZW5ndGguCiAqCiAqIEByZXR1cm4gYSBLREYyIEFQSSBvYmplY3QuCiAqLwpmb3JnZS5rZW0ua2RmMiA9IGZ1bmN0aW9uKG1kLCBkaWdlc3RMZW5ndGgpIHsKICBfY3JlYXRlS0RGKHRoaXMsIG1kLCAxLCBkaWdlc3RMZW5ndGggfHwgbWQuZGlnZXN0TGVuZ3RoKTsKfTsKCi8qKgogKiBDcmVhdGVzIGEgS0RGMSBvciBLREYyIEFQSSBvYmplY3QuCiAqCiAqIEBwYXJhbSBtZCB0aGUgaGFzaCBBUEkgdG8gdXNlLgogKiBAcGFyYW0gY291bnRlclN0YXJ0IHRoZSBzdGFydGluZyBpbmRleCBmb3IgdGhlIGNvdW50ZXIuCiAqIEBwYXJhbSBkaWdlc3RMZW5ndGggdGhlIGRpZ2VzdCBsZW5ndGggdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBLREYgQVBJIG9iamVjdC4KICovCmZ1bmN0aW9uIF9jcmVhdGVLREYoa2RmLCBtZCwgY291bnRlclN0YXJ0LCBkaWdlc3RMZW5ndGgpIHsKICAvKioKICAgKiBHZW5lcmF0ZSBhIGtleSBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgKgogICAqIEBwYXJhbSB4IHRoZSBiaW5hcnktZW5jb2RlZCBieXRlIHN0cmluZyB0byBnZW5lcmF0ZSBhIGtleSBmcm9tLgogICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZSAodGhlIHNpemUgb2YgdGhlIGtleSkuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBrZXkgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcuCiAgICovCiAga2RmLmdlbmVyYXRlID0gZnVuY3Rpb24oeCwgbGVuZ3RoKSB7CiAgICB2YXIga2V5ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwoKICAgIC8vIHJ1biBjb3VudGVyIGZyb20gY291bnRlclN0YXJ0IHRvIGNlaWwobGVuZ3RoIC8gSGFzaC5sZW4pCiAgICB2YXIgayA9IE1hdGguY2VpbChsZW5ndGggLyBkaWdlc3RMZW5ndGgpICsgY291bnRlclN0YXJ0OwoKICAgIHZhciBjID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgZm9yKHZhciBpID0gY291bnRlclN0YXJ0OyBpIDwgazsgKytpKSB7CiAgICAgIC8vIEkyT1NQKGksIDQpOiBjb252ZXJ0IGNvdW50ZXIgdG8gYW4gb2N0ZXQgc3RyaW5nIG9mIDQgb2N0ZXRzCiAgICAgIGMucHV0SW50MzIoaSk7CgogICAgICAvLyBkaWdlc3QgJ3gnIGFuZCB0aGUgY291bnRlciBhbmQgYWRkIHRoZSByZXN1bHQgdG8gdGhlIGtleQogICAgICBtZC5zdGFydCgpOwogICAgICBtZC51cGRhdGUoeCArIGMuZ2V0Qnl0ZXMoKSk7CiAgICAgIHZhciBoYXNoID0gbWQuZGlnZXN0KCk7CiAgICAgIGtleS5wdXRCeXRlcyhoYXNoLmdldEJ5dGVzKGRpZ2VzdExlbmd0aCkpOwogICAgfQoKICAgIC8vIHRydW5jYXRlIHRvIHRoZSBjb3JyZWN0IGtleSBsZW5ndGgKICAgIGtleS50cnVuY2F0ZShrZXkubGVuZ3RoKCkgLSBsZW5ndGgpOwogICAgcmV0dXJuIGtleS5nZXRCeXRlcygpOwogIH07Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2tlbSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9rZW0nLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJywnLi9yYW5kb20nLCcuL2pzYm4nXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQ3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciBsb2dnaW5nIGluIGEgd2ViIGFwcGxpY2F0aW9uLgogKgogKiBAYXV0aG9yIERhdmlkIEkuIExlaG4gPGRsZWhuQGRpZ2l0YWxiYXphYXIuY29tPgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMyBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8qIExPRyBBUEkgKi8KZm9yZ2UubG9nID0gZm9yZ2UubG9nIHx8IHt9OwoKLyoqCiAqIEFwcGxpY2F0aW9uIGxvZ2dpbmcgc3lzdGVtLgogKgogKiBFYWNoIGxvZ2dlciBsZXZlbCBhdmFpbGFibGUgYXMgaXQncyBvd24gZnVuY3Rpb24gb2YgdGhlIGZvcm06CiAqICAgZm9yZ2UubG9nLmxldmVsKGNhdGVnb3J5LCBhcmdzLi4uKQogKiBUaGUgY2F0ZWdvcnkgaXMgYW4gYXJiaXRyYXJ5IHN0cmluZywgYW5kIHRoZSBhcmdzIGFyZSB0aGUgc2FtZSBhcwogKiBGaXJlYnVnJ3MgY29uc29sZS5sb2cgQVBJLiBCeSBkZWZhdWx0IHRoZSBjYWxsIHdpbGwgYmUgb3V0cHV0IGFzOgogKiAgICdMRVZFTCBbY2F0ZWdvcnldIDxhcmdzWzBdPiwgYXJnc1sxXSwgLi4uJwogKiBUaGlzIGVuYWJsZXMgcHJvcGVyICUgZm9ybWF0dGluZyB2aWEgdGhlIGZpcnN0IGFyZ3VtZW50LgogKiBFYWNoIGNhdGVnb3J5IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBidXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgd2l0aAogKiB0aGUgc2V0Q2F0ZWdvcnlFbmFibGVkKCkgZnVuY3Rpb24uCiAqLwovLyBsaXN0IG9mIGtub3duIGxldmVscwpmb3JnZS5sb2cubGV2ZWxzID0gWwogICdub25lJywgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbycsICdkZWJ1ZycsICd2ZXJib3NlJywgJ21heCddOwovLyBpbmZvIG9uIHRoZSBsZXZlbHMgaW5kZXhlZCBieSBuYW1lOgovLyAgIGluZGV4OiBsZXZlbCBpbmRleAovLyAgIG5hbWU6IHVwcGVyY2FzZWQgZGlzcGxheSBuYW1lCnZhciBzTGV2ZWxJbmZvID0ge307Ci8vIGxpc3Qgb2YgbG9nZ2Vycwp2YXIgc0xvZ2dlcnMgPSBbXTsKLyoqCiAqIFN0YW5kYXJkIGNvbnNvbGUgbG9nZ2VyLiBJZiBubyBjb25zb2xlIHN1cHBvcnQgaXMgZW5hYmxlZCB0aGlzIHdpbGwKICogcmVtYWluIG51bGwuIENoZWNrIGJlZm9yZSB1c2luZy4KICovCnZhciBzQ29uc29sZUxvZ2dlciA9IG51bGw7CgovLyBsb2dnZXIgZmxhZ3MKLyoqCiAqIExvY2sgdGhlIGxldmVsIGF0IHRoZSBjdXJyZW50IHZhbHVlLiBVc2VkIGluIGNhc2VzIHdoZXJlIHVzZXIgY29uZmlnIG1heQogKiBzZXQgdGhlIGxldmVsIHN1Y2ggdGhhdCBvbmx5IGNyaXRpY2FsIG1lc3NhZ2VzIGFyZSBzZWVuIGJ1dCBtb3JlIHZlcmJvc2UKICogbWVzc2FnZXMgYXJlIG5lZWRlZCBmb3IgZGVidWdnaW5nIG9yIG90aGVyIHB1cnBvc2VzLgogKi8KZm9yZ2UubG9nLkxFVkVMX0xPQ0tFRCA9ICgxIDw8IDEpOwovKioKICogQWx3YXlzIGNhbGwgbG9nIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgbG9nZ2luZyBzeXN0ZW0gd2lsbCBjaGVjayB0aGUKICogbWVzc2FnZSBsZXZlbCBhZ2FpbnN0IGxvZ2dlci5sZXZlbCBiZWZvcmUgY2FsbGluZyB0aGUgbG9nIGZ1bmN0aW9uLiBUaGlzCiAqIGZsYWcgYWxsb3dzIHRoZSBmdW5jdGlvbiB0byBkbyBpdHMgb3duIGNoZWNrLgogKi8KZm9yZ2UubG9nLk5PX0xFVkVMX0NIRUNLID0gKDEgPDwgMik7Ci8qKgogKiBQZXJmb3JtIG1lc3NhZ2UgaW50ZXJwb2xhdGlvbiB3aXRoIHRoZSBwYXNzZWQgYXJndW1lbnRzLiAiJSIgc3R5bGUKICogZmllbGRzIGluIGxvZyBtZXNzYWdlcyB3aWxsIGJlIHJlcGxhY2VkIGJ5IGFyZ3VtZW50cyBhcyBuZWVkZWQuIFNvbWUKICogbG9nZ2Vycywgc3VjaCBhcyBGaXJlYnVnLCBtYXkgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LiBUaGUgb3JpZ2luYWwgbG9nCiAqIG1lc3NhZ2Ugd2lsbCBiZSBhdmFpbGFibGUgYXMgJ21lc3NhZ2UnIGFuZCB0aGUgaW50ZXJwb2xhdGVkIHZlcnNpb24gd2lsbAogKiBiZSBhdmFpbGFibGUgYXMgJ2Z1bGxNZXNzYWdlJy4KICovCmZvcmdlLmxvZy5JTlRFUlBPTEFURSA9ICgxIDw8IDMpOwoKLy8gc2V0dXAgZWFjaCBsb2cgbGV2ZWwKZm9yKHZhciBpID0gMDsgaSA8IGZvcmdlLmxvZy5sZXZlbHMubGVuZ3RoOyArK2kpIHsKICB2YXIgbGV2ZWwgPSBmb3JnZS5sb2cubGV2ZWxzW2ldOwogIHNMZXZlbEluZm9bbGV2ZWxdID0gewogICAgaW5kZXg6IGksCiAgICBuYW1lOiBsZXZlbC50b1VwcGVyQ2FzZSgpCiAgfTsKfQoKLyoqCiAqIE1lc3NhZ2UgbG9nZ2VyLiBXaWxsIGRpc3BhdGNoIGEgbWVzc2FnZSB0byByZWdpc3RlcmVkIGxvZ2dlcnMgYXMgbmVlZGVkLgogKgogKiBAcGFyYW0gbWVzc2FnZSBtZXNzYWdlIG9iamVjdAogKi8KZm9yZ2UubG9nLmxvZ01lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlKSB7CiAgdmFyIG1lc3NhZ2VMZXZlbEluZGV4ID0gc0xldmVsSW5mb1ttZXNzYWdlLmxldmVsXS5pbmRleDsKICBmb3IodmFyIGkgPSAwOyBpIDwgc0xvZ2dlcnMubGVuZ3RoOyArK2kpIHsKICAgIHZhciBsb2dnZXIgPSBzTG9nZ2Vyc1tpXTsKICAgIGlmKGxvZ2dlci5mbGFncyAmIGZvcmdlLmxvZy5OT19MRVZFTF9DSEVDSykgewogICAgICBsb2dnZXIuZihtZXNzYWdlKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIGdldCBsb2dnZXIgbGV2ZWwKICAgICAgdmFyIGxvZ2dlckxldmVsSW5kZXggPSBzTGV2ZWxJbmZvW2xvZ2dlci5sZXZlbF0uaW5kZXg7CiAgICAgIC8vIGNoZWNrIGxldmVsCiAgICAgIGlmKG1lc3NhZ2VMZXZlbEluZGV4IDw9IGxvZ2dlckxldmVsSW5kZXgpIHsKICAgICAgICAvLyBtZXNzYWdlIGNyaXRpY2FsIGVub3VnaCwgY2FsbCBsb2dnZXIKICAgICAgICBsb2dnZXIuZihsb2dnZXIsIG1lc3NhZ2UpOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyoqCiAqIFNldHMgdGhlICdzdGFuZGFyZCcga2V5IG9uIGEgbWVzc2FnZSBvYmplY3QgdG86CiAqICJMRVZFTCBbY2F0ZWdvcnldICIgKyBtZXNzYWdlCiAqCiAqIEBwYXJhbSBtZXNzYWdlIGEgbWVzc2FnZSBsb2cgb2JqZWN0CiAqLwpmb3JnZS5sb2cucHJlcGFyZVN0YW5kYXJkID0gZnVuY3Rpb24obWVzc2FnZSkgewogIGlmKCEoJ3N0YW5kYXJkJyBpbiBtZXNzYWdlKSkgewogICAgbWVzc2FnZS5zdGFuZGFyZCA9CiAgICAgIHNMZXZlbEluZm9bbWVzc2FnZS5sZXZlbF0ubmFtZSArCiAgICAgIC8vJyAnICsgK21lc3NhZ2UudGltZXN0YW1wICsKICAgICAgJyBbJyArIG1lc3NhZ2UuY2F0ZWdvcnkgKyAnXSAnICsKICAgICAgbWVzc2FnZS5tZXNzYWdlOwogIH0KfTsKCi8qKgogKiBTZXRzIHRoZSAnZnVsbCcga2V5IG9uIGEgbWVzc2FnZSBvYmplY3QgdG8gdGhlIG9yaWdpbmFsIG1lc3NhZ2UKICogaW50ZXJwb2xhdGVkIHZpYSAlIGZvcm1hdHRpbmcgd2l0aCB0aGUgbWVzc2FnZSBhcmd1bWVudHMuCiAqCiAqIEBwYXJhbSBtZXNzYWdlIGEgbWVzc2FnZSBsb2cgb2JqZWN0LgogKi8KZm9yZ2UubG9nLnByZXBhcmVGdWxsID0gZnVuY3Rpb24obWVzc2FnZSkgewogIGlmKCEoJ2Z1bGwnIGluIG1lc3NhZ2UpKSB7CiAgICAvLyBjb3B5IGFyZ3MgYW5kIGluc2VydCBtZXNzYWdlIGF0IHRoZSBmcm9udAogICAgdmFyIGFyZ3MgPSBbbWVzc2FnZS5tZXNzYWdlXTsKICAgIGFyZ3MgPSBhcmdzLmNvbmNhdChbXSB8fCBtZXNzYWdlWydhcmd1bWVudHMnXSk7CiAgICAvLyBmb3JtYXQgdGhlIG1lc3NhZ2UKICAgIG1lc3NhZ2UuZnVsbCA9IGZvcmdlLnV0aWwuZm9ybWF0LmFwcGx5KHRoaXMsIGFyZ3MpOwogIH0KfTsKCi8qKgogKiBBcHBsaWVzIGJvdGggcHJlcGFyc2VTdGFuZGFyZCgpIGFuZCBwcmVwYXJlRnVsbCgpIHRvIGEgbWVzc2FnZSBvYmplY3QgYW5kCiAqIHN0b3JlIHJlc3VsdCBpbiAnc3RhbmRhcmRGdWxsJy4KICoKICogQHBhcmFtIG1lc3NhZ2UgYSBtZXNzYWdlIGxvZyBvYmplY3QuCiAqLwpmb3JnZS5sb2cucHJlcGFyZVN0YW5kYXJkRnVsbCA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKICBpZighKCdzdGFuZGFyZEZ1bGwnIGluIG1lc3NhZ2UpKSB7CiAgICAvLyBGSVhNRSBpbXBsZW1lbnQgJ3N0YW5kYXJkRnVsbCcgbG9nZ2luZwogICAgZm9yZ2UubG9nLnByZXBhcmVTdGFuZGFyZChtZXNzYWdlKTsKICAgIG1lc3NhZ2Uuc3RhbmRhcmRGdWxsID0gbWVzc2FnZS5zdGFuZGFyZDsKICB9Cn07CgovLyBjcmVhdGUgbG9nIGxldmVsIGZ1bmN0aW9ucwppZih0cnVlKSB7CiAgLy8gbGV2ZWxzIGZvciB3aGljaCB3ZSB3YW50IGZ1bmN0aW9ucwogIHZhciBsZXZlbHMgPSBbJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbycsICdkZWJ1ZycsICd2ZXJib3NlJ107CiAgZm9yKHZhciBpID0gMDsgaSA8IGxldmVscy5sZW5ndGg7ICsraSkgewogICAgLy8gd3JhcCBpbiBhIGZ1bmN0aW9uIHRvIGVuc3VyZSBwcm9wZXIgbGV2ZWwgdmFyIGlzIHBhc3NlZAogICAgKGZ1bmN0aW9uKGxldmVsKSB7CiAgICAgIC8vIGNyZWF0ZSBmdW5jdGlvbiBmb3IgdGhpcyBsZXZlbAogICAgICBmb3JnZS5sb2dbbGV2ZWxdID0gZnVuY3Rpb24oY2F0ZWdvcnksIG1lc3NhZ2UvKiwgYXJncy4uLiovKSB7CiAgICAgICAgLy8gY29udmVydCBhcmd1bWVudHMgdG8gcmVhbCBhcnJheSwgcmVtb3ZlIGNhdGVnb3J5IGFuZCBtZXNzYWdlCiAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLnNsaWNlKDIpOwogICAgICAgIC8vIGNyZWF0ZSBtZXNzYWdlIG9iamVjdAogICAgICAgIC8vIE5vdGU6IGludGVycG9sYXRpb24gYW5kIHN0YW5kYXJkIGZvcm1hdHRpbmcgaXMgZG9uZSBsYXppbHkKICAgICAgICB2YXIgbXNnID0gewogICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLAogICAgICAgICAgbGV2ZWw6IGxldmVsLAogICAgICAgICAgY2F0ZWdvcnk6IGNhdGVnb3J5LAogICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSwKICAgICAgICAgICdhcmd1bWVudHMnOiBhcmdzCiAgICAgICAgICAvKnN0YW5kYXJkKi8KICAgICAgICAgIC8qZnVsbCovCiAgICAgICAgICAvKmZ1bGxNZXNzYWdlKi8KICAgICAgICB9OwogICAgICAgIC8vIHByb2Nlc3MgdGhpcyBtZXNzYWdlCiAgICAgICAgZm9yZ2UubG9nLmxvZ01lc3NhZ2UobXNnKTsKICAgICAgfTsKICAgIH0pKGxldmVsc1tpXSk7CiAgfQp9CgovKioKICogQ3JlYXRlcyBhIG5ldyBsb2dnZXIgd2l0aCBzcGVjaWZpZWQgY3VzdG9tIGxvZ2dpbmcgZnVuY3Rpb24uCiAqCiAqIFRoZSBsb2dnaW5nIGZ1bmN0aW9uIGhhcyBhIHNpZ25hdHVyZSBvZjoKICogICBmdW5jdGlvbihsb2dnZXIsIG1lc3NhZ2UpCiAqIGxvZ2dlcjogY3VycmVudCBsb2dnZXIKICogbWVzc2FnZTogb2JqZWN0OgogKiAgIGxldmVsOiBsZXZlbCBpZAogKiAgIGNhdGVnb3J5OiBjYXRlZ29yeQogKiAgIG1lc3NhZ2U6IHN0cmluZyBtZXNzYWdlCiAqICAgYXJndW1lbnRzOiBBcnJheSBvZiBleHRyYSBhcmd1bWVudHMKICogICBmdWxsTWVzc2FnZTogaW50ZXJwb2xhdGVkIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cyBpZiBJTlRFUlBPTEFURSBmbGFnIHNldAogKgogKiBAcGFyYW0gbG9nRnVuY3Rpb24gYSBsb2dnaW5nIGZ1bmN0aW9uIHdoaWNoIHRha2VzIGEgbG9nIG1lc3NhZ2Ugb2JqZWN0CiAqICAgICAgICAgIGFzIGEgcGFyYW1ldGVyLgogKgogKiBAcmV0dXJuIGEgbG9nZ2VyIG9iamVjdC4KICovCmZvcmdlLmxvZy5tYWtlTG9nZ2VyID0gZnVuY3Rpb24obG9nRnVuY3Rpb24pIHsKICB2YXIgbG9nZ2VyID0gewogICAgZmxhZ3M6IDAsCiAgICBmOiBsb2dGdW5jdGlvbgogIH07CiAgZm9yZ2UubG9nLnNldExldmVsKGxvZ2dlciwgJ25vbmUnKTsKICByZXR1cm4gbG9nZ2VyOwp9OwoKLyoqCiAqIFNldHMgdGhlIGN1cnJlbnQgbG9nIGxldmVsIG9uIGEgbG9nZ2VyLgogKgogKiBAcGFyYW0gbG9nZ2VyIHRoZSB0YXJnZXQgbG9nZ2VyLgogKiBAcGFyYW0gbGV2ZWwgdGhlIG5ldyBtYXhpbXVtIGxvZyBsZXZlbCBhcyBhIHN0cmluZy4KICoKICogQHJldHVybiB0cnVlIGlmIHNldCwgZmFsc2UgaWYgbm90LgogKi8KZm9yZ2UubG9nLnNldExldmVsID0gZnVuY3Rpb24obG9nZ2VyLCBsZXZlbCkgewogIHZhciBydmFsID0gZmFsc2U7CiAgaWYobG9nZ2VyICYmICEobG9nZ2VyLmZsYWdzICYgZm9yZ2UubG9nLkxFVkVMX0xPQ0tFRCkpIHsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3JnZS5sb2cubGV2ZWxzLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhciBhVmFsaWRMZXZlbCA9IGZvcmdlLmxvZy5sZXZlbHNbaV07CiAgICAgIGlmKGxldmVsID09IGFWYWxpZExldmVsKSB7CiAgICAgICAgLy8gc2V0IGxldmVsCiAgICAgICAgbG9nZ2VyLmxldmVsID0gbGV2ZWw7CiAgICAgICAgcnZhbCA9IHRydWU7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIExvY2tzIHRoZSBsb2cgbGV2ZWwgYXQgaXRzIGN1cnJlbnQgdmFsdWUuCiAqCiAqIEBwYXJhbSBsb2dnZXIgdGhlIHRhcmdldCBsb2dnZXIuCiAqIEBwYXJhbSBsb2NrIGJvb2xlYW4gbG9jayB2YWx1ZSwgZGVmYXVsdCB0byB0cnVlLgogKi8KZm9yZ2UubG9nLmxvY2sgPSBmdW5jdGlvbihsb2dnZXIsIGxvY2spIHsKICBpZih0eXBlb2YgbG9jayA9PT0gJ3VuZGVmaW5lZCcgfHwgbG9jaykgewogICAgbG9nZ2VyLmZsYWdzIHw9IGZvcmdlLmxvZy5MRVZFTF9MT0NLRUQ7CiAgfSBlbHNlIHsKICAgIGxvZ2dlci5mbGFncyAmPSB+Zm9yZ2UubG9nLkxFVkVMX0xPQ0tFRDsKICB9Cn07CgovKioKICogQWRkcyBhIGxvZ2dlci4KICoKICogQHBhcmFtIGxvZ2dlciB0aGUgbG9nZ2VyIG9iamVjdC4KICovCmZvcmdlLmxvZy5hZGRMb2dnZXIgPSBmdW5jdGlvbihsb2dnZXIpIHsKICBzTG9nZ2Vycy5wdXNoKGxvZ2dlcik7Cn07CgovLyBzZXR1cCB0aGUgY29uc29sZSBsb2dnZXIgaWYgcG9zc2libGUsIGVsc2UgY3JlYXRlIGZha2UgY29uc29sZS5sb2cKaWYodHlwZW9mKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiAnbG9nJyBpbiBjb25zb2xlKSB7CiAgdmFyIGxvZ2dlcjsKICBpZihjb25zb2xlLmVycm9yICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLmluZm8gJiYgY29uc29sZS5kZWJ1ZykgewogICAgLy8gbG9va3MgbGlrZSBGaXJlYnVnLXN0eWxlIGxvZ2dpbmcgaXMgYXZhaWxhYmxlCiAgICAvLyBsZXZlbCBoYW5kbGVycyBtYXAKICAgIHZhciBsZXZlbEhhbmRsZXJzID0gewogICAgICBlcnJvcjogY29uc29sZS5lcnJvciwKICAgICAgd2FybmluZzogY29uc29sZS53YXJuLAogICAgICBpbmZvOiBjb25zb2xlLmluZm8sCiAgICAgIGRlYnVnOiBjb25zb2xlLmRlYnVnLAogICAgICB2ZXJib3NlOiBjb25zb2xlLmRlYnVnCiAgICB9OwogICAgdmFyIGYgPSBmdW5jdGlvbihsb2dnZXIsIG1lc3NhZ2UpIHsKICAgICAgZm9yZ2UubG9nLnByZXBhcmVTdGFuZGFyZChtZXNzYWdlKTsKICAgICAgdmFyIGhhbmRsZXIgPSBsZXZlbEhhbmRsZXJzW21lc3NhZ2UubGV2ZWxdOwogICAgICAvLyBwcmVwZW5kIHN0YW5kYXJkIG1lc3NhZ2UgYW5kIGNvbmNhdCBhcmdzCiAgICAgIHZhciBhcmdzID0gW21lc3NhZ2Uuc3RhbmRhcmRdOwogICAgICBhcmdzID0gYXJncy5jb25jYXQobWVzc2FnZVsnYXJndW1lbnRzJ10uc2xpY2UoKSk7CiAgICAgIC8vIGFwcGx5IHRvIGxvdy1sZXZlbCBjb25zb2xlIGZ1bmN0aW9uCiAgICAgIGhhbmRsZXIuYXBwbHkoY29uc29sZSwgYXJncyk7CiAgICB9OwogICAgbG9nZ2VyID0gZm9yZ2UubG9nLm1ha2VMb2dnZXIoZik7CiAgfSBlbHNlIHsKICAgIC8vIG9ubHkgYXBwZWFyIHRvIGhhdmUgYmFzaWMgY29uc29sZS5sb2cKICAgIHZhciBmID0gZnVuY3Rpb24obG9nZ2VyLCBtZXNzYWdlKSB7CiAgICAgIGZvcmdlLmxvZy5wcmVwYXJlU3RhbmRhcmRGdWxsKG1lc3NhZ2UpOwogICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLnN0YW5kYXJkRnVsbCk7CiAgICB9OwogICAgbG9nZ2VyID0gZm9yZ2UubG9nLm1ha2VMb2dnZXIoZik7CiAgfQogIGZvcmdlLmxvZy5zZXRMZXZlbChsb2dnZXIsICdkZWJ1ZycpOwogIGZvcmdlLmxvZy5hZGRMb2dnZXIobG9nZ2VyKTsKICBzQ29uc29sZUxvZ2dlciA9IGxvZ2dlcjsKfSBlbHNlIHsKICAvLyBkZWZpbmUgZmFrZSBjb25zb2xlLmxvZyB0byBhdm9pZCBwb3RlbnRpYWwgc2NyaXB0IGVycm9ycyBvbgogIC8vIGJyb3dzZXJzIHRoYXQgZG8gbm90IGhhdmUgY29uc29sZSBsb2dnaW5nCiAgY29uc29sZSA9IHsKICAgIGxvZzogZnVuY3Rpb24oKSB7fQogIH07Cn0KCi8qCiAqIENoZWNrIGZvciBsb2dnaW5nIGNvbnRyb2wgcXVlcnkgdmFycy4KICoKICogY29uc29sZS5sZXZlbD08bGV2ZWwtbmFtZT4KICogU2V0J3MgdGhlIGNvbnNvbGUgbG9nIGxldmVsIGJ5IG5hbWUuICBVc2VmdWwgdG8gb3ZlcnJpZGUgZGVmYXVsdHMgYW5kCiAqIGFsbG93IG1vcmUgdmVyYm9zZSBsb2dnaW5nIGJlZm9yZSBhIHVzZXIgY29uZmlnIGlzIGxvYWRlZC4KICoKICogY29uc29sZS5sb2NrPTx0cnVlfGZhbHNlPgogKiBMb2NrIHRoZSBjb25zb2xlIGxvZyBsZXZlbCBhdCB3aGF0ZXZlciBsZXZlbCBpdCBpcyBzZXQgYXQuICBUaGlzIGlzIHJ1bgogKiBhZnRlciBjb25zb2xlLmxldmVsIGlzIHByb2Nlc3NlZC4gIFVzZWZ1bCB0byBmb3JjZSBhIGxldmVsIG9mIHZlcmJvc2l0eQogKiB0aGF0IGNvdWxkIG90aGVyd2lzZSBiZSBsaW1pdGVkIGJ5IGEgdXNlciBjb25maWcuCiAqLwppZihzQ29uc29sZUxvZ2dlciAhPT0gbnVsbCkgewogIHZhciBxdWVyeSA9IGZvcmdlLnV0aWwuZ2V0UXVlcnlWYXJpYWJsZXMoKTsKICBpZignY29uc29sZS5sZXZlbCcgaW4gcXVlcnkpIHsKICAgIC8vIHNldCB3aXRoIGxhc3QgdmFsdWUKICAgIGZvcmdlLmxvZy5zZXRMZXZlbCgKICAgICAgc0NvbnNvbGVMb2dnZXIsIHF1ZXJ5Wydjb25zb2xlLmxldmVsJ10uc2xpY2UoLTEpWzBdKTsKICB9CiAgaWYoJ2NvbnNvbGUubG9jaycgaW4gcXVlcnkpIHsKICAgIC8vIHNldCB3aXRoIGxhc3QgdmFsdWUKICAgIHZhciBsb2NrID0gcXVlcnlbJ2NvbnNvbGUubG9jayddLnNsaWNlKC0xKVswXTsKICAgIGlmKGxvY2sgPT0gJ3RydWUnKSB7CiAgICAgIGZvcmdlLmxvZy5sb2NrKHNDb25zb2xlTG9nZ2VyKTsKICAgIH0KICB9Cn0KCi8vIHByb3ZpZGUgcHVibGljIGFjY2VzcyB0byBjb25zb2xlIGxvZ2dlcgpmb3JnZS5sb2cuY29uc29sZUxvZ2dlciA9IHNDb25zb2xlTG9nZ2VyOwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnbG9nJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL2xvZycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBQS0NTIzcgdjEuNS4KICoKICogQGF1dGhvciBTdGVmYW4gU2llZ2wKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE1IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqCiAqIEN1cnJlbnRseSB0aGlzIGltcGxlbWVudGF0aW9uIG9ubHkgc3VwcG9ydHMgQ29udGVudFR5cGUgb2YgRW52ZWxvcGVkRGF0YSwKICogRW5jcnlwdGVkRGF0YSwgb3IgU2lnbmVkRGF0YSBhdCB0aGUgcm9vdCBsZXZlbC4gVGhlIHRvcCBsZXZlbCBlbGVtZW50cyBtYXkKICogY29udGFpbiBvbmx5IGEgQ29udGVudEluZm8gb2YgQ29udGVudFR5cGUgRGF0YSwgaS5lLiBwbGFpbiBkYXRhLiBGdXJ0aGVyCiAqIG5lc3RpbmcgaXMgbm90ICh5ZXQpIHN1cHBvcnRlZC4KICoKICogVGhlIEZvcmdlIHZhbGlkYXRvcnMgZm9yIFBLQ1MgIzcncyBBU04uMSBzdHJ1Y3R1cmVzIGFyZSBhdmFpbGFibGUgZnJvbQogKiBhIHNlcGFyYXRlIGZpbGUgcGtjczdhc24xLmpzLCBzaW5jZSB0aG9zZSBhcmUgcmVmZXJlbmNlZCBmcm9tIG90aGVyCiAqIFBLQ1Mgc3RhbmRhcmRzIGxpa2UgUEtDUyAjMTIuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLy8gc2hvcnRjdXQgZm9yIEFTTi4xIEFQSQp2YXIgYXNuMSA9IGZvcmdlLmFzbjE7CgovLyBzaG9ydGN1dCBmb3IgUEtDUyM3IEFQSQp2YXIgcDcgPSBmb3JnZS5wa2NzNyA9IGZvcmdlLnBrY3M3IHx8IHt9OwoKLyoqCiAqIENvbnZlcnRzIGEgUEtDUyM3IG1lc3NhZ2UgZnJvbSBQRU0gZm9ybWF0LgogKgogKiBAcGFyYW0gcGVtIHRoZSBQRU0tZm9ybWF0dGVkIFBLQ1MjNyBtZXNzYWdlLgogKgogKiBAcmV0dXJuIHRoZSBQS0NTIzcgbWVzc2FnZS4KICovCnA3Lm1lc3NhZ2VGcm9tUGVtID0gZnVuY3Rpb24ocGVtKSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdQS0NTNycpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgUEtDUyM3IG1lc3NhZ2UgZnJvbSBQRU07IFBFTSAnICsKICAgICAgJ2hlYWRlciB0eXBlIGlzIG5vdCAiUEtDUyM3Ii4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IFBLQ1MjNyBtZXNzYWdlIGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLicpOwogIH0KCiAgLy8gY29udmVydCBERVIgdG8gQVNOLjEgb2JqZWN0CiAgdmFyIG9iaiA9IGFzbjEuZnJvbURlcihtc2cuYm9keSk7CgogIHJldHVybiBwNy5tZXNzYWdlRnJvbUFzbjEob2JqKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIFBLQ1MjNyBtZXNzYWdlIHRvIFBFTSBmb3JtYXQuCiAqCiAqIEBwYXJhbSBtc2cgVGhlIFBLQ1MjNyBtZXNzYWdlIG9iamVjdAogKiBAcGFyYW0gbWF4bGluZSBUaGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiBUaGUgUEVNLWZvcm1hdHRlZCBQS0NTIzcgbWVzc2FnZS4KICovCnA3Lm1lc3NhZ2VUb1BlbSA9IGZ1bmN0aW9uKG1zZywgbWF4bGluZSkgewogIC8vIGNvbnZlcnQgdG8gQVNOLjEsIHRoZW4gREVSLCB0aGVuIFBFTS1lbmNvZGUKICB2YXIgcGVtT2JqID0gewogICAgdHlwZTogJ1BLQ1M3JywKICAgIGJvZHk6IGFzbjEudG9EZXIobXNnLnRvQXNuMSgpKS5nZXRCeXRlcygpCiAgfTsKICByZXR1cm4gZm9yZ2UucGVtLmVuY29kZShwZW1PYmosIHttYXhsaW5lOiBtYXhsaW5lfSk7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzcgbWVzc2FnZSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgYSBDb250ZW50SW5mby4KICoKICogQHJldHVybiB0aGUgUEtDUyM3IG1lc3NhZ2UuCiAqLwpwNy5tZXNzYWdlRnJvbUFzbjEgPSBmdW5jdGlvbihvYmopIHsKICAvLyB2YWxpZGF0ZSByb290IGxldmVsIENvbnRlbnRJbmZvIGFuZCBjYXB0dXJlIGRhdGEKICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHA3LmFzbjEuY29udGVudEluZm9WYWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpCiAgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzcgbWVzc2FnZS4gJyArCiAgICAgICdBU04uMSBvYmplY3QgaXMgbm90IGFuIFBLQ1MjNyBDb250ZW50SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgdmFyIGNvbnRlbnRUeXBlID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLmNvbnRlbnRUeXBlKTsKICB2YXIgbXNnOwoKICBzd2l0Y2goY29udGVudFR5cGUpIHsKICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMuZW52ZWxvcGVkRGF0YToKICAgICAgbXNnID0gcDcuY3JlYXRlRW52ZWxvcGVkRGF0YSgpOwogICAgICBicmVhazsKCiAgICBjYXNlIGZvcmdlLnBraS5vaWRzLmVuY3J5cHRlZERhdGE6CiAgICAgIG1zZyA9IHA3LmNyZWF0ZUVuY3J5cHRlZERhdGEoKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBmb3JnZS5wa2kub2lkcy5zaWduZWREYXRhOgogICAgICBtc2cgPSBwNy5jcmVhdGVTaWduZWREYXRhKCk7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgUEtDUyM3IG1lc3NhZ2UuIENvbnRlbnRUeXBlIHdpdGggT0lEICcgKwogICAgICAgIGNvbnRlbnRUeXBlICsgJyBpcyBub3QgKHlldCkgc3VwcG9ydGVkLicpOwogIH0KCiAgbXNnLmZyb21Bc24xKGNhcHR1cmUuY29udGVudC52YWx1ZVswXSk7CiAgcmV0dXJuIG1zZzsKfTsKCnA3LmNyZWF0ZVNpZ25lZERhdGEgPSBmdW5jdGlvbigpIHsKICB2YXIgbXNnID0gbnVsbDsKICBtc2cgPSB7CiAgICB0eXBlOiBmb3JnZS5wa2kub2lkcy5zaWduZWREYXRhLAogICAgdmVyc2lvbjogMSwKICAgIGNlcnRpZmljYXRlczogW10sCiAgICBjcmxzOiBbXSwKICAgIC8vIFRPRE86IGFkZCBqc29uLWZvcm1hdHRlZCBzaWduZXIgc3R1ZmYgaGVyZT8KICAgIHNpZ25lcnM6IFtdLAogICAgLy8gcG9wdWxhdGVkIGR1cmluZyBzaWduKCkKICAgIGRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzOiBbXSwKICAgIGNvbnRlbnRJbmZvOiBudWxsLAogICAgc2lnbmVySW5mb3M6IFtdLAoKICAgIGZyb21Bc24xOiBmdW5jdGlvbihvYmopIHsKICAgICAgLy8gdmFsaWRhdGUgU2lnbmVkRGF0YSBjb250ZW50IGJsb2NrIGFuZCBjYXB0dXJlIGRhdGEuCiAgICAgIF9mcm9tQXNuMShtc2csIG9iaiwgcDcuYXNuMS5zaWduZWREYXRhVmFsaWRhdG9yKTsKICAgICAgbXNnLmNlcnRpZmljYXRlcyA9IFtdOwogICAgICBtc2cuY3JscyA9IFtdOwogICAgICBtc2cuZGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMgPSBbXTsKICAgICAgbXNnLmNvbnRlbnRJbmZvID0gbnVsbDsKICAgICAgbXNnLnNpZ25lckluZm9zID0gW107CgogICAgICB2YXIgY2VydHMgPSBtc2cucmF3Q2FwdHVyZS5jZXJ0aWZpY2F0ZXMudmFsdWU7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjZXJ0cy5sZW5ndGg7ICsraSkgewogICAgICAgIG1zZy5jZXJ0aWZpY2F0ZXMucHVzaChmb3JnZS5wa2kuY2VydGlmaWNhdGVGcm9tQXNuMShjZXJ0c1tpXSkpOwogICAgICB9CgogICAgICAvLyBUT0RPOiBwYXJzZSBjcmxzCiAgICB9LAoKICAgIHRvQXNuMTogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSB3aXRoIG5vIGNvbnRlbnQKICAgICAgaWYoIW1zZy5jb250ZW50SW5mbykgewogICAgICAgIG1zZy5zaWduKCk7CiAgICAgIH0KCiAgICAgIHZhciBjZXJ0cyA9IFtdOwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbXNnLmNlcnRpZmljYXRlcy5sZW5ndGg7ICsraSkgewogICAgICAgIGNlcnRzLnB1c2goZm9yZ2UucGtpLmNlcnRpZmljYXRlVG9Bc24xKG1zZy5jZXJ0aWZpY2F0ZXNbaV0pKTsKICAgICAgfQoKICAgICAgdmFyIGNybHMgPSBbXTsKICAgICAgLy8gVE9ETzogaW1wbGVtZW50IENSTHMKCiAgICAgIC8vIFswXSBTaWduZWREYXRhCiAgICAgIHZhciBzaWduZWREYXRhID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgLy8gVmVyc2lvbgogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIobXNnLnZlcnNpb24pLmdldEJ5dGVzKCkpLAogICAgICAgICAgLy8gRGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMKICAgICAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwKICAgICAgICAgICAgbXNnLmRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzKSwKICAgICAgICAgIC8vIENvbnRlbnRJbmZvCiAgICAgICAgICBtc2cuY29udGVudEluZm8KICAgICAgICBdKQogICAgICBdKTsKICAgICAgaWYoY2VydHMubGVuZ3RoID4gMCkgewogICAgICAgIC8vIFswXSBJTVBMSUNJVCBFeHRlbmRlZENlcnRpZmljYXRlc0FuZENlcnRpZmljYXRlcyBPUFRJT05BTAogICAgICAgIHNpZ25lZERhdGEudmFsdWVbMF0udmFsdWUucHVzaCgKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgY2VydHMpKTsKICAgICAgfQogICAgICBpZihjcmxzLmxlbmd0aCA+IDApIHsKICAgICAgICAvLyBbMV0gSU1QTElDSVQgQ2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdHMgT1BUSU9OQUwKICAgICAgICBzaWduZWREYXRhLnZhbHVlWzBdLnZhbHVlLnB1c2goCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDEsIHRydWUsIGNybHMpKTsKICAgICAgfQogICAgICAvLyBTaWduZXJJbmZvcwogICAgICBzaWduZWREYXRhLnZhbHVlWzBdLnZhbHVlLnB1c2goCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVQsIHRydWUsCiAgICAgICAgICBtc2cuc2lnbmVySW5mb3MpKTsKCiAgICAgIC8vIENvbnRlbnRJbmZvCiAgICAgIHJldHVybiBhc24xLmNyZWF0ZSgKICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICAvLyBDb250ZW50VHlwZQogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgICBhc24xLm9pZFRvRGVyKG1zZy50eXBlKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIFswXSBTaWduZWREYXRhCiAgICAgICAgICBzaWduZWREYXRhCiAgICAgICAgXSk7CiAgICB9LAoKICAgIC8qKgogICAgICogQWRkIChhbm90aGVyKSBlbnRpdHkgdG8gbGlzdCBvZiBzaWduZXJzLgogICAgICoKICAgICAqIE5vdGU6IElmIGF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIGFyZSBwcm92aWRlZCwgdGhlbiwgcGVyIFJGQyAyMzE1LAogICAgICogdGhleSBtdXN0IGluY2x1ZGUgYXQgbGVhc3QgdHdvIGF0dHJpYnV0ZXM6IGNvbnRlbnQgdHlwZSBhbmQKICAgICAqIG1lc3NhZ2UgZGlnZXN0LiBUaGUgbWVzc2FnZSBkaWdlc3QgYXR0cmlidXRlIHZhbHVlIHdpbGwgYmUKICAgICAqIGF1dG8tY2FsY3VsYXRlZCBkdXJpbmcgc2lnbmluZyBhbmQgd2lsbCBiZSBpZ25vcmVkIGlmIHByb3ZpZGVkLgogICAgICoKICAgICAqIEhlcmUncyBhbiBleGFtcGxlIG9mIHByb3ZpZGluZyB0aGVzZSB0d28gYXR0cmlidXRlczoKICAgICAqCiAgICAgKiBmb3JnZS5wa2NzNy5jcmVhdGVTaWduZWREYXRhKCk7CiAgICAgKiBwNy5hZGRTaWduZXIoewogICAgICogICBpc3N1ZXI6IGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMsCiAgICAgKiAgIHNlcmlhbE51bWJlcjogY2VydC5zZXJpYWxOdW1iZXIsCiAgICAgKiAgIGtleTogcHJpdmF0ZUtleSwKICAgICAqICAgZGlnZXN0QWxnb3JpdGhtOiBmb3JnZS5wa2kub2lkcy5zaGExLAogICAgICogICBhdXRoZW50aWNhdGVkQXR0cmlidXRlczogW3sKICAgICAqICAgICB0eXBlOiBmb3JnZS5wa2kub2lkcy5jb250ZW50VHlwZSwKICAgICAqICAgICB2YWx1ZTogZm9yZ2UucGtpLm9pZHMuZGF0YQogICAgICogICB9LCB7CiAgICAgKiAgICAgdHlwZTogZm9yZ2UucGtpLm9pZHMubWVzc2FnZURpZ2VzdAogICAgICogICB9XQogICAgICogfSk7CiAgICAgKgogICAgICogVE9ETzogU3VwcG9ydCBbc3ViamVjdEtleUlkZW50aWZpZXJdIGFzIHNpZ25lcidzIElELgogICAgICoKICAgICAqIEBwYXJhbSBzaWduZXIgdGhlIHNpZ25lciBpbmZvcm1hdGlvbjoKICAgICAqICAgICAgICAgIGtleSB0aGUgc2lnbmVyJ3MgcHJpdmF0ZSBrZXkuCiAgICAgKiAgICAgICAgICBbY2VydGlmaWNhdGVdIGEgY2VydGlmaWNhdGUgY29udGFpbmluZyB0aGUgcHVibGljIGtleQogICAgICogICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25lcidzIHByaXZhdGUga2V5OyB1c2UgdGhpcyBvcHRpb24gYXMKICAgICAqICAgICAgICAgICAgYW4gYWx0ZXJuYXRpdmUgdG8gc3BlY2lmeWluZyBzaWduZXIuaXNzdWVyIGFuZAogICAgICogICAgICAgICAgICBzaWduZXIuc2VyaWFsTnVtYmVyLgogICAgICogICAgICAgICAgW2lzc3Vlcl0gdGhlIGlzc3VlciBhdHRyaWJ1dGVzIChlZzogY2VydC5pc3N1ZXIuYXR0cmlidXRlcykuCiAgICAgKiAgICAgICAgICBbc2VyaWFsTnVtYmVyXSB0aGUgc2lnbmVyJ3MgY2VydGlmaWNhdGUncyBzZXJpYWwgbnVtYmVyIGluCiAgICAgKiAgICAgICAgICAgaGV4YWRlY2ltYWwgKGVnOiBjZXJ0LnNlcmlhbE51bWJlcikuCiAgICAgKiAgICAgICAgICBbZGlnZXN0QWxnb3JpdGhtXSB0aGUgbWVzc2FnZSBkaWdlc3QgT0lELCBhcyBhIHN0cmluZywgdG8gdXNlCiAgICAgKiAgICAgICAgICAgIChlZzogZm9yZ2UucGtpLm9pZHMuc2hhMSkuCiAgICAgKiAgICAgICAgICBbYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNdIGFuIG9wdGlvbmFsIGFycmF5IG9mIGF0dHJpYnV0ZXMKICAgICAqICAgICAgICAgICAgdG8gYWxzbyBzaWduIGFsb25nIHdpdGggdGhlIGNvbnRlbnQuCiAgICAgKi8KICAgIGFkZFNpZ25lcjogZnVuY3Rpb24oc2lnbmVyKSB7CiAgICAgIHZhciBpc3N1ZXIgPSBzaWduZXIuaXNzdWVyOwogICAgICB2YXIgc2VyaWFsTnVtYmVyID0gc2lnbmVyLnNlcmlhbE51bWJlcjsKICAgICAgaWYoc2lnbmVyLmNlcnRpZmljYXRlKSB7CiAgICAgICAgdmFyIGNlcnQgPSBzaWduZXIuY2VydGlmaWNhdGU7CiAgICAgICAgaWYodHlwZW9mIGNlcnQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICBjZXJ0ID0gZm9yZ2UucGtpLmNlcnRpZmljYXRlRnJvbVBlbShjZXJ0KTsKICAgICAgICB9CiAgICAgICAgaXNzdWVyID0gY2VydC5pc3N1ZXIuYXR0cmlidXRlczsKICAgICAgICBzZXJpYWxOdW1iZXIgPSBjZXJ0LnNlcmlhbE51bWJlcjsKICAgICAgfQogICAgICB2YXIga2V5ID0gc2lnbmVyLmtleTsKICAgICAgaWYoIWtleSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdDb3VsZCBub3QgYWRkIFBLQ1MjNyBzaWduZXI7IG5vIHByaXZhdGUga2V5IHNwZWNpZmllZC4nKTsKICAgICAgfQogICAgICBpZih0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykgewogICAgICAgIGtleSA9IGZvcmdlLnBraS5wcml2YXRlS2V5RnJvbVBlbShrZXkpOwogICAgICB9CgogICAgICAvLyBlbnN1cmUgT0lEIGtub3duIGZvciBkaWdlc3QgYWxnb3JpdGhtCiAgICAgIHZhciBkaWdlc3RBbGdvcml0aG0gPSBzaWduZXIuZGlnZXN0QWxnb3JpdGhtIHx8IGZvcmdlLnBraS5vaWRzLnNoYTE7CiAgICAgIHN3aXRjaChkaWdlc3RBbGdvcml0aG0pIHsKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkcy5zaGExOgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzLnNoYTI1NjoKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkcy5zaGEzODQ6CiAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMuc2hhNTEyOgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzLm1kNToKICAgICAgICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAnQ291bGQgbm90IGFkZCBQS0NTIzcgc2lnbmVyOyB1bmtub3duIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobTogJyArCiAgICAgICAgICBkaWdlc3RBbGdvcml0aG0pOwogICAgICB9CgogICAgICAvLyBpZiBhdXRoZW50aWNhdGVkQXR0cmlidXRlcyBpcyBwcmVzZW50LCB0aGVuIHRoZSBhdHRyaWJ1dGVzCiAgICAgIC8vIG11c3QgY29udGFpbiBhdCBsZWFzdCBQS0NTICM5IGNvbnRlbnQtdHlwZSBhbmQgbWVzc2FnZS1kaWdlc3QKICAgICAgdmFyIGF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzID0gc2lnbmVyLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIHx8IFtdOwogICAgICBpZihhdXRoZW50aWNhdGVkQXR0cmlidXRlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gZmFsc2U7CiAgICAgICAgdmFyIG1lc3NhZ2VEaWdlc3QgPSBmYWxzZTsKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHZhciBhdHRyID0gYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNbaV07CiAgICAgICAgICBpZighY29udGVudFR5cGUgJiYgYXR0ci50eXBlID09PSBmb3JnZS5wa2kub2lkcy5jb250ZW50VHlwZSkgewogICAgICAgICAgICBjb250ZW50VHlwZSA9IHRydWU7CiAgICAgICAgICAgIGlmKG1lc3NhZ2VEaWdlc3QpIHsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmKCFtZXNzYWdlRGlnZXN0ICYmIGF0dHIudHlwZSA9PT0gZm9yZ2UucGtpLm9pZHMubWVzc2FnZURpZ2VzdCkgewogICAgICAgICAgICBtZXNzYWdlRGlnZXN0ID0gdHJ1ZTsKICAgICAgICAgICAgaWYoY29udGVudFR5cGUpIHsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCFjb250ZW50VHlwZSB8fCAhbWVzc2FnZURpZ2VzdCkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNpZ25lci5hdXRoZW50aWNhdGVkQXR0cmlidXRlcy4gSWYgJyArCiAgICAgICAgICAgICdzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgJyArCiAgICAgICAgICAgICdjb250YWluIGF0IGxlYXN0IHR3byBhdHRyaWJ1dGVzLCBQS0NTICM5IGNvbnRlbnQtdHlwZSBhbmQgJyArCiAgICAgICAgICAgICdQS0NTICM5IG1lc3NhZ2UtZGlnZXN0LicpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgbXNnLnNpZ25lcnMucHVzaCh7CiAgICAgICAga2V5OiBrZXksCiAgICAgICAgdmVyc2lvbjogMSwKICAgICAgICBpc3N1ZXI6IGlzc3VlciwKICAgICAgICBzZXJpYWxOdW1iZXI6IHNlcmlhbE51bWJlciwKICAgICAgICBkaWdlc3RBbGdvcml0aG06IGRpZ2VzdEFsZ29yaXRobSwKICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IGZvcmdlLnBraS5vaWRzLnJzYUVuY3J5cHRpb24sCiAgICAgICAgc2lnbmF0dXJlOiBudWxsLAogICAgICAgIGF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzOiBhdXRoZW50aWNhdGVkQXR0cmlidXRlcywKICAgICAgICB1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzOiBbXQogICAgICB9KTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBTaWducyB0aGUgY29udGVudC4KICAgICAqLwogICAgc2lnbjogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGF1dG8tZ2VuZXJhdGUgY29udGVudCBpbmZvCiAgICAgIGlmKHR5cGVvZiBtc2cuY29udGVudCAhPT0gJ29iamVjdCcgfHwgbXNnLmNvbnRlbnRJbmZvID09PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIERhdGEgQ29udGVudEluZm8KICAgICAgICBtc2cuY29udGVudEluZm8gPSBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgICAgLy8gQ29udGVudFR5cGUKICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgICAgIGFzbjEub2lkVG9EZXIoZm9yZ2UucGtpLm9pZHMuZGF0YSkuZ2V0Qnl0ZXMoKSkKICAgICAgICAgIF0pOwoKICAgICAgICAvLyBhZGQgYWN0dWFsIGNvbnRlbnQsIGlmIHByZXNlbnQKICAgICAgICBpZignY29udGVudCcgaW4gbXNnKSB7CiAgICAgICAgICB2YXIgY29udGVudDsKICAgICAgICAgIGlmKG1zZy5jb250ZW50IGluc3RhbmNlb2YgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKSB7CiAgICAgICAgICAgIGNvbnRlbnQgPSBtc2cuY29udGVudC5ieXRlcygpOwogICAgICAgICAgfSBlbHNlIGlmKHR5cGVvZiBtc2cuY29udGVudCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgY29udGVudCA9IGZvcmdlLnV0aWwuZW5jb2RlVXRmOChtc2cuY29udGVudCk7CiAgICAgICAgICB9CgogICAgICAgICAgbXNnLmNvbnRlbnRJbmZvLnZhbHVlLnB1c2goCiAgICAgICAgICAgIC8vIFswXSBFWFBMSUNJVCBjb250ZW50CiAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgICAgICAgY29udGVudCkKICAgICAgICAgICAgXSkpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gbm8gc2lnbmVycywgcmV0dXJuIGVhcmx5IChkZWdlbmVyYXRlIGNhc2UgZm9yIGNlcnRpZmljYXRlIGNvbnRhaW5lcikKICAgICAgaWYobXNnLnNpZ25lcnMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICAvLyBnZW5lcmF0ZSBkaWdlc3QgYWxnb3JpdGhtIGlkZW50aWZpZXJzCiAgICAgIHZhciBtZHMgPSBhZGREaWdlc3RBbGdvcml0aG1JZHMoKTsKCiAgICAgIC8vIGdlbmVyYXRlIHNpZ25lckluZm9zCiAgICAgIGFkZFNpZ25lckluZm9zKG1kcyk7CiAgICB9LAoKICAgIHZlcmlmeTogZnVuY3Rpb24oKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyM3IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gbm90IHlldCBpbXBsZW1lbnRlZC4nKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBBZGQgYSBjZXJ0aWZpY2F0ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2VydCB0aGUgY2VydGlmaWNhdGUgdG8gYWRkLgogICAgICovCiAgICBhZGRDZXJ0aWZpY2F0ZTogZnVuY3Rpb24oY2VydCkgewogICAgICAvLyBjb252ZXJ0IGZyb20gUEVNCiAgICAgIGlmKHR5cGVvZiBjZXJ0ID09PSAnc3RyaW5nJykgewogICAgICAgIGNlcnQgPSBmb3JnZS5wa2kuY2VydGlmaWNhdGVGcm9tUGVtKGNlcnQpOwogICAgICB9CiAgICAgIG1zZy5jZXJ0aWZpY2F0ZXMucHVzaChjZXJ0KTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBBZGQgYSBjZXJ0aWZpY2F0ZSByZXZva2F0aW9uIGxpc3QuCiAgICAgKgogICAgICogQHBhcmFtIGNybCB0aGUgY2VydGlmaWNhdGUgcmV2b2thdGlvbiBsaXN0IHRvIGFkZC4KICAgICAqLwogICAgYWRkQ2VydGlmaWNhdGVSZXZva2F0aW9uTGlzdDogZnVuY3Rpb24oY3JsKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyM3IENSTCBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQuJyk7CiAgICB9CiAgfTsKICByZXR1cm4gbXNnOwoKICBmdW5jdGlvbiBhZGREaWdlc3RBbGdvcml0aG1JZHMoKSB7CiAgICB2YXIgbWRzID0ge307CgogICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5zaWduZXJzLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhciBzaWduZXIgPSBtc2cuc2lnbmVyc1tpXTsKICAgICAgdmFyIG9pZCA9IHNpZ25lci5kaWdlc3RBbGdvcml0aG07CiAgICAgIGlmKCEob2lkIGluIG1kcykpIHsKICAgICAgICAvLyBjb250ZW50IGRpZ2VzdAogICAgICAgIG1kc1tvaWRdID0gZm9yZ2UubWRbZm9yZ2UucGtpLm9pZHNbb2lkXV0uY3JlYXRlKCk7CiAgICAgIH0KICAgICAgaWYoc2lnbmVyLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIC8vIG5vIGN1c3RvbSBhdHRyaWJ1dGVzIHRvIGRpZ2VzdDsgdXNlIGNvbnRlbnQgbWVzc2FnZSBkaWdlc3QKICAgICAgICBzaWduZXIubWQgPSBtZHNbb2lkXTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBjdXN0b20gYXR0cmlidXRlcyB0byBiZSBkaWdlc3RlZDsgdXNlIG93biBtZXNzYWdlIGRpZ2VzdAogICAgICAgIC8vIFRPRE86IG9wdGltaXplIHRvIGp1c3QgY29weSBtZXNzYWdlIGRpZ2VzdCBzdGF0ZSBpZiB0aGF0CiAgICAgICAgLy8gZmVhdHVyZSBpcyBldmVyIHN1cHBvcnRlZCB3aXRoIG1lc3NhZ2UgZGlnZXN0cwogICAgICAgIHNpZ25lci5tZCA9IGZvcmdlLm1kW2ZvcmdlLnBraS5vaWRzW29pZF1dLmNyZWF0ZSgpOwogICAgICB9CiAgICB9CgogICAgLy8gYWRkIHVuaXF1ZSBkaWdlc3QgYWxnb3JpdGhtIGlkZW50aWZpZXJzCiAgICBtc2cuZGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMgPSBbXTsKICAgIGZvcih2YXIgb2lkIGluIG1kcykgewogICAgICBtc2cuZGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMucHVzaCgKICAgICAgICAvLyBBbGdvcml0aG1JZGVudGlmaWVyCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgLy8gYWxnb3JpdGhtCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAgIGFzbjEub2lkVG9EZXIob2lkKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIHBhcmFtZXRlcnMgKG51bGwpCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICBdKSk7CiAgICB9CgogICAgcmV0dXJuIG1kczsKICB9CgogIGZ1bmN0aW9uIGFkZFNpZ25lckluZm9zKG1kcykgewogICAgLy8gTm90ZTogQ29udGVudEluZm8gaXMgYSBTRVFVRU5DRSB3aXRoIDIgdmFsdWVzLCBzZWNvbmQgdmFsdWUgaXMKICAgIC8vIHRoZSBjb250ZW50IGZpZWxkIGFuZCBpcyBvcHRpb25hbCBmb3IgYSBDb250ZW50SW5mbyBidXQgcmVxdWlyZWQgaGVyZQogICAgLy8gc2luY2Ugc2lnbmVycyBhcmUgcHJlc2VudAogICAgaWYobXNnLmNvbnRlbnRJbmZvLnZhbHVlLmxlbmd0aCA8IDIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdDb3VsZCBub3Qgc2lnbiBQS0NTIzcgbWVzc2FnZTsgdGhlcmUgaXMgbm8gY29udGVudCB0byBzaWduLicpOwogICAgfQoKICAgIC8vIGdldCBDb250ZW50SW5mbyBjb250ZW50IHR5cGUKICAgIHZhciBjb250ZW50VHlwZSA9IGFzbjEuZGVyVG9PaWQobXNnLmNvbnRlbnRJbmZvLnZhbHVlWzBdLnZhbHVlKTsKCiAgICAvLyBnZXQgQ29udGVudEluZm8gY29udGVudAogICAgdmFyIGNvbnRlbnQgPSBtc2cuY29udGVudEluZm8udmFsdWVbMV07CiAgICAvLyBza2lwIFswXSBFWFBMSUNJVCBjb250ZW50IHdyYXBwZXIKICAgIGNvbnRlbnQgPSBjb250ZW50LnZhbHVlWzBdOwoKICAgIC8vIHNlcmlhbGl6ZSBjb250ZW50CiAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNvbnRlbnQpOwoKICAgIC8vIHNraXAgaWRlbnRpZmllciBhbmQgbGVuZ3RoIHBlciBSRkMgMjMxNSA5LjMKICAgIC8vIHNraXAgaWRlbnRpZmllciAoMSBieXRlKQogICAgYnl0ZXMuZ2V0Qnl0ZSgpOwogICAgLy8gcmVhZCBhbmQgZGlzY2FyZCBsZW5ndGggYnl0ZXMKICAgIGFzbjEuZ2V0QmVyVmFsdWVMZW5ndGgoYnl0ZXMpOwogICAgYnl0ZXMgPSBieXRlcy5nZXRCeXRlcygpOwoKICAgIC8vIGRpZ2VzdCBjb250ZW50IERFUiB2YWx1ZSBieXRlcwogICAgZm9yKHZhciBvaWQgaW4gbWRzKSB7CiAgICAgIG1kc1tvaWRdLnN0YXJ0KCkudXBkYXRlKGJ5dGVzKTsKICAgIH0KCiAgICAvLyBzaWduIGNvbnRlbnQKICAgIHZhciBzaWduaW5nVGltZSA9IG5ldyBEYXRlKCk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbXNnLnNpZ25lcnMubGVuZ3RoOyArK2kpIHsKICAgICAgdmFyIHNpZ25lciA9IG1zZy5zaWduZXJzW2ldOwoKICAgICAgaWYoc2lnbmVyLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIC8vIGlmIENvbnRlbnRJbmZvIGNvbnRlbnQgdHlwZSBpcyBub3QgIkRhdGEiLCB0aGVuCiAgICAgICAgLy8gYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgbXVzdCBiZSBwcmVzZW50IHBlciBSRkMgMjMxNQogICAgICAgIGlmKGNvbnRlbnRUeXBlICE9PSBmb3JnZS5wa2kub2lkcy5kYXRhKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICdJbnZhbGlkIHNpZ25lcjsgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgbXVzdCBiZSBwcmVzZW50ICcgKwogICAgICAgICAgICAnd2hlbiB0aGUgQ29udGVudEluZm8gY29udGVudCB0eXBlIGlzIG5vdCBQS0NTIzcgRGF0YS4nKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gcHJvY2VzcyBhdXRoZW50aWNhdGVkIGF0dHJpYnV0ZXMKICAgICAgICAvLyBbMF0gSU1QTElDSVQKICAgICAgICBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNBc24xID0gYXNuMS5jcmVhdGUoCiAgICAgICAgICBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFtdKTsKCiAgICAgICAgLy8gcGVyIFJGQyAyMzE1LCBhdHRyaWJ1dGVzIGFyZSB0byBiZSBkaWdlc3RlZCB1c2luZyBhIFNFVCBjb250YWluZXIKICAgICAgICAvLyBub3QgdGhlIGFib3ZlIFswXSBJTVBMSUNJVCBjb250YWluZXIKICAgICAgICB2YXIgYXR0cnNBc24xID0gYXNuMS5jcmVhdGUoCiAgICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwgW10pOwoKICAgICAgICBmb3IodmFyIGFpID0gMDsgYWkgPCBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOyArK2FpKSB7CiAgICAgICAgICB2YXIgYXR0ciA9IHNpZ25lci5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1thaV07CiAgICAgICAgICBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLm1lc3NhZ2VEaWdlc3QpIHsKICAgICAgICAgICAgLy8gdXNlIGNvbnRlbnQgbWVzc2FnZSBkaWdlc3QgYXMgdmFsdWUKICAgICAgICAgICAgYXR0ci52YWx1ZSA9IG1kc1tzaWduZXIuZGlnZXN0QWxnb3JpdGhtXS5kaWdlc3QoKTsKICAgICAgICAgIH0gZWxzZSBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLnNpZ25pbmdUaW1lKSB7CiAgICAgICAgICAgIC8vIGF1dG8tcG9wdWxhdGUgc2lnbmluZyB0aW1lIGlmIG5vdCBhbHJlYWR5IHNldAogICAgICAgICAgICBpZighYXR0ci52YWx1ZSkgewogICAgICAgICAgICAgIGF0dHIudmFsdWUgPSBzaWduaW5nVGltZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIC8vIGNvbnZlcnQgdG8gQVNOLjEgYW5kIHB1c2ggb250byBBdHRyaWJ1dGVzIFNFVCAoZm9yIHNpZ25pbmcpIGFuZAogICAgICAgICAgLy8gb250byBhdXRoZW50aWNhdGVkQXR0cmlidXRlc0FzbjEgdG8gY29tcGxldGUgU2lnbmVkRGF0YSBBU04uMQogICAgICAgICAgLy8gVE9ETzogb3B0aW1pemUgYXdheSBkdXBsaWNhdGlvbgogICAgICAgICAgYXR0cnNBc24xLnZhbHVlLnB1c2goX2F0dHJpYnV0ZVRvQXNuMShhdHRyKSk7CiAgICAgICAgICBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNBc24xLnZhbHVlLnB1c2goX2F0dHJpYnV0ZVRvQXNuMShhdHRyKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBERVItc2VyaWFsaXplIGFuZCBkaWdlc3QgU0VUIE9GIGF0dHJpYnV0ZXMgb25seQogICAgICAgIGJ5dGVzID0gYXNuMS50b0RlcihhdHRyc0FzbjEpLmdldEJ5dGVzKCk7CiAgICAgICAgc2lnbmVyLm1kLnN0YXJ0KCkudXBkYXRlKGJ5dGVzKTsKICAgICAgfQoKICAgICAgLy8gc2lnbiBkaWdlc3QKICAgICAgc2lnbmVyLnNpZ25hdHVyZSA9IHNpZ25lci5rZXkuc2lnbihzaWduZXIubWQsICdSU0FTU0EtUEtDUzEtVjFfNScpOwogICAgfQoKICAgIC8vIGFkZCBzaWduZXIgaW5mbwogICAgbXNnLnNpZ25lckluZm9zID0gX3NpZ25lcnNUb0FzbjEobXNnLnNpZ25lcnMpOwogIH0KfTsKCi8qKgogKiBDcmVhdGVzIGFuIGVtcHR5IFBLQ1MjNyBtZXNzYWdlIG9mIHR5cGUgRW5jcnlwdGVkRGF0YS4KICoKICogQHJldHVybiB0aGUgbWVzc2FnZS4KICovCnA3LmNyZWF0ZUVuY3J5cHRlZERhdGEgPSBmdW5jdGlvbigpIHsKICB2YXIgbXNnID0gbnVsbDsKICBtc2cgPSB7CiAgICB0eXBlOiBmb3JnZS5wa2kub2lkcy5lbmNyeXB0ZWREYXRhLAogICAgdmVyc2lvbjogMCwKICAgIGVuY3J5cHRlZENvbnRlbnQ6IHsKICAgICAgYWxnb3JpdGhtOiBmb3JnZS5wa2kub2lkc1snYWVzMjU2LUNCQyddCiAgICB9LAoKICAgIC8qKgogICAgICogUmVhZHMgYW4gRW5jcnlwdGVkRGF0YSBjb250ZW50IGJsb2NrIChpbiBBU04uMSBmb3JtYXQpCiAgICAgKgogICAgICogQHBhcmFtIG9iaiBUaGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgdGhlIEVuY3J5cHRlZERhdGEgY29udGVudCBibG9jawogICAgICovCiAgICBmcm9tQXNuMTogZnVuY3Rpb24ob2JqKSB7CiAgICAgIC8vIFZhbGlkYXRlIEVuY3J5cHRlZERhdGEgY29udGVudCBibG9jayBhbmQgY2FwdHVyZSBkYXRhLgogICAgICBfZnJvbUFzbjEobXNnLCBvYmosIHA3LmFzbjEuZW5jcnlwdGVkRGF0YVZhbGlkYXRvcik7CiAgICB9LAoKICAgIC8qKgogICAgICogRGVjcnlwdCBlbmNyeXB0ZWQgY29udGVudAogICAgICoKICAgICAqIEBwYXJhbSBrZXkgVGhlIChzeW1tZXRyaWMpIGtleSBhcyBhIGJ5dGUgYnVmZmVyCiAgICAgKi8KICAgIGRlY3J5cHQ6IGZ1bmN0aW9uKGtleSkgewogICAgICBpZihrZXkgIT09IHVuZGVmaW5lZCkgewogICAgICAgIG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSA9IGtleTsKICAgICAgfQogICAgICBfZGVjcnlwdENvbnRlbnQobXNnKTsKICAgIH0KICB9OwogIHJldHVybiBtc2c7Cn07CgovKioKICogQ3JlYXRlcyBhbiBlbXB0eSBQS0NTIzcgbWVzc2FnZSBvZiB0eXBlIEVudmVsb3BlZERhdGEuCiAqCiAqIEByZXR1cm4gdGhlIG1lc3NhZ2UuCiAqLwpwNy5jcmVhdGVFbnZlbG9wZWREYXRhID0gZnVuY3Rpb24oKSB7CiAgdmFyIG1zZyA9IG51bGw7CiAgbXNnID0gewogICAgdHlwZTogZm9yZ2UucGtpLm9pZHMuZW52ZWxvcGVkRGF0YSwKICAgIHZlcnNpb246IDAsCiAgICByZWNpcGllbnRzOiBbXSwKICAgIGVuY3J5cHRlZENvbnRlbnQ6IHsKICAgICAgYWxnb3JpdGhtOiBmb3JnZS5wa2kub2lkc1snYWVzMjU2LUNCQyddCiAgICB9LAoKICAgIC8qKgogICAgICogUmVhZHMgYW4gRW52ZWxvcGVkRGF0YSBjb250ZW50IGJsb2NrIChpbiBBU04uMSBmb3JtYXQpCiAgICAgKgogICAgICogQHBhcmFtIG9iaiB0aGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgdGhlIEVudmVsb3BlZERhdGEgY29udGVudCBibG9jay4KICAgICAqLwogICAgZnJvbUFzbjE6IGZ1bmN0aW9uKG9iaikgewogICAgICAvLyB2YWxpZGF0ZSBFbnZlbG9wZWREYXRhIGNvbnRlbnQgYmxvY2sgYW5kIGNhcHR1cmUgZGF0YQogICAgICB2YXIgY2FwdHVyZSA9IF9mcm9tQXNuMShtc2csIG9iaiwgcDcuYXNuMS5lbnZlbG9wZWREYXRhVmFsaWRhdG9yKTsKICAgICAgbXNnLnJlY2lwaWVudHMgPSBfcmVjaXBpZW50c0Zyb21Bc24xKGNhcHR1cmUucmVjaXBpZW50SW5mb3MudmFsdWUpOwogICAgfSwKCiAgICB0b0FzbjE6IGZ1bmN0aW9uKCkgewogICAgICAvLyBDb250ZW50SW5mbwogICAgICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIENvbnRlbnRUeXBlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihtc2cudHlwZSkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgLy8gWzBdIEVudmVsb3BlZERhdGEKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgICAgLy8gVmVyc2lvbgogICAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgICAgICAgIGFzbjEuaW50ZWdlclRvRGVyKG1zZy52ZXJzaW9uKS5nZXRCeXRlcygpKSwKICAgICAgICAgICAgLy8gUmVjaXBpZW50SW5mb3MKICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVQsIHRydWUsCiAgICAgICAgICAgICAgX3JlY2lwaWVudHNUb0FzbjEobXNnLnJlY2lwaWVudHMpKSwKICAgICAgICAgICAgLy8gRW5jcnlwdGVkQ29udGVudEluZm8KICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwKICAgICAgICAgICAgICBfZW5jcnlwdGVkQ29udGVudFRvQXNuMShtc2cuZW5jcnlwdGVkQ29udGVudCkpCiAgICAgICAgICBdKQogICAgICAgIF0pCiAgICAgIF0pOwogICAgfSwKCiAgICAvKioKICAgICAqIEZpbmQgcmVjaXBpZW50IGJ5IFguNTA5IGNlcnRpZmljYXRlJ3MgaXNzdWVyLgogICAgICoKICAgICAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZSB3aXRoIHRoZSBpc3N1ZXIgdG8gbG9vayBmb3IuCiAgICAgKgogICAgICogQHJldHVybiB0aGUgcmVjaXBpZW50IG9iamVjdC4KICAgICAqLwogICAgZmluZFJlY2lwaWVudDogZnVuY3Rpb24oY2VydCkgewogICAgICB2YXIgc0F0dHIgPSBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzOwoKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5yZWNpcGllbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgdmFyIHIgPSBtc2cucmVjaXBpZW50c1tpXTsKICAgICAgICB2YXIgckF0dHIgPSByLmlzc3VlcjsKCiAgICAgICAgaWYoci5zZXJpYWxOdW1iZXIgIT09IGNlcnQuc2VyaWFsTnVtYmVyKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGlmKHJBdHRyLmxlbmd0aCAhPT0gc0F0dHIubGVuZ3RoKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHZhciBtYXRjaCA9IHRydWU7CiAgICAgICAgZm9yKHZhciBqID0gMDsgaiA8IHNBdHRyLmxlbmd0aDsgKytqKSB7CiAgICAgICAgICBpZihyQXR0cltqXS50eXBlICE9PSBzQXR0cltqXS50eXBlIHx8CiAgICAgICAgICAgIHJBdHRyW2pdLnZhbHVlICE9PSBzQXR0cltqXS52YWx1ZSkgewogICAgICAgICAgICBtYXRjaCA9IGZhbHNlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKG1hdGNoKSB7CiAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICAvKioKICAgICAqIERlY3J5cHQgZW52ZWxvcGVkIGNvbnRlbnQKICAgICAqCiAgICAgKiBAcGFyYW0gcmVjaXBpZW50IFRoZSByZWNpcGllbnQgb2JqZWN0IHJlbGF0ZWQgdG8gdGhlIHByaXZhdGUga2V5CiAgICAgKiBAcGFyYW0gcHJpdktleSBUaGUgKFJTQSkgcHJpdmF0ZSBrZXkgb2JqZWN0CiAgICAgKi8KICAgIGRlY3J5cHQ6IGZ1bmN0aW9uKHJlY2lwaWVudCwgcHJpdktleSkgewogICAgICBpZihtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkgPT09IHVuZGVmaW5lZCAmJiByZWNpcGllbnQgIT09IHVuZGVmaW5lZCAmJgogICAgICAgIHByaXZLZXkgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHN3aXRjaChyZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pIHsKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMucnNhRW5jcnlwdGlvbjoKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMuZGVzQ0JDOgogICAgICAgICAgICB2YXIga2V5ID0gcHJpdktleS5kZWNyeXB0KHJlY2lwaWVudC5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpOwogICAgICAgICAgICBtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihrZXkpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGFzeW1tZXRyaWMgY2lwaGVyLCAnICsKICAgICAgICAgICAgICAnT0lEICcgKyByZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgX2RlY3J5cHRDb250ZW50KG1zZyk7CiAgICB9LAoKICAgIC8qKgogICAgICogQWRkIChhbm90aGVyKSBlbnRpdHkgdG8gbGlzdCBvZiByZWNpcGllbnRzLgogICAgICoKICAgICAqIEBwYXJhbSBjZXJ0IFRoZSBjZXJ0aWZpY2F0ZSBvZiB0aGUgZW50aXR5IHRvIGFkZC4KICAgICAqLwogICAgYWRkUmVjaXBpZW50OiBmdW5jdGlvbihjZXJ0KSB7CiAgICAgIG1zZy5yZWNpcGllbnRzLnB1c2goewogICAgICAgIHZlcnNpb246IDAsCiAgICAgICAgaXNzdWVyOiBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzLAogICAgICAgIHNlcmlhbE51bWJlcjogY2VydC5zZXJpYWxOdW1iZXIsCiAgICAgICAgZW5jcnlwdGVkQ29udGVudDogewogICAgICAgICAgLy8gV2Ugc2ltcGx5IGFzc3VtZSByc2FFbmNyeXB0aW9uIGhlcmUsIHNpbmNlIGZvcmdlLnBraSBvbmx5CiAgICAgICAgICAvLyBzdXBwb3J0cyBSU0Egc28gZmFyLiAgSWYgdGhlIFBLSSBtb2R1bGUgc3VwcG9ydHMgb3RoZXIKICAgICAgICAgIC8vIGNpcGhlcnMgb25lIGRheSwgd2UgbmVlZCB0byBtb2RpZnkgdGhpcyBvbmUgYXMgd2VsbC4KICAgICAgICAgIGFsZ29yaXRobTogZm9yZ2UucGtpLm9pZHMucnNhRW5jcnlwdGlvbiwKICAgICAgICAgIGtleTogY2VydC5wdWJsaWNLZXkKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAvKioKICAgICAqIEVuY3J5cHQgZW52ZWxvcGVkIGNvbnRlbnQuCiAgICAgKgogICAgICogVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0d28gb3B0aW9uYWwgYXJndW1lbnRzLCBjaXBoZXIgYW5kIGtleSwgd2hpY2gKICAgICAqIGNhbiBiZSB1c2VkIHRvIGluZmx1ZW5jZSBzeW1tZXRyaWMgZW5jcnlwdGlvbi4gIFVubGVzcyBjaXBoZXIgaXMKICAgICAqIHByb3ZpZGVkLCB0aGUgY2lwaGVyIHNwZWNpZmllZCBpbiBlbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSBpcyB1c2VkCiAgICAgKiAoZGVmYXVsdHMgdG8gQUVTLTI1Ni1DQkMpLiAgSWYgbm8ga2V5IGlzIHByb3ZpZGVkLCBlbmNyeXB0ZWRDb250ZW50LmtleQogICAgICogaXMgKHJlLSl1c2VkLiAgSWYgdGhhdCBvbmUncyBub3Qgc2V0LCBhIHJhbmRvbSBrZXkgd2lsbCBiZSBnZW5lcmF0ZWQKICAgICAqIGF1dG9tYXRpY2FsbHkuCiAgICAgKgogICAgICogQHBhcmFtIFtrZXldIFRoZSBrZXkgdG8gYmUgdXNlZCBmb3Igc3ltbWV0cmljIGVuY3J5cHRpb24uCiAgICAgKiBAcGFyYW0gW2NpcGhlcl0gVGhlIE9JRCBvZiB0aGUgc3ltbWV0cmljIGNpcGhlciB0byB1c2UuCiAgICAgKi8KICAgIGVuY3J5cHQ6IGZ1bmN0aW9uKGtleSwgY2lwaGVyKSB7CiAgICAgIC8vIFBhcnQgMTogU3ltbWV0cmljIGVuY3J5cHRpb24KICAgICAgaWYobXNnLmVuY3J5cHRlZENvbnRlbnQuY29udGVudCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgY2lwaGVyID0gY2lwaGVyIHx8IG1zZy5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobTsKICAgICAgICBrZXkgPSBrZXkgfHwgbXNnLmVuY3J5cHRlZENvbnRlbnQua2V5OwoKICAgICAgICB2YXIga2V5TGVuLCBpdkxlbiwgY2lwaEZuOwogICAgICAgIHN3aXRjaChjaXBoZXIpIHsKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHNbJ2FlczEyOC1DQkMnXToKICAgICAgICAgICAga2V5TGVuID0gMTY7CiAgICAgICAgICAgIGl2TGVuID0gMTY7CiAgICAgICAgICAgIGNpcGhGbiA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBjYXNlIGZvcmdlLnBraS5vaWRzWydhZXMxOTItQ0JDJ106CiAgICAgICAgICAgIGtleUxlbiA9IDI0OwogICAgICAgICAgICBpdkxlbiA9IDE2OwogICAgICAgICAgICBjaXBoRm4gPSBmb3JnZS5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSBmb3JnZS5wa2kub2lkc1snYWVzMjU2LUNCQyddOgogICAgICAgICAgICBrZXlMZW4gPSAzMjsKICAgICAgICAgICAgaXZMZW4gPSAxNjsKICAgICAgICAgICAgY2lwaEZuID0gZm9yZ2UuYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHNbJ2Rlcy1FREUzLUNCQyddOgogICAgICAgICAgICBrZXlMZW4gPSAyNDsKICAgICAgICAgICAgaXZMZW4gPSA4OwogICAgICAgICAgICBjaXBoRm4gPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzeW1tZXRyaWMgY2lwaGVyLCBPSUQgJyArIGNpcGhlcik7CiAgICAgICAgfQoKICAgICAgICBpZihrZXkgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoZm9yZ2UucmFuZG9tLmdldEJ5dGVzKGtleUxlbikpOwogICAgICAgIH0gZWxzZSBpZihrZXkubGVuZ3RoKCkgIT0ga2V5TGVuKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5bW1ldHJpYyBrZXkgaGFzIHdyb25nIGxlbmd0aDsgJyArCiAgICAgICAgICAgICdnb3QgJyArIGtleS5sZW5ndGgoKSArICcgYnl0ZXMsIGV4cGVjdGVkICcgKyBrZXlMZW4gKyAnLicpOwogICAgICAgIH0KCiAgICAgICAgLy8gS2VlcCBhIGNvcHkgb2YgdGhlIGtleSAmIElWIGluIHRoZSBvYmplY3QsIHNvIHRoZSBjYWxsZXIgY2FuCiAgICAgICAgLy8gdXNlIGl0IGZvciB3aGF0ZXZlciByZWFzb24uCiAgICAgICAgbXNnLmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtID0gY2lwaGVyOwogICAgICAgIG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSA9IGtleTsKICAgICAgICBtc2cuZW5jcnlwdGVkQ29udGVudC5wYXJhbWV0ZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigKICAgICAgICAgIGZvcmdlLnJhbmRvbS5nZXRCeXRlcyhpdkxlbikpOwoKICAgICAgICB2YXIgY2lwaCA9IGNpcGhGbihrZXkpOwogICAgICAgIGNpcGguc3RhcnQobXNnLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyLmNvcHkoKSk7CiAgICAgICAgY2lwaC51cGRhdGUobXNnLmNvbnRlbnQpOwoKICAgICAgICAvLyBUaGUgZmluaXNoIGZ1bmN0aW9uIGRvZXMgUEtDUyM3IHBhZGRpbmcgYnkgZGVmYXVsdCwgdGhlcmVmb3JlCiAgICAgICAgLy8gbm8gYWN0aW9uIHJlcXVpcmVkIGJ5IHVzLgogICAgICAgIGlmKCFjaXBoLmZpbmlzaCgpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5bW1ldHJpYyBlbmNyeXB0aW9uIGZhaWxlZC4nKTsKICAgICAgICB9CgogICAgICAgIG1zZy5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQgPSBjaXBoLm91dHB1dDsKICAgICAgfQoKICAgICAgLy8gUGFydCAyOiBhc3ltbWV0cmljIGVuY3J5cHRpb24gZm9yIGVhY2ggcmVjaXBpZW50CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtc2cucmVjaXBpZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciByZWNpcGllbnQgPSBtc2cucmVjaXBpZW50c1tpXTsKCiAgICAgICAgLy8gTm90aGluZyB0byBkbywgZW5jcnlwdGlvbiBhbHJlYWR5IGRvbmUuCiAgICAgICAgaWYocmVjaXBpZW50LmVuY3J5cHRlZENvbnRlbnQuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaChyZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pIHsKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMucnNhRW5jcnlwdGlvbjoKICAgICAgICAgICAgcmVjaXBpZW50LmVuY3J5cHRlZENvbnRlbnQuY29udGVudCA9CiAgICAgICAgICAgICAgcmVjaXBpZW50LmVuY3J5cHRlZENvbnRlbnQua2V5LmVuY3J5cHQoCiAgICAgICAgICAgICAgICBtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkuZGF0YSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgYXN5bW1ldHJpYyBjaXBoZXIsIE9JRCAnICsKICAgICAgICAgICAgICByZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CiAgcmV0dXJuIG1zZzsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIHNpbmdsZSByZWNpcGllbnQgZnJvbSBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIFJlY2lwaWVudEluZm8uCiAqCiAqIEByZXR1cm4gdGhlIHJlY2lwaWVudCBvYmplY3QuCiAqLwpmdW5jdGlvbiBfcmVjaXBpZW50RnJvbUFzbjEob2JqKSB7CiAgLy8gdmFsaWRhdGUgRW52ZWxvcGVkRGF0YSBjb250ZW50IGJsb2NrIGFuZCBjYXB0dXJlIGRhdGEKICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHA3LmFzbjEucmVjaXBpZW50SW5mb1ZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzcgUmVjaXBpZW50SW5mby4gJyArCiAgICAgICdBU04uMSBvYmplY3QgaXMgbm90IGFuIFBLQ1MjNyBSZWNpcGllbnRJbmZvLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICByZXR1cm4gewogICAgdmVyc2lvbjogY2FwdHVyZS52ZXJzaW9uLmNoYXJDb2RlQXQoMCksCiAgICBpc3N1ZXI6IGZvcmdlLnBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheShjYXB0dXJlLmlzc3VlciksCiAgICBzZXJpYWxOdW1iZXI6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUuc2VyaWFsKS50b0hleCgpLAogICAgZW5jcnlwdGVkQ29udGVudDogewogICAgICBhbGdvcml0aG06IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5lbmNBbGdvcml0aG0pLAogICAgICBwYXJhbWV0ZXI6IGNhcHR1cmUuZW5jUGFyYW1ldGVyLnZhbHVlLAogICAgICBjb250ZW50OiBjYXB0dXJlLmVuY0tleQogICAgfQogIH07Cn0KCi8qKgogKiBDb252ZXJ0cyBhIHNpbmdsZSByZWNpcGllbnQgb2JqZWN0IHRvIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgcmVjaXBpZW50IG9iamVjdC4KICoKICogQHJldHVybiB0aGUgQVNOLjEgUmVjaXBpZW50SW5mby4KICovCmZ1bmN0aW9uIF9yZWNpcGllbnRUb0FzbjEob2JqKSB7CiAgcmV0dXJuIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIFZlcnNpb24KICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIGFzbjEuaW50ZWdlclRvRGVyKG9iai52ZXJzaW9uKS5nZXRCeXRlcygpKSwKICAgIC8vIElzc3VlckFuZFNlcmlhbE51bWJlcgogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBOYW1lCiAgICAgIGZvcmdlLnBraS5kaXN0aW5ndWlzaGVkTmFtZVRvQXNuMSh7YXR0cmlidXRlczogb2JqLmlzc3Vlcn0pLAogICAgICAvLyBTZXJpYWwKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgICBmb3JnZS51dGlsLmhleFRvQnl0ZXMob2JqLnNlcmlhbE51bWJlcikpCiAgICBdKSwKICAgIC8vIEtleUVuY3J5cHRpb25BbGdvcml0aG1JZGVudGlmaWVyCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIEFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihvYmouZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pLmdldEJ5dGVzKCkpLAogICAgICAvLyBQYXJhbWV0ZXIsIGZvcmNlIE5VTEwsIG9ubHkgUlNBIHN1cHBvcnRlZCBmb3Igbm93LgogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgIF0pLAogICAgLy8gRW5jcnlwdGVkS2V5CiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgb2JqLmVuY3J5cHRlZENvbnRlbnQuY29udGVudCkKICBdKTsKfQoKLyoqCiAqIE1hcCBhIHNldCBvZiBSZWNpcGllbnRJbmZvIEFTTi4xIG9iamVjdHMgdG8gcmVjaXBpZW50IG9iamVjdHMuCiAqCiAqIEBwYXJhbSBpbmZvcyBhbiBhcnJheSBvZiBBU04uMSByZXByZXNlbnRhdGlvbnMgUmVjaXBpZW50SW5mbyAoaS5lLiBTRVQgT0YpLgogKgogKiBAcmV0dXJuIGFuIGFycmF5IG9mIHJlY2lwaWVudCBvYmplY3RzLgogKi8KZnVuY3Rpb24gX3JlY2lwaWVudHNGcm9tQXNuMShpbmZvcykgewogIHZhciByZXQgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgaW5mb3MubGVuZ3RoOyArK2kpIHsKICAgIHJldC5wdXNoKF9yZWNpcGllbnRGcm9tQXNuMShpbmZvc1tpXSkpOwogIH0KICByZXR1cm4gcmV0Owp9CgovKioKICogTWFwIGFuIGFycmF5IG9mIHJlY2lwaWVudCBvYmplY3RzIHRvIEFTTi4xIFJlY2lwaWVudEluZm8gb2JqZWN0cy4KICoKICogQHBhcmFtIHJlY2lwaWVudHMgYW4gYXJyYXkgb2YgcmVjaXBpZW50SW5mbyBvYmplY3RzLgogKgogKiBAcmV0dXJuIGFuIGFycmF5IG9mIEFTTi4xIFJlY2lwaWVudEluZm9zLgogKi8KZnVuY3Rpb24gX3JlY2lwaWVudHNUb0FzbjEocmVjaXBpZW50cykgewogIHZhciByZXQgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgcmVjaXBpZW50cy5sZW5ndGg7ICsraSkgewogICAgcmV0LnB1c2goX3JlY2lwaWVudFRvQXNuMShyZWNpcGllbnRzW2ldKSk7CiAgfQogIHJldHVybiByZXQ7Cn0KCi8qKgogKiBDb252ZXJ0cyBhIHNpbmdsZSBzaWduZXIgZnJvbSBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIGEgU2lnbmVySW5mby4KICoKICogQHJldHVybiB0aGUgc2lnbmVyIG9iamVjdC4KICovCmZ1bmN0aW9uIF9zaWduZXJGcm9tQXNuMShvYmopIHsKICAvLyB2YWxpZGF0ZSBFbnZlbG9wZWREYXRhIGNvbnRlbnQgYmxvY2sgYW5kIGNhcHR1cmUgZGF0YQogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcDcuYXNuMS5zaWduZXJJbmZvVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFBLQ1MjNyBTaWduZXJJbmZvLiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBpcyBub3QgYW4gUEtDUyM3IFNpZ25lckluZm8uJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBydmFsID0gewogICAgdmVyc2lvbjogY2FwdHVyZS52ZXJzaW9uLmNoYXJDb2RlQXQoMCksCiAgICBpc3N1ZXI6IGZvcmdlLnBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheShjYXB0dXJlLmlzc3VlciksCiAgICBzZXJpYWxOdW1iZXI6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUuc2VyaWFsKS50b0hleCgpLAogICAgZGlnZXN0QWxnb3JpdGhtOiBhc24xLmRlclRvT2lkKGNhcHR1cmUuZGlnZXN0QWxnb3JpdGhtKSwKICAgIHNpZ25hdHVyZUFsZ29yaXRobTogYXNuMS5kZXJUb09pZChjYXB0dXJlLnNpZ25hdHVyZUFsZ29yaXRobSksCiAgICBzaWduYXR1cmU6IGNhcHR1cmUuc2lnbmF0dXJlLAogICAgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXM6IFtdLAogICAgdW5hdXRoZW50aWNhdGVkQXR0cmlidXRlczogW10KICB9OwoKICAvLyBUT0RPOiBjb252ZXJ0IGF0dHJpYnV0ZXMKICB2YXIgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgPSBjYXB0dXJlLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIHx8IFtdOwogIHZhciB1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzID0gY2FwdHVyZS51bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIHx8IFtdOwoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIENvbnZlcnRzIGEgc2luZ2xlIHNpZ25lckluZm8gb2JqZWN0IHRvIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgc2lnbmVySW5mbyBvYmplY3QuCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIGEgU2lnbmVySW5mby4KICovCmZ1bmN0aW9uIF9zaWduZXJUb0FzbjEob2JqKSB7CiAgLy8gU2lnbmVySW5mbwogIHZhciBydmFsID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gdmVyc2lvbgogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIob2JqLnZlcnNpb24pLmdldEJ5dGVzKCkpLAogICAgLy8gaXNzdWVyQW5kU2VyaWFsTnVtYmVyCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIG5hbWUKICAgICAgZm9yZ2UucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKHthdHRyaWJ1dGVzOiBvYmouaXNzdWVyfSksCiAgICAgIC8vIHNlcmlhbAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgIGZvcmdlLnV0aWwuaGV4VG9CeXRlcyhvYmouc2VyaWFsTnVtYmVyKSkKICAgIF0pLAogICAgLy8gZGlnZXN0QWxnb3JpdGhtCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihvYmouZGlnZXN0QWxnb3JpdGhtKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycyAobnVsbCkKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5OVUxMLCBmYWxzZSwgJycpCiAgICBdKQogIF0pOwoKICAvLyBhdXRoZW50aWNhdGVkQXR0cmlidXRlcyAoT1BUSU9OQUwpCiAgaWYob2JqLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMSkgewogICAgLy8gYWRkIEFTTi4xIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGR1cmluZyBzaWduaW5nCiAgICBydmFsLnZhbHVlLnB1c2gob2JqLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMSk7CiAgfQoKICAvLyBkaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtCiAgcnZhbC52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIGFsZ29yaXRobQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICBhc24xLm9pZFRvRGVyKG9iai5zaWduYXR1cmVBbGdvcml0aG0pLmdldEJ5dGVzKCkpLAogICAgLy8gcGFyYW1ldGVycyAobnVsbCkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuTlVMTCwgZmFsc2UsICcnKQogIF0pKTsKCiAgLy8gZW5jcnlwdGVkRGlnZXN0CiAgcnZhbC52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIG9iai5zaWduYXR1cmUpKTsKCiAgLy8gdW5hdXRoZW50aWNhdGVkQXR0cmlidXRlcyAoT1BUSU9OQUwpCiAgaWYob2JqLnVuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoID4gMCkgewogICAgLy8gWzFdIElNUExJQ0lUCiAgICB2YXIgYXR0cnNBc24xID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAxLCB0cnVlLCBbXSk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgb2JqLnVuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHsKICAgICAgdmFyIGF0dHIgPSBvYmoudW5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1tpXTsKICAgICAgYXR0cnNBc24xLnZhbHVlcy5wdXNoKF9hdHRyaWJ1dGVUb0FzbjEoYXR0cikpOwogICAgfQogICAgcnZhbC52YWx1ZS5wdXNoKGF0dHJzQXNuMSk7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIE1hcCBhIHNldCBvZiBTaWduZXJJbmZvIEFTTi4xIG9iamVjdHMgdG8gYW4gYXJyYXkgb2Ygc2lnbmVyIG9iamVjdHMuCiAqCiAqIEBwYXJhbSBzaWduZXJJbmZvQXNuMXMgYW4gYXJyYXkgb2YgQVNOLjEgU2lnbmVySW5mb3MgKGkuZS4gU0VUIE9GKS4KICoKICogQHJldHVybiBhbiBhcnJheSBvZiBzaWduZXJzIG9iamVjdHMuCiAqLwpmdW5jdGlvbiBfc2lnbmVyc0Zyb21Bc24xKHNpZ25lckluZm9Bc24xcykgewogIHZhciByZXQgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgc2lnbmVySW5mb0FzbjFzLmxlbmd0aDsgKytpKSB7CiAgICByZXQucHVzaChfc2lnbmVyRnJvbUFzbjEoc2lnbmVySW5mb0FzbjFzW2ldKSk7CiAgfQogIHJldHVybiByZXQ7Cn0KCi8qKgogKiBNYXAgYW4gYXJyYXkgb2Ygc2lnbmVyIG9iamVjdHMgdG8gQVNOLjEgb2JqZWN0cy4KICoKICogQHBhcmFtIHNpZ25lcnMgYW4gYXJyYXkgb2Ygc2lnbmVyIG9iamVjdHMuCiAqCiAqIEByZXR1cm4gYW4gYXJyYXkgb2YgQVNOLjEgU2lnbmVySW5mb3MuCiAqLwpmdW5jdGlvbiBfc2lnbmVyc1RvQXNuMShzaWduZXJzKSB7CiAgdmFyIHJldCA9IFtdOwogIGZvcih2YXIgaSA9IDA7IGkgPCBzaWduZXJzLmxlbmd0aDsgKytpKSB7CiAgICByZXQucHVzaChfc2lnbmVyVG9Bc24xKHNpZ25lcnNbaV0pKTsKICB9CiAgcmV0dXJuIHJldDsKfQoKLyoqCiAqIENvbnZlcnQgYW4gYXR0cmlidXRlIG9iamVjdCB0byBhbiBBU04uMSBBdHRyaWJ1dGUuCiAqCiAqIEBwYXJhbSBhdHRyIHRoZSBhdHRyaWJ1dGUgb2JqZWN0LgogKgogKiBAcmV0dXJuIHRoZSBBU04uMSBBdHRyaWJ1dGUuCiAqLwpmdW5jdGlvbiBfYXR0cmlidXRlVG9Bc24xKGF0dHIpIHsKICB2YXIgdmFsdWU7CgogIC8vIFRPRE86IGdlbmVyYWxpemUgdG8gc3VwcG9ydCBtb3JlIGF0dHJpYnV0ZXMKICBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLmNvbnRlbnRUeXBlKSB7CiAgICB2YWx1ZSA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgYXNuMS5vaWRUb0RlcihhdHRyLnZhbHVlKS5nZXRCeXRlcygpKTsKICB9IGVsc2UgaWYoYXR0ci50eXBlID09PSBmb3JnZS5wa2kub2lkcy5tZXNzYWdlRGlnZXN0KSB7CiAgICB2YWx1ZSA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICBhdHRyLnZhbHVlLmJ5dGVzKCkpOwogIH0gZWxzZSBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLnNpZ25pbmdUaW1lKSB7CiAgICAvKiBOb3RlIHBlciBSRkMgMjk4NTogRGF0ZXMgYmV0d2VlbiAxIEphbnVhcnkgMTk1MCBhbmQgMzEgRGVjZW1iZXIgMjA0OQogICAgICAoaW5jbHVzaXZlKSBNVVNUIGJlIGVuY29kZWQgYXMgVVRDVGltZS4gQW55IGRhdGVzIHdpdGggeWVhciB2YWx1ZXMKICAgICAgYmVmb3JlIDE5NTAgb3IgYWZ0ZXIgMjA0OSBNVVNUIGJlIGVuY29kZWQgYXMgR2VuZXJhbGl6ZWRUaW1lLiBbRnVydGhlcixdCiAgICAgIFVUQ1RpbWUgdmFsdWVzIE1VU1QgYmUgZXhwcmVzc2VkIGluIEdyZWVud2ljaCBNZWFuIFRpbWUgKFp1bHUpIGFuZCBNVVNUCiAgICAgIGluY2x1ZGUgc2Vjb25kcyAoaS5lLiwgdGltZXMgYXJlIFlZTU1EREhITU1TU1opLCBldmVuIHdoZXJlIHRoZQogICAgICBudW1iZXIgb2Ygc2Vjb25kcyBpcyB6ZXJvLiAgTWlkbmlnaHQgKEdNVCkgbXVzdCBiZSByZXByZXNlbnRlZCBhcwogICAgICAiWVlNTUREMDAwMDAwWiIuICovCiAgICAvLyBUT0RPOiBtYWtlIHRoZXNlIG1vZHVsZS1sZXZlbCBjb25zdGFudHMKICAgIHZhciBqYW5fMV8xOTUwID0gbmV3IERhdGUoJ0phbiAxLCAxOTUwIDAwOjAwOjAwWicpOwogICAgdmFyIGphbl8xXzIwNTAgPSBuZXcgRGF0ZSgnSmFuIDEsIDIwNTAgMDA6MDA6MDBaJyk7CiAgICB2YXIgZGF0ZSA9IGF0dHIudmFsdWU7CiAgICBpZih0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHsKICAgICAgLy8gdHJ5IHRvIHBhcnNlIGRhdGUKICAgICAgdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UoZGF0ZSk7CiAgICAgIGlmKCFpc05hTih0aW1lc3RhbXApKSB7CiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7CiAgICAgIH0gZWxzZSBpZihkYXRlLmxlbmd0aCA9PT0gMTMpIHsKICAgICAgICAvLyBZWU1NRERISE1NU1NaICgxMyBjaGFycyBmb3IgVVRDVGltZSkKICAgICAgICBkYXRlID0gYXNuMS51dGNUaW1lVG9EYXRlKGRhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIGFzc3VtZSBnZW5lcmFsaXplZCB0aW1lCiAgICAgICAgZGF0ZSA9IGFzbjEuZ2VuZXJhbGl6ZWRUaW1lVG9EYXRlKGRhdGUpOwogICAgICB9CiAgICB9CgogICAgaWYoZGF0ZSA+PSBqYW5fMV8xOTUwICYmIGRhdGUgPCBqYW5fMV8yMDUwKSB7CiAgICAgIHZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5VVENUSU1FLCBmYWxzZSwKICAgICAgICBhc24xLmRhdGVUb1V0Y1RpbWUoZGF0ZSkpOwogICAgfSBlbHNlIHsKICAgICAgdmFsdWUgPSBhc24xLmNyZWF0ZSgKICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLkdFTkVSQUxJWkVEVElNRSwgZmFsc2UsCiAgICAgICAgYXNuMS5kYXRlVG9HZW5lcmFsaXplZFRpbWUoZGF0ZSkpOwogICAgfQogIH0KCiAgLy8gVE9ETzogZXhwb3NlIGFzIGNvbW1vbiBBUEkgY2FsbAogIC8vIGNyZWF0ZSBhIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgc2V0CiAgLy8gZWFjaCB2YWx1ZSBpbiB0aGUgc2V0IGlzIGFuIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSBmaXJzdAogIC8vIGNvbnRhaW5pbmcgdGhlIHR5cGUgKGFuIE9JRCkgYW5kIHNlY29uZCB0aGUgdmFsdWUKICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gQXR0cmlidXRlVHlwZQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICBhc24xLm9pZFRvRGVyKGF0dHIudHlwZSkuZ2V0Qnl0ZXMoKSksCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwgWwogICAgICAvLyBBdHRyaWJ1dGVWYWx1ZQogICAgICB2YWx1ZQogICAgXSkKICBdKTsKfQoKLyoqCiAqIE1hcCBtZXNzYWdlcyBlbmNyeXB0ZWQgY29udGVudCB0byBBU04uMSBvYmplY3RzLgogKgogKiBAcGFyYW0gZWMgVGhlIGVuY3J5cHRlZENvbnRlbnQgb2JqZWN0IG9mIHRoZSBtZXNzYWdlLgogKgogKiBAcmV0dXJuIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbmNyeXB0ZWRDb250ZW50IG9iamVjdCAoU0VRVUVOQ0UpLgogKi8KZnVuY3Rpb24gX2VuY3J5cHRlZENvbnRlbnRUb0FzbjEoZWMpIHsKICByZXR1cm4gWwogICAgLy8gQ29udGVudFR5cGUsIGFsd2F5cyBEYXRhIGZvciB0aGUgbW9tZW50CiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgIGFzbjEub2lkVG9EZXIoZm9yZ2UucGtpLm9pZHMuZGF0YSkuZ2V0Qnl0ZXMoKSksCiAgICAvLyBDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUlkZW50aWZpZXIKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgLy8gQWxnb3JpdGhtCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKGVjLmFsZ29yaXRobSkuZ2V0Qnl0ZXMoKSksCiAgICAgIC8vIFBhcmFtZXRlcnMgKElWKQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICBlYy5wYXJhbWV0ZXIuZ2V0Qnl0ZXMoKSkKICAgIF0pLAogICAgLy8gWzBdIEVuY3J5cHRlZENvbnRlbnQKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICBlYy5jb250ZW50LmdldEJ5dGVzKCkpCiAgICBdKQogIF07Cn0KCi8qKgogKiBSZWFkcyB0aGUgImNvbW1vbiBwYXJ0IiBvZiBhbiBQS0NTIzcgY29udGVudCBibG9jayAoaW4gQVNOLjEgZm9ybWF0KQogKgogKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSAiY29tbW9uIHBhcnQiIG9mIHRoZSBQS0NTIzcgY29udGVudCBibG9ja3MKICogRW5jcnlwdGVkRGF0YSBhbmQgRW52ZWxvcGVkRGF0YSwgaS5lLiB2ZXJzaW9uIG51bWJlciBhbmQgc3ltbWV0cmljYWxseQogKiBlbmNyeXB0ZWQgY29udGVudCBibG9jay4KICoKICogVGhlIHJlc3VsdCBvZiB0aGUgQVNOLjEgdmFsaWRhdGUgYW5kIGNhcHR1cmUgcHJvY2VzcyBpcyByZXR1cm5lZAogKiB0byBhbGxvdyB0aGUgY2FsbGVyIHRvIGV4dHJhY3QgZnVydGhlciBkYXRhLCBlLmcuIHRoZSBsaXN0IG9mIHJlY2lwaWVudHMKICogaW4gY2FzZSBvZiBhIEVudmVsb3BlZERhdGEgb2JqZWN0LgogKgogKiBAcGFyYW0gbXNnIHRoZSBQS0NTIzcgb2JqZWN0IHRvIHJlYWQgdGhlIGRhdGEgdG8uCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250ZW50IGJsb2NrLgogKiBAcGFyYW0gdmFsaWRhdG9yIHRoZSBBU04uMSBzdHJ1Y3R1cmUgdmFsaWRhdG9yIG9iamVjdCB0byB1c2UuCiAqCiAqIEByZXR1cm4gdGhlIHZhbHVlIG1hcCBjYXB0dXJlZCBieSB2YWxpZGF0b3Igb2JqZWN0LgogKi8KZnVuY3Rpb24gX2Zyb21Bc24xKG1zZywgb2JqLCB2YWxpZGF0b3IpIHsKICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzcgbWVzc2FnZS4gJyArCiAgICAgICdBU04uMSBvYmplY3QgaXMgbm90IGEgc3VwcG9ydGVkIFBLQ1MjNyBtZXNzYWdlLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3I7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIENoZWNrIGNvbnRlbnRUeXBlLCBzbyBmYXIgd2Ugb25seSBzdXBwb3J0IChyYXcpIERhdGEuCiAgdmFyIGNvbnRlbnRUeXBlID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLmNvbnRlbnRUeXBlKTsKICBpZihjb250ZW50VHlwZSAhPT0gZm9yZ2UucGtpLm9pZHMuZGF0YSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBQS0NTIzcgbWVzc2FnZS4gJyArCiAgICAgICdPbmx5IHdyYXBwZWQgQ29udGVudFR5cGUgRGF0YSBzdXBwb3J0ZWQuJyk7CiAgfQoKICBpZihjYXB0dXJlLmVuY3J5cHRlZENvbnRlbnQpIHsKICAgIHZhciBjb250ZW50ID0gJyc7CiAgICBpZihmb3JnZS51dGlsLmlzQXJyYXkoY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50KSkgewogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgaWYoY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50W2ldLnR5cGUgIT09IGFzbjEuVHlwZS5PQ1RFVFNUUklORykgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYWxmb3JtZWQgUEtDUyM3IG1lc3NhZ2UsIGV4cGVjdGluZyBlbmNyeXB0ZWQgJyArCiAgICAgICAgICAgICdjb250ZW50IGNvbnN0cnVjdGVkIG9mIG9ubHkgT0NURVQgU1RSSU5HIG9iamVjdHMuJyk7CiAgICAgICAgfQogICAgICAgIGNvbnRlbnQgKz0gY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50W2ldLnZhbHVlOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjb250ZW50ID0gY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50OwogICAgfQogICAgbXNnLmVuY3J5cHRlZENvbnRlbnQgPSB7CiAgICAgIGFsZ29yaXRobTogYXNuMS5kZXJUb09pZChjYXB0dXJlLmVuY0FsZ29yaXRobSksCiAgICAgIHBhcmFtZXRlcjogZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5lbmNQYXJhbWV0ZXIudmFsdWUpLAogICAgICBjb250ZW50OiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjb250ZW50KQogICAgfTsKICB9CgogIGlmKGNhcHR1cmUuY29udGVudCkgewogICAgdmFyIGNvbnRlbnQgPSAnJzsKICAgIGlmKGZvcmdlLnV0aWwuaXNBcnJheShjYXB0dXJlLmNvbnRlbnQpKSB7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjYXB0dXJlLmNvbnRlbnQubGVuZ3RoOyArK2kpIHsKICAgICAgICBpZihjYXB0dXJlLmNvbnRlbnRbaV0udHlwZSAhPT0gYXNuMS5UeXBlLk9DVEVUU1RSSU5HKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBQS0NTIzcgbWVzc2FnZSwgZXhwZWN0aW5nICcgKwogICAgICAgICAgICAnY29udGVudCBjb25zdHJ1Y3RlZCBvZiBvbmx5IE9DVEVUIFNUUklORyBvYmplY3RzLicpOwogICAgICAgIH0KICAgICAgICBjb250ZW50ICs9IGNhcHR1cmUuY29udGVudFtpXS52YWx1ZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgY29udGVudCA9IGNhcHR1cmUuY29udGVudDsKICAgIH0KICAgIG1zZy5jb250ZW50ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY29udGVudCk7CiAgfQoKICBtc2cudmVyc2lvbiA9IGNhcHR1cmUudmVyc2lvbi5jaGFyQ29kZUF0KDApOwogIG1zZy5yYXdDYXB0dXJlID0gY2FwdHVyZTsKCiAgcmV0dXJuIGNhcHR1cmU7Cn0KCi8qKgogKiBEZWNyeXB0IHRoZSBzeW1tZXRyaWNhbGx5IGVuY3J5cHRlZCBjb250ZW50IGJsb2NrIG9mIHRoZSBQS0NTIzcgbWVzc2FnZS4KICoKICogRGVjcnlwdGlvbiBpcyBza2lwcGVkIGluIGNhc2UgdGhlIFBLQ1MjNyBtZXNzYWdlIG9iamVjdCBhbHJlYWR5IGhhcyBhCiAqIChkZWNyeXB0ZWQpIGNvbnRlbnQgYXR0cmlidXRlLiAgVGhlIGFsZ29yaXRobSwga2V5IGFuZCBjaXBoZXIgcGFyYW1ldGVycwogKiAocHJvYmFibHkgdGhlIGl2KSBhcmUgdGFrZW4gZnJvbSB0aGUgZW5jcnlwdGVkQ29udGVudCBhdHRyaWJ1dGUgb2YgdGhlCiAqIG1lc3NhZ2Ugb2JqZWN0LgogKgogKiBAcGFyYW0gVGhlIFBLQ1MjNyBtZXNzYWdlIG9iamVjdC4KICovCmZ1bmN0aW9uIF9kZWNyeXB0Q29udGVudChtc2cpIHsKICBpZihtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkgPT09IHVuZGVmaW5lZCkgewogICAgdGhyb3cgbmV3IEVycm9yKCdTeW1tZXRyaWMga2V5IG5vdCBhdmFpbGFibGUuJyk7CiAgfQoKICBpZihtc2cuY29udGVudCA9PT0gdW5kZWZpbmVkKSB7CiAgICB2YXIgY2lwaDsKCiAgICBzd2l0Y2gobXNnLmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtKSB7CiAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHNbJ2FlczEyOC1DQkMnXToKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkc1snYWVzMTkyLUNCQyddOgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzWydhZXMyNTYtQ0JDJ106CiAgICAgICAgY2lwaCA9IGZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSk7CiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzWydkZXNDQkMnXToKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkc1snZGVzLUVERTMtQ0JDJ106CiAgICAgICAgY2lwaCA9IGZvcmdlLmRlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSk7CiAgICAgICAgYnJlYWs7CgogICAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc3ltbWV0cmljIGNpcGhlciwgT0lEICcgKwogICAgICAgICAgbXNnLmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtKTsKICAgIH0KICAgIGNpcGguc3RhcnQobXNnLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyKTsKICAgIGNpcGgudXBkYXRlKG1zZy5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpOwoKICAgIGlmKCFjaXBoLmZpbmlzaCgpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignU3ltbWV0cmljIGRlY3J5cHRpb24gZmFpbGVkLicpOwogICAgfQoKICAgIG1zZy5jb250ZW50ID0gY2lwaC5vdXRwdXQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdwa2NzNyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wa2NzNycsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hZXMnLAogICcuL2FzbjEnLAogICcuL2RlcycsCiAgJy4vb2lkcycsCiAgJy4vcGVtJywKICAnLi9wa2NzN2FzbjEnLAogICcuL3JhbmRvbScsCiAgJy4vdXRpbCcsCiAgJy4veDUwOScKXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogRnVuY3Rpb25zIHRvIG91dHB1dCBrZXlzIGluIFNTSC1mcmllbmRseSBmb3JtYXRzLgogKgogKiBUaGlzIGlzIHBhcnQgb2YgdGhlIEZvcmdlIHByb2plY3Qgd2hpY2ggbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCiAqIGVpdGhlciB0aGUgQlNEIExpY2Vuc2Ugb3IgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIFZlcnNpb24gMi4KICoKICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGlnaXRhbGJhemFhci9mb3JnZS9ibG9iL2NiZWJjYTM3ODA2NTg3MDNkOTI1YjYxYjJjYWZmYjFkMjYzYTZjMWQvTElDRU5TRQogKgogKiBAYXV0aG9yIGh0dHBzOi8vZ2l0aHViLmNvbS9zaGVsbGFjCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHNzaCA9IGZvcmdlLnNzaCA9IGZvcmdlLnNzaCB8fCB7fTsKCi8qKgogKiBFbmNvZGVzIChhbmQgb3B0aW9uYWxseSBlbmNyeXB0cykgYSBwcml2YXRlIFJTQSBrZXkgYXMgYSBQdXR0eSBQUEsgZmlsZS4KICoKICogQHBhcmFtIHByaXZhdGVLZXkgdGhlIGtleS4KICogQHBhcmFtIHBhc3NwaHJhc2UgYSBwYXNzcGhyYXNlIHRvIHByb3RlY3QgdGhlIGtleSAoZmFsc3kgZm9yIG5vIGVuY3J5cHRpb24pLgogKiBAcGFyYW0gY29tbWVudCBhIGNvbW1lbnQgdG8gaW5jbHVkZSBpbiB0aGUga2V5IGZpbGUuCiAqCiAqIEByZXR1cm4gdGhlIFBQSyBmaWxlIGFzIGEgc3RyaW5nLgogKi8Kc3NoLnByaXZhdGVLZXlUb1B1dHR5ID0gZnVuY3Rpb24ocHJpdmF0ZUtleSwgcGFzc3BocmFzZSwgY29tbWVudCkgewogIGNvbW1lbnQgPSBjb21tZW50IHx8ICcnOwogIHBhc3NwaHJhc2UgPSBwYXNzcGhyYXNlIHx8ICcnOwogIHZhciBhbGdvcml0aG0gPSAnc3NoLXJzYSc7CiAgdmFyIGVuY3J5cHRpb25BbGdvcml0aG0gPSAocGFzc3BocmFzZSA9PT0gJycpID8gJ25vbmUnIDogJ2FlczI1Ni1jYmMnOwoKICB2YXIgcHBrID0gJ1B1VFRZLVVzZXItS2V5LUZpbGUtMjogJyArIGFsZ29yaXRobSArICdcclxuJzsKICBwcGsgKz0gJ0VuY3J5cHRpb246ICcgKyBlbmNyeXB0aW9uQWxnb3JpdGhtICsgJ1xyXG4nOwogIHBwayArPSAnQ29tbWVudDogJyArIGNvbW1lbnQgKyAnXHJcbic7CgogIC8vIHB1YmxpYyBrZXkgaW50byBidWZmZXIgZm9yIHBwawogIHZhciBwdWJidWZmZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihwdWJidWZmZXIsIGFsZ29yaXRobSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwdWJidWZmZXIsIHByaXZhdGVLZXkuZSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwdWJidWZmZXIsIHByaXZhdGVLZXkubik7CgogIC8vIHdyaXRlIHB1YmxpYyBrZXkKICB2YXIgcHViID0gZm9yZ2UudXRpbC5lbmNvZGU2NChwdWJidWZmZXIuYnl0ZXMoKSwgNjQpOwogIHZhciBsZW5ndGggPSBNYXRoLmZsb29yKHB1Yi5sZW5ndGggLyA2NikgKyAxOyAvLyA2NiA9IDY0ICsgXHJcbgogIHBwayArPSAnUHVibGljLUxpbmVzOiAnICsgbGVuZ3RoICsgJ1xyXG4nOwogIHBwayArPSBwdWI7CgogIC8vIHByaXZhdGUga2V5IGludG8gYSBidWZmZXIKICB2YXIgcHJpdmJ1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwcml2YnVmZmVyLCBwcml2YXRlS2V5LmQpOwogIF9hZGRCaWdJbnRlZ2VyVG9CdWZmZXIocHJpdmJ1ZmZlciwgcHJpdmF0ZUtleS5wKTsKICBfYWRkQmlnSW50ZWdlclRvQnVmZmVyKHByaXZidWZmZXIsIHByaXZhdGVLZXkucSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwcml2YnVmZmVyLCBwcml2YXRlS2V5LnFJbnYpOwoKICAvLyBvcHRpb25hbGx5IGVuY3J5cHQgdGhlIHByaXZhdGUga2V5CiAgdmFyIHByaXY7CiAgaWYoIXBhc3NwaHJhc2UpIHsKICAgIC8vIHVzZSB0aGUgdW5lbmNyeXB0ZWQgYnVmZmVyCiAgICBwcml2ID0gZm9yZ2UudXRpbC5lbmNvZGU2NChwcml2YnVmZmVyLmJ5dGVzKCksIDY0KTsKICB9IGVsc2UgewogICAgLy8gZW5jcnlwdCBSU0Ega2V5IHVzaW5nIHBhc3NwaHJhc2UKICAgIHZhciBlbmNMZW4gPSBwcml2YnVmZmVyLmxlbmd0aCgpICsgMTYgLSAxOwogICAgZW5jTGVuIC09IGVuY0xlbiAlIDE2OwoKICAgIC8vIHBhZCBwcml2YXRlIGtleSB3aXRoIHNoYTEtZCBkYXRhIC0tIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYKICAgIHZhciBwYWRkaW5nID0gX3NoYTEocHJpdmJ1ZmZlci5ieXRlcygpKTsKCiAgICBwYWRkaW5nLnRydW5jYXRlKHBhZGRpbmcubGVuZ3RoKCkgLSBlbmNMZW4gKyBwcml2YnVmZmVyLmxlbmd0aCgpKTsKICAgIHByaXZidWZmZXIucHV0QnVmZmVyKHBhZGRpbmcpOwoKICAgIHZhciBhZXNrZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgYWVza2V5LnB1dEJ1ZmZlcihfc2hhMSgnXHgwMFx4MDBceDAwXHgwMCcsIHBhc3NwaHJhc2UpKTsKICAgIGFlc2tleS5wdXRCdWZmZXIoX3NoYTEoJ1x4MDBceDAwXHgwMFx4MDEnLCBwYXNzcGhyYXNlKSk7CgogICAgLy8gZW5jcnlwdCBzb21lIGJ5dGVzIHVzaW5nIENCQyBtb2RlCiAgICAvLyBrZXkgaXMgNDAgYnl0ZXMsIHNvIHRydW5jYXRlICpieSogOCBieXRlcwogICAgdmFyIGNpcGhlciA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGFlc2tleS50cnVuY2F0ZSg4KSwgJ0NCQycpOwogICAgY2lwaGVyLnN0YXJ0KGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCkuZmlsbFdpdGhCeXRlKDAsIDE2KSk7CiAgICBjaXBoZXIudXBkYXRlKHByaXZidWZmZXIuY29weSgpKTsKICAgIGNpcGhlci5maW5pc2goKTsKICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIub3V0cHV0OwoKICAgIC8vIE5vdGU6IHRoaXMgYXBwZWFycyB0byBkaWZmZXIgZnJvbSBQdXR0eSAtLSBpcyBmb3JnZSB3cm9uZywgb3IgcHV0dHk/CiAgICAvLyBkdWUgdG8gcGFkZGluZyB3ZSBmaW5pc2ggYXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgMTYKICAgIGVuY3J5cHRlZC50cnVuY2F0ZSgxNik7IC8vIGFsbCBwYWRkaW5nCgogICAgcHJpdiA9IGZvcmdlLnV0aWwuZW5jb2RlNjQoZW5jcnlwdGVkLmJ5dGVzKCksIDY0KTsKICB9CgogIC8vIG91dHB1dCBwcml2YXRlIGtleQogIGxlbmd0aCA9IE1hdGguZmxvb3IocHJpdi5sZW5ndGggLyA2NikgKyAxOyAvLyA2NCArIFxyXG4KICBwcGsgKz0gJ1xyXG5Qcml2YXRlLUxpbmVzOiAnICsgbGVuZ3RoICsgJ1xyXG4nOwogIHBwayArPSBwcml2OwoKICAvLyBNQUMKICB2YXIgbWFja2V5ID0gX3NoYTEoJ3B1dHR5LXByaXZhdGUta2V5LWZpbGUtbWFjLWtleScsIHBhc3NwaHJhc2UpOwoKICB2YXIgbWFjYnVmZmVyID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBfYWRkU3RyaW5nVG9CdWZmZXIobWFjYnVmZmVyLCBhbGdvcml0aG0pOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihtYWNidWZmZXIsIGVuY3J5cHRpb25BbGdvcml0aG0pOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihtYWNidWZmZXIsIGNvbW1lbnQpOwogIG1hY2J1ZmZlci5wdXRJbnQzMihwdWJidWZmZXIubGVuZ3RoKCkpOwogIG1hY2J1ZmZlci5wdXRCdWZmZXIocHViYnVmZmVyKTsKICBtYWNidWZmZXIucHV0SW50MzIocHJpdmJ1ZmZlci5sZW5ndGgoKSk7CiAgbWFjYnVmZmVyLnB1dEJ1ZmZlcihwcml2YnVmZmVyKTsKCiAgdmFyIGhtYWMgPSBmb3JnZS5obWFjLmNyZWF0ZSgpOwogIGhtYWMuc3RhcnQoJ3NoYTEnLCBtYWNrZXkpOwogIGhtYWMudXBkYXRlKG1hY2J1ZmZlci5ieXRlcygpKTsKCiAgcHBrICs9ICdcclxuUHJpdmF0ZS1NQUM6ICcgKyBobWFjLmRpZ2VzdCgpLnRvSGV4KCkgKyAnXHJcbic7CgogIHJldHVybiBwcGs7Cn07CgovKioKICogRW5jb2RlcyBhIHB1YmxpYyBSU0Ega2V5IGFzIGFuIE9wZW5TU0ggZmlsZS4KICoKICogQHBhcmFtIGtleSB0aGUga2V5LgogKiBAcGFyYW0gY29tbWVudCBhIGNvbW1lbnQuCiAqCiAqIEByZXR1cm4gdGhlIHB1YmxpYyBrZXkgaW4gT3BlblNTSCBmb3JtYXQuCiAqLwpzc2gucHVibGljS2V5VG9PcGVuU1NIID0gZnVuY3Rpb24oa2V5LCBjb21tZW50KSB7CiAgdmFyIHR5cGUgPSAnc3NoLXJzYSc7CiAgY29tbWVudCA9IGNvbW1lbnQgfHwgJyc7CgogIHZhciBidWZmZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihidWZmZXIsIHR5cGUpOwogIF9hZGRCaWdJbnRlZ2VyVG9CdWZmZXIoYnVmZmVyLCBrZXkuZSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihidWZmZXIsIGtleS5uKTsKCiAgcmV0dXJuIHR5cGUgKyAnICcgKyBmb3JnZS51dGlsLmVuY29kZTY0KGJ1ZmZlci5ieXRlcygpKSArICcgJyArIGNvbW1lbnQ7Cn07CgovKioKICogRW5jb2RlcyBhIHByaXZhdGUgUlNBIGtleSBhcyBhbiBPcGVuU1NIIGZpbGUuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIGtleS4KICogQHBhcmFtIHBhc3NwaHJhc2UgYSBwYXNzcGhyYXNlIHRvIHByb3RlY3QgdGhlIGtleSAoZmFsc3kgZm9yIG5vIGVuY3J5cHRpb24pLgogKgogKiBAcmV0dXJuIHRoZSBwdWJsaWMga2V5IGluIE9wZW5TU0ggZm9ybWF0LgogKi8Kc3NoLnByaXZhdGVLZXlUb09wZW5TU0ggPSBmdW5jdGlvbihwcml2YXRlS2V5LCBwYXNzcGhyYXNlKSB7CiAgaWYoIXBhc3NwaHJhc2UpIHsKICAgIHJldHVybiBmb3JnZS5wa2kucHJpdmF0ZUtleVRvUGVtKHByaXZhdGVLZXkpOwogIH0KICAvLyBPcGVuU1NIIHByaXZhdGUga2V5IGlzIGp1c3QgYSBsZWdhY3kgZm9ybWF0LCBpdCBzZWVtcwogIHJldHVybiBmb3JnZS5wa2kuZW5jcnlwdFJzYVByaXZhdGVLZXkocHJpdmF0ZUtleSwgcGFzc3BocmFzZSwKICAgIHtsZWdhY3k6IHRydWUsIGFsZ29yaXRobTogJ2FlczEyOCd9KTsKfTsKCi8qKgogKiBHZXRzIHRoZSBTU0ggZmluZ2VycHJpbnQgZm9yIHRoZSBnaXZlbiBwdWJsaWMga2V5LgogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIFttZF0gdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UgKGRlZmF1bHRzIHRvIGZvcmdlLm1kLm1kNSkuCiAqICAgICAgICAgIFtlbmNvZGluZ10gYW4gYWx0ZXJuYXRpdmUgb3V0cHV0IGVuY29kaW5nLCBzdWNoIGFzICdoZXgnCiAqICAgICAgICAgICAgKGRlZmF1bHRzIHRvIG5vbmUsIG91dHB1dHMgYSBieXRlIGJ1ZmZlcikuCiAqICAgICAgICAgIFtkZWxpbWl0ZXJdIHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gYnl0ZXMgZm9yICdoZXgnIGVuY29kZWQKICogICAgICAgICAgICBvdXRwdXQsIGVnOiAnOicgKGRlZmF1bHRzIHRvIG5vbmUpLgogKgogKiBAcmV0dXJuIHRoZSBmaW5nZXJwcmludCBhcyBhIGJ5dGUgYnVmZmVyIG9yIG90aGVyIGVuY29kaW5nIGJhc2VkIG9uIG9wdGlvbnMuCiAqLwpzc2guZ2V0UHVibGljS2V5RmluZ2VycHJpbnQgPSBmdW5jdGlvbihrZXksIG9wdGlvbnMpIHsKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICB2YXIgbWQgPSBvcHRpb25zLm1kIHx8IGZvcmdlLm1kLm1kNS5jcmVhdGUoKTsKCiAgdmFyIHR5cGUgPSAnc3NoLXJzYSc7CiAgdmFyIGJ1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgX2FkZFN0cmluZ1RvQnVmZmVyKGJ1ZmZlciwgdHlwZSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihidWZmZXIsIGtleS5lKTsKICBfYWRkQmlnSW50ZWdlclRvQnVmZmVyKGJ1ZmZlciwga2V5Lm4pOwoKICAvLyBoYXNoIHB1YmxpYyBrZXkgYnl0ZXMKICBtZC5zdGFydCgpOwogIG1kLnVwZGF0ZShidWZmZXIuZ2V0Qnl0ZXMoKSk7CiAgdmFyIGRpZ2VzdCA9IG1kLmRpZ2VzdCgpOwogIGlmKG9wdGlvbnMuZW5jb2RpbmcgPT09ICdoZXgnKSB7CiAgICB2YXIgaGV4ID0gZGlnZXN0LnRvSGV4KCk7CiAgICBpZihvcHRpb25zLmRlbGltaXRlcikgewogICAgICByZXR1cm4gaGV4Lm1hdGNoKC8uezJ9L2cpLmpvaW4ob3B0aW9ucy5kZWxpbWl0ZXIpOwogICAgfQogICAgcmV0dXJuIGhleDsKICB9IGVsc2UgaWYob3B0aW9ucy5lbmNvZGluZyA9PT0gJ2JpbmFyeScpIHsKICAgIHJldHVybiBkaWdlc3QuZ2V0Qnl0ZXMoKTsKICB9IGVsc2UgaWYob3B0aW9ucy5lbmNvZGluZykgewogICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nICInICsgb3B0aW9ucy5lbmNvZGluZyArICciLicpOwogIH0KICByZXR1cm4gZGlnZXN0Owp9OwoKLyoqCiAqIEFkZHMgbGVuKHZhbCkgdGhlbiB2YWwgdG8gYSBidWZmZXIuCiAqCiAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB0byBhZGQgdG8uCiAqIEBwYXJhbSB2YWwgYSBiaWcgaW50ZWdlci4KICovCmZ1bmN0aW9uIF9hZGRCaWdJbnRlZ2VyVG9CdWZmZXIoYnVmZmVyLCB2YWwpIHsKICB2YXIgaGV4VmFsID0gdmFsLnRvU3RyaW5nKDE2KTsKICAvLyBlbnN1cmUgMnMgY29tcGxlbWVudCArdmUKICBpZihoZXhWYWxbMF0gPj0gJzgnKSB7CiAgICBoZXhWYWwgPSAnMDAnICsgaGV4VmFsOwogIH0KICB2YXIgYnl0ZXMgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMoaGV4VmFsKTsKICBidWZmZXIucHV0SW50MzIoYnl0ZXMubGVuZ3RoKTsKICBidWZmZXIucHV0Qnl0ZXMoYnl0ZXMpOwp9CgovKioKICogQWRkcyBsZW4odmFsKSB0aGVuIHZhbCB0byBhIGJ1ZmZlci4KICoKICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVyIHRvIGFkZCB0by4KICogQHBhcmFtIHZhbCBhIHN0cmluZy4KICovCmZ1bmN0aW9uIF9hZGRTdHJpbmdUb0J1ZmZlcihidWZmZXIsIHZhbCkgewogIGJ1ZmZlci5wdXRJbnQzMih2YWwubGVuZ3RoKTsKICBidWZmZXIucHV0U3RyaW5nKHZhbCk7Cn0KCi8qKgogKiBIYXNoZXMgdGhlIGFyZ3VtZW50cyBpbnRvIG9uZSB2YWx1ZSB1c2luZyBTSEEtMS4KICoKICogQHJldHVybiB0aGUgc2hhMSBoYXNoIG9mIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuCiAqLwpmdW5jdGlvbiBfc2hhMSgpIHsKICB2YXIgc2hhID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB2YXIgbnVtID0gYXJndW1lbnRzLmxlbmd0aDsKICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgKytpKSB7CiAgICBzaGEudXBkYXRlKGFyZ3VtZW50c1tpXSk7CiAgfQogIHJldHVybiBzaGEuZGlnZXN0KCk7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3NzaCc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9zc2gnLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYWVzJywKICAnLi9obWFjJywKICAnLi9tZDUnLAogICcuL3NoYTEnLAogICcuL3V0aWwnCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFN1cHBvcnQgZm9yIGNvbmN1cnJlbnQgdGFzayBtYW5hZ2VtZW50IGFuZCBzeW5jaHJvbml6YXRpb24gaW4gd2ViCiAqIGFwcGxpY2F0aW9ucy4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICogQGF1dGhvciBEYXZpZCBJLiBMZWhuIDxkbGVobkBkaWdpdGFsYmF6YWFyLmNvbT4KICoKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTMgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBsb2dnaW5nIGNhdGVnb3J5CnZhciBjYXQgPSAnZm9yZ2UudGFzayc7CgovLyB2ZXJib3NlIGxldmVsCi8vIDA6IG9mZiwgMTogYSBsaXR0bGUsIDI6IGEgd2hvbGUgbG90Ci8vIFZlcmJvc2UgZGVidWcgbG9nZ2luZyBpcyBzdXJyb3VuZGVkIGJ5IGEgbGV2ZWwgY2hlY2sgdG8gYXZvaWQgdGhlCi8vIHBlcmZvcm1hbmNlIGlzc3VlcyB3aXRoIGV2ZW4gY2FsbGluZyB0aGUgbG9nZ2luZyBjb2RlIHJlZ2FyZGxlc3MgaWYgaXQKLy8gaXMgYWN0dWFsbHkgbG9nZ2VkLiAgRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgdGhpcyBzaG91bGQgbm90IGJlIHNldCB0byAyCi8vIGZvciBwcm9kdWN0aW9uIHVzZS4KLy8gZXg6IGlmKHNWTCA+PSAyKSBmb3JnZS5sb2cudmVyYm9zZSguLi4uKQp2YXIgc1ZMID0gMDsKCi8vIHRyYWNrIHRhc2tzIGZvciBkZWJ1Z2dpbmcKdmFyIHNUYXNrcyA9IHt9Owp2YXIgc05leHRUYXNrSWQgPSAwOwovLyBkZWJ1ZyBhY2Nlc3MKZm9yZ2UuZGVidWcuc2V0KGNhdCwgJ3Rhc2tzJywgc1Rhc2tzKTsKCi8vIGEgbWFwIG9mIHRhc2sgdHlwZSB0byB0YXNrIHF1ZXVlCnZhciBzVGFza1F1ZXVlcyA9IHt9OwovLyBkZWJ1ZyBhY2Nlc3MKZm9yZ2UuZGVidWcuc2V0KGNhdCwgJ3F1ZXVlcycsIHNUYXNrUXVldWVzKTsKCi8vIG5hbWUgZm9yIHVubmFtZWQgdGFza3MKdmFyIHNOb1Rhc2tOYW1lID0gJz8nOwoKLy8gbWF4aW11bSBudW1iZXIgb2YgZG9OZXh0KCkgcmVjdXJzaW9ucyBiZWZvcmUgYSBjb250ZXh0IHN3YXAgb2NjdXJzCi8vIEZJWE1FOiBtaWdodCBuZWVkIHRvIHR3ZWFrIHRoaXMgYmFzZWQgb24gdGhlIGJyb3dzZXIKdmFyIHNNYXhSZWN1cnNpb25zID0gMzA7CgovLyB0aW1lIHNsaWNlIGZvciBkb2luZyB0YXNrcyBiZWZvcmUgYSBjb250ZXh0IHN3YXAgb2NjdXJzCi8vIEZJWE1FOiBtaWdodCBuZWVkIHRvIHR3ZWFrIHRoaXMgYmFzZWQgb24gdGhlIGJyb3dzZXIKdmFyIHNUaW1lU2xpY2UgPSAyMDsKCi8qKgogKiBUYXNrIHN0YXRlcy4KICoKICogUkVBRFk6IHJlYWR5IHRvIHN0YXJ0IHByb2Nlc3NpbmcKICogUlVOTklORzogdGFzayBvciBhIHN1YnRhc2sgaXMgcnVubmluZwogKiBCTE9DS0VEOiB0YXNrIGlzIHdhaXRpbmcgdG8gYWNxdWlyZSBOIHBlcm1pdHMgdG8gY29udGludWUKICogU0xFRVBJTkc6IHRhc2sgaXMgc2xlZXBpbmcgZm9yIGEgcGVyaW9kIG9mIHRpbWUKICogRE9ORTogdGFzayBpcyBkb25lCiAqIEVSUk9SOiB0YXNrIGhhcyBhbiBlcnJvcgogKi8KdmFyIFJFQURZID0gJ3JlYWR5JzsKdmFyIFJVTk5JTkcgPSAncnVubmluZyc7CnZhciBCTE9DS0VEID0gJ2Jsb2NrZWQnOwp2YXIgU0xFRVBJTkcgPSAnc2xlZXBpbmcnOwp2YXIgRE9ORSA9ICdkb25lJzsKdmFyIEVSUk9SID0gJ2Vycm9yJzsKCi8qKgogKiBUYXNrIGFjdGlvbnMuICBVc2VkIHRvIGNvbnRyb2wgc3RhdGUgdHJhbnNpdGlvbnMuCiAqCiAqIFNUT1A6IHN0b3AgcHJvY2Vzc2luZwogKiBTVEFSVDogc3RhcnQgcHJvY2Vzc2luZyB0YXNrcwogKiBCTE9DSzogYmxvY2sgdGFzayBmcm9tIGNvbnRpbnVpbmcgdW50aWwgMSBvciBtb3JlIHBlcm1pdHMgYXJlIHJlbGVhc2VkCiAqIFVOQkxPQ0s6IHJlbGVhc2Ugb25lIG9yIG1vcmUgcGVybWl0cwogKiBTTEVFUDogc2xlZXAgZm9yIGEgcGVyaW9kIG9mIHRpbWUKICogV0FLRVVQOiB3YWtldXAgZWFybHkgZnJvbSBTTEVFUElORyBzdGF0ZQogKiBDQU5DRUw6IGNhbmNlbCBmdXJ0aGVyIHRhc2tzCiAqIEZBSUw6IGEgZmFpbHVyZSBvY2N1cmVkCiAqLwp2YXIgU1RPUCA9ICdzdG9wJzsKdmFyIFNUQVJUID0gJ3N0YXJ0JzsKdmFyIEJMT0NLID0gJ2Jsb2NrJzsKdmFyIFVOQkxPQ0sgPSAndW5ibG9jayc7CnZhciBTTEVFUCA9ICdzbGVlcCc7CnZhciBXQUtFVVAgPSAnd2FrZXVwJzsKdmFyIENBTkNFTCA9ICdjYW5jZWwnOwp2YXIgRkFJTCA9ICdmYWlsJzsKCi8qKgogKiBTdGF0ZSB0cmFuc2l0aW9uIHRhYmxlLgogKgogKiBuZXh0U3RhdGUgPSBzU3RhdGVUYWJsZVtjdXJyZW50U3RhdGVdW2FjdGlvbl0KICovCnZhciBzU3RhdGVUYWJsZSA9IHt9OwoKc1N0YXRlVGFibGVbUkVBRFldID0ge307CnNTdGF0ZVRhYmxlW1JFQURZXVtTVE9QXSA9IFJFQURZOwpzU3RhdGVUYWJsZVtSRUFEWV1bU1RBUlRdID0gUlVOTklORzsKc1N0YXRlVGFibGVbUkVBRFldW0NBTkNFTF0gPSBET05FOwpzU3RhdGVUYWJsZVtSRUFEWV1bRkFJTF0gPSBFUlJPUjsKCnNTdGF0ZVRhYmxlW1JVTk5JTkddID0ge307CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1NUT1BdID0gUkVBRFk7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1NUQVJUXSA9IFJVTk5JTkc7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW0JMT0NLXSA9IEJMT0NLRUQ7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1VOQkxPQ0tdID0gUlVOTklORzsKc1N0YXRlVGFibGVbUlVOTklOR11bU0xFRVBdID0gU0xFRVBJTkc7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1dBS0VVUF0gPSBSVU5OSU5HOwpzU3RhdGVUYWJsZVtSVU5OSU5HXVtDQU5DRUxdID0gRE9ORTsKc1N0YXRlVGFibGVbUlVOTklOR11bRkFJTF0gPSBFUlJPUjsKCnNTdGF0ZVRhYmxlW0JMT0NLRURdID0ge307CnNTdGF0ZVRhYmxlW0JMT0NLRURdW1NUT1BdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bU1RBUlRdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bQkxPQ0tdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bVU5CTE9DS10gPSBCTE9DS0VEOwpzU3RhdGVUYWJsZVtCTE9DS0VEXVtTTEVFUF0gPSBCTE9DS0VEOwpzU3RhdGVUYWJsZVtCTE9DS0VEXVtXQUtFVVBdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bQ0FOQ0VMXSA9IERPTkU7CnNTdGF0ZVRhYmxlW0JMT0NLRURdW0ZBSUxdID0gRVJST1I7CgpzU3RhdGVUYWJsZVtTTEVFUElOR10gPSB7fTsKc1N0YXRlVGFibGVbU0xFRVBJTkddW1NUT1BdID0gU0xFRVBJTkc7CnNTdGF0ZVRhYmxlW1NMRUVQSU5HXVtTVEFSVF0gPSBTTEVFUElORzsKc1N0YXRlVGFibGVbU0xFRVBJTkddW0JMT0NLXSA9IFNMRUVQSU5HOwpzU3RhdGVUYWJsZVtTTEVFUElOR11bVU5CTE9DS10gPSBTTEVFUElORzsKc1N0YXRlVGFibGVbU0xFRVBJTkddW1NMRUVQXSA9IFNMRUVQSU5HOwpzU3RhdGVUYWJsZVtTTEVFUElOR11bV0FLRVVQXSA9IFNMRUVQSU5HOwpzU3RhdGVUYWJsZVtTTEVFUElOR11bQ0FOQ0VMXSA9IERPTkU7CnNTdGF0ZVRhYmxlW1NMRUVQSU5HXVtGQUlMXSA9IEVSUk9SOwoKc1N0YXRlVGFibGVbRE9ORV0gPSB7fTsKc1N0YXRlVGFibGVbRE9ORV1bU1RPUF0gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtTVEFSVF0gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtCTE9DS10gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtVTkJMT0NLXSA9IERPTkU7CnNTdGF0ZVRhYmxlW0RPTkVdW1NMRUVQXSA9IERPTkU7CnNTdGF0ZVRhYmxlW0RPTkVdW1dBS0VVUF0gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtDQU5DRUxdID0gRE9ORTsKc1N0YXRlVGFibGVbRE9ORV1bRkFJTF0gPSBFUlJPUjsKCnNTdGF0ZVRhYmxlW0VSUk9SXSA9IHt9OwpzU3RhdGVUYWJsZVtFUlJPUl1bU1RPUF0gPSBFUlJPUjsKc1N0YXRlVGFibGVbRVJST1JdW1NUQVJUXSA9IEVSUk9SOwpzU3RhdGVUYWJsZVtFUlJPUl1bQkxPQ0tdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtVTkJMT0NLXSA9IEVSUk9SOwpzU3RhdGVUYWJsZVtFUlJPUl1bU0xFRVBdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtXQUtFVVBdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtDQU5DRUxdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtGQUlMXSA9IEVSUk9SOwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgdGFzay4KICoKICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBmb3IgdGhpcyB0YXNrCiAqICAgcnVuOiB0aGUgcnVuIGZ1bmN0aW9uIGZvciB0aGUgdGFzayAocmVxdWlyZWQpCiAqICAgbmFtZTogdGhlIHJ1biBmdW5jdGlvbiBmb3IgdGhlIHRhc2sgKG9wdGlvbmFsKQogKiAgIHBhcmVudDogcGFyZW50IG9mIHRoaXMgdGFzayAob3B0aW9uYWwpCiAqCiAqIEByZXR1cm4gdGhlIGVtcHR5IHRhc2suCiAqLwp2YXIgVGFzayA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAvLyB0YXNrIGlkCiAgdGhpcy5pZCA9IC0xOwoKICAvLyB0YXNrIG5hbWUKICB0aGlzLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgc05vVGFza05hbWU7CgogIC8vIHRhc2sgaGFzIG5vIHBhcmVudAogIHRoaXMucGFyZW50ID0gb3B0aW9ucy5wYXJlbnQgfHwgbnVsbDsKCiAgLy8gc2F2ZSBydW4gZnVuY3Rpb24KICB0aGlzLnJ1biA9IG9wdGlvbnMucnVuOwoKICAvLyBjcmVhdGUgYSBxdWV1ZSBvZiBzdWJ0YXNrcyB0byBydW4KICB0aGlzLnN1YnRhc2tzID0gW107CgogIC8vIGVycm9yIGZsYWcKICB0aGlzLmVycm9yID0gZmFsc2U7CgogIC8vIHN0YXRlIG9mIHRoZSB0YXNrCiAgdGhpcy5zdGF0ZSA9IFJFQURZOwoKICAvLyBudW1iZXIgb2YgdGltZXMgdGhlIHRhc2sgaGFzIGJlZW4gYmxvY2tlZCAoYWxzbyB0aGUgbnVtYmVyCiAgLy8gb2YgcGVybWl0cyBuZWVkZWQgdG8gYmUgcmVsZWFzZWQgdG8gY29udGludWUgcnVubmluZykKICB0aGlzLmJsb2NrcyA9IDA7CgogIC8vIHRpbWVvdXQgaWQgd2hlbiBzbGVlcGluZwogIHRoaXMudGltZW91dElkID0gbnVsbDsKCiAgLy8gbm8gc3dhcCB0aW1lIHlldAogIHRoaXMuc3dhcFRpbWUgPSBudWxsOwoKICAvLyBubyB1c2VyIGRhdGEKICB0aGlzLnVzZXJEYXRhID0gbnVsbDsKCiAgLy8gaW5pdGlhbGl6ZSB0YXNrCiAgLy8gRklYTUU6IGRlYWwgd2l0aCBvdmVyZmxvdwogIHRoaXMuaWQgPSBzTmV4dFRhc2tJZCsrOwogIHNUYXNrc1t0aGlzLmlkXSA9IHRoaXM7CiAgaWYoc1ZMID49IDEpIHsKICAgIGZvcmdlLmxvZy52ZXJib3NlKGNhdCwgJ1slc11bJXNdIGluaXQnLCB0aGlzLmlkLCB0aGlzLm5hbWUsIHRoaXMpOwogIH0KfTsKCi8qKgogKiBMb2dzIGRlYnVnIGluZm9ybWF0aW9uIG9uIHRoaXMgdGFzayBhbmQgdGhlIHN5c3RlbSBzdGF0ZS4KICovClRhc2sucHJvdG90eXBlLmRlYnVnID0gZnVuY3Rpb24obXNnKSB7CiAgbXNnID0gbXNnIHx8ICcnOwogIGZvcmdlLmxvZy5kZWJ1ZyhjYXQsIG1zZywKICAgICdbJXNdWyVzXSB0YXNrOicsIHRoaXMuaWQsIHRoaXMubmFtZSwgdGhpcywKICAgICdzdWJ0YXNrczonLCB0aGlzLnN1YnRhc2tzLmxlbmd0aCwKICAgICdxdWV1ZTonLCBzVGFza1F1ZXVlcyk7Cn07CgovKioKICogQWRkcyBhIHN1YnRhc2sgdG8gcnVuIGFmdGVyIHRhc2suZG9OZXh0KCkgb3IgdGFzay5mYWlsKCkgaXMgY2FsbGVkLgogKgogKiBAcGFyYW0gbmFtZSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIHRhc2sgKG9wdGlvbmFsKS4KICogQHBhcmFtIHN1YnJ1biBhIGZ1bmN0aW9uIHRvIHJ1biB0aGF0IHRha2VzIHRoZSBjdXJyZW50IHRhc2sgYXMKICogICAgICAgICAgaXRzIGZpcnN0IHBhcmFtZXRlci4KICoKICogQHJldHVybiB0aGUgY3VycmVudCB0YXNrICh1c2VmdWwgZm9yIGNoYWluaW5nIG5leHQoKSBjYWxscykuCiAqLwpUYXNrLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24obmFtZSwgc3VicnVuKSB7CiAgLy8ganVnZ2xlIHBhcmFtZXRlcnMgaWYgaXQgbG9va3MgbGlrZSBubyBuYW1lIGlzIGdpdmVuCiAgaWYodHlwZW9mKG5hbWUpID09PSAnZnVuY3Rpb24nKSB7CiAgICBzdWJydW4gPSBuYW1lOwoKICAgIC8vIGluaGVyaXQgcGFyZW50J3MgbmFtZQogICAgbmFtZSA9IHRoaXMubmFtZTsKICB9CiAgLy8gY3JlYXRlIHN1YnRhc2ssIHNldCBwYXJlbnQgdG8gdGhpcyB0YXNrLCBwcm9wYWdhdGUgY2FsbGJhY2tzCiAgdmFyIHN1YnRhc2sgPSBuZXcgVGFzayh7CiAgICBydW46IHN1YnJ1biwKICAgIG5hbWU6IG5hbWUsCiAgICBwYXJlbnQ6IHRoaXMKICB9KTsKICAvLyBzdGFydCBzdWJ0YXNrcyBydW5uaW5nCiAgc3VidGFzay5zdGF0ZSA9IFJVTk5JTkc7CiAgc3VidGFzay50eXBlID0gdGhpcy50eXBlOwogIHN1YnRhc2suc3VjY2Vzc0NhbGxiYWNrID0gdGhpcy5zdWNjZXNzQ2FsbGJhY2sgfHwgbnVsbDsKICBzdWJ0YXNrLmZhaWx1cmVDYWxsYmFjayA9IHRoaXMuZmFpbHVyZUNhbGxiYWNrIHx8IG51bGw7CgogIC8vIHF1ZXVlIGEgbmV3IHN1YnRhc2sKICB0aGlzLnN1YnRhc2tzLnB1c2goc3VidGFzayk7CgogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIEFkZHMgc3VidGFza3MgdG8gcnVuIGluIHBhcmFsbGVsIGFmdGVyIHRhc2suZG9OZXh0KCkgb3IgdGFzay5mYWlsKCkKICogaXMgY2FsbGVkLgogKgogKiBAcGFyYW0gbmFtZSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIHRhc2sgKG9wdGlvbmFsKS4KICogQHBhcmFtIHN1YnJ1biBmdW5jdGlvbnMgdG8gcnVuIHRoYXQgdGFrZSB0aGUgY3VycmVudCB0YXNrIGFzCiAqICAgICAgICAgIHRoZWlyIGZpcnN0IHBhcmFtZXRlci4KICoKICogQHJldHVybiB0aGUgY3VycmVudCB0YXNrICh1c2VmdWwgZm9yIGNoYWluaW5nIG5leHQoKSBjYWxscykuCiAqLwpUYXNrLnByb3RvdHlwZS5wYXJhbGxlbCA9IGZ1bmN0aW9uKG5hbWUsIHN1YnJ1bikgewogIC8vIGp1Z2dsZSBwYXJhbWV0ZXJzIGlmIGl0IGxvb2tzIGxpa2Ugbm8gbmFtZSBpcyBnaXZlbgogIGlmKGZvcmdlLnV0aWwuaXNBcnJheShuYW1lKSkgewogICAgc3VicnVuID0gbmFtZTsKCiAgICAvLyBpbmhlcml0IHBhcmVudCdzIG5hbWUKICAgIG5hbWUgPSB0aGlzLm5hbWU7CiAgfQogIC8vIFdyYXAgcGFyYWxsZWwgdGFza3MgaW4gYSByZWd1bGFyIHRhc2sgc28gdGhleSBhcmUgc3RhcnRlZCBhdCB0aGUKICAvLyBwcm9wZXIgdGltZS4KICByZXR1cm4gdGhpcy5uZXh0KG5hbWUsIGZ1bmN0aW9uKHRhc2spIHsKICAgIC8vIGJsb2NrIHdhaXRpbmcgZm9yIHN1YnRhc2tzCiAgICB2YXIgcHRhc2sgPSB0YXNrOwogICAgcHRhc2suYmxvY2soc3VicnVuLmxlbmd0aCk7CgogICAgLy8gd2UgcGFzcyB0aGUgaXRlcmF0b3IgZnJvbSB0aGUgbG9vcCBiZWxvdyBhcyBhIHBhcmFtZXRlcgogICAgLy8gdG8gYSBmdW5jdGlvbiBiZWNhdXNlIGl0IGlzIG90aGVyd2lzZSBpbmNsdWRlZCBpbiB0aGUKICAgIC8vIGNsb3N1cmUgYW5kIGNoYW5nZXMgYXMgdGhlIGxvb3AgY2hhbmdlcyAtLSBjYXVzaW5nIGkKICAgIC8vIHRvIGFsd2F5cyBiZSBzZXQgdG8gaXRzIGhpZ2hlc3QgdmFsdWUKICAgIHZhciBzdGFydFBhcmFsbGVsVGFzayA9IGZ1bmN0aW9uKHBuYW1lLCBwaSkgewogICAgICBmb3JnZS50YXNrLnN0YXJ0KHsKICAgICAgICB0eXBlOiBwbmFtZSwKICAgICAgICBydW46IGZ1bmN0aW9uKHRhc2spIHsKICAgICAgICAgICBzdWJydW5bcGldKHRhc2spOwogICAgICAgIH0sCiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24odGFzaykgewogICAgICAgICAgIHB0YXNrLnVuYmxvY2soKTsKICAgICAgICB9LAogICAgICAgIGZhaWx1cmU6IGZ1bmN0aW9uKHRhc2spIHsKICAgICAgICAgICBwdGFzay51bmJsb2NrKCk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH07CgogICAgZm9yKHZhciBpID0gMDsgaSA8IHN1YnJ1bi5sZW5ndGg7IGkrKykgewogICAgICAvLyBUeXBlIG11c3QgYmUgdW5pcXVlIHNvIHRhc2sgc3RhcnRzIGluIHBhcmFsbGVsOgogICAgICAvLyAgICBuYW1lICsgcHJpdmF0ZSBzdHJpbmcgKyB0YXNrIGlkICsgc3ViLXRhc2sgaW5kZXgKICAgICAgLy8gc3RhcnQgdGFza3MgaW4gcGFyYWxsZWwgYW5kIHVuYmxvY2sgd2hlbiB0aGUgZmluaXNoCiAgICAgIHZhciBwbmFtZSA9IG5hbWUgKyAnX19wYXJhbGxlbC0nICsgdGFzay5pZCArICctJyArIGk7CiAgICAgIHZhciBwaSA9IGk7CiAgICAgIHN0YXJ0UGFyYWxsZWxUYXNrKHBuYW1lLCBwaSk7CiAgICB9CiAgfSk7Cn07CgovKioKICogU3RvcHMgYSBydW5uaW5nIHRhc2suCiAqLwpUYXNrLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5zdGF0ZSA9IHNTdGF0ZVRhYmxlW3RoaXMuc3RhdGVdW1NUT1BdOwp9OwoKLyoqCiAqIFN0YXJ0cyBydW5uaW5nIGEgdGFzay4KICovClRhc2sucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5lcnJvciA9IGZhbHNlOwogIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtTVEFSVF07CgogIC8vIHRyeSB0byByZXN0YXJ0CiAgaWYodGhpcy5zdGF0ZSA9PT0gUlVOTklORykgewogICAgdGhpcy5zdGFydCA9IG5ldyBEYXRlKCk7CiAgICB0aGlzLnJ1bih0aGlzKTsKICAgIHJ1bk5leHQodGhpcywgMCk7CiAgfQp9OwoKLyoqCiAqIEJsb2NrcyBhIHRhc2sgdW50aWwgaXQgb25lIG9yIG1vcmUgcGVybWl0cyBoYXZlIGJlZW4gcmVsZWFzZWQuIFRoZQogKiB0YXNrIHdpbGwgbm90IHJlc3VtZSB1bnRpbCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBwZXJtaXRzIGhhdmUKICogYmVlbiByZWxlYXNlZCB3aXRoIGNhbGwocykgdG8gdW5ibG9jaygpLgogKgogKiBAcGFyYW0gbiBudW1iZXIgb2YgcGVybWl0cyB0byB3YWl0IGZvcihkZWZhdWx0OiAxKS4KICovClRhc2sucHJvdG90eXBlLmJsb2NrID0gZnVuY3Rpb24obikgewogIG4gPSB0eXBlb2YobikgPT09ICd1bmRlZmluZWQnID8gMSA6IG47CiAgdGhpcy5ibG9ja3MgKz0gbjsKICBpZih0aGlzLmJsb2NrcyA+IDApIHsKICAgIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtCTE9DS107CiAgfQp9OwoKLyoqCiAqIFJlbGVhc2VzIGEgcGVybWl0IHRvIHVuYmxvY2sgYSB0YXNrLiBJZiBhIHRhc2sgd2FzIGJsb2NrZWQgYnkKICogcmVxdWVzdGluZyBOIHBlcm1pdHMgdmlhIGJsb2NrKCksIHRoZW4gaXQgd2lsbCBvbmx5IGNvbnRpbnVlCiAqIHJ1bm5pbmcgb25jZSBlbm91Z2ggcGVybWl0cyBoYXZlIGJlZW4gcmVsZWFzZWQgdmlhIHVuYmxvY2soKSBjYWxscy4KICoKICogSWYgbXVsdGlwbGUgcHJvY2Vzc2VzIG5lZWQgdG8gc3luY2hyb25pemUgd2l0aCBhIHNpbmdsZSB0YXNrIHRoZW4KICogdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIChzZWUgZm9yZ2UudGFzay5jcmVhdGVDb25kaXRpb24pLiBJdCBpcwogKiBhbiBlcnJvciB0byB1bmJsb2NrIGEgdGFzayBtb3JlIHRpbWVzIHRoYW4gaXQgaGFzIGJlZW4gYmxvY2tlZC4KICoKICogQHBhcmFtIG4gbnVtYmVyIG9mIHBlcm1pdHMgdG8gcmVsZWFzZSAoZGVmYXVsdDogMSkuCiAqCiAqIEByZXR1cm4gdGhlIGN1cnJlbnQgYmxvY2sgY291bnQgKHRhc2sgaXMgdW5ibG9ja2VkIHdoZW4gY291bnQgaXMgMCkKICovClRhc2sucHJvdG90eXBlLnVuYmxvY2sgPSBmdW5jdGlvbihuKSB7CiAgbiA9IHR5cGVvZihuKSA9PT0gJ3VuZGVmaW5lZCcgPyAxIDogbjsKICB0aGlzLmJsb2NrcyAtPSBuOwogIGlmKHRoaXMuYmxvY2tzID09PSAwICYmIHRoaXMuc3RhdGUgIT09IERPTkUpIHsKICAgIHRoaXMuc3RhdGUgPSBSVU5OSU5HOwogICAgcnVuTmV4dCh0aGlzLCAwKTsKICB9CiAgcmV0dXJuIHRoaXMuYmxvY2tzOwp9OwoKLyoqCiAqIFNsZWVwIGZvciBhIHBlcmlvZCBvZiB0aW1lIGJlZm9yZSByZXN1bWluZyB0YXNrcy4KICoKICogQHBhcmFtIG4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBzbGVlcCAoZGVmYXVsdDogMCkuCiAqLwpUYXNrLnByb3RvdHlwZS5zbGVlcCA9IGZ1bmN0aW9uKG4pIHsKICBuID0gdHlwZW9mKG4pID09PSAndW5kZWZpbmVkJyA/IDAgOiBuOwogIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtTTEVFUF07CiAgdmFyIHNlbGYgPSB0aGlzOwogIHRoaXMudGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgIHNlbGYudGltZW91dElkID0gbnVsbDsKICAgIHNlbGYuc3RhdGUgPSBSVU5OSU5HOwogICAgcnVuTmV4dChzZWxmLCAwKTsKICB9LCBuKTsKfTsKCi8qKgogKiBXYWl0cyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZSB1bnRpbCBub3RpZmllZC4gVGhlIG5leHQgdGFzayB3aWxsCiAqIG5vdCBiZSBzY2hlZHVsZWQgdW50aWwgbm90aWZpY2F0aW9uLiBBIGNvbmRpdGlvbiB2YXJpYWJsZSBjYW4gYmUKICogY3JlYXRlZCB3aXRoIGZvcmdlLnRhc2suY3JlYXRlQ29uZGl0aW9uKCkuCiAqCiAqIE9uY2UgY29uZC5ub3RpZnkoKSBpcyBjYWxsZWQsIHRoZSB0YXNrIHdpbGwgY29udGludWUuCiAqCiAqIEBwYXJhbSBjb25kIHRoZSBjb25kaXRpb24gdmFyaWFibGUgdG8gd2FpdCBvbi4KICovClRhc2sucHJvdG90eXBlLndhaXQgPSBmdW5jdGlvbihjb25kKSB7CiAgY29uZC53YWl0KHRoaXMpOwp9OwoKLyoqCiAqIElmIHNsZWVwaW5nLCB3YWtldXAgYW5kIGNvbnRpbnVlIHJ1bm5pbmcgdGFza3MuCiAqLwpUYXNrLnByb3RvdHlwZS53YWtldXAgPSBmdW5jdGlvbigpIHsKICBpZih0aGlzLnN0YXRlID09PSBTTEVFUElORykgewogICAgY2FuY2VsVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7CiAgICB0aGlzLnRpbWVvdXRJZCA9IG51bGw7CiAgICB0aGlzLnN0YXRlID0gUlVOTklORzsKICAgIHJ1bk5leHQodGhpcywgMCk7CiAgfQp9OwoKLyoqCiAqIENhbmNlbCBhbGwgcmVtYWluaW5nIHN1YnRhc2tzIG9mIHRoaXMgdGFzay4KICovClRhc2sucHJvdG90eXBlLmNhbmNlbCA9IGZ1bmN0aW9uKCkgewogIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtDQU5DRUxdOwogIC8vIHJlbW92ZSBwZXJtaXRzIG5lZWRlZAogIHRoaXMucGVybWl0c05lZWRlZCA9IDA7CiAgLy8gY2FuY2VsIHRpbWVvdXRzCiAgaWYodGhpcy50aW1lb3V0SWQgIT09IG51bGwpIHsKICAgIGNhbmNlbFRpbWVvdXQodGhpcy50aW1lb3V0SWQpOwogICAgdGhpcy50aW1lb3V0SWQgPSBudWxsOwogIH0KICAvLyByZW1vdmUgc3VidGFza3MKICB0aGlzLnN1YnRhc2tzID0gW107Cn07CgovKioKICogRmluaXNoZXMgdGhpcyB0YXNrIHdpdGggZmFpbHVyZSBhbmQgc2V0cyBlcnJvciBmbGFnLiBUaGUgZW50aXJlCiAqIHRhc2sgd2lsbCBiZSBhYm9ydGVkIHVubGVzcyB0aGUgbmV4dCB0YXNrIHRoYXQgc2hvdWxkIGV4ZWN1dGUKICogaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyLiBUaGlzIGFsbG93cyBsZXZlbHMgb2Ygc3VidGFza3MgdG8gYmUKICogc2tpcHBlZC4gRm9yIGluc3RhbmNlLCB0byBhYm9ydCBvbmx5IHRoaXMgdGFza3MncyBzdWJ0YXNrcywgdGhlbgogKiBjYWxsIGZhaWwodGFzay5wYXJlbnQpLiBUbyBhYm9ydCB0aGlzIHRhc2sncyBzdWJ0YXNrcyBhbmQgaXRzCiAqIHBhcmVudCdzIHN1YnRhc2tzLCBjYWxsIGZhaWwodGFzay5wYXJlbnQucGFyZW50KS4gVG8gYWJvcnQKICogYWxsIHRhc2tzIGFuZCBzaW1wbHkgY2FsbCB0aGUgdGFzayBjYWxsYmFjaywgY2FsbCBmYWlsKCkgb3IKICogZmFpbChudWxsKS4KICoKICogVGhlIHRhc2sgY2FsbGJhY2sgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSkgd2lsbCBhbHdheXMsIGV2ZW50dWFsbHksIGJlCiAqIGNhbGxlZC4KICoKICogQHBhcmFtIG5leHQgdGhlIHRhc2sgdG8gY29udGludWUgYXQsIG9yIG51bGwgdG8gYWJvcnQgZW50aXJlbHkuCiAqLwpUYXNrLnByb3RvdHlwZS5mYWlsID0gZnVuY3Rpb24obmV4dCkgewogIC8vIHNldCBlcnJvciBmbGFnCiAgdGhpcy5lcnJvciA9IHRydWU7CgogIC8vIGZpbmlzaCB0YXNrCiAgZmluaXNoKHRoaXMsIHRydWUpOwoKICBpZihuZXh0KSB7CiAgICAvLyBwcm9wYWdhdGUgdGFzayBpbmZvCiAgICBuZXh0LmVycm9yID0gdGhpcy5lcnJvcjsKICAgIG5leHQuc3dhcFRpbWUgPSB0aGlzLnN3YXBUaW1lOwogICAgbmV4dC51c2VyRGF0YSA9IHRoaXMudXNlckRhdGE7CgogICAgLy8gZG8gbmV4dCB0YXNrIGFzIHNwZWNpZmllZAogICAgcnVuTmV4dChuZXh0LCAwKTsKICB9IGVsc2UgewogICAgaWYodGhpcy5wYXJlbnQgIT09IG51bGwpIHsKICAgICAgLy8gZmluaXNoIHJvb3QgdGFzayAoZW5zdXJlcyBpdCBpcyByZW1vdmVkIGZyb20gdGFzayBxdWV1ZSkKICAgICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50OwogICAgICB3aGlsZShwYXJlbnQucGFyZW50ICE9PSBudWxsKSB7CiAgICAgICAgLy8gcHJvcGFnYXRlIHRhc2sgaW5mbwogICAgICAgIHBhcmVudC5lcnJvciA9IHRoaXMuZXJyb3I7CiAgICAgICAgcGFyZW50LnN3YXBUaW1lID0gdGhpcy5zd2FwVGltZTsKICAgICAgICBwYXJlbnQudXNlckRhdGEgPSB0aGlzLnVzZXJEYXRhOwogICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7CiAgICAgIH0KICAgICAgZmluaXNoKHBhcmVudCwgdHJ1ZSk7CiAgICB9CgogICAgLy8gY2FsbCBmYWlsdXJlIGNhbGxiYWNrIGlmIG9uZSBleGlzdHMKICAgIGlmKHRoaXMuZmFpbHVyZUNhbGxiYWNrKSB7CiAgICAgIHRoaXMuZmFpbHVyZUNhbGxiYWNrKHRoaXMpOwogICAgfQogIH0KfTsKCi8qKgogKiBBc3luY2hyb25vdXNseSBzdGFydCBhIHRhc2suCiAqCiAqIEBwYXJhbSB0YXNrIHRoZSB0YXNrIHRvIHN0YXJ0LgogKi8KdmFyIHN0YXJ0ID0gZnVuY3Rpb24odGFzaykgewogIHRhc2suZXJyb3IgPSBmYWxzZTsKICB0YXNrLnN0YXRlID0gc1N0YXRlVGFibGVbdGFzay5zdGF0ZV1bU1RBUlRdOwogIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICBpZih0YXNrLnN0YXRlID09PSBSVU5OSU5HKSB7CiAgICAgIHRhc2suc3dhcFRpbWUgPSArbmV3IERhdGUoKTsKICAgICAgdGFzay5ydW4odGFzayk7CiAgICAgIHJ1bk5leHQodGFzaywgMCk7CiAgICB9CiAgfSwgMCk7Cn07CgovKioKICogUnVuIHRoZSBuZXh0IHN1YnRhc2sgb3IgZmluaXNoIHRoaXMgdGFzay4KICoKICogQHBhcmFtIHRhc2sgdGhlIHRhc2sgdG8gcHJvY2Vzcy4KICogQHBhcmFtIHJlY3Vyc2UgdGhlIHJlY3Vyc2lvbiBjb3VudC4KICovCnZhciBydW5OZXh0ID0gZnVuY3Rpb24odGFzaywgcmVjdXJzZSkgewogIC8vIGdldCB0aW1lIHNpbmNlIGxhc3QgY29udGV4dCBzd2FwIChtcyksIGlmIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQgc2V0CiAgLy8gc3dhcCB0byB0cnVlIHRvIGluZGljYXRlIHRoYXQgZG9OZXh0IHdhcyBwZXJmb3JtZWQgYXN5bmNocm9ub3VzbHkKICAvLyBhbHNvLCBpZiByZWN1cnNlIGlzIHRvbyBoaWdoIGRvIGFzeW5jaHJvbm91c2x5CiAgdmFyIHN3YXAgPQogICAgKHJlY3Vyc2UgPiBzTWF4UmVjdXJzaW9ucykgfHwKICAgICgrbmV3IERhdGUoKSAtIHRhc2suc3dhcFRpbWUpID4gc1RpbWVTbGljZTsKCiAgdmFyIGRvTmV4dCA9IGZ1bmN0aW9uKHJlY3Vyc2UpIHsKICAgIHJlY3Vyc2UrKzsKICAgIGlmKHRhc2suc3RhdGUgPT09IFJVTk5JTkcpIHsKICAgICAgaWYoc3dhcCkgewogICAgICAgIC8vIHVwZGF0ZSBzd2FwIHRpbWUKICAgICAgICB0YXNrLnN3YXBUaW1lID0gK25ldyBEYXRlKCk7CiAgICAgIH0KCiAgICAgIGlmKHRhc2suc3VidGFza3MubGVuZ3RoID4gMCkgewogICAgICAgIC8vIHJ1biBuZXh0IHN1YnRhc2sKICAgICAgICB2YXIgc3VidGFzayA9IHRhc2suc3VidGFza3Muc2hpZnQoKTsKICAgICAgICBzdWJ0YXNrLmVycm9yID0gdGFzay5lcnJvcjsKICAgICAgICBzdWJ0YXNrLnN3YXBUaW1lID0gdGFzay5zd2FwVGltZTsKICAgICAgICBzdWJ0YXNrLnVzZXJEYXRhID0gdGFzay51c2VyRGF0YTsKICAgICAgICBzdWJ0YXNrLnJ1bihzdWJ0YXNrKTsKICAgICAgICBpZighc3VidGFzay5lcnJvcikgewogICAgICAgICAgIHJ1bk5leHQoc3VidGFzaywgcmVjdXJzZSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZpbmlzaCh0YXNrKTsKCiAgICAgICAgaWYoIXRhc2suZXJyb3IpIHsKICAgICAgICAgIC8vIGNoYWluIGJhY2sgdXAgYW5kIHJ1biBwYXJlbnQKICAgICAgICAgIGlmKHRhc2sucGFyZW50ICE9PSBudWxsKSB7CiAgICAgICAgICAgIC8vIHByb3BhZ2F0ZSB0YXNrIGluZm8KICAgICAgICAgICAgdGFzay5wYXJlbnQuZXJyb3IgPSB0YXNrLmVycm9yOwogICAgICAgICAgICB0YXNrLnBhcmVudC5zd2FwVGltZSA9IHRhc2suc3dhcFRpbWU7CiAgICAgICAgICAgIHRhc2sucGFyZW50LnVzZXJEYXRhID0gdGFzay51c2VyRGF0YTsKCiAgICAgICAgICAgIC8vIG5vIHN1YnRhc2tzIGxlZnQsIGNhbGwgcnVuIG5leHQgc3VidGFzayBvbiBwYXJlbnQKICAgICAgICAgICAgcnVuTmV4dCh0YXNrLnBhcmVudCwgcmVjdXJzZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgaWYoc3dhcCkgewogICAgLy8gd2UncmUgc3dhcHBpbmcsIHNvIHJ1biBhc3luY2hyb25vdXNseQogICAgc2V0VGltZW91dChkb05leHQsIDApOwogIH0gZWxzZSB7CiAgICAvLyBub3Qgc3dhcHBpbmcsIHNvIHJ1biBzeW5jaHJvbm91c2x5CiAgICBkb05leHQocmVjdXJzZSk7CiAgfQp9OwoKLyoqCiAqIEZpbmlzaGVzIGEgdGFzayBhbmQgbG9va3MgZm9yIHRoZSBuZXh0IHRhc2sgaW4gdGhlIHF1ZXVlIHRvIHN0YXJ0LgogKgogKiBAcGFyYW0gdGFzayB0aGUgdGFzayB0byBmaW5pc2guCiAqIEBwYXJhbSBzdXBwcmVzc0NhbGxiYWNrcyB0cnVlIHRvIHN1cHByZXNzIGNhbGxiYWNrcy4KICovCnZhciBmaW5pc2ggPSBmdW5jdGlvbih0YXNrLCBzdXBwcmVzc0NhbGxiYWNrcykgewogIC8vIHN1YnRhc2sgaXMgbm93IGRvbmUKICB0YXNrLnN0YXRlID0gRE9ORTsKCiAgZGVsZXRlIHNUYXNrc1t0YXNrLmlkXTsKICBpZihzVkwgPj0gMSkgewogICAgZm9yZ2UubG9nLnZlcmJvc2UoY2F0LCAnWyVzXVslc10gZmluaXNoJywKICAgICAgdGFzay5pZCwgdGFzay5uYW1lLCB0YXNrKTsKICB9CgogIC8vIG9ubHkgZG8gcXVldWUgcHJvY2Vzc2luZyBmb3Igcm9vdCB0YXNrcwogIGlmKHRhc2sucGFyZW50ID09PSBudWxsKSB7CiAgICAvLyByZXBvcnQgZXJyb3IgaWYgcXVldWUgaXMgbWlzc2luZwogICAgaWYoISh0YXNrLnR5cGUgaW4gc1Rhc2tRdWV1ZXMpKSB7CiAgICAgIGZvcmdlLmxvZy5lcnJvcihjYXQsCiAgICAgICAgJ1slc11bJXNdIHRhc2sgcXVldWUgbWlzc2luZyBbJXNdJywKICAgICAgICB0YXNrLmlkLCB0YXNrLm5hbWUsIHRhc2sudHlwZSk7CiAgICB9IGVsc2UgaWYoc1Rhc2tRdWV1ZXNbdGFzay50eXBlXS5sZW5ndGggPT09IDApIHsKICAgICAgLy8gcmVwb3J0IGVycm9yIGlmIHF1ZXVlIGlzIGVtcHR5CiAgICAgIGZvcmdlLmxvZy5lcnJvcihjYXQsCiAgICAgICAgJ1slc11bJXNdIHRhc2sgcXVldWUgZW1wdHkgWyVzXScsCiAgICAgICAgdGFzay5pZCwgdGFzay5uYW1lLCB0YXNrLnR5cGUpOwogICAgfSBlbHNlIGlmKHNUYXNrUXVldWVzW3Rhc2sudHlwZV1bMF0gIT09IHRhc2spIHsKICAgICAgLy8gcmVwb3J0IGVycm9yIGlmIHRoaXMgdGFzayBpc24ndCB0aGUgZmlyc3QgaW4gdGhlIHF1ZXVlCiAgICAgIGZvcmdlLmxvZy5lcnJvcihjYXQsCiAgICAgICAgJ1slc11bJXNdIHRhc2sgbm90IGZpcnN0IGluIHF1ZXVlIFslc10nLAogICAgICAgIHRhc2suaWQsIHRhc2submFtZSwgdGFzay50eXBlKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgcXVldWUKICAgICAgc1Rhc2tRdWV1ZXNbdGFzay50eXBlXS5zaGlmdCgpOwogICAgICAvLyBjbGVhbiB1cCBxdWV1ZSBpZiBpdCBpcyBlbXB0eQogICAgICBpZihzVGFza1F1ZXVlc1t0YXNrLnR5cGVdLmxlbmd0aCA9PT0gMCkgewogICAgICAgIGlmKHNWTCA+PSAxKSB7CiAgICAgICAgICBmb3JnZS5sb2cudmVyYm9zZShjYXQsICdbJXNdWyVzXSBkZWxldGUgcXVldWUgWyVzXScsCiAgICAgICAgICAgIHRhc2suaWQsIHRhc2submFtZSwgdGFzay50eXBlKTsKICAgICAgICB9CiAgICAgICAgLyogTm90ZTogT25seSBhIHRhc2sgY2FuIGRlbGV0ZSBhIHF1ZXVlIG9mIGl0cyBvd24gdHlwZS4gVGhpcwogICAgICAgICBpcyB1c2VkIGFzIGEgd2F5IHRvIHN5bmNocm9uaXplIHRhc2tzLiBJZiBhIHF1ZXVlIGZvciBhIGNlcnRhaW4KICAgICAgICAgdGFzayB0eXBlIGV4aXN0cywgdGhlbiBhIHRhc2sgb2YgdGhhdCB0eXBlIGlzIHJ1bm5pbmcuCiAgICAgICAgICovCiAgICAgICAgZGVsZXRlIHNUYXNrUXVldWVzW3Rhc2sudHlwZV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gZGVxdWV1ZSB0aGUgbmV4dCB0YXNrIGFuZCBzdGFydCBpdAogICAgICAgIGlmKHNWTCA+PSAxKSB7CiAgICAgICAgICBmb3JnZS5sb2cudmVyYm9zZShjYXQsCiAgICAgICAgICAgICdbJXNdWyVzXSBxdWV1ZSBzdGFydCBuZXh0IFslc10gcmVtYWluOiVzJywKICAgICAgICAgICAgdGFzay5pZCwgdGFzay5uYW1lLCB0YXNrLnR5cGUsCiAgICAgICAgICAgIHNUYXNrUXVldWVzW3Rhc2sudHlwZV0ubGVuZ3RoKTsKICAgICAgICB9CiAgICAgICAgc1Rhc2tRdWV1ZXNbdGFzay50eXBlXVswXS5zdGFydCgpOwogICAgICB9CiAgICB9CgogICAgaWYoIXN1cHByZXNzQ2FsbGJhY2tzKSB7CiAgICAgIC8vIGNhbGwgZmluYWwgY2FsbGJhY2sgaWYgb25lIGV4aXN0cwogICAgICBpZih0YXNrLmVycm9yICYmIHRhc2suZmFpbHVyZUNhbGxiYWNrKSB7CiAgICAgICAgdGFzay5mYWlsdXJlQ2FsbGJhY2sodGFzayk7CiAgICAgIH0gZWxzZSBpZighdGFzay5lcnJvciAmJiB0YXNrLnN1Y2Nlc3NDYWxsYmFjaykgewogICAgICAgIHRhc2suc3VjY2Vzc0NhbGxiYWNrKHRhc2spOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyogVGFza3MgQVBJICovCmZvcmdlLnRhc2sgPSBmb3JnZS50YXNrIHx8IHt9OwoKLyoqCiAqIFN0YXJ0cyBhIG5ldyB0YXNrIHRoYXQgd2lsbCBydW4gdGhlIHBhc3NlZCBmdW5jdGlvbiBhc3luY2hyb25vdXNseS4KICoKICogSW4gb3JkZXIgdG8gZmluaXNoIHRoZSB0YXNrLCBlaXRoZXIgdGFzay5kb05leHQoKSBvciB0YXNrLmZhaWwoKQogKiAqbXVzdCogYmUgY2FsbGVkLgogKgogKiBUaGUgdGFzayBtdXN0IGhhdmUgYSB0eXBlIChhIHN0cmluZyBpZGVudGlmaWVyKSB0aGF0IGNhbiBiZSB1c2VkIHRvCiAqIHN5bmNocm9uaXplIGl0IHdpdGggb3RoZXIgdGFza3Mgb2YgdGhlIHNhbWUgdHlwZS4gVGhhdCB0eXBlIGNhbiBhbHNvCiAqIGJlIHVzZWQgdG8gY2FuY2VsIHRhc2tzIHRoYXQgaGF2ZW4ndCBzdGFydGVkIHlldC4KICoKICogVG8gc3RhcnQgYSB0YXNrLCB0aGUgZm9sbG93aW5nIG9iamVjdCBtdXN0IGJlIHByb3ZpZGVkIGFzIGEgcGFyYW1ldGVyCiAqIChlYWNoIGZ1bmN0aW9uIHRha2VzIGEgdGFzayBvYmplY3QgYXMgaXRzIGZpcnN0IHBhcmFtZXRlcik6CiAqCiAqIHsKICogICB0eXBlOiB0aGUgdHlwZSBvZiB0YXNrLgogKiAgIHJ1bjogdGhlIGZ1bmN0aW9uIHRvIHJ1biB0byBleGVjdXRlIHRoZSB0YXNrLgogKiAgIHN1Y2Nlc3M6IGEgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSB0YXNrIHN1Y2NlZWRzIChvcHRpb25hbCkuCiAqICAgZmFpbHVyZTogYSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHRhc2sgZmFpbHMgKG9wdGlvbmFsKS4KICogfQogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb2JqZWN0IGFzIGRlc2NyaWJlZCBhYm92ZS4KICovCmZvcmdlLnRhc2suc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgLy8gY3JlYXRlIGEgbmV3IHRhc2sKICB2YXIgdGFzayA9IG5ldyBUYXNrKHsKICAgIHJ1bjogb3B0aW9ucy5ydW4sCiAgICBuYW1lOiBvcHRpb25zLm5hbWUgfHwgc05vVGFza05hbWUKICB9KTsKICB0YXNrLnR5cGUgPSBvcHRpb25zLnR5cGU7CiAgdGFzay5zdWNjZXNzQ2FsbGJhY2sgPSBvcHRpb25zLnN1Y2Nlc3MgfHwgbnVsbDsKICB0YXNrLmZhaWx1cmVDYWxsYmFjayA9IG9wdGlvbnMuZmFpbHVyZSB8fCBudWxsOwoKICAvLyBhcHBlbmQgdGhlIHRhc2sgb250byB0aGUgYXBwcm9wcmlhdGUgcXVldWUKICBpZighKHRhc2sudHlwZSBpbiBzVGFza1F1ZXVlcykpIHsKICAgIGlmKHNWTCA+PSAxKSB7CiAgICAgIGZvcmdlLmxvZy52ZXJib3NlKGNhdCwgJ1slc11bJXNdIGNyZWF0ZSBxdWV1ZSBbJXNdJywKICAgICAgICB0YXNrLmlkLCB0YXNrLm5hbWUsIHRhc2sudHlwZSk7CiAgICB9CiAgICAvLyBjcmVhdGUgdGhlIHF1ZXVlIHdpdGggdGhlIG5ldyB0YXNrCiAgICBzVGFza1F1ZXVlc1t0YXNrLnR5cGVdID0gW3Rhc2tdOwogICAgc3RhcnQodGFzayk7CiAgfSBlbHNlIHsKICAgIC8vIHB1c2ggdGhlIHRhc2sgb250byB0aGUgcXVldWUsIGl0IHdpbGwgYmUgcnVuIGFmdGVyIGEgdGFzawogICAgLy8gd2l0aCB0aGUgc2FtZSB0eXBlIGNvbXBsZXRlcwogICAgc1Rhc2tRdWV1ZXNbb3B0aW9ucy50eXBlXS5wdXNoKHRhc2spOwogIH0KfTsKCi8qKgogKiBDYW5jZWxzIGFsbCB0YXNrcyBvZiB0aGUgZ2l2ZW4gdHlwZSB0aGF0IGhhdmVuJ3Qgc3RhcnRlZCB5ZXQuCiAqCiAqIEBwYXJhbSB0eXBlIHRoZSB0eXBlIG9mIHRhc2sgdG8gY2FuY2VsLgogKi8KZm9yZ2UudGFzay5jYW5jZWwgPSBmdW5jdGlvbih0eXBlKSB7CiAgLy8gZmluZCB0aGUgdGFzayBxdWV1ZQogIGlmKHR5cGUgaW4gc1Rhc2tRdWV1ZXMpIHsKICAgIC8vIGVtcHR5IGFsbCBidXQgdGhlIGN1cnJlbnQgdGFzayBmcm9tIHRoZSBxdWV1ZQogICAgc1Rhc2tRdWV1ZXNbdHlwZV0gPSBbc1Rhc2tRdWV1ZXNbdHlwZV1bMF1dOwogIH0KfTsKCi8qKgogKiBDcmVhdGVzIGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIHN5bmNocm9uaXplIHRhc2tzLiBUbyBtYWtlIGEgdGFzayB3YWl0CiAqIG9uIHRoZSBjb25kaXRpb24gdmFyaWFibGUsIGNhbGwgdGFzay53YWl0KGNvbmRpdGlvbikuIFRvIG5vdGlmeSBhbGwKICogdGFza3MgdGhhdCBhcmUgd2FpdGluZywgY2FsbCBjb25kaXRpb24ubm90aWZ5KCkuCiAqCiAqIEByZXR1cm4gdGhlIGNvbmRpdGlvbiB2YXJpYWJsZS4KICovCmZvcmdlLnRhc2suY3JlYXRlQ29uZGl0aW9uID0gZnVuY3Rpb24oKSB7CiAgdmFyIGNvbmQgPSB7CiAgICAvLyBhbGwgdGFza3MgdGhhdCBhcmUgYmxvY2tlZAogICAgdGFza3M6IHt9CiAgfTsKCiAgLyoqCiAgICogQ2F1c2VzIHRoZSBnaXZlbiB0YXNrIHRvIGJsb2NrIHVudGlsIG5vdGlmeSBpcyBjYWxsZWQuIElmIHRoZSB0YXNrCiAgICogaXMgYWxyZWFkeSB3YWl0aW5nIG9uIHRoaXMgY29uZGl0aW9uIHRoZW4gdGhpcyBpcyBhIG5vLW9wLgogICAqCiAgICogQHBhcmFtIHRhc2sgdGhlIHRhc2sgdG8gY2F1c2UgdG8gd2FpdC4KICAgKi8KICBjb25kLndhaXQgPSBmdW5jdGlvbih0YXNrKSB7CiAgICAvLyBvbmx5IGJsb2NrIG9uY2UKICAgIGlmKCEodGFzay5pZCBpbiBjb25kLnRhc2tzKSkgewogICAgICAgdGFzay5ibG9jaygpOwogICAgICAgY29uZC50YXNrc1t0YXNrLmlkXSA9IHRhc2s7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogTm90aWZpZXMgYWxsIHdhaXRpbmcgdGFza3MgdG8gd2FrZSB1cC4KICAgKi8KICBjb25kLm5vdGlmeSA9IGZ1bmN0aW9uKCkgewogICAgLy8gc2luY2UgdW5ibG9jaygpIHdpbGwgcnVuIHRoZSBuZXh0IHRhc2sgZnJvbSBoZXJlLCBtYWtlIHN1cmUgdG8KICAgIC8vIGNsZWFyIHRoZSBjb25kaXRpb24ncyBibG9ja2VkIHRhc2sgbGlzdCBiZWZvcmUgdW5ibG9ja2luZwogICAgdmFyIHRtcCA9IGNvbmQudGFza3M7CiAgICBjb25kLnRhc2tzID0ge307CiAgICBmb3IodmFyIGlkIGluIHRtcCkgewogICAgICB0bXBbaWRdLnVuYmxvY2soKTsKICAgIH0KICB9OwoKICByZXR1cm4gY29uZDsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3Rhc2snOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvdGFzaycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL2RlYnVnJywgJy4vbG9nJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBOb2RlLmpzIG1vZHVsZSBmb3IgRm9yZ2UuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAyMDExLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKdmFyIG5hbWUgPSAnZm9yZ2UnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICAvLyBzZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIG5hdGl2ZSBjb2RlIGlmIGV2ZW4gaXQncyBhdmFpbGFibGUKICAgICAgZm9yZ2UgPSB7ZGlzYWJsZU5hdGl2ZUNvZGU6IGZhbHNlfTsKICAgIH0KICAgIHJldHVybjsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZTsKICB9OwogIC8vIHNldCB0byB0cnVlIHRvIGRpc2FibGUgbmF0aXZlIGNvZGUgaWYgZXZlbiBpdCdzIGF2YWlsYWJsZQogIG1vZHVsZS5leHBvcnRzLmRpc2FibGVOYXRpdmVDb2RlID0gdHJ1ZTsKICBtb2R1bGUuZXhwb3J0cyhtb2R1bGUuZXhwb3J0cyk7Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9mb3JnZScsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hZXMnLAogICcuL2Flc0NpcGhlclN1aXRlcycsCiAgJy4vYXNuMScsCiAgJy4vY2lwaGVyJywKICAnLi9jaXBoZXJNb2RlcycsCiAgJy4vZGVidWcnLAogICcuL2RlcycsCiAgJy4vaG1hYycsCiAgJy4va2VtJywKICAnLi9sb2cnLAogICcuL21kJywKICAnLi9tZ2YxJywKICAnLi9wYmtkZjInLAogICcuL3BlbScsCiAgJy4vcGtjczcnLAogICcuL3BrY3MxJywKICAnLi9wa2NzMTInLAogICcuL3BraScsCiAgJy4vcHJpbWUnLAogICcuL3BybmcnLAogICcuL3BzcycsCiAgJy4vcmFuZG9tJywKICAnLi9yYzInLAogICcuL3NzaCcsCiAgJy4vdGFzaycsCiAgJy4vdGxzJywKICAnLi91dGlsJwpdLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCgpyZXR1cm4gcmVxdWlyZSgnanMvZm9yZ2UnKTsKCn0pOwovKioNCiogQGZpbGVvdmVydmlldyBJbnRlbChyKSBBTVQgQ2VydGlmaWNhdGUgZnVuY3Rpb25zDQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4yLjBiDQoqLw0KDQovLyBDaGVjayB3aGljaCBrZXkgcGFpciBtYXRjaGVzIHRoZSBwdWJsaWMga2V5IGluIHRoZSBjZXJ0aWZpY2F0ZQ0KZnVuY3Rpb24gYW10Y2VydF9saW5rQ2VydFByaXZhdGVLZXkoY2VydHMsIGtleXMpIHsNCiAgICBmb3IgKHZhciBpIGluIGNlcnRzKSB7DQogICAgICAgIHZhciBjZXJ0ID0gY2VydHNbaV07DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICBpZiAoeHhDZXJ0UHJpdmF0ZUtleXMubGVuZ3RoID09IDApIHJldHVybjsNCiAgICAgICAgICAgIHZhciBwdWJsaWNLZXlQRU0gPSBmb3JnZS5wa2kucHVibGljS2V5VG9QZW0oZm9yZ2UucGtpLmNlcnRpZmljYXRlRnJvbUFzbjEoZm9yZ2UuYXNuMS5mcm9tRGVyKGNlcnQuWDUwOUNlcnRpZmljYXRlKSkucHVibGljS2V5KS5zdWJzdHJpbmcoMjggKyAzMikucmVwbGFjZSgvKFxyXG58XG58XHIpL2dtLCAiIik7DQogICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgICAgICBpZiAocHVibGljS2V5UEVNID09PSAoa2V5c1tqXVsnREVSS2V5J10gKyAnLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tJykpIHsNCiAgICAgICAgICAgICAgICAgICAga2V5c1tqXS5YQ2VydCA9IGNlcnQ7IC8vIExpbmsgdGhlIGtleSBwYWlyIHRvIHRoZSBjZXJ0aWZpY2F0ZQ0KICAgICAgICAgICAgICAgICAgICBjZXJ0LlhQcml2YXRlS2V5ID0ga2V5c1tqXTsgLy8gTGluayB0aGUgY2VydGlmaWNhdGUgdG8gdGhlIGtleSBwYWlyDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChlKSB7IGNvbnNvbGUubG9nKGUpOyB9DQogICAgfQ0KfQ0KDQovLyBMb2FkIGEgUDEyIGZpbGUsIGRlY29kZXMgaXQgdXNpbmcgdGhlIHBhc3N3b3JkIGFuZCByZXR1cm5zIHRoZSBwcml2YXRlIGtleSBoYW5kbGUNCmZ1bmN0aW9uIGFtdGNlcnRfbG9hZFAxMkZpbGUoZmlsZSwgcGFzc3dvcmQsIGZ1bmMpIHsNCiAgICB0cnkgew0KICAgICAgICAvLyBFbmNvZGUgaW4gQmFzZTY0IHNvIEZvcmdlIEFQSSBjYW4gcGFyc2UgaXQuDQogICAgICAgIHZhciBwMTJEZXIgPSB3aW5kb3cuZm9yZ2UudXRpbC5kZWNvZGU2NChidG9hKGZpbGUpKTsNCiAgICAgICAgdmFyIHAxMkFzbjEgPSB3aW5kb3cuZm9yZ2UuYXNuMS5mcm9tRGVyKHAxMkRlcik7DQogICAgICAgIHZhciBwMTIgPSB3aW5kb3cuZm9yZ2UucGtjczEyLnBrY3MxMkZyb21Bc24xKHAxMkFzbjEsIHBhc3N3b3JkKTsNCg0KICAgICAgICAvLyBQcml2YXRlIGtleSBpcyBzdG9yZWQgaW4gYSBzaHJvdWRlZCBrZXkgYmFnDQogICAgICAgIHZhciBiYWdzID0gcDEyLmdldEJhZ3MoeyBiYWdUeXBlOiB3aW5kb3cuZm9yZ2UucGtpLm9pZHMucGtjczhTaHJvdWRlZEtleUJhZyB9KTsNCiAgICAgICAgY29uc29sZS5hc3NlcnQoYmFnc1t3aW5kb3cuZm9yZ2UucGtpLm9pZHMucGtjczhTaHJvdWRlZEtleUJhZ10gJiYgYmFnc1t3aW5kb3cuZm9yZ2UucGtpLm9pZHMucGtjczhTaHJvdWRlZEtleUJhZ10ubGVuZ3RoID4gMCk7DQogICAgICAgIA0KICAgICAgICAvLyBJbXBvcnQgdGhlIEZvcmdlIHByaXZhdGUga2V5IHN0cnVjdHVyZSBpbnRvIFdlYiBDcnlwdG8NCiAgICAgICAgdmFyIHByaXZhdGVLZXkgPSBiYWdzW3dpbmRvdy5mb3JnZS5wa2kub2lkcy5wa2NzOFNocm91ZGVkS2V5QmFnXVswXS5rZXk7DQogICAgICAgIHZhciByc2FQcml2YXRlS2V5ID0gd2luZG93LmZvcmdlLnBraS5wcml2YXRlS2V5VG9Bc24xKHByaXZhdGVLZXkpOw0KICAgICAgICB2YXIgcHJpdmF0ZUtleUluZm8gPSB3aW5kb3cuZm9yZ2UucGtpLndyYXBSc2FQcml2YXRlS2V5KHJzYVByaXZhdGVLZXkpOw0KICAgICAgICB2YXIgcGtjczggPSB3aW5kb3cuZm9yZ2UuYXNuMS50b0Rlcihwcml2YXRlS2V5SW5mbykuZ2V0Qnl0ZXMoKTsNCiAgICAgICAgDQogICAgICAgIC8vIEdldCB0aGUgaXNzdWVyIGF0dHJpYnV0ZXMNCiAgICAgICAgdmFyIGNlcnRCYWdzID0gcDEyLmdldEJhZ3MoeyBiYWdUeXBlOiB3aW5kb3cuZm9yZ2UucGtpLm9pZHMuY2VydEJhZyB9KTsNCiAgICAgICAgdmFyIGlzc3VlckF0dHJpYnV0ZXMgPSBjZXJ0QmFnc1t3aW5kb3cuZm9yZ2UucGtpLm9pZHMuY2VydEJhZ11bMF0uY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXM7DQoNCiAgICAgICAgdmFyIGJhZ3MxID0gcDEyLmdldEJhZ3MoeyBiYWdUeXBlOiBmb3JnZS5wa2kub2lkcy5jZXJ0QmFnIH0pOw0KICAgICAgICB2YXIgY2VydCA9IGJhZ3MxW2ZvcmdlLnBraS5vaWRzLmNlcnRCYWddWzBdLmNlcnQ7DQoNCiAgICAgICAgZnVuYyhwcml2YXRlS2V5LCBpc3N1ZXJBdHRyaWJ1dGVzLCBjZXJ0KTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfSBjYXRjaCAoZXgpIHsgfQ0KICAgIHJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24gYW10Y2VydF9zaWduV2l0aENhS2V5KERFUktleSwgY2FQcml2YXRlS2V5LCBjZXJ0QXR0cmlidXRlcywgaXNzdWVyQXR0cmlidXRlcywgZXh0S2V5VXNhZ2UpIHsNCiAgICBpZiAoIWNhUHJpdmF0ZUtleSB8fCBjYVByaXZhdGVLZXkgPT0gbnVsbCkgew0KICAgICAgICB2YXIgY2VydEFuZEtleSA9IGFtdGNlcnRfY3JlYXRlQ2VydGlmaWNhdGUoaXNzdWVyQXR0cmlidXRlcyk7DQogICAgICAgIGNhUHJpdmF0ZUtleSA9IGNlcnRBbmRLZXkua2V5Ow0KICAgIH0NCiAgICByZXR1cm4gYW10Y2VydF9jcmVhdGVDZXJ0aWZpY2F0ZShjZXJ0QXR0cmlidXRlcywgY2FQcml2YXRlS2V5LCBERVJLZXksIGlzc3VlckF0dHJpYnV0ZXMsIGV4dEtleVVzYWdlKTsNCn0NCg0KLy8gLS0tIEV4dGVuZGVkIEtleSBVc2FnZSBPSUQncyAtLS0NCi8vIDEuMy42LjEuNS41LjcuMy4xICAgICAgICAgICAgPSBUTFMgU2VydmVyIGNlcnRpZmljYXRlDQovLyAxLjMuNi4xLjUuNS43LjMuMiAgICAgICAgICAgID0gVExTIENsaWVudCBjZXJ0aWZpY2F0ZQ0KLy8gMi4xNi44NDAuMS4xMTM3NDEuMS4yLjEgICAgICA9IEludGVsIEFNVCBSZW1vdGUgQ29uc29sZQ0KLy8gMi4xNi44NDAuMS4xMTM3NDEuMS4yLjIgICAgICA9IEludGVsIEFNVCBMb2NhbCBDb25zb2xlDQovLyAyLjE2Ljg0MC4xLjExMzc0MS4xLjIuMyAgICAgID0gSW50ZWwgQU1UIENsaWVudCBTZXR1cCBDZXJ0aWZpY2F0ZSAoWmVyby1Ub3VjaCkNCg0KLy8gR2VuZXJhdGUgYSBjZXJ0aWZpY2F0ZSB3aXRoIGEgc2V0IG9mIGF0dHJpYnV0ZXMgc2lnbmVkIGJ5IGEgcm9vdENlcnQuIElmIHRoZSByb290Q2VydCBpcyBvYm1pdHRlZCwgdGhlIGdlbmVyYXRlZCBjZXJ0aWZpY2F0ZSBpcyBzZWxmLXNpZ25lZC4NCmZ1bmN0aW9uIGFtdGNlcnRfY3JlYXRlQ2VydGlmaWNhdGUoY2VydEF0dHJpYnV0ZXMsIGNhUHJpdmF0ZUtleSwgREVSS2V5LCBpc3N1ZXJBdHRyaWJ1dGVzLCBleHRLZXlVc2FnZSkgew0KICAgIC8vIEdlbmVyYXRlIGEga2V5cGFpciBhbmQgY3JlYXRlIGFuIFguNTA5djMgY2VydGlmaWNhdGUNCiAgICB2YXIga2V5cywgY2VydCA9IGZvcmdlLnBraS5jcmVhdGVDZXJ0aWZpY2F0ZSgpOw0KICAgIGlmICghREVSS2V5KSB7DQogICAgICAgIGtleXMgPSBmb3JnZS5wa2kucnNhLmdlbmVyYXRlS2V5UGFpcigyMDQ4KTsNCiAgICAgICAgY2VydC5wdWJsaWNLZXkgPSBrZXlzLnB1YmxpY0tleTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBjZXJ0LnB1YmxpY0tleSA9IGZvcmdlLnBraS5wdWJsaWNLZXlGcm9tUGVtKCctLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLScgKyBERVJLZXkgKyAnLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tJyk7DQogICAgfQ0KICAgIGNlcnQuc2VyaWFsTnVtYmVyID0gJycgKyBNYXRoLmZsb29yKChNYXRoLnJhbmRvbSgpICogMTAwMDAwKSArIDEpOw0KICAgIGNlcnQudmFsaWRpdHkubm90QmVmb3JlID0gbmV3IERhdGUoKTsNCiAgICBjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZS5zZXRGdWxsWWVhcihjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZS5nZXRGdWxsWWVhcigpIC0gMSk7IC8vIENyZWF0ZSBhIGNlcnRpZmljYXRlIHRoYXQgaXMgdmFsaWQgb25lIHllYXIgYmVmb3JlLCB0byBtYWtlIHN1cmUgb3V0LW9mLXN5bmMgY2xvY2tzIGRvbid0IHJlamVjdCB0aGlzIGNlcnQuDQogICAgY2VydC52YWxpZGl0eS5ub3RBZnRlciA9IG5ldyBEYXRlKCk7DQogICAgY2VydC52YWxpZGl0eS5ub3RBZnRlci5zZXRGdWxsWWVhcihjZXJ0LnZhbGlkaXR5Lm5vdEFmdGVyLmdldEZ1bGxZZWFyKCkgKyAzMCk7DQogICAgdmFyIGF0dHJzID0gW107DQogICAgaWYgKGNlcnRBdHRyaWJ1dGVzWydDTiddKSBhdHRycy5wdXNoKHsgbmFtZTogJ2NvbW1vbk5hbWUnLCB2YWx1ZTogY2VydEF0dHJpYnV0ZXNbJ0NOJ10gfSk7DQogICAgaWYgKGNlcnRBdHRyaWJ1dGVzWydDJ10pIGF0dHJzLnB1c2goeyBuYW1lOiAnY291bnRyeU5hbWUnLCB2YWx1ZTogY2VydEF0dHJpYnV0ZXNbJ0MnXSB9KTsNCiAgICBpZiAoY2VydEF0dHJpYnV0ZXNbJ1NUJ10pIGF0dHJzLnB1c2goeyBzaG9ydE5hbWU6ICdTVCcsIHZhbHVlOiBjZXJ0QXR0cmlidXRlc1snU1QnXSB9KTsNCiAgICBpZiAoY2VydEF0dHJpYnV0ZXNbJ08nXSkgYXR0cnMucHVzaCh7IG5hbWU6ICdvcmdhbml6YXRpb25OYW1lJywgdmFsdWU6IGNlcnRBdHRyaWJ1dGVzWydPJ10gfSk7DQogICAgY2VydC5zZXRTdWJqZWN0KGF0dHJzKTsNCg0KICAgIGlmIChjYVByaXZhdGVLZXkpIHsNCiAgICAgICAgLy8gVXNlIHJvb3QgYXR0cmlidXRlcw0KICAgICAgICB2YXIgcm9vdGF0dHJzID0gW107DQogICAgICAgIGlmIChpc3N1ZXJBdHRyaWJ1dGVzWydDTiddKSByb290YXR0cnMucHVzaCh7IG5hbWU6ICdjb21tb25OYW1lJywgdmFsdWU6IGlzc3VlckF0dHJpYnV0ZXNbJ0NOJ10gfSk7DQogICAgICAgIGlmIChpc3N1ZXJBdHRyaWJ1dGVzWydDJ10pIHJvb3RhdHRycy5wdXNoKHsgbmFtZTogJ2NvdW50cnlOYW1lJywgdmFsdWU6IGlzc3VlckF0dHJpYnV0ZXNbJ0MnXSB9KTsNCiAgICAgICAgaWYgKGlzc3VlckF0dHJpYnV0ZXNbJ1NUJ10pIHJvb3RhdHRycy5wdXNoKHsgc2hvcnROYW1lOiAnU1QnLCB2YWx1ZTogaXNzdWVyQXR0cmlidXRlc1snU1QnXSB9KTsNCiAgICAgICAgaWYgKGlzc3VlckF0dHJpYnV0ZXNbJ08nXSkgcm9vdGF0dHJzLnB1c2goeyBuYW1lOiAnb3JnYW5pemF0aW9uTmFtZScsIHZhbHVlOiBpc3N1ZXJBdHRyaWJ1dGVzWydPJ10gfSk7DQogICAgICAgIGNlcnQuc2V0SXNzdWVyKHJvb3RhdHRycyk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gVXNlIG91ciBvd24gYXR0cmlidXRlcw0KICAgICAgICBjZXJ0LnNldElzc3VlcihhdHRycyk7DQogICAgfQ0KDQogICAgaWYgKGNhUHJpdmF0ZUtleSA9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgLy8gQ3JlYXRlIGEgcm9vdCBjZXJ0aWZpY2F0ZQ0KICAgICAgICBjZXJ0LnNldEV4dGVuc2lvbnMoW3sNCiAgICAgICAgICAgIG5hbWU6ICdiYXNpY0NvbnN0cmFpbnRzJywNCiAgICAgICAgICAgIGNBOiB0cnVlDQogICAgICAgIH0sIHsNCiAgICAgICAgICAgIG5hbWU6ICduc0NlcnRUeXBlJywNCiAgICAgICAgICAgIHNzbENBOiB0cnVlLA0KICAgICAgICAgICAgZW1haWxDQTogdHJ1ZSwNCiAgICAgICAgICAgIG9iakNBOiB0cnVlDQogICAgICAgIH0sIHsNCiAgICAgICAgICAgIG5hbWU6ICdzdWJqZWN0S2V5SWRlbnRpZmllcicNCiAgICAgICAgfV0pOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGlmIChleHRLZXlVc2FnZSA9PSBudWxsKSB7IGV4dEtleVVzYWdlID0geyBuYW1lOiAnZXh0S2V5VXNhZ2UnLCBzZXJ2ZXJBdXRoOiB0cnVlLCB9IH0gZWxzZSB7IGV4dEtleVVzYWdlLm5hbWUgPSAnZXh0S2V5VXNhZ2UnOyB9DQoNCiAgICAgICAgLyoNCiAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogJ2V4dEtleVVzYWdlJywNCiAgICAgICAgICAgIHNlcnZlckF1dGg6IHRydWUsDQogICAgICAgICAgICBjbGllbnRBdXRoOiB0cnVlLA0KICAgICAgICAgICAgY29kZVNpZ25pbmc6IHRydWUsDQogICAgICAgICAgICBlbWFpbFByb3RlY3Rpb246IHRydWUsDQogICAgICAgICAgICB0aW1lU3RhbXBpbmc6IHRydWUsDQogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3NDEuMS4yLjEnOiB0cnVlDQogICAgICAgIH0NCiAgICAgICAgKi8NCg0KICAgICAgICAvLyBDcmVhdGUgYSBsZWFmIGNlcnRpZmljYXRlDQogICAgICAgIGNlcnQuc2V0RXh0ZW5zaW9ucyhbew0KICAgICAgICAgICAgbmFtZTogJ2Jhc2ljQ29uc3RyYWludHMnDQogICAgICAgIH0sIHsNCiAgICAgICAgICAgIG5hbWU6ICdrZXlVc2FnZScsDQogICAgICAgICAgICBrZXlDZXJ0U2lnbjogdHJ1ZSwNCiAgICAgICAgICAgIGRpZ2l0YWxTaWduYXR1cmU6IHRydWUsDQogICAgICAgICAgICBub25SZXB1ZGlhdGlvbjogdHJ1ZSwNCiAgICAgICAgICAgIGtleUVuY2lwaGVybWVudDogdHJ1ZSwNCiAgICAgICAgICAgIGRhdGFFbmNpcGhlcm1lbnQ6IHRydWUNCiAgICAgICAgfSwgZXh0S2V5VXNhZ2UsIHsNCiAgICAgICAgICAgIG5hbWU6ICduc0NlcnRUeXBlJywNCiAgICAgICAgICAgIGNsaWVudDogdHJ1ZSwNCiAgICAgICAgICAgIHNlcnZlcjogdHJ1ZSwNCiAgICAgICAgICAgIGVtYWlsOiB0cnVlLA0KICAgICAgICAgICAgb2Jqc2lnbjogdHJ1ZSwNCiAgICAgICAgfSwgew0KICAgICAgICAgICAgbmFtZTogJ3N1YmplY3RLZXlJZGVudGlmaWVyJw0KICAgICAgICB9XSk7DQogICAgfQ0KDQogICAgLy8gU2VsZi1zaWduIGNlcnRpZmljYXRlDQogICAgaWYgKGNhUHJpdmF0ZUtleSkgew0KICAgICAgICBjZXJ0LnNpZ24oY2FQcml2YXRlS2V5LCBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCkpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGNlcnQuc2lnbihrZXlzLnByaXZhdGVLZXksIGZvcmdlLm1kLnNoYTI1Ni5jcmVhdGUoKSk7DQogICAgfQ0KDQogICAgaWYgKERFUktleSkgew0KICAgICAgICByZXR1cm4gY2VydDsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4geyAnY2VydCc6IGNlcnQsICdrZXknOiBrZXlzLnByaXZhdGVLZXkgfTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIF9zdHJpbmdUb0FycmF5QnVmZmVyKHN0cikgew0KICAgIHZhciBidWYgPSBuZXcgQXJyYXlCdWZmZXIoc3RyLmxlbmd0aCk7DQogICAgdmFyIGJ1ZlZpZXcgPSBuZXcgVWludDhBcnJheShidWYpOw0KICAgIGZvciAodmFyIGkgPSAwLCBzdHJMZW4gPSBzdHIubGVuZ3RoOyBpIDwgc3RyTGVuOyBpKyspIHsgYnVmVmlld1tpXSA9IHN0ci5jaGFyQ29kZUF0KGkpOyB9DQogICAgcmV0dXJuIGJ1ZjsNCn0NCg0KZnVuY3Rpb24gX2FycmF5QnVmZmVyVG9TdHJpbmcoYnVmZmVyKSB7DQogICAgdmFyIGJpbmFyeSA9ICcnOw0KICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7DQogICAgdmFyIGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICByZXR1cm4gYmluYXJ5Ow0KfQ0KLyoqDQoqIEBmaWxlb3ZlcnZpZXcgU2NyaXB0IENvbXBpbGVyIC8gRGVjb21waWxlciAvIFJ1bm5lcg0KKiBAYXV0aG9yIFlsaWFuIFNhaW50LUhpbGFpcmUNCiogQHZlcnNpb24gdjAuMS4wZQ0KKi8NCg0KLy8gQ29yZSBmdW5jdGlvbnMNCnNjcmlwdF9mdW5jdGlvblRhYmxlMSA9IFsnbm9wJywgJ2p1bXAnLCAnc2V0JywgJ3ByaW50JywgJ2RpYWxvZycsICdnZXRpdGVtJywgJ3N1YnN0cicsICdpbmRleG9mJywgJ3NwbGl0JywgJ2pvaW4nLCAnbGVuZ3RoJywgJ2pzb25wYXJzZScsICdqc29uc3RyJywgJ2FkZCcsICdzdWJzdHJhY3QnLCAncGFyc2VpbnQnLCAnd3NiYXRjaGVudW0nLCAnd3NwdXQnLCAnd3NjcmVhdGUnLCAnd3NkZWxldGUnLCAnd3NleGVjJywgJ3NjcmlwdHNwZWVkJywgJ3dzc3Vic2NyaWJlJywgJ3dzdW5zdWJzY3JpYmUnLCAncmVhZGNoYXInLCAnc2lnbndpdGhkdW1teWNhJ107DQoNCi8vIGZ1bmN0aW9ucyBvZiB0eXBlIEFSRzEgPSBmdW5jKEFSRzIsIEFSRzMsIEFSRzQsIEFSRzUsIEFSRzYpDQpzY3JpcHRfZnVuY3Rpb25UYWJsZTIgPSBbJ2VuY29kZXVyaScsICdkZWNvZGV1cmknLCAncGFzc3dvcmRjaGVjaycsICdhdG9iJywgJ2J0b2EnLCAnaGV4MnN0cicsICdzdHIyaGV4JywgJ3JhbmRvbScsICdtZDUnLCAnbWFrZXRvYXJyYXknLCAncmVhZHNob3J0JywgJ3JlYWRzaG9ydHgnLCAncmVhZGludCcsICdyZWFkc2ludCcsICdyZWFkaW50eCcsICdzaG9ydHRvc3RyJywgJ3Nob3J0dG9zdHJ4JywgJ2ludHRvc3RyJywgJ2ludHRvc3RyeCddOw0KDQovLyBmdW5jdGlvbnMgb2YgdHlwZSBBUkcxID0gZnVuYyhBUkcyLCBBUkczLCBBUkc0LCBBUkc1LCBBUkc2KQ0Kc2NyaXB0X2Z1bmN0aW9uVGFibGVYMiA9IFtlbmNvZGVVUkksIGRlY29kZVVSSSwgcGFzc3dvcmRjaGVjaywgd2luZG93LmF0b2IuYmluZCh3aW5kb3cpLCB3aW5kb3cuYnRvYS5iaW5kKHdpbmRvdyksIGhleDJyc3RyLCByc3RyMmhleCwgcmFuZG9tLCByc3RyX21kNSwgTWFrZVRvQXJyYXksIFJlYWRTaG9ydCwgUmVhZFNob3J0WCwgUmVhZEludCwgUmVhZFNJbnQsIFJlYWRJbnRYLCBTaG9ydFRvU3RyLCBTaG9ydFRvU3RyWCwgSW50VG9TdHIsIEludFRvU3RyWF07DQoNCi8vIE9wdGlvbmFsIGZ1bmN0aW9ucyBvZiB0eXBlIEFSRzEgPSBmdW5jKEFSRzIsIEFSRzMsIEFSRzQsIEFSRzUsIEFSRzYpDQpzY3JpcHRfZnVuY3Rpb25UYWJsZTMgPSBbJ3B1bGxzeXN0ZW1zdGF0dXMnLCAncHVsbGV2ZW50bG9nJywgJ3B1bGxhdWRpdGxvZycsICdwdWxsY2VydGlmaWNhdGVzJywgJ3B1bGx3YXRjaGRvZycsICdwdWxsc3lzdGVtZGVmZW5zZScsICdwdWxsaGFyZHdhcmUnLCAncHVsbHVzZXJpbmZvJywgJ3B1bGxyZW1vdGVhY2Nlc3MnLCAnaGlnaGxpZ2h0YmxvY2snLCAnZGlzY29ubmVjdCcsICdnZXRzaWRzdHJpbmcnLCAnZ2V0c2lkYnl0ZWFycmF5JywgJ3B1bGxldmVudHN1YnNjcmlwdGlvbnMnXTsNCg0KLy8gT3B0aW9uYWwgZnVuY3Rpb25zIG9mIHR5cGUgQVJHMSA9IGZ1bmMoQVJHMiwgQVJHMywgQVJHNCwgQVJHNSwgQVJHNikNCnNjcmlwdF9mdW5jdGlvblRhYmxlWDMgPSBbDQogICAgUHVsbFN5c3RlbVN0YXR1cw0KICAgICwNCiAgICANCiAgICBQdWxsRXZlbnRMb2cNCiAgICAgICAgLA0KICAgIA0KICAgIFB1bGxBdWRpdExvZw0KICAgICAgICAsDQogICAgDQogICAgUHVsbENlcnRpZmljYXRlcw0KICAgICAgICAsDQogICAgDQogICAgUHVsbFdhdGNoZG9nDQogICAgICAgICwNCiAgICANCiAgICBQdWxsU3lzdGVtRGVmZW5zZQ0KICAgICAgICAsDQogICAgDQogICAgUHVsbEhhcmR3YXJlDQogICAgICAgICwNCiAgICBQdWxsVXNlckluZm8NCiAgICAsDQogICAgDQogICAgUHVsbFJlbW90ZUFjY2Vzcw0KICAgICAgICAsDQogICAgDQogICAgc2NyaXB0X0hpZ2hsaWdodEJsb2NrDQogICAgICAgICwNCiAgICAgICAgLA0KICAgIGZ1bmN0aW9uIChydW5uZXIsIHgpIHsgcmV0dXJuIEdldFNpZFN0cmluZyh4KTsgfQ0KICAgICwNCiAgICBmdW5jdGlvbiAocnVubmVyLCB4KSB7IHJldHVybiBHZXRTaWRCeXRlQXJyYXkoeCk7IH0NCiAgICAsDQogICAgXTsNCg0KLy8gU2V0dXAgdGhlIHNjcmlwdCBzdGF0ZQ0KZnVuY3Rpb24gc2NyaXB0X3NldHVwKGJpbmFyeSwgc3RhcnR2YXJzKSB7DQogICAgdmFyIG9iaiA9IHsgc3RhcnR2YXJzOnN0YXJ0dmFycyB9Ow0KICAgIGlmIChiaW5hcnkubGVuZ3RoIDwgNikgeyBjb25zb2xlLmVycm9yKCdJbnZhbGlkIHNjcmlwdCBsZW5ndGgnKTsgcmV0dXJuIG51bGw7IH0gLy8gU2NyaXB0IG11c3QgaGF2ZSBhdCBsZWFzdCA2IGJ5dGUgaGVhZGVyDQogICAgaWYgKFJlYWRJbnQoYmluYXJ5LCAwKSAhPSAweDI0N0QyOTQ1KSB7IGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYmluYXJ5IHNjcmlwdCcpOyByZXR1cm4gbnVsbDsgfSAvLyBDaGVjayB0aGUgc2NyaXB0IG1hZ2ljIGhlYWRlcg0KICAgIGlmIChSZWFkU2hvcnQoYmluYXJ5LCA0KSA+IDEpIHsgY29uc29sZS5lcnJvcignVW5zdXBwb3J0ZWQgc2NyaXB0IHZlcnNpb24nKTsgcmV0dXJuIG51bGw7IH0gLy8gQ2hlY2sgdGhlIHNjcmlwdCB2ZXJzaW9uDQogICAgb2JqLnNjcmlwdCA9IGJpbmFyeS5zdWJzdHJpbmcoNik7DQogICAgLy8gb2JqLm9uU3RlcDsNCiAgICAvLyBvYmoub25Db25zb2xlOw0KDQogICAgLy8gUmVzZXQgdGhlIHNjcmlwdCB0byB0aGUgc3RhcnQNCiAgICBvYmoucmVzZXQgPSBmdW5jdGlvbiAoc3RlcHNwZWVkKSB7DQogICAgICAgIG9iai5zdG9wKCk7DQogICAgICAgIG9iai5pcCA9IDA7DQogICAgICAgIG9iai52YXJpYWJsZXMgPSBzdGFydHZhcnM7DQogICAgICAgIG9iai5zdGF0ZSA9IDE7DQogICAgfQ0KDQogICAgLy8gU3RhcnQgdGhlIHNjcmlwdA0KICAgIG9iai5zdGFydCA9IGZ1bmN0aW9uIChzdGVwc3BlZWQpIHsNCiAgICAgICAgb2JqLnN0b3AoKTsNCiAgICAgICAgb2JqLnN0ZXBzcGVlZCA9IHN0ZXBzcGVlZDsNCiAgICAgICAgaWYgKHN0ZXBzcGVlZCA+IDApIHsgb2JqLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBvYmouc3RlcCgpIH0sIHN0ZXBzcGVlZCk7IH0NCiAgICB9DQoNCiAgICAvLyBTdG9wIHRoZSBzY3JpcHQNCiAgICBvYmouc3RvcCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKG9iai50aW1lciAhPSBudWxsKSB7IGNsZWFySW50ZXJ2YWwob2JqLnRpbWVyKTsgfQ0KICAgICAgICBvYmoudGltZXIgPSBudWxsOw0KICAgICAgICBvYmouc3RlcHNwZWVkID0gMDsNCiAgICB9DQoNCiAgICAvLyBmdW5jdGlvbiB1c2VkIHRvIGxvYWQgYW5kIHN0b3JlIHZhcmlhYmxlIHZhbHVlcw0KICAgIG9iai5nZXRWYXIgPSBmdW5jdGlvbiAobmFtZSkgeyBpZiAobmFtZSA9PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7IHJldHVybiBvYmouZ2V0VmFyRXgobmFtZS5zcGxpdCgnLicpLCBvYmoudmFyaWFibGVzKTsgfQ0KICAgIG9iai5nZXRWYXJFeCA9IGZ1bmN0aW9uIChuYW1lLCB2YWwpIHsgdHJ5IHsgaWYgKG5hbWUgPT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkOyBpZiAobmFtZS5sZW5ndGggPT0gMCkgcmV0dXJuIHZhbDsgcmV0dXJuIG9iai5nZXRWYXJFeChuYW1lLnNsaWNlKDEpLCB2YWxbbmFtZVswXV0pOyB9IGNhdGNoIChlKSB7IHJldHVybiBudWxsOyB9IH0NCiAgICBvYmouc2V0VmFyID0gZnVuY3Rpb24gKG5hbWUsIHZhbCkgeyBvYmouc2V0VmFyRXgobmFtZS5zcGxpdCgnLicpLCBvYmoudmFyaWFibGVzLCB2YWwpOyB9DQogICAgb2JqLnNldFZhckV4ID0gZnVuY3Rpb24gKG5hbWUsIHZhcnMsIHZhbCkgeyBpZiAobmFtZS5sZW5ndGggPT0gMSkgeyB2YXJzW25hbWVbMF1dID0gdmFsOyB9IGVsc2UgeyBvYmouc2V0VmFyRXgobmFtZS5zbGljZSgxKSwgdmFyc1tuYW1lWzBdXSwgdmFsKTsgfSB9DQoNCiAgICAvLyBSdW4gdGhlIHNjcmlwdCBvbmUgc3RlcCBmb3J3YXJkDQogICAgb2JqLnN0ZXAgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIGlmIChvYmouc3RhdGUgIT0gMSkgcmV0dXJuOw0KICAgICAgICBpZiAob2JqLmlwIDwgb2JqLnNjcmlwdC5sZW5ndGgpIHsNCiAgICAgICAgICAgIHZhciBjbWRpZCA9IFJlYWRTaG9ydChvYmouc2NyaXB0LCBvYmouaXApOw0KICAgICAgICAgICAgdmFyIGNtZGxlbiA9IFJlYWRTaG9ydChvYmouc2NyaXB0LCBvYmouaXAgKyAyKTsNCiAgICAgICAgICAgIHZhciBhcmdjb3VudCA9IFJlYWRTaG9ydChvYmouc2NyaXB0LCBvYmouaXAgKyA0KTsNCiAgICAgICAgICAgIHZhciBhcmdwdHIgPSBvYmouaXAgKyA2Ow0KICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTsNCg0KICAgICAgICAgICAgLy8gQ2xlYXIgYWxsIHRlbXAgdmFyaWFibGVzIChUaGlzIGlzIG9wdGlvbmFsKQ0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBvYmoudmFyaWFibGVzKSB7IGlmIChpLnN0YXJ0c1dpdGgoJ19fJykpIHsgZGVsZXRlIG9iai52YXJpYWJsZXNbaV07IH0gfQ0KDQogICAgICAgICAgICAvLyBMb29wIG9uIGVhY2ggYXJndW1lbnQsIG1vdmluZyBmb3J3YXJkIGJ5IHRoZSBhcmd1bWVudCBsZW5ndGggZWFjaCB0aW1lDQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ2NvdW50OyBpKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgYXJnbGVuID0gUmVhZFNob3J0KG9iai5zY3JpcHQsIGFyZ3B0cik7DQogICAgICAgICAgICAgICAgdmFyIGFyZ3ZhbCA9IG9iai5zY3JpcHQuc3Vic3RyaW5nKGFyZ3B0ciArIDIsIGFyZ3B0ciArIDIgKyBhcmdsZW4pOw0KICAgICAgICAgICAgICAgIHZhciBhcmd0eXAgPSBhcmd2YWwuY2hhckNvZGVBdCgwKTsNCiAgICAgICAgICAgICAgICBhcmd2YWwgPSBhcmd2YWwuc3Vic3RyaW5nKDEpOw0KICAgICAgICAgICAgICAgIGlmIChhcmd0eXAgPCAyKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgdmFsdWUgYW5kIHJlcGxhY2UgYWxsIHt2YXJ9IHdpdGggdmFyaWFibGUgdmFsdWVzDQogICAgICAgICAgICAgICAgICAgIHdoaWxlIChhcmd2YWwuc3BsaXQoInsiKS5sZW5ndGggPiAxKSB7IHZhciB0ID0gYXJndmFsLnNwbGl0KCJ7IikucG9wKCkuc3BsaXQoIn0iKS5zaGlmdCgpOyBhcmd2YWwgPSBhcmd2YWwucmVwbGFjZSgneycgKyB0ICsgJ30nLCBvYmouZ2V0VmFyKHQpKTsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoYXJndHlwID09IDEpIHsgb2JqLnZhcmlhYmxlc1snX18nICsgaV0gPSBkZWNvZGVVUkkoYXJndmFsKTsgYXJndmFsID0gJ19fJyArIGk7IH0gLy8gSWYgYXJndHlwIGlzIDEsIHRoaXMgaXMgYSBsaXRlcmFsLiBTdG9yZSBpbiB0ZW1wIHZhcmlhYmxlLg0KICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJndmFsKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGFyZ3R5cCA9PSAyIHx8IGFyZ3R5cCA9PSAzKSB7DQogICAgICAgICAgICAgICAgICAgIG9iai52YXJpYWJsZXNbJ19fJyArIGldID0gUmVhZFNJbnQoYXJndmFsLCAwKTsNCiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKCdfXycgKyBpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYXJncHRyICs9ICgyICsgYXJnbGVuKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gTW92ZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZvcndhcmQgYnkgY29tbWFuZCBzaXplDQogICAgICAgICAgICBvYmouaXAgKz0gY21kbGVuOw0KDQogICAgICAgICAgICAvLyBHZXQgYWxsIHZhcmlhYmxlIHZhbHVlcw0KICAgICAgICAgICAgdmFyIGFyZ3N2YWwgPSBbXTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeyBhcmdzdmFsLnB1c2gob2JqLmdldFZhcihhcmdzW2ldKSk7IH0NCiAgICAgICAgICAgIHZhciBzdG9yZUluQXJnMDsNCg0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoY21kaWQgPCAxMDAwMCkgew0KICAgICAgICAgICAgICAgICAgICAvLyBMZXRzIHJ1biB0aGUgYWN0dWFsIGNvbW1hbmQNCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjbWRpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiAvLyBub3ANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogLy8ganVtcChsYWJlbCkgb3IganVtcChsYWJlbCwgYSwgY29tcGFyZSwgYikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc3ZhbFsyXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnc3ZhbFsyXSA9PSAnPCcgJiYgYXJnc3ZhbFsxXSA8IGFyZ3N2YWxbM10pIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnc3ZhbFsyXSA9PSAnPD0nICYmIGFyZ3N2YWxbMV0gPD0gYXJnc3ZhbFszXSkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmdzdmFsWzJdID09ICchPScgJiYgYXJnc3ZhbFsxXSAhPSBhcmdzdmFsWzNdKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ3N2YWxbMl0gPT0gJz0nICYmIGFyZ3N2YWxbMV0gPT0gYXJnc3ZhbFszXSkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmdzdmFsWzJdID09ICc+PScgJiYgYXJnc3ZhbFsxXSA+PSBhcmdzdmFsWzNdKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ3N2YWxbMl0gPT0gJz4nICYmIGFyZ3N2YWxbMV0gPiBhcmdzdmFsWzNdKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgb2JqLmlwID0gYXJnc3ZhbFswXTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5pcCA9IGFyZ3N2YWxbMF07IC8vIFNldCB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlciB0byB0aGUgbmV3IGxvY2F0aW9uIGluIHRoZSBzY3JpcHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IC8vIHNldCh2YXJpYWJsZSwgdmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMV0gPT0gdW5kZWZpbmVkKSBkZWxldGUgb2JqLnZhcmlhYmxlc1thcmdzWzBdXTsgZWxzZSBvYmouc2V0VmFyKGFyZ3NbMF0sIGFyZ3N2YWxbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAvLyBwcmludChtZXNzYWdlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub25Db25zb2xlKSB7IG9iai5vbkNvbnNvbGUob2JqLnRvU3RyaW5nKGFyZ3N2YWxbMF0pLCBvYmopOyB9IGVsc2UgeyBjb25zb2xlLmxvZyhvYmoudG9TdHJpbmcoYXJnc3ZhbFswXSkpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIFEob2JqLmNvbnNvbGVpZCkudmFsdWUgKz0gKCkgKyAnXG4nKTsgUShvYmouY29uc29sZSkuc2Nyb2xsVG9wID0gUShvYmouY29uc29sZSkuc2Nyb2xsSGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAvLyBkaWFsb2codGl0bGUsIGNvbnRlbnQsIGJ1dHRvbnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZGlhbG9nID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCBhcmdzdmFsWzBdLCBhcmdzdmFsWzJdLCBvYmoueHhTdGVwRGlhbG9nT2ssIGFyZ3N2YWxbMV0sIG9iaik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IC8vIGdldGl0ZW0oYSwgYiwgYykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGFyZ3N2YWxbMV0pIHsgaWYgKGFyZ3N2YWxbMV1baV1bYXJnc3ZhbFsyXV0gPT0gYXJnc3ZhbFszXSkgeyBzdG9yZUluQXJnMCA9IGk7IH0gfTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjogLy8gc3Vic3RyKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYywgaW5kZXgsIGxlbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IGFyZ3N2YWxbMV0uc3Vic3RyKGFyZ3N2YWxbMl0sIGFyZ3N2YWxbM10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiAvLyBpbmRleE9mKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYywgaW5kZXgsIGxlbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IGFyZ3N2YWxbMV0uaW5kZXhPZihhcmdzdmFsWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODogLy8gc3BsaXQodmFyaWFibGVfZGVzdCwgdmFyaWFibGVfc3JjLCBzZXBhcmF0b3IpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBhcmdzdmFsWzFdLnNwbGl0KGFyZ3N2YWxbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OiAvLyBqb2luKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYywgc2VwYXJhdG9yKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gYXJnc3ZhbFsxXS5qb2luKGFyZ3N2YWxbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDogLy8gbGVuZ3RoKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IGFyZ3N2YWxbMV0ubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTogLy8ganNvbnBhcnNlKHZhcmlhYmxlX2Rlc3QsIGpzb24pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBKU09OLnBhcnNlKGFyZ3N2YWxbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjogLy8ganNvbnN0cih2YXJpYWJsZV9kZXN0LCB2YXJpYWJsZV9zcmMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBKU09OLnN0cmluZ2lmeShhcmdzdmFsWzFdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6IC8vIGFkZCh2YXJpYWJsZV9kZXN0LCB2YXJpYWJsZV9zcmMsIHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gKGFyZ3N2YWxbMV0gKyBhcmdzdmFsWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6IC8vIHN1YnN0cmFjdCh2YXJpYWJsZV9kZXN0LCB2YXJpYWJsZV9zcmMsIHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gKGFyZ3N2YWxbMV0gLSBhcmdzdmFsWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6IC8vIHBhcnNlSW50KHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IHBhcnNlSW50KGFyZ3N2YWxbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjogLy8gd3NiYXRjaGVudW0obmFtZSwgb2JqZWN0TGlzdCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouc3RhdGUgPSAyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hbXRzdGFjay5CYXRjaEVudW0oYXJnc3ZhbFswXSwgYXJnc3ZhbFsxXSwgb2JqLnh4V3NtYW5SZXR1cm4sIG9iaik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE3OiAvLyB3c3B1dChuYW1lLCBhcmdzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5zdGF0ZSA9IDI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmFtdHN0YWNrLlB1dChhcmdzdmFsWzBdLCBhcmdzdmFsWzFdLCBvYmoueHhXc21hblJldHVybiwgb2JqKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6IC8vIHdzY3JlYXRlKG5hbWUsIGFyZ3MpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suQ3JlYXRlKGFyZ3N2YWxbMF0sIGFyZ3N2YWxbMV0sIG9iai54eFdzbWFuUmV0dXJuLCBvYmopOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOTogLy8gd3NkZWxldGUobmFtZSwgYXJncykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouc3RhdGUgPSAyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hbXRzdGFjay5EZWxldGUoYXJnc3ZhbFswXSwgYXJnc3ZhbFsxXSwgb2JqLnh4V3NtYW5SZXR1cm4sIG9iaik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIwOiAvLyB3c2V4ZWMobmFtZSwgbWV0aG9kLCBhcmdzLCBzZWxlY3RvcnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suRXhlYyhhcmdzdmFsWzBdLCBhcmdzdmFsWzFdLCBhcmdzdmFsWzJdLCBvYmoueHhXc21hblJldHVybiwgb2JqLCAwLCBhcmdzdmFsWzNdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjE6IC8vIFNjcmlwdCBTcGVlZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5zdGVwc3BlZWQgPSBhcmdzdmFsWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGltZXIgIT0gbnVsbCkgeyBjbGVhckludGVydmFsKG9iai50aW1lcik7IG9iai50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgb2JqLnN0ZXAoKSB9LCBvYmouc3RlcHNwZWVkKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjogLy8gd3NzdWJzY3JpYmUobmFtZSwgZGVsaXZlcnksIHVybCwgc2VsZWN0b3JzLCBvcGFxdWUsIHVzZXIsIHBhc3MpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suU3Vic2NyaWJlKGFyZ3N2YWxbMF0sIGFyZ3N2YWxbMV0sIGFyZ3N2YWxbMl0sIG9iai54eFdzbWFuUmV0dXJuLCBvYmosIDAsIGFyZ3N2YWxbM10sIGFyZ3N2YWxbNF0sIGFyZ3N2YWxbNV0sIGFyZ3N2YWxbNl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzogLy8gd3N1bnN1YnNjcmliZShuYW1lLCBzZWxlY3RvcnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suVW5TdWJzY3JpYmUoYXJnc3ZhbFswXSwgb2JqLnh4V3NtYW5SZXR1cm4sIG9iaiwgMCwgYXJnc3ZhbFsxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI0OiAvLyByZWFkY2hhcihzdHIsIHBvcykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhhcmdzdmFsWzFdLCBhcmdzdmFsWzJdLCBhcmdzdmFsWzFdLmNoYXJDb2RlQXQoYXJnc3ZhbFsyXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gYXJnc3ZhbFsxXS5jaGFyQ29kZUF0KGFyZ3N2YWxbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNTogLy8gc2lnbldpdGhEdW1teUNhDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBERVJLZXksIHh4Q2FQcml2YXRlS2V5LCBjZXJ0YXR0cmlidXRlcywgaXNzdWVyYXR0cmlidXRlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtdGNlcnRfc2lnbldpdGhDYUtleShhcmdzdmFsWzBdLCBudWxsLCBhcmdzdmFsWzFdLCB7ICdDTic6ICdVbnRydXN0ZWQgUm9vdCBDZXJ0aWZpY2F0ZScgfSwgb2JqLnh4U2lnbldpdGhEdW1teUNhUmV0dXJuKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gOTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJTY3JpcHQgRXJyb3IsIHVua25vd24gY29tbWFuZDogIiArIGNtZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChjbWRpZCA8IDIwMDAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbnMgb2YgdHlwZSBBUkcxID0gZnVuYyhBUkcyLCBBUkczLCBBUkc0LCBBUkc1LCBBUkc2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBzY3JpcHRfZnVuY3Rpb25UYWJsZVgyW2NtZGlkIC0gMTAwMDBdKGFyZ3N2YWxbMV0sIGFyZ3N2YWxbMl0sIGFyZ3N2YWxbM10sIGFyZ3N2YWxbNF0sIGFyZ3N2YWxbNV0sIGFyZ3N2YWxbNl0pOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb25zIG9mIHR5cGUgQVJHMSA9IGZ1bmMoQVJHMiwgQVJHMywgQVJHNCwgQVJHNSwgQVJHNikNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfZnVuY3Rpb25UYWJsZVgzICYmIHNjcmlwdF9mdW5jdGlvblRhYmxlWDNbY21kaWQgLSAyMDAwMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IHNjcmlwdF9mdW5jdGlvblRhYmxlWDNbY21kaWQgLSAyMDAwMF0ob2JqLCBhcmdzdmFsWzFdLCBhcmdzdmFsWzJdLCBhcmdzdmFsWzNdLCBhcmdzdmFsWzRdLCBhcmdzdmFsWzVdLCBhcmdzdmFsWzZdKTsgLy8gTm90ZSB0aGF0IG9wdGlvbmFsIGNhbGxzIHN0YXJ0IHdpdGggIm9iaiIgYXMgZmlyc3QgYXJndW1lbnQuDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoc3RvcmVJbkFyZzAgIT0gdW5kZWZpbmVkKSBvYmouc2V0VmFyKGFyZ3NbMF0sIHN0b3JlSW5BcmcwKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGUgPT0gJ29iamVjdCcpIHsgZSA9IGUubWVzc2FnZTsgfQ0KICAgICAgICAgICAgICAgIG9iai5zZXRWYXIoJ19leGNlcHRpb24nLCBlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChvYmouc3RhdGUgPT0gMSAmJiBvYmouaXAgPj0gb2JqLnNjcmlwdC5sZW5ndGgpIHsgb2JqLnN0YXRlID0gMDsgb2JqLnN0b3AoKTsgfQ0KICAgICAgICBpZiAob2JqLm9uU3RlcCkgb2JqLm9uU3RlcChvYmopOw0KICAgICAgICByZXR1cm4gb2JqOw0KICAgIH0NCg0KICAgIG9iai54eFN0ZXBEaWFsb2dPayA9IGZ1bmN0aW9uIChidXR0b24pIHsNCiAgICAgICAgb2JqLnZhcmlhYmxlc1snRGlhbG9nU2VsZWN0J10gPSBidXR0b247DQogICAgICAgIG9iai5zdGF0ZSA9IDE7DQogICAgICAgIG9iai5kaWFsb2cgPSBmYWxzZTsNCiAgICAgICAgaWYgKG9iai5vblN0ZXApIG9iai5vblN0ZXAob2JqKTsNCiAgICB9DQoNCiAgICANCiAgICBvYmoueHhXc21hblJldHVybiA9IGZ1bmN0aW9uIChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICBvYmouc2V0VmFyKG5hbWUsIHJlc3BvbnNlcyk7DQogICAgICAgIG9iai5zZXRWYXIoJ3dzbWFuX3Jlc3VsdCcsIHN0YXR1cyk7DQogICAgICAgIG9iai5zZXRWYXIoJ3dzbWFuX3Jlc3VsdF9zdHInLCAoKGh0dHBFcnJvclRhYmxlW3N0YXR1c10pID8gKGh0dHBFcnJvclRhYmxlW3N0YXR1c10pIDogKCdFcnJvciAjJyArIHN0YXR1cykpKTsNCiAgICAgICAgb2JqLnN0YXRlID0gMTsNCiAgICAgICAgaWYgKG9iai5vblN0ZXApIG9iai5vblN0ZXAob2JqKTsNCiAgICB9DQoNCiAgICANCiAgICBvYmoueHhTaWduV2l0aER1bW15Q2FSZXR1cm4gPSBmdW5jdGlvbiAoY2VydCkgew0KICAgICAgICBvYmouc2V0VmFyKCdzaWduZWRfY2VydCcsIGJ0b2EoX2FycmF5QnVmZmVyVG9TdHJpbmcoY2VydCkpKTsNCiAgICAgICAgb2JqLnN0YXRlID0gMTsNCiAgICAgICAgaWYgKG9iai5vblN0ZXApIG9iai5vblN0ZXAob2JqKTsNCiAgICB9DQogICAgDQogICAgb2JqLnRvU3RyaW5nID0gZnVuY3Rpb24gKHgpIHsgaWYgKHR5cGVvZiB4ID09ICdvYmplY3QnKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeCk7IHJldHVybiB4OyB9DQoNCiAgICBvYmoucmVzZXQoKTsNCiAgICByZXR1cm4gb2JqOw0KfQ0KDQovLyBBcmd1bWVudCB0eXBlczogMCA9IFZhcmlhYmxlLCAxID0gU3RyaW5nLCAyID0gSW50ZWdlciwgMyA9IExhYmVsDQpmdW5jdGlvbiBzY3JpcHRfY29tcGlsZShzY3JpcHQsIG9ubXNnKSB7DQogICAgdmFyIHIgPSAnJywgc2NyaXB0bGluZXMgPSBzY3JpcHQuc3BsaXQoJ1xuJyksIGxhYmVscyA9IHt9LCBsYWJlbHN3YXAgPSBbXSwgc3dhcHMgPSBbXTsNCiAgICAvLyBHbyB0aHJ1IGVhY2ggc2NyaXB0IGxpbmUgYW5kIGVuY29kZSBpdA0KICAgIGZvciAodmFyIGkgaW4gc2NyaXB0bGluZXMpIHsNCiAgICAgICAgdmFyIHNjcmlwdGxpbmUgPSBzY3JpcHRsaW5lc1tpXTsNCiAgICAgICAgaWYgKHNjcmlwdGxpbmUuc3RhcnRzV2l0aCgnIyNTV0FQICcpKSB7IHZhciB4ID0gc2NyaXB0bGluZS5zcGxpdCgnICcpOyBpZiAoeC5sZW5ndGggPT0gMykgeyBzd2Fwc1t4WzFdXSA9IHhbMl07IH0gfSAvLyBBZGQgYSBzd2FwIGluc3RhbmNlDQogICAgICAgIGlmIChzY3JpcHRsaW5lWzBdID09ICcjJyB8fCBzY3JpcHRsaW5lLmxlbmd0aCA9PSAwKSBjb250aW51ZTsgLy8gU2tpcCBjb21tZW50cyAmIGJsYW5rIGxpbmVzDQogICAgICAgIGZvciAodmFyIHggaW4gc3dhcHMpIHsgc2NyaXB0bGluZSA9IHNjcmlwdGxpbmUuc3BsaXQoeCkuam9pbihzd2Fwc1t4XSk7IH0gLy8gQXBwbHkgYWxsIHN3YXBzDQogICAgICAgIHZhciBrZXl3b3JkcyA9IHNjcmlwdGxpbmUubWF0Y2goLyJbXiJdKiJ8W15ccyJdKy9nKTsNCiAgICAgICAgaWYgKGtleXdvcmRzLmxlbmd0aCA9PSAwKSBjb250aW51ZTsgLy8gU2tpcCBibGFuayBsaW5lcw0KICAgICAgICBpZiAoc2NyaXB0bGluZVswXSA9PSAnOicpIHsgbGFiZWxzW2tleXdvcmRzWzBdLnRvVXBwZXJDYXNlKCldID0gci5sZW5ndGg7IGNvbnRpbnVlOyB9IC8vIE1hcmsgYSBsYWJlbCBwb3NpdGlvbg0KICAgICAgICB2YXIgZnVuY0luZGV4ID0gc2NyaXB0X2Z1bmN0aW9uVGFibGUxLmluZGV4T2Yoa2V5d29yZHNbMF0udG9Mb3dlckNhc2UoKSk7DQogICAgICAgIGlmIChmdW5jSW5kZXggPT0gLTEpIHsgZnVuY0luZGV4ID0gc2NyaXB0X2Z1bmN0aW9uVGFibGUyLmluZGV4T2Yoa2V5d29yZHNbMF0udG9Mb3dlckNhc2UoKSk7IGlmIChmdW5jSW5kZXggPj0gMCkgZnVuY0luZGV4ICs9IDEwMDAwOyB9DQogICAgICAgIGlmIChmdW5jSW5kZXggPT0gLTEpIHsgZnVuY0luZGV4ID0gc2NyaXB0X2Z1bmN0aW9uVGFibGUzLmluZGV4T2Yoa2V5d29yZHNbMF0udG9Mb3dlckNhc2UoKSk7IGlmIChmdW5jSW5kZXggPj0gMCkgZnVuY0luZGV4ICs9IDIwMDAwOyB9IC8vIE9wdGlvbmFsIG1ldGhvZHMNCiAgICAgICAgaWYgKGZ1bmNJbmRleCA9PSAtMSkgeyBpZiAob25tc2cpIHsgb25tc2coIlVuYWJsZWQgdG8gY29tcGlsZSwgdW5rbm93biBjb21tYW5kOiAiICsga2V5d29yZHNbMF0pOyB9IHJldHVybiAnJzsgfQ0KICAgICAgICAvLyBFbmNvZGUgQ29tbWFuZElkLCBDbWRTaXplLCBBcmdDb3VudCwgQXJnMUxlbiwgQXJnMSwgQXJnMkxlbiwgQXJnMi4uLg0KICAgICAgICB2YXIgY21kID0gU2hvcnRUb1N0cihrZXl3b3Jkcy5sZW5ndGggLSAxKTsNCiAgICAgICAgZm9yICh2YXIgaiBpbiBrZXl3b3Jkcykgew0KICAgICAgICAgICAgaWYgKGogPT0gMCkgY29udGludWU7DQogICAgICAgICAgICBpZiAoa2V5d29yZHNbal1bMF0gPT0gJzonKSB7DQogICAgICAgICAgICAgICAgbGFiZWxzd2FwLnB1c2goW2tleXdvcmRzW2pdLCByLmxlbmd0aCArIGNtZC5sZW5ndGggKyA3XSk7IC8vIEFkZCBhIGxhYmVsIHN3YXANCiAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cig1KSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMykgKyBJbnRUb1N0cigweEZGRkZGRkZGKTsgLy8gUHV0IGFuIGVtcHR5IGxhYmVsDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBhcmdpbnQgPSBwYXJzZUludChrZXl3b3Jkc1tqXSk7DQogICAgICAgICAgICAgICAgaWYgKGFyZ2ludCA9PSBrZXl3b3Jkc1tqXSkgew0KICAgICAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cig1KSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMikgKyBJbnRUb1N0cihhcmdpbnQpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChrZXl3b3Jkc1tqXVswXSA9PSAnIicgJiYga2V5d29yZHNbal1ba2V5d29yZHNbal0ubGVuZ3RoIC0gMV0gPT0gJyInKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cihrZXl3b3Jkc1tqXS5sZW5ndGggLSAxKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMSkgKyBrZXl3b3Jkc1tqXS5zdWJzdHJpbmcoMSwga2V5d29yZHNbal0ubGVuZ3RoIC0gMSk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cihrZXl3b3Jkc1tqXS5sZW5ndGggKyAxKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMCkgKyBrZXl3b3Jkc1tqXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBjbWQgPSBTaG9ydFRvU3RyKGZ1bmNJbmRleCkgKyBTaG9ydFRvU3RyKGNtZC5sZW5ndGggKyA0KSArIGNtZDsNCiAgICAgICAgciArPSBjbWQ7DQogICAgfQ0KICAgIC8vIFBlcmZvcm0gYWxsIHRoZSBuZWVkZWQgbGFiZWwgc3dhcHMNCiAgICBmb3IgKGkgaW4gbGFiZWxzd2FwKSB7DQogICAgICAgIHZhciBsYWJlbCA9IGxhYmVsc3dhcFtpXVswXS50b1VwcGVyQ2FzZSgpLCBwb3NpdGlvbiA9IGxhYmVsc3dhcFtpXVsxXSwgdGFyZ2V0ID0gbGFiZWxzW2xhYmVsXTsNCiAgICAgICAgaWYgKHRhcmdldCA9PSB1bmRlZmluZWQpIHsgaWYgKG9ubXNnKSB7IG9ubXNnKCJVbmFibGVkIHRvIGNvbXBpbGUsIHVua25vd24gbGFiZWw6ICIgKyBsYWJlbCk7IH0gcmV0dXJuICcnOyB9DQogICAgICAgIHIgPSByLnN1YnN0cigwLCBwb3NpdGlvbikgKyBJbnRUb1N0cih0YXJnZXQpICsgci5zdWJzdHIocG9zaXRpb24gKyA0KTsNCiAgICB9DQogICAgcmV0dXJuIEludFRvU3RyKDB4MjQ3RDI5NDUpICsgU2hvcnRUb1N0cigxKSArIHI7DQp9DQoNCi8vIERlY29tcGlsZSB0aGUgc2NyaXB0LCBpbnRlbmRlZCBmb3IgZGVidWdnaW5nIG9ubHkNCmZ1bmN0aW9uIHNjcmlwdF9kZWNvbXBpbGUoYmluYXJ5LCBvbmVjbWQpIHsNCiAgICB2YXIgciA9ICcnLCBwdHIgPSA2LCBsYWJlbGNvdW50ID0gMCwgbGFiZWxzID0ge307DQogICAgaWYgKG9uZWNtZCA+PSAwKSB7DQogICAgICAgIHB0ciA9IG9uZWNtZDsgLy8gSWYgd2UgYXJlIGRlY29tcGlsaW5nIGp1c3Qgb25lIGNvbW1hbmQsIHNldCB0aGUgcHRyIHRvIHRoYXQgY29tbWFuZC4NCiAgICB9IGVsc2Ugew0KICAgICAgICBpZiAoYmluYXJ5Lmxlbmd0aCA8IDYpIHsgcmV0dXJuICcjIEludmFsaWQgc2NyaXB0IGxlbmd0aCc7IH0NCiAgICAgICAgdmFyIG1hZ2ljID0gUmVhZEludChiaW5hcnksIDApOw0KICAgICAgICB2YXIgdmVyc2lvbiA9IFJlYWRTaG9ydChiaW5hcnksIDQpOw0KICAgICAgICBpZiAobWFnaWMgIT0gMHgyNDdEMjk0NSkgeyByZXR1cm4gJyMgSW52YWxpZCBiaW5hcnkgc2NyaXB0OiAnICsgbWFnaWM7IH0NCiAgICAgICAgaWYgKHZlcnNpb24gIT0gMSkgeyByZXR1cm4gJyMgSW52YWxpZCBzY3JpcHQgdmVyc2lvbic7IH0NCiAgICB9DQogICAgLy8gTG9vcCBvbiBlYWNoIGNvbW1hbmQsIG1vdmluZyBmb3J3YXJkIGJ5IHRoZSBjb21tYW5kIGxlbmd0aCBlYWNoIHRpbWUuDQogICAgd2hpbGUgKHB0ciA8IGJpbmFyeS5sZW5ndGgpIHsNCiAgICAgICAgdmFyIGNtZGlkID0gUmVhZFNob3J0KGJpbmFyeSwgcHRyKTsNCiAgICAgICAgdmFyIGNtZGxlbiA9IFJlYWRTaG9ydChiaW5hcnksIHB0ciArIDIpOw0KICAgICAgICB2YXIgYXJnY291bnQgPSBSZWFkU2hvcnQoYmluYXJ5LCBwdHIgKyA0KTsNCiAgICAgICAgdmFyIGFyZ3B0ciA9IHB0ciArIDY7DQogICAgICAgIHZhciBhcmdzdHIgPSAnJzsNCiAgICAgICAgaWYgKCEob25lY21kID49IDApKSByICs9ICI6bGFiZWwiICsgKHB0ciAtIDYpICsgIlxuIjsNCiAgICAgICAgLy8gTG9vcCBvbiBlYWNoIGFyZ3VtZW50LCBtb3ZpbmcgZm9yd2FyZCBieSB0aGUgYXJndW1lbnQgbGVuZ3RoIGVhY2ggdGltZQ0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ2NvdW50OyBpKyspIHsNCiAgICAgICAgICAgIHZhciBhcmdsZW4gPSBSZWFkU2hvcnQoYmluYXJ5LCBhcmdwdHIpOw0KICAgICAgICAgICAgdmFyIGFyZ3ZhbCA9IGJpbmFyeS5zdWJzdHJpbmcoYXJncHRyICsgMiwgYXJncHRyICsgMiArIGFyZ2xlbik7DQogICAgICAgICAgICB2YXIgYXJndHlwID0gYXJndmFsLmNoYXJDb2RlQXQoMCk7DQogICAgICAgICAgICBpZiAoYXJndHlwID09IDApIHsgYXJnc3RyICs9ICcgJyArIGFyZ3ZhbC5zdWJzdHJpbmcoMSk7IH0gLy8gVmFyaWFibGUNCiAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3R5cCA9PSAxKSB7IGFyZ3N0ciArPSAnIFwiJyArIGFyZ3ZhbC5zdWJzdHJpbmcoMSkgKyAnXCInOyB9IC8vIFN0cmluZw0KICAgICAgICAgICAgZWxzZSBpZiAoYXJndHlwID09IDIpIHsgYXJnc3RyICs9ICcgJyArIFJlYWRJbnQoYXJndmFsLCAxKTsgfSAvLyBJbnRlZ2VyDQogICAgICAgICAgICBlbHNlIGlmIChhcmd0eXAgPT0gMykgeyAvLyBMYWJlbA0KICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBSZWFkSW50KGFyZ3ZhbCwgMSk7DQogICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gbGFiZWxzW3RhcmdldF07DQogICAgICAgICAgICAgICAgaWYgKCFsYWJlbCkgeyBsYWJlbCA9ICI6bGFiZWwiICsgdGFyZ2V0OyBsYWJlbHNbbGFiZWxdID0gdGFyZ2V0OyB9DQogICAgICAgICAgICAgICAgYXJnc3RyICs9ICcgJyArIGxhYmVsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYXJncHRyICs9ICgyICsgYXJnbGVuKTsNCiAgICAgICAgfQ0KICAgICAgICAvLyBHbyBpbiB0aGUgc2NyaXB0IGZ1bmN0aW9uIHRhYmxlIHRvIGRlY29kZSB0aGUgZnVuY3Rpb24NCiAgICAgICAgaWYgKGNtZGlkIDwgMTAwMDApIHsNCiAgICAgICAgICAgIHIgKz0gc2NyaXB0X2Z1bmN0aW9uVGFibGUxW2NtZGlkXSArIGFyZ3N0ciArICJcbiI7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoY21kaWQgPj0gMjAwMDApIHsNCiAgICAgICAgICAgICAgICByICs9IHNjcmlwdF9mdW5jdGlvblRhYmxlM1tjbWRpZCAtIDIwMDAwXSArIGFyZ3N0ciArICJcbiI7IC8vIE9wdGlvbmFsIG1ldGhvZHMNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgciArPSBzY3JpcHRfZnVuY3Rpb25UYWJsZTJbY21kaWQgLSAxMDAwMF0gKyBhcmdzdHIgKyAiXG4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHB0ciArPSBjbWRsZW47DQogICAgICAgIGlmIChvbmVjbWQgPj0gMCkgcmV0dXJuIHI7IC8vIElmIHdlIGFyZSBkZWNvbXBpbGluZyBqdXN0IG9uZSBjb21tYW5kLCBleGl0IG5vdw0KICAgIH0NCiAgICAvLyBSZW1vdmUgYWxsIHVudXNlZCBsYWJlbHMNCiAgICB2YXIgc2NyaXB0bGluZXMgPSByLnNwbGl0KCdcbicpOw0KICAgIHIgPSAnJzsNCiAgICBmb3IgKHZhciBpIGluIHNjcmlwdGxpbmVzKSB7DQogICAgICAgIHZhciBsaW5lID0gc2NyaXB0bGluZXNbaV07DQogICAgICAgIGlmIChsaW5lWzBdICE9ICc6JykgeyByICs9IGxpbmUgKyAnXG4nOyB9IGVsc2UgeyBpZiAobGFiZWxzW2xpbmVdKSB7IHIgKz0gbGluZSArICdcbic7IH0gfQ0KICAgIH0NCiAgICByZXR1cm4gcjsNCn0NCi8qKiANCiogQGRlc2NyaXB0aW9uIEludGVsKFIpIEFNVCBTZXR1cC5iaW4gUGFyc2VyDQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4xLjANCiovDQoNCi8vIEludGVsKFIpIEFNVCBTZXR1cC5iaW4gR1VJRCdzDQp2YXIgQW10U2V0dXBCaW5TZXR1cEd1aWRzID0gWw0KICAgICJceGI1XHgxNlx4ZmJceDcxXHg4N1x4Y2JceGY5XHg0YVx4YjRceDQxXHhjYVx4N2JceDM4XHgzNVx4NzhceGY5IiwgLy8gVmVyc2lvbiAxDQogICAgIlx4OTZceGIyXHg4MVx4NThceGNmXHg2Ylx4NzJceDRjXHg4Ylx4OTFceGExXHg1ZVx4NTFceDJlXHg5OVx4YzQiLCAvLyBWZXJzaW9uIDINCiAgICAiXHhhN1x4ZjdceGY2XHhjNlx4ODlceGM0XHhmNlx4NDdceDkzXHhlZFx4ZTJceGU1XHgwMlx4MGRceGE1XHgxZCIsIC8vIFZlcnNpb24gMw0KICAgICJceGFhXHhhOVx4MzRceDUyXHhlMVx4MjlceGE5XHg0NFx4OGRceDRkXHgwOFx4MWNceDA3XHhiOVx4NjNceDUzIiAgLy8gVmVyc2lvbiA0DQpdOw0KDQovLyBOb3RlcyBhYm91dCB2ZXJzaW9uIDIgb2Ygc2V0dXAuYmluOg0KLy8gICAtIERlZmF1bHQgImFkbWluIiBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbmV3IE1FQnggcGFzc3dvcmQNCi8vICAgLSBNRV9WQVJJQUJMRV9JREVOVElGSUVSX01BTkFHRUFCSUxJVFlfRkVBVFVSRV9TRUxFQ1RJT04gbWF5IG5vdCBhcHBlYXIgYWZ0ZXIgYW55IENNIHNldHRpbmdzDQovLyAgIC0gQ01fVkFSSUFCTEVfSURFTlRJRklFUl9VU0VSX0RFRklORURfQ0VSVF9BREQgbXVzdCBiZSBwcmVjZWRlZCBieSBzZXR0aW5nIENNX1ZBUklBQkxFX0lERU5USUZJRVJfVVNFUl9ERUZJTkVEX0NFUlRTX0NPTkZJRyB0byAoVE9ETyEpDQoNCi8vIEdlbmVyYWwgbm90ZXM6DQovLyAgIC0gU2V0dXAuYmluIHNob3VsZCBhbHdheXMgc3RhcnQgd2l0aCAiQ3VycmVudE1FQnggUHdkIiwgIm5ld01lYnggUHdkIiwgIm1hbmFnZWFiaWxpdHkgc2VsZWN0aW9uIiAoaWYgcHJlc2VudCkuDQoNCi8vIEludGVsKFIpIEFNVCB2YXJpYWJsZSBpZGVudGlmaWVycw0KLy8gVHlwZTogMCA9IEJpbmFyIFN0cmluZ3ksIDEgPSBDaGFyLCAyID0gU2hvcnQsIDMgPSBJbnQNCnZhciBBbXRTZXR1cEJpblZhcklkcyA9DQp7DQogICAgMTogew0KICAgICAgICAxOiAgWzAsICJDdXJyZW50IE1FQnggUGFzc3dvcmQiXSwNCiAgICAgICAgMjogIFswLCAiTmV3IE1FQnggUGFzc3dvcmQiXSwNCiAgICAgICAgMzogIFsxLCAiTWFuYWdlYWJpbGl0eSBGZWF0dXJlIFNlbGVjdGlvbiJdLA0KICAgICAgICA0OiAgWzEsICJGaXJtd2FyZSBMb2NhbCBVcGRhdGUiLCAgICAgICAgICAgICAgICAgICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gUGFzc3dvcmQgUHJvdGVjdGVkDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiwgMjogIlBhc3N3b3JkIFByb3RlY3RlZCIgfV0sDQogICAgICAgIDU6ICBbMSwgIkZpcm13YXJlIFVwZGF0ZSBRdWFsaWZpZXIiLCAgICAgICAgICAgICAgIC8vIDAgPSBBbHdheXMsIDEgPSBOZXZlciwgMiA9IFJlc3RyaWN0ZWQNCiAgICAgICAgICAgIHsgMDogIkFsd2F5cyIsIDE6ICJOZXZlciIsIDI6ICJSZXN0cmljdGVkIiB9XSwNCiAgICAgICAgNjogIFs0LCAiUG93ZXIgUGFja2FnZSJdICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1VJRCBMZW5ndGggKDE2IGJ5dGVzKSwgSW50ZWwgQU1UIHZlcnNpb24gMi4xLCAzIGFuZCA0DQogICAgfSwNCiAgICAyOiB7DQogICAgICAgIDE6ICBbMCwgIlByb3Zpc2lvbmluZyBQcmVzaGFyZWQgS2V5IElEIChQSUQpIl0sDQogICAgICAgIDI6ICBbMCwgIlByb3Zpc2lvbmluZyBQcmVzaGFyZWQgS2V5IChQUFMpIl0sDQogICAgICAgIDM6ICBbMCwgIlBLSSBETlMgU3VmZml4Il0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDI1NSBieXRlcyBtYXggbGVuZ3RoDQogICAgICAgIDQ6ICBbMCwgIkNvbmZpZ3VyYXRpb24gU2VydmVyIEZRRE4iXSwgICAgICAgICAgICAgIC8vIDI1NSBieXRlcyBtYXggbGVuZ3RoDQogICAgICAgIDU6ICBbMSwgIlJlbW90ZSBDb25maWd1cmF0aW9uIEVuYWJsZWQgKFJDRkcpIiwgICAgIC8vIDAgPSBPZmYsIDEgPSBPbg0KICAgICAgICAgICAgeyAwOiAiT2ZmIiwgMTogIk9uIiB9XSwNCiAgICAgICAgNjogIFsxLCAiUHJlLUluc3RhbGxlZCBDZXJ0aWZpY2F0ZXMgRW5hYmxlZCIsICAgICAgLy8gMCA9IE9mZiwgMSA9IE9uDQogICAgICAgICAgICB7IDA6ICJPZmYiLCAxOiAiT24iIH1dLA0KICAgICAgICA3OiAgWzEsICJVc2VyIERlZmluZWQgQ2VydGlmaWNhdGUgQ29uZmlndXJhdGlvbiIsICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRGVsZXRlDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiwgMjogIkRlbGV0ZSIgfV0sDQogICAgICAgIDg6ICBbMCwgIlVzZXIgRGVmaW5lZCBDZXJ0aWZpY2F0ZSBBZGRpdGlvbiJdLCAgICAgIC8vIDEgYnl0ZSBoYXNoIGFsZ28sIDIwIHRvIDQ4IGJ5dGVzIGhhc2gsIDEgYnl0ZSBuYW1lIGxlbmd0aCwgdXAgdG8gMzIgYnl0ZXMgZnJpZW5kbHkgbmFtZSwgMSA9IFNIQTEgKDIwIGJ5dGVzKSwgMiA9IFNIQTI1NiAoMzIgYnl0ZXMpLCAzID0gU0hBMzg0ICg0OCBieXRlcykuIEFsZ28gMiAmIDMgYXJlIGZvciB2ZXJzaW9uIDMgYW5kIHVwLg0KICAgICAgICAxMDogWzEsICJTT0wvSURFUiBSZWRpcmVjdGlvbiBDb25maWd1cmF0aW9uIl0sDQogICAgICAgIDExOiBbMCwgIkhvc3RuYW1lIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDYzIGJ5dGVzIG1heCBsZW5ndGgNCiAgICAgICAgMTI6IFswLCAiRG9tYWluIE5hbWUiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMjU1IGJ5dGVzIG1heCBsZW5ndGgNCiAgICAgICAgMTM6IFsxLCAiREhDUCIsIHsgMTogIkRpc2FibGVkIiwgMjogIkVuYWJsZWQiIH1dLA0KICAgICAgICAxNDogWzEsICJTZWN1cmUgRmlybXdhcmUgVXBkYXRlIChTRldVKSIsICAgICAgICAgICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiB9XSwNCiAgICAgICAgMTU6IFswLCAiSVRPIl0sDQogICAgICAgIDE2OiBbMSwgIlByb3Zpc2lvbmluZyBNb2RlIChQTSkiLCAgICAgICAgICAgICAgICAgIC8vIDEgPSBFbnRlcnByaXNlLCAyID0gU21hbGwgQnVpc25lc3MgKFNNQikNCiAgICAgICAgICAgIHsgMDogIkVudGVycHJpc2UiLCAxOiAiU21hbGwgQnVpc25lc3MifV0sDQogICAgICAgIDE3OiBbMCwgIlByb3Zpc2lvbmluZyBTZXJ2ZXIgQWRkcmVzcyJdLA0KICAgICAgICAxODogWzIsICJQcm92aXNpb24gU2VydmVyIFBvcnQgTnVtYmVyIChQU1BPKSJdLA0KICAgICAgICAxOTogWzAsICJTdGF0aWMgUFY0IFBhcmFtZXRlcnMiXSwNCiAgICAgICAgMjA6IFswLCAiVkxBTiJdLA0KICAgICAgICAyMTogWzAsICJQQVNTIFBvbGljeSBGbGFnIl0sDQogICAgICAgIDIyOiBbMCwgIklQdjYiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlbmd0aCBpcyAyMDQgYnl0ZXMgb2xkIGZvcm1hdCwgODQgYnl0ZXMgbmV3IGZvcm1hdCwgVmVyc2lvbiAzKyBvbmx5DQogICAgICAgIDIzOiBbMSwgIlNoYXJlZC9EZWRpY2F0ZWQgRlFETiIsICAgICAgICAgICAgICAgICAgIC8vIDAgPSBEZWRpY2F0ZWQsIDEgPSBTaGFyZWQuIFRoaXMgb3B0aW9uIGlzIHZhbGlkIG9ubHkgaWYgY29uZmlndXJpbmcgdGhlIGhvc3RuYW1lIGFzIHdlbGwNCiAgICAgICAgICAgIHsgMDogIkRlZGljYXRlZCIsIDE6ICJTaGFyZWQiIH1dLA0KICAgICAgICAyNDogWzEsICJEeW5hbWljIEROUyBVcGRhdGUiLCAgICAgICAgICAgICAgICAgICAgICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiB9XSwNCiAgICAgICAgMjU6IFsxLCAiUmVtb3RlIERlc2t0b3AgKEtWTSkgU3RhdGUiLCAgICAgICAgICAgICAgLy8gMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZA0KICAgICAgICAgICAgeyAwOiAiRGlzYWJsZWQiLCAxOiAiRW5hYmxlZCIgfV0sDQogICAgICAgIDI2OiBbMSwgIk9wdC1pbiBVc2VyIENvbnNlbnQgT3B0aW9uIiwgICAgICAgICAgICAgIC8vIDAgPSBEaXNhYmxlZCwgMSA9IEtWTSwgMHhGRiA9IEFMTA0KICAgICAgICAgICAgeyAwIDogIkRpc2FibGVkIiwgMSA6ICJLVk0iLCAyNTUgOiAiQWxsIiB9XSwNCiAgICAgICAgMjc6IFsxLCAiT3B0LWluIFJlbW90ZSBJVCBDb25zZW50IFBvbGljeSIsICAgICAgICAgLy8gMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4gQWxsb3dzIHVzZXIgY29uc2VudCB0byBiZSBjb25maWd1cmVkIHJlbW90ZWx5Lg0KICAgICAgICAgICAgeyAwIDogIkRpc2FibGVkIiwgMSA6ICJFbmFibGVkIn0gXSwNCiAgICAgICAgMjg6IFsxLCAiTUUgUHJvdmlzaW9uIEhhbHQgQWN0aXZlIiwgICAgICAgICAgICAgICAgLy8gMCA9IFN0b3AsIDEgPSBTdGFydC4gVGhlICJNRSBwcm92aXNpb25pbmcgSGFsdC9BY3RpdmF0ZSIgY29tbWFuZCBtdXN0IGFwcGVhciBpbiB0aGUgZmlsZSBvbmx5IGFmdGVyICJQS0lETlNTdWZmaXgiLCAiQ29uZmlnU2VydmVyRlFETiIgYW5kICJQcm92aXNpb25pbmcgU2VydmVyIEFkZHJlc3MiDQogICAgICAgICAgICB7IDAgOiAiU3RvcCIsIDEgOiAiU3RhcnQifV0sDQogICAgICAgIDI5OiBbMSwgIk1hbnVhbCBTZXR1cCBhbmQgQ29uZmlndXJhdGlvbiIsICAgICAgICAgIC8vIDAgPSBBdXRvbWF0ZWQsIDEgPSBNYW51YWwNCiAgICAgICAgICAgIHsgMCA6ICJBdXRvbWF0ZWQiLCAxIDogIk1hbnVhbCJ9XSwNCiAgICAgICAgMzA6IFszLCAiU3VwcG9ydCBDaGFubmVsIElkZW50aWZpZXIiXSwgICAgICAgICAgICAgLy8gNCBieXRlcyBsZW5ndGguIFN1cHBvcnQgY2hhbm5lbCBpZGVudGlmaWVyICh2YWxpZCB2YWx1ZXM6IDEtNjU1MzUpDQogICAgICAgIDMxOiBbMCwgIlN1cHBvcnQgQ2hhbm5lbCBEZXNjcmlwdGlvbiJdLCAgICAgICAgICAgIC8vIDYwIGJ5dGVzIG1heC4gRnJpZW5kbHkgbmFtZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwYXJ0eSByZXByZXNlbnRlZGJ5IHRoZSBzdXBwb3J0IGNoYW5uZWwgaWRlbnRpZmllci4NCiAgICAgICAgMzI6IFswLCAiU2VydmljZSBBY2NvdW50IE51bWJlciJdLCAgICAgICAgICAgICAgICAgLy8gMzIgYnl0ZXMgbWF4LiBVbmlxdWUgc3RyaW5nIGlkZW50aWZpZXIgZ2l2ZW4gdG8gdGhlIGVuZCB1c2VyIGJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyLg0KICAgICAgICAzMzogWzAsICJFbnJvbGxlbWVudCBQYXNzY29kZSJdLCAgICAgICAgICAgICAgICAgICAvLyAzMiBieXRlcyBtYXgNCiAgICAgICAgMzQ6IFszLCAiU2VydmljZSBUeXBlIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNCBieXRlcyBsZW5ndGguIDEgPSBSZWFjdGl2ZSwgMiA9IFByb2FjdGl2ZSwgNCA9IE9uZSBUaW1lIFNlc3Npb24NCiAgICAgICAgMzU6IFswLCAiU2VydmljZSBQcm92aWRlciBJZGVudGlmaWVyIl0gICAgICAgICAgICAgLy8gR1VJRCBMZW5ndGggKDE2IGJ5dGVzKQ0KICAgIH0NCn0NCg0KDQovLyBQYXJzZSB0aGUgU2V0dXAuYmluIGZpbGUNCnZhciBBbXRTZXR1cEJpbkNyZWF0ZSA9IGZ1bmN0aW9uICh2ZXJzaW9uLCBmbGFncykgew0KICAgIHZhciBvYmogPSB7fTsNCiAgICBvYmouZmlsZVR5cGUgPSB2ZXJzaW9uOw0KICAgIG9iai5yZWNvcmRDaHVua0NvdW50ID0gMDsNCiAgICBvYmoucmVjb3JkSGVhZGVyQnl0ZUNvdW50ID0gMDsNCiAgICBvYmoucmVjb3JkTnVtYmVyID0gMDsNCiAgICBvYmoubWFqb3JWZXJzaW9uID0gdmVyc2lvbjsNCiAgICBvYmoubWlub3JWZXJzaW9uID0gMDsNCiAgICBvYmouZmxhZ3MgPSBmbGFnczsNCiAgICBvYmouZGF0YVJlY29yZHNDb25zdW1lZCA9IDA7DQogICAgb2JqLmRhdGFSZWNvcmRDaHVua0NvdW50ID0gMDsNCiAgICBvYmoucmVjb3JkcyA9IFtdOw0KICAgIHJldHVybiBvYmo7DQp9DQoNCg0KLy8gUGFyc2UgdGhlIFNldHVwLmJpbiBmaWxlDQp2YXIgQW10U2V0dXBCaW5EZWNvZGUgPSBmdW5jdGlvbiAoZmlsZSkgew0KDQogICAgLy8gRm9ybWF0IG9mIHRoZSBzZXR1cCBmaWxlIGhlYWRlcjoNCiAgICAvLyBGaWxlVHlwZVVVSUQoMTYpICAgICAgICAgLSB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBmaWxlIHR5cGUuIFRoaXMgaWRlbnRpZmllciB3aWxsIHJlbWFpbiB2YWxpZCBhbmQgY29uc3RhbnQgYWNyb3NzIGFsbCB2ZXJzaW9ucyBvZiB0aGUgZmlsZSB0eXBlLg0KICAgIC8vIFJlY29yZENodW5rQ291bnQoMikgICAgICAtIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIDUxMi1ieXRlIGNodW5rcyBvY2N1cGllZCBieSB0aGlzIHJlY29yZCwgaW5jbHVkaW5nIGFsbCBoZWFkZXIsIGJvZHksIGFuZCByZXNlcnZlZCBmaWVsZHMuDQogICAgLy8gUmVjb3JkSGVhZGVyQnl0ZXMoMikgICAgIC0gaW5kaWNhdGVzIHRoZSBsZW5ndGggb2YgdGhlIHJlY29yZCBoZWFkZXIgaW4gYnl0ZXMuDQogICAgLy8gUmVjb3JkTnVtYmVyKDQpICAgICAgICAgIC0gdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgcmVjb3JkIGFtb25nIGFsbCByZWNvcmRzIGluIHRoZSBmaWxlLiBUaGUgZmllbGQgY29udGFpbnMgYSBub24tbmVnYXRpdmUgb3JkaW5hbCB2YWx1ZS4gVGhlIHZhbHVlIG9mIHRoaXMgZmllbGQgaXMgYWx3YXlzIHplcm8gaW4gdGhlIExvY2FsIFByb3Zpc2lvbmluZyBGaWxlIEhlYWRlciBSZWNvcmQuDQogICAgLy8gTWFqb3JWZXJzaW9uKDEpICAgICAgICAgIC0gaWRlbnRpZmllcyB0aGUgbWFqb3IgdmVyc2lvbiBvZiB0aGUgZmlsZSBmb3JtYXQgc3BlY2lmaWNhdGlvbi4gVGhpcyBpcyBhIHBvc2l0aXZlIGludGVnZXIgdGhhdCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVGhlIE1ham9yIFZlcnNpb24gbnVtYmVyIGlzIGluY3JlbWVudGVkIHRvIGluZGljYXRlIHRoYXQgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9kdWNlZCB0aGF0IHdpbGwgY2F1c2UgY29kZSB3cml0dGVuIGFnYWluc3QgYSBsb3dlciBNYWpvciBWZXJzaW9uIG51bWJlciB0byBmYWlsLg0KICAgIC8vIE1pbm9yVmVyc2lvbigxKSAgICAgICAgICAtIGlkZW50aWZpZXMgdGhlIG1pbm9yIHZlcnNpb24gb2YgdGhlIGZpbGUgZm9ybWF0IHNwZWNpZmljYXRpb24uIFRoaXMgaXMgYW4gaW50ZWdlciB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLiBUaGUgTWlub3IgVmVyc2lvbiBudW1iZXIgaXMgaW5jcmVtZW50ZWQgdG8gaW5kaWNhdGUgdGhhdCBjaGFuZ2VzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRoYXQgd2lsbCBub3QgY2F1c2UgY29kZSB3cml0dGVuIGFnYWluc3QgdGhlIHNhbWUgTWFqb3IgVmVyc2lvbiBhbmQgYSBsb3dlciBNaW5vciBWZXJzaW9uIG51bWJlciB0byBmYWlsLiBUaGUgcHVycG9zZSBvZiB0aGlzIGJlaGF2aW9yIGlzIHRvIGFsbG93IGEgc2luZ2xlIGxvY2FsIHByb3Zpc2lvbmluZyBmaWxlIHRvIGJlIHVzZWQgZm9yIG11bHRpcGxlIGdlbmVyYXRpb25zIG9mIEludGVs77+9IEFNVCBwbGF0Zm9ybS4NCiAgICAvLyBEYXRhUmVjb3JkQ291bnQoNCkgICAgICAgLSBpbmRpY2F0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIHJlY29yZHMgd3JpdHRlbiBpbiB0aGUgZmlsZSB3aGVuIGl0IHdhcyBjcmVhdGVkLg0KICAgIC8vIERhdGFSZWNvcmRzQ29uc3VtZWQoNCkgICAtIGlzIGEgY291bnRlciB2YWx1ZSB0aGF0IGJlZ2lucyBhdCAwIGFuZCBpcyBpbmNyZW1lbnRlZCBieSAxIGJ5IGVhY2ggcGxhdGZvcm0gQklPUyB3aGVuIGl0IGNvbnN1bWVzIGEgZGF0YSByZWNvcmQgZnJvbSB0aGUgZmlsZS4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgb2Zmc2V0IG9mIHRoZSBuZXh0IGRhdGEgcmVjb3JkIGluIHRoZSBmaWxlLg0KICAgIC8vIERhdGFSZWNvcmRDaHVua0NvdW50KDIpICAtIGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgNTEyLWJ5dGUgY2h1bmtzIGluIGVhY2ggZGF0YSByZWNvcmQuIEFsbCBkYXRhIHJlY29yZHMgYXJlIHRoZSBzYW1lIGxlbmd0aC4NCiAgICAvLyBNb2R1bGVMaXN0ICAgICAgICAgICAgICAgLSBjb250YWlucyBhIGxpc3Qgb2YgbW9kdWxlIGlkZW50aWZpZXJzLiBBIG1vZHVsZe+/vXMgaWRlbnRpZmllciBhcHBlYXJzIGluIHRoZSBsaXN0IGlmIGFuZCBvbmx5IGlmIHRoZSBkYXRhIHJlY29yZHMgY29udGFpbiBlbnRyaWVzIGZvciB0aGF0IG1vZHVsZS4gRWFjaCBtb2R1bGUgaWRlbnRpZmllciBpcyB0d28gYnl0ZXMgaW4gbGVuZ3RoLiBUaGUgbGlzdCBpcyB0ZXJtaW5hdGVkIGJ5IGFuIGlkZW50aWZpZXIgdmFsdWUgb2YgMC4gDQoNCiAgICB2YXIgb2JqID0ge30sIFVVSUQgPSBmaWxlLnN1YnN0cmluZygwLCAxNik7DQogICAgb2JqLmZpbGVUeXBlID0gMDsNCiAgICBmb3IgKHZhciBpIGluIEFtdFNldHVwQmluU2V0dXBHdWlkcykgeyBpZiAoVVVJRCA9PSBBbXRTZXR1cEJpblNldHVwR3VpZHNbaV0pIG9iai5maWxlVHlwZSA9ICgraSArIDEpOyB9DQogICAgaWYgKG9iai5maWxlVHlwZSA9PSAwKSByZXR1cm47IC8vIEJhZCBoZWFkZXINCiAgICBvYmoucmVjb3JkQ2h1bmtDb3VudCA9IFJlYWRTaG9ydFgoZmlsZSwgMTYpOw0KICAgIG9iai5yZWNvcmRIZWFkZXJCeXRlQ291bnQgPSBSZWFkU2hvcnRYKGZpbGUsIDE4KTsNCiAgICBvYmoucmVjb3JkTnVtYmVyID0gUmVhZEludFgoZmlsZSwgMjApOw0KICAgIG9iai5tYWpvclZlcnNpb24gPSBmaWxlLmNoYXJDb2RlQXQoMjQpOw0KICAgIG9iai5taW5vclZlcnNpb24gPSBmaWxlLmNoYXJDb2RlQXQoMjUpOw0KICAgIG9iai5mbGFncyA9IFJlYWRTaG9ydFgoZmlsZSwgMjYpOyAgICAgICAgICAgICAgICAgICAvLyBGbGFnczogMSA9IERvIG5vdCBjb25zdW1lIHJlY29yZHMNCiAgICB2YXIgZGF0YVJlY29yZENvdW50ID0gUmVhZEludFgoZmlsZSwgMjgpOw0KICAgIG9iai5kYXRhUmVjb3Jkc0NvbnN1bWVkID0gUmVhZEludFgoZmlsZSwgMzIpOw0KICAgIG9iai5kYXRhUmVjb3JkQ2h1bmtDb3VudCA9IFJlYWRTaG9ydFgoZmlsZSwgMzYpOw0KICAgIG9iai5yZWNvcmRzID0gW107DQoNCiAgICB2YXIgcHRyID0gNTEyOw0KICAgIHdoaWxlIChwdHIgKyA1MTIgPD0gZmlsZS5sZW5ndGgpIHsNCg0KICAgICAgICAvLyBGb3JtYXQgb2YgYSBkYXRhIHJlY29yZCBoZWFkZXI6DQogICAgICAgIC8vIFJlY29yZFR5cGVJZGVudGlmaWVyKDQpICAgICAgICAgICAtIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgcmVjb3JkIChpbiB0aGlzIGNhc2UgYSBkYXRhIHJlY29yZCkuIFJlY29yZCBJZGVudGlmaWVyczogSW52YWxpZCAtIDAsIERhdGEgUmVjb3JkIC0gMQ0KICAgICAgICAvLyBSZWNvcmRGbGFncyg0KSAgICAgICAgICAgICAgICAgICAgLSBjb250YWlucyBhIHNldCBvZiBiaXQgZmxhZ3MgdGhhdCBjaGFyYWN0ZXJpemUgdGhlIHJlY29yZC4NCiAgICAgICAgLy8gUmVjb3JkQ2h1bmtDb3VudCgyKSAgICAgICAgICAgICAgIC0gY29udGFpbnMgdGhlIG51bWJlciBvZiA1MTItYnl0ZSBjaHVua3Mgb2NjdXBpZWQgYnkgdGhlIHJlY29yZCBpbmNsdWRpbmcgYWxsIGhlYWRlciwgYm9keSwgYW5kIHJlc2VydmVkIGZpZWxkcy4NCiAgICAgICAgLy8gUmVjb3JkSGVhZGVyQnl0ZUNvdW50KDIpICAgICAgICAgIC0gaW5kaWNhdGVzIHRoZSBsZW5ndGggb2YgdGhlIHJlY29yZCBoZWFkZXIgaW4gYnl0ZXMuDQogICAgICAgIC8vIFJlY29yZE51bWJlcig0KSAgICAgICAgICAgICAgICAgICAtIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlY29yZCBhbW9uZyBhbGwgcmVjb3JkcyBpbiB0aGUgZmlsZSwgaW5jbHVkaW5nIGludmFsaWQgYXMgd2VsbCBhcyB2YWxpZCByZWNvcmRzLiBUaGUgaWRlbnRpZmllciBpcyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLg0KDQogICAgICAgIHZhciByID0ge307DQogICAgICAgIHIudHlwZUlkZW50aWZpZXIgPSBSZWFkSW50WChmaWxlLCBwdHIpOw0KICAgICAgICByLmZsYWdzID0gUmVhZEludFgoZmlsZSwgcHRyICsgNCk7ICAgICAgICAgICAgICAvLyBGbGFnczogMSA9IFZhbGlkLCAyID0gU2NyYW1ibGVkDQogICAgICAgIHIuY2h1bmtDb3VudCA9IFJlYWRTaG9ydFgoZmlsZSwgcHRyICsgOCk7DQogICAgICAgIHIuaGVhZGVyQnl0ZUNvdW50ID0gUmVhZFNob3J0WChmaWxlLCBwdHIgKyAxMCk7DQogICAgICAgIHIubnVtYmVyID0gUmVhZEludFgoZmlsZSwgcHRyICsgMTIpOw0KICAgICAgICByLnZhcmlhYmxlcyA9IFtdOw0KDQogICAgICAgIHZhciBwdHIyID0gMCwgcmVjYmluID0gZmlsZS5zdWJzdHJpbmcocHRyICsgMjQsIHB0ciArIDUxMik7DQogICAgICAgIGlmICgoci5mbGFncyAmIDIpICE9IDApIHsgcmVjYmluID0gQW10U2V0dXBCaW5EZXNjcmFtYmxlUmVjb3JkRGF0YShyZWNiaW4pOyB9IC8vIERlLVNjcmFtYmxlIHRoZSByZWNvcmQNCiAgICAgICAgd2hpbGUgKDEpIHsNCg0KICAgICAgICAgICAgLy8gRm9ybWF0IG9mIGEgZGF0YSByZWNvcmQgZW50cnk6DQogICAgICAgICAgICAvLyBNb2R1bGVJZGVudGlmaWVyKDIpICAgICAgICAgICAtIGlkZW50aWZpZXMgdGhlIHRhcmdldCBNRSBtb2R1bGUgZm9yIHRoZSBlbnRyeS4NCiAgICAgICAgICAgIC8vIFZhcmlhYmxlSWRlbnRpZmllcigyKSAgICAgICAgIC0gYW4gZW51bWVyYXRpb24gdmFsdWUgdGhhdCBpZGVudGlmaWVzIHRoZSB2YXJpYWJsZS4gVmFyaWFibGUgaWRlbnRpZmllcnMgYXJlIHVuaXF1ZSB0byBlYWNoIE1vZHVsZUlkZW50aWZpZXIuDQogICAgICAgICAgICAvLyBWYXJpYWJsZUxlbmd0aCgyKSAgICAgICAgICAgICAtIGlzIHRoZSBsZW5ndGggb2YgdGhlIHZhcmlhYmxlIHZhbHVlIGluIGJ5dGVzLg0KICAgICAgICAgICAgLy8gVmFyaWFibGVWYWx1ZSAgICAgICAgICAgICAgICAgLSBpcyB0aGUgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gdGhlIHZhcmlhYmxlLg0KDQogICAgICAgICAgICB2YXIgdiA9IHt9Ow0KICAgICAgICAgICAgdi5tb2R1bGVpZCA9IFJlYWRTaG9ydFgocmVjYmluLCBwdHIyKTsNCiAgICAgICAgICAgIHYudmFyaWQgPSBSZWFkU2hvcnRYKHJlY2JpbiwgcHRyMiArIDIpOw0KICAgICAgICAgICAgaWYgKHYubW9kdWxlaWQgPT0gMCB8fCB2LnZhcmlkID09IDApIGJyZWFrOw0KICAgICAgICAgICAgaWYgKEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdKSB7DQogICAgICAgICAgICAgICAgdi5sZW5ndGggPSBSZWFkU2hvcnRYKHJlY2JpbiwgcHRyMiArIDQpOw0KICAgICAgICAgICAgICAgIHYudHlwZSA9IEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzBdOw0KICAgICAgICAgICAgICAgIHYuZGVzYyA9IEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzFdOw0KICAgICAgICAgICAgICAgIHYudmFsdWUgPSByZWNiaW4uc3Vic3RyaW5nKHB0cjIgKyA4LCBwdHIyICsgOCArIHYubGVuZ3RoKTsNCiAgICAgICAgICAgICAgICBpZiAodi50eXBlID09IDEgJiYgdi5sZW5ndGggPT0gMSkgdi52YWx1ZSA9IHYudmFsdWUuY2hhckNvZGVBdCgwKTsgLy8gMSBieXRlIG51bWJlcg0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHYudHlwZSA9PSAyICYmIHYubGVuZ3RoID09IDIpIHYudmFsdWUgPSBSZWFkU2hvcnRYKHYudmFsdWUsIDApOyAvLyAyIGJ5dGUgbnVtYmVyDQogICAgICAgICAgICAgICAgZWxzZSBpZiAodi50eXBlID09IDMgJiYgdi5sZW5ndGggPT0gNCkgdi52YWx1ZSA9IFJlYWRJbnRYKHYudmFsdWUsIDApOyAvLyA0IGJ5dGUgbnVtYmVyDQogICAgICAgICAgICAgICAgZWxzZSBpZiAodi50eXBlID09IDQpIHYudmFsdWUgPSBndWlkVG9TdHIocnN0cjJoZXgodi52YWx1ZSkpOyAvLyBHVUlEDQogICAgICAgICAgICAgICAgci52YXJpYWJsZXMucHVzaCh2KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHB0cjIgKz0gKDggKyAoTWF0aC5mbG9vcigodi5sZW5ndGggKyAzKSAvIDQpICogNCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU29ydCB0aGUgdmFyaWFibGVzDQogICAgICAgIHIudmFyaWFibGVzLnNvcnQoQW10U2V0dXBCaW5WYXJpYWJsZUNvbXBhcmUpOw0KDQogICAgICAgIG9iai5yZWNvcmRzLnB1c2gocik7DQogICAgICAgIHB0ciArPSA1MTI7DQogICAgfQ0KDQogICAgaWYgKGRhdGFSZWNvcmRDb3VudCAhPSBvYmoucmVjb3Jkcy5sZW5ndGgpIHJldHVybjsgLy8gTWlzbWF0Y2ggcmVjb3JkIGNvdW50DQogICAgcmV0dXJuIG9iajsNCn0NCg0KLy8gQ29uc3RydWN0IGEgU2V0dXAuYmluIGZpbGUNCnZhciBBbXRTZXR1cEJpbkVuY29kZSA9IGZ1bmN0aW9uIChvYmopIHsNCiAgICBpZiAob2JqLmZpbGVUeXBlIDwgMSAmJiBvYmouZmlsZVR5cGUgPiBBbXRTZXR1cEJpblNldHVwR3VpZHMubGVuZ3RoKSByZXR1cm4gbnVsbDsNCiAgICB2YXIgb3V0ID0gW10sIHIgPSBBbXRTZXR1cEJpblNldHVwR3VpZHNbb2JqLmZpbGVUeXBlIC0gMV0sIHJlY2NvdW50ID0gMDsNCiAgICByICs9IFNob3J0VG9TdHJYKG9iai5yZWNvcmRDaHVua0NvdW50KTsNCiAgICByICs9IFNob3J0VG9TdHJYKG9iai5yZWNvcmRIZWFkZXJCeXRlQ291bnQpOw0KICAgIHIgKz0gSW50VG9TdHJYKG9iai5yZWNvcmROdW1iZXIpOw0KICAgIHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShvYmoubWFqb3JWZXJzaW9uLCBvYmoubWlub3JWZXJzaW9uKTsNCiAgICByICs9IFNob3J0VG9TdHJYKG9iai5mbGFncyk7IC8vIEZsYWdzOiAxID0gRG8gbm90IGNvbnN1bWUgcmVjb3Jkcw0KICAgIHIgKz0gSW50VG9TdHJYKG9iai5yZWNvcmRzLmxlbmd0aCk7DQogICAgciArPSBJbnRUb1N0clgob2JqLmRhdGFSZWNvcmRzQ29uc3VtZWQpOw0KICAgIHIgKz0gU2hvcnRUb1N0clgob2JqLmRhdGFSZWNvcmRDaHVua0NvdW50KTsNCiAgICB3aGlsZSAoci5sZW5ndGggPCA1MTIpIHsgciArPSAiXDAiOyB9IC8vIFBhZCB0aGUgaGVhZGVyDQogICAgb3V0LnB1c2gocik7DQoNCiAgICAvLyBXcml0ZSBlYWNoIHJlY29yZA0KICAgIGZvciAodmFyIGkgaW4gb2JqLnJlY29yZHMpIHsNCiAgICAgICAgdmFyIHIyID0gIiIsIHJlYyA9IG9iai5yZWNvcmRzW2ldOw0KICAgICAgICByMiArPSBJbnRUb1N0clgocmVjLnR5cGVJZGVudGlmaWVyKTsNCiAgICAgICAgcjIgKz0gSW50VG9TdHJYKHJlYy5mbGFncyk7DQogICAgICAgIHIyICs9IEludFRvU3RyWCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQNCiAgICAgICAgcjIgKz0gSW50VG9TdHJYKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZlZA0KICAgICAgICByMiArPSBTaG9ydFRvU3RyWCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYy5jaHVua0NvdW50DQogICAgICAgIHIyICs9IFNob3J0VG9TdHJYKDI0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjLmhlYWRlckJ5dGVDb3VudA0KICAgICAgICByMiArPSBJbnRUb1N0clgoKytyZWNjb3VudCk7DQoNCiAgICAgICAgLy8gU29ydCB0aGUgdmFyaWFibGVzDQogICAgICAgIHJlYy52YXJpYWJsZXMuc29ydChBbXRTZXR1cEJpblZhcmlhYmxlQ29tcGFyZSk7DQoNCiAgICAgICAgLyoNCiAgICAgICAgLy8gQ2hhbmdlIHZhcmlhYmxlIHByaW9yaXR5DQogICAgICAgIEFtdFNldHVwQmluTW92ZVRvVG9wKHIudmFyaWFibGVzLCAxLCAzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFuYWdlYWJpbGl0eSBGZWF0dXJlIFNlbGVjdGlvbg0KICAgICAgICBBbXRTZXR1cEJpbk1vdmVUb1RvcChyLnZhcmlhYmxlcywgMSwgMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5ldyBNRUJ4IHBhc3N3b3JkDQogICAgICAgIEFtdFNldHVwQmluTW92ZVRvVG9wKHIudmFyaWFibGVzLCAxLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudCBNRUJ4IHBhc3N3b3JkDQogICAgICAgICovDQoNCiAgICAgICAgLy8gV3JpdGUgZWFjaCB2YXJpYWJsZQ0KICAgICAgICBmb3IgKHZhciBqIGluIHJlYy52YXJpYWJsZXMpIHsNCiAgICAgICAgICAgIHZhciByMyA9ICIiLCB2ID0gcmVjLnZhcmlhYmxlc1tqXSwgZGF0YSA9IHYudmFsdWU7DQogICAgICAgICAgICB2LnR5cGUgPSBBbXRTZXR1cEJpblZhcklkc1t2Lm1vZHVsZWlkXVt2LnZhcmlkXVswXTsgICAgICAgICAgICAgLy8gU2V0IHRoZSBjb3JyZWN0IHR5cGUgaWYgbm90IGFscmVheSBjb25uZWN0DQogICAgICAgICAgICBpZiAoKHYudHlwZSA+IDApICYmICh2LnR5cGUgPCA0KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG51bWVyaWMgdmFsdWUsIGVuY29kZSBpdCBjb3JyZWN0bHkNCiAgICAgICAgICAgICAgICBkYXRhID0gcGFyc2VJbnQoZGF0YSk7DQogICAgICAgICAgICAgICAgaWYgKHYudHlwZSA9PSAxKSBkYXRhID0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhKTsNCiAgICAgICAgICAgICAgICBpZiAodi50eXBlID09IDIpIGRhdGEgPSBTaG9ydFRvU3RyWChkYXRhKTsNCiAgICAgICAgICAgICAgICBpZiAodi50eXBlID09IDMpIGRhdGEgPSBJbnRUb1N0clgoZGF0YSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAodi50eXBlID09IDQpIHsgZGF0YSA9IGhleDJyc3RyKGd1aWRUb1N0cihkYXRhLnNwbGl0KCctJykuam9pbignJykpLnNwbGl0KCctJykuam9pbignJykpOyB9DQogICAgICAgICAgICByMyArPSBTaG9ydFRvU3RyWCh2Lm1vZHVsZWlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW9kdWxlIElkZW50aWZpZXINCiAgICAgICAgICAgIHIzICs9IFNob3J0VG9TdHJYKHYudmFyaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYXJpYWJsZSBJZGVudGlmaWVyDQogICAgICAgICAgICByMyArPSBTaG9ydFRvU3RyWChkYXRhLmxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFyaWFibGUgTGVuZ3RoDQogICAgICAgICAgICByMyArPSBTaG9ydFRvU3RyWCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQNCiAgICAgICAgICAgIHIzICs9IGRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYXJpYWJsZSBEYXRhDQogICAgICAgICAgICB3aGlsZSAocjMubGVuZ3RoICUgNCAhPSAwKSB7IHIzICs9ICJcMCI7IH0gICAgICAgICAgICAgICAgICAgICAgLy8gUGFkIHRoZSB2YXJpYWJsZQ0KICAgICAgICAgICAgcjIgKz0gcjM7DQogICAgICAgIH0NCg0KICAgICAgICB3aGlsZSAocjIubGVuZ3RoIDwgNTEyKSB7IHIyICs9ICJcMCI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhZCB0aGUgcmVjb3JkDQogICAgICAgIGlmICgocmVjLmZsYWdzICYgMikgIT0gMCkgeyByMiA9IHIyLnN1YnN0cmluZygwLCAyNCkgKyBBbXRTZXR1cEJpblNjcmFtYmxlUmVjb3JkRGF0YShyMi5zdWJzdHJpbmcoMjQpKTsgfSAvLyBTY3JhbWJsZSB0aGUgcmVjb3JkIHN0YXJ0aW5nIGF0IGJ5dGUgMjQsIGFmdGVyIHRoZSBoZWFkZXINCiAgICAgICAgb3V0LnB1c2gocjIpOw0KICAgIH0NCiAgICByZXR1cm4gb3V0LmpvaW4oJycpOw0KfQ0KDQovLyBVc2VkIHRvIHNvcnQgdmFyaWFibGVzDQpmdW5jdGlvbiBBbXRTZXR1cEJpblZhcmlhYmxlQ29tcGFyZShhLCBiKSB7DQogICAgaWYgKGEubW9kdWxlaWQgPiBiLm1vZHVsZWlkKSByZXR1cm4gMTsNCiAgICBpZiAoYS5tb2R1bGVpZCA8IGIubW9kdWxlaWQpIHJldHVybiAtMTsNCiAgICBpZiAoYS52YXJpZCA+IGIudmFyaWQpIHJldHVybiAxOw0KICAgIGlmIChhLnZhcmlkIDwgYi52YXJpZCkgcmV0dXJuIC0xOw0KICAgIHJldHVybiAwOw0KfQ0KDQovLyBTY3JhbWJsZSBhbmQgdW4tc2NyYW1ibGUgcmVjb3Jkcw0KZnVuY3Rpb24gQW10U2V0dXBCaW5TY3JhbWJsZVJlY29yZERhdGEoZGF0YSkgeyB2YXIgb3V0ID0gIiI7IGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgeyBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoZGF0YS5jaGFyQ29kZUF0KGkpICsgMTcpICYgMHhGRik7IH0gcmV0dXJuIG91dDsgfQ0KZnVuY3Rpb24gQW10U2V0dXBCaW5EZXNjcmFtYmxlUmVjb3JkRGF0YShkYXRhKSB7IHZhciBvdXQgPSAiIjsgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7IG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChkYXRhLmNoYXJDb2RlQXQoaSkgKyAweEVGKSAmIDB4RkYpOyB9IHJldHVybiBvdXQ7IH0NCg0KLy8gRmluZCBhIG1vZHVsZWlkL3ZhcmlkIGluIHRoZSB2YXJpYWJsZSBsaXN0LCBpZiBmb3VuZCwgbW92ZSBpdCB0byB0aGUgdG9wDQovL2Z1bmN0aW9uIEFtdFNldHVwQmluTW92ZVRvVG9wKHZhcmlhYmxlcywgbW9kdWxlaWQsIHZhcmlkKSB7IHZhciBpID0gLTE7IGZvciAodmFyIGogaW4gdmFyaWFibGVzKSB7IGlmICgodmFyaWFibGVzW2pdLm1vZHVsZWlkID09IG1vZHVsZWlkKSAmJiAodmFyaWFibGVzW2pdLnZhcmlkID09IHZhcmlkKSkgeyBpID0gajsgfSB9IGlmIChpID4gMSkgeyBBcnJheUVsZW1lbnRNb3ZlKHZhcmlhYmxlcywgaSwgMCk7IH0gfQ0KLyogRmlsZVNhdmVyLmpzDQogKiBBIHNhdmVBcygpIEZpbGVTYXZlciBpbXBsZW1lbnRhdGlvbi4NCiAqIDEuMS4yMDE1MTAwMw0KICoNCiAqIEJ5IEVsaSBHcmV5LCBodHRwOi8vZWxpZ3JleS5jb20NCiAqIExpY2Vuc2U6IE1JVA0KICogICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VsaWdyZXkvRmlsZVNhdmVyLmpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQNCiAqLw0KDQovKmdsb2JhbCBzZWxmICovDQovKmpzbGludCBiaXR3aXNlOiB0cnVlLCBpbmRlbnQ6IDQsIGxheGJyZWFrOiB0cnVlLCBsYXhjb21tYTogdHJ1ZSwgc21hcnR0YWJzOiB0cnVlLCBwbHVzcGx1czogdHJ1ZSAqLw0KDQovKiEgQHNvdXJjZSBodHRwOi8vcHVybC5lbGlncmV5LmNvbS9naXRodWIvRmlsZVNhdmVyLmpzL2Jsb2IvbWFzdGVyL0ZpbGVTYXZlci5qcyAqLw0KDQp2YXIgc2F2ZUFzID0gc2F2ZUFzIHx8IChmdW5jdGlvbiAodmlldykgew0KICAgICJ1c2Ugc3RyaWN0IjsNCiAgICAvLyBJRSA8MTAgaXMgZXhwbGljaXRseSB1bnN1cHBvcnRlZA0KICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAidW5kZWZpbmVkIiAmJiAvTVNJRSBbMS05XVwuLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgdmFyDQoJCSAgZG9jID0gdmlldy5kb2N1bWVudA0KCQkgIC8vIG9ubHkgZ2V0IFVSTCB3aGVuIG5lY2Vzc2FyeSBpbiBjYXNlIEJsb2IuanMgaGFzbid0IG92ZXJyaWRkZW4gaXQgeWV0DQoJCSwgZ2V0X1VSTCA9IGZ1bmN0aW9uICgpIHsNCgkJICAgIHJldHVybiB2aWV3LlVSTCB8fCB2aWV3LndlYmtpdFVSTCB8fCB2aWV3Ow0KCQl9DQoJCSwgc2F2ZV9saW5rID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJhIikNCgkJLCBjYW5fdXNlX3NhdmVfbGluayA9ICJkb3dubG9hZCIgaW4gc2F2ZV9saW5rDQoJCSwgY2xpY2sgPSBmdW5jdGlvbiAobm9kZSkgew0KCQkgICAgdmFyIGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoImNsaWNrIik7DQoJCSAgICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpOw0KCQl9DQoJCSwgaXNfc2FmYXJpID0gL1ZlcnNpb25cL1tcZFwuXSsuKlNhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KQ0KCQksIHdlYmtpdF9yZXFfZnMgPSB2aWV3LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtDQoJCSwgcmVxX2ZzID0gdmlldy5yZXF1ZXN0RmlsZVN5c3RlbSB8fCB3ZWJraXRfcmVxX2ZzIHx8IHZpZXcubW96UmVxdWVzdEZpbGVTeXN0ZW0NCgkJLCB0aHJvd19vdXRzaWRlID0gZnVuY3Rpb24gKGV4KSB7DQoJCSAgICAodmlldy5zZXRJbW1lZGlhdGUgfHwgdmlldy5zZXRUaW1lb3V0KShmdW5jdGlvbiAoKSB7DQoJCSAgICAgICAgdGhyb3cgZXg7DQoJCSAgICB9LCAwKTsNCgkJfQ0KCQksIGZvcmNlX3NhdmVhYmxlX3R5cGUgPSAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIg0KCQksIGZzX21pbl9zaXplID0gMA0KCQkvLyBTZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3NTI5NyNjNyBhbmQNCgkJLy8gaHR0cHM6Ly9naXRodWIuY29tL2VsaWdyZXkvRmlsZVNhdmVyLmpzL2NvbW1pdC80ODU5MzBhI2NvbW1pdGNvbW1lbnQtODc2ODA0Nw0KCQkvLyBmb3IgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIHRpbWVvdXQgYW5kIHJldm9jYXRpb24gZmxvdw0KCQksIGFyYml0cmFyeV9yZXZva2VfdGltZW91dCA9IDUwMCAvLyBpbiBtcw0KCQksIHJldm9rZSA9IGZ1bmN0aW9uIChmaWxlKSB7DQoJCSAgICB2YXIgcmV2b2tlciA9IGZ1bmN0aW9uICgpIHsNCgkJICAgICAgICBpZiAodHlwZW9mIGZpbGUgPT09ICJzdHJpbmciKSB7IC8vIGZpbGUgaXMgYW4gb2JqZWN0IFVSTA0KCQkgICAgICAgICAgICBnZXRfVVJMKCkucmV2b2tlT2JqZWN0VVJMKGZpbGUpOw0KCQkgICAgICAgIH0gZWxzZSB7IC8vIGZpbGUgaXMgYSBGaWxlDQoJCSAgICAgICAgICAgIGZpbGUucmVtb3ZlKCk7DQoJCSAgICAgICAgfQ0KCQkgICAgfTsNCgkJICAgIGlmICh2aWV3LmNocm9tZSkgew0KCQkgICAgICAgIHJldm9rZXIoKTsNCgkJICAgIH0gZWxzZSB7DQoJCSAgICAgICAgc2V0VGltZW91dChyZXZva2VyLCBhcmJpdHJhcnlfcmV2b2tlX3RpbWVvdXQpOw0KCQkgICAgfQ0KCQl9DQoJCSwgZGlzcGF0Y2ggPSBmdW5jdGlvbiAoZmlsZXNhdmVyLCBldmVudF90eXBlcywgZXZlbnQpIHsNCgkJICAgIGV2ZW50X3R5cGVzID0gW10uY29uY2F0KGV2ZW50X3R5cGVzKTsNCgkJICAgIHZhciBpID0gZXZlbnRfdHlwZXMubGVuZ3RoOw0KCQkgICAgd2hpbGUgKGktLSkgew0KCQkgICAgICAgIHZhciBsaXN0ZW5lciA9IGZpbGVzYXZlclsib24iICsgZXZlbnRfdHlwZXNbaV1dOw0KCQkgICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICJmdW5jdGlvbiIpIHsNCgkJICAgICAgICAgICAgdHJ5IHsNCgkJICAgICAgICAgICAgICAgIGxpc3RlbmVyLmNhbGwoZmlsZXNhdmVyLCBldmVudCB8fCBmaWxlc2F2ZXIpOw0KCQkgICAgICAgICAgICB9IGNhdGNoIChleCkgew0KCQkgICAgICAgICAgICAgICAgdGhyb3dfb3V0c2lkZShleCk7DQoJCSAgICAgICAgICAgIH0NCgkJICAgICAgICB9DQoJCSAgICB9DQoJCX0NCgkJLCBhdXRvX2JvbSA9IGZ1bmN0aW9uIChibG9iKSB7DQoJCSAgICAvLyBwcmVwZW5kIEJPTSBmb3IgVVRGLTggWE1MIGFuZCB0ZXh0IHR5cGVzIChpbmNsdWRpbmcgSFRNTCkNCgkJICAgIGlmICgvXlxzKig/OnRleHRcL1xTKnxhcHBsaWNhdGlvblwveG1sfFxTKlwvXFMqXCt4bWwpXHMqOy4qY2hhcnNldFxzKj1ccyp1dGYtOC9pLnRlc3QoYmxvYi50eXBlKSkgew0KCQkgICAgICAgIHJldHVybiBuZXcgQmxvYihbIlx1ZmVmZiIsIGJsb2JdLCB7IHR5cGU6IGJsb2IudHlwZSB9KTsNCgkJICAgIH0NCgkJICAgIHJldHVybiBibG9iOw0KCQl9DQoJCSwgRmlsZVNhdmVyID0gZnVuY3Rpb24gKGJsb2IsIG5hbWUsIG5vX2F1dG9fYm9tKSB7DQoJCSAgICBpZiAoIW5vX2F1dG9fYm9tKSB7DQoJCSAgICAgICAgYmxvYiA9IGF1dG9fYm9tKGJsb2IpOw0KCQkgICAgfQ0KCQkgICAgLy8gRmlyc3QgdHJ5IGEuZG93bmxvYWQsIHRoZW4gd2ViIGZpbGVzeXN0ZW0sIHRoZW4gb2JqZWN0IFVSTHMNCgkJICAgIHZhcg0KCQkJCSAgZmlsZXNhdmVyID0gdGhpcw0KCQkJCSwgdHlwZSA9IGJsb2IudHlwZQ0KCQkJCSwgYmxvYl9jaGFuZ2VkID0gZmFsc2UNCgkJCQksIG9iamVjdF91cmwNCgkJCQksIHRhcmdldF92aWV3DQoJCQkJLCBkaXNwYXRjaF9hbGwgPSBmdW5jdGlvbiAoKSB7DQoJCQkJICAgIGRpc3BhdGNoKGZpbGVzYXZlciwgIndyaXRlc3RhcnQgcHJvZ3Jlc3Mgd3JpdGUgd3JpdGVlbmQiLnNwbGl0KCIgIikpOw0KCQkJCX0NCgkJCQkvLyBvbiBhbnkgZmlsZXN5cyBlcnJvcnMgcmV2ZXJ0IHRvIHNhdmluZyB3aXRoIG9iamVjdCBVUkxzDQoJCQkJLCBmc19lcnJvciA9IGZ1bmN0aW9uICgpIHsNCgkJCQkgICAgaWYgKHRhcmdldF92aWV3ICYmIGlzX3NhZmFyaSAmJiB0eXBlb2YgRmlsZVJlYWRlciAhPT0gInVuZGVmaW5lZCIpIHsNCgkJCQkgICAgICAgIC8vIFNhZmFyaSBkb2Vzbid0IGFsbG93IGRvd25sb2FkaW5nIG9mIGJsb2IgdXJscw0KCQkJCSAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQoJCQkJICAgICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24gKCkgew0KCQkJCSAgICAgICAgICAgIHZhciBiYXNlNjREYXRhID0gcmVhZGVyLnJlc3VsdDsNCgkJCQkgICAgICAgICAgICB0YXJnZXRfdmlldy5sb2NhdGlvbi5ocmVmID0gImRhdGE6YXR0YWNobWVudC9maWxlIiArIGJhc2U2NERhdGEuc2xpY2UoYmFzZTY0RGF0YS5zZWFyY2goL1ssO10vKSk7DQoJCQkJICAgICAgICAgICAgZmlsZXNhdmVyLnJlYWR5U3RhdGUgPSBmaWxlc2F2ZXIuRE9ORTsNCgkJCQkgICAgICAgICAgICBkaXNwYXRjaF9hbGwoKTsNCgkJCQkgICAgICAgIH07DQoJCQkJICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTsNCgkJCQkgICAgICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7DQoJCQkJICAgICAgICByZXR1cm47DQoJCQkJICAgIH0NCgkJCQkgICAgLy8gZG9uJ3QgY3JlYXRlIG1vcmUgb2JqZWN0IFVSTHMgdGhhbiBuZWVkZWQNCgkJCQkgICAgaWYgKGJsb2JfY2hhbmdlZCB8fCAhb2JqZWN0X3VybCkgew0KCQkJCSAgICAgICAgb2JqZWN0X3VybCA9IGdldF9VUkwoKS5jcmVhdGVPYmplY3RVUkwoYmxvYik7DQoJCQkJICAgIH0NCgkJCQkgICAgaWYgKHRhcmdldF92aWV3KSB7DQoJCQkJICAgICAgICB0YXJnZXRfdmlldy5sb2NhdGlvbi5ocmVmID0gb2JqZWN0X3VybDsNCgkJCQkgICAgfSBlbHNlIHsNCgkJCQkgICAgICAgIHZhciBuZXdfdGFiID0gdmlldy5vcGVuKG9iamVjdF91cmwsICJfYmxhbmsiKTsNCgkJCQkgICAgICAgIGlmIChuZXdfdGFiID09IHVuZGVmaW5lZCAmJiBpc19zYWZhcmkpIHsNCgkJCQkgICAgICAgICAgICAvL0FwcGxlIGRvIG5vdCBhbGxvdyB3aW5kb3cub3Blbiwgc2VlIGh0dHA6Ly9iaXQubHkvMWtaZmZSSQ0KCQkJCSAgICAgICAgICAgIHZpZXcubG9jYXRpb24uaHJlZiA9IG9iamVjdF91cmwNCgkJCQkgICAgICAgIH0NCgkJCQkgICAgfQ0KCQkJCSAgICBmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOw0KCQkJCSAgICBkaXNwYXRjaF9hbGwoKTsNCgkJCQkgICAgcmV2b2tlKG9iamVjdF91cmwpOw0KCQkJCX0NCgkJCQksIGFib3J0YWJsZSA9IGZ1bmN0aW9uIChmdW5jKSB7DQoJCQkJICAgIHJldHVybiBmdW5jdGlvbiAoKSB7DQoJCQkJICAgICAgICBpZiAoZmlsZXNhdmVyLnJlYWR5U3RhdGUgIT09IGZpbGVzYXZlci5ET05FKSB7DQoJCQkJICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsNCgkJCQkgICAgICAgIH0NCgkJCQkgICAgfTsNCgkJCQl9DQoJCQkJLCBjcmVhdGVfaWZfbm90X2ZvdW5kID0geyBjcmVhdGU6IHRydWUsIGV4Y2x1c2l2ZTogZmFsc2UgfQ0KCQkJCSwgc2xpY2UNCgkJICAgIDsNCgkJICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7DQoJCSAgICBpZiAoIW5hbWUpIHsNCgkJICAgICAgICBuYW1lID0gImRvd25sb2FkIjsNCgkJICAgIH0NCgkJICAgIGlmIChjYW5fdXNlX3NhdmVfbGluaykgew0KCQkgICAgICAgIG9iamVjdF91cmwgPSBnZXRfVVJMKCkuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOw0KCQkgICAgICAgIHNhdmVfbGluay5ocmVmID0gb2JqZWN0X3VybDsNCgkJICAgICAgICBzYXZlX2xpbmsuZG93bmxvYWQgPSBuYW1lOw0KCQkgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KCQkgICAgICAgICAgICBjbGljayhzYXZlX2xpbmspOw0KCQkgICAgICAgICAgICBkaXNwYXRjaF9hbGwoKTsNCgkJICAgICAgICAgICAgcmV2b2tlKG9iamVjdF91cmwpOw0KCQkgICAgICAgICAgICBmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOw0KCQkgICAgICAgIH0pOw0KCQkgICAgICAgIHJldHVybjsNCgkJICAgIH0NCgkJICAgIC8vIE9iamVjdCBhbmQgd2ViIGZpbGVzeXN0ZW0gVVJMcyBoYXZlIGEgcHJvYmxlbSBzYXZpbmcgaW4gR29vZ2xlIENocm9tZSB3aGVuDQoJCSAgICAvLyB2aWV3ZWQgaW4gYSB0YWIsIHNvIEkgZm9yY2Ugc2F2ZSB3aXRoIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KCQkgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9OTExNTgNCgkJICAgIC8vIFVwZGF0ZTogR29vZ2xlIGVycmFudGx5IGNsb3NlZCA5MTE1OCwgSSBzdWJtaXR0ZWQgaXQgYWdhaW46DQoJCSAgICAvLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzg5NjQyDQoJCSAgICBpZiAodmlldy5jaHJvbWUgJiYgdHlwZSAmJiB0eXBlICE9PSBmb3JjZV9zYXZlYWJsZV90eXBlKSB7DQoJCSAgICAgICAgc2xpY2UgPSBibG9iLnNsaWNlIHx8IGJsb2Iud2Via2l0U2xpY2U7DQoJCSAgICAgICAgYmxvYiA9IHNsaWNlLmNhbGwoYmxvYiwgMCwgYmxvYi5zaXplLCBmb3JjZV9zYXZlYWJsZV90eXBlKTsNCgkJICAgICAgICBibG9iX2NoYW5nZWQgPSB0cnVlOw0KCQkgICAgfQ0KCQkgICAgLy8gU2luY2UgSSBjYW4ndCBiZSBzdXJlIHRoYXQgdGhlIGd1ZXNzZWQgbWVkaWEgdHlwZSB3aWxsIHRyaWdnZXIgYSBkb3dubG9hZA0KCQkgICAgLy8gaW4gV2ViS2l0LCBJIGFwcGVuZCAuZG93bmxvYWQgdG8gdGhlIGZpbGVuYW1lLg0KCQkgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDQwDQoJCSAgICBpZiAod2Via2l0X3JlcV9mcyAmJiBuYW1lICE9PSAiZG93bmxvYWQiKSB7DQoJCSAgICAgICAgbmFtZSArPSAiLmRvd25sb2FkIjsNCgkJICAgIH0NCgkJICAgIGlmICh0eXBlID09PSBmb3JjZV9zYXZlYWJsZV90eXBlIHx8IHdlYmtpdF9yZXFfZnMpIHsNCgkJICAgICAgICB0YXJnZXRfdmlldyA9IHZpZXc7DQoJCSAgICB9DQoJCSAgICBpZiAoIXJlcV9mcykgew0KCQkgICAgICAgIGZzX2Vycm9yKCk7DQoJCSAgICAgICAgcmV0dXJuOw0KCQkgICAgfQ0KCQkgICAgZnNfbWluX3NpemUgKz0gYmxvYi5zaXplOw0KCQkgICAgcmVxX2ZzKHZpZXcuVEVNUE9SQVJZLCBmc19taW5fc2l6ZSwgYWJvcnRhYmxlKGZ1bmN0aW9uIChmcykgew0KCQkgICAgICAgIGZzLnJvb3QuZ2V0RGlyZWN0b3J5KCJzYXZlZCIsIGNyZWF0ZV9pZl9ub3RfZm91bmQsIGFib3J0YWJsZShmdW5jdGlvbiAoZGlyKSB7DQoJCSAgICAgICAgICAgIHZhciBzYXZlID0gZnVuY3Rpb24gKCkgew0KCQkgICAgICAgICAgICAgICAgZGlyLmdldEZpbGUobmFtZSwgY3JlYXRlX2lmX25vdF9mb3VuZCwgYWJvcnRhYmxlKGZ1bmN0aW9uIChmaWxlKSB7DQoJCSAgICAgICAgICAgICAgICAgICAgZmlsZS5jcmVhdGVXcml0ZXIoYWJvcnRhYmxlKGZ1bmN0aW9uICh3cml0ZXIpIHsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF92aWV3LmxvY2F0aW9uLmhyZWYgPSBmaWxlLnRvVVJMKCk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goZmlsZXNhdmVyLCAid3JpdGVlbmQiLCBldmVudCk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZva2UoZmlsZSk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbmVycm9yID0gZnVuY3Rpb24gKCkgew0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gd3JpdGVyLmVycm9yOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgIT09IGVycm9yLkFCT1JUX0VSUikgew0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzX2Vycm9yKCk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZXN0YXJ0IHByb2dyZXNzIHdyaXRlIGFib3J0Ii5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXJbIm9uIiArIGV2ZW50XSA9IGZpbGVzYXZlclsib24iICsgZXZlbnRdOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlKGJsb2IpOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc2F2ZXIuYWJvcnQgPSBmdW5jdGlvbiAoKSB7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYWJvcnQoKTsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLldSSVRJTkc7DQoJCSAgICAgICAgICAgICAgICAgICAgfSksIGZzX2Vycm9yKTsNCgkJICAgICAgICAgICAgICAgIH0pLCBmc19lcnJvcik7DQoJCSAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgIGRpci5nZXRGaWxlKG5hbWUsIHsgY3JlYXRlOiBmYWxzZSB9LCBhYm9ydGFibGUoZnVuY3Rpb24gKGZpbGUpIHsNCgkJICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSBmaWxlIGlmIGl0IGFscmVhZHkgZXhpc3RzDQoJCSAgICAgICAgICAgICAgICBmaWxlLnJlbW92ZSgpOw0KCQkgICAgICAgICAgICAgICAgc2F2ZSgpOw0KCQkgICAgICAgICAgICB9KSwgYWJvcnRhYmxlKGZ1bmN0aW9uIChleCkgew0KCQkgICAgICAgICAgICAgICAgaWYgKGV4LmNvZGUgPT09IGV4Lk5PVF9GT1VORF9FUlIpIHsNCgkJICAgICAgICAgICAgICAgICAgICBzYXZlKCk7DQoJCSAgICAgICAgICAgICAgICB9IGVsc2Ugew0KCQkgICAgICAgICAgICAgICAgICAgIGZzX2Vycm9yKCk7DQoJCSAgICAgICAgICAgICAgICB9DQoJCSAgICAgICAgICAgIH0pKTsNCgkJICAgICAgICB9KSwgZnNfZXJyb3IpOw0KCQkgICAgfSksIGZzX2Vycm9yKTsNCgkJfQ0KCQksIEZTX3Byb3RvID0gRmlsZVNhdmVyLnByb3RvdHlwZQ0KCQksIHNhdmVBcyA9IGZ1bmN0aW9uIChibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgew0KCQkgICAgcmV0dXJuIG5ldyBGaWxlU2F2ZXIoYmxvYiwgbmFtZSwgbm9fYXV0b19ib20pOw0KCQl9DQogICAgOw0KICAgIC8vIElFIDEwKyAobmF0aXZlIHNhdmVBcykNCiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gInVuZGVmaW5lZCIgJiYgbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpIHsNCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgew0KICAgICAgICAgICAgaWYgKCFub19hdXRvX2JvbSkgew0KICAgICAgICAgICAgICAgIGJsb2IgPSBhdXRvX2JvbShibG9iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihibG9iLCBuYW1lIHx8ICJkb3dubG9hZCIpOw0KICAgICAgICB9Ow0KICAgIH0NCg0KICAgIEZTX3Byb3RvLmFib3J0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgZmlsZXNhdmVyID0gdGhpczsNCiAgICAgICAgZmlsZXNhdmVyLnJlYWR5U3RhdGUgPSBmaWxlc2F2ZXIuRE9ORTsNCiAgICAgICAgZGlzcGF0Y2goZmlsZXNhdmVyLCAiYWJvcnQiKTsNCiAgICB9Ow0KICAgIEZTX3Byb3RvLnJlYWR5U3RhdGUgPSBGU19wcm90by5JTklUID0gMDsNCiAgICBGU19wcm90by5XUklUSU5HID0gMTsNCiAgICBGU19wcm90by5ET05FID0gMjsNCg0KICAgIEZTX3Byb3RvLmVycm9yID0NCglGU19wcm90by5vbndyaXRlc3RhcnQgPQ0KCUZTX3Byb3RvLm9ucHJvZ3Jlc3MgPQ0KCUZTX3Byb3RvLm9ud3JpdGUgPQ0KCUZTX3Byb3RvLm9uYWJvcnQgPQ0KCUZTX3Byb3RvLm9uZXJyb3IgPQ0KCUZTX3Byb3RvLm9ud3JpdGVlbmQgPQ0KCQludWxsOw0KDQogICAgcmV0dXJuIHNhdmVBczsNCn0oDQoJICAgdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiICYmIHNlbGYNCgl8fCB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiAmJiB3aW5kb3cNCgl8fCB0aGlzLmNvbnRlbnQNCikpOw0KLy8gYHNlbGZgIGlzIHVuZGVmaW5lZCBpbiBGaXJlZm94IGZvciBBbmRyb2lkIGNvbnRlbnQgc2NyaXB0IGNvbnRleHQNCi8vIHdoaWxlIGB0aGlzYCBpcyBuc0lDb250ZW50RnJhbWVNZXNzYWdlTWFuYWdlcg0KLy8gd2l0aCBhbiBhdHRyaWJ1dGUgYGNvbnRlbnRgIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHdpbmRvdw0KDQppZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMpIHsNCiAgICBtb2R1bGUuZXhwb3J0cy5zYXZlQXMgPSBzYXZlQXM7DQp9IGVsc2UgaWYgKCh0eXBlb2YgZGVmaW5lICE9PSAidW5kZWZpbmVkIiAmJiBkZWZpbmUgIT09IG51bGwpICYmIChkZWZpbmUuYW1kICE9IG51bGwpKSB7DQogICAgZGVmaW5lKFtdLCBmdW5jdGlvbiAoKSB7DQogICAgICAgIHJldHVybiBzYXZlQXM7DQogICAgfSk7DQp9DQoNCiAgICAgICAgdmFyIHZlcnNpb24gPSAnMC43LjUnOw0KICAgICAgICB2YXIgdXJsdmFycyA9IHt9Ow0KICAgICAgICB2YXIgYW10c3RhY2s7DQogICAgICAgIHZhciB3c3N0YWNrID0gbnVsbDsNCiAgICAgICAgdmFyIEFsbFdzbWFuID0gIkFNVF84MDIxeENyZWRlbnRpYWxDb250ZXh0LEFNVF84MDIxWFByb2ZpbGUsQU1UX0FjdGl2ZUZpbHRlclN0YXRpc3RpY3MsQU1UX0FnZW50UHJlc2VuY2VDYXBhYmlsaXRpZXMsQU1UX0FnZW50UHJlc2VuY2VJbnRlcmZhY2VQb2xpY3ksQU1UX0FnZW50UHJlc2VuY2VTZXJ2aWNlLEFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2csQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ0FjdGlvbixBTVRfQWxhcm1DbG9ja1NlcnZpY2UsSVBTX0FsYXJtQ2xvY2tPY2N1cnJlbmNlLEFNVF9Bc3NldFRhYmxlLEFNVF9Bc3NldFRhYmxlU2VydmljZSxBTVRfQXVkaXRMb2csQU1UX0F1ZGl0UG9saWN5UnVsZSxBTVRfQXV0aG9yaXphdGlvblNlcnZpY2UsQU1UX0Jvb3RDYXBhYmlsaXRpZXMsQU1UX0Jvb3RTZXR0aW5nRGF0YSxBTVRfQ29tcGxleEZpbHRlckVudHJ5QmFzZSxBTVRfQ1JMLEFNVF9DcnlwdG9ncmFwaGljQ2FwYWJpbGl0aWVzLEFNVF9FQUNDcmVkZW50aWFsQ29udGV4dCxBTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZSxBTVRfRW52aXJvbm1lbnREZXRlY3Rpb25JbnRlcmZhY2VQb2xpY3ksQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEsQU1UX0V0aGVybmV0UG9ydFNldHRpbmdzLEFNVF9FdmVudExvZ0VudHJ5LEFNVF9FdmVudE1hbmFnZXJTZXJ2aWNlLEFNVF9FdmVudFN1YnNjcmliZXIsQU1UX0ZpbHRlckVudHJ5QmFzZSxBTVRfRmlsdGVySW5TeXN0ZW1EZWZlbnNlUG9saWN5LEFNVF9HZW5lcmFsU2V0dGluZ3MsQU1UX0dlbmVyYWxTeXN0ZW1EZWZlbnNlQ2FwYWJpbGl0aWVzLEFNVF9IZHI4MDIxRmlsdGVyLEFNVF9IZXVyaXN0aWNQYWNrZXRGaWx0ZXJJbnRlcmZhY2VQb2xpY3ksQU1UX0hldXJpc3RpY1BhY2tldEZpbHRlclNldHRpbmdzLEFNVF9IZXVyaXN0aWNQYWNrZXRGaWx0ZXJTdGF0aXN0aWNzLEFNVF9JbnRlcmZhY2VQb2xpY3ksQU1UX0lQSGVhZGVyc0ZpbHRlcixBTVRfS2VyYmVyb3NTZXR0aW5nRGF0YSxBTVRfTWFuYWdlbWVudFByZXNlbmNlUmVtb3RlU0FQLEFNVF9NZXNzYWdlTG9nLEFNVF9NUFNVc2VybmFtZVBhc3N3b3JkLEFNVF9OZXR3b3JrRmlsdGVyLEFNVF9OZXR3b3JrUG9ydERlZmF1bHRTeXN0ZW1EZWZlbnNlUG9saWN5LEFNVF9OZXR3b3JrUG9ydFN5c3RlbURlZmVuc2VDYXBhYmlsaXRpZXMsQU1UX05ldHdvcmtQb3J0U3lzdGVtRGVmZW5zZVBvbGljeSxBTVRfUENJRGV2aWNlLEFNVF9QRVRDYXBhYmlsaXRpZXMsQU1UX1BFVEZpbHRlckZvclRhcmdldCxBTVRfUEVURmlsdGVyU2V0dGluZyxBTVRfUHJvdmlzaW9uaW5nQ2VydGlmaWNhdGVIYXNoLEFNVF9QdWJsaWNLZXlDZXJ0aWZpY2F0ZSxBTVRfUHVibGljS2V5TWFuYWdlbWVudENhcGFiaWxpdGllcyxBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UsQU1UX1B1YmxpY1ByaXZhdGVLZXlQYWlyLEFNVF9SZWRpcmVjdGlvblNlcnZpY2UsQU1UX1JlbW90ZUFjY2Vzc0NhcGFiaWxpdGllcyxBTVRfUmVtb3RlQWNjZXNzQ3JlZGVudGlhbENvbnRleHQsQU1UX1JlbW90ZUFjY2Vzc1BvbGljeUFwcGxpZXNUb01QUyxBTVRfUmVtb3RlQWNjZXNzUG9saWN5UnVsZSxBTVRfUmVtb3RlQWNjZXNzU2VydmljZSxBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSxBTVRfU05NUEV2ZW50U3Vic2NyaWJlcixBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uLEFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5LEFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5SW5TZXJ2aWNlLEFNVF9TeXN0ZW1EZWZlbnNlU2VydmljZSxBTVRfU3lzdGVtUG93ZXJTY2hlbWUsQU1UX1RoaXJkUGFydHlEYXRhU3RvcmFnZUFkbWluaXN0cmF0aW9uU2VydmljZSxBTVRfVGhpcmRQYXJ0eURhdGFTdG9yYWdlU2VydmljZSxBTVRfVGltZVN5bmNocm9uaXphdGlvblNlcnZpY2UsQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0LEFNVF9UTFNQcm90b2NvbEVuZHBvaW50LEFNVF9UTFNQcm90b2NvbEVuZHBvaW50Q29sbGVjdGlvbixBTVRfVExTU2V0dGluZ0RhdGEsQU1UX1RyYXBUYXJnZXRGb3JTZXJ2aWNlLEFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UsQU1UX1dlYlVJU2VydmljZSxBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSxDSU1fQWJzdHJhY3RJbmRpY2F0aW9uU3Vic2NyaXB0aW9uLENJTV9BY2NvdW50LENJTV9BY2NvdW50TWFuYWdlbWVudENhcGFiaWxpdGllcyxDSU1fQWNjb3VudE1hbmFnZW1lbnRTZXJ2aWNlLENJTV9BY2NvdW50T25TeXN0ZW0sQ0lNX0FkbWluRG9tYWluLENJTV9BbGVydEluZGljYXRpb24sQ0lNX0Fzc2lnbmVkSWRlbnRpdHksQ0lNX0Fzc29jaWF0ZWRQb3dlck1hbmFnZW1lbnRTZXJ2aWNlLENJTV9BdXRoZW50aWNhdGlvblNlcnZpY2UsQ0lNX0F1dGhvcml6YXRpb25TZXJ2aWNlLENJTV9CSU9TRWxlbWVudCxDSU1fQklPU0ZlYXR1cmUsQ0lNX0JJT1NGZWF0dXJlQklPU0VsZW1lbnRzLENJTV9Cb290Q29uZmlnU2V0dGluZyxDSU1fQm9vdFNlcnZpY2UsQ0lNX0Jvb3RTZXR0aW5nRGF0YSxDSU1fQm9vdFNvdXJjZVNldHRpbmcsQ0lNX0NhcGFiaWxpdGllcyxDSU1fQ2FyZCxDSU1fQ2hhc3NpcyxDSU1fQ2hpcCxDSU1fQ29sbGVjdGlvbixDSU1fQ29tcG9uZW50LENJTV9Db21wdXRlclN5c3RlbSxDSU1fQ29tcHV0ZXJTeXN0ZW1QYWNrYWdlLENJTV9Db25jcmV0ZUNvbXBvbmVudCxDSU1fQ29uY3JldGVEZXBlbmRlbmN5LENJTV9Db250cm9sbGVyLENJTV9Db29saW5nRGV2aWNlLENJTV9DcmVkZW50aWFsLENJTV9DcmVkZW50aWFsQ29udGV4dCxDSU1fQ3JlZGVudGlhbE1hbmFnZW1lbnRTZXJ2aWNlLENJTV9EZXBlbmRlbmN5LENJTV9EZXZpY2VTQVBJbXBsZW1lbnRhdGlvbixDSU1fRWxlbWVudENhcGFiaWxpdGllcyxDSU1fRWxlbWVudENvbmZvcm1zVG9Qcm9maWxlLENJTV9FbGVtZW50TG9jYXRpb24sQ0lNX0VsZW1lbnRTZXR0aW5nRGF0YSxDSU1fRWxlbWVudFNvZnR3YXJlSWRlbnRpdHksQ0lNX0VsZW1lbnRTdGF0aXN0aWNhbERhdGEsQ0lNX0VuYWJsZWRMb2dpY2FsRWxlbWVudCxDSU1fRW5hYmxlZExvZ2ljYWxFbGVtZW50Q2FwYWJpbGl0aWVzLENJTV9FdGhlcm5ldFBvcnQsQ0lNX0ZhbixDSU1fRmlsdGVyQ29sbGVjdGlvbixDSU1fRmlsdGVyQ29sbGVjdGlvblN1YnNjcmlwdGlvbixDSU1fSG9zdGVkQWNjZXNzUG9pbnQsQ0lNX0hvc3RlZERlcGVuZGVuY3ksQ0lNX0hvc3RlZFNlcnZpY2UsQ0lNX0lkZW50aXR5LENJTV9JRUVFODAyMXhDYXBhYmlsaXRpZXMsQ0lNX0lFRUU4MDIxeFNldHRpbmdzLENJTV9JbmRpY2F0aW9uLENJTV9JbmRpY2F0aW9uU2VydmljZSxDSU1fSW5zdGFsbGVkU29mdHdhcmVJZGVudGl0eSxDSU1fS1ZNUmVkaXJlY3Rpb25TQVAsQ0lNX0xBTkVuZHBvaW50LENJTV9MaXN0ZW5lckRlc3RpbmF0aW9uLENJTV9MaXN0ZW5lckRlc3RpbmF0aW9uV1NNYW5hZ2VtZW50LENJTV9Mb2NhdGlvbixDSU1fTG9nLENJTV9Mb2dFbnRyeSxDSU1fTG9naWNhbERldmljZSxDSU1fTG9naWNhbEVsZW1lbnQsQ0lNX0xvZ2ljYWxQb3J0LENJTV9Mb2dpY2FsUG9ydENhcGFiaWxpdGllcyxDSU1fTG9nTWFuYWdlc1JlY29yZCxDSU1fTWFuYWdlZENyZWRlbnRpYWwsQ0lNX01hbmFnZWRFbGVtZW50LENJTV9NYW5hZ2VkU3lzdGVtRWxlbWVudCxDSU1fTWVkaWFBY2Nlc3NEZXZpY2UsQ0lNX01lbWJlck9mQ29sbGVjdGlvbixDSU1fTWVtb3J5LENJTV9NZXNzYWdlTG9nLENJTV9OZXR3b3JrUG9ydCxDSU1fTmV0d29ya1BvcnRDYXBhYmlsaXRpZXMsQ0lNX05ldHdvcmtQb3J0Q29uZmlndXJhdGlvblNlcnZpY2UsQ0lNX09yZGVyZWRDb21wb25lbnQsQ0lNX093bmluZ0NvbGxlY3Rpb25FbGVtZW50LENJTV9Pd25pbmdKb2JFbGVtZW50LENJTV9QQ0lDb250cm9sbGVyLENJTV9QaHlzaWNhbENvbXBvbmVudCxDSU1fUGh5c2ljYWxFbGVtZW50LENJTV9QaHlzaWNhbEVsZW1lbnRMb2NhdGlvbixDSU1fUGh5c2ljYWxGcmFtZSxDSU1fUGh5c2ljYWxNZW1vcnksQ0lNX1BoeXNpY2FsUGFja2FnZSxDSU1fUG9saWN5LENJTV9Qb2xpY3lBY3Rpb24sQ0lNX1BvbGljeUNvbmRpdGlvbixDSU1fUG9saWN5SW5TeXN0ZW0sQ0lNX1BvbGljeVJ1bGUsQ0lNX1BvbGljeVJ1bGVJblN5c3RlbSxDSU1fUG9saWN5U2V0LENJTV9Qb2xpY3lTZXRBcHBsaWVzVG9FbGVtZW50LENJTV9Qb2xpY3lTZXRJblN5c3RlbSxDSU1fUG93ZXJNYW5hZ2VtZW50Q2FwYWJpbGl0aWVzLENJTV9Qb3dlck1hbmFnZW1lbnRTZXJ2aWNlLENJTV9Qb3dlclN1cHBseSxDSU1fUHJpdmlsZWdlLENJTV9Qcml2aWxlZ2VNYW5hZ2VtZW50Q2FwYWJpbGl0aWVzLENJTV9Qcml2aWxlZ2VNYW5hZ2VtZW50U2VydmljZSxDSU1fUHJvY2Vzc0luZGljYXRpb24sQ0lNX1Byb2Nlc3NvcixDSU1fUHJvdG9jb2xFbmRwb2ludCxDSU1fUHJvdmlkZXNTZXJ2aWNlVG9FbGVtZW50LENJTV9SZWFsaXplcyxDSU1fUmVjb3JkRm9yTG9nLENJTV9SZWNvcmRMb2csQ0lNX1JlZGlyZWN0aW9uU2VydmljZSxDSU1fUmVmZXJlbmNlZFByb2ZpbGUsQ0lNX1JlZ2lzdGVyZWRQcm9maWxlLENJTV9SZW1vdGVBY2Nlc3NBdmFpbGFibGVUb0VsZW1lbnQsQ0lNX1JlbW90ZUlkZW50aXR5LENJTV9SZW1vdGVQb3J0LENJTV9SZW1vdGVTZXJ2aWNlQWNjZXNzUG9pbnQsQ0lNX1JvbGUsQ0lNX1JvbGVCYXNlZEF1dGhvcml6YXRpb25TZXJ2aWNlLENJTV9Sb2xlQmFzZWRNYW5hZ2VtZW50Q2FwYWJpbGl0aWVzLENJTV9Sb2xlTGltaXRlZFRvVGFyZ2V0LENJTV9TQVBBdmFpbGFibGVGb3JFbGVtZW50LENJTV9TZWN1cml0eVNlcnZpY2UsQ0lNX1NlbnNvcixDSU1fU2VydmljZSxDSU1fU2VydmljZUFjY2Vzc0J5U0FQLENJTV9TZXJ2aWNlQWNjZXNzUG9pbnQsQ0lNX1NlcnZpY2VBZmZlY3RzRWxlbWVudCxDSU1fU2VydmljZUF2YWlsYWJsZVRvRWxlbWVudCxDSU1fU2VydmljZVNBUERlcGVuZGVuY3ksQ0lNX1NlcnZpY2VTZXJ2aWNlRGVwZW5kZW5jeSxDSU1fU2V0dGluZ0RhdGEsQ0lNX1NoYXJlZENyZWRlbnRpYWwsQ0lNX1NvZnR3YXJlRWxlbWVudCxDSU1fU29mdHdhcmVGZWF0dXJlLENJTV9Tb2Z0d2FyZUZlYXR1cmVTb2Z0d2FyZUVsZW1lbnRzLENJTV9Tb2Z0d2FyZUlkZW50aXR5LENJTV9TdGF0aXN0aWNhbERhdGEsQ0lNX1N0b3JhZ2VFeHRlbnQsQ0lNX1N5c3RlbSxDSU1fU3lzdGVtQklPUyxDSU1fU3lzdGVtQ29tcG9uZW50LENJTV9TeXN0ZW1EZXZpY2UsQ0lNX1N5c3RlbVBhY2thZ2luZyxDSU1fVXNlT2ZMb2csQ0lNX1dhdGNoZG9nLENJTV9XaUZpRW5kcG9pbnQsQ0lNX1dpRmlFbmRwb2ludENhcGFiaWxpdGllcyxDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MsQ0lNX1dpRmlQb3J0LENJTV9XaUZpUG9ydENhcGFiaWxpdGllcyxJUFNfQWRtaW5Qcm92aXNpb25pbmdSZWNvcmQsSVBTX0NsaWVudFByb3Zpc2lvbmluZ1JlY29yZCxJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlLElQU19Ib3N0SVBTZXR0aW5ncyxJUFNfSFRUUFByb3h5U2VydmljZSxJUFNfSFRUUFByb3h5QWNjZXNzUG9pbnQsSVBTX0lkZXJTZXNzaW9uVXNpbmdQb3J0LElQU19JUHY2UG9ydFNldHRpbmdzLElQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhLElQU19Ldm1TZXNzaW9uVXNpbmdQb3J0LElQU19NYW51YWxQcm92aXNpb25pbmdSZWNvcmQsSVBTX09wdEluU2VydmljZSxJUFNfUHJvdmlzaW9uaW5nQXVkaXRSZWNvcmQsSVBTX1Byb3Zpc2lvbmluZ1JlY29yZExvZyxJUFNfUmFzU2Vzc2lvblVzaW5nUG9ydCxJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsSVBTX1NjcmVlblNldHRpbmdEYXRhLElQU19TZWNJT1NlcnZpY2UsSVBTX1Nlc3Npb25Vc2luZ1BvcnQsSVBTX1NvbFNlc3Npb25Vc2luZ1BvcnQsSVBTX1RMU1Byb3Zpc2lvbmluZ1JlY29yZCxJUFNfV2F0Y2hEb2dBY3Rpb24iLnNwbGl0KCcsJyk7DQogICAgICAgIHZhciBkaXNjb25uZWN0dXJsID0gbnVsbDsNCiAgICAgICAgdmFyIGN1cnJlbnRWaWV3ID0gMDsNCiAgICAgICAgdmFyIExvYWRpbmdIdG1sID0gIjxkaXYgc3R5bGU9dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MjBweD5Mb2FkaW5nLi4uPGRpdj4iOw0KICAgICAgICB2YXIgYW10dmVyc2lvbiA9IDA7DQogICAgICAgIHZhciBhbXR2ZXJzaW9ubWluID0gMDsNCiAgICAgICAgdmFyIGFtdEZpcnN0UHVsbCA9IDA7IC8vIEJpdG1hc2ssIFNldCB0aGlzIHdoZW4gdGhlIGZpcnN0IHB1bGwgcmVxdWVzdCBpcyBtYWRlIG9uIGEgZGV2aWNlOiAxID0gSGFyZHdhcmVJbmZvLCAyID0gV2lyZWxlc3NJbmZvLCA0ID0gU3lzdGVtRGVmZW5zZSwgOCA9IFN0b3JhZ2UsIDE2ID0gRXZlbnRMb2csIDMyID0gQXVkaXRMb2cNCg0KICAgICAgICB2YXIgYW10d2lyZWxlc3NpZiA9IC0xOyAvLyBTZXQgdG8gdGhlIGludGVyZmFjZSBpbmRleCBmb3IgdGhlIHdpcmVsZXNzIGludGVyZmFjZSwgLTEgaWYgbm8gd2lyZWxlc3MuDQogICAgICAgIHZhciB3ZWJjb21waWxlcmZlYXR1cmVzID0gWydBZ2VudFByZXNlbmNlJywnQWxhcm1zJywnQXVkaXRMb2cnLCdDZXJ0aWZpY2F0ZXMnLCdDb21wdXRlclNlbGVjdG9yVG9vbGJhcicsJ0Rlc2t0b3AtU2V0dGluZ3MnLCdFdmVudExvZycsJ0ZpbGVTYXZlcicsJ0hhcmR3YXJlSW5mbycsJ0xvb2stQ29tbWFuZGVyJywnTW9kZS1MTVMnLCdOZXR3b3JrU2V0dGluZ3MnLCdSZW1vdGVBY2Nlc3MnLCdTY3JpcHRpbmcnLCdTY3JpcHRpbmctRWRpdG9yJywnU3RvcmFnZScsJ1N5c3RlbURlZmVuc2UnLCdVU0JTZXR1cCcsJ1dpcmVsZXNzJ107DQogICAgICAgIHZhciBTdGF0dXNTdHJzID0gWydEaXNjb25uZWN0ZWQnLCAnQ29ubmVjdGluZy4uLicsICdTZXR1cC4uLicsICdDb25uZWN0ZWQnXTsNCg0KICAgICAgICB2YXIgc2NyaXB0c3RhdGU7DQoNCiAgICAgICAgdmFyIHNldHVwYmluOw0KICAgICAgICB2YXIgc2VsZWN0ZWRSZWNvcmQgPSAwOw0KICAgICAgICB2YXIgc2VsZWN0ZWRWYXJpYWJsZSA9IDA7DQoNCiAgICAgICAgdmFyIGFtdFBvd2VyUG9sbFRpbWVyID0gbnVsbDsNCg0KICAgICAgICB2YXIgbG1zID0gbnVsbDsNCiAgICAgICAgdmFyIHQsIHQyLCByc2VwYXNzID0gbnVsbDsgLy8gR2xvYmFsIHRlbXBvcmFyeSB2YXJpYWJsZQ0KDQogICAgICAgIGZ1bmN0aW9uIHN0YXJ0dXAoKSB7DQogICAgICAgICAgICAvLyBUaGlzIGlzIGEgYml0IGZyZWVreSwgYnV0IGFsbCBIVE1MIGlucHV0IGVsZW1lbnRzIGFyZSBqdXN0IGdvaW5nIHRvIGJlIGFjY2Vzc2libGUgZGlyZWN0bHkuDQogICAgICAgICAgICB2YXIgYWxsZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsNCiAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBhbGxlbGVtZW50cy5sZW5ndGg7IHQrKykgeyBpZiAoYWxsZWxlbWVudHNbdF0uaWQpIHsgd2luZG93W2FsbGVsZW1lbnRzW3RdLmlkXSA9IGFsbGVsZW1lbnRzW3RdOyB9IH0NCg0KDQogICAgICAgICAgICB1cmx2YXJzID0gZ2V0VXJsVmFycygpOw0KDQoNCg0KICAgICAgICAgICAgLy8gU2V0dXAgTE1TDQogICAgICAgICAgICBsbXMgPSBDcmVhdGVMbXNDb250cm9sKCk7DQogICAgICAgICAgICBsbXMub25TdGF0ZUNoYW5nZWQgPSBsbXNDaGFuZ2VkU3RhdGU7DQogICAgICAgICAgICBsbXMub25EYXRhID0gbG1zT25EYXRhOw0KICAgICAgICAgICAgbG1zLlN0YXJ0KCk7DQogICAgICAgICAgICBRSCgnaWRfbG1zRGF0YScsIExvYWRpbmdIdG1sKTsNCiAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhJywgJycpOw0KICAgICAgICAgICAgUUgoJ2lkX2NvbXB1dGVybmFtZScsICdDb25maWd1cmF0aW9uIENvbnNvbGUgdicgKyB2ZXJzaW9uKTsNCiAgICAgICAgICAgIGdvKDEwMSk7DQogICAgICAgICAgICBsbXNSZWZyZXNoKCk7DQoNCg0KDQoNCiAgICAgICAgICAgIC8vIE1hc3RlciBkcmFnICYgZHJvcA0KICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBoYWx0RXZlbnQsIGZhbHNlKTsNCiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIGhhbHRFdmVudCwgZmFsc2UpOw0KICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIGRvY3VtZW50RmlsZVNlbGVjdEhhbmRsZXIsIGZhbHNlKTsNCg0KDQogICAgICAgICAgICAvLyBTZXR1cCBUZXJtaW5hbCBkcmFnICYgZHJvcA0KICAgICAgICAgICAgUSgncDE2JykuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBoYWx0RXZlbnQsIGZhbHNlKTsNCiAgICAgICAgICAgIFEoJ3AxNicpLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIGhhbHRFdmVudCwgZmFsc2UpOw0KICAgICAgICAgICAgUSgncDE2JykuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIGNlcnRfRmlsZVNlbGVjdEhhbmRsZXIsIGZhbHNlKTsNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQoNCiAgICAgICAgICAgIC8vIEFkZCBhbGwgcG9zc2libGUgdmFyaWFibGUgdHlwZXMgdG8gZGlhbG9nIDE2DQogICAgICAgICAgICB2YXIgb3B0aW9ucyA9ICcnOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBBbXRTZXR1cEJpblZhcklkcykgeyBmb3IgKHZhciBqIGluIEFtdFNldHVwQmluVmFySWRzW2ldKSB7IG9wdGlvbnMgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBpICsgIi0iICsgaiArICciPicgKyBBbXRTZXR1cEJpblZhcklkc1tpXVtqXVsxXSB9IH0NCiAgICAgICAgICAgIFFIKCdkMTZ0eXBlJywgb3B0aW9ucyk7DQoNCiAgICAgICAgICAgIGRvY3VtZW50Lm9ua2V5dXAgPSBoYW5kbGVLZXlVcDsNCiAgICAgICAgICAgIGRvY3VtZW50Lm9ua2V5ZG93biA9IGhhbmRsZUtleURvd247DQogICAgICAgICAgICBkb2N1bWVudC5vbmtleXByZXNzID0gaGFuZGxlS2V5UHJlc3M7DQogICAgICAgICAgICB3aW5kb3cub25yZXNpemUgPSBjZW50ZXI7DQogICAgICAgICAgICBjZW50ZXIoKTsNCg0KDQoNCg0KICAgICAgICAgICAgc2NyaXB0TG9hZFN0YXJ0aW5nQmxvY2tzKCk7DQoNCg0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRGaWxlU2VsZWN0SGFuZGxlcihlKSB7DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgICAgICBpZiAoZS5kYXRhVHJhbnNmZXIgPT0gbnVsbCB8fCBlLmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggIT0gMSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIGYgPSBudWxsLCBmaWxlbmFtZSA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLm5hbWUudG9Mb3dlckNhc2UoKTsNCg0KICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3ID09IDIxKSB7IFVwbG9hZFRvU3RvcmFnZShlLmRhdGFUcmFuc2Zlci5maWxlc1swXSwgZmlsZW5hbWUpOyByZXR1cm47IH0NCg0KICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3ID09IDEwMiAmJiBmaWxlbmFtZS5lbmRzV2l0aCgnLmJpbicpKSB7IGYgPSB1c2Jfb25TZXR1cEJpblJlYWQ7IH0NCg0KICAgICAgICAgICAgaWYgKHdzc3RhY2sgIT0gbnVsbCAmJiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5tZXNjcmlwdCcpIHx8IGZpbGVuYW1lLmVuZHNXaXRoKCcubWVibG9ja3MnKSkpIHsgZiA9IHNjcmlwdF9vblNjcmlwdFJlYWQ7IH0NCiAgICAgICAgICAgIGlmIChmICE9IG51bGwpIHsgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7IHJlYWRlci5vbmxvYWQgPSBmOyByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGUuZGF0YVRyYW5zZmVyLmZpbGVzWzBdKTsgfQ0KICAgICAgICB9DQoNCg0KDQoNCiAgICAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIExNUyBjb250cm9sIGNoYW5uZWwgY2hhbmdlcyBzdGF0ZQ0KICAgICAgICBmdW5jdGlvbiBsbXNDaGFuZ2VkU3RhdGUoc2VuZGVyLCBzdGF0ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiTE1TIENvbnRyb2wgQ2hhbm5lbCBTdGF0ZTogIiArIHN0YXRlKTsNCiAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKSB7IA0KICAgICAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgICAgICBRVignaWRfbG1zVG9vbEJhckNvbnRlbnQnLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgUUgoJ2lkX2xtc0RhdGEnLCAnPGRpdiBzdHlsZT10ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoyMHB4Pk1pY3JvTE1TIGRpc2Nvbm5lY3RlZC48ZGl2PicpOw0KICAgICAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhMicsICcnKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gMikgeyBRVignaWRfbG1zVG9vbEJhckNvbnRlbnQnLCB0cnVlKTsgbG1zUmVmcmVzaCgpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBsbXNMb2dpbigpIHsgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2F1dGhpbmRleC5odG1sJzsgfQ0KDQogICAgICAgIHZhciBsbXNQcm92aXNpb25pbmdTdGF0ZXMgPSBbJ1ByZS1Qcm92aXNpb25pbmcnLCAnSW4tUHJvdmlzaW9uaW5nJywgJ1Bvc3QtUHJvdmlzaW9uaW5nJ107DQogICAgICAgIHZhciBsbXNQcm92aXNpb25pbmdNb2RlcyA9IFsnTm9uZScsICdFbnRlcnByaXNlIE1vZGUnLCAnU21hbGwgQnVpc25lc3MgTW9kZScsICdSZW1vdGUgQXNzaXN0YW5jZSBNb2RlJ107DQogICAgICAgIHZhciBsbXNNZUluZm8gPSBudWxsOw0KICAgICAgICB2YXIgbG1zVGVtcCA9IG51bGw7DQogICAgICAgIHZhciBsbXNOb3RpZmljYXRpb25zID0gbnVsbDsNCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiBkYXRhIGlzIHJlY2VpdmVkIG9uIHRoZSBMTVMgY29udHJvbCBjaGFubmVsDQogICAgICAgIGZ1bmN0aW9uIGxtc09uRGF0YShzZW5kZXIsIGRhdGEpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBjbWRpZCA9IFJlYWRTaG9ydFgoZGF0YSwgMCk7DQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJMTVMgQ29udHJvbCBDaGFubmVsIERhdGE6ICIgKyBkYXRhICsgIiwgY21kaWQ6IiArIGNtZGlkKTsNCg0KICAgICAgICAgICAgc3dpdGNoICgrY21kaWQpIHsNCiAgICAgICAgICAgICAgICBjYXNlIDE6IHsgLy8gTUUgSW5mb3JtYXRpb24NCiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhkYXRhLnN1YnN0cmluZygyKSk7DQogICAgICAgICAgICAgICAgICAgIHZhciBtZWluZm8gPSBKU09OLnBhcnNlKGRhdGEuc3Vic3RyaW5nKDIpKTsNCiAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0xvZ2luQnV0dG9uJywgbWVpbmZvWydMb2dpbk1vZGUnXSA9PSAxKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBJZiBJbnRlbCBBTVQgaXMgaW4tYmV0d2VlbiBzdGF0ZXMsIHJlbG9hZCBkYXRhIGluIGEgZmV3IHNlY29uZHMuDQogICAgICAgICAgICAgICAgICAgIGlmICgobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10gIT0gbnVsbCkgJiYgKG1laW5mb1snUHJvdmlzaW9uaW5nTW9kZSddID09IC04NTg5OTM0NjApKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBRVignaWRfbG1zQ29uZmlndXJlQnV0dG9uJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0FjdGl2YXRlQnV0dG9uJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0RlYWN0aXZhdGVCdXR0b24nLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGxtc1JlZnJlc2gsIDEwMDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgbG1zTWVJbmZvID0gbWVpbmZvOw0KICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydQcm92aXNpb25pbmdTdGF0ZSddID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhJywgJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MjBweD5JbnRlbCZyZWc7IEFNVCBub3QgZm91bmQ8ZGl2PicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUUgoJ2lkX2xtc0RhdGEyJywgJycpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgbWVpbmZvWydGbGFncyddID0gK21laW5mb1snRmxhZ3MnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSAnPGgyPkN1cnJlbnQgU3RhdHVzPC9oMj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZVN0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydQcm92aXNpb25pbmdTdGF0ZSddICE9IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkFjdGl2YXRpb24gc3RhdGUiLCBsbXNQcm92aXNpb25pbmdTdGF0ZXNbbWVpbmZvWydQcm92aXNpb25pbmdTdGF0ZSddXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZWluZm9bJ0ZsYWdzJ10gJiAyKSB7IHggKz0gVGFibGVFbnRyeSgnQWN0aXZhdGlvbiBzdGF0ZScsICdBY3RpdmF0ZWQgaW4gQ2xpZW50IENvbnRyb2wgTW9kZScpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWVpbmZvWydGbGFncyddICYgNCkgeyB4ICs9IFRhYmxlRW50cnkoJ0FjdGl2YXRpb24gc3RhdGUnLCAnQWN0aXZhdGVkIGluIEFkbWluIENvbnRyb2wgTW9kZScpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IHggKz0gVGFibGVFbnRyeSgnQWN0aXZhdGlvbiBzdGF0ZScsICdBY3RpdmF0ZWQsICcgKyBsbXNQcm92aXNpb25pbmdNb2Rlc1ttZWluZm9bJ1Byb3Zpc2lvbmluZ01vZGUnXV0pOyB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoJ0ludGVsJnJlZzsgQU1UIHZlcnNpb24nLCBhZGRMaW5rKG1laW5mb1snVmVyc2lvbnMnXVsnQU1UJ10sICdsbXNTaG93VmVyc2lvbnNEbGcoKScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZWluZm9bJ01laVZlcnNpb24nXSAhPSBudWxsKSB7IHggKz0gVGFibGVFbnRyeSgnSW50ZWwmcmVnOyBNRUkgZHJpdmVyIHZlcnNpb24nLCBtZWluZm9bJ01laVZlcnNpb24nXSk7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbmQoKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1laW5mb1snUHJvdmlzaW9uaW5nU3RhdGUnXSAhPSAyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSAnPGgyPkFjdGl2YXRpb24gSW5mb3JtYXRpb248L2gyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZVN0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1laW5mb1snRG5zU3VmZml4J10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCdUcnVzdGVkIEROUyBzdWZmaXgnLCBtZWluZm9bJ0Ruc1N1ZmZpeCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoJ1RydXN0ZWQgRE5TIHN1ZmZpeCcsICc8aT5Ob3QgU2V0PC9pPicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10gIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10ubGVuZ3RoID09IDEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgnVHJ1c3RlZCBoYXNoZXMnLCBhZGRMaW5rKG1laW5mb1snVHJ1c3RlZEhhc2hlcyddLmxlbmd0aCArICcgaGFzaCcsICdsbXNTaG93VHJ1c3RlZEhhc2hlc0RsZygpJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCdUcnVzdGVkIGhhc2hlcycsIGFkZExpbmsobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10ubGVuZ3RoICsgJyBoYXNoZXMnLCAnbG1zU2hvd1RydXN0ZWRIYXNoZXNEbGcoKScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW5kKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhJywgeCk7DQogICAgICAgICAgICAgICAgICAgICAgICBRVignaWRfbG1zRGF0YTInLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxtc05vdGlmaWNhdGlvbnMgPSBtZWluZm9bJ05vdGlmaWNhdGlvbnMnXS5yZXZlcnNlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBsbXNSZWZyZXNoTm90aWZpY2F0aW9ucygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0NvbmZpZ3VyZUJ1dHRvbicsIChtZWluZm9bJ1Byb3Zpc2lvbmluZ1N0YXRlJ10gPT0gMikpOyAvLyBPbmx5IGRpc3BsYXkgdGhlICJMb2dpbi4uLiIgYnV0dG9uIGlmIEludGVsIEFNVCBpcyBpbiBwb3N0LXByb3Zpc2lvbmluZyBzdGF0ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgIFFWKCdpZF9sbXNBY3RpdmF0ZUJ1dHRvbicsIChtZWluZm9bJ1Byb3Zpc2lvbmluZ1N0YXRlJ10gPT0gMCkgJiYgKG1laW5mb1snTG9naW5Nb2RlJ10gPj0gMikpOyAvLyBPbmx5IGRpc3BsYXkgdGhlICJBY3RpdmF0ZS4uLiIgYnV0dG9uIGlmIEludGVsIEFNVCBpcyBpbiBwcmUtcHJvdmlzaW9uaW5nIHN0YXRlIGFuZCB3ZSBhcmUgYWRybWluaXN0cmF0b3IuDQogICAgICAgICAgICAgICAgICAgICAgICBRVignaWRfbG1zRGVhY3RpdmF0ZUJ1dHRvbicsIChtZWluZm9bJ1Byb3Zpc2lvbmluZ1N0YXRlJ10gPT0gMikgJiYgKG1laW5mb1snRmxhZ3MnXSAmIDIpICYmIChtZWluZm9bJ0xvZ2luTW9kZSddID49IDIpKTsgLy8gT25seSBkaXNwbGF5IHRoZSAiRGVhY3RpdmF0ZS4uLiIgYnV0dG9uIGlmIEludGVsIEFNVCBpcyBpbiBwb3J0LXByb3Zpc2lvbmluZyBzdGF0ZSAmIGluIGNsaWVudCBjb250cm9sIG1vZGUgJiB3ZSBhcmUgYWRybWluaXN0cmF0b3IuDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgMjogeyAvLyBJbnRlbCBNRSBVbi1Qcm92aXNpb25pbmcNCiAgICAgICAgICAgICAgICAgICAgbG1zRGVhY3RpdmF0ZVgyKFJlYWRJbnRYKGRhdGEsIDIpKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgMzogeyAvLyBJbnRlbCBNRSBTeXN0ZW0gQWNjb3VudCBJbmZvcm1hdGlvbg0KICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gUmVhZEludFgoZGF0YSwgMik7DQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgQWN0aXZhdGlvbicsICdGYWlsZWQgdG8gZ2V0IGFjY291bnQgaW5mb3JtYXRpb24sIHN0YXR1cyAnICsgc3RhdHVzKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtZXVzZXIgPSBkYXRhLnN1YnN0cmluZyg2LCBkYXRhLmluZGV4T2YoJ1wwJywgNikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1lcGFzcyA9IGRhdGEuc3Vic3RyaW5nKDM5LCBkYXRhLmluZGV4T2YoJ1wwJywgMzkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgJ0ZldGNoaW5nIGFjdGl2YXRpb24gc3RhdHVzLi4uJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB3c3N0YWNrID0gV3NtYW5TdGFja0NyZWF0ZVNlcnZpY2UoImxvY2FsaG9zdCIsIDE2OTkyLCBtZXVzZXIsIG1lcGFzcywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYW10c3RhY2sgPSBBbXRTdGFja0NyZWF0ZVNlcnZpY2Uod3NzdGFjayk7DQogICAgICAgICAgICAgICAgICAgICAgICBhbXRzdGFjay5vblByb2Nlc3NDaGFuZ2VkID0gb25Qcm9jZXNzQ2hhbmdlZDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLkJhdGNoRW51bShudWxsLCBbJypBTVRfR2VuZXJhbFNldHRpbmdzJywgJypJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlJ10sIGxtc0FjdGl2YXRpb25YMSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgOTogeyAvLyBOZXcgbm90aWZpY2F0aW9uDQogICAgICAgICAgICAgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBKU09OLnBhcnNlKGRhdGEuc3Vic3RyaW5nKDIpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGxtc05vdGlmaWNhdGlvbnMgPT0gbnVsbCkgeyBsbXNOb3RpZmljYXRpb25zID0gW107IH0NCiAgICAgICAgICAgICAgICAgICAgbG1zTm90aWZpY2F0aW9ucy51bnNoaWZ0KG5vdGlmaWNhdGlvbik7DQogICAgICAgICAgICAgICAgICAgIGxtc1JlZnJlc2hOb3RpZmljYXRpb25zKCk7DQogICAgICAgICAgICAgICAgICAgIGlmICgobm90aWZpY2F0aW9uLmNvZGUgPT0gJ2lBTVQwMDU1LTAnKSB8fCAobm90aWZpY2F0aW9uLmNvZGUgPT0gJ2lBTVQwMDU1LTEnKSB8fCAobm90aWZpY2F0aW9uLmNvZGUgPT0gJ2lBTVQwMDU1LTInKSkgeyBzZXREaWFsb2dNb2RlKCk7IGxtc1JlZnJlc2goKTsgfQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBsbXNSZWZyZXNoTm90aWZpY2F0aW9ucygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gJzxoMj5Ob3RpZmljYXRpb25zPC9oMj4nICsgVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgaWYgKGxtc05vdGlmaWNhdGlvbnMgJiYgbG1zTm90aWZpY2F0aW9ucy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBsbXNOb3RpZmljYXRpb25zKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBuID0gbG1zTm90aWZpY2F0aW9uc1tpXSwgdiA9IG4uc3RyOw0KICAgICAgICAgICAgICAgICAgICBpZiAobi5jb2RlICE9ICdpQU1UMDA1MC0zMicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LmluZGV4T2YoJ1VzZXIgTm90aWZpY2F0aW9uIEFsZXJ0IC0gJykgPT0gMCkgeyB2ID0gdi5zdWJzdHJpbmcoMjYpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkobmV3IERhdGUobi5kYXRlKS50b0xvY2FsZVN0cmluZygpLCB2KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgeCArPSAiPHRyPjx0ZCBzdHlsZT1wYWRkaW5nOjhweD48aT5ObyBub3RpZmljYXRpb25zIGZvdW5kLjwvaT48dGQ+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoKTsNCiAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhMicsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbG1zQWN0aXZhdGlvblgxKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdJbnRlbCZyZWc7IEFNVCBBY3RpdmF0aW9uJywgJ0ZhaWxlZCB0byBmZXRjaCBhY3RpdmF0aW9uIHN0YXR1cywgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZXNbJ0lQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2UnXS5yZXNwb25zZVsnQWxsb3dlZENvbnRyb2xNb2RlcyddLmxlbmd0aCAhPSAyKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgQWN0aXZhdGlvbicsICdDbGllbnQgY29udHJvbCBtb2RlIGFjdGl2YXRpb24gbm90IGFsbG93ZWQnKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgbG1zVGVtcCA9IHJlc3BvbnNlc1snQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlOw0KICAgICAgICAgICAgICAgIGFtdHN0YWNrLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfU2V0dXAoMiwgcnN0cjJoZXgocnN0cl9tZDUoJ2FkbWluOicgKyByZXNwb25zZXNbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsnRGlnZXN0UmVhbG0nXSArICc6JyArIGQ0cGFzc3dvcmQudmFsdWUpKSwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbG1zQWN0aXZhdGlvblgyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGxtc0FjdGl2YXRpb25YMihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDAgfHwgcmVzcG9uc2UuQm9keVsnUmV0dXJuVmFsdWUnXSAhPSAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgQWN0aXZhdGlvbicsICdGYWlsZWQgYWN0aXZhdGlvbiwgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBzZXREaWFsb2dNb2RlKCk7DQogICAgICAgICAgICAgICAgbG1zUmVmcmVzaCgpOw0KICAgICAgICAgICAgICAgIGxtc1RlbXBbJ0hvc3ROYW1lJ10gPSBsbXNNZUluZm9bJ09zSG9zdG5hbWUnXTsgLy8gU2V0IHRoZSBPUyBob3N0bmFtZQ0KICAgICAgICAgICAgICAgIC8vIFRPRE86IEFsc28gc2V0IHRoZSBsb2NhbCBGUUROIGlmIHdlIGNhbiBnZXQgaXQgZnJvbSBMTVMNCiAgICAgICAgICAgICAgICB3c3N0YWNrID0gV3NtYW5TdGFja0NyZWF0ZVNlcnZpY2UoJ2xvY2FsaG9zdCcsIDE2OTkyLCAnYWRtaW4nLCBkNHBhc3N3b3JkLnZhbHVlLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgYW10c3RhY2sgPSBBbXRTdGFja0NyZWF0ZVNlcnZpY2Uod3NzdGFjayk7DQogICAgICAgICAgICAgICAgYW10c3RhY2sub25Qcm9jZXNzQ2hhbmdlZCA9IG9uUHJvY2Vzc0NoYW5nZWQ7DQogICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfR2VuZXJhbFNldHRpbmdzJywgbG1zVGVtcCwgZnVuY3Rpb24oKSB7IH0sIDAsIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbG1zRGVhY3RpdmF0ZSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgbG1zLlN0YXRlICE9IDIpIHJldHVybjsNCiAgICAgICAgICAgIFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgJ0NvbmZpcm0gSW50ZWwmcmVnOyBBTVQgZGVhY3RpdmF0aW9uPycpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxLCAiSW50ZWwmcmVnOyBBTVQgRGVhY3RpdmF0aW9uIiwgMywgbG1zRGVhY3RpdmF0ZVgxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGxtc0RlYWN0aXZhdGVYMSgpIHsNCiAgICAgICAgICAgIHN0YXR1c2JveCgnSW50ZWwmcmVnOyBBTVQgRGVhY3RpdmF0aW9uJywgJ0RlYWN0aXZhdGluZyBJbnRlbCZyZWc7IEFNVC4uLicpDQogICAgICAgICAgICBsbXMuU2VuZENtZCgyLCBJbnRUb1N0clgoMSkpOyAvLyBTZW5kIHJlcXVlc3QgZm9yIGRlYWN0aXZhdGlvbg0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbG1zRGVhY3RpdmF0ZVgyKHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgRGVhY3RpdmF0aW9uJywgJ0ZhaWxlZCBkZWFjdGl2YXRpb24sIHN0YXR1cyAnICsgc3RhdHVzKQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBRSCgnaWRfbG1zRGF0YScsICdQbGVhc2Ugd2FpdCBmb3IgZGVhY3RpdmF0aW9uLi4uJyk7DQogICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0RhdGEyJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgICAgICBsbXNSZWZyZXNoKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBSZWZyZXNoIGJ1dHRvbiBvbiB0aGUgVUkNCiAgICAgICAgZnVuY3Rpb24gbG1zUmVmcmVzaCgpIHsNCiAgICAgICAgICAgIGlmIChsbXMuU3RhdGUgIT0gMikgcmV0dXJuOw0KICAgICAgICAgICAgbG1zLlNlbmRDbWQoMSwgIiIpOyAvLyBTZW5kIHRoZSByZXF1ZXN0IGJhc2ljIGluZm9ybWF0aW9uIGNvbW1hbmQNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENvbmZpZ3VyZSBidXR0b24gb24gdGhlIFVJDQogICAgICAgIGZ1bmN0aW9uIGxtc0NvbmZpZ3VyZSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoNCwgJ0ludGVsJnJlZzsgQU1UIExvZ2luJywgMywgZnVuY3Rpb24gKCkgeyBsbXNDb25maWd1cmVMb2dpbigpOyB9KTsNCiAgICAgICAgICAgIC8vZDR1c2VybmFtZS5yZWFkT25seSA9IGZhbHNlOw0KICAgICAgICAgICAgZDR1c2VybmFtZS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKGQ0dXNlcm5hbWUudmFsdWUgPT0gJ2FkbWluJykgZDR1c2VybmFtZS52YWx1ZSA9ICcnOw0KICAgICAgICAgICAgaW5wdXRCb3hGb2N1cygnZDR1c2VybmFtZScpOw0KICAgICAgICAgICAgbG1zVXBkYXRlTG9naW5EaWFsb2coKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSB1c2VyIGhpdHMgT0sgb24gdGhlIGxvZ2luIGRpYWxvZw0KICAgICAgICBmdW5jdGlvbiBsbXNDb25maWd1cmVMb2dpbigpIHsNCiAgICAgICAgICAgIHZhciB1c2VyID0gZDR1c2VybmFtZS52YWx1ZTsNCiAgICAgICAgICAgIGlmICh1c2VyID09ICcnKSB1c2VyID0gJ2FkbWluJzsNCiAgICAgICAgICAgIGNvbm5lY3QoJ2xvY2FsaG9zdCcsIDE2OTkyLCB1c2VyLCBkNHBhc3N3b3JkLnZhbHVlLCAwKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEFjdGl2YXRlIGJ1dHRvbiBvbiB0aGUgVUkNCiAgICAgICAgZnVuY3Rpb24gbG1zQWN0aXZhdGUoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlfHwgbG1zLlN0YXRlICE9IDIpIHJldHVybjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoNCwgJ0ludGVsJnJlZzsgQU1UIEFjdGl2YXRpb24nLCAzLCBmdW5jdGlvbiAoKSB7IGxtc0FjdGl2YXRlRXgoKTsgfSk7DQogICAgICAgICAgICAvL2Q0dXNlcm5hbWUucmVhZE9ubHkgPSB0cnVlOw0KICAgICAgICAgICAgZDR1c2VybmFtZS5kaXNhYmxlZCA9IHRydWU7DQogICAgICAgICAgICBkNHVzZXJuYW1lLnZhbHVlID0gJ2FkbWluJzsNCiAgICAgICAgICAgIGlucHV0Qm94Rm9jdXMoJ2Q0cGFzc3dvcmQnKTsNCiAgICAgICAgICAgIGxtc1VwZGF0ZUxvZ2luRGlhbG9nKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBHbyBoZWFkIHdpdGggSW50ZWwgQU1UIGNsaWVudCBjb250cm9sIG1vZGUgYWN0aXZhdGlvbg0KICAgICAgICBmdW5jdGlvbiBsbXNBY3RpdmF0ZUV4KCkNCiAgICAgICAgew0KICAgICAgICAgICAgbG1zLlNlbmRDbWQoMyk7IC8vIFNlbmQgcmVxdWVzdCBmb3IgYWNjb3VudCBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgc3RhdHVzYm94KCdJbnRlbCZyZWc7IEFNVCBBY3RpdmF0aW9uJywgJ0ZldGNoaW5nIEFjY291bnQgSW5mb3JtYXRpb24uLi4nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCBlYWNoIHRpbWUgc29tZXRoaW5nIGNoYW5nZXMgaW4gdGhlIGxvZ2luIGRpYWxvZw0KICAgICAgICBmdW5jdGlvbiBsbXNVcGRhdGVMb2dpbkRpYWxvZyhlLCBkKSB7DQogICAgICAgICAgICB2YXIgb2sgPSBwYXNzd29yZGNoZWNrKGQ0cGFzc3dvcmQudmFsdWUpOw0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgICAgIGlmIChlICE9IG51bGwgJiYgZS5rZXlDb2RlID09IDEzICYmIGQgPT0gMSkgaW5wdXRCb3hGb2N1cygnZDRwYXNzd29yZCcpOw0KICAgICAgICAgICAgaWYgKG9rID09IHRydWUgJiYgZSAhPSBudWxsICYmIGUua2V5Q29kZSA9PSAxMyAmJiBkID09IDIpIGRpYWxvZ2Nsb3NlKDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGxtc0hhc2hBcmdTdHJpbmdzID0gWyJNRDUiLCAiU0hBMSIsICJTSEEyNTYiLCAiU0hBNTEyIl07DQogICAgICAgIGZ1bmN0aW9uIGxtc1Nob3dUcnVzdGVkSGFzaGVzRGxnKCkgew0KICAgICAgICAgICAgLy8ge1wiQUNcIjolZCxcIkRGXCI6JWQsXCJBTFwiOiVkLFwiTkFcIjpcIiVzXCIsXCJIQVwiOlwiJXNcIn0iDQoNCiAgICAgICAgICAgIHZhciB4ID0gIjxkaXYgc3R5bGU9bWF4LWhlaWdodDoyNDBweDtvdmVyZmxvdy15OnNjcm9sbD4iICsgVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBsbXNNZUluZm9bJ1RydXN0ZWRIYXNoZXMnXSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvL3ggKz0gIjxiPiIgKyBsbXNNZUluZm9bJ1RydXN0ZWRIYXNoZXMnXVtpXVsnTmFtZSddICsgIjwvYj48YnI+PHNwYW4gc3R5bGU9Zm9udC1zaXplOjEwcHg+IiArIGxtc0hhc2hBcmdTdHJpbmdzW2xtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydIYXNoQWxnb3JpdGhtJ11dICsgKGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydBY3RpdmUnXSA9PSAxPyIsIEFjdGl2ZSI6IiIpICsgKGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydEZWZhdWx0J10gPT0gMT8iLCBEZWZhdWx0IjoiIikgKyAiPC9zcGFuPjxicj48c3BhbiBzdHlsZT1mb250LXNpemU6MTBweD4iICsgbG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0hhc2gnXSArICI8L3NwYW4+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiPGI+IiArIGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydOYW1lJ10gKyAiPC9iPjxicj48c3BhbiBzdHlsZT1mb250LXNpemU6MTBweD4iICsgbG1zSGFzaEFyZ1N0cmluZ3NbbG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0hhc2hBbGdvcml0aG0nXV0gKyAobG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0FjdGl2ZSddID09IDE/IiwgQWN0aXZlIjoiIikgKyAobG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0RlZmF1bHQnXSA9PSAxPyIsIERlZmF1bHQiOiIiKSArICI8L3NwYW4+PGJyPjxzcGFuIHN0eWxlPWZvbnQtc2l6ZTo4cHg+IiArIGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydIYXNoJ10gKyAiPC9zcGFuPiIsICIiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoKSArICI8L2Rpdj4iOw0KICAgICAgICAgICAgbWVzc2FnZWJveCgiSW50ZWwmcmVnOyBBTVQgVHJ1c3RlZCBIYXNoZXMiLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGxtc1Nob3dWZXJzaW9uc0RsZygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJbnRlbCZyZWc7IEFNVCIsIGxtc01lSW5mb1snVmVyc2lvbnMnXVsnQU1UJ10pOw0KICAgICAgICAgICAgaWYgKGxtc01lSW5mb1snTWVpVmVyc2lvbiddICE9IG51bGwpIHsgeCArPSBUYWJsZUVudHJ5KCJJbnRlbCZyZWc7IE1FSSBkcml2ZXIiLCBsbXNNZUluZm9bJ01laVZlcnNpb24nXSk7IH0NCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gbG1zTWVJbmZvWydWZXJzaW9ucyddKSB7IGlmIChpICE9ICdBTVQnKSB4ICs9IFRhYmxlRW50cnkoaSwgbG1zTWVJbmZvWydWZXJzaW9ucyddW2ldKTsgfQ0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgbWVzc2FnZWJveCgiSW50ZWwmcmVnOyBBTVQgVmVyc2lvbnMiLCB4KTsNCiAgICAgICAgfQ0KDQoNCg0KICAgICAgICBmdW5jdGlvbiBjbGVhbnVwKCkgew0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKSB7DQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdoYW5kbGVLZXlEb3duJywgZSk7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBoYW5kbGVLZXlQcmVzcyhlKSB7DQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdoYW5kbGVLZXlQcmVzcycsIGUpOw0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGNvbm5lY3RGdW5jID0gbnVsbDsNCiAgICAgICAgdmFyIGNvbm5lY3RGdW5jVGFnID0gbnVsbDsNCiAgICAgICAgZnVuY3Rpb24gY29ubmVjdChob3N0LCBwb3J0LCB1c2VyLCBwYXNzLCB0bHMsIGZ1bmMsIGZ1bmN0YWcpIHsNCiAgICAgICAgICAgIGdvKDApOw0KICAgICAgICAgICAgZnVsbHNjcmVlbm9ubHkgPSBmYWxzZTsNCiAgICAgICAgICAgIGNvbm5lY3RGdW5jID0gZnVuYzsNCiAgICAgICAgICAgIGNvbm5lY3RGdW5jVGFnID0gZnVuY3RhZzsNCg0KDQoNCiAgICAgICAgICAgIHdzc3RhY2sgPSBXc21hblN0YWNrQ3JlYXRlU2VydmljZShob3N0LCBwb3J0LCB1c2VyLCBwYXNzLCB0bHMpOw0KICAgICAgICAgICAgYW10c3RhY2sgPSBBbXRTdGFja0NyZWF0ZVNlcnZpY2Uod3NzdGFjayk7DQogICAgICAgICAgICBhbXRzdGFjay5vblByb2Nlc3NDaGFuZ2VkID0gb25Qcm9jZXNzQ2hhbmdlZDsNCg0KICAgICAgICAgICAgLy8gU2V0dXAgVExTIGNoZWNraW5nDQoNCiAgICAgICAgICAgIC8vIEhpZGUgVExTIGluZGljYXRvcg0KDQogICAgICAgICAgICAvLyBIaWRlIG1vc3Qgb2YgdGhlIGxlZnQgbWVudSBvcHRpb25zLCB3ZSB3aWxsIHNlZSB0aGVtIGFzIHdlIGxvYWQgZGF0YQ0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCAyNTsgaSsrKSB7IFFWKCdnbycgKyBpLCBmYWxzZSk7IH0NCiAgICAgICAgICAgIFFWKCdnbzgnLCB0cnVlKTsgLy8gTmV0d29yayBTZXR0aW5ncw0KICAgICAgICAgICAgLy9RVignZ28xNScsIGZhbHNlKTsgLy8gQXVkaXQgTG9nDQoNCiAgICAgICAgICAgIC8vUVYoJ2dvMTYnLCBmYWxzZSk7IC8vIFNlY3VyaXR5IFNldHRpbmdzDQoNCiAgICAgICAgICAgIC8vUVYoJ2dvMTcnLCBmYWxzZSk7IC8vIFJlbW90ZSBBY2Nlc3MNCg0KICAgICAgICAgICAgUVYoJ2dvMjAnLCB0cnVlKTsgLy8gU2NyaXB0aW5nIEVkaXRvcg0KDQoNCg0KICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGRpc3BsYXllZCBwb3dlciBzdGF0ZQ0KDQogICAgICAgICAgICAvLyBDbGVhciBldmVyeXRoaW5nLCBtYWtlIHN1cmUgYWxsIGNvbm5lY3Rpb24gc3RhdGUgaXMgcmVzZXQuDQogICAgICAgICAgICBhbXR2ZXJzaW9uID0gYW10dmVyc2lvbm1pbiA9IGFtdEZpcnN0UHVsbCA9IDA7DQogICAgICAgICAgICBhbXRzeXNzdGF0ZSA9IGFtdGRlbHRhdGltZSA9IGFtdGxvZ2ljYWxlbGVtZW50cyA9IEhhcmR3YXJlSW52ZW50b3J5ID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgYW10UG93ZXJCb290Q2FwYWJpbGl0aWVzID0gbnVsbDsNCiAgICAgICAgICAgIHh4QWNjb3VudEZldGNoID0gOTk5Ow0KDQogICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcgb24gYWxsIHBhbmVscw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzU3RhdHVzJywgTG9hZGluZ0h0bWwpOw0KDQogICAgICAgICAgICBRSCgnaWRfVGFibGVOZXR3b3JrU2V0dGluZ3NTcGFuJywgTG9hZGluZ0h0bWwpOw0KICAgICAgICAgICAgYW10d2lyZWxlc3NpZiA9IC0xOw0KDQogICAgICAgICAgICB4eFdpcmVsZXNzID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlV2lmaTInLCAnJyk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c0luZm8nLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIHh4QWNjb3VudEFkbWluTmFtZSA9IG51bGw7DQogICAgICAgICAgICB4eEFjY291bnRSZWFsbUluZm8gPSB7fTsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVVzZXJBY2NvdW50cycsIExvYWRpbmdIdG1sKTsNCg0KICAgICAgICAgICAgZXZlbnRtZXNzYWdlcyA9IG51bGw7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVFdmVudExvZycsJycpOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlRXZlbnRMb2cyJyxMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIGF1ZGl0TG9nID0gbnVsbDsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZUF1ZGl0TG9nMScsICcnKTsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZUF1ZGl0TG9nMicsIExvYWRpbmdIdG1sKTsNCg0KICAgICAgICAgICAgeHhDZXJ0aWZpY2F0ZXMgPSBudWxsOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlQ2VydHMnLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIHh4UmVtb3RlQWNjZXNzID0gbnVsbDsNCiAgICAgICAgICAgIHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID0gbnVsbDsNCiAgICAgICAgICAgIHh4Q2lyYVNlcnZlcnMgPSBudWxsOw0KICAgICAgICAgICAgeHhVc2VySW5pdGlhdGVkQ2lyYSA9IG51bGw7DQogICAgICAgICAgICB4eFJlbW90ZUFjY2Vzc0NyZWRlbnRpYUxpbmtzID0gbnVsbDsNCiAgICAgICAgICAgIHh4TVBTVXNlclBhc3MgPSBudWxsOw0KICAgICAgICAgICAgeHhQb2xpY2llcyA9IG51bGw7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVSZW1vdGVBY2Nlc3MnLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c3RlbUFnZW50UHJlc2VuY2UnLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIHh4U3lzdGVtRGVmZW5zZSA9IG51bGw7DQogICAgICAgICAgICB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3kgPSB7fTsNCiAgICAgICAgICAgIHh4VXBkYXRpbmdEZWZlbnNlU3RhdHMgPSBmYWxzZTsNCiAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljcyA9IFt7fSwge31dOyAvLyBXaXJlZCBhbmQgd2lyZWxlc3MgaW50ZXJmYWNlIHN0YXRzDQogICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lciA9IG51bGw7DQogICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzdGVtRGVmZW5zZScsIExvYWRpbmdIdG1sKTsNCg0KDQogICAgICAgICAgICAvLyBTdGFydCBwdWxsaW5nIEludGVsIEFNVCBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKCIiLCBbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5IiwgIipBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSJdLCBwcm9jZXNzU3lzdGVtVmVyc2lvbik7IC8vIEdldCBJbnRlbCBBTVQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgcGxlbnR5IG1vcmUNCiAgICAgICAgICAgIC8vYW10c3RhY2suRW51bSgiQ0lNX0xvZ2ljYWxFbGVtZW50IiwgcHJvY2Vzc1N5c3RlbVZlcnNpb24pOyAvLyBHZXQgSW50ZWwgQU1UIHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIHBsZW50eSBtb3JlDQoNCg0KDQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBkaXNjb25uZWN0KCkgew0KDQoNCg0KDQoNCg0KICAgICAgICAgICAgU3RvcERlZmVuc2VTdGF0c1RpbWVyKCk7DQoNCg0KICAgICAgICAgICAgc2NyaXB0X1N0b3AoKTsNCg0KICAgICAgICAgICAgYnJlYWtTY3JpcHRCdXR0b24oKTsNCg0KICAgICAgICAgICAgZGlhbG9nY2xvc2UoMCk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9jb21wdXRlcm5hbWUnLCAnJyk7DQogICAgICAgICAgICBpZiAoYW10c3RhY2spIHsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5vblByb2Nlc3NDaGFuZ2VkID0gbnVsbDsgLy8gVW4taG9vayBwcm9ncmVzcyBpbmRpY2F0b3INCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DYW5jZWxBbGxRdWVyaWVzKDk5OSk7IC8vIEZhaWwgYWxsIHBlbmRpbmcgV1NNQU4gY2FsbHMuIFNldCB0byA5OTkgdG8gaW5kaWNhdGUgbm90IHRvIGNhbGwgYmFjayBhbnkgb2YgdGhlIHBlbmRpbmcgY2FsbHMgd2l0aCBlcnJvcnMuDQogICAgICAgICAgICAgICAgYW10c3RhY2sgPSBudWxsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2xlYW51cCgpOw0KICAgICAgICAgICAgd3NzdGFjayA9IG51bGw7DQogICAgICAgICAgICBkZWxldGUgYW10c3RhY2s7DQogICAgICAgICAgICBvblByb2Nlc3NDaGFuZ2VkKDAsIDEpOw0KICAgICAgICAgICAgZ28oMTAxKTsNCg0KDQoNCiAgICAgICAgICAgIFFIKCdpZF9jb21wdXRlcm5hbWUnLCAnUmVtb3RlIE1hbmFnZW1lbnQgQ29uc29sZSB2JyArIHZlcnNpb24pOw0KICAgICAgICAgICAgDQoNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIG9uUHJvY2Vzc0NoYW5nZWQoYSwgYikgew0KICAgICAgICAgICAgUVMoJ2lkX3Byb2dyZXNzYmFyJykud2lkdGggPSAoKGEgKiAxMDApIC8gYikgKyAiJSI7DQogICAgICAgICAgICBpZiAoYSA9PSAwKSByZWZyZXNoQnV0dG9ucyh0cnVlKTsgLy8gSWYgbm90aGluZyBpcyBiZWluZyBkb25lLCByZS1lbmFibGUgcmVmcmVzaCBidXR0b25zDQoNCg0KICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm90aGluZyBiZWluZyBkb25lIG5vdywgc2VlIGlmIHdlIGNhbiBwdWxsIG1vcmUgaW5mb3JtYXRpb24NCiAgICAgICAgICAgIGlmIChhICE9IDAgfHwgIWFtdHN0YWNrKSByZXR1cm47DQogICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiAwKSAmJiAoKGFtdEZpcnN0UHVsbCAmIDY0KSA9PSAwKSkgew0KICAgICAgICAgICAgICAgIGFtdEZpcnN0UHVsbCB8PSA2NDsNCiAgICAgICAgICAgICAgICBQdWxsUG93ZXJQb2xpY3koKTsNCg0KICAgICAgICAgICAgICAgIFB1bGxXYXRjaGRvZygpOw0KDQoNCiAgICAgICAgICAgICAgICBzY3JpcHRWaWV3QnV0dG9uKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrcz8xOjApOw0KDQogICAgICAgICAgICAgICAgaWYgKGFtdHZlcnNpb24gPiA1KSB7DQoNCiAgICAgICAgICAgICAgICAgICAgUHVsbENlcnRpZmljYXRlcygpOw0KDQogICAgICAgICAgICAgICAgICAgIFB1bGxSZW1vdGVBY2Nlc3MoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoKGFtdEZpcnN0UHVsbCAmIDEpID09IDApIHsgUHVsbEhhcmR3YXJlKCk7IHJldHVybjsgfQ0KDQogICAgICAgICAgICBpZiAoKGFtdEZpcnN0UHVsbCAmIDE2KSA9PSAwKSB7IFB1bGxFdmVudExvZygpOyByZXR1cm47IH0NCg0KICAgICAgICAgICAgaWYgKChhbXRGaXJzdFB1bGwgJiAzMikgPT0gMCkgeyBQdWxsQXVkaXRMb2coKTsgcmV0dXJuOyB9DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIHRvb2xtZW51Y2xpY2soeCkgew0KICAgICAgICAgICAgUVYoJ2lkX21lbnVpdGVtMScsIGN1cnJlbnRWaWV3ID09IDEwMSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF9tZW51aXRlbTInLCBjdXJyZW50VmlldyA9PSAxMDIpOw0KDQogICAgICAgICAgICB2YXIgZCA9IChRUygnaWRfY29tcHV0ZXJTZWxlY3Rvck1lbnUnKS5kaXNwbGF5ID09ICdub25lJyk7DQogICAgICAgICAgICBpZiAoZCA9PSB0cnVlICYmIHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgeHhkaWFsb2dNb2RlID0gKGQgPT0gdHJ1ZSk/OTk5OnVuZGVmaW5lZDsNCiAgICAgICAgICAgIFFWKCdpZF9jb21wdXRlclNlbGVjdG9yTWVudScsIGQpOw0KICAgICAgICAgICAgaWYgKHggPT0gMCkgcmV0dXJuOw0KICAgICAgICAgICAgZ28oeCk7DQogICAgICAgIH0NCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gQk9UVE9NIElORk9STUFUSU9OIFNUUklORw0KICAgICAgICAvLw0KDQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1N5c3RlbVZlcnNpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCB8fCBzdGF0dXMgPT0gNDAwKSB7DQogICAgICAgICAgICAgICAgdmFyIHY7DQogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy9hbXRsb2dpY2FsZWxlbWVudHMgPSByZXNwb25zZXM7DQogICAgICAgICAgICAgICAgICAgIGFtdGxvZ2ljYWxlbGVtZW50cyA9IFtdOw0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VzICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZXNbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5Il0gIT0gbnVsbCAmJiByZXNwb25zZXNbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5Il0ucmVzcG9uc2VzICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXRsb2dpY2FsZWxlbWVudHMgPSByZXNwb25zZXNbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5Il0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZXNbIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIl0gIT0gbnVsbCAmJiByZXNwb25zZXNbIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIl0ucmVzcG9uc2UgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXRsb2dpY2FsZWxlbWVudHMucHVzaChyZXNwb25zZXNbIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIl0ucmVzcG9uc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoYW10bG9naWNhbGVsZW1lbnRzLmxlbmd0aCA9PSAwKSB7IGNvbnNvbGUuZXJyb3IoJ0VSUk9SOiBDb3VsZCBub3QgZ2V0IEludGVsIEFNVCB2ZXJzaW9uLicpOyBkaXNjb25uZWN0KCk7IHJldHVybjsgfSAvLyBDb3VsZCBub3QgZ2V0IEludGVsIEFNVCB2ZXJzaW9uLCBkaXNjb25uZWN0KCk7DQogICAgICAgICAgICAgICAgICAgIHYgPSBnZXRJbnN0YW5jZShhbXRsb2dpY2FsZWxlbWVudHMsICJBTVQiKVsiVmVyc2lvblN0cmluZyJdOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHYgPSBzdGFjay53c21hbi5jb21tLmFtdFZlcnNpb247DQogICAgICAgICAgICAgICAgICAgIGlmICghdikgeyBlcnJjaGVjayg0MDAsIHN0YWNrKTsgcmV0dXJuOyB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGFtdHZlcnNpb24gPSBwYXJzZUludCh2LnNwbGl0KCcuJylbMF0pOw0KICAgICAgICAgICAgICAgIGFtdHZlcnNpb25taW4gPSBwYXJzZUludCh2LnNwbGl0KCcuJylbMV0pOw0KDQoNCiAgICAgICAgICAgICAgICAvL2lmIChhbXR2ZXJzaW9uID4gMTApIHsgd3NzdGFjay5jb21tLk1heEFjdGl2ZUFqYXhDb3VudCA9IDQ7IGFtdHN0YWNrLk1heEFjdGl2ZUVudW1zQ291bnQgPSAxOyBjb25zb2xlLmxvZygnSFRUUCBQaXBlbGluaW5nIGFjdGl2YXRlZCcpOyB9IC8vIFdpdGggSW50ZWwgQU1UIDExIGFuZCBoaWdoZXIsIHVzZSBIVFRQIHBpcGVsaW5pbmcuDQoNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtU3RhdHVzKCk7DQogICAgICAgICAgICAgICAgdXBkYXRlU3lzdGVtU3RhdHVzKCk7DQoNCiAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIGxvYWRzIG1vcmUgV1NNQU4gb25seSBpZiBuZWVkZWQNCiAgICAgICAgICAgICAgICBpZiAoKHVybHZhcnNbJ2t2bW9ubHknXSAhPSAxKSAmJiAoZnVsbHNjcmVlbm9ubHkgPT0gZmFsc2UpKSB7DQogICAgICAgICAgICAgICAgICAgIFB1bGxVc2VySW5mbygpOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGFtdHZlcnNpb24gPj0gOCkgUHVsbEFsYXJtcygpOw0KICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgLy8gQ29ubmVjdGlvbiBjYWxsYmFjaw0KICAgICAgICAgICAgICAgIGlmIChjb25uZWN0RnVuYykgeyBjb25uZWN0RnVuYyhjb25uZWN0RnVuY1RhZyk7IGNvbm5lY3RGdW5jID0gbnVsbDsgY29ubmVjdEZ1bmNUYWcgPSBudWxsOyB9DQoNCg0KDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVycmNoZWNrKHN0YXR1cywgc3RhY2spOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ29udHJvbCB0aGUgc3RhdGUgb2YgYWxsIHJlZnJlc2ggYnV0dG9ucw0KICAgICAgICB2YXIgcmVmcmVzaEJ1dHRvbnNTdGF0ZSA9IHRydWU7DQogICAgICAgIGZ1bmN0aW9uIHJlZnJlc2hCdXR0b25zKHgpIHsNCiAgICAgICAgICAgIGlmIChyZWZyZXNoQnV0dG9uc1N0YXRlID09IHgpIHJldHVybjsNCiAgICAgICAgICAgIHJlZnJlc2hCdXR0b25zU3RhdGUgPSB4Ow0KICAgICAgICAgICAgdmFyIGkgPSAwLCBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQogICAgICAgICAgICBmb3IgKDsgaSA8IGUubGVuZ3RoOyBpKyspIHsgaWYgKGVbaV0ubmFtZSA9PSAncmVmcmVzaGJ0bicpIHsgZVtpXS5kaXNhYmxlZCA9ICF4OyB9IH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIERpc3BsYXkgVExTIGNlcnRpZmljYXRlDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gU1lTVEVNIFNUQVRVUyBQQU5FTA0KICAgICAgICAvLw0KDQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFN5c3RlbVN0YXR1cyh4KSB7DQogICAgICAgICAgICByZWZyZXNoQnV0dG9ucyhmYWxzZSk7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfVGltZVN5bmNocm9uaXphdGlvblNlcnZpY2VfR2V0TG93QWNjdXJhY3lUaW1lU3luY2gocHJvY2Vzc1N5c3RlbVRpbWUpOw0KDQogICAgICAgICAgICB2YXIgcXVlcnkgPSBbIkNJTV9TZXJ2aWNlQXZhaWxhYmxlVG9FbGVtZW50IiwgIipBTVRfR2VuZXJhbFNldHRpbmdzIiwgIkFNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyIsICIqQU1UX1JlZGlyZWN0aW9uU2VydmljZSIsICJDSU1fRWxlbWVudFNldHRpbmdEYXRhIl07DQogICAgICAgICAgICBpZiAoYW10dmVyc2lvbiA+IDUpIHF1ZXJ5LnB1c2goIklQU19JUHY2UG9ydFNldHRpbmdzIiwgIipDSU1fS1ZNUmVkaXJlY3Rpb25TQVAiLCAiKklQU19PcHRJblNlcnZpY2UiLCIqSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiKTsNCiAgICAgICAgICAgIGlmIChhbXR2ZXJzaW9uID4gOSkgcXVlcnkucHVzaCgiKklQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSIpOw0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKCIiLCBxdWVyeSwgcHJvY2Vzc1N5c3RlbVN0YXR1cywgdHJ1ZSk7DQoNCiAgICAgICAgICAgIGlmICh4ID09IDEpIFB1bGxXaXJlbGVzcygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1N5c3RlbVRpbWUoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoZXJyY2hlY2soc3RhdHVzLCBzdGFjaykpIHJldHVybjsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgLy8gQ29udmVydCBtcyB0byB0aW1lIGFuZCBhZGp1c3QgZm9yIHRoZSB0aW1lem9uZQ0KICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERhdGUoKSwgdDIgPSBuZXcgRGF0ZSgpOw0KICAgICAgICAgICAgICAgIHQuc2V0VGltZShyZXNwb25zZXMuQm9keVsiVGEwIl0gKiAxMDAwICsgKHQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwICogMTAwMCkpOw0KICAgICAgICAgICAgICAgIGFtdGRlbHRhdGltZSA9IHQgLSB0MjsNCiAgICAgICAgICAgICAgICB1cGRhdGVTeXN0ZW1TdGF0dXMoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHZhciBhbXRkZWx0YXRpbWU7DQogICAgICAgIHZhciBhbXRzeXNzdGF0ZTsNCiAgICAgICAgdmFyIGFtdGxvZ2ljYWxlbGVtZW50czsgLy8gcHJvY2Vzc1N5c3RlbVZlcnNpb24NCiAgICAgICAgdmFyIGFtdGZlYXR1cmVzID0ge307DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NTeXN0ZW1TdGF0dXMoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICAvLyBJZiB0aGlzIGNvbXB1dGVyIGhhcyBubyBLVk0sIGlnbm9yZSBhbmQgY29udGludWUgKFN0YW5kYXJkIE1hbmFnZWFiaWxpdHkpDQogICAgICAgICAgICBpZiAoKHJlc3BvbnNlc1snSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlJ10gPT0gdW5kZWZpbmVkKSB8fCAocmVzcG9uc2VzWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXS5zdGF0dXMgPT0gNDAwKSkgeyByZXNwb25zZXNbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddID0gbnVsbDsgfQ0KICAgICAgICAgICAgaWYgKChyZXNwb25zZXNbJ0lQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhJ10gPT0gdW5kZWZpbmVkKSB8fCAocmVzcG9uc2VzWydJUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YSddLnN0YXR1cyA9PSA0MDApKSB7IHJlc3BvbnNlc1snSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXSA9IG51bGw7IH0NCiAgICAgICAgICAgIGlmICgocmVzcG9uc2VzWydDSU1fS1ZNUmVkaXJlY3Rpb25TQVAnXSA9PSB1bmRlZmluZWQpIHx8IChyZXNwb25zZXNbJ0NJTV9LVk1SZWRpcmVjdGlvblNBUCddLnN0YXR1cyA9PSA0MDApKSB7IHJlc3BvbnNlc1snQ0lNX0tWTVJlZGlyZWN0aW9uU0FQJ10gPSBudWxsOyB9DQogICAgICAgICAgICBpZiAoKHJlc3BvbnNlc1snSVBTX09wdEluU2VydmljZSddID09IHVuZGVmaW5lZCkgfHwgKHJlc3BvbnNlc1snSVBTX09wdEluU2VydmljZSddLnN0YXR1cyA9PSA0MDApKSB7IHJlc3BvbnNlc1snSVBTX09wdEluU2VydmljZSddID0gbnVsbDsgfQ0KICAgICAgICAgICAgaWYgKChyZXNwb25zZXNbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXSAhPSB1bmRlZmluZWQpICYmIChyZXNwb25zZXNbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXS5zdGF0dXMgPT0gMjAwKSkgeyBRVignZ28xMycsIHRydWUpOyB9IC8vIFNob3cgdGhlIHRlcm1pbmFsDQoNCiAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBzdGF0dXMgYWZ0ZXIgcG9zc2libGUgS1ZNIHJlbW92YWwNCiAgICAgICAgICAgIHN0YXR1cyA9IDA7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHJlc3BvbnNlcykgeyBpZiAoKHJlc3BvbnNlc1tpXSAhPSBudWxsKSAmJiAocmVzcG9uc2VzW2ldLnN0YXR1cyA+IHN0YXR1cykpIHsgc3RhdHVzID0gcmVzcG9uc2VzW2ldLnN0YXR1czsgfSB9DQoNCiAgICAgICAgICAgIGlmICgoc3RhdHVzICE9IDQwMCkgJiYgZXJyY2hlY2soc3RhdHVzLCBzdGFjaykpIHJldHVybjsNCiAgICAgICAgICAgIGFtdHN5c3N0YXRlID0gcmVzcG9uc2VzOw0KICAgICAgICAgICAgdXBkYXRlU3lzdGVtU3RhdHVzKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1cGRhdGVTeXN0ZW1TdGF0dXMoKSB7DQogICAgICAgICAgICBpZiAoKCFhbXRzeXNzdGF0ZSkgfHwgKGN1cnJlbnRWaWV3ID4gOTkpKSByZXR1cm47DQogICAgICAgICAgIA0KICAgICAgICAgICAgLy8gU3lzdGVtIFN0YXR1cyBUYWJsZQ0KICAgICAgICAgICAgdmFyIHN5c3RlbWRlZmVuc2UgPSAwLCBob3N0LCB5LCB4ID0gVGFibGVTdGFydCgpLCBmZWF0dXJlcyA9ICcnLCBncyA9IGFtdHN5c3N0YXRlWydBTVRfR2VuZXJhbFNldHRpbmdzJ10ucmVzcG9uc2U7DQoNCiAgICAgICAgICAgIGhvc3QgPSBnc1siSG9zdE5hbWUiXTsNCiAgICAgICAgICAgIHkgPSBnc1siRG9tYWluTmFtZSJdOw0KICAgICAgICAgICAgaWYgKHkgIT0gbnVsbCAmJiB5Lmxlbmd0aCA+IDApIGhvc3QgKz0gIi4iICsgeTsNCiAgICAgICAgICAgIGlmIChob3N0Lmxlbmd0aCA9PSAwKSB7IGhvc3QgPSAiPGk+Tm9uZTwvaT4iOyB9IGVsc2UgeyBob3N0ID0gRXNjYXBlSHRtbChob3N0KTsgfQ0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJOYW1lICYgRG9tYWluIiwgYWRkTGlua0NvbmRpdGlvbmFsKGhvc3QsICdzaG93RWRpdE5hbWVEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgaWYgKEhhcmR3YXJlSW52ZW50b3J5KSB4ICs9IFRhYmxlRW50cnkoIlN5c3RlbSBJRCIsIGd1aWRUb1N0cihIYXJkd2FyZUludmVudG9yeVsnQ0lNX0NvbXB1dGVyU3lzdGVtUGFja2FnZSddLnJlc3BvbnNlWyJQbGF0Zm9ybUdVSUQiXS50b0xvd2VyQ2FzZSgpKSk7DQogICAgICAgICAgICBpZiAoYW10bG9naWNhbGVsZW1lbnRzKSB7DQogICAgICAgICAgICAgICAgdmFyIG1vZGUgPSAnJywgc2NzID0gZ2V0SXRlbShhbXRsb2dpY2FsZWxlbWVudHMsICJDcmVhdGlvbkNsYXNzTmFtZSIsICJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIpOw0KDQogICAgICAgICAgICAgICAgaWYgKChzY3NbIlByb3Zpc2lvbmluZ1N0YXRlIl0gPT0gMikgJiYgKGFtdHZlcnNpb24gPiA1KSkgew0KICAgICAgICAgICAgICAgICAgICBtb2RlID0gJyBhY3RpdmF0ZWQgaW4gQWRtaW4gQ29udHJvbCBNb2RlIChBQ00pJzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHNjc1siUHJvdmlzaW9uaW5nTW9kZSJdID09IDQpIHsgbW9kZSA9ICcgYWN0aXZhdGVkIGluIENsaWVudCBDb250cm9sIE1vZGUgKENDTSknOyBzeXN0ZW1kZWZlbnNlID0gOTsgfQ0KICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJbnRlbCZyZWc7IE1FIiwgInYiICsgZ2V0SXRlbShhbXRsb2dpY2FsZWxlbWVudHMsICJJbnN0YW5jZUlEIiwgIkFNVCIpWyJWZXJzaW9uU3RyaW5nIl0gKyBtb2RlKTsNCg0KICAgICAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgICAgICBRSCgnaWRfY29tcHV0ZXJuYW1lJywgJ0NvbXB1dGVyOiAnICsgKChnc1siSG9zdE5hbWUiXSA9PSAnJykgPyAiPGk+Tm9uZTwvaT4iIDogZ3NbIkhvc3ROYW1lIl0pKTsNCg0KDQoNCg0KICAgICAgICAgICAgLy8gSW50ZWwgQU1UIEZlYXR1cmVzDQogICAgICAgICAgICBpZiAoYW10c3lzc3RhdGVbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXS5zdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgdmFyIHJlZGlyID0gYW10ZmVhdHVyZXNbMF0gPSAoYW10c3lzc3RhdGVbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXS5yZXNwb25zZVsiTGlzdGVuZXJFbmFibGVkIl0gPT0gdHJ1ZSk7DQogICAgICAgICAgICAgICAgdmFyIHNvbCA9IGFtdGZlYXR1cmVzWzFdID0gKChhbXRzeXNzdGF0ZVsnQU1UX1JlZGlyZWN0aW9uU2VydmljZSddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXSAmIDIpICE9IDApOw0KICAgICAgICAgICAgICAgIHZhciBpZGVyID0gYW10ZmVhdHVyZXNbMl0gPSAoKGFtdHN5c3N0YXRlWydBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlJ10ucmVzcG9uc2VbIkVuYWJsZWRTdGF0ZSJdICYgMSkgIT0gMCk7DQogICAgICAgICAgICAgICAgdmFyIGt2bSA9IGFtdGZlYXR1cmVzWzNdID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgICAgIGlmICgoYW10dmVyc2lvbiA+IDUpICYmIChhbXRzeXNzdGF0ZVsnQ0lNX0tWTVJlZGlyZWN0aW9uU0FQJ10gIT0gbnVsbCkpIHsNCiAgICAgICAgICAgICAgICAgICAga3ZtID0gYW10ZmVhdHVyZXNbM10gPSAoKGFtdHN5c3N0YXRlWydDSU1fS1ZNUmVkaXJlY3Rpb25TQVAnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gPT0gNiAmJiBhbXRzeXNzdGF0ZVsnQ0lNX0tWTVJlZGlyZWN0aW9uU0FQJ10ucmVzcG9uc2VbIlJlcXVlc3RlZFN0YXRlIl0gPT0gMikgfHwgYW10c3lzc3RhdGVbJ0NJTV9LVk1SZWRpcmVjdGlvblNBUCddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXSA9PSAyIHx8IGFtdHN5c3N0YXRlWydDSU1fS1ZNUmVkaXJlY3Rpb25TQVAnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gPT0gNik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChyZWRpcikgZmVhdHVyZXMgKz0gIiwgUmVkaXJlY3Rpb24gUG9ydCI7DQogICAgICAgICAgICAgICAgaWYgKHNvbCkgZmVhdHVyZXMgKz0gIiwgU2VyaWFsLW92ZXItTEFOIjsNCiAgICAgICAgICAgICAgICBpZiAoaWRlcikgZmVhdHVyZXMgKz0gIiwgSURFLVJlZGlyZWN0IjsNCiAgICAgICAgICAgICAgICBpZiAoa3ZtKSBmZWF0dXJlcyArPSAiLCBLVk0iOw0KICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlcyA9PSAnJykgZmVhdHVyZXMgPSAiICBOb25lIjsNCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkFjdGl2ZSBGZWF0dXJlcyIsIGFkZExpbmtDb25kaXRpb25hbChmZWF0dXJlcy5zdWJzdHJpbmcoMiksICdzaG93RmVhdHVyZXNEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoKGFtdHN5c3N0YXRlWydJUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YSddICE9IG51bGwpICYmIChhbXRzeXNzdGF0ZVsnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXS5yZXNwb25zZSkpIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVza3RvcFNldHRpbmdzID0gYW10c3lzc3RhdGVbJ0lQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhJ10ucmVzcG9uc2U7DQogICAgICAgICAgICAgICAgdmFyIHNjcmVlbm5hbWUgPSAnUHJpbWFyeSBkaXNwbGF5JzsNCiAgICAgICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiA3KSAmJiAoZGVza3RvcFNldHRpbmdzWydEZWZhdWx0U2NyZWVuJ10gIT09IHVuZGVmaW5lZCkgJiYgKGRlc2t0b3BTZXR0aW5nc1snRGVmYXVsdFNjcmVlbiddIDwgMjU1KSkgeyBzY3JlZW5uYW1lID0gWydQcmltYXJ5IGRpc3BsYXknLCAnU2Vjb25kYXJ5IGRpc3BsYXknLCAnM3JkIGRpc3BsYXknXVtkZXNrdG9wU2V0dGluZ3NbJ0RlZmF1bHRTY3JlZW4nXV07IH0NCiAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICc8c3BhbiB0aXRsZT0iVGhlIGRlZmF1bHQgcmVtb3RlIGRpc3BsYXkgaXMgdGhlICcgKyBzY3JlZW5uYW1lLnRvTG93ZXJDYXNlKCkgKyAnIj4nICsgc2NyZWVubmFtZSArICI8L3NwYW4+IjsNCiAgICAgICAgICAgICAgICBpZiAoZGVza3RvcFNldHRpbmdzWydJczU5MDBQb3J0RW5hYmxlZCddID09IHRydWUpIHsgZmVhdHVyZXMgKz0gIiwgUG9ydCA1OTAwIGVuYWJsZWQiOyB9DQogICAgICAgICAgICAgICAgaWYgKGRlc2t0b3BTZXR0aW5nc1snT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSB7IGZlYXR1cmVzICs9ICIsICIgKyBkZXNrdG9wU2V0dGluZ3NbJ09wdEluUG9saWN5VGltZW91dCddICsgIiBzZWNvbmQiICsgKChkZXNrdG9wU2V0dGluZ3NbJ09wdEluUG9saWN5VGltZW91dCddID4gMCk/J3MnOicnKSArICIgb3B0LWluIjsgfQ0KICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICIsICIgKyBkZXNrdG9wU2V0dGluZ3NbJ1Nlc3Npb25UaW1lb3V0J10gKyAiIG1pbnV0ZSIgKyAoKGRlc2t0b3BTZXR0aW5nc1snU2Vzc2lvblRpbWVvdXQnXSA+IDApID8gJ3MnIDogJycpICsgIiBzZXNzaW9uIHRpbWVvdXQiOw0KDQogICAgICAgICAgICAgICAgLy8gU2NyZWVuIGJsYW5raW5nIG9uIEFNVCAxMCBhbmQgaGlnaGVyDQogICAgICAgICAgICAgICAgaWYgKChhbXR2ZXJzaW9uID4gOSkgJiYgKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXSAhPSBudWxsKSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgc2NyZWVuQmxhbmtpbmcgPSAoKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gJiAxKSAhPSAwKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmVlbkJsYW5raW5nKSBmZWF0dXJlcyArPSAiLCBCbGFua2luZyBBbGxvd2VkIjsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJSZW1vdGUgRGVza3RvcCIsIGFkZExpbmtDb25kaXRpb25hbChmZWF0dXJlcywgJ3Nob3dEZXNrdG9wU2V0dGluZ3NEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBJbnRlbCBBTVQgdXNlciBDb25zZW50DQogICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiA1KSAmJiAoYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXSAhPSBudWxsKSAmJiAoYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXS5yZXNwb25zZSAhPSB1bmRlZmluZWQpKSB7DQogICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAiVW5rbm93biBzdGF0ZSI7DQogICAgICAgICAgICAgICAgdmFyIG9wdGlucmVxdWlyZWQgPSBhbXRzeXNzdGF0ZVsnSVBTX09wdEluU2VydmljZSddLnJlc3BvbnNlWyJPcHRJblJlcXVpcmVkIl07DQogICAgICAgICAgICAgICAgaWYgKG9wdGlucmVxdWlyZWQgPT0gMCkgeyBmZWF0dXJlcyA9ICJOb3QgUmVxdWlyZWQiOyB9DQogICAgICAgICAgICAgICAgaWYgKG9wdGlucmVxdWlyZWQgPT0gMSkgeyBmZWF0dXJlcyA9ICJSZXF1aXJlZCBmb3IgS1ZNIG9ubHkiOyB9DQogICAgICAgICAgICAgICAgaWYgKG9wdGlucmVxdWlyZWQgPT0gMHhGRkZGRkZGRikgeyBmZWF0dXJlcyA9ICJBbHdheXMgUmVxdWlyZWQiOyB9DQogICAgICAgICAgICAgICAgaWYgKGFtdHN5c3N0YXRlWydJUFNfT3B0SW5TZXJ2aWNlJ10ucmVzcG9uc2VbIkNhbk1vZGlmeU9wdEluUG9saWN5Il0gPT0gdHJ1ZSkgZmVhdHVyZXMgPSBhZGRMaW5rQ29uZGl0aW9uYWwoZmVhdHVyZXMsICdzaG93Q29uc2VudERsZygpJywgeHhBY2NvdW50QWRtaW5OYW1lKTsgLy8gSWYgd2UgY2FuIG1vZGlmeSB1c2VyIGNvbnNlbnQgc2V0dGluZ3MsIGFkZCB0aGUgbGluayB0byBkbyBpdC4NCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlVzZXIgQ29uc2VudCIsIGZlYXR1cmVzKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gSW50ZWwgQU1UIFBvd2VyIHBvbGljeQ0KICAgICAgICAgICAgaWYgKEFtdFN5c3RlbVBvd2VyU2NoZW1lcyAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRTZXR0aW5ncyA9IGFtdHN5c3N0YXRlWydDSU1fRWxlbWVudFNldHRpbmdEYXRhJ10ucmVzcG9uc2VzOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudFNldHRpbmdzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50U2V0dGluZ3NbaV1bJ1NldHRpbmdEYXRhJ10gJiYgZWxlbWVudFNldHRpbmdzW2ldWydJc0N1cnJlbnQnXSA9PSAxICYmIGVsZW1lbnRTZXR0aW5nc1tpXVsnU2V0dGluZ0RhdGEnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydSZXNvdXJjZVVSSSddID09ICdodHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9hbXQtc2NoZW1hLzEvQU1UX1N5c3RlbVBvd2VyU2NoZW1lJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgdGhlIGFjdGl2ZSBJbnRlbCBBTVQgcG93ZXIgc2NoZW1lDQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG93ZXJndWlkID0gZWxlbWVudFNldHRpbmdzW2ldWydTZXR0aW5nRGF0YSddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ11bMV1bJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgZmluZCB0aGUgbmFtZSBvZiB0aGUgcG93ZXIgc2NoZW1hIGluIHRoZSBBTVRfU3lzdGVtUG93ZXJTY2hlbWUgdGFibGUNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgQW10U3lzdGVtUG93ZXJTY2hlbWVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFtdFN5c3RlbVBvd2VyU2NoZW1lc1tqXVsnU2NoZW1lR1VJRCddID09IHBvd2VyZ3VpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3VuZCB0aGUgcG93ZXIgc2NoZW1lIG5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJQb3dlciBQb2xpY3kiLCBhZGRMaW5rQ29uZGl0aW9uYWwoQW10U3lzdGVtUG93ZXJTY2hlbWVzW2pdWydEZXNjcmlwdGlvbiddLnNwbGl0KCc6JyApWzFdLCAic2hvd1Bvd2VyUG9saWN5RGxnKFwiIiArIHBvd2VyZ3VpZCArICJcIikiLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChhbXRkZWx0YXRpbWUpIHsgeCArPSBUYWJsZUVudHJ5KCJEYXRlICYgVGltZSIsIG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgYW10ZGVsdGF0aW1lKS50b0xvY2FsZVN0cmluZygpKTsgfQ0KICAgICAgICAgICAgdmFyIGJ1dHRvbnMgPSBBZGRSZWZyZXNoQnV0dG9uKCJQdWxsU3lzdGVtU3RhdHVzKCkiKSArICIgIjsNCg0KICAgICAgICAgICAgYnV0dG9ucyArPSBBZGRCdXR0b24oIlNhdmUgU3RhdGUuLi4iLCAic2F2ZUVudGlyZUFtdFN0YXRlKCkiKSArICIgIjsNCg0KICAgICAgICAgICAgYnV0dG9ucyArPSBBZGRCdXR0b24oIlJ1biBTY3JpcHQuLi4iLCAic2NyaXB0X3J1blNjcmlwdERsZygpIikgKyAiICI7DQogICAgICAgICAgICB4ICs9IFRhYmxlRW5kKGJ1dHRvbnMpOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzU3RhdHVzJywgeCk7DQoNCg0KICAgICAgICAgICAgdmFyIHggPSAiPHRhYmxlIGNsYXNzPWxvZzEgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHN0eWxlPXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg+IjsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoIjxkaXY+Jm5ic3A7IiArIEFkZFJlZnJlc2hCdXR0b24oIlB1bGxTeXN0ZW1TdGF0dXMoMSkiKQ0KDQogICAgICAgICAgICAgICAgKyAnIENoYW5naW5nIG5ldHdvcmsgc2V0dGluZ3MgbWF5IGNhdXNlIHRoaXMgcGFnZSB0byBiZSB1bmF2YWlsYWJsZSBmb3IgYSBmZXcgc2Vjb25kcy4nDQogICAgICAgICAgICApOw0KDQogICAgICAgICAgICAvLyBHZW5lcmFsIHNldHRpbmdzDQogICAgICAgICAgICB4ICs9ICI8YnI+PGgyPkdlbmVyYWwgU2V0dGluZ3M8L2gyPiI7DQogICAgICAgICAgICB4ICs9IFRhYmxlU3RhcnQoKTsNCg0KICAgICAgICAgICAgLy8gTmV0d29yayBzdGF0ZQ0KICAgICAgICAgICAgLy8gaWYgKGdzWyJBTVROZXR3b3JrRW5hYmxlZCJdKSB7IHggKz0gVGFibGVFbnRyeSgiTmV0d29yayBzdGF0ZSIsIChnc1siQU1UTmV0d29ya0VuYWJsZWQiXT09MSk/IkVuYWJsZWQiOiJEaXNhYmxlZCIpOyB9DQoNCiAgICAgICAgICAgIC8vIFNoYXJlZCBGUURODQogICAgICAgICAgICB2YXIgZnFkbnNoYXJlID0gJyc7DQogICAgICAgICAgICBpZiAoaG9zdCAhPSAiPGk+Tm9uZTwvaT4iKSB7DQogICAgICAgICAgICAgICAgaWYgKGdzWyJTaGFyZWRGUUROIl0gPT0gdHJ1ZSkgZnFkbnNoYXJlID0gJywgc2hhcmVkIHdpdGggT1MnOw0KICAgICAgICAgICAgICAgIGlmIChnc1siU2hhcmVkRlFETiJdID09IGZhbHNlKSBmcWRuc2hhcmUgPSAnLCBkaWZmZXJlbnQgZnJvbSBPUyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIk5hbWUgJiBEb21haW4iLCBhZGRMaW5rQ29uZGl0aW9uYWwoaG9zdCArIGZxZG5zaGFyZSwgJ3Nob3dFZGl0TmFtZURsZygxKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KDQogICAgICAgICAgICAvLyBEeW5hbWljIEROUw0KICAgICAgICAgICAgdmFyIGRkbnMgPSAnRGlzYWJsZWQnOw0KICAgICAgICAgICAgaWYgKGdzWyJERE5TVXBkYXRlRW5hYmxlZCJdID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBkZG5zID0gIkVuYWJsZWQgZWFjaCAiICsgZ3NbIkRETlNQZXJpb2RpY1VwZGF0ZUludGVydmFsIl0gKyAiIG1pbnV0ZXMsIFRUTCBpcyAiICsgZ3NbIkRETlNUVEwiXSArICIgbWludXRlcyI7DQogICAgICAgICAgICB9IGVsc2UgaWYgKGdzWyJERE5TVXBkYXRlQnlESENQU2VydmVyRW5hYmxlZCJdID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBkZG5zID0gIlVwZGF0ZSBieSBESENQIHNlcnZlciI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkR5bmFtaWMgRE5TIiwgYWRkTGlua0NvbmRpdGlvbmFsKGRkbnMsICdzaG93RWRpdERuc0RsZygpJywgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICB4ICs9IFRhYmxlRW5kKCk7DQoNCiAgICAgICAgICAgIGZvciAodmFyIHkgaW4gYW10c3lzc3RhdGVbJ0FNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgIHZhciB6ID0gYW10c3lzc3RhdGVbJ0FNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyddLnJlc3BvbnNlc1t5XTsNCiAgICAgICAgICAgICAgICBpZiAoelsnV0xBTkxpbmtQcm90ZWN0aW9uTGV2ZWwnXSB8fCAoeSA9PSAxKSkgeyBhbXR3aXJlbGVzc2lmID0geTsgfSAvLyBTZXQgdGhlIHdpcmVsZXNzIGludGVyZmFjZSwgdGhpcyBzZWVtcyB0byBjb3ZlciBuZXcgd2lyZWxlc3Mgb25seSBjb21wdXRlcnMgYW5kIG9sZGVyIGNvbXB1dGVycyB3aXRoIGR1YWwgaW50ZXJmYWNlcy4NCiAgICAgICAgICAgICAgICBpZiAoKHkgPT0gMCkgJiYgKGFtdHdpcmVsZXNzaWYgIT0geSkgJiYgKHpbIk1BQ0FkZHJlc3MiXSA9PSAiMDAtMDAtMDAtMDAtMDAtMDAiKSkgeyBjb250aW51ZTsgfSAvLyBPbiBjb21wdXRlcnMgd2l0aCBvbmx5IHdpcmVsZXNzLCB0aGUgd2lyZWQgaW50ZXJmYWNlIHdpbGwgaGF2ZSBhIG51bGwgTUFDLCBza2lwIGl0Lg0KICAgICAgICAgICAgICAgIGlmICh5ID09IDApIHN5c3RlbWRlZmVuc2UrKzsNCiAgICAgICAgICAgICAgICB4ICs9ICI8YnI+PGgyPiIgKyAoKGFtdHdpcmVsZXNzaWYgPT0geSk/J1dpcmVsZXNzJzonV2lyZWQnKSArICIgSW50ZXJmYWNlPC9oMj4iOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVTdGFydCgpOw0KDQogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICB2YXIgbHAgPSBbXSwgbGlua3BvbGljeSA9IE1ha2VUb0FycmF5KHpbIkxpbmtQb2xpY3kiXSk7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBsaW5rcG9saWN5KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBhcCA9IGxpbmtwb2xpY3lbcF07DQogICAgICAgICAgICAgICAgICAgIGlmIChhcCA9PSAxKSBscC5wdXNoKCJTMC9BQyIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoYXAgPT0gMTQpIGxwLnB1c2goIlN4L0FDIik7DQogICAgICAgICAgICAgICAgICAgIGlmIChhcCA9PSAxNikgbHAucHVzaCgiUzAvREMiKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGFwID09IDIyNCkgbHAucHVzaCgiU3gvREMiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJMaW5rIHN0YXRlIiwgKHpbIkxpbmtJc1VwIl0gPT0gdHJ1ZT8nTGluayBpcyB1cCc6J0xpbmsgaXMgZG93bicpICsgIiwgYXZhaWxhYmxlIGluICIgKyBscC5qb2luKCcsICcpKTsNCiAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiTGluayBzdGF0ZSIsICh6WyJMaW5rSXNVcCJdID09IHRydWU/J0xpbmsgaXMgdXAnOidMaW5rIGlzIGRvd24nKSk7DQogICAgICAgICAgICAgICAgaWYgKHpbIk1BQ0FkZHJlc3MiXSAhPSAiMDAtMDAtMDAtMDAtMDAtMDAiKSB7IHggKz0gVGFibGVFbnRyeSgiTUFDIGFkZHJlc3MiLCB6WyJNQUNBZGRyZXNzIl0pOyB9DQoNCg0KICAgICAgICAgICAgICAgIGlmICgoYW10d2lyZWxlc3NpZiA9PSB5KSAmJiB4eFdpcmVsZXNzICYmIHh4V2lyZWxlc3NbJ0NJTV9XaUZpUG9ydENhcGFiaWxpdGllcyddLnJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGFuZCBzdGF0ZQ0KICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlN0YXRlIiwgYWRkTGlua0NvbmRpdGlvbmFsKHh4V2lmaVN0YXRlW3h4V2lyZWxlc3NbJ0NJTV9XaUZpUG9ydCddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXV0sICdzaG93V2lmaVN0YXRlRGxnKCknLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgbm90IHRoYXQgdXNlZnVsDQogICAgICAgICAgICAgICAgICAgIC8vIENhcGFiaWxpdGllcw0KICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICcnLCBzYyA9IHh4V2lyZWxlc3NbJ0NJTV9XaUZpUG9ydENhcGFiaWxpdGllcyddLnJlc3BvbnNlLCBzdXBwb3J0ZWRUeXBlcyA9IHNjWyJTdXBwb3J0ZWRQb3J0VHlwZXMiXTsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHN1cHBvcnRlZFR5cGVzKSB7IHMgKz0gIiwgODAyLjExIiArICJhYmduIltzdXBwb3J0ZWRUeXBlc1tpXSAtIDcwXTsgfQ0KICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkNhcGFiaWxpdGVzIiwgcy5zdWJzdHJpbmcoMikpOw0KICAgICAgICAgICAgICAgICAgICAqLw0KDQogICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnQgcmFkaW8gc3RhdGUNCiAgICAgICAgICAgICAgICAgICAgcyA9IHh4V2lyZWxlc3NbJ0NJTV9XaUZpRW5kcG9pbnQnXS5yZXNwb25zZVsnTEFOSUQnXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJSYWRpbyBTdGF0ZSIsIHh4UmFkaW9TdGF0ZVt4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50J10ucmVzcG9uc2VbJ0VuYWJsZWRTdGF0ZSddXSArICIsIFNTSUQ6ICIgKyAocz9zOiI8aT5Ob25lPC9pPiIpKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoYW10d2lyZWxlc3NpZiAhPSB5KSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFRoaW5ncyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgd2lyZWQgaW50ZXJmYWNlDQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiUmVzcG9uZCB0byBwaW5nIiwgYWRkTGlua0NvbmRpdGlvbmFsKFsiRGlzYWJsZWQiLCJJQ01QIHJlc3BvbnNlIiwiUk1DUCByZXNwb25zZSIsIklDTVAgJiBSTUNQIHJlc3BvbnNlIl1bZ3NbIlBpbmdSZXNwb25zZUVuYWJsZWQiXSArIChnc1siUm1jcFBpbmdSZXNwb25zZUVuYWJsZWQiXSA8PCAxKV0sICJzaG93UGluZ0FjdGlvbkRsZygpIiwgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NCBzdGF0ZSIsIGFkZExpbmtDb25kaXRpb25hbCh6WyJESENQRW5hYmxlZCJdID09IHRydWU/IkF1dG9tYXRpYyB1c2luZyBESENQIHNlcnZlciI6IlN0YXRpYyBJUCBhZGRyZXNzIiwgInNob3dJUFNldHVwRGxnKCkiLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IElQdjQgY3VycmVudCBzZXR0aW5ncw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NCBhZGRyZXNzIiwgaXNJcEFkZHJlc3MoelsiSVBBZGRyZXNzIl0sIk5vbmUiKSk7DQogICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKHpbIkRlZmF1bHRHYXRld2F5Il0pKSB7IHggKz0gVGFibGVFbnRyeSgiSVB2NCBnYXRld2F5IC8gTWFzayIsIHpbIkRlZmF1bHRHYXRld2F5Il0gKyAiIC8gIiArIGlzSXBBZGRyZXNzKHpbIlN1Ym5ldE1hc2siXSwiTm9uZSIpKTsgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIHZhciBkbnMgPSB6WyJQcmltYXJ5RE5TIl07DQogICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKGRucykpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHpbIlNlY29uZGFyeUROUyJdKSBkbnMgKz0gIiAvICIgKyB6WyJTZWNvbmRhcnlETlMiXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJUHY0IGRvbWFpbiBuYW1lIHNlcnZlciIsIGRucyk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKChhbXRzeXNzdGF0ZVsnSVBTX0lQdjZQb3J0U2V0dGluZ3MnXS5zdGF0dXMgPT0gMjAwKSAmJiAoYW10dmVyc2lvbiA+IDUpKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIElQdjYgaXMgZW5hYmxlZCBmb3IgdGhpcyBpbnRlcmZhY2UNCiAgICAgICAgICAgICAgICAgICAgdmFyIHp6ID0gYW10c3lzc3RhdGVbJ0lQU19JUHY2UG9ydFNldHRpbmdzJ10ucmVzcG9uc2VzW3ldOw0KICAgICAgICAgICAgICAgICAgICB2YXIgaXB2NnN0YXRlID0gJ0Rpc2FibGVkJywgaXB2NiwgaXB2Nm1hbnVhbCwgZWxlbWVudFNldHRpbmdzID0gYW10c3lzc3RhdGVbJ0NJTV9FbGVtZW50U2V0dGluZ0RhdGEnXS5yZXNwb25zZXM7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudFNldHRpbmdzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFNldHRpbmdzW2ldWydTZXR0aW5nRGF0YSddICYmIGVsZW1lbnRTZXR0aW5nc1tpXVsnU2V0dGluZ0RhdGEnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddID09ICdJbnRlbChyKSBJUFMgSVB2NiBTZXR0aW5ncyAnICsgeSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjYgPSAoZWxlbWVudFNldHRpbmdzW2ldWydJc0N1cnJlbnQnXSA9PSAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIG1hbnVhbCBhZGRyZXNzZXMgaGF2ZSBiZWVuIGFkZGVkDQogICAgICAgICAgICAgICAgICAgIGlmIChpcHY2ID09IHRydWUpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICBpcHY2bWFudWFsID0gaXNJcEFkZHJlc3MoenpbIklQdjZBZGRyZXNzIl0pIHx8IGlzSXBBZGRyZXNzKHp6WyJEZWZhdWx0Um91dGVyIl0pIHx8IGlzSXBBZGRyZXNzKHp6WyJQcmltYXJ5RE5TIl0pIHx8IGlzSXBBZGRyZXNzKHp6WyJTZWNvbmRhcnlETlMiXSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpcHY2c3RhdGUgPSAnRW5hYmxlZCwgQXV0b21hdGljICcgKyAoaXB2Nm1hbnVhbD8iJiBtYW51YWwiOiIiKSArICIgYWRkcmVzc2VzIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgSVB2NiBjdXJyZW50IHNldHRpbmdzDQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NiBzdGF0ZSIsIGFkZExpbmtDb25kaXRpb25hbChpcHY2c3RhdGUsICJzaG93SVB2NlN0YXRlRGxnKCIgKyB5ICsgIiwiICsgaXB2NiArICIpIiwgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICAgICAgICAgIGlmIChpcHY2ID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh6elsiQ3VycmVudEFkZHJlc3NJbmZvIl0gJiYgenpbIkN1cnJlbnRBZGRyZXNzSW5mbyJdLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6elsiQ3VycmVudEFkZHJlc3NJbmZvIl0gPSBNYWtlVG9BcnJheSh6elsiQ3VycmVudEFkZHJlc3NJbmZvIl0pOyAvLyBCZWNhdXNlIG91ciBXU01BTiBzdGFjayBkb2VzIG5vdCBrbm93IGlmIHRoaXMgaXMgYSBhcnJheSwgd2UgbmVlZCB0byBtYWtlIGl0IGFuIGFycmF5IGlmIGl0IGNvbnRhaW5zIDEgZWxlbWVudC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2YWRkciA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgenpbIkN1cnJlbnRBZGRyZXNzSW5mbyJdLmxlbmd0aDsgaSsrKSB7IGlmIChpcHY2YWRkci5sZW5ndGggPiAwKSBpcHY2YWRkciArPSAiLCAiOyBpcHY2YWRkciArPSB6elsiQ3VycmVudEFkZHJlc3NJbmZvIl1baV0uc3BsaXQoJywnKVswXTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NiBhZGRyZXNzIiwgYWRkTGluayhpcHY2YWRkciwgInNob3dJUHY2QWRkckRsZygiICsgeSArICIsXCIiICsgenpbIkN1cnJlbnRBZGRyZXNzSW5mbyJdICsgIlwiKSIpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJUHY2IGFkZHJlc3MiLCAnTm9uZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKHp6WyJDdXJyZW50RGVmYXVsdFJvdXRlciJdKSkgeyB4ICs9IFRhYmxlRW50cnkoIklQdjYgZGVmYXVsdCByb3V0ZXIiLCB6elsiQ3VycmVudERlZmF1bHRSb3V0ZXIiXSk7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lwQWRkcmVzcyh6elsiQ3VycmVudFByaW1hcnlETlMiXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG5zID0genpbIkN1cnJlbnRQcmltYXJ5RE5TIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKHp6WyJDdXJyZW50U2Vjb25kYXJ5RE5TIl0pKSBkbnMgKz0gIiAvICIgKyB6elsiQ3VycmVudFNlY29uZGFyeUROUyJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NiBkb21haW4gbmFtZSBzZXJ2ZXIiLCBkbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBPbmx5IGRvIG1vcmUgV1NNQU4gaWYgd2UgbmVlZCBpdA0KICAgICAgICAgICAgaWYgKCh1cmx2YXJzWydrdm1vbmx5J10gIT0gMSkgJiYgKGZ1bGxzY3JlZW5vbmx5ID09IGZhbHNlKSkgew0KDQogICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSB3aXJlbGVzcyBpbnRlcmZhY2UsIGdldCB0aGUgZGF0YSBmb3IgaXQuIElmIG5vdCwgc2hvdyB0aGF0IHRoZXJlIGlzIG5vdC4NCiAgICAgICAgICAgICAgICBpZiAoYW10d2lyZWxlc3NpZiAhPSAtMSkgeyBpZiAoKGFtdEZpcnN0UHVsbCAmIDIpID09IDApIFB1bGxXaXJlbGVzcygpOyB9DQogICAgICAgICAgICAgICAgUUgoJ2lkX1RhYmxlTmV0d29ya1NldHRpbmdzU3BhbicsIHgpOw0KDQoNCiAgICAgICAgICAgICAgICAvLyBJZiBpbiBBQ00gbW9kZSBhbmQgd2UgaGF2ZSBhIHdpcmVkIGludGVyZmFjZSwgcHVsbCBTeXN0ZW0gRGVmZW5zZSBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgICAgIGlmICgoc3lzdGVtZGVmZW5zZSA9PSAxKSAmJiAoKGFtdEZpcnN0UHVsbCAmIDQpID09IDApKSBQdWxsU3lzdGVtRGVmZW5zZSgpOw0KDQoNCiAgICAgICAgICAgICAgICBpZiAoKChhbXRGaXJzdFB1bGwgJiA4KSA9PSAwKSAmJiAoYW10dmVyc2lvbiA+IDExIHx8IChhbXR2ZXJzaW9uID09IDExICYmIGFtdHZlcnNpb25taW4gPiA1KSkpIHsgUHVsbFN0b3JhZ2UoKTsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoY3VycmVudFZpZXcgPT0gMCkgZ28oMSwgMSk7IC8vIElmIHdlIGFyZSBhdCB0aGUgbG9hZGluZyBzY3JlZW4sIG1vc3QgdG8gU3lzdGVtIFN0YXR1cyBzY3JlZW4NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzSXBBZGRyZXNzKHQsIHgpIHsgcmV0dXJuICh0ICYmIHQgIT0gbnVsbCAmJiB0Lmxlbmd0aCA+IDAgJiYgdCAhPSAnOjonICYmIHQgIT0gJzo6MCcpP3Q6eDsgfQ0KDQoNCiAgICAgICAgdmFyIEludGVsQW10RW50aXJlU3RhdGU7DQogICAgICAgIHZhciBJbnRlbEFtdEVudGlyZVN0YXRlQ2FsbHM7DQogICAgICAgIGZ1bmN0aW9uIHNhdmVFbnRpcmVBbXRTdGF0ZSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBuID0gJycsIGQgPSBuZXcgRGF0ZSgpOw0KICAgICAgICAgICAgaWYgKGFtdHN5c3N0YXRlKSB7IG4gPSAiLSIgKyBhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlWydIb3N0TmFtZSddOyB9DQogICAgICAgICAgICBuICs9ICctJyArIGQuZ2V0RnVsbFllYXIoKSArICItIiArICgiMCIrKGQuZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpICsgIi0iICsgKCIwIiArIGQuZ2V0RGF0ZSgpKS5zbGljZSgtMikgKyAiLSIgKyAoIjAiICsgZC5nZXRIb3VycygpKS5zbGljZSgtMikgKyAiLSIgKyAoIjAiICsgZC5nZXRNaW51dGVzKCkpLnNsaWNlKC0yKTs7DQogICAgICAgICAgICBpZHhfZDE5c2F2ZXN0YXRlZmlsZW5hbWUudmFsdWUgPSAnYW10c3RhdGUnICsgbiArICcuanNvbic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDE5LCAiU2F2ZSBFbnRpcmUgSW50ZWwmcmVnOyBBTVQgU3RhdGUiLCAzLCBzYXZlRW50aXJlQW10U3RhdGVPayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzYXZlRW50aXJlQW10U3RhdGVPaygpIHsNCiAgICAgICAgICAgIEludGVsQW10RW50aXJlU3RhdGUgPSB7ICd3ZWJhcHB2ZXJzaW9uJzp2ZXJzaW9uLCdsb2NhbHRpbWUnOkRhdGUoKSwndXRjdGltZSc6bmV3IERhdGUoKS50b1VUQ1N0cmluZygpLCdpc290aW1lJzpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfTsNCiAgICAgICAgICAgIFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgJ0ZldGNoaW5nIGVudGlyZSBzdGF0ZSwgcGxlYXNlIHdhaXQuLi4nKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMSwgIlNhdmUgRW50aXJlIEludGVsJnJlZzsgQU1UIFN0YXRlIiwgMCwgbnVsbCk7DQoNCiAgICAgICAgICAgIC8vIEZldGNoIGV2ZXJ5dGhpbmchDQogICAgICAgICAgICBJbnRlbEFtdEVudGlyZVN0YXRlQ2FsbHMgPSAzOw0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKG51bGwsIEFsbFdzbWFuLCBzYXZlRW50aXJlQW10U3RhdGVPazIsIG51bGwsIHRydWUpOw0KICAgICAgICAgICAgYW10c3RhY2suR2V0QXVkaXRMb2coc2F2ZUVudGlyZUFtdFN0YXRlT2szKTsNCiAgICAgICAgICAgIGFtdHN0YWNrLkdldE1lc3NhZ2VMb2coc2F2ZUVudGlyZUFtdFN0YXRlT2s0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNhdmVFbnRpcmVBbXRTdGF0ZU9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsgSW50ZWxBbXRFbnRpcmVTdGF0ZVsnd3NtYW5lbnVtcyddID0gcmVzcG9uc2VzOyBzYXZlRW50aXJlQW10U3RhdGVEb25lKCk7IH0NCiAgICAgICAgZnVuY3Rpb24gc2F2ZUVudGlyZUFtdFN0YXRlT2szKHN0YWNrLCBtZXNzYWdlcykgeyBJbnRlbEFtdEVudGlyZVN0YXRlWydhdWRpdGxvZyddID0gbWVzc2FnZXM7IHNhdmVFbnRpcmVBbXRTdGF0ZURvbmUoKTsgfQ0KICAgICAgICBmdW5jdGlvbiBzYXZlRW50aXJlQW10U3RhdGVPazQoc3RhY2ssIG1lc3NhZ2VzKSB7IEludGVsQW10RW50aXJlU3RhdGVbJ2V2ZW50bG9nJ10gPSBtZXNzYWdlczsgc2F2ZUVudGlyZUFtdFN0YXRlRG9uZSgpOyB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2F2ZUVudGlyZUFtdFN0YXRlRG9uZSgpIHsNCiAgICAgICAgICAgIGlmICgtLUludGVsQW10RW50aXJlU3RhdGVDYWxscyAhPSAwKSByZXR1cm47DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKCk7DQoNCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoSlNPTi5zdHJpbmdpZnkoSW50ZWxBbXRFbnRpcmVTdGF0ZSwgbnVsbCwgJyAgJykucmVwbGFjZSgvXG4vZywgJ1xyXG4nKSksIGlkeF9kMTlzYXZlc3RhdGVmaWxlbmFtZS52YWx1ZSk7DQogICAgICAgIH0NCg0KDQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0Rlc2t0b3BTZXR0aW5nc0RsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBkZXNrdG9wU2V0dGluZ3MgPSBhbXRzeXNzdGF0ZVsnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXS5yZXNwb25zZTsNCiAgICAgICAgICAgIHZhciB4ID0gJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpsZWZ0Pic7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9c3ViZGRpc3BsYXkgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHg+PG9wdGlvbiB2YWx1ZT0wPlByaW1hcnkgZGlzcGxheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9MT5TZWNvbmRhcnkgZGlzcGxheTwvb3B0aW9uPiI7DQogICAgICAgICAgICBpZiAoYW10dmVyc2lvbiA+IDkpIHsgeCArPSAiPG9wdGlvbiB2YWx1ZT0yPjNyZCBkaXNwbGF5PC9vcHRpb24+IjsgfQ0KICAgICAgICAgICAgeCArPSAiPC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+RGVmYXVsdCBkaXNwbGF5PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXN1YnNlc3Npb250aW1lb3V0IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IG1heGxlbmd0aD01IG9ua2V5cHJlc3M9J3JldHVybiBudW1iZXJzT25seShldmVudCknPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlNlc3Npb24gdGltZW91dCAoTWludXRlcyk8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgaWYgKGRlc2t0b3BTZXR0aW5nc1snT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSB7IHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXN1Ym9wdGludGltZW91dCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBtYXhsZW5ndGg9NSBvbmtleXByZXNzPSdyZXR1cm4gbnVtYmVyc09ubHkoZXZlbnQpJz48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5PcHQtaW4gdGltZW91dCAoU2Vjb25kcyk8L2Rpdj48L2Rpdj4iOyB9DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9c3ViZGxlZ2FjeSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmNoYW5nZT1zaG93RGVza3RvcFNldHRpbmdzRGxnVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkRpc2FibGVkLCBSZWNvbW1lbmRlZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9MT5FbmFibGVkLCBMZWdhY3kgS1ZNIHZpZXdlcnM8L29wdGlvbj48L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5Qb3J0IDU5MDA8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweCBpZD1zdWJzcGFzc3g+PGlucHV0IGlkPXN1YnNwYXNzIHR5cGU9cGFzc3dvcmQgYXV0b2NvbXBsZXRlPW9mZiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBtYXhsZW5ndGg9OCBvbmtleXVwPXNob3dEZXNrdG9wU2V0dGluZ3NEbGdVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD41OTAwIHBhc3N3b3JkICg4IGNoYXJzKTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiA5KSAmJiAoYW10c3lzc3RhdGVbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddICE9IG51bGwpKSB7IHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1zdWJzYiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmNoYW5nZT1zaG93RGVza3RvcFNldHRpbmdzRGxnVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkRpc2FibGVkPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0xPkVuYWJsZWQ8L29wdGlvbj48L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweCB0aXRsZT0nVGhpcyBmZWF0dXJlIGlzIG5vdCBvZnRlbiBzdXBwb3J0ZWQnPlNjcmVlbiBCbGFua2luZzwvZGl2PjwvZGl2PiI7IH0NCiAgICAgICAgICAgIHggKz0gIjwvZGl2PiI7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiUmVtb3RlIERlc2t0b3AgU2V0dGluZ3MiLCAzLCBzaG93RGVza3RvcFNldHRpbmdzRGxnT2ssIHgpOw0KICAgICAgICAgICAgUSgnc3ViZGRpc3BsYXknKS52YWx1ZSA9IGRlc2t0b3BTZXR0aW5nc1snRGVmYXVsdFNjcmVlbiddOw0KICAgICAgICAgICAgUSgnc3Vic2Vzc2lvbnRpbWVvdXQnKS52YWx1ZSA9IGRlc2t0b3BTZXR0aW5nc1snU2Vzc2lvblRpbWVvdXQnXTsNCiAgICAgICAgICAgIGlmIChkZXNrdG9wU2V0dGluZ3NbJ09wdEluUG9saWN5J10gPT0gdHJ1ZSkgeyBRKCdzdWJvcHRpbnRpbWVvdXQnKS52YWx1ZSA9IGRlc2t0b3BTZXR0aW5nc1snT3B0SW5Qb2xpY3lUaW1lb3V0J107IH0NCiAgICAgICAgICAgIFEoJ3N1YmRsZWdhY3knKS52YWx1ZSA9ICgoZGVza3RvcFNldHRpbmdzWydJczU5MDBQb3J0RW5hYmxlZCddID09IHRydWUpID8gMSA6IDApOw0KICAgICAgICAgICAgaWYgKChhbXR2ZXJzaW9uID4gOSkgJiYgKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXSAhPSBudWxsKSkgeyBRKCdzdWJzYicpLnZhbHVlID0gYW10c3lzc3RhdGVbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXTsgfQ0KICAgICAgICAgICAgc2hvd0Rlc2t0b3BTZXR0aW5nc0RsZ1VwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0Rlc2t0b3BTZXR0aW5nc0RsZ1VwZGF0ZSgpIHsNCiAgICAgICAgICAgIFFWKCdzdWJzcGFzc3gnLCAoUSgnc3ViZGxlZ2FjeScpLnZhbHVlID09IDEpKTsNCiAgICAgICAgICAgIHZhciBvayA9ICgoUSgnc3ViZGxlZ2FjeScpLnZhbHVlID09IDApIHx8IChRKCdzdWJzcGFzcycpLnZhbHVlLmxlbmd0aCA9PSA4KSB8fCAoUSgnc3Vic3Bhc3MnKS52YWx1ZS5sZW5ndGggPT0gMCkpICYmIChRKCdzdWJzZXNzaW9udGltZW91dCcpLnZhbHVlLmxlbmd0aCA+IDApOw0KICAgICAgICAgICAgaWYgKChhbXRzeXNzdGF0ZVsnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXS5yZXNwb25zZVsnT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSAmJiAoUSgnc3Vib3B0aW50aW1lb3V0JykudmFsdWUubGVuZ3RoID09IDApKSB7IG9rID0gZmFsc2U7IH0NCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCBvayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RGVza3RvcFNldHRpbmdzRGxnT2soKSB7DQogICAgICAgICAgICB2YXIgeCA9IENsb25lKGFtdHN5c3N0YXRlWydJUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YSddLnJlc3BvbnNlKTsNCiAgICAgICAgICAgIHhbJ0RlZmF1bHRTY3JlZW4nXSA9IFEoJ3N1YmRkaXNwbGF5JykudmFsdWUNCiAgICAgICAgICAgIHhbJ1Nlc3Npb25UaW1lb3V0J10gPSBRKCdzdWJzZXNzaW9udGltZW91dCcpLnZhbHVlOw0KICAgICAgICAgICAgeFsnSXM1OTAwUG9ydEVuYWJsZWQnXSA9IChRKCdzdWJkbGVnYWN5JykudmFsdWUgPT0gMSk7DQogICAgICAgICAgICBpZiAoeFsnT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSB7IHhbJ09wdEluUG9saWN5VGltZW91dCddID0gUSgnc3Vib3B0aW50aW1lb3V0JykudmFsdWU7IH0NCiAgICAgICAgICAgIGlmICh4WydJczU5MDBQb3J0RW5hYmxlZCddID09IHRydWUpIHsgeFsnUkZCUGFzc3dvcmQnXSA9IFEoJ3N1YnNwYXNzJykudmFsdWU7IH0NCiAgICAgICAgICAgIGFtdHN0YWNrLlB1dCgnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnLCB4LCBzaG93RGVza3RvcFNldHRpbmdzRGxnT2syKTsNCg0KICAgICAgICAgICAgLy8gU2NyZWVuIGJsYW5raW5nDQogICAgICAgICAgICB2YXIgeSA9IENsb25lKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXS5yZXNwb25zZSk7DQogICAgICAgICAgICB5WydFbmFibGVkU3RhdGUnXSA9IHBhcnNlSW50KFEoJ3N1YnNiJykudmFsdWUpOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnLCB5LCBzaG93RGVza3RvcFNldHRpbmdzRGxnT2szKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dEZXNrdG9wU2V0dGluZ3NEbGdPazIoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgUHVsbFN5c3RlbVN0YXR1cygpOyBlbHNlIG1lc3NhZ2Vib3goIlJlbW90ZSBEZXNrdG9wIFNldHRpbmdzIiwgIkVycm9yICIgKyBzdGF0dXMgKyAiLCB1bmFibGUgdG8gc2V0IHZhbHVlcy4iKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dEZXNrdG9wU2V0dGluZ3NEbGdPazMoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goIkVycm9yIiwgIlNjcmVlbiBCbGFua2luZyBjb3VsZCBub3QgYmUgc2V0LCBibGFua2luZyBtYXkgbm90IGJlIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSAoIiArIHN0YXR1cyArICIpLiIpOyByZXR1cm47IH0NCiAgICAgICAgICAgIGFtdHN0YWNrLkdldCgiSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgZnVuY3Rpb24gKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgYW10c3lzc3RhdGVbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddLnJlc3BvbnNlID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlU3lzdGVtU3RhdHVzKCk7IH0NCiAgICAgICAgICAgIH0sIDAsIDEpOw0KICAgICAgICB9DQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gRVZFTlQgTE9HIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbEV2ZW50TG9nKGJ1dHRvbikgew0KICAgICAgICAgICAgaWYgKGJ1dHRvbiA9PSAxICYmIHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgYW10Rmlyc3RQdWxsIHw9IDE2Ow0KICAgICAgICAgICAgYW10c3RhY2suRW51bSgiQU1UX01lc3NhZ2VMb2ciLCBwcm9jZXNzTWVzc2FnZUxvZzApOw0KICAgICAgICAgICAgYW10c3RhY2suR2V0TWVzc2FnZUxvZyhwcm9jZXNzTWVzc2FnZUxvZzEpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHByb2Nlc3NNZXNzYWdlTG9nMHJlc3BvbnNlcyA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlTG9nMChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSByZXR1cm47DQogICAgICAgICAgICBpZiAoc3RhdHVzKSBRVignZ282JywgdHJ1ZSk7IC8vIFNob3cgZXZlbnQgbG9nIGxlZnQgcGFuZWwgb3B0aW9uDQogICAgICAgICAgICBpZiAocmVzcG9uc2VzKSBwcm9jZXNzTWVzc2FnZUxvZzByZXNwb25zZXMgPSByZXNwb25zZXM7DQogICAgICAgICAgICB2YXIgZnIgPSAnJywgeCA9ICI8dGFibGUgY2xhc3M9bG9nMSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweD4iOw0KICAgICAgICAgICAgaWYgKHByb2Nlc3NNZXNzYWdlTG9nMHJlc3BvbnNlcyAhPSBudWxsKSB7IGZyID0gKChwcm9jZXNzTWVzc2FnZUxvZzByZXNwb25zZXNbMF1bIklzRnJvemVuIl0gPT0gdHJ1ZSkgPyBBZGRCdXR0b24oIlVuLWZyZWV6ZSBMb2ciLCAiRnJlZXplTG9nKDApIikgOiBBZGRCdXR0b24oIkZyZWV6ZSBMb2ciLCAiRnJlZXplTG9nKDEpIikpOyB9DQoNCg0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgiPGRpdiBzdHlsZT1mbG9hdDpyaWdodD48aW5wdXQgaWQ9ZXZlbnRGaWx0ZXIgcGxhY2Vob2xkZXI9RmlsdGVyIHN0eWxlPW1hcmdpbjo0cHggb25rZXl1cD1ldmVudEZpbHRlcigpPiZuYnNwOzwvZGl2PjxkaXY+Jm5ic3A7IiArIEFkZFJlZnJlc2hCdXR0b24oIlB1bGxFdmVudExvZygxKSIpICsgQWRkQnV0dG9uKCJDbGVhciBMb2ciLCAiQ2xlYXJMb2coKSIpICsgQWRkQnV0dG9uKCJTYXZlLi4uIiwgIlNhdmVFdmVudExvZygpIikgKyBmcik7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVFdmVudExvZycsIHggKyAnPGJyPicpOw0KICAgICAgICB9DQoNCg0KICAgICAgICBmdW5jdGlvbiBTYXZlRXZlbnRMb2coKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8IGV2ZW50bWVzc2FnZXMgPT0gbnVsbCkgcmV0dXJuOw0KICAgICAgICAgICAgU2F2ZUpzb25GaWxlKCdJbnRlbEFtdEV2ZW50bG9nJywgJ2V2ZW50cycsICdJbnRlbCBBTVQgRXZlbnQgTG9nJywgZXZlbnRtZXNzYWdlcyk7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgZXZlbnRtZXNzYWdlcyA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlTG9nMShzdGFjaywgbWVzc2FnZXMpIHsNCiAgICAgICAgICAgIGV2ZW50bWVzc2FnZXMgPSBtZXNzYWdlczsNCiAgICAgICAgICAgIHZhciBpLCB5ID0gMCwgeCA9ICI8dGFibGUgY2xhc3M9bG9nMSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweD48dHI+PHRkIHdpZHRoPTgwcHg+PHA+PHRkPjx0ZD48dGQ+IjsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6OTBweD48Yj4mbmJzcDsmbmJzcDtFdmVudDwvYj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MTEwcHg+PGI+VGltZTwvYj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MTYwcHg+PGI+U291cmNlPC9iPjx0ZCBjbGFzcz1yMT48Yj5EZXNjcmlwdGlvbjwvYj4iOw0KICAgICAgICAgICAgZm9yIChpIGluIG1lc3NhZ2VzKSB7DQogICAgICAgICAgICAgICAgeSsrOw0KICAgICAgICAgICAgICAgIHZhciBpY29uID0gMSwgbSA9IG1lc3NhZ2VzW2ldOw0KICAgICAgICAgICAgICAgIGlmIChtWydFdmVudFNldmVyaXR5J10gPj0gOCkgeyBpY29uID0gMjsgfSBpZiAobVsnRXZlbnRTZXZlcml0eSddID49IDE2KSB7IGljb24gPSAzOyB9DQogICAgICAgICAgICAgICAgeCArPSAiPHRyIGlkPXhhbXRldmVudCIgKyBpICsgIiBjbGFzcz1yMyBvbmNsaWNrPXNob3dFdmVudERldGFpbHMoIiArIGkgKyAiKT48dGQgY2xhc3M9cjE+PHA+PGRpdiBjbGFzcz1pY29uIiArIGljb24gKyAiIHN0eWxlPWRpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLXJpZ2h0OjVweD48L2Rpdj4iICsgKHBhcnNlSW50KGkpICsgMSkgKyAiPHRkIGNsYXNzPXIxIHRpdGxlPSciICsgbVsnVGltZSddLnRvTG9jYWxlU3RyaW5nKCkgKyAiJz4iICsgbVsnVGltZSddLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4nLCB7IHllYXI6ICJudW1lcmljIiwgbW9udGg6ICIyLWRpZ2l0IiwgZGF5OiAibnVtZXJpYyIgfSkgKyAiPGJyPiIgKyBtWydUaW1lJ10udG9Mb2NhbGVUaW1lU3RyaW5nKCdlbicsIHsgaG91cjoiMi1kaWdpdCIsIG1pbnV0ZToiMi1kaWdpdCIsIHNlY29uZDoiMi1kaWdpdCIgfSkgKyAiPHRkIGNsYXNzPXIxPiIgKyBtWydFbnRpdHlTdHInXS5yZXBsYWNlKCIocikiLCAiJnJlZzsiKSArICI8dGQgY2xhc3M9cjE+IiArIG1bJ0Rlc2MnXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoeSA9PSAwID8gIiZuYnNwOyIgOiAiIik7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVFdmVudExvZzInLCB4ICsgJzxicj4nKTsNCiAgICAgICAgICAgIHByb2Nlc3NNZXNzYWdlTG9nMCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gRnJlZXplTG9nKHgpIHsgaWYgKCF4eGRpYWxvZ01vZGUpIHsgYW10c3RhY2suQU1UX01lc3NhZ2VMb2dfRnJlZXplTG9nKHgsIGZ1bmN0aW9uICgpIHsgYW10c3RhY2suRW51bSgiQU1UX01lc3NhZ2VMb2ciLCBwcm9jZXNzTWVzc2FnZUxvZzApOyB9KSB9IH0NCiAgICAgICAgZnVuY3Rpb24gQ2xlYXJMb2coeCkgeyBpZiAoIXh4ZGlhbG9nTW9kZSkgeyBRSCgnaWRfZGlhbG9nTWVzc2FnZScsICdDbGVhciBldmVudCBsb2c/Jyk7IHNldERpYWxvZ01vZGUoMSwgIkV2ZW50IExvZyIsIDMsIENsZWFyTG9nRXgpOyB9IH0NCiAgICAgICAgZnVuY3Rpb24gQ2xlYXJMb2dFeCgpIHsgYW10c3RhY2suQU1UX01lc3NhZ2VMb2dfQ2xlYXJMb2coZnVuY3Rpb24gKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgeyBpZiAoc3RhdHVzICE9IDIwMCkgbWVzc2FnZWJveCgiRXZlbnQgTG9nIiwgIlVuYWJsZSB0byBjbGVhciwgRXJyb3I6ICIgKyBzdGF0dXMpOyBlbHNlIFB1bGxFdmVudExvZygpOyB9KSB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0V2ZW50RGV0YWlscyhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgbSA9IGV2ZW50bWVzc2FnZXNbaF07DQogICAgICAgICAgICB2YXIgeCA9ICc8ZGl2IHN0eWxlPXRleHQtYWxpZ246bGVmdD4nOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlRpbWUiLCBtWydUaW1lJ10udG9Mb2NhbGVTdHJpbmcoKSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU291cmNlIiwgbVsnRW50aXR5U3RyJ10ucmVwbGFjZSgiKHIpIiwgIiZyZWc7IikpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkRlc2NyaXB0aW9uIiwgbVsnRGVzYyddKTsNCiAgICAgICAgICAgIHggKz0gTW9yZVN0YXJ0KCk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiRGV2aWNlIEFkZHJlc3MiLCBtWydEZXZpY2VBZGRyZXNzJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkVudGl0eSIsIG1bJ0VudGl0eSddKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJFbnRpdHkgSW5zdGFuY2UiLCBtWydFbnRpdHlJbnN0YW5jZSddKTsNCiAgICAgICAgICAgIHZhciBlID0gJyc7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIG1bJ0V2ZW50RGF0YSddKSB7IGlmIChlLmxlbmd0aCA+IDApIGUgKz0nLCc7IGUgKz0gbVsnRXZlbnREYXRhJ11baV07IH0NCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJEYXRhIiwgZSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiT2Zmc2V0IiwgbVsnRXZlbnRPZmZzZXQnXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU2Vuc29yIFR5cGUiLCBtWydFdmVudFNlbnNvclR5cGUnXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU2V2ZXJpdHkiLCBtWydFdmVudFNldmVyaXR5J10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlNvdXJjZSBUeXBlIiwgbVsnRXZlbnRTb3VyY2VUeXBlJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlR5cGUiLCBtWydFdmVudFR5cGUnXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU2Vuc29yIE51bWJlciIsIG1bJ1NlbnNvck51bWJlciddKTsNCiAgICAgICAgICAgIHggKz0gTW9yZUVuZCgpOw0KICAgICAgICAgICAgeCArPSAiPC9kaXY+IjsNCiAgICAgICAgICAgIG1lc3NhZ2Vib3goIkV2ZW50ICMiICsgKGggKyAxKSArICIgRGV0YWlscyIsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZXZlbnRGaWx0ZXIoKSB7DQogICAgICAgICAgICB2YXIgZmlsdGVyID0gUSgnZXZlbnRGaWx0ZXInKS52YWx1ZS50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgZm9yICh2YXIgdyBpbiBldmVudG1lc3NhZ2VzKSB7IFFWKCd4YW10ZXZlbnQnICsgdywgZmlsdGVyID09ICcnIHx8IGV2ZW50bWVzc2FnZXNbd11bJ0Rlc2MnXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyKSA+PSAwIHx8IGV2ZW50bWVzc2FnZXNbd11bJ0VudGl0eVN0ciddLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID49IDApOyB9DQogICAgICAgIH0NCg0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEFVRElUIExPRyBQQU5FTA0KICAgICAgICAvLw0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxBdWRpdExvZyhidXR0b24pIHsNCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMSAmJiB4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGFtdEZpcnN0UHVsbCB8PSAzMjsNCiAgICAgICAgICAgIGFtdHN0YWNrLkVudW0oIkFNVF9BdWRpdExvZyIsIHByb2Nlc3NBdWRpdExvZzApOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGF1ZGl0TG9nID0gbnVsbDsNCiAgICAgICAgdmFyIGF1ZGl0TG9nRW5hYmxlZFN0YXRlcyA9IFsiVW5rbm93biIsICJPdGhlciIsICJFbmFibGVkIiwgIkRpc2FibGVkIiwgIlNodXR0aW5nIERvd24iLCAiTm90IEFwcGxpY2FibGUiLCAiRW5hYmxlZCBidXQgT2ZmbGluZSIsICJJbiBUZXN0IiwgIkRlZmVycmVkIiwgIlF1aWVzY2UiLCAiU3RhcnRpbmciXTsNCg0KICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQXVkaXRMb2cwKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICBRVignZ28xNScsIHRydWUpOyAvLyBTaG93IGF1ZGl0IGxvZyBsZWZ0IHBhbmVsIG9wdGlvbg0KDQogICAgICAgICAgICAgICAgdmFyIHIgPSByZXNwb25zZXNbMF1bIkF1ZGl0U3RhdGUiXTsNCiAgICAgICAgICAgICAgICB2YXIgYXVkaXRzdGF0ZSA9IChyICYgMHgwMSkgPyAnRGlzYWJsZWQnIDogJ0VuYWJsZWQnOw0KICAgICAgICAgICAgICAgIGlmIChyICYgMHgwMikgYXVkaXRzdGF0ZSArPSAiLCBMb2NrZWQiOw0KICAgICAgICAgICAgICAgIGlmIChyICYgMHgwNCkgYXVkaXRzdGF0ZSArPSAiLCBBbG1vc3QgRnVsbCI7DQogICAgICAgICAgICAgICAgaWYgKHIgJiAweDA4KSBhdWRpdHN0YXRlICs9ICIsIEZ1bGwiOw0KICAgICAgICAgICAgICAgIGlmIChyICYgMHgxMCkgYXVkaXRzdGF0ZSArPSAiLCBOb0tleSI7DQoNCiAgICAgICAgICAgICAgICB2YXIgeCA9ICI8aDE+QXVkaXQgTG9nIFNldHRpbmdzPC9oMT4iICsgVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiU3RhdGUiLCBhdWRpdHN0YXRlKTsNCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlN0b3JhZ2UiLCByZXNwb25zZXNbMF1bIkN1cnJlbnROdW1iZXJPZlJlY29yZHMiXSArICIgcmVjb3JkKHMpLCAiICsgcmVzcG9uc2VzWzBdWyJQZXJjZW50YWdlRnJlZSJdICsgIiUgZnJlZSIpOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiT3ZlcndyaXRlIHBvbGljeSIsICgocmVzcG9uc2VzWzBdWyJPdmVyd3JpdGVQb2xpY3kiXSA9PSAyKSA/ICJXcmFwcyB3aGVuIGZ1bGwiIDogIk5ldmVyIG92ZXJ3cml0ZXMiKSk7DQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgICAgIFFIKCdpZF9UYWJsZUF1ZGl0TG9nMScsIHgpOw0KDQogICAgICAgICAgICAgICAgYW10c3RhY2suR2V0QXVkaXRMb2cocHJvY2Vzc0F1ZGl0TG9nMSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQXVkaXRMb2cxKHN0YWNrLCBtZXNzYWdlcykgew0KICAgICAgICAgICAgYXVkaXRMb2cgPSBtZXNzYWdlczsNCiAgICAgICAgICAgIHZhciBpLCB4ID0gIjx0YWJsZSBjbGFzcz1sb2cxIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4PiI7DQoNCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoIjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ+PGlucHV0IGlkPWF1ZGl0RmlsdGVyIHBsYWNlaG9sZGVyPUZpbHRlciBzdHlsZT1tYXJnaW46NHB4IG9ua2V5dXA9YXVkaXRGaWx0ZXIoKT4mbmJzcDs8L2Rpdj48ZGl2PiAiICsgQWRkUmVmcmVzaEJ1dHRvbigiUHVsbEF1ZGl0TG9nKDEpIikgKyBBZGRCdXR0b24oIlNhdmUuLi4iLCAiU2F2ZUF1ZGl0TG9nKCkiKSArIEFkZEJ1dHRvbigiQ2xlYXIgTG9nIiwgIkNsZWFyQXVkaXRMb2coKSIpIC8qICsgQWRkQnV0dG9uKCJTZXR0aW5ncy4uLiIsICJTaG93QXVkaXRMb2dTZXR0aW5ncygpIikqLykgKyAiPGJyPiI7DQogICAgICAgICAgICBpZiAobWVzc2FnZXMubGVuZ3RoID09IDApIHsNCiAgICAgICAgICAgICAgICB4ID0gIk5vIGF1ZGl0IGxvZyBldmVudHMgZm91bmQuIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdmFyIHkgPSAwOw0KICAgICAgICAgICAgICAgIHggKz0gIjx0YWJsZSBjbGFzcz1sb2cxIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4Pjx0cj48dGQgd2lkdGg9ODBweD48cD48dGQ+PHRkPjx0ZD4iOw0KICAgICAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MTEwcHg+Jm5ic3A7Jm5ic3A7PGI+VGltZTwvYj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MjYwcHg+PGI+SW5pdGlhdG9yPC9iPjx0ZCBjbGFzcz1yMT48Yj5BY3Rpb248L2I+IjsNCiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbWVzc2FnZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBtZXNzYWdlc1tpXSwgZGVzY3JpcHRpb24gPSBtWydBdWRpdEFwcCddLCBpbml0aWF0b3IgPSBtWydJbml0aWF0b3InXTsNCiAgICAgICAgICAgICAgICAgICAgeSsrOw0KICAgICAgICAgICAgICAgICAgICB2YXIgYWRkciA9ICcnOw0KICAgICAgICAgICAgICAgICAgICBpZiAobVsnTmV0QWRkcmVzcyddLmxlbmd0aCA+IDApIGFkZHIgPSBtWydOZXRBZGRyZXNzJ10ucmVwbGFjZSgnMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxJywnOjoxJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChtWydFdmVudCddKSBkZXNjcmlwdGlvbiArPSAiLCAiICsgbVsnRXZlbnQnXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG1bJ0V4U3RyJ10gIT0gbnVsbCkgZGVzY3JpcHRpb24gKz0gIiwgIiArIG1bJ0V4U3RyJ107DQogICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWF0b3IgIT0gJycgJiYgYWRkciAhPSAnJykgaW5pdGlhdG9yICs9ICIsICI7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjx0ciBpZD14YW10YXVkaXQiICsgaSArICIgY2xhc3M9cjMgb25jbGljaz1zaG93QXVkaXREZXRhaWxzKCIgKyBpICsgIik+PHRkIGNsYXNzPXIxIHRpdGxlPSciICsgbVsnVGltZSddLnRvTG9jYWxlU3RyaW5nKCkgKyAiJz4mbmJzcDsmbmJzcDsiICsgbVsnVGltZSddLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4nLCB7IHllYXI6ICJudW1lcmljIiwgbW9udGg6ICIyLWRpZ2l0IiwgZGF5OiAibnVtZXJpYyIgfSkgKyAiPGJyPiZuYnNwOyZuYnNwOyIgKyBtWydUaW1lJ10udG9Mb2NhbGVUaW1lU3RyaW5nKCdlbicsIHsgaG91cjoiMi1kaWdpdCIsIG1pbnV0ZToiMi1kaWdpdCIsIHNlY29uZDoiMi1kaWdpdCIgfSkgKyAiPHRkIGNsYXNzPXIxPiIgKyBpbml0aWF0b3IgKyBhZGRyICsgIjx0ZCBjbGFzcz1yMT4iICsgZGVzY3JpcHRpb247DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbmQoeSA9PSAwID8gIiZuYnNwOyIgOiAiIikgKyAiPGJyPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBRSCgnaWRfVGFibGVBdWRpdExvZzInLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGF1ZGl0RmlsdGVyKCkgew0KICAgICAgICAgICAgdmFyIGZpbHRlciA9IFEoJ2F1ZGl0RmlsdGVyJykudmFsdWUudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICAgIGZvciAodmFyIHcgaW4gYXVkaXRMb2cpIHsgUVYoJ3hhbXRhdWRpdCcgKyB3LCBmaWx0ZXIgPT0gJycgfHwgSlNPTi5zdHJpbmdpZnkoYXVkaXRMb2dbd10pLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID49IDApOyB9DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIFNhdmVBdWRpdExvZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgYXVkaXRMb2cgPT0gbnVsbCkgcmV0dXJuOw0KICAgICAgICAgICAgU2F2ZUpzb25GaWxlKCdJbnRlbEFtdEF1ZGl0bG9nJywgJ2F1ZGl0ZXZlbnRzJywgJ0ludGVsIEFNVCBBdWRpdCBMb2cnLCBhdWRpdExvZyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBDbGVhckF1ZGl0TG9nKHgpIHsgUUgoJ2lkX2RpYWxvZ01lc3NhZ2UnLCAnQ2xlYXIgYXVkaXQgbG9nPycpOyBzZXREaWFsb2dNb2RlKDEsICJBdWRpdCBMb2ciLCAzLCBDbGVhckF1ZGl0TG9nRXgpOyB9DQogICAgICAgIGZ1bmN0aW9uIENsZWFyQXVkaXRMb2dFeCgpIHsNCiAgICAgICAgICAgIC8vYW10c3RhY2suQU1UX0F1ZGl0TG9nX0NsZWFyTG9nKGZ1bmN0aW9uICgpIHsgUHVsbEF1ZGl0TG9nKCk7IH0pDQogICAgICAgICAgICB2YXIgaGFuZGxlID0gYW10c3RhY2suQU1UX0F1ZGl0TG9nX1NldEF1ZGl0TG9jaygxLDAsIGhhbmRsZSwgZnVuY3Rpb24oKSB7IGFtdHN0YWNrLkFNVF9BdWRpdExvZ19DbGVhckxvZyhmdW5jdGlvbiAoKSB7IGFtdHN0YWNrLkFNVF9BdWRpdExvZ19TZXRBdWRpdExvY2soMCwgMiwgaGFuZGxlLCBmdW5jdGlvbiAoKSB7IHNldFRpbWVvdXQoUHVsbEF1ZGl0TG9nLDEwMDApO30pOyB9KTsgfSk7ICAgICAgICAgDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBTaG93QXVkaXRMb2dTZXR0aW5ncygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BdWRpdExvZ19SZXF1ZXN0U3RhdGVDaGFuZ2UoMiwgMCwgQXVkaXRMb2dTZXR0aW5nc0NvbXBsZXRlZCk7IC8vIEVuYWJsZQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQXVkaXRMb2dTZXR0aW5nc0NvbXBsZXRlZChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSBQdWxsQXVkaXRMb2coKTsgZWxzZSBtZXNzYWdlYm94KCJBdWRpdCBMb2ciLCAiRXJyb3I6ICIgKyBzdGF0dXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0F1ZGl0RGV0YWlscyhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgaSwgbSA9IGF1ZGl0TG9nW2hdLCB4ID0gJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpsZWZ0Pic7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiVGltZSIsIG1bJ1RpbWUnXS50b0xvY2FsZVN0cmluZygpKTsNCiAgICAgICAgICAgIGlmIChtWydJbml0aWF0b3InXSAhPSAnJykgeCArPSBhZGRIdG1sVmFsdWUoIkluaXRpYXRvciIsIG1bJ0luaXRpYXRvciddKTsNCiAgICAgICAgICAgIGlmIChtWydOZXRBZGRyZXNzJ10gIT0gJycpIHggKz0gYWRkSHRtbFZhbHVlKCJBZGRyZXNzIiwgbVsnTmV0QWRkcmVzcyddKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJBcHBsaWNhdGlvbiIsIG1bJ0F1ZGl0QXBwJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkV2ZW50IiwgbVsnRXZlbnQnXSk7DQogICAgICAgICAgICBpZiAobVsnRXhTdHInXSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkV4dGVuZGVkIERhdGEiLCBtWydFeFN0ciddKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAobVsnRXgnXS5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgdmFyIGUgPSAnJzsNCiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbVsnRXgnXSkgeyBpZiAoZS5sZW5ndGggPiAwKSBlICs9ICcsJzsgZSArPSBtWydFeCddLmNoYXJDb2RlQXQoaSk7IH0NCiAgICAgICAgICAgICAgICBpZiAoZSAhPSAnJykgeCArPSBhZGRIdG1sVmFsdWUoIkRhdGEgVmFsdWVzIiwgZSk7DQogICAgICAgICAgICAgICAgaWYgKG1bJ0V4J10ubGVuZ3RoID4gMiAmJiBSZWFkU2hvcnQobVsnRXgnXSwgMCkgPT0gKG1bJ0V4J10ubGVuZ3RoIC0gMikpIHggKz0gYWRkSHRtbFZhbHVlKCJEYXRhIFN0cmluZyIsIG1bJ0V4J10uc3Vic3RyaW5nKDIpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjwvZGl2PiI7DQogICAgICAgICAgICBtZXNzYWdlYm94KCJBdWRpdCBFdmVudCAjIiArIChoICsgMSkgKyAiIERldGFpbHMiLCB4KTsNCiAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIENlcnRpZmljYXRlcw0KICAgICAgICAvLw0KDQogICAgICAgIHZhciB4eENlcnRpZmljYXRlcyA9IG51bGw7DQogICAgICAgIHZhciB4eENlcnRQcml2YXRlS2V5cyA9IG51bGw7DQogICAgICAgIHZhciB4eFRsc1NldHRpbmdzID0gbnVsbDsNCiAgICAgICAgdmFyIHh4VGxzQ3VycmVudENlcnQgPSBudWxsOw0KICAgICAgICB2YXIgeHhUTFNDcmVkZW50aWFsQ29udGV4dCA9IG51bGw7DQogICAgICAgIHZhciB4eENhUHJpdmF0ZUtleSA9IG51bGw7DQogICAgICAgIHZhciB4eENhU3ViamVjdEF0dHJpYnV0ZXMgPSBudWxsOw0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxDZXJ0aWZpY2F0ZXMoKSB7DQogICAgICAgICAgICAvLyBXZSBvbmx5IGRlYWwgd2l0aCBjZXJ0aWZpY2F0ZXMgc3RhcnRpbmcgd2l0aCBJbnRlbCBBTVQgNiBhbmQgYmV5b25kDQogICAgICAgICAgICBhbXRzdGFjay5CYXRjaEVudW0obnVsbCwgWyJBTVRfUHVibGljS2V5Q2VydGlmaWNhdGUiLCAiQU1UX1B1YmxpY1ByaXZhdGVLZXlQYWlyIiwgIkFNVF9UTFNTZXR0aW5nRGF0YSIsICJBTVRfVExTQ3JlZGVudGlhbENvbnRleHQiXSwgcHJvY2Vzc0NlcnRzMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQ2VydHMxKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKChzdGF0dXMgPT0gNDAwKSB8fCBlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgcmV0dXJuOw0KICAgICAgICAgICAgUVYoJ2dvMTYnLCB0cnVlKTsgLy8gU2VjdXJpdHkgU2V0dGluZ3MNCiAgICAgICAgICAgIHh4Q2VydGlmaWNhdGVzID0gcmVzcG9uc2VzWyJBTVRfUHVibGljS2V5Q2VydGlmaWNhdGUiXS5yZXNwb25zZXM7DQogICAgICAgICAgICB4eENlcnRQcml2YXRlS2V5cyA9IHJlc3BvbnNlc1siQU1UX1B1YmxpY1ByaXZhdGVLZXlQYWlyIl0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5ncyA9IHJlc3BvbnNlc1siQU1UX1RMU1NldHRpbmdEYXRhIl0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgeHhUTFNDcmVkZW50aWFsQ29udGV4dCA9IHJlc3BvbnNlc1siQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0Il0ucmVzcG9uc2VzOw0KDQogICAgICAgICAgICAvLyBTZWxlY3QgdGhlIGN1cnJlbnQgVExTIGNlcnRpZmljYXRlIGluIHRoZSBkcm9wIGRvd24gYm94DQogICAgICAgICAgICB4eFRsc0N1cnJlbnRDZXJ0ID0gbnVsbDsNCiAgICAgICAgICAgIGlmICh4eFRMU0NyZWRlbnRpYWxDb250ZXh0Lmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB2YXIgY2VydEluc3RhbmNlSWQgPSB4eFRMU0NyZWRlbnRpYWxDb250ZXh0WzBdWydFbGVtZW50SW5Db250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXTsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4Q2VydGlmaWNhdGVzKSB7IGlmICh4eENlcnRpZmljYXRlc1tpXVsnSW5zdGFuY2VJRCddID09IGNlcnRJbnN0YW5jZUlkKSB7IHh4VGxzQ3VycmVudENlcnQgPSBpOyB9IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gU2V0dXAgdGhlIGNlcnRpZmljYXRlcw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRpZmljYXRlcykgew0KICAgICAgICAgICAgICAgIHh4Q2VydGlmaWNhdGVzW2ldLlRydXN0ZWRSb290Q2VydGZpY2F0ZSA9ICh4eENlcnRpZmljYXRlc1tpXVsiVHJ1c3RlZFJvb3RDZXJ0ZmljYXRlIl0gPT0gdHJ1ZSk7DQogICAgICAgICAgICAgICAgeHhDZXJ0aWZpY2F0ZXNbaV0uWDUwOUNlcnRpZmljYXRlID0gd2luZG93LmF0b2IoeHhDZXJ0aWZpY2F0ZXNbaV1bIlg1MDlDZXJ0aWZpY2F0ZSJdKTsNCiAgICAgICAgICAgICAgICB4eENlcnRpZmljYXRlc1tpXS5YSXNzdWVyID0gcGFyc2VDZXJ0TmFtZSh4eENlcnRpZmljYXRlc1tpXVsiSXNzdWVyIl0pOw0KICAgICAgICAgICAgICAgIHh4Q2VydGlmaWNhdGVzW2ldLlhTdWJqZWN0ID0gcGFyc2VDZXJ0TmFtZSh4eENlcnRpZmljYXRlc1tpXVsiU3ViamVjdCJdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGFtdGNlcnRfbGlua0NlcnRQcml2YXRlS2V5KHh4Q2VydGlmaWNhdGVzLCB4eENlcnRQcml2YXRlS2V5cyk7IC8vIFRoaXMgbGlua3MgYWxsIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzDQoNCiAgICAgICAgICAgIHVwZGF0ZUNlcnRpZmljYXRlcygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcGFyc2VDZXJ0TmFtZSh4KSB7DQogICAgICAgICAgICB2YXIgaiwgciA9IHt9LCB4eCA9IHguc3BsaXQoJywnKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHgpIHsgaiA9IHh4W2ldLmluZGV4T2YoJz0nKTsgclt4eFtpXS5zdWJzdHJpbmcoMCwgaildID0geHhbaV0uc3Vic3RyaW5nKGogKyAxKTsgfQ0KICAgICAgICAgICAgcmV0dXJuIHI7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRUbHNTZWN1cml0eVN0YXRlKHgpIHsNCiAgICAgICAgICAgIGlmICh4eFRsc1NldHRpbmdzW3hdWydFbmFibGVkJ10gPT0gZmFsc2UpIHJldHVybiAiRGlzYWJsZWQiOw0KICAgICAgICAgICAgdmFyIHIgPSAoKHh4VGxzU2V0dGluZ3NbeF1bJ011dHVhbEF1dGhlbnRpY2F0aW9uJ10gPT0gdHJ1ZSkgPyAnTXV0dWFsLWF1dGggVExTJyA6ICdTZXJ2ZXItYXV0aCBUTFMnKSArICgoeHhUbHNTZXR0aW5nc1t4XVsnQWNjZXB0Tm9uU2VjdXJlQ29ubmVjdGlvbnMnXSA9PSB0cnVlKSA/ICIgYW5kIG5vbi1UTFMiIDogIiIpOw0KICAgICAgICAgICAgaWYgKCh4eFRsc1NldHRpbmdzW3hdWydNdXR1YWxBdXRoZW50aWNhdGlvbiddID09IHRydWUpICYmICh4eFRsc1NldHRpbmdzW3hdWydUcnVzdGVkQ04nXSkpIHsNCiAgICAgICAgICAgICAgICB2YXIgdHJ1c3RlZENuID0gTWFrZVRvQXJyYXkoeHhUbHNTZXR0aW5nc1t4XVsnVHJ1c3RlZENOJ10pOw0KICAgICAgICAgICAgICAgIGlmICh0cnVzdGVkQ24ubGVuZ3RoID4gMCkgeyByICs9ICIsIFRydXN0ZWQgbmFtZSIgKyAoKHRydXN0ZWRDbi5sZW5ndGggPiAxKT8ncyc6JycpICsgIjogIiArIHRydXN0ZWRDbi5qb2luKCcsICcpICsgIi4iOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcjsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNlcnRpZmljYXRlcygpIHsNCiAgICAgICAgICAgIGlmICh4eENlcnRpZmljYXRlcyA9PSBudWxsKSByZXR1cm47DQoNCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBpbmRleCBpcyBsb2NhbCAmIHJlbW90ZQ0KICAgICAgICAgICAgdmFyIGxvY2FsTmR4ID0gKCh4eFRsc1NldHRpbmdzWzBdWydJbnN0YW5jZUlEJ10gPT0gJ0ludGVsKHIpIEFNVCBMTVMgVExTIFNldHRpbmdzJykpID8gMCA6IDEsIHJlbW90ZU5keCA9ICgxIC0gbG9jYWxOZHgpOw0KDQogICAgICAgICAgICAvLyBHZW5lcmFsIHNldHRpbmdzDQogICAgICAgICAgICB2YXIgeCA9IFRhYmxlU3RhcnQoKTsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiUmVtb3RlIFRMUyBzZWN1cml0eSIsIGFkZExpbmtDb25kaXRpb25hbChnZXRUbHNTZWN1cml0eVN0YXRlKHJlbW90ZU5keCksICdzaG93U2V0VGxzU2VjdXJpdHlEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJMb2NhbCBUTFMgc2VjdXJpdHkiLCBhZGRMaW5rQ29uZGl0aW9uYWwoZ2V0VGxzU2VjdXJpdHlTdGF0ZShsb2NhbE5keCksICdzaG93U2V0VGxzU2VjdXJpdHlEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgeCArPSAiPGJyPiIgKyBUYWJsZVN0YXJ0MigpICsgIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBjZXJ0aWZpY2F0ZXMgZm9yIHRoaXMgY29tcHV0ZXIuPGJyPjxicj4iOw0KICAgICAgICAgICAgaWYgKHh4Q2VydGlmaWNhdGVzLmxlbmd0aCA9PSAwICYmIHh4Q2VydFByaXZhdGVLZXlzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+PGk+Tm8gY2VydGlmaWNhdGVzIGZvdW5kLjwvaT48L2Rpdj48YnI+IjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRpZmljYXRlcykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZGVzYyA9ICcnOw0KICAgICAgICAgICAgICAgICAgICBpZiAoeHhDZXJ0aWZpY2F0ZXNbaV0uVHJ1c3RlZFJvb3RDZXJ0ZmljYXRlKSBkZXNjID0gJywgVHJ1c3RlZCBSb290JzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHh4Q2VydGlmaWNhdGVzW2ldLlhQcml2YXRlS2V5KSBkZXNjID0gJywgUHJpdmF0ZSBLZXknOw0KICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSB4eFRsc0N1cnJlbnRDZXJ0KSBkZXNjICs9ICcsIFRMUyBjZXJ0JzsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd0NlcnREZXRhaWxzKCIgKyBpICsgIik+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDozcHg+PGI+IiArIEVzY2FwZUh0bWwoeHhDZXJ0aWZpY2F0ZXNbaV0uWFN1YmplY3RbIkNOIl0pICsgIjwvYj48aT4iICsgZGVzYyArICI8L2k+PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRQcml2YXRlS2V5cykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIXh4Q2VydFByaXZhdGVLZXlzW2ldLlhDZXJ0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93S2V5UGFpckRldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48aT5VbmFzc2lnbmVkIFByaXZhdGUgS2V5IFBhaXIgIyIgKyBpICsgIjwvaT48L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIGJ1dHRvbnMgPSBBZGRSZWZyZXNoQnV0dG9uKCJQdWxsQ2VydGlmaWNhdGVzKCkiKTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHsgYnV0dG9ucyArPSAoQWRkQnV0dG9uKCJBZGQgQ2VydGlmaWNhdGUuLi4iLCAiYWRkQ2VydEJ1dHRvbigpIikgKyBBZGRCdXR0b24oIklzc3VlIENlcnRpZmljYXRlLi4uIiwgImlzc3VlQ2VydEJ1dHRvbigpIikpOyB9DQogICAgICAgICAgICB4ICs9ICI8YnI+PHRkIGNsYXNzPXIxPiIgKyBUYWJsZUVuZChidXR0b25zKTsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZUNlcnRzJywgeCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93S2V5UGFpckRldGFpbHMoaCkgew0KICAgICAgICAgICAgdmFyIHggPSAiVGhpcyBpcyBhIHB1YmxpYy9wcml2YXRlIGNlcnRpZmljYXRlIGtleSBwYWlyIHRoYXQgZG9lcyBub3QgYmVsb25nIHRvIGFueSBjZXJ0aWZpY2F0ZXMuIFRoaXMgZW50cnkgc2hvdWxkIGJlIHRlbXBvcmFyeS4iOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIktleSBQYWlyICMiICsgaCwgNSwgZnVuY3Rpb24gKGIpIHsgaWYgKGIgPT0gMikgeyBhbXRzdGFjay5EZWxldGUoJ0FNVF9QdWJsaWNQcml2YXRlS2V5UGFpcicsIHsgJ0luc3RhbmNlSUQnOiB4eENlcnRQcml2YXRlS2V5c1toXVsnSW5zdGFuY2VJRCddIH0sIFB1bGxDZXJ0aWZpY2F0ZXMsIDAsIDEpOyB9IH0sIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHh4Q2VydFN1YmplY3ROYW1lcyA9IHsgJ0NOJzogJ0NvbW1vbiBOYW1lJywgJ08nOiAnT3JnYW5pemF0aW9uJywgJ09VJzogJ09yZyBVbml0JywgJ1MnOiAnU3RhdGUvUHJvdmluY2UnLCAnU1QnOiAnU3RhdGUvUHJvdmluY2UnLCAnTCc6ICdMb2NhbGl0eScsICdDJzogJ0NvdW50cnknLCAnU04nOiAnU3VybmFtZScsICdHTic6ICdHaXZlbiBuYW1lJyB9Ow0KICAgICAgICBmdW5jdGlvbiBzaG93Q2VydERldGFpbHMoaCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIGMgPSB4eENlcnRpZmljYXRlc1toXSwgeCA9ICc8YnI+JzsNCg0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkNlcnRpZmljYXRlIiwgYy5YNTA5Q2VydGlmaWNhdGUubGVuZ3RoICsgIiBieXRlcywgPGEgc3R5bGU9Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Ymx1ZSBvbmNsaWNrPWRvd25sb2FkQ2VydCgiICsgaCArICIpPkRvd25sb2FkPC9hPiIpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlRydXN0ZWQgcm9vdCIsIGMuVHJ1c3RlZFJvb3RDZXJ0ZmljYXRlID8gIlllcyIgOiAiTm8iKTsNCiAgICAgICAgICAgIGlmIChjLlRydXN0ZWRSb290Q2VydGZpY2F0ZSA9PSBmYWxzZSAmJiBjLlhQcml2YXRlS2V5KSB7IHggKz0gYWRkSHRtbFZhbHVlKCdQcml2YXRlIGtleScsICdQcmVzZW50Jyk7IH0NCg0KICAgICAgICAgICAgLy8gU2hvdyBjZXJ0aWZpY2F0ZSB1c2FnZXMNCiAgICAgICAgICAgIC8qDQogICAgICAgICAgICB5ID0gW107DQogICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2UgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIGlmIChleHRLZXlVc2FnZS5jbGllbnRBdXRoID09IHRydWUpIHsgeS5wdXNoKCJUTFMmbmJzcDtDbGllbnQiKTsgfQ0KICAgICAgICAgICAgICAgIGlmIChleHRLZXlVc2FnZS5jb2RlU2lnbmluZyA9PSB0cnVlKSB7IHkucHVzaCgiQ29kZSZuYnNwO1NpZ25pbmciKTsgfQ0KICAgICAgICAgICAgICAgIGlmIChleHRLZXlVc2FnZS5lbWFpbFByb3RlY3Rpb24gPT0gdHJ1ZSkgeyB5LnB1c2goIkVNYWlsIik7IH0NCiAgICAgICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2Uuc2VydmVyQXV0aCA9PSB0cnVlKSB7IHkucHVzaCgiVExTJm5ic3A7U2VydmVyIik7IH0NCiAgICAgICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2VbIjIuMTYuODQwLjEuMTEzNzQxLjEuMi4xIl0gPT0gdHJ1ZSkgeyB5LnB1c2goIkludGVsJnJlZzsmbmJzcDtBTVQgQ29uc29sZSIpOyB9DQogICAgICAgICAgICAgICAgaWYgKGV4dEtleVVzYWdlWyIyLjE2Ljg0MC4xLjExMzc0MS4xLjIuMiJdID09IHRydWUpIHsgeS5wdXNoKCJJbnRlbCZyZWc7Jm5ic3A7QU1UIEFnZW50Iik7IH0NCiAgICAgICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2VbIjIuMTYuODQwLjEuMTEzNzQxLjEuMi4zIl0gPT0gdHJ1ZSkgeyB5LnB1c2goIkludGVsJnJlZzsmbmJzcDtBTVQgQWN0aXZhdGlvbiIpOyB9DQogICAgICAgICAgICAgICAgaWYgKGV4dEtleVVzYWdlLnRpbWVTdGFtcGluZyA9PSB0cnVlKSB7IHkucHVzaCgiVGltZSZuYnNwO1N0YW1waW5nIik7IH0NCiAgICAgICAgICAgICAgICBpZiAoeS5sZW5ndGggPiAwKSB7IHggKz0gYWRkSHRtbFZhbHVlTm9UaXRsZSgiQ2VydGlmaWNhdGUgVXNhZ2UiLCB5LmpvaW4oJywgJykgKyAnLicpICsgJzxiciBjbGVhcj1hbGwgLz4nOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAqLw0KDQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheSI+PGk+Q2VydGlmaWNhdGUgU3ViamVjdDwvaT48L2Rpdj48YnI+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYy5YU3ViamVjdCkgeyBpZiAoYy5YU3ViamVjdFtpXSkgeyB4ICs9IGFkZEh0bWxWYWx1ZSh4eENlcnRTdWJqZWN0TmFtZXNbaV0gPyB4eENlcnRTdWJqZWN0TmFtZXNbaV0gOiBpLCBFc2NhcGVIdG1sKGMuWFN1YmplY3RbaV0pKTsgfSB9DQogICAgICAgICAgICAvLyB4ICs9IGFkZEh0bWxWYWx1ZU5vVGl0bGUoJ0ZpbmdlcnByaW50JywgYy5maW5nZXJwcmludC5zdWJzdHJpbmcoMCwyOSkgKyAnPGJyIC8+JyArIGMuZmluZ2VycHJpbnQuc3Vic3RyaW5nKDMwKSk7IC8vIFRPRE86IFBhcnNlIHRoZSBjZXJ0aWZpY2F0ZSB1c2luZyBGb3JnZSBhbmQgZ2V0IHRoZSBmaW5nZXJwcmludA0KICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXkiPjxpPklzc3VlciBDZXJ0aWZpY2F0ZTwvaT48L2Rpdj48YnI+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYy5YSXNzdWVyKSB7IGlmIChjLlhJc3N1ZXJbaV0pIHsgeCArPSBhZGRIdG1sVmFsdWUoeHhDZXJ0U3ViamVjdE5hbWVzW2ldID8geHhDZXJ0U3ViamVjdE5hbWVzW2ldIDogaSwgRXNjYXBlSHRtbChjLlhJc3N1ZXJbaV0pKTsgfSB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQ2VydGlmaWNhdGUgLSAiICsgRXNjYXBlSHRtbChjLlhTdWJqZWN0WyJDTiJdKSwgNSwgZnVuY3Rpb24gKGIpIHsNCiAgICAgICAgICAgICAgICBpZiAoYiA9PSAyKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJpdmF0ZSBrZXksIGRlbGV0ZSBpdC4NCiAgICAgICAgICAgICAgICAgICAgaWYgKHh4Q2VydGlmaWNhdGVzW2hdLlhQcml2YXRlS2V5KSBhbXRzdGFjay5EZWxldGUoJ0FNVF9QdWJsaWNQcml2YXRlS2V5UGFpcicsIHsgJ0luc3RhbmNlSUQnOiB4eENlcnRpZmljYXRlc1toXS5YUHJpdmF0ZUtleVsnSW5zdGFuY2VJRCddIH0sIGZ1bmN0aW9uICgpIHsgfSwgMCwgMSk7DQogICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgY2VydGlmaWNhdGUNCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suRGVsZXRlKCdBTVRfUHVibGljS2V5Q2VydGlmaWNhdGUnLCB4eENlcnRpZmljYXRlc1toXSwgY2VydGlmaWNhdGVSZW1vdmVkLCAwLCAxKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LCB4KTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRDZXJ0KGgpIHsgDQoNCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoeHhDZXJ0aWZpY2F0ZXNbaF0uWDUwOUNlcnRpZmljYXRlKSwgeHhDZXJ0aWZpY2F0ZXNbaF0uWFN1YmplY3RbJ0NOJ10gKyAiLmNlciIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2VydF9GaWxlU2VsZWN0SGFuZGxlcihlKSB7DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgICAgICBpZiAoZS5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID09IDEpIHsNCiAgICAgICAgICAgICAgICBpZiAoZS5kYXRhVHJhbnNmZXIuZmlsZXNbMF0ubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcucDEyJykpIHsNCiAgICAgICAgICAgICAgICAgICAgaXNzdWVDZXJ0QnV0dG9uKGUuZGF0YVRyYW5zZmVyLmZpbGVzKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBhZGRDZXJ0QnV0dG9uKGUuZGF0YVRyYW5zZmVyLmZpbGVzKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgeHhEcmFnRHJvcENlcnRGaWxlcyA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIGFkZENlcnRCdXR0b24oZmlsZXMpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgIXh4QWNjb3VudEFkbWluTmFtZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MTBweD48L2Rpdj4nOw0KICAgICAgICAgICAgeHhEcmFnRHJvcENlcnRGaWxlcyA9IGZpbGVzOw0KDQogICAgICAgICAgICB2YXIgaW5wdXQgPSAiPGlucHV0IGlkPWNlcnRvcGVuIG9uY2hhbmdlPWFkZENlcnRCdXR0b25VcGRhdGUoKSB0eXBlPWZpbGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggYWNjZXB0PScuY2VyLC5wZW0nPiI7DQogICAgICAgICAgICBpZiAoeHhEcmFnRHJvcENlcnRGaWxlcykgeyBpbnB1dCA9ICc8aW5wdXQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggcmVhZG9ubHkgZGlzYWJsZWQgdmFsdWU9IicgKyB4eERyYWdEcm9wQ2VydEZpbGVzWzBdLm5hbWUgKyAnIj4nOyB9DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PiIgKyBpbnB1dCArICI8ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5DZXJ0aWZpY2F0ZSBmaWxlPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1jZXJ0dHlwZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweD48b3B0aW9uIHZhbHVlPTA+Q2hhaW4gQ2VydGlmaWNhdGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPTE+VHJ1c3RlZCBSb290IENlcnRpZmljYXRlPC9vcHRpb24+PC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGUgdHlwZTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQWRkIENlcnRpZmljYXRlIiwgMywgYWRkQ2VydEJ1dHRvbk9rLCB4KTsNCiAgICAgICAgICAgIGFkZENlcnRCdXR0b25VcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZENlcnRCdXR0b25VcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgY2VydG9wZW4gPSBnZXRJbnB1dEVsZW1lbnQoJ2NlcnRvcGVuJyk7DQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgIWNlcnRvcGVuIHx8IGNlcnRvcGVuLmZpbGVzLmxlbmd0aCA9PSAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZENlcnRCdXR0b25PaygpIHsNCg0KICAgICAgICAgICAgdmFyIGNlcnRvcGVuID0gZ2V0SW5wdXRFbGVtZW50KCdjZXJ0b3BlbicpOw0KICAgICAgICAgICAgdmFyIGZpbGVzID0geHhEcmFnRHJvcENlcnRGaWxlczsNCiAgICAgICAgICAgIGlmIChjZXJ0b3BlbikgZmlsZXMgPSBjZXJ0b3Blbi5maWxlczsNCiAgICAgICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPT0gMSkgew0KICAgICAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOw0KICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBhZGRDZXJ0QnV0dG9uT2syOw0KICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZXNbMF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBmdW5jdGlvbiBhZGRDZXJ0QnV0dG9uT2syKGZpbGUpIHsNCiAgICAgICAgICAgIHZhciBkYXRhID0gZmlsZS50YXJnZXQucmVzdWx0Ow0KICAgICAgICAgICAgdmFyIGkgPSBkYXRhLmluZGV4T2YoJy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLScpOw0KICAgICAgICAgICAgaWYgKGkgPiAwKSB7DQogICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIC5QRU0gZmlsZSwga2VlcCBldmVyeXRoaW5nIGJldHdlZW4gQkVHSU4vRU5ELCBjbGVhbiBpdCB1cCBhbmQgdXNlIGFzLWlzLiBJdCdzIGFscmVhZHkgQmFzZTY0Lg0KICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhpICsgMjcpOw0KICAgICAgICAgICAgICAgIGkgPSBkYXRhLmluZGV4T2YoJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nKTsNCiAgICAgICAgICAgICAgICBpZiAoaSA+IDApIGRhdGEgPSBkYXRhLnN1YnN0cmluZygwLCBpKQ0KICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1xyXG4vZywgJycpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgLkNFUiBmaWxlLCBqdXN0IGJhc2U2NCBlbmNvZGUgaXQgYW5kIHdlIHNob3VsZCBiZSBvay4NCiAgICAgICAgICAgICAgICBkYXRhID0gYnRvYShkYXRhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChnZXRTZWxlY3RFbGVtZW50KCdjZXJ0dHlwZScpLnZhbHVlID09IDEpIHsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkVHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZShkYXRhLCBjZXJ0aWZpY2F0ZUFkZGVkKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgYW10c3RhY2suQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0FkZENlcnRpZmljYXRlKGRhdGEsIGNlcnRpZmljYXRlQWRkZWQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaXNzdWVDZXJ0QnV0dG9uKGZpbGVzKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8ICF4eEFjY291bnRBZG1pbk5hbWUpIHJldHVybjsNCiAgICAgICAgICAgIHh4RHJhZ0Ryb3BDZXJ0RmlsZXMgPSBmaWxlczsNCg0KDQoNCiAgICAgICAgICAgIHZhciB4ID0gJycsIGlucHV0ID0gIjxpbnB1dCBpZD1jZXJ0b3BlbiB0eXBlPWZpbGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHggb25jaGFuZ2U9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgYWNjZXB0PScucDEyJz4iOw0KICAgICAgICAgICAgaWYgKHh4RHJhZ0Ryb3BDZXJ0RmlsZXMpIHsgaW5wdXQgPSAnPGlucHV0IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4IHJlYWRvbmx5IGRpc2FibGVkIHZhbHVlPSInICsgeHhEcmFnRHJvcENlcnRGaWxlc1swXS5uYW1lICsgJyI+JzsgfQ0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZWhlaWdodDoyNnB4O21hcmdpbi10b3A6MTRweD4iICsgaW5wdXQgKyAiPGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGUgZmlsZTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxpbnB1dCBvbmtleXVwPWlzc3VlQ2VydEJ1dHRvblVwZGF0ZSgpIGlkPWNlcnRvcGVucGFzcyB0eXBlPXBhc3N3b3JkIGF1dG9jb21wbGV0ZT1vZmYgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHg+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGUgcGFzc3dvcmQ8L2Rpdj48L2Rpdj4iOw0KDQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheSI+PGk+SW50ZWwmcmVnOyBBTVQgQ2VydGlmaWNhdGU8L2k+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydGNuIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PkNvbW1vbiBOYW1lPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydG8gc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHg+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+T3JnYW5pemF0aW9uPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydHN0IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlN0YXRlL1Byb3ZpbmNlPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydGMgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHg+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q291bnRyeTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICc8ZGl2PkNlcnRpZmljYXRlIFVzYWdlczwvZGl2Pjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOm5vbmU7aGVpZ2h0OjEwMHB4O292ZXJmbG93OmF1dG87d2lkdGg6MTAwJTtib3JkZXI6IDFweCBzb2xpZCAjMDAwO2JhY2tncm91bmQtY29sb3I6d2hpdGU7b3ZlcmZsb3cteDpoaWRkZW47bWFyZ2luOjA7cGFkZGluZzowIj4nOw0KICAgICAgICAgICAgLy94ICs9ICc8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGlkPWQxMV9jdTE+SW50ZWwmcmVnOyBBTVQgQ29uc29sZTwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgLy94ICs9ICc8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGlkPWQxMV9jdTI+SW50ZWwmcmVnOyBBTVQgQWdlbnQ8L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIC8veCArPSAnPGxpPjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBpZD1kMTFfY3UzPkludGVsJnJlZzsgQU1UIEFjdGl2YXRpb248L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggaWQ9ZDExX2N1NCBjaGVja2VkPlRMUyBTZXJ2ZXIgKEhUVFBTKTwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgeCArPSAnPGxpPjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBpZD1kMTFfY3U1PlRMUyBDbGllbnQgKEhUVFBTKTwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgeCArPSAnPGxpPjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBpZD1kMTFfY3U2PkVtYWlsIFByb3RlY3Rpb248L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggaWQ9ZDExX2N1Nz5Db2RlIFNpZ25pbmc8L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggaWQ9ZDExX2N1OD5UaW1lIFN0YW1wPC9sYWJlbD48L2xpPic7DQogICAgICAgICAgICB4ICs9ICc8L3VsPic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiSXNzdWUgQ2VydGlmaWNhdGUiLCAzLCBpc3N1ZUNlcnRCdXR0b25PaywgeCk7DQogICAgICAgICAgICBpc3N1ZUNlcnRCdXR0b25VcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzc3VlQ2VydEJ1dHRvblVwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBjZXJ0b3BlbiA9IGdldElucHV0RWxlbWVudCgnY2VydG9wZW4nKTsNCiAgICAgICAgICAgIFFFKCdjZXJ0b3BlbnBhc3MnLCAhY2VydG9wZW4gfHwgKGNlcnRvcGVuICYmIGNlcnRvcGVuLmZpbGVzLmxlbmd0aCA9PSAxKSk7DQogICAgICAgICAgICB2YXIgeCA9ICghY2VydG9wZW4gfHwgY2VydG9wZW4uZmlsZXMubGVuZ3RoIDwgMik7DQogICAgICAgICAgICBpZiAoKCFjZXJ0b3BlbiB8fCAoY2VydG9wZW4gJiYgY2VydG9wZW4uZmlsZXMubGVuZ3RoKSkgPT0gMSAmJiBRKCdjZXJ0b3BlbnBhc3MnKS52YWx1ZSA9PSAnJykgeCA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKGdldElucHV0RWxlbWVudCgnY2VydGNuJykudmFsdWUgPT0gJycgfHwgZ2V0SW5wdXRFbGVtZW50KCdjZXJ0bycpLnZhbHVlID09ICcnIHx8IGdldElucHV0RWxlbWVudCgnY2VydHN0JykudmFsdWUgPT0gJycgfHwgZ2V0SW5wdXRFbGVtZW50KCdjZXJ0YycpLnZhbHVlID09ICcnKSB7IHggPSBmYWxzZTsgfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaXNzdWVDZXJ0QnV0dG9uT2soKSB7DQoNCiAgICAgICAgICAgIHZhciBjZXJ0b3BlbiA9IGdldElucHV0RWxlbWVudCgnY2VydG9wZW4nKTsNCiAgICAgICAgICAgIHZhciBmaWxlcyA9IHh4RHJhZ0Ryb3BDZXJ0RmlsZXM7DQogICAgICAgICAgICBpZiAoY2VydG9wZW4pIGZpbGVzID0gY2VydG9wZW4uZmlsZXM7DQogICAgICAgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID09IDEpIHsNCiAgICAgICAgICAgICAgICAvLyBJc3N1ZSBhIGNlcnRpZmljYXRlIHVzaW5nIHRoaXMgZmlsZQ0KICAgICAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOw0KICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBpc3N1ZUNlcnRCdXR0b25PazI7DQogICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlc1swXSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIElzc3VlIGEgY2VydGlmaWNhdGUgdXNpbmcgYSBkdW1teSBDQQ0KICAgICAgICAgICAgICAgIGlzc3VlQ2VydEJ1dHRvbk9rMyhudWxsKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzc3VlQ2VydEJ1dHRvbk9rMihmaWxlKSB7DQogICAgICAgICAgICAvLyBMb2FkIHRoZSBDQSBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkNCiAgICAgICAgICAgIHZhciByID0gYW10Y2VydF9sb2FkUDEyRmlsZShmaWxlLnRhcmdldC5yZXN1bHQsIFEoJ2NlcnRvcGVucGFzcycpLnZhbHVlLCBpc3N1ZUNlcnRCdXR0b25PazMpOw0KICAgICAgICAgICAgaWYgKHIgPT0gZmFsc2UpIHsgbWVzc2FnZWJveCgiSXNzdWUgQ2VydGlmaWNhdGUiLCAiVW5hYmxlIHRvIGRlY3J5cHQvZGVjb2RlIGNlcnRpZmljYXRlLiIpOyByZXR1cm47IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzc3VlQ2VydEJ1dHRvbk9rMyhwcml2YXRlS2V5LCBzdWJqZWN0QXR0cmlidXRlcywgY2VydCkgew0KICAgICAgICAgICAgLy8gQXNrIEludGVsIEFNVCB0byBnZW5lcmF0ZSBhIGtleSBwYWlyDQogICAgICAgICAgICB4eENhUHJpdmF0ZUtleSA9IHByaXZhdGVLZXk7DQogICAgICAgICAgICB4eENhU3ViamVjdEF0dHJpYnV0ZXMgPSBzdWJqZWN0QXR0cmlidXRlczsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZV9HZW5lcmF0ZUtleVBhaXIoMCwgMjA0OCwgR2VuZXJhdGVLZXlQYWlyUmVzcG9uc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gR2VuZXJhdGVLZXlQYWlyUmVzcG9uc2Uoc3RhY2ssIHNlcnZpY2VOYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCdJc3N1ZSBDZXJ0aWZpY2F0ZScsICdGYWlsZWQgdG8gZ2VuZXJhdGUga2V5IHBhaXIuIFN0YXR1czogJyArIHN0YXR1cyk7IHJldHVybjsgfQ0KICAgICAgICAgICAgaWYgKHJlc3BvbnNlLkJvZHlbJ1JldHVyblZhbHVlJ10gIT0gMCkgeyBtZXNzYWdlYm94KCdJc3N1ZSBDZXJ0aWZpY2F0ZScsICdGYWlsZWQgdG8gZ2VuZXJhdGUga2V5IHBhaXIsICcgKyByZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZVN0ciddKTsgcmV0dXJuOyB9DQoNCiAgICAgICAgICAgIC8vIEdldCB0aGUgbmV3IGtleSBwYWlyDQogICAgICAgICAgICBhbXRzdGFjay5FbnVtKCJBTVRfUHVibGljUHJpdmF0ZUtleVBhaXIiLCBHZW5lcmF0ZUtleVBhaXJSZXNwb25zZTIsIHJlc3BvbnNlLkJvZHlbJ0tleVBhaXInXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEdlbmVyYXRlS2V5UGFpclJlc3BvbnNlMihzdGFjaywgc2VydmljZU5hbWUsIHJlc3BvbnNlLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgbWVzc2FnZWJveCgnSXNzdWUgQ2VydGlmaWNhdGUnLCAnRmFpbGVkIHRvIGdlbmVyYXRlIGtleSBwYWlyLiBTdGF0dXM6ICcgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgIHZhciBERVJLZXkgPSBudWxsOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiByZXNwb25zZSkgeyBpZiAocmVzcG9uc2VbaV1bJ0luc3RhbmNlSUQnXSA9PSB0YWcpIERFUktleSA9IHJlc3BvbnNlW2ldWydERVJLZXknXTsgfQ0KDQogICAgICAgICAgICAvLyBHZXQgY2VydGlmaWNhdGUgdmFsdWVzDQogICAgICAgICAgICB2YXIgY2VydGF0dHJpYnV0ZXMgPSB7ICdDTic6IGdldElucHV0RWxlbWVudCgnY2VydGNuJykudmFsdWUsICdPJzogZ2V0SW5wdXRFbGVtZW50KCdjZXJ0bycpLnZhbHVlLCAnU1QnOiBnZXRJbnB1dEVsZW1lbnQoJ2NlcnRzdCcpLnZhbHVlLCAnQyc6IGdldElucHV0RWxlbWVudCgnY2VydGMnKS52YWx1ZSB9Ow0KICAgICAgICAgICAgdmFyIGlzc3VlcmF0dHJpYnV0ZXMgPSB7ICdDTic6ICdVbnRydXN0ZWQgUm9vdCBDZXJ0aWZpY2F0ZScgfTsNCiAgICAgICAgICAgIGlmICh4eENhUHJpdmF0ZUtleSAhPSBudWxsICYmIHh4Q2FTdWJqZWN0QXR0cmlidXRlcykgew0KICAgICAgICAgICAgICAgIGlzc3VlcmF0dHJpYnV0ZXMgPSB7fTsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4Q2FTdWJqZWN0QXR0cmlidXRlcykgew0KICAgICAgICAgICAgICAgICAgICBpc3N1ZXJhdHRyaWJ1dGVzW3h4Q2FTdWJqZWN0QXR0cmlidXRlc1tpXS5zaG9ydE5hbWVdID0geHhDYVN1YmplY3RBdHRyaWJ1dGVzW2ldLnZhbHVlOyAvLyBUaGUgaXNzdWluZyBDQSdzIHN1YmplY3QgYXR0cmlidXRlcyANCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IA0KDQogICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBleHRlbmRlZCBrZXkgdXNhZ2VzDQogICAgICAgICAgICB2YXIgZXh0S2V5VXNhZ2UgPSB7IG5hbWU6ICdleHRLZXlVc2FnZScgfQ0KICAgICAgICAgICAgLy9pZiAoUSgnZDExX2N1MScpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2VbJzIuMTYuODQwLjEuMTEzNzQxLjEuMi4xJ10gPSB0cnVlOyBleHRLZXlVc2FnZS5jbGllbnRBdXRoID0gdHJ1ZTsgfQ0KICAgICAgICAgICAgLy9pZiAoUSgnZDExX2N1MicpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2VbJzIuMTYuODQwLjEuMTEzNzQxLjEuMi4yJ10gPSB0cnVlOyBleHRLZXlVc2FnZS5jbGllbnRBdXRoID0gdHJ1ZTsgfQ0KICAgICAgICAgICAgLy9pZiAoUSgnZDExX2N1MycpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2VbJzIuMTYuODQwLjEuMTEzNzQxLjEuMi4zJ10gPSB0cnVlOyBleHRLZXlVc2FnZS5jbGllbnRBdXRoID0gdHJ1ZTsgfQ0KICAgICAgICAgICAgaWYgKFEoJ2QxMV9jdTQnKS5jaGVja2VkKSB7IGV4dEtleVVzYWdlLnNlcnZlckF1dGggPSB0cnVlOyB9DQogICAgICAgICAgICBpZiAoUSgnZDExX2N1NScpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2UuY2xpZW50QXV0aCA9IHRydWU7IH0NCiAgICAgICAgICAgIGlmIChRKCdkMTFfY3U2JykuY2hlY2tlZCkgeyBleHRLZXlVc2FnZS5lbWFpbFByb3RlY3Rpb24gPSB0cnVlOyB9DQogICAgICAgICAgICBpZiAoUSgnZDExX2N1NycpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2UuY29kZVNpZ25pbmcgPSB0cnVlOyB9DQogICAgICAgICAgICBpZiAoUSgnZDExX2N1OCcpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2UudGltZVN0YW1waW5nID0gdHJ1ZTsgfQ0KDQogICAgICAgICAgICAvLyBTaWduIHRoZSBrZXkgcGFpciB1c2luZyB0aGUgQ0EgY2VydGlmaWF0ZQ0KICAgICAgICAgICAgdmFyIGNlcnQgPSBhbXRjZXJ0X3NpZ25XaXRoQ2FLZXkoREVSS2V5LCB4eENhUHJpdmF0ZUtleSwgY2VydGF0dHJpYnV0ZXMsIGlzc3VlcmF0dHJpYnV0ZXMsIGV4dEtleVVzYWdlKTsNCiAgICAgICAgICAgIGlmIChjZXJ0ID09IG51bGwpIHsgbWVzc2FnZWJveCgnSXNzdWUgQ2VydGlmaWNhdGUnLCAnVW5hYmxlIHRvIHNpZ24gY2VydGlmaWNhdGUuJyk7IHJldHVybjsgfQ0KDQogICAgICAgICAgICAvLyBQbGFjZSB0aGUgcmVzdWx0aW5nIHNpZ25lZCBjZXJ0aWZpY2F0ZSBiYWNrIGludG8gQU1UDQogICAgICAgICAgICB2YXIgcGVtID0gZm9yZ2UucGtpLmNlcnRpZmljYXRlVG9QZW0oY2VydCkucmVwbGFjZSgvKFxyXG58XG58XHIpL2dtLCAiIik7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkQ2VydGlmaWNhdGUocGVtLnN1YnN0cmluZygyNywgcGVtLmxlbmd0aCAtIDI1KSwgR2VuZXJhdGVLZXlQYWlyUmVzcG9uc2U0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEdlbmVyYXRlS2V5UGFpclJlc3BvbnNlNChzdGFjaywgc2VydmljZU5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goJ0lzc3VlIENlcnRpZmljYXRlJywgJ0ZhaWxlZCB0byBnZW5lcmF0ZSBrZXkgcGFpci4gU3RhdHVzOiAnICsgc3RhdHVzKTsgcmV0dXJuOyB9DQogICAgICAgICAgICBQdWxsQ2VydGlmaWNhdGVzKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBjZXJ0aWZpY2F0ZUFkZGVkKHN0YWNrLCBzZXJ2aWNlTmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgeyBpZiAoc3RhdHVzICE9IDIwMCB8fCByZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZSddICE9IDApIHsgbWVzc2FnZWJveCgnQWRkIENlcnRpZmljYXRlJywgJ1VuYWJsZSB0byBhZGQgY2VydGlmaWNhdGUsIGVycm9yICcgKyAoc3RhdHVzICE9IDIwMCA/IHN0YXR1cyA6IHJlc3BvbnNlLkJvZHlbJ1JldHVyblZhbHVlU3RyJ10pKTsgfSBlbHNlIFB1bGxDZXJ0aWZpY2F0ZXMoKTsgfQ0KICAgICAgICBmdW5jdGlvbiBjZXJ0aWZpY2F0ZVJlbW92ZWQoc3RhY2ssIHNlcnZpY2VOYW1lLCBoZWFkZXIsIHN0YXR1cykgeyBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCdSZW1vdmUgQ2VydGlmaWNhdGUnLCAnVW5hYmxlIHRvIHJlbW92ZSBjZXJ0aWZpY2F0ZSwgZXJyb3IgJyArIHN0YXR1cyk7IH0gZWxzZSBQdWxsQ2VydGlmaWNhdGVzKCk7IH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRJbnB1dEVsZW1lbnQoaWQpIHsgdmFyIGFsbGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7IGZvciAodCA9IDA7IHQgPCBhbGxlbGVtZW50cy5sZW5ndGg7IHQrKykgeyBpZiAoYWxsZWxlbWVudHNbdF0uaWQgPT0gaWQpIHJldHVybiBhbGxlbGVtZW50c1t0XTsgfSB9DQogICAgICAgIGZ1bmN0aW9uIGdldFNlbGVjdEVsZW1lbnQoaWQpIHsgdmFyIGFsbGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpOyBmb3IgKHQgPSAwOyB0IDwgYWxsZWxlbWVudHMubGVuZ3RoOyB0KyspIHsgaWYgKGFsbGVsZW1lbnRzW3RdLmlkID09IGlkKSByZXR1cm4gYWxsZWxlbWVudHNbdF07IH0gfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXRUbHNTZWN1cml0eURsZyh4KSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48c2VsZWN0IG9uY2hhbmdlPXNob3dTZXRUbHNTZWN1cml0eURsZ1VwZGF0ZSgpIGlkPXRsc2NlcnQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHg+PG9wdGlvbiB2YWx1ZT0tMT5ObyBDZXJ0aWZpY2F0ZSwgVExTIERpc2FibGVkPC9vcHRpb24+IjsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDZXJ0aWZpY2F0ZXMpIHsgaWYgKHh4Q2VydGlmaWNhdGVzW2ldLlRydXN0ZWRSb290Q2VydGZpY2F0ZSA9PSBmYWxzZSAmJiB4eENlcnRpZmljYXRlc1tpXS5YUHJpdmF0ZUtleSAmJiAoeHhUbHNDdXJyZW50Q2VydCA9PSBudWxsIHx8IHh4VGxzQ3VycmVudENlcnQgPT0gaSkpIHsgeCArPSAiPG9wdGlvbiB2YWx1ZT0iICsgaSArICI+IiArIHh4Q2VydGlmaWNhdGVzW2ldLlhTdWJqZWN0WyJDTiJdICsgIjwvb3B0aW9uPiI7IH0gfQ0KICAgICAgICAgICAgeCArPSAiPC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGU8L2Rpdj48L2Rpdj4iOw0KDQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9dGxzcmVtb3RlIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9uY2hhbmdlPXNob3dTZXRUbHNTZWN1cml0eURsZ1VwZGF0ZSgpPjxvcHRpb24gdmFsdWU9MD5TZXJ2ZXItYXV0aCBUTFMgb25seTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9MT5TZXJ2ZXItYXV0aCwgbm9uLVRMUyBhbGxvd2VkPC9vcHRpb24+IjsNCiAgICAgICAgICAgIGlmIChhbXR2ZXJzaW9uIDwgOCkgeyB4ICs9ICI8b3B0aW9uIHZhbHVlPTI+TXV0dWFsLWF1dGggVExTIG9ubHk8L29wdGlvbj48b3B0aW9uIHZhbHVlPTM+TXV0dWFsLWF1dGgsIG5vbi1UTFMgYWxsb3dlZDwvb3B0aW9uPiI7IH0gLy8gU3VwcG9ydCBmb3IgbXV0dWFsLWF1dGggVExTIHNlZW1zIHRvIGhhdmUgYmVlbiByZW1vdmVkIG9uIEFNVDggYW5kIGFmdGVyDQogICAgICAgICAgICB4ICs9ICI8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5TZWN1cml0eTwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHggaWQ9ZDExcmNuIHRpdGxlPSdDb21tYSBzZXBlcmF0ZWQgbGlzdCBvZiBjZXJ0aWZpY2F0ZSBjb21tb24gbmFtZXMgdGhhdCB3aWxsIGJlIGFsbG93ZWQgdG8gY29ubmVjdCByZW1vdGVseS4nPjxpbnB1dCBpZD1kMTFfcmNuIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9ua2V5dXA9c2hvd1NldFRsc1NlY3VyaXR5RGxnVXBkYXRlKCkgcGxhY2Vob2xkZXI9J25hbWUxLCBuYW1lMic+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+UmVtb3RlIENOJ3M8L2Rpdj48L2Rpdj4iOw0KDQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiVExTIFNldHRpbmdzIiwgMywgc2hvd1NldFRsc1NlY3VyaXR5RGxnT2ssIHgpOw0KDQogICAgICAgICAgICAvLyBTZWxlY3QgdGhlIGN1cnJlbnQgVExTIGNlcnRpZmljYXRlIGluIHRoZSBkcm9wIGRvd24gYm94DQogICAgICAgICAgICBpZiAoKHh4VExTQ3JlZGVudGlhbENvbnRleHQubGVuZ3RoID09IDApIHx8ICh4eFRsc1NldHRpbmdzWzBdWydFbmFibGVkJ10gPT0gZmFsc2UpIHx8ICh4eFRsc1NldHRpbmdzWzFdWydFbmFibGVkJ10gPT0gZmFsc2UpKSB7DQogICAgICAgICAgICAgICAgZ2V0U2VsZWN0RWxlbWVudCgndGxzY2VydCcpLnZhbHVlID0gLTE7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBjZXJ0SW5zdGFuY2VJZCA9IHh4VExTQ3JlZGVudGlhbENvbnRleHRbMF1bJ0VsZW1lbnRJbkNvbnRleHQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDZXJ0aWZpY2F0ZXMpIHsgaWYgKHh4Q2VydGlmaWNhdGVzW2ldWydJbnN0YW5jZUlEJ10gPT0gY2VydEluc3RhbmNlSWQpIHsgZ2V0U2VsZWN0RWxlbWVudCgndGxzY2VydCcpLnZhbHVlID0gaTsgfSB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBpbmRleCBpcyBsb2NhbCAmIHJlbW90ZQ0KICAgICAgICAgICAgdmFyIGxvY2FsTmR4ID0gKCh4eFRsc1NldHRpbmdzWzBdWydJbnN0YW5jZUlEJ10gPT0gJ0ludGVsKHIpIEFNVCBMTVMgVExTIFNldHRpbmdzJykpID8gMCA6IDEsIHJlbW90ZU5keCA9ICgxIC0gbG9jYWxOZHgpOw0KDQogICAgICAgICAgICAvLyBTZWxlY3QgY29ycmVjdCBUTFMgb3B0aW9ucyBpbiB0aGUgZHJvcCBkb3duIGJveGVzDQogICAgICAgICAgICBnZXRTZWxlY3RFbGVtZW50KCd0bHNyZW1vdGUnKS52YWx1ZSA9ICgoeHhUbHNTZXR0aW5nc1tyZW1vdGVOZHhdWydNdXR1YWxBdXRoZW50aWNhdGlvbiddID09IHRydWUpID8gMiA6IDApICsgKCh4eFRsc1NldHRpbmdzW3JlbW90ZU5keF1bJ0FjY2VwdE5vblNlY3VyZUNvbm5lY3Rpb25zJ10gPT0gdHJ1ZSkgPyAxIDogMCk7DQogICAgICAgICAgICBpZiAoeHhUbHNTZXR0aW5nc1tyZW1vdGVOZHhdWydUcnVzdGVkQ04nXSkgeyBRKCdkMTFfcmNuJykudmFsdWUgPSBNYWtlVG9BcnJheSh4eFRsc1NldHRpbmdzW3JlbW90ZU5keF1bJ1RydXN0ZWRDTiddKS5qb2luKCcsICcpOyB9DQoNCiAgICAgICAgICAgIHNob3dTZXRUbHNTZWN1cml0eURsZ1VwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1NldFRsc1NlY3VyaXR5RGxnVXBkYXRlKCkgew0KICAgICAgICAgICAgdmFyIGggPSBnZXRTZWxlY3RFbGVtZW50KCd0bHNjZXJ0JykudmFsdWU7DQogICAgICAgICAgICBRRSgndGxzcmVtb3RlJywgaCAhPSAtMSk7DQogICAgICAgICAgICBRVignZDExcmNuJywgKGggIT0gLTEpICYmIChnZXRTZWxlY3RFbGVtZW50KCd0bHNyZW1vdGUnKS52YWx1ZSA+IDEpKTsNCiAgICAgICAgICAgIHZhciBvayA9IHRydWU7DQogICAgICAgICAgICBpZiAoKGdldFNlbGVjdEVsZW1lbnQoJ3Rsc3JlbW90ZScpLnZhbHVlID4gMSkgJiYgKCFzcGxpdERvbWFpbnMoUSgnZDExX3JjbicpLnZhbHVlKSkpIHsgb2sgPSBmYWxzZTsgfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhciBzZXRUbHNTZWN1cml0eVBlbmRpbmdDYWxsczsNCiAgICAgICAgdmFyIHNldFRsc1NlY3VyaXR5RGVsZXRlQ3JlZGVudGlhbENvbnRleHQ7DQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXRUbHNTZWN1cml0eURsZ09rKCkgew0KICAgICAgICAgICAgdmFyIGggPSBnZXRTZWxlY3RFbGVtZW50KCd0bHNjZXJ0JykudmFsdWU7DQogICAgICAgICAgICB2YXIgciA9IGdldFNlbGVjdEVsZW1lbnQoJ3Rsc3JlbW90ZScpLnZhbHVlOw0KICAgICAgICAgICAgdmFyIHh4VGxzU2V0dGluZ3MyID0gQ2xvbmUoeHhUbHNTZXR0aW5ncyk7DQogICAgICAgICAgICBzZXRUbHNTZWN1cml0eVBlbmRpbmdDYWxscyA9IDA7DQogICAgICAgICAgICBzZXRUbHNTZWN1cml0eURlbGV0ZUNyZWRlbnRpYWxDb250ZXh0ID0gbnVsbDsNCg0KICAgICAgICAgICAgaWYgKGggIT0gLTEpIHsNCiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIFRMUyBjZXJ0aWZpY2F0ZQ0KICAgICAgICAgICAgICAgIGlmICh4eFRMU0NyZWRlbnRpYWxDb250ZXh0Lmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gTW9kaWZ5IHRoZSBjdXJyZW50IGNvbnRleHQNCiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1RMU0NyZWRlbnRpYWxDb250ZXh0ID0gQ2xvbmUoeHhUTFNDcmVkZW50aWFsQ29udGV4dFswXSk7DQogICAgICAgICAgICAgICAgICAgIG5ld1RMU0NyZWRlbnRpYWxDb250ZXh0WydFbGVtZW50SW5Db250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXSA9IHh4Q2VydGlmaWNhdGVzW2hdWydJbnN0YW5jZUlEJ107DQogICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLlB1dCgnQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0JywgbmV3VExTQ3JlZGVudGlhbENvbnRleHQsIHNldFRsc1NlY3VyaXR5UmVzcG9uc2UsIDAsIDEpOw0KICAgICAgICAgICAgICAgICAgICBzZXRUbHNTZWN1cml0eVBlbmRpbmdDYWxscysrOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIG5ldyBzZWN1cml0eSBjb250ZXh0DQogICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLkNyZWF0ZSgnQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0Jywgew0KICAgICAgICAgICAgICAgICAgICAgICAgJ0VsZW1lbnRJbkNvbnRleHQnOic8YTpBZGRyZXNzPi93c21hbjwvYTpBZGRyZXNzPjxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+PHc6UmVzb3VyY2VVUkk+JyArIGFtdHN0YWNrLkNvbXBsZXRlTmFtZSgnQU1UX1B1YmxpY0tleUNlcnRpZmljYXRlJykgKyAnPC93OlJlc291cmNlVVJJPjx3OlNlbGVjdG9yU2V0Pjx3OlNlbGVjdG9yIE5hbWU9Ikluc3RhbmNlSUQiPicgKyB4eENlcnRpZmljYXRlc1toXVsnSW5zdGFuY2VJRCddICsgJzwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+JywNCiAgICAgICAgICAgICAgICAgICAgICAgICdFbGVtZW50UHJvdmlkaW5nQ29udGV4dCc6JzxhOkFkZHJlc3M+L3dzbWFuPC9hOkFkZHJlc3M+PGE6UmVmZXJlbmNlUGFyYW1ldGVycz48dzpSZXNvdXJjZVVSST4nICsgYW10c3RhY2suQ29tcGxldGVOYW1lKCdBTVRfVExTUHJvdG9jb2xFbmRwb2ludENvbGxlY3Rpb24nKSArICc8L3c6UmVzb3VyY2VVUkk+PHc6U2VsZWN0b3JTZXQ+PHc6U2VsZWN0b3IgTmFtZT0iRWxlbWVudE5hbWUiPlRMU1Byb3RvY29sRW5kcG9pbnRJbnN0YW5jZXMgQ29sbGVjdGlvbjwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+JyB9LCBzZXRUbHNTZWN1cml0eVJlc3BvbnNlKTsNCiAgICAgICAgICAgICAgICAgICAgc2V0VGxzU2VjdXJpdHlQZW5kaW5nQ2FsbHMrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBUTFMgY2VydGlmaWNhdGUgYXNzb2NpYXRpb24gKE1PVkUgVEhJUykNCiAgICAgICAgICAgICAgICBpZiAoeHhUTFNDcmVkZW50aWFsQ29udGV4dC5sZW5ndGggPiAwKSB7IHNldFRsc1NlY3VyaXR5RGVsZXRlQ3JlZGVudGlhbENvbnRleHQgPSBDbG9uZSh4eFRMU0NyZWRlbnRpYWxDb250ZXh0WzBdKTsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgaW5kZXggaXMgbG9jYWwgJiByZW1vdGUNCiAgICAgICAgICAgIHZhciBsb2NhbE5keCA9ICgoeHhUbHNTZXR0aW5nc1swXVsnSW5zdGFuY2VJRCddID09ICdJbnRlbChyKSBBTVQgTE1TIFRMUyBTZXR0aW5ncycpKSA/IDAgOiAxLCByZW1vdGVOZHggPSAoMSAtIGxvY2FsTmR4KTsNCg0KICAgICAgICAgICAgLy8gUmVtb3RlIFRMUyBzZXR0aW5ncw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnRW5hYmxlZCddID0gKGggIT0gLTEpOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnTXV0dWFsQXV0aGVudGljYXRpb24nXSA9IChyID49IDIpOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnQWNjZXB0Tm9uU2VjdXJlQ29ubmVjdGlvbnMnXSA9ICgociAlIDIpID09IDEpOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnVHJ1c3RlZENOJ10gPSBzcGxpdERvbWFpbnMoUSgnZDExX3JjbicpLnZhbHVlKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gTG9jYWwgVExTIHNldHRpbmdzDQogICAgICAgICAgICB4eFRsc1NldHRpbmdzMltsb2NhbE5keF1bJ0VuYWJsZWQnXSA9IChoICE9IC0xKTsNCg0KICAgICAgICAgICAgLy8gVXBkYXRlIFRMUyBzZXR0aW5ncw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfVExTU2V0dGluZ0RhdGEnLCB4eFRsc1NldHRpbmdzMlswXSwgc2V0VGxzU2VjdXJpdHlSZXNwb25zZSwgMCwgMSwgeHhUbHNTZXR0aW5nczJbMF0pOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfVExTU2V0dGluZ0RhdGEnLCB4eFRsc1NldHRpbmdzMlsxXSwgc2V0VGxzU2VjdXJpdHlSZXNwb25zZSwgMCwgMSwgeHhUbHNTZXR0aW5nczJbMV0pOw0KICAgICAgICAgICAgc2V0VGxzU2VjdXJpdHlQZW5kaW5nQ2FsbHMgKz0gMjsNCg0KICAgICAgICAgICAgc3RhdHVzYm94KCJUTFMgU2V0dGluZ3MiLCAiQXBwbHlpbmcgbmV3IHNlY3VyaXR5IHNldHRpbmdzLi4uIik7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBTcGxpdCBhIHN0cmluZyBpbnRvIGEgYXJyYXkgb2YgZG9tYWlucy4gUmV0dXJuIG51bGwgaWYgbm90IGEgdmFsaWQgbGlzdC4NCiAgICAgICAgZnVuY3Rpb24gc3BsaXREb21haW5zKHN0cikgew0KICAgICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCcsJyk7DQogICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCA9PSAwKSByZXR1cm47DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHN0cikgeyBzdHJbaV0gPSBzdHJbaV0udHJpbSgpOyBpZiAoKHN0cltpXS5pbmRleE9mKCcgJykgPj0gMCkgfHwgKHN0cltpXS5sZW5ndGggPT0gMCkpIHJldHVybjsgfQ0KICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGggPiA0KSByZXR1cm47DQogICAgICAgICAgICByZXR1cm4gc3RyOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2V0VGxzU2VjdXJpdHlSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCIiLCAiRmFpbGVkIHRvIHNldCBUTFMgc2VjdXJpdHksIHN0YXR1cyA9ICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgIGlmIChyZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZVN0ciddICYmICFtZXRob2RjaGVjayhyZXNwb25zZSkpIHJldHVybjsNCg0KICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYWxsIHRoZSBjYWxscyBhcmUgZG9uZQ0KICAgICAgICAgICAgaWYgKCgtLXNldFRsc1NlY3VyaXR5UGVuZGluZ0NhbGxzKSA9PSAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIFBlcmZvcm0gYSBjb21taXQNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9Db21taXRDaGFuZ2VzKG51bGwsIHNldFRsc1NlY3VyaXR5UmVzcG9uc2UyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNldFRsc1NlY3VyaXR5UmVzcG9uc2UyKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCIiLCAiRmFpbGVkIHRvIHNldCBUTFMgc2VjdXJpdHksIHN0YXR1cyA9ICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgIC8vIGlmIChyZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZVN0ciddICYmICFtZXRob2RjaGVjayhyZXNwb25zZSkpIHJldHVybjsNCiAgICAgICAgICAgIHNldFRpbWVvdXQoc2V0VGxzU2VjdXJpdHlSZXNwb25zZTMsIDIwMDApOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2V0VGxzU2VjdXJpdHlSZXNwb25zZTMoKSB7DQogICAgICAgICAgICBpZiAoc2V0VGxzU2VjdXJpdHlEZWxldGVDcmVkZW50aWFsQ29udGV4dCAhPSBudWxsKSB7IGFtdHN0YWNrLkRlbGV0ZSgnQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0Jywgc2V0VGxzU2VjdXJpdHlEZWxldGVDcmVkZW50aWFsQ29udGV4dCwgZnVuY3Rpb24gKCkgeyB9KTsgfQ0KICAgICAgICAgICAgUHVsbENlcnRpZmljYXRlcygpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgpOw0KICAgICAgICB9DQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gQUdFTlQgUFJFU0VOQ0UNCiAgICAgICAgLy8NCg0KICAgICAgICB2YXIgeHhXYXRjaGRvZyA9IG51bGw7DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFdhdGNoZG9nKCkgew0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKG51bGwsIFsiKkFNVF9BZ2VudFByZXNlbmNlQ2FwYWJpbGl0aWVzIiwgIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2ciLCAiQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ0FjdGlvbiIsICJBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uIiwgIkNJTV9Db25jcmV0ZURlcGVuZGVuY3kiXSwgUHVsbFdhdGNoZG9nUmVzcG9uc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFdhdGNoZG9nUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoKHN0YXR1cyA9PSAyMDApICYmIChyZXNwb25zZXNbJ0FNVF9BZ2VudFByZXNlbmNlQ2FwYWJpbGl0aWVzJ10uc3RhdHVzID09IDIwMCkpIHsNCiAgICAgICAgICAgICAgICB4eFdhdGNoZG9nID0gcmVzcG9uc2VzOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgLy8gUGxhY2UgdGhlIGFjdGlvbnMgaW50byB0aGUgd2F0Y2hkb2dzIGZvciBlYXN5IG5hdmlnYXRpb24uDQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFdhdGNoZG9nWydDSU1fQ29uY3JldGVEZXBlbmRlbmN5J10ucmVzcG9uc2VzKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0geHhXYXRjaGRvZ1snQ0lNX0NvbmNyZXRlRGVwZW5kZW5jeSddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHgxID0gZ2V0SXRlbShsaW5rWydBbnRlY2VkZW50J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSwgJ0BOYW1lJywgJ0NyZWF0aW9uQ2xhc3NOYW1lJyk7DQogICAgICAgICAgICAgICAgICAgIGlmICh4MSAmJiB4MVsnVmFsdWUnXSA9PSAnQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXZpY2VpZCA9IGdldEl0ZW0obGlua1snQW50ZWNlZGVudCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdEZXZpY2VJRCcpWydWYWx1ZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeUNvbmRpdGlvbk5hbWUgPSBnZXRJdGVtKGxpbmtbJ0RlcGVuZGVudCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdQb2xpY3lDb25kaXRpb25OYW1lJylbJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2F0Y2hkb2cgPSBnZXRJdGVtKHh4V2F0Y2hkb2dbJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnXS5yZXNwb25zZXMsICdEZXZpY2VJRCcsIGRldmljZWlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2l0aW9uUG9saWN5ID0gZ2V0SXRlbSh4eFdhdGNoZG9nWydBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uJ10ucmVzcG9uc2VzLCAnUG9saWN5Q29uZGl0aW9uTmFtZScsIHBvbGljeUNvbmRpdGlvbk5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3YXRjaGRvZy50cmFuc2l0aW9ucykgd2F0Y2hkb2cudHJhbnNpdGlvbnMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZG9nLnRyYW5zaXRpb25zLnB1c2godHJhbnNpdGlvblBvbGljeSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKHgxICYmIHgxWydWYWx1ZSddID09ICdBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeUNvbmRpdGlvbk5hbWUgPSBnZXRJdGVtKGxpbmtbJ0FudGVjZWRlbnQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddLCAnQE5hbWUnLCAnUG9saWN5Q29uZGl0aW9uTmFtZScpWydWYWx1ZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeUFjdGlvbk5hbWUgPSBnZXRJdGVtKGxpbmtbJ0RlcGVuZGVudCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdQb2xpY3lBY3Rpb25OYW1lJylbJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNpdGlvblBvbGljeSA9IGdldEl0ZW0oeHhXYXRjaGRvZ1snQU1UX1N0YXRlVHJhbnNpdGlvbkNvbmRpdGlvbiddLnJlc3BvbnNlcywgJ1BvbGljeUNvbmRpdGlvbk5hbWUnLCBwb2xpY3lDb25kaXRpb25OYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3YXRjaGRvZ0FjdGlvbiA9IGdldEl0ZW0oeHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ0FjdGlvbiddLnJlc3BvbnNlcywgJ1BvbGljeUFjdGlvbk5hbWUnLCBwb2xpY3lBY3Rpb25OYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJhbnNpdGlvblBvbGljeS5hY3Rpb25zKSB0cmFuc2l0aW9uUG9saWN5LmFjdGlvbnMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Qb2xpY3kuYWN0aW9ucy5wdXNoKHdhdGNoZG9nQWN0aW9uKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHVwZGF0ZVdhdGNoZG9nKCk7DQogICAgICAgICAgICAgICAgUVYoJ2dvMTknLCB0cnVlKTsgLy8gU2hvdyBBZ2VudCBQcmVzZW5jZSBwYW5lbA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHdhdGNoZG9nRW5hYmxlZFN0YXRlcyA9IFsgJ1Vua25vd24nLCAnT3RoZXInLCAnRW5hYmxlZCcsICdEaXNhYmxlZCcsICdTaHV0dGluZyBEb3duJywgJ05vdCBBcHBsaWNhYmxlJywgJ0VuYWJsZWQgYnV0IE9mZmxpbmUnLCAnSW4gVGVzdCcsICdEZWZlcnJlZCcsICdRdWllc2NlJywgJ1N0YXJ0aW5nJyBdOw0KICAgICAgICB2YXIgd2F0Y2hkb2dNb25pdG9yZWRFbnRpdHkgPSBbICdVbmtub3duJywgJ090aGVyJywgJ09wZXJhdGluZyBTeXN0ZW0nLCAnT3BlcmF0aW5nIFN5c3RlbSBCb290IFByb2Nlc3MnLCAnT3BlcmF0aW5nIFN5c3RlbSBTaHV0ZG93biBQcm9jZXNzJywgJ0Zpcm13YXJlIEJvb3QgUHJvY2VzcycsICdCSU9TIEJvb3QgUHJvY2VzcycsICdBcHBsaWNhdGlvbicsICdTZXJ2aWNlIFByb2Nlc3NvcicgXTsNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlV2F0Y2hkb2coKSB7DQogICAgICAgICAgICBpZiAoeHhXYXRjaGRvZyA9PSBudWxsKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KDQogICAgICAgICAgICAvLyBHbG9iYWwgQWdlbnQgUHJlc2Vuc2UgVmFsdWVzDQogICAgICAgICAgICB4ICs9IFRhYmxlU3RhcnQoKTsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiTWF4aW11bSBXYXRjaGRvZ3MiLCB4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZUNhcGFiaWxpdGllcyddLnJlc3BvbnNlWydNYXhUb3RhbEFnZW50cyddICsgIiB3YXRjaGRvZ3MiKTsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiTWF4aW11bSBUb3RhbCBBY3Rpb25zIiwgeHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VDYXBhYmlsaXRpZXMnXS5yZXNwb25zZVsnTWF4VG90YWxBY3Rpb25zJ10gKyAiIGFjdGlvbnMiKTsNCiAgICAgICAgICAgIC8vIHggKz0gVGFibGVFbnRyeSgiTWF4aW11bSBFQUMgV2F0Y2hkb2dzIiwgeHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VDYXBhYmlsaXRpZXMnXS5yZXNwb25zZVsnTWF4RWFjQWdlbnRzJ10gKyAiIHdhdGNoZG9ncyIpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpICsgIjxicj4iOw0KDQogICAgICAgICAgICAvLyBXYXRjaGRvZ3MNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBhZ2VudCBwcmVzZW5jZSB3YXRjaGRvZ3MuPGJyPjxicj4iOw0KICAgICAgICAgICAgaWYgKCh4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nJ10ucmVzcG9uc2VzID09IG51bGwpIHx8ICh4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nJ10ucmVzcG9uc2VzLmxlbmd0aCA9PSAwKSkgew0KICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGk+Tm8gYWdlbnQgcHJlc2VuY2Ugd2F0Y2hkb2cgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4V2F0Y2hkb2dbJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSB4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nJ10ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGd1aWRUb1N0cihyc3RyMmhleChhdG9iKHdbJ0RldmljZUlEJ10pKSk7DQogICAgICAgICAgICAgICAgICAgIGlmICh3WydNb25pdG9yZWRFbnRpdHlEZXNjcmlwdGlvbiddICYmIHdbJ01vbml0b3JlZEVudGl0eURlc2NyaXB0aW9uJ10gIT0gJycpIG4gPSBFc2NhcGVIdG1sKHdbJ01vbml0b3JlZEVudGl0eURlc2NyaXB0aW9uJ10pOw0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93V2F0Y2hkb2dEZXRhaWxzKCIgKyBpICsgIik+PGlucHV0IHR5cGU9YnV0dG9uIHN0eWxlPWZsb2F0OnJpZ2h0IHZhbHVlPSdBZGQgQWN0aW9uLi4uJyBvbmNsaWNrPWFkZFdhdGNoZG9nQWN0aW9uKGV2ZW50LCIgKyBpICsgIik+IjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHcudHJhbnNpdGlvbnMpIHsgeCArPSAiPGlucHV0IHR5cGU9YnV0dG9uIHN0eWxlPWZsb2F0OnJpZ2h0IHZhbHVlPSdEZWxldGUgQWN0aW9ucy4uLicgb25jbGljaz1kZWxldGVXYXRjaGRvZ0FjdGlvbnMoZXZlbnQsIiArIGkgKyAiKT4iOyB9DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyBuICsgIjwvYj4sICIgKyBhbXRzdGFjay5XYXRjaGRvZ0N1cnJlbnRTdGF0ZXNbd1snQ3VycmVudFN0YXRlJ11dICsgIjwvZGl2PiI7DQogICAgICAgICAgICAgICAgICAgIHZhciB4eCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIHcudHJhbnNpdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdy50cmFuc2l0aW9uc1tqXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eCAhPSAnJykgeHggKz0gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgeHggKz0gZ2V0V2F0Y2hkb2dUcmFuc2l0aW9uU3RyKHRbJ09sZFN0YXRlJ10pICsgIiAmcmFycjsgIiArIGdldFdhdGNoZG9nVHJhbnNpdGlvblN0cih0WydOZXdTdGF0ZSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmFjdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aW9uID0gdC5hY3Rpb25zWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb25bJ0V2ZW50T25UcmFuc2l0aW9uJ10gPT0gdHJ1ZSkgeyB4eCArPSAiIDogRXZlbnQgdG8gbG9nIjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICh4eCAhPSAnJykgeyB4ICs9ICI8ZGl2IHN0eWxlPXBhZGRpbmc6MTJweD4iICsgeHggKyAiPC9kaXY+IjsgfQ0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8L2Rpdj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZChBZGRSZWZyZXNoQnV0dG9uKCJQdWxsV2F0Y2hkb2coKSIpICsgQWRkQnV0dG9uKCJBZGQgV2F0Y2hkb2cuLi4iLCAiQWRkV2F0Y2hkb2coKSIpKTsNCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KDQogICAgICAgICAgICBRSCgnaWRfVGFibGVTeXN0ZW1BZ2VudFByZXNlbmNlJywgeCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRXYXRjaGRvZ1RyYW5zaXRpb25TdHIocykgew0KICAgICAgICAgICAgaWYgKHMgPT0gMzEpIHJldHVybiAiQW55IFN0YXRlIjsNCiAgICAgICAgICAgIHZhciB4ID0gJyc7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGFtdHN0YWNrLldhdGNoZG9nQ3VycmVudFN0YXRlcykgeyBpZiAoKHMgJiBpKSAhPSAwKSB7IHggKz0gJywgJyArIGFtdHN0YWNrLldhdGNoZG9nQ3VycmVudFN0YXRlc1tpXTsgfSB9DQogICAgICAgICAgICByZXR1cm4geC5zdWJzdHJpbmcoMik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93V2F0Y2hkb2dEZXRhaWxzKGkpIHsNCiAgICAgICAgICAgIHZhciB3ID0geHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZyddLnJlc3BvbnNlc1tpXTsNCg0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIC8veCArPSBhZGRIdG1sVmFsdWUoJ0RldmljZUlEJywgZ3VpZFRvU3RyKHJzdHIyaGV4KGF0b2Iod1snRGV2aWNlSUQnXSkpKSk7DQogICAgICAgICAgICBpZiAod1snTW9uaXRvcmVkRW50aXR5RGVzY3JpcHRpb24nXSAmJiB3WydNb25pdG9yZWRFbnRpdHlEZXNjcmlwdGlvbiddICE9ICcnKSB4ICs9IGFkZEh0bWxWYWx1ZSgnRGVzY3JpcHRpb24nLCBFc2NhcGVIdG1sKHdbJ01vbml0b3JlZEVudGl0eURlc2NyaXB0aW9uJ10pKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdNb25pdG9yZWQgRW50aXR5Jywgd2F0Y2hkb2dNb25pdG9yZWRFbnRpdHlbd1snTW9uaXRvcmVkRW50aXR5J11dKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdDdXJyZW50IFN0YXRlJywgYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzW3dbJ0N1cnJlbnRTdGF0ZSddXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnRW5hYmxlZCBTdGF0ZScsIHdhdGNoZG9nRW5hYmxlZFN0YXRlc1t3WydFbmFibGVkU3RhdGUnXV0pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ1N0YXJ0dXAgSW50ZXJ2YWwnLCB3WydTdGFydHVwSW50ZXJ2YWwnXSArICcgc2Vjb25kKHMpJyk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnVGltZW91dCBJbnRlcnZhbCcsIHdbJ1RpbWVvdXRJbnRlcnZhbCddICsgJyBzZWNvbmQocyknKTsNCg0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ1dhdGNoZG9nICcgKyBndWlkVG9TdHIocnN0cjJoZXgoYXRvYih3WydEZXZpY2VJRCddKSkpLCA1LCBzaG93V2F0Y2hkb2dEZXRhaWxzT2ssIHgsIHcpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1dhdGNoZG9nRGV0YWlsc09rKHgsIHcpIHsNCiAgICAgICAgICAgIGlmICh4ID09IDIpIHsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5EZWxldGUoJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnLCB7ICdEZXZpY2VJRCc6IHdbJ0RldmljZUlEJ10gfSwgUHVsbFdhdGNoZG9nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZFdhdGNoZG9nKCkgew0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXdnbmFtZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweCBtYXhsZW5ndGg9MTYgb25rZXl1cD1BZGRXYXRjaGRvZ1VwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4Pk5hbWU8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48aW5wdXQgaWQ9d2dndWlkIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI0MHB4IG1heGxlbmd0aD0zNiBvbmtleXVwPUFkZFdhdGNoZG9nVXBkYXRlKCk+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHggdGl0bGU9J0dlbmVyYXRlIHJhbmRvbSBEZXZpY2VJRCc+IiArIGFkZExpbmsoIkRldmljZUlEIiwgIkdlbmVyYXRlV2F0Y2hkb2dHdWlkKCkiKSArICI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48aW5wdXQgaWQ9d2dzdGFydCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweCBtYXhsZW5ndGg9OCBwbGFjZWhvbGRlcj0zNjAwIG9ua2V5dXA9QWRkV2F0Y2hkb2dVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5TdGFydHVwIChzZWNvbmRzKTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxpbnB1dCBpZD13Z3RpbWVvdXQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHggbWF4bGVuZ3RoPTggcGxhY2Vob2xkZXI9NjAgb25rZXl1cD1BZGRXYXRjaGRvZ1VwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlRpbWVvdXQgKHNlY29uZHMpPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdBZGQgV2F0Y2hkb2cnLCAzLCBBZGRXYXRjaGRvZ09rLCB4KTsNCiAgICAgICAgICAgIEFkZFdhdGNoZG9nVXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBHZW5lcmF0ZVdhdGNoZG9nR3VpZCgpIHsNCiAgICAgICAgICAgIHZhciBpLCBndWlkID0gJyc7DQogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeyBndWlkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmFuZG9tKDI1NSkpOyB9DQogICAgICAgICAgICBRKCd3Z2d1aWQnKS52YWx1ZSA9IGd1aWRUb1N0cihyc3RyMmhleChndWlkKSk7DQogICAgICAgICAgICBBZGRXYXRjaGRvZ1VwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkV2F0Y2hkb2dVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgb2sgPSAoUSgnd2dzdGFydCcpLnZhbHVlID09ICcnIHx8IHBhcnNlSW50KFEoJ3dnc3RhcnQnKS52YWx1ZSkgPiAwKSAmJiAoUSgnd2d0aW1lb3V0JykudmFsdWUgPT0gJycgfHwgcGFyc2VJbnQoUSgnd2d0aW1lb3V0JykudmFsdWUpID4gMCk7DQogICAgICAgICAgICB2YXIgZ2MgPSAwLCBnID0gUSgnd2dndWlkJykudmFsdWUudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgIHZhciBjID0gZy5jaGFyQ29kZUF0KGkpOw0KICAgICAgICAgICAgICAgIGlmIChjID09IDQ1KSBjb250aW51ZTsNCiAgICAgICAgICAgICAgICBpZiAoKGMgPj0gNDggJiYgYyA8PSA1NykgfHwgKGMgPj0gOTcgJiYgYyA8PSAxMDIpKSB7IGdjKys7IH0gZWxzZSB7IG9rID0gZmFsc2U7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChnYyAhPSAzMikgb2sgPSBmYWxzZTsNCiAgICAgICAgICAgIFFFKCdkbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZFdhdGNoZG9nT2soKSB7DQogICAgICAgICAgICB2YXIgdGltZW91dCA9IFEoJ3dndGltZW91dCcpLnZhbHVlLCBzdGFydHVwID0gUSgnd2dzdGFydCcpLnZhbHVlOw0KICAgICAgICAgICAgaWYgKHRpbWVvdXQgPT0gJycpIHRpbWVvdXQgPSA2MDsNCiAgICAgICAgICAgIGlmIChzdGFydHVwID09ICcnKSBzdGFydHVwID0gMzYwMDsNCiAgICAgICAgICAgIHZhciBndWlkID0gYnRvYShoZXgycnN0cihndWlkVG9TdHIoUSgnd2dndWlkJykudmFsdWUucmVwbGFjZSgvLS9nLCAnJykpLnJlcGxhY2UoLy0vZywgJycpKSk7DQogICAgICAgICAgICB2YXIgd2RvZyA9IHsgJ0NyZWF0aW9uQ2xhc3NOYW1lJzogMCwgJ0RldmljZUlEJzogZ3VpZCwgJ1N0YXJ0dXBJbnRlcnZhbCc6IHN0YXJ0dXAsICdTeXN0ZW1DcmVhdGlvbkNsYXNzTmFtZSc6IDAsICdTeXN0ZW1OYW1lJzogMCwgJ1RpbWVvdXRJbnRlcnZhbCc6IHRpbWVvdXQsICdNb25pdG9yZWRFbnRpdHlEZXNjcmlwdGlvbic6IFEoJ3dnbmFtZScpLnZhbHVlIH07DQogICAgICAgICAgICBhbXRzdGFjay5DcmVhdGUoJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnLCB3ZG9nLCBBZGRXYXRjaGRvZ09rMik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRXYXRjaGRvZ09rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnV2F0Y2hkb2cnLCAiVW5hYmxlIHRvIGFkZCB3YXRjaGRvZywgZXJyb3IgIyIgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsV2F0Y2hkb2coKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdhdGNoZG9nQWN0aW9uKGUsIGkpIHsNCiAgICAgICAgICAgIHZhciB3ID0geHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZyddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgIHZhciB4ID0gJzx0YWJsZT4nOw0KICAgICAgICAgICAgeCArPSAnPHRkIHN0eWxlPXdpZHRoOjE4MHB4PkZyb208YnI+Jw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBhbXRzdGFjay5XYXRjaGRvZ0N1cnJlbnRTdGF0ZXMpIHsNCiAgICAgICAgICAgICAgICB4ICs9ICc8aW5wdXQgaWQ9d2dzYScgKyBpICsgJyB0eXBlPWNoZWNrYm94IG9uY2xpY2s9YWRkV2F0Y2hkb2dBY3Rpb25VcGRhdGUoKT4gJyArIGFtdHN0YWNrLldhdGNoZG9nQ3VycmVudFN0YXRlc1tpXSArICc8YnIgLz4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAnPHRkPlRvPGJyPicNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzKSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGlucHV0IGlkPXdnc2InICsgaSArICcgdHlwZT1jaGVja2JveCBvbmNsaWNrPWFkZFdhdGNoZG9nQWN0aW9uVXBkYXRlKCk+ICcgKyBhbXRzdGFjay5XYXRjaGRvZ0N1cnJlbnRTdGF0ZXNbaV0gKyAnPGJyIC8+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gJzwvdGFibGU+PGJyPlBlcmZvcm0gQWN0aW9uPGJyPjxpbnB1dCBpZD13Z3NldmVudCB0eXBlPWNoZWNrYm94IGNoZWNrZWQgb25jbGljaz1hZGRXYXRjaGRvZ0FjdGlvblVwZGF0ZSgpPldyaXRlIHRvIGV2ZW50IGxvZzxiciAvPic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnQWRkIFdhdGNoZG9nIEFjdGlvbicsIDMsIGFkZFdhdGNoZG9nQWN0aW9uT2ssIHgsIHcpOw0KICAgICAgICAgICAgYWRkV2F0Y2hkb2dBY3Rpb25VcGRhdGUoKTsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdhdGNoZG9nQWN0aW9uVXBkYXRlKCkgew0KICAgICAgICAgICAgdmFyIHRmcm9tID0gMCwgdHRvID0gMDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzKSB7DQogICAgICAgICAgICAgICAgaWYgKFEoJ3dnc2EnICsgaSkuY2hlY2tlZCA9PSB0cnVlKSB0ZnJvbSArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgICAgICBpZiAoUSgnd2dzYicgKyBpKS5jaGVja2VkID09IHRydWUpIHR0byArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFFFKCdkbGdPa0J1dHRvbicsIHRmcm9tID4gMCAmJiB0dG8gPiAwICYmIFEoJ3dnc2V2ZW50JykuY2hlY2tlZCA9PSB0cnVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdhdGNoZG9nQWN0aW9uT2soYiwgdykgew0KICAgICAgICAgICAgdmFyIHRmcm9tID0gMCwgdHRvID0gMDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzKSB7DQogICAgICAgICAgICAgICAgaWYgKFEoJ3dnc2EnICsgaSkuY2hlY2tlZCA9PSB0cnVlKSB0ZnJvbSArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgICAgICBpZiAoUSgnd2dzYicgKyBpKS5jaGVja2VkID09IHRydWUpIHR0byArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2dfQWRkQWN0aW9uKHRmcm9tLCB0dG8sIFEoJ3dnc2V2ZW50JykuY2hlY2tlZCwgbnVsbCwgbnVsbCwgQWRkV2F0Y2hkb2dBY3Rpb25SZXNwb25zZSwgbnVsbCwgMCwgeyAnRGV2aWNlSUQnOiB3WydEZXZpY2VJRCddIH0pOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkV2F0Y2hkb2dBY3Rpb25SZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnV2F0Y2hkb2cgQWN0aW9uJywgIlVuYWJsZSB0byBhZGQgd2F0Y2hkb2cgYWN0aW9uLCBlcnJvciAjIiArIHN0YXR1cyk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFB1bGxXYXRjaGRvZygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlV2F0Y2hkb2dBY3Rpb25zKGUsIGkpIHsNCiAgICAgICAgICAgIHZhciB3ID0geHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZyddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdEZWxldGUgV2F0Y2hkb2cgQWN0aW9ucycsIDMsIGRlbGV0ZVdhdGNoZG9nQWN0aW9uc09rLCAiRGVsZXRlIGFsbCBhY3Rpb25zIGZvciB0aGlzIHdhdGNoZG9nPyIsIHcpOw0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlV2F0Y2hkb2dBY3Rpb25zT2soYiwgdykgew0KICAgICAgICAgICAgYW10c3RhY2suQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ19EZWxldGVBbGxBY3Rpb25zKGRlbGV0ZVdhdGNoZG9nQWN0aW9uUmVzcG9uc2UsIG51bGwsIDAsIHsgJ0RldmljZUlEJzogd1snRGV2aWNlSUQnXSB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGRlbGV0ZVdhdGNoZG9nQWN0aW9uUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goJ1dhdGNoZG9nIEFjdGlvbicsICJVbmFibGUgdG8gcmVtb3ZlIHdhdGNoZG9nIGFjdGlvbnMsIGVycm9yICMiICsgc3RhdHVzKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUHVsbFdhdGNoZG9nKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICANCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIFNZU1RFTSBERUZFTlNFIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgdmFyIHh4U3lzdGVtRGVmZW5zZSA9IG51bGw7DQogICAgICAgIHZhciB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3kgPSB7fTsNCiAgICAgICAgdmFyIHh4VXBkYXRpbmdEZWZlbnNlU3RhdHMgPSBmYWxzZTsNCiAgICAgICAgdmFyIHh4RmlsdGVyU3RhdGlzdGljcyA9IFt7fSwge31dOyAvLyBXaXJlZCBhbmQgd2lyZWxlc3MgaW50ZXJmYWNlIHN0YXRzDQogICAgICAgIHZhciB4eEZpbHRlclN0YXRpc3RpY3NUaW1lciA9IG51bGw7DQogICAgICAgIHZhciB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KDQogICAgICAgIHZhciB4eFN5c3RlbURlZmVuY2VGaWx0ZXJFdGhlcm5ldFR5cGVzID0geyAyMDQ4OiAnQWxsIElQIFBhY2tldHMnLCAyMDU0OiAnQWxsIEFSUCBQYWNrZXRzJyB9Ow0KICAgICAgICB2YXIgeHhTeXN0ZW1EZWZlbmNlRmlsdGVySVBUeXBlcyA9IHsgNDogJ0lQdjQnLCA2OiAnSVB2NicgfTsNCiAgICAgICAgdmFyIHh4U3lzdGVtRGVmZW5jZUZpbHRlckRlc2MgPSB7IDA6ICdBbGxvdywgQ291bnQnLCAxOiAnRHJvcCwgQ291bnQnLCAyOiAnUmF0ZSBsaW1pdCcsIDM6ICdBbGxvdycsIDQ6ICdEcm9wJyB9Ow0KICAgICAgICB2YXIgeHhTeXN0ZW1EZWZlbmNlRmlsdGVycyA9IHsgJ0hkclByb3RvY29sSUQnOiAxLCAnSGRyRGVzdEFkZHJlc3MnOiAyLCAnSGRyRGVzdE1hc2snOiAyLCAnSGRyU3JjQWRkcmVzcyc6IDIsICdIZHJTcmNNYXNrJzogMiwgJ0hkclNyY1BvcnRTdGFydCc6IDEsICdIZHJTcmNQb3J0RW5kJzogMSwgJ0hkckRlc3RQb3J0U3RhcnQnOiAxLCAnSGRyRGVzdFBvcnRFbmQnOiAxLCAnSGRyU3JjQWRkcmVzc0VuZE9mUmFuZ2UnOiAyLCAnSGRyRGVzdEFkZHJlc3NFbmRPZlJhbmdlICc6IDIsICdUQ1BGbGFnc09uJzogMywgJ1RDUEZsYWdzT2ZmJzogMyB9Ow0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxTeXN0ZW1EZWZlbnNlKCkgew0KICAgICAgICAgICAgYW10Rmlyc3RQdWxsIHw9IDQ7DQogICAgICAgICAgICBhbXRzdGFjay5CYXRjaEVudW0obnVsbCwgWyJBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSIsICJBTVRfTmV0d29ya1BvcnRTeXN0ZW1EZWZlbnNlUG9saWN5IiwgIkFNVF9IZHI4MDIxRmlsdGVyIiwgIkFNVF9JUEhlYWRlcnNGaWx0ZXIiLCAiQU1UX05ldHdvcmtGaWx0ZXIiXSwgUHVsbFN5c3RlbURlZmVuc2VSZXNwb25zZSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBQdWxsU3lzdGVtRGVmZW5zZVJlc3BvbnNlKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICB4eFN5c3RlbURlZmVuc2UgPSByZXNwb25zZXM7DQogICAgICAgICAgICAgICAgdXBkYXRlU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgICAgIFFWKCdnbzE4JywgdHJ1ZSk7IC8vIFNob3cgU3lzdGVtIERlZmVuc2UgUGFuZWwNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN5c3RlbURlZmVuc2UoKSB7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlID09IG51bGwpIHJldHVybjsNCiAgICAgICAgICAgIHZhciB4ID0gJyc7DQoNCiAgICAgICAgICAgIC8vIEdldCBhY3RpdmUgcG9saWNpZXMNCiAgICAgICAgICAgIHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeSA9IHt9Ow0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9OZXR3b3JrUG9ydFN5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgbGluayA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX05ldHdvcmtQb3J0U3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICB2YXIgYSA9ICtnZXRJdGVtKGxpbmtbJ0FudGVjZWRlbnQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddLCAnQE5hbWUnLCAnRGV2aWNlSUQnKVsnVmFsdWUnXS5zdWJzdHJpbmcoMjcpOw0KICAgICAgICAgICAgICAgIHZhciBiID0gbGlua1snRGVwZW5kZW50J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXTsNCiAgICAgICAgICAgICAgICB2YXIgcCA9IGdldEl0ZW0oeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlcywgJ0luc3RhbmNlSUQnLCBiKTsNCiAgICAgICAgICAgICAgICB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbYV0gPSBwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBHbG9iYWwgU3lzdGVtIERlZmVuc2Ugc2V0dGluZ3MNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgdmFyIHBvbGljeW5hbWUgPSAnPGk+Tm9uZTwvaT4nOw0KICAgICAgICAgICAgaWYgKHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVswXSkgeyBwb2xpY3luYW1lID0geHhTeXN0ZW1EZWZlbmNlTGlua2VkUG9saWN5WzBdWydQb2xpY3lOYW1lJ107IH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiRGVmYXVsdCBXaXJlZCBQb2xpY3kiLCBhZGRMaW5rKHBvbGljeW5hbWUsICdjaGFuZ2VEZWZhdWx0UG9saWN5KDApJykpOw0KICAgICAgICAgICAgLyoNCiAgICAgICAgICAgIHBvbGljeW5hbWUgPSAnPGk+Tm9uZTwvaT4nOw0KICAgICAgICAgICAgaWYgKHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVsxXSkgeyBwb2xpY3luYW1lID0geHhTeXN0ZW1EZWZlbmNlTGlua2VkUG9saWN5WzFdWydQb2xpY3lOYW1lJ107IH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiRGVmYXVsdCBXaXJlbGVzcyBQb2xpY3kiLCBhZGRMaW5rKHBvbGljeW5hbWUsICdjaGFuZ2VEZWZhdWx0UG9saWN5KDEpJykpOw0KICAgICAgICAgICAgKi8NCg0KICAgICAgICAgICAgLy8gRmlsdGVyIFN0YXRpc3RpY3MNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFyIGYgPSB4eEZpbHRlclN0YXRpc3RpY3NbaV07DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBmKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBjID0gZltqXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMSkgYyArPSAnIHBhY2tldCc7IGVsc2UgYyArPSAnIHBhY2tldHMnOw0KICAgICAgICAgICAgICAgICAgICB2YXIgam4gPSAoKGk9PTApPydXaXJlZCAnOidXaXJlbGVzcyAnKSArIGo7DQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeShqbiwgYyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgeCArPSAiPGJyPiI7DQoNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg7Ym9yZGVyOjA+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBzeXN0ZW0gZGVmZW5zZSBwb2xpY2llcy48YnI+PGJyPiI7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlcy5sZW5ndGggPT0gMCkgew0KICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGk+Tm8gc3lzdGVtIGRlZmVuc2UgcG9saWNpZXMgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeSA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0gJyc7DQogICAgICAgICAgICAgICAgICAgIGlmIChwb2xpY3lbJ0ZpbHRlckNyZWF0aW9uSGFuZGxlcyddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lbJ0ZpbHRlckNyZWF0aW9uSGFuZGxlcyddID0gTWFrZVRvQXJyYXkocG9saWN5WydGaWx0ZXJDcmVhdGlvbkhhbmRsZXMnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHBvbGljeVsnRmlsdGVyQ3JlYXRpb25IYW5kbGVzJ10ubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyA9ICcsICcgKyBjICsgJyBmaWx0ZXInICsgKGMgPiAxPydzJzonJyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd1BvbGljeURldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChwb2xpY3lbJ1BvbGljeU5hbWUnXSkgKyAiPC9iPiIgKyBkZXNjICsgIjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB4ICs9ICI8dHI+PHRkIGNsYXNzPXIxIHN0eWxlPXBhZGRpbmctbGVmdDoxNXB4Pjxicj5NYW5hZ2UgSW50ZWwmcmVnOyBBTVQgc3lzdGVtIGRlZmVuc2UgZmlsdGVycy48YnI+PGJyPiI7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlcy5sZW5ndGggPT0gMCAmJiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9JUEhlYWRlcnNGaWx0ZXInXS5yZXNwb25zZXMubGVuZ3RoID09IDApIHsNCiAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPXBhZGRpbmctbGVmdDoxNXB4PjxpPk5vIHN5c3RlbSBkZWZlbnNlIGZpbHRlcnMgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0geHhTeXN0ZW1EZWZlbmNlRmlsdGVyRXRoZXJuZXRUeXBlc1tmaWx0ZXJbJ0hkclByb3RvY29sSUQ4MDIxJ11dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWRlc2MpIGRlc2MgPSAnQWxsIEV0aGVybmV0IFByb3RvY29sICcgKyBmaWx0ZXJbJ0hkclByb3RvY29sSUQ4MDIxJ107DQogICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gJywgJyArIHh4U3lzdGVtRGVmZW5jZUZpbHRlckRlc2NbZmlsdGVyWydGaWx0ZXJQcm9maWxlJ11dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyWydGaWx0ZXJQcm9maWxlJ10gPT0gMikgeyBkZXNjICs9ICIgYXQgIiArIGZpbHRlclsnRmlsdGVyUHJvZmlsZURhdGEnXSArICIgcGFja2V0IC8gc2VjIjsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyWydBY3Rpb25FdmVudE9uTWF0Y2gnXSA9PSB0cnVlKSBkZXNjICs9ICcsIEV2ZW50IG9uIG1hdGNoJzsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd0ZpbHRlckRldGFpbHMoMCwiICsgaSArICIpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyAoZmlsdGVyWydGaWx0ZXJEaXJlY3Rpb24nXSA9PSAwID8gJyYjODU5MjsgJyA6ICcmIzg1OTQ7ICcpICsgRXNjYXBlSHRtbChmaWx0ZXJbIk5hbWUiXSkgKyAiPC9iPiwgIiArIGRlc2MgKyAiPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9JUEhlYWRlcnNGaWx0ZXInXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSB4eFN5c3RlbURlZmVuY2VGaWx0ZXJJUFR5cGVzW2ZpbHRlclsnSGRySVBWZXJzaW9uJ11dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWRlc2MpIGRlc2MgPSAnQWxsIEV0aGVybmV0IFByb3RvY29sICcgKyBmaWx0ZXJbJ0hkcklQVmVyc2lvbiddOw0KICAgICAgICAgICAgICAgICAgICBkZXNjICs9ICcsICcgKyB4eFN5c3RlbURlZmVuY2VGaWx0ZXJEZXNjW2ZpbHRlclsnRmlsdGVyUHJvZmlsZSddXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlclsnRmlsdGVyUHJvZmlsZSddID09IDIpIHsgZGVzYyArPSAiIGF0ICIgKyBmaWx0ZXJbJ0ZpbHRlclByb2ZpbGVEYXRhJ10gKyAiIHBhY2tldCAvIHNlYyI7IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlclsnQWN0aW9uRXZlbnRPbk1hdGNoJ10gPT0gdHJ1ZSkgZGVzYyArPSAnLCBFdmVudCBvbiBtYXRjaCc7DQogICAgICAgICAgICAgICAgICAgIHZhciBmaWx0ZXJjb3VudCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4geHhTeXN0ZW1EZWZlbmNlRmlsdGVycykgeyBpZiAoZmlsdGVyW2pdKSBmaWx0ZXJjb3VudCsrOyB9DQogICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJjb3VudCA+IDApIGRlc2MgKz0gJywgJyArIGZpbHRlcmNvdW50ICsgJyBmaWx0ZXInICsgKGZpbHRlcmNvdW50PjE/J3MnOicnKTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd0ZpbHRlckRldGFpbHMoMSwiICsgaSArICIpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyAoZmlsdGVyWydGaWx0ZXJEaXJlY3Rpb24nXSA9PSAwID8gJyYjODU5MjsgJyA6ICcmIzg1OTQ7ICcpICsgRXNjYXBlSHRtbChmaWx0ZXJbIk5hbWUiXSkgKyAiPC9iPiwgIiArIGRlc2MgKyAiPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9ICI8YnI+PHRkIGNsYXNzPXIxPiIgKyBUYWJsZUVuZChBZGRSZWZyZXNoQnV0dG9uKCJQdWxsU3lzdGVtRGVmZW5zZSgpIikgKyAvKkFkZEJ1dHRvbigiVXBkYXRlIFN0YXRzIiwgIlVwZGF0ZURlZmVuc2VTdGF0cygpIikgKyovIEFkZEJ1dHRvbigiQWRkIEZpbHRlci4uLiIsICJBZGREZWZlbnNlRmlsdGVyKCkiKSArIEFkZEJ1dHRvbigiQWRkIFBvbGljeS4uLiIsICJBZGREZWZlbnNlUG9saWN5KCkiKSk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c3RlbURlZmVuc2UnLCB4KTsNCg0KICAgICAgICAgICAgaWYgKHh4RmlsdGVyU3RhdGlzdGljc1RpbWVyID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICBVcGRhdGVEZWZlbnNlU3RhdHMoKTsNCiAgICAgICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIGlmICghdXJsdmFyc1snbm9yZWZyZXNoJ10pIHsgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXIgPSBzZXRJbnRlcnZhbChVcGRhdGVEZWZlbnNlU3RhdHMsIDUwMDApOyB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBTdG9wRGVmZW5zZVN0YXRzVGltZXIoKSB7DQogICAgICAgICAgICBpZiAoeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXIgIT0gbnVsbCkgeyBjbGVhckludGVydmFsKHh4RmlsdGVyU3RhdGlzdGljc1RpbWVyKTsgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXIgPSBudWxsOyB9DQogICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gVXBkYXRlRGVmZW5zZVN0YXRzKG4pIHsNCiAgICAgICAgICAgIGlmICghbiAmJiB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9PSB0cnVlKSB7IHJldHVybjsgfQ0KICAgICAgICAgICAgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXJBY3RpdmUgPSB0cnVlOw0KICAgICAgICAgICAgdmFyIG5ldHdvcmsgPSBuP246MDsNCiAgICAgICAgICAgIGlmICh4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbbmV0d29ya10pIHsNCiAgICAgICAgICAgICAgICB2YXIgZXJlZiA9ICc8YTpBZGRyZXNzPjwvYTpBZGRyZXNzPjxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+PHc6UmVzb3VyY2VVUkk+aHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NpbS1zY2hlbWEvMi9DSU1fRXRoZXJuZXRQb3J0PC93OlJlc291cmNlVVJJPjx3OlNlbGVjdG9yU2V0Pjx3OlNlbGVjdG9yIE5hbWU9IkRldmljZUlEIj5JbnRlbChyKSBBTVQgRXRoZXJuZXQgUG9ydCAnICsgbmV0d29yayArICc8L3c6U2VsZWN0b3I+PC93OlNlbGVjdG9yU2V0PjwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPic7DQogICAgICAgICAgICAgICAgYW10c3RhY2suQU1UX1N5c3RlbURlZmVuc2VQb2xpY3lfVXBkYXRlU3RhdGlzdGljcyhlcmVmLCBmYWxzZSwgVXBkYXRlRGVmZW5zZVN0YXRzMiwgbmV0d29yaywgMCwgeyAnSW5zdGFuY2VJRCc6IHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVtuZXR3b3JrXVsnSW5zdGFuY2VJRCddIH0pOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBObyBhY3RpdmUgcG9saWN5LCBzdG9wIHRoZSB0aW1lcg0KICAgICAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljc1tuZXR3b3JrXSA9IHt9Ow0KICAgICAgICAgICAgICAgIHVwZGF0ZVN5c3RlbURlZmVuc2UoKTsNCiAgICAgICAgICAgICAgICBTdG9wRGVmZW5zZVN0YXRzVGltZXIoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIFVwZGF0ZURlZmVuc2VTdGF0czIoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzLCBuZXR3b3JrKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgew0KICAgICAgICAgICAgICAgIGFtdHN0YWNrLkVudW0oJ0FNVF9BY3RpdmVGaWx0ZXJTdGF0aXN0aWNzJywgVXBkYXRlRGVmZW5zZVN0YXRzMywgbmV0d29yayk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFN0b3BEZWZlbnNlU3RhdHNUaW1lcigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gVXBkYXRlRGVmZW5zZVN0YXRzMyhzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMsIG5ldHdvcmspIHsNCiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgew0KICAgICAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljc1tuZXR3b3JrXSA9IHt9Ow0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcmVzcG9uc2VzKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciByZWFkY291bnQgPSByZXNwb25zZXNbaV1bJ1JlYWRDb3VudCddOw0KICAgICAgICAgICAgICAgICAgICAvLyB2YXIgbWF0Y2hlZCA9IHJlc3BvbnNlc1tpXVsnRmlsdGVyTWF0Y2hlZCddOw0KICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGdldEl0ZW0ocmVzcG9uc2VzW2ldWydEZXBlbmRlbnQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWzFdWydWYWx1ZSddWydFbmRwb2ludFJlZmVyZW5jZSddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdOYW1lJylbJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljc1tuZXR3b3JrXVtuYW1lXSA9IHJlYWRjb3VudDsNCiAgICAgICAgICAgICAgICAgICAgY291bnQrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdXBkYXRlU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXJBY3RpdmUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN0YXRpc3RpY3MsIHN0b3AgdGhlIHRpbWVyDQogICAgICAgICAgICBpZiAoY291bnQgPT0gMCkgeyBTdG9wRGVmZW5zZVN0YXRzVGltZXIoKTsgfSAvLyBUT0RPOiBDaGFuZ2UgdGhpcyB0byBhbGxvdyBmb3Igd2lyZWxlc3MNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNoYW5nZURlZmF1bHRQb2xpY3kobmV0d29yaykgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1wb2xpY3lTZWxlY3Rpb24gc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjY2cHg+PG9wdGlvbiB2YWx1ZT0tMT5Ob25lIjsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlcykgeyB4ICs9ICI8b3B0aW9uIHZhbHVlPSIgKyBpICsgKCh4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbbmV0d29ya10gJiYgeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlc1tpXVsnSW5zdGFuY2VJRCddID09IHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVtuZXR3b3JrXVsnSW5zdGFuY2VJRCddKSA/ICcgc2VsZWN0ZWQnIDogJycpICsgIj4iICsgeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlc1tpXVsnUG9saWN5TmFtZSddOyB9DQogICAgICAgICAgICB4ICs9ICI8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5EZWZhdWx0IFBvbGljeTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnRGVmYXVsdCBTeXN0ZW0gRGVmZW5zZSBQb2xpY3knLCAzLCBjaGFuZ2VEZWZhdWx0UG9saWN5T2ssIHgsIG5ldHdvcmspOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2hhbmdlRGVmYXVsdFBvbGljeU9rKGJ1dHRvbiwgbmV0d29yaykgew0KICAgICAgICAgICAgdmFyIGkgPSBRKCdwb2xpY3lTZWxlY3Rpb24nKS52YWx1ZTsNCiAgICAgICAgICAgIHZhciBvbGRwb2xpY3kgPSB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbbmV0d29ya107DQogICAgICAgICAgICBpZiAob2xkcG9saWN5KSB7IGFtdHN0YWNrLkRlbGV0ZSgnQU1UX05ldHdvcmtQb3J0U3lzdGVtRGVmZW5zZVBvbGljeScsICc8dzpTZWxlY3RvclNldD48dzpTZWxlY3RvciBOYW1lPSJBbnRlY2VkZW50Ij48YTpFbmRwb2ludFJlZmVyZW5jZSB4bWxuczpiPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciIHhtbG5zOmM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPjxhOkFkZHJlc3M+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9hOkFkZHJlc3M+PGE6UmVmZXJlbmNlUGFyYW1ldGVycz48dzpSZXNvdXJjZVVSST5odHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9FdGhlcm5ldFBvcnQ8L3c6UmVzb3VyY2VVUkk+PHc6U2VsZWN0b3JTZXQ+PHc6U2VsZWN0b3IgTmFtZT0iQ3JlYXRpb25DbGFzc05hbWUiPkNJTV9FdGhlcm5ldFBvcnQ8L3c6U2VsZWN0b3I+PHc6U2VsZWN0b3IgTmFtZT0iRGV2aWNlSUQiPkludGVsKHIpIEFNVCBFdGhlcm5ldCBQb3J0ICcgKyBuZXR3b3JrICsgJzwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+PC9hOkVuZHBvaW50UmVmZXJlbmNlPjwvdzpTZWxlY3Rvcj48dzpTZWxlY3RvciBOYW1lPSJEZXBlbmRlbnQiPjxhOkVuZHBvaW50UmVmZXJlbmNlIHhtbG5zOmI9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyIgeG1sbnM6Yz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48YTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjx3OlJlc291cmNlVVJJPmh0dHA6Ly9pbnRlbC5jb20vd2JlbS93c2NpbS8xL2FtdC1zY2hlbWEvMS9BTVRfU3lzdGVtRGVmZW5zZVBvbGljeTwvdzpSZXNvdXJjZVVSST48dzpTZWxlY3RvclNldD48dzpTZWxlY3RvciBOYW1lPSJJbnN0YW5jZUlEIj4nICsgb2xkcG9saWN5WydJbnN0YW5jZUlEJ10gKyAnPC93OlNlbGVjdG9yPjwvdzpTZWxlY3RvclNldD48L2E6UmVmZXJlbmNlUGFyYW1ldGVycz48L2E6RW5kcG9pbnRSZWZlcmVuY2U+PC93OlNlbGVjdG9yPjwvdzpTZWxlY3RvclNldD4nLCAoKGkgPT0gLTEpID8gUHVsbFN5c3RlbURlZmVuc2UgOiBmdW5jdGlvbiAoKSB7IH0pKTsgfQ0KDQogICAgICAgICAgICBpZiAoaSA+PSAwKSB7DQogICAgICAgICAgICAgICAgdmFyIHBvbGljeSA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgdmFyIGVyZWYgPSAnPEFkZHJlc3MgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nPC9BZGRyZXNzPjxSZWZlcmVuY2VQYXJhbWV0ZXJzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciPjxSZXNvdXJjZVVSSSB4bWxucz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+aHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NpbS1zY2hlbWEvMi9DSU1fRXRoZXJuZXRQb3J0PC9SZXNvdXJjZVVSST48U2VsZWN0b3JTZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPjxTZWxlY3RvciBOYW1lPSJEZXZpY2VJRCI+SW50ZWwocikgQU1UIEV0aGVybmV0IFBvcnQgJyArIG5ldHdvcmsgKyAnPC9TZWxlY3Rvcj48L1NlbGVjdG9yU2V0PjwvUmVmZXJlbmNlUGFyYW1ldGVycz4nOw0KICAgICAgICAgICAgICAgIHZhciBwcmVmID0gJzxBZGRyZXNzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZzwvQWRkcmVzcz48UmVmZXJlbmNlUGFyYW1ldGVycyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nIj48UmVzb3VyY2VVUkkgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPmh0dHA6Ly9pbnRlbC5jb20vd2JlbS93c2NpbS8xL2FtdC1zY2hlbWEvMS9BTVRfU3lzdGVtRGVmZW5zZVBvbGljeTwvUmVzb3VyY2VVUkk+PFNlbGVjdG9yU2V0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj48U2VsZWN0b3IgTmFtZT0iSW5zdGFuY2VJRCI+JyArIHBvbGljeVsnSW5zdGFuY2VJRCddICsgJzwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+JzsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DcmVhdGUoJ0FNVF9OZXR3b3JrUG9ydFN5c3RlbURlZmVuc2VQb2xpY3knLCB7ICdBbnRlY2VkZW50JzogZXJlZiwgJ0RlcGVuZGVudCc6IHByZWYgfSwgY2hhbmdlRGVmYXVsdFBvbGljeU9rMik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBjaGFuZ2VEZWZhdWx0UG9saWN5T2syKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdEZWZhdWx0IFN5c3RlbSBEZWZlbnNlIFBvbGljeScsICJVbmFibGUgdG8gc2V0IHBvbGljeSwgZXJyb3IgIiArIHN0YXR1cyk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFB1bGxTeXN0ZW1EZWZlbnNlKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGREZWZlbnNlRmlsdGVyKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPWZpbHRlcm5hbWUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggbWF4bGVuZ3RoPTE2IG9ua2V5dXA9QWRkRGVmZW5zZUZpbHRlclVwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4Pk5hbWU8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48c2VsZWN0IGlkPWZpbHRlcnR5cGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjY2cHggb25jaGFuZ2U9QWRkRGVmZW5zZUZpbHRlclVwZGF0ZSgpPjxvcHRpb24gdmFsdWU9MD5FdGhlcm5ldCBJUCBQYWNrZXQgRmlsdGVyPG9wdGlvbiB2YWx1ZT0xPkV0aGVybmV0IEFSUCBQYWNrZXQgRmlsdGVyPG9wdGlvbiB2YWx1ZT0yPklQdjQgUGFja2V0IEZpbHRlcjxvcHRpb24gdmFsdWU9Mz5JUHY2IFBhY2tldCBGaWx0ZXI8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5UeXBlPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHggaWQ9aXBmaWx0ZXJkaXY+PGlucHV0IGlkPWlwZmlsdGVyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IHBsYWNlaG9sZGVyPVwiT3B0aW9uYWwgUnVsZXNcIiBvbmtleXVwPUFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5NYXRjaGluZyBSdWxlczwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9ZmlsdGVyZGlyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2NnB4IG9uY2hhbmdlPUFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKT48b3B0aW9uIHZhbHVlPTA+T3V0Ym91bmQgLyBUcmFuc21pdDxvcHRpb24gdmFsdWU9MT5JbmJvdW5kIC8gUmVjZWl2ZTwvc2VsZWN0PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PkRpcmVjdGlvbjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9ZmlsdGVycHJvZmlsZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjZweCBvbmNoYW5nZT1BZGREZWZlbnNlRmlsdGVyVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkFsbG93LCBDb3VudDxvcHRpb24gdmFsdWU9MT5Ecm9wLCBDb3VudDxvcHRpb24gdmFsdWU9Mj5SYXRlIExpbWl0PG9wdGlvbiB2YWx1ZT0zPkFsbG93PG9wdGlvbiB2YWx1ZT00PkRyb3A8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5BY3Rpb248L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweCBpZD1maWx0ZXJkYXRhZGl2PjxpbnB1dCBpZD1maWx0ZXJkYXRhIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG1heGxlbmd0aD04IG9ua2V5dXA9QWRkRGVmZW5zZUZpbHRlclVwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlBhY2tldHMgLyBzZWNvbmQ8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48c2VsZWN0IGlkPWZpbHRlcmFjdGlvbiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjZweCBvbmNoYW5nZT1BZGREZWZlbnNlRmlsdGVyVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT1mYWxzZT5EbyBOb3RoaW5nPG9wdGlvbiB2YWx1ZT0xPkV2ZW50IG9uIG1hdGNoPC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+RXZlbnQgTG9nPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdBZGQgU3lzdGVtIERlZmVuc2UgRmlsdGVyJywgMywgQWRkRGVmZW5zZUZpbHRlck9rLCB4KTsNCiAgICAgICAgICAgIEFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZERlZmVuc2VGaWx0ZXJPaygpIHsNCiAgICAgICAgICAgIGlmIChRKCdmaWx0ZXJ0eXBlJykudmFsdWUgPD0gMSkgew0KICAgICAgICAgICAgICAgIC8vIEFkZCBFdGhlcm5ldCBJUCBvciBBUlAgZmlsdGVyDQogICAgICAgICAgICAgICAgdmFyIHByb3RvY29sID0gKFEoJ2ZpbHRlcnR5cGUnKS52YWx1ZSA9PSAwKSA/IDIwNDggOiAyMDU0OyAvLyBJUCA6IEFSUA0KICAgICAgICAgICAgICAgIHZhciBmaWx0ZXIgPSB7ICdJbnN0YW5jZUlEICc6IDAsICdOYW1lJzogUSgnZmlsdGVybmFtZScpLnZhbHVlLCAnQ3JlYXRpb25DbGFzc05hbWUnOiAwLCAnU3lzdGVtTmFtZSc6IDAsICdTeXN0ZW1DcmVhdGlvbkNsYXNzTmFtZSc6IDAsICdIZHJQcm90b2NvbElEODAyMSc6IHByb3RvY29sLCAnRmlsdGVyUHJvZmlsZSc6IFEoJ2ZpbHRlcnByb2ZpbGUnKS52YWx1ZSwgJ0ZpbHRlckRpcmVjdGlvbic6IFEoJ2ZpbHRlcmRpcicpLnZhbHVlLCAnQWN0aW9uRXZlbnRPbk1hdGNoJzogUSgnZmlsdGVyYWN0aW9uJykudmFsdWUgfTsNCiAgICAgICAgICAgICAgICBpZiAoUSgnZmlsdGVycHJvZmlsZScpLnZhbHVlID09IDIpIGZpbHRlclsnRmlsdGVyUHJvZmlsZURhdGEnXSA9IFEoJ2ZpbHRlcmRhdGEnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DcmVhdGUoJ0FNVF9IZHI4MDIxRmlsdGVyJywgZmlsdGVyLCBBZGREZWZlbnNlRmlsdGVyT2syKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gQWRkIElQdjQgb3IgSVB2NiBGaWx0ZXINCiAgICAgICAgICAgICAgICB2YXIgcHJvdG9jb2wgPSAoUSgnZmlsdGVydHlwZScpLnZhbHVlID09IDIpID8gNCA6IDY7IC8vIElQdjQgOiBJUHY2DQogICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHsgJ0luc3RhbmNlSUQgJzogMCwgJ05hbWUnOiBRKCdmaWx0ZXJuYW1lJykudmFsdWUsICdDcmVhdGlvbkNsYXNzTmFtZSc6IDAsICdTeXN0ZW1OYW1lJzogMCwgJ1N5c3RlbUNyZWF0aW9uQ2xhc3NOYW1lJzogMCwgJ0hkcklQVmVyc2lvbic6IHByb3RvY29sLCAnRmlsdGVyUHJvZmlsZSc6IFEoJ2ZpbHRlcnByb2ZpbGUnKS52YWx1ZSwgJ0ZpbHRlckRpcmVjdGlvbic6IFEoJ2ZpbHRlcmRpcicpLnZhbHVlLCAnQWN0aW9uRXZlbnRPbk1hdGNoJzogUSgnZmlsdGVyYWN0aW9uJykudmFsdWUgfTsNCg0KICAgICAgICAgICAgICAgIC8vIFBhcnNlIHRoZSBmaWx0ZXIgc3RyaW5nDQogICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvbWFuYWdlYWJpbGl0eS9BTVRfSW1wbGVtZW50YXRpb25fYW5kX1JlZmVyZW5jZV9HdWlkZS9kZWZhdWx0Lmh0bT90dXJsPUhUTUxEb2N1bWVudHMlMkZXUy1NYW5hZ2VtZW50X0NsYXNzX1JlZmVyZW5jZSUyRkFNVF9IZHI4MDIxRmlsdGVyLmh0bQ0KICAgICAgICAgICAgICAgIHZhciBmaWx0ZXJzdHJzID0gUSgnaXBmaWx0ZXInKS52YWx1ZS5zcGxpdCgnLCcpOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gZmlsdGVyc3Rycykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgeHggPSBmaWx0ZXJzdHJzW2ldLmluZGV4T2YoJz0nKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBmaWx0ZXJzdHJzW2ldLnN1YnN0cmluZygwLCB4eCk7DQogICAgICAgICAgICAgICAgICAgIHZhciB2ID0gZmlsdGVyc3Ryc1tpXS5zdWJzdHJpbmcoeHggKyAxKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB4eFN5c3RlbURlZmVuY2VGaWx0ZXJzW25dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHsgbiA9ICJIZHIiICsgbjsgdCA9IHh4U3lzdGVtRGVmZW5jZUZpbHRlcnNbbl07IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFBhcnNlIHYgKHRoZSB2YWx1ZSkgYmFzZWQgb24gdGhlIHR5cGUgdC4NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09IDIgJiYgcHJvdG9jb2wgPT0gNCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElQdjQgYWRkcmVzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpcHNwbGl0ID0gdi5zcGxpdCgnLicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcHNwbGl0Lmxlbmd0aCA9PSA0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZmlsdGVyW25dID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGlwc3BsaXRbMF0pLCBwYXJzZUludChpcHNwbGl0WzFdKSwgcGFyc2VJbnQoaXBzcGxpdFsyXSksIHBhcnNlSW50KGlwc3BsaXRbM10pKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZmlsdGVyW25dID0gWyBwYXJzZUludChpcHNwbGl0WzBdKSwgcGFyc2VJbnQoaXBzcGxpdFsxXSksIHBhcnNlSW50KGlwc3BsaXRbMl0pLCBwYXJzZUludChpcHNwbGl0WzNdKSBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJbbl0gPSByc3RyMmhleChTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGlwc3BsaXRbMF0pLCBwYXJzZUludChpcHNwbGl0WzFdKSwgcGFyc2VJbnQoaXBzcGxpdFsyXSksIHBhcnNlSW50KGlwc3BsaXRbM10pKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlciB2YWx1ZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJbbl0gPSB2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKFEoJ2ZpbHRlcnByb2ZpbGUnKS52YWx1ZSA9PSAyKSBmaWx0ZXJbJ0ZpbHRlclByb2ZpbGVEYXRhJ10gPSBRKCdmaWx0ZXJkYXRhJykudmFsdWU7DQogICAgICAgICAgICAgICAgYW10c3RhY2suQ3JlYXRlKCdBTVRfSVBIZWFkZXJzRmlsdGVyJywgZmlsdGVyLCBBZGREZWZlbnNlRmlsdGVyT2syKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgb2sgPSBRKCdmaWx0ZXJuYW1lJykudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgIGlmIChvayAmJiBRKCdmaWx0ZXJwcm9maWxlJykudmFsdWUgPT0gMikgeyB2YXIgaSA9IHBhcnNlSW50KFEoJ2ZpbHRlcmRhdGEnKS52YWx1ZSk7IG9rID0gKGkgPiAwICYmIGkgPCAweEZGRkZGRkZGKTsgfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgICAgIFFWKCdmaWx0ZXJkYXRhZGl2JywgUSgnZmlsdGVycHJvZmlsZScpLnZhbHVlID09IDIpOw0KICAgICAgICAgICAgUVYoJ2lwZmlsdGVyZGl2JywgUSgnZmlsdGVydHlwZScpLnZhbHVlID49IDIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZUZpbHRlck9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnQWRkIFN5c3RlbSBEZWZlbnNlIEZpbHRlcicsICJVbmFibGUgdG8gYWRkIGZpbHRlciwgZXJyb3IgIyIgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0ZpbHRlckRldGFpbHModCwgaSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIGRlc2MsIGZpbHRlciwgdHlwZSwgdG47DQogICAgICAgICAgICBpZiAodCA9PSAwKSB7DQogICAgICAgICAgICAgICAgdG4gPSAnQU1UX0hkcjgwMjFGaWx0ZXInOw0KICAgICAgICAgICAgICAgIHR5cGUgPSAnRXRoZXJuZXQgVHJhZmZpYyc7DQogICAgICAgICAgICAgICAgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlW3RuXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgZGVzYyA9IHh4U3lzdGVtRGVmZW5jZUZpbHRlckV0aGVybmV0VHlwZXNbZmlsdGVyWydIZHJQcm90b2NvbElEODAyMSddXTsNCiAgICAgICAgICAgICAgICBpZiAoIWRlc2MpIGRlc2MgPSAnQWxsIEV0aGVybmV0IFByb3RvY29sICcgKyBmaWx0ZXJbJ0hkclByb3RvY29sSUQ4MDIxJ107DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRuID0gJ0FNVF9JUEhlYWRlcnNGaWx0ZXInOw0KICAgICAgICAgICAgICAgIHR5cGUgPSAnSVAgVHJhZmZpYyc7DQogICAgICAgICAgICAgICAgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlW3RuXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgZGVzYyA9IHh4U3lzdGVtRGVmZW5jZUZpbHRlcklQVHlwZXNbZmlsdGVyWydIZHJJUFZlcnNpb24nXV07DQogICAgICAgICAgICAgICAgaWYgKCFkZXNjKSBkZXNjID0gJ0FsbCBJUCBQcm90b2NvbCAnICsgZmlsdGVyWydIZHJJUFZlcnNpb24nXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciB4ID0gJyc7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnTmFtZScsIEVzY2FwZUh0bWwoZmlsdGVyWyJOYW1lIl0pKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdUeXBlJywgdHlwZSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnTWF0Y2hpbmcgVHJhZmZpYycsIGRlc2MpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0RpcmVjdGlvbicsIGZpbHRlclsnRmlsdGVyRGlyZWN0aW9uJ10gPT0gMCA/ICdPdXRib3VuZCAvIFRyYW5zbWl0JyA6ICdJbmJvdW5kIC8gUmVjZWl2ZScpOw0KICAgICAgICAgICAgaWYgKHQgPT0gMSkgew0KICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4geHhTeXN0ZW1EZWZlbmNlRmlsdGVycykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2pdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGosIHYgPSBmaWx0ZXJbal0sIHQgPSB4eFN5c3RlbURlZmVuY2VGaWx0ZXJzW2pdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT0gMiAmJiB2Lmxlbmd0aCA9PSA0KSB7IHYgPSBoZXgycnN0cih2KTsgdiA9IHYuY2hhckNvZGVBdCgwKSArICcuJyArIHYuY2hhckNvZGVBdCgxKSArICcuJyArIHYuY2hhckNvZGVBdCgyKSArICcuJyArIHYuY2hhckNvZGVBdCgzKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uc3RhcnRzV2l0aCgnSGRyJykpIG4gPSBuLnN1YnN0cmluZygzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdGaWx0ZXIgJyArIG4sIHYpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0V2ZW50IG9uIG1hdGNoJywgKGZpbHRlclsnQWN0aW9uRXZlbnRPbk1hdGNoJ10gPT0gdHJ1ZSkgPyAnWWVzJyA6ICdObycpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ0V0aGVybmV0IEZpbHRlciAjJyArIGZpbHRlclsnSW5zdGFuY2VJRCddLCA1LCBzaG93RmlsdGVyRGV0YWlsc09rLCB4LCBbdG4sIGZpbHRlcl0pOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0ZpbHRlckRldGFpbHNPayhiLCB0YWcpIHsNCiAgICAgICAgICAgIGlmIChiID09IDIpIHsgYW10c3RhY2suRGVsZXRlKHRhZ1swXSwgdGFnWzFdLCBkZWxldGVEZWZlbnNlRmlsdGVyKTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlRGVmZW5zZUZpbHRlcihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnUmVtb3ZlIEZpbHRlcicsICJVbmFibGUgdG8gcmVtb3ZlIGZpbHRlciwgbWFrZSBzdXJlIGl0J3Mgbm90IGluIHVzZS4iKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUHVsbFN5c3RlbURlZmVuc2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHZhciB4eEFkZERlZmVuc2VQb2xpY3lGaWx0ZXJzOw0KICAgICAgICBmdW5jdGlvbiBBZGREZWZlbnNlUG9saWN5KCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgeHhBZGREZWZlbnNlUG9saWN5RmlsdGVycyA9IFtdOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXBvbGljeW5hbWUgdGl0bGU9Jzxwb2xpY3kgbmFtZT46PHBvbGljeSBwcmVjZWRlbmNlIG51bWJlcj4nIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG1heGxlbmd0aD0xNiBvbmtleXVwPUFkZERlZmVuc2VQb2xpY3lVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5OYW1lPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1wb2xpY3l0eCB0aXRsZT0nRGVmYXVsdCBhY3Rpb24gdG8gdGFrZSBmb3Igb3V0Ym91bmQgdHJhZmZpYycgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MTMzcHg+PG9wdGlvbiB2YWx1ZT0wPkFsbG93PG9wdGlvbiB2YWx1ZT0xPkRyb3A8b3B0aW9uIHZhbHVlPTI+QWxsb3csQ291bnQ8b3B0aW9uIHZhbHVlPTM+RHJvcCxDb3VudDxvcHRpb24gdmFsdWU9ND5BbGxvdyxDb3VudCxFdmVudDxvcHRpb24gdmFsdWU9NT5Ecm9wLENvdW50LEV2ZW50PC9zZWxlY3Q+PHNlbGVjdCBpZD1wb2xpY3lyeCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoxMzNweCB0aXRsZT0nRGVmYXVsdCBhY3Rpb24gdG8gdGFrZSBmb3IgaW5ib3VuZCB0cmFmZmljJz48b3B0aW9uIHZhbHVlPTA+QWxsb3c8b3B0aW9uIHZhbHVlPTE+RHJvcDxvcHRpb24gdmFsdWU9Mj5BbGxvdyxDb3VudDxvcHRpb24gdmFsdWU9Mz5Ecm9wLENvdW50PG9wdGlvbiB2YWx1ZT00PkFsbG93LENvdW50LEV2ZW50PG9wdGlvbiB2YWx1ZT01PkRyb3AsQ291bnQsRXZlbnQ8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5EZWZhdWx0IFRYIC8gUlg8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBpZD1wb2xpY3lGaWx0ZXJzPjwvZGl2PiI7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlcy5sZW5ndGggPiAwIHx8IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48ZGl2IHN0eWxlPWZsb2F0OnJpZ2h0PjxzZWxlY3QgaWQ9eGZpbHRlciBzdHlsZT13aWR0aDoxODZweD4iOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPG9wdGlvbiB2YWx1ZT0iICsgZmlsdGVyWyJJbnN0YW5jZUlEIl0gKyAiPiIgKyBmaWx0ZXJbIk5hbWUiXTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9JUEhlYWRlcnNGaWx0ZXInXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPG9wdGlvbiB2YWx1ZT0iICsgZmlsdGVyWyJJbnN0YW5jZUlEIl0gKyAiPiIgKyBmaWx0ZXJbIk5hbWUiXTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgeCArPSAiPC9zZWxlY3Q+PGlucHV0IGlkPWFkZEZpbHRlckJ1dHRvbiB0eXBlPWJ1dHRvbiB2YWx1ZT1BZGQgc3R5bGU9d2lkdGg6ODBweCBvbmNsaWNrPWFkZEZpbHRlckJ1dHRvbigpPjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PkFkZCBGaWx0ZXI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ0FkZCBTeXN0ZW0gRGVmZW5zZSBQb2xpY3knLCAzLCBBZGREZWZlbnNlUG9saWN5T2ssIHgpOw0KICAgICAgICAgICAgQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gYWRkRmlsdGVyQnV0dG9uKCkgew0KICAgICAgICAgICAgaWYgKHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMuaW5kZXhPZihRKCd4ZmlsdGVyJykudmFsdWUpID49IDApIHJldHVybjsNCiAgICAgICAgICAgIHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMucHVzaChRKCd4ZmlsdGVyJykudmFsdWUpOw0KICAgICAgICAgICAgQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlRmlsdGVyQnV0dG9uKGgpIHsNCiAgICAgICAgICAgIHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMuc3BsaWNlKGgsIDEpOw0KICAgICAgICAgICAgQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBvayA9IFEoJ3BvbGljeW5hbWUnKS52YWx1ZS5zcGxpdCgnOicpWzBdLmxlbmd0aCA+IDA7DQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgb2spOw0KICAgICAgICAgICAgaWYgKHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMubGVuZ3RoID09IDApIHsNCiAgICAgICAgICAgICAgICBRSCgncG9saWN5RmlsdGVycycsICc8YnI+PGk+VGhpcyBwb2xpY3kgY29udGFpbnMgbm8gZmlsdGVycy48L2k+PGJyPjxicj4nKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMpIHsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIHN0eWxlPW1hcmdpbi1yaWdodDowPjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ+IiArIEFkZEJ1dHRvbjIoIlJlbW92ZSIsICJyZW1vdmVGaWx0ZXJCdXR0b24oIiArIGkgKyAiKSIpICsgIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4O21heC13aWR0aDoyNjBweDtvdmVyZmxvdzpoaWRkZW4+PGI+IiArIEdldEZpbHRlckJ5SWQoeHhBZGREZWZlbnNlUG9saWN5RmlsdGVyc1tpXSlbJ05hbWUnXSArICI8L2I+PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgUUgoJ3BvbGljeUZpbHRlcnMnLCB4KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFRPRE86IE9uY2UgbG9hZGVkLCB3ZSBjb3VsZCBtYWtlIGEgdGFibGUgb2YgImhhbmRsZSAtPiBmaWx0ZXIiIHdoZXJlIGJvdGggZmlsdGVyIHR5cGVzIGFyZSBtaXhlZC1pbi4gQ291bGQgbWFrZSB0aGluZ3Mgc2ltcGxlci9zbWFsbGVyPw0KICAgICAgICAvLyBXZSB3b3VsZCBvbmx5IGhhdmUgb25lIHRhYmxlIHRvIGxvb3AgaW5zdGVhZCBvZiB0d28gYXQgYSBmZXcgcGxhY2VzLiBUaGlzIGZ1bmN0aW9uIHdvdWxkIGJlIHJlbW92ZWQgY29tcGxldGVseS4NCiAgICAgICAgZnVuY3Rpb24gR2V0RmlsdGVyQnlJZChoKSB7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXMpIHsgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXNbaV07IGlmIChmaWx0ZXJbIkluc3RhbmNlSUQiXSA9PSBoKSByZXR1cm4gZmlsdGVyOyB9DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlcykgeyB2YXIgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlWydBTVRfSVBIZWFkZXJzRmlsdGVyJ10ucmVzcG9uc2VzW2ldOyBpZiAoZmlsdGVyWyJJbnN0YW5jZUlEIl0gPT0gaCkgcmV0dXJuIGZpbHRlcjsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZVBvbGljeU9rKCkgew0KICAgICAgICAgICAgdmFyIHR4ID0gUSgncG9saWN5dHgnKS52YWx1ZTsNCiAgICAgICAgICAgIHZhciByeCA9IFEoJ3BvbGljeXJ4JykudmFsdWU7DQogICAgICAgICAgICB2YXIgcHJpID0gMDsNCiAgICAgICAgICAgIHZhciBuID0gUSgncG9saWN5bmFtZScpLnZhbHVlLnNwbGl0KCc6Jyk7DQogICAgICAgICAgICBpZiAobi5sZW5ndGggPT0gMikgcHJpID0gcGFyc2VJbnQoblsxXSk7DQogICAgICAgICAgICB2YXIgZmlsdGVyID0geyAnSW5zdGFuY2VJRCAnOiAwLCAnUG9saWN5TmFtZSc6IG5bMF0sICdQb2xpY3lQcmVjZWRlbmNlJzogcHJpLCAnVHhEZWZhdWx0Q291bnQnOiAodHggPiAxKSwgJ1R4RGVmYXVsdERyb3AnOiAodHggJSAyID09IDEpLCAnVHhEZWZhdWx0TWF0Y2hFdmVudCc6ICh0eCA+IDMpLCAnUnhEZWZhdWx0Q291bnQnOiAocnggPiAxKSwgJ1J4RGVmYXVsdERyb3AnOiAocnggJSAyID09IDEpLCAnUnhEZWZhdWx0TWF0Y2hFdmVudCc6IChyeCA+IDMpIH07DQogICAgICAgICAgICBpZiAoeHhBZGREZWZlbnNlUG9saWN5RmlsdGVycy5sZW5ndGggPiAwKSBmaWx0ZXJbJ0ZpbHRlckNyZWF0aW9uSGFuZGxlcyddID0geHhBZGREZWZlbnNlUG9saWN5RmlsdGVyczsNCiAgICAgICAgICAgIGFtdHN0YWNrLkNyZWF0ZSgnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knLCBmaWx0ZXIsIEFkZERlZmVuc2VQb2xpY3lPazIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZVBvbGljeU9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnQWRkIFN5c3RlbSBEZWZlbnNlIFBvbGljeScsICJVbmFibGUgdG8gYWRkIHBvbGljeSwgZXJyb3IgIyIgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1BvbGljeURldGFpbHMoaSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHBvbGljeSA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ05hbWUnLCBFc2NhcGVIdG1sKHBvbGljeVsiUG9saWN5TmFtZSJdKSk7DQogICAgICAgICAgICBpZiAocG9saWN5WyJQb2xpY3lQcmVjZWRlbmNlIl0gIT0gMCkgeCArPSBhZGRIdG1sVmFsdWUoJ1ByZWNlZGVuY2UnLCBwb2xpY3lbIlBvbGljeVByZWNlZGVuY2UiXSk7DQoNCiAgICAgICAgICAgIHZhciBhY3Rpb24gPSAocG9saWN5WyJUeERlZmF1bHREcm9wIl0gPT0gdHJ1ZSkgPyAnRHJvcCcgOiAnQWxsb3cnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiVHhEZWZhdWx0Q291bnQiXSA9PSB0cnVlKSBhY3Rpb24gKz0gJywgQ291bnQnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiVHhEZWZhdWx0TWF0Y2hFdmVudCJdID09IHRydWUpIGFjdGlvbiArPSAnLCBFdmVudCc7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnRGVmYXVsdCBUWCBBY3Rpb24nLCBhY3Rpb24pOw0KDQogICAgICAgICAgICBhY3Rpb24gPSAocG9saWN5WyJSeERlZmF1bHREcm9wIl0gPT0gdHJ1ZSkgPyAnRHJvcCcgOiAnQWxsb3cnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiUnhEZWZhdWx0Q291bnQiXSA9PSB0cnVlKSBhY3Rpb24gKz0gJywgQ291bnQnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiUnhEZWZhdWx0TWF0Y2hFdmVudCJdID09IHRydWUpIGFjdGlvbiArPSAnLCBFdmVudCc7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnRGVmYXVsdCBSWCBBY3Rpb24nLCBhY3Rpb24pOw0KDQogICAgICAgICAgICBpZiAocG9saWN5WydGaWx0ZXJDcmVhdGlvbkhhbmRsZXMnXSkgeyBmb3IgKHZhciBpIGluIHBvbGljeVsnRmlsdGVyQ3JlYXRpb25IYW5kbGVzJ10pIHsgeCArPSBhZGRIdG1sVmFsdWUoJ0ZpbHRlciAjJyArICgraSArIDEpLCBHZXRGaWx0ZXJCeUlkKHBvbGljeVsnRmlsdGVyQ3JlYXRpb25IYW5kbGVzJ11baV0pWydOYW1lJ10pOyB9IH0NCg0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ1BvbGljeSAjJyArIHBvbGljeVsnSW5zdGFuY2VJRCddLnN1YnN0cmluZygyMCksIDUsIHNob3dQb2xpY3lEZXRhaWxzT2ssIHgsIHBvbGljeSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UG9saWN5RGV0YWlsc09rKGIsIHRhZykgew0KICAgICAgICAgICAgaWYgKGIgPT0gMikgeyBhbXRzdGFjay5EZWxldGUoJ0FNVF9TeXN0ZW1EZWZlbnNlUG9saWN5JywgdGFnLCBkZWxldGVEZWZlbnNlUG9saWN5KTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlRGVmZW5zZVBvbGljeShzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnUmVtb3ZlIFBvbGljeScsICJVbmFibGUgdG8gcmVtb3ZlIHBvbGljeSwgbWFrZSBzdXJlIGl0J3Mgbm90IGluIHVzZS4iKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUHVsbFN5c3RlbURlZmVuc2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gV0lSRUxFU1MgU0VUVElOR1MgUEFORUwNCiAgICAgICAgLy8NCg0KICAgICAgICB2YXIgeHhXaXJlbGVzczsNCiAgICAgICAgZnVuY3Rpb24gUHVsbFdpcmVsZXNzKCkgew0KICAgICAgICAgICAgYW10Rmlyc3RQdWxsIHw9IDI7DQogICAgICAgICAgICB0cnkgeyBpZiAoYW10d2lyZWxlc3NpZiA9PSAtMSkgcmV0dXJuOyB9IGNhdGNoIChlKSB7fSAvLyBJZiB0aGUgd2lyZWxlc3MgYWRhcHRlciBoYXMgbm8gTUFDLCBkb24ndCBzaG93IHRoaXMuDQogICAgICAgICAgICBhbXRzdGFjay5CYXRjaEVudW0oIiIsIFsiKkNJTV9XaUZpUG9ydENhcGFiaWxpdGllcyIsICIqQ0lNX1dpRmlQb3J0IiwgIipDSU1fV2lGaUVuZHBvaW50IiwgIkNJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncyJdLCBwcm9jZXNzV2lyZWxlc3MpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gd2lmaVJlZnJlc2goKSB7IGlmICgheHhkaWFsb2dNb2RlKSBQdWxsV2lyZWxlc3MoKTsgfQ0KDQogICAgICAgIHZhciB4eFdpZmlTdGF0ZSA9IHsgMzogJ0Rpc2FibGVkJywgMzI3Njg6ICdFbmFibGVkIGluIFMwJywgMzI3Njk6ICdFbmFibGVkIGluIFMwLCBTeC9BQycgfTsNCiAgICAgICAgdmFyIHh4UmFkaW9TdGF0ZSA9IAl7IDI6ICdPbiwgQ29ubmVjdGVkJywgMzogJ09mZicsIDY6ICdPbiwgRGlzY29ubmVjdGVkJyB9Ow0KICAgICAgICB2YXIgeHhXaWZpQXV0aGVudGljYXRpb25NZXRob2Q9IHsgMTogJ090aGVyJywgMjogJ09wZW4nLCAzOiAnU2hhcmVkIEtleScsIDQ6ICdXUEEgUFNLJywgNTogJ1dQQSBJRUVFIDgwMi4xeCcsIDY6ICdXUEEyIFBTSycsIDc6ICdXUEEyIElFRUUgODAyLjF4JyB9Ow0KICAgICAgICB2YXIgeHhXaWZpRW5jcnlwdGlvbk1ldGhvZCA9IHsgMTogJ090aGVyJywgMjogJ1dFUCcsIDM6ICdUS0lQLVJDNCcsIDQ6ICdDQ01QLUFFUycsIDU6ICdOb25lJyB9OyAvLyBGb3IgMiAmIDUsIEF1dGhlbnRpY2F0aW9uTWV0aG9kIG11c3QgYmUgMiBvciAzLiBGb3IgMyAmIDQgQXV0aGVudGljYXRpb25NZXRob2QgbXVzdCBiZSA0LDUsNiBvciA3DQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1dpcmVsZXNzKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgeHhXaXJlbGVzcyA9IHJlc3BvbnNlczsgfSBlbHNlIHsgeHhXaXJlbGVzcyA9IHVuZGVmaW5lZDsgfQ0KICAgICAgICAgICAgdXBkYXRlU3lzdGVtU3RhdHVzKCk7DQogICAgICAgICAgICBzaG93V2lyZWxlc3NJbmZvKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93V2lyZWxlc3NJbmZvKCkgew0KICAgICAgICAgICAgaWYgKCF4eFdpcmVsZXNzKSByZXR1cm47DQogICAgICAgICAgICB2YXIgaSwgaiwgcyA9ICIiLCBzYywgeCA9ICI8YnI+PGgyPldpcmVsZXNzIFByb2ZpbGVzPC9oMj4iOw0KICAgICAgICAgICAgaWYgKCEoeHhXaXJlbGVzc1snQ0lNX1dpRmlQb3J0Q2FwYWJpbGl0aWVzJ10ucmVzcG9uc2UpKSByZXR1cm47DQoNCiAgICAgICAgICAgIC8vIFNob3cgV0lGSSBwcm9maWxlcyBzb3J0ZWQgYnkgcHJpb3JpdHkNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjIgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPldpcmVsZXNzIHByb2ZpbGVzIHRoYXQgSW50ZWwmcmVnOyBBTVQgd2lsbCB1c2UgZm9yIG5ldHdvcmsgY29ubmVjdGl2aXR5Ljxicj48YnI+IjsNCiAgICAgICAgICAgIHMgPSAwOw0KICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsNCiAgICAgICAgICAgICAgICBmb3IgKGogaW4geHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzKSB7DQogICAgICAgICAgICAgICAgICAgIHNjID0geHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzW2pdOw0KICAgICAgICAgICAgICAgICAgICBpZiAoc2NbJ0F1dGhlbnRpY2F0aW9uTWV0aG9kJ10gPT0gMSkgY29udGludWU7IC8vIFNraXAgIkVuZHBvaW50IFVzZXIgU2V0dGluZ3MiDQogICAgICAgICAgICAgICAgICAgIGlmIChzY1snUHJpb3JpdHknXSA9PSBpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93V2lmaURldGFpbHMoIiArIGogKyAiKT48ZGl2IHN0eWxlPWZsb2F0OnJpZ2h0PiIgKyBFc2NhcGVIdG1sKHNjWydTU0lEJ10pICsgIiwgIiArIHh4V2lmaUF1dGhlbnRpY2F0aW9uTWV0aG9kW3NjWydBdXRoZW50aWNhdGlvbk1ldGhvZCddXSArICIsICIgKyB4eFdpZmlFbmNyeXB0aW9uTWV0aG9kW3NjWydFbmNyeXB0aW9uTWV0aG9kJ11dICsgIiAmbmJzcDsgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gQWRkQnV0dG9uMigiUmVtb3ZlIiwgIndpZmlSZW1vdmVCdXR0b24oXCIiICsgaiArICJcIikiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyBFc2NhcGVIdG1sKHNjWydFbGVtZW50TmFtZSddKSArICI8L2I+PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHMrKzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChzID09IDApIHggKz0gJzxpPk5vIFdpcmVsZXNzIFByb2ZpbGVzIFByZXNlbnQ8L2k+PGJyPic7DQoNCiAgICAgICAgICAgIC8vIEVuZCBvZiB0YWJsZQ0KICAgICAgICAgICAgeCArPSAiPGJyPjx0ZCBjbGFzcz1yMj4iOw0KICAgICAgICAgICAgaWYgKHh4QWNjb3VudEFkbWluTmFtZSkgeCArPSBUYWJsZUVuZChBZGRCdXR0b24oIk5ldyBQcm9maWxlIiwgInNob3dXaWZpTmV3UHJvZmlsZSgpIikpOyBlbHNlIHggKz0gVGFibGVFbmQoJycpOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlV2lmaTInLCB4ICsgIjxicj4iKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgZnVuY3Rpb24gc2hvd1dpZmlTdGF0ZURsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBzID0gIiI7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4V2lmaVN0YXRlKSB7IHMgKz0gJzxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9ZDExIGlkPXdsJyArIGkgKyAnIHZhbHVlPScgKyBpICsgJyAnICsgKCh4eFdpcmVsZXNzWydDSU1fV2lGaVBvcnQnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gPT0gaSk/ImNoZWNrZWQiOiIiKSArICc+JyArIHh4V2lmaVN0YXRlW2ldICsgJzxicj4nOyB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnV2lyZWxlc3MgU3RhdGUnLCAzLCB3aWZpU3RhdGVEbGcsIHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gd2lmaVN0YXRlRGxnKCkgeyBhbXRzdGFjay5DSU1fV2lGaVBvcnRfUmVxdWVzdFN0YXRlQ2hhbmdlKCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPWQxMV06Y2hlY2tlZCcpLnZhbHVlLCBudWxsLCBmdW5jdGlvbigpIHsgYW10c3RhY2suR2V0KCJDSU1fV2lGaVBvcnQiLCBmdW5jdGlvbihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgeyBpZiAoc3RhdHVzID09IDIwMCkgeyB4eFdpcmVsZXNzWydDSU1fV2lGaVBvcnQnXS5yZXNwb25zZSA9IHJlc3BvbnNlLkJvZHk7IHNob3dXaXJlbGVzc0luZm8oKTsgfSB9ICk7IH0gKTsgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dXaWZpRGV0YWlscyhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgaSwgc2MgPSB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbaF0sIHggPSAnPGRpdiBzdHlsZT10ZXh0LWFsaWduOmxlZnQ+JzsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJQcm9maWxlIE5hbWUiLCBFc2NhcGVIdG1sKHNjWydFbGVtZW50TmFtZSddKSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU1NJRCIsIHNjWydTU0lEJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkF1dGhlbnRpY2F0aW9uIiwgeHhXaWZpQXV0aGVudGljYXRpb25NZXRob2Rbc2NbJ0F1dGhlbnRpY2F0aW9uTWV0aG9kJ11dKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJFbmNyeXB0aW9uIiwgeHhXaWZpRW5jcnlwdGlvbk1ldGhvZFtzY1snRW5jcnlwdGlvbk1ldGhvZCddXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiUHJpb3JpdHkiLCBzY1snUHJpb3JpdHknXSk7DQogICAgICAgICAgICB4ICs9ICI8L2Rpdj4iOw0KICAgICAgICAgICAgbWVzc2FnZWJveCgiV2lyZWxlc3MgUHJvZmlsZSIsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gd2lmaVJlbW92ZUJ1dHRvbihoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgc2MgPSB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbaF07DQogICAgICAgICAgICBRSCgnaWRfZGlhbG9nTWVzc2FnZScsICdSZW1vdmUgd2lyZWxlc3MgcHJvZmlsZSBcIicgKyBzY1siRWxlbWVudE5hbWUiXSArICdcIj8nKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMSwgIldpcmVsZXNzIFByb2ZpbGUiLCAzLCBmdW5jdGlvbiAoKSB7IHJlbW92ZVdpZmlCdXR0b25FeChoKSB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHJlbW92ZVdpZmlCdXR0b25FeChoKSB7DQogICAgICAgICAgICB2YXIgc2MgPSB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbaF07DQogICAgICAgICAgICBhbXRzdGFjay5EZWxldGUoJ0NJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncycsIHsgSW5zdGFuY2VJRDogc2NbJ0luc3RhbmNlSUQnXSB9LCByZW1vdmVXaWZpRW50cnlSZXNwb25zZSwgMCwgMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiByZW1vdmVXaWZpRW50cnlSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAobWV0aG9kY2hlY2socmVzcG9uc2UpKSByZXR1cm47DQogICAgICAgICAgICBhbXRzdGFjay5FbnVtKCJDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MiLCBmdW5jdGlvbihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsgaWYgKHN0YXR1cyA9PSAyMDApIHsgeHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzID0gcmVzcG9uc2VzOyBzaG93V2lyZWxlc3NJbmZvKCk7IH0gfSApOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1dpZmlOZXdQcm9maWxlKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgew0KICAgICAgICAgICAgICAgIHZhciB0ID0gMTsNCiAgICAgICAgICAgICAgICBmb3IgKGogaW4geHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzKSB7IGlmICh4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbal1bJ1ByaW9yaXR5J10gPT0gaSkgdCA9IDA7IH0NCiAgICAgICAgICAgICAgICBpZiAodCkgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPScrIGkgKyc+JysgaTsgfSAvLyBPcHRpb24gaXMgYSB0YWcgdGhhdCBpcyBzZWxmIGNsb3NpbmcuDQogICAgICAgICAgICB9DQogICAgICAgICAgICBRSCgnaWR4X2QxMnByaScsIHgpOw0KDQogICAgICAgICAgICBpZHhfZDEyYXV0aC52YWx1ZSA9IDY7DQogICAgICAgICAgICBpZHhfZDEyZW5jLnZhbHVlID0gNDsNCg0KICAgICAgICAgICAgaWR4X2QxMm5hbWUudmFsdWUgPSBpZHhfZDEyc3NpZC52YWx1ZSA9IGlkeF9kMTJwYXNzd29yZDEudmFsdWUgPSBpZHhfZDEycGFzc3dvcmQyLnZhbHVlID0gJyc7DQoNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTIsICJBZGQgV2lyZWxlc3MgUHJvZmlsZSIsIDMsIGZ1bmN0aW9uICgpIHsgYWRkV2lmaVByb2ZpbGUoKSB9KTsNCiAgICAgICAgICAgIHVwZGF0ZVdpZmlEaWFsb2coKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdpZmlQcm9maWxlKCkgew0KICAgICAgICAgICAgYW10c3RhY2suQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2VfQWRkV2lGaVNldHRpbmdzKA0KCQkJCXsNCgkJCQkgICAgJ19fcGFyYW1ldGVyVHlwZSc6ICdyZWZlcmVuY2UnLA0KCQkJCSAgICAnX19yZXNvdXJjZVVyaSc6IGFtdHN0YWNrLkNvbXBsZXRlTmFtZSgnQ0lNX1dpRmlFbmRwb2ludCcpLA0KCQkJCSAgICAnTmFtZSc6ICdXaUZpIEVuZHBvaW50IDAnDQoJCQkJfSwgew0KCQkJCSAgICAnX19wYXJhbWV0ZXJUeXBlJzogJ2luc3RhbmNlJywNCgkJCQkgICAgJ19fbmFtZXNwYWNlJzogYW10c3RhY2suQ29tcGxldGVOYW1lKCdDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnKSwNCgkJCQkgICAgJ0VsZW1lbnROYW1lJzogaWR4X2QxMm5hbWUudmFsdWUsDQoJCQkJICAgICdJbnN0YW5jZUlEJzogJ0ludGVsKHIpIEFNVDpXaUZpIEVuZHBvaW50IFNldHRpbmdzICcgKyBpZHhfZDEybmFtZS52YWx1ZSwNCgkJCQkgICAgJ0F1dGhlbnRpY2F0aW9uTWV0aG9kJzogaWR4X2QxMmF1dGgudmFsdWUsDQoJCQkJICAgICdFbmNyeXB0aW9uTWV0aG9kJzogaWR4X2QxMmVuYy52YWx1ZSwNCgkJCQkgICAgJ1NTSUQnOiBpZHhfZDEyc3NpZC52YWx1ZSwNCgkJCQkgICAgJ1ByaW9yaXR5JzogaWR4X2QxMnByaS52YWx1ZSwNCgkJCQkgICAgJ1BTS1Bhc3NQaHJhc2UnOiBpZHhfZDEycGFzc3dvcmQxLnZhbHVlDQoJCQkJfSwNCgkJCQludWxsLCBudWxsLCBudWxsLCByZW1vdmVXaWZpRW50cnlSZXNwb25zZQ0KCQkJKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVdpZmlEaWFsb2coKSB7DQogICAgICAgICAgICB2YXIgciA9IHRydWU7DQogICAgICAgICAgICB2YXIgYSA9IGlkeF9kMTJhdXRoLnZhbHVlOw0KICAgICAgICAgICAgdmFyIGUgPSBpZHhfZDEyZW5jLnZhbHVlOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmUyJywgYSA8IDQpOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmUzJywgYSA+IDMpOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmU0JywgYSA+IDMpOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmU1JywgYSA8IDQpOw0KICAgICAgICAgICAgaWYgKGEgPCA0ICYmIChlID09IDMgfHwgZSA9PSA0KSkgeyBpZHhfZDEyZW5jLnZhbHVlID0gMjsgfQ0KICAgICAgICAgICAgaWYgKGEgPiAzICYmIChlID09IDIgfHwgZSA9PSA1KSkgeyBpZHhfZDEyZW5jLnZhbHVlID0gMzsgfQ0KDQogICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgcHJvZmlsZSB3aXRoIHRoaXMgbmFtZQ0KICAgICAgICAgICAgZm9yICh2YXIgaiBpbiB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXMpIHsgaWYgKHh4V2lyZWxlc3NbJ0NJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncyddLnJlc3BvbnNlc1tqXVsnRWxlbWVudE5hbWUnXSA9PSBpZHhfZDEybmFtZS52YWx1ZSkgeyByID0gZmFsc2U7IH0gfQ0KDQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgciA9PSB0cnVlICYmIChpZHhfZDEybmFtZS52YWx1ZS5sZW5ndGggPiAwKSAmJiAoaWR4X2QxMnNzaWQudmFsdWUubGVuZ3RoID4gMCkgJiYgKGlkeF9kMTJwYXNzd29yZDEudmFsdWUubGVuZ3RoID4gNykgJiYgKGlkeF9kMTJwYXNzd29yZDEudmFsdWUgPT0gaWR4X2QxMnBhc3N3b3JkMi52YWx1ZSkpOw0KICAgICAgICB9DQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEhBUkRXQVJFIElORk9STUFUSU9OIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbEhhcmR3YXJlKCkgew0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKCIiLCBbIipDSU1fQ29tcHV0ZXJTeXN0ZW1QYWNrYWdlIiwgIkNJTV9TeXN0ZW1QYWNrYWdpbmciLCAiKkNJTV9DaGFzc2lzIiwgIkNJTV9DaGlwIiwgIipDSU1fQ2FyZCIsICIqQ0lNX0JJT1NFbGVtZW50IiwgIkNJTV9Qcm9jZXNzb3IiLCAiQ0lNX1BoeXNpY2FsTWVtb3J5IiwgIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJDSU1fUGh5c2ljYWxQYWNrYWdlIl0sIHByb2Nlc3NIYXJkd2FyZSk7DQogICAgICAgICAgICBhbXRGaXJzdFB1bGwgfD0gMTsgLy8gU2V0IHRoZSBoYXJkd2FyZSBpbmZvIGJpdCBvbiwgaW5kaWNhdGVzIHdlIGFyZSBwdWxsaW5nIHRoaXMgaW5mb3JtYXRpb24uDQogICAgICAgIH0NCg0KICAgICAgICAvLyBodHRwOi8vd3d3LmRtdGYub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvc3RhbmRhcmRzL2RvY3VtZW50cy9EU1AwMTM0XzIuNy4xLnBkZg0KICAgICAgICB2YXIgRE1URkNQVVN0YXR1cyA9IFsiVW5rbm93biIsICJFbmFibGVkIiwgIkRpc2FibGVkIGJ5IFVzZXIiLCAiRGlzYWJsZWQgQnkgQklPUyAoUE9TVCBFcnJvcikiLCAiSWRsZSIsICJPdGhlciJdOw0KICAgICAgICB2YXIgRE1URk1lbVR5cGUgPSBbIlVua25vd24iLCAiT3RoZXIiLCAiRFJBTSIsICJTeW5jaHJvbm91cyBEUkFNIiwgIkNhY2hlIERSQU0iLCAiRURPIiwgIkVEUkFNIiwgIlZSQU0iLCAiU1JBTSIsICJSQU0iLCAiUk9NIiwgIkZsYXNoIiwgIkVFUFJPTSIsICJGRVBST00iLCAiRVBST00iLCAiQ0RSQU0iLCAiM0RSQU0iLCAiU0RSQU0iLCAiU0dSQU0iLCAiUkRSQU0iLCAiRERSIiwgIkREUi0yIiwgIkJSQU0iLCAiRkItRElNTSIsICJERFIzIiwgIkZCRDIiLCAiRERSNCIsICJMUEREUiIsICJMUEREUjIiLCAiTFBERFIzIiwgIkxQRERSNCJdOw0KICAgICAgICB2YXIgRE1URk1lbUZvcm1GYWN0b3IgPSBbJycsICdPdGhlcicsJ1Vua25vd24nLCdTSU1NJywnU0lQJywnQ2hpcCcsJ0RJUCcsJ1pJUCcsJ1Byb3ByaWV0YXJ5IENhcmQnLCdESU1NJywnVFNPUCcsJ1JvdyBvZiBjaGlwcycsJ1JJTU0nLCdTT0RJTU0nLCdTUklNTScsJ0ZCLURJTSddOw0KICAgICAgICB2YXIgRE1URlByb2NGYW1pbGx5ID0geyAvLyBQYWdlIDQ2IG9mIERNVEYgZG9jdW1lbnQNCiAgICAgICAgICAgIDE5MTogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBEdW8gUHJvY2Vzc29yJywNCiAgICAgICAgICAgIDE5MjogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBTb2xvIHByb2Nlc3NvcicsDQogICAgICAgICAgICAxOTM6ICdJbnRlbCZyZWc7IENvcmUmdHJhZGU7IDIgRXh0cmVtZSBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk0OiAnSW50ZWwmcmVnOyBDb3JlJnRyYWRlOyAyIFF1YWQgcHJvY2Vzc29yJywNCiAgICAgICAgICAgIDE5NTogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBFeHRyZW1lIG1vYmlsZSBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk2OiAnSW50ZWwmcmVnOyBDb3JlJnRyYWRlOyAyIER1byBtb2JpbGUgcHJvY2Vzc29yJywNCiAgICAgICAgICAgIDE5NzogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBTb2xvIG1vYmlsZSBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk4OiAnSW50ZWwmcmVnOyBDb3JlJnRyYWRlOyBpNyBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk5OiAnRHVhbC1Db3JlIEludGVsJnJlZzsgQ2VsZXJvbiZyZWc7IHByb2Nlc3NvcicgfTsNCg0KICAgICAgICB2YXIgSGFyZHdhcmVJbnZlbnRvcnk7DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NIYXJkd2FyZShzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSByZXR1cm47DQoNCiAgICAgICAgICAgIHZhciBpLCB4ID0gIjx0YWJsZSBjbGFzcz1sb2cxIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4PiI7DQogICAgICAgICAgICBIYXJkd2FyZUludmVudG9yeSA9IHJlc3BvbnNlczsNCiAgICAgICAgICAgIFFWKCdnbzInLCB0cnVlKTsgLy8gU2hvdyAiSGFyZHdhcmUgSW5mb3JtYXRpb24iIG9uIGxlZnQgcGFuZWwNCg0KDQogICAgICAgICAgICB4ICs9IFRhYmxlRW5kKCI8ZGl2PiZuYnNwOyIgKyBBZGRSZWZyZXNoQnV0dG9uKCJQdWxsSGFyZHdhcmUoMSkiKSArIEFkZEJ1dHRvbigiU2F2ZS4uLiIsICJTYXZlSGFyZHdhcmVMb2coKSIpICsgJyBIYXJkd2FyZSBpbmZvcm1hdGlvbiBpcyBnYXRoZXJlZCBhdCBzeXN0ZW0gYm9vdCB0aW1lLicpOw0KDQogICAgICAgICAgICB2YXIgYmEgPSByZXNwb25zZXNbJ0NJTV9DaGFzc2lzJ10ucmVzcG9uc2U7DQogICAgICAgICAgICB2YXIgYmIgPSByZXNwb25zZXNbJ0NJTV9DYXJkJ10ucmVzcG9uc2U7DQogICAgICAgICAgICB2YXIgdiA9IHJlc3BvbnNlc1snQ0lNX0JJT1NFbGVtZW50J10ucmVzcG9uc2VbIlNvZnR3YXJlRWxlbWVudElEIl07DQogICAgICAgICAgICANCiAgICAgICAgICAgIHggKz0gIjxicj48aDI+UGxhdGZvcm08L2gyPiI7DQogICAgICAgICAgICB4ICs9IEZ1bGxUYWJsZSh7IkNvbXB1dGVyIG1vZGVsIjpiYVsiTW9kZWwiXSwgIk1hbnVmYWN0dXJlciI6YmFbIk1hbnVmYWN0dXJlciJdLCAiVmVyc2lvbiI6YmFbIlZlcnNpb24iXSwgIlNlcmlhbCBudW1iZXIiOmJhWyJTZXJpYWxOdW1iZXIiXSwgIlN5c3RlbSBJRCI6Z3VpZFRvU3RyKHJlc3BvbnNlc1snQ0lNX1N5c3RlbVBhY2thZ2luZyddLnJlc3BvbnNlc1swXVsiUGxhdGZvcm1HVUlEIl0pLnRvTG93ZXJDYXNlKCl9LCAnJyk7DQoNCiAgICAgICAgICAgIHggKz0gIjxicj48aDI+QmFzZWJvYXJkPC9oMj4iOw0KICAgICAgICAgICAgeCArPSBGdWxsVGFibGUoeyAiTWFudWZhY3R1cmVyIjpiYlsiTWFudWZhY3R1cmVyIl0sICJQcm9kdWN0IG5hbWUiOmJiWyJNb2RlbCJdLCAiVmVyc2lvbiI6YmJbIlZlcnNpb24iXSwgIlNlcmlhbCBudW1iZXIiOmJiWyJTZXJpYWxOdW1iZXIiXSwgIkFzc2V0IHRhZyI6YmJbIlRhZyJdLCAiUmVwbGFjZWFibGU/IjooYmJbIkNhbkJlRlJVZWQiXT09dHJ1ZSk/J1llcyc6J05vJyB9LCcnKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgeCArPSAiPGJyPjxoMj5CSU9TPC9oMj4iOw0KICAgICAgICAgICAgeCArPSBGdWxsVGFibGUoeyJWZW5kb3IiOnJlc3BvbnNlc1snQ0lNX0JJT1NFbGVtZW50J10ucmVzcG9uc2VbIk1hbnVmYWN0dXJlciJdLCAiVmVyc2lvbiI6diwgIlJlbGVhc2UgZGF0ZSI6bmV3IERhdGUocmVzcG9uc2VzWydDSU1fQklPU0VsZW1lbnQnXS5yZXNwb25zZVsiUmVsZWFzZURhdGUiXVsnRGF0ZXRpbWUnXSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbicsIHt0aW1lWm9uZTonVVRDJ30pfSwnJyk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KICAgICAgICAgICAgZm9yIChpIGluIHJlc3BvbnNlc1snQ0lNX1Byb2Nlc3NvciddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgIHZhciBwID0gcmVzcG9uc2VzWydDSU1fUHJvY2Vzc29yJ10ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgIHZhciBxID0gcmVzcG9uc2VzWydDSU1fQ2hpcCddLnJlc3BvbnNlc1tpXTsgLy8gVGhpcyBpcyBhIHNob3J0Y3V0LCB3ZSBhc3N1bWUgdGhhdCB0aGUgZmlyc3QgZW50cmllcyBpbiBDSU1fQ2hpcCBhcmUgdGhlIHByb2Nlc3NvcnMsIGluIHRoZSBzYW1lIG9yZGVyLg0KICAgICAgICAgICAgICAgIHggKz0gIjxoMj5Qcm9jZXNzb3IgIiArIChwYXJzZUludChpKSArIDEpICsgIjwvaDI+IjsNCiAgICAgICAgICAgICAgICB4ICs9IEZ1bGxUYWJsZSh7Ik1hbnVmYWN0dXJlciI6dHJhZGVtYXJrcyhxWyJNYW51ZmFjdHVyZXIiXSksICJGYW1pbHkiOkRNVEZQcm9jRmFtaWxseVtwWyJGYW1pbHkiXV0sICJWZXJzaW9uIjp0cmFkZW1hcmtzKHFbIlZlcnNpb24iXSksICJNYXhpbXVtIHNvY2tldCBzcGVlZCI6cFsiTWF4Q2xvY2tTcGVlZCJdICsgIiBNSHoiLCAiU3RhdHVzIjpETVRGQ1BVU3RhdHVzW3BbIkNQVVN0YXR1cyJdXX0sJycpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAiPGJyPiI7DQoNCiAgICAgICAgICAgIGZvciAoaSBpbiByZXNwb25zZXNbJ0NJTV9QaHlzaWNhbE1lbW9yeSddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgIHZhciBtID0gcmVzcG9uc2VzWydDSU1fUGh5c2ljYWxNZW1vcnknXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgeCArPSAiPGgyPk1lbW9yeSBNb2R1bGUgIiArICgraSArIDEpICsgIjwvaDI+IjsNCiAgICAgICAgICAgICAgICB4ICs9IEZ1bGxUYWJsZSh7IkJhbmsgTGFiZWwiOm1bIkJhbmtMYWJlbCJdLCAiTWFudWZhY3R1cmVyIjptWyJNYW51ZmFjdHVyZXIiXSwgIlNlcmlhbCBOdW1iZXIiOm1bIlNlcmlhbE51bWJlciJdLCAiU2l6ZSI6cGFyc2VJbnQobVsiQ2FwYWNpdHkiXSAvIDB4MTAwMDAwKSArICIgTUIiLCAiRm9ybSBmYWN0b3IiOkRNVEZNZW1Gb3JtRmFjdG9yW21bIkZvcm1GYWN0b3IiXV0sICJUeXBlIjpETVRGTWVtVHlwZVttWyJNZW1vcnlUeXBlIl1dLCAiQXNzZXQgdGFnIjptWyJUYWciXSwgIlBhcnQgbnVtYmVyIjptWyJQYXJ0TnVtYmVyIl19LCcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KDQogICAgICAgICAgICBmb3IgKGkgaW4gcmVzcG9uc2VzWydDSU1fTWVkaWFBY2Nlc3NEZXZpY2UnXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgbSA9IHJlc3BvbnNlc1snQ0lNX01lZGlhQWNjZXNzRGV2aWNlJ10ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgIHZhciBuID0gcmVzcG9uc2VzWydDSU1fUGh5c2ljYWxQYWNrYWdlJ10ucmVzcG9uc2VzWytpICsgMV07IC8vIFRoaXMgaXMgYSBzaG9ydGN1dCwgd2UgYXNzdW1lIENJTV9QaHlzaWNhbFBhY2thZ2UgaXMgdGhlIHNhbWUgYXMgQ0lNX01lZGlhQWNjZXNzRGV2aWNlIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGVudHJ5Lg0KICAgICAgICAgICAgICAgIHggKz0gIjxoMj5TdG9yYWdlIE1lZGlhICIgKyAocGFyc2VJbnQoaSkgKyAxKSArICI8L2gyPiI7DQogICAgICAgICAgICAgICAgeCArPSBGdWxsVGFibGUoeyJNb2RlbCI6blsnTW9kZWwnXSwiU2VyaWFsIG51bWJlciI6KG5bJ1NlcmlhbE51bWJlciddPT0nJz8nVW5rbm93bic6blsnU2VyaWFsTnVtYmVyJ10pLCAiU2l6ZSI6cGFyc2VJbnQoTWF0aC5yb3VuZChtWyJNYXhNZWRpYVNpemUiXSAqIDEwMDAgLyAweDEwMDAwMCkpICsgIiBNQiJ9LCcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KDQogICAgICAgICAgICBRSCgnaWRfVGFibGVTeXNJbmZvJywgeCk7DQogICAgICAgICAgICB1cGRhdGVTeXN0ZW1TdGF0dXMoKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgZnVuY3Rpb24gU2F2ZUhhcmR3YXJlTG9nKCkgew0KICAgICAgICAgICAgaWYgKCF4eGRpYWxvZ01vZGUgJiYgSGFyZHdhcmVJbnZlbnRvcnkpIFNhdmVKc29uRmlsZSgnSW50ZWxBbXRIYXJkd2FyZScsICdoYXJkd2FyZScsICdJbnRlbCBBTVQgSGFyZHdhcmUgSW5mb3JtYXRpb24nLCBIYXJkd2FyZUludmVudG9yeSk7DQogICAgICAgIH0NCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIFBPV0VSIFBPTElDWQ0KICAgICAgICAvLw0KDQogICAgICAgIHZhciBBbXRTeXN0ZW1Qb3dlclNjaGVtZXMgPSBudWxsOw0KICAgICAgICBmdW5jdGlvbiBQdWxsUG93ZXJQb2xpY3koKSB7IGFtdHN0YWNrLkVudW0oIkFNVF9TeXN0ZW1Qb3dlclNjaGVtZSIsIHBvd2VyUG9saWN5UmVzcG9uc2UpOyB9DQogICAgICAgIGZ1bmN0aW9uIHBvd2VyUG9saWN5UmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsgQW10U3lzdGVtUG93ZXJTY2hlbWVzID0gcmVzcG9uc2U7IHVwZGF0ZVN5c3RlbVN0YXR1cygpOyB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1Bvd2VyUG9saWN5RGxnKGN1cnJlbnRndWlkKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgcyA9ICIiOw0KDQogICAgICAgICAgICAvLyBOb3cgZmluZCB0aGUgbmFtZSBvZiB0aGUgcG93ZXIgc2NoZW1hIGluIHRoZSBBTVRfU3lzdGVtUG93ZXJTY2hlbWUgdGFibGUNCiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgQW10U3lzdGVtUG93ZXJTY2hlbWVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gKChBbXRTeXN0ZW1Qb3dlclNjaGVtZXNbal1bJ1NjaGVtZUdVSUQnXSA9PSBjdXJyZW50Z3VpZCk/JyBjaGVja2VkJzonJyk7DQogICAgICAgICAgICAgICAgcyArPSAnPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1wb3dlcnBvbGljeSB2YWx1ZT1cIicgKyBBbXRTeXN0ZW1Qb3dlclNjaGVtZXNbal1bJ0luc3RhbmNlSUQnXSArICJcIiAiICsgc2VsZWN0ZWQgKyAnPicgKyBBbXRTeXN0ZW1Qb3dlclNjaGVtZXNbal1bJ0Rlc2NyaXB0aW9uJ10gKyAnPGJyPic7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdJbnRlbCZyZWc7IEFNVCBQb3dlciBQb2xpY3knLCAzLCBzaG93UG93ZXJQb2xpY3lEbGdPaywgcyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UG93ZXJQb2xpY3lEbGdPaygpIHsNCiAgICAgICAgICAgIHZhciBpZCA9IG51bGwsIGkgPSAwLCBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQogICAgICAgICAgICBmb3IgKDsgaSA8IGUubGVuZ3RoOyBpKyspIHsgaWYgKGVbaV0ubmFtZSA9PSAncG93ZXJwb2xpY3knICYmIGVbaV0uY2hlY2tlZCkgeyBpZCA9IGVbaV0udmFsdWU7IH0gfQ0KICAgICAgICAgICAgYW10c3RhY2suQU1UX1N5c3RlbVBvd2VyU2NoZW1lX1NldFBvd2VyU2NoZW1lKHNob3dQb3dlclBvbGljeURsZ09rRG9uZSwgaWQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1Bvd2VyUG9saWN5RGxnT2tEb25lKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IGlmIChzdGF0dXMgPT0gMjAwKSBQdWxsU3lzdGVtU3RhdHVzKCk7IH0NCg0KICAgICAgICAvLw0KICAgICAgICAvLyBVU0VSIElORk9STUFUSU9OIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgdmFyIHh4QWNjb3VudEFkbWluTmFtZSwgeHhBY2NvdW50UmVhbG1JbmZvLCB4eEFjY291bnRFbmFibGVkSW5mbyA9IHt9LCB4eEFjY291bnRGZXRjaCwgc2hvd0hpZGRlbkFjY291bnRzID0gZmFsc2U7DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFVzZXJJbmZvKCkgew0KICAgICAgICAgICAgeHhBY2NvdW50RmV0Y2ggPSAxOw0KICAgICAgICAgICAgZGVsZXRlIHh4QWNjb3VudEFkbWluTmFtZTsNCiAgICAgICAgICAgIHh4QWNjb3VudFJlYWxtSW5mbyA9IHt9Ow0KICAgICAgICAgICAgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX0dldEFkbWluQWNsRW50cnkoZ2V0QWRtaW5BY2xFbnRyeVJlc3BvbnNlKTsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9FbnVtZXJhdGVVc2VyQWNsRW50cmllcygxLCBlbnVtZXJhdGVVc2VyQWNsRW50cmllc1Jlc3BvbnNlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGdldEFkbWluQWNsRW50cnlSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHJldHVybjsNCiAgICAgICAgICAgIHh4QWNjb3VudFJlYWxtSW5mb1stMV0gPSB7ICdBY2Nlc3NQZXJtaXNzaW9uJzogOTk5LCAnRGlnZXN0VXNlcm5hbWUnOiByZXNwb25zZS5Cb2R5WyJVc2VybmFtZSJdLCAnUmVhbG1zJzpudWxsIH07DQogICAgICAgICAgICB4eEFjY291bnRBZG1pbk5hbWUgPSByZXNwb25zZS5Cb2R5WyJVc2VybmFtZSJdOw0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudHMoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVudW1lcmF0ZVVzZXJBY2xFbnRyaWVzUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSByZXR1cm47DQogICAgICAgICAgICAvL2lmIChlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgcmV0dXJuOw0KICAgICAgICAgICAgbWV0aG9kY2hlY2socmVzcG9uc2UpOw0KICAgICAgICAgICAgUVYoJ2dvMTEnLCB0cnVlKTsgLy8gU2hvdyAiVXNlciBBY2NvdW50cyIgb24gbGVmdCBwYW5lbA0KICAgICAgICAgICAgeHhBY2NvdW50RmV0Y2ggPSByZXNwb25zZS5Cb2R5WyJIYW5kbGVzIl0ubGVuZ3RoOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiByZXNwb25zZS5Cb2R5WyJIYW5kbGVzIl0pIHsNCiAgICAgICAgICAgICAgICB2YXIgaCA9IHJlc3BvbnNlLkJvZHlbIkhhbmRsZXMiXVtpXTsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfR2V0QWNsRW5hYmxlZFN0YXRlKGgsIGdldEFjbEVuYWJsZWRTdGF0ZVJlc3BvbnNlLCBoKTsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfR2V0VXNlckFjbEVudHJ5RXgoaCwgZ2V0VXNlckFjbEVudHJ5RXhSZXNwb25zZSwgaCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB1cGRhdGVBY2NvdW50cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZ2V0VXNlckFjbEVudHJ5RXhSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICB4eEFjY291bnRGZXRjaC0tOw0KICAgICAgICAgICAgLy9pZiAoZXJyY2hlY2soc3RhdHVzLCBzdGFjaykpIHJldHVybjsNCiAgICAgICAgICAgIC8vbWV0aG9kY2hlY2socmVzcG9uc2UpOw0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgLy8gU29tZXRpbWVzIEludGVsIEFNVCB3aWxsIGp1c3QgZnJlYWsgb3V0IG9uIHRoaXMgY2FsbCwgaWYgaXQncyB0aGUgY2FzZSwganVzdCBjYXJyeSBvbi4NCiAgICAgICAgICAgICAgICByZXNwb25zZS5Cb2R5WyJIYW5kbGUiXSA9IHRhZzsNCiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLkJvZHlbIlJlYWxtcyJdKSByZXNwb25zZS5Cb2R5WyJSZWFsbXMiXSA9IFtdOw0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KHJlc3BvbnNlLkJvZHlbIlJlYWxtcyJdKSkgcmVzcG9uc2UuQm9keVsiUmVhbG1zIl0gPSBbcmVzcG9uc2UuQm9keVsiUmVhbG1zIl1dOyAvLyBJZiAiUmVhbG1zIiBpcyBub3QgYW4gYXJyYXksIGl0J3MgYmVjYXVzZSBpdCdzIGp1c3Qgb25lIHJlYWxtLiBGaXggaXMgc28gaXQncyBhbiBhcnJheSBvZiBvbmUuDQogICAgICAgICAgICAgICAgeHhBY2NvdW50UmVhbG1JbmZvW3RhZ10gPSByZXNwb25zZS5Cb2R5Ow0KICAgICAgICAgICAgICAgIHVwZGF0ZUFjY291bnRzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRBY2xFbmFibGVkU3RhdGVSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICAvL2lmIChlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgcmV0dXJuOw0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgLy8gU29tZXRpbWVzIEludGVsIEFNVCB3aWxsIGp1c3QgZnJlYWsgb3V0IG9uIHRoaXMgY2FsbCwgaWYgaXQncyB0aGUgY2FzZSwganVzdCBjYXJyeSBvbi4NCiAgICAgICAgICAgICAgICB4eEFjY291bnRFbmFibGVkSW5mb1t0YWddID0gcmVzcG9uc2UuQm9keTsNCiAgICAgICAgICAgICAgICB1cGRhdGVBY2NvdW50cygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2V0QWNsRW5hYmxlZFN0YXRlUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKGVycmNoZWNrKHN0YXR1cywgc3RhY2spKSByZXR1cm47DQogICAgICAgICAgICBtZXRob2RjaGVjayhyZXNwb25zZSk7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfR2V0QWNsRW5hYmxlZFN0YXRlKHRhZywgZ2V0QWNsRW5hYmxlZFN0YXRlUmVzcG9uc2UsIHRhZyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1cGRhdGVBY2NvdW50cygpIHsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRGZXRjaCA+IDApIHJldHVybjsNCiAgICAgICAgICAgIHZhciB4ID0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSB0aGUgSW50ZWwmcmVnOyBBTVQgdXNlciBhY2NvdW50cyBmb3IgdGhpcyBjb21wdXRlci48YnI+PGJyPiI7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4QWNjb3VudFJlYWxtSW5mbykgew0KICAgICAgICAgICAgICAgIHZhciByID0geHhBY2NvdW50UmVhbG1JbmZvW2ldLCBuYW1lLCBoaWRkZW4gPSBmYWxzZSwgc3RhdGUgPSAwOw0KICAgICAgICAgICAgICAgIGlmIChyWyJEaWdlc3RVc2VybmFtZSJdKSB7IG5hbWUgPSByWyJEaWdlc3RVc2VybmFtZSJdOyBoaWRkZW4gPSAobmFtZVswXSA9PSAnJCcgJiYgbmFtZVsxXSA9PSAnJCcpOyB9IGVsc2UgeyBuYW1lID0gR2V0U2lkU3RyaW5nKGF0b2IoclsiS2VyYmVyb3NVc2VyU2lkIl0pKTsgfQ0KICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRFbmFibGVkSW5mb1tpXSAmJiBuYW1lICE9ICckJE9zQWRtaW4nKSB7IHN0YXRlID0gKHh4QWNjb3VudEVuYWJsZWRJbmZvW2ldWydFbmFibGVkJ10gPT0gdHJ1ZSk/MToyOyB9DQogICAgICAgICAgICAgICAgaWYgKHNob3dIaWRkZW5BY2NvdW50cyB8fCAhaGlkZGVuKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciByYiA9ICIiOw0KICAgICAgICAgICAgICAgICAgICBpZiAoclsiQWNjZXNzUGVybWlzc2lvbiJdICE9IDk5OSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09IDIpIHsgcmIgKz0gIkRpc2FibGVkLCAiOyB9DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmMgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHJbIlJlYWxtcyJdKSB7IGlmIChhbXRzdGFjay5SZWFsbU5hbWVzW3JbIlJlYWxtcyJdW2ldXSAhPSAnJykgeyByYysrOyB9IH0gLy8gQ291bnQgb25seSByZWFsbXMgdGhhdCBoYXZlIGEgbmFtZSwgcmVtb3ZpbmcgcmVzZXJ2ZWQgcmVhbG1zLg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJbIlJlYWxtcyJdLmluZGV4T2YoMjApID49IDApIHJiICs9ICJBdWRpdG9yLCAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJbIlJlYWxtcyJdLmluZGV4T2YoMykgPj0gMCkgeyByYiArPSAiQWRtaW5pc3RyYXRvciI7IH0gZWxzZSB7IGlmIChyYyA9PSAxKSB7IHJiICs9ICIxIHJlYWxtIjsgfSBlbHNlIHsgcmIgKz0gcmMgKyAiIHJlYWxtcyI7IH0gfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgcmIgKz0gIkFkbWluaXN0cmF0b3IiOw0KICAgICAgICAgICAgICAgICAgICAgICAgclsiSGFuZGxlIl0gPSAtMTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93VXNlckRldGFpbHMoIiArIHJbIkhhbmRsZSJdICsgIik+PGRpdiBzdHlsZT1mbG9hdDpyaWdodD4iOw0KICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPiAwICYmIHh4QWNjb3VudEFkbWluTmFtZSkgeCArPSAiICIgKyBBZGRCdXR0b24yKChzdGF0ZSA9PSAxPydEaXNhYmxlJzonRW5hYmxlJyksICJjaGFuZ2VBY2NvdW50U3RhdGVCdXR0b24oZXZlbnQsIiArIHJbIkhhbmRsZSJdICsgIiwiICsgc3RhdGUgKyAiKSIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWhpZGRlbiAmJiB4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gIiAiICsgQWRkQnV0dG9uMigiRWRpdC4uLiIsICJjaGFuZ2VBY2NvdW50QnV0dG9uKGV2ZW50LCIgKyByWyJIYW5kbGUiXSArICIpIik7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4O3dpZHRoOjMzMHB4O2Zsb2F0OmxlZnQ7b3ZlcmZsb3cteDpoaWRkZW4gdGl0bGU9JyIgKyBuYW1lICsgIic+PGI+IiArIG5hbWUgKyAiPC9iPjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PiIgKyByYiArICI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciB5ID0gIjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ7bWFyZ2luLXJpZ2h0OjhweD48YSB0aXRsZT0nVG9nZ2xlIGhpZGRlbiBhY2NvdW50cycgc3R5bGU9Y29sb3I6Z3JheTtjdXJzb3I6cG9pbnRlciBvbmNsaWNrPXRvZ2dsZUFjY291bnRCdXR0b24oKT4iICsgKHNob3dIaWRkZW5BY2NvdW50cz8nJiN4MjVCMjsnOicmI3gyNUJDOycpICsgIjwvYT48L2Rpdj48ZGl2PiZuYnNwOyIgKyBBZGRSZWZyZXNoQnV0dG9uKCJ4eEFjY291bnRGZXRjaD05OTk7UHVsbFVzZXJJbmZvKCkiKTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHkgKz0gQWRkQnV0dG9uKCJOZXcgQWNjb3VudCIsICJuZXdBY2NvdW50QnV0dG9uKCkiKTsNCiAgICAgICAgICAgIHggKz0gIjxicj48dGQgY2xhc3M9cjE+IiArIFRhYmxlRW5kKHkgKyAiPC9kaXY+Iik7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVVc2VyQWNjb3VudHMnLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUFjY291bnRCdXR0b24oKSB7DQogICAgICAgICAgICBzaG93SGlkZGVuQWNjb3VudHMgPSAhc2hvd0hpZGRlbkFjY291bnRzOw0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudHMoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHJlbW92ZVVzZXJBY2xFbnRyeVJlc3BvbnNlKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzLCB0YWcpIHsNCiAgICAgICAgICAgIGlmIChtZXRob2RjaGVjayhyZXNwb25zZSkpIHJldHVybjsNCiAgICAgICAgICAgIFB1bGxVc2VySW5mbygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2hhbmdlQWNjb3VudFN0YXRlQnV0dG9uKGUsIGgsIHMpIHsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9TZXRBY2xFbmFibGVkU3RhdGUoaCwgKHM9PTE/ZmFsc2U6dHJ1ZSksIHNldEFjbEVuYWJsZWRTdGF0ZVJlc3BvbnNlLCBoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNoYW5nZUFjY291bnRCdXR0b24oZSwgaCkgew0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdXBkYXRlUmVhbG1zKHh4QWNjb3VudFJlYWxtSW5mb1toXVsiUmVhbG1zIl0pOw0KICAgICAgICAgICAgZDJ1c2VybmFtZS52YWx1ZSA9IHh4QWNjb3VudFJlYWxtSW5mb1toXVsiRGlnZXN0VXNlcm5hbWUiXSA/IHh4QWNjb3VudFJlYWxtSW5mb1toXVsiRGlnZXN0VXNlcm5hbWUiXSA6IEdldFNpZFN0cmluZyhhdG9iKHh4QWNjb3VudFJlYWxtSW5mb1toXVsiS2VyYmVyb3NVc2VyU2lkIl0pKTsNCiAgICAgICAgICAgIGQycGFzc3dvcmQxLnZhbHVlID0gZDJwYXNzd29yZDIudmFsdWUgPSAnJzsNCiAgICAgICAgICAgIGQycGVybWlzc2lvbi52YWx1ZSA9IHh4QWNjb3VudFJlYWxtSW5mb1toXVsiQWNjZXNzUGVybWlzc2lvbiJdOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgyLCAiRWRpdCBBY2NvdW50IiwgKChoPT0tMSk/Mzo3KSwgZnVuY3Rpb24gKGJ1dHRvbikgeyBjaGFuZ2VBY2NvdW50QnV0dG9uRXgoaCwgYnV0dG9uKTsgfSk7IC8vIElmIGhhbmRsZSBpcyAtMSwgb25seSBkaXNwbGF5IE9LL0NhbmNlbCBidXR0b25zLCBpZiBub3QsIGFsc28gZGlzcGxheSBkZWxldGUgYnV0dG9uLg0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudERpYWxvZygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbmV3QWNjb3VudEJ1dHRvbigpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHVwZGF0ZVJlYWxtcyhbXSk7DQogICAgICAgICAgICBkMnVzZXJuYW1lLnZhbHVlID0gZDJwYXNzd29yZDEudmFsdWUgPSBkMnBhc3N3b3JkMi52YWx1ZSA9ICcnOw0KICAgICAgICAgICAgZDJwZXJtaXNzaW9uLnZhbHVlID0gMjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMiwgIk5ldyBBY2NvdW50IiwgMywgZnVuY3Rpb24gKCkgeyBjaGFuZ2VBY2NvdW50QnV0dG9uRXgobnVsbCwgMSk7IH0pOw0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudERpYWxvZygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2hhbmdlQWNjb3VudEJ1dHRvbkV4KGgsIGJ1dHRvbikgew0KICAgICAgICAgICAgaWYgKGJ1dHRvbiA9PSAxKSB7IC8vIE9LIEJ1dHRvbg0KICAgICAgICAgICAgICAgIHZhciByZWFsbXMgPSBbXSwgdXNlcm5hbWUgPSBkMnVzZXJuYW1lLnZhbHVlLCBwZXJtaXNzaW9uID0gZDJwZXJtaXNzaW9uLnZhbHVlLCBwYXNzd29yZCA9IGQycGFzc3dvcmQxLnZhbHVlLCBzaWQgPSBHZXRTaWRCeXRlQXJyYXkoUSgnZDJ1c2VybmFtZScpLnZhbHVlKSwgZCA9IG51bGw7DQogICAgICAgICAgICAgICAgaWYgKHVzZXJuYW1lLmxlbmd0aCA9PSAwIHx8IHBhc3N3b3JkICE9IGQycGFzc3dvcmQyLnZhbHVlKSB7IG1lc3NhZ2Vib3goIkFjY291bnQgRXJyb3IiLCAiSW52YWxpZCBQYXJhbWV0ZXJzIik7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgIGlmIChzaWQgPT0gbnVsbCkgeyBkID0gd2luZG93LmJ0b2EocnN0cl9tZDUodXNlcm5hbWUgKyAiOiIgKyBhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlWyJEaWdlc3RSZWFsbSJdICsgIjoiICsgcGFzc3dvcmQpKTsgfSBlbHNlIHsgdXNlcm5hbWUgPSBudWxsOyBzaWQgPSBidG9hKHNpZCk7IH0NCiAgICAgICAgICAgICAgICBpZiAoaCAhPSAtMSkgeyBmb3IgKHZhciB5IGluIGFtdHN0YWNrLlJlYWxtTmFtZXMpIHsgaWYgKCgoYW10c3RhY2suUmVhbG1OYW1lc1t5XSkgfHwgKHkgPT0gMykpICYmIFEoJ3J4JyArIHkpLmNoZWNrZWQpIHsgcmVhbG1zLnB1c2goeSk7IH0gfSB9DQogICAgICAgICAgICAgICAgaWYgKGggPT0gbnVsbCkgeyBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfQWRkVXNlckFjbEVudHJ5RXgodXNlcm5hbWUsIGQsIHNpZCwgcGVybWlzc2lvbiwgcmVhbG1zLCB1c2VyQWNsRW50cnlFeFJlc3BvbnNlKTsgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGggPT0gLTEpIHsgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1NldEFkbWluQWNsRW50cnlFeCh1c2VybmFtZSwgZCwgdXNlckFjbEVudHJ5RXhSZXNwb25zZSk7IH0NCiAgICAgICAgICAgICAgICBlbHNlIHsgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1VwZGF0ZVVzZXJBY2xFbnRyeUV4KGgsIHVzZXJuYW1lLCBkLCBzaWQsIHBlcm1pc3Npb24sIHJlYWxtcywgdXNlckFjbEVudHJ5RXhSZXNwb25zZSk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMikgeyAvLyBEZWxldGUgQnV0dG9uDQogICAgICAgICAgICAgICAgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1JlbW92ZVVzZXJBY2xFbnRyeShoLCByZW1vdmVVc2VyQWNsRW50cnlSZXNwb25zZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2VyQWNsRW50cnlFeFJlc3BvbnNlKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzLCB0YWcpIHsgaWYgKG1ldGhvZGNoZWNrKHJlc3BvbnNlKSkgcmV0dXJuOyBQdWxsVXNlckluZm8oKTsgfQ0KICAgICAgICBmdW5jdGlvbiB1cGRhdGVSZWFsbXMocikgew0KICAgICAgICAgICAgUVYoJ2lkX2QycGVybWlzc2lvbnMnLCByICE9IG51bGwpOw0KICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHZhciB4ID0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggb25jaGFuZ2U9dXBkYXRlQWNjb3VudERpYWxvZygpIGlkPXJ4MycgKyAoKHIuaW5kZXhPZigzKSA+PSAwKT8nIGNoZWNrZWQnOicnKSArICc+QWRtaW5pc3RyYXRvcjwvbGFiZWw+PC9saT48aHIgLz4nOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHkgaW4gYW10c3RhY2suUmVhbG1OYW1lcykgeyB2YXIgYyA9ICcnOyBpZiAoci5pbmRleE9mKHBhcnNlSW50KHkpKSA+PSAwKSBjID0gJyBjaGVja2VkJzsgaWYgKGFtdHN0YWNrLlJlYWxtTmFtZXNbeV0pIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggb25jaGFuZ2U9dXBkYXRlQWNjb3VudERpYWxvZygpIGlkPXJ4JyArIHkgKyBjICsgJz4nICsgYW10c3RhY2suUmVhbG1OYW1lc1t5XSArICc8L2xhYmVsPjwvbGk+JzsgfQ0KICAgICAgICAgICAgICAgIFFIKCdpZF9kMnJlYWxtcycsIHgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlQWNjb3VudERpYWxvZygpIHsNCiAgICAgICAgICAgIHZhciBvayA9IGZhbHNlOw0KICAgICAgICAgICAgZm9yICh2YXIgeSBpbiBhbXRzdGFjay5SZWFsbU5hbWVzKSB7IGlmICgoKGFtdHN0YWNrLlJlYWxtTmFtZXNbeV0pIHx8ICh5ID09IDMpKSAmJiBRKCdyeCcgKyB5KS5jaGVja2VkKSB7IG9rID0gdHJ1ZTsgfSB9DQogICAgICAgICAgICBvayAmPSAoZDJ1c2VybmFtZS52YWx1ZS5sZW5ndGggPiAwICYmIHBhc3N3b3JkY2hlY2soZDJwYXNzd29yZDEudmFsdWUpICYmIGQycGFzc3dvcmQxLnZhbHVlID09IGQycGFzc3dvcmQyLnZhbHVlKTsNCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCBvayk7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgeHhVc2VyUGVybWlzc2lvbnMgPSBbJ0xvY2FsIG9ubHknICwgJ05ldHdvcmsgb25seScsICdBbGwgKExvY2FsICYgTmV0d29yayknXTsNCiAgICAgICAgZnVuY3Rpb24gc2hvd1VzZXJEZXRhaWxzKGgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBhID0geHhBY2NvdW50UmVhbG1JbmZvW2hdLCB4ID0gJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpsZWZ0Pic7DQogICAgICAgICAgICB2YXIgaSwgbiA9IGFbIkRpZ2VzdFVzZXJuYW1lIl07DQogICAgICAgICAgICBpZiAoIW4pIG4gPSBHZXRTaWRTdHJpbmcoYXRvYihhWyJLZXJiZXJvc1VzZXJTaWQiXSkpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIk5hbWUiLCBuKTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRFbmFibGVkSW5mb1toXSkgeyB4ICs9IGFkZEh0bWxWYWx1ZSgiU3RhdGUiLCAoKHh4QWNjb3VudEVuYWJsZWRJbmZvW2hdWydFbmFibGVkJ10gPT0gdHJ1ZSk/J0VuYWJsZWQnOidEaXNhYmxlZCcpKTsgfQ0KICAgICAgICAgICAgaWYgKG4gPT0geHhBY2NvdW50QWRtaW5OYW1lKSB7DQogICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlBlcm1pc3Npb24iLCAiQWRtaW5pc3RyYXRvciIpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiUGVybWlzc2lvbiIsIHh4VXNlclBlcm1pc3Npb25zW2FbIkFjY2Vzc1Blcm1pc3Npb24iXV0pOw0KICAgICAgICAgICAgICAgIHZhciB5ID0gJyc7DQogICAgICAgICAgICAgICAgaWYgKGFbIlJlYWxtcyJdLmluZGV4T2YoMykgPj0gMCkgew0KICAgICAgICAgICAgICAgICAgICB5ID0gJ0FkbWluaXN0cmF0b3InOw0KICAgICAgICAgICAgICAgICAgICBpZiAoYVsiUmVhbG1zIl0uaW5kZXhPZigyMCkgPj0gMCkgeSArPSAiLCBBdWRpdG9yIjsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4geHhBY2NvdW50UmVhbG1JbmZvW2hdWyJSZWFsbXMiXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFtdHN0YWNrLlJlYWxtTmFtZXNbYVsiUmVhbG1zIl1baV1dICE9ICcnKSB7IC8vIFJlbW92ZSBibGFuayByZXNlcnZlZCByZWFsbXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeS5sZW5ndGggPiAwKSB5ICs9ICIsICI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSArPSBhbXRzdGFjay5SZWFsbU5hbWVzW2FbIlJlYWxtcyJdW2ldXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoeS5sZW5ndGggPT0gMCkgeSA9ICdOb25lJzsNCiAgICAgICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiUmVhbG1zIiwgIiIpICsgIjxiPiIgKyB5ICsgIjwvYj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAiPC9kaXY+IjsNCiAgICAgICAgICAgIG1lc3NhZ2Vib3goIkFjY291bnQgIiArIG4sIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gV1NNQU4gQlJPV1NFUiBQQU5FTA0KICAgICAgICAvLw0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gUmVtb3RlIFRlcm1pbmFsDQogICAgICAgIC8vDQoNCg0KICAgICAgICAvLw0KICAgICAgICAvLyBSZW1vdGUgRGVza3RvcA0KICAgICAgICAvLw0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gUmVtb3RlIElERVINCiAgICAgICAgLy8NCg0KDQoNCg0KICAgICAgICAvLw0KICAgICAgICAvLyBSZW1vdGUgQWNjZXNzDQogICAgICAgIC8vDQoNCiAgICAgICAgdmFyIHh4UmVtb3RlQWNjZXNzID0gbnVsbDsNCiAgICAgICAgdmFyIHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID0gbnVsbDsNCiAgICAgICAgdmFyIHh4Q2lyYVNlcnZlcnMgPSBudWxsOw0KICAgICAgICB2YXIgeHhVc2VySW5pdGlhdGVkQ2lyYSA9IG51bGw7DQogICAgICAgIHZhciB4eFVzZXJJbml0aWF0ZWRFbmFibGVkU3RhdGUgPSB7IDMyNzY4OiAnRGlzYWJsZWQnLCAzMjc2OTogJ0JJT1MgZW5hYmxlZCcsIDMyNzcwOiAnT1MgZW5hYmxlJywgMzI3NzE6ICdCSU9TICYgT1MgZW5hYmxlZCcgfTsNCiAgICAgICAgdmFyIHh4UmVtb3RlQWNjZXNzQ3JlZGVudGlhTGlua3MgPSBudWxsOw0KICAgICAgICB2YXIgeHhNUFNVc2VyUGFzcyA9IG51bGw7DQogICAgICAgIHZhciB4eFBvbGljaWVzID0gbnVsbDsNCg0KICAgICAgICBmdW5jdGlvbiBQdWxsUmVtb3RlQWNjZXNzKCkgew0KICAgICAgICAgICAgLy8gV2Ugb25seSBkZWFsIHdpdGggcmVtb3RlIGFjY2VzcyBzdGFydGluZyB3aXRoIEludGVsIEFNVCA2IGFuZCBiZXlvbmQNCg0KICAgICAgICAgICAgdmFyIHJlcXVlc3RzID0gWyIqQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEiLCAiQU1UX01hbmFnZW1lbnRQcmVzZW5jZVJlbW90ZVNBUCIsICJBTVRfUmVtb3RlQWNjZXNzQ3JlZGVudGlhbENvbnRleHQiLCAiQU1UX1JlbW90ZUFjY2Vzc1BvbGljeUFwcGxpZXNUb01QUyIsICJBTVRfUmVtb3RlQWNjZXNzUG9saWN5UnVsZSIsICIqQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZSIsICJBTVRfTVBTVXNlcm5hbWVQYXNzd29yZCJdOw0KICAgICAgICAgICAgaWYgKGFtdHZlcnNpb24gPiAxMSkgeyByZXF1ZXN0cy5wdXNoKCIqSVBTX0hUVFBQcm94eVNlcnZpY2UiLCAiSVBTX0hUVFBQcm94eUFjY2Vzc1BvaW50Iik7IH0NCiAgICAgICAgICAgIGFtdHN0YWNrLkJhdGNoRW51bShudWxsLCByZXF1ZXN0cywgcHJvY2Vzc1JlbW90ZTEpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1JlbW90ZTEoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDQwMCkgcmV0dXJuOw0KICAgICAgICAgICAgaWYgKChlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgfHwgKHJlc3BvbnNlc1siQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZSJdID09IHVuZGVmaW5lZCB8fCByZXNwb25zZXNbIkFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UiXS5yZXNwb25zZSA9PSB1bmRlZmluZWQpKSByZXR1cm47DQogICAgICAgICAgICBRVignZ28xNycsIHRydWUpOyAvLyBSZW1vdGUgQWNjZXNzDQogICAgICAgICAgICB4eFJlbW90ZUFjY2VzcyA9IHJlc3BvbnNlczsNCiAgICAgICAgICAgIHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID0gcmVzcG9uc2VzWyJBTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YSJdLnJlc3BvbnNlOw0KICAgICAgICAgICAgeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXSA9IE1ha2VUb0FycmF5KHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uWydEZXRlY3Rpb25TdHJpbmdzJ10pOw0KICAgICAgICAgICAgeHhDaXJhU2VydmVycyA9IHJlc3BvbnNlc1siQU1UX01hbmFnZW1lbnRQcmVzZW5jZVJlbW90ZVNBUCJdLnJlc3BvbnNlczsNCiAgICAgICAgICAgIHh4VXNlckluaXRpYXRlZENpcmEgPSByZXNwb25zZXNbIkFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UiXS5yZXNwb25zZTsNCiAgICAgICAgICAgIHh4UmVtb3RlQWNjZXNzQ3JlZGVudGlhTGlua3MgPSByZXNwb25zZXNbIkFNVF9SZW1vdGVBY2Nlc3NDcmVkZW50aWFsQ29udGV4dCJdLnJlc3BvbnNlczsNCiAgICAgICAgICAgIHh4TVBTVXNlclBhc3MgPSByZXNwb25zZXNbIkFNVF9NUFNVc2VybmFtZVBhc3N3b3JkIl0ucmVzcG9uc2VzOw0KDQogICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHBvbGljaWVzIGF0dGFjaGVkIHRvIHNlcnZlcnMuIENyZWF0ZSBhIHBvbGljeSB0eXBlIHRvIHNlcnZlciB0YWJsZS4NCiAgICAgICAgICAgIHh4UG9saWNpZXMgPSB7ICdVc2VyJzogW10sICdBbGVydCc6IFtdLCAnUGVyaW9kaWMnOiBbXSB9Ow0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiByZXNwb25zZXNbIkFNVF9SZW1vdGVBY2Nlc3NQb2xpY3lBcHBsaWVzVG9NUFMiXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgcG9saWN5ID0gcmVzcG9uc2VzWyJBTVRfUmVtb3RlQWNjZXNzUG9saWN5QXBwbGllc1RvTVBTIl0ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXIgPSBDbG9uZShnZXRJdGVtKHh4Q2lyYVNlcnZlcnMsICJOYW1lIiwgZ2V0SXRlbShwb2xpY3lbJ01hbmFnZWRFbGVtZW50J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSwgIkBOYW1lIiwgIk5hbWUiKVsnVmFsdWUnXSkpOw0KICAgICAgICAgICAgICAgIHNlcnZlci5NcHNUeXBlID0gcG9saWN5WydNcHNUeXBlJ107IC8vIE1wc1R5cGUgd2FzIGFkZGVkIGluIEludGVsIEFNVCAxMS42DQogICAgICAgICAgICAgICAgdmFyIHB0eXBlID0gKGdldEl0ZW0ocG9saWN5WydQb2xpY3lTZXQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddLCAiQE5hbWUiLCAiUG9saWN5UnVsZU5hbWUiKVsnVmFsdWUnXSkuc3BsaXQoJyAnKVswXTsNCiAgICAgICAgICAgICAgICB4eFBvbGljaWVzW3B0eXBlXS5wdXNoKHNlcnZlcik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHVwZGF0ZVJlbW90ZUFjY2VzcygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlUmVtb3RlQWNjZXNzKCkgew0KICAgICAgICAgICAgaWYgKHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID09IG51bGwpIHJldHVybjsNCiAgICAgICAgICAgIHZhciB4ID0gJycsIGUgPSAnRGlzYWJsZWQnLCBjaXJhUHJveHlTdXBwb3J0ID0gKHh4UmVtb3RlQWNjZXNzWyJJUFNfSFRUUFByb3h5U2VydmljZSJdICYmIHh4UmVtb3RlQWNjZXNzWyJJUFNfSFRUUFByb3h5QWNjZXNzUG9pbnQiXSk7DQogICAgICAgICAgICBpZiAoeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXSAmJiB4eEVudmlyb25lbWVudERldGVjdGlvblsnRGV0ZWN0aW9uU3RyaW5ncyddLmxlbmd0aCA+IDApIHsgZSA9ICdFbmFibGVkLCAnICsgeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXS5sZW5ndGggKyAnIGRvbWFpbicgKyAoeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXS5sZW5ndGggPiAxPydzJzonJyk7IH0NCg0KICAgICAgICAgICAgLy8gR2VuZXJhbCBzZXR0aW5ncw0KICAgICAgICAgICAgeCArPSBUYWJsZVN0YXJ0KCk7DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkVudmlyb25tZW50IGRldGVjdGlvbiIsIGFkZExpbmsoZSwgJ2VkaXRFbnZpcm9ubWVudERldGVjdGlvbigpJykpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJVc2VyIGluaXRpYXRpb24gb3B0aW9ucyIsIGFkZExpbmtDb25kaXRpb25hbCh4eFVzZXJJbml0aWF0ZWRFbmFibGVkU3RhdGVbeHhVc2VySW5pdGlhdGVkQ2lyYVsnRW5hYmxlZFN0YXRlJ11dLCAnZWRpdFVzZXJJbml0aWF0ZWRDaXJhKCknLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgICAgIHZhciB5ID0gJzxpPk5vbmU8L2k+JzsNCiAgICAgICAgICAgIGlmICh4eFBvbGljaWVzWydVc2VyJ10ubGVuZ3RoID4gMCkgeyB5ID0gJyc7IGZvciAodmFyIGkgaW4geHhQb2xpY2llc1snVXNlciddKSB7IGlmICh5Lmxlbmd0aCA+IDApIHkgKz0gJywgJzsgeSArPSB4eFBvbGljaWVzWydVc2VyJ11baV1bJ0FjY2Vzc0luZm8nXTsgaWYgKHh4UG9saWNpZXNbJ1VzZXInXVtpXS5NcHNUeXBlID09IDEpIHsgeSArPSAnIChDSUxBKSc7IH0gfSB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlVzZXIgaW5pdGlhdGVkIGNvbm5lY3Rpb24iLCBhZGRMaW5rQ29uZGl0aW9uYWwoeSwgJ2VkaXRNcHNQb2xpY3koIlVzZXIiKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgdmFyIHkgPSAnPGk+Tm9uZTwvaT4nOw0KICAgICAgICAgICAgaWYgKHh4UG9saWNpZXNbJ0FsZXJ0J10ubGVuZ3RoID4gMCkgeyB5ID0gJyc7IGZvciAodmFyIGkgaW4geHhQb2xpY2llc1snQWxlcnQnXSkgeyBpZiAoeS5sZW5ndGggPiAwKSB5ICs9ICcsICc7IHkgKz0geHhQb2xpY2llc1snQWxlcnQnXVtpXVsnQWNjZXNzSW5mbyddOyBpZiAoeHhQb2xpY2llc1snQWxlcnQnXVtpXS5NcHNUeXBlID09IDEpIHsgeSArPSAnIChDSUxBKSc7IH0gfSB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkFsZXJ0IGluaXRpYXRlZCBjb25uZWN0aW9uIiwgYWRkTGlua0NvbmRpdGlvbmFsKHksICdlZGl0TXBzUG9saWN5KCJBbGVydCIpJywgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICB2YXIgeSA9ICc8aT5Ob25lPC9pPic7DQogICAgICAgICAgICBpZiAoeHhQb2xpY2llc1snUGVyaW9kaWMnXS5sZW5ndGggPiAwKSB7IHkgPSAnJzsgZm9yICh2YXIgaSBpbiB4eFBvbGljaWVzWydQZXJpb2RpYyddKSB7IGlmICh5Lmxlbmd0aCA+IDApIHkgKz0gJywgJzsgeSArPSB4eFBvbGljaWVzWydQZXJpb2RpYyddW2ldWydBY2Nlc3NJbmZvJ107IGlmICh4eFBvbGljaWVzWydQZXJpb2RpYyddW2ldLk1wc1R5cGUgPT0gMSkgeyB5ICs9ICcgKENJTEEpJzsgfSB9IH0NCiAgICAgICAgICAgIHZhciBwZXJpb2RpY1BvbGljeSA9IGdldEl0ZW0oeHhSZW1vdGVBY2Nlc3NbIkFNVF9SZW1vdGVBY2Nlc3NQb2xpY3lSdWxlIl0ucmVzcG9uc2VzLCAiUG9saWN5UnVsZU5hbWUiLCAiUGVyaW9kaWMiKTsNCiAgICAgICAgICAgIGlmIChwZXJpb2RpY1BvbGljeSkgew0KICAgICAgICAgICAgICAgIHZhciBleGRhdGEgPSBhdG9iKHBlcmlvZGljUG9saWN5WydFeHRlbmRlZERhdGEnXSk7DQogICAgICAgICAgICAgICAgaWYgKFJlYWRJbnQoZXhkYXRhLCAwKSA9PSAwKSB7IHkgKz0gJywgZWFjaCAnICsgUmVhZEludChleGRhdGEsIDQpICsgJyBzZWNvbmRzJzsgfQ0KICAgICAgICAgICAgICAgIGlmIChSZWFkSW50KGV4ZGF0YSwgMCkgPT0gMSkgeyB2YXIgaG91cnMgPSBSZWFkSW50KGV4ZGF0YSwgNCk7IHZhciBtaW51dGVzID0gUmVhZEludChleGRhdGEsIDgpOyBpZiAobWludXRlcyA8IDEwKSBtaW51dGVzID0gJzAnICsgbWludXRlczsgeSArPSAnLCBhdCAnICsgaG91cnMgKyAiOiIgKyBtaW51dGVzICsgJyBkYWlseSc7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiUGVyaW9kaWMgY29ubmVjdGlvbiIsIGFkZExpbmtDb25kaXRpb25hbCh5LCAnZWRpdE1wc1BvbGljeSgiUGVyaW9kaWMiKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KDQogICAgICAgICAgICAvLyBTaG93IE1QUyBzZXJ2ZXJzDQogICAgICAgICAgICB4ICs9ICI8YnI+IjsNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCByZW1vdGUgbWFuYWdlbWVudCBzZXJ2ZXJzLjxicj48YnI+IjsNCiAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+PGk+Tm8gcmVtb3RlIHNlcnZlcnMgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4Q2lyYVNlcnZlcnMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSAnOicgKyB4eENpcmFTZXJ2ZXJzW2ldWydQb3J0J107DQogICAgICAgICAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzW2ldWydDTiddKSBkZXNjICs9ICcsICcgKyB4eENpcmFTZXJ2ZXJzW2ldWydDTiddOw0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93U2VydmVyRGV0YWlscygiICsgaSArICIpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyB4eENpcmFTZXJ2ZXJzW2ldWyJBY2Nlc3NJbmZvIl0gKyAiPC9iPiIgKyBFc2NhcGVIdG1sKGRlc2MpICsgIjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBTaG93IE1QUyBwcm94aWVzIGlmIHN1cHBvcnRlZA0KICAgICAgICAgICAgaWYgKGNpcmFQcm94eVN1cHBvcnQpIHsNCiAgICAgICAgICAgICAgICB4ICs9ICI8YnI+TWFuYWdlIEhUVFAgcHJveGllcyB1c2VkIGZvciBtYW5hZ2VtZW50IGNvbm5lY3Rpb25zLjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB2YXIgcHJveHlTZXJ2aWNlID0geHhSZW1vdGVBY2Nlc3NbIklQU19IVFRQUHJveHlTZXJ2aWNlIl0ucmVzcG9uc2U7DQogICAgICAgICAgICAgICAgdmFyIHByb3hpZXMgPSB4eFJlbW90ZUFjY2Vzc1siSVBTX0hUVFBQcm94eUFjY2Vzc1BvaW50Il0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgICAgIGlmIChwcm94aWVzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPjxpPk5vIHByb3hpZXMgY29uZmlndXJlZC48L2k+PC9kaXY+PGJyPiI7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBwcm94aWVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvL3ggKz0gIjxkaXYgY2xhc3M9aXRlbUJhciBvbmNsaWNrPXNob3dQcm94eURldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChwcm94aWVzW2ldWydBY2Nlc3NJbmZvJ10pICsgIjoiICsgcHJveGllc1tpXVsnUHJveHlQb3J0J10gKyAiPC9iPiAvICIgKyBFc2NhcGVIdG1sKHByb3hpZXNbaV1bJ05ldHdvcmtEbnNTdWZmaXgnXSkgKyAiPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgY2xhc3M9aXRlbUJhciBvbmNsaWNrPXNob3dQcm94eURldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChwcm94aWVzW2ldWydBY2Nlc3NJbmZvJ10pICsgIjoiICsgcHJveGllc1tpXVsnUG9ydCddICsgIjwvYj4gLyAiICsgRXNjYXBlSHRtbChwcm94aWVzW2ldWydOZXR3b3JrRG5zU3VmZml4J10pICsgIjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciBhZGRzZXJ2ZXJidXR0b24gPSAnJzsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHsNCiAgICAgICAgICAgICAgICBhZGRzZXJ2ZXJidXR0b24gPSBBZGRCdXR0b24oIkFkZCBTZXJ2ZXIuLi4iLCAiQWRkUmVtb3RlQWNjZXNzU2VydmVyKCkiKTsNCiAgICAgICAgICAgICAgICBpZiAoY2lyYVByb3h5U3VwcG9ydCkgeyBhZGRzZXJ2ZXJidXR0b24gKz0gQWRkQnV0dG9uKCJBZGQgUHJveHkuLi4iLCAiQWRkUmVtb3RlQWNjZXNzUHJveHkoKSIpOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9ICI8YnI+PHRkIGNsYXNzPXIxPiIgKyBUYWJsZUVuZChBZGRSZWZyZXNoQnV0dG9uKCJQdWxsUmVtb3RlQWNjZXNzKCkiKSArIGFkZHNlcnZlcmJ1dHRvbik7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVJlbW90ZUFjY2VzcycsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHh4RWRpdE1wc1BvbGljeVR5cGU7DQogICAgICAgIGZ1bmN0aW9uIGVkaXRNcHNQb2xpY3kodHlwZSkgew0KICAgICAgICAgICAgdmFyIHggPSAnJywgY2lsYVN1cHBvcnQgPSAoKGFtdHZlcnNpb24gPiAxMSkgfHwgKChhbXR2ZXJzaW9uID09IDExKSAmJiAoYW10dmVyc2lvbiA+PSA2KSkpOw0KICAgICAgICAgICAgeHhFZGl0TXBzUG9saWN5VHlwZSA9IHR5cGU7DQogICAgICAgICAgICB2YXIgbmFtZSA9IHh4RWRpdE1wc1BvbGljeVR5cGU7DQogICAgICAgICAgICBpZiAobmFtZSA9PSAnVXNlcicpIG5hbWUgPSAnVXNlciBJbml0aWF0ZWQnOw0KICAgICAgICAgICAgdmFyIHBvbGljeSA9IGdldEl0ZW0oeHhSZW1vdGVBY2Nlc3NbIkFNVF9SZW1vdGVBY2Nlc3NQb2xpY3lSdWxlIl0ucmVzcG9uc2VzLCAiUG9saWN5UnVsZU5hbWUiLCBuYW1lKTsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMnNlcnZlcjEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9ZWRpdE1wc1BvbGljeVVwZGF0ZSgpPic7DQogICAgICAgICAgICB4ICs9ICc8b3B0aW9uIHZhbHVlPS0xPihOb25lKScNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDaXJhU2VydmVycykgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPScgKyBpICsgJycgKyAoKHh4UG9saWNpZXNbdHlwZV1bMF0gJiYgeHhQb2xpY2llc1t0eXBlXVswXVsnTmFtZSddID09IHh4Q2lyYVNlcnZlcnNbaV1bJ05hbWUnXSkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIHh4Q2lyYVNlcnZlcnNbaV1bJ0FjY2Vzc0luZm8nXSB9DQogICAgICAgICAgICB4ICs9ICc8L3NlbGVjdD48ZGl2PlByaW1hcnkgc2VydmVyPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIGlmIChjaWxhU3VwcG9ydCkgeyB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJzZXJ2ZXIxY2lyYSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDZweCBvbmNoYW5nZT1lZGl0TXBzUG9saWN5VXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkNJUkEgLSBFeHRlcm5hbDxvcHRpb24gdmFsdWU9MScgKyAoKCh4eFBvbGljaWVzW3R5cGVdWzBdKSAmJiAoeHhQb2xpY2llc1t0eXBlXVswXS5NcHNUeXBlID09IDEpKT8nIHNlbGVjdGVkJzonJykgKyAnPkNJTEEgLSBJbnRlcm5hbDwvc2VsZWN0PjxkaXY+UHJpbWFyeSBNUFMgVHlwZTwvZGl2PjwvZGl2Pic7IH0NCiAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA+IDEpIHsNCiAgICAgICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJzZXJ2ZXIyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwNnB4IG9uY2hhbmdlPWVkaXRNcHNQb2xpY3lVcGRhdGUoKT4nOw0KICAgICAgICAgICAgICAgIHggKz0gJzxvcHRpb24gdmFsdWU9LTE+KE5vbmUpJw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDaXJhU2VydmVycykgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPScgKyBpICsgJycgKyAoKHh4UG9saWNpZXNbdHlwZV1bMV0gJiYgeHhQb2xpY2llc1t0eXBlXVsxXVsnTmFtZSddID09IHh4Q2lyYVNlcnZlcnNbaV1bJ05hbWUnXSkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIHh4Q2lyYVNlcnZlcnNbaV1bJ0FjY2Vzc0luZm8nXSB9DQogICAgICAgICAgICAgICAgeCArPSAnPC9zZWxlY3Q+PGRpdj5TZWNvbmRhcnkgc2VydmVyPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgICAgICBpZiAoY2lsYVN1cHBvcnQpIHsgeCArPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48c2VsZWN0IGlkPWQyc2VydmVyMmNpcmEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9ZWRpdE1wc1BvbGljeVVwZGF0ZSgpPjxvcHRpb24gdmFsdWU9MD5DSVJBIC0gRXh0ZXJuYWw8b3B0aW9uIHZhbHVlPTEnICsgKCgoeHhQb2xpY2llc1t0eXBlXVsxXSkgJiYgKHh4UG9saWNpZXNbdHlwZV1bMV0uTXBzVHlwZSA9PSAxKSkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+Q0lMQSAtIEludGVybmFsPC9zZWxlY3Q+PGRpdj5TZWNvbmRhcnkgTVBTIFR5cGU8L2Rpdj48L2Rpdj4nOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgdCwgdiA9IDA7DQogICAgICAgICAgICBpZiAocG9saWN5KSB7IHYgPSBwb2xpY3lbJ1R1bm5lbExpZmVUaW1lJ107IH0NCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWQybGlmZXRpbWUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25jaGFuZ2U9ZWRpdE1wc1BvbGljeVVwZGF0ZSgpIHZhbHVlPScgKyB2ICsgJz4nOw0KICAgICAgICAgICAgeCArPSAnPGRpdj5UdW5uZWwgbGlmZXRpbWUgKFNlY29uZHMpPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIGlmICh0eXBlID09ICdQZXJpb2RpYycpIHsNCiAgICAgICAgICAgICAgICB0ID0gMDsNCiAgICAgICAgICAgICAgICB2ID0gMzYwMDsNCiAgICAgICAgICAgICAgICBpZiAocG9saWN5KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciB4eCA9IGF0b2IocG9saWN5WydFeHRlbmRlZERhdGEnXSk7DQogICAgICAgICAgICAgICAgICAgIHQgPSBSZWFkSW50KHh4LCAwKTsNCiAgICAgICAgICAgICAgICAgICAgdiA9IFJlYWRJbnQoeHgsIDQpOw0KICAgICAgICAgICAgICAgICAgICBpZiAodCA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbW0gPSBSZWFkSW50KHh4LCA4KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtbSA8IDEwKSBtbSA9ICcwJyArIG1tOw0KICAgICAgICAgICAgICAgICAgICAgICAgdiArPSAnOicgKyBtbTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJ0dHlwZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDZweCBvbmNoYW5nZT1lZGl0TXBzUG9saWN5VXBkYXRlKCk+JzsNCiAgICAgICAgICAgICAgICB4ICs9ICc8b3B0aW9uIHZhbHVlPTAnICsgKHQgPT0gMCA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5QZXJpb2RpYywgdGltZSBpbnRlcnZhbDxvcHRpb24gdmFsdWU9MScgKyAodCA9PSAxID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPlRpbWUgb2YgZGF5LCBvbmNlIGEgZGF5Jw0KICAgICAgICAgICAgICAgIHggKz0gJzwvc2VsZWN0PjxkaXY+VHJpZ2dlciB0eXBlPC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48aW5wdXQgaWQ9ZDJ0aW1lciBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmtleXVwPWVkaXRNcHNQb2xpY3lVcGRhdGUoKSB2YWx1ZT0nICsgdiArICc+PGRpdiBpZD10dHlwZWxhYmVsPjwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCB0eXBlICsgIiBDb25uZWN0aW9uIiwgMywgZWRpdE1wc1BvbGljeU9rLCB4KTsNCiAgICAgICAgICAgIGVkaXRNcHNQb2xpY3lVcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkaXRNcHNQb2xpY3lVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgY2lsYVN1cHBvcnQgPSAoKGFtdHZlcnNpb24gPiAxMSkgfHwgKChhbXR2ZXJzaW9uID09IDExKSAmJiAoYW10dmVyc2lvbiA+PSA2KSkpOw0KICAgICAgICAgICAgdmFyIG9rID0gKHh4Q2lyYVNlcnZlcnMubGVuZ3RoIDw9IDEgfHwgKChRKCdkMnNlcnZlcjEnKS52YWx1ZSA9PSAtMSkgfHwgKFEoJ2Qyc2VydmVyMScpLnZhbHVlICE9IFEoJ2Qyc2VydmVyMicpLnZhbHVlKSkpOw0KICAgICAgICAgICAgaWYgKG9rID09IHRydWUgJiYgeHhFZGl0TXBzUG9saWN5VHlwZSA9PSAnUGVyaW9kaWMnICYmIFEoJ2QydHR5cGUnKS52YWx1ZSA9PSAxKSB7IHZhciBoaG1tID0gUSgnZDJ0aW1lcicpLnZhbHVlLnNwbGl0KCc6Jyk7IGlmIChoaG1tLmxlbmd0aCAhPSAyKSBvayA9IGZhbHNlOyBlbHNlIHsgdmFyIGhoID0gcGFyc2VJbnQoaGhtbVswXSk7IHZhciBtbSA9IHBhcnNlSW50KGhobW1bMV0pOyBpZiAoaGggPCAwIHx8IGhoID4gMjMgfHwgbW0gPCAwIHx8IG1tID4gNTkpIG9rID0gZmFsc2U7IH0gfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA+IDEpIFFFKCdkMnNlcnZlcjInLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSAhPSAtMSk7DQogICAgICAgICAgICBpZiAoeHhFZGl0TXBzUG9saWN5VHlwZSA9PSAnUGVyaW9kaWMnKSB7DQogICAgICAgICAgICAgICAgUUUoJ2QydGltZXInLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSAhPSAtMSk7DQogICAgICAgICAgICAgICAgUUgoJ3R0eXBlbGFiZWwnLCBRKCdkMnR0eXBlJykudmFsdWUgPT0gMCA/ICdUcmlnZ2VyIGludGVydmFsIChTZWNvbmRzKScgOiAnVGltZSBvZiBkYXkgKEhIOk1NKScpOw0KICAgICAgICAgICAgICAgIFFFKCdkMnR0eXBlJywgUSgnZDJzZXJ2ZXIxJykudmFsdWUgIT0gLTEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgUUUoJ2QybGlmZXRpbWUnLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSAhPSAtMSk7DQoNCiAgICAgICAgICAgIC8vIElmIHdlIGFyZSBvbiBJbnRlbCBBTVQgMTEuNiBvciBoaWdoZXIsIGVuYWJsZSB0aGUgQ0lSQS9DSUxBIHNlbGVjdG9yIHdoZW4gbmVlZGVkLg0KICAgICAgICAgICAgaWYgKGNpbGFTdXBwb3J0KSB7DQogICAgICAgICAgICAgICAgUUUoJ2Qyc2VydmVyMWNpcmEnLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSA+IC0xKQ0KICAgICAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA+IDEpIHsgUUUoJ2Qyc2VydmVyMmNpcmEnLCAoUSgnZDJzZXJ2ZXIxJykudmFsdWUgPiAtMSkgJiYgKFEoJ2Qyc2VydmVyMicpLnZhbHVlID4gLTEpKTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdE1wc1BvbGljeU9rKCkgew0KICAgICAgICAgICAgdmFyIG5hbWUgPSB4eEVkaXRNcHNQb2xpY3lUeXBlOw0KICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ1VzZXInKSB7IG5hbWUgPSAnVXNlciBJbml0aWF0ZWQnOyB9DQoNCiAgICAgICAgICAgIGlmIChnZXRJdGVtKHh4UmVtb3RlQWNjZXNzWyJBTVRfUmVtb3RlQWNjZXNzUG9saWN5UnVsZSJdLnJlc3BvbnNlcywgIlBvbGljeVJ1bGVOYW1lIiwgbmFtZSkpIHsNCiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIHBvbGljeQ0KICAgICAgICAgICAgICAgIGFtdHN0YWNrLkRlbGV0ZSgnQU1UX1JlbW90ZUFjY2Vzc1BvbGljeVJ1bGUnLCB7ICdQb2xpY3lSdWxlTmFtZSc6IG5hbWUgfSwgZWRpdE1wc1BvbGljeU9rMik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIE5vIG9sZCBwb2xpY3kgdG8gcmVtb3ZlLCBza2lwIHRoaXMuDQogICAgICAgICAgICAgICAgZWRpdE1wc1BvbGljeU9rMigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdE1wc1BvbGljeU9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIHZhciBjaWxhU3VwcG9ydCA9ICgoYW10dmVyc2lvbiA+IDExKSB8fCAoKGFtdHZlcnNpb24gPT0gMTEpICYmIChhbXR2ZXJzaW9uID49IDYpKSk7DQogICAgICAgICAgICBpZiAoUSgnZDJzZXJ2ZXIxJykudmFsdWUgPT0gLTEpIHsgUHVsbFJlbW90ZUFjY2VzcygpOyByZXR1cm47IH0NCg0KICAgICAgICAgICAgdmFyIHRyaWdnZXIgPSAwOw0KICAgICAgICAgICAgaWYgKHh4RWRpdE1wc1BvbGljeVR5cGUgPT0gJ0FsZXJ0JykgdHJpZ2dlciA9IDE7DQogICAgICAgICAgICBpZiAoeHhFZGl0TXBzUG9saWN5VHlwZSA9PSAnUGVyaW9kaWMnKSB0cmlnZ2VyID0gMjsNCg0KICAgICAgICAgICAgLy8gU2V0dXAgZXh0ZW5kZWQgZGF0YQ0KICAgICAgICAgICAgdmFyIGV4dGVuZGVkRGF0YSA9IG51bGw7DQogICAgICAgICAgICBpZiAodHJpZ2dlciA9PSAyKSB7DQogICAgICAgICAgICAgICAgdmFyIHRpbWVydHlwZSA9IFEoJ2QydHR5cGUnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICB2YXIgZXhkYXRhID0gSW50VG9TdHIoUSgnZDJ0aW1lcicpLnZhbHVlKTsgLy8gSW50ZXJ2YWwgdHJpZ2dlcg0KICAgICAgICAgICAgICAgIGlmICh0aW1lcnR5cGUgPT0gMSkgeyB2YXIgaGhtbSA9IFEoJ2QydGltZXInKS52YWx1ZS5zcGxpdCgnOicpOyBleGRhdGEgPSBJbnRUb1N0cihwYXJzZUludChoaG1tWzBdKSkgKyBJbnRUb1N0cihwYXJzZUludChoaG1tWzFdKSk7IH0gLy8gVGltZSBvZiBkYXkgdHJpZ2dlcg0KICAgICAgICAgICAgICAgIGV4dGVuZGVkRGF0YSA9IGJ0b2EoSW50VG9TdHIodGltZXJ0eXBlKSArIGV4ZGF0YSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgTVBTIHNlcnZlciByZWZlcmVuY2VzDQogICAgICAgICAgICB2YXIgc2VydmVyMSwgc2VydmVyMjsNCiAgICAgICAgICAgIGlmIChRKCdkMnNlcnZlcjEnKS52YWx1ZSA+PSAwKSB7IHNlcnZlcjEgPSAnPEFkZHJlc3MgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9BZGRyZXNzPjxSZWZlcmVuY2VQYXJhbWV0ZXJzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciPjxSZXNvdXJjZVVSSSB4bWxucz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+aHR0cDovL2ludGVsLmNvbS93YmVtL3dzY2ltLzEvYW10LXNjaGVtYS8xL0FNVF9NYW5hZ2VtZW50UHJlc2VuY2VSZW1vdGVTQVA8L1Jlc291cmNlVVJJPjxTZWxlY3RvclNldCB4bWxucz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+PFNlbGVjdG9yIE5hbWU9Ik5hbWUiPicgKyB4eENpcmFTZXJ2ZXJzW1EoJ2Qyc2VydmVyMScpLnZhbHVlXVsnTmFtZSddICsgJzwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+JzsgfQ0KICAgICAgICAgICAgaWYgKFEoJ2Qyc2VydmVyMScpLnZhbHVlID49IDAgJiYgeHhDaXJhU2VydmVycy5sZW5ndGggPiAxICYmIFEoJ2Qyc2VydmVyMicpLnZhbHVlID49IDApIHsgc2VydmVyMiA9ICc8QWRkcmVzcyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nIj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L0FkZHJlc3M+PFJlZmVyZW5jZVBhcmFtZXRlcnMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+PFJlc291cmNlVVJJIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj5odHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9hbXQtc2NoZW1hLzEvQU1UX01hbmFnZW1lbnRQcmVzZW5jZVJlbW90ZVNBUDwvUmVzb3VyY2VVUkk+PFNlbGVjdG9yU2V0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj48U2VsZWN0b3IgTmFtZT0iTmFtZSI+JyArIHh4Q2lyYVNlcnZlcnNbUSgnZDJzZXJ2ZXIyJykudmFsdWVdWydOYW1lJ10gKyAnPC9TZWxlY3Rvcj48L1NlbGVjdG9yU2V0PjwvUmVmZXJlbmNlUGFyYW1ldGVycz4nOyB9DQoNCiAgICAgICAgICAgIC8vIFB1dCB0aGUgQ0lSQS9DSUxBIHNlcnZlcnMgaW4gdGhlIHJpZ2h0IGJpbnMuDQogICAgICAgICAgICB2YXIgY2lyYVNlcnZlcnMgPSBbXTsNCiAgICAgICAgICAgIHZhciBjaWxhU2VydmVycyA9IFtdOw0KICAgICAgICAgICAgaWYgKGNpbGFTdXBwb3J0KSB7DQogICAgICAgICAgICAgICAgLy8gT25seSBJbnRlbCBBTVQgMTEuNiBzdXBwb3J0cyB0aGlzDQogICAgICAgICAgICAgICAgaWYgKHNlcnZlcjEpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKFEoJ2Qyc2VydmVyMWNpcmEnKS52YWx1ZSA9PSAwKSB7IGNpcmFTZXJ2ZXJzLnB1c2goc2VydmVyMSk7IH0gZWxzZSB7IGNpbGFTZXJ2ZXJzLnB1c2goc2VydmVyMSk7IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZlcjIpIHsgaWYgKFEoJ2Qyc2VydmVyMmNpcmEnKS52YWx1ZSA9PSAwKSB7IGNpcmFTZXJ2ZXJzLnB1c2goc2VydmVyMik7IH0gZWxzZSB7IGNpbGFTZXJ2ZXJzLnB1c2goc2VydmVyMik7IH0gfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gSWYgb2xkZXIgdGhhbiBJbnRlbCBBTVQgMTEuNiwgcHV0IGFsbCBzZXJ2ZXJzIGluIHRoZSBDSVJBIGJ1Y2tldC4NCiAgICAgICAgICAgICAgICBpZiAoc2VydmVyMSkgeyBjaXJhU2VydmVycy5wdXNoKHNlcnZlcjEpOyBpZiAoc2VydmVyMikgeyBjaXJhU2VydmVycy5wdXNoKHNlcnZlcjIpOyB9IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gR28gYWhlYWQgYW5kIGNyZWF0ZSB0aGUgbmV3IENJUkEvQ0lMQSBwb2xpY3kuDQogICAgICAgICAgICBhbXRzdGFjay5BTVRfUmVtb3RlQWNjZXNzU2VydmljZV9BZGRSZW1vdGVBY2Nlc3NQb2xpY3lSdWxlKHRyaWdnZXIsIFEoJ2QybGlmZXRpbWUnKS52YWx1ZSwgZXh0ZW5kZWREYXRhLCBjaXJhU2VydmVycywgY2lsYVNlcnZlcnMsIFB1bGxSZW1vdGVBY2Nlc3MpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcDsNCiAgICAgICAgZnVuY3Rpb24gZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uKGEpIHsNCiAgICAgICAgICAgIGlmIChhICE9IDEpIHsgZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wID0gKHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uWydEZXRlY3Rpb25TdHJpbmdzJ10pID8gQ2xvbmUoeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXSkgOiBbXTsgfQ0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gJ0VudGVyIHVwIHRvIDQgaW50cmFuZXQgZG9tYWluIHN1ZmZpeC4gSWYgdGhlIGNvbXB1dGVyIGlzIG91dHNpZGUgdGhlc2UgZG9tYWlucywgSW50ZWwmcmVnOyBBTVQgbG9jYWwgcG9ydHMgd2lsbCBiZSBjbG9zZWQgYW5kIHJlbW90ZSBzZXJ2ZXIgY29ubmVjdGlvbnMgd2lsbCBiZSBhY3RpdmUuPGJyPjxicj4nOw0KICAgICAgICAgICAgaWYgKGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcC5sZW5ndGggPT0gMCkgeyB4ICs9ICI8aT5ObyBpbnRyYW5ldCBkb21haW5zLCBFbnZpcm9uZW1udCBkZXRlY3Rpb24gZGlzYWJsZWQuPC9pPjxicj4iOyB9DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcCkgeyB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgc3R5bGU9bWFyZ2luLXJpZ2h0OjA+PGRpdiBzdHlsZT1mbG9hdDpyaWdodD4iICsgQWRkQnV0dG9uMigiUmVtb3ZlIiwgImVkaXRFbnZpcm9ubWVudERldGVjdGlvblJlbW92ZSgiICsgaSArICIpIikgKyAiPC9kaXY+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDozcHg7bWF4LXdpZHRoOjI2MHB4O292ZXJmbG93OmhpZGRlbiB0aXRsZT0nIiArIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcFtpXSArICInPjxiPiIgKyBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb25UbXBbaV0gKyAiPC9iPjwvZGl2PjwvZGl2PiI7IH0NCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUgJiYgZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wLmxlbmd0aCA8IDQpIHsgeCArPSAiPGJyPjxpbnB1dCBpZD1lZElucHV0IHBsYWNlaG9sZGVyPWludHJhbmV0Lm9yZyBzdHlsZT13aWR0aDoyNzZweCBvbmtleXVwPWVkSW5wdXRDaGcoKSBtYXhsZW5ndGg9NjM+PGlucHV0IHR5cGU9YnV0dG9uIGlkPWVkQWRkIHZhbHVlPUFkZCBzdHlsZT13aWR0aDo4MHB4O21hcmdpbi1sZWZ0OjVweCBvbmNsaWNrPWVkaXRFbnZpcm9ubWVudERldGVjdGlvbkFkZCgpPiI7IH0NCiAgICAgICAgICAgIGlmIChhID09IDEpIFFIKCdpZF9kaWFsb2dPcHRpb25zJywgeCk7IGVsc2Ugc2V0RGlhbG9nTW9kZSgxMSwgJ0Vudmlyb25tZW50IERldGVjdGlvbicsIHh4QWNjb3VudEFkbWluTmFtZT8zOjEsIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbkRsZywgeCk7DQogICAgICAgICAgICBlZElucHV0Q2hnKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb25EbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhBY2NvdW50QWRtaW5OYW1lKSB7DQogICAgICAgICAgICAgICAgdmFyIHQgPSBDbG9uZSh4eEVudmlyb25lbWVudERldGVjdGlvbik7DQogICAgICAgICAgICAgICAgdFsnRGV0ZWN0aW9uU3RyaW5ncyddID0gZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wOw0KICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ0FNVF9FbnZpcm9ubWVudERldGVjdGlvblNldHRpbmdEYXRhJywgdCk7DQogICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YScsIHQsIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbkRsZzIsIDAsIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uRGxnMihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgbWVzc2FnZWJveCgnRW52aXJvbm1lbnQgRGV0ZWN0aW9uJywgJ0ZhaWxlZCB0byBhZGQgc2VydmVyLCBzdGF0dXMgJyArIHN0YXR1cyk7IH0NCiAgICAgICAgICAgIGVsc2UgaWYgKChyZXNwb25zZS5Cb2R5WyJSZXR1cm5WYWx1ZSJdKSAmJiAocmVzcG9uc2UuQm9keVsiUmV0dXJuVmFsdWUiXSAhPSAwKSkgeyBtZXNzYWdlYm94KCdFbnZpcm9ubWVudCBEZXRlY3Rpb24nLCByZXNwb25zZS5Cb2R5LlJldHVyblZhbHVlU3RyLnJlcGxhY2UoL18vZywgJyAnKSk7IH0NCiAgICAgICAgICAgIGVsc2UgeyBQdWxsUmVtb3RlQWNjZXNzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkSW5wdXRDaGcoKSB7DQogICAgICAgICAgICBpZiAoZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wLmxlbmd0aCA8IDQpIFFFKCdlZEFkZCcsIFEoJ2VkSW5wdXQnKS52YWx1ZS5sZW5ndGggPiAwKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbkFkZCgpIHsNCiAgICAgICAgICAgIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcC5wdXNoKFEoJ2VkSW5wdXQnKS52YWx1ZSk7DQogICAgICAgICAgICBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb24oMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb25SZW1vdmUoaCkgew0KICAgICAgICAgICAgZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wLnNwbGljZShoLCAxKTsNCiAgICAgICAgICAgIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbigxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkaXRVc2VySW5pdGlhdGVkQ2lyYSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBzID0gIiI7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4VXNlckluaXRpYXRlZEVuYWJsZWRTdGF0ZSkgeyBzICs9ICc8aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWQxMSBpZD13bCcgKyBpICsgJyB2YWx1ZT0nICsgaSArICcgJyArICgoeHhVc2VySW5pdGlhdGVkQ2lyYVsnRW5hYmxlZFN0YXRlJ10gPT0gaSkgPyAiY2hlY2tlZCIgOiAiIikgKyAnPicgKyB4eFVzZXJJbml0aWF0ZWRFbmFibGVkU3RhdGVbaV0gKyAnPGJyPic7IH0NCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdVc2VyIEluaXRpYXRlZCBUdW5uZWwnLCAzLCBlZGl0VXNlckluaXRpYXRlZENpcmFEbGcsIHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdFVzZXJJbml0aWF0ZWRDaXJhRGxnKCkgeyBhbXRzdGFjay5BTVRfVXNlckluaXRpYXRlZENvbm5lY3Rpb25TZXJ2aWNlX1JlcXVlc3RTdGF0ZUNoYW5nZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPWQxMV06Y2hlY2tlZCcpLnZhbHVlLCBudWxsLCBlZGl0VXNlckluaXRpYXRlZENpcmFEbGcyKTsgfQ0KICAgICAgICBmdW5jdGlvbiBlZGl0VXNlckluaXRpYXRlZENpcmFEbGcyKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IGlmIChzdGF0dXMgPT0gMjAwKSB7IGFtdHN0YWNrLkdldCgnQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZScsIGVkaXRVc2VySW5pdGlhdGVkQ2lyYURsZzMsIDAsIDEpOyB9IH0NCiAgICAgICAgZnVuY3Rpb24gZWRpdFVzZXJJbml0aWF0ZWRDaXJhRGxnMyhzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgeyBpZiAoc3RhdHVzID09IDIwMCkgeyB4eFVzZXJJbml0aWF0ZWRDaXJhID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlUmVtb3RlQWNjZXNzKCk7IH0gfQ0KDQogICAgICAgIHZhciB4eFNob3dTZXJ2ZXJEZXRhaWxzSGFuZGxlOw0KICAgICAgICBmdW5jdGlvbiBzaG93U2VydmVyRGV0YWlscyhoKSB7DQogICAgICAgICAgICB4eFNob3dTZXJ2ZXJEZXRhaWxzSGFuZGxlID0gaDsNCiAgICAgICAgICAgIHZhciBzZXJ2ZXIgPSB4eENpcmFTZXJ2ZXJzW2hdOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJBY2Nlc3MgTmFtZSIsIHNlcnZlclsiQWNjZXNzSW5mbyJdKTsNCiAgICAgICAgICAgIGlmIChzZXJ2ZXJbIlBvcnQiXSkgeCArPSBhZGRIdG1sVmFsdWUoIlBvcnQiLCBzZXJ2ZXJbIlBvcnQiXSk7DQogICAgICAgICAgICBpZiAoc2VydmVyWyJDTiJdKSB4ICs9IGFkZEh0bWxWYWx1ZSgiQ29tbW9uIE5hbWUiLCBzZXJ2ZXJbIkNOIl0pOw0KDQogICAgICAgICAgICB2YXIgY3JlZGVudGlhbGxpbmsgPSBnZXRFbGVtZW50V2l0aENvbnRleHRTZWxlY3RvclZhbHVlKHh4UmVtb3RlQWNjZXNzQ3JlZGVudGlhTGlua3MsIHNlcnZlclsnTmFtZSddKTsNCiAgICAgICAgICAgIGlmIChjcmVkZW50aWFsbGluaykgew0KICAgICAgICAgICAgICAgIHZhciBjcmVkZW50aWFsc2VsZWN0b3J2YWx1ZSA9IGNyZWRlbnRpYWxsaW5rWydFbGVtZW50SW5Db250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXTsNCiAgICAgICAgICAgICAgICBpZiAoY3JlZGVudGlhbHNlbGVjdG9ydmFsdWUuaW5kZXhPZignVXNlcm5hbWUnKSA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0F1dGhlbnRpY2F0aW9uIFR5cGUnLCAnVXNlciAmIFBhc3MgLyBTZXJ2ZXItQXV0aCBUTFMnKTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ1JlbW90ZSBJRCcsIGdldEluc3RhbmNlKHh4TVBTVXNlclBhc3MsIGNyZWRlbnRpYWxzZWxlY3RvcnZhbHVlKVsnUmVtb3RlSUQnXSk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0F1dGhlbnRpY2F0aW9uIFR5cGUnLCAnQ2VydGlmaWNhdGUgLyBNdXR1YWwtQXV0aCBUTFMnKTsNCg0KICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGdldEluc3RhbmNlKHh4Q2VydGlmaWNhdGVzLCBjcmVkZW50aWFsc2VsZWN0b3J2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdDZXJ0aWZpY2F0ZSBOYW1lJywgcGFyc2VDZXJ0TmFtZShjWydTdWJqZWN0J10pWydDTiddKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciBidXR0b25zID0gMTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIGJ1dHRvbnMgPSA1Ow0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIlJlbW90ZSBTZXJ2ZXIgIyIgKyAoaCArIDEpLCBidXR0b25zLCBzaG93U2VydmVyRGV0YWlsc09rLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGdldEVsZW1lbnRXaXRoQ29udGV4dFNlbGVjdG9yVmFsdWUoZWxlbWVudHMsIHZhbHVlKSB7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGVsZW1lbnRzKSB7DQogICAgICAgICAgICAgICAgZWxlbWVudHNbaV1bJ0VsZW1lbnRQcm92aWRpbmdDb250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSA9IE1ha2VUb0FycmF5KGVsZW1lbnRzW2ldWydFbGVtZW50UHJvdmlkaW5nQ29udGV4dCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10pOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gZWxlbWVudHNbaV1bJ0VsZW1lbnRQcm92aWRpbmdDb250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSkgeyBpZiAoZWxlbWVudHNbaV1bJ0VsZW1lbnRQcm92aWRpbmdDb250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVtqXVsnVmFsdWUnXSA9PSB2YWx1ZSkgcmV0dXJuIGVsZW1lbnRzW2ldOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXJ2ZXJEZXRhaWxzT2socikgew0KICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBzZWxlY3RlZCBDSVJBIHNlcnZlciANCiAgICAgICAgICAgIGlmIChyID09IDIpIHsgYW10c3RhY2suRGVsZXRlKCdBTVRfTWFuYWdlbWVudFByZXNlbmNlUmVtb3RlU0FQJywgeyAnTmFtZSc6IHh4Q2lyYVNlcnZlcnNbeHhTaG93U2VydmVyRGV0YWlsc0hhbmRsZV1bJ05hbWUnXSB9LCBzaG93U2VydmVyRGV0YWlsc09rMik7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXJ2ZXJEZXRhaWxzT2syKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSA0MDgpIHsgbWVzc2FnZWJveCgnUmVtb3RlIFNlcnZlciBSZW1vdmFsJywgJ1VuYWJsZSB0byByZW1vdmUgc2VydmVyLCBhY2Nlc3MgZGVuaWVkLicpOyB9IGVsc2UgeyBQdWxsUmVtb3RlQWNjZXNzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHBhcnNlQ2VydE5hbWUoeCkgew0KICAgICAgICAgICAgdmFyIGosIHIgPSB7fSwgeHggPSB4LnNwbGl0KCcsJyk7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4KSB7IGogPSB4eFtpXS5pbmRleE9mKCc9Jyk7IHJbeHhbaV0uc3Vic3RyaW5nKDAsIGopXSA9IHh4W2ldLnN1YnN0cmluZyhqICsgMSk7IH0NCiAgICAgICAgICAgIHJldHVybiByOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBmdW5jdGlvbiBzaG93UHJveHlEZXRhaWxzKGgpIHsNCiAgICAgICAgICAgIHZhciBwcm94eSA9IHh4UmVtb3RlQWNjZXNzWyJJUFNfSFRUUFByb3h5QWNjZXNzUG9pbnQiXS5yZXNwb25zZXNbaF07DQoNCiAgICAgICAgICAgIHZhciB4ID0gYWRkSHRtbFZhbHVlKCJBY2Nlc3MgbmFtZSIsIHByb3h5WyJBY2Nlc3NJbmZvIl0gKyAnOicgKyBwcm94eVsiUHJveHlQb3J0Il0pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkROUyBzdWZmZXgiLCBwcm94eVsiTmV0d29ya0Ruc1N1ZmZpeCJdKTsNCiAgICAgICAgICAgIC8veCArPSBhZGRIdG1sVmFsdWUoIlByb3h5IHR5cGUiLCBbJ0FkbWluaXN0cmF0b3InLCAnT3BlcmF0aW5nIHN5c3RlbSddW3Byb3h5WyJQcm94eVR5cGUiXV0pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlByb3h5IHR5cGUiLCBbJ0FkbWluaXN0cmF0b3InLCAnT3BlcmF0aW5nIHN5c3RlbSddW3Byb3h5WyJUeXBlIl1dKTsNCiAgICAgICAgICAgIC8veCArPSBhZGRIdG1sVmFsdWUoIkxhc3QgdGltZSB1c2VkIiwgcHJveHlbIkxhc3RUaW1lVXNlZCJdKTsNCg0KICAgICAgICAgICAgdmFyIGJ1dHRvbnMgPSAxOw0KICAgICAgICAgICAgaWYgKHh4QWNjb3VudEFkbWluTmFtZSkgeyBidXR0b25zID0gNTsgfQ0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIkhUVFAgUHJveHkgIyIgKyAoaCArIDEpLCBidXR0b25zLCBzaG93UHJveHlEZXRhaWxzT2ssIHgsIGgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1Byb3h5RGV0YWlsc09rKHIsIGgpIHsNCiAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgc2VsZWN0ZWQgcHJveHkgc2VydmVyDQogICAgICAgICAgICB2YXIgcHJveHkgPSB4eFJlbW90ZUFjY2Vzc1siSVBTX0hUVFBQcm94eUFjY2Vzc1BvaW50Il0ucmVzcG9uc2VzW2hdOw0KICAgICAgICAgICAgaWYgKHIgPT0gMikgeyBhbXRzdGFjay5EZWxldGUoJ0lQU19IVFRQUHJveHlBY2Nlc3NQb2ludCcsIHsgJ05hbWUnOiBwcm94eVsnTmFtZSddIH0sIHNob3dQcm94eURldGFpbHNPazIpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UHJveHlEZXRhaWxzT2syKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSA0MDgpIHsgbWVzc2FnZWJveCgnSFRUUCBQcm94eSBSZW1vdmFsJywgJ1VuYWJsZSB0byByZW1vdmUgSFRUUCBwcm94eSwgYWNjZXNzIGRlbmllZC4nKTsgfSBlbHNlIHsgUHVsbFJlbW90ZUFjY2VzcygpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NQcm94eSgpIHsNCiAgICAgICAgICAgIC8vIEFkZFJlbW90ZUFjY2Vzc1Byb3h5IEhvc3QgbmFtZSA9IDIsIElwdjQgPSAzLCBJcHY2ID0gNA0KICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48c2VsZWN0IGlkPWQydHlwZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDZweCBvbmNoYW5nZT1BZGRSZW1vdGVBY2Nlc3NQcm94eVVwZGF0ZSgpPjxvcHRpb24gdmFsdWU9Mj5Ib3N0bmFtZSBGUUROPG9wdGlvbiB2YWx1ZT0zPklQdjQgYWRkcmVzczxvcHRpb24gdmFsdWU9ND5JUHY2IGFkZHJlc3M8L3NlbGVjdD48ZGl2PkNvbm5lY3Rpb24gdHlwZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMmhvc3Qgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggbWF4bGVuZ3RoPTI1NSBvbmtleXVwPUFkZFJlbW90ZUFjY2Vzc1Byb3h5VXBkYXRlKCk+PGRpdiBpZD1kMnR5cGVzcGFuPjwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMnBvcnQgb25rZXlwcmVzcz0icmV0dXJuIChldmVudC5jaGFyQ29kZSA9PSAwIHx8IChldmVudC5jaGFyQ29kZSA+PSA0OCAmJiBldmVudC5jaGFyQ29kZSA8PSA1NykpIiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmtleXVwPUFkZFJlbW90ZUFjY2Vzc1Byb3h5VXBkYXRlKCk+PGRpdj5Qb3J0PC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWQyZG9tYWluIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IG1heGxlbmd0aD0xOTEgb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NQcm94eVVwZGF0ZSgpPjxkaXY+RE5TIHN1ZmZpeDwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQWRkIEhUVFAgUHJveHkiLCAzLCBBZGRSZW1vdGVBY2Nlc3NQcm94eU9rLCB4KTsNCiAgICAgICAgICAgIEFkZFJlbW90ZUFjY2Vzc1Byb3h5VXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NQcm94eVVwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBvayA9IChRKCdkMmhvc3QnKS52YWx1ZS5sZW5ndGggIT0gMCkgJiYgKFEoJ2QyZG9tYWluJykudmFsdWUubGVuZ3RoICE9IDApOw0KICAgICAgICAgICAgaWYgKChRKCdkMnBvcnQnKS52YWx1ZS5sZW5ndGggPT0gMCkgfHwgKHBhcnNlSW50KFEoJ2QycG9ydCcpLnZhbHVlKSA+IDY1NTM1KSkgeyBvayA9IGZhbHNlOyB9DQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgb2spOw0KICAgICAgICAgICAgUUgoJ2QydHlwZXNwYW4nLCBbJycsICcnLCAnRlFETiAvIGhvc3RuYW1lJywgJ0lQdjQgYWRkcmVzcycsICdJUHY2IGFkZHJlc3MnXVtRKCdkMnR5cGUnKS52YWx1ZV0pOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkUmVtb3RlQWNjZXNzUHJveHlPaygpIHsNCiAgICAgICAgICAgIGFtdHN0YWNrLklQU19IVFRQUHJveHlTZXJ2aWNlX0FkZFByb3h5QWNjZXNzUG9pbnQoUSgnZDJob3N0JykudmFsdWUsIFEoJ2QydHlwZScpLnZhbHVlLCBwYXJzZUludChRKCdkMnBvcnQnKS52YWx1ZSksIFEoJ2QyZG9tYWluJykudmFsdWUsIEFkZFJlbW90ZUFjY2Vzc1Byb3h5T2syKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZFJlbW90ZUFjY2Vzc1Byb3h5T2syKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goJ0FkZCBQcm94eSBTZXJ2ZXInLCAnRmFpbGVkIHRvIGFkZCBwcm94eSwgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9IDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdBZGQgUHJveHkgU2VydmVyJywgcmVzcG9uc2UuQm9keS5SZXR1cm5WYWx1ZVN0ci5yZXBsYWNlKC9fL2csICcgJykpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsUmVtb3RlQWNjZXNzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXIoKSB7DQoNCiAgICAgICAgICAgIHZhciBjZXJ0cyA9IFtdOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRpZmljYXRlcykgeyBpZiAoeHhDZXJ0aWZpY2F0ZXNbaV0uWFByaXZhdGVLZXkpIHsgY2VydHMucHVzaCh4eENlcnRpZmljYXRlc1tpXSk7IH0gfQ0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMnR5cGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9QWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0yMDE+SG9zdG5hbWUgRlFETjxvcHRpb24gdmFsdWU9Mz5JUHY0IGFkZHJlc3M8L3NlbGVjdD48ZGl2PkNvbm5lY3Rpb24gdHlwZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMm5hbWUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2IGlkPWQybG5hbWU+PC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWQycG9ydCBvbmtleXByZXNzPSJyZXR1cm4gKGV2ZW50LmNoYXJDb2RlID09IDAgfHwgKGV2ZW50LmNoYXJDb2RlID49IDQ4ICYmIGV2ZW50LmNoYXJDb2RlIDw9IDU3KSkiIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IHZhbHVlPTQ0MzMgb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2PlNlcnZlciBwb3J0PC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHggaWQ9ZDJ1Y24+PGlucHV0IGlkPWQyY24gc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2PlNlcnZlciBDb21tb24gTmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJhdXRoIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwNnB4IG9uY2hhbmdlPUFkZFJlbW90ZUFjY2Vzc1NlcnZlclVwZGF0ZSgpPic7DQogICAgICAgICAgICBpZiAoY2VydHMubGVuZ3RoID4gMCkgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPTE+Q2VydGlmaWNhdGUnOyB9DQogICAgICAgICAgICB4ICs9ICc8b3B0aW9uIHZhbHVlPTI+VXNlcm5hbWUvUGFzc3dvcmQ8L3NlbGVjdD48ZGl2PkF1dGhlbnRpY2F0aW9uIHR5cGU8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgeCArPSAnPHNwYW4gaWQ9ZDJ1dHlwZT4nOw0KICAgICAgICAgICAgeCArPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48aW5wdXQgaWQ9ZDJ1c2VyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IG9ua2V5dXA9QWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk+PGRpdj5Vc2VybmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMnBhc3Mgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2PlN0cm9uZyBQYXNzd29yZDwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8L3NwYW4+JzsNCiAgICAgICAgICAgIHggKz0gJzxzcGFuIGlkPWQyY3R5cGU+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMmNlcnQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9QWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gY2VydHMpIHsgeCArPSAnPG9wdGlvbiB2YWx1ZT0nICsgY2VydHNbaV1bJ0luc3RhbmNlSUQnXS5zdWJzdHJpbmcoMzQpICsgJz4nICsgcGFyc2VDZXJ0TmFtZShjZXJ0c1tpXVsnU3ViamVjdCddKVsnQ04nXTsgfQ0KICAgICAgICAgICAgeCArPSAnPC9zZWxlY3Q+PGRpdj5DZXJ0aWZpY2F0ZTwvZGl2PjwvZGl2Pjwvc3Bhbj4nOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIkFkZCBSZW1vdGUgU2VydmVyIiwgMywgQWRkUmVtb3RlQWNjZXNzU2VydmVyT2ssIHgpOw0KICAgICAgICAgICAgQWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJPaygpIHsNCiAgICAgICAgICAgIHZhciBjcmVmLCB1c2VyLCBwYXNzLCBjbjsNCiAgICAgICAgICAgIGlmIChRKCdkMmF1dGgnKS52YWx1ZSA9PSAxKSB7DQogICAgICAgICAgICAgICAgY3JlZiA9ICc8QWRkcmVzcyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nIj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmc8L0FkZHJlc3M+PFJlZmVyZW5jZVBhcmFtZXRlcnMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+PFJlc291cmNlVVJJIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj5odHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9hbXQtc2NoZW1hLzEvQU1UX1B1YmxpY0tleUNlcnRpZmljYXRlPC9SZXNvdXJjZVVSST48U2VsZWN0b3JTZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPjxTZWxlY3RvciBOYW1lPSJJbnN0YW5jZUlEIj5JbnRlbChyKSBBTVQgQ2VydGlmaWNhdGU6IEhhbmRsZTogJyArIFEoJ2QyY2VydCcpLnZhbHVlICsgJzwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+JzsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdXNlciA9IFEoJ2QydXNlcicpLnZhbHVlOw0KICAgICAgICAgICAgICAgIHBhc3MgPSBRKCdkMnBhc3MnKS52YWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChRKCdkMmNuJykudmFsdWUubGVuZ3RoID4gMCkgY24gPSBRKCdkMmNuJykudmFsdWU7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfUmVtb3RlQWNjZXNzU2VydmljZV9BZGRNcFNlcnZlcihRKCdkMm5hbWUnKS52YWx1ZSwgUSgnZDJ0eXBlJykudmFsdWUsIFEoJ2QycG9ydCcpLnZhbHVlLCBRKCdkMmF1dGgnKS52YWx1ZSwgY3JlZiwgdXNlciwgcGFzcywgY24sIEFkZFJlbW90ZUFjY2Vzc1NlcnZlck9rMik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJPazIoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnQWRkIEludGVybmV0IFNlcnZlcicsICdGYWlsZWQgdG8gYWRkIHNlcnZlciwgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9IDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdBZGQgSW50ZXJuZXQgU2VydmVyJywgcmVzcG9uc2UuQm9keS5SZXR1cm5WYWx1ZVN0ci5yZXBsYWNlKC9fL2csICcgJykpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsUmVtb3RlQWNjZXNzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgb2sgPSAoUSgnZDJuYW1lJykudmFsdWUubGVuZ3RoICE9IDApOw0KICAgICAgICAgICAgaWYgKFEoJ2QydHlwZScpLnZhbHVlID09IDMgJiYgb2sgPT0gdHJ1ZSkgIHsgb2sgPSAoUSgnZDJjbicpLnZhbHVlLmxlbmd0aCAhPSAwKTsgfQ0KICAgICAgICAgICAgaWYgKFEoJ2QyYXV0aCcpLnZhbHVlID09IDIgJiYgb2sgPT0gdHJ1ZSkgeyBvayA9ICgoUSgnZDJ1c2VyJykudmFsdWUubGVuZ3RoICE9IDApICYmIChwYXNzd29yZGNoZWNrKFEoJ2QycGFzcycpLnZhbHVlKSkpOyB9DQogICAgICAgICAgICBpZiAoKFEoJ2QycG9ydCcpLnZhbHVlLmxlbmd0aCA9PSAwKSB8fCAocGFyc2VJbnQoUSgnZDJwb3J0JykudmFsdWUpID4gNjU1MzUpKSB7IG9rID0gZmFsc2U7IH0NCiAgICAgICAgICAgIGlmICgoUSgnZDJuYW1lJykudmFsdWUuaW5kZXhPZignOicpICE9IC0xKSB8fCAoKFEoJ2QydHlwZScpLnZhbHVlID09IDMpICYmIChRKCdkMmNuJykudmFsdWUuaW5kZXhPZignOicpICE9IC0xKSkpIHsgb2sgPSBmYWxzZTsgfQ0KICAgICAgICAgICAgUUgoJ2QybG5hbWUnLCAoUSgnZDJ0eXBlJykudmFsdWUgPT0gMjAxKSA/ICdIb3N0bmFtZScgOiAnSVB2NCBBZGRyZXNzJyk7DQogICAgICAgICAgICBRVignZDJ1dHlwZScsIFEoJ2QyYXV0aCcpLnZhbHVlID09IDIpOw0KICAgICAgICAgICAgUVYoJ2QydWNuJywgUSgnZDJ0eXBlJykudmFsdWUgPT0gMyk7DQogICAgICAgICAgICBRVignZDJjdHlwZScsIFEoJ2QyYXV0aCcpLnZhbHVlID09IDEpOw0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gRWRpdCBDb21wdXRlciBOYW1lICYgRE5TIGZlYXR1cmUNCiAgICAgICAgLy8NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RWRpdE5hbWVEbGcoeCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHQgPSBhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlWyJIb3N0TmFtZSJdLCB5ID0gYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsiRG9tYWluTmFtZSJdOw0KICAgICAgICAgICAgaWYgKHkgIT0gbnVsbCAmJiB5Lmxlbmd0aCA+IDApIHQgKz0gIi4iICsgeTsNCiAgICAgICAgICAgIHZhciByID0gJzxicj48ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMTFuYW1lIHZhbHVlPSInICsgdCArICciIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4PjxkaXY+TmFtZSAmIERvbWFpbjwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICBpZiAoeCA9PSAxKSB7DQogICAgICAgICAgICAgICAgdmFyIHMgPSAoYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsiU2hhcmVkRlFETiJdID09IHRydWUpOw0KICAgICAgICAgICAgICAgIHIgKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMTFmcWRuIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4PjxvcHRpb24gdmFsdWU9dHJ1ZSAnICsgKHM/J3NlbGVjdGVkJzonJykgKyAnPlNoYXJlZCwgc2FtZSBhcyBPUzxvcHRpb24gdmFsdWU9ImZhbHNlIiAnICsgKHM/Jyc6J3NlbGVjdGVkJykgKyAnPkRlZGljYXRlZCwgZGlmZmVyZW50IGZyb20gT1M8L3NlbGVjdD48ZGl2Pk5hbWUgU2hhcmluZzwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnQ29tcHV0ZXIgTmFtZScsIDMsIGVkaXROYW1lRGxnT2ssIHIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdE5hbWVEbGdPaygpIHsNCiAgICAgICAgICAgIHZhciBpID0gUSgnZDExbmFtZScpLnZhbHVlLCBqID0gaS5pbmRleE9mKCcuJyksIGsgPSAnJzsNCiAgICAgICAgICAgIGlmIChqID49IDApIHsgayA9IGkuc3Vic3RyaW5nKGogKyAxKTsgaSA9IGkuc3Vic3RyaW5nKDAsIGopOyB9DQogICAgICAgICAgICB2YXIgY2xvbmUgPSBDbG9uZShhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlKTsNCiAgICAgICAgICAgIGNsb25lWyJIb3N0TmFtZSJdID0gaTsNCiAgICAgICAgICAgIGNsb25lWyJEb21haW5OYW1lIl0gPSBrOw0KICAgICAgICAgICAgaWYgKFEoJ2QxMWZxZG4nKSkgeyBjbG9uZVsiU2hhcmVkRlFETiJdID0gZDExZnFkbi52YWx1ZTsgfQ0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfR2VuZXJhbFNldHRpbmdzJywgY2xvbmUsIGZ1bmN0aW9uKCkgeyBhbXRzdGFjay5HZXQoJ0FNVF9HZW5lcmFsU2V0dGluZ3MnLCBjb21wdXRlck5hbWVHZXQsIDAsIDEpOyB9LCAwLCAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVyTmFtZUdldChzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZSA9IHJlc3BvbnNlLkJvZHk7IHVwZGF0ZVN5c3RlbVN0YXR1cygpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RWRpdERuc0RsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBnID0gYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZTsNCiAgICAgICAgICAgIHZhciB2ID0gMDsNCiAgICAgICAgICAgIGlmIChnWyJERE5TVXBkYXRlQnlESENQU2VydmVyRW5hYmxlZCJdID09IHRydWUpIHYgPSAxOw0KICAgICAgICAgICAgaWYgKGdbIkRETlNVcGRhdGVFbmFibGVkIl0gPT0gdHJ1ZSkgdiA9IDI7DQogICAgICAgICAgICBpZHhfZDIzZGRucy52YWx1ZSA9IHY7DQogICAgICAgICAgICBpZHhfZDIzaW50ZXJ2YWwudmFsdWUgPSBnWydERE5TUGVyaW9kaWNVcGRhdGVJbnRlcnZhbCddOw0KICAgICAgICAgICAgaWR4X2QyM3R0bC52YWx1ZSA9IGdbJ0RETlNUVEwnXTsNCiAgICAgICAgICAgIHNob3dFZGl0RG5zRGxnQ2hhbmdlKCk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDIzLCAnRHluYW1pYyBETlMgY2xpZW50JywgMywgc2hvd0VkaXREbnNEbGdPayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RWRpdERuc0RsZ09rKCkgew0KICAgICAgICAgICAgdmFyIGNsb25lID0gQ2xvbmUoYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZSk7DQogICAgICAgICAgICBjbG9uZVsiREROU1VwZGF0ZUVuYWJsZWQiXSA9ICgoaWR4X2QyM2RkbnMudmFsdWUgPT0gMik/dHJ1ZTpmYWxzZSk7DQogICAgICAgICAgICBjbG9uZVsiREROU1VwZGF0ZUJ5REhDUFNlcnZlckVuYWJsZWQiXSA9ICgoaWR4X2QyM2RkbnMudmFsdWUgPT0gMSk/dHJ1ZTpmYWxzZSk7DQogICAgICAgICAgICBpZiAoaWR4X2QyM2RkbnMudmFsdWUgPT0gMikgew0KICAgICAgICAgICAgICAgIGNsb25lWyJERE5TUGVyaW9kaWNVcGRhdGVJbnRlcnZhbCJdID0gaWR4X2QyM2ludGVydmFsLnZhbHVlOw0KICAgICAgICAgICAgICAgIGNsb25lWyJERE5TVFRMIl0gPSBpZHhfZDIzdHRsLnZhbHVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfR2VuZXJhbFNldHRpbmdzJywgY2xvbmUsIGZ1bmN0aW9uKCkgeyBhbXRzdGFjay5HZXQoJ0FNVF9HZW5lcmFsU2V0dGluZ3MnLCBjb21wdXRlck5hbWVHZXQsIDAsIDEpOyB9LCAwLCAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dFZGl0RG5zRGxnQ2hhbmdlKCkgew0KICAgICAgICAgICAgUUUoJ2lkeF9kMjNpbnRlcnZhbCcsIGlkeF9kMjNkZG5zLnZhbHVlID09IDIpOw0KICAgICAgICAgICAgUUUoJ2lkeF9kMjN0dGwnLCBpZHhfZDIzZGRucy52YWx1ZSA9PSAyKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEludGVsIEFNVCBGZWF0dXJlcw0KICAgICAgICAvLw0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dGZWF0dXJlc0RsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgIXh4QWNjb3VudEFkbWluTmFtZSkgcmV0dXJuOw0KICAgICAgICAgICAgaWR4X2Q5cmVkaXIuY2hlY2tlZCA9IGFtdGZlYXR1cmVzWzBdLCBpZHhfZDlrdm0uY2hlY2tlZCA9IGFtdGZlYXR1cmVzWzNdLCBpZHhfZDlpZGVyLmNoZWNrZWQgPSBhbXRmZWF0dXJlc1syXSwgaWR4X2Q5c29sLmNoZWNrZWQgPSBhbXRmZWF0dXJlc1sxXTsNCiAgICAgICAgICAgIFFWKCdpZHhfZDlrdm1fZGl2JywgYW10ZmVhdHVyZXNbM10gIT0gdW5kZWZpbmVkKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoOSwgJ0ludGVsJnJlZzsgQU1UIEZlYXR1cmVzJywgMywgZmVhdHVyZXNEbGdPaykNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGZlYXR1cmVzRGxnT2soKSB7DQogICAgICAgICAgICB2YXIgciA9IGFtdHN5c3N0YXRlWydBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlJ10ucmVzcG9uc2U7DQogICAgICAgICAgICByWyJMaXN0ZW5lckVuYWJsZWQiXSA9IGlkeF9kOXJlZGlyLmNoZWNrZWQ7DQogICAgICAgICAgICByWyJFbmFibGVkU3RhdGUiXSA9IDMyNzY4ICsgKChpZHhfZDlpZGVyLmNoZWNrZWQ/MTowKSArIChpZHhfZDlzb2wuY2hlY2tlZD8yOjApKTsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9SZWRpcmVjdGlvblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlKHJbIkVuYWJsZWRTdGF0ZSJdLA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goIkVycm9yIiwgIlJlZGlyZWN0aW9uU2VydmljZSwgUmVxdWVzdFN0YXRlQ2hhbmdlIEVycm9yICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suQ0lNX0tWTVJlZGlyZWN0aW9uU0FQX1JlcXVlc3RTdGF0ZUNoYW5nZSgoaWR4X2Q5a3ZtLmNoZWNrZWQpPzI6MywgMCwNCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goIkVycm9yIiwgIktWTVJlZGlyZWN0aW9uU0FQLCBSZXF1ZXN0U3RhdGVDaGFuZ2UgRXJyb3IgIiArIHN0YXR1cyk7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlIiwgciwgZnVuY3Rpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCJFcnJvciIsICJSZWRpcmVjdGlvblNlcnZpY2UgUFVUIEVycm9yICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXRzdGFjay5HZXQoIkFNVF9SZWRpcmVjdGlvblNlcnZpY2UiLCBmZWF0dXJlc0RsZ0dldDEsIDAsIDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLkdldCgiQ0lNX0tWTVJlZGlyZWN0aW9uU0FQIiwgZmVhdHVyZXNEbGdHZXQyLCAwLCAxKSB9LCAwLCAxKQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgKTt9DQogICAgICAgICAgICApOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZmVhdHVyZXNEbGdHZXQxKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgeyBhbXRzeXNzdGF0ZVsnQU1UX1JlZGlyZWN0aW9uU2VydmljZSddLnJlc3BvbnNlID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlU3lzdGVtU3RhdHVzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGZlYXR1cmVzRGxnR2V0MihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgYW10c3lzc3RhdGVbJ0NJTV9LVk1SZWRpcmVjdGlvblNBUCddLnJlc3BvbnNlID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlU3lzdGVtU3RhdHVzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEludGVsIEFNVCBVc2VyIENvbnNlbnQNCiAgICAgICAgLy8NCg0KICAgICAgICBmdW5jdGlvbiBzaG93Q29uc2VudERsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBvcHRpbnJlcXVpcmVkID0gYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXS5yZXNwb25zZVsiT3B0SW5SZXF1aXJlZCJdOw0KICAgICAgICAgICAgaWR4X2QxMG5vbmUuY2hlY2tlZCA9IChvcHRpbnJlcXVpcmVkID09IDApOw0KICAgICAgICAgICAgaWR4X2QxMGt2bS5jaGVja2VkID0gKG9wdGlucmVxdWlyZWQgPT0gMSk7DQogICAgICAgICAgICBpZHhfZDEwYWxsLmNoZWNrZWQgPSAob3B0aW5yZXF1aXJlZCA9PSAweEZGRkZGRkZGKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTAsICdVc2VyIENvbnNlbnQnLCAzLCBjb25zZW50RGxnT2spDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBjb25zZW50RGxnT2soKSB7DQogICAgICAgICAgICBhbXRzeXNzdGF0ZVsnSVBTX09wdEluU2VydmljZSddLnJlc3BvbnNlWyJPcHRJblJlcXVpcmVkIl0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPWQxMF06Y2hlY2tlZCcpLnZhbHVlOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCJJUFNfT3B0SW5TZXJ2aWNlIiwgYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXS5yZXNwb25zZSwgZnVuY3Rpb24oKSB7IGFtdHN0YWNrLkdldCgiSVBTX09wdEluU2VydmljZSIsIGNvbnNlbnRHZXQsIDAsIDEpOyB9LCAwLCAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNvbnNlbnRHZXQoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7IFB1bGxTeXN0ZW1TdGF0dXMoKTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gTkVUV09SSyBTRVRUSU5HUw0KICAgICAgICAvLw0KDQoNCg0KICAgICAgICAvKg0KICAgICAgICBJUHY2ICVBZGRyVHlwZSU6DQogICAgICAgICAgICAwIC0gQWRkcmVzcyBnZW5lcmF0ZWQgZnJvbTogZmU4MDo6LzY0ICsgSW50ZXJmYWNlIElELA0KICAgICAgICAgICAgMSAtIEFkZHJlc3MgZ2VuZXJhdGVkIGZyb206IFtSb3V0ZXIgYWR2ZXJ0aXNlZCBwcmVmaXhdICsgW0ludGVyZmFjZSBJRF0sDQogICAgICAgICAgICAyIC0gR2xvYmFsIElQdjYgYWRkcmVzcyBvYnRhaW5lZCBmcm9tIERIQ1B2NiBTZXJ2ZXIsDQogICAgICAgICAgICAzIC0gSVB2NiB1bmljYXN0IGFkZHJlc3MgY29uZmlndXJlZCBieSB0aGUgdXNlciwNCiAgICAgICAgICAgIDQgLSBSZXR1cm5lZCBieSBGVyBmb3IgSVB2NiBhZGRyZXNzZXMgdGhhdCBhcmUgbm90IG93bmVkIGJ5IEZXIChzdWNoIGFzIElQdjYgcm91dGVyIGFkZHJlc3MsIGNvbmZpZ3VyYXRpb24gc2VydmVyIGFkZHJlc3MgZXRjLikNCg0KICAgICAgICBJUHY2ICVBZGRyU3RhdGUlOg0KICAgICAgICAgICAgMCAtIERBRCBpcyBzdGlsbCBpbiBwcm9jZXNzIGZvciB0aGlzIGFkZHJlc3MsDQogICAgICAgICAgICAxIC0gQWRkcmVzcyBpcyB2YWxpZCBhbmQgbWF5IGJlIHVzZWQgZm9yIG5ldyBjb21tdW5pY2F0aW9uLA0KICAgICAgICAgICAgMiAtIEFkZHJlc3MgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBuZXcgY29tbXVuaWNhdGlvbiwNCiAgICAgICAgICAgIDMgLSBDb3ZlcnMgYm90aCB0aGUgcHJlZmVycmVkIGFuZCBkZXByZWNhdGVkIHN0YXRlcywNCiAgICAgICAgICAgIDQgLSBUaGUgdmFsaWQgbGlmZXRpbWUgb2YgdGhlIGFkZHJlc3MgaGFzIGV4cGlyZWQsDQogICAgICAgICAgICA1IC0gQW4gaW50ZXJmYWNlIElEIGNvbGxpc2lvbiBoYXMgYmVlbiBkZXRlY3RlZCBmb3IgdGhpcyBhZGRyZXNzIHdoZW4gcGVyZm9ybWluZyBEQUQsDQogICAgICAgICAgICA2IC0gUmV0dXJuZWQgYnkgRlcgZm9yIElQdjYgYWRkcmVzc2VzIHRoYXQgYXJlIG5vdCBvd25lZCBieSBGVyAoc3VjaCBhcyBJUHY2IHJvdXRlciBhZGRyZXNzLCBjb25maWd1cmF0aW9uIHNlcnZlciBhZGRyZXNzIGV0Yy4NCiAgICAgICAgKi8NCiAgICAgICAgLy8gaXB2NmFkZHJ0eXBlIGFyZSBlbGVtZW50IDAgdG8gNCwgaXB2NmFkZHJzdGF0ZSBhcmUgNSBhbmQgYWZ0ZXIuIE1lcmdlZCBib3RoIGFycmF5cyB0byBjdXQgZG93biBzaXplDQogICAgICAgIHZhciBpcHY2YWRkcnR5cGUgPSBbIkxpbmsgbG9jYWwgYWRkcmVzcyIsICJOZXR3b3JrIGxvY2FsIGFkZHJlc3MiLCAiR2xvYmFsIGFkZHJlc3MiLCAiVXNlciBjb25maWd1cmVkIiwgIk5vdCBhbGxvd2VkIiwgIkRBRCBpbiBwcm9ncmVzcyIsICJ2YWxpZCIsICJkZXByZWNhdGVkIiwgInByZWZlcnJlZC9kZXByZWNhdGVkIiwgImV4cGlyZWQiLCAiY29sbGlzaW9uIiwgIm5vdCBhbGxvd2VkIl07DQogICAgICAgIGZ1bmN0aW9uIHNob3dJUHY2QWRkckRsZyhuZXRpZmlkLCBhZGRyc3RyKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9IFRhYmxlU3RhcnQoKTsNCiAgICAgICAgICAgIHQgPSBhZGRyc3RyLnNwbGl0KCcsJyk7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHQubGVuZ3RoOyBpICs9IDMpIHsNCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIjxiPiIgKyB0W2ldICsgIjwvYj48YnI+PHNwYW4gc3R5bGU9Zm9udC1zaXplOjEwcHg+IiArIGlwdjZhZGRydHlwZVt0W2kgKyAxXV0gKyAiLCAiICsgaXB2NmFkZHJ0eXBlWyt0W2kgKyAyXSArIDVdICsgIjwvc3Bhbj4iLCAiIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnSVB2NiBhZGRyZXNzZXMgZm9yICcgKyAobmV0aWZpZD09MD8nd2lyZWQnOid3aXJlbGVzcycpICsgJyBpbnRlcmZhY2UnLCAxLCBudWxsLCB4ICsgVGFibGVFbmQoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93SVB2NlN0YXRlRGxnKG5ldGlmaWQsIHN0YXRlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8ICFhbXRzeXNzdGF0ZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHp6ID0gYW10c3lzc3RhdGVbJ0lQU19JUHY2UG9ydFNldHRpbmdzJ10ucmVzcG9uc2VzW25ldGlmaWRdOw0KICAgICAgICAgICAgaXB2Nm1hbnVhbCA9IChuZXRpZmlkID09IDAgJiYgKGlzSXBBZGRyZXNzKHp6WyJJUHY2QWRkcmVzcyJdKSB8fCBpc0lwQWRkcmVzcyh6elsiRGVmYXVsdFJvdXRlciJdKSB8fCBpc0lwQWRkcmVzcyh6elsiUHJpbWFyeUROUyJdKSB8fCBpc0lwQWRkcmVzcyh6elsiU2Vjb25kYXJ5RE5TIl0pKSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF9kMjFtYW51YWxkaXYnLCBuZXRpZmlkID09IDApOw0KICAgICAgICAgICAgUVYoJ2lkX2QyMXN1Ym5ldGRpdicsIGZhbHNlKTsNCiAgICAgICAgICAgIFFWKCdkMjFvMCcsIHRydWUpOw0KICAgICAgICAgICAgUVYoJ2QyMWwwJywgdHJ1ZSk7DQogICAgICAgICAgICBRSCgnZDIxbDAnLCAnSVB2NiBkaXNhYmxlZCcpOw0KICAgICAgICAgICAgUUgoJ2QyMWwxJywgJ0lQdjYgZW5hYmxlZCwgYXV0b21hdGljJyk7DQogICAgICAgICAgICBRSCgnZDIxbDInLCAnSVB2NiBlbmFibGVkLCBhdXRvbWF0aWMgKyBtYW51YWwgYWRkcmVzc2UnKTsNCiAgICAgICAgICAgIGQyMW8wLmNoZWNrZWQgPSAhc3RhdGU7DQogICAgICAgICAgICBkMjFvMS5jaGVja2VkID0gc3RhdGUgJiYgIWlwdjZtYW51YWw7DQogICAgICAgICAgICBkMjFvMi5jaGVja2VkID0gc3RhdGUgJiYgaXB2Nm1hbnVhbDsNCiAgICAgICAgICAgIGlkeF9kMjFhZGRyZXNzLnZhbHVlID0gaXNJcEFkZHJlc3MoenpbIklQdjZBZGRyZXNzIl0sJycpOw0KICAgICAgICAgICAgaWR4X2QyMWdhdGV3YXkudmFsdWUgPSBpc0lwQWRkcmVzcyh6elsiRGVmYXVsdFJvdXRlciJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFkbnMxLnZhbHVlID0gaXNJcEFkZHJlc3MoenpbIlByaW1hcnlETlMiXSwnJyk7DQogICAgICAgICAgICBpZHhfZDIxZG5zMi52YWx1ZSA9IGlzSXBBZGRyZXNzKHp6WyJTZWNvbmRhcnlETlMiXSwnJyk7DQogICAgICAgICAgICB1cGRhdGVJUFNldHVwRGxnKCk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDIxLCAnSVB2NiBzdXBwb3J0IGZvciAnICsgKG5ldGlmaWQ9PTA/J3dpcmVkJzond2lyZWxlc3MnKSArICcgaW50ZXJmYWNlJywgMywgZnVuY3Rpb24oKSB7IHNob3dJUHY2U3RhdGVEbGdPayhuZXRpZmlkKSB9KQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0lQdjZTdGF0ZURsZ09rKG5ldGlmaWQpIHsNCiAgICAgICAgICAgIHZhciB6eiA9IGFtdHN5c3N0YXRlWydJUFNfSVB2NlBvcnRTZXR0aW5ncyddLnJlc3BvbnNlc1tuZXRpZmlkXTsNCiAgICAgICAgICAgIGlmIChuZXRpZmlkID09IDApIHsgLy8gV2UgY2FuIG9ubHkgc2V0IElQdjYgbWFudWFsIGFkZHJlc3MgZm9yIHdpcmVkIGludGVyZmFjZQ0KICAgICAgICAgICAgICAgIGlmIChkMjFvMS5jaGVja2VkKSB7IC8vIEZ1bGx5IGF1dG9tYXRpYywgY2xlYXIgYWxsIGFkZHJlc3Nlcw0KICAgICAgICAgICAgICAgICAgICB6elsiSVB2NkFkZHJlc3MiXSA9IHp6WyJEZWZhdWx0Um91dGVyIl0gPSB6elsiUHJpbWFyeUROUyJdID0genpbIlNlY29uZGFyeUROUyJdID0gIjo6IjsNCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJJUFNfSVB2NlBvcnRTZXR0aW5ncyIsIHp6LCBzaG93SVB2NlN0YXRlRGxnRG9uZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChkMjFvMi5jaGVja2VkKSB7IC8vIE1hbnVhbCwgc2V0IGFkZHJlc3Nlcw0KICAgICAgICAgICAgICAgICAgICB6elsiSVB2NkFkZHJlc3MiXSA9IGlkeF9kMjFhZGRyZXNzLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICB6elsiRGVmYXVsdFJvdXRlciJdID0gaWR4X2QyMWdhdGV3YXkudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIHp6WyJQcmltYXJ5RE5TIl0gPSBpZHhfZDIxZG5zMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgenpbIlNlY29uZGFyeUROUyJdID0gaWR4X2QyMWRuczIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLlB1dCgiSVBTX0lQdjZQb3J0U2V0dGluZ3MiLCB6eiwgc2hvd0lQdjZTdGF0ZURsZ0RvbmUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIFRoaXMgY29kZSBlbmFibGVzL2Rpc2FibGVzIElQdjYgZm9yIGEgZ2l2ZW4gaW50ZXJmYWNlLg0KICAgICAgICAgICAgdmFyIGVsZW1lbnRTZXR0aW5ncyA9IGFtdHN5c3N0YXRlWydDSU1fRWxlbWVudFNldHRpbmdEYXRhJ10ucmVzcG9uc2VzOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50U2V0dGluZ3MubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFNldHRpbmdzW2ldWydTZXR0aW5nRGF0YSddICYmIGVsZW1lbnRTZXR0aW5nc1tpXVsnU2V0dGluZ0RhdGEnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddID09ICgnSW50ZWwocikgSVBTIElQdjYgU2V0dGluZ3MgJyArIG5ldGlmaWQpKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBjbG9uZSA9IENsb25lKGVsZW1lbnRTZXR0aW5nc1tpXSk7DQogICAgICAgICAgICAgICAgICAgIGNsb25lWydJc0N1cnJlbnQnXSA9ICgoZDIxbzAuY2hlY2tlZCk/MjoxKTsNCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJDSU1fRWxlbWVudFNldHRpbmdEYXRhIiwgY2xvbmUsIHNob3dJUHY2U3RhdGVEbGdEb25lKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93SVB2NlN0YXRlRGxnRG9uZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICBhbXRzeXNzdGF0ZSA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtU3RhdHVzKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goJ0lQdjYgc3VwcG9ydCcsICdVbmFibGUgdG8gc2V0IElQdjYgc3RhdGUsIGVycm9yICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1BpbmdBY3Rpb25EbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgZyA9IGFtdHN5c3N0YXRlWydBTVRfR2VuZXJhbFNldHRpbmdzJ10ucmVzcG9uc2U7DQogICAgICAgICAgICB2YXIgdiA9IChnWyJQaW5nUmVzcG9uc2VFbmFibGVkIl0gPT0gdHJ1ZSkgKyAoKGdbIlJtY3BQaW5nUmVzcG9uc2VFbmFibGVkIl0gPT0gdHJ1ZSkgPDwgMSk7DQogICAgICAgICAgICBkMjBhLmNoZWNrZWQgPSAodiA9PSAwKTsNCiAgICAgICAgICAgIGQyMGIuY2hlY2tlZCA9ICh2ID09IDEpOw0KICAgICAgICAgICAgZDIwYy5jaGVja2VkID0gKHYgPT0gMik7DQogICAgICAgICAgICBkMjBkLmNoZWNrZWQgPSAodiA9PSAzKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMjAsICdJbnRlbCZyZWc7IEFNVCBQaW5nIFJlc3BvbnNlJywgMywgc2hvd1BpbmdBY3Rpb25EbGdPayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UGluZ0FjdGlvbkRsZ09rKCkgew0KICAgICAgICAgICAgdmFyIGNsb25lID0gQ2xvbmUoYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZSk7DQogICAgICAgICAgICB2YXIgdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ZDIwXTpjaGVja2VkJykudmFsdWU7DQogICAgICAgICAgICBjbG9uZVsiUGluZ1Jlc3BvbnNlRW5hYmxlZCJdID0gKCh2ICYgMSkgIT0gMCk7DQogICAgICAgICAgICBjbG9uZVsiUm1jcFBpbmdSZXNwb25zZUVuYWJsZWQiXSA9ICgodiAmIDIpICE9IDApOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCJBTVRfR2VuZXJhbFNldHRpbmdzIiwgY2xvbmUsIFB1bGxTeXN0ZW1TdGF0dXMsIDAsIDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0lQU2V0dXBEbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9IGFtdHN5c3N0YXRlWydBTVRfRXRoZXJuZXRQb3J0U2V0dGluZ3MnXS5yZXNwb25zZXNbMF07DQogICAgICAgICAgICBRVignaWRfZDIxbWFudWFsZGl2JywgdHJ1ZSk7DQogICAgICAgICAgICBRVignaWRfZDIxc3VibmV0ZGl2JywgdHJ1ZSk7DQogICAgICAgICAgICBRVignZDIxbzAnLCBmYWxzZSk7DQogICAgICAgICAgICBRVignZDIxbDAnLCBmYWxzZSk7DQogICAgICAgICAgICBRSCgnZDIxbDEnLCAnQXV0b21hdGljIGNvbmZpZ3VyYXRpb24gdXNpbmcgREhDUCBzZXJ2ZXInKTsNCiAgICAgICAgICAgIFFIKCdkMjFsMicsICdTdGF0aWMgY29uZmlndXJhdGlvbiB1c2luZyBJUHY0IHNldHRpbmdzIGJlbG93Jyk7DQogICAgICAgICAgICBkMjFvMS5jaGVja2VkID0gKHhbJ0RIQ1BFbmFibGVkJ10gPT0gdHJ1ZSk7DQogICAgICAgICAgICBkMjFvMi5jaGVja2VkID0gIWQyMW8xLmNoZWNrZWQ7DQogICAgICAgICAgICBpZHhfZDIxYWRkcmVzcy52YWx1ZSA9IGlzSXBBZGRyZXNzKHhbIklQQWRkcmVzcyJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFzdWJuZXQudmFsdWUgPSBpc0lwQWRkcmVzcyh4WyJTdWJuZXRNYXNrIl0sJycpOw0KICAgICAgICAgICAgaWR4X2QyMWdhdGV3YXkudmFsdWUgPSBpc0lwQWRkcmVzcyh4WyJEZWZhdWx0R2F0ZXdheSJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFkbnMxLnZhbHVlID0gaXNJcEFkZHJlc3MoeFsiUHJpbWFyeUROUyJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFkbnMyLnZhbHVlID0gaXNJcEFkZHJlc3MoeFsiU2Vjb25kYXJ5RE5TIl0sJycpOw0KICAgICAgICAgICAgdXBkYXRlSVBTZXR1cERsZygpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgyMSwgJ0lQdjQgU2V0dGluZ3MnLCAzLCBzaG93SVBTZXR1cERsZ09rKQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlSVBTZXR1cERsZygpIHsNCiAgICAgICAgICAgIGlkeF9kMjFhZGRyZXNzLmRpc2FibGVkID0gaWR4X2QyMXN1Ym5ldC5kaXNhYmxlZCA9IGlkeF9kMjFnYXRld2F5LmRpc2FibGVkID0gaWR4X2QyMWRuczEuZGlzYWJsZWQgPSBpZHhfZDIxZG5zMi5kaXNhYmxlZCA9ICFkMjFvMi5jaGVja2VkOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0lQU2V0dXBEbGdPaygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gQ2xvbmUoYW10c3lzc3RhdGVbJ0FNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyddLnJlc3BvbnNlc1swXSk7DQogICAgICAgICAgICB4WydESENQRW5hYmxlZCddID0gZDIxbzEuY2hlY2tlZDsNCiAgICAgICAgICAgIGRlbGV0ZSB4WyJJUEFkZHJlc3MiXTsNCiAgICAgICAgICAgIGRlbGV0ZSB4WyJTdWJuZXRNYXNrIl07DQogICAgICAgICAgICBkZWxldGUgeFsiRGVmYXVsdEdhdGV3YXkiXTsNCiAgICAgICAgICAgIGRlbGV0ZSB4WyJQcmltYXJ5RE5TIl07DQogICAgICAgICAgICBkZWxldGUgeFsiU2Vjb25kYXJ5RE5TIl07DQogICAgICAgICAgICBpZiAoZDIxbzEuY2hlY2tlZCA9PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgIHhbIklQQWRkcmVzcyJdID0gaWR4X2QyMWFkZHJlc3MudmFsdWU7DQogICAgICAgICAgICAgICAgeFsiU3VibmV0TWFzayJdID0gaWR4X2QyMXN1Ym5ldC52YWx1ZTsNCiAgICAgICAgICAgICAgICB4WyJEZWZhdWx0R2F0ZXdheSJdID0gaWR4X2QyMWdhdGV3YXkudmFsdWU7DQogICAgICAgICAgICAgICAgaWYgKGlkeF9kMjFkbnMxLnZhbHVlICE9ICcnKSB4WyJQcmltYXJ5RE5TIl0gPSBpZHhfZDIxZG5zMS52YWx1ZTsNCiAgICAgICAgICAgICAgICBpZiAoaWR4X2QyMWRuczIudmFsdWUgIT0gJycpIHhbIlNlY29uZGFyeUROUyJdID0gaWR4X2QyMWRuczIudmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBhbXRzdGFjay5QdXQoIkFNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyIsIHgsIHNob3dJUFNldHVwRGxnRG9uZSwgMCwgMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93SVBTZXR1cERsZ0RvbmUoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgYW10c3lzc3RhdGUgPSB1bmRlZmluZWQ7DQogICAgICAgICAgICAgICAgUHVsbFN5c3RlbVN0YXR1cygpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdJUHY0IFNldHRpbmdzJywgJ1VuYWJsZSB0byBzZXQgbmV0d29yayBwYXJhbWV0ZXJzLCBlcnJvciAnICsgc3RhdHVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gU3RvcmFnZQ0KICAgICAgICAvLw0KDQogICAgICAgIHZhciB4eFN0b3JhZ2UgPSBudWxsOw0KICAgICAgICB2YXIgeHhTdG9yYWdlVmVuZG9ycyA9IFtdOw0KICAgICAgICB2YXIgeHhTdG9yYWdlQXBwbGljYXRpb25zID0gW107DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFN0b3JhZ2UoKSB7DQogICAgICAgICAgICBhbXRGaXJzdFB1bGwgfD0gODsNCiAgICAgICAgICAgIHdzc3RhY2suY29tbS5QZXJmb3JtQWpheCgiIiwgUHVsbFN0b3JhZ2VSZXNwb25zZSwgbnVsbCwgMCwgIi9hbXQtc3RvcmFnZS8iLCAiR0VUIik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBQdWxsU3RvcmFnZVJlc3BvbnNlKGRhdGEsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAoYW10c3RhY2suUGVuZGluZ0JhdGNoT3BlcmF0aW9ucyA9PSAwKSByZWZyZXNoQnV0dG9ucyh0cnVlKTsgLy8gSWYgbm90aGluZyBpcyBiZWluZyBkb25lLCByZS1lbmFibGUgcmVmcmVzaCBidXR0b25zDQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgUVYoJ2dvMjEnLCB0cnVlKTsgLy8gU2hvdyBTdG9yYWdlIFBhbmVsDQoNCiAgICAgICAgICAgICAgICB2YXIgbGVuOyAvLyBSZW1vdmUgYWxsIGNoYXJzIHRoYXQgYXJlIGJlbG93IDMyLCB0aGlzIHdpbGwgYWxsb3cgcGFyc2luZyBldmVuIHRoZSB0aGUgZmlybXdhcmUgZ2l2ZXMgdXMgZ2FyYmFnZS4NCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspIHsgZG8geyBsZW4gPSBkYXRhLmxlbmd0aDsgZGF0YSA9IGRhdGEucmVwbGFjZShTdHJpbmcuZnJvbUNoYXJDb2RlKGkpLCAnJyk7IH0gd2hpbGUgKGxlbiA+IGRhdGEubGVuZ3RoKTsgfQ0KICAgICAgICAgICAgICAgIC8vZGF0YSA9ICd7ImluZm9ybWF0aW9uIjogeyJ2ZXJzaW9uIjogMS4xLCJyZWFsbXMiOiA3NzY1NzU5LCJ1c2VyIjogImFkbWluIn0sImNvbnRlbnQiOiBbeyJuYW1lIjogImluZGV4Lmh0bSIsInNpemUiOiAzODg2NH0seyJ2ZW5kb3IiOiAiVXNlciIsImFwcCI6ICJTREsiLCJuYW1lIjogIlNhbXBsZS5odG1sIiwic2l6ZSI6IDI2NzYwLCJsaW5rIjogIlNESyBTYW1wbGUifSx7InZlbmRvciI6ICJVc2VyIiwiYXBwIjogIlNESyIsIm5hbWUiOiAid3MuanMiLCJzaXplIjogNDI1NzUsImxpbmsiOiAiU0RLIFNhbXBsZSJ9LHsidmVuZG9yIjogIlVzZXIiLCJhcHAiOiAiU0RLIiwibmFtZSI6ICJidHAubWluLmNzcyIsInNpemUiOiAxMjEyNjUsImxpbmsiOiAiU0RLIFNhbXBsZSJ9LHsidmVuZG9yIjogIlVzZXIiLCJhcHAiOiAiU0RLIiwibmFtZSI6ICJsb2dvLnBuZyIsInNpemUiOiAyODAzLCJsaW5rIjogIlNESyBTYW1wbGUifV19JzsNCiAgICAgICAgICAgICAgICB0cnkgeyB4eFN0b3JhZ2UgPSBKU09OLnBhcnNlKGRhdGEpOyB9IGNhdGNoIChlKSB7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgIHh4U3RvcmFnZVZlbmRvcnMgPSBbXTsNCiAgICAgICAgICAgICAgICB4eFN0b3JhZ2VBcHBsaWNhdGlvbnMgPSBbXTsNCiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHh4U3RvcmFnZVsnY29udGVudCddOw0KDQogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gTmV3IGZsYXQgZm9ybWF0LCBjb252ZXJ0IHRvIHRyZWUgZm9ybWF0Lg0KICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Y29udGVudCA9IHt9Ow0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGNvbnRlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ZW5kb3IgPSBjb250ZW50W2ldWyJ2ZW5kb3IiXSA/IGNvbnRlbnRbaV1bInZlbmRvciJdIDogJyc7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld2NvbnRlbnRbdmVuZG9yXSkgeyBuZXdjb250ZW50W3ZlbmRvcl0gPSB7fTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRbaV1bImFwcCJdID8gY29udGVudFtpXVsiYXBwIl0gOiAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3Y29udGVudFt2ZW5kb3JdW2FwcF0pIHsgbmV3Y29udGVudFt2ZW5kb3JdW2FwcF0gPSB7fTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbaV1bIm5hbWUiXSkgeyBuZXdjb250ZW50W3ZlbmRvcl1bYXBwXVtjb250ZW50W2ldWyJuYW1lIl1dID0gY29udGVudFtpXTsgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHh4U3RvcmFnZVsnY29udGVudCddID0gY29udGVudCA9IG5ld2NvbnRlbnQ7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVHJlZSBmb3JtYXQsIG1vdmUgaW5kZXguaHRtIGFuZCBsb2dvbi5odG0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbJ2luZGV4Lmh0bSddIHx8IGNvbnRlbnRbJ2xvZ29uLmh0bSddKSB7IGNvbnRlbnRbJyddID0geyAnJzoge30gfTsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFsnaW5kZXguaHRtJ10pIHsgY29udGVudFsnJ11bJyddWydpbmRleC5odG0nXSA9IGNvbnRlbnRbJ2luZGV4Lmh0bSddOyBkZWxldGUgY29udGVudFsnaW5kZXguaHRtJ107IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbJ2xvZ29uLmh0bSddKSB7IGNvbnRlbnRbJyddWycnXVsnbG9nb24uaHRtJ10gPSBjb250ZW50Wydsb2dvbi5odG0nXTsgZGVsZXRlIGNvbnRlbnRbJ2xvZ29uLmh0bSddOyB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gRGlzcGxheSBhbGwgc3RvcmFnZSBmaWxlcw0KICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IDAsIHggPSBUYWJsZVN0YXJ0MigpICsgIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBzdG9yYWdlIGZvciB0aGlzIGNvbXB1dGVyLjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB2YXIgaWksIGpqLCB4eCA9ICIiLCBsaW5rcyA9ICIiLCBsaW5raWQgPSAzMDsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGNvbnRlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGpjb3VudCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gY29udGVudFtpXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgamNvdW50Kys7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIga2NvdW50ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgaW4gY29udGVudFtpXVtqXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtjb3VudCsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9IGlpIHx8IGogIT0gamopIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHh4ICE9ICIiKSB7IHggKz0geHg7IHh4ID0gIjxicj4iOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlpID0gaTsgamogPSBqOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAnJykgeyB4eCArPSBFc2NhcGVIdG1sKGkgKyAiIC8gIiArIGopOyB9IGVsc2UgeyB4eCArPSAiUm9vdCIgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBoYW5kbGUgPSAiXCIiICsgaSArICJcIixcIiIgKyBqICsgIlwiLFwiIiArIGsgKyAiXCIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGUgPSAiXCIiICsgaSArICgoaSAhPSAnJykgPyAnLycgOiAnJykgKyBqICsgKChqICE9ICcnKSA/ICcvJyA6ICcnKSArIGsgKyAiXCIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh4ICs9ICc8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93U3RvcmFnZURldGFpbHMoIicgKyBpICsgJyIsIicgKyBqICsgJyIsIicgKyBrICsgJyIsJyArIGhhbmRsZSArICcpPjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ+JzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh4ICs9ICIgIiArIEFkZEJ1dHRvbjIoIk9wZW4iLCAiT3BlbkZyb21TdG9yYWdlKCIgKyBoYW5kbGUgKyAiLGV2ZW50KSIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggKz0gIiAiICsgQWRkQnV0dG9uMigiRG93bmxvYWQiLCAiRG93bmxvYWRGcm9tU3RvcmFnZSgiICsgaGFuZGxlICsgIixcIiIgKyBrICsgIlwiLGV2ZW50KSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh4ICs9ICI8L2Rpdj48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChrKSArICI8L2I+LCA8aT4iICsgY29udGVudFtpXVtqXVtrXVsnc2l6ZSddICsgIiBieXRlczwvaT48L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHh4U3RvcmFnZVZlbmRvcnMuaW5kZXhPZihpKSA9PSAtMSkgeHhTdG9yYWdlVmVuZG9ycy5wdXNoKGkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eFN0b3JhZ2VBcHBsaWNhdGlvbnMuaW5kZXhPZihqKSA9PSAtMSkgeHhTdG9yYWdlQXBwbGljYXRpb25zLnB1c2goaik7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2NvdW50ID09IDApIHsgIC8vIENsZWFyIGVtcHR5IGFwcGxpY2F0aW9uICYgdmVuZG9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBmdW5jdGlvbiAoKSB7IH0sIG51bGwsIDAsICIvYW10LXN0b3JhZ2UvIiArIGkgKyAiLyIgKyBqLCAiREVMRVRFIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBmdW5jdGlvbiAoKSB7IH0sIG51bGwsIDAsICIvYW10LXN0b3JhZ2UvIiArIGksICJERUxFVEUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoamNvdW50ID09IDApIHsgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBmdW5jdGlvbiAoKSB7IH0sIG51bGwsIDAsICIvYW10LXN0b3JhZ2UvIiArIGksICJERUxFVEUiKTsgfSAvLyBDbGVhciBlbXB0eSB2ZW5kb3INCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHh4ICE9ICIiKSB4ICs9IHh4Ow0KICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7IHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPjxpPk5vIGZpbGVzIGZvdW5kLjwvaT48L2Rpdj48YnI+IjsgfQ0KICAgICAgICAgICAgICAgIHggKz0gIjxicj48dGQgY2xhc3M9cjE+IiArIFRhYmxlRW5kKEFkZFJlZnJlc2hCdXR0b24oIlB1bGxTdG9yYWdlKCkiKSArIEFkZEJ1dHRvbigiVXBsb2FkLi4uIiwgIlVwbG9hZFRvU3RvcmFnZSgpIikNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c3RlbVN0b3JhZ2UnLCB4KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzdGVtU3RvcmFnZScsICdVbmFibGUgdG8gbG9hZCBzdG9yYWdlIGRhdGEuLi48YnIvPicgKyBBZGRCdXR0b24oIlJlZnJlc2giLCAiUHVsbFN0b3JhZ2UoKSIpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTdG9yYWdlRGV0YWlscyhpLCBqLCBrLCBoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9ICcnLCBpdGVtID0geHhTdG9yYWdlWydjb250ZW50J11baV1bal1ba107DQogICAgICAgICAgICBpZiAoaSAhPSAnJykgeCArPSBhZGRIdG1sVmFsdWUoIlZlbmRvciIsIGkpOw0KICAgICAgICAgICAgaWYgKGogIT0gJycpIHggKz0gYWRkSHRtbFZhbHVlKCJBcHBsaWNhdGlvbiIsIGopOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIk5hbWUiLCBrKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJTaXplIiwgaXRlbVsnc2l6ZSddICsgJyBieXRlcycpOw0KICAgICAgICAgICAgaWYgKGl0ZW1bJ2xpbmsnXSkgeyB4ICs9IGFkZEh0bWxWYWx1ZSgiTGluayIsIGl0ZW1bJ2xpbmsnXSk7IH0NCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdTdG9yYWdlIEl0ZW0nLCA1LCBzaG93U3RvcmFnZURldGFpbHNFeCwgeCwgaCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93U3RvcmFnZURldGFpbHNFeChidXR0b25zLCBoYW5kbGUpIHsNCiAgICAgICAgICAgIGlmIChidXR0b25zID09IDIpIHsgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBzdG9yYWdlRGVsZXRlUmVzcG9uc2UsIG51bGwsIDAsICcvYW10LXN0b3JhZ2UvJyArIGhhbmRsZSwgIkRFTEVURSIpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzdG9yYWdlRGVsZXRlUmVzcG9uc2UoZGF0YSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goIlN0b3JhZ2UiLCAiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIChFUlIiICsgc3RhdHVzICsgIiksIGNoZWNrIHRoYXQgdGhlIGNvbXB1dGVyIGlzIHBvd2VyZWQgb24uIik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFB1bGxTdG9yYWdlKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIERvd25sb2FkRnJvbVN0b3JhZ2UoaGFuZGxlLCBmaWxlbmFtZSwgZSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICAgICAgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBEb3dubG9hZEZyb21TdG9yYWdlRXgsIGZpbGVuYW1lLCAwLCAnL2FtdC1zdG9yYWdlLycgKyBoYW5kbGUsICJHRVQiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIERvd25sb2FkRnJvbVN0b3JhZ2VFeChkYXRhLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKChzdGF0dXMgIT0gMjAwKSB8fCAoZGF0YSA9PSBudWxsKSkgeyBjb25zb2xlLmxvZyhzdGF0dXMsICdEYXRhID0gbnVsbCcpOyByZXR1cm47IH0NCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoZGF0YSksIHRhZyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBPcGVuRnJvbVN0b3JhZ2UoaGFuZGxlLCBlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQoNCiAgICAgICAgICAgIHZhciBuZXdXaW5kb3cgPSB3aW5kb3cub3BlbignaHR0cDovLycgKyB3c3N0YWNrLmNvbW0uaG9zdCArICc6JyArIHdzc3RhY2suY29tbS5wb3J0ICsgJy9hbXQtc3RvcmFnZS8nICsgaGFuZGxlLCAnX2JsYW5rJyk7DQogICAgICAgICAgICBuZXdXaW5kb3cub3BlbmVyID0gbnVsbDsNCiAgICAgICAgICAgIG5ld1dpbmRvdy5mb2N1cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gUHVzaFRvU3RvcmFnZSh2ZW5kb3JBcHBuYW1lRmlsZW5hbWUsIGRhdGEsIGFwcGVuZCkgew0KICAgICAgICAgICAgdmFyIHRhZyA9IG51bGw7DQogICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiA3MDAwKSB7IHRhZyA9IFt2ZW5kb3JBcHBuYW1lRmlsZW5hbWUsIGRhdGEuc3Vic3RyaW5nKDcwMDApXTsgZGF0YSA9IGRhdGEuc3Vic3RyaW5nKDAsIDcwMDApOyB9DQogICAgICAgICAgICB3c3N0YWNrLmNvbW0uUGVyZm9ybUFqYXgoZGF0YSwgUHVzaFRvU3RvcmFnZVJlc3BvbnNlLCB0YWcsIDAsICIvYW10LXN0b3JhZ2UvIiArIHZlbmRvckFwcG5hbWVGaWxlbmFtZSArIChhcHBlbmQgPT0gdHJ1ZSA/ICI/YXBwZW5kPSIgOiAiIiksICJQVVQiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIFB1c2hUb1N0b3JhZ2VSZXNwb25zZShkYXRhLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgbWVzc2FnZWJveCgiU3RvcmFnZSIsICJVbmFibGUgdG8gcHVzaCBmaWxlIChFUlIiICsgc3RhdHVzICsgIiksIGNoZWNrIHRoYXQgdGhlIGNvbXB1dGVyIGlzIHBvd2VyZWQgb24uIik7IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKHRhZyAhPSBudWxsKSB7IFB1c2hUb1N0b3JhZ2UodGFnWzBdLCB0YWdbMV0sIHRydWUpOyB9IGVsc2UgeyBQdWxsU3RvcmFnZSgpOyB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBVcGxvYWRUb1N0b3JhZ2UoZmlsZSwgZmlsZW5hbWUpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGlmICghZmlsZW5hbWUpIHsgZmlsZW5hbWUgPSAnJzsgfQ0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gJzxicj5TZWxlY3QgYSBzbWFsbCBmaWxlIHRvIHVwbG9hZCB0byBzdG9yYWdlIGFuZCBlbnRlciBhIHZlbmRvciwgYXBwbGljYXRpb24gYW5kIGZpbGVuYW1lLjxicj4nOw0KICAgICAgICAgICAgaWYgKCFmaWxlKSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9aGVpZ2h0OjIwcHg+PGlucHV0IHR5cGU9ZmlsZSBpZD1tc3RvcmFnZWZpbGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHggb25jaGFuZ2U9U2V0U3RvcmFnZU5hbWUoKT48ZGl2PlVwbG9hZCBmaWxlPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9aGVpZ2h0OjIwcHg+PGlucHV0IGlkPW1zdG9yYWdlZmlsZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweCByZWFkb25seSBkaXNhYmxlZD1kaXNhYmxlZCB2YWx1ZT0iJyArIGZpbGVuYW1lICsgJyIgPjxkaXY+VXBsb2FkIGZpbGU8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9aGVpZ2h0OjE2cHg+PGlucHV0IGlkPW1zdG9yYWdldmVuZG9yIHBsYWNlaG9sZGVyPVZlbmRvciBsaXN0PW1zdG9yYWdldmVuZG9ybGlzdCBtYXhsZW5ndGg9MTEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHg+PGRpdj5WZW5kb3IgbmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT1oZWlnaHQ6MTZweD48aW5wdXQgaWQ9bXN0b3JhZ2VhcHBsaWNhdGlvbiBwbGFjZWhvbGRlcj1BcHAgbGlzdD1tc3RvcmFnZWFwcGxpY2F0aW9ubGlzdCBtYXhsZW5ndGg9MTEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHg+PGRpdj5BcHBsaWNhdGlvbiBuYW1lPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxicj48ZGl2IHN0eWxlPWhlaWdodDoxNnB4PjxpbnB1dCBpZD1tc3RvcmFnZWZpbGVuYW1lIHBsYWNlaG9sZGVyPUZpbGVuYW1lIG1heGxlbmd0aD0xMSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweD48ZGl2PkZpbGVuYW1lPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxicj48ZGl2IHN0eWxlPWhlaWdodDoxNnB4PjxpbnB1dCBpZD1tc3RvcmFnZXR5cGUgcGxhY2Vob2xkZXI9YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIGxpc3Q9bXN0b3JhZ2V0eXBlbGlzdCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweD48ZGl2Pk1JTUUgVHlwZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT1oZWlnaHQ6MTZweD48aW5wdXQgaWQ9bXN0b3JhZ2VsaW5rIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI0MHB4PjxkaXYgdGl0bGU9IklmIHNldCwgY3JlYXRlcyBhIGxpbmsgdG8gdGhpcyBjb250ZW50IGZyb20gdGhlIG1haW4gd2ViIHBhZ2UiPkxpbms8L2Rpdj48L2Rpdj48YnI+JzsNCiAgICAgICAgICAgIHggKz0gJzxkYXRhbGlzdCBpZD1tc3RvcmFnZXZlbmRvcmxpc3Q+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhTdG9yYWdlVmVuZG9ycykgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPSInICsgeHhTdG9yYWdlVmVuZG9yc1tpXSArICciPic7IH0NCiAgICAgICAgICAgIHggKz0gJzwvZGF0YWxpc3Q+JzsNCiAgICAgICAgICAgIHggKz0gJzxkYXRhbGlzdCBpZD1tc3RvcmFnZWFwcGxpY2F0aW9ubGlzdD4nOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN0b3JhZ2VBcHBsaWNhdGlvbnMpIHsgeCArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIHh4U3RvcmFnZUFwcGxpY2F0aW9uc1tpXSArICciPic7IH0NCiAgICAgICAgICAgIHggKz0gJzwvZGF0YWxpc3Q+PGRhdGFsaXN0IGlkPW1zdG9yYWdldHlwZWxpc3Q+PG9wdGlvbiB2YWx1ZT0iYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIj48b3B0aW9uIHZhbHVlPSJpbWFnZS9qcGVnIj48b3B0aW9uIHZhbHVlPSJ0ZXh0L2h0bWwiPjxvcHRpb24gdmFsdWU9InRleHQvcGxhaW4iPjwvZGF0YWxpc3Q+JzsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdTdG9yYWdlIFVwbG9hZCcsIDMsIFVwbG9hZFRvU3RvcmFnZUV4LCB4LCBmaWxlKTsNCiAgICAgICAgICAgIGlmIChmaWxlKSB7IFNldFN0b3JhZ2VOYW1lKGZpbGVuYW1lKTsgfQ0KICAgICAgICB9DQoNCg0KICAgICAgICBmdW5jdGlvbiBVcGxvYWRUb1N0b3JhZ2VFeChidXR0b24sIHRhZykgew0KICAgICAgICAgICAgaWYgKCF0YWcpIHsNCiAgICAgICAgICAgICAgICB2YXIgeCA9IFEoJ21zdG9yYWdlZmlsZScpOw0KICAgICAgICAgICAgICAgIGlmICh4LmZpbGVzLmxlbmd0aCAhPSAxKSByZXR1cm47DQogICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IFVwbG9hZFRvU3RvcmFnZUV4MjsNCiAgICAgICAgICAgICAgICByZWFkZXIuZmlsZW5hbWUgPSB4LmZpbGVzWzBdLm5hbWU7DQogICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh4LmZpbGVzWzBdKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IFVwbG9hZFRvU3RvcmFnZUV4MjsNCiAgICAgICAgICAgICAgICByZWFkZXIuZmlsZW5hbWUgPSBRKCdtc3RvcmFnZWZpbGUnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhZyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBTZXRTdG9yYWdlTmFtZShmaWxlbmFtZSkgew0KICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSkgew0KICAgICAgICAgICAgICAgIHZhciB4ID0gUSgnbXN0b3JhZ2VmaWxlJyk7DQogICAgICAgICAgICAgICAgaWYgKHguZmlsZXMubGVuZ3RoID09IDEpIHsgZmlsZW5hbWUgPSB4LmZpbGVzWzBdLm5hbWU7IH0gZWxzZSB7IGZpbGVuYW1lID0gJyc7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKTsNCiAgICAgICAgICAgIHZhciBmaWxlbmFtZVNwbGl0ID0gZmlsZW5hbWUuc3BsaXQoJy0nKTsNCiAgICAgICAgICAgIGlmIChmaWxlbmFtZVNwbGl0Lmxlbmd0aCA9PSAzICYmIGZpbGVuYW1lU3BsaXRbMF0ubGVuZ3RoIDwgMTIgJiYgZmlsZW5hbWVTcGxpdFsxXS5sZW5ndGggPCAxMikgew0KICAgICAgICAgICAgICAgIFEoJ21zdG9yYWdldmVuZG9yJykudmFsdWUgPSBmaWxlbmFtZVNwbGl0WzBdOw0KICAgICAgICAgICAgICAgIFEoJ21zdG9yYWdlYXBwbGljYXRpb24nKS52YWx1ZSA9IGZpbGVuYW1lU3BsaXRbMV07DQogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVNwbGl0WzJdOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zcGxpdCgnLScpLmpvaW4oJycpOw0KICAgICAgICAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcuZ3onKSkgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgZmlsZW5hbWUubGVuZ3RoIC0gMyk7DQogICAgICAgICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5odG0nKSB8fCBmaWxlbmFtZS5lbmRzV2l0aCgnLmh0bWwnKSkgUSgnbXN0b3JhZ2V0eXBlJykudmFsdWUgPSAidGV4dC9odG1sIjsNCiAgICAgICAgICAgIGVsc2UgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcudHh0JykpIFEoJ21zdG9yYWdldHlwZScpLnZhbHVlID0gInRleHQvcGxhaW4iOw0KICAgICAgICAgICAgaWYgKGZpbGVuYW1lLmxlbmd0aCA+IDExKSBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCAxMSk7DQogICAgICAgICAgICBRKCdtc3RvcmFnZWZpbGVuYW1lJykudmFsdWUgPSBmaWxlbmFtZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIFVwbG9hZFRvU3RvcmFnZUV4MihmaWxlKSB7DQogICAgICAgICAgICB2YXIgdmFmLCB2ZW5kb3IgPSBRKCdtc3RvcmFnZXZlbmRvcicpLnZhbHVlOw0KICAgICAgICAgICAgdmFyIGFwcCA9IFEoJ21zdG9yYWdlYXBwbGljYXRpb24nKS52YWx1ZTsNCiAgICAgICAgICAgIHZhciBmaWxlbmFtZSA9IFEoJ21zdG9yYWdlZmlsZW5hbWUnKS52YWx1ZTsNCiAgICAgICAgICAgIGlmIChmaWxlbmFtZSA9PSAnJykgZmlsZW5hbWUgPSAnRmlsZW5hbWUnOw0KICAgICAgICAgICAgdmFyIG1pbWV0eXBlID0gUSgnbXN0b3JhZ2V0eXBlJykudmFsdWU7DQogICAgICAgICAgICBpZiAobWltZXR5cGUgPT0gJycpIG1pbWV0eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQogICAgICAgICAgICB2YXIgbGluayA9IFEoJ21zdG9yYWdlbGluaycpLnZhbHVlOw0KICAgICAgICAgICAgaWYgKHZlbmRvciA9PSAnJyAmJiBhcHAgPT0gJycgJiYgKGZpbGVuYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2xvZ29uLmh0bScgfHwgZmlsZW5hbWUudG9Mb3dlckNhc2UoKSA9PSAnaW5kZXguaHRtJykpIHsNCiAgICAgICAgICAgICAgICB2YWYgPSBmaWxlbmFtZS50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAodmVuZG9yID09ICcnKSB2ZW5kb3IgPSAnVmVuZG9yJzsNCiAgICAgICAgICAgICAgICBpZiAoYXBwID09ICcnKSBhcHAgPSAnQXBwJzsNCiAgICAgICAgICAgICAgICB2YWYgPSB2ZW5kb3IgKyAiLyIgKyBhcHAgKyAiLyIgKyBmaWxlbmFtZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdmFyIGRhdGEgPSAiPG1ldGFkYXRhPjxoZWFkZXJzPiI7DQogICAgICAgICAgICB2YXIgZmlsZW5hbWUgPSBmaWxlLnRhcmdldC5maWxlbmFtZTsNCiAgICAgICAgICAgIGlmICghZmlsZW5hbWUpIHsgZmlsZW5hbWUgPSBRKCdtc3RvcmFnZWZpbGUnKS5maWxlc1swXS5uYW1lOyB9DQogICAgICAgICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5neicpKSB7IGRhdGEgKz0gIjxoPkNvbnRlbnQtRW5jb2Rpbmc6IGd6aXA8L2g+IjsgfQ0KICAgICAgICAgICAgZGF0YSArPSAiPGg+Q29udGVudC1UeXBlOiAiICsgbWltZXR5cGUgKyAiPC9oPjwvaGVhZGVycz4iOyAvLyA8aD5YLVVBLUNvbXBhdGlibGU6IElFPUVkZ2U8L2g+DQogICAgICAgICAgICBpZiAobGluayAhPSAnJykgZGF0YSArPSAiPGxpbms+IiArIGxpbmsgKyAiPC9saW5rPiI7DQogICAgICAgICAgICBkYXRhICs9ICI8L21ldGFkYXRhPiIgKyBmaWxlLnRhcmdldC5yZXN1bHQ7DQoNCiAgICAgICAgICAgIFB1c2hUb1N0b3JhZ2UodmFmLCBkYXRhKTsNCiAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEFsYXJtIFBhbmVsDQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gX2ZtdGRhdGV0aW1lKHN0cikgew0KICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKCJUIiwiICIpLnJlcGxhY2UoIloiLCIiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIF9mbXRpbnRlcnZhbChzdHIpIHsNCiAgICAgICAgICAgIHZhciBjbCA9IHN0ci5yZXBsYWNlKCJUIiwgIiIpLnN1YnN0cmluZyhzdHIuaW5kZXhPZignUCcpICsgMSk7DQogICAgICAgICAgICBjbCA9ICcgJyArIGNsLnJlcGxhY2UoIkQiLCAiIGRheXMgIikucmVwbGFjZSgiSCIsICIgaG91cnMgIikucmVwbGFjZSgiTSIsIiBtaW51dGVzICIpOw0KICAgICAgICAgICAgY2wgPSBjbC5yZXBsYWNlKCIgMSBkYXlzICIsICIgMSBkYXkgIikucmVwbGFjZSgiIDEgaG91cnMgIiwgIiAxIGhvdXIgIikucmVwbGFjZSgiIDEgbWludXRlcyAiLCIgMSBtaW51dGUgIik7DQogICAgICAgICAgICByZXR1cm4gY2wuc3Vic3RyaW5nKDAsIGNsLmxlbmd0aCAtIDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gX2ZtdHRpbWVwYWQoc3RyKSB7DQogICAgICAgICAgICBzdHIgPSAnJyArIHN0cjsNCiAgICAgICAgICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgeyBzdHIgPSAnMCcgKyBzdHI7IH0NCiAgICAgICAgICAgIHJldHVybiBzdHI7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgeHhBbGFybXMgPSBudWxsOw0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxBbGFybXMoKSB7DQogICAgICAgICAgICB2YXIgeCA9IFRhYmxlU3RhcnQyKCkgKyAiPHRyPjx0ZCBjbGFzcz1yMSBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+TWFuYWdlIHdha2UgYWxhcm1zLjxicj48YnI+Ig0KICAgICAgICAgICAgYW10c3RhY2suRW51bSgiSVBTX0FsYXJtQ2xvY2tPY2N1cnJlbmNlIiwgZnVuY3Rpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgew0KICAgICAgICAgICAgICAgICAgICBRVigiZ28yMyIsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgeHhBbGFybXMgPSByZXNwb25zZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2FrZXRpbWUgPSBuZXcgRGF0ZShyZXNwb25zZVtpXVsiU3RhcnRUaW1lIl1bIkRhdGV0aW1lIl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxzID0gJzxiPicgKyByZXNwb25zZVtpXVsiRWxlbWVudE5hbWUiXSArICc8L2I+LCB3YWtlIG9uICcgKyB3YWtldGltZS50b0xvY2FsZVN0cmluZygpLnJlcGxhY2UoJywgJywgJyBhdCAnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VbaV1bIkludGVydmFsIl0gIT0gdW5kZWZpbmVkKSB7IGRldGFpbHMgKz0gJyBhbmQgZWFjaCcgKyBfZm10aW50ZXJ2YWwocmVzcG9uc2VbaV1bIkludGVydmFsIl1bIkludGVydmFsIl0pOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlW2ldWyJEZWxldGVPbkNvbXBsZXRpb24iXSA9PSB0cnVlKSB7IGRldGFpbHMgKz0gJywgZGVsZXRlIHdoZW4gZG9uZSc7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93QWxlcnREZXRhaWxzKCIgKyBpICsgIik+PGRpdiBzdHlsZT1mbG9hdDpyaWdodD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gIiAiICsgQWRkQnV0dG9uMigiRWRpdC4uLiIsICJzaG93QWRkQWxhcm0oIiArIGkgKyAiKSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4O3dpZHRoOmF1dG87ZmxvYXQ6bGVmdDtvdmVyZmxvdy14OmhpZGRlbj4iICsgZGV0YWlscyArICI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgeHhBbGFybXMgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+PGk+Tm8gd2FrZSBhbGFybXMgcmVnaXN0ZXJlZC48L2k+PC9kaXY+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSAiPGRpdj4mbmJzcDsiICsgQWRkUmVmcmVzaEJ1dHRvbigiUHVsbEFsYXJtcygpIik7DQogICAgICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHsgeSArPSBBZGRCdXR0b24oIlJlbW92ZSBhbGwgYWxhcm1zIiwgIlJlbW92ZUFsbEFsYXJtcygpIikgKyBBZGRCdXR0b24oIkFkZCIsICJzaG93QWRkQWxhcm0oKSIpOyB9DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjxicj48dGQgY2xhc3M9cjE+IiArIFRhYmxlRW5kKHkgKyAiPC9kaXY+Iik7DQogICAgICAgICAgICAgICAgICAgIFFIKCdpZF9UYWJsZUFsYXJtJywgeCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwgbnVsbCwgdHJ1ZSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBwcmVwYXJlQWxhcm1PY2N1cmVuY2VUZW1wbGF0ZShpZCwgbm0sIHN0YXJ0LCBpbnRlcnZhbCwgZGVsKSB7DQogICAgICAgICAgICByZXR1cm4gIjxkOkFsYXJtVGVtcGxhdGUgeG1sbnM6ZD1cImh0dHA6Ly9pbnRlbC5jb20vd2JlbS93c2NpbS8xL2FtdC1zY2hlbWEvMS9BTVRfQWxhcm1DbG9ja1NlcnZpY2VcIiB4bWxuczpzPVwiaHR0cDovL2ludGVsLmNvbS93YmVtL3dzY2ltLzEvaXBzLXNjaGVtYS8xL0lQU19BbGFybUNsb2NrT2NjdXJyZW5jZVwiPjxzOkluc3RhbmNlSUQ+IiArIGlkICsgIjwvczpJbnN0YW5jZUlEPjxzOlN0YXJ0VGltZT48cDpEYXRldGltZSB4bWxuczpwPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NvbW1vblwiPiIgKyBzdGFydCArICI8L3A6RGF0ZXRpbWU+PC9zOlN0YXJ0VGltZT48czpJbnRlcnZhbD48cDpJbnRlcnZhbCB4bWxuczpwPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NvbW1vblwiPiIgKyBpbnRlcnZhbCArICI8L3A6SW50ZXJ2YWw+PC9zOkludGVydmFsPjxzOkRlbGV0ZU9uQ29tcGxldGlvbj4iICsgZGVsICsgIjwvczpEZWxldGVPbkNvbXBsZXRpb24+PC9kOkFsYXJtVGVtcGxhdGU+IjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgZnVuY3Rpb24gUmVtb3ZlQWxsQWxhcm1zKCl7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDEsICJSZW1vdmUgYWxsIHdha2UgYWxhcm1zIiwgMywgUmVtb3ZlQWxsQWxhcm1zRXgsICJDb25maXJtIHJlbW92YWwgb2YgYWxsIHdha2UgYWxhcm1zPyIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gUmVtb3ZlQWxsQWxhcm1zRXgoKSB7DQogICAgICAgICAgICB2YXIgZGVsZXRlQ291bnQgPSB4eEFsYXJtcy5sZW5ndGg7DQogICAgICAgICAgICBmb3IgKHZhciBhIGluIHh4QWxhcm1zKSB7IGFtdHN0YWNrLkRlbGV0ZSgiSVBTX0FsYXJtQ2xvY2tPY2N1cnJlbmNlIiwgeHhBbGFybXNbYV0sIGZ1bmN0aW9uKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IGlmICgtLWRlbGV0ZUNvdW50ID09IDApIHsgUHVsbEFsYXJtcygpOyB9fSk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dBZGRBbGFybShhbHJtKXsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIFFFKCdkMjVhbGFybV9uYW1lJywgIWFscm0pOw0KICAgICAgICAgICAgaWYgKGFscm0gIT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgdmFyIGFsYXJtID0geHhBbGFybXNbYWxybV0sIHdha2V0aW1lID0gbmV3IERhdGUoYWxhcm1bIlN0YXJ0VGltZSJdWyJEYXRldGltZSJdKTsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9uYW1lJykudmFsdWUgPSBhbGFybVsiRWxlbWVudE5hbWUiXTsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9zZGF0ZScpLnZhbHVlID0gd2FrZXRpbWUuZ2V0RnVsbFllYXIoKSArICctJyArIF9mbXR0aW1lcGFkKHdha2V0aW1lLmdldE1vbnRoKCkgKyAxKSArICctJyArIF9mbXR0aW1lcGFkKHdha2V0aW1lLmdldERhdGUoKSk7DQogICAgICAgICAgICAgICAgUSgnZDI1YWxhcm1fc3RpbWUnKS52YWx1ZSA9IHdha2V0aW1lLmdldEhvdXJzKCkgKyAnOicgKyBfZm10dGltZXBhZCh3YWtldGltZS5nZXRNaW51dGVzKCkpICsgJzonICsgX2ZtdHRpbWVwYWQod2FrZXRpbWUuZ2V0U2Vjb25kcygpKTsNCiAgICAgICAgICAgICAgICBpZiAoYWxhcm1bIkludGVydmFsIl0pIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGogPSBhbGFybVsiSW50ZXJ2YWwiXVsiSW50ZXJ2YWwiXS5yZXBsYWNlKCdQJywnJykucmVwbGFjZSgnVCcsJycpLnJlcGxhY2UoJ0QnLCdELCcpLnJlcGxhY2UoJ0gnLCdILCcpLnJlcGxhY2UoJ00nLCdNLCcpLnNwbGl0KCcsJyksIGsgPSBbMCwgMCwgMF07DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gaikgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpsID0galtpXS5sZW5ndGggLSAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpbaV1bamxdID09ICdEJykgeyBrWzBdID0gcGFyc2VJbnQoaltpXS5zdWJzdHJpbmcoMCwgamwpKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpbaV1bamxdID09ICdIJykgeyBrWzFdID0gcGFyc2VJbnQoaltpXS5zdWJzdHJpbmcoMCwgamwpKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpbaV1bamxdID09ICdNJykgeyBrWzJdID0gcGFyc2VJbnQoaltpXS5zdWJzdHJpbmcoMCwgamwpKTsgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX2ludGVydmFsJykudmFsdWUgPSBrLmpvaW4oJy0nKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9pbnRlcnZhbCcpLnZhbHVlID0gJyc7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX2RvYycpLnZhbHVlID0gKGFsYXJtWyJEZWxldGVPbkNvbXBsZXRpb24iXSA9PSB0cnVlKT8xOjA7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICAgICAgY3VycmVudFRpbWUuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSArIDEpOw0KICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX25hbWUnKS52YWx1ZSA9ICcnOw0KICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX3NkYXRlJykudmFsdWUgPSBjdXJyZW50VGltZS5nZXRGdWxsWWVhcigpICsgJy0nICsgX2ZtdHRpbWVwYWQoY3VycmVudFRpbWUuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgX2ZtdHRpbWVwYWQoY3VycmVudFRpbWUuZ2V0RGF0ZSgpKTsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9zdGltZScpLnZhbHVlID0gY3VycmVudFRpbWUuZ2V0SG91cnMoKSArICc6JyArIF9mbXR0aW1lcGFkKGN1cnJlbnRUaW1lLmdldE1pbnV0ZXMoKSkgKyAnOjAwJzsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9pbnRlcnZhbCcpLnZhbHVlID0gJyc7DQogICAgICAgICAgICAgICAgUSgnZDI1YWxhcm1fZG9jJykudmFsdWUgPSAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgyNSwgIkFkZCBuZXcgYWxhcm0iLCAoYWxybSAhPSB1bmRlZmluZWQpPzc6Mywgc2hvd0FkZEFsYXJtT2ssICcnLCBhbHJtKTsNCiAgICAgICAgICAgIGFsZXJ0RGlhbG9nVXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBhbGVydERpYWxvZ1VwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBpbCA9IFEoJ2QyNWFsYXJtX2ludGVydmFsJykudmFsdWUuc3BsaXQoJy0nKS5sZW5ndGg7DQogICAgICAgICAgICB2YXIgb2sgPSAoUSgnZDI1YWxhcm1fbmFtZScpLnZhbHVlLmxlbmd0aCA+IDApICYmIChRKCdkMjVhbGFybV9zZGF0ZScpLnZhbHVlLnNwbGl0KCctJykubGVuZ3RoID09IDMpICYmIChRKCdkMjVhbGFybV9zdGltZScpLnZhbHVlLnNwbGl0KCc6JykubGVuZ3RoID09IDMpICYmICgoaWwgPT0gMSkgfHwgKGlsID09IDMpKTsNCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCBvayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93QWRkQWxhcm1PayhidXR0b24sIGFscm0pIHsNCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMikgeyBzaG93QWxlcnREZXRhaWxzRGVsZXRlKGJ1dHRvbiwgYWxybSk7IHJldHVybjsgfQ0KICAgICAgICAgICAgdmFyIGFsYXJtX25hbWUgPSBRKCdkMjVhbGFybV9uYW1lJykudmFsdWU7DQogICAgICAgICAgICB2YXIgeDEgPSBRKCdkMjVhbGFybV9zZGF0ZScpLnZhbHVlLnNwbGl0KCctJyk7DQogICAgICAgICAgICB2YXIgeDIgPSBRKCdkMjVhbGFybV9zdGltZScpLnZhbHVlLnNwbGl0KCc6Jyk7DQogICAgICAgICAgICB2YXIgdCA9IG5ldyBEYXRlKHgxWzBdLCB4MVsxXSAtIDEsIHgxWzJdLCB4MlswXSwgeDJbMV0sIHgyWzJdLCAwKTsgLy8gTm90IHN1cmUgd2h5LCBidXQgbW9udGggaXMgMCA9IEpBTiwgMTEgPSBERUMNCiAgICAgICAgICAgIHZhciBhbGFybV9zdGFydHRpbWUgPSBfZm10dGltZXBhZCh0LmdldFVUQ0Z1bGxZZWFyKCkpICsgJy0nICsgX2ZtdHRpbWVwYWQodC5nZXRVVENNb250aCgpICsgMSkgKyAnLScgKyBfZm10dGltZXBhZCh0LmdldFVUQ0RhdGUoKSkgKyAnVCcgKyBfZm10dGltZXBhZCh0LmdldFVUQ0hvdXJzKCkpICsgJzonICsgX2ZtdHRpbWVwYWQodC5nZXRVVENNaW51dGVzKCkpICsgJzonICsgX2ZtdHRpbWVwYWQodC5nZXRVVENTZWNvbmRzKCkpICsgJ1onOw0KICAgICAgICAgICAgdmFyIHggPSBRKCdkMjVhbGFybV9pbnRlcnZhbCcpLnZhbHVlLnNwbGl0KCctJyk7DQogICAgICAgICAgICBpZiAoeC5sZW5ndGggIT0gMykgeyB4ID0gWzAsIDAsIDBdOyB9DQogICAgICAgICAgICB2YXIgYWxhcm1faW50ZXJ2YWwgPSAnUCcgKyB4WzBdICsgJ0RUJyArIHhbMV0gKyAnSCcgKyB4WzJdICsgJ00nOw0KICAgICAgICAgICAgdmFyIGFsYXJtX2RvYyA9IChRKCdkMjVhbGFybV9kb2MnKS52YWx1ZSA9PSAxKTsNCiAgICAgICAgICAgIHZhciB0cGwgPSBwcmVwYXJlQWxhcm1PY2N1cmVuY2VUZW1wbGF0ZShhbGFybV9uYW1lLCBhbGFybV9uYW1lLCBhbGFybV9zdGFydHRpbWUsIGFsYXJtX2ludGVydmFsLCBhbGFybV9kb2MpOw0KICAgICAgICAgICAgaWYgKGFscm0gPT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgd3NzdGFjay5FeGVjTWV0aG9kWG1sKGFtdHN0YWNrLkNvbXBsZXRlTmFtZSgiQU1UX0FsYXJtQ2xvY2tTZXJ2aWNlIiksICJBZGRBbGFybSIsIHRwbCwNCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goJ0FkZCBhbGFybScsICdGYWlsZWQgdG8gYWRkIGFsYXJtLiBTdGF0dXM6ICcgKyBzdGF0dXMgKyAnLjxici8+VmVyaWZ5IHRoZSBhbGFybSBpcyBmb3IgYSBmdXR1cmUgdGltZS4nKTsgcmV0dXJuOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuQm9keVsnUmV0dXJuVmFsdWUnXSAhPSAwKSB7IG1lc3NhZ2Vib3goJ0FkZCBhbGFybScsICdGYWlsZWQgdG8gYWRkIGFsYXJtLCAnICsgcmVzcG9uc2UuQm9keVsnUmV0dXJuVmFsdWVTdHInXSArICcuPGJyLz5WZXJpZnkgdGhlIGFsYXJtIGlzIGZvciBhIGZ1dHVyZSB0aW1lLicpOyByZXR1cm47IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIFB1bGxBbGFybXMoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBhbGFybXggPSBDbG9uZSh4eEFsYXJtc1thbHJtXSk7DQogICAgICAgICAgICAgICAgYWxhcm14WyJTdGFydFRpbWUiXSA9ICI8cDpEYXRldGltZSB4bWxuczpwPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NvbW1vblwiPiIgKyBhbGFybV9zdGFydHRpbWUgKyAiPC9wOkRhdGV0aW1lPiI7DQogICAgICAgICAgICAgICAgYWxhcm14WyJJbnRlcnZhbCJdID0gIjxwOkludGVydmFsIHhtbG5zOnA9XCJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY29tbW9uXCI+IiArIGFsYXJtX2ludGVydmFsICsgIjwvcDpJbnRlcnZhbD4iOw0KICAgICAgICAgICAgICAgIGFsYXJteFsiRGVsZXRlT25Db21wbGV0aW9uIl0gPSBhbGFybV9kb2M7DQogICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJJUFNfQWxhcm1DbG9ja09jY3VycmVuY2UiLCBhbGFybXgsIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goJ0VkaXQgYWxhcm0nLCAnRmFpbGVkIHRvIGNoYW5nZSBhbGFybS4gU3RhdHVzOiAnICsgc3RhdHVzICsgJy48YnIvPlZlcmlmeSB0aGUgYWxhcm0gZm9yIGF0IGEgZnV0dXJlIHRpbWUuJyk7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgICAgICBQdWxsQWxhcm1zKCk7DQogICAgICAgICAgICAgICAgfSwgbnVsbCwgbnVsbCwgeyAiSW5zdGFuY2VJRCIgOiBhbGFybXhbIkluc3RhbmNlSUQiXX0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0FsZXJ0RGV0YWlscyhpKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgYWxhcm0gPSB4eEFsYXJtc1tpXSwgd2FrZXRpbWUgPSBuZXcgRGF0ZShhbGFybVsiU3RhcnRUaW1lIl1bIkRhdGV0aW1lIl0pOw0KICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT10ZXh0LWFsaWduOmxlZnQ+JyArIGFkZEh0bWxWYWx1ZSgiTmFtZSIsIGFsYXJtWyJFbGVtZW50TmFtZSJdKSArIGFkZEh0bWxWYWx1ZSgiV2FrZSB0aW1lIiwgd2FrZXRpbWUudG9Mb2NhbGVTdHJpbmcoKS5yZXBsYWNlKCcsICcsICcgYXQgJykpOw0KICAgICAgICAgICAgaWYgKGFsYXJtWyJJbnRlcnZhbCJdICE9IHVuZGVmaW5lZCkgeyB4ICs9IGFkZEh0bWxWYWx1ZSgiSW50ZXJuYWwiLCBfZm10aW50ZXJ2YWwoYWxhcm1bIkludGVydmFsIl1bIkludGVydmFsIl0pKTsgfQ0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkFmdGVyIHdha2UiLCAoYWxhcm1bIkRlbGV0ZU9uQ29tcGxldGlvbiJdID09IHRydWUpPyJEZWxldGUgQWxhcm0iOiJLZWVwIEFsYXJtIikgKyAiPC9kaXY+IjsNCiAgICAgICAgICAgIG1lc3NhZ2Vib3goIkFsYXJtICIgKyBhbGFybVsiRWxlbWVudE5hbWUiXSwgeCk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQWxhcm0gIiArIGFsYXJtWyJFbGVtZW50TmFtZSJdLCA1LCBzaG93QWxlcnREZXRhaWxzRGVsZXRlLCB4LCBpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dBbGVydERldGFpbHNEZWxldGUoYnV0dG9uLCB0YWcpIHsNCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMikgeyBhbXRzdGFjay5EZWxldGUoIklQU19BbGFybUNsb2NrT2NjdXJyZW5jZSIsIHh4QWxhcm1zW3RhZ10sIGZ1bmN0aW9uKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IFB1bGxBbGFybXMoKTsgfSk7IH0NCiAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIFNjcmlwdGluZw0KICAgICAgICAvLw0KDQogICAgICAgIC8vIENhbGxlZCBieSB0aGUgIlJ1biBTY3JpcHQuLi4iIGJ1dHRvbi4gRGlzcGxheSBhIGRpYWxvZyBib3ggdG8gYXNrIGZvciB0aGUgc2NyaXB0IGZpbGUuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9ydW5TY3JpcHREbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8IHNjcmlwdHN0YXRlKSByZXR1cm47DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiUnVuIFNjcmlwdCIsIDMsIHNjcmlwdF9ydW5TY3JpcHREbGdPaywgIjxicj48aW5wdXQgaWQ9c2NyaXB0b3BlbiB0eXBlPWZpbGUgc3R5bGU9d2lkdGg6MTAwJSBhY2NlcHQ9Lm1lc2NyaXB0PiIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gT25jZSB0aGUgc2NyaXB0IGZpbGUgaXMgc2VsZWN0ZWQsIGRlY29kZSB0aGUgc2NyaXB0IGhlcmUuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9ydW5TY3JpcHREbGdPayhyKSB7DQogICAgICAgICAgICBpZiAociAhPSAxKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9IFEoJ3NjcmlwdG9wZW4nKTsNCiAgICAgICAgICAgIGlmICh4LmZpbGVzLmxlbmd0aCAhPSAxKSByZXR1cm47DQogICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsNCiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBzY3JpcHRfb25TY3JpcHRSZWFkOw0KICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh4LmZpbGVzWzBdKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCBvbmNlIHRoZSBzY3JpcHQgaXMgZGVjb2RlZCwgZ2V0IHRoZSBzY3JpcHQgc2V0dXAgYW5kIHN0YXJ0IHJ1bm5pbmcgaXQuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9vblNjcmlwdFJlYWQoZmlsZSkgew0KICAgICAgICAgICAgdmFyIHg7DQogICAgICAgICAgICB0cnkgeyB4ID0gSlNPTi5wYXJzZShmaWxlLnRhcmdldC5yZXN1bHQpOyB9IGNhdGNoIChlKSB7fQ0KDQogICAgICAgICAgICBpZiAoY3VycmVudFZpZXcgPT0gMjApIHsNCiAgICAgICAgICAgICAgICAvLyBMb2FkIHNjcmlwdCBpbnRvIGVkaXRvcg0KICAgICAgICAgICAgICAgIGlmICh4WydzY3JpcHRUZXh0J10pIFEoJ3NjcmlwdGFyZWEnKS52YWx1ZSA9IHhbJ3NjcmlwdFRleHQnXTsNCiAgICAgICAgICAgICAgICBpZiAoeFsnbWVzY3JpcHQnXSkgUSgnY29tcGlsZWRhcmVhJykudmFsdWUgPSByc3RyMmhleChhdG9iKHhbJ21lc2NyaXB0J10pKTsNCiAgICAgICAgICAgICAgICBpZiAoeFsnYmxvY2tzJ10pIHsgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKHhbJ2Jsb2NrcyddKTsgc2NyaXB0Vmlld0J1dHRvbigxKTsgfSBlbHNlIHsgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKCk7IHNjcmlwdFZpZXdCdXR0b24oMCk7IH0NCiAgICAgICAgICAgICAgICBpZiAoeFsnc2NyaXB0QmxvY2tzJ10pIHsgc2NyaXB0X0Jsb2NrU2NyaXB0ID0geFsnc2NyaXB0QmxvY2tzJ107IH0gZWxzZSB7IGlmICghc2NyaXB0X0J1aWxkaW5nQmxvY2tzKSB7IHNjcmlwdF9CbG9ja1NjcmlwdCA9IFtdOyB9IH0NCg0KICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc2NyaXB0QmxvY2tzIHRvIHRoZSBsYXRlc3QgYmxvY2tzLiBUaGlzIGlzIGRvZXMgYmVjYXVzZSB3ZSBtYXkgdXBkYXRlIGFuIGV4aXN0aW5nIHNjcmlwdCB0byBuZXcgYmxvY2tzLg0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gc2NyaXB0X0Jsb2NrU2NyaXB0KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBibG9jayA9IHNjcmlwdF9CbG9ja1NjcmlwdFtpXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHhibG9jayA9IHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1tibG9ja1sneG5hbWUnXV07DQogICAgICAgICAgICAgICAgICAgIGlmICh4YmxvY2spIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gQ2xvbmUoeGJsb2NrKTsgLy8gQ2xvbmUgYSBuZXcgYmxvY2ssIHRoZW4gc2V0IGFsbCB0aGUgdmFyaWFibGVzLg0KICAgICAgICAgICAgICAgICAgICAgICAgYlsnaWQnXSA9IGJsb2NrWydpZCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgYlsneG5hbWUnXSA9IGJsb2NrWyd4bmFtZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBiLnZhcnMpIHsgaWYgKGJsb2NrLnZhcnNbal0pIHsgYi52YXJzW2pdWyd2YWx1ZSddID0gYmxvY2sudmFyc1tqXVsndmFsdWUnXTsgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRbaV0gPSBiOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHNjcmlwdCBzdGF0ZQ0KICAgICAgICAgICAgICAgIGZ1cGRhdGVzY3JpcHQoKTsNCiAgICAgICAgICAgICAgICBkZWxldGUgc2NyaXB0c3RhdGU7DQogICAgICAgICAgICAgICAgcmVzZXRTY3JpcHRCdXR0b24oKTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgc3RhcnR2YXJzID0geyAnX2ludGVyYWN0aXZlJzoxIH07DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX2NlcnRpZmljYXRlcyddID0gMTsNCg0KICAgICAgICAgICAgc3RhcnR2YXJzWydfbW9kZSddID0gJ0Zpcm13YXJlJzsNCg0KICAgICAgICAgICAgc3RhcnR2YXJzWydfbW9kZSddID0gJ01lc2hDZW50cmFsMic7DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX21vZGUnXSA9ICdMTVMnOw0KICAgICAgICAgICAgaWYgKHggJiYgeFsnbWVzY3JpcHQnXSkgc2NyaXB0c3RhdGUgPSBzY3JpcHRfc2V0dXAoYXRvYih4WydtZXNjcmlwdCddKSwgc3RhcnR2YXJzKTsNCiAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZSkgew0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLndzc3RhY2sgPSB3c3N0YWNrOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLmFtdHN0YWNrID0gYW10c3RhY2s7DQogICAgICAgICAgICAgICAgc2NyaXB0c3RhdGUub25TdGVwID0gc2NyaXB0X3VwZGF0ZVNjcmlwdFN0YXRlOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLm9uQ29uc29sZSA9IHNjcmlwdF9jb25zb2xlOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLnN0YXJ0KDEwMCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goIlJ1biBTY3JpcHQiLCAiSW52YWxpZCBzY3JpcHQgZmlsZS4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBzY3JpcHQgY2hhbmdlcyBzdGF0ZSwgZGlzcGxheXMgdGhlIGdyZWVuIHN0YXR1cyBiYXIgYXQgdGhlIHRvcCBvZiB0aGUgd2ViIHBhZ2UuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF91cGRhdGVTY3JpcHRTdGF0ZSgpIHsNCiAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZSkgew0KICAgICAgICAgICAgICAgIFFWKCdpZF9zY3JpcHRzdGF0dXMnLCBzY3JpcHRzdGF0ZS5zdGF0ZSA+IDApOyBjZW50ZXIoKTsNCiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0c3RhdGUuc3RhdGUgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICBzY3JpcHRzdGF0ZSA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgYnkgYSBydW5uaW5nIHNjcmlwdCB0byB1cGRhdGUgdGhlIGNvbnNvbGUuIFRoZSBsYXN0IG1lc3NhZ2UgaW4gdGhlIGNvbnNvbGUgaXMgZGlzcGxheWVkIGluIHRoZSB0b3AgZ3JlZW4gYmFyLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfY29uc29sZShtc2cpIHsNCiAgICAgICAgICAgIGlmIChtc2cuaW5kZXhPZigiSU5GTzogIikgPT0gMCkgeyBtc2cgPSBtc2cuc3Vic3RyaW5nKDYpOyB9DQogICAgICAgICAgICBpZiAobXNnLmluZGV4T2YoIlNVQ0NFU1M6ICIpID09IDApIHsgbXNnID0gbXNnLnN1YnN0cmluZyg5KTsgfQ0KICAgICAgICAgICAgaWYgKG1zZy5pbmRleE9mKCJFUlJPUjogIikgPT0gMCkgeyBtc2cgPSBtc2cuc3Vic3RyaW5nKDcpOyB9DQogICAgICAgICAgICBRSCgnaWRfc2NyaXB0c3RhdHVzc3RyJywgJywgJyArIG1zZyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgYnkgdGhlICJTdG9wIiBidXR0b24gb24gdGhlIHNjcmlwdCBzdGF0dXMgYmFyLiBDYXVzZXMgdGhlIHNjcmlwdCB0byBzdG9wLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfU3RvcCgpIHsNCiAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZSkgew0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZS5kaWFsb2cgPT0gdHJ1ZSkgeyBzZXREaWFsb2dNb2RlKDApOyB9DQogICAgICAgICAgICAgICAgc2NyaXB0c3RhdGUuc3RvcCgpOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLnN0YXRlID0gMDsNCiAgICAgICAgICAgICAgICBzY3JpcHRfdXBkYXRlU2NyaXB0U3RhdGUoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KICAgICAgICANCiAgICAgICAgdmFyIHNjcmlwdF9CdWlsZGluZ0Jsb2NrczsgLy8gTGlzdCBvZiBibG9jayB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgc2NyaXB0LiBUaGlzIGlzIHNob3duIG9uIHRoZSBsaXN0IHNpZGUuDQogICAgICAgIHZhciBzY3JpcHRfU3RhcnRpbmdCdWlsZGluZ0Jsb2NrczsgLy8gTGlzdCBvZiBibG9jayB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgc2NyaXB0IHdoZW4geW91IGdldCBzdGFydGVkLg0KICAgICAgICB2YXIgc2NyaXB0X0Jsb2NrU2NyaXB0ID0gW107IC8vIExpc3Qgb2YgYmxvY2tzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2NyaXB0Lg0KICAgICAgICB2YXIgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7IC8vIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYmxvY2suDQogICAgICAgIHZhciBzY3JpcHRfQnVpbGRlclZpZXcgPSAwOyAvLyAwID0gRWRpdG9yIFZpZXcsIDEgPSBCdWlsZGVyIFZpZXcNCiAgICAgICAgdmFyIGVkaXRzY3JpcHRzdGF0ZTsgLy8gVGhpcyBpcyB0aGUgaW5zdGFuY2Ugb2YgdGhlIHNjcmlwdCBydW5uZXIgdXNlZCBieSB0aGUgZWRpdG9yLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBydW5uZXIgdXNlZCBieSB0aGUgd2ViIHBhZ2UuDQoNCg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRMb2FkU3RhcnRpbmdCbG9ja3MoKSB7DQoNCiAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7DQogICAgICAgICAgICByZXF1ZXN0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA+PSAyMDAgJiYgcmVxdWVzdC5zdGF0dXMgPCA0MDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gU3VjY2Vzcw0KICAgICAgICAgICAgICAgICAgICB2YXIgeDsNCiAgICAgICAgICAgICAgICAgICAgdHJ5IHsgeCA9IEpTT04ucGFyc2UocmVxdWVzdC5yZXNwb25zZVRleHQpOyB9IGNhdGNoIChlKSB7fQ0KICAgICAgICAgICAgICAgICAgICBpZiAoKHgpICYmICh4WydibG9ja3MnXSkpIHsgc2NyaXB0X1N0YXJ0aW5nQnVpbGRpbmdCbG9ja3MgPSB4WydibG9ja3MnXTsgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKHNjcmlwdF9TdGFydGluZ0J1aWxkaW5nQmxvY2tzKTsgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH07DQogICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBnZXQgc2NyaXB0IGJsb2NrcycpOyB9Ow0KICAgICAgICAgICAgcmVxdWVzdC5vcGVuKCdHRVQnLCAnc2NyaXB0YmxvY2tzLnR4dCcsIHRydWUpOw0KICAgICAgICAgICAgcmVxdWVzdC5zZW5kKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgYnkgdGhlICJWaWV3IEVkaXRvciIgb3IgIlZpZXcgQnVpbGRlciIgYnV0dG9uIHRvIHRvZ2dsZSBiZXR3ZWVuIHRoZSB2aWV3IG1vZGVzLg0KICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBjb25zdHJ1Y3Rpb24gYmxvY2tzLCBkaXNwbGF5IHRoZSBzY3JpcHQgZWRpdG9yIG9ubHkuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdFZpZXdCdXR0b24oeCkgew0KICAgICAgICAgICAgc2NyaXB0X0J1aWxkZXJWaWV3ID0geDsNCiAgICAgICAgICAgIFFWKCdzY3JpcHRlZGl0b3InLCB4ID09IDApOw0KICAgICAgICAgICAgUVYoJ3NjcmlwdGJ1aWxkZXInLCB4ID09IDEpOw0KICAgICAgICAgICAgUVYoJ3ZpZXdFZGl0b3JCdXR0b24nLCBzY3JpcHRfQnVpbGRpbmdCbG9ja3MgJiYgKHggPT0gMSkpOw0KICAgICAgICAgICAgUVYoJ3ZpZXdCdWlsZGVyQnV0dG9uJywgc2NyaXB0X0J1aWxkaW5nQmxvY2tzICYmICh4ID09IDApKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIERpc3BsYXkgdGhlIGxpc3Qgb2YgY29uc3RydWN0aW9uIHNjcmlwdCBibG9jayBvbiB0aGUgbGVmdCBzaWRlLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfc2V0QnVpbGRCbG9ja3MoYmxvY2tzKSB7DQogICAgICAgICAgICBzY3JpcHRfQnVpbGRpbmdCbG9ja3MgPSBibG9ja3M7DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KICAgICAgICAgICAgaWYgKGJsb2Nrcykgew0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYmxvY2tzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpLmNoYXJDb2RlQXQoMCkgIT0gOTUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gJzxkaXYgaWQ9c2Jsb2NrXycgKyBpICsgJyBzdHlsZT1jdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7d2lkdGg6YXV0bztwYWRkaW5nOjVweDttYXJnaW46MnB4IG9uZGJsY2xpY2s9c2NyaXB0X2ZhZGRibG9jaygiJyArIGkgKyAnIikgZHJhZ2dhYmxlPXRydWUgb25kcmFnc3RhcnQ9c2NyaXB0X2ZvbmRyYWdzdGFydChldmVudCx0aGlzKSBvbmRyYWdlbmQ9c2NyaXB0X2ZvbmRyYWdlbmQoZXZlbnQsdGhpcykgdGl0bGU9IicgKyBibG9ja3NbaV1bJ2Rlc2MnXSArICciJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gJz4nICsgYmxvY2tzW2ldWyduYW1lJ10gKyAnPC9kaXY+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFFIKCdibG9ja3MnLCB4KTsNCiAgICAgICAgICAgIHNjcmlwdF9mb25maWx0ZXJjaGFuZ2VkKCk7DQogICAgICAgICAgICBzY3JpcHRWaWV3QnV0dG9uKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrcz8xOjApOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQWRkIGEgbmV3IGJsb2NrIHRvIHRoZSBlbmQgb2YgdGhlIGJsb2NrIHNjcmlwdC4gVGhpcyBpcyBjYWxsZWQgd2hlbiB5b3UgcmlnaHQgY2xpY2sgb24gYSBibG9jayBhbmQgaGl0ICJBZGQiIGluIHRoZSBjb250ZXh0IG1lbnUuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mYWRkYmxvY2soaCkgew0KICAgICAgICAgICAgdmFyIGIgPSBDbG9uZShzY3JpcHRfQnVpbGRpbmdCbG9ja3NbaF0pOyAvLyBUbyBhZGQgYSBuZXcgYmxvY2sgdG8gdGhlIHNjcmlwdCwgY2xvbmUgdGhlIGJsb2NrLCBhc3NpZ24gaXQgYSByYW5kb20gaWQgYW5kIHNldCB0aGUgeG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIGJsb2NrLg0KICAgICAgICAgICAgYlsnaWQnXSA9IE1hdGgucmFuZG9tKCk7DQogICAgICAgICAgICBiWyd4bmFtZSddID0gaDsNCiAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdC5wdXNoKGIpOyAvLyBOb3cgdGhhdCBhIGJsb2NrIGlzIGNyZWF0ZWQsIGFkZCBpdCBhdCB0aGUgZW5kIG9mIHRoZSBzY3JpcHQgYW5kIHNldCBpdCBhcyB0aGUgc2VsZWN0ZWQgYmxvY2suDQogICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gc2NyaXB0X0Jsb2NrU2NyaXB0Lmxlbmd0aCAtIDE7DQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7IC8vIFJlLWRpc3BsYXkgdGhlIGxpc3Qgb2Ygc2NyaXB0IGJsb2Nrcy4gVGhlIHNlbGVjdGVkIGJsb2NrIHdpbGwgYWxzbyBiZSBoaWdobGlnaHRlZC4NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEVkaXQgYSBzY3JpcHQgYmxvY2sNCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZlZGl0YmxvY2soaCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ0VkaXQgJyArIHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1toXVsnbmFtZSddLCAzLCBzY3JpcHRfZmVkaXRibG9ja0V4LCAnRWRpdCB0aGlzIGJsb2NrPyBUaGlzIG9wZXJhdGlvbiB3aWxsIHJlc2V0IHRoZSBibG9jayBlZGl0b3IgYW5kIGxvYWQgdGhlIGJsb2NrIGNvZGUgaW50byB0aGUgY29kZSBlZGl0b3IuJywgaCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGJsb2NrIGVkaXQgZGlhbG9nIGlzIGNsb3NlZC4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZlZGl0YmxvY2tFeChidXR0b24sIGgpIHsNCiAgICAgICAgICAgIHNjcmlwdF9uZXdTY3JpcHREbGdPaygpOw0KICAgICAgICAgICAgc2NyaXB0Vmlld0J1dHRvbigwKTsNCiAgICAgICAgICAgIHZhciB4ID0gJycsIGIgPSBzY3JpcHRfQnVpbGRpbmdCbG9ja3NbaF07DQogICAgICAgICAgICB4ICs9ICcjIyFCTE9DSyEjI1xyXG4jaWQ9JyArIGggKyAnXHJcbiNuYW1lPScgKyBiWyduYW1lJ10gKyAnXHJcbiNkZXNjPScgKyBiWydkZXNjJ10gKyAnXHJcbiMjIUJMT0NLISMjXHJcbic7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGJbJ3ZhcnMnXSkgew0KICAgICAgICAgICAgICAgIHZhciB2ID0gYlsndmFycyddW2ldOw0KICAgICAgICAgICAgICAgIHggKz0gJyMjIVZBUiEjI1xyXG4jaWQ9JyArIGkgKyAnXHJcbiNuYW1lPScgKyB2WyduYW1lJ10gKyAnXHJcbiNkZXNjPScgKyB2WydkZXNjJ10gKyAnXHJcbiN0eXBlPScgKyB2Wyd0eXBlJ10gKyAnXHJcbic7DQogICAgICAgICAgICAgICAgaWYgKHZbJ21heGxlbmd0aCddKSB7IHggKz0gJyNtYXhsZW5ndGg9JyArIHZbJ21heGxlbmd0aCddICsgJ1xyXG4nOyB9DQogICAgICAgICAgICAgICAgaWYgKHZbJ3ZhbHVlcyddKSB7IGZvciAodmFyIGogaW4gdlsndmFsdWVzJ10pIHsgeCArPSAnI3ZhbHVlcy0nICsgaiArJz0nICsgdlsndmFsdWVzJ11bal0gKyAnXHJcbic7IH0gfQ0KICAgICAgICAgICAgICAgIHggKz0gJyN2YWx1ZT0nICsgdlsndmFsdWUnXSArICdcclxuIyNTV0FQICUlJScgKyBpICsgJyUlJSAnICsgdlsndmFsdWUnXSArICdcclxuJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gJyMjIVZBUiEjI1xyXG4jI1NXQVAgJSUlfiUlJSAwXHJcblxyXG4jIyFCTE9DSyEjI1xyXG4nICsgYlsnY29kZSddICsgJ1xyXG4jIyFCTE9DSyEjI1xyXG4nOw0KICAgICAgICAgICAgUSgnc2NyaXB0YXJlYScpLnZhbHVlID0geDsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mQ29udmVydFNjcmlwdFRvSnNvbkJsb2NrKHNjcmlwdCkgew0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHt9LCBzY3JpcHRwYXJ0cyA9IHNjcmlwdC5zcGxpdCgnIyMhQkxPQ0shIyNcbicpLCBzY3JpcHRsaW5lcyA9IHNjcmlwdHBhcnRzWzFdLnNwbGl0KCdcbicpOw0KDQogICAgICAgICAgICAvLyBQYXJzZSBpbmZvcm1hdGlvbiBwYXJ0DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdGxpbmVzKSB7DQogICAgICAgICAgICAgICAgdmFyIHMgPSBzY3JpcHRsaW5lc1tpXS5zcGxpdCgnPScpOw0KICAgICAgICAgICAgICAgIGlmIChzLmxlbmd0aCA9PSAyKSB7IHJlc3VsdFtzWzBdLnN1YnN0cmluZygxKV0gPSBzWzFdOyB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFBhcnNlIHZhcmlhYmxlcyBwYXJ0DQogICAgICAgICAgICByZXN1bHRbJ3ZhcnMnXSA9IHt9Ow0KICAgICAgICAgICAgc2NyaXB0dmFyaWFibGVzID0gc2NyaXB0cGFydHNbMl0uc3BsaXQoJyMjIVZBUiEjI1xuJyk7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdHZhcmlhYmxlcykgew0KICAgICAgICAgICAgICAgIHNjcmlwdGxpbmVzID0gc2NyaXB0dmFyaWFibGVzW2ldLnNwbGl0KCdcbicpOw0KICAgICAgICAgICAgICAgIHZhciB2ID0ge30sIHZhbHVlcyA9IHt9LCB2YWx1ZXNsZW4gPSAwOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gc2NyaXB0bGluZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBzY3JpcHRsaW5lc1tqXS5zcGxpdCgnPScpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoKHMubGVuZ3RoID09IDIpICYmIChzWzFdKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzWzBdKSAmJiAoc1swXS5sZW5ndGggPiAwKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzWzBdLnN1YnN0cmluZygwLCA4KSA9PSAnI3ZhbHVlcy0nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tzWzBdLnN1YnN0cmluZyg4KV0gPSBzWzFdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNsZW4rKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2W3NbMF0uc3Vic3RyaW5nKDEpXSA9IHNbMV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICh2LmlkKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNsZW4gPiAwKSB7IHZbJ3ZhbHVlcyddID0gdmFsdWVzOyB9DQogICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IHYuaWQ7DQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2LmlkOw0KICAgICAgICAgICAgICAgICAgICByZXN1bHRbJ3ZhcnMnXVtpZF0gPSB2Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gUGFyc2UgY29kZSBwYXJ0DQogICAgICAgICAgICByZXN1bHRbJ2NvZGUnXSA9IHNjcmlwdHBhcnRzWzNdOw0KDQogICAgICAgICAgICAvLyBQYWNrYWdlIHRoZSByZXN1bHQNCiAgICAgICAgICAgIHZhciBpZCA9IHJlc3VsdC5pZDsNCiAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQuaWQ7DQogICAgICAgICAgICB2YXIgciA9IHt9Ow0KICAgICAgICAgICAgcltpZF0gPSByZXN1bHQ7DQogICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkociwgbnVsbCwgJyAgJyk7DQogICAgICAgIH0NCg0KICAgICAgICAvKg0KICAgICAgICAvLyBJZiB0aGUgZGVsZXRlIGtleSBpcyBwcmVzc2VkLCBkZWxldGUgdGhlIGJsb2NrDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25rZXlwcmVzcyhlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBpZiAoZS5rZXkgPT0gJ0RlbGV0ZScgJiYgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgLy9kZWxldGUgc2NyaXB0X0Jsb2NrU2NyaXB0W3NjcmlwdF9CbG9ja1NjcmlwdFNlbGVjdGVkSWRdOw0KICAgICAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdC5zcGxpY2Uoc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCwgMSk7DQogICAgICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7DQogICAgICAgICAgICAgICAgZnVwZGF0ZXNjcmlwdCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICovDQoNCiAgICAgICAgLy8gRmlsZXIgdGhlIGxpc3Qgb2YgYmxvY2tzIG9uIHRoZSBsZWZ0IHNpZGUgbGlzdC4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmZpbHRlcmNoYW5nZWQoKSB7DQogICAgICAgICAgICB2YXIgZmlsdGVyID0gUSgnYmxvY2tmaWx0ZXInKS52YWx1ZS50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBzY3JpcHRfQnVpbGRpbmdCbG9ja3MpIHsNCiAgICAgICAgICAgICAgICAvLyBTY3JpcHQgYmxvY2tzIHRoYXQgc3RhcnQgd2l0aCAiXyIgYXJlIGhpZGRlbiBibG9ja3MgYW5kIHNob3VsZCBuZXZlciBiZSBzaG93bi4NCiAgICAgICAgICAgICAgICBpZiAoaS5jaGFyQ29kZUF0KDApICE9IDk1KSB7IFFWKCdzYmxvY2tfJyArIGksIChzY3JpcHRfQnVpbGRpbmdCbG9ja3NbaV1bJ25hbWUnXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyKSA+PSAwIHx8IHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1tpXVsnZGVzYyddLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID49IDApKTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ2FsbGVkIHdoZW4geW91IGNsaWNrIG9uIGEgYmxvY2suIElmIHlvdSBkb3VibGUgY2xpY2ssIG9uIGEgYmxvY2ssIGRvIGxpa2UgcHJlc3Npbmcgb24gdGhlICJFZGl0Li4uIiBidXR0b24uDQogICAgICAgIHZhciBzY3JpcHRfZm9uY2xpY2tEYmxDbGlja0RldGVjdEluZGV4ID0gbnVsbDsNCiAgICAgICAgdmFyIHNjcmlwdF9mb25jbGlja0RibENsaWNrRGV0ZWN0VGltZSA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25jbGljayhlLCB0KSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gbnVsbDsNCiAgICAgICAgICAgIGlmICh0KSB7IHQgPSBmZ2V0UGFyZW50V2l0aElkKHQpOyBpZiAodC5pZC5zdGFydHNXaXRoKCd4YmxvY2tfJykpIHsgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IHQuaWQuc3Vic3RyaW5nKDcpOyB9IH0gLy8gRmlndXJlIG91dCB3aGF0IGJsb2NrIHdhcyBjbGlja2VkIG9uDQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7IC8vIFRoaXMgd2lsbCBzaG93IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYmxvY2sgaW4gYSBkaWZmZXJlbnQgY29sb3IuDQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQoNCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIGRvdWJsZSBjbGljay4gV2UgbmVlZCB0d28gY2xpY2tzIG9uIHRoZSBzYW1lIG9iamVjdCB3aXRoaW4gMjUwbXMuDQogICAgICAgICAgICBpZiAoc2NyaXB0X2ZvbmNsaWNrRGJsQ2xpY2tEZXRlY3RJbmRleCA9PSBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkICYmIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHNjcmlwdF9mb25jbGlja0RibENsaWNrRGV0ZWN0VGltZSkgPCAyNTApIHsgcmV0dXJuIHNjcmlwdF9mb25lZGl0Y2xpY2soc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCk7IH0NCiAgICAgICAgICAgIHNjcmlwdF9mb25jbGlja0RibENsaWNrRGV0ZWN0SW5kZXggPSBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkOw0KICAgICAgICAgICAgc2NyaXB0X2ZvbmNsaWNrRGJsQ2xpY2tEZXRlY3RUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBTY3JpcHQgYmxvY2sgZHJhZyAmIGRyb3AgZnVuY3Rpb25zLCBhbGxvdyB0aGUgdXNlciB0byBjcmVhdGUgYW5kIG1vdmUgc2NyaXB0IGJsb2Nrcy4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmRyYWdzdGFydChlLCB0KSB7IGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsgdCA9IGZnZXRQYXJlbnRXaXRoSWQodCk7IHQuc3R5bGUub3BhY2l0eSA9ICcwLjQnOyBlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnOyBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCdzY3JpcHRidWlsZGVyL2Jsb2NrJywgdC5pZCk7IH0NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmRyYWdlbmQoZSwgdCkgICB7IGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsgdCA9IGZnZXRQYXJlbnRXaXRoSWQodCk7IHQuc3R5bGUub3BhY2l0eSA9ICcxLjAnOyB9DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25kcmFnZW50ZXIoZSwgdCkgeyBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47IGZnZXRQYXJlbnRXaXRoSWQodCkuc3R5bGVbJ2JvcmRlci10b3AnXSA9ICdzb2xpZCAycHggYmxhY2snOyB9DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25kcmFnbGVhdmUoZSwgdCkgeyBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47IGUgPSBlLm9yaWdpbmFsRXZlbnQgfHwgZTsgdmFyIGN1cnJlbnRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChlLnBhZ2VYLCBlLnBhZ2VZKTsgaWYgKCF0LmNvbnRhaW5zKGN1cnJlbnRFbGVtZW50KSkgeyBmZ2V0UGFyZW50V2l0aElkKHQpLnN0eWxlWydib3JkZXItdG9wJ10gPSAnbm9uZSc7IH0gfQ0KDQogICAgICAgIC8vIENhbGxlZCB3aGVuIHlvdSBkcm9wIGEgYmxvY2sgb24gdGhlIGJsb2NrIHNjcmlwdCBhcmVhLiBUaGlzIGNvZGUgd2lsbCBhZGQgb3IgbW92ZSBhIGJsb2NrIGludG8gaXQncyBuZXcgcGxhY2UuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25kcm9wKGUsIHQpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHQgPSBmZ2V0UGFyZW50V2l0aElkKHQpOw0KICAgICAgICAgICAgdmFyIGIsIHggPSBlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCdzY3JpcHRidWlsZGVyL2Jsb2NrJyksIGRwID0gcGFyc2VJbnQodC5pZC5zdWJzdHJpbmcoNykpOw0KICAgICAgICAgICAgaWYgKHggPT0gJycpIHsgZG9jdW1lbnRGaWxlU2VsZWN0SGFuZGxlcihlKTsgcmV0dXJuOyB9DQogICAgICAgICAgICBpZiAoeC5zdGFydHNXaXRoKCJzYmxvY2tfIikpIHsNCiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgc2NyaXB0IGJsb2NrDQogICAgICAgICAgICAgICAgYiA9IENsb25lKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1t4LnN1YnN0cmluZyg3KV0pOw0KICAgICAgICAgICAgICAgIGJbJ2lkJ10gPSBNYXRoLnJhbmRvbSgpOw0KICAgICAgICAgICAgICAgIGJbJ3huYW1lJ10gPSB4LnN1YnN0cmluZyg3KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gUHVsbCBhbiBleGlzdGluZyBzY3JpcHQgYmxvY2sgZnJvbSB0aGUgbGlzdA0KICAgICAgICAgICAgICAgIHZhciBpID0gcGFyc2VJbnQoeC5zdWJzdHJpbmcoNykpOw0KICAgICAgICAgICAgICAgIGIgPSBzY3JpcHRfQmxvY2tTY3JpcHRbaV07DQogICAgICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0LnNwbGljZShpLCAxKTsNCiAgICAgICAgICAgICAgICBpZiAoZHAgPiBpKSBkcC0tOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHQuaWQgPT0gJ3NjcmlwdGJsb2NrcycpIHsNCiAgICAgICAgICAgICAgICAvLyBQdXQgdGhlIGJsb2NrIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QNCiAgICAgICAgICAgICAgICBpZiAoYikgc2NyaXB0X0Jsb2NrU2NyaXB0LnB1c2goYik7DQogICAgICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IHNjcmlwdF9CbG9ja1NjcmlwdC5sZW5ndGggLSAxOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIGJsb2NrIHdpdGhpbiB0aGUgbGlzdCwgYWJvdmUgdGhlIGRyb3AgcG9pbnQNCiAgICAgICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHQuc3BsaWNlKGRwLCAwLCBiKTsNCiAgICAgICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gZHA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiB5b3UgaGl0ICJFZGl0Li4uIiBvbiBhIGJsb2NrLCBkaXNwbGF5cyBhIGRpYWxvZyBib3ggd2l0aCBhbGwgYmxvY2sgYXR0cmlidXRlcy4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmVkaXRjbGljayhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgYmxvY2sgPSBzY3JpcHRfQmxvY2tTY3JpcHRbaF07DQogICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gaDsNCiAgICAgICAgICAgIGZ1cGRhdGVzY3JpcHQoKTsNCg0KICAgICAgICAgICAgaWYgKGJsb2NrICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICB2YXIgYiA9IGJsb2NrWyd2YXJzJ10gPyA3IDogNTsNCiAgICAgICAgICAgICAgICB2YXIgYyA9IGJsb2NrWydkZXNjJ10gKyAiPGJyPjxicj4iOw0KICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIHZhcmlhYmxlIGluIGEgYmxvY2ssIGFkZCB0aGUgcHJvcGVyIGlucHV0IGNvbnRyb2wgZm9yIHRoaXMgdmFyaWFibGUgYW5kIHNldCB0aGUgY29udHJvbCB0byB0aGUgY3VycmVudCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBibG9ja1sndmFycyddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlcyA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmxvY2sgdmFsdWVzIGNhbiBiZSBvbiB0eXBlIDE6VGV4dCwyOk51bWJlciwzOkRyb3BEb3duTGlzdCw0OnBhc3N3b3JkLDU6TXVsdGlTZWxlY3QNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWydtYXhsZW5ndGgnXSkgYXR0cmlidXRlcyArPSAoIiBtYXhsZW5ndGg9IiArIGJsb2NrWyd2YXJzJ11baV1bJ21heGxlbmd0aCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gMikgeyBhdHRyaWJ1dGVzICs9ICIgb25rZXlwcmVzcz0ncmV0dXJuIG51bWJlcnNPbmx5KGV2ZW50KSciIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gMSB8fCBibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gMikgeyBkID0gIjxpbnB1dCB0aXRsZT0nIiArIGJsb2NrWyd2YXJzJ11baV1bJ2Rlc2MnXSArICInIGlkPXNjcmlwdFh2YWx1ZV8iICsgaSArICIgdmFsdWU9JyIgKyBibG9ja1sndmFycyddW2ldWyd2YWx1ZSddICsgIicgIiArIGF0dHJpYnV0ZXMgKyAiIHN0eWxlPXdpZHRoOjEwMCU+PC9pbnB1dD4iOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tbJ3ZhcnMnXVtpXVsndHlwZSddID09IDMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gIjxzZWxlY3QgdGl0bGU9JyIgKyBibG9ja1sndmFycyddW2ldWydkZXNjJ10gKyAiJyBpZD1zY3JpcHRYdmFsdWVfIiArIGkgKyAiIHN0eWxlPXdpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbjowPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBibG9ja1sndmFycyddW2ldWyd2YWx1ZXMnXSkgeyBkICs9ICI8b3B0aW9uIHZhbHVlPSIgKyBqICsgKGogPT0gYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWUnXSA/ICIgc2VsZWN0ZWQiIDogIiIpICsgIj4iICsgYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWVzJ11bal0gKyAiPC9vcHRpb24+IjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgKz0gIjwvc2VsZWN0PiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tbJ3ZhcnMnXVtpXVsndHlwZSddID09IDQpIHsgZCA9ICI8aW5wdXQgdHlwZT1wYXNzd29yZCBhdXRvY29tcGxldGU9b2ZmIHRpdGxlPSciICsgYmxvY2tbJ3ZhcnMnXVtpXVsnZGVzYyddICsgIicgaWQ9c2NyaXB0WHZhbHVlXyIgKyBpICsgIiB2YWx1ZT0nIiArIGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlJ10gKyAiJyAiICsgYXR0cmlidXRlcyArICIgc3R5bGU9d2lkdGg6MTAwJT48L2lucHV0PiI7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNSkgeyBkID0gJyc7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNikgeyBkID0gIjxpbnB1dCB0eXBlPWZpbGUgdGl0bGU9JyIgKyBibG9ja1sndmFycyddW2ldWydkZXNjJ10gKyAiJyBpZD1zY3JpcHRYdmFsdWVfIiArIGkgKyAiICIgKyBhdHRyaWJ1dGVzICsgIiBzdHlsZT13aWR0aDoxMDAlPjwvaW5wdXQ+IjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYyArPSAnPHRhYmxlIHN0eWxlPXdpZHRoOjEwMCUgdGl0bGU9IicgKyBibG9ja1sndmFycyddW2ldWydkZXNjJ10gKyAnIj48dGQgc3R5bGU9d2lkdGg6MTIwcHg+JyArIGJsb2NrWyd2YXJzJ11baV1bJ25hbWUnXSArICc8dGQ+PGI+JyArIGQgKyAnPC9iPjwvdGFibGU+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyArPSAnPHVsIGlkPXNjcmlwdFh2YWx1ZV8nICsgaSArICcgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTpub25lO2hlaWdodDoxMDBweDtvdmVyZmxvdzphdXRvO3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JhY2tncm91bmQtY29sb3I6d2hpdGU7b3ZlcmZsb3cteDpoaWRkZW47bWFyZ2luOjA7cGFkZGluZzowIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgaW4gYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWVzJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhjID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd2YWx1ZSddLmluZGV4T2YoeSkgPj0gMCkgeGMgPSAnIGNoZWNrZWQnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjICs9ICc8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGlkPXNjcmlwdFh2YWx1ZXhfJyArIGkgKyAnLScgKyB5ICsgJycgKyB4YyArICc+JyArIGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlcyddW3ldICsgJzwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjICs9ICc8L3VsPic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFBhcmFtZXRlcnM6IERpYWxvZyBNb2RlICgwID0gbm9uZSksIERpYWxvZyBUaXRsZSwgQnV0dG9ucyAoMSA9IE9LLCAyID0gQ2FuY2VsLCAzID0gT0sgJiBDYW5jZWwpLCBDYWxsIGJhY2sgZnVuY3Rpb24oMCA9IENhbmNlbCwgMSA9IE9LKSwgRGlhbG9nIENvbnRlbnQgKE1vZGUgMTEgb25seSkNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsIGJsb2NrLm5hbWUsIGIsIHNjcmlwdF9mb25lZGl0Y2xpY2tFeCwgYywgaCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGJsb2NrIGVkaXQgZGlhbG9nIGlzIGNsb3NlZC4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmVkaXRjbGlja0V4KGJ1dHRvbiwgdGFnKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBpZiAoYnV0dG9uID09IDIpIHsNCiAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhpcyBibG9jaw0KICAgICAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdC5zcGxpY2UodGFnLCAxKTsNCiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9PSB0YWcpIHsgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7IH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gQ2hhbmdlIHRoaXMgYmxvY2sgd2l0aCBuZXcgYXJndW1lbnRzDQogICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gc2NyaXB0X0Jsb2NrU2NyaXB0W3RhZ107DQogICAgICAgICAgICAgICAgaWYgKGJsb2NrWyd2YXJzJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBibG9ja1sndmFycyddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tbJ3ZhcnMnXVtpXVsndHlwZSddID09IDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1sndmFycyddW2ldWyd2YWx1ZSddID0gW107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSBpbiBibG9ja1sndmFycyddW2ldWyd2YWx1ZXMnXSkgeyBpZiAoUSgnc2NyaXB0WHZhbHVleF8nICsgaSArICctJyArIHkpLmNoZWNrZWQpIGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlJ10ucHVzaCh5KTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gUSgnc2NyaXB0WHZhbHVlXycgKyBpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5maWxlcy5sZW5ndGggPT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGZpbGUpIHsgYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWUnXSA9IGJ0b2EoZmlsZS50YXJnZXQucmVzdWx0KTsgZnVwZGF0ZXNjcmlwdCgpOyB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHguZmlsZXNbMF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWUnXSA9IFEoJ3NjcmlwdFh2YWx1ZV8nICsgaSkudmFsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBTdGFydGluZyB3aXRoIGEgY2hpbGQgZWxlbWVudCwgZ28gdXAgb25lIHBhcmVudCBhdCBhIHRpbWUgdW50aWwgd2UgZmluZCBhbiBlbGVtZW50IHdpdGggYW4gSUQuDQogICAgICAgIGZ1bmN0aW9uIGZnZXRQYXJlbnRXaXRoSWQoeCkgeyB3aGlsZSAoIXguaWQpIHsgeCA9IHgucGFyZW50RWxlbWVudDsgfSByZXR1cm4geDsgfQ0KDQogICAgICAgIC8vIERpc3BsYXlzIHRoZSBsaXN0IG9mIHNjcmlwdCBibG9ja3MgdG8gdGhlIEhUTUwgcGFnZS4gRWFjaCBibG9jayBpcyBkaXNwbGF5ZWQgd2l0aCBpdCdzIG5hbWUsIGF0dHJpYnV0ZXMgYW5kIGFuIGVkaXQgYnV0dG9uLg0KICAgICAgICBmdW5jdGlvbiBmdXBkYXRlc2NyaXB0KCkgew0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gc2NyaXB0X0Jsb2NrU2NyaXB0KSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGRpdiBpZD14YmxvY2tfJyArIGkgKyAnIHN0eWxlPWN1cnNvcjpwb2ludGVyO21pbi1oZWlnaHQ6MjRweDtiYWNrZ3JvdW5kLWNvbG9yOiMnICsgKChzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID09IGkpID8gJ2FhYScgOiAnY2NjJykgKyAnO3dpZHRoOmF1dG87cGFkZGluZzo1cHg7bWFyZ2luOjJweCBkcmFnZ2FibGU9dHJ1ZSBvbmNsaWNrPXNjcmlwdF9mb25jbGljayhldmVudCx0aGlzKSBvbmRyYWdlbnRlcj1zY3JpcHRfZm9uZHJhZ2VudGVyKGV2ZW50LHRoaXMpIG9uZHJhZ2xlYXZlPXNjcmlwdF9mb25kcmFnbGVhdmUoZXZlbnQsdGhpcykgb25kcmFnc3RhcnQ9c2NyaXB0X2ZvbmRyYWdzdGFydChldmVudCx0aGlzKSBvbmRyYWdlbmQ9c2NyaXB0X2ZvbmRyYWdlbmQoZXZlbnQsdGhpcykgb25kcm9wPXNjcmlwdF9mb25kcm9wKGV2ZW50LHRoaXMpIHRpdGxlPSInICsgc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWydkZXNjJ10gKyAnIic7DQogICAgICAgICAgICAgICAgeCArPSAnPjxpbnB1dCBzdHlsZT1mbG9hdDpyaWdodCB0eXBlPWJ1dHRvbiB2YWx1ZT1FZGl0Li4uIG9uY2xpY2s9c2NyaXB0X2ZvbmVkaXRjbGljaygnICsgaSArICcpPjxkaXYgc3R5bGU9Zm9udC1zaXplOjE2cHg+PGI+JyArIHNjcmlwdF9CbG9ja1NjcmlwdFtpXS5uYW1lICsgJzwvYj4nOw0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgciA9IDA7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjx0YWJsZSBjbGFzcz0nc2NyaXB0QmxvY2tWYXIgdXMnIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6NXB4O21hcmdpbi10b3A6OHB4PiI7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3R5cGUnXSA9PSA0ICYmIHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd2YWx1ZSddLmxlbmd0aCA+IDApIHYgPSAiKioqKioiOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd0eXBlJ10gPT0gMykgdiA9IHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd2YWx1ZXMnXVtzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXVtqXVsndmFsdWUnXV07DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3R5cGUnXSA9PSA2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd2YWx1ZSddKSB7IHYgPSAiQmluYXJ5IGZpbGUsICIgKyBzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXVtqXVsndmFsdWUnXS5sZW5ndGggKyAiIGJ5dGVzIjsgfSBlbHNlIHsgdiA9ICJOb3Qgc2V0IjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgeCArPSAiPHRyIHRpdGxlPSciICsgc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ2Rlc2MnXSArICInPjx0ZCB3aWR0aD0yMDBweCBzdHlsZT0nIiArIChyID4gMCA/ICJib3JkZXItdG9wOjFweCBzb2xpZCAjYTgxMGE4IiA6ICIiKSArICInPjxwPiIgKyBzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXVtqXVsnbmFtZSddICsgIjx0ZCBzdHlsZT0nIiArIChyID4gMCA/ICJib3JkZXItdG9wOjFweCBzb2xpZCAjYTgxMGE4IiA6ICIiKSArICInPiIgKyB2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgcisrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjx0cj48dGQgc3R5bGU9aGVpZ2h0OjNweD48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHggKz0gJzwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoeCA9PSAnJykgeyB4ID0gJzxkaXYgc3R5bGU9InBhZGRpbmc6MTVweDtjb2xvcjpncmF5Ij5TdGFydCB5b3VyIHNjcmlwdCBieSBkcmFnICYgZHJvcHBpbmcgYmxvY2tzIGZyb20gdGhlIGxlZnQgc2lkZSBpbnRvIHRoaXMgc2NyaXB0aW5nIGJveC48ZGl2Pic7IH0NCiAgICAgICAgICAgIFFIKCdzY3JpcHRibG9ja3MnLCB4ICsgIjxkaXYgc3R5bGU9aGVpZ2h0OjgwcHg+PC9kaXY+Iik7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdF9CbG9ja1NjcmlwdCkgeyBRUygneGJsb2NrXycgKyBpKS5ib3JkZXJMZWZ0ID0gKHNjcmlwdF9DdXJyZW50SGlnaGxpZ2h0QmxvY2sgPT0gaSkgPyAiM3B4IHNvbGlkIGJsYWNrIiA6ICIiOyB9DQogICAgICAgICAgICBzY3JpcHRfYmxvY2tzVG9TY3JpcHQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENvbnZlcnQgdGhlIGxpc3Qgb2YgYmxvY2tzIGludG8gYSBzY3JpcHQgdGhhdCBjYW4gYmUgY29tcGlsZWQNCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2Jsb2Nrc1RvU2NyaXB0KCkgew0KICAgICAgICAgICAgdmFyIHNjcmlwdCA9ICcnOw0KICAgICAgICAgICAgaWYgKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrcykgew0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfQnVpbGRpbmdCbG9ja3NbJ19zdGFydCddKSB7IHNjcmlwdCArPSAnIyMjIyMgU3RhcnRpbmcgQmxvY2sgIyMjIyNcclxuJyArIHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1snX3N0YXJ0J11bJ2NvZGUnXSArICdcclxuXHJcbic7IH0NCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdF9CbG9ja1NjcmlwdCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgY29kZSA9IHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsnY29kZSddOw0KICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZS5zcGxpdCgiJSUlfiUlJSIpLmpvaW4oaSk7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ10pIHsgY29kZSA9IGNvZGUuc3BsaXQoIiUlJSIgKyBqICsgIiUlJSIpLmpvaW4oc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3ZhbHVlJ10pOyB9DQogICAgICAgICAgICAgICAgICAgIHNjcmlwdCArPSAnIyMjIyMgQmxvY2s6ICcgKyBzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ25hbWUnXSArICcgIyMjIyNcclxuSGlnaGxpZ2h0QmxvY2sgX190ICcgKyBpICsgJ1xyXG4nICsgY29kZSArICdcclxuXHJcbic7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfQnVpbGRpbmdCbG9ja3NbJ19lbmQnXSkgeyBzY3JpcHQgKz0gJyMjIyMjIEVuZGluZyBCbG9jayAjIyMjI1xyXG4nICsgc2NyaXB0X0J1aWxkaW5nQmxvY2tzWydfZW5kJ11bJ2NvZGUnXSArICdcclxuSGlnaGxpZ2h0QmxvY2tcclxuJzsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgUSgnc2NyaXB0YXJlYScpLnZhbHVlID0gc2NyaXB0Ow0KICAgICAgICB9DQoNCiAgICAgICAgLy8gSGlnaGxpZ2h0IGEgc2NyaXB0IGJsb2NrLiBUaGlzIGlzIHVzZWZ1bCB0byBrbm93IHdoYXQgYmxvY2sgdGhlIHNjcmlwdCBpcyBjdXJyZW50bHkgcnVubmluZw0KICAgICAgICB2YXIgc2NyaXB0X0N1cnJlbnRIaWdobGlnaHRCbG9jazsNCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X0hpZ2hsaWdodEJsb2NrKHJ1bm5lciwgeCkgew0KICAgICAgICAgICAgaWYgKHJ1bm5lciA9PSBlZGl0c2NyaXB0c3RhdGUpIHsgLy8gT25seSBoaWdobGlnaHQgYmxvY2tzIGlmIHRoZSBzY3JwdCBlZGl0b3IgaXMgcnVubmluZyB0aGUgc2NyaXB0LiBJZiBydW5uaW5nIGEgc2NyaXB0IG9uIHRoZSBwYWdlLCBkb24ndCBoaWdobGlnaHQgYmxvY2tzIGluIHRoZSBlZGl0b3IuDQogICAgICAgICAgICAgICAgc2NyaXB0X0N1cnJlbnRIaWdobGlnaHRCbG9jayA9IHg7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBzY3JpcHRfQmxvY2tTY3JpcHQpIHsgUVMoJ3hibG9ja18nICsgaSkuYm9yZGVyTGVmdCA9IChzY3JpcHRfQ3VycmVudEhpZ2hsaWdodEJsb2NrID09IGkpID8gIjNweCBzb2xpZCBibGFjayIgOiAiIjsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ2FsbGVkIGJ5IHRoZSAiTmV3Li4uIiBidXR0b24gdG8gcmVzZXQgdGhlIHNjcmlwdCBlZGl0b3IgdG8gdGhlIHN0YXJ0DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9uZXdTY3JpcHREbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiTmV3IFNjcmlwdCIsIDMsIHNjcmlwdF9uZXdTY3JpcHREbGdPaywgIjxicj5SZXNldCAmIGNsZWFyIHRoZSBzY3JpcHQgZWRpdG9yPyIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ2xlYXIgdGhlIHNjcmlwdCBlZGl0b3INCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X25ld1NjcmlwdERsZ09rKCkgew0KICAgICAgICAgICAgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKHNjcmlwdF9TdGFydGluZ0J1aWxkaW5nQmxvY2tzKTsNCiAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdCA9IFtdOw0KICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7DQogICAgICAgICAgICBkZWxldGUgZWRpdHNjcmlwdHN0YXRlOw0KICAgICAgICAgICAgc2NyaXB0Vmlld0J1dHRvbihzY3JpcHRfQnVpbGRpbmdCbG9ja3M/MTowKTsNCiAgICAgICAgICAgIFFIKCd2YXJpYWJsZXMnLCAnJyk7DQogICAgICAgICAgICBRKCdzY3JpcHRhcmVhJykudmFsdWUgPSAnJzsNCiAgICAgICAgICAgIHJlc2V0U2NyaXB0QnV0dG9uKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDb21waWxlIGFuZCByZXNldCBhIHNjcmlwdCB0byB0aGUgc3RhcnRpbmcgcG9zaXRpb24NCiAgICAgICAgZnVuY3Rpb24gcmVzZXRTY3JpcHRCdXR0b24oKSB7DQogICAgICAgICAgICAvLyBDb21waWxlIHRoZSBzY3JpcHQNCiAgICAgICAgICAgIGJyZWFrU2NyaXB0QnV0dG9uKCk7DQogICAgICAgICAgICBRKCdjb21waWxlZGFyZWEnKS52YWx1ZSA9IHJzdHIyaGV4KHNjcmlwdF9jb21waWxlKFEoJ3NjcmlwdGFyZWEnKS52YWx1ZSwgZnVuY3Rpb24obSkgeyBtZXNzYWdlYm94KCJTY3JpcHQgQ29tcGlsZSBFcnJvciIsIG0pOyB9KSk7DQogICAgICAgICAgICBkZWxldGUgZWRpdHNjcmlwdHN0YXRlOw0KDQogICAgICAgICAgICAvLyBSZXNldCB0aGUgc2NyaXB0IGVudmlyb25tZW50DQogICAgICAgICAgICBRKCdjb25zb2xlJykudmFsdWUgPSAnJzsNCiAgICAgICAgICAgIFFIKCd2YXJpYWJsZXMnLCAnJyk7DQogICAgICAgICAgICBRSCgnRWRpdFNjcmlwdFN0YXR1cycsICdTdG9wcGVkJyk7DQogICAgICAgICAgICBpZiAoc2NyaXB0X0J1aWxkZXJWaWV3ID09IDEpIHsgZnVwZGF0ZXNjcmlwdCgpOyB9DQogICAgICAgICAgICBpZiAoUSgnY29tcGlsZWRhcmVhJykudmFsdWUubGVuZ3RoID09IDApIHJldHVybjsNCg0KICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHNjcmlwdCBydW50aW1lIG9iamVjdA0KICAgICAgICAgICAgdmFyIHN0YXJ0dmFycyA9IHsgJ19pbnRlcmFjdGl2ZSc6MSB9Ow0KDQogICAgICAgICAgICBzdGFydHZhcnNbJ19jZXJ0aWZpY2F0ZXMnXSA9IDE7DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX21vZGUnXSA9ICdGaXJtd2FyZSc7DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX21vZGUnXSA9ICdNZXNoQ2VudHJhbDInOw0KDQogICAgICAgICAgICBzdGFydHZhcnNbJ19tb2RlJ10gPSAnTE1TJzsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZSA9IHNjcmlwdF9zZXR1cChoZXgycnN0cihRKCdjb21waWxlZGFyZWEnKS52YWx1ZSksIHN0YXJ0dmFycyk7DQogICAgICAgICAgICBlZGl0c2NyaXB0c3RhdGUud3NzdGFjayA9IHdzc3RhY2s7DQogICAgICAgICAgICBlZGl0c2NyaXB0c3RhdGUuYW10c3RhY2sgPSBhbXRzdGFjazsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZS5vblN0ZXAgPSBlZGl0c2NyaXB0X3VwZGF0ZVNjcmlwdFN0YXRlOw0KICAgICAgICAgICAgZWRpdHNjcmlwdHN0YXRlLm9uQ29uc29sZSA9IGVkaXRzY3JpcHRfY29uc29sZTsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRfdXBkYXRlU2NyaXB0U3RhdGUoZWRpdHNjcmlwdHN0YXRlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFN0YXJ0IHJ1bm5pbmcgdGhlIHNjcmlwdA0KICAgICAgICBmdW5jdGlvbiBydW5TY3JpcHRCdXR0b24oKSB7DQogICAgICAgICAgICBpZiAoZWRpdHNjcmlwdHN0YXRlID09IG51bGwpIHJlc2V0U2NyaXB0QnV0dG9uKCk7DQogICAgICAgICAgICBpZiAoZWRpdHNjcmlwdHN0YXRlID09IG51bGwpIHJldHVybjsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZS5zdGFydCgxMDApOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU3RvcC9QYXVzZSB0aGUgc2NyaXB0DQogICAgICAgIGZ1bmN0aW9uIGJyZWFrU2NyaXB0QnV0dG9uKCkgew0KICAgICAgICAgICAgaWYgKGVkaXRzY3JpcHRzdGF0ZSA9PSBudWxsKSByZXR1cm47DQogICAgICAgICAgICBlZGl0c2NyaXB0c3RhdGUuc3RvcCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gUnVuIG9uZSBzdGVwIG9mIHRoZSBzY3JpcHQNCiAgICAgICAgZnVuY3Rpb24gc3RlcFNjcmlwdEJ1dHRvbigpIHsNCiAgICAgICAgICAgIGlmIChlZGl0c2NyaXB0c3RhdGUgPT0gbnVsbCkgcmVzZXRTY3JpcHRCdXR0b24oKTsNCiAgICAgICAgICAgIGlmIChlZGl0c2NyaXB0c3RhdGUgPT0gbnVsbCkgcmV0dXJuOw0KICAgICAgICAgICAgYnJlYWtTY3JpcHRCdXR0b24oKTsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZS5zdGVwKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBEaXNwbGF5IGEgbmV3IGxpbmUgaW50byB0aGUgc2NyaXB0IGNvbnNvbGUNCiAgICAgICAgZnVuY3Rpb24gZWRpdHNjcmlwdF9jb25zb2xlKG1zZykgew0KICAgICAgICAgICAgUSgnY29uc29sZScpLnZhbHVlICs9IChtc2cgKyAnXG4nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFVwZGF0ZSB0aGUgc2NyaXB0IHN0YXRlIGluZm9ybWF0aW9uIGFuZCBkaXNwbGF5ZWQgdmFyaWFibGVzDQogICAgICAgIHZhciBzY3JpcHRfc3RhdGVzID0gWydTdG9wcGVkJywgJ1J1bm5pbmcnLCAnUGF1c2VkJ107DQogICAgICAgIGZ1bmN0aW9uIGVkaXRzY3JpcHRfdXBkYXRlU2NyaXB0U3RhdGUocnVuc3RhdGUpIHsNCiAgICAgICAgICAgIC8vIFVwZGF0ZSB2YXJpYWJsZXMNCiAgICAgICAgICAgIHZhciByID0gJyc7DQogICAgICAgICAgICBpZiAocnVuc3RhdGUgJiYgcnVuc3RhdGUgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHZhciB2cyA9IFtdOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcnVuc3RhdGUudmFyaWFibGVzKSB7IGlmICghaS5zdGFydHNXaXRoKCdfXycpKSB2cy5wdXNoKGkpOyB9DQogICAgICAgICAgICAgICAgdnMuc29ydCgpOw0KICAgICAgICAgICAgICAgIC8vZm9yICh2YXIgaSBpbiB2cykgeyByICs9IHZzW2ldICsgIiA9ICIgKyBzY3JpcHRfdG9TdHJpbmcocnVuc3RhdGUudmFyaWFibGVzW3ZzW2ldXSkgKyAiXG4iOyB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB2cykgew0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJ1bnN0YXRlLnZhcmlhYmxlc1t2c1tpXV0gPT0gJ29iamVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHIgKz0gIjxiPiIgKyB2c1tpXSArICI8L2I+ID0gIiArIE9iamVjdFRvU3RyaW5nRXgocnVuc3RhdGUudmFyaWFibGVzW3ZzW2ldXSwgMikgKyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICByICs9ICI8Yj4iICsgdnNbaV0gKyAiPC9iPiA9ICIgKyBFc2NhcGVIdG1sKHNjcmlwdF90b1N0cmluZyhydW5zdGF0ZS52YXJpYWJsZXNbdnNbaV1dKSkgKyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBRSCgndmFyaWFibGVzJywgcik7DQoNCiAgICAgICAgICAgIC8vIFVwZGF0ZSBzdGF0ZQ0KICAgICAgICAgICAgciA9ICdTdG9wcGVkLCBObyBTY3JpcHQnOw0KICAgICAgICAgICAgaWYgKHJ1bnN0YXRlICYmIHJ1bnN0YXRlICE9IG51bGwpIHsgciA9IHNjcmlwdF9zdGF0ZXNbcnVuc3RhdGUuc3RhdGVdOyBpZiAocnVuc3RhdGUuc3RhdGUgPiAwKSByICs9ICIsICIgKyBydW5zdGF0ZS5pcCArICIgOiAiICsgc2NyaXB0X2RlY29tcGlsZShydW5zdGF0ZS5zY3JpcHQsIHJ1bnN0YXRlLmlwKTsgfQ0KICAgICAgICAgICAgaWYgKHIubGVuZ3RoID4gNTApIHsgciA9IHIuc3Vic3RyaW5nKDAsIDUwKSArICIuLi4iOyB9DQogICAgICAgICAgICBRSCgnRWRpdFNjcmlwdFN0YXR1cycsIHIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gUmV0dXJuIGEgc3RyaW5nIGZyb20gYW55IGlucHV0LCBpZiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0LCBzdHJpbmdpZnkgaXQuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF90b1N0cmluZyh4KSB7IGlmICh0eXBlb2YgeCA9PSAnb2JqZWN0JykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHgpOyByZXR1cm4geDsgfQ0KDQoNCiAgICAgICAgLy8gU2F2ZSBhIHNjcmlwdCB0byBkaXNrLCBzdGFydCBieSBzaG93aW5nIGEgZGlhbG9nIGJveCB0byBwcm9tcHQgdG8gdGhlIGZpbGVuYW1lLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfc2F2ZVNjcmlwdChlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8IHNjcmlwdHN0YXRlKSByZXR1cm47DQogICAgICAgICAgICBpZiAoZSAmJiAoZS5zaGlmdEtleSA9PSB0cnVlKSkgew0KICAgICAgICAgICAgICAgIC8vIFNhdmUgYXMgc2NyaXB0IGJsb2NrDQogICAgICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIlNjcmlwdCBCbG9jayIsIDEsIG51bGwsICI8YnI+PHRleHRhcmVhIGlkPXNjcmlwdFNhdmVTY3JpcHRKc29uQmxvY2sgc3R5bGU9d2lkdGg6MTAwJTtoZWlnaHQ6MjAwcHg7cmVzaXplOnZlcnRpY2FsIC8+Iik7DQogICAgICAgICAgICAgICAgUUgoJ3NjcmlwdFNhdmVTY3JpcHRKc29uQmxvY2snLCBzY3JpcHRfZkNvbnZlcnRTY3JpcHRUb0pzb25CbG9jayhRKCdzY3JpcHRhcmVhJykudmFsdWUpKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gU2F2ZSBhcyAubWVzY3JpcHQgZmlsZQ0KDQogICAgICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIlNhdmUgU2NyaXB0IiwgMywgc2NyaXB0X3NhdmVTY3JpcHRPaywgIjxicj48aW5wdXQgaWQ9c2NyaXB0c2F2ZW5hbWUgc3R5bGU9d2lkdGg6MTAwJSB2YWx1ZT10ZXN0Lm1lc2NyaXB0ID4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIE9uY2UgdGhlIGZpbGVuYW1lIGlzIHNlbGVjdGVkLCBzYXZlIHRoZSBmaWxlLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfc2F2ZVNjcmlwdE9rKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSBKU09OLnN0cmluZ2lmeSh7DQogICAgICAgICAgICAgICAgInNjcmlwdFRleHQiOiBRKCdzY3JpcHRhcmVhJykudmFsdWUsDQogICAgICAgICAgICAgICAgIm1lc2NyaXB0IjogYnRvYShzY3JpcHRfY29tcGlsZShRKCdzY3JpcHRhcmVhJykudmFsdWUpKSwNCiAgICAgICAgICAgICAgICAiYmxvY2tzIjogc2NyaXB0X1N0YXJ0aW5nQnVpbGRpbmdCbG9ja3MsDQogICAgICAgICAgICAgICAgInNjcmlwdEJsb2NrcyI6IHNjcmlwdF9CbG9ja1NjcmlwdA0KICAgICAgICAgICAgfSwgbnVsbCwgJyAgJyk7DQogICAgICAgICAgICBzYXZlQXMoZGF0YTJibG9iKHgpLCBRKCdzY3JpcHRzYXZlbmFtZScpLnZhbHVlKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgDQoNCg0KICAgICAgICAvLw0KICAgICAgICAvLyBVU0IgU0VUVVAuQklODQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX25ld1NldHVwQmluKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgaWR4X2QxNHZlcnNpb24udmFsdWUgPSA0Ow0KICAgICAgICAgICAgaWR4X2QxNGNvbnN1bWUudmFsdWUgPSAxOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxNCwgIkNyZWF0ZSBuZXcgU2V0dXAuYmluIGZpbGUiLCAzLCB1c2JfbmV3U2V0dXBCaW5Payk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfbmV3U2V0dXBCaW5PayhyKSB7DQogICAgICAgICAgICBpZiAociA9PSAxKSB7IHNldHVwYmluID0gQW10U2V0dXBCaW5DcmVhdGUoaWR4X2QxNHZlcnNpb24udmFsdWUsIGlkeF9kMTRjb25zdW1lLnZhbHVlKTsgfSAvLyBPSyBCdXR0b24NCiAgICAgICAgICAgIHVzYl9kaXNwbGF5U2V0dXBCaW4oKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9vcGVuU2V0dXBCaW4oKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQoNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTUsICJPcGVuIFNldHVwLmJpbiBmaWxlIiwgMywgdXNiX29wZW5TZXR1cEJpbk9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9vcGVuU2V0dXBCaW5PaygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gUSgnZDE1c2V0dXBiaW5maWxlJyk7DQogICAgICAgICAgICBpZiAoeC5maWxlcy5sZW5ndGggIT0gMSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICByZWFkZXIub25sb2FkID0gdXNiX29uU2V0dXBCaW5SZWFkOw0KICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh4LmZpbGVzWzBdKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX3NhdmVTZXR1cEJpbigpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgIXNldHVwYmluKSByZXR1cm47DQoNCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoQW10U2V0dXBCaW5FbmNvZGUoc2V0dXBiaW4pKSwgInNldHVwLmJpbiIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX29uU2V0dXBCaW5SZWFkKGZpbGUpIHsNCiAgICAgICAgICAgIHNldHVwYmluID0gQW10U2V0dXBCaW5EZWNvZGUoZmlsZS50YXJnZXQucmVzdWx0KTsNCiAgICAgICAgICAgIGlmICghc2V0dXBiaW4pIHsgbWVzc2FnZWJveCgiT3BlbiBGaWxlIiwgIkludmFsaWQgb3IgY29ycnVwdCBzZXR1cC5iaW4gZmlsZS4gVW5hYmxlIHRvIG9wZW4uIik7IH0gZWxzZSB7IHVzYl9kaXNwbGF5U2V0dXBCaW4oKTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2Rpc3BsYXlTZXR1cEJpbigpIHsNCiAgICAgICAgICAgIFFWKCdpZF9TdGFydHVwU2NyZWVuJywgIXNldHVwYmluKTsNCg0KICAgICAgICAgICAgUVYoJ2lkX3NhdmVTZXR1cEJpbicsIHNldHVwYmluKTsNCiAgICAgICAgICAgIGlmICghc2V0dXBiaW4pIHsgcmV0dXJuIFFIKCdpZF9TZXR1cEJpbkFyZWEnLCAnJyk7IH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gVXBkYXRlIHJlY29yZCBjb3VudA0KICAgICAgICAgICAgdmFyIGNvbnN1bWVkID0gMDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gc2V0dXBiaW4ucmVjb3JkcykgeyBpZiAoKHNldHVwYmluLnJlY29yZHNbaV0uZmxhZ3MgJiAxKSA9PSAwKSB7IGNvbnN1bWVkKys7IH0gfQ0KICAgICAgICAgICAgc2V0dXBiaW4uZGF0YVJlY29yZHNDb25zdW1lZCA9IGNvbnN1bWVkOw0KDQogICAgICAgICAgICAvLyBNYWluIEhlYWRlciAgICAgICAgICAgIA0KICAgICAgICAgICAgdmFyIHggPSAiPHRhYmxlIG9uY2xpY2s9dXNiX2VkaXRoZWFkZXIoZXZlbnQpIGNsYXNzPSdsb2cxIHVzJyBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcj48dHI+PHRkPjxwPjx0ZD4iOw0KICAgICAgICAgICAgeCArPSAiPHRyPjx0ZCBjbGFzcz1yMiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1mbG9hdDpyaWdodDttYXJnaW4tcmlnaHQ6MTJweCBvbmNsaWNrPXVzYl9hZGRSZWNvcmRTZXR1cEJpbigpPjxhPjx1IHRpdGxlPSdBZGQgYSBuZXcgcmVjb3JkJz5BZGQgUmVjb3JkPC91PjwvYT48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdj48c3Ryb25nPkludGVsJnJlZzsgQU1UIFNldHVwLmJpbiBmaWxlIHZlcnNpb24gIiArIHNldHVwYmluLm1ham9yVmVyc2lvbiArICIuIiArIHNldHVwYmluLm1pbm9yVmVyc2lvbiArICI8L3N0cm9uZz4uPC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gKCgoc2V0dXBiaW4uZmxhZ3MgJiAxKSA9PSAwKSA/ICJSZWNvcmRzIHdpbGwgYmUgY29uc3VtZWQuIiA6ICJSZWNvcmRzIHdpbGwgbm90IGJlIGNvbnN1bWVkLiIpOw0KICAgICAgICAgICAgeCArPSAiPGJyPlJlY29yZHM6ICIgKyBzZXR1cGJpbi5yZWNvcmRzLmxlbmd0aCArICIsIENvbnN1bWVkOiAiICsgc2V0dXBiaW4uZGF0YVJlY29yZHNDb25zdW1lZCArICI8YnI+IjsNCiAgICAgICAgICAgIHggKz0gIjx0ciBzdHlsZT1oZWlnaHQ6NHB4PjwvdGFibGU+IjsNCg0KICAgICAgICAgICAgLy8gRGlzcGxheSBlYWNoIHJlY29yZA0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBzZXR1cGJpbi5yZWNvcmRzKSB7DQogICAgICAgICAgICAgICAgdmFyIHJlYyA9IHNldHVwYmluLnJlY29yZHNbaV07DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6NHB4PjwvZGl2Pjx0YWJsZSBjbGFzcz0nbG9nMSB1cycgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHN0eWxlPXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg+PHRyPjx0ZD48cD48dGQ+PHRyPjx0ZCBjbGFzcz1yMiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweDtjdXJzb3I6cG9pbnRlcj4iOw0KICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ7bWFyZ2luLXJpZ2h0OjEycHggb25jbGljaz0ndXNiX2FkZHZhcmlhYmxlKGV2ZW50LCIgKyBpICsgIiknPjxhPjx1IHRpdGxlPSdBZGQgYSBuZXcgdmFyaWFibGUnPkFkZCBWYXJpYWJsZTwvdT48L2E+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IG9uY2xpY2s9J3VzYl9lZGl0cmVjb3JkKGV2ZW50LCAiICsgaSArICIpJz5SZWNvcmQgIzxzdHJvbmc+IiArICgraSArIDEpICsgIjwvc3Ryb25nPi4gVGhpcyByZWNvcmQgaXM6IDxzdHJvbmc+IiArICgocmVjLmZsYWdzICYgMSkgPyAiVmFsaWQiIDogIkNvbnN1bWVkIikgKyAoKHJlYy5mbGFncyAmIDIpID8gIiwgU2NyYW1ibGVkIiA6ICIiKSArICI8L3N0cm9uZz48L2Rpdj4iOw0KDQogICAgICAgICAgICAgICAgLy8gRGlzcGxheSBlYWNoIHZhcmlhYmxlDQogICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiByZWMudmFyaWFibGVzKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciB2ID0gcmVjLnZhcmlhYmxlc1tqXSwgdmFsID0gdi52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzJdICYmIEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzJdW3ZhbF0pIHsgdmFsID0gQW10U2V0dXBCaW5WYXJJZHNbdi5tb2R1bGVpZF1bdi52YXJpZF1bMl1bdmFsXTsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAodi5tb2R1bGVpZCA9PSAyICYmIHYudmFyaWQgPT0gOCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2h0eXBlID0gdmFsLmNoYXJDb2RlQXQoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHR5cGUgPj0gMCAmJiBoYXNodHlwZSA8PSAzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2hzaXplID0gWzIwLCAzMiwgNDhdW2hhc2h0eXBlIC0gMV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2ggPSByc3RyMmhleCh2YWwuc3Vic3RyaW5nKDEsIGhhc2hzaXplICsgMSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYXNobmFtZXNpemUgPSB2YWwuY2hhckNvZGVBdCgxICsgaGFzaHNpemUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYXNobmFtZSA9IHZhbC5zdWJzdHJpbmcoMiArIGhhc2hzaXplLCAyICsgaGFzaHNpemUgKyBoYXNobmFtZXNpemUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gWydTSEExJywgJ1NIQTI1NicsICdTSEEzODQnXVtoYXNodHlwZSAtIDFdICsgJywgJyArIGhhc2huYW1lICsgJywgJyArIGhhc2g7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1tYXJnaW4tcmlnaHQ6MTJweD48dGFibGUgb25jbGljaz0ndXNiX2VkaXR2YXJpYWJsZShldmVudCwgIiArIGkgKyAiLCIgKyBqICsgIiknIGNsYXNzPSdpdGVtQmFyIHVzJyBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjRweDttYXJnaW4tdG9wOjJweDttYXJnaW4tYm90dG9tOjJweDtwYWRkaW5nOjA+PHRyPjx0ZD48cCBzdHlsZT1mbG9hdDpyaWdodDttYXJnaW4tcmlnaHQ6OHB4PjxiPiIgKyB2YWwgKyAiPC9iPjxwPiIgKyB2WydkZXNjJ10gKyAiPHRyIHN0eWxlPWhlaWdodDo0cHg+PC90YWJsZT48L2Rpdj4iOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHggKz0gIjx0ciBzdHlsZT1oZWlnaHQ6NHB4PjwvdGFibGU+IjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgUUgoJ2lkX1NldHVwQmluQXJlYScsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2FkZFJlY29yZFNldHVwQmluKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgZDEzdmFsaWQuY2hlY2tlZCA9IDE7DQogICAgICAgICAgICBkMTNzY3JhbWJsZS5jaGVja2VkID0gMDsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTMsICJOZXcgUmVjb3JkICMiLCAzLCB1c2JfYWRkUmVjb3JkU2V0dXBCaW5Payk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfYWRkUmVjb3JkU2V0dXBCaW5PaygpIHsNCiAgICAgICAgICAgIHZhciByID0ge307DQogICAgICAgICAgICByLnR5cGVJZGVudGlmaWVyID0gMTsNCiAgICAgICAgICAgIHIuZmxhZ3MgPSAoZDEzdmFsaWQuY2hlY2tlZCA/IDEgOiAwKSArIChkMTNzY3JhbWJsZS5jaGVja2VkID8gMiA6IDApOw0KICAgICAgICAgICAgci5jaHVua0NvdW50ID0gMDsNCiAgICAgICAgICAgIHIuaGVhZGVyQnl0ZUNvdW50ID0gMDsNCiAgICAgICAgICAgIHIubnVtYmVyID0gMDsNCiAgICAgICAgICAgIHIudmFyaWFibGVzID0gW107DQogICAgICAgICAgICBzZXR1cGJpbi5yZWNvcmRzLnB1c2gocik7DQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfZWRpdGhlYWRlcihlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgICAgICBpZHhfZDE0dmVyc2lvbi52YWx1ZSA9IHNldHVwYmluLm1ham9yVmVyc2lvbjsNCiAgICAgICAgICAgIGlkeF9kMTRjb25zdW1lLnZhbHVlID0gKHNldHVwYmluLmZsYWdzICYgMSk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDE0LCAiRWRpdCBIZWFkZXIiLCA3LCB1c2JfZWRpdGhlYWRlcm9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9lZGl0aGVhZGVyb2socikgew0KICAgICAgICAgICAgaWYgKHIgPT0gMikgew0KICAgICAgICAgICAgICAgIGRlbGV0ZSBzZXR1cGJpbjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgc2V0dXBiaW4ubWFqb3JWZXJzaW9uID0gaWR4X2QxNHZlcnNpb24udmFsdWU7DQogICAgICAgICAgICAgICAgc2V0dXBiaW4uZmxhZ3MgPSBpZHhfZDE0Y29uc3VtZS52YWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVzYl9kaXNwbGF5U2V0dXBCaW4oKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9lZGl0cmVjb3JkKGUsIGkpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHNlbGVjdGVkUmVjb3JkID0gaTsNCiAgICAgICAgICAgIHNlbGVjdGVkVmFyaWFibGUgPSAtMTsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgICAgIGQxM3ZhbGlkLmNoZWNrZWQgPSAoc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0uZmxhZ3MgJiAxKTsNCiAgICAgICAgICAgIGQxM3NjcmFtYmxlLmNoZWNrZWQgPSAoc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0uZmxhZ3MgJiAyKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTMsICJFZGl0IFJlY29yZCAjIiArIChpICsgMSksIDcsIHVzYl9lZGl0cmVjb3Jkb2spOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2VkaXRyZWNvcmRvayhyKSB7DQogICAgICAgICAgICBpZiAociA9PSAxKSB7IHNldHVwYmluLnJlY29yZHNbc2VsZWN0ZWRSZWNvcmRdLmZsYWdzID0gKGQxM3ZhbGlkLmNoZWNrZWQgPyAxIDogMCkgKyAoZDEzc2NyYW1ibGUuY2hlY2tlZCA/IDIgOiAwKTsgfSAvLyBFZGl0IFJlY29yZA0KICAgICAgICAgICAgaWYgKHIgPT0gMikgeyBzZXR1cGJpbi5yZWNvcmRzLnNwbGljZShzZWxlY3RlZFJlY29yZCwgMSk7IH0gLy8gRGVsZXRlIFJlY29yZA0KICAgICAgICAgICAgdXNiX2Rpc3BsYXlTZXR1cEJpbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2VkaXR2YXJpYWJsZShlLCBpLCBqKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBzZWxlY3RlZFJlY29yZCA9IGk7DQogICAgICAgICAgICBzZWxlY3RlZFZhcmlhYmxlID0gajsNCiAgICAgICAgICAgIHZhciBtb2RpZCA9IHNldHVwYmluLnJlY29yZHNbaV0udmFyaWFibGVzW2pdLm1vZHVsZWlkOw0KICAgICAgICAgICAgdmFyIHZhcmlkID0gc2V0dXBiaW4ucmVjb3Jkc1tpXS52YXJpYWJsZXNbal0udmFyaWQ7DQogICAgICAgICAgICBkMTZ0eXBlLnZhbHVlID0gbW9kaWQgKyAiLSIgKyB2YXJpZDsNCiAgICAgICAgICAgIGQxNnR5cGUuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgICAgICAgdXNiX29uZDE2dHlwZWNoYW5nZSgpOw0KICAgICAgICAgICAgUVYoJ2QxNmdlbmVyaWN2YWx1ZScsIGZhbHNlKTsNCiAgICAgICAgICAgIFFWKCdkMTZjdXN0b212YWx1ZScsIGZhbHNlKTsNCiAgICAgICAgICAgIGlmIChtb2RpZCA9PSAyICYmIHZhcmlkID09IDgpIHsNCiAgICAgICAgICAgICAgICB2YXIgeCA9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9aWR4X2QxNnZhbGMxIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9uY2hhbmdlPXVzYl9vbmQxNmNoZWNraGFzaCgpPjxvcHRpb24gdmFsdWU9MT5TSEExPC9vcHRpb24+JzsNCiAgICAgICAgICAgICAgICBpZiAoc2V0dXBiaW4ubWFqb3JWZXJzaW9uID49IDMpIHsgeCArPSAnPG9wdGlvbiB2YWx1ZT0yPlNIQTI1Njwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Mz5TSEEzODQ8L29wdGlvbj4nOyB9DQogICAgICAgICAgICAgICAgeCArPSAnPC9zZWxlY3Q+PGRpdj5IYXNoIFR5cGU8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWlkeF9kMTZ2YWxjMiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweCBvbmtleXVwPXVzYl9vbmQxNmNoZWNraGFzaCgpPjxkaXY+SGFzaCAoSEVYKTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICAgICAgeCArPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48aW5wdXQgaWQ9aWR4X2QxNnZhbGMzIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9ua2V5dXA9dXNiX29uZDE2Y2hlY2toYXNoKCkgbWF4bGVuZ3RoPTMxPjxkaXY+SGFzaCBOYW1lPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgICAgICBRSCgnZDE2Y3VzdG9tdmFsdWUnLCB4KTsNCiAgICAgICAgICAgICAgICBRVignZDE2Y3VzdG9tdmFsdWUnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICB2YXIgdmFsID0gc2V0dXBiaW4ucmVjb3Jkc1tpXS52YXJpYWJsZXNbal0udmFsdWU7DQogICAgICAgICAgICAgICAgdmFyIGhhc2h0eXBlID0gdmFsLmNoYXJDb2RlQXQoMCk7DQogICAgICAgICAgICAgICAgaWYgKGhhc2h0eXBlID49IDAgJiYgaGFzaHR5cGUgPD0gMykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaGFzaHNpemUgPSBbMjAsIDMyLCA0OF1baGFzaHR5cGUgLSAxXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2ggPSByc3RyMmhleCh2YWwuc3Vic3RyaW5nKDEsIGhhc2hzaXplICsgMSkpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgaGFzaG5hbWVzaXplID0gdmFsLmNoYXJDb2RlQXQoMSArIGhhc2hzaXplKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2huYW1lID0gdmFsLnN1YnN0cmluZygyICsgaGFzaHNpemUsIDIgKyBoYXNoc2l6ZSArIGhhc2huYW1lc2l6ZSkNCiAgICAgICAgICAgICAgICAgICAgdmFsID0gWydTSEExJywgJ1NIQTI1NicsICdTSEEzODQnXVtoYXNodHlwZSAtIDFdICsgJywgJyArIGhhc2huYW1lICsgJywgJyArIGhhc2g7DQogICAgICAgICAgICAgICAgICAgIFEoJ2lkeF9kMTZ2YWxjMScpLnZhbHVlID0gaGFzaHR5cGU7DQogICAgICAgICAgICAgICAgICAgIFEoJ2lkeF9kMTZ2YWxjMicpLnZhbHVlID0gaGFzaDsNCiAgICAgICAgICAgICAgICAgICAgUSgnaWR4X2QxNnZhbGMzJykudmFsdWUgPSBoYXNobmFtZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdXNiX29uZDE2Y2hlY2toYXNoKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFFWKCdkMTZnZW5lcmljdmFsdWUnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICBpZHhfZDE2dmFsdWUxLnZhbHVlID0gaWR4X2QxNnZhbHVlMi52YWx1ZSA9IHNldHVwYmluLnJlY29yZHNbaV0udmFyaWFibGVzW2pdLnZhbHVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxNiwgIkVkaXQgUmVjb3JkICMiICsgKGkgKyAxKSArICIsIFZhcmlhYmxlICMiICsgKGogKyAxKSwgNywgdXNiX2VkaXR2YXJpYWJsZW9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9lZGl0dmFyaWFibGVvayhyKSB7DQogICAgICAgICAgICBpZiAociA9PSAxKSB7IC8vIE9LDQogICAgICAgICAgICAgICAgdmFyIGlkcyA9IGQxNnR5cGUudmFsdWUuc3BsaXQoJy0nKTsNCiAgICAgICAgICAgICAgICB2YXIgbW9kaWQgPSAraWRzWzBdOw0KICAgICAgICAgICAgICAgIHZhciB2YXJpZCA9ICtpZHNbMV07DQogICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gIiI7DQogICAgICAgICAgICAgICAgdmFyIHZhcmRlc2NyaXB0aW9uID0gQW10U2V0dXBCaW5WYXJJZHNbbW9kaWRdW3ZhcmlkXTsNCiAgICAgICAgICAgICAgICBpZiAobW9kaWQgPT0gMiAmJiB2YXJpZCA9PSA4KSB7DQogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nLmZyb21DaGFyQ29kZShRKCdpZHhfZDE2dmFsYzEnKS52YWx1ZSkgKyBoZXgycnN0cihRKCdpZHhfZDE2dmFsYzInKS52YWx1ZSkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKFEoJ2lkeF9kMTZ2YWxjMycpLnZhbHVlLmxlbmd0aCkgKyBRKCdpZHhfZDE2dmFsYzMnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFyZGVzY3JpcHRpb25bMl0pIHsgdmFsdWUgPSBpZHhfZDE2dmFsdWUxLnZhbHVlOyB9IGVsc2UgeyB2YWx1ZSA9IGlkeF9kMTZ2YWx1ZTIudmFsdWU7IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0udmFyaWFibGVzW3NlbGVjdGVkVmFyaWFibGVdLnZhbHVlID0gdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAociA9PSAyKSB7IHNldHVwYmluLnJlY29yZHNbc2VsZWN0ZWRSZWNvcmRdLnZhcmlhYmxlcy5zcGxpY2Uoc2VsZWN0ZWRWYXJpYWJsZSwgMSk7IH0gLy8gRGVsZXRlDQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfYWRkdmFyaWFibGUoZSwgaSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgc2VsZWN0ZWRSZWNvcmQgPSBpOw0KICAgICAgICAgICAgZDE2dHlwZS52YWx1ZSA9ICIxLTEiOw0KICAgICAgICAgICAgZDE2dHlwZS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgaWR4X2QxNnZhbHVlMS52YWx1ZSA9IGlkeF9kMTZ2YWx1ZTIudmFsdWUgPSAiIjsNCiAgICAgICAgICAgIHVzYl9vbmQxNnR5cGVjaGFuZ2UoKTsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTYsICJBZGQgVmFyaWFibGUgdG8gUmVjb3JkICMiICsgKGkgKyAxKSwgMywgdXNiX2FkZHZhcmlhYmxlb2spOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2FkZHZhcmlhYmxlb2soKSB7DQogICAgICAgICAgICB2YXIgaWRzID0gZDE2dHlwZS52YWx1ZS5zcGxpdCgnLScpOw0KICAgICAgICAgICAgdmFyIG1vZGlkID0gK2lkc1swXTsNCiAgICAgICAgICAgIHZhciB2YXJpZCA9ICtpZHNbMV07DQogICAgICAgICAgICB2YXIgdmFsdWUgPSAiIjsNCiAgICAgICAgICAgIHZhciB2YXJkZXNjcmlwdGlvbiA9IEFtdFNldHVwQmluVmFySWRzW21vZGlkXVt2YXJpZF07DQogICAgICAgICAgICBpZiAobW9kaWQgPT0gMiAmJiB2YXJpZCA9PSA4KSB7DQogICAgICAgICAgICAgICAgdmFsdWUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFEoJ2lkeF9kMTZ2YWxjMScpLnZhbHVlKSArIGhleDJyc3RyKFEoJ2lkeF9kMTZ2YWxjMicpLnZhbHVlKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoUSgnaWR4X2QxNnZhbGMzJykudmFsdWUubGVuZ3RoKSArIFEoJ2lkeF9kMTZ2YWxjMycpLnZhbHVlOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAodmFyZGVzY3JpcHRpb25bMl0pIHsgdmFsdWUgPSBpZHhfZDE2dmFsdWUxLnZhbHVlOyB9IGVsc2UgeyB2YWx1ZSA9IGlkeF9kMTZ2YWx1ZTIudmFsdWU7IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHZhcmlhYmxlDQogICAgICAgICAgICB2YXIgdiA9IHt9Ow0KICAgICAgICAgICAgdi5tb2R1bGVpZCA9IG1vZGlkOw0KICAgICAgICAgICAgdi52YXJpZCA9IHZhcmlkOw0KICAgICAgICAgICAgdi5sZW5ndGggPSAtMTsNCiAgICAgICAgICAgIHYudHlwZSA9IEFtdFNldHVwQmluVmFySWRzW21vZGlkXVt2YXJpZF1bMF07DQogICAgICAgICAgICB2LmRlc2MgPSBBbXRTZXR1cEJpblZhcklkc1ttb2RpZF1bdmFyaWRdWzFdOw0KICAgICAgICAgICAgdi52YWx1ZSA9IHZhbHVlOw0KICAgICAgICAgICAgc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0udmFyaWFibGVzLnB1c2godik7DQoNCiAgICAgICAgICAgIHNldHVwYmluLnJlY29yZHNbc2VsZWN0ZWRSZWNvcmRdLnZhcmlhYmxlcy5zb3J0KEFtdFNldHVwQmluVmFyaWFibGVDb21wYXJlKTsgLy8gU29ydCB0aGUgdmFyaWFibGVzDQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2Jfb25kMTZ0eXBlY2hhbmdlKCkgew0KICAgICAgICAgICAgdmFyIGlkcyA9IGQxNnR5cGUudmFsdWUuc3BsaXQoJy0nKTsNCiAgICAgICAgICAgIHZhciBtb2RpZCA9ICtpZHNbMF07DQogICAgICAgICAgICB2YXIgdmFyaWQgPSAraWRzWzFdOw0KICAgICAgICAgICAgdmFyIHZhcmRlc2NyaXB0aW9uID0gQW10U2V0dXBCaW5WYXJJZHNbbW9kaWRdW3ZhcmlkXTsNCiAgICAgICAgICAgIFFWKCdkMTZnZW5lcmljdmFsdWUnLCBmYWxzZSk7DQogICAgICAgICAgICBRVignZDE2Y3VzdG9tdmFsdWUnLCBmYWxzZSk7DQogICAgICAgICAgICBpZiAobW9kaWQgPT0gMiAmJiB2YXJpZCA9PSA4KSB7DQogICAgICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48c2VsZWN0IGlkPWlkeF9kMTZ2YWxjMSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweCBvbmNoYW5nZT11c2Jfb25kMTZjaGVja2hhc2goKT48b3B0aW9uIHZhbHVlPTE+U0hBMTwvb3B0aW9uPic7DQogICAgICAgICAgICAgICAgaWYgKHNldHVwYmluLm1ham9yVmVyc2lvbiA+PSAzKSB7IHggKz0gJzxvcHRpb24gdmFsdWU9Mj5TSEEyNTY8L29wdGlvbj48b3B0aW9uIHZhbHVlPTM+U0hBMzg0PC9vcHRpb24+JzsgfQ0KICAgICAgICAgICAgICAgIHggKz0gJzwvc2VsZWN0PjxkaXY+SGFzaCBUeXBlPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1pZHhfZDE2dmFsYzIgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggb25rZXl1cD11c2Jfb25kMTZjaGVja2hhc2goKT48ZGl2Pkhhc2ggKEhFWCk8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWlkeF9kMTZ2YWxjMyBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweCBvbmtleXVwPXVzYl9vbmQxNmNoZWNraGFzaCgpIG1heGxlbmd0aD0zMT48ZGl2Pkhhc2ggTmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICAgICAgUVYoJ2QxNmN1c3RvbXZhbHVlJywgdHJ1ZSk7DQogICAgICAgICAgICAgICAgUUgoJ2QxNmN1c3RvbXZhbHVlJywgeCk7DQogICAgICAgICAgICAgICAgdXNiX29uZDE2Y2hlY2toYXNoKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFFWKCdkMTZnZW5lcmljdmFsdWUnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICBpZiAodmFyZGVzY3JpcHRpb25bMl0pIHsNCiAgICAgICAgICAgICAgICAgICAgUVYoJ2lkeF9kMTZ2YWx1ZTEnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgUVYoJ2lkeF9kMTZ2YWx1ZTInLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gIiI7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdmFyZGVzY3JpcHRpb25bMl0pIHsgb3B0aW9ucyArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIGkgKyAnIj4nICsgdmFyZGVzY3JpcHRpb25bMl1baV0gfQ0KICAgICAgICAgICAgICAgICAgICBRSCgnaWR4X2QxNnZhbHVlMScsIG9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIFFWKCdpZHhfZDE2dmFsdWUxJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICBRVignaWR4X2QxNnZhbHVlMicsIHRydWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9vbmQxNmNoZWNraGFzaCgpIHsNCiAgICAgICAgICAgIHZhciBoYXNodHlwZSA9IFEoJ2lkeF9kMTZ2YWxjMScpLnZhbHVlOw0KICAgICAgICAgICAgdmFyIGhhc2hsZW4gPSBoZXgycnN0cihRKCdpZHhfZDE2dmFsYzInKS52YWx1ZSkubGVuZ3RoOw0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIChRKCdpZHhfZDE2dmFsYzMnKS52YWx1ZS5sZW5ndGggPiAwKSAmJiAoKGhhc2h0eXBlID09IDEpICYmIChoYXNobGVuID09IDIwKSkgfHwgKChoYXNodHlwZSA9PSAyKSAmJiAoaGFzaGxlbiA9PSAzMikpIHx8ICgoaGFzaHR5cGUgPT0gMykgJiYgKGhhc2hsZW4gPT0gNDgpKSk7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgdXNiX2FscGhhYmV0ID0gIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2NvbXB1dGVDaGVja3N1bShzKSB7DQogICAgICAgICAgICB2YXIgQSA9IDA7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIEEgKz0gcy5jaGFyQ29kZUF0KGkpOw0KICAgICAgICAgICAgcmV0dXJuIHVzYl9hbHBoYWJldFtBICUgMzZdOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2dlbmVyYXRlUmFuZG9tUGlkKCkgew0KICAgICAgICAgICAgdmFyIHBpZCA9ICIiOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsgcGlkICs9IHVzYl9hbHBoYWJldFtyYW5kb20oMzYpXTsgfQ0KICAgICAgICAgICAgcmV0dXJuIHBpZCArIHVzYl9jb21wdXRlQ2hlY2tzdW0ocGlkKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9nZW5lcmF0ZVJhbmRvbVBwcygpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBwcHMgPSAiIiwgczsNCiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHMgPSAiIjsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykgcyArPSB1c2JfYWxwaGFiZXRbcmFuZG9tKDM2KV07DQogICAgICAgICAgICAgICAgcHBzICs9IHMgKyB1c2JfY29tcHV0ZUNoZWNrc3VtKHMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHBwczsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gUE9QVVAgRElBTE9HDQogICAgICAgIC8vDQoNCiAgICAgICAgLy8gdW5kZWZpbmVkID0gSGlkZGVuLCAxID0gR2VuZXJpYyBNZXNzYWdlDQogICAgICAgIHZhciB4eGRpYWxvZ01vZGU7DQogICAgICAgIHZhciB4eGRpYWxvZ0Z1bmM7DQogICAgICAgIHZhciB4eGRpYWxvZ0J1dHRvbnM7DQogICAgICAgIHZhciB4eGRpYWxvZ1RhZzsNCg0KICAgICAgICAvLyBEaXNwbGF5IGEgZGlhbG9nIGJveA0KICAgICAgICAvLyBQYXJhbWV0ZXJzOiBEaWFsb2cgTW9kZSAoMCA9IG5vbmUpLCBEaWFsb2cgVGl0bGUsIEJ1dHRvbnMgKDEgPSBPSywgMiA9IENhbmNlbCwgMyA9IE9LICYgQ2FuY2VsKSwgQ2FsbCBiYWNrIGZ1bmN0aW9uKDAgPSBDYW5jZWwsIDEgPSBPSyksIERpYWxvZyBDb250ZW50IChNb2RlIDExIG9ubHkpDQogICAgICAgIGZ1bmN0aW9uIHNldERpYWxvZ01vZGUoeCwgeSwgYiwgZiwgYywgdGFnKSB7DQogICAgICAgICAgICB4eGRpYWxvZ01vZGUgPSB4Ow0KICAgICAgICAgICAgeHhkaWFsb2dGdW5jID0gZjsNCiAgICAgICAgICAgIHh4ZGlhbG9nQnV0dG9ucyA9IGI7DQogICAgICAgICAgICB4eGRpYWxvZ1RhZyA9IHRhZzsNCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCB0cnVlKTsNCiAgICAgICAgICAgIFFWKCdpZHhfZGxnT2tCdXR0b24nLCBiICYgMSk7DQogICAgICAgICAgICBRVignaWR4X2RsZ0NhbmNlbEJ1dHRvbicsIGIgJiAyKTsNCiAgICAgICAgICAgIFFWKCdpZF9kaWFsb2djbG9zZScsIGIgJiAyKTsNCiAgICAgICAgICAgIFFWKCdpZHhfZGxnRGVsZXRlQnV0dG9uJywgYiAmIDQpOw0KICAgICAgICAgICAgaWYgKHkpIFFIKCdpZF9kaWFsb2d0aXRsZScsIHkpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCAyNjsgaSsrKSB7IFFWKCdkaWFsb2cnICsgaSwgaSA9PSB4KTsgfSAvLyBFZGl0IHRoaXMgbGluZSB3aGVuIG1vcmUgZGlhbG9ncyBhcmUgYWRkZWQNCiAgICAgICAgICAgIFFWKCdkaWFsb2cnLCB4KTsNCiAgICAgICAgICAgIGlmIChjKSB7IGlmICh4ID09IDExKSB7IFFIKCdpZF9kaWFsb2dPcHRpb25zJywgYyk7IH0gZWxzZSB7IFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgYyk7IH0gfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGlhbG9nY2xvc2UoeCkgew0KICAgICAgICAgICAgdmFyIGYgPSB4eGRpYWxvZ0Z1bmMsIGIgPSB4eGRpYWxvZ0J1dHRvbnMsIHQgPSB4eGRpYWxvZ1RhZzsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgIGlmICgoKGIgJiA4KSB8fCB4KSAmJiBmKSBmKHgsIHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2VudGVyKCkgew0KICAgICAgICAgICAgUVMoJ2RpYWxvZycpLmxlZnQgPSAoKCgoZ2V0RG9jV2lkdGgoKSAtIDQwMCkgLyAyKSkgKyAicHgiKTsNCg0KICAgICAgICAgICAgLy9RUygnaWRfbWFpbmFyZWFfZnJhbWUnKS5oZWlnaHQgPSBRKCdpZF9tYWluYXJlYScpLm9mZnNldEhlaWdodDsNCiAgICAgICAgfQ0KICAgICAgICBmdW5jdGlvbiBtZXNzYWdlYm94KHQsIG0pIHsgUUgoJ2lkX2RpYWxvZ01lc3NhZ2UnLCBtKTsgc2V0RGlhbG9nTW9kZSgxLCB0LCAxKTsgfQ0KICAgICAgICBmdW5jdGlvbiBzdGF0dXNib3godCwgbSkgeyBRSCgnaWRfZGlhbG9nTWVzc2FnZScsIG0pOyBzZXREaWFsb2dNb2RlKDEsIHQpOyB9DQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gR0VORVJJQyBNRVRIT0RTDQogICAgICAgIC8vDQoNCg0KICAgICAgICBmdW5jdGlvbiBTYXZlSnNvbkZpbGUobmFtZSwgbmFtZTIsIGRlc2MsIGRhdGEpIHsNCiAgICAgICAgICAgIHZhciBuID0gJycsIHIgPSB7fSwgZCA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICBpZiAoYW10c3lzc3RhdGUpIHsNCiAgICAgICAgICAgICAgICBuID0gIi0iICsgYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsnSG9zdE5hbWUnXTsNCiAgICAgICAgICAgICAgICByID0geyd3ZWJhcHB2ZXJzaW9uJzp2ZXJzaW9uLCdkZXNjcmlwdGlvbic6ZGVzYywnaG9zdG5hbWUnOmFtdHN5c3N0YXRlWydBTVRfR2VuZXJhbFNldHRpbmdzJ10ucmVzcG9uc2VbJ0hvc3ROYW1lJ10sJ2xvY2FsdGltZSc6RGF0ZSgpLCd1dGN0aW1lJzpuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCksJ2lzb3RpbWUnOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX07DQogICAgICAgICAgICAgICAgaWYgKEhhcmR3YXJlSW52ZW50b3J5KSByWydzeXN0ZW1pZCddID0gZ3VpZFRvU3RyKEhhcmR3YXJlSW52ZW50b3J5WydDSU1fQ29tcHV0ZXJTeXN0ZW1QYWNrYWdlJ10ucmVzcG9uc2VbIlBsYXRmb3JtR1VJRCJdLnRvTG93ZXJDYXNlKCkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgbiArPSAnLScgKyBkLmdldEZ1bGxZZWFyKCkgKyAiLSIgKyAoIjAiKyhkLmdldE1vbnRoKCkrMSkpLnNsaWNlKC0yKSArICItIiArICgiMCIgKyBkLmdldERhdGUoKSkuc2xpY2UoLTIpICsgIi0iICsgKCIwIiArIGQuZ2V0SG91cnMoKSkuc2xpY2UoLTIpICsgIi0iICsgKCIwIiArIGQuZ2V0TWludXRlcygpKS5zbGljZSgtMik7Ow0KICAgICAgICAgICAgcltuYW1lMl0gPSBkYXRhOw0KDQogICAgICAgICAgICBzYXZlQXMoZGF0YTJibG9iKEpTT04uc3RyaW5naWZ5KHIsIG51bGwsICcgICcpLnJlcGxhY2UoL1xuL2csICdcclxuJykpLCBuYW1lICsgbiArICcuanNvbicpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGh0dHBFcnJvclRhYmxlID0gew0KICAgICAgICAgICAgMjAwOiAnT0snLA0KICAgICAgICAgICAgNDAxOiAnQXV0aGVudGljYXRpb24gRXJyb3InLA0KICAgICAgICAgICAgNDA4OiAnVGltZW91dCBFcnJvcicsDQogICAgICAgICAgICA2MDE6ICdXU01BTiBQYXJzaW5nIEVycm9yJywNCiAgICAgICAgICAgIDYwMjogJ1VuYWJsZSB0byBwYXJzZSBIVFRQIHJlc3BvbnNlIGhlYWRlcicsDQogICAgICAgICAgICA2MDM6ICdVbmV4cGVjdGVkIEhUVFAgZW51bSByZXNwb25zZScsDQogICAgICAgICAgICA2MDQ6ICdVbmV4cGVjdGVkIEhUVFAgcHVsbCByZXNwb25zZScsDQogICAgICAgIH0NCiAgICAgICAgZnVuY3Rpb24gZXJyY2hlY2socywgc3RhY2spIHsNCiAgICAgICAgICAgIGlmICh3c3N0YWNrID09IG51bGwgfHwgYW10c3RhY2sgIT0gc3RhY2spIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgaWYgKHMgIT0gMjAwICYmIHMgIT0gOSkgew0KICAgICAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgICAgICB3c3N0YWNrLmNvbW0uRmFpbEFsbEVycm9yID0gOTk5OyAvLyBDYXVzZSBhbGwgbmV3IHJlc3BvbnNlcyB0byBiZSBzaWxlbnQNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DYW5jZWxBbGxRdWVyaWVzKDk5OSk7DQogICAgICAgICAgICAgICAgUUgoJ2lkX21lc3NhZ2V2aWV3c3RyJywgKChodHRwRXJyb3JUYWJsZVtzXSk/KGh0dHBFcnJvclRhYmxlW3NdKTooJ0Vycm9yICMnICsgcykpKTsNCiAgICAgICAgICAgICAgICBnbygxMDApOw0KICAgICAgICAgICAgICAgIFFTKCdpZF9wcm9ncmVzc2JhcicpLndpZHRoID0gMDsNCg0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIChzICE9IDIwMCk7DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIGdvaUZyYW1lKGUseCx5KSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBnbyh4KTsNCiAgICAgICAgICAgIGlmICgoZS5zaGlmdEtleSA9PSB0cnVlKSB8fCAoUSgnaWRfU3RvcmFnZUlGcmFtZScpLnNyYy5lbmRzV2l0aCh5KSA9PSBmYWxzZSkpIFEoJ2lkX1N0b3JhZ2VJRnJhbWUnKS5zcmMgPSB5Ow0KICAgICAgICAgICAgUVYoJ2lkX21haW5hcmVhX3BhZCcsIGZhbHNlKTsNCiAgICAgICAgICAgIFFWKCdpZF9tYWluYXJlYV9mcmFtZScsIHRydWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZ28oeCwgZm9yY2UpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgJiYgZm9yY2UgIT0gMSkgcmV0dXJuOw0KDQogICAgICAgICAgICBRVignaWRfbWFpbmFyZWFfZnJhbWUnLCBmYWxzZSk7DQogICAgICAgICAgICBRVignaWRfbWFpbmFyZWFfcGFkJywgdHJ1ZSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF9sbXNNYWluUGFuZWwnLCB4ID09IDEwMSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF91c2JTZXR1cFBhbmVsJywgeCA9PSAxMDIpOw0KICAgICAgICAgICAgUVYoJ2lkX21lc3NhZ2V2aWV3JywgeCA9PSAxMDApOw0KICAgICAgICAgICAgUVYoJ2lkX21haW52aWV3JywgeCA8IDEwMCk7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpKyspIHsgLy8gRWRpdCB0aGlzIGxpbmUgd2hlbiBhZGRpbmcgYSBuZXcgc2NyZWVuDQogICAgICAgICAgICAgICAgUVYoJ3AnICsgaSwgaSA9PSB4KTsNCiAgICAgICAgICAgICAgICB2YXIgcSA9IFFTKCdnbycgKyBpKTsNCi8vICMjI0JFR0lOIyMje0xvb2stSW50ZWx9DQogICAgICAgICAgICAgICAgaWYgKHEpIHsgcVsnYmFja2dyb3VuZC1jb2xvciddID0gKChpID09IHgpPyIjYWJjYWUxIjoiIik7IH0gLy8gI2U4ZWVmZQ0KLy8gIyMjRU5EIyMje0xvb2stSW50ZWx9DQoNCiAgICAgICAgICAgICAgICBpZiAocSkgeyBxWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAoKGkgPT0geCk/ImdyYXkiOiIiKTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY3VycmVudFZpZXcgPSB4Ow0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcG9ydHNGcm9tSG9zdChob3N0LCB0bHMpIHsgdmFyIHggPSBkZWNvZGVVUklDb21wb25lbnQoaG9zdCkuc3BsaXQoJzonKSwgaHAgPSAoKHRscyA9PSAwKSA/IDE2OTkyIDogMTY5OTMpLCBycCA9ICgodGxzID09IDApID8gMTY5OTQgOiAxNjk5NSk7IGlmICh4Lmxlbmd0aCA+IDEpIHsgaHAgPSBwYXJzZUludCh4WzFdKTsgfSBpZiAoeC5sZW5ndGggPiAyKSB7IHJwID0gcGFyc2VJbnQoeFsyXSk7IH0gcmV0dXJuIHsgaG9zdDogeFswXSwgaHR0cDogaHAsIHJlZGlyOiBycCB9IH0NCiAgICAgICAgZnVuY3Rpb24gYWRkTGluayh4LCBmKSB7IHJldHVybiAiPGEgc3R5bGU9Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Ymx1ZSBvbmNsaWNrPSciICsgZiArICInPiZkaWFtczsgIiArIHggKyAiPC9hPiI7IH0NCiAgICAgICAgZnVuY3Rpb24gYWRkTGlua0NvbmRpdGlvbmFsKHgsIGYsIGMpIHsgaWYgKGMpIHJldHVybiBhZGRMaW5rKHgsIGYpOyByZXR1cm4geDsgfQ0KICAgICAgICBmdW5jdGlvbiBoYWx0RXZlbnQoZSkgeyBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpOyBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIGUuc3RvcFByb3BhZ2F0aW9uKCk7IHJldHVybiBmYWxzZTsgfQ0KICAgICAgICBmdW5jdGlvbiBhZGRPcHRpb24ocSwgdCwgaSkgeyB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7IG9wdGlvbi50ZXh0ID0gdDsgb3B0aW9uLnZhbHVlID0gaTsgUShxKS5hZGQob3B0aW9uKTsgfQ0KICAgICAgICBmdW5jdGlvbiBhZGREaXNhYmxlZE9wdGlvbihxLCB0LCBpKSB7IHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsgb3B0aW9uLnRleHQgPSB0OyBvcHRpb24udmFsdWUgPSBpOyBvcHRpb24uZGlzYWJsZWQgPSAxOyBRKHEpLmFkZChvcHRpb24pOyB9DQogICAgICAgIGZ1bmN0aW9uIHBhc3N3b3JkY2hlY2socCkgeyBpZiAocC5sZW5ndGggPCA4KSByZXR1cm4gZmFsc2U7IHZhciB1cHBlciA9IDAsIGxvd2VyID0gMCwgbnVtYmVyID0gMCwgbm9uYWxwaGEgPSAwOyBmb3IgKHZhciBpIGluIHApIHsgdmFyIGMgPSBwLmNoYXJDb2RlQXQoaSk7IGlmICgoYyA+IDY0KSAmJiAoYyA8IDkxKSkgeyB1cHBlciA9IDE7IH0gZWxzZSBpZiAoKGMgPiA5NikgJiYgKGMgPCAxMjMpKSB7IGxvd2VyID0gMTsgfSBlbHNlIGlmICgoYyA+IDQ3KSAmJiAoYyA8IDU4KSkgeyBudW1iZXIgPSAxOyB9IGVsc2UgeyBub25hbHBoYSA9IDE7IH0gfSByZXR1cm4gKCh1cHBlciArIGxvd2VyICsgbnVtYmVyICsgbm9uYWxwaGEpID09IDQpOyB9DQogICAgICAgIGZ1bmN0aW9uIG1ldGhvZGNoZWNrKHIpIHsgaWYgKHIgJiYgciAhPSBudWxsICYmIHIuQm9keSAmJiByLkJvZHlbJ1JldHVyblZhbHVlJ10gIT0gMCkgeyBtZXNzYWdlYm94KCJDYWxsIEVycm9yIiwgci5IZWFkZXJbJ01ldGhvZCddICsgIjogIiArIChyLkJvZHkuUmV0dXJuVmFsdWVTdHIgKyAnJykucmVwbGFjZSgiXyIsICIgIikpOyByZXR1cm4gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IH0NCiAgICAgICAgZnVuY3Rpb24gVGFibGVTdGFydCgpIHsgcmV0dXJuICI8dGFibGUgY2xhc3M9J2xvZzEgdXMnIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4Pjx0cj48dGQgd2lkdGg9MjAwcHg+PHA+PHRkPiI7IH0NCiAgICAgICAgZnVuY3Rpb24gVGFibGVTdGFydDIoKSB7IHJldHVybiAiPHRhYmxlIGNsYXNzPSdsb2cxIHVzJyBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweD48dHI+PHRkPjxwPjx0ZD4iOyB9DQogICAgICAgIGZ1bmN0aW9uIFRhYmxlRW50cnkobiwgdikgeyByZXR1cm4gIjx0cj48dGQgY2xhc3M9cjE+PHA+IiArIG4gKyAiPHRkIGNsYXNzPXIxPiIgKyB2OyB9DQogICAgICAgIGZ1bmN0aW9uIEZ1bGxUYWJsZSh4LCBlKSB7IHZhciByID0gVGFibGVTdGFydCgpOyBmb3IgKGkgaW4geCkgeyBpZiAoaSAmJiB4W2ldKSByICs9IFRhYmxlRW50cnkoaSwgeFtpXSk7IH0gcmV0dXJuIHIgKyBUYWJsZUVuZChlKTsgfQ0KICAgICAgICBmdW5jdGlvbiBUYWJsZUVuZChuKSB7IHJldHVybiAiPHRyPjx0ZCBjb2xzcGFuPTI+PHA+IiArIChuP246JycpICsgIjwvdGFibGU+IjsgfQ0KICAgICAgICBmdW5jdGlvbiBBZGRCdXR0b24odiwgZikgeyByZXR1cm4gIjxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT0nIiArIHYgKyAiJyBvbmNsaWNrPSciICsgZiArICInIHN0eWxlPW1hcmdpbjo0cHg+IjsgfQ0KICAgICAgICBmdW5jdGlvbiBBZGRCdXR0b24yKHYsIGYsIHMpIHsgcmV0dXJuICI8aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9JyIgKyB2ICsgIicgb25jbGljaz0nIiArIGYgKyAiJyAiICsgcyArICI+IjsgfQ0KICAgICAgICBmdW5jdGlvbiBBZGRSZWZyZXNoQnV0dG9uKGYpIHsgcmV0dXJuICI8aW5wdXQgdHlwZT1idXR0b24gbmFtZT1yZWZyZXNoYnRuIHZhbHVlPVJlZnJlc2ggb25jbGljaz0ncmVmcmVzaEJ1dHRvbnMoZmFsc2UpOyIgKyBmICsgIicgc3R5bGU9bWFyZ2luOjRweCAiICsgKHJlZnJlc2hCdXR0b25zU3RhdGU9PWZhbHNlPyJkaXNhYmxlZCI6IiIpICsgIj4iOyB9DQogICAgICAgIGZ1bmN0aW9uIE1vcmVTdGFydCgpIHsgcmV0dXJuICI8YSBzdHlsZT1jdXJzb3I6cG9pbnRlcjtjb2xvcjpibHVlIGlkPW1vcmV4eHgxIG9uY2xpY2s9UVYoXCJtb3JleHh4MVwiLGZhbHNlKTtRVihcIm1vcmV4eHgyXCIsdHJ1ZSk+JiN4MjVCQzsgTW9yZTwvYT48ZGl2IGlkPW1vcmV4eHgyIHN0eWxlPWRpc3BsYXk6bm9uZT48YnI+PGhyPiI7IH07DQogICAgICAgIGZ1bmN0aW9uIE1vcmVFbmQoKSB7IHJldHVybiAiPGEgc3R5bGU9Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Ymx1ZSBvbmNsaWNrPVFWKFwibW9yZXh4eDJcIixmYWxzZSk7UVYoXCJtb3JleHh4MVwiLHRydWUpPiYjeDI1QjI7IExlc3M8L2E+PC9kaXY+IjsgfTsNCiAgICAgICAgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRPcHRpb25zKHNlbCkgeyB2YXIgb3B0cyA9IFtdLCBvcHQ7IGZvciAodmFyIGkgPSAwLCBsZW4gPSBzZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykgeyBvcHQgPSBzZWwub3B0aW9uc1tpXTsgaWYgKG9wdC5zZWxlY3RlZCkgeyBvcHRzLnB1c2gob3B0LnZhbHVlKTsgfSB9IHJldHVybiBvcHRzOyB9DQogICAgICAgIGZ1bmN0aW9uIGdldEluc3RhbmNlKHgsIHkpIHsgZm9yICh2YXIgaSBpbiB4KSB7IGlmICh4W2ldWyJJbnN0YW5jZUlEIl0gPT0geSkgcmV0dXJuIHhbaV07IH0gcmV0dXJuIG51bGw7IH0NCiAgICAgICAgZnVuY3Rpb24gZ2V0SXRlbSh4LCB5LCB6KSB7IGZvciAodmFyIGkgaW4geCkgeyBpZiAoeFtpXVt5XSA9PSB6KSByZXR1cm4geFtpXTsgfSByZXR1cm4gbnVsbDsgfQ0KICAgICAgICBmdW5jdGlvbiBndWlkVG9TdHIoZykgeyByZXR1cm4gZy5zdWJzdHJpbmcoNiwgOCkgKyBnLnN1YnN0cmluZyg0LCA2KSArIGcuc3Vic3RyaW5nKDIsIDQpICsgZy5zdWJzdHJpbmcoMCwgMikgKyAiLSIgKyBnLnN1YnN0cmluZygxMCwgMTIpICsgZy5zdWJzdHJpbmcoOCwgMTApICsgIi0iICsgZy5zdWJzdHJpbmcoMTQsIDE2KSArIGcuc3Vic3RyaW5nKDEyLCAxNCkgKyAiLSIgKyBnLnN1YnN0cmluZygxNiwgMjApICsgIi0iICsgZy5zdWJzdHJpbmcoMjApOyB9DQogICAgICAgIGZ1bmN0aW9uIGdldFVybFZhcnMoKSB7IHZhciBqLCBoYXNoLCB2YXJzID0gW10sIGhhc2hlcyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNsaWNlKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJz8nKSArIDEpLnNwbGl0KCcmJyk7IGZvciAodmFyIGkgPSAwOyBpIDwgaGFzaGVzLmxlbmd0aDsgaSsrKSB7IGogPSBoYXNoZXNbaV0uaW5kZXhPZignPScpOyBpZiAoaiA+IDApIHsgdmFyc1toYXNoZXNbaV0uc3Vic3RyaW5nKDAsIGopXSA9IGhhc2hlc1tpXS5zdWJzdHJpbmcoaiArIDEsIGhhc2hlc1tpXS5sZW5ndGgpOyB9IH0gcmV0dXJuIHZhcnM7IH0NCiAgICAgICAgZnVuY3Rpb24gZ2V0RG9jV2lkdGgoKSB7IGlmICh3aW5kb3cuaW5uZXJXaWR0aCkgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoOyBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggIT0gMCkgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uY2xpZW50V2lkdGg7IH0NCiAgICAgICAgZnVuY3Rpb24gZ2V0RG9jSGVpZ2h0KCkgeyBpZiAod2luZG93LmlubmVySGVpZ2h0KSByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0OyBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAhPSAwKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uY2xpZW50SGVpZ2h0OyB9DQogICAgICAgIGZ1bmN0aW9uIGFkZEh0bWxWYWx1ZSh0LCB2KSB7IHJldHVybiAnPGRpdiBzdHlsZT1oZWlnaHQ6MjBweD48ZGl2IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIyMHB4O292ZXJmbG93OmhpZGRlbj48YiB0aXRsZT0iJyArIHYgKyAnIj4nICsgdiArICc8L2I+PC9kaXY+PGRpdj4nICsgdCArICc8L2Rpdj48L2Rpdj4nOyB9DQogICAgICAgIGZ1bmN0aW9uIGFkZEh0bWxWYWx1ZU5vVGl0bGUodCwgdikgeyByZXR1cm4gJzxkaXYgc3R5bGU9aGVpZ2h0OjIwcHg+PGRpdiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMjBweDtvdmVyZmxvdzpoaWRkZW4+JyArIHYgKyAnPC9iPjwvZGl2PjxkaXY+JyArIHQgKyAnPC9kaXY+PC9kaXY+JzsgfQ0KICAgICAgICBmdW5jdGlvbiBudW1iZXJzT25seShlLCB4KSB7IHJldHVybiAoZXZlbnQuY2hhckNvZGUgPT0gMCkgfHwgKGV2ZW50LmNoYXJDb2RlID09IHgpIHx8IChldmVudC5jaGFyQ29kZSA+PSA0OCAmJiBldmVudC5jaGFyQ29kZSA8PSA1Nyk7IH0NCg0KDQogICAgICAgIC8vIEdldCB0aGluZ3Mgc3RhcnRlZA0KICAgICAgICBzdGFydHVwKCk7DQogICAgPC9zY3JpcHQ+"; amtLms.meshCommander = http.createServer(); amtLms.meshCommander.listen(16994); @@ -1531,11 +1531,15 @@ function getAmtStorage(func, noretry) { response.on('data', function (chunk) { if (response.acc == null) { response.acc = chunk; } else { response.acc += chunk; } }); response.on('end', function () { var data = response.acc.toString(), len, data2, amtstorage = null; + data = data.split('\t').join('').split('\r').join('').split('\n').join(''); try { + do { len = data.length; data2 = data; data = data2.replace('": ', '":'); } while (data != data2); // Remove all zero's, this is needed because firmware sometimes returns garbage we must fix. do { len = data.length; data2 = data; data = data2.replace('\x00', ''); } while (data != data2); // Remove all zero's, this is needed because firmware sometimes returns garbage we must fix. do { len = data.length; data2 = data; data = data2.replace('\x22\x01\x22', '\x22\x22'); } while (data != data2); // "\x01", this is needed because firmware sometimes returns garbage we must fix. + var xopen = data.split("{").length, xclose = data.split("}").length, xadd = ''; + while (xopen > xclose) { data += '}'; xclose++; } // Close any missing close brackets amtstorage = JSON.parse(data); - } catch (e) { console.log("Error: Unable to parse Intel AMT response."); func(null); } + } catch (e) { console.log("Error: Unable to parse Intel AMT response: " + data, e); func(null); } if (func != null) { func(response.statusCode, amtstorage); } }); }); diff --git a/agents/meshcmd.min.js b/agents/meshcmd.min.js index 7f3dfa26..2bc43257 100644 --- a/agents/meshcmd.min.js +++ b/agents/meshcmd.min.js @@ -1 +1 @@ -var fs=require("fs");var os=require("os");var net=require("net");var http=require("http");var dgram=require("dgram");var httpHeaders=require("http-headers");var tcpserver=null;var broadcastSockets={};var multicastSockets={};var discoveryInterval=null;var membershipIPv4="239.255.255.235";var membershipIPv6="FF02:0:0:0:0:0:0:FE";var settings=null;var meshCmdVersion="***Mesh*Cmd*Version***";var amtLms=null,amtMei=null,amtMeiState=null;var wsstack=null,amtstack=null;var oswsstack=null,osamtstack=null;var amtMeiTmpState=null;var SMBiosTables=null;var Large_IntelAmtWebApp="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";var Medium_IntelAmtWebApp="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";var Small_IntelAmtWebApp="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";function onVerifyServer(b,a){if(a==null){a=b}try{for(var d in a){if(a[d].fingerprint.replace(/:/g,"")==settings.serverhttpshash){return}}}catch(c){}if(serverhash!=null){console.log("Error: Failed to verify server certificate.");throw"Invalid server certificate"}}function debug(a,b){if((settings.debuglevel!=null)&&(settings.debuglevel>=a)){console.log(b)}}function exit(b){if(b==null){b=0}try{process.exit(b)}catch(a){}}function getInstance(b,c){for(var a in b){if(b[a]["InstanceID"]==c){return b[a]}}return null}function md5hex(a){return require("MD5Stream").create().syncHash(a).toString("hex")}function guidToStr(a){return a.substring(6,8)+a.substring(4,6)+a.substring(2,4)+a.substring(0,2)+"-"+a.substring(10,12)+a.substring(8,10)+"-"+a.substring(14,16)+a.substring(12,14)+"-"+a.substring(16,20)+"-"+a.substring(20)}function parceArguments(a){var d={};for(var b in a){b=parseInt(b);if(a[b].startsWith("--")==true){var c=a[b].substring(2).toLowerCase(),e=true;if(((b+1)8){return"[...]"}if(e==undefined){return"[undefined]"}if(typeof e=="string"){if(b==0){return e}return'"'+(e.split("\0")[0])+'"'}if(typeof e=="buffer"){return"[buffer]"}if(typeof e!="object"){return e}var c="{"+(d?"\r\n":" ");for(var a in e){if(a!="_ObjectID"){c+=(addPad(b+2,d)+a+": "+objToString(e[a],b+2,d)+(d?"\r\n":" "))}}return c+addPad(b,d)+"}"}function addPad(b,d){var c="";for(var a=0;a=2){settings={action:j[1]}}}if(settings==null){settings={}}var p={};for(var m in settings){p[m.toLowerCase()]=settings[m]}settings=p;if((typeof h.action)=="string"){settings.action=h.action}if((typeof h.localport)=="string"){settings.localport=parseInt(h.localport)}if((typeof h.remotenodeid)=="string"){settings.remotenodeid=h.remotenodeid}if((typeof h.username)=="string"){settings.username=h.username}if((typeof h.password)=="string"){settings.password=h.password}if((typeof h.user)=="string"){settings.username=h.user}if((typeof h.pass)=="string"){settings.password=h.pass}if((typeof h.host)=="string"){settings.hostname=h.host}if((typeof h.hostname)=="string"){settings.hostname=h.hostname}if((typeof h.serverid)=="string"){settings.serverid=h.serverid}if((typeof h.serverhttpshash)=="string"){settings.serverhttpshash=h.serverhttpshash}if((typeof h.remoteport)=="string"){settings.remoteport=parseInt(h.remoteport)}if((typeof h.out)=="string"){settings.output=h.out}if((typeof h.output)=="string"){settings.output=h.output}if((typeof h.debug)=="string"){settings.debuglevel=parseInt(h.debug)}if((typeof h.script)=="string"){settings.script=h.script}if((typeof h.agent)=="string"){settings.agent=h.agent}if((typeof h.proxy)=="string"){settings.proxy=h.proxy}if(h.debug){try{waitForDebugger()}catch(k){}}if(h.noconsole){settings.noconsole=true}if(h.nocommander){settings.noconsole=true}if(h.lmsdebug){settings.lmsdebug=true}if(h.tls){settings.tls=true}if((j.length>1)&&(d.indexOf(j[1].toUpperCase())>=0)){settings.action=j[1]}if(settings.action==null){console.log("MeshCentral Command (MeshCmd) "+meshCmdVersion);console.log("No action specified, use MeshCmd like this:\r\n");console.log(" meshcmd [action] [arguments...]\r\n");console.log("Valid MeshCentral actions:");console.log(" Route - Map a local TCP port to a remote computer.");console.log("\r\nValid local actions:");console.log(" SMBios - Display System Management BIOS tables for this computer.");console.log(" RawSMBios - Display RAW System Management BIOS tables for this computer.");console.log(" MicroLMS - Run MicroLMS, allowing local access to Intel AMT.");console.log(" AmtInfo - Show Intel AMT version and activation state.");console.log(" AmtVersions - Show all Intel ME version information.");console.log(" AmtHashes - Show all Intel AMT trusted activation hashes.");console.log(" AmtCCM - Activate Intel AMT into Client Control Mode.");console.log(" AmtDeactivate - Deactivate Intel AMT if activated in Client Control mode.");console.log("\r\nValid local or remote actions:");console.log(" MeshCommander - Launch a local MeshCommander web server.");console.log(" AmtUUID - Show Intel AMT unique identifier.");console.log(" AmtAuditLog - Show the Intel AMT audit log.");console.log(" AmtLoadWebApp - Load MeshCommander in Intel AMT 11.6+ firmware.");console.log(" AmtClearWebApp - Clear everything from Intel AMT web storage.");console.log(" AmtStorageState - Show contents of the Intel AMT web storage.");console.log(" AmtSaveState - Save all Intel AMT WSMAN object to file.");console.log(" AmtPresence - Heartbeat a local Intel AMT watchdog agent.");console.log(" AmtScript - Run .mescript on Intel AMT.");console.log("\r\nHelp on a specific action using:\r\n");console.log(" meshcmd help [action]");exit(1);return}if(settings.action=="help"){if(j.length<=2){d.shift();console.log("Help usage:\r\n\r\n MeshCmd help [action]\r\n\r\nValid actions are: "+d.join(", ")+".");exit(1);return}var a=j[2].toLowerCase();if(a=="route"){console.log("The route action is used along with a MeshCentral account to map a local TCP port to a remote port on any computer on your MeshCentral account. This action requires many arguments, to avoid specifying them all it's best to download the meshaction.txt file from the web site and place it in the current folder. Example usage:\r\n\r\n (Place meshaction.txt file in current folder)\r\n meshcmd route --pass myAccountPassword")}else{if(a=="smbios"){console.log("SMBios action will display this computer's system management BIOS information. Example usage:\r\n\r\n meshcmd smbios --out smbios.txt\r\n");console.log("\rOptional arguments:\r\n");console.log(" --output [filename] Optional filename to write the results to.")}else{if(a=="rawsmbios"){console.log("RawSMBios action will display this computer's system management BIOS information in raw hexdecimal form. Example usage:\r\n\r\n meshcmd rawsmbios --out smbios.txt\r\n");console.log("\rOptional arguments:\r\n");console.log(" --output [filename] Optional filename to write the results to.")}else{if(a=="amtinfo"){console.log("AmtInfo action will get the version and activation state of Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Example usage:\r\n\r\n meshcmd amtinfo")}else{if((a=="amtversion")||(a=="amtversions")){console.log("AmtVersions will display all version information about Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Example usage:\r\n\r\n meshcmd amtversions")}else{if(a=="amthashes"){console.log("Amthashes will display all trusted activations hashes for Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd amthashes")}else{if((a=="microlms")||(a=="lms")||(a=="amtlms")){console.log("Starts MicroLMS on this computer, allowing local access to Intel AMT on TCP ports 16992 and 16993 when applicable. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd microlms");console.log("\r\nPossible arguments:\r\n");console.log(" --noconsole MeshCommander for LMS will no be available on port 16994.");console.log("\r\nRun as a background service:\r\n");console.log(" microlms install/uninstall/start/stop.")}else{if(a=="amtccm"){console.log('AmtCCM will attempt to activate Intel AMT on this computer into client control mode (CCM). The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Intel AMT must be in "pre-provisioning" state for this command to work and a administrator password must be provided. Example usage:\r\n\r\n meshcmd amtccm --pass mypassword')}else{if(a=="amtdeactivate"){console.log("AmtDeactivate will attempt to deactivate Intel AMT on this computer when in client control mode (CCM). The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Intel AMT must be activated in client control mode for this command to work. Example usage:\r\n\r\n meshcmd amtdeactivate")}else{if(a=="amtuuid"){console.log("AmtUUID action will get the unique identifier of the local or remote Intel AMT computer. By default, the local UUID is obtained unless a host is specified. Intel AMT must be activated for this command to work. Example usage:\r\n\r\n meshcmd amtuuid --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if((a=="amtloadwebapp")||(a=="amtloadsmallwebapp")||(a=="amtloadlargewebapp")||(a=="amtclearwebapp")||(a=="amtstoragestate")){console.log('AmtLoadWebApp action will load MeshCommander into Intel AMT 11.6 or higher. If the computer is in ACM mode, MeshCommander will replace the default index.htm on HTTP/16992 or HTTPS/16993. If Intel AMT is in CCM mode, MeshCommander will be installed alongside the default web page and will be accessible in the "Web Applications" section. This action works on Intel AMT 11.6 and higher only. Example usage:\r\n\r\n meshcmd amtloadwebapp --host 1.2.3.4 --user admin --pass mypassword --tls');console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtclearwebstorage"){console.log("AmtClearWebStorage will clear the web storage of Intel AMT, removing any loaded firmware version of MeshCommander. This command can clear the local or a remote Intel AMT computer. By default, the local computer storage is cleared unless a host is specified. Intel AMT must be activated for this command to work. This action works on Intel AMT 11.6 and higher only. Example usage:\r\n\r\n meshcmd amtclearwebstorage --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtstoragestate"){console.log("AmtStorageState will display the content of the web storage of Intel AMT including any loaded firmware version of MeshCommander. This command can read the storage state of a local or remote Intel AMT computer. By default, the local computer storage state is displayed unless a host is specified. Intel AMT must be activated for this command to work. This action works on Intel AMT 11.6 and higher only. Example usage:\r\n\r\n meshcmd amtstoragestate --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtsavestate"){console.log("AmtSaveState action will fetch all the entire state of Intel AMT and save it as a JSON file. This action will take multiple minutes to perform. The command will fetch the local computer state unless host is specified. Intel AMT must be ativated for this command to work. Example usage:\r\n\r\n meshcmd amtsavestate --host 1.2.3.4 --user admin --pass mypassword --tls --output state.json");console.log("\r\nPossible arguments:\r\n");console.log(" --output [filename] The output file for the Intel AMT state in JSON format.");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtpresence"){console.log("AmtPresence will heartbeat a local Intel AMT watchdog agent. Example usage:\r\n\r\n meshcmd amtpresence --agent B4B6A24C-255E-A75C-F5E8-B00B4D946AA7");console.log("\r\nPossible arguments:\r\n");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --agent [uuid] The unique identifier of the watchdog agent.")}else{if(a=="amtscript"){console.log("AmtScript will run a .mescript file on the local or remote Intel AMT. Script files can be built using the MeshCommander script editor and be used to setup or perform actions on Intel AMT. Example usage:\r\n\r\n meshcmd amtscript --script myscript.mescript --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --script [filename] The script file to run on Intel AMT.");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="meshcommander"){console.log("This action launched a local web server that hosts MeshCommander, a Intel AMT management console.");console.log("\r\nPossible arguments:\r\n");console.log(" --localport [port] Local port used for the web server, 3000 is default.");console.log("\r\nRun as a background service:\r\n");console.log(" meshcommander install/uninstall/start/stop.")}else{if(a=="amtauditlog"){console.log("AmtAuditLog action will fetch the local or remote audit log. If used localy, no username/password is required. Example usage:\r\n\r\n meshcmd amtauditlog --host 1.2.3.4 --user admin --pass mypassword --tls --output audit.json");console.log("\r\nPossible arguments:\r\n");console.log(" --output [filename] The output file for the Intel AMT state in JSON format.");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{d.shift();console.log("Invalid action, usage:\r\n\r\n meshcmd help [action]\r\n\r\nValid actions are: "+d.join(", ")+".")}}}}}}}}}}}}}}}}}}exit(1);return}settings.action=settings.action.toLowerCase();debug(1,"Settings: "+JSON.stringify(settings));if((typeof settings.proxy)=="string"){var n=settings.proxy.split(":"),o=(n.length==2)?parseInt(n[1]):0;if((n.length!=2)||(n[0].length<1)||(o<1)||(o>65535)){console.log('Invalid "proxy" specified, use --proxy [hostname]:[port].');exit(1);return}try{require("global-tunnel").initialize({host:n[0],port:o})}catch(l){console.log(l);exit(1);return}console.log("Proxy set to "+n[0]+":"+o)}if(settings.action=="smbios"){SMBiosTables=require("smbios");SMBiosTables.get(function(e){var t=SMBiosTables.parse(e);var s=objToString(t,0,"\r\n");if(settings.output==null){console.log(s)}else{var q=fs.openSync(settings.output,"w");fs.writeSync(q,Buffer.from(s,"utf8"));fs.closeSync(q)}exit(1)})}else{if(settings.action=="rawsmbios"){SMBiosTables=require("smbios");SMBiosTables.get(function(e){var u="";for(var s in e){var r=false;for(var t in e[s]){if(e[s][t].length>0){if(r==false){u+=("Table type #"+s+((SMBiosTables.smTableTypes[s]==null)?"":(", "+SMBiosTables.smTableTypes[s])))+"\r\n";r=true}u+=(" "+e[s][t].toString("hex"))+"\r\n"}}}if(settings.output==null){console.log(u)}else{var q=fs.openSync(settings.output,"w");fs.writeSync(q,Buffer.from(u,"utf8"));fs.closeSync(q)}exit(1)})}else{if(settings.action=="route"){if((settings.localport==null)||(typeof settings.localport!="number")||(settings.localport<0)||(settings.localport>65535)){console.log('No or invalid "localPort" specified, use --localport [localport].');exit(1);return}if((settings.remotenodeid==null)||(typeof settings.remotenodeid!="string")){console.log('No or invalid "remoteNodeId" specified.');exit(1);return}if((settings.username==null)||(typeof settings.username!="string")||(settings.username=="")){console.log('No or invalid "username" specified, use --username [username].');exit(1);return}if((settings.password==null)||(typeof settings.password!="string")||(settings.password=="")){console.log('No or invalid "password" specified, use --password [password].');exit(1);return}if((settings.serverid==null)||(typeof settings.serverid!="string")||(settings.serverid.length!=96)){console.log('No or invalid "serverId" specified.');exit(1);return}if((settings.serverhttpshash==null)||(typeof settings.serverhttpshash!="string")||(settings.serverhttpshash.length!=96)){console.log('No or invalid "serverHttpsHash" specified.');exit(1);return}if((settings.remoteport==null)||(typeof settings.remoteport!="number")||(settings.remoteport<0)||(settings.remoteport>65535)){console.log('No or invalid "remotePort" specified, use --remoteport [remoteport].');exit(1);return}if(settings.serverurl!=null){startRouter()}else{discoverMeshServer()}}else{if((settings.action=="amtloadwebapp")||(settings.action=="amtloadsmallwebapp")||(settings.action=="amtloadlargewebapp")||(settings.action=="amtclearwebapp")||(settings.action=="amtstoragestate")){if((settings.password==null)||(typeof settings.password!="string")||(settings.password=="")){console.log('No or invalid "password" specified, use --password [password].');exit(1);return}if((settings.hostname==null)||(typeof settings.hostname!="string")||(settings.hostname=="")){settings.hostname="127.0.0.1"}if((settings.username==null)||(typeof settings.username!="string")||(settings.username=="")){settings.username="admin"}settings.protocol="http:";settings.localport=16992;debug(1,"Settings: "+JSON.stringify(settings));digest=require("http-digest").create(settings.username,settings.password);digest.http=require("http");if(settings.action=="amtstoragestate"){getAmtStorage(function(q,e){if(q==200){console.log("Storage State: "+JSON.stringify(e,null,2));exit();return}else{console.log("Unable to read storage state.");exit();return}})}else{if(settings.action=="amtloadwebapp"){settings.webapp=Medium_IntelAmtWebApp}else{if(settings.action=="amtloadsmallwebapp"){settings.webapp=Small_IntelAmtWebApp}else{if(settings.action=="amtloadlargewebapp"){settings.webapp=Large_IntelAmtWebApp}else{if(settings.action=="amtclearwebapp"){settings.webapp=null}}}}nextStepStorageUpload()}}else{if((settings.action=="amtversion")||(settings.action=="amtversions")||(settings.action=="amtver")){var g,f;try{g=require("amt-mei");f=new g()}catch(l){console.log(l);exit(1);return}f.on("error",function(q){console.log("ERROR: "+q);exit(1);return});f.getVersion(function(e){console.log("MEI Version = "+e.BiosVersion.toString());for(var q in e.Versions){console.log(e.Versions[q].Description+" = "+e.Versions[q].Version)}exit(1);return})}else{if(settings.action=="amthashes"){var g,f;try{g=require("amt-mei");f=new g()}catch(l){console.log(l);exit(1);return}f.on("error",function(q){console.log("ERROR: "+q);exit(1);return});f.getHashHandles(function(e){exitOnCount=e.length;for(var q=0;q100){lmsNotifications.shift()}var l=Buffer.concat([Buffer.from("0900","hex"),Buffer.from(JSON.stringify(k))]);for(var j in lmsControlSockets){lmsControlSockets[j].write(l)}}}});amtLms.on("bind",function(g){if(g[16992]){this.removeAllListeners("bind")}else{return}amtLms.connected=true;this.promise._res();if(settings.noconsole!==true){startMeshCommanderLms();tempTimer=setTimeout(function(){delete tempTimer;setupMeiOsAdmin(b,2)},100)}else{tempTimer=setTimeout(function(){delete tempTimer;setupMeiOsAdmin(b,1)},100)}});return(f)}function startMeshCommanderLms(){var b="W7PrsMdzMZVycLmuKL5r";var a="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";amtLms.meshCommander=http.createServer();amtLms.meshCommander.listen(16994);amtLms.meshCommander.on("upgrade",function(f,g,c){switch(f.url.split("?")[0]){case"/lms.ashx":g.ws=g.upgradeWebSocket();g.ws.on("data",processLmsControlData);g.ws.on("end",function(){if(lmsControlSockets[this.id]){delete lmsControlSockets[this.id]}});var d=lmsControlSocketsNextId++;lmsControlSockets[d]=g.ws;g.ws.id=d;break;case"/webrelay.ashx":g.ws=g.upgradeWebSocket();if(amtLms.connected==true){amtLms.bindDuplexStream(g.ws,"IPv4",16992)}else{var e=require("net");g.relay=e.connect({host:"127.0.0.1",port:16992});g.relay.on("connect",function(){g.ws.on("data",function(h){g.relay.write(h)});g.ws.on("end",function(){g.relay.end()})});g.relay.on("data",function(h){g.ws.write(h)});g.relay.on("close",function(){g.ws.end()})}break;default:g.end();break}});amtLms.meshCommander.on("request",function(f,g){switch(f.url.split("?")[0]){case"/":var d=null;try{d=fs.readFileSync("lmscommander.htm")}catch(c){}if(d!=null){g.writeHead(200,"OK",{Server:"JSLMS","Cache-Control":"max-age=0, no-cache","X-Frame-Options":"DENY","Content-Type":"text/html","Transfer-Encoding":"chunked"});g.end(d)}else{g.writeHead(200,"OK",{Server:"JSLMS","Cache-Control":"max-age=0, no-cache","X-Frame-Options":"DENY","Content-Type":"text/html","Content-Encoding":"gzip","Transfer-Encoding":"chunked",ETag:b});g.end(Buffer.from(a,"base64"))}break;default:g.statusCode=404;g.statusMessage="Not Found";g.end();break}})}function setupMeiOsAdmin(a,b){if(amtMei==null){if(a){a(b)}}else{amtMei.getLocalSystemAccount(function(f){var d=require("amt-wsman-duk");var e=require("amt-wsman");var c=require("amt");oswsstack=new e(d,"127.0.0.1",16992,f.user,f.pass,false);osamtstack=new c(oswsstack);if(a){a(b)}amtMei.getVersion(function(k){var g=null;try{for(var j in k.Versions){if(k.Versions[j].Description=="AMT"){g=parseInt(k.Versions[j].Version.split(".")[0])}}}catch(h){}if((g!=null)&&(g>=12)){kvmGetData("skip");tempTimer=setInterval(function(){kvmGetData()},2000);kvmSetData(JSON.stringify({action:"restart",ver:1}))}})})}}function kvmGetData(a){osamtstack.IPS_KVMRedirectionSettingData_DataChannelRead(kvmDataGetResponse,a)}function kvmDataGetResponse(d,b,c,f,g){if((g!="skip")&&(f==200)&&(c.Body.ReturnValue==0)){var h=null;try{h=Buffer.from(c.Body.DataMessage,"base64").toString()}catch(a){return}if(h!=null){kvmProcessData(c.Body.RealmsBitmap,c.Body.MessageId,h)}}}var webRtcDesktop=null;function kvmProcessData(d,c,g){var a=null;try{a=JSON.parse(g)}catch(b){}if((a!=null)&&(a.action)){if(a.action=="present"){kvmSetData(JSON.stringify({action:"present",ver:1,platform:process.platform}))}if(a.action=="offer"){webRtcDesktop={};var f=require("ILibWebRTC");webRtcDesktop.webrtc=f.createConnection();webRtcDesktop.webrtc.on("connected",function(){});webRtcDesktop.webrtc.on("disconnected",function(){webRtcCleanUp()});webRtcDesktop.webrtc.on("dataChannel",function(h){webRtcDesktop.rtcchannel=h;var e=require("meshDesktop");webRtcDesktop.kvm=e.getRemoteDesktopStream();webRtcDesktop.kvm.pipe(webRtcDesktop.rtcchannel,{dataTypeSkip:1,end:false});webRtcDesktop.rtcchannel.on("end",function(){webRtcCleanUp()});webRtcDesktop.rtcchannel.on("data",function(j){kvmCtrlData(this,j)});webRtcDesktop.rtcchannel.pipe(webRtcDesktop.kvm,{dataTypeSkip:1,end:false})});kvmSetData(JSON.stringify({action:"answer",ver:1,sdp:webRtcDesktop.webrtc.setOffer(a.sdp)}))}}}var path={join:function(){var c=[];for(var a in arguments){var b=arguments[a];if(b!=null){while(b.endsWith("/")||b.endsWith("\\")){b=b.substring(0,b.length-1)}if(a!=0){while(b.startsWith("/")||b.startsWith("\\")){b=b.substring(1)}}c.push(b)}}if(c.length==0){return"/"}return c.join("/")}};function getDirectoryInfo(f){var g={path:f,dir:[]};if(((f==undefined)||(f==""))&&(process.platform=="win32")){var h=null;try{h=fs.readDrivesSync()}catch(b){}if(h!=null){for(var c=0;c0&&c.charCodeAt(0)!=123){if(this.fileupload!=null){c=Buffer.from(c,"base64");var k=c.readUInt32BE(0);if((k==16777216)||(k==16777217)){fs.writeSync(this.fileupload.fp,c.slice(4));b.write({action:"upload",sub:"ack",reqid:this.fileupload.reqid});if(k==16777217){fs.closeSync(this.fileupload.fp);this.fileupload=null}}}return}try{c=JSON.parse(c)}catch(g){console.error("Invalid JSON: "+c);return}if((c.path!=null)&&(process.platform!="win32")&&(c.path[0]!="/")){c.path="/"+c.path}switch(c.action){case"ping":b.write({action:"pong"});break;case"ls":var p=getDirectoryInfo(c.path);if(c.reqid!=undefined){p.reqid=c.reqid}b.write(p);break;case"mkdir":fs.mkdirSync(c.path);break;case"rm":for(var l in c.delfiles){var j=path.join(c.path,c.delfiles[l]);try{fs.unlinkSync(j)}catch(f){console.log(f)}}break;case"rename":var o=path.join(c.path,c.oldname);var n=path.join(c.path,c.newname);try{fs.renameSync(o,n)}catch(f){console.log(f)}break;case"download":var r=0;if(c.sub=="start"){if(this.filedownload!=null){b.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}this.filedownload={id:c.id,path:c.path,ptr:0};try{this.filedownload.f=fs.openSync(this.filedownload.path,"rbN")}catch(f){b.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}if(this.filedownload){b.write({action:"download",sub:"start",id:c.id})}}else{if((this.filedownload!=null)&&(c.id==this.filedownload.id)){if(c.sub=="startack"){r=8}else{if(c.sub=="stop"){delete this.filedownload}else{if(c.sub=="ack"){r=1}}}}}while(r>0){r--;var a=Buffer.alloc(4096);var m=fs.readSync(this.filedownload.f,a,4,4092,null);this.filedownload.ptr+=m;if(m<4092){a.writeInt32BE(16777217,0);fs.closeSync(this.filedownload.f);delete this.filedownload;r=0}else{a.writeInt32BE(16777216,0)}b.write(a.slice(0,m+4).toString("base64"))}break;case"upload":if(c.sub=="start"){if(this.fileupload!=null){fs.closeSync(this.fileupload.fp)}if(!c.path||!c.name){break}this.fileupload={reqid:c.reqid};var h=path.join(c.path,c.name);try{this.fileupload.fp=fs.openSync(h,"wbN")}catch(f){}if(this.fileupload.fp){b.write({action:"upload",sub:"start",reqid:this.fileupload.reqid})}else{this.fileupload=null;b.write({action:"upload",sub:"error",reqid:this.fileupload.reqid})}}else{if(c.sub=="cancel"){if(this.fileupload!=null){fs.closeSync(this.fileupload.fp);this.fileupload=null}}}break;case"copy":for(var l in c.names){var q=path.join(c.scpath,c.names[l]),d=path.join(c.dspath,c.names[l]);if(q!=d){try{fs.copyFileSync(q,d)}catch(f){}}}break;case"move":for(var l in c.names){var q=path.join(c.scpath,c.names[l]),d=path.join(c.dspath,c.names[l]);if(q!=d){try{fs.copyFileSync(q,d);fs.unlinkSync(q)}catch(f){}}}break;default:break}}function webRtcCleanUp(){if(webRtcDesktop==null){return}if(webRtcDesktop.rtcchannel){try{webRtcDesktop.rtcchannel.close()}catch(a){}try{webRtcDesktop.rtcchannel.removeAllListeners("data")}catch(a){}try{webRtcDesktop.rtcchannel.removeAllListeners("end")}catch(a){}delete webRtcDesktop.rtcchannel}if(webRtcDesktop.webrtc){try{webRtcDesktop.webrtc.close()}catch(a){}try{webRtcDesktop.webrtc.removeAllListeners("connected")}catch(a){}try{webRtcDesktop.webrtc.removeAllListeners("disconnected")}catch(a){}try{webRtcDesktop.webrtc.removeAllListeners("dataChannel")}catch(a){}delete webRtcDesktop.webrtc}if(webRtcDesktop.kvm){try{webRtcDesktop.kvm.end()}catch(a){}delete webRtcDesktop.kvm}webRtcDesktop=null}function kvmSetData(a){osamtstack.IPS_KVMRedirectionSettingData_DataChannelWrite(Buffer.from(a).toString("base64"),function(){})}function startLmsWsmanResponse(d,b,c,e){if(e==600){console.log("ERROR: Unable to connect to Intel(R) AMT.")}else{if(e!=200){console.log("ERROR: Unable to get object from Intel(R) AMT, status = "+e+".")}else{var a=c.CIM_SoftwareIdentity.responses;if(a.length>0){var f=getInstance(a,"AMT")["VersionString"];amtversion=parseInt(f.split(".")[0]);amtversionmin=parseInt(f.split(".")[1])}}}}function processLmsControlData(b){if(b.length<2){return}var a=b.readUInt16LE(0);switch(a){case 1:getAmtInfo(function(c,d){c.LoginMode=2;d.write(Buffer.concat([Buffer.from("0100","hex"),Buffer.from(JSON.stringify(c))]))},this);break;case 2:if(b.length<6){break}amtMei.unprovision(b.readUInt32LE(2),function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(2,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 3:amtMei.getLocalSystemAccount(function(c,d){d.write(Buffer.concat([Buffer.from("030000000000","hex"),c.raw]))},this);break;case 4:amtMei.startConfiguration(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 5:amtMei.stopConfiguration(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 6:amtMei.openUserInitiatedConnection(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 7:amtMei.closeUserInitiatedConnection(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 8:amtMei.getRemoteAccessConnectionStatus(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(8,0);c.writeUInt32LE(e.status,2);d.write(Buffer.concat([c,e.raw]))},this);break;default:break}}function startRouter(){tcpserver=net.createServer(OnTcpClientConnected);tcpserver.on("error",function(a){console.log("ERROR: "+JSON.stringify(a));exit(0);return});tcpserver.listen(settings.localport,function(){if(settings.remotename==null){console.log("Redirecting local port "+settings.localport+" to remote port "+settings.remoteport+".")}else{console.log("Redirecting local port "+settings.localport+" to "+settings.remotename+":"+settings.remoteport+".")}console.log("Press ctrl-c to exit.")})}function OnTcpClientConnected(a){try{debug(1,"Client connected");a.on("end",function(){disconnectTunnel(this,this.websocket,"Client closed")});a.pause();try{options=http.parseUri(settings.serverurl+"?user="+settings.username+"&pass="+settings.password+"&nodeid="+settings.remotenodeid+"&tcpport="+settings.remoteport)}catch(b){console.log('Unable to parse "serverUrl".');process.exit(1);return}options.checkServerIdentity=onVerifyServer;options.rejectUnauthorized=false;a.websocket=http.request(options);a.websocket.tcp=a;a.websocket.tunneling=false;a.websocket.upgrade=OnWebSocket;a.websocket.on("error",function(c){console.log("ERROR: "+JSON.stringify(c))});a.websocket.end()}catch(b){debug(2,b)}}function disconnectTunnel(c,d,b){if(d!=null){try{d.end()}catch(a){debug(2,a)}}if(c!=null){try{c.end()}catch(a){debug(2,a)}}debug(1,"Tunnel disconnected: "+b)}function OnWebSocket(b,c,a){debug(1,"Websocket connected");c.on("data",function(d){if(this.parent.tunneling==false){d=d.toString();if(d=="c"){this.parent.tunneling=true;this.pipe(this.parent.tcp);this.parent.tcp.pipe(this);debug(1,"Tunnel active")}else{if((d.length>6)&&(d.substring(0,6)=="error:")){console.log(d.substring(6));disconnectTunnel(this.tcp,this,d.substring(6))}}}});c.on("error",function(d){disconnectTunnel(this.tcp,this,"Websocket error")});c.on("close",function(d){disconnectTunnel(this.tcp,this,"Websocket closed")});c.parent=this}function discoverMeshServer(){console.log("Looking for server...");discoveryInterval=setInterval(discoverMeshServerOnce,5000);discoverMeshServerOnce()}function discoverMeshServerOnce(){var f=os.networkInterfaces();for(var a in f){if(f.hasOwnProperty(a)){for(var d=0;d0)?"":"Content-Encoding:gzipContent-Type:text/html"+((e!=null)?(""+e+""):"")+"";var a=((b.length-g)>(7000-d.length))?(7000-d.length):(b.length-g);h.write(Buffer.concat([new Buffer(d),b.slice(g,g+a)]));g+=a;h.end()}function verifyStorage(c,a,b){var d=digest.request({protocol:settings.protocol,method:"GET",host:settings.hostname,path:("/amt-storage/"+c),port:settings.localport});d.on("error",function(f){console.log("Verify error occured: "+JSON.stringify(f));if(b!=null){b(null)}});d.on("response",function(e){e.ptr=0;e.ok=true;e.on("data",function(f){if(f.toString("hex")!=a.slice(e.ptr,e.ptr+f.length).toString("hex")){e.ok=false;console.log("Verifiy failed ("+e.ptr+", "+f.length+").")}e.ptr+=f.length});e.on("end",function(){if(b!=null){b(e.ok)}})});d.end()}function deleteStorage(b,a,c){var d=digest.request({protocol:settings.protocol,method:"DELETE",host:settings.hostname,path:"/amt-storage/"+b,port:settings.localport});d.on("error",function(f){if((f=="Error: Socket was unexpectedly closed")&&(c!=true)){deleteStorage(b,a,true)}else{if(a!=null){if(f.statusCode){a(f.statusCode)}else{a(null)}}}});d.on("response",function(e){if(a!=null){a(e.statusCode)}});d.end()}function parseUrlArguments(d){var c={},e=d.split("?");if(e.length<2){return c}e=e[1].split("&");for(var a in e){var b=e[a].indexOf("=");if(b>0){c[e[a].substring(0,b).toLowerCase()]=e[a].substring(b+1)}}return c}function removeItemFromArray(a,b){var c=a.indexOf(b);if(c!==-1){a.splice(c,1)}}var serviceName=null;var serviceOpSpecified=0;var serviceInstall=0;for(var i in process.argv){if(process.argv[i].toLowerCase()=="install"){serviceInstall=1}else{if(process.argv[i].toLowerCase()=="uninstall"){serviceInstall=-1}}if((process.argv[i].toLowerCase()=="microlms")||(process.argv[i].toLowerCase()=="amtlms")||(process.argv[i].toLowerCase()=="lms")){serviceName="MicroLMS";break}if((process.argv[i].toLowerCase()=="meshcommander")||(process.argv[i].toLowerCase()=="commander")){serviceName="MeshCommander";break}}if(serviceName==null){for(var i in process.argv){if((process.argv[i].toLowerCase()=="install")||(process.argv[i].toLowerCase()=="uninstall")){console.log("In order to install/uninstall, a service type must be specified.");process.exit()}}if(process.execPath.includes("MicroLMS")){serviceName="MicroLMS"}else{if(process.execPath.includes("MeshCommander")){serviceName="MeshCommander"}else{serviceName="not_a_service"}}}if(serviceInstall==0){run(process.argv)}else{var serviceHost=require("service-host");var meshcmdService=new serviceHost({name:serviceName,startType:"AUTO_START"});meshcmdService.on("serviceStart",function onStart(){console.setDestination(console.Destinations.DISABLED);if(process.execPath.includes("MicroLMS")){run([process.execPath,"microlms"])}else{if(process.execPath.includes("MeshCommander")){run([process.execPath,"meshcommander"])}else{console.log("Aborting Service Start, because unknown binary: "+process.execPath);process.exit(1)}}});meshcmdService.on("serviceStop",function onStop(){console.log("Stopping service");process.exit()});meshcmdService.on("normalStart",function onNormalStart(){try{run(process.argv)}catch(a){console.log("ERROR: "+a)}});meshcmdService.run()}; \ No newline at end of file +var fs=require("fs");var os=require("os");var net=require("net");var http=require("http");var dgram=require("dgram");var httpHeaders=require("http-headers");var tcpserver=null;var broadcastSockets={};var multicastSockets={};var discoveryInterval=null;var membershipIPv4="239.255.255.235";var membershipIPv6="FF02:0:0:0:0:0:0:FE";var settings=null;var meshCmdVersion="***Mesh*Cmd*Version***";var amtLms=null,amtMei=null,amtMeiState=null;var wsstack=null,amtstack=null;var oswsstack=null,osamtstack=null;var amtMeiTmpState=null;var SMBiosTables=null;var Large_IntelAmtWebApp="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";var Medium_IntelAmtWebApp="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";var Small_IntelAmtWebApp="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";function onVerifyServer(b,a){if(a==null){a=b}try{for(var d in a){if(a[d].fingerprint.replace(/:/g,"")==settings.serverhttpshash){return}}}catch(c){}if(serverhash!=null){console.log("Error: Failed to verify server certificate.");throw"Invalid server certificate"}}function debug(a,b){if((settings.debuglevel!=null)&&(settings.debuglevel>=a)){console.log(b)}}function exit(b){if(b==null){b=0}try{process.exit(b)}catch(a){}}function getInstance(b,c){for(var a in b){if(b[a]["InstanceID"]==c){return b[a]}}return null}function md5hex(a){return require("MD5Stream").create().syncHash(a).toString("hex")}function guidToStr(a){return a.substring(6,8)+a.substring(4,6)+a.substring(2,4)+a.substring(0,2)+"-"+a.substring(10,12)+a.substring(8,10)+"-"+a.substring(14,16)+a.substring(12,14)+"-"+a.substring(16,20)+"-"+a.substring(20)}function parceArguments(a){var d={};for(var b in a){b=parseInt(b);if(a[b].startsWith("--")==true){var c=a[b].substring(2).toLowerCase(),e=true;if(((b+1)8){return"[...]"}if(e==undefined){return"[undefined]"}if(typeof e=="string"){if(b==0){return e}return'"'+(e.split("\0")[0])+'"'}if(typeof e=="buffer"){return"[buffer]"}if(typeof e!="object"){return e}var c="{"+(d?"\r\n":" ");for(var a in e){if(a!="_ObjectID"){c+=(addPad(b+2,d)+a+": "+objToString(e[a],b+2,d)+(d?"\r\n":" "))}}return c+addPad(b,d)+"}"}function addPad(b,d){var c="";for(var a=0;a=2){settings={action:j[1]}}}if(settings==null){settings={}}var p={};for(var m in settings){p[m.toLowerCase()]=settings[m]}settings=p;if((typeof h.action)=="string"){settings.action=h.action}if((typeof h.localport)=="string"){settings.localport=parseInt(h.localport)}if((typeof h.remotenodeid)=="string"){settings.remotenodeid=h.remotenodeid}if((typeof h.username)=="string"){settings.username=h.username}if((typeof h.password)=="string"){settings.password=h.password}if((typeof h.user)=="string"){settings.username=h.user}if((typeof h.pass)=="string"){settings.password=h.pass}if((typeof h.host)=="string"){settings.hostname=h.host}if((typeof h.hostname)=="string"){settings.hostname=h.hostname}if((typeof h.serverid)=="string"){settings.serverid=h.serverid}if((typeof h.serverhttpshash)=="string"){settings.serverhttpshash=h.serverhttpshash}if((typeof h.remoteport)=="string"){settings.remoteport=parseInt(h.remoteport)}if((typeof h.out)=="string"){settings.output=h.out}if((typeof h.output)=="string"){settings.output=h.output}if((typeof h.debug)=="string"){settings.debuglevel=parseInt(h.debug)}if((typeof h.script)=="string"){settings.script=h.script}if((typeof h.agent)=="string"){settings.agent=h.agent}if((typeof h.proxy)=="string"){settings.proxy=h.proxy}if(h.debug){try{waitForDebugger()}catch(k){}}if(h.noconsole){settings.noconsole=true}if(h.nocommander){settings.noconsole=true}if(h.lmsdebug){settings.lmsdebug=true}if(h.tls){settings.tls=true}if((j.length>1)&&(d.indexOf(j[1].toUpperCase())>=0)){settings.action=j[1]}if(settings.action==null){console.log("MeshCentral Command (MeshCmd) "+meshCmdVersion);console.log("No action specified, use MeshCmd like this:\r\n");console.log(" meshcmd [action] [arguments...]\r\n");console.log("Valid MeshCentral actions:");console.log(" Route - Map a local TCP port to a remote computer.");console.log("\r\nValid local actions:");console.log(" SMBios - Display System Management BIOS tables for this computer.");console.log(" RawSMBios - Display RAW System Management BIOS tables for this computer.");console.log(" MicroLMS - Run MicroLMS, allowing local access to Intel AMT.");console.log(" AmtInfo - Show Intel AMT version and activation state.");console.log(" AmtVersions - Show all Intel ME version information.");console.log(" AmtHashes - Show all Intel AMT trusted activation hashes.");console.log(" AmtCCM - Activate Intel AMT into Client Control Mode.");console.log(" AmtDeactivate - Deactivate Intel AMT if activated in Client Control mode.");console.log("\r\nValid local or remote actions:");console.log(" MeshCommander - Launch a local MeshCommander web server.");console.log(" AmtUUID - Show Intel AMT unique identifier.");console.log(" AmtAuditLog - Show the Intel AMT audit log.");console.log(" AmtLoadWebApp - Load MeshCommander in Intel AMT 11.6+ firmware.");console.log(" AmtClearWebApp - Clear everything from Intel AMT web storage.");console.log(" AmtStorageState - Show contents of the Intel AMT web storage.");console.log(" AmtSaveState - Save all Intel AMT WSMAN object to file.");console.log(" AmtPresence - Heartbeat a local Intel AMT watchdog agent.");console.log(" AmtScript - Run .mescript on Intel AMT.");console.log("\r\nHelp on a specific action using:\r\n");console.log(" meshcmd help [action]");exit(1);return}if(settings.action=="help"){if(j.length<=2){d.shift();console.log("Help usage:\r\n\r\n MeshCmd help [action]\r\n\r\nValid actions are: "+d.join(", ")+".");exit(1);return}var a=j[2].toLowerCase();if(a=="route"){console.log("The route action is used along with a MeshCentral account to map a local TCP port to a remote port on any computer on your MeshCentral account. This action requires many arguments, to avoid specifying them all it's best to download the meshaction.txt file from the web site and place it in the current folder. Example usage:\r\n\r\n (Place meshaction.txt file in current folder)\r\n meshcmd route --pass myAccountPassword")}else{if(a=="smbios"){console.log("SMBios action will display this computer's system management BIOS information. Example usage:\r\n\r\n meshcmd smbios --out smbios.txt\r\n");console.log("\rOptional arguments:\r\n");console.log(" --output [filename] Optional filename to write the results to.")}else{if(a=="rawsmbios"){console.log("RawSMBios action will display this computer's system management BIOS information in raw hexdecimal form. Example usage:\r\n\r\n meshcmd rawsmbios --out smbios.txt\r\n");console.log("\rOptional arguments:\r\n");console.log(" --output [filename] Optional filename to write the results to.")}else{if(a=="amtinfo"){console.log("AmtInfo action will get the version and activation state of Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Example usage:\r\n\r\n meshcmd amtinfo")}else{if((a=="amtversion")||(a=="amtversions")){console.log("AmtVersions will display all version information about Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Example usage:\r\n\r\n meshcmd amtversions")}else{if(a=="amthashes"){console.log("Amthashes will display all trusted activations hashes for Intel AMT on this computer. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd amthashes")}else{if((a=="microlms")||(a=="lms")||(a=="amtlms")){console.log("Starts MicroLMS on this computer, allowing local access to Intel AMT on TCP ports 16992 and 16993 when applicable. The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. These certificates hashes are used by Intel AMT when performing activation into ACM mode. Example usage:\r\n\r\n meshcmd microlms");console.log("\r\nPossible arguments:\r\n");console.log(" --noconsole MeshCommander for LMS will no be available on port 16994.");console.log("\r\nRun as a background service:\r\n");console.log(" microlms install/uninstall/start/stop.")}else{if(a=="amtccm"){console.log('AmtCCM will attempt to activate Intel AMT on this computer into client control mode (CCM). The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Intel AMT must be in "pre-provisioning" state for this command to work and a administrator password must be provided. Example usage:\r\n\r\n meshcmd amtccm --pass mypassword')}else{if(a=="amtdeactivate"){console.log("AmtDeactivate will attempt to deactivate Intel AMT on this computer when in client control mode (CCM). The command must be run on a computer with Intel AMT, must run as administrator and the Intel management driver must be installed. Intel AMT must be activated in client control mode for this command to work. Example usage:\r\n\r\n meshcmd amtdeactivate")}else{if(a=="amtuuid"){console.log("AmtUUID action will get the unique identifier of the local or remote Intel AMT computer. By default, the local UUID is obtained unless a host is specified. Intel AMT must be activated for this command to work. Example usage:\r\n\r\n meshcmd amtuuid --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if((a=="amtloadwebapp")||(a=="amtloadsmallwebapp")||(a=="amtloadlargewebapp")||(a=="amtclearwebapp")||(a=="amtstoragestate")){console.log('AmtLoadWebApp action will load MeshCommander into Intel AMT 11.6 or higher. If the computer is in ACM mode, MeshCommander will replace the default index.htm on HTTP/16992 or HTTPS/16993. If Intel AMT is in CCM mode, MeshCommander will be installed alongside the default web page and will be accessible in the "Web Applications" section. This action works on Intel AMT 11.6 and higher only. Example usage:\r\n\r\n meshcmd amtloadwebapp --host 1.2.3.4 --user admin --pass mypassword --tls');console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtclearwebstorage"){console.log("AmtClearWebStorage will clear the web storage of Intel AMT, removing any loaded firmware version of MeshCommander. This command can clear the local or a remote Intel AMT computer. By default, the local computer storage is cleared unless a host is specified. Intel AMT must be activated for this command to work. This action works on Intel AMT 11.6 and higher only. Example usage:\r\n\r\n meshcmd amtclearwebstorage --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtstoragestate"){console.log("AmtStorageState will display the content of the web storage of Intel AMT including any loaded firmware version of MeshCommander. This command can read the storage state of a local or remote Intel AMT computer. By default, the local computer storage state is displayed unless a host is specified. Intel AMT must be activated for this command to work. This action works on Intel AMT 11.6 and higher only. Example usage:\r\n\r\n meshcmd amtstoragestate --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtsavestate"){console.log("AmtSaveState action will fetch all the entire state of Intel AMT and save it as a JSON file. This action will take multiple minutes to perform. The command will fetch the local computer state unless host is specified. Intel AMT must be ativated for this command to work. Example usage:\r\n\r\n meshcmd amtsavestate --host 1.2.3.4 --user admin --pass mypassword --tls --output state.json");console.log("\r\nPossible arguments:\r\n");console.log(" --output [filename] The output file for the Intel AMT state in JSON format.");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="amtpresence"){console.log("AmtPresence will heartbeat a local Intel AMT watchdog agent. Example usage:\r\n\r\n meshcmd amtpresence --agent B4B6A24C-255E-A75C-F5E8-B00B4D946AA7");console.log("\r\nPossible arguments:\r\n");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --agent [uuid] The unique identifier of the watchdog agent.")}else{if(a=="amtscript"){console.log("AmtScript will run a .mescript file on the local or remote Intel AMT. Script files can be built using the MeshCommander script editor and be used to setup or perform actions on Intel AMT. Example usage:\r\n\r\n meshcmd amtscript --script myscript.mescript --host 1.2.3.4 --user admin --pass mypassword --tls");console.log("\r\nPossible arguments:\r\n");console.log(" --script [filename] The script file to run on Intel AMT.");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{if(a=="meshcommander"){console.log("This action launched a local web server that hosts MeshCommander, a Intel AMT management console.");console.log("\r\nPossible arguments:\r\n");console.log(" --localport [port] Local port used for the web server, 3000 is default.");console.log("\r\nRun as a background service:\r\n");console.log(" meshcommander install/uninstall/start/stop.")}else{if(a=="amtauditlog"){console.log("AmtAuditLog action will fetch the local or remote audit log. If used localy, no username/password is required. Example usage:\r\n\r\n meshcmd amtauditlog --host 1.2.3.4 --user admin --pass mypassword --tls --output audit.json");console.log("\r\nPossible arguments:\r\n");console.log(" --output [filename] The output file for the Intel AMT state in JSON format.");console.log(" --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.");console.log(" --user [username] The Intel AMT login username, admin is default.");console.log(" --pass [password] The Intel AMT login password.");console.log(" --tls Specifies that TLS must be used.")}else{d.shift();console.log("Invalid action, usage:\r\n\r\n meshcmd help [action]\r\n\r\nValid actions are: "+d.join(", ")+".")}}}}}}}}}}}}}}}}}}exit(1);return}settings.action=settings.action.toLowerCase();debug(1,"Settings: "+JSON.stringify(settings));if((typeof settings.proxy)=="string"){var n=settings.proxy.split(":"),o=(n.length==2)?parseInt(n[1]):0;if((n.length!=2)||(n[0].length<1)||(o<1)||(o>65535)){console.log('Invalid "proxy" specified, use --proxy [hostname]:[port].');exit(1);return}try{require("global-tunnel").initialize({host:n[0],port:o})}catch(l){console.log(l);exit(1);return}console.log("Proxy set to "+n[0]+":"+o)}if(settings.action=="smbios"){SMBiosTables=require("smbios");SMBiosTables.get(function(e){var t=SMBiosTables.parse(e);var s=objToString(t,0,"\r\n");if(settings.output==null){console.log(s)}else{var q=fs.openSync(settings.output,"w");fs.writeSync(q,Buffer.from(s,"utf8"));fs.closeSync(q)}exit(1)})}else{if(settings.action=="rawsmbios"){SMBiosTables=require("smbios");SMBiosTables.get(function(e){var u="";for(var s in e){var r=false;for(var t in e[s]){if(e[s][t].length>0){if(r==false){u+=("Table type #"+s+((SMBiosTables.smTableTypes[s]==null)?"":(", "+SMBiosTables.smTableTypes[s])))+"\r\n";r=true}u+=(" "+e[s][t].toString("hex"))+"\r\n"}}}if(settings.output==null){console.log(u)}else{var q=fs.openSync(settings.output,"w");fs.writeSync(q,Buffer.from(u,"utf8"));fs.closeSync(q)}exit(1)})}else{if(settings.action=="route"){if((settings.localport==null)||(typeof settings.localport!="number")||(settings.localport<0)||(settings.localport>65535)){console.log('No or invalid "localPort" specified, use --localport [localport].');exit(1);return}if((settings.remotenodeid==null)||(typeof settings.remotenodeid!="string")){console.log('No or invalid "remoteNodeId" specified.');exit(1);return}if((settings.username==null)||(typeof settings.username!="string")||(settings.username=="")){console.log('No or invalid "username" specified, use --username [username].');exit(1);return}if((settings.password==null)||(typeof settings.password!="string")||(settings.password=="")){console.log('No or invalid "password" specified, use --password [password].');exit(1);return}if((settings.serverid==null)||(typeof settings.serverid!="string")||(settings.serverid.length!=96)){console.log('No or invalid "serverId" specified.');exit(1);return}if((settings.serverhttpshash==null)||(typeof settings.serverhttpshash!="string")||(settings.serverhttpshash.length!=96)){console.log('No or invalid "serverHttpsHash" specified.');exit(1);return}if((settings.remoteport==null)||(typeof settings.remoteport!="number")||(settings.remoteport<0)||(settings.remoteport>65535)){console.log('No or invalid "remotePort" specified, use --remoteport [remoteport].');exit(1);return}if(settings.serverurl!=null){startRouter()}else{discoverMeshServer()}}else{if((settings.action=="amtloadwebapp")||(settings.action=="amtloadsmallwebapp")||(settings.action=="amtloadlargewebapp")||(settings.action=="amtclearwebapp")||(settings.action=="amtstoragestate")){if((settings.password==null)||(typeof settings.password!="string")||(settings.password=="")){console.log('No or invalid "password" specified, use --password [password].');exit(1);return}if((settings.hostname==null)||(typeof settings.hostname!="string")||(settings.hostname=="")){settings.hostname="127.0.0.1"}if((settings.username==null)||(typeof settings.username!="string")||(settings.username=="")){settings.username="admin"}settings.protocol="http:";settings.localport=16992;debug(1,"Settings: "+JSON.stringify(settings));digest=require("http-digest").create(settings.username,settings.password);digest.http=require("http");if(settings.action=="amtstoragestate"){getAmtStorage(function(q,e){if(q==200){console.log("Storage State: "+JSON.stringify(e,null,2));exit();return}else{console.log("Unable to read storage state.");exit();return}})}else{if(settings.action=="amtloadwebapp"){settings.webapp=Medium_IntelAmtWebApp}else{if(settings.action=="amtloadsmallwebapp"){settings.webapp=Small_IntelAmtWebApp}else{if(settings.action=="amtloadlargewebapp"){settings.webapp=Large_IntelAmtWebApp}else{if(settings.action=="amtclearwebapp"){settings.webapp=null}}}}nextStepStorageUpload()}}else{if((settings.action=="amtversion")||(settings.action=="amtversions")||(settings.action=="amtver")){var g,f;try{g=require("amt-mei");f=new g()}catch(l){console.log(l);exit(1);return}f.on("error",function(q){console.log("ERROR: "+q);exit(1);return});f.getVersion(function(e){console.log("MEI Version = "+e.BiosVersion.toString());for(var q in e.Versions){console.log(e.Versions[q].Description+" = "+e.Versions[q].Version)}exit(1);return})}else{if(settings.action=="amthashes"){var g,f;try{g=require("amt-mei");f=new g()}catch(l){console.log(l);exit(1);return}f.on("error",function(q){console.log("ERROR: "+q);exit(1);return});f.getHashHandles(function(e){exitOnCount=e.length;for(var q=0;q100){lmsNotifications.shift()}var l=Buffer.concat([Buffer.from("0900","hex"),Buffer.from(JSON.stringify(k))]);for(var j in lmsControlSockets){lmsControlSockets[j].write(l)}}}});amtLms.on("bind",function(g){if(g[16992]){this.removeAllListeners("bind")}else{return}amtLms.connected=true;this.promise._res();if(settings.noconsole!==true){startMeshCommanderLms();tempTimer=setTimeout(function(){delete tempTimer;setupMeiOsAdmin(b,2)},100)}else{tempTimer=setTimeout(function(){delete tempTimer;setupMeiOsAdmin(b,1)},100)}});return(f)}function startMeshCommanderLms(){var b="C2ZfnIbUEl7w4c1S1Xbd";var a="77u/PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBzdHlsZT0iaGVpZ2h0OjEwMCUiPg0KPGhlYWQ+DQogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4gDQogICAgPG1ldGEgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSI+DQogICAgPG1ldGEgbmFtZT0iZm9ybWF0LWRldGVjdGlvbiIgY29udGVudD0idGVsZXBob25lPW5vIj4NCiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvPSI+IDwhLS0gU3RvcCBmYXZpY29uLmljbyBmcm9tIGxvYWRpbmcgLS0+DQogICAgPHN0eWxlPmJvZHkgew0KICAgIGhlaWdodDogMTAwJTsNCiAgICBtYXgtaGVpZ2h0OiAxMDAlOw0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQogICAgZm9udC1zaXplOiA5cHQ7DQogICAgY29sb3I6IGJsYWNrOw0KICAgIGJhY2tncm91bmQ6IHdoaXRlOw0KICAgIG1hcmdpbi10b3A6IDA7DQogICAgbWFyZ2luLWxlZnQ6IDA7DQogICAgbWFyZ2luLXJpZ2h0OiAwOw0KICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsNCiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOw0KICAgIC1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsNCiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lOw0KICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTsNCiAgICB1c2VyLXNlbGVjdDogbm9uZTsNCn0NCg0KbGkgew0KICAgIG1hcmdpbjogMDsNCiAgICBwYWRkaW5nOiAwOw0KfQ0KDQpsYWJlbCB7DQogICAgZGlzcGxheTogYmxvY2s7DQogICAgY29sb3I6IHdpbmRvd3RleHQ7DQogICAgYmFja2dyb3VuZC1jb2xvcjogd2luZG93Ow0KICAgIG1hcmdpbjogMDsNCiAgICBwYWRkaW5nOiAwOw0KICAgIHdpZHRoOiAxMDAlOw0KfQ0KDQogICAgbGFiZWw6aG92ZXIgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoaWdobGlnaHQ7DQogICAgICAgIGNvbG9yOiBoaWdobGlnaHR0ZXh0Ow0KICAgIH0NCg0KYTp2aXNpdGVkIHsNCiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgY29sb3I6ICMwNGY7DQp9DQoNCmE6bGluayB7DQogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICAgIGNvbG9yOiAjMDRmOw0KfQ0KDQphOmhvdmVyIHsNCiAgICBjb2xvcjogIzU1NTsNCn0NCg0KaDEgew0KICAgIGZvbnQtc2l6ZTogMTFwdDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBjb2xvcjogYmxhY2s7DQogICAgbWFyZ2luLWxlZnQ6IDVweDsNCiAgICBtYXJnaW4tdG9wOiAxMHB4Ow0KICAgIG1hcmdpbi1ib3R0b206IDZweDsNCn0NCg0KaDIgew0KICAgIGZvbnQtc2l6ZTogOXB0Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGNvbG9yOiBibGFjazsNCiAgICBtYXJnaW4tbGVmdDogNnB4Ow0KICAgIG1hcmdpbi10b3A6IDZweDsNCiAgICBtYXJnaW4tYm90dG9tOiAwOw0KfQ0KDQpwIHsNCiAgICBtYXJnaW4tbGVmdDogNnB4Ow0KICAgIG1hcmdpbi10b3A6IDRweDsNCiAgICBtYXJnaW4tYm90dG9tOiAwOw0KICAgIG1hcmdpbi1yaWdodDogMnB4Ow0KfQ0KDQp0ZCB7DQogICAgZm9udC1zaXplOiA5cHQ7DQp9DQoNCnRoIHsNCiAgICBmb250LXNpemU6IDlwdDsNCn0NCg0KICAgIHRoOmhvdmVyIHsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgICAgICBiYWNrZ3JvdW5kOiAjYWFhOw0KICAgIH0NCg0KLmhlYWRlciB7DQogICAgcG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogMDsNCiAgICBsZWZ0OiAwOw0KICAgIHJpZ2h0OiAwOw0KICAgIGhlaWdodDogNjdweDsNCiAgICBiYWNrZ3JvdW5kOiAjMDM2Ow0KICAgIC8qIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2YTY5NjAgMCUsIzQyNDEzYyAxMDAlKTsgKi8NCn0NCg0KLnByb2dyZXNzYmFyIHsNCiAgICBwb3NpdGlvbjogZml4ZWQ7DQogICAgdG9wOiA2N3B4Ow0KICAgIGxlZnQ6IDA7DQogICAgcmlnaHQ6IDA7DQogICAgaGVpZ2h0OiAycHg7DQogICAgYmFja2dyb3VuZDogIzAzNjsNCn0NCg0KLmluIHsNCiAgICBtYXJnaW4tbGVmdDogNDBweDsNCn0NCg0KLmxvZyB7DQogICAgYmFja2dyb3VuZDogI2JiYmFiNTsNCn0NCg0KLmxvZzEgew0KICAgIGJhY2tncm91bmQ6ICNiYmJhYjU7DQp9DQoNCi5sb2cgdGJvZHkgdHI6bnRoLWNoaWxkKG9kZCkgew0KICAgIGJhY2tncm91bmQ6ICNlOGVlZmU7DQp9DQoNCi5mdWxsY2VsbCB7DQogICAgcG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogNjlweDsNCiAgICByaWdodDogMDsNCiAgICBib3R0b206IDA7DQogICAgbGVmdDogMHB4Ow0KICAgIG92ZXJmbG93OiBoaWRkZW47DQp9DQoNCi5tYWluY2VsbCB7DQogICAgcG9zaXRpb246IGZpeGVkOw0KICAgIHRvcDogNjlweDsNCiAgICByaWdodDogMDsNCiAgICBib3R0b206IDA7DQogICAgbGVmdDogMTU2cHg7DQogICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICBwYWRkaW5nLWxlZnQ6IDJweDsNCiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOw0KfQ0KDQoubmF2YmFyIHsNCiAgICBwb3NpdGlvbjogZml4ZWQ7DQogICAgdG9wOiA2OXB4Ow0KICAgIGxlZnQ6IDA7DQogICAgYm90dG9tOiAwOw0KICAgIHdpZHRoOiAxNTZweDsNCiAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjQjBDNkZDOw0KICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7DQogICAgYmFja2dyb3VuZDogIzAzNjsNCiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjYmZkMWZjIDAlLCNlOGVlZmUgMTAwJSk7DQp9DQoNCi5uYXYxIHsNCiAgICBwYWRkaW5nOiAxcHggMHB4IDFweCA4cHg7DQogICAgbWFyZ2luOiAwcHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgY29sb3I6IGJsYWNrOw0KICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQoubmF2MiB7DQogICAgbWFyZ2luLWxlZnQ6IDMycHg7DQogICAgbWFyZ2luLXRvcDogMDsNCiAgICBjb2xvcjogYmxhY2s7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQouciB7DQogICAgZm9udC1zaXplOiAxMXB0Ow0KfQ0KDQoucjAgew0KICAgIGJhY2tncm91bmQ6IHdoaXRlOw0KfQ0KDQoucjEgew0KICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBncmF5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi5yMiB7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLnIzIHsNCiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgZ3JheTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQogICAgLnIzOmhvdmVyIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzgzODI3YjsNCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIH0NCg0KLnNwcmVhZCB7DQogICAgaGVpZ2h0OiAxMDAlOw0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KfQ0KDQoudGltZXIgew0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNhYmNhZTE7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2FiY2FlMTsNCn0NCg0KLnRtIHsNCiAgICBmb250LXNpemU6IDdwdDsNCn0NCg0KLnRvcDEgew0KICAgIGZvbnQtc2l6ZTogMjBwdDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBjb2xvcjogI0M4QzhDODsNCiAgICBtYXJnaW4tdG9wOiA2cHg7DQogICAgbWFyZ2luLWxlZnQ6IDEwcHg7DQp9DQoNCi50b3AyIHsNCiAgICBjb2xvcjogI0M4QzhDODsNCiAgICBtYXJnaW4tbGVmdDogMTBweDsNCn0NCg0KLndhcm4gew0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGNvbG9yOiAjYzAwMDAwOw0KfQ0KDQouaWNvbjEgew0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTVweDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFMTVBBTEMyeXg5RHIwbHkyV3VSOEZkdXVoUXlsb09XenpkZ3ltNkd5WnVxMS92NytxQ2hwY2pKMEplWG03ZTV2di8vL3lINUJBRUFBQThBTEFBQUFBQVFBQkFBQUFSeThNbEpxMTJPTWJlc2JFQXlqRU1DTkJWb2pJb3lDTWhKQVlZZ0RPMXd3TUMwSkxhZzRFQThHRG9QQnlLWWFCRUNVSUpEd2hnT0V3d0ZvZ0FOTUtqRFF3Q3JNSENoM3lSQ1BNNXVvOVBId3RBbEU4N0hDZUE1ZG5JSlBSTWdUekY3QlFRSktCUXFmQVFHTWg0WUdod2VsUllSQURzPSIpOw0KfQ0KDQouaWNvbjIgew0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTVweDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFKRURBUERWTWFtTUR3QUFBUC8vL3lINUJBRUFBQU1BTEFBQUFBQVFBQkFBQUFJeW5JK3BCckFhV25pb05XcWluYlFKY1QzYUp6MFdHU1lhZ0FKY3RhME9JbHNiZklMMlViZWxEUXhLQXNTaXNUakRJQW9BT3c9PSIpOw0KfQ0KDQouaWNvbjMgew0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTVweDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoRUFBUUFLSUhBTEVjSGVYdDdhQ2hwY2pKMEplWG03ZTV2di8vLy8vLy95SDVCQUVBQUFjQUxBQUFBQUFRQUJBQUFBTmFlTHJjTG1XTUlwd2lwWkJOSUdsWUI0ekFwakZhWUJBallRVFk0aFhHU3FoQ1dSM2FTTCtCbkU4eElBRUVnYUJ4UURRaUE0V2xvZ2VnU1FMRjRVSEFzbzRHaG1KbkVTVmtSN0FxUTJRa2NVSFUxc2tDa1ZBc2VFY0NBRHM9Iik7DQp9DQoNCi5pdGVtQmFyIHsNCiAgICBwYWRkaW5nOiA3cHg7DQogICAgbWluLWhlaWdodDogMjBweDsNCiAgICBtYXJnaW4tdG9wOiA0cHg7DQogICAgbWFyZ2luLXJpZ2h0OiA4cHg7DQogICAgd2lkdGg6IGF1dG87DQogICAgYm9yZGVyLXJhZGl1czogOHB4Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICM4YzhiODE7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KDQouY29tcHV0ZXJpdGVtY2lyIHsNCiAgICB3aWR0aDogMTJweDsNCiAgICBoZWlnaHQ6IDEycHg7DQogICAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICAgIGJhY2tncm91bmQ6IGdyYXk7DQogICAgbWFyZ2luLXJpZ2h0OjRweDsNCn0NCg0KLmNvbXB1dGVyaXRlbSB7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIHdpZHRoOiBhdXRvOw0KICAgIC8qDQogICAgYm9yZGVyLXJhZGl1czogNXB4Ow0KICAgIGJhY2tncm91bmQtY29sb3I6ICNhNmE1YTA7DQogICAgKi8NCiAgICBoZWlnaHQ6IDI4cHg7DQogICAgbWFyZ2luOiA0cHg7DQogICAgcGFkZGluZzogMnB4Ow0KfQ0KDQogICAgLmNvbXB1dGVyaXRlbTpob3ZlciB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM4MzgyN2I7DQogICAgfQ0KDQoudXMgew0KICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogaW5pdGlhbDsNCiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhdXRvOw0KICAgIC1raHRtbC11c2VyLXNlbGVjdDogdGV4dDsNCiAgICAtbW96LXVzZXItc2VsZWN0OiB0ZXh0Ow0KICAgIC1tcy11c2VyLXNlbGVjdDogdGV4dDsNCiAgICB1c2VyLXNlbGVjdDogdGV4dDsNCn0NCg0KDQovKiBTdHlsZXMgYmVsb3cgYXJlIG9ubHkgdXNlZCBpbiBOb2RlSlMsIFdlYlNpdGUgY29tcGlsZXIgc2hvdWxkIHJlbW92ZSB0aGVzZSBpbiB0aGUgZnV0dXJlICovDQoNCi50b3BDZWxsIHsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaW1hZ2VzLWNvbW1hbmRlci9sb2dvYmFjay5wbmcnKTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7DQp9DQoNCi5pMSB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvaWNvbnM1MC5wbmcpIDBweCAwcHg7DQogICAgaGVpZ2h0OiA1MHB4Ow0KICAgIHdpZHRoOiA1MHB4Ow0KICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICBib3JkZXI6IG5vbmU7DQp9DQoNCi5pMiB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvaWNvbnM1MC5wbmcpIC01MHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmkzIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTEwMHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmk0IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTE1MHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmk1IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTIwMHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmk2IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczUwLnBuZykgLTI1MHB4IDBweDsNCiAgICBoZWlnaHQ6IDUwcHg7DQogICAgd2lkdGg6IDUwcHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmoxIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgMHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmoyIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgLTI2cHggMHB4Ow0KICAgIGhlaWdodDogMjZweDsNCiAgICB3aWR0aDogMjZweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfQ0KDQouajMgew0KICAgIGJhY2tncm91bmQ6IHVybChpbWFnZXMtY29tbWFuZGVyL2ljb25zMjYucG5nKSAtNTJweCAwcHg7DQogICAgaGVpZ2h0OiAyNnB4Ow0KICAgIHdpZHRoOiAyNnB4Ow0KICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICBib3JkZXI6IG5vbmU7DQp9DQoNCi5qNCB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvaWNvbnMyNi5wbmcpIC03OHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmo1IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgLTEwNHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmo2IHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9pY29uczI2LnBuZykgLTEzMHB4IDBweDsNCiAgICBoZWlnaHQ6IDI2cHg7DQogICAgd2lkdGg6IDI2cHg7DQogICAgY3Vyc29yOiBwb2ludGVyOw0KICAgIGJvcmRlcjogbm9uZTsNCn0NCg0KLmdyYXkgew0KICAgIC8qZmlsdGVyOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCZsdDtzdmcgeG1sbnM9XCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wnJmd0OyZsdDtmaWx0ZXIgaWQ9XCdncmF5c2NhbGVcJyZndDsmbHQ7ZmVDb2xvck1hdHJpeCB0eXBlPVwnbWF0cml4XCcgdmFsdWVzPVwnMC4zMzMzIDAuMzMzMyAwLjMzMzMgMCAwIDAuMzMzMyAwLjMzMzMgMC4zMzMzIDAgMCAwLjMzMzMgMC4zMzMzIDAuMzMzMyAwIDAgMCAwIDAgMSAwXCcvJmd0OyZsdDsvZmlsdGVyJmd0OyZsdDsvc3ZnJmd0OyNncmF5c2NhbGUiKTsqLyAvKiBGaXJlZm94IDEwKywgRmlyZWZveCBvbiBBbmRyb2lkICovDQogICAgZmlsdGVyOiBncmF5OyAvKiBJRTYtOSAqLw0KICAgIC13ZWJraXQtZmlsdGVyOiBncmF5c2NhbGUoMTAwJSkgb3BhY2l0eSg2MCUpOyAvKiBDaHJvbWUgMTkrLCBTYWZhcmkgNissIFNhZmFyaSA2KyBpT1MgKi8NCn0NCg0KLmcxIHsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsNCiAgICB3aWR0aDogMTRweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgLyogZmFsbGJhY2sgKE9wZXJhKSAqLw0KICAgIC8qIE1vemlsbGE6ICovDQogICAgLyogQ2hyb21lLCBTYWZhcmk6Ki8NCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNmZmZmZmYgMCUsICNjOWM5YzkgMTAwJSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5YzljOTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsOw0KfQ0KDQouZzIgew0KICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAlIDAlOw0KICAgIHdpZHRoOiAxNHB4Ow0KICAgIGhlaWdodDogMTAwJTsNCiAgICBmbG9hdDogcmlnaHQ7DQogICAgLyogZmFsbGJhY2sgKE9wZXJhKSAqLw0KICAgIC8qIE1vemlsbGE6ICovDQogICAgLyogQ2hyb21lLCBTYWZhcmk6Ki8NCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNjOWM5YzkgMCUsICNmZmZmZmYgMTAwJSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2M5YzljOTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsOw0KfQ0KDQouZzFzIHsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsNCiAgICB3aWR0aDogMTRweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgLyogZmFsbGJhY2sgKE9wZXJhKSAqLw0KICAgIC8qIE1vemlsbGE6ICovDQogICAgLyogQ2hyb21lLCBTYWZhcmk6Ki8NCiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNmZmZmZmYgMCUsICNhMGEwYTAgMTAwJSk7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI2EwYTBhMDsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0Ow0KICAgIGJhY2tncm91bmQtYXR0YWNobWVudDogc2Nyb2xsOw0KfQ0KDQouZzJzIHsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSAwJTsNCiAgICB3aWR0aDogMTRweDsNCiAgICBoZWlnaHQ6IDEwMCU7DQogICAgZmxvYXQ6IHJpZ2h0Ow0KICAgIC8qIGZhbGxiYWNrIChPcGVyYSkgKi8NCiAgICAvKiBNb3ppbGxhOiAqLw0KICAgIC8qIENocm9tZSwgU2FmYXJpOiovDQogICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjYTBhMGEwIDAlLCAjZmZmZmZmIDEwMCUpOw0KICAgIGJhY2tncm91bmQtY29sb3I6ICNhMGEwYTA7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDsNCiAgICBiYWNrZ3JvdW5kLWF0dGFjaG1lbnQ6IHNjcm9sbDsNCn0NCg0KDQoubGJidXR0b24gew0KICAgIHdpZHRoOjQ0cHg7DQogICAgaGVpZ2h0OjQ0cHg7DQogICAgYm9yZGVyLXJhZGl1czo1cHg7DQogICAgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsNCiAgICBtYXJnaW4tbGVmdDo0cHg7DQogICAgbWFyZ2luLXRvcDo0cHg7DQogICAgcG9zaXRpb246cmVsYXRpdmU7DQogICAgY3Vyc29yOnBvaW50ZXI7DQogICAgb3BhY2l0eTowLjU7DQp9DQoNCi5sYmJ1dHRvbjpob3ZlciB7DQogICAgb3BhY2l0eToxOw0KfQ0KDQoubGJidXR0b25zZWwgew0KICAgIG9wYWNpdHk6MC45Ow0KfQ0KDQoubGJidXR0b25zZWwyIHsNCiAgICB3aWR0aDo4MnB4Ow0KICAgIGJvcmRlci1yYWRpdXM6NXB4IDBweCAwcHggNXB4Ow0KICAgIG9wYWNpdHk6MTsNCn0NCg0KLmxiMSB7DQogICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy1jb21tYW5kZXIvbGVmdGJhci0zMi5wbmcpIC0wcHggMHB4Ow0KICAgIGhlaWdodDogMzJweDsNCiAgICB3aWR0aDogMzJweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfQ0KDQoubGIyIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9sZWZ0YmFyLTMyLnBuZykgLTMycHggMHB4Ow0KICAgIGhlaWdodDogMzJweDsNCiAgICB3aWR0aDogMzJweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfQ0KDQoubGIzIHsNCiAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzLWNvbW1hbmRlci9sZWZ0YmFyLTMyLnBuZykgLTY0cHggMHB4Ow0KICAgIGhlaWdodDogMzJweDsNCiAgICB3aWR0aDogMzJweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7DQogICAgYm9yZGVyOiBub25lOw0KfTwvc3R5bGU+DQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgDQogICAgPHN0eWxlPg0KICAgICAgICAubWVudWl0ZW0geyBjdXJzb3I6IHBvaW50ZXI7IGJvcmRlcjogbm9uZTsgcGFkZGluZzo1cHg7IH0NCiAgICAgICAgLm1lbnVpdGVtOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzZiOWRjNzsgfQ0KICAgIDwvc3R5bGU+DQogICAgICAgICAgICAgICAgPHRpdGxlPkxNUyBNZXNoQ29tbWFuZGVyPC90aXRsZT4NCiAgICAgICAgICAgIDwvaGVhZD4NCjxib2R5IG9udW5sb2FkPSJjbGVhbnVwKCkiPg0KICAgIDxkaXYgaWQ9ImlkX3RvcGhlYWRlciIgY2xhc3M9ImhlYWRlciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0idG9wQ2VsbCIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjU1cHgiPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0b3AxIj5MTVMgTWVzaENvbW1hbmRlcjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0b3AyIiBpZD0iaWRfY29tcHV0ZXJuYW1lIj4NCiAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3RhYmxlPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzYmFyIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImlkX3Byb2dyZXNzYmFyIiBzdHlsZT0iaGVpZ2h0OjJweDt3aWR0aDowJTtiYWNrZ3JvdW5kLWNvbG9yOnJlZCI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIDxkaXYgaWQ9ImlkX21lc3NhZ2V2aWV3IiBjbGFzcz0iZnVsbGNlbGwiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoxMDBweDtmb250LXNpemU6MjBweCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfbWVzc2FnZXZpZXdzdHIiPkxvYWRpbmcuLi48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj48YnI+PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkNsb3NlIiBvbmNsaWNrPSJkaXNjb25uZWN0KCkiPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDxkaXYgaWQ9ImlkX2xtc01haW5QYW5lbCIgY2xhc3M9ImZ1bGxjZWxsIiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpsaWdodGdyYXk7aGVpZ2h0OjI0cHg7bWFyZ2luLWJvdHRvbTo2cHg7cGFkZGluZy10b3A6MnB4Ij4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImlkX2xtc1Rvb2xCYXJDb250ZW50IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxvYXQ6bGVmdDtoZWlnaHQ6MjZweDt3aWR0aDoyNnB4O2N1cnNvcjpwb2ludGVyIiBvbmNsaWNrPSJ0b29sbWVudWNsaWNrKDApIj4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNnB4Ij4mbmJzcDsmIzk3NzY7PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iUmVmcmVzaCIgb25jbGljaz0ibG1zUmVmcmVzaCgpIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZF9sbXNBY3RpdmF0ZUJ1dHRvbiIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQWN0aXZhdGUuLi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9uY2xpY2s9Imxtc0FjdGl2YXRlKCkiPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImlkX2xtc0RlYWN0aXZhdGVCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkRlYWN0aXZhdGUuLi4iIHN0eWxlPSJkaXNwbGF5Om5vbmUiIG9uY2xpY2s9Imxtc0RlYWN0aXZhdGUoKSI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWRfbG1zTG9naW5CdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkxvZ2luLi4uIiBzdHlsZT0iZGlzcGxheTpub25lIiBvbmNsaWNrPSJsbXNMb2dpbigpIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZF9sbXNDb25maWd1cmVCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkludGVsJnJlZzsgQU1UIExvZ2luLi4uIiBzdHlsZT0iZGlzcGxheTpub25lIiBvbmNsaWNrPSJsbXNDb25maWd1cmUoKSI+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPC9kaXY+DQogICAgICAgIDxkaXYgaWQ9ImlkX2xtc0RhdGEiIHN0eWxlPSJtYXJnaW46MTBweCI+PC9kaXY+DQogICAgICAgIDxkaXYgaWQ9ImlkX2xtc0RhdGEyIiBzdHlsZT0ibWFyZ2luOjEwcHgiPjwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9jb21wdXRlclNlbGVjdG9yTWVudSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I0VFRUVFRTtkaXNwbGF5Om5vbmU7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDo5NHB4O3dpZHRoOjIwMHB4O3BhZGRpbmc6M3B4O3otaW5kZXg6MTAwMDtib3gtc2hhZG93OjVweCA1cHggNXB4ICM4ODg4ODg7Ym9yZGVyOjFweCBzb2xpZCBncmF5Ij4NCiAgICAgICAgPGRpdiBjbGFzcz0ibWVudWl0ZW0iIG9uY2xpY2s9InRvb2xtZW51Y2xpY2soMTAxKSI+PHNwYW4gaWQ9ImlkX21lbnVpdGVtMSI+JmJ1bGw7IDwvc3Bhbj5Db21wdXRlciBDb25maWd1cmF0aW9uPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVudWl0ZW0iIG9uY2xpY2s9InRvb2xtZW51Y2xpY2soMTAyKSI+PHNwYW4gaWQ9ImlkX21lbnVpdGVtMiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+JmJ1bGw7IDwvc3Bhbj5VU0IgU2V0dXAuYmluIEVkaXRvcjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJpZF91c2JTZXR1cFBhbmVsIiBjbGFzcz0iZnVsbGNlbGwiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgIDx0YWJsZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojODA4MDgwO3dpZHRoOjEwMCUiPg0KICAgICAgICAgICAgPHRyPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOjI2cHg7Y3Vyc29yOnBvaW50ZXIiIG9uY2xpY2s9InRvb2xtZW51Y2xpY2soMCkiPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjE2cHgiPiZuYnNwOyYjOTc3Njs8L3NwYW4+DQogICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iTmV3Li4uIiBvbmNsaWNrPSJ1c2JfbmV3U2V0dXBCaW4oKSI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJPcGVuLi4uIiBvbmNsaWNrPSJ1c2Jfb3BlblNldHVwQmluKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWRfc2F2ZVNldHVwQmluIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTYXZlLi4uIiBvbmNsaWNrPSJ1c2Jfc2F2ZVNldHVwQmluKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdGFibGU+DQogICAgICAgIDxkaXYgaWQ9ImlkX3VzYlNldHVwUGFuZWwyIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7b3ZlcmZsb3cteTpzY3JvbGw7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7dG9wOjk2cHgiPg0KICAgICAgICAgICAgPGRpdiBpZD0iaWRfU3RhcnR1cFNjcmVlbiIgc3R5bGU9IndpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6Z3JheTttYXJnaW4tdG9wOjM2cHgiPg0KICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJmb250LXNpemU6MjBweCI+SW50ZWw8c3VwIHN0eWxlPSJmb250LXNpemU6MTBweCI+JnJlZzs8L3N1cD4gQU1UIFVTQiBTZXR1cC5iaW4gTWFuYWdlcjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW46NHB4Ij5HZXQgc3RhcnRlZCBieSA8YSBvbmNsaWNrPSJ1c2JfbmV3U2V0dXBCaW4oKSIgc3R5bGU9ImN1cnNvcjpwb2ludGVyIj48dT5jcmVhdGluZzwvdT48L2E+IGEgbmV3IGZpbGUsIDxhIG9uY2xpY2s9InVzYl9vcGVuU2V0dXBCaW4oKSIgc3R5bGU9ImN1cnNvcjpwb2ludGVyIj48dT5vcGVuaW5nPC91PjwvYT4gYW4gZXhpc3Rpbmcgb25lPGJyPm9yIGRyYWcgJiBkcm9wcGluZyBhIHNldHVwLmJpbiBmaWxlIGluIHRoaXMgd2luZG93LjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJpZF9TZXR1cEJpbkFyZWEiIHN0eWxlPSJtYXJnaW46MTBweCI+PC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImlkX21haW52aWV3IiBzdHlsZT0iaGVpZ2h0OjEwMCU7ZGlzcGxheTpub25lIj4NCiAgICAgICAgPGRpdiBpZD0iaWRfbGVmdGJhciIgY2xhc3M9Im5hdmJhciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdwYWRkaW5nOjhweCc+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgaWQ9ImRpc2Nvbm5lY3RCdXR0b24iIHZhbHVlPSJEaXNjb25uZWN0IiBvbmtleXByZXNzPSJyZXR1cm4gZmFsc2UiIG9ua2V5ZG93bj0icmV0dXJuIGZhbHNlIiBvbmNsaWNrPSJkaXNjb25uZWN0KCkiIHN0eWxlPSJ3aWR0aDoxMzhweCI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzEiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygxKSI+PGE+U3lzdGVtIFN0YXR1czwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28yIiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMikiPjxhPkhhcmR3YXJlIEluZm9ybWF0aW9uPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzYiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbyg2KSI+PGE+RXZlbnQgTG9nPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzE1IiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMTUpIj48YT5BdWRpdCBMb2c8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvMjEiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygyMSkiPjxhPlN0b3JhZ2U8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvOCIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDgpIj48YT5OZXR3b3JrIFNldHRpbmdzPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzE3IiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMTcpIj48YT5JbnRlcm5ldCBTZXR0aW5nczwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28xNiIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDE2KSI+PGE+U2VjdXJpdHkgU2V0dGluZ3M8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvMTkiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygxOSkiPjxhPkFnZW50IFByZXNlbmNlPC9hPjwvcD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJnbzE4IiBjbGFzcz0ibmF2MSIgb25jbGljaz0iZ28oMTgpIj48YT5TeXN0ZW0gRGVmZW5zZTwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28xMSIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDExKSI+PGE+VXNlciBBY2NvdW50czwvYT48L3A+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iZ28yMyIgY2xhc3M9Im5hdjEiIG9uY2xpY2s9ImdvKDIzKSI+PGE+V2FrZSBBbGFybXM8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgaWQ9ImdvMjAiIGNsYXNzPSJuYXYxIiBvbmNsaWNrPSJnbygyMCkiPjxhPlNjcmlwdCBFZGl0b3I8L2E+PC9wPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBpZD0iaWRfbWFpbmFyZWEiIGNsYXNzPSJtYWluY2VsbCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9zY3JpcHRzdGF0dXMiIHN0eWxlPSJoZWlnaHQ6MjFweDtiYWNrZ3JvdW5kOiM4ZmFjOGQ7cGFkZGluZzo1cHg7bWFyZ2luLWJvdHRvbToxcHg7ZGlzcGxheTpub25lO292ZXJmbG93OmhpZGRlbiI+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQiPjxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJTdG9wIFNjcmlwdCIgb25jbGljaz0ic2NyaXB0X1N0b3AoKSI+PC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjE2cHg7cGFkZGluZy10b3A6MnB4O292ZXJmbG93OmhpZGRlbiI+Jm5ic3A7PGI+UnVubmluZyBTY3JpcHQ8L2I+PHNwYW4gc3R5bGU9Im92ZXJmbG93OmhpZGRlbiIgaWQ9ImlkX3NjcmlwdHN0YXR1c3N0ciI+PC9zcGFuPjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9tYWluYXJlYV9mcmFtZSIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjEwMCUiPg0KICAgICAgICAgICAgICAgIDxpZnJhbWUgaWQ9ImlkX1N0b3JhZ2VJRnJhbWUiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowIj48L2lmcmFtZT4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iaWRfbWFpbmFyZWFfcGFkIiBzdHlsZT0icGFkZGluZzo4cHg7b3ZlcmZsb3cteDpoaWRkZW4iPg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAwIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPkxvYWRpbmcuLi48L2gxPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAxIiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlN5c3RlbSBTdGF0dXM8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVTeXNTdGF0dXMiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8aDEgc3R5bGU9Im1hcmdpbi1ib3R0b206MTZweCI+SGFyZHdhcmUgSW5mb3JtYXRpb248L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVTeXNJbmZvIj48L3NwYW4+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwNiIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5FdmVudCBMb2c8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVFdmVudExvZyI+PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVFdmVudExvZzIiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InA4IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPk5ldHdvcmsgU2V0dGluZ3M8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVOZXR3b3JrU2V0dGluZ3NTcGFuIj48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlV2lmaTIiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwMTEiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8aDE+VXNlciBBY2NvdW50czwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZVVzZXJBY2NvdW50cyI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJwMTUiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBpZD0iaWRfVGFibGVBdWRpdExvZzEiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPkF1ZGl0IExvZzwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZUF1ZGl0TG9nMiI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDE2IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlNlY3VyaXR5IFNldHRpbmdzPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlQ2VydHMiPjwvc3Bhbj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAxNyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5JbnRlcm5ldCBTZXR0aW5nczwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZVJlbW90ZUFjY2VzcyI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDE4IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlN5c3RlbSBEZWZlbnNlPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlU3lzdGVtRGVmZW5zZSI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDE5IiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPkFnZW50IFByZXNlbmNlPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlU3lzdGVtQWdlbnRQcmVzZW5jZSI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0icDIwIiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGgxPlNjcmlwdCBFZGl0b3I8L2gxPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJsb2cxIiBzdHlsZT0icGFkZGluZzo1cHg7Ym9yZGVyLXJhZGl1czo1cHgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0nRWRpdFNjcmlwdFN0YXR1cycgc3R5bGU9ImZsb2F0OnJpZ2h0O2ZvbnQtd2VpZ2h0OmJvbGQ7cGFkZGluZzo1cHgiPlN0b3BwZWQ8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlZpZXcgRWRpdG9yIiB0aXRsZT0iU3dpdGNoIHRvIHNjcmlwdCBsaW5lIGVkaXRvciB2aWV3IiBpZD0idmlld0VkaXRvckJ1dHRvbiIgb25jbGljaz0ic2NyaXB0Vmlld0J1dHRvbigwKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlZpZXcgQnVpbGRlciIgdGl0bGU9IlN3aXRjaCB0byBibG9jayBlZGl0b3IgdmlldyIgaWQ9InZpZXdCdWlsZGVyQnV0dG9uIiBvbmNsaWNrPSJzY3JpcHRWaWV3QnV0dG9uKDEpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iTmV3Li4uIiB0aXRsZT0iQ2xlYXIgdGhlIHNjcmlwdCBlZGl0b3IiIG9uY2xpY2s9InNjcmlwdF9uZXdTY3JpcHREbGcoKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkxvYWQuLi4iIHRpdGxlPSJMb2FkIGEgc2NyaXB0IGZyb20gZmlsZSIgb25jbGljaz0ic2NyaXB0X3J1blNjcmlwdERsZygpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlNhdmUuLi4iIHRpdGxlPSJTYXZlIGEgc2NyaXB0IHRvIGZpbGUiIG9uY2xpY2s9InNjcmlwdF9zYXZlU2NyaXB0KGV2ZW50KSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJSZXN0YXJ0IiB0aXRsZT0iQ29tcGlsZSB0aGUgc2NyaXB0IGFuZCBnZXQgcmVhZHkgdG8gcnVuIGl0IGZyb20gdGhlIHN0YXJ0IiBvbmNsaWNrPSJyZXNldFNjcmlwdEJ1dHRvbigpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQ29udGludWUiIHRpdGxlPSJSdW4gdGhlIHNjcmlwdCBmcm9tIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBwb2ludCIgb25jbGljaz0icnVuU2NyaXB0QnV0dG9uKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJidXR0b24iIHZhbHVlPSJCcmVhayIgdGl0bGU9IlBhdXNlIHRoZSBleGVjdXRpb24gb2YgdGhlIHNjcmlwdCIgb25jbGljaz0iYnJlYWtTY3JpcHRCdXR0b24oKSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlN0ZXAiIHRpdGxlPSJFeGVjdXRlIG9uZSBzdGVwIG9mIHRoZSBzY3JpcHQiIG9uY2xpY2s9InN0ZXBTY3JpcHRCdXR0b24oKSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNjcmlwdGJ1aWxkZXIiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlNjcmlwdCBCdWlsZGVyPC9oMj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MDttYXJnaW46MCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6MjUwcHg7aGVpZ2h0OjQwMHB4O2Zsb2F0OmxlZnQ7cGFkZGluZzowO21hcmdpbjowO3BhZGRpbmctcmlnaHQ6M3B4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJibG9ja2ZpbHRlciIgc3R5bGU9IndpZHRoOmluaGVyaXQ7aGVpZ2h0OjI0cHg7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjoxcHggc29saWQgZ3JheTttYXJnaW4tYm90dG9tOjFweCIgcGxhY2Vob2xkZXI9IkZpbHRlciBibG9ja3MuLi4iIG9ua2V5dXA9InNjcmlwdF9mb25maWx0ZXJjaGFuZ2VkKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJibG9ja3MiIHN0eWxlPSJ3aWR0aDppbmhlcml0O2hlaWdodDozNzNweDtib3JkZXI6MXB4IHNvbGlkIGdyYXk7b3ZlcmZsb3cteTpzY3JvbGw7cGFkZGluZzowO21hcmdpbjowIj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJzY3JpcHRibG9ja3MiIHN0eWxlPSJ3aWR0aDphdXRvO2hlaWdodDo0MDBweDtwYWRkaW5nOjA7bWFyZ2luOjA7Ym9yZGVyOjFweCBzb2xpZCBncmF5O292ZXJmbG93LXk6c2Nyb2xsIiBvbmRyb3A9InNjcmlwdF9mb25kcm9wKGV2ZW50LCB0aGlzKSIgb25jbGljaz0ic2NyaXB0X2ZvbmNsaWNrKGV2ZW50KSI+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InNjcmlwdGVkaXRvciI+DQogICAgICAgICAgICAgICAgICAgICAgICA8aDI+U2NyaXB0PC9oMj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0ic2NyaXB0YXJlYSIgc3R5bGU9IndpZHRoOjEwMCU7aGVpZ2h0OjE3NnB4O3Jlc2l6ZTp2ZXJ0aWNhbDttYXJnaW46MDtwYWRkaW5nOjA7Zm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3RleHRhcmVhPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGgyPkNvbXBpbGVkIFNjcmlwdDwvaDI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb21waWxlZGFyZWEiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoxNnB4O3Jlc2l6ZTp2ZXJ0aWNhbDttYXJnaW46MDtwYWRkaW5nOjAiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3RleHRhcmVhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlZhcmlhYmxlczwvaDI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJ2YXJpYWJsZXMiIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoyMDBweDtyZXNpemU6dmVydGljYWw7Ym9yZGVyOjFweCBzb2xpZCBncmF5O292ZXJmbG93OnNjcm9sbDttYXJnaW46MDtwYWRkaW5nOjA7dXNlci1zZWxlY3Q6dGV4dDstd2Via2l0LXVzZXItc2VsZWN0OnRleHQ7LWtodG1sLXVzZXItc2VsZWN0OnRleHQ7LW1vei11c2VyLXNlbGVjdDp0ZXh0Oy1tcy11c2VyLXNlbGVjdDp0ZXh0Ij48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxoMj5Db25zb2xlPC9oMj4NCiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJjb25zb2xlIiBzdHlsZT0id2lkdGg6MTAwJTtoZWlnaHQ6ODBweDtyZXNpemU6dmVydGljYWw7bWFyZ2luOjA7cGFkZGluZzowO3VzZXItc2VsZWN0OnRleHQ7LXdlYmtpdC11c2VyLXNlbGVjdDp0ZXh0Oy1raHRtbC11c2VyLXNlbGVjdDp0ZXh0Oy1tb3otdXNlci1zZWxlY3Q6dGV4dDstbXMtdXNlci1zZWxlY3Q6dGV4dCIgcmVhZG9ubHk9IiI+PC90ZXh0YXJlYT4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAyMSIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5TdG9yYWdlPC9oMT4NCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9ImlkX1RhYmxlU3lzdGVtU3RvcmFnZSI+PC9zcGFuPg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9InAyMyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+DQogICAgICAgICAgICAgICAgICAgIDxoMT5XYWtlIEFsYXJtczwvaDE+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJpZF9UYWJsZUFsYXJtIj48L3NwYW4+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZyIgc3R5bGU9InotaW5kZXg6MTAwMDtiYWNrZ3JvdW5kLWNvbG9yOiNFRUU7Ym94LXNoYWRvdzowcHggMHB4IDE1cHggIzY2Njtmb250LWZhbWlseTpBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO2JvcmRlci1yYWRpdXM6NXB4O3Bvc2l0aW9uOmZpeGVkO3RvcDoxNjBweDt3aWR0aDo0MDBweDtkaXNwbGF5Om5vbmUiPg0KICAgICAgICAgICAgPGRpdiBzdHlsZT0id2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDMzNjY7Y29sb3I6I0ZGRjtib3JkZXItcmFkaXVzOjVweCA1cHggMCAwIj4NCiAgICAgICAgICAgIDxkaXYgaWQ9J2lkX2RpYWxvZ2Nsb3NlJyBzdHlsZT0iZmxvYXQ6cmlnaHQ7cGFkZGluZzoxcHg7bWFyZ2luLXJpZ2h0OjVweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTVweCIgb25jbGljaz0ic2V0RGlhbG9nTW9kZSgpIj4mI3gyNzE2OzwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0naWRfZGlhbG9ndGl0bGUnIHN0eWxlPSJwYWRkaW5nOjVweCI+PC9kaXY+DQogICAgICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO21hcmdpbjo2cHgiPjwvZGl2Pg0KICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLXJpZ2h0OjE2cHg7bWFyZ2luLWxlZnQ6OHB4Ij4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzEiIHN0eWxlPSJtYXJnaW46YXV0bzt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9kaWFsb2dNZXNzYWdlIiBzdHlsZT0icGFkZGluZzoxMHB4Ij48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMiIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJkMnVzZXJuYW1lIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG9ua2V5dXA9InVwZGF0ZUFjY291bnREaWFsb2coKSI+PGRpdj5Vc2VybmFtZTwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQycGFzc3dvcmQxIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJvZmYiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25rZXl1cD0idXBkYXRlQWNjb3VudERpYWxvZygpIj48ZGl2PlBhc3N3b3JkKjwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQycGFzc3dvcmQyIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJvZmYiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25rZXl1cD0idXBkYXRlQWNjb3VudERpYWxvZygpIj48ZGl2PkNvbmZpcm0gUGFzc3dvcmQ8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpZF9kMnBlcm1pc3Npb25zIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OjI2cHgnPjxzZWxlY3QgaWQ9ImQycGVybWlzc2lvbiIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4Ij48b3B0aW9uIHZhbHVlPSIwIj5Mb2NhbDxvcHRpb24gdmFsdWU9IjEiPk5ldHdvcms8b3B0aW9uIHZhbHVlPSIyIj5Bbnk8L3NlbGVjdD48ZGl2PlBlcm1pc3Npb248L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj5HcmFudGVkIFBlcm1pc3Npb25zPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDx1bCBpZD0iaWRfZDJyZWFsbXMiIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6bm9uZTtoZWlnaHQ6MTAwcHg7b3ZlcmZsb3c6YXV0bzt3aWR0aDoxMDAlO2JvcmRlcjogMXB4IHNvbGlkICMwMDA7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtvdmVyZmxvdy14OmhpZGRlbjttYXJnaW46MDtwYWRkaW5nOjAiPjwvdWw+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOjEwcHgiPjxicj4qTWluaW11bSA4IGNoYXJhY3RlcnMgd2l0aCB1cHBlciwgbG93ZXJjYXNlLCAwLTksIGFuZCBvbmUgb2YgIUAjJCVeJmFtcDsqKCkrLTwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2c0IiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQ0dXNlcm5hbWUiIHBsYWNlaG9sZGVyPSJhZG1pbiIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBvbmtleXVwPSJsbXNVcGRhdGVMb2dpbkRpYWxvZyhldmVudCwgMSkiPjxkaXY+VXNlcm5hbWU8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJkNHBhc3N3b3JkIiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJvZmYiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25rZXl1cD0ibG1zVXBkYXRlTG9naW5EaWFsb2coZXZlbnQsIDIpIj48ZGl2PlBhc3N3b3JkKjwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxMHB4Ij48YnI+Kk1pbmltdW0gOCBjaGFyYWN0ZXJzIHdpdGggdXBwZXIsIGxvd2VyY2FzZSwgMC05LCBhbmQgb25lIG9mICFAIyQlXiZhbXA7KigpKy08L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nNSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxicj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImQ1YWN0aW9uU2VsZWN0IiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiPjwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PlBvd2VyIEFjdGlvbjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXY+DQogICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjpyZWQiPldhcm5pbmc6PC9zcGFuPiBTb21lIHBvd2VyIGFjdGlvbnMgbWF5IHJlc3VsdCBpbiBkYXRhIGxvc3MgYW5kIG1heSBkaXNjb25uZWN0IHRoZSBkZXNrdG9wLCB0ZXJtaW5hbCBvciBkaXNrIHJlZGlyZWN0aW9uIHNlc3Npb25zLg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2c2IiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImQ2Q29uc2VudFRleHQiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgbWF4bGVuZ3RoPSI2IiBvbmtleXVwPSJjb25zZW50Q2hhbmdlZCgpIiBvbmtleXByZXNzPSJyZXR1cm4gbnVtYmVyc09ubHkoZXZlbnQpIj48ZGl2PkNvbnNlbnQgQ29kZTwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48c2VsZWN0IGlkPSJkNkRpc3BsYXkiIG9uY2hhbmdlPSJjaGFuZ2VDb25zZW50RGlzcGxheSgpIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiPjxvcHRpb24gdmFsdWU9IjAiPlByaW1hcnkgZGlzcGxheTxvcHRpb24gdmFsdWU9IjEiPlNlY29uZGFyeSBkaXNwbGF5PG9wdGlvbiBpZD0iZDZUaGlyZERpc3BsYXkiIHZhbHVlPSIyIiBzdHlsZT0iZGlzcGxheTpub25lIj5UaGlyZCBkaXNwbGF5PC9zZWxlY3Q+PGRpdj5Db25zZW50IERpc3BsYXk8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nOCIgc3R5bGU9ImRpc3BsYXk6dGFibGU7bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luOjNweCAwIDNweCAwO3BhZGRpbmctdG9wOjVweCI+DQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2Q4dXNlcm5hbWUiIHZhbHVlPSJhZG1pbiIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIyMHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OjIwcHgiPlVzZXJuYW1lPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luOjNweCAwIDNweCAwIj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZHhfZDhwYXNzd29yZCIgdHlwZT0icGFzc3dvcmQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjIwcHgiPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6MjBweCI+UGFzc3dvcmQ8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nOSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2lkeF9kOXJlZGlyJz5SZWRpcmVjdGlvbiBQb3J0PGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImlkeF9kOWt2bV9kaXYiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2lkeF9kOWt2bSc+S1ZNIFJlbW90ZSBEZXNrdG9wPGJyPjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2lkeF9kOWlkZXInPklERS1SZWRpcmVjdGlvbjxicj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSdpZHhfZDlzb2wnPlNlcmlhbC1vdmVyLUxBTjxicj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTAiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImQxMCIgaWQ9J2lkeF9kMTBub25lJyB2YWx1ZT0iMCI+Tm90IFJlcXVpcmVkPGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZDEwIiBpZD0naWR4X2QxMGt2bScgdmFsdWU9IjEiPlJlcXVpcmVkIGZvciBLVk0gb25seTxicj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImQxMCIgaWQ9J2lkeF9kMTBhbGwnIHZhbHVlPSI0Mjk0OTY3Mjk1Ij5BbHdheXMgUmVxdWlyZWQ8YnI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzExIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGRpdiBpZD0iaWRfZGlhbG9nT3B0aW9ucyI+PC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzEyIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImlkeF9kMTJuYW1lIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG1heGxlbmd0aD0iMzIiIG9ua2V5dXA9InVwZGF0ZVdpZmlEaWFsb2coKSIgdGl0bGU9Ik1heGltdW0gMzIgY2hhcmFjdGVycyI+PGRpdiB0aXRsZT0iTWF4aW11bSAzMiBjaGFyYWN0ZXJzIj5Qcm9maWxlIE5hbWU8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJpZHhfZDEyc3NpZCIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBtYXhsZW5ndGg9IjMyIiBvbmtleXVwPSJ1cGRhdGVXaWZpRGlhbG9nKCkiIHRpdGxlPSJNYXhpbXVtIDMyIGNoYXJhY3RlcnMiPjxkaXYgdGl0bGU9Ik1heGltdW0gMzIgY2hhcmFjdGVycyI+U1NJRDwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QxMnByaSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBvbmNsaWNrPSJ1cGRhdGVXaWZpRGlhbG9nKCkiPjwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PlByaW9yaXR5PC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OjI2cHgnPg0KICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJpZHhfZDEyYXV0aCIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IiBvbmNsaWNrPSJ1cGRhdGVXaWZpRGlhbG9nKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxvcHRpb24gdmFsdWU9IjciPldQQTIgSUVFRSA4MDIuMXg8L29wdGlvbj4tLT4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjYiPldQQTIgUFNLDQogICAgICAgICAgICAgICAgICAgICAgICA8IS0tPG9wdGlvbiB2YWx1ZT0iNSI+V1BBIElFRUUgODAyLjF4PC9vcHRpb24+LS0+DQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij5XUEEgUFNLDQogICAgICAgICAgICAgICAgICAgICAgICA8IS0tPG9wdGlvbiB2YWx1ZT0iMyI+U2hhcmVkIEtleTwvb3B0aW9uPi0tPg0KICAgICAgICAgICAgICAgICAgICAgICAgPCEtLTxvcHRpb24gdmFsdWU9IjIiPk9wZW48L29wdGlvbj4tLT4NCiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+QXV0aGVudGljYXRpb248L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImlkeF9kMTJlbmMiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25jbGljaz0idXBkYXRlV2lmaURpYWxvZygpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gaWQ9ImlkX2QxMmU0IiB2YWx1ZT0iNCI+Q0NNUC1BRVMNCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gaWQ9ImlkX2QxMmUzIiB2YWx1ZT0iMyI+VEtJUC1SQzQNCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gaWQ9ImlkX2QxMmUyIiB2YWx1ZT0iMiI+V0VQDQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGlkPSJpZF9kMTJlNSIgdmFsdWU9IjUiPk5vbmUNCiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+RW5jcnlwdGlvbjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImlkeF9kMTJwYXNzd29yZDEiIHR5cGU9InBhc3N3b3JkIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG1heGxlbmd0aD0iNjMiIG9ua2V5dXA9InVwZGF0ZVdpZmlEaWFsb2coKSIgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPjxkaXYgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPlBhc3N3b3JkKjwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz48aW5wdXQgaWQ9ImlkeF9kMTJwYXNzd29yZDIiIHR5cGU9InBhc3N3b3JkIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiIG1heGxlbmd0aD0iNjMiIG9ua2V5dXA9InVwZGF0ZVdpZmlEaWFsb2coKSIgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPjxkaXYgdGl0bGU9Ikxlbmd0aCBiZXR3ZWVuIDggYW5kIDYzIGNoYXJhY3RlcnMiPkNvbmZpcm0gUGFzc3dvcmQ8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTMiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSdkMTN2YWxpZCc+VmFsaWQgUmVjb3JkPGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9J2QxM3NjcmFtYmxlJz5TY3JhbWJsZWQgUmVjb3JkPGJyPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cxNCIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QxNHZlcnNpb24iIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIxIj5WZXJzaW9uIDENCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjIiPlZlcnNpb24gMg0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMyI+VmVyc2lvbiAzDQogICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSI0Ij5WZXJzaW9uIDQNCiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+U2V0dXAuYmluIHZlcnNpb248L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImlkeF9kMTRjb25zdW1lIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHgiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMSI+UmVjb3JkcyB3aWxsIG5vdCBiZSBjb25zdW1lZA0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+UmVjb3JkcyB3aWxsIGJlIGNvbnN1bWVkDQogICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2PlJlY29yZCBjb25zdW1wdGlvbjwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cxNSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iZDE1c2V0dXBiaW5maWxlIiB0eXBlPSJmaWxlIiBzdHlsZT0id2lkdGg6MTAwJSIgYWNjZXB0PSIuYmluIj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTYiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+DQogICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgaWQ9ImQxNnR5cGUiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyNjBweCIgb25jaGFuZ2U9InVzYl9vbmQxNnR5cGVjaGFuZ2UoKSIgb25jbGljaz0idXNiX29uZDE2dHlwZWNoYW5nZSgpIiBvbnNjcm9sbD0idXNiX29uZDE2dHlwZWNoYW5nZSgpIiBvbmtleWRvd249InVzYl9vbmQxNnR5cGVjaGFuZ2UoKSI+PC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgIDxkaXY+VmFyaWFibGUgVHlwZTwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImQxNmdlbmVyaWN2YWx1ZSIgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QxNnZhbHVlMSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4Ij48L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJpZHhfZDE2dmFsdWUyIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHg7ZGlzcGxheTpub25lIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj5WYXJpYWJsZSBWYWx1ZTwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImQxNmN1c3RvbXZhbHVlIj48L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZGlhbG9nMTkiIHN0eWxlPSJtYXJnaW46YXV0bzttYXJnaW46M3B4Ij4NCiAgICAgICAgICAgICAgICBUaGlzIHdpbGwgc2F2ZSB0aGUgZW50aXJlIHN0YXRlIG9mIEludGVsJnJlZzsgQU1UIGZvciB0aGlzIG1hY2hpbmUgaW50byBmaWxlLiBQYXNzd29yZHMgd2lsbCBub3QgYmUgc2F2ZWQsIGJ1dCBzb21lIHNlbnNpdGl2ZSBkYXRhIG1heSBiZSBpbmNsdWRlZC48YnI+PGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2QxOXNhdmVzdGF0ZWZpbGVuYW1lIiBzdHlsZT0id2lkdGg6MTAwJSIgdmFsdWU9ImFtdHN0YXRlLmpzb24iPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cyMCIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZDIwIiBpZD0iZDIwYSIgdmFsdWU9IjAiPkRpc2FibGVkPGJyPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0iZDIwIiBpZD0iZDIwYiIgdmFsdWU9IjEiPklDTVAgcmVzcG9uc2U8YnI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjAiIGlkPSJkMjBjIiB2YWx1ZT0iMiI+Uk1DUCByZXNwb25zZTxicj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9ImQyMCIgaWQ9ImQyMGQiIHZhbHVlPSIzIj5JQ01QICYgUk1DUCByZXNwb25zZTxicj48YnI+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzIxIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjEiIGlkPSJkMjFvMCIgb25jbGljaz0idXBkYXRlSVBTZXR1cERsZygpIj48c3BhbiBpZD0iZDIxbDAiPjwvc3Bhbj48YnI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjEiIGlkPSJkMjFvMSIgb25jbGljaz0idXBkYXRlSVBTZXR1cERsZygpIj48c3BhbiBpZD0iZDIxbDEiPjwvc3Bhbj48YnI+DQogICAgICAgICAgICAgICAgPGRpdiBpZD0iaWRfZDIxbWFudWFsZGl2Ij4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJkMjEiIGlkPSdkMjFvMicgb25jbGljaz0idXBkYXRlSVBTZXR1cERsZygpIj48c3BhbiBpZD0iZDIxbDIiPjwvc3Bhbj48YnI+PGJyPg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4Ij48aW5wdXQgaWQ9ImlkeF9kMjFhZGRyZXNzIiBvbmtleXVwPSJ1cGRhdGVJUFNldHVwRGxnKCkiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMzBweCI+PGRpdj5JUCBhZGRyZXNzPC9kaXY+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6MjZweCIgaWQ9ImlkX2QyMXN1Ym5ldGRpdiI+PGlucHV0IGlkPSJpZHhfZDIxc3VibmV0IiBvbmtleXVwPSJ1cGRhdGVJUFNldHVwRGxnKCkiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMzBweCI+PGRpdj5TdWJuZXQgbWFyazwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OjI2cHgiPjxpbnB1dCBpZD0iaWR4X2QyMWdhdGV3YXkiIG9ua2V5dXA9InVwZGF0ZUlQU2V0dXBEbGcoKSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4Ij48ZGl2PkdhdGV3YXk8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4Ij48aW5wdXQgaWQ9ImlkeF9kMjFkbnMxIiBvbmtleXVwPSJ1cGRhdGVJUFNldHVwRGxnKCkiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMzBweCI+PGRpdj5QcmltYXJ5IEROUzwvZGl2PjwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iaGVpZ2h0OjI2cHgiPjxpbnB1dCBpZD0iaWR4X2QyMWRuczIiIG9ua2V5dXA9InVwZGF0ZUlQU2V0dXBEbGcoKSIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4Ij48ZGl2PkFsdGVybmF0ZSBETlM8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDxkaXYgaWQ9ImRpYWxvZzIzIiBzdHlsZT0ibWFyZ2luOmF1dG87bWFyZ2luOjNweCI+DQogICAgICAgICAgICAgICAgPGJyPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDoyNnB4Jz4NCiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0iaWR4X2QyM2RkbnMiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCIgb25jaGFuZ2U9InNob3dFZGl0RG5zRGxnQ2hhbmdlKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+RGlzYWJsZWQNCiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkRpc2FibGVkLCBESENQIHVwZGF0ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMiI+RW5hYmxlZA0KICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD4NCiAgICAgICAgICAgICAgICAgICAgPGRpdj5EeW5hbWljIEROUyBjbGllbnQ8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6MjZweCc+PGlucHV0IGlkPSJpZHhfZDIzaW50ZXJ2YWwiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoyMDBweCI+PGRpdj5VcGRhdGUgSW50ZXJ2YWwgKG1pbnV0ZXMpPC9kaXY+PC9kaXY+DQogICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0OjI2cHgnPjxpbnB1dCBpZD0iaWR4X2QyM3R0bCIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4Ij48ZGl2PlRUTCAoc2Vjb25kcyk8L2Rpdj48L2Rpdj4NCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6MTBweCI+PGJyPkRlZmF1dCBJbnRlcnZhbCBpcyAxNDQwIG1pbnV0ZXMsIERlZmF1bHQgVFRMIGlzIDkwMCBzZWNvbmRzLjwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJkaWFsb2cyNSIgc3R5bGU9Im1hcmdpbjphdXRvO21hcmdpbjozcHgiPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246bGVmdCI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij48aW5wdXQgaWQ9ImQyNWFsYXJtX25hbWUiIHN0eWxlPSJmbG9hdDpyaWdodDt3aWR0aDoxODBweCIgbWF4bGVuZ3RoPSIzMiIgb25rZXl1cD0iYWxlcnREaWFsb2dVcGRhdGUoKSI+PGRpdiBzdHlsZT0icGFkZGluZy10b3A6NHB4Ij5BbGFybSBuYW1lPC9kaXY+PC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImQyNWFsYXJtX3NkYXRlIiBzdHlsZT0id2lkdGg6MTgwcHgiIG1heGxlbmd0aD0iMTAiIG9ua2V5dXA9ImFsZXJ0RGlhbG9nVXBkYXRlKCkiIG9ua2V5cHJlc3M9InJldHVybiBudW1iZXJzT25seShldmVudCw0NSkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLXRvcDo0cHgiPldha2UgZGF0ZSAoeWVhci1tb250aC1kYXkpPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJkMjVhbGFybV9zdGltZSIgc3R5bGU9IndpZHRoOjE4MHB4IiBtYXhsZW5ndGg9IjEwIiBvbmtleXVwPSJhbGVydERpYWxvZ1VwZGF0ZSgpIiBvbmtleXByZXNzPSJyZXR1cm4gbnVtYmVyc09ubHkoZXZlbnQsNTgpIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZy10b3A6NHB4Ij5XYWtlIHRpbWUgKGhvdXI6bWluOnNlYyk8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9ImQyNWFsYXJtX2ludGVydmFsIiBzdHlsZT0id2lkdGg6MTgwcHgiIG1heGxlbmd0aD0iMTAiIG9ua2V5dXA9ImFsZXJ0RGlhbG9nVXBkYXRlKCkiIG9ua2V5cHJlc3M9InJldHVybiBudW1iZXJzT25seShldmVudCw0NSkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nLXRvcDo0cHgiPkludGVydmFsIChkYXlzLWhvdXJzLW1pbik8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjE4MHB4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJkMjVhbGFybV9kb2MiIHN0eWxlPSJ3aWR0aDoxMDAlIiBvbmNoYW5nZT0ic2hvd0FkdlBvd2VyRGxnQ2hhbmdlKCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj5LZWVwIGFsYXJtDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEiPkRlbGV0ZSBvbiBjb21wbGV0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+DQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmctdG9wOjRweCI+QWZ0ZXIgd2FrZTwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzoxMHB4O21hcmdpbi1ib3R0b206NHB4Ij4NCiAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2RsZ0NhbmNlbEJ1dHRvbiIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQ2FuY2VsIiBzdHlsZT0iZmxvYXQ6cmlnaHQ7d2lkdGg6ODBweDttYXJnaW4tbGVmdDo1cHgiIG9uY2xpY2s9ImRpYWxvZ2Nsb3NlKDApIj4NCiAgICAgICAgICAgIDxpbnB1dCBpZD0iaWR4X2RsZ09rQnV0dG9uIiB0eXBlPSJidXR0b24iIHZhbHVlPSJPSyIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjgwcHgiIG9uY2xpY2s9ImRpYWxvZ2Nsb3NlKDEpIj4NCiAgICAgICAgICAgIDxkaXYgc3R5bGU9ImhlaWdodDoyNXB4Ij48aW5wdXQgaWQ9ImlkeF9kbGdEZWxldGVCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkRlbGV0ZSIgc3R5bGU9IndpZHRoOjgwcHg7ZGlzcGxheTpub25lIiBvbmNsaWNrPSJkaWFsb2djbG9zZSgyKSI+PC9kaXY+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICANCjwvYm9keT4NCjwvaHRtbD4NCjxzY3JpcHQ+LyoqIA0KKiBAZGVzY3JpcHRpb24gU2V0IG9mIHNob3J0IGNvbW1vbmx5IHVzZWQgbWV0aG9kcyBmb3IgaGFuZGxpbmcgSFRNTCBlbGVtZW50cw0KKiBAYXV0aG9yIFlsaWFuIFNhaW50LUhpbGFpcmUNCiogQHZlcnNpb24gdjAuMC4xYg0KKi8NCg0KLy8gQWRkIHN0YXJ0c1dpdGggZm9yIElFIGJyb3dzZXINCmlmICghU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoKSB7IFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHRoaXMubGFzdEluZGV4T2Yoc3RyLCAwKSA9PT0gMDsgfTsgfQ0KaWYgKCFTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoKSB7IFN0cmluZy5wcm90b3R5cGUuZW5kc1dpdGggPSBmdW5jdGlvbiAoc3RyKSB7IHJldHVybiB0aGlzLmluZGV4T2Yoc3RyLCB0aGlzLmxlbmd0aCAtIHN0ci5sZW5ndGgpICE9PSAtMTsgfTsgfQ0KDQovLyBRdWljayBVSSBmdW5jdGlvbnMsIGEgYml0IG9mIGEgcmVwbGFjZW1lbnQgZm9yIGpRdWVyeQ0KLy9mdW5jdGlvbiBRKHgpIHsgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHgpID09IG51bGwpIHsgY29uc29sZS5sb2coJ0ludmFsaWQgZWxlbWVudDogJyArIHgpOyB9IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh4KTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiUSINCmZ1bmN0aW9uIFEoeCkgeyByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoeCk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIlEiDQpmdW5jdGlvbiBRUyh4KSB7IHRyeSB7IHJldHVybiBRKHgpLnN0eWxlOyB9IGNhdGNoICh4KSB7IH0gfSAgICAgICAgICAgICAgICAgICAgIC8vICJRIiBzdHlsZQ0KZnVuY3Rpb24gUUUoeCwgeSkgeyB0cnkgeyBRKHgpLmRpc2FibGVkID0gIXk7IH0gY2F0Y2ggKHgpIHsgfSB9ICAgICAgICAgICAgICAgICAvLyAiUSIgZW5hYmxlDQpmdW5jdGlvbiBRVih4LCB5KSB7IHRyeSB7IFFTKHgpLmRpc3BsYXkgPSAoeSA/ICcnIDogJ25vbmUnKTsgfSBjYXRjaCAoeCkgeyB9IH0gIC8vICJRIiB2aXNpYmxlDQpmdW5jdGlvbiBRQSh4LCB5KSB7IFEoeCkuaW5uZXJIVE1MICs9IHk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICJRIiBhcHBlbmQNCmZ1bmN0aW9uIFFIKHgsIHkpIHsgUSh4KS5pbm5lckhUTUwgPSB5OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIlEiIGh0bWwNCg0KLy8gTW92ZSBjdXJzb3IgdG8gZW5kIG9mIGlucHV0IGJveA0KZnVuY3Rpb24gaW5wdXRCb3hGb2N1cyh4KSB7IFEoeCkuZm9jdXMoKTsgdmFyIHYgPSBRKHgpLnZhbHVlOyBRKHgpLnZhbHVlID0gJyc7IFEoeCkudmFsdWUgPSB2OyB9DQoNCi8vIEJpbmFyeSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgZnVuY3Rpb25zDQpmdW5jdGlvbiBSZWFkU2hvcnQodiwgcCkgeyByZXR1cm4gKHYuY2hhckNvZGVBdChwKSA8PCA4KSArIHYuY2hhckNvZGVBdChwICsgMSk7IH0NCmZ1bmN0aW9uIFJlYWRTaG9ydFgodiwgcCkgeyByZXR1cm4gKHYuY2hhckNvZGVBdChwICsgMSkgPDwgOCkgKyB2LmNoYXJDb2RlQXQocCk7IH0NCmZ1bmN0aW9uIFJlYWRJbnQodiwgcCkgeyByZXR1cm4gKHYuY2hhckNvZGVBdChwKSAqIDB4MTAwMDAwMCkgKyAodi5jaGFyQ29kZUF0KHAgKyAxKSA8PCAxNikgKyAodi5jaGFyQ29kZUF0KHAgKyAyKSA8PCA4KSArIHYuY2hhckNvZGVBdChwICsgMyk7IH0gLy8gV2UgdXNlICIqMHgxMDAwMDAwIiBpbnN0ZWFkIG9mICI8PDI0IiBiZWNhdXNlIHRoZSBzaGlmdCBjb252ZXJ0cyB0aGUgbnVtYmVyIHRvIHNpZ25lZCBpbnQzMi4NCmZ1bmN0aW9uIFJlYWRTSW50KHYsIHApIHsgcmV0dXJuICh2LmNoYXJDb2RlQXQocCkgPDwgMjQpICsgKHYuY2hhckNvZGVBdChwICsgMSkgPDwgMTYpICsgKHYuY2hhckNvZGVBdChwICsgMikgPDwgOCkgKyB2LmNoYXJDb2RlQXQocCArIDMpOyB9DQpmdW5jdGlvbiBSZWFkSW50WCh2LCBwKSB7IHJldHVybiAodi5jaGFyQ29kZUF0KHAgKyAzKSAqIDB4MTAwMDAwMCkgKyAodi5jaGFyQ29kZUF0KHAgKyAyKSA8PCAxNikgKyAodi5jaGFyQ29kZUF0KHAgKyAxKSA8PCA4KSArIHYuY2hhckNvZGVBdChwKTsgfQ0KZnVuY3Rpb24gU2hvcnRUb1N0cih2KSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2ID4+IDgpICYgMHhGRiwgdiAmIDB4RkYpOyB9DQpmdW5jdGlvbiBTaG9ydFRvU3RyWCh2KSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHYgJiAweEZGLCAodiA+PiA4KSAmIDB4RkYpOyB9DQpmdW5jdGlvbiBJbnRUb1N0cih2KSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKCh2ID4+IDI0KSAmIDB4RkYsICh2ID4+IDE2KSAmIDB4RkYsICh2ID4+IDgpICYgMHhGRiwgdiAmIDB4RkYpOyB9DQpmdW5jdGlvbiBJbnRUb1N0clgodikgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh2ICYgMHhGRiwgKHYgPj4gOCkgJiAweEZGLCAodiA+PiAxNikgJiAweEZGLCAodiA+PiAyNCkgJiAweEZGKTsgfQ0KZnVuY3Rpb24gTWFrZVRvQXJyYXkodikgeyBpZiAoIXYgfHwgdiA9PSBudWxsIHx8IHR5cGVvZiB2ID09ICdvYmplY3QnKSByZXR1cm4gdjsgcmV0dXJuIFt2XTsgfQ0KZnVuY3Rpb24gU3BsaXRBcnJheSh2KSB7IHJldHVybiB2LnNwbGl0KCcsJyk7IH0NCmZ1bmN0aW9uIENsb25lKHYpIHsgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodikpOyB9DQpmdW5jdGlvbiBFc2NhcGVIdG1sKHgpIHsgaWYgKHR5cGVvZiB4ID09ICJzdHJpbmciKSByZXR1cm4geC5yZXBsYWNlKC8mL2csICcmYW1wOycpLnJlcGxhY2UoLz4vZywgJyZndDsnKS5yZXBsYWNlKC88L2csICcmbHQ7JykucmVwbGFjZSgvIi9nLCAnJnF1b3Q7JykucmVwbGFjZSgvJy9nLCAnJmFwb3M7Jyk7IGlmICh0eXBlb2YgeCA9PSAiYm9vbGVhbiIpIHJldHVybiB4OyBpZiAodHlwZW9mIHggPT0gIm51bWJlciIpIHJldHVybiB4OyB9DQoNCi8vIE1vdmUgYW4gZWxlbWVudCBmcm9tIG9uZSBwb3NpdGlvbiBpbiBhbiBhcnJheSB0byBhIG5ldyBwb3NpdGlvbg0KZnVuY3Rpb24gQXJyYXlFbGVtZW50TW92ZShhcnIsIGZyb20sIHRvKSB7IGFyci5zcGxpY2UodG8sIDAsIGFyci5zcGxpY2UoZnJvbSwgMSlbMF0pOyB9Ow0KDQovLyBQcmludCBvYmplY3QgZm9yIEhUTUwNCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nRXgoeCwgYykgew0KICAgIHZhciByID0gIiI7DQogICAgaWYgKHggIT0gMCAmJiAoIXggfHwgeCA9PSBudWxsKSkgcmV0dXJuICIoTnVsbCkiOw0KICAgIGlmICh4IGluc3RhbmNlb2YgQXJyYXkpIHsgZm9yICh2YXIgaSBpbiB4KSB7IHIgKz0gJzxiciAvPicgKyBnYXAoYykgKyAiSXRlbSAjIiArIGkgKyAiOiAiICsgT2JqZWN0VG9TdHJpbmdFeCh4W2ldLCBjICsgMSk7IH0gfQ0KICAgIGVsc2UgaWYgKHggaW5zdGFuY2VvZiBPYmplY3QpIHsgZm9yICh2YXIgaSBpbiB4KSB7IHIgKz0gJzxiciAvPicgKyBnYXAoYykgKyBpICsgIiA9ICIgKyBPYmplY3RUb1N0cmluZ0V4KHhbaV0sIGMgKyAxKTsgfSB9DQogICAgZWxzZSB7IHIgKz0gRXNjYXBlSHRtbCh4KTsgfQ0KICAgIHJldHVybiByOw0KfQ0KDQovLyBQcmludCBvYmplY3QgZm9yIGNvbnNvbGUNCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nRXgyKHgsIGMpIHsNCiAgICB2YXIgciA9ICIiOw0KICAgIGlmICh4ICE9IDAgJiYgKCF4IHx8IHggPT0gbnVsbCkpIHJldHVybiAiKE51bGwpIjsNCiAgICBpZiAoeCBpbnN0YW5jZW9mIEFycmF5KSB7IGZvciAodmFyIGkgaW4geCkgeyByICs9ICdcclxuJyArIGdhcDIoYykgKyAiSXRlbSAjIiArIGkgKyAiOiAiICsgT2JqZWN0VG9TdHJpbmdFeDIoeFtpXSwgYyArIDEpOyB9IH0NCiAgICBlbHNlIGlmICh4IGluc3RhbmNlb2YgT2JqZWN0KSB7IGZvciAodmFyIGkgaW4geCkgeyByICs9ICdcclxuJyArIGdhcDIoYykgKyBpICsgIiA9ICIgKyBPYmplY3RUb1N0cmluZ0V4Mih4W2ldLCBjICsgMSk7IH0gfQ0KICAgIGVsc2UgeyByICs9IEVzY2FwZUh0bWwoeCk7IH0NCiAgICByZXR1cm4gcjsNCn0NCg0KLy8gQ3JlYXRlIGFuIGlkZW50IGdhcA0KZnVuY3Rpb24gZ2FwKGMpIHsgdmFyIHggPSAnJzsgZm9yICh2YXIgaSA9IDA7IGkgPCAoYyAqIDQpIDsgaSsrKSB7IHggKz0gJyZuYnNwOyc7IH0gcmV0dXJuIHg7IH0NCmZ1bmN0aW9uIGdhcDIoYykgeyB2YXIgeCA9ICcnOyBmb3IgKHZhciBpID0gMDsgaSA8IChjICogNCkgOyBpKyspIHsgeCArPSAnICc7IH0gcmV0dXJuIHg7IH0NCg0KLy8gUHJpbnQgYW4gb2JqZWN0IGluIGh0bWwNCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nKHgpIHsgcmV0dXJuIE9iamVjdFRvU3RyaW5nRXgoeCwgMCk7IH0NCmZ1bmN0aW9uIE9iamVjdFRvU3RyaW5nMih4KSB7IHJldHVybiBPYmplY3RUb1N0cmluZ0V4Mih4LCAwKTsgfQ0KDQovLyBDb252ZXJ0IGEgaGV4IHN0cmluZyB0byBhIHJhdyBzdHJpbmcNCmZ1bmN0aW9uIGhleDJyc3RyKGQpIHsNCiAgICBpZiAodHlwZW9mIGQgIT0gInN0cmluZyIgfHwgZC5sZW5ndGggPT0gMCkgcmV0dXJuICcnOw0KICAgIHZhciByID0gJycsIG0gPSAoJycgKyBkKS5tYXRjaCgvLi4vZyksIHQ7DQogICAgd2hpbGUgKHQgPSBtLnNoaWZ0KCkpIHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgnMHgnICsgdCk7DQogICAgcmV0dXJuIHINCn0NCg0KLy8gQ29udmVydCBkZWNpbWFsIHRvIGhleA0KZnVuY3Rpb24gY2hhcjJoZXgoaSkgeyByZXR1cm4gKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigtMikudG9VcHBlckNhc2UoKTsgfQ0KDQovLyBDb252ZXJ0IGEgcmF3IHN0cmluZyB0byBhIGhleCBzdHJpbmcNCmZ1bmN0aW9uIHJzdHIyaGV4KGlucHV0KSB7DQogICAgdmFyIHIgPSAnJywgaTsNCiAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHsgciArPSBjaGFyMmhleChpbnB1dC5jaGFyQ29kZUF0KGkpKTsgfQ0KICAgIHJldHVybiByOw0KfQ0KDQovLyBVVEYtOCBlbmNvZGluZyAmIGRlY29kaW5nIGZ1bmN0aW9ucw0KZnVuY3Rpb24gZW5jb2RlX3V0ZjgocykgeyByZXR1cm4gdW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHMpKTsgfQ0KZnVuY3Rpb24gZGVjb2RlX3V0ZjgocykgeyByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShzKSk7IH0NCg0KLy8gQ29udmVydCBhIHN0cmluZyBpbnRvIGEgYmxvYg0KZnVuY3Rpb24gZGF0YTJibG9iKGRhdGEpIHsNCiAgICB2YXIgYnl0ZXMgPSBuZXcgQXJyYXkoZGF0YS5sZW5ndGgpOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgYnl0ZXNbaV0gPSBkYXRhLmNoYXJDb2RlQXQoaSk7DQogICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkoYnl0ZXMpXSk7DQogICAgcmV0dXJuIGJsb2I7DQp9DQoNCi8vIEdlbmVyYXRlIHJhbmRvbSBudW1iZXJzDQpmdW5jdGlvbiByYW5kb20obWF4KSB7IHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBtYXgpOyB9DQoNCi8vIFRyYWRlbWFya3MNCmZ1bmN0aW9uIHRyYWRlbWFya3MoeCkgeyByZXR1cm4geC5yZXBsYWNlKC9cKFJcKS9nLCAnJnJlZzsnKS5yZXBsYWNlKC9cKFRNXCkvZywgJyZ0cmFkZTsnKTsgfQ0KDQoNCi8qKiANCiogQGRlc2NyaXB0aW9uIEludGVsIEFNVCBMTVMgY29udHJvbCBtb2R1bGUgLSB1c2luZyB3ZWJzb2NrZXQNCiogQGF1dGhvciBZbGlhbiBTYWludC1IaWxhaXJlDQoqIEB2ZXJzaW9uIHYwLjAuMQ0KKi8NCg0KLy8gQ29uc3RydWN0IGEgTE1TIGNvbnRyb2wgb2JqZWN0DQp2YXIgQ3JlYXRlTG1zQ29udHJvbCA9IGZ1bmN0aW9uICgpIHsNCiAgICB2YXIgb2JqID0ge307DQogICAgdmFyIHNvY2tldCA9IG51bGw7DQogICAgb2JqLlN0YXRlID0gMDsNCiAgICBvYmoub25TdGF0ZUNoYW5nZWQgPSBudWxsOw0KICAgIG9iai5vbkRhdGEgPSBudWxsOw0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBvYmouU3RhcnQgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQod2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoImh0dHAiLCAid3MiKSArICIvLyIgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICIvbG1zLmFzaHgiKTsNCiAgICAgICAgc29ja2V0Lm9ub3BlbiA9IF9PblNvY2tldENvbm5lY3RlZDsNCiAgICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9IF9Pbk1lc3NhZ2U7DQogICAgICAgIHNvY2tldC5vbmNsb3NlID0gb2JqLlN0b3A7DQogICAgICAgIF9TdGF0ZUNoYW5nZSgxKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBfT25Tb2NrZXRDb25uZWN0ZWQoKSB7DQogICAgICAgIF9TdGF0ZUNoYW5nZSgyKTsNCiAgICB9DQoNCiAgICAvLyBTZXR1cCB0aGUgZmlsZSByZWFkZXINCiAgICB2YXIgZmlsZVJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgdmFyIGZpbGVSZWFkZXJJbnVzZSA9IGZhbHNlLCBmaWxlUmVhZGVyQWNjID0gW107DQogICAgaWYgKGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKSB7DQogICAgICAgIC8vIENocm9tZSAmIEZpcmVmb3ggKERyYWZ0KQ0KICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uIChlKSB7IF9PblNvY2tldERhdGEoZS50YXJnZXQucmVzdWx0KTsgaWYgKGZpbGVSZWFkZXJBY2MubGVuZ3RoID09IDApIHsgZmlsZVJlYWRlckludXNlID0gZmFsc2U7IH0gZWxzZSB7IGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKG5ldyBCbG9iKFtmaWxlUmVhZGVyQWNjLnNoaWZ0KCldKSk7IH0gfQ0KICAgIH0gZWxzZSBpZiAoZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcikgew0KICAgICAgICAvLyBDaHJvbWUgJiBGaXJlZm94IChTcGVjKQ0KICAgICAgICBmaWxlUmVhZGVyLm9ubG9hZGVuZCA9IGZ1bmN0aW9uIChlKSB7IF9PblNvY2tldERhdGEoZS50YXJnZXQucmVzdWx0KTsgaWYgKGZpbGVSZWFkZXJBY2MubGVuZ3RoID09IDApIHsgZmlsZVJlYWRlckludXNlID0gZmFsc2U7IH0gZWxzZSB7IGZpbGVSZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZVJlYWRlckFjYy5zaGlmdCgpKTsgfSB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX09uTWVzc2FnZShlKSB7DQogICAgICAgIGlmICh0eXBlb2YgZS5kYXRhID09ICdvYmplY3QnKSB7DQogICAgICAgICAgICBpZiAoZmlsZVJlYWRlckludXNlID09IHRydWUpIHsgZmlsZVJlYWRlckFjYy5wdXNoKGUuZGF0YSk7IHJldHVybjsgfQ0KICAgICAgICAgICAgaWYgKGZpbGVSZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKSB7DQogICAgICAgICAgICAgICAgLy8gQ2hyb21lICYgRmlyZWZveCAoRHJhZnQpDQogICAgICAgICAgICAgICAgZmlsZVJlYWRlckludXNlID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhuZXcgQmxvYihbZS5kYXRhXSkpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKSB7DQogICAgICAgICAgICAgICAgLy8gQ2hyb21lICYgRmlyZWZveCAoU3BlYykNCiAgICAgICAgICAgICAgICBmaWxlUmVhZGVySW51c2UgPSB0cnVlOw0KICAgICAgICAgICAgICAgIGZpbGVSZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZS5kYXRhKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gSUUxMCwgcmVhZEFzQmluYXJ5U3RyaW5nIGRvZXMgbm90IGV4aXN0LCB1c2UgYW4gYWx0ZXJuYXRpdmUuDQogICAgICAgICAgICAgICAgdmFyIGJpbmFyeSA9ICIiLCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGUuZGF0YSksIGxlbmd0aCA9IGJ5dGVzLmJ5dGVMZW5ndGg7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICAgICAgICAgICAgICBfT25Tb2NrZXREYXRhKGJpbmFyeSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBfT25Tb2NrZXREYXRhKGUuZGF0YSk7DQogICAgICAgIH0NCiAgICB9Ow0KICAgDQogICAgZnVuY3Rpb24gX09uU29ja2V0RGF0YShkYXRhKSB7DQogICAgICAgIGlmICghZGF0YSkgcmV0dXJuOw0KDQogICAgICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcpIHsNCiAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gQXJyYXlCdWZmZXIsIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcgYXJyYXkgKHVzZWQgaW4gSUUpDQogICAgICAgICAgICB2YXIgYmluYXJ5ID0gIiI7DQogICAgICAgICAgICB2YXIgYnl0ZXMgPSBuZXcgVWludDhBcnJheShkYXRhKTsNCiAgICAgICAgICAgIHZhciBsZW5ndGggPSBieXRlcy5ieXRlTGVuZ3RoOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICAgICAgICAgIGRhdGEgPSBiaW5hcnk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGEgIT09ICdzdHJpbmcnKSB7IHJldHVybjsgfQ0KDQogICAgICAgIC8vIFNlbmQgdGhlIGRhdGEgdXANCiAgICAgICAgaWYgKG9iai5vbkRhdGEgIT0gbnVsbCkgb2JqLm9uRGF0YShvYmosIGRhdGEpOw0KICAgIH0NCiAgICANCiAgICBmdW5jdGlvbiBfU2VuZCh4KSB7DQogICAgICAgIGlmIChzb2NrZXQgIT0gbnVsbCAmJiBzb2NrZXQucmVhZHlTdGF0ZSA9PSBXZWJTb2NrZXQuT1BFTikgew0KICAgICAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheSh4Lmxlbmd0aCk7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyArK2kpIHsgYltpXSA9IHguY2hhckNvZGVBdChpKTsgfQ0KICAgICAgICAgICAgc29ja2V0LnNlbmQoYi5idWZmZXIpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgb2JqLlNlbmRDbWQgPSBmdW5jdGlvbiAoY21kaWQsIGRhdGEpIHsNCiAgICAgICAgaWYgKHNvY2tldCA9PSBudWxsIHx8IG9iai5TdGF0ZSAhPSAyKSByZXR1cm47DQogICAgICAgIGlmICghZGF0YSB8fCBkYXRhID09IG51bGwpIGRhdGEgPSAiIjsNCiAgICAgICAgX1NlbmQoU2hvcnRUb1N0clgoY21kaWQpICsgZGF0YSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX1N0YXRlQ2hhbmdlKG5ld3N0YXRlKSB7DQogICAgICAgIGlmIChvYmouU3RhdGUgPT0gbmV3c3RhdGUpIHJldHVybjsNCiAgICAgICAgb2JqLlN0YXRlID0gbmV3c3RhdGU7DQogICAgICAgIGlmIChvYmoub25TdGF0ZUNoYW5nZWQgIT0gbnVsbCkgb2JqLm9uU3RhdGVDaGFuZ2VkKG9iaiwgb2JqLlN0YXRlKTsNCiAgICB9DQoNCiAgICBvYmouU3RvcCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgX1N0YXRlQ2hhbmdlKDApOw0KICAgICAgICBpZiAoc29ja2V0ICE9IG51bGwpIHsgc29ja2V0LmNsb3NlKCk7IHNvY2tldCA9IG51bGw7IH0NCiAgICB9DQoNCiAgICByZXR1cm4gb2JqOw0KfS8qKiANCiogQGRlc2NyaXB0aW9uIFdTTUFOIGNvbW11bmljYXRpb24gdXNpbmcgd2Vic29ja2V0DQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4yLjBjDQoqLw0KDQovLyBDb25zdHJ1Y3QgYSBXU01BTiBjb21tdW5pY2F0aW9uIG9iamVjdA0KdmFyIENyZWF0ZVdzbWFuQ29tbSA9IGZ1bmN0aW9uIChob3N0LCBwb3J0LCB1c2VyLCBwYXNzLCB0bHMpIHsNCiAgICB2YXIgb2JqID0ge307DQogICAgb2JqLlBlbmRpbmdBamF4ID0gW107ICAgICAgICAgICAgICAgLy8gTGlzdCBvZiBwZW5kaW5nIEFKQVggY2FsbHMuIFdoZW4gb25lIGZyZWVzIHVwLCBhbm90aGVyIHdpbGwgc3RhcnQuDQogICAgb2JqLkFjdGl2ZUFqYXhDb3VudCA9IDA7ICAgICAgICAgICAgLy8gTnVtYmVyIG9mIGN1cnJlbnRseSBhY3RpdmUgQUpBWCBjYWxscw0KICAgIG9iai5NYXhBY3RpdmVBamF4Q291bnQgPSAxOyAgICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGFjdGl2YXRlIEFKQVggY2FsbHMgYXQgdGhlIHNhbWUgdGltZS4NCiAgICBvYmouRmFpbEFsbEVycm9yID0gMDsgICAgICAgICAgICAgICAvLyBTZXQgdGhpcyB0byBub24temVybyB0byBmYWlsIGFsbCBBSkFYIGNhbGxzIHdpdGggdGhhdCBlcnJvciBzdGF0dXMsIDk5OSBjYXVzZXMgcmVzcG9uc2VzIHRvIGJlIHNpbGVudC4NCiAgICBvYmouY2hhbGxlbmdlUGFyYW1zID0gbnVsbDsNCiAgICBvYmoubm9uY2Vjb3VudGVyID0gMTsNCiAgICBvYmouYXV0aGNvdW50ZXIgPSAwOw0KICAgIG9iai5zb2NrZXQgPSBudWxsOw0KICAgIG9iai5zb2NrZXRTdGF0ZSA9IDA7DQogICAgb2JqLmhvc3QgPSBob3N0Ow0KICAgIG9iai5wb3J0ID0gcG9ydDsNCiAgICBvYmoudXNlciA9IHVzZXI7DQogICAgb2JqLnBhc3MgPSBwYXNzOw0KICAgIG9iai50bHMgPSB0bHM7DQogICAgb2JqLnRsc3Yxb25seSA9IDA7DQogICAgb2JqLmNub25jZSA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZyg3KTsgLy8gR2VuZXJhdGUgYSByYW5kb20gY2xpZW50IG5vbmNlDQogICAgb2JqLmluRGF0YUNvdW50ID0gMDsNCiAgICBvYmouYW10VmVyc2lvbiA9IG51bGw7DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIC8vb2JqLkRlYnVnID0gZnVuY3Rpb24gKG1zZykgeyBjb25zb2xlLmxvZyhtc2cpOyB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIC8vICAgcHJpID0gcHJpb3JpdHksIGlmIHNldCB0byAxLCB0aGUgY2FsbCBpcyBoaWdoIHByaW9yaXR5IGFuZCBwdXQgb24gdG9wIG9mIHRoZSBzdGFjay4NCiAgICBvYmouUGVyZm9ybUFqYXggPSBmdW5jdGlvbiAocG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHByaSwgdXJsLCBhY3Rpb24pIHsNCiAgICAgICAgaWYgKG9iai5BY3RpdmVBamF4Q291bnQgPCBvYmouTWF4QWN0aXZlQWpheENvdW50ICYmIG9iai5QZW5kaW5nQWpheC5sZW5ndGggPT0gMCkgew0KICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIHBlbmRpbmcgQUpBWCBjYWxscywgcGVyZm9ybSB0aGUgY2FsbCBub3cuDQogICAgICAgICAgICBvYmouUGVyZm9ybUFqYXhFeChwb3N0ZGF0YSwgY2FsbGJhY2ssIHRhZywgdXJsLCBhY3Rpb24pOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIGhpZ2ggcHJpb3JpdHkgY2FsbCwgcHV0IHRoaXMgY2FsbCBpbiBmcm9udCBvZiB0aGUgYXJyYXksIG90aGVyd2lzZSBwdXQgaXQgaW4gdGhlIGJhY2suDQogICAgICAgICAgICBpZiAocHJpID09IDEpIHsgb2JqLlBlbmRpbmdBamF4LnVuc2hpZnQoW3Bvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbl0pOyB9IGVsc2UgeyBvYmouUGVuZGluZ0FqYXgucHVzaChbcG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uXSk7IH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgb2JqLlBlcmZvcm1OZXh0QWpheCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKG9iai5BY3RpdmVBamF4Q291bnQgPj0gb2JqLk1heEFjdGl2ZUFqYXhDb3VudCB8fCBvYmouUGVuZGluZ0FqYXgubGVuZ3RoID09IDApIHJldHVybjsNCiAgICAgICAgdmFyIHggPSBvYmouUGVuZGluZ0FqYXguc2hpZnQoKTsNCiAgICAgICAgb2JqLlBlcmZvcm1BamF4RXgoeFswXSwgeFsxXSwgeFsyXSwgeFszXSwgeFs0XSk7DQogICAgICAgIG9iai5QZXJmb3JtTmV4dEFqYXgoKTsNCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIG9iai5QZXJmb3JtQWpheEV4ID0gZnVuY3Rpb24gKHBvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbikgew0KICAgICAgICBpZiAob2JqLkZhaWxBbGxFcnJvciAhPSAwKSB7IG9iai5nb3ROZXh0TWVzc2FnZXNFcnJvcih7IHN0YXR1czogb2JqLkZhaWxBbGxFcnJvciB9LCAnZXJyb3InLCBudWxsLCBbcG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uXSk7IHJldHVybjsgfQ0KICAgICAgICBpZiAoIXBvc3RkYXRhKSBwb3N0ZGF0YSA9ICIiOw0KICAgICAgICAvL2NvbnNvbGUubG9nKCJTRU5EOiAiICsgcG9zdGRhdGEpOyAvLyBERUJVRw0KDQogICAgICAgIC8vIFdlIGFyZSBpbiBhIHdlYnNvY2tldCByZWxheSBlbnZpcm9ubWVudCANCiAgICAgICAgb2JqLkFjdGl2ZUFqYXhDb3VudCsrOw0KICAgICAgICByZXR1cm4gb2JqLlBlcmZvcm1BamF4RXhOb2RlSlMocG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uKTsNCiAgICB9DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBvYmoucGVuZGluZ0FqYXhDYWxsID0gW107DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBvYmouUGVyZm9ybUFqYXhFeE5vZGVKUyA9IGZ1bmN0aW9uIChwb3N0ZGF0YSwgY2FsbGJhY2ssIHRhZywgdXJsLCBhY3Rpb24pIHsgb2JqLlBlcmZvcm1BamF4RXhOb2RlSlMyKHBvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbiwgMyk7IH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIG9iai5QZXJmb3JtQWpheEV4Tm9kZUpTMiA9IGZ1bmN0aW9uIChwb3N0ZGF0YSwgY2FsbGJhY2ssIHRhZywgdXJsLCBhY3Rpb24sIHJldHJ5KSB7DQogICAgICAgIGlmIChyZXRyeSA8PSAwIHx8IG9iai5GYWlsQWxsRXJyb3IgIT0gMCkgew0KICAgICAgICAgICAgLy8gVG9vIG1hbnkgcmV0cnksIGZhaWwgaGVyZS4NCiAgICAgICAgICAgIG9iai5BY3RpdmVBamF4Q291bnQtLTsNCiAgICAgICAgICAgIGlmIChvYmouRmFpbEFsbEVycm9yICE9IDk5OSkgb2JqLmdvdE5leHRNZXNzYWdlcyhudWxsLCAnZXJyb3InLCB7IHN0YXR1czogKChvYmouRmFpbEFsbEVycm9yID09IDApID8gNDA4IDogb2JqLkZhaWxBbGxFcnJvcikgfSwgW3Bvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCB1cmwsIGFjdGlvbl0pOyAvLyA0MDggaXMgdGltZW91dCBlcnJvcg0KICAgICAgICAgICAgb2JqLlBlcmZvcm1OZXh0QWpheCgpOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIG9iai5wZW5kaW5nQWpheENhbGwucHVzaChbcG9zdGRhdGEsIGNhbGxiYWNrLCB0YWcsIHVybCwgYWN0aW9uLCByZXRyeV0pOw0KICAgICAgICBpZiAob2JqLnNvY2tldFN0YXRlID09IDApIHsgb2JqLnh4Q29ubmVjdEh0dHBTb2NrZXQoKTsgfQ0KICAgICAgICBlbHNlIGlmIChvYmouc29ja2V0U3RhdGUgPT0gMikgeyBvYmouc2VuZFJlcXVlc3QocG9zdGRhdGEsIHVybCwgYWN0aW9uKTsgfQ0KICAgIH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZCAoQ29udGVudCBMZW5ndGggRW5jb2RpbmcpDQogICAgb2JqLnNlbmRSZXF1ZXN0ID0gZnVuY3Rpb24gKHBvc3RkYXRhLCB1cmwsIGFjdGlvbikgew0KICAgICAgICB1cmwgPSB1cmwgPyB1cmwgOiAiL3dzbWFuIjsNCiAgICAgICAgYWN0aW9uID0gYWN0aW9uID8gYWN0aW9uIDogIlBPU1QiOw0KICAgICAgICB2YXIgaCA9IGFjdGlvbiArICIgIiArIHVybCArICIgSFRUUC8xLjFcclxuIjsNCiAgICAgICAgaWYgKG9iai5jaGFsbGVuZ2VQYXJhbXMgIT0gbnVsbCkgew0KICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gaGV4X21kNShoZXhfbWQ1KG9iai51c2VyICsgJzonICsgb2JqLmNoYWxsZW5nZVBhcmFtc1sicmVhbG0iXSArICc6JyArIG9iai5wYXNzKSArICc6JyArIG9iai5jaGFsbGVuZ2VQYXJhbXNbIm5vbmNlIl0gKyAnOicgKyBvYmoubm9uY2Vjb3VudGVyICsgJzonICsgb2JqLmNub25jZSArICc6JyArIG9iai5jaGFsbGVuZ2VQYXJhbXNbInFvcCJdICsgJzonICsgaGV4X21kNShhY3Rpb24gKyAnOicgKyB1cmwpKTsNCiAgICAgICAgICAgIGggKz0gJ0F1dGhvcml6YXRpb246ICcgKyBvYmoucmVuZGVyRGlnZXN0KHsgInVzZXJuYW1lIjogb2JqLnVzZXIsICJyZWFsbSI6IG9iai5jaGFsbGVuZ2VQYXJhbXNbInJlYWxtIl0sICJub25jZSI6IG9iai5jaGFsbGVuZ2VQYXJhbXNbIm5vbmNlIl0sICJ1cmkiOiB1cmwsICJxb3AiOiBvYmouY2hhbGxlbmdlUGFyYW1zWyJxb3AiXSwgInJlc3BvbnNlIjogcmVzcG9uc2UsICJuYyI6IG9iai5ub25jZWNvdW50ZXIrKywgImNub25jZSI6IG9iai5jbm9uY2UgfSkgKyAnXHJcbic7DQogICAgICAgIH0NCiAgICAgICAgaCArPSAnSG9zdDogJyArIG9iai5ob3N0ICsgJzonICsgb2JqLnBvcnQgKyAnXHJcbkNvbnRlbnQtTGVuZ3RoOiAnICsgcG9zdGRhdGEubGVuZ3RoICsgJ1xyXG5cclxuJyArIHBvc3RkYXRhOyAvLyBVc2UgQ29udGVudC1MZW5ndGgNCiAgICAgICAgLy9oICs9ICdIb3N0OiAnICsgb2JqLmhvc3QgKyAnOicgKyBvYmoucG9ydCArICdcclxuVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicgKyBwb3N0ZGF0YS5sZW5ndGgudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkgKyAnXHJcbicgKyBwb3N0ZGF0YSArICdcclxuMFxyXG5cclxuJzsgLy8gVXNlIENodW5rZWQtRW5jb2RpbmcNCiAgICAgICAgX1NlbmQoaCk7DQogICAgfQ0KDQogICAgLy8gV2Vic29ja2V0IHJlbGF5IHNwZWNpZmljIHByaXZhdGUgbWV0aG9kDQogICAgb2JqLnBhcnNlRGlnZXN0ID0gZnVuY3Rpb24gKGhlYWRlcikgew0KICAgICAgICB2YXIgdCA9IGhlYWRlci5zdWJzdHJpbmcoNykuc3BsaXQoJywnKTsNCiAgICAgICAgZm9yIChpIGluIHQpIHRbaV0gPSB0W2ldLnRyaW0oKTsNCiAgICAgICAgcmV0dXJuIHQucmVkdWNlKGZ1bmN0aW9uIChvYmosIHMpIHsgdmFyIHBhcnRzID0gcy5zcGxpdCgnPScpOyBvYmpbcGFydHNbMF1dID0gcGFydHNbMV0ucmVwbGFjZSgvIi9nLCAnJyk7IHJldHVybiBvYmo7IH0sIHt9KQ0KICAgIH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIG9iai5yZW5kZXJEaWdlc3QgPSBmdW5jdGlvbiAocGFyYW1zKSB7DQogICAgICAgIHZhciBwYXJhbXNuYW1lcyA9IFtdOw0KICAgICAgICBmb3IgKGkgaW4gcGFyYW1zKSB7IHBhcmFtc25hbWVzLnB1c2goaSk7IH0NCiAgICAgICAgcmV0dXJuICdEaWdlc3QgJyArIHBhcmFtc25hbWVzLnJlZHVjZShmdW5jdGlvbiAoczEsIGlpKSB7IHJldHVybiBzMSArICcsJyArIGlpICsgJz0iJyArIHBhcmFtc1tpaV0gKyAnIicgfSwgJycpLnN1YnN0cmluZygxKTsNCiAgICB9DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBvYmoueHhDb25uZWN0SHR0cFNvY2tldCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgLy9vYmouRGVidWcoInh4Q29ubmVjdEh0dHBTb2NrZXQiKTsNCiAgICAgICAgb2JqLmluRGF0YUNvdW50ID0gMDsNCiAgICAgICAgb2JqLnNvY2tldFN0YXRlID0gMTsNCiAgICAgICAgb2JqLnNvY2tldCA9IG5ldyBXZWJTb2NrZXQod2luZG93LmxvY2F0aW9uLnByb3RvY29sLnJlcGxhY2UoImh0dHAiLCAid3MiKSArICIvLyIgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5zdWJzdHJpbmcoMCwgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmxhc3RJbmRleE9mKCcvJykpICsgIi93ZWJyZWxheS5hc2h4P3A9MSZob3N0PSIgKyBvYmouaG9zdCArICImcG9ydD0iICsgb2JqLnBvcnQgKyAiJnRscz0iICsgb2JqLnRscyArICImdGxzMW9ubHk9IiArIG9iai50bHN2MW9ubHkgKyAoKHVzZXIgPT0gJyonKSA/ICImc2VydmVyYXV0aD0xIiA6ICIiKSArICgodHlwZW9mIHBhc3MgPT09ICJ1bmRlZmluZWQiKSA/ICgiJnNlcnZlcmF1dGg9MSZ1c2VyPSIgKyB1c2VyKSA6ICIiKSk7IC8vIFRoZSAicD0xIiBpbmRpY2F0ZXMgdG8gdGhlIHJlbGF5IHRoYXQgdGhpcyBpcyBhIFdTTUFOIHNlc3Npb24NCiAgICAgICAgb2JqLnNvY2tldC5vbm9wZW4gPSBfT25Tb2NrZXRDb25uZWN0ZWQ7DQogICAgICAgIG9iai5zb2NrZXQub25tZXNzYWdlID0gX09uTWVzc2FnZTsNCiAgICAgICAgb2JqLnNvY2tldC5vbmNsb3NlID0gX09uU29ja2V0Q2xvc2VkOw0KICAgIH0NCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIGZ1bmN0aW9uIF9PblNvY2tldENvbm5lY3RlZCgpIHsNCiAgICAgICAgb2JqLnNvY2tldFN0YXRlID0gMjsNCiAgICAgICAgb2JqLnNvY2tldFBhcnNlU3RhdGUgPSAwOw0KICAgICAgICBvYmouc29ja2V0QWNjdW11bGF0b3IgPSAnJzsNCiAgICAgICAgb2JqLnNvY2tldEhlYWRlciA9IG51bGw7DQogICAgICAgIG9iai5zb2NrZXREYXRhID0gJyc7DQogICAgICAgIC8vY29uc29sZS5sb2coInh4T25Tb2NrZXRDb25uZWN0ZWQiKTsNCiAgICAgICAgZm9yIChpIGluIG9iai5wZW5kaW5nQWpheENhbGwpIHsgb2JqLnNlbmRSZXF1ZXN0KG9iai5wZW5kaW5nQWpheENhbGxbaV1bMF0sIG9iai5wZW5kaW5nQWpheENhbGxbaV1bM10sIG9iai5wZW5kaW5nQWpheENhbGxbaV1bNF0pOyB9DQogICAgfQ0KDQogICAgLy8gU2V0dXAgdGhlIGZpbGUgcmVhZGVyDQogICAgdmFyIGZpbGVSZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOw0KICAgIHZhciBmaWxlUmVhZGVySW51c2UgPSBmYWxzZSwgZmlsZVJlYWRlckFjYyA9IFtdOw0KICAgIGlmIChmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZykgew0KICAgICAgICAvLyBDaHJvbWUgJiBGaXJlZm94IChEcmFmdCkNCiAgICAgICAgZmlsZVJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoZSkgeyBfT25Tb2NrZXREYXRhKGUudGFyZ2V0LnJlc3VsdCk7IGlmIChmaWxlUmVhZGVyQWNjLmxlbmd0aCA9PSAwKSB7IGZpbGVSZWFkZXJJbnVzZSA9IGZhbHNlOyB9IGVsc2UgeyBmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhuZXcgQmxvYihbZmlsZVJlYWRlckFjYy5zaGlmdCgpXSkpOyB9IH0NCiAgICB9IGVsc2UgaWYgKGZpbGVSZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIpIHsNCiAgICAgICAgLy8gQ2hyb21lICYgRmlyZWZveCAoU3BlYykNCiAgICAgICAgZmlsZVJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbiAoZSkgeyBfT25Tb2NrZXREYXRhKGUudGFyZ2V0LnJlc3VsdCk7IGlmIChmaWxlUmVhZGVyQWNjLmxlbmd0aCA9PSAwKSB7IGZpbGVSZWFkZXJJbnVzZSA9IGZhbHNlOyB9IGVsc2UgeyBmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGVSZWFkZXJBY2Muc2hpZnQoKSk7IH0gfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIF9Pbk1lc3NhZ2UoZSkgew0KICAgICAgICBpZiAodHlwZW9mIGUuZGF0YSA9PSAnb2JqZWN0Jykgew0KICAgICAgICAgICAgaWYgKGZpbGVSZWFkZXJJbnVzZSA9PSB0cnVlKSB7IGZpbGVSZWFkZXJBY2MucHVzaChlLmRhdGEpOyByZXR1cm47IH0NCiAgICAgICAgICAgIGlmIChmaWxlUmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZykgew0KICAgICAgICAgICAgICAgIC8vIENocm9tZSAmIEZpcmVmb3ggKERyYWZ0KQ0KICAgICAgICAgICAgICAgIGZpbGVSZWFkZXJJbnVzZSA9IHRydWU7DQogICAgICAgICAgICAgICAgZmlsZVJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcobmV3IEJsb2IoW2UuZGF0YV0pKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZVJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcikgew0KICAgICAgICAgICAgICAgIC8vIENocm9tZSAmIEZpcmVmb3ggKFNwZWMpDQogICAgICAgICAgICAgICAgZmlsZVJlYWRlckludXNlID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBmaWxlUmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGUuZGF0YSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIElFMTAsIHJlYWRBc0JpbmFyeVN0cmluZyBkb2VzIG5vdCBleGlzdCwgdXNlIGFuIGFsdGVybmF0aXZlLg0KICAgICAgICAgICAgICAgIHZhciBiaW5hcnkgPSAiIiwgYnl0ZXMgPSBuZXcgVWludDhBcnJheShlLmRhdGEpLCBsZW5ndGggPSBieXRlcy5ieXRlTGVuZ3RoOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pOyB9DQogICAgICAgICAgICAgICAgX09uU29ja2V0RGF0YShiaW5hcnkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgX09uU29ja2V0RGF0YShlLmRhdGEpOw0KICAgICAgICB9DQogICAgfTsNCg0KICAgIC8vIFdlYnNvY2tldCByZWxheSBzcGVjaWZpYyBwcml2YXRlIG1ldGhvZA0KICAgIGZ1bmN0aW9uIF9PblNvY2tldERhdGEoZGF0YSkgew0KICAgICAgICAvL29iai5EZWJ1ZygiX09uU29ja2V0RGF0YSAoIiArIGRhdGEubGVuZ3RoICsgIik6ICIgKyBkYXRhKTsNCg0KICAgICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7DQogICAgICAgICAgICAvLyBUaGlzIGlzIGFuIEFycmF5QnVmZmVyLCBjb252ZXJ0IGl0IHRvIGEgc3RyaW5nIGFycmF5ICh1c2VkIGluIElFKQ0KICAgICAgICAgICAgdmFyIGJpbmFyeSA9ICIiLCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGRhdGEpLCBsZW5ndGggPSBieXRlcy5ieXRlTGVuZ3RoOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICAgICAgICAgIGRhdGEgPSBiaW5hcnk7DQogICAgICAgIH0NCiAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRhdGEgIT09ICdzdHJpbmcnKSByZXR1cm47DQoNCiAgICAgICAgLy9jb25zb2xlLmxvZygiUkVDVigiICsgb2JqLnNvY2tldFBhcnNlU3RhdGUgKyAiKTogIiArIGRhdGEpOyAvLyBERUJVRw0KDQogICAgICAgIG9iai5zb2NrZXRBY2N1bXVsYXRvciArPSBkYXRhOw0KICAgICAgICB3aGlsZSAodHJ1ZSkgew0KICAgICAgICAgICAgaWYgKG9iai5zb2NrZXRQYXJzZVN0YXRlID09IDApIHsNCiAgICAgICAgICAgICAgICB2YXIgaGVhZGVyc2l6ZSA9IG9iai5zb2NrZXRBY2N1bXVsYXRvci5pbmRleE9mKCJcclxuXHJcbiIpOw0KICAgICAgICAgICAgICAgIGlmIChoZWFkZXJzaXplIDwgMCkgcmV0dXJuOw0KICAgICAgICAgICAgICAgIC8vb2JqLkRlYnVnKG9iai5zb2NrZXRBY2N1bXVsYXRvci5zdWJzdHJpbmcoMCwgaGVhZGVyc2l6ZSkpOyAvLyBEaXNwbGF5IHJlY2VpdmVkIEhUVFAgaGVhZGVyDQogICAgICAgICAgICAgICAgb2JqLnNvY2tldEhlYWRlciA9IG9iai5zb2NrZXRBY2N1bXVsYXRvci5zdWJzdHJpbmcoMCwgaGVhZGVyc2l6ZSkuc3BsaXQoIlxyXG4iKTsNCiAgICAgICAgICAgICAgICBpZiAob2JqLmFtdFZlcnNpb24gPT0gbnVsbCkgeyBmb3IgKHZhciBpIGluIG9iai5zb2NrZXRIZWFkZXIpIHsgaWYgKG9iai5zb2NrZXRIZWFkZXJbaV0uaW5kZXhPZignU2VydmVyOiBJbnRlbChSKSBBY3RpdmUgTWFuYWdlbWVudCBUZWNobm9sb2d5ICcpID09IDApIHsgb2JqLmFtdFZlcnNpb24gPSBvYmouc29ja2V0SGVhZGVyW2ldLnN1YnN0cmluZyg0Nik7IH0gfSB9DQogICAgICAgICAgICAgICAgb2JqLnNvY2tldEFjY3VtdWxhdG9yID0gb2JqLnNvY2tldEFjY3VtdWxhdG9yLnN1YnN0cmluZyhoZWFkZXJzaXplICsgNCk7DQogICAgICAgICAgICAgICAgb2JqLnNvY2tldFBhcnNlU3RhdGUgPSAxOw0KICAgICAgICAgICAgICAgIG9iai5zb2NrZXREYXRhID0gJyc7DQogICAgICAgICAgICAgICAgb2JqLnNvY2tldFhIZWFkZXIgPSB7IERpcmVjdGl2ZTogb2JqLnNvY2tldEhlYWRlclswXS5zcGxpdCgnICcpIH07DQogICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiSGVhZGVyIiwgb2JqLnNvY2tldFhIZWFkZXIpOw0KICAgICAgICAgICAgICAgIGZvciAoaSBpbiBvYmouc29ja2V0SGVhZGVyKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpICE9IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4MiA9IG9iai5zb2NrZXRIZWFkZXJbaV0uaW5kZXhPZignOicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldFhIZWFkZXJbb2JqLnNvY2tldEhlYWRlcltpXS5zdWJzdHJpbmcoMCwgeDIpLnRvTG93ZXJDYXNlKCldID0gb2JqLnNvY2tldEhlYWRlcltpXS5zdWJzdHJpbmcoeDIgKyAyKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChvYmouc29ja2V0UGFyc2VTdGF0ZSA9PSAxKSB7DQogICAgICAgICAgICAgICAgdmFyIGNzaXplID0gLTE7DQogICAgICAgICAgICAgICAgaWYgKChvYmouc29ja2V0WEhlYWRlclsiY29ubmVjdGlvbiJdICE9IHVuZGVmaW5lZCkgJiYgKG9iai5zb2NrZXRYSGVhZGVyWyJjb25uZWN0aW9uIl0udG9Mb3dlckNhc2UoKSA9PSAnY2xvc2UnKSAmJiAoKG9iai5zb2NrZXRYSGVhZGVyWyJ0cmFuc2Zlci1lbmNvZGluZyJdID09IHVuZGVmaW5lZCkgfHwgKG9iai5zb2NrZXRYSGVhZGVyWyJ0cmFuc2Zlci1lbmNvZGluZyJdLnRvTG93ZXJDYXNlKCkgIT0gJ2NodW5rZWQnKSkpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGJvZHkgZW5kcyB3aXRoIGEgY2xvc2UsIGluIHRoaXMgY2FzZSwgd2Ugd2lsbCBvbmx5IHByb2Nlc3MgdGhlIGhlYWRlcg0KICAgICAgICAgICAgICAgICAgICBjc2l6ZSA9IDA7DQogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvYmouc29ja2V0WEhlYWRlclsiY29udGVudC1sZW5ndGgiXSAhPSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGJvZHkgbGVuZ3RoIGlzIHNwZWNpZmllZCBieSB0aGUgY29udGVudC1sZW5ndGgNCiAgICAgICAgICAgICAgICAgICAgY3NpemUgPSBwYXJzZUludChvYmouc29ja2V0WEhlYWRlclsiY29udGVudC1sZW5ndGgiXSk7DQogICAgICAgICAgICAgICAgICAgIGlmIChvYmouc29ja2V0QWNjdW11bGF0b3IubGVuZ3RoIDwgY3NpemUpIHJldHVybjsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBvYmouc29ja2V0QWNjdW11bGF0b3Iuc3Vic3RyaW5nKDAsIGNzaXplKTsNCiAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldEFjY3VtdWxhdG9yID0gb2JqLnNvY2tldEFjY3VtdWxhdG9yLnN1YnN0cmluZyhjc2l6ZSk7DQogICAgICAgICAgICAgICAgICAgIG9iai5zb2NrZXREYXRhID0gZGF0YTsNCiAgICAgICAgICAgICAgICAgICAgY3NpemUgPSAwOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFRoZSBib2R5IGlzIGNodW5rZWQNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNsZW4gPSBvYmouc29ja2V0QWNjdW11bGF0b3IuaW5kZXhPZigiXHJcbiIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoY2xlbiA8IDApIHJldHVybjsgLy8gQ2h1bmsgbGVuZ3RoIG5vdCBmb3VuZCwgZXhpdCBub3cgYW5kIGdldCBtb3JlIGRhdGEuDQogICAgICAgICAgICAgICAgICAgIC8vIENodW5rIGxlbmd0aCBpZiBmb3VuZCwgbGV0cyBzZWUgaWYgd2UgY2FuIGdldCB0aGUgZGF0YS4NCiAgICAgICAgICAgICAgICAgICAgY3NpemUgPSBwYXJzZUludChvYmouc29ja2V0QWNjdW11bGF0b3Iuc3Vic3RyaW5nKDAsIGNsZW4pLCAxNik7DQogICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihjc2l6ZSkpIHsgaWYgKG9iai53ZWJzb2NrZXQpIHsgb2JqLndlYnNvY2tldC5jbG9zZSgpOyB9IHJldHVybjsgfSAvLyBDcml0aWNhbCBlcnJvciwgY2xvc2UgdGhlIHNvY2tldCBhbmQgZXhpdC4NCiAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5zb2NrZXRBY2N1bXVsYXRvci5sZW5ndGggPCBjbGVuICsgMiArIGNzaXplICsgMikgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAvLyBXZSBnb3QgYSBjaHVuayB3aXRoIGFsbCBvZiB0aGUgZGF0YSwgaGFuZGxlIHRoZSBjaHVuY2sgbm93Lg0KICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IG9iai5zb2NrZXRBY2N1bXVsYXRvci5zdWJzdHJpbmcoY2xlbiArIDIsIGNsZW4gKyAyICsgY3NpemUpOw0KICAgICAgICAgICAgICAgICAgICBvYmouc29ja2V0QWNjdW11bGF0b3IgPSBvYmouc29ja2V0QWNjdW11bGF0b3Iuc3Vic3RyaW5nKGNsZW4gKyAyICsgY3NpemUgKyAyKTsNCiAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldERhdGEgKz0gZGF0YTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGNzaXplID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy9vYmouRGVidWcoIl9PblNvY2tldERhdGEgRE9ORTogKCIgKyBvYmouc29ja2V0RGF0YS5sZW5ndGggKyAiKTogIiArIG9iai5zb2NrZXREYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgX1Byb2Nlc3NIdHRwUmVzcG9uc2Uob2JqLnNvY2tldFhIZWFkZXIsIG9iai5zb2NrZXREYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgb2JqLnNvY2tldFBhcnNlU3RhdGUgPSAwOw0KICAgICAgICAgICAgICAgICAgICBvYmouc29ja2V0SGVhZGVyID0gbnVsbDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBXZWJzb2NrZXQgcmVsYXkgc3BlY2lmaWMgcHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfUHJvY2Vzc0h0dHBSZXNwb25zZShoZWFkZXIsIGRhdGEpIHsNCiAgICAgICAgLy9vYmouRGVidWcoIl9Qcm9jZXNzSHR0cFJlc3BvbnNlOiAiICsgaGVhZGVyLkRpcmVjdGl2ZVsxXSk7DQoNCiAgICAgICAgdmFyIHMgPSBwYXJzZUludChoZWFkZXIuRGlyZWN0aXZlWzFdKTsNCiAgICAgICAgaWYgKGlzTmFOKHMpKSB7DQogICAgICAgICAgICBzID0gNjAyOw0KICAgICAgICB9DQogICAgICAgIGlmIChzID09IDQwMSAmJiArKyhvYmouYXV0aGNvdW50ZXIpIDwgMykgew0KICAgICAgICAgICAgb2JqLmNoYWxsZW5nZVBhcmFtcyA9IG9iai5wYXJzZURpZ2VzdChoZWFkZXJbJ3d3dy1hdXRoZW50aWNhdGUnXSk7IC8vIFNldCB0aGUgZGlnZXN0IHBhcmFtZXRlcnMsIGFmdGVyIHRoaXMsIHRoZSBzb2NrZXQgd2lsbCBjbG9zZSBhbmQgd2Ugd2lsbCBhdXRvLXJldHJ5DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB2YXIgciA9IG9iai5wZW5kaW5nQWpheENhbGwuc2hpZnQoKTsNCiAgICAgICAgICAgIC8vIGlmIChzICE9IDIwMCkgeyBvYmouRGVidWcoIkVycm9yLCBzdGF0dXM9IiArIHMgKyAiXHJcblxyXG5yZXE9IiArIHJbMF0gKyAiXHJcblxyXG5yZXNwPSIgKyBkYXRhKTsgfSAvLyBEZWJ1ZzogRGlzcGxheSB0aGUgcmVxdWVzdCAmIHJlc3BvbnNlIGlmIHNvbWV0aGluZyBkaWQgbm90IHdvcmsuDQogICAgICAgICAgICBvYmouYXV0aGNvdW50ZXIgPSAwOw0KICAgICAgICAgICAgb2JqLkFjdGl2ZUFqYXhDb3VudC0tOw0KICAgICAgICAgICAgb2JqLmdvdE5leHRNZXNzYWdlcyhkYXRhLCAnc3VjY2VzcycsIHsgc3RhdHVzOiBzIH0sIHIpOw0KICAgICAgICAgICAgb2JqLlBlcmZvcm1OZXh0QWpheCgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gV2Vic29ja2V0IHJlbGF5IHNwZWNpZmljIHByaXZhdGUgbWV0aG9kDQogICAgZnVuY3Rpb24gX09uU29ja2V0Q2xvc2VkKGRhdGEpIHsNCiAgICAgICAgLy9jb25zb2xlLmxvZygiX09uU29ja2V0Q2xvc2VkIik7DQogICAgICAgIGlmIChvYmouaW5EYXRhQ291bnQgPT0gMCkgeyBvYmoudGxzdjFvbmx5ID0gKDEgLSBvYmoudGxzdjFvbmx5KTsgfQ0KICAgICAgICBvYmouc29ja2V0U3RhdGUgPSAwOw0KICAgICAgICBpZiAob2JqLnNvY2tldCAhPSBudWxsKSB7IG9iai5zb2NrZXQuY2xvc2UoKTsgb2JqLnNvY2tldCA9IG51bGw7IH0NCiAgICAgICAgaWYgKG9iai5wZW5kaW5nQWpheENhbGwubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgdmFyIHIgPSBvYmoucGVuZGluZ0FqYXhDYWxsLnNoaWZ0KCk7DQogICAgICAgICAgICB2YXIgcmV0cnkgPSByWzVdOw0KICAgICAgICAgICAgb2JqLlBlcmZvcm1BamF4RXhOb2RlSlMyKHJbMF0sIHJbMV0sIHJbMl0sIHJbM10sIHJbNF0sIC0tcmV0cnkpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gV2Vic29ja2V0IHJlbGF5IHNwZWNpZmljIHByaXZhdGUgbWV0aG9kDQogICAgZnVuY3Rpb24gX1NlbmQoeCkgew0KICAgICAgICAvL2NvbnNvbGUubG9nKCJTRU5EOiAiICsgeCk7IC8vIERFQlVHDQogICAgICAgIGlmIChvYmouc29ja2V0U3RhdGUgPT0gMiAmJiBvYmouc29ja2V0ICE9IG51bGwgJiYgb2JqLnNvY2tldC5yZWFkeVN0YXRlID09IFdlYlNvY2tldC5PUEVOKSB7DQogICAgICAgICAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KHgubGVuZ3RoKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7ICsraSkgeyBiW2ldID0geC5jaGFyQ29kZUF0KGkpOyB9DQogICAgICAgICAgICB0cnkgeyBvYmouc29ja2V0LnNlbmQoYi5idWZmZXIpOyB9IGNhdGNoIChlKSB7IH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgb2JqLmdvdE5leHRNZXNzYWdlcyA9IGZ1bmN0aW9uIChkYXRhLCBzdGF0dXMsIHJlcXVlc3QsIGNhbGxBcmdzKSB7DQogICAgICAgIGlmIChvYmouRmFpbEFsbEVycm9yID09IDk5OSkgcmV0dXJuOw0KICAgICAgICBpZiAob2JqLkZhaWxBbGxFcnJvciAhPSAwKSB7IGNhbGxBcmdzWzFdKG51bGwsIG9iai5GYWlsQWxsRXJyb3IsIGNhbGxBcmdzWzJdKTsgcmV0dXJuOyB9DQogICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyAhPSAyMDApIHsgY2FsbEFyZ3NbMV0obnVsbCwgcmVxdWVzdC5zdGF0dXMsIGNhbGxBcmdzWzJdKTsgcmV0dXJuOyB9DQogICAgICAgIGNhbGxBcmdzWzFdKGRhdGEsIDIwMCwgY2FsbEFyZ3NbMl0pOw0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgb2JqLmdvdE5leHRNZXNzYWdlc0Vycm9yID0gZnVuY3Rpb24gKHJlcXVlc3QsIHN0YXR1cywgZXJyb3JUaHJvd24sIGNhbGxBcmdzKSB7DQogICAgICAgIGlmIChvYmouRmFpbEFsbEVycm9yID09IDk5OSkgcmV0dXJuOw0KICAgICAgICBpZiAob2JqLkZhaWxBbGxFcnJvciAhPSAwKSB7IGNhbGxBcmdzWzFdKG51bGwsIG9iai5GYWlsQWxsRXJyb3IsIGNhbGxBcmdzWzJdKTsgcmV0dXJuOyB9DQogICAgICAgIGNhbGxBcmdzWzFdKG9iaiwgbnVsbCwgeyBIZWFkZXI6IHsgSHR0cEVycm9yOiByZXF1ZXN0LnN0YXR1cyB9IH0sIHJlcXVlc3Quc3RhdHVzLCBjYWxsQXJnc1syXSk7DQogICAgfQ0KDQogICAgLy8gQ2FuY2VsIGFsbCBwZW5kaW5nIHF1ZXJpZXMgd2l0aCBnaXZlbiBzdGF0dXMNCiAgICBvYmouQ2FuY2VsQWxsUXVlcmllcyA9IGZ1bmN0aW9uIChzKSB7DQogICAgICAgIHdoaWxlIChvYmouUGVuZGluZ0FqYXgubGVuZ3RoID4gMCkgeyB2YXIgeCA9IG9iai5QZW5kaW5nQWpheC5zaGlmdCgpOyB4WzFdKG51bGwsIHMsIHhbMl0pOyB9DQogICAgICAgIGlmIChvYmoud2Vic29ja2V0ICE9IG51bGwpIHsgb2JqLndlYnNvY2tldC5jbG9zZSgpOyBvYmoud2Vic29ja2V0ID0gbnVsbDsgb2JqLnNvY2tldFN0YXRlID0gMDsgfQ0KICAgIH0NCg0KICAgIHJldHVybiBvYmo7DQp9DQoNCi8qKiANCiogQGRlc2NyaXB0aW9uIEludGVsKHIpIEFNVCBXU01BTiBTdGFjaw0KKiBAYXV0aG9yIFlsaWFuIFNhaW50LUhpbGFpcmUNCiogQHZlcnNpb24gdjAuMi4wDQoqLw0KDQovLyBDb25zdHJ1Y3QgYSBNZXNoU2VydmVyIG9iamVjdA0KdmFyIFdzbWFuU3RhY2tDcmVhdGVTZXJ2aWNlID0gZnVuY3Rpb24gKGhvc3QsIHBvcnQsIHVzZXIsIHBhc3MsIHRscywgZXh0cmEpIHsNCiAgICB2YXIgb2JqID0ge307DQogICAgLy9vYmoub25EZWJ1Z01lc3NhZ2UgPSBudWxsOyAgICAgICAgICAvLyBTZXQgdG8gYSBmdW5jdGlvbiBpZiB5b3Ugd2FudCB0byBnZXQgZGVidWcgbWVzc2FnZXMuDQogICAgb2JqLk5leHRNZXNzYWdlSWQgPSAxOyAgICAgICAgICAgICAgLy8gTmV4dCBtZXNzYWdlIG51bWJlciwgdXNlZCB0byBsYWJlbCBXU01BTiBjYWxscy4NCiAgICBvYmouQWRkcmVzcyA9ICcvd3NtYW4nOw0KICAgIG9iai5jb21tID0gQ3JlYXRlV3NtYW5Db21tKGhvc3QsIHBvcnQsIHVzZXIsIHBhc3MsIHRscywgZXh0cmEpOw0KDQogICAgb2JqLlBlcmZvcm1BamF4ID0gZnVuY3Rpb24gKHBvc3RkYXRhLCBjYWxsYmFjaywgdGFnLCBwcmksIG5hbWVzcGFjZXMpIHsNCiAgICAgICAgaWYgKG5hbWVzcGFjZXMgPT0gbnVsbCkgbmFtZXNwYWNlcyA9ICcnOw0KICAgICAgICBvYmouY29tbS5QZXJmb3JtQWpheCgnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+PEVudmVsb3BlIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIgeG1sbnM6eHNkPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWFcIiB4bWxuczphPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciIHhtbG5zOnc9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMy8wNS9zb2FwLWVudmVsb3BlXCIgJyArIG5hbWVzcGFjZXMgKyAnPjxIZWFkZXI+PGE6QWN0aW9uPicgKyBwb3N0ZGF0YSwgZnVuY3Rpb24gKGRhdGEsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBjYWxsYmFjayhvYmosIG51bGwsIHsgSGVhZGVyOiB7IEh0dHBFcnJvcjogc3RhdHVzIH0gfSwgc3RhdHVzLCB0YWcpOyByZXR1cm47IH0NCiAgICAgICAgICAgIHZhciB3c3Jlc3BvbnNlID0gb2JqLlBhcnNlV3NtYW4oZGF0YSk7DQogICAgICAgICAgICBpZiAoIXdzcmVzcG9uc2UgfHwgd3NyZXNwb25zZSA9PSBudWxsKSB7IGNhbGxiYWNrKG9iaiwgbnVsbCwgeyBIZWFkZXI6IHsgSHR0cEVycm9yOiBzdGF0dXMgfSB9LCA2MDEsIHRhZyk7IH0gZWxzZSB7IGNhbGxiYWNrKG9iaiwgd3NyZXNwb25zZS5IZWFkZXJbIlJlc291cmNlVVJJIl0sIHdzcmVzcG9uc2UsIDIwMCwgdGFnKTsgfQ0KICAgICAgICB9LCB0YWcsIHByaSk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICAvL29iai5EZWJ1ZyA9IGZ1bmN0aW9uIChtc2cpIHsgLypjb25zb2xlLmxvZyhtc2cpOyovIH0NCg0KICAgIC8vIENhbmNlbCBhbGwgcGVuZGluZyBxdWVyaWVzIHdpdGggZ2l2ZW4gc3RhdHVzDQogICAgb2JqLkNhbmNlbEFsbFF1ZXJpZXMgPSBmdW5jdGlvbiAocykgeyBvYmouY29tbS5DYW5jZWxBbGxRdWVyaWVzKHMpOyB9DQoNCiAgICAvLyBHZXQgdGhlIGxhc3QgZWxlbWVudCBvZiBhIFVSSSBzdHJpbmcNCiAgICBvYmouR2V0TmFtZUZyb21VcmwgPSBmdW5jdGlvbiAocmVzdXJpKSB7DQogICAgICAgIHZhciB4ID0gcmVzdXJpLmxhc3RJbmRleE9mKCIvIik7DQogICAgICAgIHJldHVybiAoeCA9PSAtMSk/cmVzdXJpOnJlc3VyaS5zdWJzdHJpbmcoeCArIDEpOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiBTdWJzY3JpYmUgb3BlcmF0aW9uDQogICAgb2JqLkV4ZWNTdWJzY3JpYmUgPSBmdW5jdGlvbiAocmVzdXJpLCBkZWxpdmVyeSwgdXJsLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycywgb3BhcXVlLCB1c2VyLCBwYXNzKSB7DQogICAgICAgIHZhciBkaWdlc3QgPSAiIiwgZGlnZXN0MiA9ICIiLCBvcGFxdWUgPSAiIjsNCiAgICAgICAgaWYgKHVzZXIgIT0gbnVsbCAmJiBwYXNzICE9IG51bGwpIHsgZGlnZXN0ID0gJzx0Oklzc3VlZFRva2VucyB4bWxuczp0PSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzAyL3RydXN0IiB4bWxuczpzZT0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3NzLzIwMDQvMDEvb2FzaXMtMjAwNDAxLXdzcy13c3NlY3VyaXR5LXNlY2V4dC0xLjAueHNkIj48dDpSZXF1ZXN0U2VjdXJpdHlUb2tlblJlc3BvbnNlPjx0OlRva2VuVHlwZT5odHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXVzZXJuYW1lLXRva2VuLXByb2ZpbGUtMS4wI1VzZXJuYW1lVG9rZW48L3Q6VG9rZW5UeXBlPjx0OlJlcXVlc3RlZFNlY3VyaXR5VG9rZW4+PHNlOlVzZXJuYW1lVG9rZW4+PHNlOlVzZXJuYW1lPicgKyB1c2VyICsgJzwvc2U6VXNlcm5hbWU+PHNlOlBhc3N3b3JkIFR5cGU9Imh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL3dzcy8yMDA0LzAxL29hc2lzLTIwMDQwMS13c3Mtd3NzZWN1cml0eS1zZWNleHQtMS4wLnhzZCNQYXNzd29yZFRleHQiPicgKyBwYXNzICsgJzwvc2U6UGFzc3dvcmQ+PC9zZTpVc2VybmFtZVRva2VuPjwvdDpSZXF1ZXN0ZWRTZWN1cml0eVRva2VuPjwvdDpSZXF1ZXN0U2VjdXJpdHlUb2tlblJlc3BvbnNlPjwvdDpJc3N1ZWRUb2tlbnM+JzsgZGlnZXN0MiA9ICc8dzpBdXRoIFByb2ZpbGU9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi9zZWNwcm9maWxlL2h0dHAvZGlnZXN0Ii8+JzsgfQ0KICAgICAgICBpZiAob3BhcXVlICE9IG51bGwpIHsgb3BhcXVlID0gJzxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+PG06YXJnPicgKyBvcGFxdWUgKyAnPC9tOmFyZz48L2E6UmVmZXJlbmNlUGFyYW1ldGVycz4nOyB9DQogICAgICAgIGlmIChkZWxpdmVyeSA9PSAnUHVzaFdpdGhBY2snKSB7IGRlbGl2ZXJ5ID0gJ2RtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi9QdXNoV2l0aEFjayc7IH0gZWxzZSBpZiAoZGVsaXZlcnkgPT0gJ1B1c2gnKSB7IGRlbGl2ZXJ5ID0gJ3htbHNvYXAub3JnL3dzLzIwMDQvMDgvZXZlbnRpbmcvRGVsaXZlcnlNb2Rlcy9QdXNoJzsgfQ0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2V2ZW50aW5nL1N1YnNjcmliZTwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz4iICsgX1B1dE9ialRvU2VsZWN0b3JzWG1sKHNlbGVjdG9ycykgKyBkaWdlc3QgKyAnPC9IZWFkZXI+PEJvZHk+PGU6U3Vic2NyaWJlPjxlOkRlbGl2ZXJ5IE1vZGU9Imh0dHA6Ly9zY2hlbWFzLicgKyBkZWxpdmVyeSArICciPjxlOk5vdGlmeVRvPjxhOkFkZHJlc3M+JyArIHVybCArICc8L2E6QWRkcmVzcz4nICsgb3BhcXVlICsgJzwvZTpOb3RpZnlUbz4nICsgZGlnZXN0MiArICc8L2U6RGVsaXZlcnk+PC9lOlN1YnNjcmliZT4nOw0KICAgICAgICBvYmouUGVyZm9ybUFqYXgoZGF0YSArICI8L0JvZHk+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmksICd4bWxuczplPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2V2ZW50aW5nIiB4bWxuczptPSJodHRwOi8veC5jb20iJyk7DQogICAgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIFVuU3Vic2NyaWJlIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjVW5TdWJzY3JpYmUgPSBmdW5jdGlvbiAocmVzdXJpLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2V2ZW50aW5nL1Vuc3Vic2NyaWJlPC9hOkFjdGlvbj48YTpUbz4iICsgb2JqLkFkZHJlc3MgKyAiPC9hOlRvPjx3OlJlc291cmNlVVJJPiIgKyByZXN1cmkgKyAiPC93OlJlc291cmNlVVJJPjxhOk1lc3NhZ2VJRD4iICsgKG9iai5OZXh0TWVzc2FnZUlkKyspICsgIjwvYTpNZXNzYWdlSUQ+PGE6UmVwbHlUbz48YTpBZGRyZXNzPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZy9yb2xlL2Fub255bW91czwvYTpBZGRyZXNzPjwvYTpSZXBseVRvPiIgKyBfUHV0T2JqVG9TZWxlY3RvcnNYbWwoc2VsZWN0b3JzKSArICc8L0hlYWRlcj48Qm9keT48ZTpVbnN1YnNjcmliZS8+JzsNCiAgICAgICAgb2JqLlBlcmZvcm1BamF4KGRhdGEgKyAiPC9Cb2R5PjwvRW52ZWxvcGU+IiwgY2FsbGJhY2ssIHRhZywgcHJpLCAneG1sbnM6ZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9ldmVudGluZyInKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gUFVUIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjUHV0ID0gZnVuY3Rpb24gKHJlc3VyaSwgcHV0b2JqLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L3RyYW5zZmVyL1B1dDwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjAuMDAwUzwvdzpPcGVyYXRpb25UaW1lb3V0PiIgKyBfUHV0T2JqVG9TZWxlY3RvcnNYbWwoc2VsZWN0b3JzKSArICc8L0hlYWRlcj48Qm9keT4nICsgX1B1dE9ialRvQm9keVhtbChyZXN1cmksIHB1dG9iaik7DQogICAgICAgIG9iai5QZXJmb3JtQWpheChkYXRhICsgIjwvQm9keT48L0VudmVsb3BlPiIsIGNhbGxiYWNrLCB0YWcsIHByaSk7DQogICAgfQ0KCQkNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gQ1JFQVRFIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjQ3JlYXRlID0gZnVuY3Rpb24gKHJlc3VyaSwgcHV0b2JqLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICB2YXIgb2JqbmFtZSA9IG9iai5HZXROYW1lRnJvbVVybChyZXN1cmkpOw0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L3RyYW5zZmVyL0NyZWF0ZTwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+IiArIF9QdXRPYmpUb1NlbGVjdG9yc1htbChzZWxlY3RvcnMpICsgIjwvSGVhZGVyPjxCb2R5PjxnOiIgKyBvYmpuYW1lICsgIiB4bWxuczpnPVwiIiArIHJlc3VyaSArICJcIj4iOw0KICAgICAgICBmb3IgKHZhciBuIGluIHB1dG9iaikgeyBkYXRhICs9ICI8ZzoiICsgbiArICI+IiArIHB1dG9ialtuXSArICI8L2c6IiArIG4gKyAiPiIgfSANCiAgICAgICAgb2JqLlBlcmZvcm1BamF4KGRhdGEgKyAiPC9nOiIgKyBvYmpuYW1lICsgIj48L0JvZHk+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmkpOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiBERUxFVEUgb3BlcmF0aW9uDQogICAgb2JqLkV4ZWNEZWxldGUgPSBmdW5jdGlvbiAocmVzdXJpLCBwdXRvYmosIGNhbGxiYWNrLCB0YWcsIHByaSkgew0KICAgICAgICB2YXIgZGF0YSA9ICJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L3RyYW5zZmVyL0RlbGV0ZTwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+IiArIF9QdXRPYmpUb1NlbGVjdG9yc1htbChwdXRvYmopICsgIjwvSGVhZGVyPjxCb2R5IC8+PC9FbnZlbG9wZT4iOw0KICAgICAgICBvYmouUGVyZm9ybUFqYXgoZGF0YSwgY2FsbGJhY2ssIHRhZywgcHJpKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gR0VUIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjR2V0ID0gZnVuY3Rpb24gKHJlc3VyaSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIG9iai5QZXJmb3JtQWpheCgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOS90cmFuc2Zlci9HZXQ8L2E6QWN0aW9uPjxhOlRvPiIgKyBvYmouQWRkcmVzcyArICI8L2E6VG8+PHc6UmVzb3VyY2VVUkk+IiArIHJlc3VyaSArICI8L3c6UmVzb3VyY2VVUkk+PGE6TWVzc2FnZUlEPiIgKyAob2JqLk5leHRNZXNzYWdlSWQrKykgKyAiPC9hOk1lc3NhZ2VJRD48YTpSZXBseVRvPjxhOkFkZHJlc3M+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9hOkFkZHJlc3M+PC9hOlJlcGx5VG8+PHc6T3BlcmF0aW9uVGltZW91dD5QVDYwUzwvdzpPcGVyYXRpb25UaW1lb3V0PjwvSGVhZGVyPjxCb2R5IC8+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmkpOw0KICAgIH0NCg0KCS8vIFBlcmZvcm0gYSBXU01BTiBtZXRob2QgY2FsbCBvcGVyYXRpb24NCiAgICBvYmouRXhlY01ldGhvZCA9IGZ1bmN0aW9uIChyZXN1cmksIG1ldGhvZCwgYXJncywgY2FsbGJhY2ssIHRhZywgcHJpLCBzZWxlY3RvcnMpIHsNCiAgICAgICAgdmFyIGFyZ3N4bWwgPSAiIjsNCiAgICAgICAgZm9yICh2YXIgaSBpbiBhcmdzKSB7IGlmIChhcmdzW2ldICE9IG51bGwpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJnc1tpXSkpIHsgZm9yICh2YXIgeCBpbiBhcmdzW2ldKSB7IGFyZ3N4bWwgKz0gIjxyOiIgKyBpICsgIj4iICsgYXJnc1tpXVt4XSArICI8L3I6IiArIGkgKyAiPiI7IH0gfSBlbHNlIHsgYXJnc3htbCArPSAiPHI6IiArIGkgKyAiPiIgKyBhcmdzW2ldICsgIjwvcjoiICsgaSArICI+IjsgfSB9IH0NCiAgICAgICAgb2JqLkV4ZWNNZXRob2RYbWwocmVzdXJpLCBtZXRob2QsIGFyZ3N4bWwsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKTsNCiAgICB9DQoJDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIG1ldGhvZCBjYWxsIG9wZXJhdGlvbi4gVGhlIGFyZ3VtZW50cyBhcmUgYWxyZWFkeSBmb3JtYXR0ZWQgaW4gWE1MLg0KICAgIG9iai5FeGVjTWV0aG9kWG1sID0gZnVuY3Rpb24gKHJlc3VyaSwgbWV0aG9kLCBhcmdzeG1sLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycykgew0KICAgICAgICBvYmouUGVyZm9ybUFqYXgocmVzdXJpICsgIi8iICsgbWV0aG9kICsgIjwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+IiArIF9QdXRPYmpUb1NlbGVjdG9yc1htbChzZWxlY3RvcnMpICsgIjwvSGVhZGVyPjxCb2R5PjxyOiIgKyBtZXRob2QgKyAnX0lOUFVUJyArICIgeG1sbnM6cj1cIiIgKyByZXN1cmkgKyAiXCI+IiArIGFyZ3N4bWwgKyAiPC9yOiIgKyBtZXRob2QgKyAiX0lOUFVUPjwvQm9keT48L0VudmVsb3BlPiIsIGNhbGxiYWNrLCB0YWcsIHByaSk7DQogICAgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIEVOVU0gb3BlcmF0aW9uDQogICAgb2JqLkV4ZWNFbnVtID0gZnVuY3Rpb24gKHJlc3VyaSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIG9iai5QZXJmb3JtQWpheCgiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOS9lbnVtZXJhdGlvbi9FbnVtZXJhdGU8L2E6QWN0aW9uPjxhOlRvPiIgKyBvYmouQWRkcmVzcyArICI8L2E6VG8+PHc6UmVzb3VyY2VVUkk+IiArIHJlc3VyaSArICI8L3c6UmVzb3VyY2VVUkk+PGE6TWVzc2FnZUlEPiIgKyAob2JqLk5leHRNZXNzYWdlSWQrKykgKyAiPC9hOk1lc3NhZ2VJRD48YTpSZXBseVRvPjxhOkFkZHJlc3M+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9hOkFkZHJlc3M+PC9hOlJlcGx5VG8+PHc6T3BlcmF0aW9uVGltZW91dD5QVDYwUzwvdzpPcGVyYXRpb25UaW1lb3V0PjwvSGVhZGVyPjxCb2R5PjxFbnVtZXJhdGUgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L2VudW1lcmF0aW9uXCIgLz48L0JvZHk+PC9FbnZlbG9wZT4iLCBjYWxsYmFjaywgdGFnLCBwcmkpOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiBQVUxMIG9wZXJhdGlvbg0KICAgIG9iai5FeGVjUHVsbCA9IGZ1bmN0aW9uIChyZXN1cmksIGVudW1jdHgsIGNhbGxiYWNrLCB0YWcsIHByaSkgew0KICAgICAgICBvYmouUGVyZm9ybUFqYXgoImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDkvZW51bWVyYXRpb24vUHVsbDwvYTpBY3Rpb24+PGE6VG8+IiArIG9iai5BZGRyZXNzICsgIjwvYTpUbz48dzpSZXNvdXJjZVVSST4iICsgcmVzdXJpICsgIjwvdzpSZXNvdXJjZVVSST48YTpNZXNzYWdlSUQ+IiArIChvYmouTmV4dE1lc3NhZ2VJZCsrKSArICI8L2E6TWVzc2FnZUlEPjxhOlJlcGx5VG8+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48L2E6UmVwbHlUbz48dzpPcGVyYXRpb25UaW1lb3V0PlBUNjBTPC93Ok9wZXJhdGlvblRpbWVvdXQ+PC9IZWFkZXI+PEJvZHk+PFB1bGwgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA5L2VudW1lcmF0aW9uXCI+PEVudW1lcmF0aW9uQ29udGV4dD4iICsgZW51bWN0eCArICI8L0VudW1lcmF0aW9uQ29udGV4dD48L1B1bGw+PC9Cb2R5PjwvRW52ZWxvcGU+IiwgY2FsbGJhY2ssIHRhZywgcHJpKTsgLy8gPC9FbnVtZXJhdGlvbkNvbnRleHQ+LS08TWF4RWxlbWVudHM+OTk5PC9NYXhFbGVtZW50cz48TWF4Q2hhcmFjdGVycz45OTk5OTwvTWF4Q2hhcmFjdGVycz4tLTwvUHVsbD4NCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIG9iai5QYXJzZVdzbWFuID0gZnVuY3Rpb24gKHhtbCkgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgaWYgKCF4bWwuY2hpbGROb2RlcykgeG1sID0gX3R1cm5Ub1htbCh4bWwpOw0KICAgICAgICAgICAgdmFyIHIgPSB7IEhlYWRlcjp7fSB9LCBoZWFkZXIgPSB4bWwuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkhlYWRlciIpWzBdLCB0Ow0KICAgICAgICAgICAgaWYgKCFoZWFkZXIpIGhlYWRlciA9IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYTpIZWFkZXIiKVswXTsNCiAgICAgICAgICAgIGlmICghaGVhZGVyKSByZXR1cm4gbnVsbDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaGVhZGVyLmNoaWxkTm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBoZWFkZXIuY2hpbGROb2Rlc1tpXTsNCiAgICAgICAgICAgICAgICByLkhlYWRlcltjaGlsZC5sb2NhbE5hbWVdID0gY2hpbGQudGV4dENvbnRlbnQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgYm9keSA9IHhtbC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiQm9keSIpWzBdOw0KICAgICAgICAgICAgaWYgKCFib2R5KSBib2R5ID0geG1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJhOkJvZHkiKVswXTsNCiAgICAgICAgICAgIGlmICghYm9keSkgcmV0dXJuIG51bGw7DQogICAgICAgICAgICBpZiAoYm9keS5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB0ID0gYm9keS5jaGlsZE5vZGVzWzBdLmxvY2FsTmFtZTsNCiAgICAgICAgICAgICAgICBpZiAodC5pbmRleE9mKCJfT1VUUFVUIikgPT0gdC5sZW5ndGggLSA3KSB7IHQgPSB0LnN1YnN0cmluZygwLCB0Lmxlbmd0aCAtIDcpOyB9DQogICAgICAgICAgICAgICAgci5IZWFkZXJbJ01ldGhvZCddID0gdDsNCiAgICAgICAgICAgICAgICByLkJvZHkgPSBfUGFyc2VXc21hblJlYyhib2R5LmNoaWxkTm9kZXNbMF0pOw0KCQkgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHI7DQogICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCJVbmFibGUgdG8gcGFyc2UgWE1MOiAiICsgeG1sKTsNCiAgICAgICAgICAgIHJldHVybiBudWxsOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfUGFyc2VXc21hblJlYyhub2RlKSB7DQogICAgICAgIHZhciBkYXRhLCByID0ge307DQogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICB2YXIgY2hpbGQgPSBub2RlLmNoaWxkTm9kZXNbaV07DQogICAgICAgICAgICBpZiAoKGNoaWxkLmNoaWxkRWxlbWVudENvdW50ID09IG51bGwpIHx8IChjaGlsZC5jaGlsZEVsZW1lbnRDb3VudCA9PSAwKSkgeyBkYXRhID0gY2hpbGQudGV4dENvbnRlbnQ7IH0gZWxzZSB7IGRhdGEgPSBfUGFyc2VXc21hblJlYyhjaGlsZCk7IH0NCiAgICAgICAgICAgIGlmIChkYXRhID09ICd0cnVlJykgZGF0YSA9IHRydWU7IC8vIENvbnZlcnQgJ3RydWUnIGludG8gdHJ1ZQ0KICAgICAgICAgICAgaWYgKGRhdGEgPT0gJ2ZhbHNlJykgZGF0YSA9IGZhbHNlOyAvLyBDb252ZXJ0ICdmYWxzZScgaW50byBmYWxzZQ0KICAgICAgICAgICAgaWYgKChwYXJzZUludChkYXRhKSArICcnKSA9PT0gZGF0YSkgZGF0YSA9IHBhcnNlSW50KGRhdGEpOyAvLyBDb252ZXJ0IGludGVnZXJzDQoNCiAgICAgICAgICAgIHZhciBjaGlsZE9iaiA9IGRhdGE7DQogICAgICAgICAgICBpZiAoKGNoaWxkLmF0dHJpYnV0ZXMgIT0gbnVsbCkgJiYgKGNoaWxkLmF0dHJpYnV0ZXMubGVuZ3RoID4gMCkpIHsNCgkJCQljaGlsZE9iaiA9IHsgJ1ZhbHVlJzogZGF0YSB9Ow0KCQkJCWZvcih2YXIgaiA9IDA7IGogPCBjaGlsZC5hdHRyaWJ1dGVzLmxlbmd0aDsgaisrKSB7DQoJCQkJCWNoaWxkT2JqWydAJyArIGNoaWxkLmF0dHJpYnV0ZXNbal0ubmFtZV0gPSBjaGlsZC5hdHRyaWJ1dGVzW2pdLnZhbHVlOw0KCQkJCX0NCgkJCX0NCgkJCQ0KICAgICAgICAgICAgaWYgKHJbY2hpbGQubG9jYWxOYW1lXSBpbnN0YW5jZW9mIEFycmF5KSB7IHJbY2hpbGQubG9jYWxOYW1lXS5wdXNoKGNoaWxkT2JqKTsgfQ0KICAgICAgICAgICAgZWxzZSBpZiAocltjaGlsZC5sb2NhbE5hbWVdID09IG51bGwpIHsgcltjaGlsZC5sb2NhbE5hbWVdID0gY2hpbGRPYmo7IH0NCiAgICAgICAgICAgIGVsc2UgeyByW2NoaWxkLmxvY2FsTmFtZV0gPSBbcltjaGlsZC5sb2NhbE5hbWVdLCBjaGlsZE9ial07IH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gcjsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBfUHV0T2JqVG9Cb2R5WG1sKHJlc3VyaSwgcHV0T2JqKSB7DQogICAgICAgIGlmICghcmVzdXJpIHx8IHB1dE9iaiA9PSBudWxsKSByZXR1cm4gJyc7DQoJCXZhciBvYmpuYW1lID0gb2JqLkdldE5hbWVGcm9tVXJsKHJlc3VyaSk7DQoJCXZhciByZXN1bHQgPSAnPHI6JyArIG9iam5hbWUgKyAnIHhtbG5zOnI9IicgKyByZXN1cmkgKyAnIj4nOw0KDQoJCWZvciAodmFyIHByb3AgaW4gcHV0T2JqKSB7DQoJCQlpZiAoIXB1dE9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB8fCBwcm9wLmluZGV4T2YoJ19fJykgPT09IDAgfHwgcHJvcC5pbmRleE9mKCdAJykgPT09IDApIGNvbnRpbnVlOw0KCQkJaWYgKHB1dE9ialtwcm9wXSA9PSBudWxsIHx8IHR5cGVvZiBwdXRPYmpbcHJvcF0gPT09ICdmdW5jdGlvbicpIGNvbnRpbnVlOw0KCQkJaWYgKHR5cGVvZiBwdXRPYmpbcHJvcF0gPT09ICdvYmplY3QnICYmIHB1dE9ialtwcm9wXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddKSB7DQoJCQkJcmVzdWx0ICs9ICc8cjonICsgcHJvcCArICc+PGE6QWRkcmVzcz4nICsgcHV0T2JqW3Byb3BdLkFkZHJlc3MgKyAnPC9hOkFkZHJlc3M+PGE6UmVmZXJlbmNlUGFyYW1ldGVycz48dzpSZXNvdXJjZVVSST4nICsgcHV0T2JqW3Byb3BdWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bIlJlc291cmNlVVJJIl0gKyAnPC93OlJlc291cmNlVVJJPjx3OlNlbGVjdG9yU2V0Pic7DQoJCQkJdmFyIHNlbGVjdG9yQXJyYXkgPSBwdXRPYmpbcHJvcF1bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXTsNCgkJCQlpZiAoQXJyYXkuaXNBcnJheShzZWxlY3RvckFycmF5KSkgew0KCQkJCQlmb3IgKHZhciBpPTA7IGk8IHNlbGVjdG9yQXJyYXkubGVuZ3RoOyBpKyspIHsNCgkJCQkJCXJlc3VsdCArPSAnPHc6U2VsZWN0b3InICsgX09iamVjdFRvWG1sQXR0cmlidXRlcyhzZWxlY3RvckFycmF5W2ldKSArICc+JyArIHNlbGVjdG9yQXJyYXlbaV1bJ1ZhbHVlJ10gKyAnPC93OlNlbGVjdG9yPic7DQoJCQkJCX0NCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCXJlc3VsdCArPSAnPHc6U2VsZWN0b3InICsgX09iamVjdFRvWG1sQXR0cmlidXRlcyhzZWxlY3RvckFycmF5KSArICc+JyArIHNlbGVjdG9yQXJyYXlbJ1ZhbHVlJ10gKyAnPC93OlNlbGVjdG9yPic7DQoJCQkJfQ0KCQkJCXJlc3VsdCArPSAnPC93OlNlbGVjdG9yU2V0PjwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjwvcjonICsgcHJvcCArICc+JzsNCgkJCX0NCgkJCWVsc2Ugew0KCQkJICAgIGlmIChBcnJheS5pc0FycmF5KHB1dE9ialtwcm9wXSkpIHsNCgkJCSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwdXRPYmpbcHJvcF0ubGVuZ3RoOyBpKyspIHsNCgkJCSAgICAgICAgICAgIHJlc3VsdCArPSAnPHI6JyArIHByb3AgKyAnPicgKyBwdXRPYmpbcHJvcF1baV0udG9TdHJpbmcoKSArICc8L3I6JyArIHByb3AgKyAnPic7DQoJCQkgICAgICAgIH0NCgkJCSAgICB9IGVsc2Ugew0KCQkJICAgICAgICByZXN1bHQgKz0gJzxyOicgKyBwcm9wICsgJz4nICsgcHV0T2JqW3Byb3BdLnRvU3RyaW5nKCkgKyAnPC9yOicgKyBwcm9wICsgJz4nOw0KCQkJICAgIH0NCgkJCX0NCgkJfQ0KDQoJCXJlc3VsdCArPSAnPC9yOicgKyBvYmpuYW1lICsgJz4nOw0KCQlyZXR1cm4gcmVzdWx0Ow0KCX0NCg0KCS8qIA0KCWNvbnZlcnQgDQoJCXsgQE5hbWU6ICdJbnN0YW5jZUlEJywgQEF0dHJOYW1lOiAnQXR0cmlidXRlIFZhbHVlJ30NCglpbnRvDQoJCScgTmFtZT0iSW5zdGFuY2VJRCIgQXR0ck5hbWU9IkF0dHJpYnV0ZSBWYWx1ZSIgJw0KCSovDQogICAgZnVuY3Rpb24gX09iamVjdFRvWG1sQXR0cmlidXRlcyhvYmpXaXRoQXR0cmlidXRlcykgew0KCQlpZighb2JqV2l0aEF0dHJpYnV0ZXMpIHJldHVybiAnJzsNCgkJdmFyIHJlc3VsdCA9ICcnOw0KCQlmb3IgKHZhciBwcm9wTmFtZSBpbiBvYmpXaXRoQXR0cmlidXRlcykgew0KCQkJaWYgKCFvYmpXaXRoQXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgfHwgcHJvcE5hbWUuaW5kZXhPZignQCcpICE9PSAwKSBjb250aW51ZTsNCgkJCXJlc3VsdCArPSAnICcgKyBwcm9wTmFtZS5zdWJzdHJpbmcoMSkgKyAnPSInICsgb2JqV2l0aEF0dHJpYnV0ZXNbcHJvcE5hbWVdICsgJyInOw0KCQl9DQoJCXJldHVybiByZXN1bHQ7DQoJfQ0KDQogICAgZnVuY3Rpb24gX1B1dE9ialRvU2VsZWN0b3JzWG1sKHNlbGVjdG9yU2V0KSB7DQogICAgICAgIGlmICghc2VsZWN0b3JTZXQpIHJldHVybiAnJzsNCiAgICAgICAgaWYgKHR5cGVvZiBzZWxlY3RvclNldCA9PSAnc3RyaW5nJykgcmV0dXJuIHNlbGVjdG9yU2V0Ow0KICAgICAgICBpZiAoc2VsZWN0b3JTZXRbJ0luc3RhbmNlSUQnXSkgcmV0dXJuICI8dzpTZWxlY3RvclNldD48dzpTZWxlY3RvciBOYW1lPVwiSW5zdGFuY2VJRFwiPiIgKyBzZWxlY3RvclNldFsnSW5zdGFuY2VJRCddICsgIjwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+IjsNCgkJdmFyIHJlc3VsdCA9ICc8dzpTZWxlY3RvclNldD4nOw0KCQlmb3IodmFyIHByb3BOYW1lIGluIHNlbGVjdG9yU2V0KSB7DQoJCSAgICBpZiAoIXNlbGVjdG9yU2V0Lmhhc093blByb3BlcnR5KHByb3BOYW1lKSkgY29udGludWU7DQoJCSAgICByZXN1bHQgKz0gJzx3OlNlbGVjdG9yIE5hbWU9IicgKyBwcm9wTmFtZSArICciPic7DQoJCSAgICBpZiAoc2VsZWN0b3JTZXRbcHJvcE5hbWVdWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ10pIHsNCgkJICAgICAgICByZXN1bHQgKz0gJzxhOkVuZHBvaW50UmVmZXJlbmNlPic7DQoJCSAgICAgICAgcmVzdWx0ICs9ICc8YTpBZGRyZXNzPicgKyBzZWxlY3RvclNldFtwcm9wTmFtZV1bJ0FkZHJlc3MnXSArICc8L2E6QWRkcmVzcz48YTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjx3OlJlc291cmNlVVJJPicgKyBzZWxlY3RvclNldFtwcm9wTmFtZV1bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnUmVzb3VyY2VVUkknXSArICc8L3c6UmVzb3VyY2VVUkk+PHc6U2VsZWN0b3JTZXQ+JzsNCgkJICAgICAgICB2YXIgc2VsZWN0b3JBcnJheSA9IHNlbGVjdG9yU2V0W3Byb3BOYW1lXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddOw0KCQkgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdG9yQXJyYXkpKSB7DQoJCSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0b3JBcnJheS5sZW5ndGg7IGkrKykgew0KCQkgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICc8dzpTZWxlY3RvcicgKyBfT2JqZWN0VG9YbWxBdHRyaWJ1dGVzKHNlbGVjdG9yQXJyYXlbaV0pICsgJz4nICsgc2VsZWN0b3JBcnJheVtpXVsnVmFsdWUnXSArICc8L3c6U2VsZWN0b3I+JzsNCgkJICAgICAgICAgICAgfQ0KCQkgICAgICAgIH0NCgkJICAgICAgICBlbHNlIHsNCgkJICAgICAgICAgICAgcmVzdWx0ICs9ICc8dzpTZWxlY3RvcicgKyBfT2JqZWN0VG9YbWxBdHRyaWJ1dGVzKHNlbGVjdG9yQXJyYXkpICsgJz4nICsgc2VsZWN0b3JBcnJheVsnVmFsdWUnXSArICc8L3c6U2VsZWN0b3I+JzsNCgkJICAgICAgICB9DQoJCSAgICAgICAgcmVzdWx0ICs9ICc8L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+PC9hOkVuZHBvaW50UmVmZXJlbmNlPic7DQoJCSAgICB9IGVsc2Ugew0KCQkgICAgICAgIHJlc3VsdCArPSBzZWxlY3RvclNldFtwcm9wTmFtZV07DQoJCSAgICB9DQoJCQlyZXN1bHQgKz0gJzwvdzpTZWxlY3Rvcj4nOw0KCQl9DQoJCXJlc3VsdCArPSAnPC93OlNlbGVjdG9yU2V0Pic7DQoJCXJldHVybiByZXN1bHQ7DQoJfQ0KDQogICAgZnVuY3Rpb24gX3R1cm5Ub1htbCh0ZXh0KSB7DQogICAgICAgIA0KICAgICAgICAvLyBOb2RlSlMgZGV0ZWN0aW9uDQogICAgICAgIHZhciBpc05vZGUgPSBuZXcgRnVuY3Rpb24oInRyeSB7cmV0dXJuIHRoaXM9PT1nbG9iYWw7fWNhdGNoKGUpe3JldHVybiBmYWxzZTt9Iik7DQogICAgICAgIGlmIChpc05vZGUoKSkgew0KICAgICAgICAgICAgdmFyIFhET01QYXJzZXIgPSByZXF1aXJlKCd4bWxkb20nKS5ET01QYXJzZXI7DQogICAgICAgICAgICByZXR1cm4gbmV3IFhET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodGV4dCwgInRleHQveG1sIik7DQogICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAod2luZG93LkRPTVBhcnNlcikgew0KICAgICAgICAgICAgcmV0dXJuIG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodGV4dCwgInRleHQveG1sIik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAvLyBJbnRlcm5ldCBFeHBsb3Jlcg0KICAgICAgICAgICAgdmFyIHhtbERvYyA9IG5ldyBBY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MRE9NIik7DQogICAgICAgICAgICB4bWxEb2MuYXN5bmMgPSBmYWxzZTsNCiAgICAgICAgICAgIHhtbERvYy5sb2FkWE1MKHRleHQpOw0KICAgICAgICAgICAgcmV0dXJuIHhtbERvYzsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qDQogICAgLy8gVGhpcyBpcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgdG8gX3R1cm5Ub1htbCgpIHRoYXQgd29ya3Mgd2l0aG91dCB4bWwgcGFyc2VyIGRlcGVuZGVuY3kuDQogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFycmF5LnByb3RvdHlwZSwgInBlZWsiLCB7IHZhbHVlOiBmdW5jdGlvbiAoKSB7IHJldHVybiAodGhpcy5sZW5ndGggPiAwID8gdGhpc1t0aGlzLmxlbmd0aCAtIDFdIDogbnVsbCk7IH0gfSk7CiAgICBmdW5jdGlvbiBfdHJlZUJ1aWxkZXIoKSB7DQogICAgICAgIHRoaXMudHJlZSA9IFtdOwogICAgICAgIHRoaXMucHVzaCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7IHRoaXMudHJlZS5wdXNoKGVsZW1lbnQpOyB9OwogICAgICAgIHRoaXMucG9wID0gZnVuY3Rpb24gKCkgeyB2YXIgZWxlbWVudCA9IHRoaXMudHJlZS5wb3AoKTsgaWYgKHRoaXMudHJlZS5sZW5ndGggPiAwKSB7IHZhciB4ID0gdGhpcy50cmVlLnBlZWsoKTsgeC5jaGlsZE5vZGVzLnB1c2goZWxlbWVudCk7IHguY2hpbGRFbGVtZW50Q291bnQgPSB4LmNoaWxkTm9kZXMubGVuZ3RoOyB9IHJldHVybiAoZWxlbWVudCk7IH07CiAgICAgICAgdGhpcy5wZWVrID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHRoaXMudHJlZS5wZWVrKCkpOyB9CiAgICAgICAgdGhpcy5hZGROYW1lc3BhY2UgPSBmdW5jdGlvbiAocHJlZml4LCBuYW1lc3BhY2UpIHsgdGhpcy50cmVlLnBlZWsoKS5uc1RhYmxlW3ByZWZpeF0gPSBuYW1lc3BhY2U7IGlmICh0aGlzLnRyZWUucGVlaygpLmF0dHJpYnV0ZXMubGVuZ3RoID4gMCkgeyBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudHJlZS5wZWVrKCkuYXR0cmlidXRlczsgKytpKSB7IHZhciBhID0gdGhpcy50cmVlLnBlZWsoKS5hdHRyaWJ1dGVzW2ldOyBpZiAocHJlZml4ID09ICcqJyAmJiBhLm5hbWUgPT0gYS5sb2NhbE5hbWUpIHsgYS5uYW1lc3BhY2UgPSBuYW1lc3BhY2U7IH0gZWxzZSBpZiAocHJlZml4ICE9ICcqJyAmJiBhLm5hbWUgIT0gYS5sb2NhbE5hbWUpIHsgdmFyIHBmeCA9IGEubmFtZS5zcGxpdCgnOicpWzBdOyBpZiAocGZ4ID09IHByZWZpeCkgeyBhLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTsgfSB9IH0gfSB9CiAgICAgICAgdGhpcy5nZXROYW1lc3BhY2UgPSBmdW5jdGlvbiAocHJlZml4KSB7IGZvciAodmFyIGkgPSB0aGlzLnRyZWUubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsgaWYgKHRoaXMudHJlZVtpXS5uc1RhYmxlW3ByZWZpeF0gIT0gbnVsbCkgeyByZXR1cm4gKHRoaXMudHJlZVtpXS5uc1RhYmxlW3ByZWZpeF0pOyB9IH0gcmV0dXJuIG51bGw7IH0NCiAgICB9CiAgICBmdW5jdGlvbiBfdHVyblRvWG1sKHRleHQpIHsgaWYgKHRleHQgPT0gbnVsbCkgcmV0dXJuIG51bGw7IHJldHVybiAoeyBjaGlsZE5vZGVzOiBbX3R1cm5Ub1htbFJlYyh0ZXh0KV0sIGdldEVsZW1lbnRzQnlUYWdOYW1lOiBfZ2V0RWxlbWVudHNCeVRhZ05hbWUsIGdldENoaWxkRWxlbWVudHNCeVRhZ05hbWU6IF9nZXRDaGlsZEVsZW1lbnRzQnlUYWdOYW1lLCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TOiBfZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyB9KTsgfQogICAgZnVuY3Rpb24gX2dldEVsZW1lbnRzQnlUYWdOYW1lTlMobnMsIG5hbWUpIHsgdmFyIHJldCA9IFtdOyBfeG1sVHJhdmVyc2VBbGxSZWModGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkgeyBpZiAobm9kZS5sb2NhbE5hbWUgPT0gbmFtZSAmJiAobm9kZS5uYW1lc3BhY2UgPT0gbnMgfHwgbnMgPT0gJyonKSkgeyByZXQucHVzaChub2RlKTsgfSB9KTsgcmV0dXJuIHJldDsgfQogICAgZnVuY3Rpb24gX2dldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUpIHsgdmFyIHJldCA9IFtdOyBfeG1sVHJhdmVyc2VBbGxSZWModGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkgeyBpZiAobm9kZS5sb2NhbE5hbWUgPT0gbmFtZSkgeyByZXQucHVzaChub2RlKTsgfSB9KTsgcmV0dXJuIHJldDsgfQogICAgZnVuY3Rpb24gX2dldENoaWxkRWxlbWVudHNCeVRhZ05hbWUobmFtZSkgeyB2YXIgcmV0ID0gW107IGlmICh0aGlzLmNoaWxkTm9kZXMgIT0gbnVsbCkgeyBmb3IgKHZhciBub2RlIGluIHRoaXMuY2hpbGROb2RlcykgeyBpZiAodGhpcy5jaGlsZE5vZGVzW25vZGVdLmxvY2FsTmFtZSA9PSBuYW1lKSB7IHJldC5wdXNoKHRoaXMuY2hpbGROb2Rlc1tub2RlXSk7IH0gfSB9IHJldHVybiAocmV0KTsgfQogICAgZnVuY3Rpb24gX2dldENoaWxkRWxlbWVudHNCeVRhZ05hbWVOUyhucywgbmFtZSkgeyB2YXIgcmV0ID0gW107IGlmICh0aGlzLmNoaWxkTm9kZXMgIT0gbnVsbCkgeyBmb3IgKHZhciBub2RlIGluIHRoaXMuY2hpbGROb2RlcykgeyBpZiAodGhpcy5jaGlsZE5vZGVzW25vZGVdLmxvY2FsTmFtZSA9PSBuYW1lICYmIChucyA9PSAnKicgfHwgdGhpcy5jaGlsZE5vZGVzW25vZGVdLm5hbWVzcGFjZSA9PSBucykpIHsgcmV0LnB1c2godGhpcy5jaGlsZE5vZGVzW25vZGVdKTsgfSB9IH0gcmV0dXJuIChyZXQpOyB9CiAgICBmdW5jdGlvbiBfeG1sVHJhdmVyc2VBbGxSZWMobm9kZXMsIGZ1bmMpIHsgZm9yICh2YXIgaSBpbiBub2RlcykgeyBmdW5jKG5vZGVzW2ldKTsgaWYgKG5vZGVzW2ldLmNoaWxkTm9kZXMpIHsgX3htbFRyYXZlcnNlQWxsUmVjKG5vZGVzW2ldLmNoaWxkTm9kZXMsIGZ1bmMpOyB9IH0gfQogICAgZnVuY3Rpb24gX3R1cm5Ub1htbFJlYyh0ZXh0KSB7DQogICAgICAgIHZhciBlbGVtZW50U3RhY2sgPSBuZXcgX3RyZWVCdWlsZGVyKCksIGxhc3RFbGVtZW50ID0gbnVsbCwgeDEgPSB0ZXh0LnNwbGl0KCc8JyksIHJldCA9IFtdLCBlbGVtZW50ID0gbnVsbCwgY3VycmVudEVsZW1lbnROYW1lID0gbnVsbDsKICAgICAgICBmb3IgKHZhciBpIGluIHgxKSB7DQogICAgICAgICAgICB2YXIgeDIgPSB4MVtpXS5zcGxpdCgnPicpLCB4MyA9IHgyWzBdLnNwbGl0KCcgJyksIGVsZW1lbnROYW1lID0geDNbMF07CiAgICAgICAgICAgIGlmICgoZWxlbWVudE5hbWUubGVuZ3RoID4gMCkgJiYgKGVsZW1lbnROYW1lWzBdICE9ICc/JykpIHsNCiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudE5hbWVbMF0gIT0gJy8nKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gW10sIGxvY2FsTmFtZSwgbG9jYWxuYW1lMiA9IGVsZW1lbnROYW1lLnNwbGl0KCcgJylbMF0uc3BsaXQoJzonKSwgbG9jYWxOYW1lID0gKGxvY2FsbmFtZTIubGVuZ3RoID4gMSkgPyBsb2NhbG5hbWUyWzFdIDogbG9jYWxuYW1lMlswXTsKICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXR0cmlidXRlcywgImdldCIsCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGEgaW4gdGhpcykgeyBpZiAodGhpc1thXS5uYW1lID09IGFyZ3VtZW50c1swXSkgeyByZXR1cm4gKHRoaXNbYV0pOyB9IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgYSBpbiB0aGlzKSB7IGlmICh0aGlzW2FdLm5hbWUgPT0gYXJndW1lbnRzWzFdICYmIChhcmd1bWVudHNbMF0gPT0gJyonIHx8IHRoaXNbYV0ubmFtZXNwYWNlID09IGFyZ3VtZW50c1swXSkpIHsgcmV0dXJuICh0aGlzW2FdKTsgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93ICgnYXR0cmlidXRlcy5nZXQoKTogSW52YWxpZCBudW1iZXIgb2YgcGFyYW1ldGVycycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgZWxlbWVudFN0YWNrLnB1c2goeyBuYW1lOiBlbGVtZW50TmFtZSwgbG9jYWxOYW1lOiBsb2NhbE5hbWUsIGdldENoaWxkRWxlbWVudHNCeVRhZ05hbWU6IF9nZXRDaGlsZEVsZW1lbnRzQnlUYWdOYW1lLCBnZXRFbGVtZW50c0J5VGFnTmFtZU5TOiBfZ2V0RWxlbWVudHNCeVRhZ05hbWVOUywgZ2V0Q2hpbGRFbGVtZW50c0J5VGFnTmFtZU5TOiBfZ2V0Q2hpbGRFbGVtZW50c0J5VGFnTmFtZU5TLCBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLCBjaGlsZE5vZGVzOiBbXSwgbnNUYWJsZToge30gfSk7CiAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgQXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgIGlmICh4My5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2tpcCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIHgzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHgzW2pdID09ICcvJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4gZW1wdHkgRWxlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZXNwYWNlID0gZWxlbWVudFN0YWNrLnBlZWsoKS5uYW1lID09IGVsZW1lbnRTdGFjay5wZWVrKCkubG9jYWxOYW1lID8gZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZSgnKicpIDogZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZShlbGVtZW50U3RhY2sucGVlaygpLm5hbWUuc3Vic3RyaW5nKDAsIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZS5pbmRleE9mKCc6JykpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50U3RhY2sucGVlaygpLnRleHRDb250ZW50ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50U3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGsgPSB4M1tqXS5pbmRleE9mKCc9Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJOYW1lID0geDNbal0uc3Vic3RyaW5nKDAsIGspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSB4M1tqXS5zdWJzdHJpbmcoayArIDIsIHgzW2pdLmxlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyTlMgPSBlbGVtZW50U3RhY2suZ2V0TmFtZXNwYWNlKCcqJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyTmFtZSA9PSAneG1sbnMnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50U3RhY2suYWRkTmFtZXNwYWNlKCcqJywgYXR0clZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ck5TID0gYXR0clZhbHVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lLnN0YXJ0c1dpdGgoJ3htbG5zOicpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50U3RhY2suYWRkTmFtZXNwYWNlKGF0dHJOYW1lLnN1YnN0cmluZyg2KSwgYXR0clZhbHVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBheCA9IGF0dHJOYW1lLnNwbGl0KCc6Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheC5sZW5ndGggPT0gMikgeyBhdHRyTmFtZSA9IGF4WzFdOyBhdHRyTlMgPSBlbGVtZW50U3RhY2suZ2V0TmFtZXNwYWNlKGF4WzBdKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSB7IG5hbWU6IGF0dHJOYW1lLCB2YWx1ZTogYXR0clZhbHVlIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ck5TICE9IG51bGwpIHgubmFtZXNwYWNlID0gYXR0ck5TOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wZWVrKCkuYXR0cmlidXRlcy5wdXNoKHgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNraXApIHsgY29udGludWU7IH0NCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZXNwYWNlID0gZWxlbWVudFN0YWNrLnBlZWsoKS5uYW1lID09IGVsZW1lbnRTdGFjay5wZWVrKCkubG9jYWxOYW1lID8gZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZSgnKicpIDogZWxlbWVudFN0YWNrLmdldE5hbWVzcGFjZShlbGVtZW50U3RhY2sucGVlaygpLm5hbWUuc3Vic3RyaW5nKDAsIGVsZW1lbnRTdGFjay5wZWVrKCkubmFtZS5pbmRleE9mKCc6JykpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoeDJbMV0pIHsgZWxlbWVudFN0YWNrLnBlZWsoKS50ZXh0Q29udGVudCA9IHgyWzFdOyB9DQogICAgICAgICAgICAgICAgfSBlbHNlIHsgbGFzdEVsZW1lbnQgPSBlbGVtZW50U3RhY2sucG9wKCk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQogICAgICAgIHJldHVybiBsYXN0RWxlbWVudDsNCiAgICB9DQogICAgKi8NCg0KICAgIHJldHVybiBvYmo7DQp9DQovKioNCiogQGZpbGVvdmVydmlldyBJbnRlbChyKSBBTVQgQ29tbXVuaWNhdGlvbiBTdGFja1hYDQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4yLjBiDQoqLw0KDQovKioNCiAqIENvbnN0cnVjdCBhIEFtdFN0YWNrQ3JlYXRlU2VydmljZSBvYmplY3QsIHRoaXMgaWEgdGhlIG1haW4gSW50ZWwgQU1UIGNvbW11bmljYXRpb24gc3RhY2suDQogKiBAY29uc3RydWN0b3INCiAqLw0KZnVuY3Rpb24gQW10U3RhY2tDcmVhdGVTZXJ2aWNlKHdzbWFuU3RhY2spIHsNCiAgICB2YXIgb2JqID0gbmV3IE9iamVjdCgpOw0KICAgIG9iai53c21hbiA9IHdzbWFuU3RhY2s7DQogICAgb2JqLnBmeCA9IFsiaHR0cDovL2ludGVsLmNvbS93YmVtL3dzY2ltLzEvYW10LXNjaGVtYS8xLyIsICJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yLyIsICJodHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9pcHMtc2NoZW1hLzEvIl07DQogICAgb2JqLlBlbmRpbmdFbnVtcyA9IFtdOw0KICAgIG9iai5QZW5kaW5nQmF0Y2hPcGVyYXRpb25zID0gMDsNCiAgICBvYmouQWN0aXZlRW51bXNDb3VudCA9IDA7DQogICAgb2JqLk1heEFjdGl2ZUVudW1zQ291bnQgPSAxOyAvLyBNYXhpbXVtIG51bWJlciBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgZG9uZSBhdCB0aGUgc2FtZSB0aW1lLg0KICAgIG9iai5vblByb2Nlc3NDaGFuZ2VkID0gbnVsbDsNCiAgICB2YXIgX01heFByb2Nlc3MgPSAwOw0KICAgIHZhciBfTGFzdFByb2Nlc3MgPSAwOw0KDQogICAgLy8gUmV0dXJuIHRoZSBudW1iZXIgb2YgcGVuZGluZyBhY3Rpb25zDQogICAgb2JqLkdldFBlbmRpbmdBY3Rpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKG9iai5QZW5kaW5nRW51bXMubGVuZ3RoICogMikgKyAob2JqLkFjdGl2ZUVudW1zQ291bnQpICsgb2JqLndzbWFuLmNvbW0uUGVuZGluZ0FqYXgubGVuZ3RoICsgb2JqLndzbWFuLmNvbW0uQWN0aXZlQWpheENvdW50ICsgb2JqLlBlbmRpbmdCYXRjaE9wZXJhdGlvbnM7IH0NCg0KICAgIC8vIFByaXZhdGUgTWV0aG9kLCBVcGRhdGUgdGhlIGN1cnJlbnQgcHJvY2Vzc2luZyBzdGF0dXMsIHRoaXMgZ2l2ZXMgdGhlIGFwcGxpY2F0aW9uIGFuIGlkZWEgb2Ygd2hhdCBwcm9ncmVzcyBpcyBiZWluZyBkb25lIGJ5IHRoZSBXU01BTiBzdGFjaw0KICAgIGZ1bmN0aW9uIF91cCgpIHsNCiAgICAgICAgdmFyIHggPSBvYmouR2V0UGVuZGluZ0FjdGlvbnMoKTsNCiAgICAgICAgaWYgKF9NYXhQcm9jZXNzIDwgeCkgX01heFByb2Nlc3MgPSB4Ow0KICAgICAgICBpZiAob2JqLm9uUHJvY2Vzc0NoYW5nZWQgIT0gbnVsbCAmJiBfTGFzdFByb2Nlc3MgIT0geCkgew0KICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiUHJvY2VzcyBPbGQ9IiArIF9MYXN0UHJvY2VzcyArICIsIE5ldz0iICsgeCArICIsIFBFbnVtcz0iICsgb2JqLlBlbmRpbmdFbnVtcy5sZW5ndGggKyAiLCBBRW51bXM9IiArIG9iai5BY3RpdmVFbnVtc0NvdW50ICsgIiwgUEFqYXg9IiArIG9iai53c21hbi5jb21tLlBlbmRpbmdBamF4Lmxlbmd0aCArICIsIEFBamF4PSIgKyBvYmoud3NtYW4uY29tbS5BY3RpdmVBamF4Q291bnQgKyAiLCBQQmF0Y2g9IiArIG9iai5QZW5kaW5nQmF0Y2hPcGVyYXRpb25zKTsNCiAgICAgICAgICAgIF9MYXN0UHJvY2VzcyA9IHg7DQogICAgICAgICAgICBvYmoub25Qcm9jZXNzQ2hhbmdlZCh4LCBfTWF4UHJvY2Vzcyk7DQogICAgICAgIH0NCiAgICAgICAgaWYgKHggPT0gMCkgX01heFByb2Nlc3MgPSAwOw0KICAgIH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiAiU1VCU0NSSUJFIiBvcGVyYXRpb24uDQogICAgb2JqLlN1YnNjcmliZSA9IGZ1bmN0aW9uIChuYW1lLCBkZWxpdmVyeSwgdXJsLCBjYWxsYmFjaywgdGFnLCBwcmksIHNlbGVjdG9ycywgb3BhcXVlLCB1c2VyLCBwYXNzKSB7IG9iai53c21hbi5FeGVjU3Vic2NyaWJlKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIGRlbGl2ZXJ5LCB1cmwsIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgeHN0YXR1cykgeyBfdXAoKTsgY2FsbGJhY2sob2JqLCBuYW1lLCByZXNwb25zZSwgeHN0YXR1cywgdGFnKTsgfSwgMCwgcHJpLCBzZWxlY3RvcnMsIG9wYXF1ZSwgdXNlciwgcGFzcyk7IF91cCgpOyB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gIlVOU1VCU0NSSUJFIiBvcGVyYXRpb24uDQogICAgb2JqLlVuU3Vic2NyaWJlID0gZnVuY3Rpb24gKG5hbWUsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjVW5TdWJzY3JpYmUob2JqLkNvbXBsZXRlTmFtZShuYW1lKSwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmksIHNlbGVjdG9ycyk7IF91cCgpOyB9DQoNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gIkdFVCIgb3BlcmF0aW9uLg0KICAgIG9iai5HZXQgPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7IG9iai53c21hbi5FeGVjR2V0KG9iai5Db21wbGV0ZU5hbWUobmFtZSksIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgeHN0YXR1cykgeyBfdXAoKTsgY2FsbGJhY2sob2JqLCBuYW1lLCByZXNwb25zZSwgeHN0YXR1cywgdGFnKTsgfSwgMCwgcHJpKTsgX3VwKCk7IH0NCg0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiAiUFVUIiBvcGVyYXRpb24uDQogICAgb2JqLlB1dCA9IGZ1bmN0aW9uIChuYW1lLCBwdXRvYmosIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjUHV0KG9iai5Db21wbGV0ZU5hbWUobmFtZSksIHB1dG9iaiwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmksIHNlbGVjdG9ycyk7IF91cCgpOyB9DQoJDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOICJDUkVBVEUiIG9wZXJhdGlvbi4NCiAgICBvYmouQ3JlYXRlID0gZnVuY3Rpb24gKG5hbWUsIHB1dG9iaiwgY2FsbGJhY2ssIHRhZywgcHJpKSB7IG9iai53c21hbi5FeGVjQ3JlYXRlKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIHB1dG9iaiwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmkpOyBfdXAoKTsgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOICJERUxFVEUiIG9wZXJhdGlvbi4NCiAgICBvYmouRGVsZXRlID0gZnVuY3Rpb24gKG5hbWUsIHB1dG9iaiwgY2FsbGJhY2ssIHRhZywgcHJpKSB7IG9iai53c21hbi5FeGVjRGVsZXRlKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIHB1dG9iaiwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcpOyB9LCAwLCBwcmkpOyBfdXAoKTsgfQ0KDQogICAgLy8gUGVyZm9ybSBhIFdTTUFOIG1ldGhvZCBjYWxsIG9wZXJhdGlvbi4NCiAgICBvYmouRXhlYyA9IGZ1bmN0aW9uIChuYW1lLCBtZXRob2QsIGFyZ3MsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjTWV0aG9kKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIG1ldGhvZCwgYXJncywgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF91cCgpOyBjYWxsYmFjayhvYmosIG5hbWUsIG9iai5Db21wbGV0ZUV4ZWNSZXNwb25zZShyZXNwb25zZSksIHhzdGF0dXMsIHRhZyk7IH0sIDAsIHByaSwgc2VsZWN0b3JzKTsgX3VwKCk7IH0NCgkNCiAgICAvLyBQZXJmb3JtIGEgV1NNQU4gbWV0aG9kIGNhbGwgb3BlcmF0aW9uLg0KICAgIG9iai5FeGVjV2l0aFhtbCA9IGZ1bmN0aW9uIChuYW1lLCBtZXRob2QsIGFyZ3MsIGNhbGxiYWNrLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai53c21hbi5FeGVjTWV0aG9kWG1sKG9iai5Db21wbGV0ZU5hbWUobmFtZSksIG1ldGhvZCwgZXhlY0FyZ3VtZW50c1RvWG1sKGFyZ3MpLCBmdW5jdGlvbiAod3MsIHJlc3VyaSwgcmVzcG9uc2UsIHhzdGF0dXMpIHsgX3VwKCk7IGNhbGxiYWNrKG9iaiwgbmFtZSwgb2JqLkNvbXBsZXRlRXhlY1Jlc3BvbnNlKHJlc3BvbnNlKSwgeHN0YXR1cywgdGFnKTsgfSwgMCwgcHJpLCBzZWxlY3RvcnMpOyBfdXAoKTsgfQ0KCQ0KICAgIC8vIFBlcmZvcm0gYSBXU01BTiAiRU5VTUVSQVRFIiBvcGVyYXRpb24uDQogICAgb2JqLkVudW0gPSBmdW5jdGlvbiAobmFtZSwgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIGlmIChvYmouQWN0aXZlRW51bXNDb3VudCA8IG9iai5NYXhBY3RpdmVFbnVtc0NvdW50KSB7DQogICAgICAgICAgICBvYmouQWN0aXZlRW51bXNDb3VudCsrOyBvYmoud3NtYW4uRXhlY0VudW0ob2JqLkNvbXBsZXRlTmFtZShuYW1lKSwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzLCB0YWcwKSB7IF91cCgpOyBfRW51bVN0YXJ0U2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgeHN0YXR1cywgdGFnMCk7IH0sIHRhZywgcHJpKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG9iai5QZW5kaW5nRW51bXMucHVzaChbbmFtZSwgY2FsbGJhY2ssIHRhZywgcHJpXSk7DQogICAgICAgIH0NCiAgICAgICAgX3VwKCk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfRW51bVN0YXJ0U2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgc3RhdHVzLCB0YWcsIHByaSkgew0KICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBjYWxsYmFjayhvYmosIG5hbWUsIG51bGwsIHN0YXR1cywgdGFnKTsgX0VudW1Eb05leHQoMSk7IHJldHVybjsgfQ0KICAgICAgICBpZiAocmVzcG9uc2UgPT0gbnVsbCB8fCByZXNwb25zZS5IZWFkZXJbIk1ldGhvZCJdICE9ICJFbnVtZXJhdGVSZXNwb25zZSIgfHwgIXJlc3BvbnNlLkJvZHlbIkVudW1lcmF0aW9uQ29udGV4dCJdKSB7IGNhbGxiYWNrKG9iaiwgbmFtZSwgbnVsbCwgNjAzLCB0YWcpOyBfRW51bURvTmV4dCgxKTsgcmV0dXJuOyB9DQogICAgICAgIHZhciBlbnVtY3R4ID0gcmVzcG9uc2UuQm9keVsiRW51bWVyYXRpb25Db250ZXh0Il07DQogICAgICAgIG9iai53c21hbi5FeGVjUHVsbChyZXN1cmksIGVudW1jdHgsIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgeHN0YXR1cykgeyBfRW51bUNvbnRpbnVlU2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgW10sIHhzdGF0dXMsIHRhZywgcHJpKTsgfSk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfRW51bUNvbnRpbnVlU2luayhuYW1lLCByZXNwb25zZSwgY2FsbGJhY2ssIHJlc3VyaSwgaXRlbXMsIHN0YXR1cywgdGFnLCBwcmkpIHsNCiAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgY2FsbGJhY2sob2JqLCBuYW1lLCBudWxsLCBzdGF0dXMsIHRhZyk7IF9FbnVtRG9OZXh0KDEpOyByZXR1cm47IH0NCiAgICAgICAgaWYgKHJlc3BvbnNlID09IG51bGwgfHwgcmVzcG9uc2UuSGVhZGVyWyJNZXRob2QiXSAhPSAiUHVsbFJlc3BvbnNlIikgeyBjYWxsYmFjayhvYmosIG5hbWUsIG51bGwsIDYwNCwgdGFnKTsgX0VudW1Eb05leHQoMSk7IHJldHVybjsgfQ0KICAgICAgICBmb3IgKHZhciBpIGluIHJlc3BvbnNlLkJvZHlbIkl0ZW1zIl0pIHsNCiAgICAgICAgICAgIGlmIChyZXNwb25zZS5Cb2R5WyJJdGVtcyJdW2ldIGluc3RhbmNlb2YgQXJyYXkpIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIHJlc3BvbnNlLkJvZHlbIkl0ZW1zIl1baV0pIHsgaWYgKHR5cGVvZiByZXNwb25zZS5Cb2R5WyJJdGVtcyJdW2ldW2pdICE9ICdmdW5jdGlvbicpIHsgaXRlbXMucHVzaChyZXNwb25zZS5Cb2R5WyJJdGVtcyJdW2ldW2pdKTsgfSB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuQm9keVsiSXRlbXMiXVtpXSAhPSAnZnVuY3Rpb24nKSB7IGl0ZW1zLnB1c2gocmVzcG9uc2UuQm9keVsiSXRlbXMiXVtpXSk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAocmVzcG9uc2UuQm9keVsiRW51bWVyYXRpb25Db250ZXh0Il0pIHsNCiAgICAgICAgICAgIHZhciBlbnVtY3R4ID0gcmVzcG9uc2UuQm9keVsiRW51bWVyYXRpb25Db250ZXh0Il07DQogICAgICAgICAgICBvYmoud3NtYW4uRXhlY1B1bGwocmVzdXJpLCBlbnVtY3R4LCBmdW5jdGlvbiAod3MsIHJlc3VyaSwgcmVzcG9uc2UsIHhzdGF0dXMpIHsgX0VudW1Db250aW51ZVNpbmsobmFtZSwgcmVzcG9uc2UsIGNhbGxiYWNrLCByZXN1cmksIGl0ZW1zLCB4c3RhdHVzLCB0YWcsIDEpOyB9KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIF9FbnVtRG9OZXh0KDEpOw0KICAgICAgICAgICAgY2FsbGJhY2sob2JqLCBuYW1lLCBpdGVtcywgc3RhdHVzLCB0YWcpOw0KICAgICAgICAgICAgX3VwKCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIGZ1bmN0aW9uIF9FbnVtRG9OZXh0KGRlYykgew0KICAgICAgICBvYmouQWN0aXZlRW51bXNDb3VudCAtPSBkZWM7DQogICAgICAgIGlmIChvYmouQWN0aXZlRW51bXNDb3VudCA+PSBvYmouTWF4QWN0aXZlRW51bXNDb3VudCB8fCBvYmouUGVuZGluZ0VudW1zLmxlbmd0aCA9PSAwKSB7IF91cCgpOyByZXR1cm47IH0NCiAgICAgICAgdmFyIHggPSBvYmouUGVuZGluZ0VudW1zLnNoaWZ0KCk7DQogICAgICAgIG9iai5FbnVtKHhbMF0sIHhbMV0sIHhbMl0pOw0KICAgICAgICBfRW51bURvTmV4dCgwKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgYmF0Y2ggb2YgV1NNQU4gIkVOVU0iIG9wZXJhdGlvbnMuDQogICAgb2JqLkJhdGNoRW51bSA9IGZ1bmN0aW9uIChiYXRjaG5hbWUsIG5hbWVzLCBjYWxsYmFjaywgdGFnLCBjb250aW51ZU9uRXJyb3IsIHByaSkgew0KICAgICAgICBvYmouUGVuZGluZ0JhdGNoT3BlcmF0aW9ucyArPSAobmFtZXMubGVuZ3RoICogMik7DQogICAgICAgIF9CYXRjaE5leHRFbnVtKGJhdGNobmFtZSwgQ2xvbmUobmFtZXMpLCBjYWxsYmFjaywgdGFnLCB7fSwgY29udGludWVPbkVycm9yLCBwcmkpOyBfdXAoKTsNCiAgICB9DQoNCiAgICAvLyBSZXF1ZXN0IGVhY2ggZW51bSBpbiB0aGUgYmF0Y2gsIHN0b3BwaW5nIGlmIHNvbWV0aGluZyBkb2VzIG5vdCByZXR1cm4gc3RhdHVzIDIwMA0KICAgIGZ1bmN0aW9uIF9CYXRjaE5leHRFbnVtKGJhdGNobmFtZSwgbmFtZXMsIGNhbGxiYWNrLCB0YWcsIHJlc3VsdHMsIGNvbnRpbnVlT25FcnJvciwgcHJpKSB7DQogICAgICAgIG9iai5QZW5kaW5nQmF0Y2hPcGVyYXRpb25zIC09IDI7DQogICAgICAgIHZhciBuID0gbmFtZXMuc2hpZnQoKSwgZiA9IG9iai5FbnVtOw0KICAgICAgICBpZiAoblswXSA9PSAnKicpIHsgZiA9IG9iai5HZXQ7IG4gPSBuLnN1YnN0cmluZygxKTsgfSAvLyBJZiB0aGUgbmFtZSBzdGFydHMgd2l0aCBhIHN0YXIsIGRvIGEgR0VUIGluc3RlYWQgb2YgYW4gRU5VTS4gVGhpcyB3aWxsIHJlZHVjZSByb3VuZCB0cmlwcy4NCiAgICAgICAgLy9jb25zb2xlLmxvZygoZiA9PSBvYmouR2V0PydHZXQgJzonRW51bSAnKSArIG4pOw0KICAgICAgICAvLyBQZXJmb3JtIGEgR0VUL0VOVU0gYWN0aW9uDQogICAgICAgIGYobiwgZnVuY3Rpb24gKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cywgdGFnMCkgew0KICAgICAgICAgICAgdGFnMFsyXVtuYW1lXSA9IHsgcmVzcG9uc2U6IChyZXNwb25zZXM9PW51bGw/bnVsbDpyZXNwb25zZXMuQm9keSksIHJlc3BvbnNlczogcmVzcG9uc2VzLCBzdGF0dXM6IHN0YXR1cyB9Ow0KICAgICAgICAgICAgaWYgKHRhZzBbMV0ubGVuZ3RoID09IDAgfHwgc3RhdHVzID09IDQwMSB8fCAoY29udGludWVPbkVycm9yICE9IHRydWUgJiYgc3RhdHVzICE9IDIwMCAmJiBzdGF0dXMgIT0gNDAwKSkgeyBvYmouUGVuZGluZ0JhdGNoT3BlcmF0aW9ucyAtPSAobmFtZXMubGVuZ3RoICogMik7IF91cCgpOyBjYWxsYmFjayhvYmosIGJhdGNobmFtZSwgdGFnMFsyXSwgc3RhdHVzLCB0YWcpOyB9DQogICAgICAgICAgICBlbHNlIHsgX3VwKCk7IF9CYXRjaE5leHRFbnVtKGJhdGNobmFtZSwgbmFtZXMsIGNhbGxiYWNrLCB0YWcsIHRhZzBbMl0sIHByaSk7IH0NCiAgICAgICAgfSwgW2JhdGNobmFtZSwgbmFtZXMsIHJlc3VsdHNdLCBwcmkpOw0KICAgICAgICBfdXAoKTsNCiAgICB9DQoNCiAgICAvLyBQZXJmb3JtIGEgYmF0Y2ggb2YgV1NNQU4gIkdFVCIgb3BlcmF0aW9ucy4NCiAgICBvYmouQmF0Y2hHZXQgPSBmdW5jdGlvbiAoYmF0Y2huYW1lLCBuYW1lcywgY2FsbGJhY2ssIHRhZywgcHJpKSB7DQogICAgICAgIF9GZXRjaE5leHQoeyBuYW1lOiBiYXRjaG5hbWUsIG5hbWVzOiBuYW1lcywgY2FsbGJhY2s6IGNhbGxiYWNrLCBjdXJyZW50OiAwLCByZXNwb25zZXM6IHt9LCB0YWc6IHRhZywgcHJpOiBwcmkgfSk7IF91cCgpOw0KICAgIH0NCg0KICAgIC8vIFByaXZhdGUgbWV0aG9kDQogICAgZnVuY3Rpb24gX0ZldGNoTmV4dChiYXRjaCkgew0KICAgICAgICBpZiAoYmF0Y2gubmFtZXMubGVuZ3RoIDw9IGJhdGNoLmN1cnJlbnQpIHsNCiAgICAgICAgICAgIGJhdGNoLmNhbGxiYWNrKG9iaiwgYmF0Y2gubmFtZSwgYmF0Y2gucmVzcG9uc2VzLCAyMDAsIGJhdGNoLnRhZyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBvYmoud3NtYW4uRXhlY0dldChvYmouQ29tcGxldGVOYW1lKGJhdGNoLm5hbWVzW2JhdGNoLmN1cnJlbnRdKSwgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCB4c3RhdHVzKSB7IF9GZXRjaGVkKGJhdGNoLCByZXNwb25zZSwgeHN0YXR1cyk7IH0sIGJhdGNoLnByaSk7DQogICAgICAgICAgICBiYXRjaC5jdXJyZW50Kys7DQogICAgICAgIH0NCiAgICAgICAgX3VwKCk7DQogICAgfQ0KDQogICAgLy8gUHJpdmF0ZSBtZXRob2QNCiAgICBmdW5jdGlvbiBfRmV0Y2hlZChiYXRjaCwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICBpZiAocmVzcG9uc2UgPT0gbnVsbCB8fCBzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICBiYXRjaC5jYWxsYmFjayhvYmosIGJhdGNoLm5hbWUsIG51bGwsIHN0YXR1cywgYmF0Y2gudGFnKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGJhdGNoLnJlc3BvbnNlc1tyZXNwb25zZS5IZWFkZXJbIk1ldGhvZCJdXSA9IHJlc3BvbnNlOw0KICAgICAgICAgICAgX0ZldGNoTmV4dChiYXRjaCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvLyBQcml2YXRlIG1ldGhvZA0KICAgIG9iai5Db21wbGV0ZU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7DQogICAgICAgIGlmIChuYW1lLmluZGV4T2YoIkFNVF8iKSA9PSAwKSByZXR1cm4gb2JqLnBmeFswXSArIG5hbWU7DQogICAgICAgIGlmIChuYW1lLmluZGV4T2YoIkNJTV8iKSA9PSAwKSByZXR1cm4gb2JqLnBmeFsxXSArIG5hbWU7DQogICAgICAgIGlmIChuYW1lLmluZGV4T2YoIklQU18iKSA9PSAwKSByZXR1cm4gb2JqLnBmeFsyXSArIG5hbWU7DQogICAgfQ0KDQogICAgb2JqLkNvbXBsZXRlRXhlY1Jlc3BvbnNlID0gZnVuY3Rpb24gKHJlc3ApIHsNCiAgICAgICAgaWYgKHJlc3AgJiYgcmVzcCAhPSBudWxsICYmIHJlc3AuQm9keSAmJiAocmVzcC5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9IHVuZGVmaW5lZCkpIHsgcmVzcC5Cb2R5LlJldHVyblZhbHVlU3RyID0gb2JqLkFtdFN0YXR1c1RvU3RyKHJlc3AuQm9keVsiUmV0dXJuVmFsdWUiXSk7IH0NCiAgICAgICAgcmV0dXJuIHJlc3A7DQogICAgfQ0KDQogICAgb2JqLlJlcXVlc3RQb3dlclN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFBvd2VyU3RhdGUsIGNhbGxiYWNrX2Z1bmMpIHsNCiAgICAgICAgb2JqLkNJTV9Qb3dlck1hbmFnZW1lbnRTZXJ2aWNlX1JlcXVlc3RQb3dlclN0YXRlQ2hhbmdlKFBvd2VyU3RhdGUsICI8QWRkcmVzcyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZzwvQWRkcmVzcz48UmVmZXJlbmNlUGFyYW1ldGVycyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZ1wiPjxSZXNvdXJjZVVSSSB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2RcIj5odHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9Db21wdXRlclN5c3RlbTwvUmVzb3VyY2VVUkk+PFNlbGVjdG9yU2V0IHhtbG5zPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZFwiPjxTZWxlY3RvciBOYW1lPVwiQ3JlYXRpb25DbGFzc05hbWVcIj5DSU1fQ29tcHV0ZXJTeXN0ZW08L1NlbGVjdG9yPjxTZWxlY3RvciBOYW1lPVwiTmFtZVwiPk1hbmFnZWRTeXN0ZW08L1NlbGVjdG9yPjwvU2VsZWN0b3JTZXQ+PC9SZWZlcmVuY2VQYXJhbWV0ZXJzPiIsIG51bGwsIG51bGwsIGNhbGxiYWNrX2Z1bmMpOw0KICAgIH0NCg0KICAgIG9iai5TZXRCb290Q29uZmlnUm9sZSA9IGZ1bmN0aW9uIChSb2xlLCBjYWxsYmFja19mdW5jKSB7DQogICAgICAgIG9iai5DSU1fQm9vdFNlcnZpY2VfU2V0Qm9vdENvbmZpZ1JvbGUoIjxBZGRyZXNzIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nPC9BZGRyZXNzPjxSZWZlcmVuY2VQYXJhbWV0ZXJzIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nXCI+PFJlc291cmNlVVJJIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZFwiPmh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NjaW0vMS9jaW0tc2NoZW1hLzIvQ0lNX0Jvb3RDb25maWdTZXR0aW5nPC9SZXNvdXJjZVVSST48U2VsZWN0b3JTZXQgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkXCI+PFNlbGVjdG9yIE5hbWU9XCJJbnN0YW5jZUlEXCI+SW50ZWwocikgQU1UOiBCb290IENvbmZpZ3VyYXRpb24gMDwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+IiwgUm9sZSwgY2FsbGJhY2tfZnVuYyk7DQogICAgfQ0KDQogICAgLy8gQ2FuY2VsIGFsbCBwZW5kaW5nIHF1ZXJpZXMgd2l0aCBnaXZlbiBzdGF0dXMNCiAgICBvYmouQ2FuY2VsQWxsUXVlcmllcyA9IGZ1bmN0aW9uIChzKSB7DQogICAgICAgIG9iai53c21hbi5DYW5jZWxBbGxRdWVyaWVzKHMpOw0KICAgIH0NCg0KICAgIC8vIEF1dG8gZ2VuZXJhdGVkIG1ldGhvZHMNCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ19SZWdpc3RlckFnZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2ciLCAiUmVnaXN0ZXJBZ2VudCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nX0Fzc2VydFByZXNlbmNlID0gZnVuY3Rpb24gKFNlcXVlbmNlTnVtYmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nIiwgIkFzc2VydFByZXNlbmNlIiwgeyAiU2VxdWVuY2VOdW1iZXIiOiBTZXF1ZW5jZU51bWJlciB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nX0Fzc2VydFNodXRkb3duID0gZnVuY3Rpb24gKFNlcXVlbmNlTnVtYmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nIiwgIkFzc2VydFNodXRkb3duIiwgeyAiU2VxdWVuY2VOdW1iZXIiOiBTZXF1ZW5jZU51bWJlciB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nX0FkZEFjdGlvbiA9IGZ1bmN0aW9uIChPbGRTdGF0ZSwgTmV3U3RhdGUsIEV2ZW50T25UcmFuc2l0aW9uLCBBY3Rpb25TZCwgQWN0aW9uRWFjLCBjYWxsYmFja19mdW5jLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nIiwgIkFkZEFjdGlvbiIsIHsgIk9sZFN0YXRlIjogT2xkU3RhdGUsICJOZXdTdGF0ZSI6IE5ld1N0YXRlLCAiRXZlbnRPblRyYW5zaXRpb24iOiBFdmVudE9uVHJhbnNpdGlvbiwgIkFjdGlvblNkIjogQWN0aW9uU2QsICJBY3Rpb25FYWMiOiBBY3Rpb25FYWMgfSwgY2FsbGJhY2tfZnVuYywgdGFnLCBwcmksIHNlbGVjdG9ycyk7IH0NCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ19EZWxldGVBbGxBY3Rpb25zID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMsIHRhZywgcHJpLCBzZWxlY3RvcnMpIHsgb2JqLkV4ZWMoIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2ciLCAiRGVsZXRlQWxsQWN0aW9ucyIsIHt9LCBjYWxsYmFja19mdW5jLCB0YWcsIHByaSwgc2VsZWN0b3JzKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nQWN0aW9uX0dldEFjdGlvbkVhYyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nQWN0aW9uIiwgIkdldEFjdGlvbkVhYyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkFfUmVnaXN0ZXJBZ2VudCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkEiLCAiUmVnaXN0ZXJBZ2VudCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkFfQXNzZXJ0UHJlc2VuY2UgPSBmdW5jdGlvbiAoU2VxdWVuY2VOdW1iZXIsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2dWQSIsICJBc3NlcnRQcmVzZW5jZSIsIHsgIlNlcXVlbmNlTnVtYmVyIjogU2VxdWVuY2VOdW1iZXIgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBX0Fzc2VydFNodXRkb3duID0gZnVuY3Rpb24gKFNlcXVlbmNlTnVtYmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nVkEiLCAiQXNzZXJ0U2h1dGRvd24iLCB7ICJTZXF1ZW5jZU51bWJlciI6IFNlcXVlbmNlTnVtYmVyIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2dWQV9BZGRBY3Rpb24gPSBmdW5jdGlvbiAoT2xkU3RhdGUsIE5ld1N0YXRlLCBFdmVudE9uVHJhbnNpdGlvbiwgQWN0aW9uU2QsIEFjdGlvbkVhYywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBIiwgIkFkZEFjdGlvbiIsIHsgIk9sZFN0YXRlIjogT2xkU3RhdGUsICJOZXdTdGF0ZSI6IE5ld1N0YXRlLCAiRXZlbnRPblRyYW5zaXRpb24iOiBFdmVudE9uVHJhbnNpdGlvbiwgIkFjdGlvblNkIjogQWN0aW9uU2QsICJBY3Rpb25FYWMiOiBBY3Rpb25FYWMgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBX0RlbGV0ZUFsbEFjdGlvbnMgPSBmdW5jdGlvbiAoX21ldGhvZF9kdW1teSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ1ZBIiwgIkRlbGV0ZUFsbEFjdGlvbnMiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQXVkaXRMb2dfQ2xlYXJMb2cgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1ZGl0TG9nIiwgIkNsZWFyTG9nIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdExvZ19SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1ZGl0TG9nX1JlYWRSZWNvcmRzID0gZnVuY3Rpb24gKFN0YXJ0SW5kZXgsIGNhbGxiYWNrX2Z1bmMsIHRhZykgeyBvYmouRXhlYygiQU1UX0F1ZGl0TG9nIiwgIlJlYWRSZWNvcmRzIiwgeyAiU3RhcnRJbmRleCI6IFN0YXJ0SW5kZXggfSwgY2FsbGJhY2tfZnVuYywgdGFnKTsgfQ0KICAgIG9iai5BTVRfQXVkaXRMb2dfU2V0QXVkaXRMb2NrID0gZnVuY3Rpb24gKExvY2tUaW1lb3V0SW5TZWNvbmRzLCBGbGFnLCBIYW5kbGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJTZXRBdWRpdExvY2siLCB7ICJMb2NrVGltZW91dEluU2Vjb25kcyI6IExvY2tUaW1lb3V0SW5TZWNvbmRzLCAiRmxhZyI6IEZsYWcsICJIYW5kbGUiOiBIYW5kbGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1ZGl0TG9nX0V4cG9ydEF1ZGl0TG9nU2lnbmF0dXJlID0gZnVuY3Rpb24gKFNpZ25pbmdNZWNoYW5pc20sIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJFeHBvcnRBdWRpdExvZ1NpZ25hdHVyZSIsIHsgIlNpZ25pbmdNZWNoYW5pc20iOiBTaWduaW5nTWVjaGFuaXNtIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdExvZ19TZXRTaWduaW5nS2V5TWF0ZXJpYWwgPSBmdW5jdGlvbiAoU2lnbmluZ01lY2hhbmlzbVR5cGUsIFNpZ25pbmdLZXksIExlbmd0aE9mQ2VydGlmaWNhdGVzLCBDZXJ0aWZpY2F0ZXMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdExvZyIsICJTZXRTaWduaW5nS2V5TWF0ZXJpYWwiLCB7ICJTaWduaW5nTWVjaGFuaXNtVHlwZSI6IFNpZ25pbmdNZWNoYW5pc21UeXBlLCAiU2lnbmluZ0tleSI6IFNpZ25pbmdLZXksICJMZW5ndGhPZkNlcnRpZmljYXRlcyI6IExlbmd0aE9mQ2VydGlmaWNhdGVzLCAiQ2VydGlmaWNhdGVzIjogQ2VydGlmaWNhdGVzIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdFBvbGljeVJ1bGVfU2V0QXVkaXRQb2xpY3kgPSBmdW5jdGlvbiAoRW5hYmxlLCBBdWRpdGVkQXBwSUQsIEV2ZW50SUQsIFBvbGljeVR5cGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdWRpdFBvbGljeVJ1bGUiLCAiU2V0QXVkaXRQb2xpY3kiLCB7ICJFbmFibGUiOiBFbmFibGUsICJBdWRpdGVkQXBwSUQiOiBBdWRpdGVkQXBwSUQsICJFdmVudElEIjogRXZlbnRJRCwgIlBvbGljeVR5cGUiOiBQb2xpY3lUeXBlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdWRpdFBvbGljeVJ1bGVfU2V0QXVkaXRQb2xpY3lCdWxrID0gZnVuY3Rpb24gKEVuYWJsZSwgQXVkaXRlZEFwcElELCBFdmVudElELCBQb2xpY3lUeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfQXVkaXRQb2xpY3lSdWxlIiwgIlNldEF1ZGl0UG9saWN5QnVsayIsIHsgIkVuYWJsZSI6IEVuYWJsZSwgIkF1ZGl0ZWRBcHBJRCI6IEF1ZGl0ZWRBcHBJRCwgIkV2ZW50SUQiOiBFdmVudElELCAiUG9saWN5VHlwZSI6IFBvbGljeVR5cGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX0FkZFVzZXJBY2xFbnRyeUV4ID0gZnVuY3Rpb24gKERpZ2VzdFVzZXJuYW1lLCBEaWdlc3RQYXNzd29yZCwgS2VyYmVyb3NVc2VyU2lkLCBBY2Nlc3NQZXJtaXNzaW9uLCBSZWFsbXMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJBZGRVc2VyQWNsRW50cnlFeCIsIHsgIkRpZ2VzdFVzZXJuYW1lIjogRGlnZXN0VXNlcm5hbWUsICJEaWdlc3RQYXNzd29yZCI6IERpZ2VzdFBhc3N3b3JkLCAiS2VyYmVyb3NVc2VyU2lkIjogS2VyYmVyb3NVc2VyU2lkLCAiQWNjZXNzUGVybWlzc2lvbiI6IEFjY2Vzc1Blcm1pc3Npb24sICJSZWFsbXMiOiBSZWFsbXMgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX0VudW1lcmF0ZVVzZXJBY2xFbnRyaWVzID0gZnVuY3Rpb24gKFN0YXJ0SW5kZXgsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJFbnVtZXJhdGVVc2VyQWNsRW50cmllcyIsIHsgIlN0YXJ0SW5kZXgiOiBTdGFydEluZGV4IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRVc2VyQWNsRW50cnlFeCA9IGZ1bmN0aW9uIChIYW5kbGUsIGNhbGxiYWNrX2Z1bmMsIHRhZykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIkdldFVzZXJBY2xFbnRyeUV4IiwgeyAiSGFuZGxlIjogSGFuZGxlIH0sIGNhbGxiYWNrX2Z1bmMsIHRhZyk7IH0NCiAgICBvYmouQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1VwZGF0ZVVzZXJBY2xFbnRyeUV4ID0gZnVuY3Rpb24gKEhhbmRsZSwgRGlnZXN0VXNlcm5hbWUsIERpZ2VzdFBhc3N3b3JkLCBLZXJiZXJvc1VzZXJTaWQsIEFjY2Vzc1Blcm1pc3Npb24sIFJlYWxtcywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIlVwZGF0ZVVzZXJBY2xFbnRyeUV4IiwgeyAiSGFuZGxlIjogSGFuZGxlLCAiRGlnZXN0VXNlcm5hbWUiOiBEaWdlc3RVc2VybmFtZSwgIkRpZ2VzdFBhc3N3b3JkIjogRGlnZXN0UGFzc3dvcmQsICJLZXJiZXJvc1VzZXJTaWQiOiBLZXJiZXJvc1VzZXJTaWQsICJBY2Nlc3NQZXJtaXNzaW9uIjogQWNjZXNzUGVybWlzc2lvbiwgIlJlYWxtcyI6IFJlYWxtcyB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfUmVtb3ZlVXNlckFjbEVudHJ5ID0gZnVuY3Rpb24gKEhhbmRsZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIlJlbW92ZVVzZXJBY2xFbnRyeSIsIHsgIkhhbmRsZSI6IEhhbmRsZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfU2V0QWRtaW5BY2xFbnRyeUV4ID0gZnVuY3Rpb24gKFVzZXJuYW1lLCBEaWdlc3RQYXNzd29yZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlIiwgIlNldEFkbWluQWNsRW50cnlFeCIsIHsgIlVzZXJuYW1lIjogVXNlcm5hbWUsICJEaWdlc3RQYXNzd29yZCI6IERpZ2VzdFBhc3N3b3JkIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBZG1pbkFjbEVudHJ5ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBZG1pbkFjbEVudHJ5Iiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBZG1pbkFjbEVudHJ5U3RhdHVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBZG1pbkFjbEVudHJ5U3RhdHVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBZG1pbk5ldEFjbEVudHJ5U3RhdHVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBZG1pbk5ldEFjbEVudHJ5U3RhdHVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9TZXRBY2xFbmFibGVkU3RhdGUgPSBmdW5jdGlvbiAoSGFuZGxlLCBFbmFibGVkLCBjYWxsYmFja19mdW5jLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJTZXRBY2xFbmFibGVkU3RhdGUiLCB7ICJIYW5kbGUiOiBIYW5kbGUsICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jLCB0YWcpOyB9DQogICAgb2JqLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9HZXRBY2xFbmFibGVkU3RhdGUgPSBmdW5jdGlvbiAoSGFuZGxlLCBjYWxsYmFja19mdW5jLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9BdXRob3JpemF0aW9uU2VydmljZSIsICJHZXRBY2xFbmFibGVkU3RhdGUiLCB7ICJIYW5kbGUiOiBIYW5kbGUgfSwgY2FsbGJhY2tfZnVuYywgdGFnKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9FbmRwb2ludEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9HZXRQb3N0dXJlID0gZnVuY3Rpb24gKFBvc3R1cmVUeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZSIsICJHZXRQb3N0dXJlIiwgeyAiUG9zdHVyZVR5cGUiOiBQb3N0dXJlVHlwZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9HZXRQb3N0dXJlSGFzaCA9IGZ1bmN0aW9uIChQb3N0dXJlVHlwZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0VuZHBvaW50QWNjZXNzQ29udHJvbFNlcnZpY2UiLCAiR2V0UG9zdHVyZUhhc2giLCB7ICJQb3N0dXJlVHlwZSI6IFBvc3R1cmVUeXBlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9FbmRwb2ludEFjY2Vzc0NvbnRyb2xTZXJ2aWNlX1VwZGF0ZVBvc3R1cmVTdGF0ZSA9IGZ1bmN0aW9uIChVcGRhdGVUeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZSIsICJVcGRhdGVQb3N0dXJlU3RhdGUiLCB7ICJVcGRhdGVUeXBlIjogVXBkYXRlVHlwZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZV9HZXRFYWNPcHRpb25zID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9FbmRwb2ludEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIiwgIkdldEVhY09wdGlvbnMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0VuZHBvaW50QWNjZXNzQ29udHJvbFNlcnZpY2VfU2V0RWFjT3B0aW9ucyA9IGZ1bmN0aW9uIChFYWNWZW5kb3JzLCBQb3N0dXJlSGFzaEFsZ29yaXRobSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0VuZHBvaW50QWNjZXNzQ29udHJvbFNlcnZpY2UiLCAiU2V0RWFjT3B0aW9ucyIsIHsgIkVhY1ZlbmRvcnMiOiBFYWNWZW5kb3JzLCAiUG9zdHVyZUhhc2hBbGdvcml0aG0iOiBQb3N0dXJlSGFzaEFsZ29yaXRobSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YV9TZXRTeXN0ZW1EZWZlbnNlUG9saWN5ID0gZnVuY3Rpb24gKFBvbGljeSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEiLCAiU2V0U3lzdGVtRGVmZW5zZVBvbGljeSIsIHsgIlBvbGljeSI6IFBvbGljeSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YV9FbmFibGVWcG5Sb3V0aW5nID0gZnVuY3Rpb24gKEVuYWJsZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEiLCAiRW5hYmxlVnBuUm91dGluZyIsIHsgIkVuYWJsZSI6IEVuYWJsZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfRXRoZXJuZXRQb3J0U2V0dGluZ3NfU2V0TGlua1ByZWZlcmVuY2UgPSBmdW5jdGlvbiAoTGlua1ByZWZlcmVuY2UsIFRpbWVvdXQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyIsICJTZXRMaW5rUHJlZmVyZW5jZSIsIHsgIkxpbmtQcmVmZXJlbmNlIjogTGlua1ByZWZlcmVuY2UsICJUaW1lb3V0IjogVGltZW91dCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfSGV1cmlzdGljUGFja2V0RmlsdGVyU3RhdGlzdGljc19SZXNldFNlbGVjdGVkU3RhdHMgPSBmdW5jdGlvbiAoU2VsZWN0ZWRTdGF0aXN0aWNzLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfSGV1cmlzdGljUGFja2V0RmlsdGVyU3RhdGlzdGljcyIsICJSZXNldFNlbGVjdGVkU3RhdHMiLCB7ICJTZWxlY3RlZFN0YXRpc3RpY3MiOiBTZWxlY3RlZFN0YXRpc3RpY3MgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0tlcmJlcm9zU2V0dGluZ0RhdGFfR2V0Q3JlZGVudGlhbENhY2hlU3RhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX0tlcmJlcm9zU2V0dGluZ0RhdGEiLCAiR2V0Q3JlZGVudGlhbENhY2hlU3RhdGUiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX0tlcmJlcm9zU2V0dGluZ0RhdGFfU2V0Q3JlZGVudGlhbENhY2hlU3RhdGUgPSBmdW5jdGlvbiAoRW5hYmxlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfS2VyYmVyb3NTZXR0aW5nRGF0YSIsICJTZXRDcmVkZW50aWFsQ2FjaGVTdGF0ZSIsIHsgIkVuYWJsZSI6IEVuYWJsZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfTWVzc2FnZUxvZ19DYW5jZWxJdGVyYXRpb24gPSBmdW5jdGlvbiAoSXRlcmF0aW9uSWRlbnRpZmllciwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiQ2FuY2VsSXRlcmF0aW9uIiwgeyAiSXRlcmF0aW9uSWRlbnRpZmllciI6IEl0ZXJhdGlvbklkZW50aWZpZXIgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX01lc3NhZ2VMb2dfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfTWVzc2FnZUxvZyIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX01lc3NhZ2VMb2dfQ2xlYXJMb2cgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiQ2xlYXJMb2ciLCB7IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9NZXNzYWdlTG9nX0dldFJlY29yZHMgPSBmdW5jdGlvbiAoSXRlcmF0aW9uSWRlbnRpZmllciwgTWF4UmVhZFJlY29yZHMsIGNhbGxiYWNrX2Z1bmMsIHRhZykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiR2V0UmVjb3JkcyIsIHsgIkl0ZXJhdGlvbklkZW50aWZpZXIiOiBJdGVyYXRpb25JZGVudGlmaWVyLCAiTWF4UmVhZFJlY29yZHMiOiBNYXhSZWFkUmVjb3JkcyB9LCBjYWxsYmFja19mdW5jLCB0YWcpOyB9DQogICAgb2JqLkFNVF9NZXNzYWdlTG9nX0dldFJlY29yZCA9IGZ1bmN0aW9uIChJdGVyYXRpb25JZGVudGlmaWVyLCBQb3NpdGlvblRvTmV4dCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX01lc3NhZ2VMb2ciLCAiR2V0UmVjb3JkIiwgeyAiSXRlcmF0aW9uSWRlbnRpZmllciI6IEl0ZXJhdGlvbklkZW50aWZpZXIsICJQb3NpdGlvblRvTmV4dCI6IFBvc2l0aW9uVG9OZXh0IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9NZXNzYWdlTG9nX1Bvc2l0aW9uQXRSZWNvcmQgPSBmdW5jdGlvbiAoSXRlcmF0aW9uSWRlbnRpZmllciwgTW92ZUFic29sdXRlLCBSZWNvcmROdW1iZXIsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9NZXNzYWdlTG9nIiwgIlBvc2l0aW9uQXRSZWNvcmQiLCB7ICJJdGVyYXRpb25JZGVudGlmaWVyIjogSXRlcmF0aW9uSWRlbnRpZmllciwgIk1vdmVBYnNvbHV0ZSI6IE1vdmVBYnNvbHV0ZSwgIlJlY29yZE51bWJlciI6IFJlY29yZE51bWJlciB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfTWVzc2FnZUxvZ19Qb3NpdGlvblRvRmlyc3RSZWNvcmQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYywgdGFnKSB7IG9iai5FeGVjKCJBTVRfTWVzc2FnZUxvZyIsICJQb3NpdGlvblRvRmlyc3RSZWNvcmQiLCB7fSwgY2FsbGJhY2tfZnVuYywgdGFnKTsgfQ0KICAgIG9iai5BTVRfTWVzc2FnZUxvZ19GcmVlemVMb2cgPSBmdW5jdGlvbiAoRnJlZXplLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfTWVzc2FnZUxvZyIsICJGcmVlemVMb2ciLCB7ICJGcmVlemUiOiBGcmVlemUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0FkZENSTCA9IGZ1bmN0aW9uIChVcmwsIFNlcmlhbE51bWJlcnMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJBZGRDUkwiLCB7ICJVcmwiOiBVcmwsICJTZXJpYWxOdW1iZXJzIjogU2VyaWFsTnVtYmVycyB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfUmVzZXRDUkxMaXN0ID0gZnVuY3Rpb24gKF9tZXRob2RfZHVtbXksIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJSZXNldENSTExpc3QiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkQ2VydGlmaWNhdGUgPSBmdW5jdGlvbiAoQ2VydGlmaWNhdGVCbG9iLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UiLCAiQWRkQ2VydGlmaWNhdGUiLCB7ICJDZXJ0aWZpY2F0ZUJsb2IiOiBDZXJ0aWZpY2F0ZUJsb2IgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0FkZFRydXN0ZWRSb290Q2VydGlmaWNhdGUgPSBmdW5jdGlvbiAoQ2VydGlmaWNhdGVCbG9iLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UiLCAiQWRkVHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSIsIHsgIkNlcnRpZmljYXRlQmxvYiI6IENlcnRpZmljYXRlQmxvYiB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkS2V5ID0gZnVuY3Rpb24gKEtleUJsb2IsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJBZGRLZXkiLCB7ICJLZXlCbG9iIjogS2V5QmxvYiB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfR2VuZXJhdGVQS0NTMTBSZXF1ZXN0ID0gZnVuY3Rpb24gKEtleVBhaXIsIEROTmFtZSwgVXNhZ2UsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJHZW5lcmF0ZVBLQ1MxMFJlcXVlc3QiLCB7ICJLZXlQYWlyIjogS2V5UGFpciwgIkROTmFtZSI6IEROTmFtZSwgIlVzYWdlIjogVXNhZ2UgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0dlbmVyYXRlUEtDUzEwUmVxdWVzdEV4ID0gZnVuY3Rpb24gKEtleVBhaXIsIFNpZ25pbmdBbGdvcml0aG0sIE51bGxTaWduZWRDZXJ0aWZpY2F0ZVJlcXVlc3QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZSIsICJHZW5lcmF0ZVBLQ1MxMFJlcXVlc3RFeCIsIHsgIktleVBhaXIiOiBLZXlQYWlyLCAiU2lnbmluZ0FsZ29yaXRobSI6IFNpZ25pbmdBbGdvcml0aG0sICJOdWxsU2lnbmVkQ2VydGlmaWNhdGVSZXF1ZXN0IjogTnVsbFNpZ25lZENlcnRpZmljYXRlUmVxdWVzdCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfR2VuZXJhdGVLZXlQYWlyID0gZnVuY3Rpb24gKEtleUFsZ29yaXRobSwgS2V5TGVuZ3RoLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UiLCAiR2VuZXJhdGVLZXlQYWlyIiwgeyAiS2V5QWxnb3JpdGhtIjogS2V5QWxnb3JpdGhtLCAiS2V5TGVuZ3RoIjogS2V5TGVuZ3RoIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9SZWRpcmVjdGlvblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1JlZGlyZWN0aW9uU2VydmljZV9UZXJtaW5hdGVTZXNzaW9uID0gZnVuY3Rpb24gKFNlc3Npb25UeXBlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlIiwgIlRlcm1pbmF0ZVNlc3Npb24iLCB7ICJTZXNzaW9uVHlwZSI6IFNlc3Npb25UeXBlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9SZW1vdGVBY2Nlc3NTZXJ2aWNlX0FkZE1wU2VydmVyID0gZnVuY3Rpb24gKEFjY2Vzc0luZm8sIEluZm9Gb3JtYXQsIFBvcnQsIEF1dGhNZXRob2QsIENlcnRpZmljYXRlLCBVc2VybmFtZSwgUGFzc3dvcmQsIENOLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVtb3RlQWNjZXNzU2VydmljZSIsICJBZGRNcFNlcnZlciIsIHsgIkFjY2Vzc0luZm8iOiBBY2Nlc3NJbmZvLCAiSW5mb0Zvcm1hdCI6IEluZm9Gb3JtYXQsICJQb3J0IjogUG9ydCwgIkF1dGhNZXRob2QiOiBBdXRoTWV0aG9kLCAiQ2VydGlmaWNhdGUiOiBDZXJ0aWZpY2F0ZSwgIlVzZXJuYW1lIjogVXNlcm5hbWUsICJQYXNzd29yZCI6IFBhc3N3b3JkLCAiQ04iOiBDTiB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfUmVtb3RlQWNjZXNzU2VydmljZV9BZGRSZW1vdGVBY2Nlc3NQb2xpY3lSdWxlID0gZnVuY3Rpb24gKFRyaWdnZXIsIFR1bm5lbExpZmVUaW1lLCBFeHRlbmRlZERhdGEsIE1wU2VydmVyLCBJbnRlcm5hbE1wU2VydmVyLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVtb3RlQWNjZXNzU2VydmljZSIsICJBZGRSZW1vdGVBY2Nlc3NQb2xpY3lSdWxlIiwgeyAiVHJpZ2dlciI6IFRyaWdnZXIsICJUdW5uZWxMaWZlVGltZSI6IFR1bm5lbExpZmVUaW1lLCAiRXh0ZW5kZWREYXRhIjogRXh0ZW5kZWREYXRhLCAiTXBTZXJ2ZXIiOiBNcFNlcnZlciwgIkludGVybmFsTXBTZXJ2ZXIiOiBJbnRlcm5hbE1wU2VydmVyIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9SZW1vdGVBY2Nlc3NTZXJ2aWNlX0Nsb3NlUmVtb3RlQWNjZXNzQ29ubmVjdGlvbiA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfUmVtb3RlQWNjZXNzU2VydmljZSIsICJDbG9zZVJlbW90ZUFjY2Vzc0Nvbm5lY3Rpb24iLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9Db21taXRDaGFuZ2VzID0gZnVuY3Rpb24gKF9tZXRob2RfZHVtbXksIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIkNvbW1pdENoYW5nZXMiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9VbnByb3Zpc2lvbiA9IGZ1bmN0aW9uIChQcm92aXNpb25pbmdNb2RlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJVbnByb3Zpc2lvbiIsIHsgIlByb3Zpc2lvbmluZ01vZGUiOiBQcm92aXNpb25pbmdNb2RlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlX1BhcnRpYWxVbnByb3Zpc2lvbiA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJQYXJ0aWFsVW5wcm92aXNpb24iLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9SZXNldEZsYXNoV2Vhck91dFByb3RlY3Rpb24gPSBmdW5jdGlvbiAoX21ldGhvZF9kdW1teSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2UiLCAiUmVzZXRGbGFzaFdlYXJPdXRQcm90ZWN0aW9uIiwgeyAiX21ldGhvZF9kdW1teSI6IF9tZXRob2RfZHVtbXkgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2VfRXh0ZW5kUHJvdmlzaW9uaW5nUGVyaW9kID0gZnVuY3Rpb24gKER1cmF0aW9uLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJFeHRlbmRQcm92aXNpb25pbmdQZXJpb2QiLCB7ICJEdXJhdGlvbiI6IER1cmF0aW9uIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlX1NldE1FQnhQYXNzd29yZCA9IGZ1bmN0aW9uIChQYXNzd29yZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2UiLCAiU2V0TUVCeFBhc3N3b3JkIiwgeyAiUGFzc3dvcmQiOiBQYXNzd29yZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9TZXRUTFNQU0sgPSBmdW5jdGlvbiAoUElELCBQUFMsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIlNldFRMU1BTSyIsIHsgIlBJRCI6IFBJRCwgIlBQUyI6IFBQUyB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9HZXRQcm92aXNpb25pbmdBdWRpdFJlY29yZCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJHZXRQcm92aXNpb25pbmdBdWRpdFJlY29yZCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9HZXRVdWlkID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIkdldFV1aWQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2VfR2V0VW5wcm92aXNpb25CbG9ja2luZ0NvbXBvbmVudHMgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2UiLCAiR2V0VW5wcm92aXNpb25CbG9ja2luZ0NvbXBvbmVudHMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1NldHVwQW5kQ29uZmlndXJhdGlvblNlcnZpY2VfR2V0UHJvdmlzaW9uaW5nQXVkaXRSZWNvcmRWMiA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIsICJHZXRQcm92aXNpb25pbmdBdWRpdFJlY29yZFYyIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5X0dldFRpbWVvdXQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1N5c3RlbURlZmVuc2VQb2xpY3kiLCAiR2V0VGltZW91dCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU3lzdGVtRGVmZW5zZVBvbGljeV9TZXRUaW1lb3V0ID0gZnVuY3Rpb24gKFRpbWVvdXQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5IiwgIlNldFRpbWVvdXQiLCB7ICJUaW1lb3V0IjogVGltZW91dCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfU3lzdGVtRGVmZW5zZVBvbGljeV9VcGRhdGVTdGF0aXN0aWNzID0gZnVuY3Rpb24gKE5ldHdvcmtJbnRlcmZhY2UsIFJlc2V0T25SZWFkLCBjYWxsYmFja19mdW5jLCB0YWcsIHByaSwgc2VsZWN0b3JzKSB7IG9iai5FeGVjKCJBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSIsICJVcGRhdGVTdGF0aXN0aWNzIiwgeyAiTmV0d29ya0ludGVyZmFjZSI6IE5ldHdvcmtJbnRlcmZhY2UsICJSZXNldE9uUmVhZCI6IFJlc2V0T25SZWFkIH0sIGNhbGxiYWNrX2Z1bmMsIHRhZywgcHJpLCBzZWxlY3RvcnMpOyB9DQogICAgb2JqLkFNVF9TeXN0ZW1Qb3dlclNjaGVtZV9TZXRQb3dlclNjaGVtZSA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jLCBzY2hlbWVJbnN0YW5jZUlkLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9TeXN0ZW1Qb3dlclNjaGVtZSIsICJTZXRQb3dlclNjaGVtZSIsIHt9LCBjYWxsYmFja19mdW5jLCB0YWcsIDAsIHsgIkluc3RhbmNlSUQiOiBzY2hlbWVJbnN0YW5jZUlkIH0pOyB9DQogICAgb2JqLkFNVF9UaW1lU3luY2hyb25pemF0aW9uU2VydmljZV9HZXRMb3dBY2N1cmFjeVRpbWVTeW5jaCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jLCB0YWcpIHsgb2JqLkV4ZWMoIkFNVF9UaW1lU3luY2hyb25pemF0aW9uU2VydmljZSIsICJHZXRMb3dBY2N1cmFjeVRpbWVTeW5jaCIsIHt9LCBjYWxsYmFja19mdW5jLCB0YWcpOyB9DQogICAgb2JqLkFNVF9UaW1lU3luY2hyb25pemF0aW9uU2VydmljZV9TZXRIaWdoQWNjdXJhY3lUaW1lU3luY2ggPSBmdW5jdGlvbiAoVGEwLCBUbTEsIFRtMiwgY2FsbGJhY2tfZnVuYywgdGFnKSB7IG9iai5FeGVjKCJBTVRfVGltZVN5bmNocm9uaXphdGlvblNlcnZpY2UiLCAiU2V0SGlnaEFjY3VyYWN5VGltZVN5bmNoIiwgeyAiVGEwIjogVGEwLCAiVG0xIjogVG0xLCAiVG0yIjogVG0yIH0sIGNhbGxiYWNrX2Z1bmMsIHRhZyk7IH0NCiAgICBvYmouQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZV9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UiLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9XZWJVSVNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfV2ViVUlTZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5BTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZV9BZGRXaUZpU2V0dGluZ3MgPSBmdW5jdGlvbiAoV2lGaUVuZHBvaW50LCBXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0LCBJRUVFODAyMXhTZXR0aW5nc0lucHV0LCBDbGllbnRDcmVkZW50aWFsLCBDQUNyZWRlbnRpYWwsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWNXaXRoWG1sKCJBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSIsICJBZGRXaUZpU2V0dGluZ3MiLCB7ICJXaUZpRW5kcG9pbnQiOiBXaUZpRW5kcG9pbnQsICJXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0IjogV2lGaUVuZHBvaW50U2V0dGluZ3NJbnB1dCwgIklFRUU4MDIxeFNldHRpbmdzSW5wdXQiOiBJRUVFODAyMXhTZXR0aW5nc0lucHV0LCAiQ2xpZW50Q3JlZGVudGlhbCI6IENsaWVudENyZWRlbnRpYWwsICJDQUNyZWRlbnRpYWwiOiBDQUNyZWRlbnRpYWwgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2VfVXBkYXRlV2lGaVNldHRpbmdzID0gZnVuY3Rpb24gKFdpRmlFbmRwb2ludFNldHRpbmdzLCBXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0LCBJRUVFODAyMXhTZXR0aW5nc0lucHV0LCBDbGllbnRDcmVkZW50aWFsLCBDQUNyZWRlbnRpYWwsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWNXaXRoWG1sKCJBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSIsICJVcGRhdGVXaUZpU2V0dGluZ3MiLCB7ICJXaUZpRW5kcG9pbnRTZXR0aW5ncyI6IFdpRmlFbmRwb2ludFNldHRpbmdzLCAiV2lGaUVuZHBvaW50U2V0dGluZ3NJbnB1dCI6IFdpRmlFbmRwb2ludFNldHRpbmdzSW5wdXQsICJJRUVFODAyMXhTZXR0aW5nc0lucHV0IjogSUVFRTgwMjF4U2V0dGluZ3NJbnB1dCwgIkNsaWVudENyZWRlbnRpYWwiOiBDbGllbnRDcmVkZW50aWFsLCAiQ0FDcmVkZW50aWFsIjogQ0FDcmVkZW50aWFsIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9XaUZpUG9ydENvbmZpZ3VyYXRpb25TZXJ2aWNlX0RlbGV0ZUFsbElUUHJvZmlsZXMgPSBmdW5jdGlvbiAoX21ldGhvZF9kdW1teSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2UiLCAiRGVsZXRlQWxsSVRQcm9maWxlcyIsIHsgIl9tZXRob2RfZHVtbXkiOiBfbWV0aG9kX2R1bW15IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkFNVF9XaUZpUG9ydENvbmZpZ3VyYXRpb25TZXJ2aWNlX0RlbGV0ZUFsbFVzZXJQcm9maWxlcyA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSIsICJEZWxldGVBbGxVc2VyUHJvZmlsZXMiLCB7ICJfbWV0aG9kX2R1bW15IjogX21ldGhvZF9kdW1teSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQWNjb3VudF9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9BY2NvdW50IiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQWNjb3VudE1hbmFnZW1lbnRTZXJ2aWNlX0NyZWF0ZUFjY291bnQgPSBmdW5jdGlvbiAoU3lzdGVtLCBBY2NvdW50VGVtcGxhdGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9BY2NvdW50TWFuYWdlbWVudFNlcnZpY2UiLCAiQ3JlYXRlQWNjb3VudCIsIHsgIlN5c3RlbSI6IFN5c3RlbSwgIkFjY291bnRUZW1wbGF0ZSI6IEFjY291bnRUZW1wbGF0ZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQm9vdENvbmZpZ1NldHRpbmdfQ2hhbmdlQm9vdE9yZGVyID0gZnVuY3Rpb24gKFNvdXJjZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0Jvb3RDb25maWdTZXR0aW5nIiwgIkNoYW5nZUJvb3RPcmRlciIsIHsgIlNvdXJjZSI6IFNvdXJjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fQm9vdFNlcnZpY2VfU2V0Qm9vdENvbmZpZ1JvbGUgPSBmdW5jdGlvbiAoQm9vdENvbmZpZ1NldHRpbmcsIFJvbGUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Cb290U2VydmljZSIsICJTZXRCb290Q29uZmlnUm9sZSIsIHsgIkJvb3RDb25maWdTZXR0aW5nIjogQm9vdENvbmZpZ1NldHRpbmcsICJSb2xlIjogUm9sZSB9LCBjYWxsYmFja19mdW5jLCAwLCAxKTsgfQ0KICAgIG9iai5DSU1fQ2FyZF9Db25uZWN0b3JQb3dlciA9IGZ1bmN0aW9uIChDb25uZWN0b3IsIFBvd2VyZWRPbiwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0NhcmQiLCAiQ29ubmVjdG9yUG93ZXIiLCB7ICJDb25uZWN0b3IiOiBDb25uZWN0b3IsICJQb3dlcmVkT24iOiBQb3dlcmVkT24gfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX0NhcmRfSXNDb21wYXRpYmxlID0gZnVuY3Rpb24gKEVsZW1lbnRUb0NoZWNrLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fQ2FyZCIsICJJc0NvbXBhdGlibGUiLCB7ICJFbGVtZW50VG9DaGVjayI6IEVsZW1lbnRUb0NoZWNrIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9DaGFzc2lzX0lzQ29tcGF0aWJsZSA9IGZ1bmN0aW9uIChFbGVtZW50VG9DaGVjaywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0NoYXNzaXMiLCAiSXNDb21wYXRpYmxlIiwgeyAiRWxlbWVudFRvQ2hlY2siOiBFbGVtZW50VG9DaGVjayB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fRmFuX1NldFNwZWVkID0gZnVuY3Rpb24gKERlc2lyZWRTcGVlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX0ZhbiIsICJTZXRTcGVlZCIsIHsgIkRlc2lyZWRTcGVlZCI6IERlc2lyZWRTcGVlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fS1ZNUmVkaXJlY3Rpb25TQVBfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fS1ZNUmVkaXJlY3Rpb25TQVAiLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZS8qLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgKi99LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfTG9ja01lZGlhID0gZnVuY3Rpb24gKExvY2ssIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJMb2NrTWVkaWEiLCB7ICJMb2NrIjogTG9jayB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfU2V0UG93ZXJTdGF0ZSA9IGZ1bmN0aW9uIChQb3dlclN0YXRlLCBUaW1lLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiU2V0UG93ZXJTdGF0ZSIsIHsgIlBvd2VyU3RhdGUiOiBQb3dlclN0YXRlLCAiVGltZSI6IFRpbWUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX01lZGlhQWNjZXNzRGV2aWNlX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJSZXNldCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfRW5hYmxlRGV2aWNlID0gZnVuY3Rpb24gKEVuYWJsZWQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfT25saW5lRGV2aWNlID0gZnVuY3Rpb24gKE9ubGluZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX01lZGlhQWNjZXNzRGV2aWNlIiwgIk9ubGluZURldmljZSIsIHsgIk9ubGluZSI6IE9ubGluZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiUXVpZXNjZURldmljZSIsIHsgIlF1aWVzY2UiOiBRdWllc2NlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9NZWRpYUFjY2Vzc0RldmljZV9TYXZlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX01lZGlhQWNjZXNzRGV2aWNlX1Jlc3RvcmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJSZXN0b3JlUHJvcGVydGllcyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fTWVkaWFBY2Nlc3NEZXZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fTWVkaWFBY2Nlc3NEZXZpY2UiLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9QaHlzaWNhbEZyYW1lX0lzQ29tcGF0aWJsZSA9IGZ1bmN0aW9uIChFbGVtZW50VG9DaGVjaywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1BoeXNpY2FsRnJhbWUiLCAiSXNDb21wYXRpYmxlIiwgeyAiRWxlbWVudFRvQ2hlY2siOiBFbGVtZW50VG9DaGVjayB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUGh5c2ljYWxQYWNrYWdlX0lzQ29tcGF0aWJsZSA9IGZ1bmN0aW9uIChFbGVtZW50VG9DaGVjaywgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1BoeXNpY2FsUGFja2FnZSIsICJJc0NvbXBhdGlibGUiLCB7ICJFbGVtZW50VG9DaGVjayI6IEVsZW1lbnRUb0NoZWNrIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qb3dlck1hbmFnZW1lbnRTZXJ2aWNlX1JlcXVlc3RQb3dlclN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFBvd2VyU3RhdGUsIE1hbmFnZWRFbGVtZW50LCBUaW1lLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJNYW5hZ2VtZW50U2VydmljZSIsICJSZXF1ZXN0UG93ZXJTdGF0ZUNoYW5nZSIsIHsgIlBvd2VyU3RhdGUiOiBQb3dlclN0YXRlLCAiTWFuYWdlZEVsZW1lbnQiOiBNYW5hZ2VkRWxlbWVudCwgIlRpbWUiOiBUaW1lLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYywgMCwgMSk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X1NldFBvd2VyU3RhdGUgPSBmdW5jdGlvbiAoUG93ZXJTdGF0ZSwgVGltZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlNldFBvd2VyU3RhdGUiLCB7ICJQb3dlclN0YXRlIjogUG93ZXJTdGF0ZSwgIlRpbWUiOiBUaW1lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qb3dlclN1cHBseV9SZXNldCA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJTdXBwbHkiLCAiUmVzZXQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X0VuYWJsZURldmljZSA9IGZ1bmN0aW9uIChFbmFibGVkLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJTdXBwbHkiLCAiRW5hYmxlRGV2aWNlIiwgeyAiRW5hYmxlZCI6IEVuYWJsZWQgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X09ubGluZURldmljZSA9IGZ1bmN0aW9uIChPbmxpbmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qb3dlclN1cHBseSIsICJPbmxpbmVEZXZpY2UiLCB7ICJPbmxpbmUiOiBPbmxpbmUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X1F1aWVzY2VEZXZpY2UgPSBmdW5jdGlvbiAoUXVpZXNjZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlF1aWVzY2VEZXZpY2UiLCB7ICJRdWllc2NlIjogUXVpZXNjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUG93ZXJTdXBwbHlfU2F2ZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlNhdmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qb3dlclN1cHBseV9SZXN0b3JlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUG93ZXJTdXBwbHkiLCAiUmVzdG9yZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Bvd2VyU3VwcGx5X1JlcXVlc3RTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChSZXF1ZXN0ZWRTdGF0ZSwgVGltZW91dFBlcmlvZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Bvd2VyU3VwcGx5IiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX1NldFBvd2VyU3RhdGUgPSBmdW5jdGlvbiAoUG93ZXJTdGF0ZSwgVGltZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Byb2Nlc3NvciIsICJTZXRQb3dlclN0YXRlIiwgeyAiUG93ZXJTdGF0ZSI6IFBvd2VyU3RhdGUsICJUaW1lIjogVGltZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qcm9jZXNzb3IiLCAiUmVzZXQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Byb2Nlc3Nvcl9FbmFibGVEZXZpY2UgPSBmdW5jdGlvbiAoRW5hYmxlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1Byb2Nlc3NvciIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX09ubGluZURldmljZSA9IGZ1bmN0aW9uIChPbmxpbmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qcm9jZXNzb3IiLCAiT25saW5lRGV2aWNlIiwgeyAiT25saW5lIjogT25saW5lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qcm9jZXNzb3JfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUHJvY2Vzc29yIiwgIlF1aWVzY2VEZXZpY2UiLCB7ICJRdWllc2NlIjogUXVpZXNjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUHJvY2Vzc29yX1NhdmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9Qcm9jZXNzb3IiLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1Byb2Nlc3Nvcl9SZXN0b3JlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUHJvY2Vzc29yIiwgIlJlc3RvcmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9Qcm9jZXNzb3JfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUHJvY2Vzc29yIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fUmVjb3JkTG9nX0NsZWFyTG9nID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9SZWNvcmRMb2ciLCAiQ2xlYXJMb2ciLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1JlY29yZExvZ19SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9SZWNvcmRMb2ciLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9SZWRpcmVjdGlvblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fUmVkaXJlY3Rpb25TZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX1NldFBvd2VyU3RhdGUgPSBmdW5jdGlvbiAoUG93ZXJTdGF0ZSwgVGltZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1NlbnNvciIsICJTZXRQb3dlclN0YXRlIiwgeyAiUG93ZXJTdGF0ZSI6IFBvd2VyU3RhdGUsICJUaW1lIjogVGltZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TZW5zb3IiLCAiUmVzZXQiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1NlbnNvcl9FbmFibGVEZXZpY2UgPSBmdW5jdGlvbiAoRW5hYmxlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1NlbnNvciIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX09ubGluZURldmljZSA9IGZ1bmN0aW9uIChPbmxpbmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TZW5zb3IiLCAiT25saW5lRGV2aWNlIiwgeyAiT25saW5lIjogT25saW5lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9TZW5zb3JfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fU2Vuc29yIiwgIlF1aWVzY2VEZXZpY2UiLCB7ICJRdWllc2NlIjogUXVpZXNjZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU2Vuc29yX1NhdmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TZW5zb3IiLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1NlbnNvcl9SZXN0b3JlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fU2Vuc29yIiwgIlJlc3RvcmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9TZW5zb3JfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fU2Vuc29yIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fU3RhdGlzdGljYWxEYXRhX1Jlc2V0U2VsZWN0ZWRTdGF0cyA9IGZ1bmN0aW9uIChTZWxlY3RlZFN0YXRpc3RpY3MsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9TdGF0aXN0aWNhbERhdGEiLCAiUmVzZXRTZWxlY3RlZFN0YXRzIiwgeyAiU2VsZWN0ZWRTdGF0aXN0aWNzIjogU2VsZWN0ZWRTdGF0aXN0aWNzIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XYXRjaGRvZ19LZWVwQWxpdmUgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dhdGNoZG9nIiwgIktlZXBBbGl2ZSIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfU2V0UG93ZXJTdGF0ZSA9IGZ1bmN0aW9uIChQb3dlclN0YXRlLCBUaW1lLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiU2V0UG93ZXJTdGF0ZSIsIHsgIlBvd2VyU3RhdGUiOiBQb3dlclN0YXRlLCAiVGltZSI6IFRpbWUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1dhdGNoZG9nX1Jlc2V0ID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XYXRjaGRvZyIsICJSZXNldCIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfRW5hYmxlRGV2aWNlID0gZnVuY3Rpb24gKEVuYWJsZWQsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XYXRjaGRvZyIsICJFbmFibGVEZXZpY2UiLCB7ICJFbmFibGVkIjogRW5hYmxlZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfT25saW5lRGV2aWNlID0gZnVuY3Rpb24gKE9ubGluZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dhdGNoZG9nIiwgIk9ubGluZURldmljZSIsIHsgIk9ubGluZSI6IE9ubGluZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfUXVpZXNjZURldmljZSA9IGZ1bmN0aW9uIChRdWllc2NlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiUXVpZXNjZURldmljZSIsIHsgIlF1aWVzY2UiOiBRdWllc2NlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XYXRjaGRvZ19TYXZlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiU2F2ZVByb3BlcnRpZXMiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1dhdGNoZG9nX1Jlc3RvcmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XYXRjaGRvZyIsICJSZXN0b3JlUHJvcGVydGllcyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2F0Y2hkb2dfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2F0Y2hkb2ciLCAiUmVxdWVzdFN0YXRlQ2hhbmdlIiwgeyAiUmVxdWVzdGVkU3RhdGUiOiBSZXF1ZXN0ZWRTdGF0ZSwgIlRpbWVvdXRQZXJpb2QiOiBUaW1lb3V0UGVyaW9kIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9TZXRQb3dlclN0YXRlID0gZnVuY3Rpb24gKFBvd2VyU3RhdGUsIFRpbWUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJTZXRQb3dlclN0YXRlIiwgeyAiUG93ZXJTdGF0ZSI6IFBvd2VyU3RhdGUsICJUaW1lIjogVGltZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2lGaVBvcnRfUmVzZXQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dpRmlQb3J0IiwgIlJlc2V0Iiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9FbmFibGVEZXZpY2UgPSBmdW5jdGlvbiAoRW5hYmxlZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dpRmlQb3J0IiwgIkVuYWJsZURldmljZSIsIHsgIkVuYWJsZWQiOiBFbmFibGVkIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9PbmxpbmVEZXZpY2UgPSBmdW5jdGlvbiAoT25saW5lLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJDSU1fV2lGaVBvcnQiLCAiT25saW5lRGV2aWNlIiwgeyAiT25saW5lIjogT25saW5lIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9RdWllc2NlRGV2aWNlID0gZnVuY3Rpb24gKFF1aWVzY2UsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJRdWllc2NlRGV2aWNlIiwgeyAiUXVpZXNjZSI6IFF1aWVzY2UgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouQ0lNX1dpRmlQb3J0X1NhdmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJTYXZlUHJvcGVydGllcyIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5DSU1fV2lGaVBvcnRfUmVzdG9yZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiQ0lNX1dpRmlQb3J0IiwgIlJlc3RvcmVQcm9wZXJ0aWVzIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLkNJTV9XaUZpUG9ydF9SZXF1ZXN0U3RhdGVDaGFuZ2UgPSBmdW5jdGlvbiAoUmVxdWVzdGVkU3RhdGUsIFRpbWVvdXRQZXJpb2QsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIkNJTV9XaUZpUG9ydCIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX0hvc3RCYXNlZFNldHVwU2VydmljZV9TZXR1cCA9IGZ1bmN0aW9uIChOZXRBZG1pblBhc3NFbmNyeXB0aW9uVHlwZSwgTmV0d29ya0FkbWluUGFzc3dvcmQsIE1jTm9uY2UsIENlcnRpZmljYXRlLCBTaWduaW5nQWxnb3JpdGhtLCBEaWdpdGFsU2lnbmF0dXJlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlIiwgIlNldHVwIiwgeyAiTmV0QWRtaW5QYXNzRW5jcnlwdGlvblR5cGUiOiBOZXRBZG1pblBhc3NFbmNyeXB0aW9uVHlwZSwgIk5ldHdvcmtBZG1pblBhc3N3b3JkIjogTmV0d29ya0FkbWluUGFzc3dvcmQsICJNY05vbmNlIjogTWNOb25jZSwgIkNlcnRpZmljYXRlIjogQ2VydGlmaWNhdGUsICJTaWduaW5nQWxnb3JpdGhtIjogU2lnbmluZ0FsZ29yaXRobSwgIkRpZ2l0YWxTaWduYXR1cmUiOiBEaWdpdGFsU2lnbmF0dXJlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfQWRkTmV4dENlcnRJbkNoYWluID0gZnVuY3Rpb24gKE5leHRDZXJ0aWZpY2F0ZSwgSXNMZWFmQ2VydGlmaWNhdGUsIElzUm9vdENlcnRpZmljYXRlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlIiwgIkFkZE5leHRDZXJ0SW5DaGFpbiIsIHsgIk5leHRDZXJ0aWZpY2F0ZSI6IE5leHRDZXJ0aWZpY2F0ZSwgIklzTGVhZkNlcnRpZmljYXRlIjogSXNMZWFmQ2VydGlmaWNhdGUsICJJc1Jvb3RDZXJ0aWZpY2F0ZSI6IElzUm9vdENlcnRpZmljYXRlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfQWRtaW5TZXR1cCA9IGZ1bmN0aW9uIChOZXRBZG1pblBhc3NFbmNyeXB0aW9uVHlwZSwgTmV0d29ya0FkbWluUGFzc3dvcmQsIE1jTm9uY2UsIFNpZ25pbmdBbGdvcml0aG0sIERpZ2l0YWxTaWduYXR1cmUsIGNhbGxiYWNrX2Z1bmMpIHsgb2JqLkV4ZWMoIklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2UiLCAiQWRtaW5TZXR1cCIsIHsgIk5ldEFkbWluUGFzc0VuY3J5cHRpb25UeXBlIjogTmV0QWRtaW5QYXNzRW5jcnlwdGlvblR5cGUsICJOZXR3b3JrQWRtaW5QYXNzd29yZCI6IE5ldHdvcmtBZG1pblBhc3N3b3JkLCAiTWNOb25jZSI6IE1jTm9uY2UsICJTaWduaW5nQWxnb3JpdGhtIjogU2lnbmluZ0FsZ29yaXRobSwgIkRpZ2l0YWxTaWduYXR1cmUiOiBEaWdpdGFsU2lnbmF0dXJlIH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfVXBncmFkZUNsaWVudFRvQWRtaW4gPSBmdW5jdGlvbiAoTWNOb25jZSwgU2lnbmluZ0FsZ29yaXRobSwgRGlnaXRhbFNpZ25hdHVyZSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0hvc3RCYXNlZFNldHVwU2VydmljZSIsICJVcGdyYWRlQ2xpZW50VG9BZG1pbiIsIHsgIk1jTm9uY2UiOiBNY05vbmNlLCAiU2lnbmluZ0FsZ29yaXRobSI6IFNpZ25pbmdBbGdvcml0aG0sICJEaWdpdGFsU2lnbmF0dXJlIjogRGlnaXRhbFNpZ25hdHVyZSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlX0Rpc2FibGVDbGllbnRDb250cm9sTW9kZSA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlIiwgIkRpc2FibGVDbGllbnRDb250cm9sTW9kZSIsIHsgIl9tZXRob2RfZHVtbXkiOiBfbWV0aG9kX2R1bW15IH0sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhX1Rlcm1pbmF0ZVNlc3Npb24gPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiLCAiVGVybWluYXRlU2Vzc2lvbiIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YV9EYXRhQ2hhbm5lbFJlYWQgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiLCAiRGF0YUNoYW5uZWxSZWFkIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhX0RhdGFDaGFubmVsV3JpdGUgPSBmdW5jdGlvbiAoRGF0YSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiLCAiRGF0YUNoYW5uZWxXcml0ZSIsIHsgIkRhdGFNZXNzYWdlIjogRGF0YSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfT3B0SW5TZXJ2aWNlX1N0YXJ0T3B0SW4gPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX09wdEluU2VydmljZSIsICJTdGFydE9wdEluIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19PcHRJblNlcnZpY2VfQ2FuY2VsT3B0SW4gPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX09wdEluU2VydmljZSIsICJDYW5jZWxPcHRJbiIsIHt9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfT3B0SW5TZXJ2aWNlX1NlbmRPcHRJbkNvZGUgPSBmdW5jdGlvbiAoT3B0SW5Db2RlLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfT3B0SW5TZXJ2aWNlIiwgIlNlbmRPcHRJbkNvZGUiLCB7ICJPcHRJbkNvZGUiOiBPcHRJbkNvZGUgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX09wdEluU2VydmljZV9TdGFydFNlcnZpY2UgPSBmdW5jdGlvbiAoY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX09wdEluU2VydmljZSIsICJTdGFydFNlcnZpY2UiLCB7fSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX09wdEluU2VydmljZV9TdG9wU2VydmljZSA9IGZ1bmN0aW9uIChjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfT3B0SW5TZXJ2aWNlIiwgIlN0b3BTZXJ2aWNlIiwge30sIGNhbGxiYWNrX2Z1bmMpOyB9DQogICAgb2JqLklQU19PcHRJblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gKFJlcXVlc3RlZFN0YXRlLCBUaW1lb3V0UGVyaW9kLCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfT3B0SW5TZXJ2aWNlIiwgIlJlcXVlc3RTdGF0ZUNoYW5nZSIsIHsgIlJlcXVlc3RlZFN0YXRlIjogUmVxdWVzdGVkU3RhdGUsICJUaW1lb3V0UGVyaW9kIjogVGltZW91dFBlcmlvZCB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfUHJvdmlzaW9uaW5nUmVjb3JkTG9nX1JlcXVlc3RTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChSZXF1ZXN0ZWRTdGF0ZSwgVGltZW91dFBlcmlvZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX1Byb3Zpc2lvbmluZ1JlY29yZExvZyIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX1Byb3Zpc2lvbmluZ1JlY29yZExvZ19DbGVhckxvZyA9IGZ1bmN0aW9uIChfbWV0aG9kX2R1bW15LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfUHJvdmlzaW9uaW5nUmVjb3JkTG9nIiwgIkNsZWFyTG9nIiwgeyAiX21ldGhvZF9kdW1teSI6IF9tZXRob2RfZHVtbXkgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlX1NldFNlc3Npb25TdGF0ZSA9IGZ1bmN0aW9uIChTZXNzaW9uU3RhdGUsIENvbnNlY3V0aXZlUmVib290c051bSwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgIlNldFNlc3Npb25TdGF0ZSIsIHsgIlNlc3Npb25TdGF0ZSI6IFNlc3Npb25TdGF0ZSwgIkNvbnNlY3V0aXZlUmVib290c051bSI6IENvbnNlY3V0aXZlUmVib290c051bSB9LCBjYWxsYmFja19mdW5jKTsgfQ0KICAgIG9iai5JUFNfU2VjSU9TZXJ2aWNlX1JlcXVlc3RTdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIChSZXF1ZXN0ZWRTdGF0ZSwgVGltZW91dFBlcmlvZCwgY2FsbGJhY2tfZnVuYykgeyBvYmouRXhlYygiSVBTX1NlY0lPU2VydmljZSIsICJSZXF1ZXN0U3RhdGVDaGFuZ2UiLCB7ICJSZXF1ZXN0ZWRTdGF0ZSI6IFJlcXVlc3RlZFN0YXRlLCAiVGltZW91dFBlcmlvZCI6IFRpbWVvdXRQZXJpb2QgfSwgY2FsbGJhY2tfZnVuYyk7IH0NCiAgICBvYmouSVBTX0hUVFBQcm94eVNlcnZpY2VfQWRkUHJveHlBY2Nlc3NQb2ludCA9IGZ1bmN0aW9uIChBY2Nlc3NJbmZvLCBJbmZvRm9ybWF0LCBQb3J0LCBOZXR3b3JrRG5zU3VmZml4LCBjYWxsYmFja19mdW5jKSB7IG9iai5FeGVjKCJJUFNfSFRUUFByb3h5U2VydmljZSIsICJBZGRQcm94eUFjY2Vzc1BvaW50IiwgeyAiQWNjZXNzSW5mbyI6IEFjY2Vzc0luZm8sICJJbmZvRm9ybWF0IjogSW5mb0Zvcm1hdCwgIlBvcnQiOiBQb3J0LCAiTmV0d29ya0Ruc1N1ZmZpeCI6IE5ldHdvcmtEbnNTdWZmaXggfSwgY2FsbGJhY2tfZnVuYyk7IH0NCg0KICAgIG9iai5BbXRTdGF0dXNUb1N0ciA9IGZ1bmN0aW9uIChjb2RlKSB7IGlmIChvYmouQW10U3RhdHVzQ29kZXNbY29kZV0pIHJldHVybiBvYmouQW10U3RhdHVzQ29kZXNbY29kZV07IGVsc2UgcmV0dXJuICJVTktOT1dOX0VSUk9SIiB9DQogICAgb2JqLkFtdFN0YXR1c0NvZGVzID0gew0KICAgICAgICAweDAwMDA6ICJTVUNDRVNTIiwNCiAgICAgICAgMHgwMDAxOiAiSU5URVJOQUxfRVJST1IiLA0KICAgICAgICAweDAwMDI6ICJOT1RfUkVBRFkiLA0KICAgICAgICAweDAwMDM6ICJJTlZBTElEX1BUX01PREUiLA0KICAgICAgICAweDAwMDQ6ICJJTlZBTElEX01FU1NBR0VfTEVOR1RIIiwNCiAgICAgICAgMHgwMDA1OiAiVEFCTEVfRklOR0VSUFJJTlRfTk9UX0FWQUlMQUJMRSIsDQogICAgICAgIDB4MDAwNjogIklOVEVHUklUWV9DSEVDS19GQUlMRUQiLA0KICAgICAgICAweDAwMDc6ICJVTlNVUFBPUlRFRF9JU1ZTX1ZFUlNJT04iLA0KICAgICAgICAweDAwMDg6ICJBUFBMSUNBVElPTl9OT1RfUkVHSVNURVJFRCIsDQogICAgICAgIDB4MDAwOTogIklOVkFMSURfUkVHSVNUUkFUSU9OX0RBVEEiLA0KICAgICAgICAweDAwMEE6ICJBUFBMSUNBVElPTl9ET0VTX05PVF9FWElTVCIsDQogICAgICAgIDB4MDAwQjogIk5PVF9FTk9VR0hfU1RPUkFHRSIsDQogICAgICAgIDB4MDAwQzogIklOVkFMSURfTkFNRSIsDQogICAgICAgIDB4MDAwRDogIkJMT0NLX0RPRVNfTk9UX0VYSVNUIiwNCiAgICAgICAgMHgwMDBFOiAiSU5WQUxJRF9CWVRFX09GRlNFVCIsDQogICAgICAgIDB4MDAwRjogIklOVkFMSURfQllURV9DT1VOVCIsDQogICAgICAgIDB4MDAxMDogIk5PVF9QRVJNSVRURUQiLA0KICAgICAgICAweDAwMTE6ICJOT1RfT1dORVIiLA0KICAgICAgICAweDAwMTI6ICJCTE9DS19MT0NLRURfQllfT1RIRVIiLA0KICAgICAgICAweDAwMTM6ICJCTE9DS19OT1RfTE9DS0VEIiwNCiAgICAgICAgMHgwMDE0OiAiSU5WQUxJRF9HUk9VUF9QRVJNSVNTSU9OUyIsDQogICAgICAgIDB4MDAxNTogIkdST1VQX0RPRVNfTk9UX0VYSVNUIiwNCiAgICAgICAgMHgwMDE2OiAiSU5WQUxJRF9NRU1CRVJfQ09VTlQiLA0KICAgICAgICAweDAwMTc6ICJNQVhfTElNSVRfUkVBQ0hFRCIsDQogICAgICAgIDB4MDAxODogIklOVkFMSURfQVVUSF9UWVBFIiwNCiAgICAgICAgMHgwMDE5OiAiQVVUSEVOVElDQVRJT05fRkFJTEVEIiwNCiAgICAgICAgMHgwMDFBOiAiSU5WQUxJRF9ESENQX01PREUiLA0KICAgICAgICAweDAwMUI6ICJJTlZBTElEX0lQX0FERFJFU1MiLA0KICAgICAgICAweDAwMUM6ICJJTlZBTElEX0RPTUFJTl9OQU1FIiwNCiAgICAgICAgMHgwMDFEOiAiVU5TVVBQT1JURURfVkVSU0lPTiIsDQogICAgICAgIDB4MDAxRTogIlJFUVVFU1RfVU5FWFBFQ1RFRCIsDQogICAgICAgIDB4MDAxRjogIklOVkFMSURfVEFCTEVfVFlQRSIsDQogICAgICAgIDB4MDAyMDogIklOVkFMSURfUFJPVklTSU9OSU5HX1NUQVRFIiwNCiAgICAgICAgMHgwMDIxOiAiVU5TVVBQT1JURURfT0JKRUNUIiwNCiAgICAgICAgMHgwMDIyOiAiSU5WQUxJRF9USU1FIiwNCiAgICAgICAgMHgwMDIzOiAiSU5WQUxJRF9JTkRFWCIsDQogICAgICAgIDB4MDAyNDogIklOVkFMSURfUEFSQU1FVEVSIiwNCiAgICAgICAgMHgwMDI1OiAiSU5WQUxJRF9ORVRNQVNLIiwNCiAgICAgICAgMHgwMDI2OiAiRkxBU0hfV1JJVEVfTElNSVRfRVhDRUVERUQiLA0KICAgICAgICAweDAwMjc6ICJJTlZBTElEX0lNQUdFX0xFTkdUSCIsDQogICAgICAgIDB4MDAyODogIklOVkFMSURfSU1BR0VfU0lHTkFUVVJFIiwNCiAgICAgICAgMHgwMDI5OiAiUFJPUE9TRV9BTk9USEVSX1ZFUlNJT04iLA0KICAgICAgICAweDAwMkE6ICJJTlZBTElEX1BJRF9GT1JNQVQiLA0KICAgICAgICAweDAwMkI6ICJJTlZBTElEX1BQU19GT1JNQVQiLA0KICAgICAgICAweDAwMkM6ICJCSVNUX0NPTU1BTkRfQkxPQ0tFRCIsDQogICAgICAgIDB4MDAyRDogIkNPTk5FQ1RJT05fRkFJTEVEIiwNCiAgICAgICAgMHgwMDJFOiAiQ09OTkVDVElPTl9UT09fTUFOWSIsDQogICAgICAgIDB4MDAyRjogIlJOR19HRU5FUkFUSU9OX0lOX1BST0dSRVNTIiwNCiAgICAgICAgMHgwMDMwOiAiUk5HX05PVF9SRUFEWSIsDQogICAgICAgIDB4MDAzMTogIkNFUlRJRklDQVRFX05PVF9SRUFEWSIsDQogICAgICAgIDB4MDQwMDogIkRJU0FCTEVEX0JZX1BPTElDWSIsDQogICAgICAgIDB4MDgwMDogIk5FVFdPUktfSUZfRVJST1JfQkFTRSIsDQogICAgICAgIDB4MDgwMTogIlVOU1VQUE9SVEVEX09FTV9OVU1CRVIiLA0KICAgICAgICAweDA4MDI6ICJVTlNVUFBPUlRFRF9CT09UX09QVElPTiIsDQogICAgICAgIDB4MDgwMzogIklOVkFMSURfQ09NTUFORCIsDQogICAgICAgIDB4MDgwNDogIklOVkFMSURfU1BFQ0lBTF9DT01NQU5EIiwNCiAgICAgICAgMHgwODA1OiAiSU5WQUxJRF9IQU5ETEUiLA0KICAgICAgICAweDA4MDY6ICJJTlZBTElEX1BBU1NXT1JEIiwNCiAgICAgICAgMHgwODA3OiAiSU5WQUxJRF9SRUFMTSIsDQogICAgICAgIDB4MDgwODogIlNUT1JBR0VfQUNMX0VOVFJZX0lOX1VTRSIsDQogICAgICAgIDB4MDgwOTogIkRBVEFfTUlTU0lORyIsDQogICAgICAgIDB4MDgwQTogIkRVUExJQ0FURSIsDQogICAgICAgIDB4MDgwQjogIkVWRU5UTE9HX0ZST1pFTiIsDQogICAgICAgIDB4MDgwQzogIlBLSV9NSVNTSU5HX0tFWVMiLA0KICAgICAgICAweDA4MEQ6ICJQS0lfR0VORVJBVElOR19LRVlTIiwNCiAgICAgICAgMHgwODBFOiAiSU5WQUxJRF9LRVkiLA0KICAgICAgICAweDA4MEY6ICJJTlZBTElEX0NFUlQiLA0KICAgICAgICAweDA4MTA6ICJDRVJUX0tFWV9OT1RfTUFUQ0giLA0KICAgICAgICAweDA4MTE6ICJNQVhfS0VSQl9ET01BSU5fUkVBQ0hFRCIsDQogICAgICAgIDB4MDgxMjogIlVOU1VQUE9SVEVEIiwNCiAgICAgICAgMHgwODEzOiAiSU5WQUxJRF9QUklPUklUWSIsDQogICAgICAgIDB4MDgxNDogIk5PVF9GT1VORCIsDQogICAgICAgIDB4MDgxNTogIklOVkFMSURfQ1JFREVOVElBTFMiLA0KICAgICAgICAweDA4MTY6ICJJTlZBTElEX1BBU1NQSFJBU0UiLA0KICAgICAgICAweDA4MTg6ICJOT19BU1NPQ0lBVElPTiIsDQogICAgICAgIDB4MDgxQjogIkFVRElUX0ZBSUwiLA0KICAgICAgICAweDA4MUM6ICJCTE9DS0lOR19DT01QT05FTlQiLA0KICAgICAgICAweDA4MjE6ICJVU0VSX0NPTlNFTlRfUkVRVUlSRUQiLA0KICAgICAgICAweDEwMDA6ICJBUFBfSU5URVJOQUxfRVJST1IiLA0KICAgICAgICAweDEwMDE6ICJOT1RfSU5JVElBTElaRUQiLA0KICAgICAgICAweDEwMDI6ICJMSUJfVkVSU0lPTl9VTlNVUFBPUlRFRCIsDQogICAgICAgIDB4MTAwMzogIklOVkFMSURfUEFSQU0iLA0KICAgICAgICAweDEwMDQ6ICJSRVNPVVJDRVMiLA0KICAgICAgICAweDEwMDU6ICJIQVJEV0FSRV9BQ0NFU1NfRVJST1IiLA0KICAgICAgICAweDEwMDY6ICJSRVFVRVNUT1JfTk9UX1JFR0lTVEVSRUQiLA0KICAgICAgICAweDEwMDc6ICJORVRXT1JLX0VSUk9SIiwNCiAgICAgICAgMHgxMDA4OiAiUEFSQU1fQlVGRkVSX1RPT19TSE9SVCIsDQogICAgICAgIDB4MTAwOTogIkNPTV9OT1RfSU5JVElBTElaRURfSU5fVEhSRUFEIiwNCiAgICAgICAgMHgxMDBBOiAiVVJMX1JFUVVJUkVEIg0KICAgIH0NCg0KICAgIC8vDQogICAgLy8gTWV0aG9kcyB1c2VkIGZvciBnZXR0aW5nIHRoZSBldmVudCBsb2cNCiAgICAvLw0KDQogICAgb2JqLkdldE1lc3NhZ2VMb2cgPSBmdW5jdGlvbiAoZnVuYywgdGFnKSB7DQogICAgICAgIG9iai5BTVRfTWVzc2FnZUxvZ19Qb3NpdGlvblRvRmlyc3RSZWNvcmQoX0dldE1lc3NhZ2VMb2cwLCBbZnVuYywgdGFnLCBbXV0pOw0KICAgIH0NCiAgICBmdW5jdGlvbiBfR2V0TWVzc2FnZUxvZzAoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzLCB0YWcpIHsNCiAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDAgfHwgcmVzcG9uc2VzLkJvZHlbIlJldHVyblZhbHVlIl0gIT0gJzAnKSB7IHRhZ1swXShvYmosIG51bGwsIHRhZ1syXSk7IHJldHVybjsgfQ0KICAgICAgICBvYmouQU1UX01lc3NhZ2VMb2dfR2V0UmVjb3JkcyhyZXNwb25zZXMuQm9keVsiSXRlcmF0aW9uSWRlbnRpZmllciJdLCAzOTAsIF9HZXRNZXNzYWdlTG9nMSwgdGFnKTsNCiAgICB9DQogICAgZnVuY3Rpb24gX0dldE1lc3NhZ2VMb2cxKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cywgdGFnKSB7DQogICAgICAgIGlmIChzdGF0dXMgIT0gMjAwIHx8IHJlc3BvbnNlcy5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9ICcwJykgeyB0YWdbMF0ob2JqLCBudWxsLCB0YWdbMl0pOyByZXR1cm47IH0NCiAgICAgICAgdmFyIGksIGosIHgsIGUsIEFtdE1lc3NhZ2VzID0gdGFnWzJdLCB0ID0gbmV3IERhdGUoKSwgVGltZVN0YW1wLCByYSA9IHJlc3BvbnNlcy5Cb2R5WyJSZWNvcmRBcnJheSJdOw0KICAgICAgICBpZiAodHlwZW9mIHJhID09PSAnc3RyaW5nJykgeyByZXNwb25zZXMuQm9keVsiUmVjb3JkQXJyYXkiXSA9IFtyZXNwb25zZXMuQm9keVsiUmVjb3JkQXJyYXkiXV07IH0NCg0KICAgICAgICBmb3IgKGkgaW4gcmEpIHsNCiAgICAgICAgICAgIGUgPSBudWxsOw0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvLyBOb2RlSlMgZGV0ZWN0aW9uDQogICAgICAgICAgICAgICAgdmFyIGlzTm9kZSA9IG5ldyBGdW5jdGlvbigidHJ5IHtyZXR1cm4gdGhpcz09PWdsb2JhbDt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO30iKTsNCiAgICAgICAgICAgICAgICBpZiAoaXNOb2RlKCkpIHsgZSA9IHJlcXVpcmUoJ2F0b2InKShyYVtpXSk7IH0gZWxzZSB7IGUgPSB3aW5kb3cuYXRvYihyYVtpXSk7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHsgfQ0KICAgICAgICAgICAgaWYgKGUgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9IFJlYWRJbnRYKGUsIDApOw0KICAgICAgICAgICAgICAgIGlmICgoVGltZVN0YW1wID4gMCkgJiYgKFRpbWVTdGFtcCA8IDB4RkZGRkZGRkYpKSB7DQogICAgICAgICAgICAgICAgICAgIHggPSB7ICdEZXZpY2VBZGRyZXNzJzogZS5jaGFyQ29kZUF0KDQpLCAnRXZlbnRTZW5zb3JUeXBlJzogZS5jaGFyQ29kZUF0KDUpLCAnRXZlbnRUeXBlJzogZS5jaGFyQ29kZUF0KDYpLCAnRXZlbnRPZmZzZXQnOiBlLmNoYXJDb2RlQXQoNyksICdFdmVudFNvdXJjZVR5cGUnOiBlLmNoYXJDb2RlQXQoOCksICdFdmVudFNldmVyaXR5JzogZS5jaGFyQ29kZUF0KDkpLCAnU2Vuc29yTnVtYmVyJzogZS5jaGFyQ29kZUF0KDEwKSwgJ0VudGl0eSc6IGUuY2hhckNvZGVBdCgxMSksICdFbnRpdHlJbnN0YW5jZSc6IGUuY2hhckNvZGVBdCgxMiksICdFdmVudERhdGEnOiBbXSwgJ1RpbWUnOiBuZXcgRGF0ZSgoVGltZVN0YW1wICsgKHQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwKSkgKiAxMDAwKSB9Ow0KICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAxMzsgaiA8IDIxOyBqKyspIHsgeFsnRXZlbnREYXRhJ10ucHVzaChlLmNoYXJDb2RlQXQoaikpOyB9DQogICAgICAgICAgICAgICAgICAgIHhbJ0VudGl0eVN0ciddID0gX1N5c3RlbUVudGl0eVR5cGVzW3hbJ0VudGl0eSddXTsNCiAgICAgICAgICAgICAgICAgICAgeFsnRGVzYyddID0gX0dldEV2ZW50RGV0YWlsU3RyKHhbJ0V2ZW50U2Vuc29yVHlwZSddLCB4WydFdmVudE9mZnNldCddLCB4WydFdmVudERhdGEnXSwgeFsnRW50aXR5J10pOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXhbJ0VudGl0eVN0ciddKSB4WydFbnRpdHlTdHInXSA9ICJVbmtub3duIjsNCiAgICAgICAgICAgICAgICAgICAgQW10TWVzc2FnZXMucHVzaCh4KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAocmVzcG9uc2VzLkJvZHlbIk5vTW9yZVJlY29yZHMiXSAhPSB0cnVlKSB7IG9iai5BTVRfTWVzc2FnZUxvZ19HZXRSZWNvcmRzKHJlc3BvbnNlcy5Cb2R5WyJJdGVyYXRpb25JZGVudGlmaWVyIl0sIDM5MCwgX0dldE1lc3NhZ2VMb2cxLCBbdGFnWzBdLCBBbXRNZXNzYWdlcywgdGFnWzJdXSk7IH0gZWxzZSB7IHRhZ1swXShvYmosIEFtdE1lc3NhZ2VzLCB0YWdbMl0pOyB9DQogICAgfQ0KDQogICAgdmFyIF9FdmVudFRyYXBTb3VyY2VUeXBlcyA9ICJQbGF0Zm9ybSBmaXJtd2FyZSAoZS5nLiBCSU9TKXxTTUkgaGFuZGxlcnxJU1Ygc3lzdGVtIG1hbmFnZW1lbnQgc29mdHdhcmV8QWxlcnQgQVNJQ3xJUE1JfEJJT1MgdmVuZG9yfFN5c3RlbSBib2FyZCBzZXQgdmVuZG9yfFN5c3RlbSBpbnRlZ3JhdG9yfFRoaXJkIHBhcnR5IGFkZC1pbnxPU1Z8TklDfFN5c3RlbSBtYW5hZ2VtZW50IGNhcmQiLnNwbGl0KCd8Jyk7DQogICAgdmFyIF9TeXN0ZW1GaXJtd2FyZUVycm9yID0gIlVuc3BlY2lmaWVkLnxObyBzeXN0ZW0gbWVtb3J5IGlzIHBoeXNpY2FsbHkgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0ufE5vIHVzYWJsZSBzeXN0ZW0gbWVtb3J5LCBhbGwgaW5zdGFsbGVkIG1lbW9yeSBoYXMgZXhwZXJpZW5jZWQgYW4gdW5yZWNvdmVyYWJsZSBmYWlsdXJlLnxVbnJlY292ZXJhYmxlIGhhcmQtZGlzay9BVEFQSS9JREUgZGV2aWNlIGZhaWx1cmUufFVucmVjb3ZlcmFibGUgc3lzdGVtLWJvYXJkIGZhaWx1cmUufFVucmVjb3ZlcmFibGUgZGlza2V0dGUgc3Vic3lzdGVtIGZhaWx1cmUufFVucmVjb3ZlcmFibGUgaGFyZC1kaXNrIGNvbnRyb2xsZXIgZmFpbHVyZS58VW5yZWNvdmVyYWJsZSBQUy8yIG9yIFVTQiBrZXlib2FyZCBmYWlsdXJlLnxSZW1vdmFibGUgYm9vdCBtZWRpYSBub3QgZm91bmQufFVucmVjb3ZlcmFibGUgdmlkZW8gY29udHJvbGxlciBmYWlsdXJlLnxObyB2aWRlbyBkZXZpY2UgZGV0ZWN0ZWQufEZpcm13YXJlIChCSU9TKSBST00gY29ycnVwdGlvbiBkZXRlY3RlZC58Q1BVIHZvbHRhZ2UgbWlzbWF0Y2ggKHByb2Nlc3NvcnMgdGhhdCBzaGFyZSBzYW1lIHN1cHBseSBoYXZlIG1pc21hdGNoZWQgdm9sdGFnZSByZXF1aXJlbWVudHMpfENQVSBzcGVlZCBtYXRjaGluZyBmYWlsdXJlIi5zcGxpdCgnfCcpOw0KICAgIHZhciBfU3lzdGVtRmlybXdhcmVQcm9ncmVzcyA9ICJVbnNwZWNpZmllZC58TWVtb3J5IGluaXRpYWxpemF0aW9uLnxTdGFydGluZyBoYXJkLWRpc2sgaW5pdGlhbGl6YXRpb24gYW5kIHRlc3R8U2Vjb25kYXJ5IHByb2Nlc3NvcihzKSBpbml0aWFsaXphdGlvbnxVc2VyIGF1dGhlbnRpY2F0aW9ufFVzZXItaW5pdGlhdGVkIHN5c3RlbSBzZXR1cHxVU0IgcmVzb3VyY2UgY29uZmlndXJhdGlvbnxQQ0kgcmVzb3VyY2UgY29uZmlndXJhdGlvbnxPcHRpb24gUk9NIGluaXRpYWxpemF0aW9ufFZpZGVvIGluaXRpYWxpemF0aW9ufENhY2hlIGluaXRpYWxpemF0aW9ufFNNIEJ1cyBpbml0aWFsaXphdGlvbnxLZXlib2FyZCBjb250cm9sbGVyIGluaXRpYWxpemF0aW9ufEVtYmVkZGVkIGNvbnRyb2xsZXIvbWFuYWdlbWVudCBjb250cm9sbGVyIGluaXRpYWxpemF0aW9ufERvY2tpbmcgc3RhdGlvbiBhdHRhY2htZW50fEVuYWJsaW5nIGRvY2tpbmcgc3RhdGlvbnxEb2NraW5nIHN0YXRpb24gZWplY3Rpb258RGlzYWJsaW5nIGRvY2tpbmcgc3RhdGlvbnxDYWxsaW5nIG9wZXJhdGluZyBzeXN0ZW0gd2FrZS11cCB2ZWN0b3J8U3RhcnRpbmcgb3BlcmF0aW5nIHN5c3RlbSBib290IHByb2Nlc3N8QmFzZWJvYXJkIG9yIG1vdGhlcmJvYXJkIGluaXRpYWxpemF0aW9ufHJlc2VydmVkfEZsb3BweSBpbml0aWFsaXphdGlvbnxLZXlib2FyZCB0ZXN0fFBvaW50aW5nIGRldmljZSB0ZXN0fFByaW1hcnkgcHJvY2Vzc29yIGluaXRpYWxpemF0aW9uIi5zcGxpdCgnfCcpOw0KICAgIHZhciBfU3lzdGVtRW50aXR5VHlwZXMgPSAiVW5zcGVjaWZpZWR8T3RoZXJ8VW5rbm93bnxQcm9jZXNzb3J8RGlza3xQZXJpcGhlcmFsfFN5c3RlbSBtYW5hZ2VtZW50IG1vZHVsZXxTeXN0ZW0gYm9hcmR8TWVtb3J5IG1vZHVsZXxQcm9jZXNzb3IgbW9kdWxlfFBvd2VyIHN1cHBseXxBZGQgaW4gY2FyZHxGcm9udCBwYW5lbCBib2FyZHxCYWNrIHBhbmVsIGJvYXJkfFBvd2VyIHN5c3RlbSBib2FyZHxEcml2ZSBiYWNrcGxhbmV8U3lzdGVtIGludGVybmFsIGV4cGFuc2lvbiBib2FyZHxPdGhlciBzeXN0ZW0gYm9hcmR8UHJvY2Vzc29yIGJvYXJkfFBvd2VyIHVuaXR8UG93ZXIgbW9kdWxlfFBvd2VyIG1hbmFnZW1lbnQgYm9hcmR8Q2hhc3NpcyBiYWNrIHBhbmVsIGJvYXJkfFN5c3RlbSBjaGFzc2lzfFN1YiBjaGFzc2lzfE90aGVyIGNoYXNzaXMgYm9hcmR8RGlzayBkcml2ZSBiYXl8UGVyaXBoZXJhbCBiYXl8RGV2aWNlIGJheXxGYW4gY29vbGluZ3xDb29saW5nIHVuaXR8Q2FibGUgaW50ZXJjb25uZWN0fE1lbW9yeSBkZXZpY2V8U3lzdGVtIG1hbmFnZW1lbnQgc29mdHdhcmV8QklPU3xJbnRlbChyKSBNRXxTeXN0ZW0gYnVzfEdyb3VwfEludGVsKHIpIE1FfEV4dGVybmFsIGVudmlyb25tZW50fEJhdHRlcnl8UHJvY2Vzc2luZyBibGFkZXxDb25uZWN0aXZpdHkgc3dpdGNofFByb2Nlc3Nvci9tZW1vcnkgbW9kdWxlfEkvTyBtb2R1bGV8UHJvY2Vzc29yIEkvTyBtb2R1bGV8TWFuYWdlbWVudCBjb250cm9sbGVyIGZpcm13YXJlfElQTUkgY2hhbm5lbHxQQ0kgYnVzfFBDSSBleHByZXNzIGJ1c3xTQ1NJIGJ1c3xTQVRBL1NBUyBidXN8UHJvY2Vzc29yIGZyb250IHNpZGUgYnVzIi5zcGxpdCgnfCcpOw0KICAgIG9iai5SZWFsbU5hbWVzID0gInx8UmVkaXJlY3Rpb258fEhhcmR3YXJlIEFzc2V0fFJlbW90ZSBDb250cm9sfFN0b3JhZ2V8RXZlbnQgTWFuYWdlcnxTdG9yYWdlIEFkbWlufEFnZW50IFByZXNlbmNlIExvY2FsfEFnZW50IFByZXNlbmNlIFJlbW90ZXxDaXJjdWl0IEJyZWFrZXJ8TmV0d29yayBUaW1lfEdlbmVyYWwgSW5mb3JtYXRpb258RmlybXdhcmUgVXBkYXRlfEVJVHxMb2NhbFVOfEVuZHBvaW50IEFjY2VzcyBDb250cm9sfEVuZHBvaW50IEFjY2VzcyBDb250cm9sIEFkbWlufEV2ZW50IExvZyBSZWFkZXJ8QXVkaXQgTG9nfEFDTCBSZWFsbXx8fExvY2FsIFN5c3RlbSIuc3BsaXQoJ3wnKTsNCiAgICBvYmouV2F0Y2hkb2dDdXJyZW50U3RhdGVzID0geyAxOiAnTm90IFN0YXJ0ZWQnLCAyOiAnU3RvcHBlZCcsIDQ6ICdSdW5uaW5nJywgODogJ0V4cGlyZWQnLCAxNjogJ1N1c3BlbmRlZCcgfTsNCg0KICAgIGZ1bmN0aW9uIF9HZXRFdmVudERldGFpbFN0cihldmVudFNlbnNvclR5cGUsIGV2ZW50T2Zmc2V0LCBldmVudERhdGFGaWVsZCwgZW50aXR5KSB7DQoNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSAxNSkgew0KICAgICAgICAgICAgaWYgKGV2ZW50RGF0YUZpZWxkWzBdID09IDIzNSkgcmV0dXJuICJJbnZhbGlkIERhdGEiOw0KICAgICAgICAgICAgaWYgKGV2ZW50T2Zmc2V0ID09IDApIHJldHVybiBfU3lzdGVtRmlybXdhcmVFcnJvcltldmVudERhdGFGaWVsZFsxXV07DQogICAgICAgICAgICByZXR1cm4gX1N5c3RlbUZpcm13YXJlUHJvZ3Jlc3NbZXZlbnREYXRhRmllbGRbMV1dOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKChldmVudFNlbnNvclR5cGUgPT0gMTgpICYmIChldmVudERhdGFGaWVsZFswXSA9PSAxNzApKSB7IC8vIFN5c3RlbSB3YXRjaGRvZyBldmVudA0KICAgICAgICAgICAgcmV0dXJuICJBZ2VudCB3YXRjaGRvZyAiICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbNF0pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbM10pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbMl0pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbMV0pICsgIi0iICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbNl0pICsgY2hhcjJoZXgoZXZlbnREYXRhRmllbGRbNV0pICsgIi0uLi4gY2hhbmdlZCB0byAiICsgb2JqLldhdGNoZG9nQ3VycmVudFN0YXRlc1tldmVudERhdGFGaWVsZFs3XV07DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoKGV2ZW50U2Vuc29yVHlwZSA9PSA1KSAmJiAoZXZlbnRPZmZzZXQgPT0gMCkpIHsgLy8gU3lzdGVtIGNoYXNzaXMNCiAgICAgICAgICAgIHJldHVybiAiQ2FzZSBpbnRydXNpb24iOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKChldmVudFNlbnNvclR5cGUgPT0gMTkyKSAmJiAoZXZlbnRPZmZzZXQgPT0gMCkgJiYgKGV2ZW50RGF0YUZpZWxkWzBdID09IDE3MCkgJiYgKGV2ZW50RGF0YUZpZWxkWzFdID09IDQ4KSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKGV2ZW50RGF0YUZpZWxkWzJdID09IDApIHJldHVybiAiQSByZW1vdGUgU2VyaWFsIE92ZXIgTEFOIHNlc3Npb24gd2FzIGVzdGFibGlzaGVkLiI7DQogICAgICAgICAgICBpZiAoZXZlbnREYXRhRmllbGRbMl0gPT0gMSkgcmV0dXJuICJSZW1vdGUgU2VyaWFsIE92ZXIgTEFOIHNlc3Npb24gZmluaXNoZWQuIFVzZXIgY29udHJvbCB3YXMgcmVzdG9yZWQuIjsNCiAgICAgICAgICAgIGlmIChldmVudERhdGFGaWVsZFsyXSA9PSAyKSByZXR1cm4gIkEgcmVtb3RlIElERS1SZWRpcmVjdGlvbiBzZXNzaW9uIHdhcyBlc3RhYmxpc2hlZC4iOw0KICAgICAgICAgICAgaWYgKGV2ZW50RGF0YUZpZWxkWzJdID09IDMpIHJldHVybiAiUmVtb3RlIElERS1SZWRpcmVjdGlvbiBzZXNzaW9uIGZpbmlzaGVkLiBVc2VyIGNvbnRyb2wgd2FzIHJlc3RvcmVkLiI7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDM2KSB7DQogICAgICAgICAgICB2YXIgaGFuZGxlID0gKGV2ZW50RGF0YUZpZWxkWzFdIDw8IDI0KSArIChldmVudERhdGFGaWVsZFsyXSA8PCAxNikgKyAoZXZlbnREYXRhRmllbGRbM10gPDwgOCkgKyBldmVudERhdGFGaWVsZFs0XTsNCiAgICAgICAgICAgIHZhciBuaWMgPSAiIyIgKyBldmVudERhdGFGaWVsZFswXTsNCiAgICAgICAgICAgIGlmIChldmVudERhdGFGaWVsZFswXSA9PSAweEFBKSBuaWMgPSAid2lyZWQiOyAvLyBUT0RPOiBBZGQgd2lyZWxlc3MgKioqKioNCiAgICAgICAgICAgIC8vaWYgKGV2ZW50RGF0YUZpZWxkWzBdID09IDB4QUEpIG5pYyA9ICJ3aXJlbGVzcyI7DQoNCiAgICAgICAgICAgIGlmIChoYW5kbGUgPT0gNDI5NDk2NzI5MykgeyByZXR1cm4gIkFsbCByZWNlaXZlZCBwYWNrZXQgZmlsdGVyIHdhcyBtYXRjaGVkIG9uICIgKyBuaWMgKyAiIGludGVyZmFjZS4iOyB9DQogICAgICAgICAgICBpZiAoaGFuZGxlID09IDQyOTQ5NjcyOTIpIHsgcmV0dXJuICJBbGwgb3V0Ym91bmQgcGFja2V0IGZpbHRlciB3YXMgbWF0Y2hlZCBvbiAiICsgbmljICsgIiBpbnRlcmZhY2UuIjsgfQ0KICAgICAgICAgICAgaWYgKGhhbmRsZSA9PSA0Mjk0OTY3MjkwKSB7IHJldHVybiAiU3Bvb2ZlZCBwYWNrZXQgZmlsdGVyIHdhcyBtYXRjaGVkIG9uICIgKyBuaWMgKyAiIGludGVyZmFjZS4iOyB9DQogICAgICAgICAgICByZXR1cm4gIkZpbHRlciAiICsgaGFuZGxlICsgIiB3YXMgbWF0Y2hlZCBvbiAiICsgbmljICsgIiBpbnRlcmZhY2UuIjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChldmVudFNlbnNvclR5cGUgPT0gMTkyKSB7DQogICAgICAgICAgICBpZiAoZXZlbnREYXRhRmllbGRbMl0gPT0gMCkgcmV0dXJuICJTZWN1cml0eSBwb2xpY3kgaW52b2tlZC4gU29tZSBvciBhbGwgbmV0d29yayB0cmFmZmljIChUWCkgd2FzIHN0b3BwZWQuIjsNCiAgICAgICAgICAgIGlmIChldmVudERhdGFGaWVsZFsyXSA9PSAyKSByZXR1cm4gIlNlY3VyaXR5IHBvbGljeSBpbnZva2VkLiBTb21lIG9yIGFsbCBuZXR3b3JrIHRyYWZmaWMgKFJYKSB3YXMgc3RvcHBlZC4iOw0KICAgICAgICAgICAgcmV0dXJuICJTZWN1cml0eSBwb2xpY3kgaW52b2tlZC4iOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSAxOTMpIHsNCiAgICAgICAgICAgIGlmICgoZXZlbnREYXRhRmllbGRbMF0gPT0gMHhBQSkgJiYgKGV2ZW50RGF0YUZpZWxkWzFdID09IDB4MzApICYmIChldmVudERhdGFGaWVsZFsyXSA9PSAweDAwKSAmJiAoZXZlbnREYXRhRmllbGRbM10gPT0gMHgwMCkpIHsgcmV0dXJuICJVc2VyIHJlcXVlc3QgZm9yIHJlbW90ZSBjb25uZWN0aW9uLiI7IH0NCiAgICAgICAgICAgIGlmICgoZXZlbnREYXRhRmllbGRbMF0gPT0gMHhBQSkgJiYgKGV2ZW50RGF0YUZpZWxkWzFdID09IDB4MjApICYmIChldmVudERhdGFGaWVsZFsyXSA9PSAweDAzKSAmJiAoZXZlbnREYXRhRmllbGRbM10gPT0gMHgwMSkpIHsgcmV0dXJuICJFQUMgZXJyb3I6IGF0dGVtcHQgdG8gZ2V0IHBvc3R1cmUgd2hpbGUgTkFDIGluIEludGVs77+9IEFNVCBpcyBkaXNhYmxlZC4iOyB9IC8vIGV2ZW50RGF0YUZpZWxkID0gMHhBQTIwMDMwMTAwMDAwMDAwDQogICAgICAgICAgICBpZiAoKGV2ZW50RGF0YUZpZWxkWzBdID09IDB4QUEpICYmIChldmVudERhdGFGaWVsZFsxXSA9PSAweDIwKSAmJiAoZXZlbnREYXRhRmllbGRbMl0gPT0gMHgwNCkgJiYgKGV2ZW50RGF0YUZpZWxkWzNdID09IDB4MDApKSB7IHJldHVybiAiQ2VydGlmaWNhdGUgcmV2b2tlZC4gIjsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSA2KSByZXR1cm4gIkF1dGhlbnRpY2F0aW9uIGZhaWxlZCAiICsgKGV2ZW50RGF0YUZpZWxkWzFdICsgKGV2ZW50RGF0YUZpZWxkWzJdIDw8IDgpKSArICIgdGltZXMuIFRoZSBzeXN0ZW0gbWF5IGJlIHVuZGVyIGF0dGFjay4iOw0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDMwKSByZXR1cm4gIk5vIGJvb3RhYmxlIG1lZGlhIjsNCiAgICAgICAgaWYgKGV2ZW50U2Vuc29yVHlwZSA9PSAzMikgcmV0dXJuICJPcGVyYXRpbmcgc3lzdGVtIGxvY2t1cCBvciBwb3dlciBpbnRlcnJ1cHQiOw0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDM1KSByZXR1cm4gIlN5c3RlbSBib290IGZhaWx1cmUiOw0KICAgICAgICBpZiAoZXZlbnRTZW5zb3JUeXBlID09IDM3KSByZXR1cm4gIlN5c3RlbSBmaXJtd2FyZSBzdGFydGVkIChhdCBsZWFzdCBvbmUgQ1BVIGlzIHByb3Blcmx5IGV4ZWN1dGluZykuIjsNCiAgICAgICAgcmV0dXJuICJVbmtub3duIFNlbnNvciBUeXBlICMiICsgZXZlbnRTZW5zb3JUeXBlOw0KICAgIH0NCg0KDQoNCiAgICAvLyBVc2VmdWwgbGluazogaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvbWFuYWdlYWJpbGl0eS9BTVRfSW1wbGVtZW50YXRpb25fYW5kX1JlZmVyZW5jZV9HdWlkZS9kZWZhdWx0Lmh0bT90dXJsPVdvcmREb2N1bWVudHMlMkZzZWN1cml0eWFkbWluZXZlbnRzLmh0bQ0KDQogICAgdmFyIF9BbXRBdWRpdFN0cmluZ1RhYmxlID0NCiAgICB7DQogICAgICAgIDE2OiAnU2VjdXJpdHkgQWRtaW4nLA0KICAgICAgICAxNzogJ1JDTycsDQogICAgICAgIDE4OiAnUmVkaXJlY3Rpb24gTWFuYWdlcicsDQogICAgICAgIDE5OiAnRmlybXdhcmUgVXBkYXRlIE1hbmFnZXInLA0KICAgICAgICAyMDogJ1NlY3VyaXR5IEF1ZGl0IExvZycsDQogICAgICAgIDIxOiAnTmV0d29yayBUaW1lJywNCiAgICAgICAgMjI6ICdOZXR3b3JrIEFkbWluaXN0cmF0aW9uJywNCiAgICAgICAgMjM6ICdTdG9yYWdlIEFkbWluaXN0cmF0aW9uJywNCiAgICAgICAgMjQ6ICdFdmVudCBNYW5hZ2VyJywNCiAgICAgICAgMjU6ICdDaXJjdWl0IEJyZWFrZXIgTWFuYWdlcicsDQogICAgICAgIDI2OiAnQWdlbnQgUHJlc2VuY2UgTWFuYWdlcicsDQogICAgICAgIDI3OiAnV2lyZWxlc3MgQ29uZmlndXJhdGlvbicsDQogICAgICAgIDI4OiAnRUFDJywNCiAgICAgICAgMjk6ICdLVk0nLA0KICAgICAgICAzMDogJ1VzZXIgT3B0LUluIEV2ZW50cycsDQogICAgICAgIDMyOiAnU2NyZWVuIEJsYW5raW5nJywNCiAgICAgICAgMzM6ICdXYXRjaGRvZyBFdmVudHMnLA0KICAgICAgICAxNjAwOiAnUHJvdmlzaW9uaW5nIFN0YXJ0ZWQnLA0KICAgICAgICAxNjAxOiAnUHJvdmlzaW9uaW5nIENvbXBsZXRlZCcsDQogICAgICAgIDE2MDI6ICdBQ0wgRW50cnkgQWRkZWQnLA0KICAgICAgICAxNjAzOiAnQUNMIEVudHJ5IE1vZGlmaWVkJywNCiAgICAgICAgMTYwNDogJ0FDTCBFbnRyeSBSZW1vdmVkJywNCiAgICAgICAgMTYwNTogJ0FDTCBBY2Nlc3Mgd2l0aCBJbnZhbGlkIENyZWRlbnRpYWxzJywNCiAgICAgICAgMTYwNjogJ0FDTCBFbnRyeSBTdGF0ZScsDQogICAgICAgIDE2MDc6ICdUTFMgU3RhdGUgQ2hhbmdlZCcsDQogICAgICAgIDE2MDg6ICdUTFMgU2VydmVyIENlcnRpZmljYXRlIFNldCcsDQogICAgICAgIDE2MDk6ICdUTFMgU2VydmVyIENlcnRpZmljYXRlIFJlbW92ZScsDQogICAgICAgIDE2MTA6ICdUTFMgVHJ1c3RlZCBSb290IENlcnRpZmljYXRlIEFkZGVkJywNCiAgICAgICAgMTYxMTogJ1RMUyBUcnVzdGVkIFJvb3QgQ2VydGlmaWNhdGUgUmVtb3ZlZCcsDQogICAgICAgIDE2MTI6ICdUTFMgUHJlc2hhcmVkIEtleSBTZXQnLA0KICAgICAgICAxNjEzOiAnS2VyYmVyb3MgU2V0dGluZ3MgTW9kaWZpZWQnLA0KICAgICAgICAxNjE0OiAnS2VyYmVyb3MgTWFzdGVyIEtleSBNb2RpZmllZCcsDQogICAgICAgIDE2MTU6ICdGbGFzaCBXZWFyIG91dCBDb3VudGVycyBSZXNldCcsDQogICAgICAgIDE2MTY6ICdQb3dlciBQYWNrYWdlIE1vZGlmaWVkJywNCiAgICAgICAgMTYxNzogJ1NldCBSZWFsbSBBdXRoZW50aWNhdGlvbiBNb2RlJywNCiAgICAgICAgMTYxODogJ1VwZ3JhZGUgQ2xpZW50IHRvIEFkbWluIENvbnRyb2wgTW9kZScsDQogICAgICAgIDE2MTk6ICdVbnByb3Zpc2lvbmluZyBTdGFydGVkJywNCiAgICAgICAgMTcwMDogJ1BlcmZvcm1lZCBQb3dlciBVcCcsDQogICAgICAgIDE3MDE6ICdQZXJmb3JtZWQgUG93ZXIgRG93bicsDQogICAgICAgIDE3MDI6ICdQZXJmb3JtZWQgUG93ZXIgQ3ljbGUnLA0KICAgICAgICAxNzAzOiAnUGVyZm9ybWVkIFJlc2V0JywNCiAgICAgICAgMTcwNDogJ1NldCBCb290IE9wdGlvbnMnLA0KICAgICAgICAxODAwOiAnSURFUiBTZXNzaW9uIE9wZW5lZCcsDQogICAgICAgIDE4MDE6ICdJREVSIFNlc3Npb24gQ2xvc2VkJywNCiAgICAgICAgMTgwMjogJ0lERVIgRW5hYmxlZCcsDQogICAgICAgIDE4MDM6ICdJREVSIERpc2FibGVkJywNCiAgICAgICAgMTgwNDogJ1NvTCBTZXNzaW9uIE9wZW5lZCcsDQogICAgICAgIDE4MDU6ICdTb0wgU2Vzc2lvbiBDbG9zZWQnLA0KICAgICAgICAxODA2OiAnU29MIEVuYWJsZWQnLA0KICAgICAgICAxODA3OiAnU29MIERpc2FibGVkJywNCiAgICAgICAgMTgwODogJ0tWTSBTZXNzaW9uIFN0YXJ0ZWQnLA0KICAgICAgICAxODA5OiAnS1ZNIFNlc3Npb24gRW5kZWQnLA0KICAgICAgICAxODEwOiAnS1ZNIEVuYWJsZWQnLA0KICAgICAgICAxODExOiAnS1ZNIERpc2FibGVkJywNCiAgICAgICAgMTgxMjogJ1ZOQyBQYXNzd29yZCBGYWlsZWQgMyBUaW1lcycsDQogICAgICAgIDE5MDA6ICdGaXJtd2FyZSBVcGRhdGVkJywNCiAgICAgICAgMTkwMTogJ0Zpcm13YXJlIFVwZGF0ZSBGYWlsZWQnLA0KICAgICAgICAyMDAwOiAnU2VjdXJpdHkgQXVkaXQgTG9nIENsZWFyZWQnLA0KICAgICAgICAyMDAxOiAnU2VjdXJpdHkgQXVkaXQgUG9saWN5IE1vZGlmaWVkJywNCiAgICAgICAgMjAwMjogJ1NlY3VyaXR5IEF1ZGl0IExvZyBEaXNhYmxlZCcsDQogICAgICAgIDIwMDM6ICdTZWN1cml0eSBBdWRpdCBMb2cgRW5hYmxlZCcsDQogICAgICAgIDIwMDQ6ICdTZWN1cml0eSBBdWRpdCBMb2cgRXhwb3J0ZWQnLA0KICAgICAgICAyMDA1OiAnU2VjdXJpdHkgQXVkaXQgTG9nIFJlY292ZXJlZCcsDQogICAgICAgIDIxMDA6ICdJbnRlbCZyZWc7IE1FIFRpbWUgU2V0JywNCiAgICAgICAgMjIwMDogJ1RDUElQIFBhcmFtZXRlcnMgU2V0JywNCiAgICAgICAgMjIwMTogJ0hvc3QgTmFtZSBTZXQnLA0KICAgICAgICAyMjAyOiAnRG9tYWluIE5hbWUgU2V0JywNCiAgICAgICAgMjIwMzogJ1ZMQU4gUGFyYW1ldGVycyBTZXQnLA0KICAgICAgICAyMjA0OiAnTGluayBQb2xpY3kgU2V0JywNCiAgICAgICAgMjIwNTogJ0lQdjYgUGFyYW1ldGVycyBTZXQnLA0KICAgICAgICAyMzAwOiAnR2xvYmFsIFN0b3JhZ2UgQXR0cmlidXRlcyBTZXQnLA0KICAgICAgICAyMzAxOiAnU3RvcmFnZSBFQUNMIE1vZGlmaWVkJywNCiAgICAgICAgMjMwMjogJ1N0b3JhZ2UgRlBBQ0wgTW9kaWZpZWQnLA0KICAgICAgICAyMzAzOiAnU3RvcmFnZSBXcml0ZSBPcGVyYXRpb24nLA0KICAgICAgICAyNDAwOiAnQWxlcnQgU3Vic2NyaWJlZCcsDQogICAgICAgIDI0MDE6ICdBbGVydCBVbnN1YnNjcmliZWQnLA0KICAgICAgICAyNDAyOiAnRXZlbnQgTG9nIENsZWFyZWQnLA0KICAgICAgICAyNDAzOiAnRXZlbnQgTG9nIEZyb3plbicsDQogICAgICAgIDI1MDA6ICdDQiBGaWx0ZXIgQWRkZWQnLA0KICAgICAgICAyNTAxOiAnQ0IgRmlsdGVyIFJlbW92ZWQnLA0KICAgICAgICAyNTAyOiAnQ0IgUG9saWN5IEFkZGVkJywNCiAgICAgICAgMjUwMzogJ0NCIFBvbGljeSBSZW1vdmVkJywNCiAgICAgICAgMjUwNDogJ0NCIERlZmF1bHQgUG9saWN5IFNldCcsDQogICAgICAgIDI1MDU6ICdDQiBIZXVyaXN0aWNzIE9wdGlvbiBTZXQnLA0KICAgICAgICAyNTA2OiAnQ0IgSGV1cmlzdGljcyBTdGF0ZSBDbGVhcmVkJywNCiAgICAgICAgMjYwMDogJ0FnZW50IFdhdGNoZG9nIEFkZGVkJywNCiAgICAgICAgMjYwMTogJ0FnZW50IFdhdGNoZG9nIFJlbW92ZWQnLA0KICAgICAgICAyNjAyOiAnQWdlbnQgV2F0Y2hkb2cgQWN0aW9uIFNldCcsDQogICAgICAgIDI3MDA6ICdXaXJlbGVzcyBQcm9maWxlIEFkZGVkJywNCiAgICAgICAgMjcwMTogJ1dpcmVsZXNzIFByb2ZpbGUgUmVtb3ZlZCcsDQogICAgICAgIDI3MDI6ICdXaXJlbGVzcyBQcm9maWxlIFVwZGF0ZWQnLA0KICAgICAgICAyODAwOiAnRUFDIFBvc3R1cmUgU2lnbmVyIFNFVCcsDQogICAgICAgIDI4MDE6ICdFQUMgRW5hYmxlZCcsDQogICAgICAgIDI4MDI6ICdFQUMgRGlzYWJsZWQnLA0KICAgICAgICAyODAzOiAnRUFDIFBvc3R1cmUgU3RhdGUnLA0KICAgICAgICAyODA0OiAnRUFDIFNldCBPcHRpb25zJywNCiAgICAgICAgMjkwMDogJ0tWTSBPcHQtaW4gRW5hYmxlZCcsDQogICAgICAgIDI5MDE6ICdLVk0gT3B0LWluIERpc2FibGVkJywNCiAgICAgICAgMjkwMjogJ0tWTSBQYXNzd29yZCBDaGFuZ2VkJywNCiAgICAgICAgMjkwMzogJ0tWTSBDb25zZW50IFN1Y2NlZWRlZCcsDQogICAgICAgIDI5MDQ6ICdLVk0gQ29uc2VudCBGYWlsZWQnLA0KICAgICAgICAzMDAwOiAnT3B0LUluIFBvbGljeSBDaGFuZ2UnLA0KICAgICAgICAzMDAxOiAnU2VuZCBDb25zZW50IENvZGUgRXZlbnQnLA0KICAgICAgICAzMDAyOiAnU3RhcnQgT3B0LUluIEJsb2NrZWQgRXZlbnQnDQogICAgfQ0KDQogICAgLy8gUmV0dXJuIGh1bWFuIHJlYWRhYmxlIGV4dGVuZGVkIGF1ZGl0IGxvZyBkYXRhDQogICAgLy8gVE9ETzogSnVzdCBwdXQgc29tZSBvZiB0aGVtIGhlcmUsIGJ1dCBtYW55IG1vcmUgc3RpbGwgbmVlZCB0byBiZSBhZGRlZCwgaGVscGZ1bCBsaW5rIGhlcmU6DQogICAgLy8gaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvbWFuYWdlYWJpbGl0eS9BTVRfSW1wbGVtZW50YXRpb25fYW5kX1JlZmVyZW5jZV9HdWlkZS9kZWZhdWx0Lmh0bT90dXJsPVdvcmREb2N1bWVudHMlMkZzZWN1cml0eWFkbWluZXZlbnRzLmh0bQ0KICAgIG9iai5HZXRBdWRpdExvZ0V4dGVuZGVkRGF0YVN0ciA9IGZ1bmN0aW9uIChpZCwgZGF0YSkgew0KICAgICAgICBpZiAoKGlkID09IDE2MDIgfHwgaWQgPT0gMTYwNCkgJiYgZGF0YS5jaGFyQ29kZUF0KDApID09IDApIHsgcmV0dXJuIGRhdGEuc3Vic3RyaW5nKDIsIDIgKyBkYXRhLmNoYXJDb2RlQXQoMSkpOyB9IC8vIEFDTCBFbnRyeSBBZGRlZC9SZW1vdmVkIChEaWdlc3QpDQogICAgICAgIGlmIChpZCA9PSAxNjAzKSB7IGlmIChkYXRhLmNoYXJDb2RlQXQoMSkgPT0gMCkgeyByZXR1cm4gZGF0YS5zdWJzdHJpbmcoMyk7IH0gcmV0dXJuIG51bGw7IH0gLy8gQUNMIEVudHJ5IE1vZGlmaWVkDQogICAgICAgIGlmIChpZCA9PSAxNjA1KSB7IHJldHVybiBbIkludmFsaWQgTUUgYWNjZXNzIiwgIkludmFsaWQgTUVCeCBhY2Nlc3MiXVtkYXRhLmNoYXJDb2RlQXQoMCldOyB9IC8vIEFDTCBBY2Nlc3Mgd2l0aCBJbnZhbGlkIENyZWRlbnRpYWxzDQogICAgICAgIGlmIChpZCA9PSAxNjA2KSB7IHZhciByID0gWyJEaXNhYmxlZCIsICJFbmFibGVkIl1bZGF0YS5jaGFyQ29kZUF0KDApXTsgaWYgKGRhdGEuY2hhckNvZGVBdCgxKSA9PSAwKSB7IHIgKz0gIiwgIiArIGRhdGEuc3Vic3RyaW5nKDMpOyB9IHJldHVybiByO30gLy8gQUNMIEVudHJ5IFN0YXRlDQogICAgICAgIGlmIChpZCA9PSAxNjA3KSB7IHJldHVybiAiUmVtb3RlICIgKyBbIk5vQXV0aCIsICJTZXJ2ZXJBdXRoIiwgIk11dHVhbEF1dGgiXVtkYXRhLmNoYXJDb2RlQXQoMCldICsgIiwgTG9jYWwgIiArIFsiTm9BdXRoIiwgIlNlcnZlckF1dGgiLCAiTXV0dWFsQXV0aCJdW2RhdGEuY2hhckNvZGVBdCgxKV07IH0gLy8gVExTIFN0YXRlIENoYW5nZWQNCiAgICAgICAgaWYgKGlkID09IDE2MTcpIHsgcmV0dXJuIG9iai5SZWFsbU5hbWVzW1JlYWRJbnQoZGF0YSwgMCldICsgIiwgIiArIFsiTm9BdXRoIiwgIkF1dGgiLCAiRGlzYWJsZWQiXVtkYXRhLmNoYXJDb2RlQXQoNCldOyB9IC8vIFNldCBSZWFsbSBBdXRoZW50aWNhdGlvbiBNb2RlDQogICAgICAgIGlmIChpZCA9PSAxNjE5KSB7IHJldHVybiBbIkJJT1MiLCAiTUVCeCIsICJMb2NhbCBNRUkiLCAiTG9jYWwgV1NNQU4iLCAiUmVtb3RlIFdTQU1OIl1bZGF0YS5jaGFyQ29kZUF0KDApXTsgfSAvLyBJbnRlbCBBTVQgVW5wcm92aXNpb25pbmcgU3RhcnRlZA0KICAgICAgICBpZiAoaWQgPT0gMTkwMCkgeyByZXR1cm4gIkZyb20gIiArIFJlYWRTaG9ydChkYXRhLCAwKSArICIuIiArIFJlYWRTaG9ydChkYXRhLCAyKSArICIuIiArIFJlYWRTaG9ydChkYXRhLCA0KSArICIuIiArIFJlYWRTaG9ydChkYXRhLCA2KSArICIgdG8gIiArIFJlYWRTaG9ydChkYXRhLCA4KSArICIuIiArIFJlYWRTaG9ydChkYXRhLCAxMCkgKyAiLiIgKyBSZWFkU2hvcnQoZGF0YSwgMTIpICsgIi4iICsgUmVhZFNob3J0KGRhdGEsIDE0KTsgfSAvLyBGaXJtd2FyZSBVcGRhdGVkDQogICAgICAgIGlmIChpZCA9PSAyMTAwKSB7IHZhciB0NCA9IG5ldyBEYXRlKCk7IHQ0LnNldFRpbWUoUmVhZEludChkYXRhLCAwKSAqIDEwMDAgKyAobmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpICogNjAwMDApKTsgcmV0dXJuIHQ0LnRvTG9jYWxlU3RyaW5nKCk7IH0gLy8gSW50ZWwgQU1UIFRpbWUgU2V0DQogICAgICAgIGlmIChpZCA9PSAzMDAwKSB7IHJldHVybiAiRnJvbSAiICsgWyJOb25lIiwgIktWTSIsICJBbGwiXVtkYXRhLmNoYXJDb2RlQXQoMCldICsgIiB0byAiICsgWyJOb25lIiwgIktWTSIsICJBbGwiXVtkYXRhLmNoYXJDb2RlQXQoMSldOyB9IC8vIE9wdC1JbiBQb2xpY3kgQ2hhbmdlDQogICAgICAgIGlmIChpZCA9PSAzMDAxKSB7IHJldHVybiBbIlN1Y2Nlc3MiLCAiRmFpbGVkIDMgdGltZXMiXVtkYXRhLmNoYXJDb2RlQXQoMCldOyB9IC8vIFNlbmQgQ29uc2VudCBDb2RlIEV2ZW50DQogICAgICAgIHJldHVybiBudWxsOw0KICAgIH0NCg0KICAgIG9iai5HZXRBdWRpdExvZyA9IGZ1bmN0aW9uIChmdW5jKSB7DQogICAgICAgIG9iai5BTVRfQXVkaXRMb2dfUmVhZFJlY29yZHMoMSwgX0dldEF1ZGl0TG9nMCwgW2Z1bmMsIFtdXSk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gX0dldEF1ZGl0TG9nMChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMsIHRhZykgew0KICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyB0YWdbMF0ob2JqLCBbXSwgc3RhdHVzKTsgcmV0dXJuOyB9DQogICAgICAgIHZhciBwdHIsIGksIGUsIHgsIHIgPSB0YWdbMV0sIHQgPSBuZXcgRGF0ZSgpLCBUaW1lU3RhbXA7DQoNCiAgICAgICAgaWYgKHJlc3BvbnNlcy5Cb2R5WydSZWNvcmRzUmV0dXJuZWQnXSA+IDApIHsNCiAgICAgICAgICAgIHJlc3BvbnNlcy5Cb2R5WydFdmVudFJlY29yZHMnXSA9IE1ha2VUb0FycmF5KHJlc3BvbnNlcy5Cb2R5WydFdmVudFJlY29yZHMnXSk7DQoNCiAgICAgICAgICAgIGZvciAoaSBpbiByZXNwb25zZXMuQm9keVsnRXZlbnRSZWNvcmRzJ10pIHsNCiAgICAgICAgICAgICAgICBlID0gbnVsbDsNCiAgICAgICAgICAgICAgICB0cnkgew0KICAgICAgICAgICAgICAgICAgICBlID0gd2luZG93LmF0b2IocmVzcG9uc2VzLkJvZHlbJ0V2ZW50UmVjb3JkcyddW2ldKTsNCiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7DQogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGUgKyAiICIgKyByZXNwb25zZXMuQm9keVsnRXZlbnRSZWNvcmRzJ11baV0pDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHggPSB7ICdBdWRpdEFwcElEJzogUmVhZFNob3J0KGUsIDApLCAnRXZlbnRJRCc6IFJlYWRTaG9ydChlLCAyKSwgJ0luaXRpYXRvclR5cGUnOiBlLmNoYXJDb2RlQXQoNCkgfTsNCiAgICAgICAgICAgICAgICB4WydBdWRpdEFwcCddID0gX0FtdEF1ZGl0U3RyaW5nVGFibGVbeFsnQXVkaXRBcHBJRCddXTsNCiAgICAgICAgICAgICAgICB4WydFdmVudCddID0gX0FtdEF1ZGl0U3RyaW5nVGFibGVbKHhbJ0F1ZGl0QXBwSUQnXSAqIDEwMCkgKyB4WydFdmVudElEJ11dOw0KICAgICAgICAgICAgICAgIGlmICgheFsnRXZlbnQnXSkgeFsnRXZlbnQnXSA9ICcjJyArIHhbJ0V2ZW50SUQnXTsNCg0KICAgICAgICAgICAgICAgIC8vIFJlYWQgYW5kIHByb2Nlc3MgdGhlIGluaXRpYXRvcg0KICAgICAgICAgICAgICAgIGlmICh4WydJbml0aWF0b3JUeXBlJ10gPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAvLyBIVFRQIGRpZ2VzdA0KICAgICAgICAgICAgICAgICAgICB2YXIgdXNlcmxlbiA9IGUuY2hhckNvZGVBdCg1KTsNCiAgICAgICAgICAgICAgICAgICAgeFsnSW5pdGlhdG9yJ10gPSBlLnN1YnN0cmluZyg2LCA2ICsgdXNlcmxlbik7DQogICAgICAgICAgICAgICAgICAgIHB0ciA9IDYgKyB1c2VybGVuOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoeFsnSW5pdGlhdG9yVHlwZSddID09IDEpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gS2VyYmVyb3MNCiAgICAgICAgICAgICAgICAgICAgeFsnS2VyYmVyb3NVc2VySW5Eb21haW4nXSA9IFJlYWRJbnQoZSwgNSk7DQogICAgICAgICAgICAgICAgICAgIHZhciB1c2VybGVuID0gZS5jaGFyQ29kZUF0KDkpOw0KICAgICAgICAgICAgICAgICAgICB4WydJbml0aWF0b3InXSA9IEdldFNpZFN0cmluZyhlLnN1YnN0cmluZygxMCwgMTAgKyB1c2VybGVuKSk7DQogICAgICAgICAgICAgICAgICAgIHB0ciA9IDEwICsgdXNlcmxlbjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHhbJ0luaXRpYXRvclR5cGUnXSA9PSAyKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIExvY2FsDQogICAgICAgICAgICAgICAgICAgIHhbJ0luaXRpYXRvciddID0gJzxpPkxvY2FsPC9pPic7DQogICAgICAgICAgICAgICAgICAgIHB0ciA9IDU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICh4WydJbml0aWF0b3JUeXBlJ10gPT0gMykgew0KICAgICAgICAgICAgICAgICAgICAvLyBLVk0gRGVmYXVsdCBQb3J0DQogICAgICAgICAgICAgICAgICAgIHhbJ0luaXRpYXRvciddID0gJzxpPktWTSBEZWZhdWx0IFBvcnQ8L2k+JzsNCiAgICAgICAgICAgICAgICAgICAgcHRyID0gNTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBSZWFkIHRpbWVzdGFtcA0KICAgICAgICAgICAgICAgIFRpbWVTdGFtcCA9IFJlYWRJbnQoZSwgcHRyKTsNCiAgICAgICAgICAgICAgICB4WydUaW1lJ10gPSBuZXcgRGF0ZSgoVGltZVN0YW1wICsgKHQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwKSkgKiAxMDAwKTsNCiAgICAgICAgICAgICAgICBwdHIgKz0gNDsNCg0KICAgICAgICAgICAgICAgIC8vIFJlYWQgbmV0d29yayBhY2Nlc3MNCiAgICAgICAgICAgICAgICB4WydNQ0xvY2F0aW9uVHlwZSddID0gZS5jaGFyQ29kZUF0KHB0cisrKTsNCiAgICAgICAgICAgICAgICB2YXIgbmV0bGVuID0gZS5jaGFyQ29kZUF0KHB0cisrKTsNCiAgICAgICAgICAgICAgICB4WydOZXRBZGRyZXNzJ10gPSBlLnN1YnN0cmluZyhwdHIsIHB0ciArIG5ldGxlbik7DQoNCiAgICAgICAgICAgICAgICAvLyBSZWFkIGV4dGVuZGVkIGRhdGENCiAgICAgICAgICAgICAgICBwdHIgKz0gbmV0bGVuOw0KICAgICAgICAgICAgICAgIHZhciBleGxlbiA9IGUuY2hhckNvZGVBdChwdHIrKyk7DQogICAgICAgICAgICAgICAgeFsnRXgnXSA9IGUuc3Vic3RyaW5nKHB0ciwgcHRyICsgZXhsZW4pOw0KICAgICAgICAgICAgICAgIHhbJ0V4U3RyJ10gPSBvYmouR2V0QXVkaXRMb2dFeHRlbmRlZERhdGFTdHIoKHhbJ0F1ZGl0QXBwSUQnXSAqIDEwMCkgKyB4WydFdmVudElEJ10sIHhbJ0V4J10pOw0KDQogICAgICAgICAgICAgICAgci5wdXNoKHgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChyZXNwb25zZXMuQm9keVsnVG90YWxSZWNvcmRDb3VudCddID4gci5sZW5ndGgpIHsNCiAgICAgICAgICAgIG9iai5BTVRfQXVkaXRMb2dfUmVhZFJlY29yZHMoci5sZW5ndGggKyAxLCBfR2V0QXVkaXRMb2cwLCBbdGFnWzBdLCByXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0YWdbMF0ob2JqLCByLCBzdGF0dXMpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgDQogICAgcmV0dXJuIG9iajsNCn0NCg0KDQoNCg0KLy8gRm9yZ2UgTUQ1DQpmdW5jdGlvbiBoZXhfbWQ1KHN0cikgeyByZXR1cm4gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpLnVwZGF0ZShzdHIpLmRpZ2VzdCgpLnRvSGV4KCk7IH0NCg0KDQoNCi8vIFBlcmZvcm0gTUQ1IG9uIHJhdyBzdHJpbmcgYW5kIHJldHVybiByYXcgc3RyaW5nIHJlc3VsdA0KZnVuY3Rpb24gcnN0cl9tZDUoc3RyKSB7IHJldHVybiBoZXgycnN0cihoZXhfbWQ1KHN0cikpOyB9DQoNCi8qDQpDb252ZXJ0IGFyZ3VtZW50cyBpbnRvIHNlbGVjdG9yIHNldCBhbmQgYm9keSBYTUwuIFVzZWQgYnkgQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2VfVXBkYXRlV2lGaVNldHRpbmdzLg0KYXJncyA9IHsgDQoJIldpRmlFbmRwb2ludCI6IHsNCgkJX19wYXJhbWV0ZXJUeXBlOiAncmVmZXJlbmNlJywNCgkJX19yZXNvdXJjZVVyaTogJ2h0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NjaW0vMS9jaW0tc2NoZW1hLzIvQ0lNX1dpRmlFbmRwb2ludCcsDQoJCU5hbWU6ICdXaUZpIEVuZHBvaW50IDAnDQoJfSwgDQoJIldpRmlFbmRwb2ludFNldHRpbmdzSW5wdXQiOiANCgl7DQoJCV9fcGFyYW1ldGVyVHlwZTogJ2luc3RhbmNlJywNCgkJX19uYW1lc3BhY2U6ICdodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncycsDQoJCUVsZW1lbnROYW1lOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtcHJvZmlsZU5hbWUnKS52YWx1ZSwNCgkJSW5zdGFuY2VJRDogJ0ludGVsKHIpIEFNVDpXaUZpIEVuZHBvaW50IFNldHRpbmdzICcgKyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtcHJvZmlsZU5hbWUnKS52YWx1ZSwNCgkJQXV0aGVudGljYXRpb25NZXRob2Q6IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNlZGl0UHJvZmlsZS1uZXR3b3JrQXV0aGVudGljYXRpb24nKS52YWx1ZSwNCgkJLy9CU1NUeXBlOiAzLCAvLyBJbnRlbChyKSBBTVQgc3VwcG9ydHMgb25seSBpbmZyYXN0cnVjdHVyZSBuZXR3b3Jrcw0KCQlFbmNyeXB0aW9uTWV0aG9kOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtZW5jcnlwdGlvbicpLnZhbHVlLA0KCQlTU0lEOiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjZWRpdFByb2ZpbGUtbmV0d29ya05hbWUnKS52YWx1ZSwNCgkJUHJpb3JpdHk6IDEwMCwNCgkJUFNLUGFzc1BocmFzZTogZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2VkaXRQcm9maWxlLXBhc3NQaHJhc2UnKS52YWx1ZQ0KCX0sIA0KCSJJRUVFODAyMXhTZXR0aW5nc0lucHV0IjogbnVsbCwgDQoJIkNsaWVudENyZWRlbnRpYWwiOiBudWxsLCANCgkiQ0FDcmVkZW50aWFsIjogbnVsbCANCn0sIA0KKi8NCmZ1bmN0aW9uIGV4ZWNBcmd1bWVudHNUb1htbChhcmdzKSB7DQoJaWYoYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3MgPT09IG51bGwpIHJldHVybiBudWxsOw0KCQ0KCXZhciByZXN1bHQgPSAnJzsNCglmb3IodmFyIGFyZ05hbWUgaW4gYXJncykgew0KCQl2YXIgYXJnID0gYXJnc1thcmdOYW1lXTsNCgkJaWYoIWFyZykgY29udGludWU7DQoJCWlmKGFyZ1snX19wYXJhbWV0ZXJUeXBlJ10gPT09ICdyZWZlcmVuY2UnKSByZXN1bHQgKz0gcmVmZXJlbmNlVG9YbWwoYXJnTmFtZSwgYXJnKTsNCgkJZWxzZSByZXN1bHQgKz0gaW5zdGFuY2VUb1htbChhcmdOYW1lLCBhcmcpOw0KCQkvL2lmKGFyZ1snX19pc0luc3RhbmNlJ10pIHJlc3VsdCArPSBpbnN0YW5jZVRvWG1sKGFyZ05hbWUsIGFyZyk7DQoJfQ0KCXJldHVybiByZXN1bHQ7DQp9DQoNCi8qKg0KICogQ29udmVydCBKYXZhU2NyaXB0IG9iamVjdCBpbnRvIFhNTA0KIA0KCTxyOldpRmlFbmRwb2ludFNldHRpbmdzSW5wdXQgeG1sbnM6cT0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NpbS1zY2hlbWEvMi9DSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MiPg0KCQk8cTpFbGVtZW50TmFtZT5XaXJlbGVzcy1Qcm9maWxlLUFkbWluPC9xOkVsZW1lbnROYW1lPg0KCQk8cTpJbnN0YW5jZUlEPkludGVsKHIpIEFNVDpXaUZpIEVuZHBvaW50IFNldHRpbmdzIFdpcmVsZXNzLVByb2ZpbGUtQWRtaW48L3E6SW5zdGFuY2VJRD4NCgkJPHE6QXV0aGVudGljYXRpb25NZXRob2Q+NjwvcTpBdXRoZW50aWNhdGlvbk1ldGhvZD4NCgkJPHE6RW5jcnlwdGlvbk1ldGhvZD40PC9xOkVuY3J5cHRpb25NZXRob2Q+DQoJCTxxOlByaW9yaXR5PjEwMDwvcTpQcmlvcml0eT4NCgkJPHE6UFNLUGFzc1BocmFzZT54eHh4eHh4eDwvcTpQU0tQYXNzUGhyYXNlPg0KCTwvcjpXaUZpRW5kcG9pbnRTZXR0aW5nc0lucHV0Pg0KICovDQpmdW5jdGlvbiBpbnN0YW5jZVRvWG1sKGluc3RhbmNlTmFtZSwgaW5JbnN0YW5jZSkgew0KCWlmKGluSW5zdGFuY2UgPT09IHVuZGVmaW5lZCB8fCBpbkluc3RhbmNlID09PSBudWxsKSByZXR1cm4gbnVsbDsNCgkNCgl2YXIgaGFzTmFtZXNwYWNlID0gISFpbkluc3RhbmNlWydfX25hbWVzcGFjZSddOw0KCXZhciBzdGFydFRhZyA9IGhhc05hbWVzcGFjZSA/ICc8cTonIDogJzwnOw0KCXZhciBlbmRUYWcgPSBoYXNOYW1lc3BhY2UgPyAnPC9xOicgOiAnPC8nOw0KCXZhciBuYW1lc3BhY2VEZWYgPSBoYXNOYW1lc3BhY2UgPyAoJyB4bWxuczpxPSInICsgaW5JbnN0YW5jZVsnX19uYW1lc3BhY2UnXSArICciJyApOiAnJzsNCgl2YXIgcmVzdWx0ID0gJzxyOicgKyBpbnN0YW5jZU5hbWUgKyBuYW1lc3BhY2VEZWYgKyAnPic7DQoJZm9yKHZhciBwcm9wIGluIGluSW5zdGFuY2UpIHsNCgkJaWYgKCFpbkluc3RhbmNlLmhhc093blByb3BlcnR5KHByb3ApIHx8IHByb3AuaW5kZXhPZignX18nKSA9PT0gMCkgY29udGludWU7DQoJCQ0KCQlpZiAodHlwZW9mIGluSW5zdGFuY2VbcHJvcF0gPT09ICdmdW5jdGlvbicgfHwgQXJyYXkuaXNBcnJheShpbkluc3RhbmNlW3Byb3BdKSApIGNvbnRpbnVlOw0KCQkNCgkJaWYgKHR5cGVvZiBpbkluc3RhbmNlW3Byb3BdID09PSAnb2JqZWN0Jykgew0KCQkJLy9yZXN1bHQgKz0gc3RhcnRUYWcgKyBwcm9wICsnPicgKyBpbnN0YW5jZVRvWG1sKCdwcm9wJywgaW5JbnN0YW5jZVtwcm9wXSkgKyBlbmRUYWcgKyBwcm9wICsnPic7DQoJCQljb25zb2xlLmVycm9yKCdvbmx5IGNvbnZlcnQgb25lIGxldmVsIGRvd24uLi4nKTsNCgkJfQ0KCQllbHNlIHsNCgkJCXJlc3VsdCArPSBzdGFydFRhZyArIHByb3AgKyc+JyArIGluSW5zdGFuY2VbcHJvcF0udG9TdHJpbmcoKSArIGVuZFRhZyArIHByb3AgKyc+JzsNCgkJfQ0KCX0NCglyZXN1bHQgKz0gJzwvcjonICsgaW5zdGFuY2VOYW1lICsgJz4nOw0KCXJldHVybiByZXN1bHQ7DQp9DQoNCg0KLyoqDQogKiBDb252ZXJ0IGEgc2VsZWN0b3Igc2V0IGludG8gWE1MLiBFeHBlY3Qgbm8gbmVzdGluZy4NCiAqIHsNCiAqIAlzZWxlY3Rvck5hbWUgOiBzZWxlY3RvclZhbHVlLA0KICogCXNlbGVjdG9yTmFtZSA6IHNlbGVjdG9yVmFsdWUsDQogKgkuLi4gLi4uDQogKiB9DQogDQoJPHI6V2lGaUVuZHBvaW50Pg0KCQk8YTpBZGRyZXNzPmh0dHA6Ly8xOTIuMTY4LjEuMTAzOjE2OTkyL3dzbWFuPC9hOkFkZHJlc3M+DQoJCTxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+DQoJCQk8dzpSZXNvdXJjZVVSST5odHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9XaUZpRW5kcG9pbnQ8L3c6UmVzb3VyY2VVUkk+DQoJCQk8dzpTZWxlY3RvclNldD4NCgkJCQk8dzpTZWxlY3RvciBOYW1lPSJOYW1lIj5XaUZpIEVuZHBvaW50IDA8L3c6U2VsZWN0b3I+DQoJCQk8L3c6U2VsZWN0b3JTZXQ+DQoJCTwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPg0KCTwvcjpXaUZpRW5kcG9pbnQ+DQoJCQkNCiAqLw0KZnVuY3Rpb24gcmVmZXJlbmNlVG9YbWwocmVmZXJlbmNlTmFtZSwgaW5SZWZlcmVuY2UpIHsNCglpZihpblJlZmVyZW5jZSA9PT0gdW5kZWZpbmVkIHx8IGluUmVmZXJlbmNlID09PSBudWxsICkgcmV0dXJuIG51bGw7DQoJDQoJdmFyIHJlc3VsdCA9ICc8cjonICsgcmVmZXJlbmNlTmFtZSArICc+PGE6QWRkcmVzcz4vd3NtYW48L2E6QWRkcmVzcz48YTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjx3OlJlc291cmNlVVJJPicrIGluUmVmZXJlbmNlWydfX3Jlc291cmNlVXJpJ10rJzwvdzpSZXNvdXJjZVVSST48dzpTZWxlY3RvclNldD4nOw0KCWZvcih2YXIgc2VsZWN0b3JOYW1lIGluIGluUmVmZXJlbmNlKSB7DQoJCWlmICghaW5SZWZlcmVuY2UuaGFzT3duUHJvcGVydHkoc2VsZWN0b3JOYW1lKSB8fCBzZWxlY3Rvck5hbWUuaW5kZXhPZignX18nKSA9PT0gMCkgY29udGludWU7DQoJCQ0KCQlpZiAodHlwZW9mIGluUmVmZXJlbmNlW3NlbGVjdG9yTmFtZV0gPT09ICdmdW5jdGlvbicgfHwgDQoJCQl0eXBlb2YgaW5SZWZlcmVuY2Vbc2VsZWN0b3JOYW1lXSA9PT0gJ29iamVjdCcgfHwNCgkJCUFycmF5LmlzQXJyYXkoaW5SZWZlcmVuY2Vbc2VsZWN0b3JOYW1lXSkgKQ0KCQkJY29udGludWU7DQoJCQ0KCQlyZXN1bHQgKz0gJzx3OlNlbGVjdG9yIE5hbWU9IicgKyBzZWxlY3Rvck5hbWUgKyciPicgKyBpblJlZmVyZW5jZVtzZWxlY3Rvck5hbWVdLnRvU3RyaW5nKCkgKyAnPC93OlNlbGVjdG9yPic7DQoJfQ0KCQ0KCXJlc3VsdCArPSAnPC93OlNlbGVjdG9yU2V0PjwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjwvcjonICsgcmVmZXJlbmNlTmFtZSArICc+JzsNCglyZXR1cm4gcmVzdWx0Ow0KfQ0KDQovLyBDb252ZXJ0IGEgYnl0ZSBhcnJheSBvZiBTSUQgaW50byBzdHJpbmcNCmZ1bmN0aW9uIEdldFNpZFN0cmluZyhzaWQpIHsNCiAgICB2YXIgciA9ICJTLSIgKyBzaWQuY2hhckNvZGVBdCgwKSArICItIiArIHNpZC5jaGFyQ29kZUF0KDcpOw0KICAgIGZvciAodmFyIGkgPSAyOyBpIDwgKHNpZC5sZW5ndGggLyA0KSA7IGkrKykgciArPSAiLSIgKyBSZWFkSW50WChzaWQsIGkgKiA0KTsNCiAgICByZXR1cm4gcjsNCn0NCg0KLy8gQ29udmVydCBhIFNJRCByZWFkYWJsZSBzdHJpbmcgaW50byBieXRlcw0KZnVuY3Rpb24gR2V0U2lkQnl0ZUFycmF5KHNpZFN0cmluZykgew0KICAgIGlmICghc2lkU3RyaW5nIHx8IHNpZFN0cmluZyA9PSBudWxsKSByZXR1cm4gbnVsbDsNCiAgICB2YXIgc2lkUGFydHMgPSBzaWRTdHJpbmcuc3BsaXQoJy0nKTsNCg0KICAgIC8vIE1ha2Ugc3VyZSB0aGUgU0lEIGhhcyBhdCBsZWFzdCA0IHBhcnRzIGFuZCBzdGFydHMgd2l0aCAnUycNCiAgICBpZiAoc2lkUGFydHMubGVuZ3RoIDwgNCB8fCAoc2lkUGFydHNbMF0gIT0gJ3MnICYmIHNpZFBhcnRzWzBdICE9ICdTJykpIHJldHVybiBudWxsOw0KDQogICAgLy8gQ2hlY2sgdGhhdCBlYWNoIHBhcnQgb2YgdGhlIFNJRCBpcyByZWFsbHkgYW4gaW50ZWdlcg0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc2lkUGFydHMubGVuZ3RoOyBpKyspIHsgdmFyIHkgPSBwYXJzZUludChzaWRQYXJ0c1tpXSk7IGlmICh5ICE9IHNpZFBhcnRzW2ldKSByZXR1cm4gbnVsbDsgc2lkUGFydHNbaV0gPSB5OyB9DQoNCiAgICAvLyBWZXJzaW9uICg4IGJpdCkgKyBJZCBjb3VudCAoOCBiaXQpICsgNDggYml0IGluIGJpZyBlbmRpYW4gLS0gRE8gTk9UIHVzZSBiaXR3aXNlIHJpZ2h0IHNoaWZ0IG9wZXJhdG9yLiBKYXZhU2NyaXB0IGNvbnZlcnRzIHRoZSBudW1iZXIgaW50byBhIDMyIGJpdCBpbnRlZ2VyIGJlZm9yZSBzaGlmdGluZy4gSW4gcmVhbCB3b3JsZCwgaXQncyBoaWdobHkgbGlrZWx5IHRoaXMgcGFydCBpcyBhbHdheXMgMC4NCiAgICB2YXIgciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoc2lkUGFydHNbMV0pICsgU3RyaW5nLmZyb21DaGFyQ29kZShzaWRQYXJ0cy5sZW5ndGggLSAzKSArIFNob3J0VG9TdHIoTWF0aC5mbG9vcihzaWRQYXJ0c1syXSAvIE1hdGgucG93KDIsIDMyKSkpICsgSW50VG9TdHIoKHNpZFBhcnRzWzJdKSAmIDB4RkZGRik7DQoNCiAgICAvLyB0aGUgcmVzdCBhcmUgaW4gMzIgYml0IGluIGxpdHRsZSBlbmRpYW4NCiAgICBmb3IgKHZhciBpID0gMzsgaSA8IHNpZFBhcnRzLmxlbmd0aDsgaSsrKSByICs9IEludFRvU3RyWChzaWRQYXJ0c1tpXSk7DQogICAgcmV0dXJuIHI7DQp9DQooZnVuY3Rpb24ocm9vdCwgZmFjdG9yeSkgewogIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgZGVmaW5lKFtdLCBmYWN0b3J5KTsKICB9IGVsc2UgewogICAgcm9vdC5mb3JnZSA9IGZhY3RvcnkoKTsKICB9Cn0pKHRoaXMsIGZ1bmN0aW9uKCkgewovKioKICogbGljZW5zZSBhbG1vbmQgMC4yLjkgQ29weXJpZ2h0IChjKSAyMDExLTIwMTQsIFRoZSBEb2pvIEZvdW5kYXRpb24gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICogQXZhaWxhYmxlIHZpYSB0aGUgTUlUIG9yIG5ldyBCU0QgbGljZW5zZS4KICogc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL2FsbW9uZCBmb3IgZGV0YWlscwogKi8KLy9Hb2luZyBzbG9wcHkgdG8gYXZvaWQgJ3VzZSBzdHJpY3QnIHN0cmluZyBjb3N0LCBidXQgc3RyaWN0IHByYWN0aWNlcyBzaG91bGQKLy9iZSBmb2xsb3dlZC4KLypqc2xpbnQgc2xvcHB5OiB0cnVlICovCi8qZ2xvYmFsIHNldFRpbWVvdXQ6IGZhbHNlICovCgp2YXIgcmVxdWlyZWpzLCByZXF1aXJlLCBkZWZpbmU7CihmdW5jdGlvbiAodW5kZWYpIHsKICAgIHZhciBtYWluLCByZXEsIG1ha2VNYXAsIGhhbmRsZXJzLAogICAgICAgIGRlZmluZWQgPSB7fSwKICAgICAgICB3YWl0aW5nID0ge30sCiAgICAgICAgY29uZmlnID0ge30sCiAgICAgICAgZGVmaW5pbmcgPSB7fSwKICAgICAgICBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LAogICAgICAgIGFwcyA9IFtdLnNsaWNlLAogICAgICAgIGpzU3VmZml4UmVnRXhwID0gL1wuanMkLzsKCiAgICBmdW5jdGlvbiBoYXNQcm9wKG9iaiwgcHJvcCkgewogICAgICAgIHJldHVybiBoYXNPd24uY2FsbChvYmosIHByb3ApOwogICAgfQoKICAgIC8qKgogICAgICogR2l2ZW4gYSByZWxhdGl2ZSBtb2R1bGUgbmFtZSwgbGlrZSAuL3NvbWV0aGluZywgbm9ybWFsaXplIGl0IHRvCiAgICAgKiBhIHJlYWwgbmFtZSB0aGF0IGNhbiBiZSBtYXBwZWQgdG8gYSBwYXRoLgogICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBiYXNlTmFtZSBhIHJlYWwgbmFtZSB0aGF0IHRoZSBuYW1lIGFyZyBpcyByZWxhdGl2ZQogICAgICogdG8uCiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBub3JtYWxpemVkIG5hbWUKICAgICAqLwogICAgZnVuY3Rpb24gbm9ybWFsaXplKG5hbWUsIGJhc2VOYW1lKSB7CiAgICAgICAgdmFyIG5hbWVQYXJ0cywgbmFtZVNlZ21lbnQsIG1hcFZhbHVlLCBmb3VuZE1hcCwgbGFzdEluZGV4LAogICAgICAgICAgICBmb3VuZEksIGZvdW5kU3Rhck1hcCwgc3RhckksIGksIGosIHBhcnQsCiAgICAgICAgICAgIGJhc2VQYXJ0cyA9IGJhc2VOYW1lICYmIGJhc2VOYW1lLnNwbGl0KCIvIiksCiAgICAgICAgICAgIG1hcCA9IGNvbmZpZy5tYXAsCiAgICAgICAgICAgIHN0YXJNYXAgPSAobWFwICYmIG1hcFsnKiddKSB8fCB7fTsKCiAgICAgICAgLy9BZGp1c3QgYW55IHJlbGF0aXZlIHBhdGhzLgogICAgICAgIGlmIChuYW1lICYmIG5hbWUuY2hhckF0KDApID09PSAiLiIpIHsKICAgICAgICAgICAgLy9JZiBoYXZlIGEgYmFzZSBuYW1lLCB0cnkgdG8gbm9ybWFsaXplIGFnYWluc3QgaXQsCiAgICAgICAgICAgIC8vb3RoZXJ3aXNlLCBhc3N1bWUgaXQgaXMgYSB0b3AtbGV2ZWwgcmVxdWlyZSB0aGF0IHdpbGwKICAgICAgICAgICAgLy9iZSByZWxhdGl2ZSB0byBiYXNlVXJsIGluIHRoZSBlbmQuCiAgICAgICAgICAgIGlmIChiYXNlTmFtZSkgewogICAgICAgICAgICAgICAgLy9Db252ZXJ0IGJhc2VOYW1lIHRvIGFycmF5LCBhbmQgbG9wIG9mZiB0aGUgbGFzdCBwYXJ0LAogICAgICAgICAgICAgICAgLy9zbyB0aGF0IC4gbWF0Y2hlcyB0aGF0ICJkaXJlY3RvcnkiIGFuZCBub3QgbmFtZSBvZiB0aGUgYmFzZU5hbWUncwogICAgICAgICAgICAgICAgLy9tb2R1bGUuIEZvciBpbnN0YW5jZSwgYmFzZU5hbWUgb2YgIm9uZS90d28vdGhyZWUiLCBtYXBzIHRvCiAgICAgICAgICAgICAgICAvLyJvbmUvdHdvL3RocmVlLmpzIiwgYnV0IHdlIHdhbnQgdGhlIGRpcmVjdG9yeSwgIm9uZS90d28iIGZvcgogICAgICAgICAgICAgICAgLy90aGlzIG5vcm1hbGl6YXRpb24uCiAgICAgICAgICAgICAgICBiYXNlUGFydHMgPSBiYXNlUGFydHMuc2xpY2UoMCwgYmFzZVBhcnRzLmxlbmd0aCAtIDEpOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3BsaXQoJy8nKTsKICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG5hbWUubGVuZ3RoIC0gMTsKCiAgICAgICAgICAgICAgICAvLyBOb2RlIC5qcyBhbGxvd2FuY2U6CiAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm5vZGVJZENvbXBhdCAmJiBqc1N1ZmZpeFJlZ0V4cC50ZXN0KG5hbWVbbGFzdEluZGV4XSkpIHsKICAgICAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0gPSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5hbWUgPSBiYXNlUGFydHMuY29uY2F0KG5hbWUpOwoKICAgICAgICAgICAgICAgIC8vc3RhcnQgdHJpbURvdHMKICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgcGFydCA9IG5hbWVbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQgPT09ICIuIikgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSAtPSAxOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFydCA9PT0gIi4uIikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMSAmJiAobmFtZVsyXSA9PT0gJy4uJyB8fCBuYW1lWzBdID09PSAnLi4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9FbmQgb2YgdGhlIGxpbmUuIEtlZXAgYXQgbGVhc3Qgb25lIG5vbi1kb3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcGF0aCBzZWdtZW50IGF0IHRoZSBmcm9udCBzbyBpdCBjYW4gYmUgbWFwcGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvcnJlY3RseSB0byBkaXNrLiBPdGhlcndpc2UsIHRoZXJlIGlzIGxpa2VseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9ubyBwYXRoIG1hcHBpbmcgZm9yIGEgcGF0aCBzdGFydGluZyB3aXRoICcuLicuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1RoaXMgY2FuIHN0aWxsIGZhaWwsIGJ1dCBjYXRjaGVzIHRoZSBtb3N0IHJlYXNvbmFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdXNlcyBvZiAuLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuc3BsaWNlKGkgLSAxLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vZW5kIHRyaW1Eb3RzCgogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbigiLyIpOwogICAgICAgICAgICB9IGVsc2UgaWYgKG5hbWUuaW5kZXhPZignLi8nKSA9PT0gMCkgewogICAgICAgICAgICAgICAgLy8gTm8gYmFzZU5hbWUsIHNvIHRoaXMgaXMgSUQgaXMgcmVzb2x2ZWQgcmVsYXRpdmUKICAgICAgICAgICAgICAgIC8vIHRvIGJhc2VVcmwsIHB1bGwgb2ZmIHRoZSBsZWFkaW5nIGRvdC4KICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cmluZygyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy9BcHBseSBtYXAgY29uZmlnIGlmIGF2YWlsYWJsZS4KICAgICAgICBpZiAoKGJhc2VQYXJ0cyB8fCBzdGFyTWFwKSAmJiBtYXApIHsKICAgICAgICAgICAgbmFtZVBhcnRzID0gbmFtZS5zcGxpdCgnLycpOwoKICAgICAgICAgICAgZm9yIChpID0gbmFtZVBhcnRzLmxlbmd0aDsgaSA+IDA7IGkgLT0gMSkgewogICAgICAgICAgICAgICAgbmFtZVNlZ21lbnQgPSBuYW1lUGFydHMuc2xpY2UoMCwgaSkuam9pbigiLyIpOwoKICAgICAgICAgICAgICAgIGlmIChiYXNlUGFydHMpIHsKICAgICAgICAgICAgICAgICAgICAvL0ZpbmQgdGhlIGxvbmdlc3QgYmFzZU5hbWUgc2VnbWVudCBtYXRjaCBpbiB0aGUgY29uZmlnLgogICAgICAgICAgICAgICAgICAgIC8vU28sIGRvIGpvaW5zIG9uIHRoZSBiaWdnZXN0IHRvIHNtYWxsZXN0IGxlbmd0aHMgb2YgYmFzZVBhcnRzLgogICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGJhc2VQYXJ0cy5sZW5ndGg7IGogPiAwOyBqIC09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBbYmFzZVBhcnRzLnNsaWNlKDAsIGopLmpvaW4oJy8nKV07CgogICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzICBjb25maWcsIGZpbmQgaWYgaXQgaGFzIG9uZSBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzIG5hbWUuCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXBWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBWYWx1ZVtuYW1lU2VnbWVudF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL01hdGNoLCB1cGRhdGUgbmFtZSB0byB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gbWFwVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRJID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZm91bmRNYXApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LAogICAgICAgICAgICAgICAgLy9pZiB0aGVyZSBpcyBhIHNob3J0ZXIgc2VnbWVudCBtYXRjaCBsYXRlciBpbiBhIG1hdGNoaW5nCiAgICAgICAgICAgICAgICAvL2NvbmZpZywgdGhlbiBmYXZvciBvdmVyIHRoaXMgc3RhciBtYXAuCiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIHN0YXJNYXBbbmFtZVNlZ21lbnRdKSB7CiAgICAgICAgICAgICAgICAgICAgZm91bmRTdGFyTWFwID0gc3Rhck1hcFtuYW1lU2VnbWVudF07CiAgICAgICAgICAgICAgICAgICAgc3RhckkgPSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkgewogICAgICAgICAgICAgICAgZm91bmRNYXAgPSBmb3VuZFN0YXJNYXA7CiAgICAgICAgICAgICAgICBmb3VuZEkgPSBzdGFySTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGZvdW5kTWFwKSB7CiAgICAgICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApOwogICAgICAgICAgICAgICAgbmFtZSA9IG5hbWVQYXJ0cy5qb2luKCcvJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuYW1lOwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VSZXF1aXJlKHJlbE5hbWUsIGZvcmNlU3luYykgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIC8vQSB2ZXJzaW9uIG9mIGEgcmVxdWlyZSBmdW5jdGlvbiB0aGF0IHBhc3NlcyBhIG1vZHVsZU5hbWUKICAgICAgICAgICAgLy92YWx1ZSBmb3IgaXRlbXMgdGhhdCBtYXkgbmVlZCB0bwogICAgICAgICAgICAvL2xvb2sgdXAgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIG1vZHVsZU5hbWUKICAgICAgICAgICAgcmV0dXJuIHJlcS5hcHBseSh1bmRlZiwgYXBzLmNhbGwoYXJndW1lbnRzLCAwKS5jb25jYXQoW3JlbE5hbWUsIGZvcmNlU3luY10pKTsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VOb3JtYWxpemUocmVsTmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICByZXR1cm4gbm9ybWFsaXplKG5hbWUsIHJlbE5hbWUpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gbWFrZUxvYWQoZGVwTmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHsKICAgICAgICAgICAgZGVmaW5lZFtkZXBOYW1lXSA9IHZhbHVlOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gY2FsbERlcChuYW1lKSB7CiAgICAgICAgaWYgKGhhc1Byb3Aod2FpdGluZywgbmFtZSkpIHsKICAgICAgICAgICAgdmFyIGFyZ3MgPSB3YWl0aW5nW25hbWVdOwogICAgICAgICAgICBkZWxldGUgd2FpdGluZ1tuYW1lXTsKICAgICAgICAgICAgZGVmaW5pbmdbbmFtZV0gPSB0cnVlOwogICAgICAgICAgICBtYWluLmFwcGx5KHVuZGVmLCBhcmdzKTsKICAgICAgICB9CgogICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBuYW1lKSAmJiAhaGFzUHJvcChkZWZpbmluZywgbmFtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyAnICsgbmFtZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkZWZpbmVkW25hbWVdOwogICAgfQoKICAgIC8vVHVybnMgYSBwbHVnaW4hcmVzb3VyY2UgdG8gW3BsdWdpbiwgcmVzb3VyY2VdCiAgICAvL3dpdGggdGhlIHBsdWdpbiBiZWluZyB1bmRlZmluZWQgaWYgdGhlIG5hbWUKICAgIC8vZGlkIG5vdCBoYXZlIGEgcGx1Z2luIHByZWZpeC4KICAgIGZ1bmN0aW9uIHNwbGl0UHJlZml4KG5hbWUpIHsKICAgICAgICB2YXIgcHJlZml4LAogICAgICAgICAgICBpbmRleCA9IG5hbWUgPyBuYW1lLmluZGV4T2YoJyEnKSA6IC0xOwogICAgICAgIGlmIChpbmRleCA+IC0xKSB7CiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyaW5nKDAsIGluZGV4KTsKICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSwgbmFtZS5sZW5ndGgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gW3ByZWZpeCwgbmFtZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlcyBhIG5hbWUgbWFwLCBub3JtYWxpemluZyB0aGUgbmFtZSwgYW5kIHVzaW5nIGEgcGx1Z2luCiAgICAgKiBmb3Igbm9ybWFsaXphdGlvbiBpZiBuZWNlc3NhcnkuIEdyYWJzIGEgcmVmIHRvIHBsdWdpbgogICAgICogdG9vLCBhcyBhbiBvcHRpbWl6YXRpb24uCiAgICAgKi8KICAgIG1ha2VNYXAgPSBmdW5jdGlvbiAobmFtZSwgcmVsTmFtZSkgewogICAgICAgIHZhciBwbHVnaW4sCiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSksCiAgICAgICAgICAgIHByZWZpeCA9IHBhcnRzWzBdOwoKICAgICAgICBuYW1lID0gcGFydHNbMV07CgogICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgcHJlZml4ID0gbm9ybWFsaXplKHByZWZpeCwgcmVsTmFtZSk7CiAgICAgICAgICAgIHBsdWdpbiA9IGNhbGxEZXAocHJlZml4KTsKICAgICAgICB9CgogICAgICAgIC8vTm9ybWFsaXplIGFjY29yZGluZwogICAgICAgIGlmIChwcmVmaXgpIHsKICAgICAgICAgICAgaWYgKHBsdWdpbiAmJiBwbHVnaW4ubm9ybWFsaXplKSB7CiAgICAgICAgICAgICAgICBuYW1lID0gcGx1Z2luLm5vcm1hbGl6ZShuYW1lLCBtYWtlTm9ybWFsaXplKHJlbE5hbWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBuYW1lID0gbm9ybWFsaXplKG5hbWUsIHJlbE5hbWUpOwogICAgICAgICAgICBwYXJ0cyA9IHNwbGl0UHJlZml4KG5hbWUpOwogICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXTsKICAgICAgICAgICAgbmFtZSA9IHBhcnRzWzFdOwogICAgICAgICAgICBpZiAocHJlZml4KSB7CiAgICAgICAgICAgICAgICBwbHVnaW4gPSBjYWxsRGVwKHByZWZpeCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vVXNpbmcgcmlkaWN1bG91cyBwcm9wZXJ0eSBuYW1lcyBmb3Igc3BhY2UgcmVhc29ucwogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGY6IHByZWZpeCA/IHByZWZpeCArICchJyArIG5hbWUgOiBuYW1lLCAvL2Z1bGxOYW1lCiAgICAgICAgICAgIG46IG5hbWUsCiAgICAgICAgICAgIHByOiBwcmVmaXgsCiAgICAgICAgICAgIHA6IHBsdWdpbgogICAgICAgIH07CiAgICB9OwoKICAgIGZ1bmN0aW9uIG1ha2VDb25maWcobmFtZSkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiAoY29uZmlnICYmIGNvbmZpZy5jb25maWcgJiYgY29uZmlnLmNvbmZpZ1tuYW1lXSkgfHwge307CiAgICAgICAgfTsKICAgIH0KCiAgICBoYW5kbGVycyA9IHsKICAgICAgICByZXF1aXJlOiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICByZXR1cm4gbWFrZVJlcXVpcmUobmFtZSk7CiAgICAgICAgfSwKICAgICAgICBleHBvcnRzOiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICB2YXIgZSA9IGRlZmluZWRbbmFtZV07CiAgICAgICAgICAgIGlmICh0eXBlb2YgZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHJldHVybiBlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuIChkZWZpbmVkW25hbWVdID0ge30pOwogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtb2R1bGU6IGZ1bmN0aW9uIChuYW1lKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBpZDogbmFtZSwKICAgICAgICAgICAgICAgIHVyaTogJycsCiAgICAgICAgICAgICAgICBleHBvcnRzOiBkZWZpbmVkW25hbWVdLAogICAgICAgICAgICAgICAgY29uZmlnOiBtYWtlQ29uZmlnKG5hbWUpCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfTsKCiAgICBtYWluID0gZnVuY3Rpb24gKG5hbWUsIGRlcHMsIGNhbGxiYWNrLCByZWxOYW1lKSB7CiAgICAgICAgdmFyIGNqc01vZHVsZSwgZGVwTmFtZSwgcmV0LCBtYXAsIGksCiAgICAgICAgICAgIGFyZ3MgPSBbXSwKICAgICAgICAgICAgY2FsbGJhY2tUeXBlID0gdHlwZW9mIGNhbGxiYWNrLAogICAgICAgICAgICB1c2luZ0V4cG9ydHM7CgogICAgICAgIC8vVXNlIG5hbWUgaWYgbm8gcmVsTmFtZQogICAgICAgIHJlbE5hbWUgPSByZWxOYW1lIHx8IG5hbWU7CgogICAgICAgIC8vQ2FsbCB0aGUgY2FsbGJhY2sgdG8gZGVmaW5lIHRoZSBtb2R1bGUsIGlmIG5lY2Vzc2FyeS4KICAgICAgICBpZiAoY2FsbGJhY2tUeXBlID09PSAndW5kZWZpbmVkJyB8fCBjYWxsYmFja1R5cGUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgZGVmaW5lZCBkZXBlbmRlbmNpZXMgYW5kIHBhc3MgdGhlIG9yZGVyZWQKICAgICAgICAgICAgLy92YWx1ZXMgdG8gdGhlIGNhbGxiYWNrLgogICAgICAgICAgICAvL0RlZmF1bHQgdG8gW3JlcXVpcmUsIGV4cG9ydHMsIG1vZHVsZV0gaWYgbm8gZGVwcwogICAgICAgICAgICBkZXBzID0gIWRlcHMubGVuZ3RoICYmIGNhbGxiYWNrLmxlbmd0aCA/IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddIDogZGVwczsKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRlcHMubGVuZ3RoOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgIG1hcCA9IG1ha2VNYXAoZGVwc1tpXSwgcmVsTmFtZSk7CiAgICAgICAgICAgICAgICBkZXBOYW1lID0gbWFwLmY7CgogICAgICAgICAgICAgICAgLy9GYXN0IHBhdGggQ29tbW9uSlMgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLgogICAgICAgICAgICAgICAgaWYgKGRlcE5hbWUgPT09ICJyZXF1aXJlIikgewogICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5yZXF1aXJlKG5hbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkZXBOYW1lID09PSAiZXhwb3J0cyIpIHsKICAgICAgICAgICAgICAgICAgICAvL0NvbW1vbkpTIG1vZHVsZSBzcGVjIDEuMQogICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5leHBvcnRzKG5hbWUpOwogICAgICAgICAgICAgICAgICAgIHVzaW5nRXhwb3J0cyA9IHRydWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlcE5hbWUgPT09ICJtb2R1bGUiKSB7CiAgICAgICAgICAgICAgICAgICAgLy9Db21tb25KUyBtb2R1bGUgc3BlYyAxLjEKICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSBhcmdzW2ldID0gaGFuZGxlcnMubW9kdWxlKG5hbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNQcm9wKGRlZmluZWQsIGRlcE5hbWUpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1Byb3Aod2FpdGluZywgZGVwTmFtZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcChkZWZpbmluZywgZGVwTmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gY2FsbERlcChkZXBOYW1lKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWFwLnApIHsKICAgICAgICAgICAgICAgICAgICBtYXAucC5sb2FkKG1hcC5uLCBtYWtlUmVxdWlyZShyZWxOYW1lLCB0cnVlKSwgbWFrZUxvYWQoZGVwTmFtZSksIHt9KTsKICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gZGVmaW5lZFtkZXBOYW1lXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5hbWUgKyAnIG1pc3NpbmcgJyArIGRlcE5hbWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXQgPSBjYWxsYmFjayA/IGNhbGxiYWNrLmFwcGx5KGRlZmluZWRbbmFtZV0sIGFyZ3MpIDogdW5kZWZpbmVkOwoKICAgICAgICAgICAgaWYgKG5hbWUpIHsKICAgICAgICAgICAgICAgIC8vSWYgc2V0dGluZyBleHBvcnRzIHZpYSAibW9kdWxlIiBpcyBpbiBwbGF5LAogICAgICAgICAgICAgICAgLy9mYXZvciB0aGF0IG92ZXIgcmV0dXJuIHZhbHVlIGFuZCBleHBvcnRzLiBBZnRlciB0aGF0LAogICAgICAgICAgICAgICAgLy9mYXZvciBhIG5vbi11bmRlZmluZWQgcmV0dXJuIHZhbHVlIG92ZXIgZXhwb3J0cyB1c2UuCiAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlICYmIGNqc01vZHVsZS5leHBvcnRzICE9PSB1bmRlZiAmJgogICAgICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUuZXhwb3J0cyAhPT0gZGVmaW5lZFtuYW1lXSkgewogICAgICAgICAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSBjanNNb2R1bGUuZXhwb3J0czsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSB1bmRlZiB8fCAhdXNpbmdFeHBvcnRzKSB7CiAgICAgICAgICAgICAgICAgICAgLy9Vc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAgICBkZWZpbmVkW25hbWVdID0gcmV0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChuYW1lKSB7CiAgICAgICAgICAgIC8vTWF5IGp1c3QgYmUgYW4gb2JqZWN0IGRlZmluaXRpb24gZm9yIHRoZSBtb2R1bGUuIE9ubHkKICAgICAgICAgICAgLy93b3JyeSBhYm91dCBkZWZpbmluZyBpZiBoYXZlIGEgbW9kdWxlIG5hbWUuCiAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSBjYWxsYmFjazsKICAgICAgICB9CiAgICB9OwoKICAgIHJlcXVpcmVqcyA9IHJlcXVpcmUgPSByZXEgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUsIGZvcmNlU3luYywgYWx0KSB7CiAgICAgICAgaWYgKHR5cGVvZiBkZXBzID09PSAic3RyaW5nIikgewogICAgICAgICAgICBpZiAoaGFuZGxlcnNbZGVwc10pIHsKICAgICAgICAgICAgICAgIC8vY2FsbGJhY2sgaW4gdGhpcyBjYXNlIGlzIHJlYWxseSByZWxOYW1lCiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10oY2FsbGJhY2spOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vSnVzdCByZXR1cm4gdGhlIG1vZHVsZSB3YW50ZWQuIEluIHRoaXMgc2NlbmFyaW8sIHRoZQogICAgICAgICAgICAvL2RlcHMgYXJnIGlzIHRoZSBtb2R1bGUgbmFtZSwgYW5kIHNlY29uZCBhcmcgKGlmIHBhc3NlZCkKICAgICAgICAgICAgLy9pcyBqdXN0IHRoZSByZWxOYW1lLgogICAgICAgICAgICAvL05vcm1hbGl6ZSBtb2R1bGUgbmFtZSwgaWYgaXQgY29udGFpbnMgLiBvciAuLgogICAgICAgICAgICByZXR1cm4gY2FsbERlcChtYWtlTWFwKGRlcHMsIGNhbGxiYWNrKS5mKTsKICAgICAgICB9IGVsc2UgaWYgKCFkZXBzLnNwbGljZSkgewogICAgICAgICAgICAvL2RlcHMgaXMgYSBjb25maWcgb2JqZWN0LCBub3QgYW4gYXJyYXkuCiAgICAgICAgICAgIGNvbmZpZyA9IGRlcHM7CiAgICAgICAgICAgIGlmIChjb25maWcuZGVwcykgewogICAgICAgICAgICAgICAgcmVxKGNvbmZpZy5kZXBzLCBjb25maWcuY2FsbGJhY2spOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGNhbGxiYWNrLnNwbGljZSkgewogICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpcyBhbiBhcnJheSwgd2hpY2ggbWVhbnMgaXQgaXMgYSBkZXBlbmRlbmN5IGxpc3QuCiAgICAgICAgICAgICAgICAvL0FkanVzdCBhcmdzIGlmIHRoZXJlIGFyZSBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgICAgIGRlcHMgPSBjYWxsYmFjazsKICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gcmVsTmFtZTsKICAgICAgICAgICAgICAgIHJlbE5hbWUgPSBudWxsOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGVwcyA9IHVuZGVmOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvL1N1cHBvcnQgcmVxdWlyZShbJ2EnXSkKICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9OwoKICAgICAgICAvL0lmIHJlbE5hbWUgaXMgYSBmdW5jdGlvbiwgaXQgaXMgYW4gZXJyYmFjayBoYW5kbGVyLAogICAgICAgIC8vc28gcmVtb3ZlIGl0LgogICAgICAgIGlmICh0eXBlb2YgcmVsTmFtZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICByZWxOYW1lID0gZm9yY2VTeW5jOwogICAgICAgICAgICBmb3JjZVN5bmMgPSBhbHQ7CiAgICAgICAgfQoKICAgICAgICAvL1NpbXVsYXRlIGFzeW5jIGNhbGxiYWNrOwogICAgICAgIGlmIChmb3JjZVN5bmMpIHsKICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vVXNpbmcgYSBub24temVybyB2YWx1ZSBiZWNhdXNlIG9mIGNvbmNlcm4gZm9yIHdoYXQgb2xkIGJyb3dzZXJzCiAgICAgICAgICAgIC8vZG8sIGFuZCBsYXRlc3QgYnJvd3NlcnMgInVwZ3JhZGUiIHRvIDQgaWYgbG93ZXIgdmFsdWUgaXMgdXNlZDoKICAgICAgICAgICAgLy9odHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aW1lcnMuaHRtbCNkb20td2luZG93dGltZXJzLXNldHRpbWVvdXQ6CiAgICAgICAgICAgIC8vSWYgd2FudCBhIHZhbHVlIGltbWVkaWF0ZWx5LCB1c2UgcmVxdWlyZSgnaWQnKSBpbnN0ZWFkIC0tIHNvbWV0aGluZwogICAgICAgICAgICAvL3RoYXQgd29ya3MgaW4gYWxtb25kIG9uIHRoZSBnbG9iYWwgbGV2ZWwsIGJ1dCBub3QgZ3VhcmFudGVlZCBhbmQKICAgICAgICAgICAgLy91bmxpa2VseSB0byB3b3JrIGluIG90aGVyIEFNRCBpbXBsZW1lbnRhdGlvbnMuCiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpOwogICAgICAgICAgICB9LCA0KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiByZXE7CiAgICB9OwoKICAgIC8qKgogICAgICogSnVzdCBkcm9wcyB0aGUgY29uZmlnIG9uIHRoZSBmbG9vciwgYnV0IHJldHVybnMgcmVxIGluIGNhc2UKICAgICAqIHRoZSBjb25maWcgcmV0dXJuIHZhbHVlIGlzIHVzZWQuCiAgICAgKi8KICAgIHJlcS5jb25maWcgPSBmdW5jdGlvbiAoY2ZnKSB7CiAgICAgICAgcmV0dXJuIHJlcShjZmcpOwogICAgfTsKCiAgICAvKioKICAgICAqIEV4cG9zZSBtb2R1bGUgcmVnaXN0cnkgZm9yIGRlYnVnZ2luZyBhbmQgdG9vbGluZwogICAgICovCiAgICByZXF1aXJlanMuX2RlZmluZWQgPSBkZWZpbmVkOwoKICAgIGRlZmluZSA9IGZ1bmN0aW9uIChuYW1lLCBkZXBzLCBjYWxsYmFjaykgewoKICAgICAgICAvL1RoaXMgbW9kdWxlIG1heSBub3QgaGF2ZSBkZXBlbmRlbmNpZXMKICAgICAgICBpZiAoIWRlcHMuc3BsaWNlKSB7CiAgICAgICAgICAgIC8vZGVwcyBpcyBub3QgYW4gYXJyYXksIHNvIHByb2JhYmx5IG1lYW5zCiAgICAgICAgICAgIC8vYW4gb2JqZWN0IGxpdGVyYWwgb3IgZmFjdG9yeSBmdW5jdGlvbiBmb3IKICAgICAgICAgICAgLy90aGUgdmFsdWUuIEFkanVzdCBhcmdzLgogICAgICAgICAgICBjYWxsYmFjayA9IGRlcHM7CiAgICAgICAgICAgIGRlcHMgPSBbXTsKICAgICAgICB9CgogICAgICAgIGlmICghaGFzUHJvcChkZWZpbmVkLCBuYW1lKSAmJiAhaGFzUHJvcCh3YWl0aW5nLCBuYW1lKSkgewogICAgICAgICAgICB3YWl0aW5nW25hbWVdID0gW25hbWUsIGRlcHMsIGNhbGxiYWNrXTsKICAgICAgICB9CiAgICB9OwoKICAgIGRlZmluZS5hbWQgPSB7CiAgICAgICAgalF1ZXJ5OiB0cnVlCiAgICB9Owp9KCkpOwoKZGVmaW5lKCJub2RlX21vZHVsZXMvYWxtb25kL2FsbW9uZCIsIGZ1bmN0aW9uKCl7fSk7CgovKioKICogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHdlYiBhcHBsaWNhdGlvbnMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLyogVXRpbGl0aWVzIEFQSSAqLwp2YXIgdXRpbCA9IGZvcmdlLnV0aWwgPSBmb3JnZS51dGlsIHx8IHt9OwoKLy8gZGVmaW5lIHNldEltbWVkaWF0ZSBhbmQgbmV4dFRpY2sKKGZ1bmN0aW9uKCkgewogIC8vIHVzZSBuYXRpdmUgbmV4dFRpY2sKICBpZih0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5uZXh0VGljaykgewogICAgdXRpbC5uZXh0VGljayA9IHByb2Nlc3MubmV4dFRpY2s7CiAgICBpZih0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlOwogICAgfSBlbHNlIHsKICAgICAgLy8gcG9seWZpbGwgc2V0SW1tZWRpYXRlIHdpdGggbmV4dFRpY2ssIG9sZGVyIHZlcnNpb25zIG9mIG5vZGUKICAgICAgLy8gKHRob3NlIHcvbyBzZXRJbW1lZGlhdGUpIHdvbid0IHRvdGFsbHkgc3RhcnZlIElPCiAgICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gdXRpbC5uZXh0VGljazsKICAgIH0KICAgIHJldHVybjsKICB9CgogIC8vIHBvbHlmaWxsIG5leHRUaWNrIHdpdGggbmF0aXZlIHNldEltbWVkaWF0ZQogIGlmKHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICdmdW5jdGlvbicpIHsKICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlOwogICAgdXRpbC5uZXh0VGljayA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBzZXRJbW1lZGlhdGUoY2FsbGJhY2spOwogICAgfTsKICAgIHJldHVybjsKICB9CgogIC8qIE5vdGU6IEEgcG9seWZpbGwgdXBncmFkZSBwYXR0ZXJuIGlzIHVzZWQgaGVyZSB0byBhbGxvdyBjb21iaW5pbmcKICBwb2x5ZmlsbHMuIEZvciBleGFtcGxlLCBNdXRhdGlvbk9ic2VydmVyIGlzIGZhc3QsIGJ1dCBibG9ja3MgVUkgdXBkYXRlcywKICBzbyBpdCBuZWVkcyB0byBhbGxvdyBVSSB1cGRhdGVzIHBlcmlvZGljYWxseSwgc28gaXQgZmFsbHMgYmFjayBvbgogIHBvc3RNZXNzYWdlIG9yIHNldFRpbWVvdXQuICovCgogIC8vIHBvbHlmaWxsIHdpdGggc2V0VGltZW91dAogIHV0aWwuc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHNldFRpbWVvdXQoY2FsbGJhY2ssIDApOwogIH07CgogIC8vIHVwZ3JhZGUgcG9seWZpbGwgdG8gdXNlIHBvc3RNZXNzYWdlCiAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYKICAgIHR5cGVvZiB3aW5kb3cucG9zdE1lc3NhZ2UgPT09ICdmdW5jdGlvbicpIHsKICAgIHZhciBtc2cgPSAnZm9yZ2Uuc2V0SW1tZWRpYXRlJzsKICAgIHZhciBjYWxsYmFja3MgPSBbXTsKICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICAvLyBvbmx5IHNlbmQgbWVzc2FnZSB3aGVuIG9uZSBoYXNuJ3QgYmVlbiBzZW50IGluCiAgICAgIC8vIHRoZSBjdXJyZW50IHR1cm4gb2YgdGhlIGV2ZW50IGxvb3AKICAgICAgaWYoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMSkgewogICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShtc2csICcqJyk7CiAgICAgIH0KICAgIH07CiAgICBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7CiAgICAgIGlmKGV2ZW50LnNvdXJjZSA9PT0gd2luZG93ICYmIGV2ZW50LmRhdGEgPT09IG1zZykgewogICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHZhciBjb3B5ID0gY2FsbGJhY2tzLnNsaWNlKCk7CiAgICAgICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7CiAgICAgICAgY29weS5mb3JFYWNoKGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGhhbmRsZXIsIHRydWUpOwogIH0KCiAgLy8gdXBncmFkZSBwb2x5ZmlsbCB0byB1c2UgTXV0YXRpb25PYnNlcnZlcgogIGlmKHR5cGVvZiBNdXRhdGlvbk9ic2VydmVyICE9PSAndW5kZWZpbmVkJykgewogICAgLy8gcG9seWZpbGwgd2l0aCBNdXRhdGlvbk9ic2VydmVyCiAgICB2YXIgbm93ID0gRGF0ZS5ub3coKTsKICAgIHZhciBhdHRyID0gdHJ1ZTsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIHZhciBjYWxsYmFja3MgPSBbXTsKICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkgewogICAgICB2YXIgY29weSA9IGNhbGxiYWNrcy5zbGljZSgpOwogICAgICBjYWxsYmFja3MubGVuZ3RoID0gMDsKICAgICAgY29weS5mb3JFYWNoKGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfSk7CiAgICB9KS5vYnNlcnZlKGRpdiwge2F0dHJpYnV0ZXM6IHRydWV9KTsKICAgIHZhciBvbGRTZXRJbW1lZGlhdGUgPSB1dGlsLnNldEltbWVkaWF0ZTsKICAgIHV0aWwuc2V0SW1tZWRpYXRlID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgaWYoRGF0ZS5ub3coKSAtIG5vdyA+IDE1KSB7CiAgICAgICAgbm93ID0gRGF0ZS5ub3coKTsKICAgICAgICBvbGRTZXRJbW1lZGlhdGUoY2FsbGJhY2spOwogICAgICB9IGVsc2UgewogICAgICAgIGNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgICAgICAvLyBvbmx5IHRyaWdnZXIgb2JzZXJ2ZXIgd2hlbiBpdCBoYXNuJ3QgYmVlbiB0cmlnZ2VyZWQgaW4KICAgICAgICAvLyB0aGUgY3VycmVudCB0dXJuIG9mIHRoZSBldmVudCBsb29wCiAgICAgICAgaWYoY2FsbGJhY2tzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgZGl2LnNldEF0dHJpYnV0ZSgnYScsIGF0dHIgPSAhYXR0cik7CiAgICAgICAgfQogICAgICB9CiAgICB9OwogIH0KCiAgdXRpbC5uZXh0VGljayA9IHV0aWwuc2V0SW1tZWRpYXRlOwp9KSgpOwoKLy8gZGVmaW5lIGlzQXJyYXkKdXRpbC5pc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbih4KSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKfTsKCi8vIGRlZmluZSBpc0FycmF5QnVmZmVyCnV0aWwuaXNBcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKHgpIHsKICByZXR1cm4gdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB4IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI7Cn07CgovLyBkZWZpbmUgaXNBcnJheUJ1ZmZlclZpZXcKdXRpbC5pc0FycmF5QnVmZmVyVmlldyA9IGZ1bmN0aW9uKHgpIHsKICByZXR1cm4geCAmJiB1dGlsLmlzQXJyYXlCdWZmZXIoeC5idWZmZXIpICYmIHguYnl0ZUxlbmd0aCAhPT0gdW5kZWZpbmVkOwp9OwoKLy8gVE9ETzogc2V0IEJ5dGVCdWZmZXIgdG8gYmVzdCBhdmFpbGFibGUgYmFja2luZwp1dGlsLkJ5dGVCdWZmZXIgPSBCeXRlU3RyaW5nQnVmZmVyOwoKLyoqIEJ1ZmZlciB3L0JpbmFyeVN0cmluZyBiYWNraW5nICovCgovKioKICogQ29uc3RydWN0b3IgZm9yIGEgYmluYXJ5IHN0cmluZyBiYWNrZWQgYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBbYl0gdGhlIGJ5dGVzIHRvIHdyYXAgKGVpdGhlciBlbmNvZGVkIGFzIHN0cmluZywgb25lIGJ5dGUgcGVyCiAqICAgICAgICAgIGNoYXJhY3Rlciwgb3IgYXMgYW4gQXJyYXlCdWZmZXIgb3IgVHlwZWQgQXJyYXkpLgogKi8KZnVuY3Rpb24gQnl0ZVN0cmluZ0J1ZmZlcihiKSB7CiAgLy8gVE9ETzogdXBkYXRlIHRvIG1hdGNoIERhdGFCdWZmZXIgQVBJCgogIC8vIHRoZSBkYXRhIGluIHRoaXMgYnVmZmVyCiAgdGhpcy5kYXRhID0gJyc7CiAgLy8gdGhlIHBvaW50ZXIgZm9yIHJlYWRpbmcgZnJvbSB0aGlzIGJ1ZmZlcgogIHRoaXMucmVhZCA9IDA7CgogIGlmKHR5cGVvZiBiID09PSAnc3RyaW5nJykgewogICAgdGhpcy5kYXRhID0gYjsKICB9IGVsc2UgaWYodXRpbC5pc0FycmF5QnVmZmVyKGIpIHx8IHV0aWwuaXNBcnJheUJ1ZmZlclZpZXcoYikpIHsKICAgIC8vIGNvbnZlcnQgbmF0aXZlIGJ1ZmZlciB0byBmb3JnZSBidWZmZXIKICAgIC8vIEZJWE1FOiBzdXBwb3J0IG5hdGl2ZSBidWZmZXJzIGludGVybmFsbHkgaW5zdGVhZAogICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KGIpOwogICAgdHJ5IHsKICAgICAgdGhpcy5kYXRhID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBhcnIpOwogICAgfSBjYXRjaChlKSB7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyArK2kpIHsKICAgICAgICB0aGlzLnB1dEJ5dGUoYXJyW2ldKTsKICAgICAgfQogICAgfQogIH0gZWxzZSBpZihiIGluc3RhbmNlb2YgQnl0ZVN0cmluZ0J1ZmZlciB8fAogICAgKHR5cGVvZiBiID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgYi5kYXRhID09PSAnc3RyaW5nJyAmJgogICAgdHlwZW9mIGIucmVhZCA9PT0gJ251bWJlcicpKSB7CiAgICAvLyBjb3B5IGV4aXN0aW5nIGJ1ZmZlcgogICAgdGhpcy5kYXRhID0gYi5kYXRhOwogICAgdGhpcy5yZWFkID0gYi5yZWFkOwogIH0KCiAgLy8gdXNlZCBmb3Igdjggb3B0aW1pemF0aW9uCiAgdGhpcy5fY29uc3RydWN0ZWRTdHJpbmdMZW5ndGggPSAwOwp9CnV0aWwuQnl0ZVN0cmluZ0J1ZmZlciA9IEJ5dGVTdHJpbmdCdWZmZXI7CgovKiBOb3RlOiBUaGlzIGlzIGFuIG9wdGltaXphdGlvbiBmb3IgVjgtYmFzZWQgYnJvd3NlcnMuIFdoZW4gVjggY29uY2F0ZW5hdGVzCiAgYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGFyZSBvbmx5IGpvaW5lZCBsb2dpY2FsbHkgdXNpbmcgYSAiY29ucyBzdHJpbmciIG9yCiAgImNvbnN0cnVjdGVkL2NvbmNhdGVuYXRlZCBzdHJpbmciLiBUaGVzZSBjb250YWluZXJzIGtlZXAgcmVmZXJlbmNlcyB0byBvbmUKICBhbm90aGVyIGFuZCBjYW4gcmVzdWx0IGluIHZlcnkgbGFyZ2UgbWVtb3J5IHVzYWdlLiBGb3IgZXhhbXBsZSwgaWYgYSAyTUIKICBzdHJpbmcgaXMgY29uc3RydWN0ZWQgYnkgY29uY2F0ZW5hdGluZyA0IGJ5dGVzIHRvZ2V0aGVyIGF0IGEgdGltZSwgdGhlCiAgbWVtb3J5IHVzYWdlIHdpbGwgYmUgfjQ0TUI7IHNvIH4yMnggaW5jcmVhc2UuIFRoZSBzdHJpbmdzIGFyZSBvbmx5IGpvaW5lZAogIHRvZ2V0aGVyIHdoZW4gYW4gb3BlcmF0aW9uIHJlcXVpcmluZyB0aGVpciBqb2luaW5nIHRha2VzIHBsYWNlLCBzdWNoIGFzCiAgc3Vic3RyKCkuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYWRkaW5nIGRhdGEgdG8gdGhpcyBidWZmZXIgdG8gZW5zdXJlCiAgdGhlc2UgdHlwZXMgb2Ygc3RyaW5ncyBhcmUgcGVyaW9kaWNhbGx5IGpvaW5lZCB0byByZWR1Y2UgdGhlIG1lbW9yeQogIGZvb3RwcmludC4gKi8KdmFyIF9NQVhfQ09OU1RSVUNURURfU1RSSU5HX0xFTkdUSCA9IDQwOTY7CnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuX29wdGltaXplQ29uc3RydWN0ZWRTdHJpbmcgPSBmdW5jdGlvbih4KSB7CiAgdGhpcy5fY29uc3RydWN0ZWRTdHJpbmdMZW5ndGggKz0geDsKICBpZih0aGlzLl9jb25zdHJ1Y3RlZFN0cmluZ0xlbmd0aCA+IF9NQVhfQ09OU1RSVUNURURfU1RSSU5HX0xFTkdUSCkgewogICAgLy8gdGhpcyBzdWJzdHIoKSBzaG91bGQgY2F1c2UgdGhlIGNvbnN0cnVjdGVkIHN0cmluZyB0byBqb2luCiAgICB0aGlzLmRhdGEuc3Vic3RyKDAsIDEpOwogICAgdGhpcy5fY29uc3RydWN0ZWRTdHJpbmdMZW5ndGggPSAwOwogIH0KfTsKCi8qKgogKiBHZXRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuIHRoaXMuZGF0YS5sZW5ndGggLSB0aGlzLnJlYWQ7Cn07CgovKioKICogR2V0cyB3aGV0aGVyIG9yIG5vdCB0aGlzIGJ1ZmZlciBpcyBlbXB0eS4KICoKICogQHJldHVybiB0cnVlIGlmIHRoaXMgYnVmZmVyIGlzIGVtcHR5LCBmYWxzZSBpZiBub3QuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gdGhpcy5sZW5ndGgoKSA8PSAwOwp9OwoKLyoqCiAqIFB1dHMgYSBieXRlIGluIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gYiB0aGUgYnl0ZSB0byBwdXQuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEJ5dGUgPSBmdW5jdGlvbihiKSB7CiAgcmV0dXJuIHRoaXMucHV0Qnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShiKSk7Cn07CgovKioKICogUHV0cyBhIGJ5dGUgaW4gdGhpcyBidWZmZXIgTiB0aW1lcy4KICoKICogQHBhcmFtIGIgdGhlIGJ5dGUgdG8gcHV0LgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHZhbHVlIGIgdG8gcHV0LgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5maWxsV2l0aEJ5dGUgPSBmdW5jdGlvbihiLCBuKSB7CiAgYiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7CiAgdmFyIGQgPSB0aGlzLmRhdGE7CiAgd2hpbGUobiA+IDApIHsKICAgIGlmKG4gJiAxKSB7CiAgICAgIGQgKz0gYjsKICAgIH0KICAgIG4gPj4+PSAxOwogICAgaWYobiA+IDApIHsKICAgICAgYiArPSBiOwogICAgfQogIH0KICB0aGlzLmRhdGEgPSBkOwogIHRoaXMuX29wdGltaXplQ29uc3RydWN0ZWRTdHJpbmcobik7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyAoYXMgYSBVVEYtOCBlbmNvZGVkIHN0cmluZykgdG8gcHV0LgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXRCeXRlcyA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgdGhpcy5kYXRhICs9IGJ5dGVzOwogIHRoaXMuX29wdGltaXplQ29uc3RydWN0ZWRTdHJpbmcoYnl0ZXMubGVuZ3RoKTsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGEgVVRGLTE2IGVuY29kZWQgc3RyaW5nIGludG8gdGhpcyBidWZmZXIuCiAqCiAqIEBwYXJhbSBzdHIgdGhlIHN0cmluZyB0byBwdXQuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dFN0cmluZyA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKHV0aWwuZW5jb2RlVXRmOChzdHIpKTsKfTsKCi8qKgogKiBQdXRzIGEgMTYtYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIDE2LWJpdCBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXRJbnQxNiA9IGZ1bmN0aW9uKGkpIHsKICByZXR1cm4gdGhpcy5wdXRCeXRlcygKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiA4ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpICYgMHhGRikpOwp9OwoKLyoqCiAqIFB1dHMgYSAyNC1iaXQgaW50ZWdlciBpbiB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyLgogKgogKiBAcGFyYW0gaSB0aGUgMjQtYml0IGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEludDI0ID0gZnVuY3Rpb24oaSkgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKAogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDE2ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDggJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgJiAweEZGKSk7Cn07CgovKioKICogUHV0cyBhIDMyLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAzMi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0SW50MzIgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuIHRoaXMucHV0Qnl0ZXMoCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gMjQgJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gMTYgJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gOCAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSAmIDB4RkYpKTsKfTsKCi8qKgogKiBQdXRzIGEgMTYtYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIDE2LWJpdCBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXRJbnQxNkxlID0gZnVuY3Rpb24oaSkgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKAogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDggJiAweEZGKSk7Cn07CgovKioKICogUHV0cyBhIDI0LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAyNC1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0SW50MjRMZSA9IGZ1bmN0aW9uKGkpIHsKICByZXR1cm4gdGhpcy5wdXRCeXRlcygKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiA4ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpID4+IDE2ICYgMHhGRikpOwp9OwoKLyoqCiAqIFB1dHMgYSAzMi1iaXQgaW50ZWdlciBpbiB0aGlzIGJ1ZmZlciBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyLgogKgogKiBAcGFyYW0gaSB0aGUgMzItYml0IGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEludDMyTGUgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuIHRoaXMucHV0Qnl0ZXMoCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgJiAweEZGKSArCiAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGkgPj4gOCAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAxNiAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAyNCAmIDB4RkYpKTsKfTsKCi8qKgogKiBQdXRzIGFuIG4tYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIG4tYml0IGludGVnZXIuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0SW50ID0gZnVuY3Rpb24oaSwgbikgewogIHZhciBieXRlcyA9ICcnOwogIGRvIHsKICAgIG4gLT0gODsKICAgIGJ5dGVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGkgPj4gbikgJiAweEZGKTsKICB9IHdoaWxlKG4gPiAwKTsKICByZXR1cm4gdGhpcy5wdXRCeXRlcyhieXRlcyk7Cn07CgovKioKICogUHV0cyBhIHNpZ25lZCBuLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuIFR3bydzCiAqIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gaXMgdXNlZC4KICoKICogQHBhcmFtIGkgdGhlIG4tYml0IGludGVnZXIuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUucHV0U2lnbmVkSW50ID0gZnVuY3Rpb24oaSwgbikgewogIGlmKGkgPCAwKSB7CiAgICBpICs9IDIgPDwgKG4gLSAxKTsKICB9CiAgcmV0dXJuIHRoaXMucHV0SW50KGksIG4pOwp9OwoKLyoqCiAqIFB1dHMgdGhlIGdpdmVuIGJ1ZmZlciBpbnRvIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZXIgdG8gcHV0IGludG8gdGhpcyBvbmUuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnB1dEJ1ZmZlciA9IGZ1bmN0aW9uKGJ1ZmZlcikgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKGJ1ZmZlci5nZXRCeXRlcygpKTsKfTsKCi8qKgogKiBHZXRzIGEgYnl0ZSBmcm9tIHRoaXMgYnVmZmVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZCBwb2ludGVyIGJ5IDEuCiAqCiAqIEByZXR1cm4gdGhlIGJ5dGUuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEJ5dGUgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkKyspOwp9OwoKLyoqCiAqIEdldHMgYSB1aW50MTYgZnJvbSB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZAogKiBwb2ludGVyIGJ5IDIuCiAqCiAqIEByZXR1cm4gdGhlIHVpbnQxNi4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuZ2V0SW50MTYgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9ICgKICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCkgPDwgOCBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAxKSk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNCA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gKAogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkKSA8PCAxNiBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAxKSA8PCA4IF4KICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIDIpKTsKICB0aGlzLnJlYWQgKz0gMzsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgdWludDMyIGZyb20gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlIHJlYWQKICogcG9pbnRlciBieSA0LgogKgogKiBAcmV0dXJuIHRoZSB3b3JkLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQzMiA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gKAogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkKSA8PCAyNCBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAxKSA8PCAxNiBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAyKSA8PCA4IF4KICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIDMpKTsKICB0aGlzLnJlYWQgKz0gNDsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgdWludDE2IGZyb20gdGhpcyBidWZmZXIgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlIHJlYWQKICogcG9pbnRlciBieSAyLgogKgogKiBAcmV0dXJuIHRoZSB1aW50MTYuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEludDE2TGUgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9ICgKICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCkgXgogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkICsgMSkgPDwgOCk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNExlID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSAoCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQpIF4KICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIDEpIDw8IDggXgogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkICsgMikgPDwgMTYpOwogIHRoaXMucmVhZCArPSAzOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEdldHMgYSB1aW50MzIgZnJvbSB0aGlzIGJ1ZmZlciBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZAogKiBwb2ludGVyIGJ5IDQuCiAqCiAqIEByZXR1cm4gdGhlIHdvcmQuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEludDMyTGUgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9ICgKICAgIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCkgXgogICAgdGhpcy5kYXRhLmNoYXJDb2RlQXQodGhpcy5yZWFkICsgMSkgPDwgOCBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAyKSA8PCAxNiBeCiAgICB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQgKyAzKSA8PCAyNCk7CiAgdGhpcy5yZWFkICs9IDQ7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhbiBuLWJpdCBpbnRlZ2VyIGZyb20gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlCiAqIHJlYWQgcG9pbnRlciBieSBuLzguCiAqCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGUgaW50ZWdlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuZ2V0SW50ID0gZnVuY3Rpb24obikgewogIHZhciBydmFsID0gMDsKICBkbyB7CiAgICBydmFsID0gKHJ2YWwgPDwgOCkgKyB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLnJlYWQrKyk7CiAgICBuIC09IDg7CiAgfSB3aGlsZShuID4gMCk7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHNpZ25lZCBuLWJpdCBpbnRlZ2VyIGZyb20gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlciwgdXNpbmcKICogdHdvJ3MgY29tcGxlbWVudCwgYW5kIGFkdmFuY2VzIHRoZSByZWFkIHBvaW50ZXIgYnkgbi84LgogKgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhlIGludGVnZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldFNpZ25lZEludCA9IGZ1bmN0aW9uKG4pIHsKICB2YXIgeCA9IHRoaXMuZ2V0SW50KG4pOwogIHZhciBtYXggPSAyIDw8IChuIC0gMik7CiAgaWYoeCA+PSBtYXgpIHsKICAgIHggLT0gbWF4IDw8IDE7CiAgfQogIHJldHVybiB4Owp9OwoKLyoqCiAqIFJlYWRzIGJ5dGVzIG91dCBpbnRvIGEgVVRGLTggc3RyaW5nIGFuZCBjbGVhcnMgdGhlbSBmcm9tIHRoZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQsIHVuZGVmaW5lZCBvciBudWxsIGZvciBhbGwuCiAqCiAqIEByZXR1cm4gYSBVVEYtOCBzdHJpbmcgb2YgYnl0ZXMuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmdldEJ5dGVzID0gZnVuY3Rpb24oY291bnQpIHsKICB2YXIgcnZhbDsKICBpZihjb3VudCkgewogICAgLy8gcmVhZCBjb3VudCBieXRlcwogICAgY291bnQgPSBNYXRoLm1pbih0aGlzLmxlbmd0aCgpLCBjb3VudCk7CiAgICBydmFsID0gdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCwgdGhpcy5yZWFkICsgY291bnQpOwogICAgdGhpcy5yZWFkICs9IGNvdW50OwogIH0gZWxzZSBpZihjb3VudCA9PT0gMCkgewogICAgcnZhbCA9ICcnOwogIH0gZWxzZSB7CiAgICAvLyByZWFkIGFsbCBieXRlcywgb3B0aW1pemUgdG8gb25seSBjb3B5IHdoZW4gbmVlZGVkCiAgICBydmFsID0gKHRoaXMucmVhZCA9PT0gMCkgPyB0aGlzLmRhdGEgOiB0aGlzLmRhdGEuc2xpY2UodGhpcy5yZWFkKTsKICAgIHRoaXMuY2xlYXIoKTsKICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIFVURi04IGVuY29kZWQgc3RyaW5nIG9mIHRoZSBieXRlcyBmcm9tIHRoaXMgYnVmZmVyIHdpdGhvdXQgbW9kaWZ5aW5nCiAqIHRoZSByZWFkIHBvaW50ZXIuCiAqCiAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGdldCwgb21pdCB0byBnZXQgYWxsLgogKgogKiBAcmV0dXJuIGEgc3RyaW5nIGZ1bGwgb2YgVVRGLTggZW5jb2RlZCBjaGFyYWN0ZXJzLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5ieXRlcyA9IGZ1bmN0aW9uKGNvdW50KSB7CiAgcmV0dXJuICh0eXBlb2YoY291bnQpID09PSAndW5kZWZpbmVkJyA/CiAgICB0aGlzLmRhdGEuc2xpY2UodGhpcy5yZWFkKSA6CiAgICB0aGlzLmRhdGEuc2xpY2UodGhpcy5yZWFkLCB0aGlzLnJlYWQgKyBjb3VudCkpOwp9OwoKLyoqCiAqIEdldHMgYSBieXRlIGF0IHRoZSBnaXZlbiBpbmRleCB3aXRob3V0IG1vZGlmeWluZyB0aGUgcmVhZCBwb2ludGVyLgogKgogKiBAcGFyYW0gaSB0aGUgYnl0ZSBpbmRleC4KICoKICogQHJldHVybiB0aGUgYnl0ZS4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuIHRoaXMuZGF0YS5jaGFyQ29kZUF0KHRoaXMucmVhZCArIGkpOwp9OwoKLyoqCiAqIFB1dHMgYSBieXRlIGF0IHRoZSBnaXZlbiBpbmRleCB3aXRob3V0IG1vZGlmeWluZyB0aGUgcmVhZCBwb2ludGVyLgogKgogKiBAcGFyYW0gaSB0aGUgYnl0ZSBpbmRleC4KICogQHBhcmFtIGIgdGhlIGJ5dGUgdG8gcHV0LgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5zZXRBdCA9IGZ1bmN0aW9uKGksIGIpIHsKICB0aGlzLmRhdGEgPSB0aGlzLmRhdGEuc3Vic3RyKDAsIHRoaXMucmVhZCArIGkpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoYikgKwogICAgdGhpcy5kYXRhLnN1YnN0cih0aGlzLnJlYWQgKyBpICsgMSk7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogR2V0cyB0aGUgbGFzdCBieXRlIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSByZWFkIHBvaW50ZXIuCiAqCiAqIEByZXR1cm4gdGhlIGxhc3QgYnl0ZS4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUubGFzdCA9IGZ1bmN0aW9uKCkgewogIHJldHVybiB0aGlzLmRhdGEuY2hhckNvZGVBdCh0aGlzLmRhdGEubGVuZ3RoIC0gMSk7Cn07CgovKioKICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGNvcHkuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbigpIHsKICB2YXIgYyA9IHV0aWwuY3JlYXRlQnVmZmVyKHRoaXMuZGF0YSk7CiAgYy5yZWFkID0gdGhpcy5yZWFkOwogIHJldHVybiBjOwp9OwoKLyoqCiAqIENvbXBhY3RzIHRoaXMgYnVmZmVyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5CeXRlU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oKSB7CiAgaWYodGhpcy5yZWFkID4gMCkgewogICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCk7CiAgICB0aGlzLnJlYWQgPSAwOwogIH0KICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBDbGVhcnMgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5kYXRhID0gJyc7CiAgdGhpcy5yZWFkID0gMDsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBTaG9ydGVucyB0aGlzIGJ1ZmZlciBieSB0cmltaW5nIGJ5dGVzIG9mZiBvZiB0aGUgZW5kIG9mIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiBieXRlcyB0byB0cmltIG9mZi4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuQnl0ZVN0cmluZ0J1ZmZlci5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihjb3VudCkgewogIHZhciBsZW4gPSBNYXRoLm1heCgwLCB0aGlzLmxlbmd0aCgpIC0gY291bnQpOwogIHRoaXMuZGF0YSA9IHRoaXMuZGF0YS5zdWJzdHIodGhpcy5yZWFkLCBsZW4pOwogIHRoaXMucmVhZCA9IDA7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogQ29udmVydHMgdGhpcyBidWZmZXIgdG8gYSBoZXhhZGVjaW1hbCBzdHJpbmcuCiAqCiAqIEByZXR1cm4gYSBoZXhhZGVjaW1hbCBzdHJpbmcuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSAnJzsKICBmb3IodmFyIGkgPSB0aGlzLnJlYWQ7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyArK2kpIHsKICAgIHZhciBiID0gdGhpcy5kYXRhLmNoYXJDb2RlQXQoaSk7CiAgICBpZihiIDwgMTYpIHsKICAgICAgcnZhbCArPSAnMCc7CiAgICB9CiAgICBydmFsICs9IGIudG9TdHJpbmcoMTYpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyB0aGlzIGJ1ZmZlciB0byBhIFVURi0xNiBzdHJpbmcgKHN0YW5kYXJkIEphdmFTY3JpcHQgc3RyaW5nKS4KICoKICogQHJldHVybiBhIFVURi0xNiBzdHJpbmcuCiAqLwp1dGlsLkJ5dGVTdHJpbmdCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuIHV0aWwuZGVjb2RlVXRmOCh0aGlzLmJ5dGVzKCkpOwp9OwoKLyoqIEVuZCBCdWZmZXIgdy9CaW5hcnlTdHJpbmcgYmFja2luZyAqLwoKCi8qKiBCdWZmZXIgdy9VSW50OEFycmF5IGJhY2tpbmcgKi8KCi8qKgogKiBGSVhNRTogRXhwZXJpbWVudGFsLiBEbyBub3QgdXNlIHlldC4KICoKICogQ29uc3RydWN0b3IgZm9yIGFuIEFycmF5QnVmZmVyLWJhY2tlZCBieXRlIGJ1ZmZlci4KICoKICogVGhlIGJ1ZmZlciBtYXkgYmUgY29uc3RydWN0ZWQgZnJvbSBhIHN0cmluZywgYW4gQXJyYXlCdWZmZXIsIERhdGFWaWV3LCBvciBhCiAqIFR5cGVkQXJyYXkuCiAqCiAqIElmIGEgc3RyaW5nIGlzIGdpdmVuLCBpdHMgZW5jb2Rpbmcgc2hvdWxkIGJlIHByb3ZpZGVkIGFzIGFuIG9wdGlvbiwKICogb3RoZXJ3aXNlIGl0IHdpbGwgZGVmYXVsdCB0byAnYmluYXJ5Jy4gQSAnYmluYXJ5JyBzdHJpbmcgaXMgZW5jb2RlZCBzdWNoCiAqIHRoYXQgZWFjaCBjaGFyYWN0ZXIgaXMgb25lIGJ5dGUgaW4gbGVuZ3RoIGFuZCBzaXplLgogKgogKiBJZiBhbiBBcnJheUJ1ZmZlciwgRGF0YVZpZXcsIG9yIFR5cGVkQXJyYXkgaXMgZ2l2ZW4sIGl0IHdpbGwgYmUgdXNlZAogKiAqZGlyZWN0bHkqIHdpdGhvdXQgYW55IGNvcHlpbmcuIE5vdGUgdGhhdCwgaWYgYSB3cml0ZSB0byB0aGUgYnVmZmVyIHJlcXVpcmVzCiAqIG1vcmUgc3BhY2UsIHRoZSBidWZmZXIgd2lsbCBhbGxvY2F0ZSBhIG5ldyBiYWNraW5nIEFycmF5QnVmZmVyIHRvCiAqIGFjY29tbW9kYXRlLiBUaGUgc3RhcnRpbmcgcmVhZCBhbmQgd3JpdGUgb2Zmc2V0cyBmb3IgdGhlIGJ1ZmZlciBtYXkgYmUKICogZ2l2ZW4gYXMgb3B0aW9ucy4KICoKICogQHBhcmFtIFtiXSB0aGUgaW5pdGlhbCBieXRlcyBmb3IgdGhpcyBidWZmZXIuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgW3JlYWRPZmZzZXRdIHRoZSBzdGFydGluZyByZWFkIG9mZnNldCB0byB1c2UgKGRlZmF1bHQ6IDApLgogKiAgICAgICAgICBbd3JpdGVPZmZzZXRdIHRoZSBzdGFydGluZyB3cml0ZSBvZmZzZXQgdG8gdXNlIChkZWZhdWx0OiB0aGUKICogICAgICAgICAgICBsZW5ndGggb2YgdGhlIGZpcnN0IHBhcmFtZXRlcikuCiAqICAgICAgICAgIFtncm93U2l6ZV0gdGhlIG1pbmltdW0gYW1vdW50LCBpbiBieXRlcywgdG8gZ3JvdyB0aGUgYnVmZmVyIGJ5IHRvCiAqICAgICAgICAgICAgYWNjb21tb2RhdGUgd3JpdGVzIChkZWZhdWx0OiAxMDI0KS4KICogICAgICAgICAgW2VuY29kaW5nXSB0aGUgZW5jb2RpbmcgKCdiaW5hcnknLCAndXRmOCcsICd1dGYxNicsICdoZXgnKSBmb3IgdGhlCiAqICAgICAgICAgICAgZmlyc3QgcGFyYW1ldGVyLCBpZiBpdCBpcyBhIHN0cmluZyAoZGVmYXVsdDogJ2JpbmFyeScpLgogKi8KZnVuY3Rpb24gRGF0YUJ1ZmZlcihiLCBvcHRpb25zKSB7CiAgLy8gZGVmYXVsdCBvcHRpb25zCiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgogIC8vIHBvaW50ZXJzIGZvciByZWFkIGZyb20vd3JpdGUgdG8gYnVmZmVyCiAgdGhpcy5yZWFkID0gb3B0aW9ucy5yZWFkT2Zmc2V0IHx8IDA7CiAgdGhpcy5ncm93U2l6ZSA9IG9wdGlvbnMuZ3Jvd1NpemUgfHwgMTAyNDsKCiAgdmFyIGlzQXJyYXlCdWZmZXIgPSB1dGlsLmlzQXJyYXlCdWZmZXIoYik7CiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID0gdXRpbC5pc0FycmF5QnVmZmVyVmlldyhiKTsKICBpZihpc0FycmF5QnVmZmVyIHx8IGlzQXJyYXlCdWZmZXJWaWV3KSB7CiAgICAvLyB1c2UgQXJyYXlCdWZmZXIgZGlyZWN0bHkKICAgIGlmKGlzQXJyYXlCdWZmZXIpIHsKICAgICAgdGhpcy5kYXRhID0gbmV3IERhdGFWaWV3KGIpOwogICAgfSBlbHNlIHsKICAgICAgLy8gVE9ETzogYWRqdXN0IHJlYWQvd3JpdGUgb2Zmc2V0IGJhc2VkIG9uIHRoZSB0eXBlIG9mIHZpZXcKICAgICAgLy8gb3Igc3BlY2lmeSB0aGF0IHRoaXMgbXVzdCBiZSBkb25lIGluIHRoZSBvcHRpb25zIC4uLiB0aGF0IHRoZQogICAgICAvLyBvZmZzZXRzIGFyZSBieXRlLWJhc2VkCiAgICAgIHRoaXMuZGF0YSA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpOwogICAgfQogICAgdGhpcy53cml0ZSA9ICgnd3JpdGVPZmZzZXQnIGluIG9wdGlvbnMgPwogICAgICBvcHRpb25zLndyaXRlT2Zmc2V0IDogdGhpcy5kYXRhLmJ5dGVMZW5ndGgpOwogICAgcmV0dXJuOwogIH0KCiAgLy8gaW5pdGlhbGl6ZSB0byBlbXB0eSBhcnJheSBidWZmZXIgYW5kIGFkZCBhbnkgZ2l2ZW4gYnl0ZXMgdXNpbmcgcHV0Qnl0ZXMKICB0aGlzLmRhdGEgPSBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDApKTsKICB0aGlzLndyaXRlID0gMDsKCiAgaWYoYiAhPT0gbnVsbCAmJiBiICE9PSB1bmRlZmluZWQpIHsKICAgIHRoaXMucHV0Qnl0ZXMoYik7CiAgfQoKICBpZignd3JpdGVPZmZzZXQnIGluIG9wdGlvbnMpIHsKICAgIHRoaXMud3JpdGUgPSBvcHRpb25zLndyaXRlT2Zmc2V0OwogIH0KfQp1dGlsLkRhdGFCdWZmZXIgPSBEYXRhQnVmZmVyOwoKLyoqCiAqIEdldHMgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsKICByZXR1cm4gdGhpcy53cml0ZSAtIHRoaXMucmVhZDsKfTsKCi8qKgogKiBHZXRzIHdoZXRoZXIgb3Igbm90IHRoaXMgYnVmZmVyIGlzIGVtcHR5LgogKgogKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBidWZmZXIgaXMgZW1wdHksIGZhbHNlIGlmIG5vdC4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uKCkgewogIHJldHVybiB0aGlzLmxlbmd0aCgpIDw9IDA7Cn07CgovKioKICogRW5zdXJlcyB0aGlzIGJ1ZmZlciBoYXMgZW5vdWdoIGVtcHR5IHNwYWNlIHRvIGFjY29tbW9kYXRlIHRoZSBnaXZlbiBudW1iZXIKICogb2YgYnl0ZXMuIEFuIG9wdGlvbmFsIHBhcmFtZXRlciBtYXkgYmUgZ2l2ZW4gdGhhdCBpbmRpY2F0ZXMgYSBtaW5pbXVtCiAqIGFtb3VudCB0byBncm93IHRoZSBidWZmZXIgaWYgbmVjZXNzYXJ5LiBJZiB0aGUgcGFyYW1ldGVyIGlzIG5vdCBnaXZlbiwKICogdGhlIGJ1ZmZlciB3aWxsIGJlIGdyb3duIGJ5IHNvbWUgcHJldmlvdXNseS1zcGVjaWZpZWQgZGVmYXVsdCBhbW91bnQKICogb3IgaGV1cmlzdGljLgogKgogKiBAcGFyYW0gYW1vdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYWNjb21tb2RhdGUuCiAqIEBwYXJhbSBbZ3Jvd1NpemVdIHRoZSBtaW5pbXVtIGFtb3VudCwgaW4gYnl0ZXMsIHRvIGdyb3cgdGhlIGJ1ZmZlciBieSBpZgogKiAgICAgICAgICBuZWNlc3NhcnkuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmFjY29tbW9kYXRlID0gZnVuY3Rpb24oYW1vdW50LCBncm93U2l6ZSkgewogIGlmKHRoaXMubGVuZ3RoKCkgPj0gYW1vdW50KSB7CiAgICByZXR1cm4gdGhpczsKICB9CiAgZ3Jvd1NpemUgPSBNYXRoLm1heChncm93U2l6ZSB8fCB0aGlzLmdyb3dTaXplLCBhbW91bnQpOwoKICAvLyBncm93IGJ1ZmZlcgogIHZhciBzcmMgPSBuZXcgVWludDhBcnJheSgKICAgIHRoaXMuZGF0YS5idWZmZXIsIHRoaXMuZGF0YS5ieXRlT2Zmc2V0LCB0aGlzLmRhdGEuYnl0ZUxlbmd0aCk7CiAgdmFyIGRzdCA9IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKyBncm93U2l6ZSk7CiAgZHN0LnNldChzcmMpOwogIHRoaXMuZGF0YSA9IG5ldyBEYXRhVmlldyhkc3QuYnVmZmVyKTsKCiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIGJ5dGUgaW4gdGhpcyBidWZmZXIuCiAqCiAqIEBwYXJhbSBiIHRoZSBieXRlIHRvIHB1dC4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0Qnl0ZSA9IGZ1bmN0aW9uKGIpIHsKICB0aGlzLmFjY29tbW9kYXRlKDEpOwogIHRoaXMuZGF0YS5zZXRVaW50OCh0aGlzLndyaXRlKyssIGIpOwogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIFB1dHMgYSBieXRlIGluIHRoaXMgYnVmZmVyIE4gdGltZXMuCiAqCiAqIEBwYXJhbSBiIHRoZSBieXRlIHRvIHB1dC4KICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBieXRlcyBvZiB2YWx1ZSBiIHRvIHB1dC4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZmlsbFdpdGhCeXRlID0gZnVuY3Rpb24oYiwgbikgewogIHRoaXMuYWNjb21tb2RhdGUobik7CiAgZm9yKHZhciBpID0gMDsgaSA8IG47ICsraSkgewogICAgdGhpcy5kYXRhLnNldFVpbnQ4KGIpOwogIH0KICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGJ5dGVzIGluIHRoaXMgYnVmZmVyLiBUaGUgYnl0ZXMgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nLCBhbgogKiBBcnJheUJ1ZmZlciwgYSBEYXRhVmlldywgb3IgYSBUeXBlZEFycmF5LgogKgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGVzIHRvIHB1dC4KICogQHBhcmFtIFtlbmNvZGluZ10gdGhlIGVuY29kaW5nIGZvciB0aGUgZmlyc3QgcGFyYW1ldGVyICgnYmluYXJ5JywgJ3V0ZjgnLAogKiAgICAgICAgICAndXRmMTYnLCAnaGV4JyksIGlmIGl0IGlzIGEgc3RyaW5nIChkZWZhdWx0OiAnYmluYXJ5JykuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEJ5dGVzID0gZnVuY3Rpb24oYnl0ZXMsIGVuY29kaW5nKSB7CiAgaWYodXRpbC5pc0FycmF5QnVmZmVyVmlldyhieXRlcykpIHsKICAgIHZhciBzcmMgPSBuZXcgVWludDhBcnJheShieXRlcy5idWZmZXIsIGJ5dGVzLmJ5dGVPZmZzZXQsIGJ5dGVzLmJ5dGVMZW5ndGgpOwogICAgdmFyIGxlbiA9IHNyYy5ieXRlTGVuZ3RoIC0gc3JjLmJ5dGVPZmZzZXQ7CiAgICB0aGlzLmFjY29tbW9kYXRlKGxlbik7CiAgICB2YXIgZHN0ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLmJ1ZmZlciwgdGhpcy53cml0ZSk7CiAgICBkc3Quc2V0KHNyYyk7CiAgICB0aGlzLndyaXRlICs9IGxlbjsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgaWYodXRpbC5pc0FycmF5QnVmZmVyKGJ5dGVzKSkgewogICAgdmFyIHNyYyA9IG5ldyBVaW50OEFycmF5KGJ5dGVzKTsKICAgIHRoaXMuYWNjb21tb2RhdGUoc3JjLmJ5dGVMZW5ndGgpOwogICAgdmFyIGRzdCA9IG5ldyBVaW50OEFycmF5KHRoaXMuZGF0YS5idWZmZXIpOwogICAgZHN0LnNldChzcmMsIHRoaXMud3JpdGUpOwogICAgdGhpcy53cml0ZSArPSBzcmMuYnl0ZUxlbmd0aDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLy8gYnl0ZXMgaXMgYSB1dGlsLkRhdGFCdWZmZXIgb3IgZXF1aXZhbGVudAogIGlmKGJ5dGVzIGluc3RhbmNlb2YgdXRpbC5EYXRhQnVmZmVyIHx8CiAgICAodHlwZW9mIGJ5dGVzID09PSAnb2JqZWN0JyAmJgogICAgdHlwZW9mIGJ5dGVzLnJlYWQgPT09ICdudW1iZXInICYmIHR5cGVvZiBieXRlcy53cml0ZSA9PT0gJ251bWJlcicgJiYKICAgIHV0aWwuaXNBcnJheUJ1ZmZlclZpZXcoYnl0ZXMuZGF0YSkpKSB7CiAgICB2YXIgc3JjID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZXMuZGF0YS5ieXRlTGVuZ3RoLCBieXRlcy5yZWFkLCBieXRlcy5sZW5ndGgoKSk7CiAgICB0aGlzLmFjY29tbW9kYXRlKHNyYy5ieXRlTGVuZ3RoKTsKICAgIHZhciBkc3QgPSBuZXcgVWludDhBcnJheShieXRlcy5kYXRhLmJ5dGVMZW5ndGgsIHRoaXMud3JpdGUpOwogICAgZHN0LnNldChzcmMpOwogICAgdGhpcy53cml0ZSArPSBzcmMuYnl0ZUxlbmd0aDsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgaWYoYnl0ZXMgaW5zdGFuY2VvZiB1dGlsLkJ5dGVTdHJpbmdCdWZmZXIpIHsKICAgIC8vIGNvcHkgYmluYXJ5IHN0cmluZyBhbmQgcHJvY2VzcyBhcyB0aGUgc2FtZSBhcyBhIHN0cmluZyBwYXJhbWV0ZXIgYmVsb3cKICAgIGJ5dGVzID0gYnl0ZXMuZGF0YTsKICAgIGVuY29kaW5nID0gJ2JpbmFyeSc7CiAgfQoKICAvLyBzdHJpbmcgY29udmVyc2lvbgogIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgJ2JpbmFyeSc7CiAgaWYodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykgewogICAgdmFyIHZpZXc7CgogICAgLy8gZGVjb2RlIGZyb20gc3RyaW5nCiAgICBpZihlbmNvZGluZyA9PT0gJ2hleCcpIHsKICAgICAgdGhpcy5hY2NvbW1vZGF0ZShNYXRoLmNlaWwoYnl0ZXMubGVuZ3RoIC8gMikpOwogICAgICB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLmJ1ZmZlciwgdGhpcy53cml0ZSk7CiAgICAgIHRoaXMud3JpdGUgKz0gdXRpbC5iaW5hcnkuaGV4LmRlY29kZShieXRlcywgdmlldywgdGhpcy53cml0ZSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfQogICAgaWYoZW5jb2RpbmcgPT09ICdiYXNlNjQnKSB7CiAgICAgIHRoaXMuYWNjb21tb2RhdGUoTWF0aC5jZWlsKGJ5dGVzLmxlbmd0aCAvIDQpICogMyk7CiAgICAgIHZpZXcgPSBuZXcgVWludDhBcnJheSh0aGlzLmRhdGEuYnVmZmVyLCB0aGlzLndyaXRlKTsKICAgICAgdGhpcy53cml0ZSArPSB1dGlsLmJpbmFyeS5iYXNlNjQuZGVjb2RlKGJ5dGVzLCB2aWV3LCB0aGlzLndyaXRlKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgLy8gZW5jb2RlIHRleHQgYXMgVVRGLTggYnl0ZXMKICAgIGlmKGVuY29kaW5nID09PSAndXRmOCcpIHsKICAgICAgLy8gZW5jb2RlIGFzIFVURi04IHRoZW4gZGVjb2RlIHN0cmluZyBhcyByYXcgYmluYXJ5CiAgICAgIGJ5dGVzID0gdXRpbC5lbmNvZGVVdGY4KGJ5dGVzKTsKICAgICAgZW5jb2RpbmcgPSAnYmluYXJ5JzsKICAgIH0KCiAgICAvLyBkZWNvZGUgc3RyaW5nIGFzIHJhdyBiaW5hcnkKICAgIGlmKGVuY29kaW5nID09PSAnYmluYXJ5JyB8fCBlbmNvZGluZyA9PT0gJ3JhdycpIHsKICAgICAgLy8gb25lIGJ5dGUgcGVyIGNoYXJhY3RlcgogICAgICB0aGlzLmFjY29tbW9kYXRlKGJ5dGVzLmxlbmd0aCk7CiAgICAgIHZpZXcgPSBuZXcgVWludDhBcnJheSh0aGlzLmRhdGEuYnVmZmVyLCB0aGlzLndyaXRlKTsKICAgICAgdGhpcy53cml0ZSArPSB1dGlsLmJpbmFyeS5yYXcuZGVjb2RlKHZpZXcpOwogICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgICAvLyBlbmNvZGUgdGV4dCBhcyBVVEYtMTYgYnl0ZXMKICAgIGlmKGVuY29kaW5nID09PSAndXRmMTYnKSB7CiAgICAgIC8vIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyCiAgICAgIHRoaXMuYWNjb21tb2RhdGUoYnl0ZXMubGVuZ3RoICogMik7CiAgICAgIHZpZXcgPSBuZXcgVWludDE2QXJyYXkodGhpcy5kYXRhLmJ1ZmZlciwgdGhpcy53cml0ZSk7CiAgICAgIHRoaXMud3JpdGUgKz0gdXRpbC50ZXh0LnV0ZjE2LmVuY29kZSh2aWV3KTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpOwogIH0KCiAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgcGFyYW1ldGVyOiAnICsgYnl0ZXMpOwp9OwoKLyoqCiAqIFB1dHMgdGhlIGdpdmVuIGJ1ZmZlciBpbnRvIHRoaXMgYnVmZmVyLgogKgogKiBAcGFyYW0gYnVmZmVyIHRoZSBidWZmZXIgdG8gcHV0IGludG8gdGhpcyBvbmUuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEJ1ZmZlciA9IGZ1bmN0aW9uKGJ1ZmZlcikgewogIHRoaXMucHV0Qnl0ZXMoYnVmZmVyKTsKICBidWZmZXIuY2xlYXIoKTsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGEgc3RyaW5nIGludG8gdGhpcyBidWZmZXIuCiAqCiAqIEBwYXJhbSBzdHIgdGhlIHN0cmluZyB0byBwdXQuCiAqIEBwYXJhbSBbZW5jb2RpbmddIHRoZSBlbmNvZGluZyBmb3IgdGhlIHN0cmluZyAoZGVmYXVsdDogJ3V0ZjE2JykuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dFN0cmluZyA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiB0aGlzLnB1dEJ5dGVzKHN0ciwgJ3V0ZjE2Jyk7Cn07CgovKioKICogUHV0cyBhIDE2LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAxNi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MTYgPSBmdW5jdGlvbihpKSB7CiAgdGhpcy5hY2NvbW1vZGF0ZSgyKTsKICB0aGlzLmRhdGEuc2V0SW50MTYodGhpcy53cml0ZSwgaSk7CiAgdGhpcy53cml0ZSArPSAyOwogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIFB1dHMgYSAyNC1iaXQgaW50ZWdlciBpbiB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyLgogKgogKiBAcGFyYW0gaSB0aGUgMjQtYml0IGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEludDI0ID0gZnVuY3Rpb24oaSkgewogIHRoaXMuYWNjb21tb2RhdGUoMyk7CiAgdGhpcy5kYXRhLnNldEludDE2KHRoaXMud3JpdGUsIGkgPj4gOCAmIDB4RkZGRik7CiAgdGhpcy5kYXRhLnNldEludDgodGhpcy53cml0ZSwgaSA+PiAxNiAmIDB4RkYpOwogIHRoaXMud3JpdGUgKz0gMzsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBQdXRzIGEgMzItYml0IGludGVnZXIgaW4gdGhpcyBidWZmZXIgaW4gYmlnLWVuZGlhbiBvcmRlci4KICoKICogQHBhcmFtIGkgdGhlIDMyLWJpdCBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoaXMgYnVmZmVyLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5wdXRJbnQzMiA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDQpOwogIHRoaXMuZGF0YS5zZXRJbnQzMih0aGlzLndyaXRlLCBpKTsKICB0aGlzLndyaXRlICs9IDQ7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIDE2LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAxNi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MTZMZSA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDIpOwogIHRoaXMuZGF0YS5zZXRJbnQxNih0aGlzLndyaXRlLCBpLCB0cnVlKTsKICB0aGlzLndyaXRlICs9IDI7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIDI0LWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAyNC1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MjRMZSA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDMpOwogIHRoaXMuZGF0YS5zZXRJbnQ4KHRoaXMud3JpdGUsIGkgPj4gMTYgJiAweEZGKTsKICB0aGlzLmRhdGEuc2V0SW50MTYodGhpcy53cml0ZSwgaSA+PiA4ICYgMHhGRkZGLCB0cnVlKTsKICB0aGlzLndyaXRlICs9IDM7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIDMyLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSAzMi1iaXQgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0SW50MzJMZSA9IGZ1bmN0aW9uKGkpIHsKICB0aGlzLmFjY29tbW9kYXRlKDQpOwogIHRoaXMuZGF0YS5zZXRJbnQzMih0aGlzLndyaXRlLCBpLCB0cnVlKTsKICB0aGlzLndyaXRlICs9IDQ7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhbiBuLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSBuLWJpdCBpbnRlZ2VyLgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnB1dEludCA9IGZ1bmN0aW9uKGksIG4pIHsKICB0aGlzLmFjY29tbW9kYXRlKG4gLyA4KTsKICBkbyB7CiAgICBuIC09IDg7CiAgICB0aGlzLmRhdGEuc2V0SW50OCh0aGlzLndyaXRlKyssIChpID4+IG4pICYgMHhGRik7CiAgfSB3aGlsZShuID4gMCk7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogUHV0cyBhIHNpZ25lZCBuLWJpdCBpbnRlZ2VyIGluIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIuIFR3bydzCiAqIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gaXMgdXNlZC4KICoKICogQHBhcmFtIGkgdGhlIG4tYml0IGludGVnZXIuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUucHV0U2lnbmVkSW50ID0gZnVuY3Rpb24oaSwgbikgewogIHRoaXMuYWNjb21tb2RhdGUobiAvIDgpOwogIGlmKGkgPCAwKSB7CiAgICBpICs9IDIgPDwgKG4gLSAxKTsKICB9CiAgcmV0dXJuIHRoaXMucHV0SW50KGksIG4pOwp9OwoKLyoqCiAqIEdldHMgYSBieXRlIGZyb20gdGhpcyBidWZmZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkIHBvaW50ZXIgYnkgMS4KICoKICogQHJldHVybiB0aGUgYnl0ZS4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0Qnl0ZSA9IGZ1bmN0aW9uKCkgewogIHJldHVybiB0aGlzLmRhdGEuZ2V0SW50OCh0aGlzLnJlYWQrKyk7Cn07CgovKioKICogR2V0cyBhIHVpbnQxNiBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMi4KICoKICogQHJldHVybiB0aGUgdWludDE2LgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQxNiA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gdGhpcy5kYXRhLmdldEludDE2KHRoaXMucmVhZCk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNCA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gKAogICAgdGhpcy5kYXRhLmdldEludDE2KHRoaXMucmVhZCkgPDwgOCBeCiAgICB0aGlzLmRhdGEuZ2V0SW50OCh0aGlzLnJlYWQgKyAyKSk7CiAgdGhpcy5yZWFkICs9IDM7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQzMiBmcm9tIHRoaXMgYnVmZmVyIGluIGJpZy1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgNC4KICoKICogQHJldHVybiB0aGUgd29yZC4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0SW50MzIgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9IHRoaXMuZGF0YS5nZXRJbnQzMih0aGlzLnJlYWQpOwogIHRoaXMucmVhZCArPSA0OwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEdldHMgYSB1aW50MTYgZnJvbSB0aGlzIGJ1ZmZlciBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUgcmVhZAogKiBwb2ludGVyIGJ5IDIuCiAqCiAqIEByZXR1cm4gdGhlIHVpbnQxNi4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0SW50MTZMZSA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gdGhpcy5kYXRhLmdldEludDE2KHRoaXMucmVhZCwgdHJ1ZSk7CiAgdGhpcy5yZWFkICs9IDI7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2V0cyBhIHVpbnQyNCBmcm9tIHRoaXMgYnVmZmVyIGluIGxpdHRsZS1lbmRpYW4gb3JkZXIgYW5kIGFkdmFuY2VzIHRoZSByZWFkCiAqIHBvaW50ZXIgYnkgMy4KICoKICogQHJldHVybiB0aGUgdWludDI0LgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQyNExlID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSAoCiAgICB0aGlzLmRhdGEuZ2V0SW50OCh0aGlzLnJlYWQpIF4KICAgIHRoaXMuZGF0YS5nZXRJbnQxNih0aGlzLnJlYWQgKyAxLCB0cnVlKSA8PCA4KTsKICB0aGlzLnJlYWQgKz0gMzsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgdWludDMyIGZyb20gdGhpcyBidWZmZXIgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciBhbmQgYWR2YW5jZXMgdGhlIHJlYWQKICogcG9pbnRlciBieSA0LgogKgogKiBAcmV0dXJuIHRoZSB3b3JkLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQzMkxlID0gZnVuY3Rpb24oKSB7CiAgdmFyIHJ2YWwgPSB0aGlzLmRhdGEuZ2V0SW50MzIodGhpcy5yZWFkLCB0cnVlKTsKICB0aGlzLnJlYWQgKz0gNDsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGFuIG4tYml0IGludGVnZXIgZnJvbSB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyIGFuZCBhZHZhbmNlcyB0aGUKICogcmVhZCBwb2ludGVyIGJ5IG4vOC4KICoKICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoZSBpbnRlZ2VyLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5nZXRJbnQgPSBmdW5jdGlvbihuKSB7CiAgdmFyIHJ2YWwgPSAwOwogIGRvIHsKICAgIHJ2YWwgPSAocnZhbCA8PCA4KSArIHRoaXMuZGF0YS5nZXRJbnQ4KHRoaXMucmVhZCsrKTsKICAgIG4gLT0gODsKICB9IHdoaWxlKG4gPiAwKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGEgc2lnbmVkIG4tYml0IGludGVnZXIgZnJvbSB0aGlzIGJ1ZmZlciBpbiBiaWctZW5kaWFuIG9yZGVyLCB1c2luZwogKiB0d28ncyBjb21wbGVtZW50LCBhbmQgYWR2YW5jZXMgdGhlIHJlYWQgcG9pbnRlciBieSBuLzguCiAqCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICoKICogQHJldHVybiB0aGUgaW50ZWdlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0U2lnbmVkSW50ID0gZnVuY3Rpb24obikgewogIHZhciB4ID0gdGhpcy5nZXRJbnQobik7CiAgdmFyIG1heCA9IDIgPDwgKG4gLSAyKTsKICBpZih4ID49IG1heCkgewogICAgeCAtPSBtYXggPDwgMTsKICB9CiAgcmV0dXJuIHg7Cn07CgovKioKICogUmVhZHMgYnl0ZXMgb3V0IGludG8gYSBVVEYtOCBzdHJpbmcgYW5kIGNsZWFycyB0aGVtIGZyb20gdGhlIGJ1ZmZlci4KICoKICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZCwgdW5kZWZpbmVkIG9yIG51bGwgZm9yIGFsbC4KICoKICogQHJldHVybiBhIFVURi04IHN0cmluZyBvZiBieXRlcy4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuZ2V0Qnl0ZXMgPSBmdW5jdGlvbihjb3VudCkgewogIC8vIFRPRE86IGRlcHJlY2F0ZSB0aGlzIG1ldGhvZCwgaXQgaXMgcG9vcmx5IG5hbWVkIGFuZAogIC8vIHRoaXMudG9TdHJpbmcoJ2JpbmFyeScpIHJlcGxhY2VzIGl0CiAgLy8gYWRkIGEgdG9UeXBlZEFycmF5KCkvdG9BcnJheUJ1ZmZlcigpIGZ1bmN0aW9uCiAgdmFyIHJ2YWw7CiAgaWYoY291bnQpIHsKICAgIC8vIHJlYWQgY291bnQgYnl0ZXMKICAgIGNvdW50ID0gTWF0aC5taW4odGhpcy5sZW5ndGgoKSwgY291bnQpOwogICAgcnZhbCA9IHRoaXMuZGF0YS5zbGljZSh0aGlzLnJlYWQsIHRoaXMucmVhZCArIGNvdW50KTsKICAgIHRoaXMucmVhZCArPSBjb3VudDsKICB9IGVsc2UgaWYoY291bnQgPT09IDApIHsKICAgIHJ2YWwgPSAnJzsKICB9IGVsc2UgewogICAgLy8gcmVhZCBhbGwgYnl0ZXMsIG9wdGltaXplIHRvIG9ubHkgY29weSB3aGVuIG5lZWRlZAogICAgcnZhbCA9ICh0aGlzLnJlYWQgPT09IDApID8gdGhpcy5kYXRhIDogdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCk7CiAgICB0aGlzLmNsZWFyKCk7CiAgfQogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEdldHMgYSBVVEYtOCBlbmNvZGVkIHN0cmluZyBvZiB0aGUgYnl0ZXMgZnJvbSB0aGlzIGJ1ZmZlciB3aXRob3V0IG1vZGlmeWluZwogKiB0aGUgcmVhZCBwb2ludGVyLgogKgogKiBAcGFyYW0gY291bnQgdGhlIG51bWJlciBvZiBieXRlcyB0byBnZXQsIG9taXQgdG8gZ2V0IGFsbC4KICoKICogQHJldHVybiBhIHN0cmluZyBmdWxsIG9mIFVURi04IGVuY29kZWQgY2hhcmFjdGVycy4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuYnl0ZXMgPSBmdW5jdGlvbihjb3VudCkgewogIC8vIFRPRE86IGRlcHJlY2F0ZSB0aGlzIG1ldGhvZCwgaXQgaXMgcG9vcmx5IG5hbWVkLCBhZGQgImdldFN0cmluZygpIgogIHJldHVybiAodHlwZW9mKGNvdW50KSA9PT0gJ3VuZGVmaW5lZCcgPwogICAgdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCkgOgogICAgdGhpcy5kYXRhLnNsaWNlKHRoaXMucmVhZCwgdGhpcy5yZWFkICsgY291bnQpKTsKfTsKCi8qKgogKiBHZXRzIGEgYnl0ZSBhdCB0aGUgZ2l2ZW4gaW5kZXggd2l0aG91dCBtb2RpZnlpbmcgdGhlIHJlYWQgcG9pbnRlci4KICoKICogQHBhcmFtIGkgdGhlIGJ5dGUgaW5kZXguCiAqCiAqIEByZXR1cm4gdGhlIGJ5dGUuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24oaSkgewogIHJldHVybiB0aGlzLmRhdGEuZ2V0VWludDgodGhpcy5yZWFkICsgaSk7Cn07CgovKioKICogUHV0cyBhIGJ5dGUgYXQgdGhlIGdpdmVuIGluZGV4IHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSByZWFkIHBvaW50ZXIuCiAqCiAqIEBwYXJhbSBpIHRoZSBieXRlIGluZGV4LgogKiBAcGFyYW0gYiB0aGUgYnl0ZSB0byBwdXQuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnNldEF0ID0gZnVuY3Rpb24oaSwgYikgewogIHRoaXMuZGF0YS5zZXRVaW50OChpLCBiKTsKICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBHZXRzIHRoZSBsYXN0IGJ5dGUgd2l0aG91dCBtb2RpZnlpbmcgdGhlIHJlYWQgcG9pbnRlci4KICoKICogQHJldHVybiB0aGUgbGFzdCBieXRlLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS5sYXN0ID0gZnVuY3Rpb24oKSB7CiAgcmV0dXJuIHRoaXMuZGF0YS5nZXRVaW50OCh0aGlzLndyaXRlIC0gMSk7Cn07CgovKioKICogQ3JlYXRlcyBhIGNvcHkgb2YgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGNvcHkuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gbmV3IHV0aWwuRGF0YUJ1ZmZlcih0aGlzKTsKfTsKCi8qKgogKiBDb21wYWN0cyB0aGlzIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUuY29tcGFjdCA9IGZ1bmN0aW9uKCkgewogIGlmKHRoaXMucmVhZCA+IDApIHsKICAgIHZhciBzcmMgPSBuZXcgVWludDhBcnJheSh0aGlzLmRhdGEuYnVmZmVyLCB0aGlzLnJlYWQpOwogICAgdmFyIGRzdCA9IG5ldyBVaW50OEFycmF5KHNyYy5ieXRlTGVuZ3RoKTsKICAgIGRzdC5zZXQoc3JjKTsKICAgIHRoaXMuZGF0YSA9IG5ldyBEYXRhVmlldyhkc3QpOwogICAgdGhpcy53cml0ZSAtPSB0aGlzLnJlYWQ7CiAgICB0aGlzLnJlYWQgPSAwOwogIH0KICByZXR1cm4gdGhpczsKfTsKCi8qKgogKiBDbGVhcnMgdGhpcyBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5kYXRhID0gbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigwKSk7CiAgdGhpcy5yZWFkID0gdGhpcy53cml0ZSA9IDA7CiAgcmV0dXJuIHRoaXM7Cn07CgovKioKICogU2hvcnRlbnMgdGhpcyBidWZmZXIgYnkgdHJpbWluZyBieXRlcyBvZmYgb2YgdGhlIGVuZCBvZiB0aGlzIGJ1ZmZlci4KICoKICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gdHJpbSBvZmYuCiAqCiAqIEByZXR1cm4gdGhpcyBidWZmZXIuCiAqLwp1dGlsLkRhdGFCdWZmZXIucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24oY291bnQpIHsKICB0aGlzLndyaXRlID0gTWF0aC5tYXgoMCwgdGhpcy5sZW5ndGgoKSAtIGNvdW50KTsKICB0aGlzLnJlYWQgPSBNYXRoLm1pbih0aGlzLnJlYWQsIHRoaXMud3JpdGUpOwogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIENvbnZlcnRzIHRoaXMgYnVmZmVyIHRvIGEgaGV4YWRlY2ltYWwgc3RyaW5nLgogKgogKiBAcmV0dXJuIGEgaGV4YWRlY2ltYWwgc3RyaW5nLgogKi8KdXRpbC5EYXRhQnVmZmVyLnByb3RvdHlwZS50b0hleCA9IGZ1bmN0aW9uKCkgewogIHZhciBydmFsID0gJyc7CiAgZm9yKHZhciBpID0gdGhpcy5yZWFkOyBpIDwgdGhpcy5kYXRhLmJ5dGVMZW5ndGg7ICsraSkgewogICAgdmFyIGIgPSB0aGlzLmRhdGEuZ2V0VWludDgoaSk7CiAgICBpZihiIDwgMTYpIHsKICAgICAgcnZhbCArPSAnMCc7CiAgICB9CiAgICBydmFsICs9IGIudG9TdHJpbmcoMTYpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyB0aGlzIGJ1ZmZlciB0byBhIHN0cmluZywgdXNpbmcgdGhlIGdpdmVuIGVuY29kaW5nLiBJZiBubwogKiBlbmNvZGluZyBpcyBnaXZlbiwgJ3V0ZjgnIChVVEYtOCkgaXMgdXNlZC4KICoKICogQHBhcmFtIFtlbmNvZGluZ10gdGhlIGVuY29kaW5nIHRvIHVzZTogJ2JpbmFyeScsICd1dGY4JywgJ3V0ZjE2JywgJ2hleCcsCiAqICAgICAgICAgICdiYXNlNjQnIChkZWZhdWx0OiAndXRmOCcpLgogKgogKiBAcmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBieXRlcyBpbiB0aGlzIGJ1ZmZlci4KICovCnV0aWwuRGF0YUJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbihlbmNvZGluZykgewogIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5kYXRhLCB0aGlzLnJlYWQsIHRoaXMubGVuZ3RoKCkpOwogIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgJ3V0ZjgnOwoKICAvLyBlbmNvZGUgdG8gc3RyaW5nCiAgaWYoZW5jb2RpbmcgPT09ICdiaW5hcnknIHx8IGVuY29kaW5nID09PSAncmF3JykgewogICAgcmV0dXJuIHV0aWwuYmluYXJ5LnJhdy5lbmNvZGUodmlldyk7CiAgfQogIGlmKGVuY29kaW5nID09PSAnaGV4JykgewogICAgcmV0dXJuIHV0aWwuYmluYXJ5LmhleC5lbmNvZGUodmlldyk7CiAgfQogIGlmKGVuY29kaW5nID09PSAnYmFzZTY0JykgewogICAgcmV0dXJuIHV0aWwuYmluYXJ5LmJhc2U2NC5lbmNvZGUodmlldyk7CiAgfQoKICAvLyBkZWNvZGUgdG8gdGV4dAogIGlmKGVuY29kaW5nID09PSAndXRmOCcpIHsKICAgIHJldHVybiB1dGlsLnRleHQudXRmOC5kZWNvZGUodmlldyk7CiAgfQogIGlmKGVuY29kaW5nID09PSAndXRmMTYnKSB7CiAgICByZXR1cm4gdXRpbC50ZXh0LnV0ZjE2LmRlY29kZSh2aWV3KTsKICB9CgogIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBlbmNvZGluZzogJyArIGVuY29kaW5nKTsKfTsKCi8qKiBFbmQgQnVmZmVyIHcvVUludDhBcnJheSBiYWNraW5nICovCgoKLyoqCiAqIENyZWF0ZXMgYSBidWZmZXIgdGhhdCBzdG9yZXMgYnl0ZXMuIEEgdmFsdWUgbWF5IGJlIGdpdmVuIHRvIHB1dCBpbnRvIHRoZQogKiBidWZmZXIgdGhhdCBpcyBlaXRoZXIgYSBzdHJpbmcgb2YgYnl0ZXMgb3IgYSBVVEYtMTYgc3RyaW5nIHRoYXQgd2lsbAogKiBiZSBlbmNvZGVkIHVzaW5nIFVURi04ICh0byBkbyB0aGUgbGF0dGVyLCBzcGVjaWZ5ICd1dGY4JyBhcyB0aGUgZW5jb2RpbmcpLgogKgogKiBAcGFyYW0gW2lucHV0XSB0aGUgYnl0ZXMgdG8gd3JhcCAoYXMgYSBzdHJpbmcpIG9yIGEgVVRGLTE2IHN0cmluZyB0byBlbmNvZGUKICogICAgICAgICAgYXMgVVRGLTguCiAqIEBwYXJhbSBbZW5jb2RpbmddIChkZWZhdWx0OiAncmF3Jywgb3RoZXI6ICd1dGY4JykuCiAqLwp1dGlsLmNyZWF0ZUJ1ZmZlciA9IGZ1bmN0aW9uKGlucHV0LCBlbmNvZGluZykgewogIC8vIFRPRE86IGRlcHJlY2F0ZSwgdXNlIG5ldyBCeXRlQnVmZmVyKCkgaW5zdGVhZAogIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgJ3Jhdyc7CiAgaWYoaW5wdXQgIT09IHVuZGVmaW5lZCAmJiBlbmNvZGluZyA9PT0gJ3V0ZjgnKSB7CiAgICBpbnB1dCA9IHV0aWwuZW5jb2RlVXRmOChpbnB1dCk7CiAgfQogIHJldHVybiBuZXcgdXRpbC5CeXRlQnVmZmVyKGlucHV0KTsKfTsKCi8qKgogKiBGaWxscyBhIHN0cmluZyB3aXRoIGEgcGFydGljdWxhciB2YWx1ZS4gSWYgeW91IHdhbnQgdGhlIHN0cmluZyB0byBiZSBhIGJ5dGUKICogc3RyaW5nLCBwYXNzIGluIFN0cmluZy5mcm9tQ2hhckNvZGUodGhlQnl0ZSkuCiAqCiAqIEBwYXJhbSBjIHRoZSBjaGFyYWN0ZXIgdG8gZmlsbCB0aGUgc3RyaW5nIHdpdGgsIHVzZSBTdHJpbmcuZnJvbUNoYXJDb2RlCiAqICAgICAgICAgIHRvIGZpbGwgdGhlIHN0cmluZyB3aXRoIGEgYnl0ZSB2YWx1ZS4KICogQHBhcmFtIG4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHZhbHVlIGMgdG8gZmlsbCB3aXRoLgogKgogKiBAcmV0dXJuIHRoZSBmaWxsZWQgc3RyaW5nLgogKi8KdXRpbC5maWxsU3RyaW5nID0gZnVuY3Rpb24oYywgbikgewogIHZhciBzID0gJyc7CiAgd2hpbGUobiA+IDApIHsKICAgIGlmKG4gJiAxKSB7CiAgICAgIHMgKz0gYzsKICAgIH0KICAgIG4gPj4+PSAxOwogICAgaWYobiA+IDApIHsKICAgICAgYyArPSBjOwogICAgfQogIH0KICByZXR1cm4gczsKfTsKCi8qKgogKiBQZXJmb3JtcyBhIHBlciBieXRlIFhPUiBiZXR3ZWVuIHR3byBieXRlIHN0cmluZ3MgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhCiAqIHN0cmluZyBvZiBieXRlcy4KICoKICogQHBhcmFtIHMxIGZpcnN0IHN0cmluZyBvZiBieXRlcy4KICogQHBhcmFtIHMyIHNlY29uZCBzdHJpbmcgb2YgYnl0ZXMuCiAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gWE9SLgogKgogKiBAcmV0dXJuIHRoZSBYT1InZCByZXN1bHQuCiAqLwp1dGlsLnhvckJ5dGVzID0gZnVuY3Rpb24oczEsIHMyLCBuKSB7CiAgdmFyIHMzID0gJyc7CiAgdmFyIGIgPSAnJzsKICB2YXIgdCA9ICcnOwogIHZhciBpID0gMDsKICB2YXIgYyA9IDA7CiAgZm9yKDsgbiA+IDA7IC0tbiwgKytpKSB7CiAgICBiID0gczEuY2hhckNvZGVBdChpKSBeIHMyLmNoYXJDb2RlQXQoaSk7CiAgICBpZihjID49IDEwKSB7CiAgICAgIHMzICs9IHQ7CiAgICAgIHQgPSAnJzsKICAgICAgYyA9IDA7CiAgICB9CiAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYik7CiAgICArK2M7CiAgfQogIHMzICs9IHQ7CiAgcmV0dXJuIHMzOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgaGV4IHN0cmluZyBpbnRvIGEgJ2JpbmFyeScgZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAqCiAqIEBwYXJhbSBoZXggdGhlIGhleGFkZWNpbWFsIHN0cmluZyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAqLwp1dGlsLmhleFRvQnl0ZXMgPSBmdW5jdGlvbihoZXgpIHsKICAvLyBUT0RPOiBkZXByZWNhdGU6ICJEZXByZWNhdGVkLiBVc2UgdXRpbC5iaW5hcnkuaGV4LmRlY29kZSBpbnN0ZWFkLiIKICB2YXIgcnZhbCA9ICcnOwogIHZhciBpID0gMDsKICBpZihoZXgubGVuZ3RoICYgMSA9PSAxKSB7CiAgICAvLyBvZGQgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIGNvbnZlcnQgZmlyc3QgY2hhcmFjdGVyIGFsb25lCiAgICBpID0gMTsKICAgIHJ2YWwgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoZXhbMF0sIDE2KSk7CiAgfQogIC8vIGNvbnZlcnQgMiBjaGFyYWN0ZXJzICgxIGJ5dGUpIGF0IGEgdGltZQogIGZvcig7IGkgPCBoZXgubGVuZ3RoOyBpICs9IDIpIHsKICAgIHJ2YWwgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChoZXguc3Vic3RyKGksIDIpLCAxNikpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyBhICdiaW5hcnknIGVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIHRvIGhleC4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlIHN0cmluZyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgY2hhcmFjdGVycy4KICovCnV0aWwuYnl0ZXNUb0hleCA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgLy8gVE9ETzogZGVwcmVjYXRlOiAiRGVwcmVjYXRlZC4gVXNlIHV0aWwuYmluYXJ5LmhleC5lbmNvZGUgaW5zdGVhZC4iCiAgcmV0dXJuIHV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKS50b0hleCgpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIDMyLWJpdCBpbnRlZ2VyIHRvIDQtYmlnLWVuZGlhbiBieXRlIHN0cmluZy4KICoKICogQHBhcmFtIGkgdGhlIGludGVnZXIuCiAqCiAqIEByZXR1cm4gdGhlIGJ5dGUgc3RyaW5nLgogKi8KdXRpbC5pbnQzMlRvQnl0ZXMgPSBmdW5jdGlvbihpKSB7CiAgcmV0dXJuICgKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAyNCAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiAxNiAmIDB4RkYpICsKICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaSA+PiA4ICYgMHhGRikgKwogICAgU3RyaW5nLmZyb21DaGFyQ29kZShpICYgMHhGRikpOwp9OwoKLy8gYmFzZTY0IGNoYXJhY3RlcnMsIHJldmVyc2UgbWFwcGluZwp2YXIgX2Jhc2U2NCA9CiAgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JzsKdmFyIF9iYXNlNjRJZHggPSBbCi8qNDMgLTQzID0gMCovCi8qJysnLCAgMSwgIDIsICAzLCcvJyAqLwogICA2MiwgLTEsIC0xLCAtMSwgNjMsCgovKicwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5JyAqLwogICA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwKCi8qMTUsIDE2LCAxNywnPScsIDE5LCAyMCwgMjEgKi8KICAtMSwgLTEsIC0xLCA2NCwgLTEsIC0xLCAtMSwKCi8qNjUgLSA0MyA9IDIyKi8KLyonQScsJ0InLCdDJywnRCcsJ0UnLCdGJywnRycsJ0gnLCdJJywnSicsJ0snLCdMJywnTScsICovCiAgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsCgovKidOJywnTycsJ1AnLCdRJywnUicsJ1MnLCdUJywnVScsJ1YnLCdXJywnWCcsJ1knLCdaJyAqLwogICAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwKCi8qOTEgLSA0MyA9IDQ4ICovCi8qNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MyAqLwogIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsCgovKjk3IC0gNDMgPSA1NCovCi8qJ2EnLCdiJywnYycsJ2QnLCdlJywnZicsJ2cnLCdoJywnaScsJ2onLCdrJywnbCcsJ20nICovCiAgIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LAoKLyonbicsJ28nLCdwJywncScsJ3InLCdzJywndCcsJ3UnLCd2JywndycsJ3gnLCd5JywneicgKi8KICAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEKXTsKCi8qKgogKiBCYXNlNjQgZW5jb2RlcyBhICdiaW5hcnknIGVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKgogKiBAcGFyYW0gaW5wdXQgdGhlIGJpbmFyeSBlbmNvZGVkIHN0cmluZyBvZiBieXRlcyB0byBiYXNlNjQtZW5jb2RlLgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZW5jb2RlZCBjaGFyYWN0ZXJzIHBlciBsaW5lIHRvIHVzZSwKICogICAgICAgICAgZGVmYXVsdHMgdG8gbm9uZS4KICoKICogQHJldHVybiB0aGUgYmFzZTY0LWVuY29kZWQgb3V0cHV0LgogKi8KdXRpbC5lbmNvZGU2NCA9IGZ1bmN0aW9uKGlucHV0LCBtYXhsaW5lKSB7CiAgLy8gVE9ETzogZGVwcmVjYXRlOiAiRGVwcmVjYXRlZC4gVXNlIHV0aWwuYmluYXJ5LmJhc2U2NC5lbmNvZGUgaW5zdGVhZC4iCiAgdmFyIGxpbmUgPSAnJzsKICB2YXIgb3V0cHV0ID0gJyc7CiAgdmFyIGNocjEsIGNocjIsIGNocjM7CiAgdmFyIGkgPSAwOwogIHdoaWxlKGkgPCBpbnB1dC5sZW5ndGgpIHsKICAgIGNocjEgPSBpbnB1dC5jaGFyQ29kZUF0KGkrKyk7CiAgICBjaHIyID0gaW5wdXQuY2hhckNvZGVBdChpKyspOwogICAgY2hyMyA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTsKCiAgICAvLyBlbmNvZGUgNCBjaGFyYWN0ZXIgZ3JvdXAKICAgIGxpbmUgKz0gX2Jhc2U2NC5jaGFyQXQoY2hyMSA+PiAyKTsKICAgIGxpbmUgKz0gX2Jhc2U2NC5jaGFyQXQoKChjaHIxICYgMykgPDwgNCkgfCAoY2hyMiA+PiA0KSk7CiAgICBpZihpc05hTihjaHIyKSkgewogICAgICBsaW5lICs9ICc9PSc7CiAgICB9IGVsc2UgewogICAgICBsaW5lICs9IF9iYXNlNjQuY2hhckF0KCgoY2hyMiAmIDE1KSA8PCAyKSB8IChjaHIzID4+IDYpKTsKICAgICAgbGluZSArPSBpc05hTihjaHIzKSA/ICc9JyA6IF9iYXNlNjQuY2hhckF0KGNocjMgJiA2Myk7CiAgICB9CgogICAgaWYobWF4bGluZSAmJiBsaW5lLmxlbmd0aCA+IG1heGxpbmUpIHsKICAgICAgb3V0cHV0ICs9IGxpbmUuc3Vic3RyKDAsIG1heGxpbmUpICsgJ1xyXG4nOwogICAgICBsaW5lID0gbGluZS5zdWJzdHIobWF4bGluZSk7CiAgICB9CiAgfQogIG91dHB1dCArPSBsaW5lOwogIHJldHVybiBvdXRwdXQ7Cn07CgovKioKICogQmFzZTY0IGRlY29kZXMgYSBzdHJpbmcgaW50byBhICdiaW5hcnknIGVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKgogKiBAcGFyYW0gaW5wdXQgdGhlIGJhc2U2NC1lbmNvZGVkIGlucHV0LgogKgogKiBAcmV0dXJuIHRoZSBiaW5hcnkgZW5jb2RlZCBzdHJpbmcuCiAqLwp1dGlsLmRlY29kZTY0ID0gZnVuY3Rpb24oaW5wdXQpIHsKICAvLyBUT0RPOiBkZXByZWNhdGU6ICJEZXByZWNhdGVkLiBVc2UgdXRpbC5iaW5hcnkuYmFzZTY0LmRlY29kZSBpbnN0ZWFkLiIKCiAgLy8gcmVtb3ZlIGFsbCBub24tYmFzZTY0IGNoYXJhY3RlcnMKICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCAnJyk7CgogIHZhciBvdXRwdXQgPSAnJzsKICB2YXIgZW5jMSwgZW5jMiwgZW5jMywgZW5jNDsKICB2YXIgaSA9IDA7CgogIHdoaWxlKGkgPCBpbnB1dC5sZW5ndGgpIHsKICAgIGVuYzEgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKICAgIGVuYzIgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKICAgIGVuYzMgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKICAgIGVuYzQgPSBfYmFzZTY0SWR4W2lucHV0LmNoYXJDb2RlQXQoaSsrKSAtIDQzXTsKCiAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoZW5jMSA8PCAyKSB8IChlbmMyID4+IDQpKTsKICAgIGlmKGVuYzMgIT09IDY0KSB7CiAgICAgIC8vIGRlY29kZWQgYXQgbGVhc3QgMiBieXRlcwogICAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGVuYzIgJiAxNSkgPDwgNCkgfCAoZW5jMyA+PiAyKSk7CiAgICAgIGlmKGVuYzQgIT09IDY0KSB7CiAgICAgICAgLy8gZGVjb2RlZCAzIGJ5dGVzCiAgICAgICAgb3V0cHV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChlbmMzICYgMykgPDwgNikgfCBlbmM0KTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIG91dHB1dDsKfTsKCi8qKgogKiBVVEYtOCBlbmNvZGVzIHRoZSBnaXZlbiBVVEYtMTYgZW5jb2RlZCBzdHJpbmcgKGEgc3RhbmRhcmQgSmF2YVNjcmlwdAogKiBzdHJpbmcpLiBOb24tQVNDSUkgY2hhcmFjdGVycyB3aWxsIGJlIGVuY29kZWQgYXMgbXVsdGlwbGUgYnl0ZXMgYWNjb3JkaW5nCiAqIHRvIFVURi04LgogKgogKiBAcGFyYW0gc3RyIHRoZSBzdHJpbmcgdG8gZW5jb2RlLgogKgogKiBAcmV0dXJuIHRoZSBVVEYtOCBlbmNvZGVkIHN0cmluZy4KICovCnV0aWwuZW5jb2RlVXRmOCA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSk7Cn07CgovKioKICogRGVjb2RlcyBhIFVURi04IGVuY29kZWQgc3RyaW5nIGludG8gYSBVVEYtMTYgc3RyaW5nLgogKgogKiBAcGFyYW0gc3RyIHRoZSBzdHJpbmcgdG8gZGVjb2RlLgogKgogKiBAcmV0dXJuIHRoZSBVVEYtMTYgZW5jb2RlZCBzdHJpbmcgKHN0YW5kYXJkIEphdmFTY3JpcHQgc3RyaW5nKS4KICovCnV0aWwuZGVjb2RlVXRmOCA9IGZ1bmN0aW9uKHN0cikgewogIHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKHN0cikpOwp9OwoKLy8gYmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIHRvb2xzCi8vIEZJWE1FOiBFeHBlcmltZW50YWwuIERvIG5vdCB1c2UgeWV0Lgp1dGlsLmJpbmFyeSA9IHsKICByYXc6IHt9LAogIGhleDoge30sCiAgYmFzZTY0OiB7fQp9OwoKLyoqCiAqIEVuY29kZXMgYSBVaW50OEFycmF5IGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nLiBUaGlzIGVuY29kaW5nIHVzZXMKICogYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDI1NSBmb3IgZWFjaCBjaGFyYWN0ZXIuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgVWludDhBcnJheSB0byBlbmNvZGUuCiAqCiAqIEByZXR1cm4gdGhlIGJpbmFyeS1lbmNvZGVkIHN0cmluZy4KICovCnV0aWwuYmluYXJ5LnJhdy5lbmNvZGUgPSBmdW5jdGlvbihieXRlcykgewogIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGJ5dGVzKTsKfTsKCi8qKgogKiBEZWNvZGVzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIHRvIGEgVWludDhBcnJheS4gVGhpcyBlbmNvZGluZyB1c2VzCiAqIGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAyNTUgZm9yIGVhY2ggY2hhcmFjdGVyLgogKgogKiBAcGFyYW0gc3RyIHRoZSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgdG8gZGVjb2RlLgogKiBAcGFyYW0gW291dHB1dF0gYW4gb3B0aW9uYWwgVWludDhBcnJheSB0byB3cml0ZSB0aGUgb3V0cHV0IHRvOyBpZiBpdAogKiAgICAgICAgICBpcyB0b28gc21hbGwsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KICogQHBhcmFtIFtvZmZzZXRdIHRoZSBzdGFydCBvZmZzZXQgZm9yIHdyaXRpbmcgdG8gdGhlIG91dHB1dCAoZGVmYXVsdDogMCkuCiAqCiAqIEByZXR1cm4gdGhlIFVpbnQ4QXJyYXkgb3IgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGlmIG91dHB1dCB3YXMgZ2l2ZW4uCiAqLwp1dGlsLmJpbmFyeS5yYXcuZGVjb2RlID0gZnVuY3Rpb24oc3RyLCBvdXRwdXQsIG9mZnNldCkgewogIHZhciBvdXQgPSBvdXRwdXQ7CiAgaWYoIW91dCkgewogICAgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCk7CiAgfQogIG9mZnNldCA9IG9mZnNldCB8fCAwOwogIHZhciBqID0gb2Zmc2V0OwogIGZvcih2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgIG91dFtqKytdID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgfQogIHJldHVybiBvdXRwdXQgPyAoaiAtIG9mZnNldCkgOiBvdXQ7Cn07CgovKioKICogRW5jb2RlcyBhICdiaW5hcnknIHN0cmluZywgQXJyYXlCdWZmZXIsIERhdGFWaWV3LCBUeXBlZEFycmF5LCBvcgogKiBCeXRlQnVmZmVyIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGNoYXJhY3RlcnMuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZXMgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGNoYXJhY3RlcnMuCiAqLwp1dGlsLmJpbmFyeS5oZXguZW5jb2RlID0gdXRpbC5ieXRlc1RvSGV4OwoKLyoqCiAqIERlY29kZXMgYSBoZXgtZW5jb2RlZCBzdHJpbmcgdG8gYSBVaW50OEFycmF5LgogKgogKiBAcGFyYW0gaGV4IHRoZSBoZXhhZGVjaW1hbCBzdHJpbmcgdG8gY29udmVydC4KICogQHBhcmFtIFtvdXRwdXRdIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkgdG8gd3JpdGUgdGhlIG91dHB1dCB0bzsgaWYgaXQKICogICAgICAgICAgaXMgdG9vIHNtYWxsLCBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCiAqIEBwYXJhbSBbb2Zmc2V0XSB0aGUgc3RhcnQgb2Zmc2V0IGZvciB3cml0aW5nIHRvIHRoZSBvdXRwdXQgKGRlZmF1bHQ6IDApLgogKgogKiBAcmV0dXJuIHRoZSBVaW50OEFycmF5IG9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpZiBvdXRwdXQgd2FzIGdpdmVuLgogKi8KdXRpbC5iaW5hcnkuaGV4LmRlY29kZSA9IGZ1bmN0aW9uKGhleCwgb3V0cHV0LCBvZmZzZXQpIHsKICB2YXIgb3V0ID0gb3V0cHV0OwogIGlmKCFvdXQpIHsKICAgIG91dCA9IG5ldyBVaW50OEFycmF5KE1hdGguY2VpbChoZXgubGVuZ3RoIC8gMikpOwogIH0KICBvZmZzZXQgPSBvZmZzZXQgfHwgMDsKICB2YXIgaSA9IDAsIGogPSBvZmZzZXQ7CiAgaWYoaGV4Lmxlbmd0aCAmIDEpIHsKICAgIC8vIG9kZCBudW1iZXIgb2YgY2hhcmFjdGVycywgY29udmVydCBmaXJzdCBjaGFyYWN0ZXIgYWxvbmUKICAgIGkgPSAxOwogICAgb3V0W2orK10gPSBwYXJzZUludChoZXhbMF0sIDE2KTsKICB9CiAgLy8gY29udmVydCAyIGNoYXJhY3RlcnMgKDEgYnl0ZSkgYXQgYSB0aW1lCiAgZm9yKDsgaSA8IGhleC5sZW5ndGg7IGkgKz0gMikgewogICAgb3V0W2orK10gPSBwYXJzZUludChoZXguc3Vic3RyKGksIDIpLCAxNik7CiAgfQogIHJldHVybiBvdXRwdXQgPyAoaiAtIG9mZnNldCkgOiBvdXQ7Cn07CgovKioKICogQmFzZTY0LWVuY29kZXMgYSBVaW50OEFycmF5LgogKgogKiBAcGFyYW0gaW5wdXQgdGhlIFVpbnQ4QXJyYXkgdG8gZW5jb2RlLgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZW5jb2RlZCBjaGFyYWN0ZXJzIHBlciBsaW5lIHRvIHVzZSwKICogICAgICAgICAgZGVmYXVsdHMgdG8gbm9uZS4KICoKICogQHJldHVybiB0aGUgYmFzZTY0LWVuY29kZWQgb3V0cHV0IHN0cmluZy4KICovCnV0aWwuYmluYXJ5LmJhc2U2NC5lbmNvZGUgPSBmdW5jdGlvbihpbnB1dCwgbWF4bGluZSkgewogIHZhciBsaW5lID0gJyc7CiAgdmFyIG91dHB1dCA9ICcnOwogIHZhciBjaHIxLCBjaHIyLCBjaHIzOwogIHZhciBpID0gMDsKICB3aGlsZShpIDwgaW5wdXQuYnl0ZUxlbmd0aCkgewogICAgY2hyMSA9IGlucHV0W2krK107CiAgICBjaHIyID0gaW5wdXRbaSsrXTsKICAgIGNocjMgPSBpbnB1dFtpKytdOwoKICAgIC8vIGVuY29kZSA0IGNoYXJhY3RlciBncm91cAogICAgbGluZSArPSBfYmFzZTY0LmNoYXJBdChjaHIxID4+IDIpOwogICAgbGluZSArPSBfYmFzZTY0LmNoYXJBdCgoKGNocjEgJiAzKSA8PCA0KSB8IChjaHIyID4+IDQpKTsKICAgIGlmKGlzTmFOKGNocjIpKSB7CiAgICAgIGxpbmUgKz0gJz09JzsKICAgIH0gZWxzZSB7CiAgICAgIGxpbmUgKz0gX2Jhc2U2NC5jaGFyQXQoKChjaHIyICYgMTUpIDw8IDIpIHwgKGNocjMgPj4gNikpOwogICAgICBsaW5lICs9IGlzTmFOKGNocjMpID8gJz0nIDogX2Jhc2U2NC5jaGFyQXQoY2hyMyAmIDYzKTsKICAgIH0KCiAgICBpZihtYXhsaW5lICYmIGxpbmUubGVuZ3RoID4gbWF4bGluZSkgewogICAgICBvdXRwdXQgKz0gbGluZS5zdWJzdHIoMCwgbWF4bGluZSkgKyAnXHJcbic7CiAgICAgIGxpbmUgPSBsaW5lLnN1YnN0cihtYXhsaW5lKTsKICAgIH0KICB9CiAgb3V0cHV0ICs9IGxpbmU7CiAgcmV0dXJuIG91dHB1dDsKfTsKCi8qKgogKiBEZWNvZGVzIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIHRvIGEgVWludDhBcnJheS4KICoKICogQHBhcmFtIGlucHV0IHRoZSBiYXNlNjQtZW5jb2RlZCBpbnB1dCBzdHJpbmcuCiAqIEBwYXJhbSBbb3V0cHV0XSBhbiBvcHRpb25hbCBVaW50OEFycmF5IHRvIHdyaXRlIHRoZSBvdXRwdXQgdG87IGlmIGl0CiAqICAgICAgICAgIGlzIHRvbyBzbWFsbCwgYW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duLgogKiBAcGFyYW0gW29mZnNldF0gdGhlIHN0YXJ0IG9mZnNldCBmb3Igd3JpdGluZyB0byB0aGUgb3V0cHV0IChkZWZhdWx0OiAwKS4KICoKICogQHJldHVybiB0aGUgVWludDhBcnJheSBvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gaWYgb3V0cHV0IHdhcyBnaXZlbi4KICovCnV0aWwuYmluYXJ5LmJhc2U2NC5kZWNvZGUgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBvZmZzZXQpIHsKICB2YXIgb3V0ID0gb3V0cHV0OwogIGlmKCFvdXQpIHsKICAgIG91dCA9IG5ldyBVaW50OEFycmF5KE1hdGguY2VpbChpbnB1dC5sZW5ndGggLyA0KSAqIDMpOwogIH0KCiAgLy8gcmVtb3ZlIGFsbCBub24tYmFzZTY0IGNoYXJhY3RlcnMKICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCAnJyk7CgogIG9mZnNldCA9IG9mZnNldCB8fCAwOwogIHZhciBlbmMxLCBlbmMyLCBlbmMzLCBlbmM0OwogIHZhciBpID0gMCwgaiA9IG9mZnNldDsKCiAgd2hpbGUoaSA8IGlucHV0Lmxlbmd0aCkgewogICAgZW5jMSA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwogICAgZW5jMiA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwogICAgZW5jMyA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwogICAgZW5jNCA9IF9iYXNlNjRJZHhbaW5wdXQuY2hhckNvZGVBdChpKyspIC0gNDNdOwoKICAgIG91dFtqKytdID0gKGVuYzEgPDwgMikgfCAoZW5jMiA+PiA0KTsKICAgIGlmKGVuYzMgIT09IDY0KSB7CiAgICAgIC8vIGRlY29kZWQgYXQgbGVhc3QgMiBieXRlcwogICAgICBvdXRbaisrXSA9ICgoZW5jMiAmIDE1KSA8PCA0KSB8IChlbmMzID4+IDIpOwogICAgICBpZihlbmM0ICE9PSA2NCkgewogICAgICAgIC8vIGRlY29kZWQgMyBieXRlcwogICAgICAgIG91dFtqKytdID0gKChlbmMzICYgMykgPDwgNikgfCBlbmM0OwogICAgICB9CiAgICB9CiAgfQoKICAvLyBtYWtlIHN1cmUgcmVzdWx0IGlzIHRoZSBleGFjdCBkZWNvZGVkIGxlbmd0aAogIHJldHVybiBvdXRwdXQgPwogICAgICAgICAoaiAtIG9mZnNldCkgOgogICAgICAgICBvdXQuc3ViYXJyYXkoMCwgaik7Cn07CgovLyB0ZXh0IGVuY29kaW5nL2RlY29kaW5nIHRvb2xzCi8vIEZJWE1FOiBFeHBlcmltZW50YWwuIERvIG5vdCB1c2UgeWV0Lgp1dGlsLnRleHQgPSB7CiAgdXRmODoge30sCiAgdXRmMTY6IHt9Cn07CgovKioKICogRW5jb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIGFzIFVURi04IGluIGEgVWludDhBcnJheS4KICoKICogQHBhcmFtIHN0ciB0aGUgc3RyaW5nIHRvIGVuY29kZS4KICogQHBhcmFtIFtvdXRwdXRdIGFuIG9wdGlvbmFsIFVpbnQ4QXJyYXkgdG8gd3JpdGUgdGhlIG91dHB1dCB0bzsgaWYgaXQKICogICAgICAgICAgaXMgdG9vIHNtYWxsLCBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCiAqIEBwYXJhbSBbb2Zmc2V0XSB0aGUgc3RhcnQgb2Zmc2V0IGZvciB3cml0aW5nIHRvIHRoZSBvdXRwdXQgKGRlZmF1bHQ6IDApLgogKgogKiBAcmV0dXJuIHRoZSBVaW50OEFycmF5IG9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpZiBvdXRwdXQgd2FzIGdpdmVuLgogKi8KdXRpbC50ZXh0LnV0ZjguZW5jb2RlID0gZnVuY3Rpb24oc3RyLCBvdXRwdXQsIG9mZnNldCkgewogIHN0ciA9IHV0aWwuZW5jb2RlVXRmOChzdHIpOwogIHZhciBvdXQgPSBvdXRwdXQ7CiAgaWYoIW91dCkgewogICAgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCk7CiAgfQogIG9mZnNldCA9IG9mZnNldCB8fCAwOwogIHZhciBqID0gb2Zmc2V0OwogIGZvcih2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgIG91dFtqKytdID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgfQogIHJldHVybiBvdXRwdXQgPyAoaiAtIG9mZnNldCkgOiBvdXQ7Cn07CgovKioKICogRGVjb2RlcyB0aGUgVVRGLTggY29udGVudHMgZnJvbSBhIFVpbnQ4QXJyYXkuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgVWludDhBcnJheSB0byBkZWNvZGUuCiAqCiAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcuCiAqLwp1dGlsLnRleHQudXRmOC5kZWNvZGUgPSBmdW5jdGlvbihieXRlcykgewogIHJldHVybiB1dGlsLmRlY29kZVV0ZjgoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBieXRlcykpOwp9OwoKLyoqCiAqIEVuY29kZXMgdGhlIGdpdmVuIHN0cmluZyBhcyBVVEYtMTYgaW4gYSBVaW50OEFycmF5LgogKgogKiBAcGFyYW0gc3RyIHRoZSBzdHJpbmcgdG8gZW5jb2RlLgogKiBAcGFyYW0gW291dHB1dF0gYW4gb3B0aW9uYWwgVWludDhBcnJheSB0byB3cml0ZSB0aGUgb3V0cHV0IHRvOyBpZiBpdAogKiAgICAgICAgICBpcyB0b28gc21hbGwsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KICogQHBhcmFtIFtvZmZzZXRdIHRoZSBzdGFydCBvZmZzZXQgZm9yIHdyaXRpbmcgdG8gdGhlIG91dHB1dCAoZGVmYXVsdDogMCkuCiAqCiAqIEByZXR1cm4gdGhlIFVpbnQ4QXJyYXkgb3IgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGlmIG91dHB1dCB3YXMgZ2l2ZW4uCiAqLwp1dGlsLnRleHQudXRmMTYuZW5jb2RlID0gZnVuY3Rpb24oc3RyLCBvdXRwdXQsIG9mZnNldCkgewogIHZhciBvdXQgPSBvdXRwdXQ7CiAgaWYoIW91dCkgewogICAgb3V0ID0gbmV3IFVpbnQ4QXJyYXkoc3RyLmxlbmd0aCAqIDIpOwogIH0KICB2YXIgdmlldyA9IG5ldyBVaW50MTZBcnJheShvdXQuYnVmZmVyKTsKICBvZmZzZXQgPSBvZmZzZXQgfHwgMDsKICB2YXIgaiA9IG9mZnNldDsKICB2YXIgayA9IG9mZnNldDsKICBmb3IodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgICB2aWV3W2srK10gPSBzdHIuY2hhckNvZGVBdChpKTsKICAgIGogKz0gMjsKICB9CiAgcmV0dXJuIG91dHB1dCA/IChqIC0gb2Zmc2V0KSA6IG91dDsKfTsKCi8qKgogKiBEZWNvZGVzIHRoZSBVVEYtMTYgY29udGVudHMgZnJvbSBhIFVpbnQ4QXJyYXkuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgVWludDhBcnJheSB0byBkZWNvZGUuCiAqCiAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcuCiAqLwp1dGlsLnRleHQudXRmMTYuZGVjb2RlID0gZnVuY3Rpb24oYnl0ZXMpIHsKICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBuZXcgVWludDE2QXJyYXkoYnl0ZXMuYnVmZmVyKSk7Cn07CgovKioKICogRGVmbGF0ZXMgdGhlIGdpdmVuIGRhdGEgdXNpbmcgYSBmbGFzaCBpbnRlcmZhY2UuCiAqCiAqIEBwYXJhbSBhcGkgdGhlIGZsYXNoIGludGVyZmFjZS4KICogQHBhcmFtIGJ5dGVzIHRoZSBkYXRhLgogKiBAcGFyYW0gcmF3IHRydWUgdG8gcmV0dXJuIG9ubHkgcmF3IGRlZmxhdGUgZGF0YSwgZmFsc2UgdG8gaW5jbHVkZSB6bGliCiAqICAgICAgICAgIGhlYWRlciBhbmQgdHJhaWxlci4KICoKICogQHJldHVybiB0aGUgZGVmbGF0ZWQgZGF0YSBhcyBhIHN0cmluZy4KICovCnV0aWwuZGVmbGF0ZSA9IGZ1bmN0aW9uKGFwaSwgYnl0ZXMsIHJhdykgewogIGJ5dGVzID0gdXRpbC5kZWNvZGU2NChhcGkuZGVmbGF0ZSh1dGlsLmVuY29kZTY0KGJ5dGVzKSkucnZhbCk7CgogIC8vIHN0cmlwIHpsaWIgaGVhZGVyIGFuZCB0cmFpbGVyIGlmIG5lY2Vzc2FyeQogIGlmKHJhdykgewogICAgLy8gemxpYiBoZWFkZXIgaXMgMiBieXRlcyAoQ01GLEZMRykgd2hlcmUgRkxHIGluZGljYXRlcyB0aGF0CiAgICAvLyB0aGVyZSBpcyBhIDQtYnl0ZSBESUNUIChhbGRlci0zMikgYmxvY2sgYmVmb3JlIHRoZSBkYXRhIGlmCiAgICAvLyBpdHMgNXRoIGJpdCBpcyBzZXQKICAgIHZhciBzdGFydCA9IDI7CiAgICB2YXIgZmxnID0gYnl0ZXMuY2hhckNvZGVBdCgxKTsKICAgIGlmKGZsZyAmIDB4MjApIHsKICAgICAgc3RhcnQgPSA2OwogICAgfQogICAgLy8gemxpYiB0cmFpbGVyIGlzIDQgYnl0ZXMgb2YgYWRsZXItMzIKICAgIGJ5dGVzID0gYnl0ZXMuc3Vic3RyaW5nKHN0YXJ0LCBieXRlcy5sZW5ndGggLSA0KTsKICB9CgogIHJldHVybiBieXRlczsKfTsKCi8qKgogKiBJbmZsYXRlcyB0aGUgZ2l2ZW4gZGF0YSB1c2luZyBhIGZsYXNoIGludGVyZmFjZS4KICoKICogQHBhcmFtIGFwaSB0aGUgZmxhc2ggaW50ZXJmYWNlLgogKiBAcGFyYW0gYnl0ZXMgdGhlIGRhdGEuCiAqIEBwYXJhbSByYXcgdHJ1ZSBpZiB0aGUgaW5jb21pbmcgZGF0YSBoYXMgbm8gemxpYiBoZWFkZXIgb3IgdHJhaWxlciBhbmQgaXMKICogICAgICAgICAgcmF3IERFRkxBVEUgZGF0YS4KICoKICogQHJldHVybiB0aGUgaW5mbGF0ZWQgZGF0YSBhcyBhIHN0cmluZywgbnVsbCBvbiBlcnJvci4KICovCnV0aWwuaW5mbGF0ZSA9IGZ1bmN0aW9uKGFwaSwgYnl0ZXMsIHJhdykgewogIC8vIFRPRE86IGFkZCB6bGliIGhlYWRlciBhbmQgdHJhaWxlciBpZiBuZWNlc3NhcnkvcG9zc2libGUKICB2YXIgcnZhbCA9IGFwaS5pbmZsYXRlKHV0aWwuZW5jb2RlNjQoYnl0ZXMpKS5ydmFsOwogIHJldHVybiAocnZhbCA9PT0gbnVsbCkgPyBudWxsIDogdXRpbC5kZWNvZGU2NChydmFsKTsKfTsKCi8qKgogKiBTZXRzIGEgc3RvcmFnZSBvYmplY3QuCiAqCiAqIEBwYXJhbSBhcGkgdGhlIHN0b3JhZ2UgaW50ZXJmYWNlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0gb2JqIHRoZSBzdG9yYWdlIG9iamVjdCwgbnVsbCB0byByZW1vdmUuCiAqLwp2YXIgX3NldFN0b3JhZ2VPYmplY3QgPSBmdW5jdGlvbihhcGksIGlkLCBvYmopIHsKICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlYlN0b3JhZ2Ugbm90IGF2YWlsYWJsZS4nKTsKICB9CgogIHZhciBydmFsOwogIGlmKG9iaiA9PT0gbnVsbCkgewogICAgcnZhbCA9IGFwaS5yZW1vdmVJdGVtKGlkKTsKICB9IGVsc2UgewogICAgLy8ganNvbi1lbmNvZGUgYW5kIGJhc2U2NC1lbmNvZGUgb2JqZWN0CiAgICBvYmogPSB1dGlsLmVuY29kZTY0KEpTT04uc3RyaW5naWZ5KG9iaikpOwogICAgcnZhbCA9IGFwaS5zZXRJdGVtKGlkLCBvYmopOwogIH0KCiAgLy8gaGFuZGxlIHBvdGVudGlhbCBmbGFzaCBlcnJvcgogIGlmKHR5cGVvZihydmFsKSAhPT0gJ3VuZGVmaW5lZCcgJiYgcnZhbC5ydmFsICE9PSB0cnVlKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IocnZhbC5lcnJvci5tZXNzYWdlKTsKICAgIGVycm9yLmlkID0gcnZhbC5lcnJvci5pZDsKICAgIGVycm9yLm5hbWUgPSBydmFsLmVycm9yLm5hbWU7CiAgICB0aHJvdyBlcnJvcjsKICB9Cn07CgovKioKICogR2V0cyBhIHN0b3JhZ2Ugb2JqZWN0LgogKgogKiBAcGFyYW0gYXBpIHRoZSBzdG9yYWdlIGludGVyZmFjZS4KICogQHBhcmFtIGlkIHRoZSBzdG9yYWdlIElEIHRvIHVzZS4KICoKICogQHJldHVybiB0aGUgc3RvcmFnZSBvYmplY3QgZW50cnkgb3IgbnVsbCBpZiBub25lIGV4aXN0cy4KICovCnZhciBfZ2V0U3RvcmFnZU9iamVjdCA9IGZ1bmN0aW9uKGFwaSwgaWQpIHsKICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlYlN0b3JhZ2Ugbm90IGF2YWlsYWJsZS4nKTsKICB9CgogIC8vIGdldCB0aGUgZXhpc3RpbmcgZW50cnkKICB2YXIgcnZhbCA9IGFwaS5nZXRJdGVtKGlkKTsKCiAgLyogTm90ZTogV2UgY2hlY2sgYXBpLmluaXQgYmVjYXVzZSB3ZSBjYW4ndCBkbyAoYXBpID09IGxvY2FsU3RvcmFnZSkKICAgIG9uIElFIGJlY2F1c2Ugb2YgIkNsYXNzIGRvZXNuJ3Qgc3VwcG9ydCBBdXRvbWF0aW9uIiBleGNlcHRpb24uIE9ubHkKICAgIHRoZSBmbGFzaCBhcGkgaGFzIGFuIGluaXQgbWV0aG9kIHNvIHRoaXMgd29ya3MgdG9vLCBidXQgd2UgbmVlZCBhCiAgICBiZXR0ZXIgc29sdXRpb24gaW4gdGhlIGZ1dHVyZS4gKi8KCiAgLy8gZmxhc2ggcmV0dXJucyBpdGVtIHdyYXBwZWQgaW4gYW4gb2JqZWN0LCBoYW5kbGUgc3BlY2lhbCBjYXNlCiAgaWYoYXBpLmluaXQpIHsKICAgIGlmKHJ2YWwucnZhbCA9PT0gbnVsbCkgewogICAgICBpZihydmFsLmVycm9yKSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKHJ2YWwuZXJyb3IubWVzc2FnZSk7CiAgICAgICAgZXJyb3IuaWQgPSBydmFsLmVycm9yLmlkOwogICAgICAgIGVycm9yLm5hbWUgPSBydmFsLmVycm9yLm5hbWU7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgICAgLy8gbm8gZXJyb3IsIGJ1dCBhbHNvIG5vIGl0ZW0KICAgICAgcnZhbCA9IG51bGw7CiAgICB9IGVsc2UgewogICAgICBydmFsID0gcnZhbC5ydmFsOwogICAgfQogIH0KCiAgLy8gaGFuZGxlIGRlY29kaW5nCiAgaWYocnZhbCAhPT0gbnVsbCkgewogICAgLy8gYmFzZTY0LWRlY29kZSBhbmQganNvbi1kZWNvZGUgZGF0YQogICAgcnZhbCA9IEpTT04ucGFyc2UodXRpbC5kZWNvZGU2NChydmFsKSk7CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTdG9yZXMgYW4gaXRlbSBpbiBsb2NhbCBzdG9yYWdlLgogKgogKiBAcGFyYW0gYXBpIHRoZSBzdG9yYWdlIGludGVyZmFjZS4KICogQHBhcmFtIGlkIHRoZSBzdG9yYWdlIElEIHRvIHVzZS4KICogQHBhcmFtIGtleSB0aGUga2V5IGZvciB0aGUgaXRlbS4KICogQHBhcmFtIGRhdGEgdGhlIGRhdGEgZm9yIHRoZSBpdGVtIChhbnkgamF2YXNjcmlwdCBvYmplY3QvcHJpbWl0aXZlKS4KICovCnZhciBfc2V0SXRlbSA9IGZ1bmN0aW9uKGFwaSwgaWQsIGtleSwgZGF0YSkgewogIC8vIGdldCBzdG9yYWdlIG9iamVjdAogIHZhciBvYmogPSBfZ2V0U3RvcmFnZU9iamVjdChhcGksIGlkKTsKICBpZihvYmogPT09IG51bGwpIHsKICAgIC8vIGNyZWF0ZSBhIG5ldyBzdG9yYWdlIG9iamVjdAogICAgb2JqID0ge307CiAgfQogIC8vIHVwZGF0ZSBrZXkKICBvYmpba2V5XSA9IGRhdGE7CgogIC8vIHNldCBzdG9yYWdlIG9iamVjdAogIF9zZXRTdG9yYWdlT2JqZWN0KGFwaSwgaWQsIG9iaik7Cn07CgovKioKICogR2V0cyBhbiBpdGVtIGZyb20gbG9jYWwgc3RvcmFnZS4KICoKICogQHBhcmFtIGFwaSB0aGUgc3RvcmFnZSBpbnRlcmZhY2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSBmb3IgdGhlIGl0ZW0uCiAqCiAqIEByZXR1cm4gdGhlIGl0ZW0uCiAqLwp2YXIgX2dldEl0ZW0gPSBmdW5jdGlvbihhcGksIGlkLCBrZXkpIHsKICAvLyBnZXQgc3RvcmFnZSBvYmplY3QKICB2YXIgcnZhbCA9IF9nZXRTdG9yYWdlT2JqZWN0KGFwaSwgaWQpOwogIGlmKHJ2YWwgIT09IG51bGwpIHsKICAgIC8vIHJldHVybiBkYXRhIGF0IGtleQogICAgcnZhbCA9IChrZXkgaW4gcnZhbCkgPyBydmFsW2tleV0gOiBudWxsOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUmVtb3ZlcyBhbiBpdGVtIGZyb20gbG9jYWwgc3RvcmFnZS4KICoKICogQHBhcmFtIGFwaSB0aGUgc3RvcmFnZSBpbnRlcmZhY2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSBmb3IgdGhlIGl0ZW0uCiAqLwp2YXIgX3JlbW92ZUl0ZW0gPSBmdW5jdGlvbihhcGksIGlkLCBrZXkpIHsKICAvLyBnZXQgc3RvcmFnZSBvYmplY3QKICB2YXIgb2JqID0gX2dldFN0b3JhZ2VPYmplY3QoYXBpLCBpZCk7CiAgaWYob2JqICE9PSBudWxsICYmIGtleSBpbiBvYmopIHsKICAgIC8vIHJlbW92ZSBrZXkKICAgIGRlbGV0ZSBvYmpba2V5XTsKCiAgICAvLyBzZWUgaWYgZW50cnkgaGFzIG5vIGtleXMgcmVtYWluaW5nCiAgICB2YXIgZW1wdHkgPSB0cnVlOwogICAgZm9yKHZhciBwcm9wIGluIG9iaikgewogICAgICBlbXB0eSA9IGZhbHNlOwogICAgICBicmVhazsKICAgIH0KICAgIGlmKGVtcHR5KSB7CiAgICAgIC8vIHJlbW92ZSBlbnRyeSBlbnRpcmVseSBpZiBubyBrZXlzIGFyZSBsZWZ0CiAgICAgIG9iaiA9IG51bGw7CiAgICB9CgogICAgLy8gc2V0IHN0b3JhZ2Ugb2JqZWN0CiAgICBfc2V0U3RvcmFnZU9iamVjdChhcGksIGlkLCBvYmopOwogIH0KfTsKCi8qKgogKiBDbGVhcnMgdGhlIGxvY2FsIGRpc2sgc3RvcmFnZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBJRC4KICoKICogQHBhcmFtIGFwaSB0aGUgc3RvcmFnZSBpbnRlcmZhY2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqLwp2YXIgX2NsZWFySXRlbXMgPSBmdW5jdGlvbihhcGksIGlkKSB7CiAgX3NldFN0b3JhZ2VPYmplY3QoYXBpLCBpZCwgbnVsbCk7Cn07CgovKioKICogQ2FsbHMgYSBzdG9yYWdlIGZ1bmN0aW9uLgogKgogKiBAcGFyYW0gZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2FsbC4KICogQHBhcmFtIGFyZ3MgdGhlIGFyZ3VtZW50cyBmb3IgdGhlIGZ1bmN0aW9uLgogKiBAcGFyYW0gbG9jYXRpb24gdGhlIGxvY2F0aW9uIGFyZ3VtZW50LgogKgogKiBAcmV0dXJuIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24uCiAqLwp2YXIgX2NhbGxTdG9yYWdlRnVuY3Rpb24gPSBmdW5jdGlvbihmdW5jLCBhcmdzLCBsb2NhdGlvbikgewogIHZhciBydmFsID0gbnVsbDsKCiAgLy8gZGVmYXVsdCBzdG9yYWdlIHR5cGVzCiAgaWYodHlwZW9mKGxvY2F0aW9uKSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGxvY2F0aW9uID0gWyd3ZWInLCAnZmxhc2gnXTsKICB9CgogIC8vIGFwcGx5IHN0b3JhZ2UgdHlwZXMgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZQogIHZhciB0eXBlOwogIHZhciBkb25lID0gZmFsc2U7CiAgdmFyIGV4Y2VwdGlvbiA9IG51bGw7CiAgZm9yKHZhciBpZHggaW4gbG9jYXRpb24pIHsKICAgIHR5cGUgPSBsb2NhdGlvbltpZHhdOwogICAgdHJ5IHsKICAgICAgaWYodHlwZSA9PT0gJ2ZsYXNoJyB8fCB0eXBlID09PSAnYm90aCcpIHsKICAgICAgICBpZihhcmdzWzBdID09PSBudWxsKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZsYXNoIGxvY2FsIHN0b3JhZ2Ugbm90IGF2YWlsYWJsZS4nKTsKICAgICAgICB9CiAgICAgICAgcnZhbCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7CiAgICAgICAgZG9uZSA9ICh0eXBlID09PSAnZmxhc2gnKTsKICAgICAgfQogICAgICBpZih0eXBlID09PSAnd2ViJyB8fCB0eXBlID09PSAnYm90aCcpIHsKICAgICAgICBhcmdzWzBdID0gbG9jYWxTdG9yYWdlOwogICAgICAgIHJ2YWwgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpOwogICAgICAgIGRvbmUgPSB0cnVlOwogICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICAgIGV4Y2VwdGlvbiA9IGV4OwogICAgfQogICAgaWYoZG9uZSkgewogICAgICBicmVhazsKICAgIH0KICB9CgogIGlmKCFkb25lKSB7CiAgICB0aHJvdyBleGNlcHRpb247CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTdG9yZXMgYW4gaXRlbSBvbiBsb2NhbCBkaXNrLgogKgogKiBUaGUgYXZhaWxhYmxlIHR5cGVzIG9mIGxvY2FsIHN0b3JhZ2UgaW5jbHVkZSAnZmxhc2gnLCAnd2ViJywgYW5kICdib3RoJy4KICoKICogVGhlIHR5cGUgJ2ZsYXNoJyByZWZlcnMgdG8gZmxhc2ggbG9jYWwgc3RvcmFnZSAoU2hhcmVkT2JqZWN0KS4gSW4gb3JkZXIKICogdG8gdXNlIGZsYXNoIGxvY2FsIHN0b3JhZ2UsIHRoZSAnYXBpJyBwYXJhbWV0ZXIgbXVzdCBiZSB2YWxpZC4gVGhlIHR5cGUKICogJ3dlYicgcmVmZXJzIHRvIFdlYlN0b3JhZ2UsIGlmIHN1cHBvcnRlZCBieSB0aGUgYnJvd3Nlci4gVGhlIHR5cGUgJ2JvdGgnCiAqIHJlZmVycyB0byBzdG9yaW5nIHVzaW5nIGJvdGggJ2ZsYXNoJyBhbmQgJ3dlYicsIG5vdCBqdXN0IG9uZSBvciB0aGUKICogb3RoZXIuCiAqCiAqIFRoZSBsb2NhdGlvbiBhcnJheSBzaG91bGQgbGlzdCB0aGUgc3RvcmFnZSB0eXBlcyB0byB1c2UgaW4gb3JkZXIgb2YKICogcHJlZmVyZW5jZToKICoKICogWydmbGFzaCddOiBmbGFzaCBvbmx5IHN0b3JhZ2UKICogWyd3ZWInXTogd2ViIG9ubHkgc3RvcmFnZQogKiBbJ2JvdGgnXTogdHJ5IHRvIHN0b3JlIGluIGJvdGgKICogWydmbGFzaCcsJ3dlYiddOiBzdG9yZSBpbiBmbGFzaCBmaXJzdCwgYnV0IGlmIG5vdCBhdmFpbGFibGUsICd3ZWInCiAqIFsnd2ViJywnZmxhc2gnXTogc3RvcmUgaW4gd2ViIGZpcnN0LCBidXQgaWYgbm90IGF2YWlsYWJsZSwgJ2ZsYXNoJwogKgogKiBUaGUgbG9jYXRpb24gYXJyYXkgZGVmYXVsdHMgdG86IFsnd2ViJywgJ2ZsYXNoJ10KICoKICogQHBhcmFtIGFwaSB0aGUgZmxhc2ggaW50ZXJmYWNlLCBudWxsIHRvIHVzZSBvbmx5IFdlYlN0b3JhZ2UuCiAqIEBwYXJhbSBpZCB0aGUgc3RvcmFnZSBJRCB0byB1c2UuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSBmb3IgdGhlIGl0ZW0uCiAqIEBwYXJhbSBkYXRhIHRoZSBkYXRhIGZvciB0aGUgaXRlbSAoYW55IGphdmFzY3JpcHQgb2JqZWN0L3ByaW1pdGl2ZSkuCiAqIEBwYXJhbSBsb2NhdGlvbiBhbiBhcnJheSB3aXRoIHRoZSBwcmVmZXJyZWQgdHlwZXMgb2Ygc3RvcmFnZSB0byB1c2UuCiAqLwp1dGlsLnNldEl0ZW0gPSBmdW5jdGlvbihhcGksIGlkLCBrZXksIGRhdGEsIGxvY2F0aW9uKSB7CiAgX2NhbGxTdG9yYWdlRnVuY3Rpb24oX3NldEl0ZW0sIGFyZ3VtZW50cywgbG9jYXRpb24pOwp9OwoKLyoqCiAqIEdldHMgYW4gaXRlbSBvbiBsb2NhbCBkaXNrLgogKgogKiBTZXQgc2V0SXRlbSgpIGZvciBkZXRhaWxzIG9uIHN0b3JhZ2UgdHlwZXMuCiAqCiAqIEBwYXJhbSBhcGkgdGhlIGZsYXNoIGludGVyZmFjZSwgbnVsbCB0byB1c2Ugb25seSBXZWJTdG9yYWdlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0ga2V5IHRoZSBrZXkgZm9yIHRoZSBpdGVtLgogKiBAcGFyYW0gbG9jYXRpb24gYW4gYXJyYXkgd2l0aCB0aGUgcHJlZmVycmVkIHR5cGVzIG9mIHN0b3JhZ2UgdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBpdGVtLgogKi8KdXRpbC5nZXRJdGVtID0gZnVuY3Rpb24oYXBpLCBpZCwga2V5LCBsb2NhdGlvbikgewogIHJldHVybiBfY2FsbFN0b3JhZ2VGdW5jdGlvbihfZ2V0SXRlbSwgYXJndW1lbnRzLCBsb2NhdGlvbik7Cn07CgovKioKICogUmVtb3ZlcyBhbiBpdGVtIG9uIGxvY2FsIGRpc2suCiAqCiAqIFNldCBzZXRJdGVtKCkgZm9yIGRldGFpbHMgb24gc3RvcmFnZSB0eXBlcy4KICoKICogQHBhcmFtIGFwaSB0aGUgZmxhc2ggaW50ZXJmYWNlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0ga2V5IHRoZSBrZXkgZm9yIHRoZSBpdGVtLgogKiBAcGFyYW0gbG9jYXRpb24gYW4gYXJyYXkgd2l0aCB0aGUgcHJlZmVycmVkIHR5cGVzIG9mIHN0b3JhZ2UgdG8gdXNlLgogKi8KdXRpbC5yZW1vdmVJdGVtID0gZnVuY3Rpb24oYXBpLCBpZCwga2V5LCBsb2NhdGlvbikgewogIF9jYWxsU3RvcmFnZUZ1bmN0aW9uKF9yZW1vdmVJdGVtLCBhcmd1bWVudHMsIGxvY2F0aW9uKTsKfTsKCi8qKgogKiBDbGVhcnMgdGhlIGxvY2FsIGRpc2sgc3RvcmFnZSBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBJRC4KICoKICogU2V0IHNldEl0ZW0oKSBmb3IgZGV0YWlscyBvbiBzdG9yYWdlIHR5cGVzLgogKgogKiBAcGFyYW0gYXBpIHRoZSBmbGFzaCBpbnRlcmZhY2UgaWYgZmxhc2ggaXMgYXZhaWxhYmxlLgogKiBAcGFyYW0gaWQgdGhlIHN0b3JhZ2UgSUQgdG8gdXNlLgogKiBAcGFyYW0gbG9jYXRpb24gYW4gYXJyYXkgd2l0aCB0aGUgcHJlZmVycmVkIHR5cGVzIG9mIHN0b3JhZ2UgdG8gdXNlLgogKi8KdXRpbC5jbGVhckl0ZW1zID0gZnVuY3Rpb24oYXBpLCBpZCwgbG9jYXRpb24pIHsKICBfY2FsbFN0b3JhZ2VGdW5jdGlvbihfY2xlYXJJdGVtcywgYXJndW1lbnRzLCBsb2NhdGlvbik7Cn07CgovKioKICogUGFyc2VzIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IGZyb20gYW4gaHR0cChzKSB1cmwuCiAqCiAqIEBwYXJhbSBzdHIgdGhlIHVybCBzdHJpbmcuCiAqCiAqIEByZXR1cm4gdGhlIHBhcnNlZCB1cmwgb2JqZWN0IG9yIG51bGwgaWYgdGhlIHVybCBpcyBpbnZhbGlkLgogKi8KdXRpbC5wYXJzZVVybCA9IGZ1bmN0aW9uKHN0cikgewogIC8vIEZJWE1FOiB0aGlzIHJlZ2V4IGxvb2tzIGEgYml0IGJyb2tlbgogIHZhciByZWdleCA9IC9eKGh0dHBzPyk6XC9cLyhbXjomXlwvXSopOj8oXGQqKSguKikkL2c7CiAgcmVnZXgubGFzdEluZGV4ID0gMDsKICB2YXIgbSA9IHJlZ2V4LmV4ZWMoc3RyKTsKICB2YXIgdXJsID0gKG0gPT09IG51bGwpID8gbnVsbCA6IHsKICAgIGZ1bGw6IHN0ciwKICAgIHNjaGVtZTogbVsxXSwKICAgIGhvc3Q6IG1bMl0sCiAgICBwb3J0OiBtWzNdLAogICAgcGF0aDogbVs0XQogIH07CiAgaWYodXJsKSB7CiAgICB1cmwuZnVsbEhvc3QgPSB1cmwuaG9zdDsKICAgIGlmKHVybC5wb3J0KSB7CiAgICAgIGlmKHVybC5wb3J0ICE9PSA4MCAmJiB1cmwuc2NoZW1lID09PSAnaHR0cCcpIHsKICAgICAgICB1cmwuZnVsbEhvc3QgKz0gJzonICsgdXJsLnBvcnQ7CiAgICAgIH0gZWxzZSBpZih1cmwucG9ydCAhPT0gNDQzICYmIHVybC5zY2hlbWUgPT09ICdodHRwcycpIHsKICAgICAgICB1cmwuZnVsbEhvc3QgKz0gJzonICsgdXJsLnBvcnQ7CiAgICAgIH0KICAgIH0gZWxzZSBpZih1cmwuc2NoZW1lID09PSAnaHR0cCcpIHsKICAgICAgdXJsLnBvcnQgPSA4MDsKICAgIH0gZWxzZSBpZih1cmwuc2NoZW1lID09PSAnaHR0cHMnKSB7CiAgICAgIHVybC5wb3J0ID0gNDQzOwogICAgfQogICAgdXJsLmZ1bGwgPSB1cmwuc2NoZW1lICsgJzovLycgKyB1cmwuZnVsbEhvc3Q7CiAgfQogIHJldHVybiB1cmw7Cn07CgovKiBTdG9yYWdlIGZvciBxdWVyeSB2YXJpYWJsZXMgKi8KdmFyIF9xdWVyeVZhcmlhYmxlcyA9IG51bGw7CgovKioKICogUmV0dXJucyB0aGUgd2luZG93IGxvY2F0aW9uIHF1ZXJ5IHZhcmlhYmxlcy4gUXVlcnkgaXMgcGFyc2VkIG9uIHRoZSBmaXJzdAogKiBjYWxsIGFuZCB0aGUgc2FtZSBvYmplY3QgaXMgcmV0dXJuZWQgb24gc3Vic2VxdWVudCBjYWxscy4gVGhlIG1hcHBpbmcKICogaXMgZnJvbSBrZXlzIHRvIGFuIGFycmF5IG9mIHZhbHVlcy4gUGFyYW1ldGVycyB3aXRob3V0IHZhbHVlcyB3aWxsIGhhdmUKICogYW4gb2JqZWN0IGtleSBzZXQgYnV0IG5vIHZhbHVlIGFkZGVkIHRvIHRoZSB2YWx1ZSBhcnJheS4gVmFsdWVzIGFyZQogKiB1bmVzY2FwZWQuCiAqCiAqIC4uLj9rMT12MSZrMj12MjoKICogewogKiAgICJrMSI6IFsidjEiXSwKICogICAiazIiOiBbInYyIl0KICogfQogKgogKiAuLi4/azE9djEmazE9djI6CiAqIHsKICogICAiazEiOiBbInYxIiwgInYyIl0KICogfQogKgogKiAuLi4/azE9djEmazI6CiAqIHsKICogICAiazEiOiBbInYxIl0sCiAqICAgImsyIjogW10KICogfQogKgogKiAuLi4/azE9djEmazE6CiAqIHsKICogICAiazEiOiBbInYxIl0KICogfQogKgogKiAuLi4/azEmazE6CiAqIHsKICogICAiazEiOiBbXQogKiB9CiAqCiAqIEBwYXJhbSBxdWVyeSB0aGUgcXVlcnkgc3RyaW5nIHRvIHBhcnNlIChvcHRpb25hbCwgZGVmYXVsdCB0byBjYWNoZWQKICogICAgICAgICAgcmVzdWx0cyBmcm9tIHBhcnNpbmcgd2luZG93IGxvY2F0aW9uIHNlYXJjaCBxdWVyeSkuCiAqCiAqIEByZXR1cm4gb2JqZWN0IG1hcHBpbmcga2V5cyB0byB2YXJpYWJsZXMuCiAqLwp1dGlsLmdldFF1ZXJ5VmFyaWFibGVzID0gZnVuY3Rpb24ocXVlcnkpIHsKICB2YXIgcGFyc2UgPSBmdW5jdGlvbihxKSB7CiAgICB2YXIgcnZhbCA9IHt9OwogICAgdmFyIGt2cGFpcnMgPSBxLnNwbGl0KCcmJyk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwga3ZwYWlycy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcG9zID0ga3ZwYWlyc1tpXS5pbmRleE9mKCc9Jyk7CiAgICAgIHZhciBrZXk7CiAgICAgIHZhciB2YWw7CiAgICAgIGlmKHBvcyA+IDApIHsKICAgICAgICBrZXkgPSBrdnBhaXJzW2ldLnN1YnN0cmluZygwLCBwb3MpOwogICAgICAgIHZhbCA9IGt2cGFpcnNbaV0uc3Vic3RyaW5nKHBvcyArIDEpOwogICAgICB9IGVsc2UgewogICAgICAgIGtleSA9IGt2cGFpcnNbaV07CiAgICAgICAgdmFsID0gbnVsbDsKICAgICAgfQogICAgICBpZighKGtleSBpbiBydmFsKSkgewogICAgICAgIHJ2YWxba2V5XSA9IFtdOwogICAgICB9CiAgICAgIC8vIGRpc2FsbG93IG92ZXJyaWRpbmcgb2JqZWN0IHByb3RvdHlwZSBrZXlzCiAgICAgIGlmKCEoa2V5IGluIE9iamVjdC5wcm90b3R5cGUpICYmIHZhbCAhPT0gbnVsbCkgewogICAgICAgIHJ2YWxba2V5XS5wdXNoKHVuZXNjYXBlKHZhbCkpOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAgdmFyIHJ2YWw7CiAgIGlmKHR5cGVvZihxdWVyeSkgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgLy8gc2V0IGNhY2hlZCB2YXJpYWJsZXMgaWYgbmVlZGVkCiAgICAgaWYoX3F1ZXJ5VmFyaWFibGVzID09PSBudWxsKSB7CiAgICAgICBpZih0eXBlb2Yod2luZG93KSAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2F0aW9uICYmIHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpIHsKICAgICAgICAgIC8vIHBhcnNlIHdpbmRvdyBzZWFyY2ggcXVlcnkKICAgICAgICAgIF9xdWVyeVZhcmlhYmxlcyA9IHBhcnNlKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc3Vic3RyaW5nKDEpKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBubyBxdWVyeSB2YXJpYWJsZXMgYXZhaWxhYmxlCiAgICAgICAgICBfcXVlcnlWYXJpYWJsZXMgPSB7fTsKICAgICAgIH0KICAgICB9CiAgICAgcnZhbCA9IF9xdWVyeVZhcmlhYmxlczsKICAgfSBlbHNlIHsKICAgICAvLyBwYXJzZSBnaXZlbiBxdWVyeQogICAgIHJ2YWwgPSBwYXJzZShxdWVyeSk7CiAgIH0KICAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUGFyc2VzIGEgZnJhZ21lbnQgaW50byBhIHBhdGggYW5kIHF1ZXJ5LiBUaGlzIG1ldGhvZCB3aWxsIHRha2UgYSBVUkkKICogZnJhZ21lbnQgYW5kIGJyZWFrIGl0IHVwIGFzIGlmIGl0IHdlcmUgdGhlIG1haW4gVVJJLiBGb3IgZXhhbXBsZToKICogICAgL2Jhci9iYXo/YT0xJmI9MgogKiByZXN1bHRzIGluOgogKiAgICB7CiAqICAgICAgIHBhdGg6IFsiYmFyIiwgImJheiJdLAogKiAgICAgICBxdWVyeTogeyJrMSI6IFsidjEiXSwgImsyIjogWyJ2MiJdfQogKiAgICB9CiAqCiAqIEByZXR1cm4gb2JqZWN0IHdpdGggYSBwYXRoIGFycmF5IGFuZCBxdWVyeSBvYmplY3QuCiAqLwp1dGlsLnBhcnNlRnJhZ21lbnQgPSBmdW5jdGlvbihmcmFnbWVudCkgewogIC8vIGRlZmF1bHQgdG8gd2hvbGUgZnJhZ21lbnQKICB2YXIgZnAgPSBmcmFnbWVudDsKICB2YXIgZnEgPSAnJzsKICAvLyBzcGxpdCBpbnRvIHBhdGggYW5kIHF1ZXJ5IGlmIHBvc3NpYmxlIGF0IHRoZSBmaXJzdCAnPycKICB2YXIgcG9zID0gZnJhZ21lbnQuaW5kZXhPZignPycpOwogIGlmKHBvcyA+IDApIHsKICAgIGZwID0gZnJhZ21lbnQuc3Vic3RyaW5nKDAsIHBvcyk7CiAgICBmcSA9IGZyYWdtZW50LnN1YnN0cmluZyhwb3MgKyAxKTsKICB9CiAgLy8gc3BsaXQgcGF0aCBiYXNlZCBvbiAnLycgYW5kIGlnbm9yZSBmaXJzdCBlbGVtZW50IGlmIGVtcHR5CiAgdmFyIHBhdGggPSBmcC5zcGxpdCgnLycpOwogIGlmKHBhdGgubGVuZ3RoID4gMCAmJiBwYXRoWzBdID09PSAnJykgewogICAgcGF0aC5zaGlmdCgpOwogIH0KICAvLyBjb252ZXJ0IHF1ZXJ5IGludG8gb2JqZWN0CiAgdmFyIHF1ZXJ5ID0gKGZxID09PSAnJykgPyB7fSA6IHV0aWwuZ2V0UXVlcnlWYXJpYWJsZXMoZnEpOwoKICByZXR1cm4gewogICAgcGF0aFN0cmluZzogZnAsCiAgICBxdWVyeVN0cmluZzogZnEsCiAgICBwYXRoOiBwYXRoLAogICAgcXVlcnk6IHF1ZXJ5CiAgfTsKfTsKCi8qKgogKiBNYWtlcyBhIHJlcXVlc3Qgb3V0IG9mIGEgVVJJLWxpa2UgcmVxdWVzdCBzdHJpbmcuIFRoaXMgaXMgaW50ZW5kZWQgdG8KICogYmUgdXNlZCB3aGVyZSBhIGZyYWdtZW50IGlkIChhZnRlciBhIFVSSSAnIycpIGlzIHBhcnNlZCBhcyBhIFVSSSB3aXRoCiAqIHBhdGggYW5kIHF1ZXJ5IHBhcnRzLiBUaGUgc3RyaW5nIHNob3VsZCBoYXZlIGEgcGF0aCBiZWdpbm5pbmcgYW5kCiAqIGRlbGltaXRlZCBieSAnLycgYW5kIG9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlcnMgZm9sbG93aW5nIGEgJz8nLiBUaGUKICogcXVlcnkgc2hvdWxkIGJlIGEgc3RhbmRhcmQgVVJMIHNldCBvZiBrZXkgdmFsdWUgcGFpcnMgZGVsaW1pdGVkIGJ5CiAqICcmJy4gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHRoZSBpbml0aWFsICcvJyBvbiB0aGUgcGF0aCBpcyBub3QKICogcmVxdWlyZWQuIFRoZSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBBUEksIChmdWxseSBkZXNjcmliZWQKICogaW4gdGhlIG1ldGhvZCBjb2RlKToKICogICAgewogKiAgICAgICBwYXRoOiA8dGhlIHBhdGggc3RyaW5nIHBhcnQ+LgogKiAgICAgICBxdWVyeTogPHRoZSBxdWVyeSBzdHJpbmcgcGFydD4sCiAqICAgICAgIGdldFBhdGgoaSk6IGdldCBwYXJ0IG9yIGFsbCBvZiB0aGUgc3BsaXQgcGF0aCBhcnJheSwKICogICAgICAgZ2V0UXVlcnkoaywgaSk6IGdldCBwYXJ0IG9yIGFsbCBvZiBhIHF1ZXJ5IGtleSBhcnJheSwKICogICAgICAgZ2V0UXVlcnlMYXN0KGssIF9kZWZhdWx0KTogZ2V0IGxhc3QgZWxlbWVudCBvZiBhIHF1ZXJ5IGtleSBhcnJheS4KICogICAgfQogKgogKiBAcmV0dXJuIG9iamVjdCB3aXRoIHJlcXVlc3QgcGFyYW1ldGVycy4KICovCnV0aWwubWFrZVJlcXVlc3QgPSBmdW5jdGlvbihyZXFTdHJpbmcpIHsKICB2YXIgZnJhZyA9IHV0aWwucGFyc2VGcmFnbWVudChyZXFTdHJpbmcpOwogIHZhciByZXEgPSB7CiAgICAvLyBmdWxsIHBhdGggc3RyaW5nCiAgICBwYXRoOiBmcmFnLnBhdGhTdHJpbmcsCiAgICAvLyBmdWxsIHF1ZXJ5IHN0cmluZwogICAgcXVlcnk6IGZyYWcucXVlcnlTdHJpbmcsCiAgICAvKioKICAgICAqIEdldCBwYXRoIG9yIGVsZW1lbnQgaW4gcGF0aC4KICAgICAqCiAgICAgKiBAcGFyYW0gaSBvcHRpb25hbCBwYXRoIGluZGV4LgogICAgICoKICAgICAqIEByZXR1cm4gcGF0aCBvciBwYXJ0IG9mIHBhdGggaWYgaSBwcm92aWRlZC4KICAgICAqLwogICAgZ2V0UGF0aDogZnVuY3Rpb24oaSkgewogICAgICByZXR1cm4gKHR5cGVvZihpKSA9PT0gJ3VuZGVmaW5lZCcpID8gZnJhZy5wYXRoIDogZnJhZy5wYXRoW2ldOwogICAgfSwKICAgIC8qKgogICAgICogR2V0IHF1ZXJ5LCB2YWx1ZXMgZm9yIGEga2V5LCBvciB2YWx1ZSBmb3IgYSBrZXkgaW5kZXguCiAgICAgKgogICAgICogQHBhcmFtIGsgb3B0aW9uYWwgcXVlcnkga2V5LgogICAgICogQHBhcmFtIGkgb3B0aW9uYWwgcXVlcnkga2V5IGluZGV4LgogICAgICoKICAgICAqIEByZXR1cm4gcXVlcnksIHZhbHVlcyBmb3IgYSBrZXksIG9yIHZhbHVlIGZvciBhIGtleSBpbmRleC4KICAgICAqLwogICAgZ2V0UXVlcnk6IGZ1bmN0aW9uKGssIGkpIHsKICAgICAgdmFyIHJ2YWw7CiAgICAgIGlmKHR5cGVvZihrKSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBydmFsID0gZnJhZy5xdWVyeTsKICAgICAgfSBlbHNlIHsKICAgICAgICBydmFsID0gZnJhZy5xdWVyeVtrXTsKICAgICAgICBpZihydmFsICYmIHR5cGVvZihpKSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICBydmFsID0gcnZhbFtpXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHJ2YWw7CiAgICB9LAogICAgZ2V0UXVlcnlMYXN0OiBmdW5jdGlvbihrLCBfZGVmYXVsdCkgewogICAgICB2YXIgcnZhbDsKICAgICAgdmFyIHZhbHMgPSByZXEuZ2V0UXVlcnkoayk7CiAgICAgIGlmKHZhbHMpIHsKICAgICAgICBydmFsID0gdmFsc1t2YWxzLmxlbmd0aCAtIDFdOwogICAgICB9IGVsc2UgewogICAgICAgIHJ2YWwgPSBfZGVmYXVsdDsKICAgICAgfQogICAgICByZXR1cm4gcnZhbDsKICAgIH0KICB9OwogIHJldHVybiByZXE7Cn07CgovKioKICogTWFrZXMgYSBVUkkgb3V0IG9mIGEgcGF0aCwgYW4gb2JqZWN0IHdpdGggcXVlcnkgcGFyYW1ldGVycywgYW5kIGEKICogZnJhZ21lbnQuIFVzZXMgalF1ZXJ5LnBhcmFtKCkgaW50ZXJuYWxseSBmb3IgcXVlcnkgc3RyaW5nIGNyZWF0aW9uLgogKiBJZiB0aGUgcGF0aCBpcyBhbiBhcnJheSwgaXQgd2lsbCBiZSBqb2luZWQgd2l0aCAnLycuCiAqCiAqIEBwYXJhbSBwYXRoIHN0cmluZyBwYXRoIG9yIGFycmF5IG9mIHN0cmluZ3MuCiAqIEBwYXJhbSBxdWVyeSBvYmplY3Qgd2l0aCBxdWVyeSBwYXJhbWV0ZXJzLiAob3B0aW9uYWwpCiAqIEBwYXJhbSBmcmFnbWVudCBmcmFnbWVudCBzdHJpbmcuIChvcHRpb25hbCkKICoKICogQHJldHVybiBzdHJpbmcgb2JqZWN0IHdpdGggcmVxdWVzdCBwYXJhbWV0ZXJzLgogKi8KdXRpbC5tYWtlTGluayA9IGZ1bmN0aW9uKHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCkgewogIC8vIGpvaW4gcGF0aCBwYXJ0cyBpZiBuZWVkZWQKICBwYXRoID0galF1ZXJ5LmlzQXJyYXkocGF0aCkgPyBwYXRoLmpvaW4oJy8nKSA6IHBhdGg7CgogIHZhciBxc3RyID0galF1ZXJ5LnBhcmFtKHF1ZXJ5IHx8IHt9KTsKICBmcmFnbWVudCA9IGZyYWdtZW50IHx8ICcnOwogIHJldHVybiBwYXRoICsKICAgICgocXN0ci5sZW5ndGggPiAwKSA/ICgnPycgKyBxc3RyKSA6ICcnKSArCiAgICAoKGZyYWdtZW50Lmxlbmd0aCA+IDApID8gKCcjJyArIGZyYWdtZW50KSA6ICcnKTsKfTsKCi8qKgogKiBGb2xsb3dzIGEgcGF0aCBvZiBrZXlzIGRlZXAgaW50byBhbiBvYmplY3QgaGllcmFyY2h5IGFuZCBzZXQgYSB2YWx1ZS4KICogSWYgYSBrZXkgZG9lcyBub3QgZXhpc3Qgb3IgaXQncyB2YWx1ZSBpcyBub3QgYW4gb2JqZWN0LCBjcmVhdGUgYW4KICogb2JqZWN0IGluIGl0J3MgcGxhY2UuIFRoaXMgY2FuIGJlIGRlc3RydWN0aXZlIHRvIGEgb2JqZWN0IHRyZWUgaWYKICogbGVhZiBub2RlcyBhcmUgZ2l2ZW4gYXMgbm9uLWZpbmFsIHBhdGgga2V5cy4KICogVXNlZCB0byBhdm9pZCBleGNlcHRpb25zIGZyb20gbWlzc2luZyBwYXJ0cyBvZiB0aGUgcGF0aC4KICoKICogQHBhcmFtIG9iamVjdCB0aGUgc3RhcnRpbmcgb2JqZWN0LgogKiBAcGFyYW0ga2V5cyBhbiBhcnJheSBvZiBzdHJpbmcga2V5cy4KICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBzZXQuCiAqLwp1dGlsLnNldFBhdGggPSBmdW5jdGlvbihvYmplY3QsIGtleXMsIHZhbHVlKSB7CiAgLy8gbmVlZCB0byBzdGFydCBhdCBhbiBvYmplY3QKICBpZih0eXBlb2Yob2JqZWN0KSA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsKSB7CiAgICB2YXIgaSA9IDA7CiAgICB2YXIgbGVuID0ga2V5cy5sZW5ndGg7CiAgICB3aGlsZShpIDwgbGVuKSB7CiAgICAgIHZhciBuZXh0ID0ga2V5c1tpKytdOwogICAgICBpZihpID09IGxlbikgewogICAgICAgIC8vIGxhc3QKICAgICAgICBvYmplY3RbbmV4dF0gPSB2YWx1ZTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBtb3JlCiAgICAgICAgdmFyIGhhc05leHQgPSAobmV4dCBpbiBvYmplY3QpOwogICAgICAgIGlmKCFoYXNOZXh0IHx8CiAgICAgICAgICAoaGFzTmV4dCAmJiB0eXBlb2Yob2JqZWN0W25leHRdKSAhPT0gJ29iamVjdCcpIHx8CiAgICAgICAgICAoaGFzTmV4dCAmJiBvYmplY3RbbmV4dF0gPT09IG51bGwpKSB7CiAgICAgICAgICBvYmplY3RbbmV4dF0gPSB7fTsKICAgICAgICB9CiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W25leHRdOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyoqCiAqIEZvbGxvd3MgYSBwYXRoIG9mIGtleXMgZGVlcCBpbnRvIGFuIG9iamVjdCBoaWVyYXJjaHkgYW5kIHJldHVybiBhIHZhbHVlLgogKiBJZiBhIGtleSBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGFuIG9iamVjdCBpbiBpdCdzIHBsYWNlLgogKiBVc2VkIHRvIGF2b2lkIGV4Y2VwdGlvbnMgZnJvbSBtaXNzaW5nIHBhcnRzIG9mIHRoZSBwYXRoLgogKgogKiBAcGFyYW0gb2JqZWN0IHRoZSBzdGFydGluZyBvYmplY3QuCiAqIEBwYXJhbSBrZXlzIGFuIGFycmF5IG9mIHN0cmluZyBrZXlzLgogKiBAcGFyYW0gX2RlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHBhdGggbm90IGZvdW5kLgogKgogKiBAcmV0dXJuIHRoZSB2YWx1ZSBhdCB0aGUgcGF0aCBpZiBmb3VuZCwgZWxzZSBkZWZhdWx0IGlmIGdpdmVuLCBlbHNlCiAqICAgICAgICAgdW5kZWZpbmVkLgogKi8KdXRpbC5nZXRQYXRoID0gZnVuY3Rpb24ob2JqZWN0LCBrZXlzLCBfZGVmYXVsdCkgewogIHZhciBpID0gMDsKICB2YXIgbGVuID0ga2V5cy5sZW5ndGg7CiAgdmFyIGhhc05leHQgPSB0cnVlOwogIHdoaWxlKGhhc05leHQgJiYgaSA8IGxlbiAmJgogICAgdHlwZW9mKG9iamVjdCkgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCkgewogICAgdmFyIG5leHQgPSBrZXlzW2krK107CiAgICBoYXNOZXh0ID0gbmV4dCBpbiBvYmplY3Q7CiAgICBpZihoYXNOZXh0KSB7CiAgICAgIG9iamVjdCA9IG9iamVjdFtuZXh0XTsKICAgIH0KICB9CiAgcmV0dXJuIChoYXNOZXh0ID8gb2JqZWN0IDogX2RlZmF1bHQpOwp9OwoKLyoqCiAqIEZvbGxvdyBhIHBhdGggb2Yga2V5cyBkZWVwIGludG8gYW4gb2JqZWN0IGhpZXJhcmNoeSBhbmQgZGVsZXRlIHRoZQogKiBsYXN0IG9uZS4gSWYgYSBrZXkgZG9lcyBub3QgZXhpc3QsIGRvIG5vdGhpbmcuCiAqIFVzZWQgdG8gYXZvaWQgZXhjZXB0aW9ucyBmcm9tIG1pc3NpbmcgcGFydHMgb2YgdGhlIHBhdGguCiAqCiAqIEBwYXJhbSBvYmplY3QgdGhlIHN0YXJ0aW5nIG9iamVjdC4KICogQHBhcmFtIGtleXMgYW4gYXJyYXkgb2Ygc3RyaW5nIGtleXMuCiAqLwp1dGlsLmRlbGV0ZVBhdGggPSBmdW5jdGlvbihvYmplY3QsIGtleXMpIHsKICAvLyBuZWVkIHRvIHN0YXJ0IGF0IGFuIG9iamVjdAogIGlmKHR5cGVvZihvYmplY3QpID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwpIHsKICAgIHZhciBpID0gMDsKICAgIHZhciBsZW4gPSBrZXlzLmxlbmd0aDsKICAgIHdoaWxlKGkgPCBsZW4pIHsKICAgICAgdmFyIG5leHQgPSBrZXlzW2krK107CiAgICAgIGlmKGkgPT0gbGVuKSB7CiAgICAgICAgLy8gbGFzdAogICAgICAgIGRlbGV0ZSBvYmplY3RbbmV4dF07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gbW9yZQogICAgICAgIGlmKCEobmV4dCBpbiBvYmplY3QpIHx8CiAgICAgICAgICAodHlwZW9mKG9iamVjdFtuZXh0XSkgIT09ICdvYmplY3QnKSB8fAogICAgICAgICAgKG9iamVjdFtuZXh0XSA9PT0gbnVsbCkpIHsKICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgb2JqZWN0ID0gb2JqZWN0W25leHRdOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyoqCiAqIENoZWNrIGlmIGFuIG9iamVjdCBpcyBlbXB0eS4KICoKICogVGFrZW4gZnJvbToKICogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82Nzk5MTUvaG93LWRvLWktdGVzdC1mb3ItYW4tZW1wdHktamF2YXNjcmlwdC1vYmplY3QtZnJvbS1qc29uLzY3OTkzNyM2Nzk5MzcKICoKICogQHBhcmFtIG9iamVjdCB0aGUgb2JqZWN0IHRvIGNoZWNrLgogKi8KdXRpbC5pc0VtcHR5ID0gZnVuY3Rpb24ob2JqKSB7CiAgZm9yKHZhciBwcm9wIGluIG9iaikgewogICAgaWYob2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CiAgcmV0dXJuIHRydWU7Cn07CgovKioKICogRm9ybWF0IHdpdGggc2ltcGxlIHByaW50Zi1zdHlsZSBpbnRlcnBvbGF0aW9uLgogKgogKiAlJTogbGl0ZXJhbCAnJScKICogJXMsJW86IGNvbnZlcnQgbmV4dCBhcmd1bWVudCBpbnRvIGEgc3RyaW5nLgogKgogKiBAcGFyYW0gZm9ybWF0IHRoZSBzdHJpbmcgdG8gZm9ybWF0LgogKiBAcGFyYW0gLi4uIGFyZ3VtZW50cyB0byBpbnRlcnBvbGF0ZSBpbnRvIHRoZSBmb3JtYXQgc3RyaW5nLgogKi8KdXRpbC5mb3JtYXQgPSBmdW5jdGlvbihmb3JtYXQpIHsKICB2YXIgcmUgPSAvJS4vZzsKICAvLyBjdXJyZW50IG1hdGNoCiAgdmFyIG1hdGNoOwogIC8vIGN1cnJlbnQgcGFydAogIHZhciBwYXJ0OwogIC8vIGN1cnJlbnQgYXJnIGluZGV4CiAgdmFyIGFyZ2kgPSAwOwogIC8vIGNvbGxlY3RlZCBwYXJ0cyB0byByZWNvbWJpbmUgbGF0ZXIKICB2YXIgcGFydHMgPSBbXTsKICAvLyBsYXN0IGluZGV4IGZvdW5kCiAgdmFyIGxhc3QgPSAwOwogIC8vIGxvb3Agd2hpbGUgbWF0Y2hlcyByZW1haW4KICB3aGlsZSgobWF0Y2ggPSByZS5leGVjKGZvcm1hdCkpKSB7CiAgICBwYXJ0ID0gZm9ybWF0LnN1YnN0cmluZyhsYXN0LCByZS5sYXN0SW5kZXggLSAyKTsKICAgIC8vIGRvbid0IGFkZCBlbXB0eSBzdHJpbmdzIChpZSwgcGFydHMgYmV0d2VlbiAlcyVzKQogICAgaWYocGFydC5sZW5ndGggPiAwKSB7CiAgICAgIHBhcnRzLnB1c2gocGFydCk7CiAgICB9CiAgICBsYXN0ID0gcmUubGFzdEluZGV4OwogICAgLy8gc3dpdGNoIG9uICUgY29kZQogICAgdmFyIGNvZGUgPSBtYXRjaFswXVsxXTsKICAgIHN3aXRjaChjb2RlKSB7CiAgICBjYXNlICdzJzoKICAgIGNhc2UgJ28nOgogICAgICAvLyBjaGVjayBpZiBlbm91Z2ggYXJndW1lbnRzIHdlcmUgZ2l2ZW4KICAgICAgaWYoYXJnaSA8IGFyZ3VtZW50cy5sZW5ndGgpIHsKICAgICAgICBwYXJ0cy5wdXNoKGFyZ3VtZW50c1thcmdpKysgKyAxXSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcGFydHMucHVzaCgnPD8+Jyk7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICAvLyBGSVhNRTogZG8gcHJvcGVyIGZvcm1hdGluZyBmb3IgbnVtYmVycywgZXRjCiAgICAvL2Nhc2UgJ2YnOgogICAgLy9jYXNlICdkJzoKICAgIGNhc2UgJyUnOgogICAgICBwYXJ0cy5wdXNoKCclJyk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgLy9wYXJ0cy5wdXNoKCc8JyArICclJyArIGNvZGUgKyAnPz4nKTsKICAgICAgcGFydHMucHVzaCgnPFx1MDAyMycgKyBjb2RlICsgJz8+Jyk7IC8vIE5lZWQgdG8gZXNjYXBlIHRoaXMgbGluZSBmb3IgQVNQLm5ldAogICAgfQogIH0KICAvLyBhZGQgdHJhaWxpbmcgcGFydCBvZiBmb3JtYXQgc3RyaW5nCiAgcGFydHMucHVzaChmb3JtYXQuc3Vic3RyaW5nKGxhc3QpKTsKICByZXR1cm4gcGFydHMuam9pbignJyk7Cn07CgovKioKICogRm9ybWF0cyBhIG51bWJlci4KICoKICogaHR0cDovL3NuaXBwbHIuY29tL3ZpZXcvNTk0NS9qYXZhc2NyaXB0LW51bWJlcmZvcm1hdC0tcG9ydGVkLWZyb20tcGhwLwogKi8KdXRpbC5mb3JtYXROdW1iZXIgPSBmdW5jdGlvbihudW1iZXIsIGRlY2ltYWxzLCBkZWNfcG9pbnQsIHRob3VzYW5kc19zZXApIHsKICAvLyBodHRwOi8va2V2aW4udmFuem9ubmV2ZWxkLm5ldAogIC8vICsgICBvcmlnaW5hbCBieTogSm9uYXMgUmFvbmkgU29hcmVzIFNpbHZhIChodHRwOi8vd3d3LmpzZnJvbWhlbGwuY29tKQogIC8vICsgICBpbXByb3ZlZCBieTogS2V2aW4gdmFuIFpvbm5ldmVsZCAoaHR0cDovL2tldmluLnZhbnpvbm5ldmVsZC5uZXQpCiAgLy8gKyAgICAgYnVnZml4IGJ5OiBNaWNoYWVsIFdoaXRlIChodHRwOi8vY3Jlc3RpZGcuY29tKQogIC8vICsgICAgIGJ1Z2ZpeCBieTogQmVuamFtaW4gTHVwdG9uCiAgLy8gKyAgICAgYnVnZml4IGJ5OiBBbGxhbiBKZW5zZW4gKGh0dHA6Ly93d3cud2ludGVybmV0Lm5vKQogIC8vICsgICAgcmV2aXNlZCBieTogSm9uYXMgUmFvbmkgU29hcmVzIFNpbHZhIChodHRwOi8vd3d3LmpzZnJvbWhlbGwuY29tKQogIC8vICogICAgIGV4YW1wbGUgMTogbnVtYmVyX2Zvcm1hdCgxMjM0LjU2NzgsIDIsICcuJywgJycpOwogIC8vICogICAgIHJldHVybnMgMTogMTIzNC41NwoKICB2YXIgbiA9IG51bWJlciwgYyA9IGlzTmFOKGRlY2ltYWxzID0gTWF0aC5hYnMoZGVjaW1hbHMpKSA/IDIgOiBkZWNpbWFsczsKICB2YXIgZCA9IGRlY19wb2ludCA9PT0gdW5kZWZpbmVkID8gJywnIDogZGVjX3BvaW50OwogIHZhciB0ID0gdGhvdXNhbmRzX3NlcCA9PT0gdW5kZWZpbmVkID8KICAgJy4nIDogdGhvdXNhbmRzX3NlcCwgcyA9IG4gPCAwID8gJy0nIDogJyc7CiAgdmFyIGkgPSBwYXJzZUludCgobiA9IE1hdGguYWJzKCtuIHx8IDApLnRvRml4ZWQoYykpLCAxMCkgKyAnJzsKICB2YXIgaiA9IChpLmxlbmd0aCA+IDMpID8gaS5sZW5ndGggJSAzIDogMDsKICByZXR1cm4gcyArIChqID8gaS5zdWJzdHIoMCwgaikgKyB0IDogJycpICsKICAgIGkuc3Vic3RyKGopLnJlcGxhY2UoLyhcZHszfSkoPz1cZCkvZywgJyQxJyArIHQpICsKICAgIChjID8gZCArIE1hdGguYWJzKG4gLSBpKS50b0ZpeGVkKGMpLnNsaWNlKDIpIDogJycpOwp9OwoKLyoqCiAqIEZvcm1hdHMgYSBieXRlIHNpemUuCiAqCiAqIGh0dHA6Ly9zbmlwcGxyLmNvbS92aWV3LzU5NDkvZm9ybWF0LWh1bWFuaXplLWZpbGUtYnl0ZS1zaXplLXByZXNlbnRhdGlvbi1pbi1qYXZhc2NyaXB0LwogKi8KdXRpbC5mb3JtYXRTaXplID0gZnVuY3Rpb24oc2l6ZSkgewogIGlmKHNpemUgPj0gMTA3Mzc0MTgyNCkgewogICAgc2l6ZSA9IHV0aWwuZm9ybWF0TnVtYmVyKHNpemUgLyAxMDczNzQxODI0LCAyLCAnLicsICcnKSArICcgR2lCJzsKICB9IGVsc2UgaWYoc2l6ZSA+PSAxMDQ4NTc2KSB7CiAgICBzaXplID0gdXRpbC5mb3JtYXROdW1iZXIoc2l6ZSAvIDEwNDg1NzYsIDIsICcuJywgJycpICsgJyBNaUInOwogIH0gZWxzZSBpZihzaXplID49IDEwMjQpIHsKICAgIHNpemUgPSB1dGlsLmZvcm1hdE51bWJlcihzaXplIC8gMTAyNCwgMCkgKyAnIEtpQic7CiAgfSBlbHNlIHsKICAgIHNpemUgPSB1dGlsLmZvcm1hdE51bWJlcihzaXplLCAwKSArICcgYnl0ZXMnOwogIH0KICByZXR1cm4gc2l6ZTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBJUHY0IG9yIElQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGludG8gYnl0ZXMgKGluIG5ldHdvcmsgb3JkZXIpLgogKgogKiBAcGFyYW0gaXAgdGhlIElQdjQgb3IgSVB2NiBhZGRyZXNzIHRvIGNvbnZlcnQuCiAqCiAqIEByZXR1cm4gdGhlIDQtYnl0ZSBJUHY2IG9yIDE2LWJ5dGUgSVB2NiBhZGRyZXNzIG9yIG51bGwgaWYgdGhlIGFkZHJlc3MgY2FuJ3QKICogICAgICAgICBiZSBwYXJzZWQuCiAqLwp1dGlsLmJ5dGVzRnJvbUlQID0gZnVuY3Rpb24oaXApIHsKICBpZihpcC5pbmRleE9mKCcuJykgIT09IC0xKSB7CiAgICByZXR1cm4gdXRpbC5ieXRlc0Zyb21JUHY0KGlwKTsKICB9CiAgaWYoaXAuaW5kZXhPZignOicpICE9PSAtMSkgewogICAgcmV0dXJuIHV0aWwuYnl0ZXNGcm9tSVB2NihpcCk7CiAgfQogIHJldHVybiBudWxsOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIElQdjQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGludG8gYnl0ZXMgKGluIG5ldHdvcmsgb3JkZXIpLgogKgogKiBAcGFyYW0gaXAgdGhlIElQdjQgYWRkcmVzcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSA0LWJ5dGUgYWRkcmVzcyBvciBudWxsIGlmIHRoZSBhZGRyZXNzIGNhbid0IGJlIHBhcnNlZC4KICovCnV0aWwuYnl0ZXNGcm9tSVB2NCA9IGZ1bmN0aW9uKGlwKSB7CiAgaXAgPSBpcC5zcGxpdCgnLicpOwogIGlmKGlwLmxlbmd0aCAhPT0gNCkgewogICAgcmV0dXJuIG51bGw7CiAgfQogIHZhciBiID0gdXRpbC5jcmVhdGVCdWZmZXIoKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgaXAubGVuZ3RoOyArK2kpIHsKICAgIHZhciBudW0gPSBwYXJzZUludChpcFtpXSwgMTApOwogICAgaWYoaXNOYU4obnVtKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGIucHV0Qnl0ZShudW0pOwogIH0KICByZXR1cm4gYi5nZXRCeXRlcygpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIElQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGludG8gYnl0ZXMgKGluIG5ldHdvcmsgb3JkZXIpLgogKgogKiBAcGFyYW0gaXAgdGhlIElQdjYgYWRkcmVzcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSAxNi1ieXRlIGFkZHJlc3Mgb3IgbnVsbCBpZiB0aGUgYWRkcmVzcyBjYW4ndCBiZSBwYXJzZWQuCiAqLwp1dGlsLmJ5dGVzRnJvbUlQdjYgPSBmdW5jdGlvbihpcCkgewogIHZhciBibGFua3MgPSAwOwogIGlwID0gaXAuc3BsaXQoJzonKS5maWx0ZXIoZnVuY3Rpb24oZSkgewogICAgaWYoZS5sZW5ndGggPT09IDApICsrYmxhbmtzOwogICAgcmV0dXJuIHRydWU7CiAgfSk7CiAgdmFyIHplcm9zID0gKDggLSBpcC5sZW5ndGggKyBibGFua3MpICogMjsKICB2YXIgYiA9IHV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IDg7ICsraSkgewogICAgaWYoIWlwW2ldIHx8IGlwW2ldLmxlbmd0aCA9PT0gMCkgewogICAgICBiLmZpbGxXaXRoQnl0ZSgwLCB6ZXJvcyk7CiAgICAgIHplcm9zID0gMDsKICAgICAgY29udGludWU7CiAgICB9CiAgICB2YXIgYnl0ZXMgPSB1dGlsLmhleFRvQnl0ZXMoaXBbaV0pOwogICAgaWYoYnl0ZXMubGVuZ3RoIDwgMikgewogICAgICBiLnB1dEJ5dGUoMCk7CiAgICB9CiAgICBiLnB1dEJ5dGVzKGJ5dGVzKTsKICB9CiAgcmV0dXJuIGIuZ2V0Qnl0ZXMoKTsKfTsKCi8qKgogKiBDb252ZXJ0cyA0LWJ5dGVzIGludG8gYW4gSVB2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb3IgMTYtYnl0ZXMgaW50bwogKiBhbiBJUHY2IHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhlIGJ5dGVzIG11c3QgYmUgaW4gbmV0d29yayBvcmRlci4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBJUHY0IG9yIElQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGlmIDQgb3IgMTYgYnl0ZXMsCiAqICAgICAgICAgcmVzcGVjdGl2ZWx5LCBhcmUgZ2l2ZW4sIG90aGVyd2lzZSBudWxsLgogKi8KdXRpbC5ieXRlc1RvSVAgPSBmdW5jdGlvbihieXRlcykgewogIGlmKGJ5dGVzLmxlbmd0aCA9PT0gNCkgewogICAgcmV0dXJuIHV0aWwuYnl0ZXNUb0lQdjQoYnl0ZXMpOwogIH0KICBpZihieXRlcy5sZW5ndGggPT09IDE2KSB7CiAgICByZXR1cm4gdXRpbC5ieXRlc1RvSVB2NihieXRlcyk7CiAgfQogIHJldHVybiBudWxsOwp9OwoKLyoqCiAqIENvbnZlcnRzIDQtYnl0ZXMgaW50byBhbiBJUHY0IHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhlIGJ5dGVzIG11c3QgYmUKICogaW4gbmV0d29yayBvcmRlci4KICoKICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBJUHY0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvciBudWxsIGZvciBhbiBpbnZhbGlkICMgb2YgYnl0ZXMuCiAqLwp1dGlsLmJ5dGVzVG9JUHY0ID0gZnVuY3Rpb24oYnl0ZXMpIHsKICBpZihieXRlcy5sZW5ndGggIT09IDQpIHsKICAgIHJldHVybiBudWxsOwogIH0KICB2YXIgaXAgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyArK2kpIHsKICAgIGlwLnB1c2goYnl0ZXMuY2hhckNvZGVBdChpKSk7CiAgfQogIHJldHVybiBpcC5qb2luKCcuJyk7Cn07CgovKioKICogQ29udmVydHMgMTYtYnl0ZXMgaW50byBhbiBJUHYxNiBzdHJpbmcgcmVwcmVzZW50YXRpb24uIFRoZSBieXRlcyBtdXN0IGJlCiAqIGluIG5ldHdvcmsgb3JkZXIuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZXMgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgSVB2MTYgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9yIG51bGwgZm9yIGFuIGludmFsaWQgIyBvZiBieXRlcy4KICovCnV0aWwuYnl0ZXNUb0lQdjYgPSBmdW5jdGlvbihieXRlcykgewogIGlmKGJ5dGVzLmxlbmd0aCAhPT0gMTYpIHsKICAgIHJldHVybiBudWxsOwogIH0KICB2YXIgaXAgPSBbXTsKICB2YXIgemVyb0dyb3VwcyA9IFtdOwogIHZhciB6ZXJvTWF4R3JvdXAgPSAwOwogIGZvcih2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikgewogICAgdmFyIGhleCA9IHV0aWwuYnl0ZXNUb0hleChieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSk7CiAgICAvLyBjYW5vbmljYWxpemUgemVybyByZXByZXNlbnRhdGlvbgogICAgd2hpbGUoaGV4WzBdID09PSAnMCcgJiYgaGV4ICE9PSAnMCcpIHsKICAgICAgaGV4ID0gaGV4LnN1YnN0cigxKTsKICAgIH0KICAgIGlmKGhleCA9PT0gJzAnKSB7CiAgICAgIHZhciBsYXN0ID0gemVyb0dyb3Vwc1t6ZXJvR3JvdXBzLmxlbmd0aCAtIDFdOwogICAgICB2YXIgaWR4ID0gaXAubGVuZ3RoOwogICAgICBpZighbGFzdCB8fCBpZHggIT09IGxhc3QuZW5kICsgMSkgewogICAgICAgIHplcm9Hcm91cHMucHVzaCh7c3RhcnQ6IGlkeCwgZW5kOiBpZHh9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsYXN0LmVuZCA9IGlkeDsKICAgICAgICBpZigobGFzdC5lbmQgLSBsYXN0LnN0YXJ0KSA+CiAgICAgICAgICAoemVyb0dyb3Vwc1t6ZXJvTWF4R3JvdXBdLmVuZCAtIHplcm9Hcm91cHNbemVyb01heEdyb3VwXS5zdGFydCkpIHsKICAgICAgICAgIHplcm9NYXhHcm91cCA9IHplcm9Hcm91cHMubGVuZ3RoIC0gMTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGlwLnB1c2goaGV4KTsKICB9CiAgaWYoemVyb0dyb3Vwcy5sZW5ndGggPiAwKSB7CiAgICB2YXIgZ3JvdXAgPSB6ZXJvR3JvdXBzW3plcm9NYXhHcm91cF07CiAgICAvLyBvbmx5IHNob3J0ZW4gZ3JvdXAgb2YgbGVuZ3RoID4gMAogICAgaWYoZ3JvdXAuZW5kIC0gZ3JvdXAuc3RhcnQgPiAwKSB7CiAgICAgIGlwLnNwbGljZShncm91cC5zdGFydCwgZ3JvdXAuZW5kIC0gZ3JvdXAuc3RhcnQgKyAxLCAnJyk7CiAgICAgIGlmKGdyb3VwLnN0YXJ0ID09PSAwKSB7CiAgICAgICAgaXAudW5zaGlmdCgnJyk7CiAgICAgIH0KICAgICAgaWYoZ3JvdXAuZW5kID09PSA3KSB7CiAgICAgICAgaXAucHVzaCgnJyk7CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIGlwLmpvaW4oJzonKTsKfTsKCi8qKgogKiBFc3RpbWF0ZXMgdGhlIG51bWJlciBvZiBwcm9jZXNzZXMgdGhhdCBjYW4gYmUgcnVuIGNvbmN1cnJlbnRseS4gSWYKICogY3JlYXRpbmcgV2ViIFdvcmtlcnMsIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBtYWluIEphdmFTY3JpcHQgcHJvY2VzcyBuZWVkcwogKiBpdHMgb3duIGNvcmUuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgdXBkYXRlIHRydWUgdG8gZm9yY2UgYW4gdXBkYXRlIChub3QgdXNlIHRoZSBjYWNoZWQgdmFsdWUpLgogKiBAcGFyYW0gY2FsbGJhY2soZXJyLCBtYXgpIGNhbGxlZCBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogKi8KdXRpbC5lc3RpbWF0ZUNvcmVzID0gZnVuY3Rpb24ob3B0aW9ucywgY2FsbGJhY2spIHsKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRpb25zOwogICAgb3B0aW9ucyA9IHt9OwogIH0KICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICBpZignY29yZXMnIGluIHV0aWwgJiYgIW9wdGlvbnMudXBkYXRlKSB7CiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdXRpbC5jb3Jlcyk7CiAgfQogIGlmKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmCiAgICAnaGFyZHdhcmVDb25jdXJyZW5jeScgaW4gbmF2aWdhdG9yICYmCiAgICBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSA+IDApIHsKICAgIHV0aWwuY29yZXMgPSBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeTsKICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB1dGlsLmNvcmVzKTsKICB9CiAgaWYodHlwZW9mIFdvcmtlciA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIC8vIHdvcmtlcnMgbm90IGF2YWlsYWJsZQogICAgdXRpbC5jb3JlcyA9IDE7CiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdXRpbC5jb3Jlcyk7CiAgfQogIGlmKHR5cGVvZiBCbG9iID09PSAndW5kZWZpbmVkJykgewogICAgLy8gY2FuJ3QgZXN0aW1hdGUsIGRlZmF1bHQgdG8gMgogICAgdXRpbC5jb3JlcyA9IDI7CiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdXRpbC5jb3Jlcyk7CiAgfQoKICAvLyBjcmVhdGUgd29ya2VyIGNvbmN1cnJlbmN5IGVzdGltYXRpb24gY29kZSBhcyBibG9iCiAgdmFyIGJsb2JVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFsnKCcsCiAgICBmdW5jdGlvbigpIHsKICAgICAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24oZSkgewogICAgICAgIC8vIHJ1biB3b3JrZXIgZm9yIDQgbXMKICAgICAgICB2YXIgc3QgPSBEYXRlLm5vdygpOwogICAgICAgIHZhciBldCA9IHN0ICsgNDsKICAgICAgICB3aGlsZShEYXRlLm5vdygpIDwgZXQpOwogICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe3N0OiBzdCwgZXQ6IGV0fSk7CiAgICAgIH0pOwogICAgfS50b1N0cmluZygpLAogICcpKCknXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0J30pKTsKCiAgLy8gdGFrZSA1IHNhbXBsZXMgdXNpbmcgMTYgd29ya2VycwogIHNhbXBsZShbXSwgNSwgMTYpOwoKICBmdW5jdGlvbiBzYW1wbGUobWF4LCBzYW1wbGVzLCBudW1Xb3JrZXJzKSB7CiAgICBpZihzYW1wbGVzID09PSAwKSB7CiAgICAgIC8vIGdldCBvdmVybGFwIGF2ZXJhZ2UKICAgICAgdmFyIGF2ZyA9IE1hdGguZmxvb3IobWF4LnJlZHVjZShmdW5jdGlvbihhdmcsIHgpIHsKICAgICAgICByZXR1cm4gYXZnICsgeDsKICAgICAgfSwgMCkgLyBtYXgubGVuZ3RoKTsKICAgICAgdXRpbC5jb3JlcyA9IE1hdGgubWF4KDEsIGF2Zyk7CiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwoYmxvYlVybCk7CiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB1dGlsLmNvcmVzKTsKICAgIH0KICAgIG1hcChudW1Xb3JrZXJzLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHsKICAgICAgbWF4LnB1c2gocmVkdWNlKG51bVdvcmtlcnMsIHJlc3VsdHMpKTsKICAgICAgc2FtcGxlKG1heCwgc2FtcGxlcyAtIDEsIG51bVdvcmtlcnMpOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBtYXAobnVtV29ya2VycywgY2FsbGJhY2spIHsKICAgIHZhciB3b3JrZXJzID0gW107CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG51bVdvcmtlcnM7ICsraSkgewogICAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcihibG9iVXJsKTsKICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgcmVzdWx0cy5wdXNoKGUuZGF0YSk7CiAgICAgICAgaWYocmVzdWx0cy5sZW5ndGggPT09IG51bVdvcmtlcnMpIHsKICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBudW1Xb3JrZXJzOyArK2kpIHsKICAgICAgICAgICAgd29ya2Vyc1tpXS50ZXJtaW5hdGUoKTsKICAgICAgICAgIH0KICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdHMpOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHdvcmtlcnMucHVzaCh3b3JrZXIpOwogICAgfQogICAgZm9yKHZhciBpID0gMDsgaSA8IG51bVdvcmtlcnM7ICsraSkgewogICAgICB3b3JrZXJzW2ldLnBvc3RNZXNzYWdlKGkpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gcmVkdWNlKG51bVdvcmtlcnMsIHJlc3VsdHMpIHsKICAgIC8vIGZpbmQgb3ZlcmxhcHBpbmcgdGltZSB3aW5kb3dzCiAgICB2YXIgb3ZlcmxhcHMgPSBbXTsKICAgIGZvcih2YXIgbiA9IDA7IG4gPCBudW1Xb3JrZXJzOyArK24pIHsKICAgICAgdmFyIHIxID0gcmVzdWx0c1tuXTsKICAgICAgdmFyIG92ZXJsYXAgPSBvdmVybGFwc1tuXSA9IFtdOwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbnVtV29ya2VyczsgKytpKSB7CiAgICAgICAgaWYobiA9PT0gaSkgewogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHZhciByMiA9IHJlc3VsdHNbaV07CiAgICAgICAgaWYoKHIxLnN0ID4gcjIuc3QgJiYgcjEuc3QgPCByMi5ldCkgfHwKICAgICAgICAgIChyMi5zdCA+IHIxLnN0ICYmIHIyLnN0IDwgcjEuZXQpKSB7CiAgICAgICAgICBvdmVybGFwLnB1c2goaSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAvLyBnZXQgbWF4aW11bSBvdmVybGFwcyAuLi4gZG9uJ3QgaW5jbHVkZSBvdmVybGFwcGluZyB3b3JrZXIgaXRzZWxmCiAgICAvLyBhcyB0aGUgbWFpbiBKUyBwcm9jZXNzIHdhcyBhbHNvIGJlaW5nIHNjaGVkdWxlZCBkdXJpbmcgdGhlIHdvcmsgYW5kCiAgICAvLyB3b3VsZCBoYXZlIHRvIGJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgZXN0aW1hdGUgYW55d2F5CiAgICByZXR1cm4gb3ZlcmxhcHMucmVkdWNlKGZ1bmN0aW9uKG1heCwgb3ZlcmxhcCkgewogICAgICByZXR1cm4gTWF0aC5tYXgobWF4LCBvdmVybGFwLmxlbmd0aCk7CiAgICB9LCAwKTsKICB9Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICd1dGlsJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3V0aWwnLFsncmVxdWlyZScsICdtb2R1bGUnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQ2lwaGVyIGJhc2UgQVBJLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCmZvcmdlLmNpcGhlciA9IGZvcmdlLmNpcGhlciB8fCB7fTsKCi8vIHJlZ2lzdGVyZWQgYWxnb3JpdGhtcwpmb3JnZS5jaXBoZXIuYWxnb3JpdGhtcyA9IGZvcmdlLmNpcGhlci5hbGdvcml0aG1zIHx8IHt9OwoKLyoqCiAqIENyZWF0ZXMgYSBjaXBoZXIgb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZW5jcnlwdCBkYXRhIHVzaW5nIHRoZSBnaXZlbgogKiBhbGdvcml0aG0gYW5kIGtleS4gVGhlIGFsZ29yaXRobSBtYXkgYmUgcHJvdmlkZWQgYXMgYSBzdHJpbmcgdmFsdWUgZm9yIGEKICogcHJldmlvdXNseSByZWdpc3RlcmVkIGFsZ29yaXRobSBvciBpdCBtYXkgYmUgZ2l2ZW4gYXMgYSBjaXBoZXIgYWxnb3JpdGhtCiAqIEFQSSBvYmplY3QuCiAqCiAqIEBwYXJhbSBhbGdvcml0aG0gdGhlIGFsZ29yaXRobSB0byB1c2UsIGVpdGhlciBhIHN0cmluZyBvciBhbiBhbGdvcml0aG0gQVBJCiAqICAgICAgICAgIG9iamVjdC4KICogQHBhcmFtIGtleSB0aGUga2V5IHRvIHVzZSwgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMgb3IgYQogKiAgICAgICAgICBieXRlIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UuY2lwaGVyLmNyZWF0ZUNpcGhlciA9IGZ1bmN0aW9uKGFsZ29yaXRobSwga2V5KSB7CiAgdmFyIGFwaSA9IGFsZ29yaXRobTsKICBpZih0eXBlb2YgYXBpID09PSAnc3RyaW5nJykgewogICAgYXBpID0gZm9yZ2UuY2lwaGVyLmdldEFsZ29yaXRobShhcGkpOwogICAgaWYoYXBpKSB7CiAgICAgIGFwaSA9IGFwaSgpOwogICAgfQogIH0KICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGFsZ29yaXRobTogJyArIGFsZ29yaXRobSk7CiAgfQoKICAvLyBhc3N1bWUgYmxvY2sgY2lwaGVyCiAgcmV0dXJuIG5ldyBmb3JnZS5jaXBoZXIuQmxvY2tDaXBoZXIoewogICAgYWxnb3JpdGhtOiBhcGksCiAgICBrZXk6IGtleSwKICAgIGRlY3J5cHQ6IGZhbHNlCiAgfSk7Cn07CgovKioKICogQ3JlYXRlcyBhIGRlY2lwaGVyIG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4KICogYWxnb3JpdGhtIGFuZCBrZXkuIFRoZSBhbGdvcml0aG0gbWF5IGJlIHByb3ZpZGVkIGFzIGEgc3RyaW5nIHZhbHVlIGZvciBhCiAqIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBhbGdvcml0aG0gb3IgaXQgbWF5IGJlIGdpdmVuIGFzIGEgY2lwaGVyIGFsZ29yaXRobQogKiBBUEkgb2JqZWN0LgogKgogKiBAcGFyYW0gYWxnb3JpdGhtIHRoZSBhbGdvcml0aG0gdG8gdXNlLCBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gYWxnb3JpdGhtIEFQSQogKiAgICAgICAgICBvYmplY3QuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB1c2UsIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIG9yIGEKICogICAgICAgICAgYnl0ZSBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlciA9IGZ1bmN0aW9uKGFsZ29yaXRobSwga2V5KSB7CiAgdmFyIGFwaSA9IGFsZ29yaXRobTsKICBpZih0eXBlb2YgYXBpID09PSAnc3RyaW5nJykgewogICAgYXBpID0gZm9yZ2UuY2lwaGVyLmdldEFsZ29yaXRobShhcGkpOwogICAgaWYoYXBpKSB7CiAgICAgIGFwaSA9IGFwaSgpOwogICAgfQogIH0KICBpZighYXBpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGFsZ29yaXRobTogJyArIGFsZ29yaXRobSk7CiAgfQoKICAvLyBhc3N1bWUgYmxvY2sgY2lwaGVyCiAgcmV0dXJuIG5ldyBmb3JnZS5jaXBoZXIuQmxvY2tDaXBoZXIoewogICAgYWxnb3JpdGhtOiBhcGksCiAgICBrZXk6IGtleSwKICAgIGRlY3J5cHQ6IHRydWUKICB9KTsKfTsKCi8qKgogKiBSZWdpc3RlcnMgYW4gYWxnb3JpdGhtIGJ5IG5hbWUuIElmIHRoZSBuYW1lIHdhcyBhbHJlYWR5IHJlZ2lzdGVyZWQsIHRoZQogKiBhbGdvcml0aG0gQVBJIG9iamVjdCB3aWxsIGJlIG92ZXJ3cml0dGVuLgogKgogKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgYWxnb3JpdGhtLgogKiBAcGFyYW0gYWxnb3JpdGhtIHRoZSBhbGdvcml0aG0gQVBJIG9iamVjdC4KICovCmZvcmdlLmNpcGhlci5yZWdpc3RlckFsZ29yaXRobSA9IGZ1bmN0aW9uKG5hbWUsIGFsZ29yaXRobSkgewogIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKCk7CiAgZm9yZ2UuY2lwaGVyLmFsZ29yaXRobXNbbmFtZV0gPSBhbGdvcml0aG07Cn07CgovKioKICogR2V0cyBhIHJlZ2lzdGVyZWQgYWxnb3JpdGhtIGJ5IG5hbWUuCiAqCiAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBhbGdvcml0aG0uCiAqCiAqIEByZXR1cm4gdGhlIGFsZ29yaXRobSwgaWYgZm91bmQsIG51bGwgaWYgbm90LgogKi8KZm9yZ2UuY2lwaGVyLmdldEFsZ29yaXRobSA9IGZ1bmN0aW9uKG5hbWUpIHsKICBuYW1lID0gbmFtZS50b1VwcGVyQ2FzZSgpOwogIGlmKG5hbWUgaW4gZm9yZ2UuY2lwaGVyLmFsZ29yaXRobXMpIHsKICAgIHJldHVybiBmb3JnZS5jaXBoZXIuYWxnb3JpdGhtc1tuYW1lXTsKICB9CiAgcmV0dXJuIG51bGw7Cn07Cgp2YXIgQmxvY2tDaXBoZXIgPSBmb3JnZS5jaXBoZXIuQmxvY2tDaXBoZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgdGhpcy5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICB0aGlzLm1vZGUgPSB0aGlzLmFsZ29yaXRobS5tb2RlOwogIHRoaXMuYmxvY2tTaXplID0gdGhpcy5tb2RlLmJsb2NrU2l6ZTsKICB0aGlzLl9maW5pc2ggPSBmYWxzZTsKICB0aGlzLl9pbnB1dCA9IG51bGw7CiAgdGhpcy5vdXRwdXQgPSBudWxsOwogIHRoaXMuX29wID0gb3B0aW9ucy5kZWNyeXB0ID8gdGhpcy5tb2RlLmRlY3J5cHQgOiB0aGlzLm1vZGUuZW5jcnlwdDsKICB0aGlzLl9kZWNyeXB0ID0gb3B0aW9ucy5kZWNyeXB0OwogIHRoaXMuYWxnb3JpdGhtLmluaXRpYWxpemUob3B0aW9ucyk7Cn07CgovKioKICogU3RhcnRzIG9yIHJlc3RhcnRzIHRoZSBlbmNyeXB0aW9uIG9yIGRlY3J5cHRpb24gcHJvY2Vzcywgd2hpY2hldmVyCiAqIHdhcyBwcmV2aW91c2x5IGNvbmZpZ3VyZWQuCiAqCiAqIEZvciBub24tR0NNIG1vZGUsIHRoZSBJViBtYXkgYmUgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5CiAqIG9mIGJ5dGVzLCBhIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgaW50ZWdlcnMuIElmIHRoZSBJViBpcyBpbgogKiBieXRlcywgdGhlbiBpdCBtdXN0IGJlIE5iICgxNikgYnl0ZXMgaW4gbGVuZ3RoLiBJZiB0aGUgSVYgaXMgZ2l2ZW4gaW4gYXMKICogMzItYml0IGludGVnZXJzLCB0aGVuIGl0IG11c3QgYmUgNCBpbnRlZ2VycyBsb25nLgogKgogKiBOb3RlOiBhbiBJViBpcyBub3QgcmVxdWlyZWQgb3IgdXNlZCBpbiBFQ0IgbW9kZS4KICoKICogRm9yIEdDTS1tb2RlLCB0aGUgSVYgbXVzdCBiZSBnaXZlbiBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcyBvcgogKiBhIGJ5dGUgYnVmZmVyLiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHNob3VsZCBiZSAxMiAoOTYgYml0cykgYXMgcmVjb21tZW5kZWQKICogYnkgTklTVCBTUC04MDAtMzhEIGJ1dCBhbm90aGVyIGxlbmd0aCBtYXkgYmUgZ2l2ZW4uCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YKICogICAgICAgICAgICBieXRlcywgbnVsbCB0byByZXVzZSB0aGUgbGFzdCBjaXBoZXJlZCBibG9jayBmcm9tIGEgcHJldmlvdXMKICogICAgICAgICAgICB1cGRhdGUoKSAodGhpcyAicmVzaWR1ZSIgbWV0aG9kIGlzIGZvciBsZWdhY3kgc3VwcG9ydCBvbmx5KS4KICogICAgICAgICAgYWRkaXRpb25hbERhdGEgYWRkaXRpb25hbCBhdXRoZW50aWNhdGlvbiBkYXRhIGFzIGEgYmluYXJ5LWVuY29kZWQKICogICAgICAgICAgICBzdHJpbmcgb2YgYnl0ZXMsIGZvciAnR0NNJyBtb2RlLCAoZGVmYXVsdDogbm9uZSkuCiAqICAgICAgICAgIHRhZ0xlbmd0aCBkZXNpcmVkIGxlbmd0aCBvZiBhdXRoZW50aWNhdGlvbiB0YWcsIGluIGJpdHMsIGZvcgogKiAgICAgICAgICAgICdHQ00nIG1vZGUgKDAtMTI4LCBkZWZhdWx0OiAxMjgpLgogKiAgICAgICAgICB0YWcgdGhlIGF1dGhlbnRpY2F0aW9uIHRhZyB0byBjaGVjayBpZiBkZWNyeXB0aW5nLCBhcyBhCiAqICAgICAgICAgICAgIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcy4KICogICAgICAgICAgb3V0cHV0IHRoZSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKi8KQmxvY2tDaXBoZXIucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHZhciBvcHRzID0ge307CiAgZm9yKHZhciBrZXkgaW4gb3B0aW9ucykgewogICAgb3B0c1trZXldID0gb3B0aW9uc1trZXldOwogIH0KICBvcHRzLmRlY3J5cHQgPSB0aGlzLl9kZWNyeXB0OwogIHRoaXMuX2ZpbmlzaCA9IGZhbHNlOwogIHRoaXMuX2lucHV0ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICB0aGlzLm91dHB1dCA9IG9wdGlvbnMub3V0cHV0IHx8IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5tb2RlLnN0YXJ0KG9wdHMpOwp9OwoKLyoqCiAqIFVwZGF0ZXMgdGhlIG5leHQgYmxvY2sgYWNjb3JkaW5nIHRvIHRoZSBjaXBoZXIgbW9kZS4KICoKICogQHBhcmFtIGlucHV0IHRoZSBidWZmZXIgdG8gcmVhZCBmcm9tLgogKi8KQmxvY2tDaXBoZXIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKGlucHV0KSB7CiAgaWYoaW5wdXQpIHsKICAgIC8vIGlucHV0IGdpdmVuLCBzbyBlbXB0eSBpdCBpbnRvIHRoZSBpbnB1dCBidWZmZXIKICAgIHRoaXMuX2lucHV0LnB1dEJ1ZmZlcihpbnB1dCk7CiAgfQoKICAvLyBkbyBjaXBoZXIgb3BlcmF0aW9uIHVudGlsIGl0IG5lZWRzIG1vcmUgaW5wdXQgYW5kIG5vdCBmaW5pc2hlZAogIHdoaWxlKCF0aGlzLl9vcC5jYWxsKHRoaXMubW9kZSwgdGhpcy5faW5wdXQsIHRoaXMub3V0cHV0LCB0aGlzLl9maW5pc2gpICYmCiAgICAhdGhpcy5fZmluaXNoKSB7fQoKICAvLyBmcmVlIGNvbnN1bWVkIG1lbW9yeSBmcm9tIGlucHV0IGJ1ZmZlcgogIHRoaXMuX2lucHV0LmNvbXBhY3QoKTsKfTsKCi8qKgogKiBGaW5pc2hlcyBlbmNyeXB0aW5nIG9yIGRlY3J5cHRpbmcuCiAqCiAqIEBwYXJhbSBwYWQgYSBwYWRkaW5nIGZ1bmN0aW9uIHRvIHVzZSBpbiBDQkMgbW9kZSwgbnVsbCBmb3IgZGVmYXVsdCwKICogICAgICAgICAgc2lnbmF0dXJlKGJsb2NrU2l6ZSwgYnVmZmVyLCBkZWNyeXB0KS4KICoKICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIG9uIGVycm9yLgogKi8KQmxvY2tDaXBoZXIucHJvdG90eXBlLmZpbmlzaCA9IGZ1bmN0aW9uKHBhZCkgewogIC8vIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IHcvZGVwcmVjYXRlZCBwYWRkaW5nIEFQSQogIC8vIE5vdGU6IHdpbGwgb3ZlcndyaXRlIHBhZGRpbmcgZnVuY3Rpb25zIGV2ZW4gYWZ0ZXIgYW5vdGhlciBzdGFydCgpIGNhbGwKICBpZihwYWQgJiYgKHRoaXMubW9kZS5uYW1lID09PSAnRUNCJyB8fCB0aGlzLm1vZGUubmFtZSA9PT0gJ0NCQycpKSB7CiAgICB0aGlzLm1vZGUucGFkID0gZnVuY3Rpb24oaW5wdXQpIHsKICAgICAgcmV0dXJuIHBhZCh0aGlzLmJsb2NrU2l6ZSwgaW5wdXQsIGZhbHNlKTsKICAgIH07CiAgICB0aGlzLm1vZGUudW5wYWQgPSBmdW5jdGlvbihvdXRwdXQpIHsKICAgICAgcmV0dXJuIHBhZCh0aGlzLmJsb2NrU2l6ZSwgb3V0cHV0LCB0cnVlKTsKICAgIH07CiAgfQoKICAvLyBidWlsZCBvcHRpb25zIGZvciBwYWRkaW5nIGFuZCBhZnRlckZpbmlzaCBmdW5jdGlvbnMKICB2YXIgb3B0aW9ucyA9IHt9OwogIG9wdGlvbnMuZGVjcnlwdCA9IHRoaXMuX2RlY3J5cHQ7CgogIC8vIGdldCAjIG9mIGJ5dGVzIHRoYXQgd29uJ3QgZmlsbCBhIGJsb2NrCiAgb3B0aW9ucy5vdmVyZmxvdyA9IHRoaXMuX2lucHV0Lmxlbmd0aCgpICUgdGhpcy5ibG9ja1NpemU7CgogIGlmKCF0aGlzLl9kZWNyeXB0ICYmIHRoaXMubW9kZS5wYWQpIHsKICAgIGlmKCF0aGlzLm1vZGUucGFkKHRoaXMuX2lucHV0LCBvcHRpb25zKSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICAvLyBkbyBmaW5hbCB1cGRhdGUKICB0aGlzLl9maW5pc2ggPSB0cnVlOwogIHRoaXMudXBkYXRlKCk7CgogIGlmKHRoaXMuX2RlY3J5cHQgJiYgdGhpcy5tb2RlLnVucGFkKSB7CiAgICBpZighdGhpcy5tb2RlLnVucGFkKHRoaXMub3V0cHV0LCBvcHRpb25zKSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQoKICBpZih0aGlzLm1vZGUuYWZ0ZXJGaW5pc2gpIHsKICAgIGlmKCF0aGlzLm1vZGUuYWZ0ZXJGaW5pc2godGhpcy5vdXRwdXQsIG9wdGlvbnMpKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9CgogIHJldHVybiB0cnVlOwp9OwoKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2NpcGhlcic7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9jaXBoZXInLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFN1cHBvcnRlZCBjaXBoZXIgbW9kZXMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UuY2lwaGVyID0gZm9yZ2UuY2lwaGVyIHx8IHt9OwoKLy8gc3VwcG9ydGVkIGNpcGhlciBtb2Rlcwp2YXIgbW9kZXMgPSBmb3JnZS5jaXBoZXIubW9kZXMgPSBmb3JnZS5jaXBoZXIubW9kZXMgfHwge307CgoKLyoqIEVsZWN0cm9uaWMgY29kZWJvb2sgKEVDQikgKERvbid0IHVzZSB0aGlzOyBpdCdzIG5vdCBzZWN1cmUpICoqLwoKbW9kZXMuZWNiID0gZnVuY3Rpb24ob3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHRoaXMubmFtZSA9ICdFQ0InOwogIHRoaXMuY2lwaGVyID0gb3B0aW9ucy5jaXBoZXI7CiAgdGhpcy5ibG9ja1NpemUgPSBvcHRpb25zLmJsb2NrU2l6ZSB8fCAxNjsKICB0aGlzLl9pbnRzID0gdGhpcy5ibG9ja1NpemUgLyA0OwogIHRoaXMuX2luQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7Cn07Cgptb2Rlcy5lY2IucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24ob3B0aW9ucykge307Cgptb2Rlcy5lY2IucHJvdG90eXBlLmVuY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGVuY3J5cHQKICBpZihpbnB1dC5sZW5ndGgoKSA8IHRoaXMuYmxvY2tTaXplICYmICEoZmluaXNoICYmIGlucHV0Lmxlbmd0aCgpID4gMCkpIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZ2V0IG5leHQgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9pbkJsb2NrW2ldID0gaW5wdXQuZ2V0SW50MzIoKTsKICB9CgogIC8vIGVuY3J5cHQgYmxvY2sKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gd3JpdGUgb3V0cHV0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldKTsKICB9Cn07Cgptb2Rlcy5lY2IucHJvdG90eXBlLmRlY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGRlY3J5cHQKICBpZihpbnB1dC5sZW5ndGgoKSA8IHRoaXMuYmxvY2tTaXplICYmICEoZmluaXNoICYmIGlucHV0Lmxlbmd0aCgpID4gMCkpIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZ2V0IG5leHQgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9pbkJsb2NrW2ldID0gaW5wdXQuZ2V0SW50MzIoKTsKICB9CgogIC8vIGRlY3J5cHQgYmxvY2sKICB0aGlzLmNpcGhlci5kZWNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gd3JpdGUgb3V0cHV0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldKTsKICB9Cn07Cgptb2Rlcy5lY2IucHJvdG90eXBlLnBhZCA9IGZ1bmN0aW9uKGlucHV0LCBvcHRpb25zKSB7CiAgLy8gYWRkIFBLQ1MjNyBwYWRkaW5nIHRvIGJsb2NrIChlYWNoIHBhZCBieXRlIGlzIHRoZQogIC8vIHZhbHVlIG9mIHRoZSBudW1iZXIgb2YgcGFkIGJ5dGVzKQogIHZhciBwYWRkaW5nID0gKGlucHV0Lmxlbmd0aCgpID09PSB0aGlzLmJsb2NrU2l6ZSA/CiAgICB0aGlzLmJsb2NrU2l6ZSA6ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0Lmxlbmd0aCgpKSk7CiAgaW5wdXQuZmlsbFdpdGhCeXRlKHBhZGRpbmcsIHBhZGRpbmcpOwogIHJldHVybiB0cnVlOwp9OwoKbW9kZXMuZWNiLnByb3RvdHlwZS51bnBhZCA9IGZ1bmN0aW9uKG91dHB1dCwgb3B0aW9ucykgewogIC8vIGNoZWNrIGZvciBlcnJvcjogaW5wdXQgZGF0YSBub3QgYSBtdWx0aXBsZSBvZiBibG9ja1NpemUKICBpZihvcHRpb25zLm92ZXJmbG93ID4gMCkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLy8gZW5zdXJlIHBhZGRpbmcgYnl0ZSBjb3VudCBpcyB2YWxpZAogIHZhciBsZW4gPSBvdXRwdXQubGVuZ3RoKCk7CiAgdmFyIGNvdW50ID0gb3V0cHV0LmF0KGxlbiAtIDEpOwogIGlmKGNvdW50ID4gKHRoaXMuYmxvY2tTaXplIDw8IDIpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICAvLyB0cmltIG9mZiBwYWRkaW5nIGJ5dGVzCiAgb3V0cHV0LnRydW5jYXRlKGNvdW50KTsKICByZXR1cm4gdHJ1ZTsKfTsKCgovKiogQ2lwaGVyLWJsb2NrIENoYWluaW5nIChDQkMpICoqLwoKbW9kZXMuY2JjID0gZnVuY3Rpb24ob3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHRoaXMubmFtZSA9ICdDQkMnOwogIHRoaXMuY2lwaGVyID0gb3B0aW9ucy5jaXBoZXI7CiAgdGhpcy5ibG9ja1NpemUgPSBvcHRpb25zLmJsb2NrU2l6ZSB8fCAxNjsKICB0aGlzLl9pbnRzID0gdGhpcy5ibG9ja1NpemUgLyA0OwogIHRoaXMuX2luQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7Cn07Cgptb2Rlcy5jYmMucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogIC8vIE5vdGU6IGxlZ2FjeSBzdXBwb3J0IGZvciB1c2luZyBJViByZXNpZHVlIChoYXMgc2VjdXJpdHkgZmxhd3MpCiAgLy8gaWYgSVYgaXMgbnVsbCwgcmV1c2UgYmxvY2sgZnJvbSBwcmV2aW91cyBwcm9jZXNzaW5nCiAgaWYob3B0aW9ucy5pdiA9PT0gbnVsbCkgewogICAgLy8gbXVzdCBoYXZlIGEgcHJldmlvdXMgYmxvY2sKICAgIGlmKCF0aGlzLl9wcmV2KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBJViBwYXJhbWV0ZXIuJyk7CiAgICB9CiAgICB0aGlzLl9pdiA9IHRoaXMuX3ByZXYuc2xpY2UoMCk7CiAgfSBlbHNlIGlmKCEoJ2l2JyBpbiBvcHRpb25zKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIElWIHBhcmFtZXRlci4nKTsKICB9IGVsc2UgewogICAgLy8gc2F2ZSBJViBhcyAicHJldmlvdXMiIGJsb2NrCiAgICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogICAgdGhpcy5fcHJldiA9IHRoaXMuX2l2LnNsaWNlKDApOwogIH0KfTsKCm1vZGVzLmNiYy5wcm90b3R5cGUuZW5jcnlwdCA9IGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQsIGZpbmlzaCkgewogIC8vIG5vdCBlbm91Z2ggaW5wdXQgdG8gZW5jcnlwdAogIGlmKGlucHV0Lmxlbmd0aCgpIDwgdGhpcy5ibG9ja1NpemUgJiYgIShmaW5pc2ggJiYgaW5wdXQubGVuZ3RoKCkgPiAwKSkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvLyBnZXQgbmV4dCBibG9jawogIC8vIENCQyBYT1IncyBJViAob3IgcHJldmlvdXMgYmxvY2spIHdpdGggcGxhaW50ZXh0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgdGhpcy5faW5CbG9ja1tpXSA9IHRoaXMuX3ByZXZbaV0gXiBpbnB1dC5nZXRJbnQzMigpOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jawogIHRoaXMuY2lwaGVyLmVuY3J5cHQodGhpcy5faW5CbG9jaywgdGhpcy5fb3V0QmxvY2spOwoKICAvLyB3cml0ZSBvdXRwdXQsIHNhdmUgcHJldmlvdXMgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICBvdXRwdXQucHV0SW50MzIodGhpcy5fb3V0QmxvY2tbaV0pOwogIH0KICB0aGlzLl9wcmV2ID0gdGhpcy5fb3V0QmxvY2s7Cn07Cgptb2Rlcy5jYmMucHJvdG90eXBlLmRlY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGRlY3J5cHQKICBpZihpbnB1dC5sZW5ndGgoKSA8IHRoaXMuYmxvY2tTaXplICYmICEoZmluaXNoICYmIGlucHV0Lmxlbmd0aCgpID4gMCkpIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZ2V0IG5leHQgYmxvY2sKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9pbkJsb2NrW2ldID0gaW5wdXQuZ2V0SW50MzIoKTsKICB9CgogIC8vIGRlY3J5cHQgYmxvY2sKICB0aGlzLmNpcGhlci5kZWNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gd3JpdGUgb3V0cHV0LCBzYXZlIHByZXZpb3VzIGNpcGhlcmVkIGJsb2NrCiAgLy8gQ0JDIFhPUidzIElWIChvciBwcmV2aW91cyBibG9jaykgd2l0aCBjaXBoZXJ0ZXh0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX3ByZXZbaV0gXiB0aGlzLl9vdXRCbG9ja1tpXSk7CiAgfQogIHRoaXMuX3ByZXYgPSB0aGlzLl9pbkJsb2NrLnNsaWNlKDApOwp9OwoKbW9kZXMuY2JjLnByb3RvdHlwZS5wYWQgPSBmdW5jdGlvbihpbnB1dCwgb3B0aW9ucykgewogIC8vIGFkZCBQS0NTIzcgcGFkZGluZyB0byBibG9jayAoZWFjaCBwYWQgYnl0ZSBpcyB0aGUKICAvLyB2YWx1ZSBvZiB0aGUgbnVtYmVyIG9mIHBhZCBieXRlcykKICB2YXIgcGFkZGluZyA9IChpbnB1dC5sZW5ndGgoKSA9PT0gdGhpcy5ibG9ja1NpemUgPwogICAgdGhpcy5ibG9ja1NpemUgOiAodGhpcy5ibG9ja1NpemUgLSBpbnB1dC5sZW5ndGgoKSkpOwogIGlucHV0LmZpbGxXaXRoQnl0ZShwYWRkaW5nLCBwYWRkaW5nKTsKICByZXR1cm4gdHJ1ZTsKfTsKCm1vZGVzLmNiYy5wcm90b3R5cGUudW5wYWQgPSBmdW5jdGlvbihvdXRwdXQsIG9wdGlvbnMpIHsKICAvLyBjaGVjayBmb3IgZXJyb3I6IGlucHV0IGRhdGEgbm90IGEgbXVsdGlwbGUgb2YgYmxvY2tTaXplCiAgaWYob3B0aW9ucy5vdmVyZmxvdyA+IDApIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIC8vIGVuc3VyZSBwYWRkaW5nIGJ5dGUgY291bnQgaXMgdmFsaWQKICB2YXIgbGVuID0gb3V0cHV0Lmxlbmd0aCgpOwogIHZhciBjb3VudCA9IG91dHB1dC5hdChsZW4gLSAxKTsKICBpZihjb3VudCA+ICh0aGlzLmJsb2NrU2l6ZSA8PCAyKSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgLy8gdHJpbSBvZmYgcGFkZGluZyBieXRlcwogIG91dHB1dC50cnVuY2F0ZShjb3VudCk7CiAgcmV0dXJuIHRydWU7Cn07CgoKLyoqIENpcGhlciBmZWVkYmFjayAoQ0ZCKSAqKi8KCm1vZGVzLmNmYiA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICB0aGlzLm5hbWUgPSAnQ0ZCJzsKICB0aGlzLmNpcGhlciA9IG9wdGlvbnMuY2lwaGVyOwogIHRoaXMuYmxvY2tTaXplID0gb3B0aW9ucy5ibG9ja1NpemUgfHwgMTY7CiAgdGhpcy5faW50cyA9IHRoaXMuYmxvY2tTaXplIC8gNDsKICB0aGlzLl9pbkJsb2NrID0gbnVsbDsKICB0aGlzLl9vdXRCbG9jayA9IG5ldyBBcnJheSh0aGlzLl9pbnRzKTsKICB0aGlzLl9wYXJ0aWFsQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fcGFydGlhbE91dHB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCm1vZGVzLmNmYi5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyB1c2UgSVYgYXMgZmlyc3QgaW5wdXQKICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9pdi5zbGljZSgwKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMuY2ZiLnByb3RvdHlwZS5lbmNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBlbmNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXRMZW5ndGggPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jawogIHRoaXMuY2lwaGVyLmVuY3J5cHQodGhpcy5faW5CbG9jaywgdGhpcy5fb3V0QmxvY2spOwoKICAvLyBoYW5kbGUgZnVsbCBibG9jawogIGlmKHRoaXMuX3BhcnRpYWxCeXRlcyA9PT0gMCAmJiBpbnB1dExlbmd0aCA+PSB0aGlzLmJsb2NrU2l6ZSkgewogICAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0LCB3cml0ZSBpbnB1dCBhcyBvdXRwdXQKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgdGhpcy5faW5CbG9ja1tpXSA9IGlucHV0LmdldEludDMyKCkgXiB0aGlzLl9vdXRCbG9ja1tpXTsKICAgICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX2luQmxvY2tbaV0pOwogICAgfQogICAgcmV0dXJuOwogIH0KCiAgLy8gaGFuZGxlIHBhcnRpYWwgYmxvY2sKICB2YXIgcGFydGlhbEJ5dGVzID0gKHRoaXMuYmxvY2tTaXplIC0gaW5wdXRMZW5ndGgpICUgdGhpcy5ibG9ja1NpemU7CiAgaWYocGFydGlhbEJ5dGVzID4gMCkgewogICAgcGFydGlhbEJ5dGVzID0gdGhpcy5ibG9ja1NpemUgLSBwYXJ0aWFsQnl0ZXM7CiAgfQoKICAvLyBYT1IgaW5wdXQgd2l0aCBvdXRwdXQsIHdyaXRlIGlucHV0IGFzIHBhcnRpYWwgb3V0cHV0CiAgdGhpcy5fcGFydGlhbE91dHB1dC5jbGVhcigpOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgIHRoaXMuX3BhcnRpYWxCbG9ja1tpXSA9IGlucHV0LmdldEludDMyKCkgXiB0aGlzLl9vdXRCbG9ja1tpXTsKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQucHV0SW50MzIodGhpcy5fcGFydGlhbEJsb2NrW2ldKTsKICB9CgogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIC8vIGJsb2NrIHN0aWxsIGluY29tcGxldGUsIHJlc3RvcmUgaW5wdXQgYnVmZmVyCiAgICBpbnB1dC5yZWFkIC09IHRoaXMuYmxvY2tTaXplOwogIH0gZWxzZSB7CiAgICAvLyBibG9jayBjb21wbGV0ZSwgdXBkYXRlIGlucHV0IGJsb2NrCiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSB0aGlzLl9wYXJ0aWFsQmxvY2tbaV07CiAgICB9CiAgfQoKICAvLyBza2lwIGFueSBwcmV2aW91cyBwYXJ0aWFsIGJ5dGVzCiAgaWYodGhpcy5fcGFydGlhbEJ5dGVzID4gMCkgewogICAgdGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcyh0aGlzLl9wYXJ0aWFsQnl0ZXMpOwogIH0KCiAgaWYocGFydGlhbEJ5dGVzID4gMCAmJiAhZmluaXNoKSB7CiAgICBvdXRwdXQucHV0Qnl0ZXModGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcygKICAgICAgcGFydGlhbEJ5dGVzIC0gdGhpcy5fcGFydGlhbEJ5dGVzKSk7CiAgICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSBwYXJ0aWFsQnl0ZXM7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgaW5wdXRMZW5ndGggLSB0aGlzLl9wYXJ0aWFsQnl0ZXMpKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMuY2ZiLnByb3RvdHlwZS5kZWNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBkZWNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXRMZW5ndGggPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jayAoQ0ZCIGFsd2F5cyB1c2VzIGVuY3J5cHRpb24gbW9kZSkKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gaGFuZGxlIGZ1bGwgYmxvY2sKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPT09IDAgJiYgaW5wdXRMZW5ndGggPj0gdGhpcy5ibG9ja1NpemUpIHsKICAgIC8vIFhPUiBpbnB1dCB3aXRoIG91dHB1dCwgd3JpdGUgaW5wdXQgYXMgb3V0cHV0CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSBpbnB1dC5nZXRJbnQzMigpOwogICAgICBvdXRwdXQucHV0SW50MzIodGhpcy5faW5CbG9ja1tpXSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICAgIH0KICAgIHJldHVybjsKICB9CgogIC8vIGhhbmRsZSBwYXJ0aWFsIGJsb2NrCiAgdmFyIHBhcnRpYWxCeXRlcyA9ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0TGVuZ3RoKSAlIHRoaXMuYmxvY2tTaXplOwogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIHBhcnRpYWxCeXRlcyA9IHRoaXMuYmxvY2tTaXplIC0gcGFydGlhbEJ5dGVzOwogIH0KCiAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0LCB3cml0ZSBpbnB1dCBhcyBwYXJ0aWFsIG91dHB1dAogIHRoaXMuX3BhcnRpYWxPdXRwdXQuY2xlYXIoKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICB0aGlzLl9wYXJ0aWFsQmxvY2tbaV0gPSBpbnB1dC5nZXRJbnQzMigpOwogICAgdGhpcy5fcGFydGlhbE91dHB1dC5wdXRJbnQzMih0aGlzLl9wYXJ0aWFsQmxvY2tbaV0gXiB0aGlzLl9vdXRCbG9ja1tpXSk7CiAgfQoKICBpZihwYXJ0aWFsQnl0ZXMgPiAwKSB7CiAgICAvLyBibG9jayBzdGlsbCBpbmNvbXBsZXRlLCByZXN0b3JlIGlucHV0IGJ1ZmZlcgogICAgaW5wdXQucmVhZCAtPSB0aGlzLmJsb2NrU2l6ZTsKICB9IGVsc2UgewogICAgLy8gYmxvY2sgY29tcGxldGUsIHVwZGF0ZSBpbnB1dCBibG9jawogICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgICB0aGlzLl9pbkJsb2NrW2ldID0gdGhpcy5fcGFydGlhbEJsb2NrW2ldOwogICAgfQogIH0KCiAgLy8gc2tpcCBhbnkgcHJldmlvdXMgcGFydGlhbCBieXRlcwogIGlmKHRoaXMuX3BhcnRpYWxCeXRlcyA+IDApIHsKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQuZ2V0Qnl0ZXModGhpcy5fcGFydGlhbEJ5dGVzKTsKICB9CgogIGlmKHBhcnRpYWxCeXRlcyA+IDAgJiYgIWZpbmlzaCkgewogICAgb3V0cHV0LnB1dEJ5dGVzKHRoaXMuX3BhcnRpYWxPdXRwdXQuZ2V0Qnl0ZXMoCiAgICAgIHBhcnRpYWxCeXRlcyAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgdGhpcy5fcGFydGlhbEJ5dGVzID0gcGFydGlhbEJ5dGVzOwogICAgcmV0dXJuIHRydWU7CiAgfQoKICBvdXRwdXQucHV0Qnl0ZXModGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcygKICAgIGlucHV0TGVuZ3RoIC0gdGhpcy5fcGFydGlhbEJ5dGVzKSk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCi8qKiBPdXRwdXQgZmVlZGJhY2sgKE9GQikgKiovCgptb2Rlcy5vZmIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdGhpcy5uYW1lID0gJ09GQic7CiAgdGhpcy5jaXBoZXIgPSBvcHRpb25zLmNpcGhlcjsKICB0aGlzLmJsb2NrU2l6ZSA9IG9wdGlvbnMuYmxvY2tTaXplIHx8IDE2OwogIHRoaXMuX2ludHMgPSB0aGlzLmJsb2NrU2l6ZSAvIDQ7CiAgdGhpcy5faW5CbG9jayA9IG51bGw7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fcGFydGlhbE91dHB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCm1vZGVzLm9mYi5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyB1c2UgSVYgYXMgZmlyc3QgaW5wdXQKICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9pdi5zbGljZSgwKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMub2ZiLnByb3RvdHlwZS5lbmNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBlbmNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXQubGVuZ3RoKCkgPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jayAoT0ZCIGFsd2F5cyB1c2VzIGVuY3J5cHRpb24gbW9kZSkKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gaGFuZGxlIGZ1bGwgYmxvY2sKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPT09IDAgJiYgaW5wdXRMZW5ndGggPj0gdGhpcy5ibG9ja1NpemUpIHsKICAgIC8vIFhPUiBpbnB1dCB3aXRoIG91dHB1dCBhbmQgdXBkYXRlIG5leHQgaW5wdXQKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgb3V0cHV0LnB1dEludDMyKGlucHV0LmdldEludDMyKCkgXiB0aGlzLl9vdXRCbG9ja1tpXSk7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSB0aGlzLl9vdXRCbG9ja1tpXTsKICAgIH0KICAgIHJldHVybjsKICB9CgogIC8vIGhhbmRsZSBwYXJ0aWFsIGJsb2NrCiAgdmFyIHBhcnRpYWxCeXRlcyA9ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0TGVuZ3RoKSAlIHRoaXMuYmxvY2tTaXplOwogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIHBhcnRpYWxCeXRlcyA9IHRoaXMuYmxvY2tTaXplIC0gcGFydGlhbEJ5dGVzOwogIH0KCiAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0CiAgdGhpcy5fcGFydGlhbE91dHB1dC5jbGVhcigpOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQucHV0SW50MzIoaW5wdXQuZ2V0SW50MzIoKSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICB9CgogIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgIC8vIGJsb2NrIHN0aWxsIGluY29tcGxldGUsIHJlc3RvcmUgaW5wdXQgYnVmZmVyCiAgICBpbnB1dC5yZWFkIC09IHRoaXMuYmxvY2tTaXplOwogIH0gZWxzZSB7CiAgICAvLyBibG9jayBjb21wbGV0ZSwgdXBkYXRlIGlucHV0IGJsb2NrCiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX2luQmxvY2tbaV0gPSB0aGlzLl9vdXRCbG9ja1tpXTsKICAgIH0KICB9CgogIC8vIHNraXAgYW55IHByZXZpb3VzIHBhcnRpYWwgYnl0ZXMKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPiAwKSB7CiAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKHRoaXMuX3BhcnRpYWxCeXRlcyk7CiAgfQoKICBpZihwYXJ0aWFsQnl0ZXMgPiAwICYmICFmaW5pc2gpIHsKICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICBwYXJ0aWFsQnl0ZXMgLSB0aGlzLl9wYXJ0aWFsQnl0ZXMpKTsKICAgIHRoaXMuX3BhcnRpYWxCeXRlcyA9IHBhcnRpYWxCeXRlczsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgb3V0cHV0LnB1dEJ5dGVzKHRoaXMuX3BhcnRpYWxPdXRwdXQuZ2V0Qnl0ZXMoCiAgICBpbnB1dExlbmd0aCAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogIHRoaXMuX3BhcnRpYWxCeXRlcyA9IDA7Cn07Cgptb2Rlcy5vZmIucHJvdG90eXBlLmRlY3J5cHQgPSBtb2Rlcy5vZmIucHJvdG90eXBlLmVuY3J5cHQ7CgoKLyoqIENvdW50ZXIgKENUUikgKiovCgptb2Rlcy5jdHIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdGhpcy5uYW1lID0gJ0NUUic7CiAgdGhpcy5jaXBoZXIgPSBvcHRpb25zLmNpcGhlcjsKICB0aGlzLmJsb2NrU2l6ZSA9IG9wdGlvbnMuYmxvY2tTaXplIHx8IDE2OwogIHRoaXMuX2ludHMgPSB0aGlzLmJsb2NrU2l6ZSAvIDQ7CiAgdGhpcy5faW5CbG9jayA9IG51bGw7CiAgdGhpcy5fb3V0QmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5fcGFydGlhbE91dHB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKfTsKCm1vZGVzLmN0ci5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyB1c2UgSVYgYXMgZmlyc3QgaW5wdXQKICB0aGlzLl9pdiA9IHRyYW5zZm9ybUlWKG9wdGlvbnMuaXYpOwogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9pdi5zbGljZSgwKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwp9OwoKbW9kZXMuY3RyLnByb3RvdHlwZS5lbmNyeXB0ID0gZnVuY3Rpb24oaW5wdXQsIG91dHB1dCwgZmluaXNoKSB7CiAgLy8gbm90IGVub3VnaCBpbnB1dCB0byBlbmNyeXB0CiAgdmFyIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoKCk7CiAgaWYoaW5wdXRMZW5ndGggPT09IDApIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLy8gZW5jcnlwdCBibG9jayAoQ1RSIGFsd2F5cyB1c2VzIGVuY3J5cHRpb24gbW9kZSkKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2luQmxvY2ssIHRoaXMuX291dEJsb2NrKTsKCiAgLy8gaGFuZGxlIGZ1bGwgYmxvY2sKICBpZih0aGlzLl9wYXJ0aWFsQnl0ZXMgPT09IDAgJiYgaW5wdXRMZW5ndGggPj0gdGhpcy5ibG9ja1NpemUpIHsKICAgIC8vIFhPUiBpbnB1dCB3aXRoIG91dHB1dAogICAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgICBvdXRwdXQucHV0SW50MzIoaW5wdXQuZ2V0SW50MzIoKSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICAgIH0KICB9IGVsc2UgewogICAgLy8gaGFuZGxlIHBhcnRpYWwgYmxvY2sKICAgIHZhciBwYXJ0aWFsQnl0ZXMgPSAodGhpcy5ibG9ja1NpemUgLSBpbnB1dExlbmd0aCkgJSB0aGlzLmJsb2NrU2l6ZTsKICAgIGlmKHBhcnRpYWxCeXRlcyA+IDApIHsKICAgICAgcGFydGlhbEJ5dGVzID0gdGhpcy5ibG9ja1NpemUgLSBwYXJ0aWFsQnl0ZXM7CiAgICB9CgogICAgLy8gWE9SIGlucHV0IHdpdGggb3V0cHV0CiAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LmNsZWFyKCk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQucHV0SW50MzIoaW5wdXQuZ2V0SW50MzIoKSBeIHRoaXMuX291dEJsb2NrW2ldKTsKICAgIH0KCiAgICBpZihwYXJ0aWFsQnl0ZXMgPiAwKSB7CiAgICAgIC8vIGJsb2NrIHN0aWxsIGluY29tcGxldGUsIHJlc3RvcmUgaW5wdXQgYnVmZmVyCiAgICAgIGlucHV0LnJlYWQgLT0gdGhpcy5ibG9ja1NpemU7CiAgICB9CgogICAgLy8gc2tpcCBhbnkgcHJldmlvdXMgcGFydGlhbCBieXRlcwogICAgaWYodGhpcy5fcGFydGlhbEJ5dGVzID4gMCkgewogICAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKHRoaXMuX3BhcnRpYWxCeXRlcyk7CiAgICB9CgogICAgaWYocGFydGlhbEJ5dGVzID4gMCAmJiAhZmluaXNoKSB7CiAgICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICAgIHBhcnRpYWxCeXRlcyAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSBwYXJ0aWFsQnl0ZXM7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICBpbnB1dExlbmd0aCAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKICB9CgogIC8vIGJsb2NrIGNvbXBsZXRlLCBpbmNyZW1lbnQgY291bnRlciAoaW5wdXQgYmxvY2spCiAgaW5jMzIodGhpcy5faW5CbG9jayk7Cn07Cgptb2Rlcy5jdHIucHJvdG90eXBlLmRlY3J5cHQgPSBtb2Rlcy5jdHIucHJvdG90eXBlLmVuY3J5cHQ7CgoKLyoqIEdhbG9pcy9Db3VudGVyIE1vZGUgKEdDTSkgKiovCgptb2Rlcy5nY20gPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdGhpcy5uYW1lID0gJ0dDTSc7CiAgdGhpcy5jaXBoZXIgPSBvcHRpb25zLmNpcGhlcjsKICB0aGlzLmJsb2NrU2l6ZSA9IG9wdGlvbnMuYmxvY2tTaXplIHx8IDE2OwogIHRoaXMuX2ludHMgPSB0aGlzLmJsb2NrU2l6ZSAvIDQ7CiAgdGhpcy5faW5CbG9jayA9IG5ldyBBcnJheSh0aGlzLl9pbnRzKTsKICB0aGlzLl9vdXRCbG9jayA9IG5ldyBBcnJheSh0aGlzLl9pbnRzKTsKICB0aGlzLl9wYXJ0aWFsT3V0cHV0ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwoKICAvLyBSIGlzIGFjdHVhbGx5IHRoaXMgdmFsdWUgY29uY2F0ZW5hdGVkIHdpdGggMTIwIG1vcmUgemVybyBiaXRzLCBidXQKICAvLyB3ZSBvbmx5IFhPUiBhZ2FpbnN0IFIgc28gdGhlIG90aGVyIHplcm9zIGhhdmUgbm8gZWZmZWN0IC0tIHdlIGp1c3QKICAvLyBhcHBseSB0aGlzIHZhbHVlIHRvIHRoZSBmaXJzdCBpbnRlZ2VyIGluIGEgYmxvY2sKICB0aGlzLl9SID0gMHhFMTAwMDAwMDsKfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYoISgnaXYnIGluIG9wdGlvbnMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSVYgcGFyYW1ldGVyLicpOwogIH0KICAvLyBlbnN1cmUgSVYgaXMgYSBieXRlIGJ1ZmZlcgogIHZhciBpdiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKG9wdGlvbnMuaXYpOwoKICAvLyBubyBjaXBoZXJlZCBkYXRhIHByb2Nlc3NlZCB5ZXQKICB0aGlzLl9jaXBoZXJMZW5ndGggPSAwOwoKICAvLyBkZWZhdWx0IGFkZGl0aW9uYWwgZGF0YSBpcyBub25lCiAgdmFyIGFkZGl0aW9uYWxEYXRhOwogIGlmKCdhZGRpdGlvbmFsRGF0YScgaW4gb3B0aW9ucykgewogICAgYWRkaXRpb25hbERhdGEgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihvcHRpb25zLmFkZGl0aW9uYWxEYXRhKTsKICB9IGVsc2UgewogICAgYWRkaXRpb25hbERhdGEgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIH0KCiAgLy8gZGVmYXVsdCB0YWcgbGVuZ3RoIGlzIDEyOCBiaXRzCiAgaWYoJ3RhZ0xlbmd0aCcgaW4gb3B0aW9ucykgewogICAgdGhpcy5fdGFnTGVuZ3RoID0gb3B0aW9ucy50YWdMZW5ndGg7CiAgfSBlbHNlIHsKICAgIHRoaXMuX3RhZ0xlbmd0aCA9IDEyODsKICB9CgogIC8vIGlmIHRhZyBpcyBnaXZlbiwgZW5zdXJlIHRhZyBtYXRjaGVzIHRhZyBsZW5ndGgKICB0aGlzLl90YWcgPSBudWxsOwogIGlmKG9wdGlvbnMuZGVjcnlwdCkgewogICAgLy8gc2F2ZSB0YWcgdG8gY2hlY2sgbGF0ZXIKICAgIHRoaXMuX3RhZyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKG9wdGlvbnMudGFnKS5nZXRCeXRlcygpOwogICAgaWYodGhpcy5fdGFnLmxlbmd0aCAhPT0gKHRoaXMuX3RhZ0xlbmd0aCAvIDgpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignQXV0aGVudGljYXRpb24gdGFnIGRvZXMgbm90IG1hdGNoIHRhZyBsZW5ndGguJyk7CiAgICB9CiAgfQoKICAvLyBjcmVhdGUgdG1wIHN0b3JhZ2UgZm9yIGhhc2ggY2FsY3VsYXRpb24KICB0aGlzLl9oYXNoQmxvY2sgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CgogIC8vIG5vIHRhZyBnZW5lcmF0ZWQgeWV0CiAgdGhpcy50YWcgPSBudWxsOwoKICAvLyBnZW5lcmF0ZSBoYXNoIHN1YmtleQogIC8vIChhcHBseSBibG9jayBjaXBoZXIgdG8gInplcm8iIGJsb2NrKQogIHRoaXMuX2hhc2hTdWJrZXkgPSBuZXcgQXJyYXkodGhpcy5faW50cyk7CiAgdGhpcy5jaXBoZXIuZW5jcnlwdChbMCwgMCwgMCwgMF0sIHRoaXMuX2hhc2hTdWJrZXkpOwoKICAvLyBnZW5lcmF0ZSB0YWJsZSBNCiAgLy8gdXNlIDQtYml0IHRhYmxlcyAoMzIgY29tcG9uZW50IGRlY29tcG9zaXRpb24gb2YgYSAxNiBieXRlIHZhbHVlKQogIC8vIDgtYml0IHRhYmxlcyB0YWtlIG1vcmUgc3BhY2UgYW5kIGFyZSBrbm93biB0byBoYXZlIHNlY3VyaXR5CiAgLy8gdnVsbmVyYWJpbGl0aWVzIChpbiBuYXRpdmUgaW1wbGVtZW50YXRpb25zKQogIHRoaXMuY29tcG9uZW50Qml0cyA9IDQ7CiAgdGhpcy5fbSA9IHRoaXMuZ2VuZXJhdGVIYXNoVGFibGUodGhpcy5faGFzaFN1YmtleSwgdGhpcy5jb21wb25lbnRCaXRzKTsKCiAgLy8gTm90ZTogc3VwcG9ydCBJViBsZW5ndGggZGlmZmVyZW50IGZyb20gOTYgYml0cz8gKG9ubHkgc3VwcG9ydGluZwogIC8vIDk2IGJpdHMgaXMgcmVjb21tZW5kZWQgYnkgTklTVCBTUC04MDAtMzhEKQogIC8vIGdlbmVyYXRlIEpfMAogIHZhciBpdkxlbmd0aCA9IGl2Lmxlbmd0aCgpOwogIGlmKGl2TGVuZ3RoID09PSAxMikgewogICAgLy8gOTYtYml0IElWCiAgICB0aGlzLl9qMCA9IFtpdi5nZXRJbnQzMigpLCBpdi5nZXRJbnQzMigpLCBpdi5nZXRJbnQzMigpLCAxXTsKICB9IGVsc2UgewogICAgLy8gSVYgaXMgTk9UIDk2LWJpdHMKICAgIHRoaXMuX2owID0gWzAsIDAsIDAsIDBdOwogICAgd2hpbGUoaXYubGVuZ3RoKCkgPiAwKSB7CiAgICAgIHRoaXMuX2owID0gdGhpcy5naGFzaCgKICAgICAgICB0aGlzLl9oYXNoU3Via2V5LCB0aGlzLl9qMCwKICAgICAgICBbaXYuZ2V0SW50MzIoKSwgaXYuZ2V0SW50MzIoKSwgaXYuZ2V0SW50MzIoKSwgaXYuZ2V0SW50MzIoKV0pOwogICAgfQogICAgdGhpcy5fajAgPSB0aGlzLmdoYXNoKAogICAgICB0aGlzLl9oYXNoU3Via2V5LCB0aGlzLl9qMCwgWzAsIDBdLmNvbmNhdChmcm9tNjRUbzMyKGl2TGVuZ3RoICogOCkpKTsKICB9CgogIC8vIGdlbmVyYXRlIElDQiAoaW5pdGlhbCBjb3VudGVyIGJsb2NrKQogIHRoaXMuX2luQmxvY2sgPSB0aGlzLl9qMC5zbGljZSgwKTsKICBpbmMzMih0aGlzLl9pbkJsb2NrKTsKICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSAwOwoKICAvLyBjb25zdW1lIGF1dGhlbnRpY2F0aW9uIGRhdGEKICBhZGRpdGlvbmFsRGF0YSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGFkZGl0aW9uYWxEYXRhKTsKICAvLyBzYXZlIGFkZGl0aW9uYWwgZGF0YSBsZW5ndGggYXMgYSBCRSA2NC1iaXQgbnVtYmVyCiAgdGhpcy5fYURhdGFMZW5ndGggPSBmcm9tNjRUbzMyKGFkZGl0aW9uYWxEYXRhLmxlbmd0aCgpICogOCk7CiAgLy8gcGFkIGFkZGl0aW9uYWwgZGF0YSB0byAxMjggYml0ICgxNiBieXRlKSBibG9jayBzaXplCiAgdmFyIG92ZXJmbG93ID0gYWRkaXRpb25hbERhdGEubGVuZ3RoKCkgJSB0aGlzLmJsb2NrU2l6ZTsKICBpZihvdmVyZmxvdykgewogICAgYWRkaXRpb25hbERhdGEuZmlsbFdpdGhCeXRlKDAsIHRoaXMuYmxvY2tTaXplIC0gb3ZlcmZsb3cpOwogIH0KICB0aGlzLl9zID0gWzAsIDAsIDAsIDBdOwogIHdoaWxlKGFkZGl0aW9uYWxEYXRhLmxlbmd0aCgpID4gMCkgewogICAgdGhpcy5fcyA9IHRoaXMuZ2hhc2godGhpcy5faGFzaFN1YmtleSwgdGhpcy5fcywgWwogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpLAogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpLAogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpLAogICAgICBhZGRpdGlvbmFsRGF0YS5nZXRJbnQzMigpCiAgICBdKTsKICB9Cn07Cgptb2Rlcy5nY20ucHJvdG90eXBlLmVuY3J5cHQgPSBmdW5jdGlvbihpbnB1dCwgb3V0cHV0LCBmaW5pc2gpIHsKICAvLyBub3QgZW5vdWdoIGlucHV0IHRvIGVuY3J5cHQKICB2YXIgaW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGgoKTsKICBpZihpbnB1dExlbmd0aCA9PT0gMCkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvLyBlbmNyeXB0IGJsb2NrCiAgdGhpcy5jaXBoZXIuZW5jcnlwdCh0aGlzLl9pbkJsb2NrLCB0aGlzLl9vdXRCbG9jayk7CgogIC8vIGhhbmRsZSBmdWxsIGJsb2NrCiAgaWYodGhpcy5fcGFydGlhbEJ5dGVzID09PSAwICYmIGlucHV0TGVuZ3RoID49IHRoaXMuYmxvY2tTaXplKSB7CiAgICAvLyBYT1IgaW5wdXQgd2l0aCBvdXRwdXQKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldIF49IGlucHV0LmdldEludDMyKCkpOwogICAgfQogICAgdGhpcy5fY2lwaGVyTGVuZ3RoICs9IHRoaXMuYmxvY2tTaXplOwogIH0gZWxzZSB7CiAgICAvLyBoYW5kbGUgcGFydGlhbCBibG9jawogICAgdmFyIHBhcnRpYWxCeXRlcyA9ICh0aGlzLmJsb2NrU2l6ZSAtIGlucHV0TGVuZ3RoKSAlIHRoaXMuYmxvY2tTaXplOwogICAgaWYocGFydGlhbEJ5dGVzID4gMCkgewogICAgICBwYXJ0aWFsQnl0ZXMgPSB0aGlzLmJsb2NrU2l6ZSAtIHBhcnRpYWxCeXRlczsKICAgIH0KCiAgICAvLyBYT1IgaW5wdXQgd2l0aCBvdXRwdXQKICAgIHRoaXMuX3BhcnRpYWxPdXRwdXQuY2xlYXIoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgICAgdGhpcy5fcGFydGlhbE91dHB1dC5wdXRJbnQzMihpbnB1dC5nZXRJbnQzMigpIF4gdGhpcy5fb3V0QmxvY2tbaV0pOwogICAgfQoKICAgIGlmKHBhcnRpYWxCeXRlcyA9PT0gMCB8fCBmaW5pc2gpIHsKICAgICAgLy8gaGFuZGxlIG92ZXJmbG93IHByaW9yIHRvIGhhc2hpbmcKICAgICAgaWYoZmluaXNoKSB7CiAgICAgICAgLy8gZ2V0IGJsb2NrIG92ZXJmbG93CiAgICAgICAgdmFyIG92ZXJmbG93ID0gaW5wdXRMZW5ndGggJSB0aGlzLmJsb2NrU2l6ZTsKICAgICAgICB0aGlzLl9jaXBoZXJMZW5ndGggKz0gb3ZlcmZsb3c7CiAgICAgICAgLy8gdHJ1bmNhdGUgZm9yIGhhc2ggZnVuY3Rpb24KICAgICAgICB0aGlzLl9wYXJ0aWFsT3V0cHV0LnRydW5jYXRlKHRoaXMuYmxvY2tTaXplIC0gb3ZlcmZsb3cpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuX2NpcGhlckxlbmd0aCArPSB0aGlzLmJsb2NrU2l6ZTsKICAgICAgfQoKICAgICAgLy8gZ2V0IG91dHB1dCBibG9jayBmb3IgaGFzaGluZwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5faW50czsgKytpKSB7CiAgICAgICAgdGhpcy5fb3V0QmxvY2tbaV0gPSB0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEludDMyKCk7CiAgICAgIH0KICAgICAgdGhpcy5fcGFydGlhbE91dHB1dC5yZWFkIC09IHRoaXMuYmxvY2tTaXplOwogICAgfQoKICAgIC8vIHNraXAgYW55IHByZXZpb3VzIHBhcnRpYWwgYnl0ZXMKICAgIGlmKHRoaXMuX3BhcnRpYWxCeXRlcyA+IDApIHsKICAgICAgdGhpcy5fcGFydGlhbE91dHB1dC5nZXRCeXRlcyh0aGlzLl9wYXJ0aWFsQnl0ZXMpOwogICAgfQoKICAgIGlmKHBhcnRpYWxCeXRlcyA+IDAgJiYgIWZpbmlzaCkgewogICAgICAvLyBibG9jayBzdGlsbCBpbmNvbXBsZXRlLCByZXN0b3JlIGlucHV0IGJ1ZmZlciwgZ2V0IHBhcnRpYWwgb3V0cHV0LAogICAgICAvLyBhbmQgcmV0dXJuIGVhcmx5CiAgICAgIGlucHV0LnJlYWQgLT0gdGhpcy5ibG9ja1NpemU7CiAgICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICAgIHBhcnRpYWxCeXRlcyAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgICB0aGlzLl9wYXJ0aWFsQnl0ZXMgPSBwYXJ0aWFsQnl0ZXM7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIG91dHB1dC5wdXRCeXRlcyh0aGlzLl9wYXJ0aWFsT3V0cHV0LmdldEJ5dGVzKAogICAgICBpbnB1dExlbmd0aCAtIHRoaXMuX3BhcnRpYWxCeXRlcykpOwogICAgdGhpcy5fcGFydGlhbEJ5dGVzID0gMDsKICB9CgogIC8vIHVwZGF0ZSBoYXNoIGJsb2NrIFMKICB0aGlzLl9zID0gdGhpcy5naGFzaCh0aGlzLl9oYXNoU3Via2V5LCB0aGlzLl9zLCB0aGlzLl9vdXRCbG9jayk7CgogIC8vIGluY3JlbWVudCBjb3VudGVyIChpbnB1dCBibG9jaykKICBpbmMzMih0aGlzLl9pbkJsb2NrKTsKfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUuZGVjcnlwdCA9IGZ1bmN0aW9uKGlucHV0LCBvdXRwdXQsIGZpbmlzaCkgewogIC8vIG5vdCBlbm91Z2ggaW5wdXQgdG8gZGVjcnlwdAogIHZhciBpbnB1dExlbmd0aCA9IGlucHV0Lmxlbmd0aCgpOwogIGlmKGlucHV0TGVuZ3RoIDwgdGhpcy5ibG9ja1NpemUgJiYgIShmaW5pc2ggJiYgaW5wdXRMZW5ndGggPiAwKSkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvLyBlbmNyeXB0IGJsb2NrIChHQ00gYWx3YXlzIHVzZXMgZW5jcnlwdGlvbiBtb2RlKQogIHRoaXMuY2lwaGVyLmVuY3J5cHQodGhpcy5faW5CbG9jaywgdGhpcy5fb3V0QmxvY2spOwoKICAvLyBpbmNyZW1lbnQgY291bnRlciAoaW5wdXQgYmxvY2spCiAgaW5jMzIodGhpcy5faW5CbG9jayk7CgogIC8vIHVwZGF0ZSBoYXNoIGJsb2NrIFMKICB0aGlzLl9oYXNoQmxvY2tbMF0gPSBpbnB1dC5nZXRJbnQzMigpOwogIHRoaXMuX2hhc2hCbG9ja1sxXSA9IGlucHV0LmdldEludDMyKCk7CiAgdGhpcy5faGFzaEJsb2NrWzJdID0gaW5wdXQuZ2V0SW50MzIoKTsKICB0aGlzLl9oYXNoQmxvY2tbM10gPSBpbnB1dC5nZXRJbnQzMigpOwogIHRoaXMuX3MgPSB0aGlzLmdoYXNoKHRoaXMuX2hhc2hTdWJrZXksIHRoaXMuX3MsIHRoaXMuX2hhc2hCbG9jayk7CgogIC8vIFhPUiBoYXNoIGlucHV0IHdpdGggb3V0cHV0CiAgZm9yKHZhciBpID0gMDsgaSA8IHRoaXMuX2ludHM7ICsraSkgewogICAgb3V0cHV0LnB1dEludDMyKHRoaXMuX291dEJsb2NrW2ldIF4gdGhpcy5faGFzaEJsb2NrW2ldKTsKICB9CgogIC8vIGluY3JlbWVudCBjaXBoZXIgZGF0YSBsZW5ndGgKICBpZihpbnB1dExlbmd0aCA8IHRoaXMuYmxvY2tTaXplKSB7CiAgICB0aGlzLl9jaXBoZXJMZW5ndGggKz0gaW5wdXRMZW5ndGggJSB0aGlzLmJsb2NrU2l6ZTsKICB9IGVsc2UgewogICAgdGhpcy5fY2lwaGVyTGVuZ3RoICs9IHRoaXMuYmxvY2tTaXplOwogIH0KfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUuYWZ0ZXJGaW5pc2ggPSBmdW5jdGlvbihvdXRwdXQsIG9wdGlvbnMpIHsKICB2YXIgcnZhbCA9IHRydWU7CgogIC8vIGhhbmRsZSBvdmVyZmxvdwogIGlmKG9wdGlvbnMuZGVjcnlwdCAmJiBvcHRpb25zLm92ZXJmbG93KSB7CiAgICBvdXRwdXQudHJ1bmNhdGUodGhpcy5ibG9ja1NpemUgLSBvcHRpb25zLm92ZXJmbG93KTsKICB9CgogIC8vIGhhbmRsZSBhdXRoZW50aWNhdGlvbiB0YWcKICB0aGlzLnRhZyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGNvbmNhdGVuYXRlIGFkZGl0aW9uYWwgZGF0YSBsZW5ndGggd2l0aCBjaXBoZXIgbGVuZ3RoCiAgdmFyIGxlbmd0aHMgPSB0aGlzLl9hRGF0YUxlbmd0aC5jb25jYXQoZnJvbTY0VG8zMih0aGlzLl9jaXBoZXJMZW5ndGggKiA4KSk7CgogIC8vIGluY2x1ZGUgbGVuZ3RocyBpbiBoYXNoCiAgdGhpcy5fcyA9IHRoaXMuZ2hhc2godGhpcy5faGFzaFN1YmtleSwgdGhpcy5fcywgbGVuZ3Rocyk7CgogIC8vIGRvIEdDVFIoSl8wLCBTKQogIHZhciB0YWcgPSBbXTsKICB0aGlzLmNpcGhlci5lbmNyeXB0KHRoaXMuX2owLCB0YWcpOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLl9pbnRzOyArK2kpIHsKICAgIHRoaXMudGFnLnB1dEludDMyKHRoaXMuX3NbaV0gXiB0YWdbaV0pOwogIH0KCiAgLy8gdHJpbSB0YWcgdG8gbGVuZ3RoCiAgdGhpcy50YWcudHJ1bmNhdGUodGhpcy50YWcubGVuZ3RoKCkgJSAodGhpcy5fdGFnTGVuZ3RoIC8gOCkpOwoKICAvLyBjaGVjayBhdXRoZW50aWNhdGlvbiB0YWcKICBpZihvcHRpb25zLmRlY3J5cHQgJiYgdGhpcy50YWcuYnl0ZXMoKSAhPT0gdGhpcy5fdGFnKSB7CiAgICBydmFsID0gZmFsc2U7CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTZWUgTklTVCBTUC04MDAtMzhEIDYuMyAoQWxnb3JpdGhtIDEpLiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIEdhbG9pcwogKiBmaWVsZCBtdWx0aXBsaWNhdGlvbi4gVGhlIGZpZWxkLCBHRigyXjEyOCksIGlzIGRlZmluZWQgYnkgdGhlIHBvbHlub21pYWw6CiAqCiAqIHheMTI4ICsgeF43ICsgeF4yICsgeCArIDEKICoKICogV2hpY2ggaXMgcmVwcmVzZW50ZWQgaW4gbGl0dGxlLWVuZGlhbiBiaW5hcnkgZm9ybSBhczogMTExMDAwMDEgKDB4ZTEpLiBXaGVuCiAqIHRoZSB2YWx1ZSBvZiBhIGNvZWZmaWNpZW50IGlzIDEsIGEgYml0IGlzIHNldC4gVGhlIHZhbHVlIFIsIGlzIHRoZQogKiBjb25jYXRlbmF0aW9uIG9mIHRoaXMgdmFsdWUgYW5kIDEyMCB6ZXJvIGJpdHMsIHlpZWxkaW5nIGEgMTI4LWJpdCB2YWx1ZQogKiB3aGljaCBtYXRjaGVzIHRoZSBibG9jayBzaXplLgogKgogKiBUaGlzIGZ1bmN0aW9uIHdpbGwgbXVsdGlwbHkgdHdvIGVsZW1lbnRzICh2ZWN0b3JzIG9mIGJ5dGVzKSwgWCBhbmQgWSwgaW4KICogdGhlIGZpZWxkIEdGKDJeMTI4KS4gVGhlIHJlc3VsdCBpcyBpbml0aWFsaXplZCB0byB6ZXJvLiBGb3IgZWFjaCBiaXQgb2YKICogWCAob3V0IG9mIDEyOCksIHhfaSwgaWYgeF9pIGlzIHNldCwgdGhlbiB0aGUgcmVzdWx0IGlzIG11bHRpcGxpZWQgKFhPUidkKQogKiBieSB0aGUgY3VycmVudCB2YWx1ZSBvZiBZLiBGb3IgZWFjaCBiaXQsIHRoZSB2YWx1ZSBvZiBZIHdpbGwgYmUgcmFpc2VkIGJ5CiAqIGEgcG93ZXIgb2YgeCAobXVsdGlwbGllZCBieSB0aGUgcG9seW5vbWlhbCB4KS4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkKICogc2hpZnRpbmcgWSBvbmNlIHRvIHRoZSByaWdodC4gSWYgdGhlIGN1cnJlbnQgdmFsdWUgb2YgWSwgcHJpb3IgdG8gYmVpbmcKICogbXVsdGlwbGllZCBieSB4LCBoYXMgMCBhcyBpdHMgTFNCLCB0aGVuIGl0IGlzIGEgMTI3dGggZGVncmVlIHBvbHlub21pYWwuCiAqIE90aGVyd2lzZSwgd2UgbXVzdCBkaXZpZGUgYnkgUiBhZnRlciBzaGlmdGluZyB0byBmaW5kIHRoZSByZW1haW5kZXIuCiAqCiAqIEBwYXJhbSB4IHRoZSBmaXJzdCBibG9jayB0byBtdWx0aXBseSBieSB0aGUgc2Vjb25kLgogKiBAcGFyYW0geSB0aGUgc2Vjb25kIGJsb2NrIHRvIG11bHRpcGx5IGJ5IHRoZSBmaXJzdC4KICoKICogQHJldHVybiB0aGUgYmxvY2sgcmVzdWx0IG9mIHRoZSBtdWx0aXBsaWNhdGlvbi4KICovCm1vZGVzLmdjbS5wcm90b3R5cGUubXVsdGlwbHkgPSBmdW5jdGlvbih4LCB5KSB7CiAgdmFyIHpfaSA9IFswLCAwLCAwLCAwXTsKICB2YXIgdl9pID0geS5zbGljZSgwKTsKCiAgLy8gY2FsY3VsYXRlIFpfMTI4IChibG9jayBoYXMgMTI4IGJpdHMpCiAgZm9yKHZhciBpID0gMDsgaSA8IDEyODsgKytpKSB7CiAgICAvLyBpZiB4X2kgaXMgMCwgWl97aSsxfSA9IFpfaSAodW5jaGFuZ2VkKQogICAgLy8gZWxzZSBaX3tpKzF9ID0gWl9pIF4gVl9pCiAgICAvLyBnZXQgeF9pIGJ5IGZpbmRpbmcgMzItYml0IGludCBwb3NpdGlvbiwgdGhlbiBsZWZ0IHNoaWZ0IDEgYnkgcmVtYWluZGVyCiAgICB2YXIgeF9pID0geFsoaSAvIDMyKSB8IDBdICYgKDEgPDwgKDMxIC0gaSAlIDMyKSk7CiAgICBpZih4X2kpIHsKICAgICAgel9pWzBdIF49IHZfaVswXTsKICAgICAgel9pWzFdIF49IHZfaVsxXTsKICAgICAgel9pWzJdIF49IHZfaVsyXTsKICAgICAgel9pWzNdIF49IHZfaVszXTsKICAgIH0KCiAgICAvLyBpZiBMU0IoVl9pKSBpcyAxLCBWX2kgPSBWX2kgPj4gMQogICAgLy8gZWxzZSBWX2kgPSAoVl9pID4+IDEpIF4gUgogICAgdGhpcy5wb3codl9pLCB2X2kpOwogIH0KCiAgcmV0dXJuIHpfaTsKfTsKCm1vZGVzLmdjbS5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24oeCwgb3V0KSB7CiAgLy8gaWYgTFNCKHgpIGlzIDEsIHggPSB4ID4+PiAxCiAgLy8gZWxzZSB4ID0gKHggPj4+IDEpIF4gUgogIHZhciBsc2IgPSB4WzNdICYgMTsKCiAgLy8gYWx3YXlzIGRvIHggPj4+IDE6CiAgLy8gc3RhcnRpbmcgd2l0aCB0aGUgcmlnaHRtb3N0IGludGVnZXIsIHNoaWZ0IGVhY2ggaW50ZWdlciB0byB0aGUgcmlnaHQKICAvLyBvbmUgYml0LCBwdWxsaW5nIGluIHRoZSBiaXQgZnJvbSB0aGUgaW50ZWdlciB0byB0aGUgbGVmdCBhcyBpdHMgdG9wCiAgLy8gbW9zdCBiaXQgKGRvIHRoaXMgZm9yIHRoZSBsYXN0IDMgaW50ZWdlcnMpCiAgZm9yKHZhciBpID0gMzsgaSA+IDA7IC0taSkgewogICAgb3V0W2ldID0gKHhbaV0gPj4+IDEpIHwgKCh4W2kgLSAxXSAmIDEpIDw8IDMxKTsKICB9CiAgLy8gc2hpZnQgdGhlIGZpcnN0IGludGVnZXIgbm9ybWFsbHkKICBvdXRbMF0gPSB4WzBdID4+PiAxOwoKICAvLyBpZiBsc2Igd2FzIG5vdCBzZXQsIHRoZW4gcG9seW5vbWlhbCBoYWQgYSBkZWdyZWUgb2YgMTI3IGFuZCBkb2Vzbid0CiAgLy8gbmVlZCB0byBkaXZpZGVkOyBvdGhlcndpc2UsIFhPUiB3aXRoIFIgdG8gZmluZCB0aGUgcmVtYWluZGVyOyB3ZSBvbmx5CiAgLy8gbmVlZCB0byBYT1IgdGhlIGZpcnN0IGludGVnZXIgc2luY2UgUiB0ZWNobmljYWxseSBlbmRzIHcvMTIwIHplcm8gYml0cwogIGlmKGxzYikgewogICAgb3V0WzBdIF49IHRoaXMuX1I7CiAgfQp9OwoKbW9kZXMuZ2NtLnByb3RvdHlwZS50YWJsZU11bHRpcGx5ID0gZnVuY3Rpb24oeCkgewogIC8vIGFzc3VtZXMgNC1iaXQgdGFibGVzIGFyZSB1c2VkCiAgdmFyIHogPSBbMCwgMCwgMCwgMF07CiAgZm9yKHZhciBpID0gMDsgaSA8IDMyOyArK2kpIHsKICAgIHZhciBpZHggPSAoaSAvIDgpIHwgMDsKICAgIHZhciB4X2kgPSAoeFtpZHhdID4+PiAoKDcgLSAoaSAlIDgpKSAqIDQpKSAmIDB4RjsKICAgIHZhciBhaCA9IHRoaXMuX21baV1beF9pXTsKICAgIHpbMF0gXj0gYWhbMF07CiAgICB6WzFdIF49IGFoWzFdOwogICAgelsyXSBePSBhaFsyXTsKICAgIHpbM10gXj0gYWhbM107CiAgfQogIHJldHVybiB6Owp9OwoKLyoqCiAqIEEgY29udGludWluZyB2ZXJzaW9uIG9mIHRoZSBHSEFTSCBhbGdvcml0aG0gdGhhdCBvcGVyYXRlcyBvbiBhIHNpbmdsZQogKiBibG9jay4gVGhlIGhhc2ggYmxvY2ssIGxhc3QgaGFzaCB2YWx1ZSAoWW0pIGFuZCB0aGUgbmV3IGJsb2NrIHRvIGhhc2gKICogYXJlIGdpdmVuLgogKgogKiBAcGFyYW0gaCB0aGUgaGFzaCBibG9jay4KICogQHBhcmFtIHkgdGhlIHByZXZpb3VzIHZhbHVlIGZvciBZbSwgdXNlIFswLCAwLCAwLCAwXSBmb3IgYSBuZXcgaGFzaC4KICogQHBhcmFtIHggdGhlIGJsb2NrIHRvIGhhc2guCiAqCiAqIEByZXR1cm4gdGhlIGhhc2hlZCB2YWx1ZSAoWW0pLgogKi8KbW9kZXMuZ2NtLnByb3RvdHlwZS5naGFzaCA9IGZ1bmN0aW9uKGgsIHksIHgpIHsKICB5WzBdIF49IHhbMF07CiAgeVsxXSBePSB4WzFdOwogIHlbMl0gXj0geFsyXTsKICB5WzNdIF49IHhbM107CiAgcmV0dXJuIHRoaXMudGFibGVNdWx0aXBseSh5KTsKICAvL3JldHVybiB0aGlzLm11bHRpcGx5KHksIGgpOwp9OwoKLyoqCiAqIFByZWNvbXB1dGVzIGEgdGFibGUgZm9yIG11bHRpcGx5aW5nIGFnYWluc3QgdGhlIGhhc2ggc3Via2V5LiBUaGlzCiAqIG1lY2hhbmlzbSBwcm92aWRlcyBhIHN1YnN0YW50aWFsIHNwZWVkIGluY3JlYXNlIG92ZXIgbXVsdGlwbGljYXRpb24KICogcGVyZm9ybWVkIHdpdGhvdXQgYSB0YWJsZS4gVGhlIHRhYmxlLWJhc2VkIG11bHRpcGxpY2F0aW9uIHRoaXMgdGFibGUgaXMKICogZm9yIHNvbHZlcyBYICogSCBieSBtdWx0aXBseWluZyBlYWNoIGNvbXBvbmVudCBvZiBYIGJ5IEggYW5kIHRoZW4KICogY29tcG9zaW5nIHRoZSByZXN1bHRzIHRvZ2V0aGVyIHVzaW5nIFhPUi4KICoKICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSB0YWJsZXMgd2l0aCBkaWZmZXJlbnQgYml0IHNpemVzCiAqIGZvciB0aGUgY29tcG9uZW50cywgaG93ZXZlciwgdGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoZXJlIGFyZQogKiAzMiBjb21wb25lbnRzIG9mIFggKHdoaWNoIGlzIGEgMTYgYnl0ZSB2ZWN0b3IpLCB0aGVyZWZvcmUgZWFjaCBjb21wb25lbnQKICogdGFrZXMgNC1iaXRzIChzbyB0aGUgdGFibGUgaXMgY29uc3RydWN0ZWQgd2l0aCBiaXRzPTQpLgogKgogKiBAcGFyYW0gaCB0aGUgaGFzaCBzdWJrZXkuCiAqIEBwYXJhbSBiaXRzIHRoZSBiaXQgc2l6ZSBmb3IgYSBjb21wb25lbnQuCiAqLwptb2Rlcy5nY20ucHJvdG90eXBlLmdlbmVyYXRlSGFzaFRhYmxlID0gZnVuY3Rpb24oaCwgYml0cykgewogIC8vIFRPRE86IFRoZXJlIGFyZSBmdXJ0aGVyIG9wdGltaXphdGlvbnMgdGhhdCB3b3VsZCB1c2Ugb25seSB0aGUKICAvLyBmaXJzdCB0YWJsZSBNXzAgKG9yIHNvbWUgdmFyaWFudCkgYWxvbmcgd2l0aCBhIHJlbWFpbmRlciB0YWJsZTsKICAvLyB0aGlzIGNhbiBiZSBleHBsb3JlZCBpbiB0aGUgZnV0dXJlCiAgdmFyIG11bHRpcGxpZXIgPSA4IC8gYml0czsKICB2YXIgcGVySW50ID0gNCAqIG11bHRpcGxpZXI7CiAgdmFyIHNpemUgPSAxNiAqIG11bHRpcGxpZXI7CiAgdmFyIG0gPSBuZXcgQXJyYXkoc2l6ZSk7CiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgdmFyIHRtcCA9IFswLCAwLCAwLCAwXTsKICAgIHZhciBpZHggPSAoaSAvIHBlckludCkgfCAwOwogICAgdmFyIHNoZnQgPSAoKHBlckludCAtIDEgLSAoaSAlIHBlckludCkpICogYml0cyk7CiAgICB0bXBbaWR4XSA9ICgxIDw8IChiaXRzIC0gMSkpIDw8IHNoZnQ7CiAgICBtW2ldID0gdGhpcy5nZW5lcmF0ZVN1Ykhhc2hUYWJsZSh0aGlzLm11bHRpcGx5KHRtcCwgaCksIGJpdHMpOwogIH0KICByZXR1cm4gbTsKfTsKCi8qKgogKiBHZW5lcmF0ZXMgYSB0YWJsZSBmb3IgbXVsdGlwbHlpbmcgYWdhaW5zdCB0aGUgaGFzaCBzdWJrZXkgZm9yIG9uZQogKiBwYXJ0aWN1bGFyIGNvbXBvbmVudCAob3V0IG9mIGFsbCBwb3NzaWJsZSBjb21wb25lbnQgdmFsdWVzKS4KICoKICogQHBhcmFtIG1pZCB0aGUgcHJlLW11bHRpcGxpZWQgdmFsdWUgZm9yIHRoZSBtaWRkbGUga2V5IG9mIHRoZSB0YWJsZS4KICogQHBhcmFtIGJpdHMgdGhlIGJpdCBzaXplIGZvciBhIGNvbXBvbmVudC4KICovCm1vZGVzLmdjbS5wcm90b3R5cGUuZ2VuZXJhdGVTdWJIYXNoVGFibGUgPSBmdW5jdGlvbihtaWQsIGJpdHMpIHsKICAvLyBjb21wdXRlIHRoZSB0YWJsZSBxdWlja2x5IGJ5IG1pbmltaXppbmcgdGhlIG51bWJlciBvZgogIC8vIFBPVyBvcGVyYXRpb25zIC0tIHRoZXkgb25seSBuZWVkIHRvIGJlIHBlcmZvcm1lZCBmb3IgcG93ZXJzIG9mIDIsCiAgLy8gYWxsIG90aGVyIGVudHJpZXMgY2FuIGJlIGNvbXBvc2VkIGZyb20gdGhvc2UgcG93ZXJzIHVzaW5nIFhPUgogIHZhciBzaXplID0gMSA8PCBiaXRzOwogIHZhciBoYWxmID0gc2l6ZSA+Pj4gMTsKICB2YXIgbSA9IG5ldyBBcnJheShzaXplKTsKICBtW2hhbGZdID0gbWlkLnNsaWNlKDApOwogIHZhciBpID0gaGFsZiA+Pj4gMTsKICB3aGlsZShpID4gMCkgewogICAgLy8gcmFpc2UgbTBbMiAqIGldIGFuZCBzdG9yZSBpbiBtMFtpXQogICAgdGhpcy5wb3cobVsyICogaV0sIG1baV0gPSBbXSk7CiAgICBpID4+PSAxOwogIH0KICBpID0gMjsKICB3aGlsZShpIDwgaGFsZikgewogICAgZm9yKHZhciBqID0gMTsgaiA8IGk7ICsraikgewogICAgICB2YXIgbV9pID0gbVtpXTsKICAgICAgdmFyIG1faiA9IG1bal07CiAgICAgIG1baSArIGpdID0gWwogICAgICAgIG1faVswXSBeIG1falswXSwKICAgICAgICBtX2lbMV0gXiBtX2pbMV0sCiAgICAgICAgbV9pWzJdIF4gbV9qWzJdLAogICAgICAgIG1faVszXSBeIG1falszXQogICAgICBdOwogICAgfQogICAgaSAqPSAyOwogIH0KICBtWzBdID0gWzAsIDAsIDAsIDBdOwogIC8qIE5vdGU6IFdlIGNvdWxkIGF2b2lkIHN0b3JpbmcgdGhlc2UgYnkgZG9pbmcgY29tcG9zaXRpb24gZHVyaW5nIG11bHRpcGx5CiAgY2FsY3VsYXRlIHRvcCBoYWxmIHVzaW5nIGNvbXBvc2l0aW9uIGJ5IHNwZWVkIGlzIHByZWZlcnJlZC4gKi8KICBmb3IoaSA9IGhhbGYgKyAxOyBpIDwgc2l6ZTsgKytpKSB7CiAgICB2YXIgYyA9IG1baSBeIGhhbGZdOwogICAgbVtpXSA9IFttaWRbMF0gXiBjWzBdLCBtaWRbMV0gXiBjWzFdLCBtaWRbMl0gXiBjWzJdLCBtaWRbM10gXiBjWzNdXTsKICB9CiAgcmV0dXJuIG07Cn07CgoKLyoqIFV0aWxpdHkgZnVuY3Rpb25zICovCgpmdW5jdGlvbiB0cmFuc2Zvcm1JVihpdikgewogIGlmKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIHsKICAgIC8vIGNvbnZlcnQgaXYgc3RyaW5nIGludG8gYnl0ZSBidWZmZXIKICAgIGl2ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoaXYpOwogIH0KCiAgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGl2KSAmJiBpdi5sZW5ndGggPiA0KSB7CiAgICAvLyBjb252ZXJ0IGl2IGJ5dGUgYXJyYXkgaW50byBieXRlIGJ1ZmZlcgogICAgdmFyIHRtcCA9IGl2OwogICAgaXYgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcC5sZW5ndGg7ICsraSkgewogICAgICBpdi5wdXRCeXRlKHRtcFtpXSk7CiAgICB9CiAgfQogIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkoaXYpKSB7CiAgICAvLyBjb252ZXJ0IGl2IGJ5dGUgYnVmZmVyIGludG8gMzItYml0IGludGVnZXIgYXJyYXkKICAgIGl2ID0gW2l2LmdldEludDMyKCksIGl2LmdldEludDMyKCksIGl2LmdldEludDMyKCksIGl2LmdldEludDMyKCldOwogIH0KCiAgcmV0dXJuIGl2Owp9CgpmdW5jdGlvbiBpbmMzMihibG9jaykgewogIC8vIGluY3JlbWVudCBsYXN0IDMyIGJpdHMgb2YgYmxvY2sgb25seQogIGJsb2NrW2Jsb2NrLmxlbmd0aCAtIDFdID0gKGJsb2NrW2Jsb2NrLmxlbmd0aCAtIDFdICsgMSkgJiAweEZGRkZGRkZGOwp9CgpmdW5jdGlvbiBmcm9tNjRUbzMyKG51bSkgewogIC8vIGNvbnZlcnQgNjQtYml0IG51bWJlciB0byB0d28gQkUgSW50MzJzCiAgcmV0dXJuIFsobnVtIC8gMHgxMDAwMDAwMDApIHwgMCwgbnVtICYgMHhGRkZGRkZGRl07Cn0KCgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdjaXBoZXJNb2Rlcyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9jaXBoZXJNb2RlcycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQWR2YW5jZWQgRW5jcnlwdGlvbiBTdGFuZGFyZCAoQUVTKSBpbXBsZW1lbnRhdGlvbi4KICoKICogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiB0aGUgcHVibGljIGRvbWFpbiBsaWJyYXJ5ICdqc2NyeXB0bycgd2hpY2gKICogd2FzIHdyaXR0ZW4gYnk6CiAqCiAqIEVtaWx5IFN0YXJrIChlc3RhcmtAc3RhbmZvcmQuZWR1KQogKiBNaWtlIEhhbWJ1cmcgKG1oYW1idXJnQHN0YW5mb3JkLmVkdSkKICogRGFuIEJvbmVoIChkYWJvQGNzLnN0YW5mb3JkLmVkdSkKICoKICogUGFydHMgb2YgdGhpcyBjb2RlIGFyZSBiYXNlZCBvbiB0aGUgT3BlblNTTCBpbXBsZW1lbnRhdGlvbiBvZiBBRVM6CiAqIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcKICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovKiBBRVMgQVBJICovCmZvcmdlLmFlcyA9IGZvcmdlLmFlcyB8fCB7fTsKCi8qKgogKiBEZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2U6CiAqCiAqIHZhciBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKCdBRVMtPG1vZGU+Jywga2V5KTsKICogY2lwaGVyLnN0YXJ0KHtpdjogaXZ9KTsKICoKICogQ3JlYXRlcyBhbiBBRVMgY2lwaGVyIG9iamVjdCB0byBlbmNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqIFRoZSBvdXRwdXQgd2lsbCBiZSBzdG9yZWQgaW4gdGhlICdvdXRwdXQnIG1lbWJlciBvZiB0aGUgcmV0dXJuZWQgY2lwaGVyLgogKgogKiBUaGUga2V5IGFuZCBpdiBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLAogKiBhIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UuCiAqIEBwYXJhbSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5zdGFydEVuY3J5cHRpbmcgPSBmdW5jdGlvbihrZXksIGl2LCBvdXRwdXQsIG1vZGUpIHsKICB2YXIgY2lwaGVyID0gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogb3V0cHV0LAogICAgZGVjcnlwdDogZmFsc2UsCiAgICBtb2RlOiBtb2RlCiAgfSk7CiAgY2lwaGVyLnN0YXJ0KGl2KTsKICByZXR1cm4gY2lwaGVyOwp9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGNpcGhlciA9IGZvcmdlLmNpcGhlci5jcmVhdGVDaXBoZXIoJ0FFUy08bW9kZT4nLCBrZXkpOwogKgogKiBDcmVhdGVzIGFuIEFFUyBjaXBoZXIgb2JqZWN0IHRvIGVuY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICoKICogVGhlIGtleSBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLCBhCiAqIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBtb2RlKSB7CiAgcmV0dXJuIF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG51bGwsCiAgICBkZWNyeXB0OiBmYWxzZSwKICAgIG1vZGU6IG1vZGUKICB9KTsKfTsKCi8qKgogKiBEZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2U6CiAqCiAqIHZhciBkZWNpcGhlciA9IGZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlcignQUVTLTxtb2RlPicsIGtleSk7CiAqIGRlY2lwaGVyLnN0YXJ0KHtpdjogaXZ9KTsKICoKICogQ3JlYXRlcyBhbiBBRVMgY2lwaGVyIG9iamVjdCB0byBkZWNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqIFRoZSBvdXRwdXQgd2lsbCBiZSBzdG9yZWQgaW4gdGhlICdvdXRwdXQnIG1lbWJlciBvZiB0aGUgcmV0dXJuZWQgY2lwaGVyLgogKgogKiBUaGUga2V5IGFuZCBpdiBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLAogKiBhIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UuCiAqIEBwYXJhbSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5zdGFydERlY3J5cHRpbmcgPSBmdW5jdGlvbihrZXksIGl2LCBvdXRwdXQsIG1vZGUpIHsKICB2YXIgY2lwaGVyID0gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogb3V0cHV0LAogICAgZGVjcnlwdDogdHJ1ZSwKICAgIG1vZGU6IG1vZGUKICB9KTsKICBjaXBoZXIuc3RhcnQoaXYpOwogIHJldHVybiBjaXBoZXI7Cn07CgovKioKICogRGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlOgogKgogKiB2YXIgZGVjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlRGVjaXBoZXIoJ0FFUy08bW9kZT4nLCBrZXkpOwogKgogKiBDcmVhdGVzIGFuIEFFUyBjaXBoZXIgb2JqZWN0IHRvIGRlY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICoKICogVGhlIGtleSBtYXkgYmUgZ2l2ZW4gYXMgYSBzdHJpbmcgb2YgYnl0ZXMsIGFuIGFycmF5IG9mIGJ5dGVzLCBhCiAqIGJ5dGUgYnVmZmVyLCBvciBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gbW9kZSB0aGUgY2lwaGVyIG1vZGUgdG8gdXNlIChkZWZhdWx0OiAnQ0JDJykuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBtb2RlKSB7CiAgcmV0dXJuIF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG51bGwsCiAgICBkZWNyeXB0OiB0cnVlLAogICAgbW9kZTogbW9kZQogIH0pOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgQUVTIGNpcGhlciBhbGdvcml0aG0gb2JqZWN0LgogKgogKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgYWxnb3JpdGhtLgogKiBAcGFyYW0gbW9kZSB0aGUgbW9kZSBmYWN0b3J5IGZ1bmN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBBRVMgYWxnb3JpdGhtIG9iamVjdC4KICovCmZvcmdlLmFlcy5BbGdvcml0aG0gPSBmdW5jdGlvbihuYW1lLCBtb2RlKSB7CiAgaWYoIWluaXQpIHsKICAgIGluaXRpYWxpemUoKTsKICB9CiAgdmFyIHNlbGYgPSB0aGlzOwogIHNlbGYubmFtZSA9IG5hbWU7CiAgc2VsZi5tb2RlID0gbmV3IG1vZGUoewogICAgYmxvY2tTaXplOiAxNiwKICAgIGNpcGhlcjogewogICAgICBlbmNyeXB0OiBmdW5jdGlvbihpbkJsb2NrLCBvdXRCbG9jaykgewogICAgICAgIHJldHVybiBfdXBkYXRlQmxvY2soc2VsZi5fdywgaW5CbG9jaywgb3V0QmxvY2ssIGZhbHNlKTsKICAgICAgfSwKICAgICAgZGVjcnlwdDogZnVuY3Rpb24oaW5CbG9jaywgb3V0QmxvY2spIHsKICAgICAgICByZXR1cm4gX3VwZGF0ZUJsb2NrKHNlbGYuX3csIGluQmxvY2ssIG91dEJsb2NrLCB0cnVlKTsKICAgICAgfQogICAgfQogIH0pOwogIHNlbGYuX2luaXQgPSBmYWxzZTsKfTsKCi8qKgogKiBJbml0aWFsaXplcyB0aGlzIEFFUyBhbGdvcml0aG0gYnkgZXhwYW5kaW5nIGl0cyBrZXkuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZS4KICogICAgICAgICAga2V5IHRoZSBrZXkgdG8gdXNlIHdpdGggdGhpcyBhbGdvcml0aG0uCiAqICAgICAgICAgIGRlY3J5cHQgdHJ1ZSBpZiB0aGUgYWxnb3JpdGhtIHNob3VsZCBiZSBpbml0aWFsaXplZCBmb3IgZGVjcnlwdGlvbiwKICogICAgICAgICAgICBmYWxzZSBmb3IgZW5jcnlwdGlvbi4KICovCmZvcmdlLmFlcy5BbGdvcml0aG0ucHJvdG90eXBlLmluaXRpYWxpemUgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgaWYodGhpcy5faW5pdCkgewogICAgcmV0dXJuOwogIH0KCiAgdmFyIGtleSA9IG9wdGlvbnMua2V5OwogIHZhciB0bXA7CgogIC8qIE5vdGU6IFRoZSBrZXkgbWF5IGJlIGEgc3RyaW5nIG9mIGJ5dGVzLCBhbiBhcnJheSBvZiBieXRlcywgYSBieXRlCiAgICBidWZmZXIsIG9yIGFuIGFycmF5IG9mIDMyLWJpdCBpbnRlZ2Vycy4gSWYgdGhlIGtleSBpcyBpbiBieXRlcywgdGhlbgogICAgaXQgbXVzdCBiZSAxNiwgMjQsIG9yIDMyIGJ5dGVzIGluIGxlbmd0aC4gSWYgaXQgaXMgaW4gMzItYml0CiAgICBpbnRlZ2VycywgaXQgbXVzdCBiZSA0LCA2LCBvciA4IGludGVnZXJzIGxvbmcuICovCgogIGlmKHR5cGVvZiBrZXkgPT09ICdzdHJpbmcnICYmCiAgICAoa2V5Lmxlbmd0aCA9PT0gMTYgfHwga2V5Lmxlbmd0aCA9PT0gMjQgfHwga2V5Lmxlbmd0aCA9PT0gMzIpKSB7CiAgICAvLyBjb252ZXJ0IGtleSBzdHJpbmcgaW50byBieXRlIGJ1ZmZlcgogICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoa2V5KTsKICB9IGVsc2UgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGtleSkgJiYKICAgIChrZXkubGVuZ3RoID09PSAxNiB8fCBrZXkubGVuZ3RoID09PSAyNCB8fCBrZXkubGVuZ3RoID09PSAzMikpIHsKICAgIC8vIGNvbnZlcnQga2V5IGludGVnZXIgYXJyYXkgaW50byBieXRlIGJ1ZmZlcgogICAgdG1wID0ga2V5OwogICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyArK2kpIHsKICAgICAga2V5LnB1dEJ5dGUodG1wW2ldKTsKICAgIH0KICB9CgogIC8vIGNvbnZlcnQga2V5IGJ5dGUgYnVmZmVyIGludG8gMzItYml0IGludGVnZXIgYXJyYXkKICBpZighZm9yZ2UudXRpbC5pc0FycmF5KGtleSkpIHsKICAgIHRtcCA9IGtleTsKICAgIGtleSA9IFtdOwoKICAgIC8vIGtleSBsZW5ndGhzIG9mIDE2LCAyNCwgMzIgYnl0ZXMgYWxsb3dlZAogICAgdmFyIGxlbiA9IHRtcC5sZW5ndGgoKTsKICAgIGlmKGxlbiA9PT0gMTYgfHwgbGVuID09PSAyNCB8fCBsZW4gPT09IDMyKSB7CiAgICAgIGxlbiA9IGxlbiA+Pj4gMjsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7CiAgICAgICAga2V5LnB1c2godG1wLmdldEludDMyKCkpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBrZXkgbXVzdCBiZSBhbiBhcnJheSBvZiAzMi1iaXQgaW50ZWdlcnMgYnkgbm93CiAgaWYoIWZvcmdlLnV0aWwuaXNBcnJheShrZXkpIHx8CiAgICAhKGtleS5sZW5ndGggPT09IDQgfHwga2V5Lmxlbmd0aCA9PT0gNiB8fCBrZXkubGVuZ3RoID09PSA4KSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGtleSBwYXJhbWV0ZXIuJyk7CiAgfQoKICAvLyBlbmNyeXB0aW9uIG9wZXJhdGlvbiBpcyBhbHdheXMgdXNlZCBmb3IgdGhlc2UgbW9kZXMKICB2YXIgbW9kZSA9IHRoaXMubW9kZS5uYW1lOwogIHZhciBlbmNyeXB0T3AgPSAoWydDRkInLCAnT0ZCJywgJ0NUUicsICdHQ00nXS5pbmRleE9mKG1vZGUpICE9PSAtMSk7CgogIC8vIGRvIGtleSBleHBhbnNpb24KICB0aGlzLl93ID0gX2V4cGFuZEtleShrZXksIG9wdGlvbnMuZGVjcnlwdCAmJiAhZW5jcnlwdE9wKTsKICB0aGlzLl9pbml0ID0gdHJ1ZTsKfTsKCi8qKgogKiBFeHBhbmRzIGEga2V5LiBUeXBpY2FsbHkgb25seSB1c2VkIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0ga2V5IHRoZSBzeW1tZXRyaWMga2V5IHRvIGV4cGFuZCwgYXMgYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIHRvIGV4cGFuZCBmb3IgZGVjcnlwdGlvbiwgZmFsc2UgZm9yIGVuY3J5cHRpb24uCiAqCiAqIEByZXR1cm4gdGhlIGV4cGFuZGVkIGtleS4KICovCmZvcmdlLmFlcy5fZXhwYW5kS2V5ID0gZnVuY3Rpb24oa2V5LCBkZWNyeXB0KSB7CiAgaWYoIWluaXQpIHsKICAgIGluaXRpYWxpemUoKTsKICB9CiAgcmV0dXJuIF9leHBhbmRLZXkoa2V5LCBkZWNyeXB0KTsKfTsKCi8qKgogKiBVcGRhdGVzIGEgc2luZ2xlIGJsb2NrLiBUeXBpY2FsbHkgb25seSB1c2VkIGZvciB0ZXN0aW5nLgogKgogKiBAcGFyYW0gdyB0aGUgZXhwYW5kZWQga2V5IHRvIHVzZS4KICogQHBhcmFtIGlucHV0IGFuIGFycmF5IG9mIGJsb2NrLXNpemUgMzItYml0IHdvcmRzLgogKiBAcGFyYW0gb3V0cHV0IGFuIGFycmF5IG9mIGJsb2NrLXNpemUgMzItYml0IHdvcmRzLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIHRvIGRlY3J5cHQsIGZhbHNlIHRvIGVuY3J5cHQuCiAqLwpmb3JnZS5hZXMuX3VwZGF0ZUJsb2NrID0gX3VwZGF0ZUJsb2NrOwoKCi8qKiBSZWdpc3RlciBBRVMgYWxnb3JpdGhtcyAqKi8KCnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtRUNCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmVjYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtQ0JDJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmNiYyk7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtQ0ZCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmNmYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtT0ZCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLm9mYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtQ1RSJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmN0cik7CnJlZ2lzdGVyQWxnb3JpdGhtKCdBRVMtR0NNJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmdjbSk7CgpmdW5jdGlvbiByZWdpc3RlckFsZ29yaXRobShuYW1lLCBtb2RlKSB7CiAgdmFyIGZhY3RvcnkgPSBmdW5jdGlvbigpIHsKICAgIHJldHVybiBuZXcgZm9yZ2UuYWVzLkFsZ29yaXRobShuYW1lLCBtb2RlKTsKICB9OwogIGZvcmdlLmNpcGhlci5yZWdpc3RlckFsZ29yaXRobShuYW1lLCBmYWN0b3J5KTsKfQoKCi8qKiBBRVMgaW1wbGVtZW50YXRpb24gKiovCgp2YXIgaW5pdCA9IGZhbHNlOyAvLyBub3QgeWV0IGluaXRpYWxpemVkCnZhciBOYiA9IDQ7ICAgICAgIC8vIG51bWJlciBvZiB3b3JkcyBjb21wcmlzaW5nIHRoZSBzdGF0ZSAoQUVTID0gNCkKdmFyIHNib3g7ICAgICAgICAgLy8gbm9uLWxpbmVhciBzdWJzdGl0dXRpb24gdGFibGUgdXNlZCBpbiBrZXkgZXhwYW5zaW9uCnZhciBpc2JveDsgICAgICAgIC8vIGludmVyc2lvbiBvZiBzYm94CnZhciByY29uOyAgICAgICAgIC8vIHJvdW5kIGNvbnN0YW50IHdvcmQgYXJyYXkKdmFyIG1peDsgICAgICAgICAgLy8gbWl4LWNvbHVtbnMgdGFibGUKdmFyIGltaXg7ICAgICAgICAgLy8gaW52ZXJzZSBtaXgtY29sdW1ucyB0YWJsZQoKLyoqCiAqIFBlcmZvcm1zIGluaXRpYWxpemF0aW9uLCBpZTogcHJlY29tcHV0ZXMgdGFibGVzIHRvIG9wdGltaXplIGZvciBzcGVlZC4KICoKICogT25lIHdheSB0byB1bmRlcnN0YW5kIGhvdyBBRVMgd29ya3MgaXMgdG8gaW1hZ2luZSB0aGF0ICdhZGRpdGlvbicgYW5kCiAqICdtdWx0aXBsaWNhdGlvbicgYXJlIGludGVyZmFjZXMgdGhhdCByZXF1aXJlIGNlcnRhaW4gbWF0aGVtYXRpY2FsCiAqIHByb3BlcnRpZXMgdG8gaG9sZCB0cnVlIChpZTogdGhleSBhcmUgYXNzb2NpYXRpdmUpIGJ1dCB0aGV5IG1pZ2h0IGhhdmUKICogZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhbmQgcHJvZHVjZSBkaWZmZXJlbnQga2luZHMgb2YgcmVzdWx0cyAuLi4KICogcHJvdmlkZWQgdGhhdCB0aGVpciBtYXRoZW1hdGljYWwgcHJvcGVydGllcyByZW1haW4gdHJ1ZS4gQUVTIGRlZmluZXMKICogaXRzIG93biBtZXRob2RzIG9mIGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiBidXQga2VlcHMgc29tZSBpbXBvcnRhbnQKICogcHJvcGVydGllcyB0aGUgc2FtZSwgaWU6IGFzc29jaWF0aXZpdHkgYW5kIGRpc3RyaWJ1dGl2aXR5LiBUaGUKICogZXhwbGFuYXRpb24gYmVsb3cgdHJpZXMgdG8gc2hlZCBzb21lIGxpZ2h0IG9uIGhvdyBBRVMgZGVmaW5lcyBhZGRpdGlvbgogKiBhbmQgbXVsdGlwbGljYXRpb24gb2YgYnl0ZXMgYW5kIDMyLWJpdCB3b3JkcyBpbiBvcmRlciB0byBwZXJmb3JtIGl0cwogKiBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uIGFsZ29yaXRobXMuCiAqCiAqIFRoZSBiYXNpY3M6CiAqCiAqIFRoZSBBRVMgYWxnb3JpdGhtIHZpZXdzIGJ5dGVzIGFzIGJpbmFyeSByZXByZXNlbnRhdGlvbnMgb2YgcG9seW5vbWlhbHMKICogdGhhdCBoYXZlIGVpdGhlciAxIG9yIDAgYXMgdGhlIGNvZWZmaWNpZW50cy4gSXQgZGVmaW5lcyB0aGUgYWRkaXRpb24KICogb3Igc3VidHJhY3Rpb24gb2YgdHdvIGJ5dGVzIGFzIHRoZSBYT1Igb3BlcmF0aW9uLiBJdCBhbHNvIGRlZmluZXMgdGhlCiAqIG11bHRpcGxpY2F0aW9uIG9mIHR3byBieXRlcyBhcyBhIGZpbml0ZSBmaWVsZCByZWZlcnJlZCB0byBhcyBHRigyXjgpCiAqIChOb3RlOiAnR0YnIG1lYW5zICJHYWxvaXMgRmllbGQiIHdoaWNoIGlzIGEgZmllbGQgdGhhdCBjb250YWlucyBhIGZpbml0ZQogKiBudW1iZXIgb2YgZWxlbWVudHMgc28gR0YoMl44KSBoYXMgMjU2IGVsZW1lbnRzKS4KICoKICogVGhpcyBtZWFucyB0aGF0IGFueSB0d28gYnl0ZXMgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGJpbmFyeSBwb2x5bm9taWFsczsKICogd2hlbiB0aGV5IG11bHRpcGxpZWQgdG9nZXRoZXIgYW5kIG1vZHVsYXJseSByZWR1Y2VkIGJ5IGFuIGlycmVkdWNpYmxlCiAqIHBvbHlub21pYWwgb2YgdGhlIDh0aCBkZWdyZWUsIHRoZSByZXN1bHRzIGFyZSB0aGUgZmllbGQgR0YoMl44KS4gVGhlCiAqIHNwZWNpZmljIGlycmVkdWNpYmxlIHBvbHlub21pYWwgdGhhdCBBRVMgdXNlcyBpbiBoZXhhZGVjaW1hbCBpcyAweDExYi4KICogVGhpcyBtdWx0aXBsaWNhdGlvbiBpcyBhc3NvY2lhdGl2ZSB3aXRoIDB4MDEgYXMgdGhlIGlkZW50aXR5OgogKgogKiAoYiAqIDB4MDEgPSBHRihiLCAweDAxKSA9IGIpLgogKgogKiBUaGUgb3BlcmF0aW9uIEdGKGIsIDB4MDIpIGNhbiBiZSBwZXJmb3JtZWQgYXQgdGhlIGJ5dGUgbGV2ZWwgYnkgbGVmdAogKiBzaGlmdGluZyBiIG9uY2UgYW5kIHRoZW4gWE9SJ2luZyBpdCAodG8gcGVyZm9ybSB0aGUgbW9kdWxhciByZWR1Y3Rpb24pCiAqIHdpdGggMHgxMWIgaWYgYiBpcyA+PSAxMjguIFJlcGVhdGVkIGFwcGxpY2F0aW9uIG9mIHRoZSBtdWx0aXBsaWNhdGlvbgogKiBvZiAweDAyIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCB0aGUgbXVsdGlwbGljYXRpb24gb2YgYW55IHR3byBieXRlcy4KICoKICogRm9yIGluc3RhbmNlLCBtdWx0aXBseWluZyAweDU3IGFuZCAweDEzLCBkZW5vdGVkIGFzIEdGKDB4NTcsIDB4MTMpLCBjYW4KICogYmUgcGVyZm9ybWVkIGJ5IGZhY3RvcmluZyAweDEzIGludG8gMHgwMSwgMHgwMiwgYW5kIDB4MTAuIFRoZW4gdGhlc2UKICogZmFjdG9ycyBjYW4gZWFjaCBiZSBtdWx0aXBsaWVkIGJ5IDB4NTcgYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuIFRvIGRvCiAqIHRoZSBtdWx0aXBsaWNhdGlvbiwgdmFsdWVzIGZvciAweDU3IG11bHRpcGxpZWQgYnkgZWFjaCBvZiB0aGVzZSAzIGZhY3RvcnMKICogY2FuIGJlIHByZWNvbXB1dGVkIGFuZCBzdG9yZWQgaW4gYSB0YWJsZS4gVG8gYWRkIHRoZW0sIHRoZSB2YWx1ZXMgZnJvbQogKiB0aGUgdGFibGUgYXJlIFhPUidkIHRvZ2V0aGVyLgogKgogKiBBRVMgYWxzbyBkZWZpbmVzIGFkZGl0aW9uIGFuZCBtdWx0aXBsaWNhdGlvbiBvZiB3b3JkcywgdGhhdCBpcyA0LWJ5dGUKICogbnVtYmVycyByZXByZXNlbnRlZCBhcyBwb2x5bm9taWFscyBvZiAzIGRlZ3JlZXMgd2hlcmUgdGhlIGNvZWZmaWNpZW50cwogKiBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMuCiAqCiAqIFRoZSB3b3JkIFthMCwgYTEsIGEyLCBhM10gaXMgYSBwb2x5bm9taWFsIGEzeF4zICsgYTJ4XjIgKyBhMXggKyBhMC4KICoKICogQWRkaXRpb24gaXMgcGVyZm9ybWVkIGJ5IFhPUidpbmcgbGlrZSBwb3dlcnMgb2YgeC4gTXVsdGlwbGljYXRpb24KICogaXMgcGVyZm9ybWVkIGluIHR3byBzdGVwcywgdGhlIGZpcnN0IGlzIGFuIGFsZ2VicmlhYyBleHBhbnNpb24gYXMKICogeW91IHdvdWxkIGRvIG5vcm1hbGx5ICh3aGVyZSBhZGRpdGlvbiBpcyBYT1IpLiBCdXQgdGhlIHJlc3VsdCBpcwogKiBhIHBvbHlub21pYWwgbGFyZ2VyIHRoYW4gMyBkZWdyZWVzIGFuZCB0aHVzIGl0IGNhbm5vdCBmaXQgaW4gYSB3b3JkLiBTbwogKiBuZXh0IHRoZSByZXN1bHQgaXMgbW9kdWxhcmx5IHJlZHVjZWQgYnkgYW4gQUVTLXNwZWNpZmljIHBvbHlub21pYWwgb2YKICogZGVncmVlIDQgd2hpY2ggd2lsbCBhbHdheXMgcHJvZHVjZSBhIHBvbHlub21pYWwgb2YgbGVzcyB0aGFuIDQgZGVncmVlcwogKiBzdWNoIHRoYXQgaXQgd2lsbCBmaXQgaW4gYSB3b3JkLiBJbiBBRVMsIHRoaXMgcG9seW5vbWlhbCBpcyB4XjQgKyAxLgogKgogKiBUaGUgbW9kdWxhciBwcm9kdWN0IG9mIHR3byBwb2x5bm9taWFscyAnYScgYW5kICdiJyBpcyB0aHVzOgogKgogKiBkKHgpID0gZDN4XjMgKyBkMnheMiArIGQxeCArIGQwCiAqIHdpdGgKICogZDAgPSBHRihhMCwgYjApIF4gR0YoYTMsIGIxKSBeIEdGKGEyLCBiMikgXiBHRihhMSwgYjMpCiAqIGQxID0gR0YoYTEsIGIwKSBeIEdGKGEwLCBiMSkgXiBHRihhMywgYjIpIF4gR0YoYTIsIGIzKQogKiBkMiA9IEdGKGEyLCBiMCkgXiBHRihhMSwgYjEpIF4gR0YoYTAsIGIyKSBeIEdGKGEzLCBiMykKICogZDMgPSBHRihhMywgYjApIF4gR0YoYTIsIGIxKSBeIEdGKGExLCBiMikgXiBHRihhMCwgYjMpCiAqCiAqIEFzIGEgbWF0cml4OgogKgogKiBbZDBdID0gW2EwIGEzIGEyIGExXVtiMF0KICogW2QxXSAgIFthMSBhMCBhMyBhMl1bYjFdCiAqIFtkMl0gICBbYTIgYTEgYTAgYTNdW2IyXQogKiBbZDNdICAgW2EzIGEyIGExIGEwXVtiM10KICoKICogU3BlY2lhbCBwb2x5bm9taWFscyBkZWZpbmVkIGJ5IEFFUyAoMHgwMiA9PSB7MDJ9KToKICogYSh4KSAgICA9IHswM314XjMgKyB7MDF9eF4yICsgezAxfXggKyB7MDJ9CiAqIGFeLTEoeCkgPSB7MGJ9eF4zICsgezBkfXheMiArIHswOX14ICsgezBlfS4KICoKICogVGhlc2UgcG9seW5vbWlhbHMgYXJlIHVzZWQgaW4gdGhlIE1peENvbHVtbnMoKSBhbmQgSW52ZXJzZU1peENvbHVtbnMoKQogKiBvcGVyYXRpb25zLCByZXNwZWN0aXZlbHksIHRvIGNhdXNlIGVhY2ggZWxlbWVudCBpbiB0aGUgc3RhdGUgdG8gYWZmZWN0CiAqIHRoZSBvdXRwdXQgKHJlZmVycmVkIHRvIGFzIGRpZmZ1c2luZykuCiAqCiAqIFJvdFdvcmQoKSB1c2VzOiBhMCA9IGExID0gYTIgPSB7MDB9IGFuZCBhMyA9IHswMX0sIHdoaWNoIGlzIHRoZQogKiBwb2x5bm9taWFsIHgzLgogKgogKiBUaGUgU2hpZnRSb3dzKCkgbWV0aG9kIG1vZGlmaWVzIHRoZSBsYXN0IDMgcm93cyBpbiB0aGUgc3RhdGUgKHdoZXJlCiAqIHRoZSBzdGF0ZSBpcyA0IHdvcmRzIHdpdGggNCBieXRlcyBwZXIgd29yZCkgYnkgc2hpZnRpbmcgYnl0ZXMgY3ljbGljYWxseS4KICogVGhlIDFzdCBieXRlIGluIHRoZSBzZWNvbmQgcm93IGlzIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIHJvdy4gVGhlIDFzdAogKiBhbmQgMm5kIGJ5dGVzIGluIHRoZSB0aGlyZCByb3cgYXJlIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIHJvdy4gVGhlIDFzdCwKICogMm5kLCBhbmQgM3JkIGJ5dGVzIGFyZSBtb3ZlZCBpbiB0aGUgZm91cnRoIHJvdy4KICoKICogTW9yZSBkZXRhaWxzIG9uIGhvdyBBRVMgYXJpdGhtZXRpYyB3b3JrczoKICoKICogSW4gdGhlIHBvbHlub21pYWwgcmVwcmVzZW50YXRpb24gb2YgYmluYXJ5IG51bWJlcnMsIFhPUiBwZXJmb3JtcyBhZGRpdGlvbgogKiBhbmQgc3VidHJhY3Rpb24gYW5kIG11bHRpcGxpY2F0aW9uIGluIEdGKDJeOCkgZGVub3RlZCBhcyBHRihhLCBiKQogKiBjb3JyZXNwb25kcyB3aXRoIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBwb2x5bm9taWFscyBtb2R1bG8gYW4gaXJyZWR1Y2libGUKICogcG9seW5vbWlhbCBvZiBkZWdyZWUgOC4gSW4gb3RoZXIgd29yZHMsIGZvciBBRVMsIEdGKGEsIGIpIHdpbGwgbXVsdGlwbHkKICogcG9seW5vbWlhbCAnYScgd2l0aCBwb2x5bm9taWFsICdiJyBhbmQgdGhlbiBkbyBhIG1vZHVsYXIgcmVkdWN0aW9uIGJ5CiAqIGFuIEFFUy1zcGVjaWZpYyBpcnJlZHVjaWJsZSBwb2x5bm9taWFsIG9mIGRlZ3JlZSA4LgogKgogKiBBIHBvbHlub21pYWwgaXMgaXJyZWR1Y2libGUgaWYgaXRzIG9ubHkgZGl2aXNvcnMgYXJlIG9uZSBhbmQgaXRzZWxmLiBGb3IKICogdGhlIEFFUyBhbGdvcml0aG0sIHRoaXMgaXJyZWR1Y2libGUgcG9seW5vbWlhbCBpczoKICoKICogbSh4KSA9IHheOCArIHheNCArIHheMyArIHggKyAxLAogKgogKiBvciB7MDF9ezFifSBpbiBoZXhhZGVjaW1hbCBub3RhdGlvbiwgd2hlcmUgZWFjaCBjb2VmZmljaWVudCBpcyBhIGJpdDoKICogMTAwMDExMDExID0gMjgzID0gMHgxMWIuCiAqCiAqIEZvciBleGFtcGxlLCBHRigweDU3LCAweDgzKSA9IDB4YzEgYmVjYXVzZQogKgogKiAweDU3ID0gODcgID0gMDEwMTAxMTEgPSB4XjYgKyB4XjQgKyB4XjIgKyB4ICsgMQogKiAweDg1ID0gMTMxID0gMTAwMDAxMDEgPSB4XjcgKyB4ICsgMQogKgogKiAoeF42ICsgeF40ICsgeF4yICsgeCArIDEpICogKHheNyArIHggKyAxKQogKiA9ICB4XjEzICsgeF4xMSArIHheOSArIHheOCArIHheNyArCiAqICAgIHheNyArIHheNSArIHheMyArIHheMiArIHggKwogKiAgICB4XjYgKyB4XjQgKyB4XjIgKyB4ICsgMQogKiA9ICB4XjEzICsgeF4xMSArIHheOSArIHheOCArIHheNiArIHheNSArIHheNCArIHheMyArIDEgPSB5CiAqICAgIHkgbW9kdWxvICh4XjggKyB4XjQgKyB4XjMgKyB4ICsgMSkKICogPSAgeF43ICsgeF42ICsgMS4KICoKICogVGhlIG1vZHVsYXIgcmVkdWN0aW9uIGJ5IG0oeCkgZ3VhcmFudGVlcyB0aGUgcmVzdWx0IHdpbGwgYmUgYSBiaW5hcnkKICogcG9seW5vbWlhbCBvZiBsZXNzIHRoYW4gZGVncmVlIDgsIHNvIHRoYXQgaXQgY2FuIGZpdCBpbiBhIGJ5dGUuCiAqCiAqIFRoZSBvcGVyYXRpb24gdG8gbXVsdGlwbHkgYSBiaW5hcnkgcG9seW5vbWlhbCBiIHdpdGggeCAodGhlIHBvbHlub21pYWwKICogeCBpbiBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgMDAwMDAwMTApIGlzOgogKgogKiBiXzd4XjggKyBiXzZ4XjcgKyBiXzV4XjYgKyBiXzR4XjUgKyBiXzN4XjQgKyBiXzJ4XjMgKyBiXzF4XjIgKyBiXzB4XjEKICoKICogVG8gZ2V0IEdGKGIsIHgpIHdlIG11c3QgcmVkdWNlIHRoYXQgYnkgbSh4KS4gSWYgYl83IGlzIDAgKHRoYXQgaXMgdGhlCiAqIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGlzIDAgaW4gYikgdGhlbiB0aGUgcmVzdWx0IGlzIGFscmVhZHkgcmVkdWNlZC4gSWYKICogaXQgaXMgMSwgdGhlbiB3ZSBjYW4gcmVkdWNlIGl0IGJ5IHN1YnRyYWN0aW5nIG0oeCkgdmlhIGFuIFhPUi4KICoKICogSXQgZm9sbG93cyB0aGF0IG11bHRpcGxpY2F0aW9uIGJ5IHggKDAwMDAwMDEwIG9yIDB4MDIpIGNhbiBiZSBpbXBsZW1lbnRlZAogKiBieSBwZXJmb3JtaW5nIGEgbGVmdCBzaGlmdCBmb2xsb3dlZCBieSBhIGNvbmRpdGlvbmFsIGJpdHdpc2UgWE9SIHdpdGgKICogMHgxYi4gVGhpcyBvcGVyYXRpb24gb24gYnl0ZXMgaXMgZGVub3RlZCBieSB4dGltZSgpLiBNdWx0aXBsaWNhdGlvbiBieQogKiBoaWdoZXIgcG93ZXJzIG9mIHggY2FuIGJlIGltcGxlbWVudGVkIGJ5IHJlcGVhdGVkIGFwcGxpY2F0aW9uIG9mIHh0aW1lKCkuCiAqCiAqIEJ5IGFkZGluZyBpbnRlcm1lZGlhdGUgcmVzdWx0cywgbXVsdGlwbGljYXRpb24gYnkgYW55IGNvbnN0YW50IGNhbiBiZQogKiBpbXBsZW1lbnRlZC4gRm9yIGluc3RhbmNlOgogKgogKiBHRigweDU3LCAweDEzKSA9IDB4ZmUgYmVjYXVzZToKICoKICogeHRpbWUoYikgPSAoYiAmIDEyOCkgPyAoYiA8PCAxIF4gMHgxMWIpIDogKGIgPDwgMSkKICoKICogTm90ZTogV2UgWE9SIHdpdGggMHgxMWIgaW5zdGVhZCBvZiAweDFiIGJlY2F1c2UgaW4gamF2YXNjcmlwdCBvdXIKICogZGF0YXR5cGUgZm9yIGIgY2FuIGJlIGxhcmdlciB0aGFuIDEgYnl0ZSwgc28gYSBsZWZ0IHNoaWZ0IHdpbGwgbm90CiAqIGF1dG9tYXRpY2FsbHkgZWxpbWluYXRlIGJpdHMgdGhhdCBvdmVyZmxvdyBhIGJ5dGUgLi4uIGJ5IFhPUidpbmcgdGhlCiAqIG92ZXJmbG93IGJpdCB3aXRoIDEgKHRoZSBleHRyYSBvbmUgZnJvbSAweDExYikgd2UgemVybyBpdCBvdXQuCiAqCiAqIEdGKDB4NTcsIDB4MDIpID0geHRpbWUoMHg1NykgPSAweGFlCiAqIEdGKDB4NTcsIDB4MDQpID0geHRpbWUoMHhhZSkgPSAweDQ3CiAqIEdGKDB4NTcsIDB4MDgpID0geHRpbWUoMHg0NykgPSAweDhlCiAqIEdGKDB4NTcsIDB4MTApID0geHRpbWUoMHg4ZSkgPSAweDA3CiAqCiAqIEdGKDB4NTcsIDB4MTMpID0gR0YoMHg1NywgKDB4MDEgXiAweDAyIF4gMHgxMCkpCiAqCiAqIEFuZCBieSB0aGUgZGlzdHJpYnV0aXZlIHByb3BlcnR5IChzaW5jZSBYT1IgaXMgYWRkaXRpb24gYW5kIEdGKCkgaXMKICogbXVsdGlwbGljYXRpb24pOgogKgogKiA9IEdGKDB4NTcsIDB4MDEpIF4gR0YoMHg1NywgMHgwMikgXiBHRigweDU3LCAweDEwKQogKiA9IDB4NTcgXiAweGFlIF4gMHgwNwogKiA9IDB4ZmUuCiAqLwpmdW5jdGlvbiBpbml0aWFsaXplKCkgewogIGluaXQgPSB0cnVlOwoKICAvKiBQb3B1bGF0ZSB0aGUgUmNvbiB0YWJsZS4gVGhlc2UgYXJlIHRoZSB2YWx1ZXMgZ2l2ZW4gYnkKICAgIFt4XihpLTEpLHswMH0sezAwfSx7MDB9XSB3aGVyZSB4XihpLTEpIGFyZSBwb3dlcnMgb2YgeCAoYW5kIHggPSAweDAyKQogICAgaW4gdGhlIGZpZWxkIG9mIEdGKDJeOCksIHdoZXJlIGkgc3RhcnRzIGF0IDEuCgogICAgcmNvblswXSA9IFsweDAwLCAweDAwLCAweDAwLCAweDAwXQogICAgcmNvblsxXSA9IFsweDAxLCAweDAwLCAweDAwLCAweDAwXSAyXigxLTEpID0gMl4wID0gMQogICAgcmNvblsyXSA9IFsweDAyLCAweDAwLCAweDAwLCAweDAwXSAyXigyLTEpID0gMl4xID0gMgogICAgLi4uCiAgICByY29uWzldICA9IFsweDFCLCAweDAwLCAweDAwLCAweDAwXSAyXig5LTEpICA9IDJeOCA9IDB4MUIKICAgIHJjb25bMTBdID0gWzB4MzYsIDB4MDAsIDB4MDAsIDB4MDBdIDJeKDEwLTEpID0gMl45ID0gMHgzNgoKICAgIFdlIG9ubHkgc3RvcmUgdGhlIGZpcnN0IGJ5dGUgYmVjYXVzZSBpdCBpcyB0aGUgb25seSBvbmUgdXNlZC4KICAqLwogIHJjb24gPSBbMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxQiwgMHgzNl07CgogIC8vIGNvbXB1dGUgeHRpbWUgdGFibGUgd2hpY2ggbWFwcyBpIG9udG8gR0YoaSwgMHgwMikKICB2YXIgeHRpbWUgPSBuZXcgQXJyYXkoMjU2KTsKICBmb3IodmFyIGkgPSAwOyBpIDwgMTI4OyArK2kpIHsKICAgIHh0aW1lW2ldID0gaSA8PCAxOwogICAgeHRpbWVbaSArIDEyOF0gPSAoaSArIDEyOCkgPDwgMSBeIDB4MTFCOwogIH0KCiAgLy8gY29tcHV0ZSBhbGwgb3RoZXIgdGFibGVzCiAgc2JveCA9IG5ldyBBcnJheSgyNTYpOwogIGlzYm94ID0gbmV3IEFycmF5KDI1Nik7CiAgbWl4ID0gbmV3IEFycmF5KDQpOwogIGltaXggPSBuZXcgQXJyYXkoNCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgewogICAgbWl4W2ldID0gbmV3IEFycmF5KDI1Nik7CiAgICBpbWl4W2ldID0gbmV3IEFycmF5KDI1Nik7CiAgfQogIHZhciBlID0gMCwgZWkgPSAwLCBlMiwgZTQsIGU4LCBzeCwgc3gyLCBtZSwgaW1lOwogIGZvcih2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkgewogICAgLyogV2UgbmVlZCB0byBnZW5lcmF0ZSB0aGUgU3ViQnl0ZXMoKSBzYm94IGFuZCBpc2JveCB0YWJsZXMgc28gdGhhdAogICAgICB3ZSBjYW4gcGVyZm9ybSBieXRlIHN1YnN0aXR1dGlvbnMuIFRoaXMgcmVxdWlyZXMgdXMgdG8gdHJhdmVyc2UKICAgICAgYWxsIG9mIHRoZSBlbGVtZW50cyBpbiBHRiwgZmluZCB0aGVpciBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlcywKICAgICAgYW5kIGFwcGx5IHRvIGVhY2ggdGhlIGZvbGxvd2luZyBhZmZpbmUgdHJhbnNmb3JtYXRpb246CgogICAgICBiaScgPSBiaSBeIGIoaSArIDQpIG1vZCA4IF4gYihpICsgNSkgbW9kIDggXiBiKGkgKyA2KSBtb2QgOCBeCiAgICAgICAgICAgIGIoaSArIDcpIG1vZCA4IF4gY2kKICAgICAgZm9yIDAgPD0gaSA8IDgsIHdoZXJlIGJpIGlzIHRoZSBpdGggYml0IG9mIHRoZSBieXRlLCBhbmQgY2kgaXMgdGhlCiAgICAgIGl0aCBiaXQgb2YgYSBieXRlIGMgd2l0aCB0aGUgdmFsdWUgezYzfSBvciB7MDExMDAwMTF9LgoKICAgICAgSXQgaXMgcG9zc2libGUgdG8gdHJhdmVyc2UgZXZlcnkgcG9zc2libGUgdmFsdWUgaW4gYSBHYWxvaXMgZmllbGQKICAgICAgdXNpbmcgd2hhdCBpcyByZWZlcnJlZCB0byBhcyBhICdnZW5lcmF0b3InLiBUaGVyZSBhcmUgbWFueQogICAgICBnZW5lcmF0b3JzICgxMjggb3V0IG9mIDI1Nik6IDMsNSw2LDksMTEsODIgdG8gbmFtZSBhIGZldy4gVG8gZnVsbHkKICAgICAgdHJhdmVyc2UgR0Ygd2UgaXRlcmF0ZSAyNTUgdGltZXMsIG11bHRpcGx5aW5nIGJ5IG91ciBnZW5lcmF0b3IKICAgICAgZWFjaCB0aW1lLgoKICAgICAgT24gZWFjaCBpdGVyYXRpb24gd2UgY2FuIGRldGVybWluZSB0aGUgbXVsdGlwbGljYXRpdmUgaW52ZXJzZSBmb3IKICAgICAgdGhlIGN1cnJlbnQgZWxlbWVudC4KCiAgICAgIFN1cHBvc2UgdGhlcmUgaXMgYW4gZWxlbWVudCBpbiBHRiAnZScuIEZvciBhIGdpdmVuIGdlbmVyYXRvciAnZycsCiAgICAgIGUgPSBnXnguIFRoZSBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIGUgaXMgZ14oMjU1IC0geCkuIEl0IHR1cm5zCiAgICAgIG91dCB0aGF0IGlmIHVzZSB0aGUgaW52ZXJzZSBvZiBhIGdlbmVyYXRvciBhcyBhbm90aGVyIGdlbmVyYXRvcgogICAgICBpdCB3aWxsIHByb2R1Y2UgYWxsIG9mIHRoZSBjb3JyZXNwb25kaW5nIG11bHRpcGxpY2F0aXZlIGludmVyc2VzCiAgICAgIGF0IHRoZSBzYW1lIHRpbWUuIEZvciB0aGlzIHJlYXNvbiwgd2UgY2hvb3NlIDUgYXMgb3VyIGludmVyc2UKICAgICAgZ2VuZXJhdG9yIGJlY2F1c2UgaXQgb25seSByZXF1aXJlcyAyIG11bHRpcGxpZXMgYW5kIDEgYWRkIGFuZCBpdHMKICAgICAgaW52ZXJzZSwgODIsIHJlcXVpcmVzIHJlbGF0aXZlbHkgZmV3IG9wZXJhdGlvbnMgYXMgd2VsbC4KCiAgICAgIEluIG9yZGVyIHRvIGFwcGx5IHRoZSBhZmZpbmUgdHJhbnNmb3JtYXRpb24sIHRoZSBtdWx0aXBsaWNhdGl2ZQogICAgICBpbnZlcnNlICdlaScgb2YgJ2UnIGNhbiBiZSByZXBlYXRlZGx5IFhPUidkICg0IHRpbWVzKSB3aXRoIGEKICAgICAgYml0LWN5Y2xpbmcgb2YgJ2VpJy4gVG8gZG8gdGhpcyAnZWknIGlzIGZpcnN0IHN0b3JlZCBpbiAncycgYW5kCiAgICAgICd4Jy4gVGhlbiAncycgaXMgbGVmdCBzaGlmdGVkIGFuZCB0aGUgaGlnaCBiaXQgb2YgJ3MnIGlzIG1hZGUgdGhlCiAgICAgIGxvdyBiaXQuIFRoZSByZXN1bHRpbmcgdmFsdWUgaXMgc3RvcmVkIGluICdzJy4gVGhlbiAneCcgaXMgWE9SJ2QKICAgICAgd2l0aCAncycgYW5kIHN0b3JlZCBpbiAneCcuIE9uIGVhY2ggc3Vic2VxdWVudCBpdGVyYXRpb24gdGhlIHNhbWUKICAgICAgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZC4gV2hlbiA0IGl0ZXJhdGlvbnMgYXJlIGNvbXBsZXRlLCAneCcgaXMKICAgICAgWE9SJ2Qgd2l0aCAnYycgKDB4NjMpIGFuZCB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgaXMgc3RvcmVkIGluICd4Jy4KICAgICAgRm9yIGV4YW1wbGU6CgogICAgICBzID0gMDEwMDAwMDEKICAgICAgeCA9IDAxMDAwMDAxCgogICAgICBpdGVyYXRpb24gMTogcyA9IDEwMDAwMDEwLCB4IF49IHMKICAgICAgaXRlcmF0aW9uIDI6IHMgPSAwMDAwMDEwMSwgeCBePSBzCiAgICAgIGl0ZXJhdGlvbiAzOiBzID0gMDAwMDEwMTAsIHggXj0gcwogICAgICBpdGVyYXRpb24gNDogcyA9IDAwMDEwMTAwLCB4IF49IHMKICAgICAgeCBePSAweDYzCgogICAgICBUaGlzIGNhbiBiZSBkb25lIHdpdGggYSBsb29wIHdoZXJlIHMgPSAocyA8PCAxKSB8IChzID4+IDcpLiBIb3dldmVyLAogICAgICBpdCBjYW4gYWxzbyBiZSBkb25lIGJ5IHVzaW5nIGEgc2luZ2xlIDE2LWJpdCAoaW4gdGhpcyBjYXNlIDMyLWJpdCkKICAgICAgbnVtYmVyICdzeCcuIFNpbmNlIFhPUiBpcyBhbiBhc3NvY2lhdGl2ZSBvcGVyYXRpb24sIHdlIGNhbiBzZXQgJ3N4JwogICAgICB0byAnZWknIGFuZCB0aGVuIFhPUiBpdCB3aXRoICdzeCcgbGVmdC1zaGlmdGVkIDEsMiwzLCBhbmQgNCB0aW1lcy4KICAgICAgVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyB3aWxsIGZsb3cgaW50byB0aGUgaGlnaCA4IGJpdCBwb3NpdGlvbnMKICAgICAgYW5kIGJlIGNvcnJlY3RseSBYT1InZCB3aXRoIG9uZSBhbm90aGVyLiBBbGwgdGhhdCByZW1haW5zIHdpbGwgYmUKICAgICAgdG8gY3ljbGUgdGhlIGhpZ2ggOCBiaXRzIGJ5IFhPUidpbmcgdGhlbSBhbGwgd2l0aCB0aGUgbG93ZXIgOCBiaXRzCiAgICAgIGFmdGVyd2FyZHMuCgogICAgICBBdCB0aGUgc2FtZSB0aW1lIHdlJ3JlIHBvcHVsYXRpbmcgc2JveCBhbmQgaXNib3ggd2UgY2FuIHByZWNvbXB1dGUKICAgICAgdGhlIG11bHRpcGxpY2F0aW9uIHdlJ2xsIG5lZWQgdG8gZG8gdG8gZG8gTWl4Q29sdW1ucygpIGxhdGVyLgogICAgKi8KCiAgICAvLyBhcHBseSBhZmZpbmUgdHJhbnNmb3JtYXRpb24KICAgIHN4ID0gZWkgXiAoZWkgPDwgMSkgXiAoZWkgPDwgMikgXiAoZWkgPDwgMykgXiAoZWkgPDwgNCk7CiAgICBzeCA9IChzeCA+PiA4KSBeIChzeCAmIDI1NSkgXiAweDYzOwoKICAgIC8vIHVwZGF0ZSB0YWJsZXMKICAgIHNib3hbZV0gPSBzeDsKICAgIGlzYm94W3N4XSA9IGU7CgogICAgLyogTWl4aW5nIGNvbHVtbnMgaXMgZG9uZSB1c2luZyBtYXRyaXggbXVsdGlwbGljYXRpb24uIFRoZSBjb2x1bW5zCiAgICAgIHRoYXQgYXJlIHRvIGJlIG1peGVkIGFyZSBlYWNoIGEgc2luZ2xlIHdvcmQgaW4gdGhlIGN1cnJlbnQgc3RhdGUuCiAgICAgIFRoZSBzdGF0ZSBoYXMgTmIgY29sdW1ucyAoNCBjb2x1bW5zKS4gVGhlcmVmb3JlIGVhY2ggY29sdW1uIGlzIGEKICAgICAgNCBieXRlIHdvcmQuIFNvIHRvIG1peCB0aGUgY29sdW1ucyBpbiBhIHNpbmdsZSBjb2x1bW4gJ2MnIHdoZXJlCiAgICAgIGl0cyByb3dzIGFyZSByMCwgcjEsIHIyLCBhbmQgcjMsIHdlIHVzZSB0aGUgZm9sbG93aW5nIG1hdHJpeAogICAgICBtdWx0aXBsaWNhdGlvbjoKCiAgICAgIFsyIDMgMSAxXSpbcjAsY109W3InMCxjXQogICAgICBbMSAyIDMgMV0gW3IxLGNdIFtyJzEsY10KICAgICAgWzEgMSAyIDNdIFtyMixjXSBbcicyLGNdCiAgICAgIFszIDEgMSAyXSBbcjMsY10gW3InMyxjXQoKICAgICAgcjAsIHIxLCByMiwgYW5kIHIzIGFyZSBlYWNoIDEgYnl0ZSBvZiBvbmUgb2YgdGhlIHdvcmRzIGluIHRoZQogICAgICBzdGF0ZSAoYSBjb2x1bW4pLiBUbyBkbyBtYXRyaXggbXVsdGlwbGljYXRpb24gZm9yIGVhY2ggbWl4ZWQKICAgICAgY29sdW1uIGMnIHdlIG11bHRpcGx5IHRoZSBjb3JyZXNwb25kaW5nIHJvdyBmcm9tIHRoZSBsZWZ0IG1hdHJpeAogICAgICB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGNvbHVtbiBmcm9tIHRoZSByaWdodCBtYXRyaXguIEluIHRvdGFsLCB3ZQogICAgICBnZXQgNCBlcXVhdGlvbnM6CgogICAgICByMCxjJyA9IDIqcjAsYyArIDMqcjEsYyArIDEqcjIsYyArIDEqcjMsYwogICAgICByMSxjJyA9IDEqcjAsYyArIDIqcjEsYyArIDMqcjIsYyArIDEqcjMsYwogICAgICByMixjJyA9IDEqcjAsYyArIDEqcjEsYyArIDIqcjIsYyArIDMqcjMsYwogICAgICByMyxjJyA9IDMqcjAsYyArIDEqcjEsYyArIDEqcjIsYyArIDIqcjMsYwoKICAgICAgQXMgdXN1YWwsIHRoZSBtdWx0aXBsaWNhdGlvbiBpcyBhcyBwcmV2aW91c2x5IGRlZmluZWQgYW5kIHRoZQogICAgICBhZGRpdGlvbiBpcyBYT1IuIEluIG9yZGVyIHRvIG9wdGltaXplIG1peGluZyBjb2x1bW5zIHdlIGNhbiBzdG9yZQogICAgICB0aGUgbXVsdGlwbGljYXRpb24gcmVzdWx0cyBpbiB0YWJsZXMuIElmIHlvdSB0aGluayBvZiB0aGUgd2hvbGUKICAgICAgY29sdW1uIGFzIGEgd29yZCAoaXQgbWlnaHQgaGVscCB0byB2aXN1YWxpemUgYnkgbWVudGFsbHkgcm90YXRpbmcKICAgICAgdGhlIGVxdWF0aW9ucyBhYm92ZSBieSBjb3VudGVyY2xvY2t3aXNlIDkwIGRlZ3JlZXMpIHRoZW4geW91IGNhbgogICAgICBzZWUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwgdG8gbWFwIHRoZSBtdWx0aXBsaWNhdGlvbnMgcGVyZm9ybWVkIG9uCiAgICAgIGVhY2ggYnl0ZSAocjAsIHIxLCByMiwgcjMpIG9udG8gYSB3b3JkIGFzIHdlbGwuIEZvciBpbnN0YW5jZSwgd2UKICAgICAgY291bGQgbWFwIDIqcjAsMSpyMCwxKnIwLDMqcjAgb250byBhIHdvcmQgYnkgc3RvcmluZyAyKnIwIGluIHRoZQogICAgICBoaWdoZXN0IDggYml0cyBhbmQgMypyMCBpbiB0aGUgbG93ZXN0IDggYml0cyAod2l0aCB0aGUgb3RoZXIgdHdvCiAgICAgIHJlc3BlY3RpdmVseSBpbiB0aGUgbWlkZGxlKS4gVGhpcyBtZWFucyB0aGF0IGEgdGFibGUgY2FuIGJlCiAgICAgIGNvbnN0cnVjdGVkIHRoYXQgdXNlcyByMCBhcyBhbiBpbmRleCB0byB0aGUgd29yZC4gV2UgY2FuIGRvIHRoZQogICAgICBzYW1lIHdpdGggcjEsIHIyLCBhbmQgcjMsIGNyZWF0aW5nIGEgdG90YWwgb2YgNCB0YWJsZXMuCgogICAgICBUbyBjb25zdHJ1Y3QgYSBmdWxsIGMnLCB3ZSBjYW4ganVzdCBsb29rIHVwIGVhY2ggYnl0ZSBvZiBjIGluCiAgICAgIHRoZWlyIHJlc3BlY3RpdmUgdGFibGVzIGFuZCBYT1IgdGhlIHJlc3VsdHMgdG9nZXRoZXIuCgogICAgICBBbHNvLCB0byBidWlsZCBlYWNoIHRhYmxlIHdlIG9ubHkgaGF2ZSB0byBjYWxjdWxhdGUgdGhlIHdvcmQKICAgICAgZm9yIDIsMSwxLDMgZm9yIGV2ZXJ5IGJ5dGUgLi4uIHdoaWNoIHdlIGNhbiBkbyBvbiBlYWNoIGl0ZXJhdGlvbgogICAgICBvZiB0aGlzIGxvb3Agc2luY2Ugd2Ugd2lsbCBpdGVyYXRlIG92ZXIgZXZlcnkgYnl0ZS4gQWZ0ZXIgd2UgaGF2ZQogICAgICBjYWxjdWxhdGVkIDIsMSwxLDMgd2UgY2FuIGdldCB0aGUgcmVzdWx0cyBmb3IgdGhlIG90aGVyIHRhYmxlcwogICAgICBieSBjeWNsaW5nIHRoZSBieXRlIGF0IHRoZSBlbmQgdG8gdGhlIGJlZ2lubmluZy4gRm9yIGluc3RhbmNlCiAgICAgIHdlIGNhbiB0YWtlIHRoZSByZXN1bHQgb2YgdGFibGUgMiwxLDEsMyBhbmQgcHJvZHVjZSB0YWJsZSAzLDIsMSwxCiAgICAgIGJ5IG1vdmluZyB0aGUgcmlnaHQgbW9zdCBieXRlIHRvIHRoZSBsZWZ0IG1vc3QgcG9zaXRpb24ganVzdCBsaWtlCiAgICAgIGhvdyB5b3UgY2FuIGltYWdpbmUgdGhlIDMgbW92ZWQgb3V0IG9mIDIsMSwxLDMgYW5kIHRvIHRoZSBmcm9udAogICAgICB0byBwcm9kdWNlIDMsMiwxLDEuCgogICAgICBUaGVyZSBpcyBhbm90aGVyIG9wdGltaXphdGlvbiBpbiB0aGF0IHRoZSBzYW1lIG11bHRpcGxlcyBvZgogICAgICB0aGUgY3VycmVudCBlbGVtZW50IHdlIG5lZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSBvdXIgZ2VuZXJhdG9yCiAgICAgIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBjYW4gYmUgcmV1c2VkIGluIHBlcmZvcm1pbmcgdGhlIDIsMSwxLDMKICAgICAgY2FsY3VsYXRpb24uIFdlIGFsc28gY2FsY3VsYXRlIHRoZSBpbnZlcnNlIG1peCBjb2x1bW4gdGFibGVzLAogICAgICB3aXRoIGUsOSxkLGIgYmVpbmcgdGhlIGludmVyc2Ugb2YgMiwxLDEsMy4KCiAgICAgIFdoZW4gd2UncmUgZG9uZSwgYW5kIHdlIG5lZWQgdG8gYWN0dWFsbHkgbWl4IGNvbHVtbnMsIHRoZSBmaXJzdAogICAgICBieXRlIG9mIGVhY2ggc3RhdGUgd29yZCBzaG91bGQgYmUgcHV0IHRocm91Z2ggbWl4WzBdICgyLDEsMSwzKSwKICAgICAgdGhlIHNlY29uZCB0aHJvdWdoIG1peFsxXSAoMywyLDEsMSkgYW5kIHNvIGZvcnRoLiBUaGVuIHRoZXkgc2hvdWxkCiAgICAgIGJlIFhPUidkIHRvZ2V0aGVyIHRvIHByb2R1Y2UgdGhlIGZ1bGx5IG1peGVkIGNvbHVtbi4KICAgICovCgogICAgLy8gY2FsY3VsYXRlIG1peCBhbmQgaW1peCB0YWJsZSB2YWx1ZXMKICAgIHN4MiA9IHh0aW1lW3N4XTsKICAgIGUyID0geHRpbWVbZV07CiAgICBlNCA9IHh0aW1lW2UyXTsKICAgIGU4ID0geHRpbWVbZTRdOwogICAgbWUgPQogICAgICAoc3gyIDw8IDI0KSBeICAvLyAyCiAgICAgIChzeCA8PCAxNikgXiAgIC8vIDEKICAgICAgKHN4IDw8IDgpIF4gICAgLy8gMQogICAgICAoc3ggXiBzeDIpOyAgICAvLyAzCiAgICBpbWUgPQogICAgICAoZTIgXiBlNCBeIGU4KSA8PCAyNCBeICAvLyBFICgxNCkKICAgICAgKGUgXiBlOCkgPDwgMTYgXiAgICAgICAgLy8gOQogICAgICAoZSBeIGU0IF4gZTgpIDw8IDggXiAgICAvLyBEICgxMykKICAgICAgKGUgXiBlMiBeIGU4KTsgICAgICAgICAgLy8gQiAoMTEpCiAgICAvLyBwcm9kdWNlIGVhY2ggb2YgdGhlIG1peCB0YWJsZXMgYnkgcm90YXRpbmcgdGhlIDIsMSwxLDMgdmFsdWUKICAgIGZvcih2YXIgbiA9IDA7IG4gPCA0OyArK24pIHsKICAgICAgbWl4W25dW2VdID0gbWU7CiAgICAgIGltaXhbbl1bc3hdID0gaW1lOwogICAgICAvLyBjeWNsZSB0aGUgcmlnaHQgbW9zdCBieXRlIHRvIHRoZSBsZWZ0IG1vc3QgcG9zaXRpb24KICAgICAgLy8gaWU6IDIsMSwxLDMgYmVjb21lcyAzLDIsMSwxCiAgICAgIG1lID0gbWUgPDwgMjQgfCBtZSA+Pj4gODsKICAgICAgaW1lID0gaW1lIDw8IDI0IHwgaW1lID4+PiA4OwogICAgfQoKICAgIC8vIGdldCBuZXh0IGVsZW1lbnQgYW5kIGludmVyc2UKICAgIGlmKGUgPT09IDApIHsKICAgICAgLy8gMSBpcyB0aGUgaW52ZXJzZSBvZiAxCiAgICAgIGUgPSBlaSA9IDE7CiAgICB9IGVsc2UgewogICAgICAvLyBlID0gMmUgKyAyKjIqMiooMTBlKSkgPSBtdWx0aXBseSBlIGJ5IDgyIChjaG9zZW4gZ2VuZXJhdG9yKQogICAgICAvLyBlaSA9IGVpICsgMioyKmVpID0gbXVsdGlwbHkgZWkgYnkgNSAoaW52ZXJzZSBnZW5lcmF0b3IpCiAgICAgIGUgPSBlMiBeIHh0aW1lW3h0aW1lW3h0aW1lW2UyIF4gZThdXV07CiAgICAgIGVpIF49IHh0aW1lW3h0aW1lW2VpXV07CiAgICB9CiAgfQp9CgovKioKICogR2VuZXJhdGVzIGEga2V5IHNjaGVkdWxlIHVzaW5nIHRoZSBBRVMga2V5IGV4cGFuc2lvbiBhbGdvcml0aG0uCiAqCiAqIFRoZSBBRVMgYWxnb3JpdGhtIHRha2VzIHRoZSBDaXBoZXIgS2V5LCBLLCBhbmQgcGVyZm9ybXMgYSBLZXkgRXhwYW5zaW9uCiAqIHJvdXRpbmUgdG8gZ2VuZXJhdGUgYSBrZXkgc2NoZWR1bGUuIFRoZSBLZXkgRXhwYW5zaW9uIGdlbmVyYXRlcyBhIHRvdGFsCiAqIG9mIE5iKihOciArIDEpIHdvcmRzOiB0aGUgYWxnb3JpdGhtIHJlcXVpcmVzIGFuIGluaXRpYWwgc2V0IG9mIE5iIHdvcmRzLAogKiBhbmQgZWFjaCBvZiB0aGUgTnIgcm91bmRzIHJlcXVpcmVzIE5iIHdvcmRzIG9mIGtleSBkYXRhLiBUaGUgcmVzdWx0aW5nCiAqIGtleSBzY2hlZHVsZSBjb25zaXN0cyBvZiBhIGxpbmVhciBhcnJheSBvZiA0LWJ5dGUgd29yZHMsIGRlbm90ZWQgW3dpIF0sCiAqIHdpdGggaSBpbiB0aGUgcmFuZ2UgMCDiiaQgaSA8IE5iKE5yICsgMSkuCiAqCiAqIEtleUV4cGFuc2lvbihieXRlIGtleVs0Kk5rXSwgd29yZCB3W05iKihOcisxKV0sIE5rKQogKiBBRVMtMTI4IChOYj00LCBOaz00LCBOcj0xMCkKICogQUVTLTE5MiAoTmI9NCwgTms9NiwgTnI9MTIpCiAqIEFFUy0yNTYgKE5iPTQsIE5rPTgsIE5yPTE0KQogKiBOb3RlOiBOcj1Oays2LgogKgogKiBOYiBpcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgKDMyLWJpdCB3b3JkcykgY29tcHJpc2luZyB0aGUgU3RhdGUgKG9yCiAqIG51bWJlciBvZiBieXRlcyBpbiBhIGJsb2NrKS4gRm9yIEFFUywgTmI9NC4KICoKICogQHBhcmFtIGtleSB0aGUga2V5IHRvIHNjaGVkdWxlIChhcyBhbiBhcnJheSBvZiAzMi1iaXQgd29yZHMpLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIHRvIG1vZGlmeSB0aGUga2V5IHNjaGVkdWxlIHRvIGRlY3J5cHQsIGZhbHNlIG5vdCB0by4KICoKICogQHJldHVybiB0aGUgZ2VuZXJhdGVkIGtleSBzY2hlZHVsZS4KICovCmZ1bmN0aW9uIF9leHBhbmRLZXkoa2V5LCBkZWNyeXB0KSB7CiAgLy8gY29weSB0aGUga2V5J3Mgd29yZHMgdG8gaW5pdGlhbGl6ZSB0aGUga2V5IHNjaGVkdWxlCiAgdmFyIHcgPSBrZXkuc2xpY2UoMCk7CgogIC8qIFJvdFdvcmQoKSB3aWxsIHJvdGF0ZSBhIHdvcmQsIG1vdmluZyB0aGUgZmlyc3QgYnl0ZSB0byB0aGUgbGFzdAogICAgYnl0ZSdzIHBvc2l0aW9uIChzaGlmdGluZyB0aGUgb3RoZXIgYnl0ZXMgbGVmdCkuCgogICAgV2Ugd2lsbCBiZSBnZXR0aW5nIHRoZSB2YWx1ZSBvZiBSY29uIGF0IGkgLyBOay4gJ2knIHdpbGwgaXRlcmF0ZQogICAgZnJvbSBOayB0byAoTmIgKiBOcisxKS4gTmsgPSA0ICg0IGJ5dGUga2V5KSwgTmIgPSA0ICg0IHdvcmRzIGluCiAgICBhIGJsb2NrKSwgTnIgPSBOayArIDYgKDEwKS4gVGhlcmVmb3JlICdpJyB3aWxsIGl0ZXJhdGUgZnJvbQogICAgNCB0byA0NCAoZXhjbHVzaXZlKS4gRWFjaCB0aW1lIHdlIGl0ZXJhdGUgNCB0aW1lcywgaSAvIE5rIHdpbGwKICAgIGluY3JlYXNlIGJ5IDEuIFdlIHVzZSBhIGNvdW50ZXIgaU5rIHRvIGtlZXAgdHJhY2sgb2YgdGhpcy4KICAgKi8KCiAgLy8gZ28gdGhyb3VnaCB0aGUgcm91bmRzIGV4cGFuZGluZyB0aGUga2V5CiAgdmFyIHRlbXAsIGlOayA9IDE7CiAgdmFyIE5rID0gdy5sZW5ndGg7CiAgdmFyIE5yMSA9IE5rICsgNiArIDE7CiAgdmFyIGVuZCA9IE5iICogTnIxOwogIGZvcih2YXIgaSA9IE5rOyBpIDwgZW5kOyArK2kpIHsKICAgIHRlbXAgPSB3W2kgLSAxXTsKICAgIGlmKGkgJSBOayA9PT0gMCkgewogICAgICAvLyB0ZW1wID0gU3ViV29yZChSb3RXb3JkKHRlbXApKSBeIFJjb25baSAvIE5rXQogICAgICB0ZW1wID0KICAgICAgICBzYm94W3RlbXAgPj4+IDE2ICYgMjU1XSA8PCAyNCBeCiAgICAgICAgc2JveFt0ZW1wID4+PiA4ICYgMjU1XSA8PCAxNiBeCiAgICAgICAgc2JveFt0ZW1wICYgMjU1XSA8PCA4IF4KICAgICAgICBzYm94W3RlbXAgPj4+IDI0XSBeIChyY29uW2lOa10gPDwgMjQpOwogICAgICBpTmsrKzsKICAgIH0gZWxzZSBpZihOayA+IDYgJiYgKGkgJSBOayA9PT0gNCkpIHsKICAgICAgLy8gdGVtcCA9IFN1YldvcmQodGVtcCkKICAgICAgdGVtcCA9CiAgICAgICAgc2JveFt0ZW1wID4+PiAyNF0gPDwgMjQgXgogICAgICAgIHNib3hbdGVtcCA+Pj4gMTYgJiAyNTVdIDw8IDE2IF4KICAgICAgICBzYm94W3RlbXAgPj4+IDggJiAyNTVdIDw8IDggXgogICAgICAgIHNib3hbdGVtcCAmIDI1NV07CiAgICB9CiAgICB3W2ldID0gd1tpIC0gTmtdIF4gdGVtcDsKICB9CgogICAvKiBXaGVuIHdlIGFyZSB1cGRhdGluZyBhIGNpcGhlciBibG9jayB3ZSBhbHdheXMgdXNlIHRoZSBjb2RlIHBhdGggZm9yCiAgICAgZW5jcnlwdGlvbiB3aGV0aGVyIHdlIGFyZSBkZWNyeXB0aW5nIG9yIG5vdCAodG8gc2hvcnRlbiBjb2RlIGFuZAogICAgIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mIGxvb2sgdXAgdGFibGVzKS4gSG93ZXZlciwgYmVjYXVzZSB0aGVyZQogICAgIGFyZSBkaWZmZXJlbmNlcyBpbiB0aGUgZGVjcnlwdGlvbiBhbGdvcml0aG0sIG90aGVyIHRoYW4ganVzdCBzd2FwcGluZwogICAgIGluIGRpZmZlcmVudCBsb29rIHVwIHRhYmxlcywgd2UgbXVzdCB0cmFuc2Zvcm0gb3VyIGtleSBzY2hlZHVsZSB0bwogICAgIGFjY291bnQgZm9yIHRoZXNlIGNoYW5nZXM6CgogICAgIDEuIFRoZSBkZWNyeXB0aW9uIGFsZ29yaXRobSBnZXRzIGl0cyBrZXkgcm91bmRzIGluIHJldmVyc2Ugb3JkZXIuCiAgICAgMi4gVGhlIGRlY3J5cHRpb24gYWxnb3JpdGhtIGFkZHMgdGhlIHJvdW5kIGtleSBiZWZvcmUgbWl4aW5nIGNvbHVtbnMKICAgICAgIGluc3RlYWQgb2YgYWZ0ZXJ3YXJkcy4KCiAgICAgV2UgZG9uJ3QgbmVlZCB0byBtb2RpZnkgb3VyIGtleSBzY2hlZHVsZSB0byBoYW5kbGUgdGhlIGZpcnN0IGNhc2UsCiAgICAgd2UgY2FuIGp1c3QgdHJhdmVyc2UgdGhlIGtleSBzY2hlZHVsZSBpbiByZXZlcnNlIG9yZGVyIHdoZW4gZGVjcnlwdGluZy4KCiAgICAgVGhlIHNlY29uZCBjYXNlIHJlcXVpcmVzIGEgbGl0dGxlIHdvcmsuCgogICAgIFRoZSB0YWJsZXMgd2UgYnVpbHQgZm9yIHBlcmZvcm1pbmcgcm91bmRzIHdpbGwgdGFrZSBhbiBpbnB1dCBhbmQgdGhlbgogICAgIHBlcmZvcm0gU3ViQnl0ZXMoKSBhbmQgTWl4Q29sdW1ucygpIG9yLCBmb3IgdGhlIGRlY3J5cHQgdmVyc2lvbiwKICAgICBJbnZTdWJCeXRlcygpIGFuZCBJbnZNaXhDb2x1bW5zKCkuIEJ1dCB0aGUgZGVjcnlwdCBhbGdvcml0aG0gcmVxdWlyZXMKICAgICB1cyB0byBBZGRSb3VuZEtleSgpIGJlZm9yZSBJbnZNaXhDb2x1bW5zKCkuIFRoaXMgbWVhbnMgd2UnbGwgbmVlZCB0bwogICAgIGFwcGx5IHNvbWUgdHJhbnNmb3JtYXRpb25zIHRvIHRoZSByb3VuZCBrZXkgdG8gaW52ZXJzZS1taXggaXRzIGNvbHVtbnMKICAgICBzbyB0aGV5J2xsIGJlIGNvcnJlY3QgZm9yIG1vdmluZyBBZGRSb3VuZEtleSgpIHRvIGFmdGVyIHRoZSBzdGF0ZSBoYXMKICAgICBoYWQgaXRzIGNvbHVtbnMgaW52ZXJzZS1taXhlZC4KCiAgICAgVG8gaW52ZXJzZS1taXggdGhlIGNvbHVtbnMgb2YgdGhlIHN0YXRlIHdoZW4gd2UncmUgZGVjcnlwdGluZyB3ZSB1c2UgYQogICAgIGxvb2t1cCB0YWJsZSB0aGF0IHdpbGwgYXBwbHkgSW52U3ViQnl0ZXMoKSBhbmQgSW52TWl4Q29sdW1ucygpIGF0IHRoZQogICAgIHNhbWUgdGltZS4gSG93ZXZlciwgdGhlIHJvdW5kIGtleSdzIGJ5dGVzIGFyZSBub3QgaW52ZXJzZS1zdWJzdGl0dXRlZAogICAgIGluIHRoZSBkZWNyeXB0aW9uIGFsZ29yaXRobS4gVG8gZ2V0IGFyb3VuZCB0aGlzIHByb2JsZW0sIHdlIGNhbiBmaXJzdAogICAgIHN1YnN0aXR1dGUgdGhlIGJ5dGVzIGluIHRoZSByb3VuZCBrZXkgc28gdGhhdCB3aGVuIHdlIGFwcGx5IHRoZQogICAgIHRyYW5zZm9ybWF0aW9uIHZpYSB0aGUgSW52U3ViQnl0ZXMoKStJbnZNaXhDb2x1bW5zKCkgdGFibGUsIGl0IHdpbGwKICAgICB1bmRvIG91ciBzdWJzdGl0dXRpb24gbGVhdmluZyB1cyB3aXRoIHRoZSBvcmlnaW5hbCB2YWx1ZSB0aGF0IHdlCiAgICAgd2FudCAtLSBhbmQgdGhlbiBpbnZlcnNlLW1peCB0aGF0IHZhbHVlLgoKICAgICBUaGlzIGNoYW5nZSB3aWxsIGNvcnJlY3RseSBhbHRlciBvdXIga2V5IHNjaGVkdWxlIHNvIHRoYXQgd2UgY2FuIFhPUgogICAgIGVhY2ggcm91bmQga2V5IHdpdGggb3VyIGFscmVhZHkgdHJhbnNmb3JtZWQgZGVjcnlwdGlvbiBzdGF0ZS4gVGhpcwogICAgIGFsbG93cyB1cyB0byB1c2UgdGhlIHNhbWUgY29kZSBwYXRoIGFzIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobS4KCiAgICAgV2UgbWFrZSBvbmUgbW9yZSBjaGFuZ2UgdG8gdGhlIGRlY3J5cHRpb24ga2V5LiBTaW5jZSB0aGUgZGVjcnlwdGlvbgogICAgIGFsZ29yaXRobSBydW5zIGluIHJldmVyc2UgZnJvbSB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0sIHdlIHJldmVyc2UKICAgICB0aGUgb3JkZXIgb2YgdGhlIHJvdW5kIGtleXMgdG8gYXZvaWQgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUga2V5CiAgICAgc2NoZWR1bGUgYmFja3dhcmRzIHdoZW4gcnVubmluZyB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gbGF0ZXIgaW4KICAgICBkZWNyeXB0aW9uIG1vZGUuIEluIGFkZGl0aW9uIHRvIHJldmVyc2luZyB0aGUgb3JkZXIgb2YgdGhlIHJvdW5kIGtleXMsCiAgICAgd2UgYWxzbyBzd2FwIGVhY2ggcm91bmQga2V5J3MgMm5kIGFuZCA0dGggcm93cy4gU2VlIHRoZSBjb21tZW50cwogICAgIHNlY3Rpb24gd2hlcmUgcm91bmRzIGFyZSBwZXJmb3JtZWQgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB3aHkgdGhpcyBpcwogICAgIGRvbmUuIFRoZXNlIGNoYW5nZXMgYXJlIGRvbmUgaW5saW5lIHdpdGggdGhlIG90aGVyIHN1YnN0aXR1dGlvbgogICAgIGRlc2NyaWJlZCBhYm92ZS4KICAqLwogIGlmKGRlY3J5cHQpIHsKICAgIHZhciB0bXA7CiAgICB2YXIgbTAgPSBpbWl4WzBdOwogICAgdmFyIG0xID0gaW1peFsxXTsKICAgIHZhciBtMiA9IGltaXhbMl07CiAgICB2YXIgbTMgPSBpbWl4WzNdOwogICAgdmFyIHduZXcgPSB3LnNsaWNlKDApOwogICAgZW5kID0gdy5sZW5ndGg7CiAgICBmb3IodmFyIGkgPSAwLCB3aSA9IGVuZCAtIE5iOyBpIDwgZW5kOyBpICs9IE5iLCB3aSAtPSBOYikgewogICAgICAvLyBkbyBub3Qgc3ViIHRoZSBmaXJzdCBvciBsYXN0IHJvdW5kIGtleSAocm91bmQga2V5cyBhcmUgTmIKICAgICAgLy8gd29yZHMpIGFzIG5vIGNvbHVtbiBtaXhpbmcgaXMgcGVyZm9ybWVkIGJlZm9yZSB0aGV5IGFyZSBhZGRlZCwKICAgICAgLy8gYnV0IGRvIGNoYW5nZSB0aGUga2V5IG9yZGVyCiAgICAgIGlmKGkgPT09IDAgfHwgaSA9PT0gKGVuZCAtIE5iKSkgewogICAgICAgIHduZXdbaV0gPSB3W3dpXTsKICAgICAgICB3bmV3W2kgKyAxXSA9IHdbd2kgKyAzXTsKICAgICAgICB3bmV3W2kgKyAyXSA9IHdbd2kgKyAyXTsKICAgICAgICB3bmV3W2kgKyAzXSA9IHdbd2kgKyAxXTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBzdWJzdGl0dXRlIGVhY2ggcm91bmQga2V5IGJ5dGUgYmVjYXVzZSB0aGUgaW52ZXJzZS1taXgKICAgICAgICAvLyB0YWJsZSB3aWxsIGludmVyc2Utc3Vic3RpdHV0ZSBpdCAoZWZmZWN0aXZlbHkgY2FuY2VsIHRoZQogICAgICAgIC8vIHN1YnN0aXR1dGlvbiBiZWNhdXNlIHJvdW5kIGtleSBieXRlcyBhcmVuJ3Qgc3ViJ2QgaW4KICAgICAgICAvLyBkZWNyeXB0aW9uIG1vZGUpIGFuZCBzd2FwIGluZGV4ZXMgMyBhbmQgMQogICAgICAgIGZvcih2YXIgbiA9IDA7IG4gPCBOYjsgKytuKSB7CiAgICAgICAgICB0bXAgPSB3W3dpICsgbl07CiAgICAgICAgICB3bmV3W2kgKyAoMyYtbildID0KICAgICAgICAgICAgbTBbc2JveFt0bXAgPj4+IDI0XV0gXgogICAgICAgICAgICBtMVtzYm94W3RtcCA+Pj4gMTYgJiAyNTVdXSBeCiAgICAgICAgICAgIG0yW3Nib3hbdG1wID4+PiA4ICYgMjU1XV0gXgogICAgICAgICAgICBtM1tzYm94W3RtcCAmIDI1NV1dOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgdyA9IHduZXc7CiAgfQoKICByZXR1cm4gdzsKfQoKLyoqCiAqIFVwZGF0ZXMgYSBzaW5nbGUgYmxvY2sgKDE2IGJ5dGVzKSB1c2luZyBBRVMuIFRoZSB1cGRhdGUgd2lsbCBlaXRoZXIKICogZW5jcnlwdCBvciBkZWNyeXB0IHRoZSBibG9jay4KICoKICogQHBhcmFtIHcgdGhlIGtleSBzY2hlZHVsZS4KICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBibG9jayAoYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzKS4KICogQHBhcmFtIG91dHB1dCB0aGUgdXBkYXRlZCBvdXRwdXQgYmxvY2suCiAqIEBwYXJhbSBkZWNyeXB0IHRydWUgdG8gZGVjcnlwdCB0aGUgYmxvY2ssIGZhbHNlIHRvIGVuY3J5cHQgaXQuCiAqLwpmdW5jdGlvbiBfdXBkYXRlQmxvY2sodywgaW5wdXQsIG91dHB1dCwgZGVjcnlwdCkgewogIC8qCiAgQ2lwaGVyKGJ5dGUgaW5bNCpOYl0sIGJ5dGUgb3V0WzQqTmJdLCB3b3JkIHdbTmIqKE5yKzEpXSkKICBiZWdpbgogICAgYnl0ZSBzdGF0ZVs0LE5iXQogICAgc3RhdGUgPSBpbgogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbMCwgTmItMV0pCiAgICBmb3Igcm91bmQgPSAxIHN0ZXAgMSB0byBOcuKAkzEKICAgICAgU3ViQnl0ZXMoc3RhdGUpCiAgICAgIFNoaWZ0Um93cyhzdGF0ZSkKICAgICAgTWl4Q29sdW1ucyhzdGF0ZSkKICAgICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbcm91bmQqTmIsIChyb3VuZCsxKSpOYi0xXSkKICAgIGVuZCBmb3IKICAgIFN1YkJ5dGVzKHN0YXRlKQogICAgU2hpZnRSb3dzKHN0YXRlKQogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbTnIqTmIsIChOcisxKSpOYi0xXSkKICAgIG91dCA9IHN0YXRlCiAgZW5kCgogIEludkNpcGhlcihieXRlIGluWzQqTmJdLCBieXRlIG91dFs0Kk5iXSwgd29yZCB3W05iKihOcisxKV0pCiAgYmVnaW4KICAgIGJ5dGUgc3RhdGVbNCxOYl0KICAgIHN0YXRlID0gaW4KICAgIEFkZFJvdW5kS2V5KHN0YXRlLCB3W05yKk5iLCAoTnIrMSkqTmItMV0pCiAgICBmb3Igcm91bmQgPSBOci0xIHN0ZXAgLTEgZG93bnRvIDEKICAgICAgSW52U2hpZnRSb3dzKHN0YXRlKQogICAgICBJbnZTdWJCeXRlcyhzdGF0ZSkKICAgICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbcm91bmQqTmIsIChyb3VuZCsxKSpOYi0xXSkKICAgICAgSW52TWl4Q29sdW1ucyhzdGF0ZSkKICAgIGVuZCBmb3IKICAgIEludlNoaWZ0Um93cyhzdGF0ZSkKICAgIEludlN1YkJ5dGVzKHN0YXRlKQogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbMCwgTmItMV0pCiAgICBvdXQgPSBzdGF0ZQogIGVuZAogICovCgogIC8vIEVuY3J5cHQ6IEFkZFJvdW5kS2V5KHN0YXRlLCB3WzAsIE5iLTFdKQogIC8vIERlY3J5cHQ6IEFkZFJvdW5kS2V5KHN0YXRlLCB3W05yKk5iLCAoTnIrMSkqTmItMV0pCiAgdmFyIE5yID0gdy5sZW5ndGggLyA0IC0gMTsKICB2YXIgbTAsIG0xLCBtMiwgbTMsIHN1YjsKICBpZihkZWNyeXB0KSB7CiAgICBtMCA9IGltaXhbMF07CiAgICBtMSA9IGltaXhbMV07CiAgICBtMiA9IGltaXhbMl07CiAgICBtMyA9IGltaXhbM107CiAgICBzdWIgPSBpc2JveDsKICB9IGVsc2UgewogICAgbTAgPSBtaXhbMF07CiAgICBtMSA9IG1peFsxXTsKICAgIG0yID0gbWl4WzJdOwogICAgbTMgPSBtaXhbM107CiAgICBzdWIgPSBzYm94OwogIH0KICB2YXIgYSwgYiwgYywgZCwgYTIsIGIyLCBjMjsKICBhID0gaW5wdXRbMF0gXiB3WzBdOwogIGIgPSBpbnB1dFtkZWNyeXB0ID8gMyA6IDFdIF4gd1sxXTsKICBjID0gaW5wdXRbMl0gXiB3WzJdOwogIGQgPSBpbnB1dFtkZWNyeXB0ID8gMSA6IDNdIF4gd1szXTsKICB2YXIgaSA9IDM7CgogIC8qIEluIG9yZGVyIHRvIHNoYXJlIGNvZGUgd2UgZm9sbG93IHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB3aGVuIGJvdGgKICAgIGVuY3J5cHRpbmcgYW5kIGRlY3J5cHRpbmcuIFRvIGFjY291bnQgZm9yIHRoZSBjaGFuZ2VzIHJlcXVpcmVkIGluIHRoZQogICAgZGVjcnlwdGlvbiBhbGdvcml0aG0sIHdlIHVzZSBkaWZmZXJlbnQgbG9va3VwIHRhYmxlcyB3aGVuIGRlY3J5cHRpbmcKICAgIGFuZCB1c2UgYSBtb2RpZmllZCBrZXkgc2NoZWR1bGUgdG8gYWNjb3VudCBmb3IgdGhlIGRpZmZlcmVuY2UgaW4gdGhlCiAgICBvcmRlciBvZiB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZCB3aGVuIHBlcmZvcm1pbmcgcm91bmRzLiBXZSBhbHNvIGdldAogICAga2V5IHJvdW5kcyBpbiByZXZlcnNlIG9yZGVyIChyZWxhdGl2ZSB0byBlbmNyeXB0aW9uKS4gKi8KICBmb3IodmFyIHJvdW5kID0gMTsgcm91bmQgPCBOcjsgKytyb3VuZCkgewogICAgLyogQXMgZGVzY3JpYmVkIGFib3ZlLCB3ZSdsbCBiZSB1c2luZyB0YWJsZSBsb29rdXBzIHRvIHBlcmZvcm0gdGhlCiAgICAgIGNvbHVtbiBtaXhpbmcuIEVhY2ggY29sdW1uIGlzIHN0b3JlZCBhcyBhIHdvcmQgaW4gdGhlIHN0YXRlICh0aGUKICAgICAgYXJyYXkgJ2lucHV0JyBoYXMgb25lIGNvbHVtbiBhcyBhIHdvcmQgYXQgZWFjaCBpbmRleCkuIEluIG9yZGVyIHRvCiAgICAgIG1peCBhIGNvbHVtbiwgd2UgcGVyZm9ybSB0aGVzZSB0cmFuc2Zvcm1hdGlvbnMgb24gZWFjaCByb3cgaW4gYywKICAgICAgd2hpY2ggaXMgMSBieXRlIGluIGVhY2ggd29yZC4gVGhlIG5ldyBjb2x1bW4gZm9yIGMwIGlzIGMnMDoKCiAgICAgICAgICAgICAgIG0wICAgICAgbTEgICAgICBtMiAgICAgIG0zCiAgICAgIHIwLGMnMCA9IDIqcjAsYzAgKyAzKnIxLGMwICsgMSpyMixjMCArIDEqcjMsYzAKICAgICAgcjEsYycwID0gMSpyMCxjMCArIDIqcjEsYzAgKyAzKnIyLGMwICsgMSpyMyxjMAogICAgICByMixjJzAgPSAxKnIwLGMwICsgMSpyMSxjMCArIDIqcjIsYzAgKyAzKnIzLGMwCiAgICAgIHIzLGMnMCA9IDMqcjAsYzAgKyAxKnIxLGMwICsgMSpyMixjMCArIDIqcjMsYzAKCiAgICAgIFNvIHVzaW5nIG1peCB0YWJsZXMgd2hlcmUgYzAgaXMgYSB3b3JkIHdpdGggcjAgYmVpbmcgaXRzIHVwcGVyCiAgICAgIDggYml0cyBhbmQgcjMgYmVpbmcgaXRzIGxvd2VyIDggYml0czoKCiAgICAgIG0wW2MwID4+IDI0XSB3aWxsIHlpZWxkIHRoaXMgd29yZDogWzIqcjAsMSpyMCwxKnIwLDMqcjBdCiAgICAgIC4uLgogICAgICBtM1tjMCAmIDI1NV0gd2lsbCB5aWVsZCB0aGlzIHdvcmQ6IFsxKnIzLDEqcjMsMypyMywyKnIzXQoKICAgICAgVGhlcmVmb3JlIHRvIG1peCB0aGUgY29sdW1ucyBpbiBlYWNoIHdvcmQgaW4gdGhlIHN0YXRlIHdlCiAgICAgIGRvIHRoZSBmb2xsb3dpbmcgKCYgMjU1IG9taXR0ZWQgZm9yIGJyZXZpdHkpOgogICAgICBjJzAscjAgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQogICAgICBjJzAscjEgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQogICAgICBjJzAscjIgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQogICAgICBjJzAscjMgPSBtMFtjMCA+PiAyNF0gXiBtMVtjMSA+PiAxNl0gXiBtMltjMiA+PiA4XSBeIG0zW2MzXQoKICAgICAgSG93ZXZlciwgYmVmb3JlIG1peGluZywgdGhlIGFsZ29yaXRobSByZXF1aXJlcyB1cyB0byBwZXJmb3JtCiAgICAgIFNoaWZ0Um93cygpLiBUaGUgU2hpZnRSb3dzKCkgdHJhbnNmb3JtYXRpb24gY3ljbGljYWxseSBzaGlmdHMgdGhlCiAgICAgIGxhc3QgMyByb3dzIG9mIHRoZSBzdGF0ZSBvdmVyIGRpZmZlcmVudCBvZmZzZXRzLiBUaGUgZmlyc3Qgcm93CiAgICAgIChyID0gMCkgaXMgbm90IHNoaWZ0ZWQuCgogICAgICBzJ19yLGMgPSBzX3IsKGMgKyBzaGlmdChyLCBOYikgbW9kIE5iCiAgICAgIGZvciAwIDwgciA8IDQgYW5kIDAgPD0gYyA8IE5iIGFuZAogICAgICBzaGlmdCgxLCA0KSA9IDEKICAgICAgc2hpZnQoMiwgNCkgPSAyCiAgICAgIHNoaWZ0KDMsIDQpID0gMy4KCiAgICAgIFRoaXMgY2F1c2VzIHRoZSBmaXJzdCBieXRlIGluIHIgPSAxIHRvIGJlIG1vdmVkIHRvIHRoZSBlbmQgb2YKICAgICAgdGhlIHJvdywgdGhlIGZpcnN0IDIgYnl0ZXMgaW4gciA9IDIgdG8gYmUgbW92ZWQgdG8gdGhlIGVuZCBvZgogICAgICB0aGUgcm93LCB0aGUgZmlyc3QgMyBieXRlcyBpbiByID0gMyB0byBiZSBtb3ZlZCB0byB0aGUgZW5kIG9mCiAgICAgIHRoZSByb3c6CgogICAgICByMTogW2MwIGMxIGMyIGMzXSA9PiBbYzEgYzIgYzMgYzBdCiAgICAgIHIyOiBbYzAgYzEgYzIgYzNdICAgIFtjMiBjMyBjMCBjMV0KICAgICAgcjM6IFtjMCBjMSBjMiBjM10gICAgW2MzIGMwIGMxIGMyXQoKICAgICAgV2UgY2FuIG1ha2UgdGhlc2Ugc3Vic3RpdHV0aW9ucyBpbmxpbmUgd2l0aCBvdXIgY29sdW1uIG1peGluZyB0bwogICAgICBnZW5lcmF0ZSBhbiB1cGRhdGVkIHNldCBvZiBlcXVhdGlvbnMgdG8gcHJvZHVjZSBlYWNoIHdvcmQgaW4gdGhlCiAgICAgIHN0YXRlIChub3RlIHRoZSBjb2x1bW5zIGhhdmUgY2hhbmdlZCBwb3NpdGlvbnMpOgoKICAgICAgYzAgYzEgYzIgYzMgPT4gYzAgYzEgYzIgYzMKICAgICAgYzAgYzEgYzIgYzMgICAgYzEgYzIgYzMgYzAgIChjeWNsZWQgMSBieXRlKQogICAgICBjMCBjMSBjMiBjMyAgICBjMiBjMyBjMCBjMSAgKGN5Y2xlZCAyIGJ5dGVzKQogICAgICBjMCBjMSBjMiBjMyAgICBjMyBjMCBjMSBjMiAgKGN5Y2xlZCAzIGJ5dGVzKQoKICAgICAgVGhlcmVmb3JlOgoKICAgICAgYycwID0gMipyMCxjMCArIDMqcjEsYzEgKyAxKnIyLGMyICsgMSpyMyxjMwogICAgICBjJzAgPSAxKnIwLGMwICsgMipyMSxjMSArIDMqcjIsYzIgKyAxKnIzLGMzCiAgICAgIGMnMCA9IDEqcjAsYzAgKyAxKnIxLGMxICsgMipyMixjMiArIDMqcjMsYzMKICAgICAgYycwID0gMypyMCxjMCArIDEqcjEsYzEgKyAxKnIyLGMyICsgMipyMyxjMwoKICAgICAgYycxID0gMipyMCxjMSArIDMqcjEsYzIgKyAxKnIyLGMzICsgMSpyMyxjMAogICAgICBjJzEgPSAxKnIwLGMxICsgMipyMSxjMiArIDMqcjIsYzMgKyAxKnIzLGMwCiAgICAgIGMnMSA9IDEqcjAsYzEgKyAxKnIxLGMyICsgMipyMixjMyArIDMqcjMsYzAKICAgICAgYycxID0gMypyMCxjMSArIDEqcjEsYzIgKyAxKnIyLGMzICsgMipyMyxjMAoKICAgICAgLi4uIGFuZCBzbyBmb3J0aCBmb3IgYycyIGFuZCBjJzMuIFRoZSBpbXBvcnRhbnQgZGlzdGluY3Rpb24gaXMKICAgICAgdGhhdCB0aGUgY29sdW1ucyBhcmUgY3ljbGluZywgd2l0aCBjMCBiZWluZyB1c2VkIHdpdGggdGhlIG0wCiAgICAgIG1hcCB3aGVuIGNhbGN1bGF0aW5nIGMwLCBidXQgYzEgYmVpbmcgdXNlZCB3aXRoIHRoZSBtMCBtYXAgd2hlbgogICAgICBjYWxjdWxhdGluZyBjMSAuLi4gYW5kIHNvIGZvcnRoLgoKICAgICAgV2hlbiBwZXJmb3JtaW5nIHRoZSBpbnZlcnNlIHdlIHRyYW5zZm9ybSB0aGUgbWlycm9yIGltYWdlIGFuZAogICAgICBza2lwIHRoZSBib3R0b20gcm93LCBpbnN0ZWFkIG9mIHRoZSB0b3Agb25lLCBhbmQgbW92ZSB1cHdhcmRzOgoKICAgICAgYzMgYzIgYzEgYzAgPT4gYzAgYzMgYzIgYzEgIChjeWNsZWQgMyBieXRlcykgKnNhbWUgYXMgZW5jcnlwdGlvbgogICAgICBjMyBjMiBjMSBjMCAgICBjMSBjMCBjMyBjMiAgKGN5Y2xlZCAyIGJ5dGVzKQogICAgICBjMyBjMiBjMSBjMCAgICBjMiBjMSBjMCBjMyAgKGN5Y2xlZCAxIGJ5dGUpICAqc2FtZSBhcyBlbmNyeXB0aW9uCiAgICAgIGMzIGMyIGMxIGMwICAgIGMzIGMyIGMxIGMwCgogICAgICBJZiB5b3UgY29tcGFyZSB0aGUgcmVzdWx0aW5nIG1hdHJpY2VzIGZvciBTaGlmdFJvd3MoKStNaXhDb2x1bW5zKCkKICAgICAgYW5kIGZvciBJbnZTaGlmdFJvd3MoKStJbnZNaXhDb2x1bW5zKCkgdGhlIDJuZCBhbmQgNHRoIGNvbHVtbnMgYXJlCiAgICAgIGRpZmZlcmVudCAoaW4gZW5jcnlwdCBtb2RlIHZzLiBkZWNyeXB0IG1vZGUpLiBTbyBpbiBvcmRlciB0byB1c2UKICAgICAgdGhlIHNhbWUgY29kZSB0byBoYW5kbGUgYm90aCBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCB3ZSB3aWxsCiAgICAgIG5lZWQgdG8gZG8gc29tZSBtYXBwaW5nLgoKICAgICAgSWYgaW4gZW5jcnlwdGlvbiBtb2RlIHdlIGxldCBhPWMwLCBiPWMxLCBjPWMyLCBkPWMzLCBhbmQgcjxOPiBiZQogICAgICBhIHJvdyBudW1iZXIgaW4gdGhlIHN0YXRlLCB0aGVuIHRoZSByZXN1bHRpbmcgbWF0cml4IGluIGVuY3J5cHRpb24KICAgICAgbW9kZSBmb3IgYXBwbHlpbmcgdGhlIGFib3ZlIHRyYW5zZm9ybWF0aW9ucyB3b3VsZCBiZToKCiAgICAgIHIxOiBhIGIgYyBkCiAgICAgIHIyOiBiIGMgZCBhCiAgICAgIHIzOiBjIGQgYSBiCiAgICAgIHI0OiBkIGEgYiBjCgogICAgICBJZiB3ZSBkaWQgdGhlIHNhbWUgaW4gZGVjcnlwdGlvbiBtb2RlIHdlIHdvdWxkIGdldDoKCiAgICAgIHIxOiBhIGQgYyBiCiAgICAgIHIyOiBiIGEgZCBjCiAgICAgIHIzOiBjIGIgYSBkCiAgICAgIHI0OiBkIGMgYiBhCgogICAgICBJZiBpbnN0ZWFkIHdlIHN3YXAgZCBhbmQgYiAoc2V0IGI9YzMgYW5kIGQ9YzEpLCB0aGVuIHdlIGdldDoKCiAgICAgIHIxOiBhIGIgYyBkCiAgICAgIHIyOiBkIGEgYiBjCiAgICAgIHIzOiBjIGQgYSBiCiAgICAgIHI0OiBiIGMgZCBhCgogICAgICBOb3cgdGhlIDFzdCBhbmQgM3JkIHJvd3MgYXJlIHRoZSBzYW1lIGFzIHRoZSBlbmNyeXB0aW9uIG1hdHJpeC4gQWxsCiAgICAgIHdlIG5lZWQgdG8gZG8gdGhlbiB0byBtYWtlIHRoZSBtYXBwaW5nIGV4YWN0bHkgdGhlIHNhbWUgaXMgdG8gc3dhcAogICAgICB0aGUgMm5kIGFuZCA0dGggcm93cyB3aGVuIGluIGRlY3J5cHRpb24gbW9kZS4gVG8gZG8gdGhpcyB3aXRob3V0CiAgICAgIGhhdmluZyB0byBkbyBpdCBvbiBlYWNoIGl0ZXJhdGlvbiwgd2Ugc3dhcHBlZCB0aGUgMm5kIGFuZCA0dGggcm93cwogICAgICBpbiB0aGUgZGVjcnlwdGlvbiBrZXkgc2NoZWR1bGUuIFdlIGFsc28gaGF2ZSB0byBkbyB0aGUgc3dhcCBhYm92ZQogICAgICB3aGVuIHdlIGZpcnN0IHB1bGwgaW4gdGhlIGlucHV0IGFuZCB3aGVuIHdlIHNldCB0aGUgZmluYWwgb3V0cHV0LiAqLwogICAgYTIgPQogICAgICBtMFthID4+PiAyNF0gXgogICAgICBtMVtiID4+PiAxNiAmIDI1NV0gXgogICAgICBtMltjID4+PiA4ICYgMjU1XSBeCiAgICAgIG0zW2QgJiAyNTVdIF4gd1srK2ldOwogICAgYjIgPQogICAgICBtMFtiID4+PiAyNF0gXgogICAgICBtMVtjID4+PiAxNiAmIDI1NV0gXgogICAgICBtMltkID4+PiA4ICYgMjU1XSBeCiAgICAgIG0zW2EgJiAyNTVdIF4gd1srK2ldOwogICAgYzIgPQogICAgICBtMFtjID4+PiAyNF0gXgogICAgICBtMVtkID4+PiAxNiAmIDI1NV0gXgogICAgICBtMlthID4+PiA4ICYgMjU1XSBeCiAgICAgIG0zW2IgJiAyNTVdIF4gd1srK2ldOwogICAgZCA9CiAgICAgIG0wW2QgPj4+IDI0XSBeCiAgICAgIG0xW2EgPj4+IDE2ICYgMjU1XSBeCiAgICAgIG0yW2IgPj4+IDggJiAyNTVdIF4KICAgICAgbTNbYyAmIDI1NV0gXiB3WysraV07CiAgICBhID0gYTI7CiAgICBiID0gYjI7CiAgICBjID0gYzI7CiAgfQoKICAvKgogICAgRW5jcnlwdDoKICAgIFN1YkJ5dGVzKHN0YXRlKQogICAgU2hpZnRSb3dzKHN0YXRlKQogICAgQWRkUm91bmRLZXkoc3RhdGUsIHdbTnIqTmIsIChOcisxKSpOYi0xXSkKCiAgICBEZWNyeXB0OgogICAgSW52U2hpZnRSb3dzKHN0YXRlKQogICAgSW52U3ViQnl0ZXMoc3RhdGUpCiAgICBBZGRSb3VuZEtleShzdGF0ZSwgd1swLCBOYi0xXSkKICAgKi8KICAgLy8gTm90ZTogcm93cyBhcmUgc2hpZnRlZCBpbmxpbmUKICBvdXRwdXRbMF0gPQogICAgKHN1YlthID4+PiAyNF0gPDwgMjQpIF4KICAgIChzdWJbYiA+Pj4gMTYgJiAyNTVdIDw8IDE2KSBeCiAgICAoc3ViW2MgPj4+IDggJiAyNTVdIDw8IDgpIF4KICAgIChzdWJbZCAmIDI1NV0pIF4gd1srK2ldOwogIG91dHB1dFtkZWNyeXB0ID8gMyA6IDFdID0KICAgIChzdWJbYiA+Pj4gMjRdIDw8IDI0KSBeCiAgICAoc3ViW2MgPj4+IDE2ICYgMjU1XSA8PCAxNikgXgogICAgKHN1YltkID4+PiA4ICYgMjU1XSA8PCA4KSBeCiAgICAoc3ViW2EgJiAyNTVdKSBeIHdbKytpXTsKICBvdXRwdXRbMl0gPQogICAgKHN1YltjID4+PiAyNF0gPDwgMjQpIF4KICAgIChzdWJbZCA+Pj4gMTYgJiAyNTVdIDw8IDE2KSBeCiAgICAoc3ViW2EgPj4+IDggJiAyNTVdIDw8IDgpIF4KICAgIChzdWJbYiAmIDI1NV0pIF4gd1srK2ldOwogIG91dHB1dFtkZWNyeXB0ID8gMSA6IDNdID0KICAgIChzdWJbZCA+Pj4gMjRdIDw8IDI0KSBeCiAgICAoc3ViW2EgPj4+IDE2ICYgMjU1XSA8PCAxNikgXgogICAgKHN1YltiID4+PiA4ICYgMjU1XSA8PCA4KSBeCiAgICAoc3ViW2MgJiAyNTVdKSBeIHdbKytpXTsKfQoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogZm9yZ2UuY2lwaGVyLmNyZWF0ZUNpcGhlcignQUVTLTxtb2RlPicsIGtleSk7CiAqIGZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlcignQUVTLTxtb2RlPicsIGtleSk7CiAqCiAqIENyZWF0ZXMgYSBkZXByZWNhdGVkIEFFUyBjaXBoZXIgb2JqZWN0LiBUaGlzIG9iamVjdCdzIG1vZGUgd2lsbCBkZWZhdWx0IHRvCiAqIENCQyAoY2lwaGVyLWJsb2NrLWNoYWluaW5nKS4KICoKICogVGhlIGtleSBhbmQgaXYgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nIG9mIGJ5dGVzLCBhbiBhcnJheSBvZiBieXRlcywgYQogKiBieXRlIGJ1ZmZlciwgb3IgYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzLgogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UuCiAqICAgICAgICAgIG91dHB1dCB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvLgogKiAgICAgICAgICBkZWNyeXB0IHRydWUgZm9yIGRlY3J5cHRpb24sIGZhbHNlIGZvciBlbmNyeXB0aW9uLgogKiAgICAgICAgICBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZnVuY3Rpb24gX2NyZWF0ZUNpcGhlcihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIG1vZGUgPSAob3B0aW9ucy5tb2RlIHx8ICdDQkMnKS50b1VwcGVyQ2FzZSgpOwogIHZhciBhbGdvcml0aG0gPSAnQUVTLScgKyBtb2RlOwoKICB2YXIgY2lwaGVyOwogIGlmKG9wdGlvbnMuZGVjcnlwdCkgewogICAgY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0gZWxzZSB7CiAgICBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0KCiAgLy8gYmFja3dhcmRzIGNvbXBhdGlibGUgc3RhcnQgQVBJCiAgdmFyIHN0YXJ0ID0gY2lwaGVyLnN0YXJ0OwogIGNpcGhlci5zdGFydCA9IGZ1bmN0aW9uKGl2LCBvcHRpb25zKSB7CiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogc3VwcG9ydCBzZWNvbmQgYXJnIGFzIG91dHB1dCBidWZmZXIKICAgIHZhciBvdXRwdXQgPSBudWxsOwogICAgaWYob3B0aW9ucyBpbnN0YW5jZW9mIGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcikgewogICAgICBvdXRwdXQgPSBvcHRpb25zOwogICAgICBvcHRpb25zID0ge307CiAgICB9CiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIG9wdGlvbnMub3V0cHV0ID0gb3V0cHV0OwogICAgb3B0aW9ucy5pdiA9IGl2OwogICAgc3RhcnQuY2FsbChjaXBoZXIsIG9wdGlvbnMpOwogIH07CgogIHJldHVybiBjaXBoZXI7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2Flcyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKAogICdqcy9hZXMnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9jaXBoZXInLCAnLi9jaXBoZXJNb2RlcycsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogT2JqZWN0IElEcyBmb3IgQVNOLjEuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UucGtpID0gZm9yZ2UucGtpIHx8IHt9Owp2YXIgb2lkcyA9IGZvcmdlLnBraS5vaWRzID0gZm9yZ2Uub2lkcyA9IGZvcmdlLm9pZHMgfHwge307CgovLyBhbGdvcml0aG0gT0lEcwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEuMSddID0gJ3JzYUVuY3J5cHRpb24nOwpvaWRzWydyc2FFbmNyeXB0aW9uJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOwovLyBOb3RlOiBtZDIgJiBtZDQgbm90IGltcGxlbWVudGVkCi8vb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjInXSA9ICdtZDJXaXRoUlNBRW5jcnlwdGlvbic7Ci8vb2lkc1snbWQyV2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuMic7Ci8vb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjMnXSA9ICdtZDRXaXRoUlNBRW5jcnlwdGlvbic7Ci8vb2lkc1snbWQ0V2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuMyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS40J10gPSAnbWQ1V2l0aFJTQUVuY3J5cHRpb24nOwpvaWRzWydtZDVXaXRoUlNBRW5jcnlwdGlvbiddID0gJzEuMi44NDAuMTEzNTQ5LjEuMS40JzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjUnXSA9ICdzaGExV2l0aFJTQUVuY3J5cHRpb24nOwpvaWRzWydzaGExV2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuNSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS43J10gPSAnUlNBRVMtT0FFUCc7Cm9pZHNbJ1JTQUVTLU9BRVAnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuNyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS44J10gPSAnbWdmMSc7Cm9pZHNbJ21nZjEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuOCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS45J10gPSAncFNwZWNpZmllZCc7Cm9pZHNbJ3BTcGVjaWZpZWQnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuOSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS4xMCddID0gJ1JTQVNTQS1QU1MnOwpvaWRzWydSU0FTU0EtUFNTJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEwJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xLjExJ10gPSAnc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24nOwpvaWRzWydzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbiddID0gJzEuMi44NDAuMTEzNTQ5LjEuMS4xMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMS4xMiddID0gJ3NoYTM4NFdpdGhSU0FFbmNyeXB0aW9uJzsKb2lkc1snc2hhMzg0V2l0aFJTQUVuY3J5cHRpb24nXSA9ICcxLjIuODQwLjExMzU0OS4xLjEuMTInOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEuMTMnXSA9ICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic7Cm9pZHNbJ3NoYTUxMldpdGhSU0FFbmNyeXB0aW9uJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEzJzsKCm9pZHNbJzEuMy4xNC4zLjIuNyddID0gJ2Rlc0NCQyc7Cm9pZHNbJ2Rlc0NCQyddID0gJzEuMy4xNC4zLjIuNyc7CgpvaWRzWycxLjMuMTQuMy4yLjI2J10gPSAnc2hhMSc7Cm9pZHNbJ3NoYTEnXSA9ICcxLjMuMTQuMy4yLjI2JzsKb2lkc1snMi4xNi44NDAuMS4xMDEuMy40LjIuMSddID0gJ3NoYTI1Nic7Cm9pZHNbJ3NoYTI1NiddID0gJzIuMTYuODQwLjEuMTAxLjMuNC4yLjEnOwpvaWRzWycyLjE2Ljg0MC4xLjEwMS4zLjQuMi4yJ10gPSAnc2hhMzg0JzsKb2lkc1snc2hhMzg0J10gPSAnMi4xNi44NDAuMS4xMDEuMy40LjIuMic7Cm9pZHNbJzIuMTYuODQwLjEuMTAxLjMuNC4yLjMnXSA9ICdzaGE1MTInOwpvaWRzWydzaGE1MTInXSA9ICcyLjE2Ljg0MC4xLjEwMS4zLjQuMi4zJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMi41J10gPSAnbWQ1JzsKb2lkc1snbWQ1J10gPSAnMS4yLjg0MC4xMTM1NDkuMi41JzsKCi8vIHBrY3MjNyBjb250ZW50IHR5cGVzCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy4xJ10gPSAnZGF0YSc7Cm9pZHNbJ2RhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy4yJ10gPSAnc2lnbmVkRGF0YSc7Cm9pZHNbJ3NpZ25lZERhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuMic7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy4zJ10gPSAnZW52ZWxvcGVkRGF0YSc7Cm9pZHNbJ2VudmVsb3BlZERhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuMyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy40J10gPSAnc2lnbmVkQW5kRW52ZWxvcGVkRGF0YSc7Cm9pZHNbJ3NpZ25lZEFuZEVudmVsb3BlZERhdGEnXSA9ICcxLjIuODQwLjExMzU0OS4xLjcuNCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuNy41J10gPSAnZGlnZXN0ZWREYXRhJzsKb2lkc1snZGlnZXN0ZWREYXRhJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS43LjUnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjcuNiddID0gJ2VuY3J5cHRlZERhdGEnOwpvaWRzWydlbmNyeXB0ZWREYXRhJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS43LjYnOwoKLy8gcGtjcyM5IG9pZHMKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjEnXSA9ICdlbWFpbEFkZHJlc3MnOwpvaWRzWydlbWFpbEFkZHJlc3MnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4yJ10gPSAndW5zdHJ1Y3R1cmVkTmFtZSc7Cm9pZHNbJ3Vuc3RydWN0dXJlZE5hbWUnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuMic7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4zJ10gPSAnY29udGVudFR5cGUnOwpvaWRzWydjb250ZW50VHlwZSddID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4zJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjQnXSA9ICdtZXNzYWdlRGlnZXN0JzsKb2lkc1snbWVzc2FnZURpZ2VzdCddID0gJzEuMi44NDAuMTEzNTQ5LjEuOS40JzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjUnXSA9ICdzaWduaW5nVGltZSc7Cm9pZHNbJ3NpZ25pbmdUaW1lJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjUnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjkuNiddID0gJ2NvdW50ZXJTaWduYXR1cmUnOwpvaWRzWydjb3VudGVyU2lnbmF0dXJlJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjYnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjkuNyddID0gJ2NoYWxsZW5nZVBhc3N3b3JkJzsKb2lkc1snY2hhbGxlbmdlUGFzc3dvcmQnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuNyc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS44J10gPSAndW5zdHJ1Y3R1cmVkQWRkcmVzcyc7Cm9pZHNbJ3Vuc3RydWN0dXJlZEFkZHJlc3MnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuOCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4xNCddID0gJ2V4dGVuc2lvblJlcXVlc3QnOwpvaWRzWydleHRlbnNpb25SZXF1ZXN0J10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjE0JzsKCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4yMCddID0gJ2ZyaWVuZGx5TmFtZSc7Cm9pZHNbJ2ZyaWVuZGx5TmFtZSddID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4yMCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuOS4yMSddID0gJ2xvY2FsS2V5SWQnOwpvaWRzWydsb2NhbEtleUlkJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS45LjIxJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS45LjIyLjEnXSA9ICd4NTA5Q2VydGlmaWNhdGUnOwpvaWRzWyd4NTA5Q2VydGlmaWNhdGUnXSA9ICcxLjIuODQwLjExMzU0OS4xLjkuMjIuMSc7CgovLyBwa2NzIzEyIHNhZmUgYmFncwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuMSddID0gJ2tleUJhZyc7Cm9pZHNbJ2tleUJhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4xJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjInXSA9ICdwa2NzOFNocm91ZGVkS2V5QmFnJzsKb2lkc1sncGtjczhTaHJvdWRlZEtleUJhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4yJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjMnXSA9ICdjZXJ0QmFnJzsKb2lkc1snY2VydEJhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4zJzsKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjQnXSA9ICdjcmxCYWcnOwpvaWRzWydjcmxCYWcnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNCc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS41J10gPSAnc2VjcmV0QmFnJzsKb2lkc1snc2VjcmV0QmFnJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjUnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNiddID0gJ3NhZmVDb250ZW50c0JhZyc7Cm9pZHNbJ3NhZmVDb250ZW50c0JhZyddID0gJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS42JzsKCi8vIHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gZm9yIHBrY3MjMTIKb2lkc1snMS4yLjg0MC4xMTM1NDkuMS41LjEzJ10gPSAncGtjczVQQkVTMic7Cm9pZHNbJ3BrY3M1UEJFUzInXSA9ICcxLjIuODQwLjExMzU0OS4xLjUuMTMnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjUuMTInXSA9ICdwa2NzNVBCS0RGMic7Cm9pZHNbJ3BrY3M1UEJLREYyJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS41LjEyJzsKCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS4xJ10gPSAncGJlV2l0aFNIQUFuZDEyOEJpdFJDNCc7Cm9pZHNbJ3BiZVdpdGhTSEFBbmQxMjhCaXRSQzQnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEuMSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS4yJ10gPSAncGJlV2l0aFNIQUFuZDQwQml0UkM0JzsKb2lkc1sncGJlV2l0aFNIQUFuZDQwQml0UkM0J10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjInOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEuMyddID0gJ3BiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMnOwpvaWRzWydwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjMnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEuNCddID0gJ3BiZVdpdGhTSEFBbmQyLUtleVRyaXBsZURFUy1DQkMnOwpvaWRzWydwYmVXaXRoU0hBQW5kMi1LZXlUcmlwbGVERVMtQ0JDJ10gPSAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjQnOwpvaWRzWycxLjIuODQwLjExMzU0OS4xLjEyLjEuNSddID0gJ3BiZVdpdGhTSEFBbmQxMjhCaXRSQzItQ0JDJzsKb2lkc1sncGJlV2l0aFNIQUFuZDEyOEJpdFJDMi1DQkMnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEuNSc7Cm9pZHNbJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS42J10gPSAncGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyc7Cm9pZHNbJ3BiZXdpdGhTSEFBbmQ0MEJpdFJDMi1DQkMnXSA9ICcxLjIuODQwLjExMzU0OS4xLjEyLjEuNic7CgovLyBzeW1tZXRyaWMga2V5IGFsZ29yaXRobSBvaWRzCm9pZHNbJzEuMi44NDAuMTEzNTQ5LjMuNyddID0gJ2Rlcy1FREUzLUNCQyc7Cm9pZHNbJ2Rlcy1FREUzLUNCQyddID0gJzEuMi44NDAuMTEzNTQ5LjMuNyc7Cm9pZHNbJzIuMTYuODQwLjEuMTAxLjMuNC4xLjInXSA9ICdhZXMxMjgtQ0JDJzsKb2lkc1snYWVzMTI4LUNCQyddID0gJzIuMTYuODQwLjEuMTAxLjMuNC4xLjInOwpvaWRzWycyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMiddID0gJ2FlczE5Mi1DQkMnOwpvaWRzWydhZXMxOTItQ0JDJ10gPSAnMi4xNi44NDAuMS4xMDEuMy40LjEuMjInOwpvaWRzWycyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MiddID0gJ2FlczI1Ni1DQkMnOwpvaWRzWydhZXMyNTYtQ0JDJ10gPSAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDInOwoKLy8gY2VydGlmaWNhdGUgaXNzdWVyL3N1YmplY3QgT0lEcwpvaWRzWycyLjUuNC4zJ10gPSAnY29tbW9uTmFtZSc7Cm9pZHNbJ2NvbW1vbk5hbWUnXSA9ICcyLjUuNC4zJzsKb2lkc1snMi41LjQuNSddID0gJ3NlcmlhbE5hbWUnOwpvaWRzWydzZXJpYWxOYW1lJ10gPSAnMi41LjQuNSc7Cm9pZHNbJzIuNS40LjYnXSA9ICdjb3VudHJ5TmFtZSc7Cm9pZHNbJ2NvdW50cnlOYW1lJ10gPSAnMi41LjQuNic7Cm9pZHNbJzIuNS40LjcnXSA9ICdsb2NhbGl0eU5hbWUnOwpvaWRzWydsb2NhbGl0eU5hbWUnXSA9ICcyLjUuNC43JzsKb2lkc1snMi41LjQuOCddID0gJ3N0YXRlT3JQcm92aW5jZU5hbWUnOwpvaWRzWydzdGF0ZU9yUHJvdmluY2VOYW1lJ10gPSAnMi41LjQuOCc7Cm9pZHNbJzIuNS40LjEwJ10gPSAnb3JnYW5pemF0aW9uTmFtZSc7Cm9pZHNbJ29yZ2FuaXphdGlvbk5hbWUnXSA9ICcyLjUuNC4xMCc7Cm9pZHNbJzIuNS40LjExJ10gPSAnb3JnYW5pemF0aW9uYWxVbml0TmFtZSc7Cm9pZHNbJ29yZ2FuaXphdGlvbmFsVW5pdE5hbWUnXSA9ICcyLjUuNC4xMSc7CgovLyBYLjUwOSBleHRlbnNpb24gT0lEcwpvaWRzWycyLjE2Ljg0MC4xLjExMzczMC4xLjEnXSA9ICduc0NlcnRUeXBlJzsKb2lkc1snbnNDZXJ0VHlwZSddID0gJzIuMTYuODQwLjEuMTEzNzMwLjEuMSc7Cm9pZHNbJzIuNS4yOS4xJ10gPSAnYXV0aG9yaXR5S2V5SWRlbnRpZmllcic7IC8vIGRlcHJlY2F0ZWQsIHVzZSAuMzUKb2lkc1snMi41LjI5LjInXSA9ICdrZXlBdHRyaWJ1dGVzJzsgLy8gb2Jzb2xldGUgdXNlIC4zNyBvciAuMTUKb2lkc1snMi41LjI5LjMnXSA9ICdjZXJ0aWZpY2F0ZVBvbGljaWVzJzsgLy8gZGVwcmVjYXRlZCwgdXNlIC4zMgpvaWRzWycyLjUuMjkuNCddID0gJ2tleVVzYWdlUmVzdHJpY3Rpb24nOyAvLyBvYnNvbGV0ZSB1c2UgLjM3IG9yIC4xNQpvaWRzWycyLjUuMjkuNSddID0gJ3BvbGljeU1hcHBpbmcnOyAvLyBkZXByZWNhdGVkIHVzZSAuMzMKb2lkc1snMi41LjI5LjYnXSA9ICdzdWJ0cmVlc0NvbnN0cmFpbnQnOyAvLyBvYnNvbGV0ZSB1c2UgLjMwCm9pZHNbJzIuNS4yOS43J10gPSAnc3ViamVjdEFsdE5hbWUnOyAvLyBkZXByZWNhdGVkIHVzZSAuMTcKb2lkc1snMi41LjI5LjgnXSA9ICdpc3N1ZXJBbHROYW1lJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjE4Cm9pZHNbJzIuNS4yOS45J10gPSAnc3ViamVjdERpcmVjdG9yeUF0dHJpYnV0ZXMnOwpvaWRzWycyLjUuMjkuMTAnXSA9ICdiYXNpY0NvbnN0cmFpbnRzJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjE5Cm9pZHNbJzIuNS4yOS4xMSddID0gJ25hbWVDb25zdHJhaW50cyc7IC8vIGRlcHJlY2F0ZWQgdXNlIC4zMApvaWRzWycyLjUuMjkuMTInXSA9ICdwb2xpY3lDb25zdHJhaW50cyc7IC8vIGRlcHJlY2F0ZWQgdXNlIC4zNgpvaWRzWycyLjUuMjkuMTMnXSA9ICdiYXNpY0NvbnN0cmFpbnRzJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjE5Cm9pZHNbJzIuNS4yOS4xNCddID0gJ3N1YmplY3RLZXlJZGVudGlmaWVyJzsKb2lkc1snc3ViamVjdEtleUlkZW50aWZpZXInXSA9ICcyLjUuMjkuMTQnOwpvaWRzWycyLjUuMjkuMTUnXSA9ICdrZXlVc2FnZSc7Cm9pZHNbJ2tleVVzYWdlJ10gPSAnMi41LjI5LjE1JzsKb2lkc1snMi41LjI5LjE2J10gPSAncHJpdmF0ZUtleVVzYWdlUGVyaW9kJzsKb2lkc1snMi41LjI5LjE3J10gPSAnc3ViamVjdEFsdE5hbWUnOwpvaWRzWydzdWJqZWN0QWx0TmFtZSddID0gJzIuNS4yOS4xNyc7Cm9pZHNbJzIuNS4yOS4xOCddID0gJ2lzc3VlckFsdE5hbWUnOwpvaWRzWydpc3N1ZXJBbHROYW1lJ10gPSAnMi41LjI5LjE4JzsKb2lkc1snMi41LjI5LjE5J10gPSAnYmFzaWNDb25zdHJhaW50cyc7Cm9pZHNbJ2Jhc2ljQ29uc3RyYWludHMnXSA9ICcyLjUuMjkuMTknOwpvaWRzWycyLjUuMjkuMjAnXSA9ICdjUkxOdW1iZXInOwpvaWRzWycyLjUuMjkuMjEnXSA9ICdjUkxSZWFzb24nOwpvaWRzWycyLjUuMjkuMjInXSA9ICdleHBpcmF0aW9uRGF0ZSc7Cm9pZHNbJzIuNS4yOS4yMyddID0gJ2luc3RydWN0aW9uQ29kZSc7Cm9pZHNbJzIuNS4yOS4yNCddID0gJ2ludmFsaWRpdHlEYXRlJzsKb2lkc1snMi41LjI5LjI1J10gPSAnY1JMRGlzdHJpYnV0aW9uUG9pbnRzJzsgLy8gZGVwcmVjYXRlZCB1c2UgLjMxCm9pZHNbJzIuNS4yOS4yNiddID0gJ2lzc3VpbmdEaXN0cmlidXRpb25Qb2ludCc7IC8vIGRlcHJlY2F0ZWQgdXNlIC4yOApvaWRzWycyLjUuMjkuMjcnXSA9ICdkZWx0YUNSTEluZGljYXRvcic7Cm9pZHNbJzIuNS4yOS4yOCddID0gJ2lzc3VpbmdEaXN0cmlidXRpb25Qb2ludCc7Cm9pZHNbJzIuNS4yOS4yOSddID0gJ2NlcnRpZmljYXRlSXNzdWVyJzsKb2lkc1snMi41LjI5LjMwJ10gPSAnbmFtZUNvbnN0cmFpbnRzJzsKb2lkc1snMi41LjI5LjMxJ10gPSAnY1JMRGlzdHJpYnV0aW9uUG9pbnRzJzsKb2lkc1snMi41LjI5LjMyJ10gPSAnY2VydGlmaWNhdGVQb2xpY2llcyc7Cm9pZHNbJzIuNS4yOS4zMyddID0gJ3BvbGljeU1hcHBpbmdzJzsKb2lkc1snMi41LjI5LjM0J10gPSAncG9saWN5Q29uc3RyYWludHMnOyAvLyBkZXByZWNhdGVkIHVzZSAuMzYKb2lkc1snMi41LjI5LjM1J10gPSAnYXV0aG9yaXR5S2V5SWRlbnRpZmllcic7Cm9pZHNbJzIuNS4yOS4zNiddID0gJ3BvbGljeUNvbnN0cmFpbnRzJzsKb2lkc1snMi41LjI5LjM3J10gPSAnZXh0S2V5VXNhZ2UnOwpvaWRzWydleHRLZXlVc2FnZSddID0gJzIuNS4yOS4zNyc7Cm9pZHNbJzIuNS4yOS40NiddID0gJ2ZyZXNoZXN0Q1JMJzsKb2lkc1snMi41LjI5LjU0J10gPSAnaW5oaWJpdEFueVBvbGljeSc7CgovLyBleHRLZXlVc2FnZSBwdXJwb3NlcwpvaWRzWycxLjMuNi4xLjUuNS43LjMuMSddID0gJ3NlcnZlckF1dGgnOwpvaWRzWydzZXJ2ZXJBdXRoJ10gPSAnMS4zLjYuMS41LjUuNy4zLjEnOwpvaWRzWycxLjMuNi4xLjUuNS43LjMuMiddID0gJ2NsaWVudEF1dGgnOwpvaWRzWydjbGllbnRBdXRoJ10gPSAnMS4zLjYuMS41LjUuNy4zLjInOwpvaWRzWycxLjMuNi4xLjUuNS43LjMuMyddID0gJ2NvZGVTaWduaW5nJzsKb2lkc1snY29kZVNpZ25pbmcnXSA9ICcxLjMuNi4xLjUuNS43LjMuMyc7Cm9pZHNbJzEuMy42LjEuNS41LjcuMy40J10gPSAnZW1haWxQcm90ZWN0aW9uJzsKb2lkc1snZW1haWxQcm90ZWN0aW9uJ10gPSAnMS4zLjYuMS41LjUuNy4zLjQnOwpvaWRzWycxLjMuNi4xLjUuNS43LjMuOCddID0gJ3RpbWVTdGFtcGluZyc7Cm9pZHNbJ3RpbWVTdGFtcGluZyddID0gJzEuMy42LjEuNS41LjcuMy44JzsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ29pZHMnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvb2lkcycsWydyZXF1aXJlJywgJ21vZHVsZSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIEFic3RyYWN0IFN5bnRheCBOb3RhdGlvbiBOdW1iZXIgT25lLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKgogKiBBbiBBUEkgZm9yIHN0b3JpbmcgZGF0YSB1c2luZyB0aGUgQWJzdHJhY3QgU3ludGF4IE5vdGF0aW9uIE51bWJlciBPbmUKICogZm9ybWF0IHVzaW5nIERFUiAoRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcykgZW5jb2RpbmcuIFRoaXMgZW5jb2RpbmcgaXMKICogY29tbW9ubHkgdXNlZCB0byBzdG9yZSBkYXRhIGZvciBQS0ksIGkuZS4gWC41MDkgQ2VydGlmaWNhdGVzLCBhbmQgdGhpcwogKiBpbXBsZW1lbnRhdGlvbiBleGlzdHMgZm9yIHRoYXQgcHVycG9zZS4KICoKICogQWJzdHJhY3QgU3ludGF4IE5vdGF0aW9uIE51bWJlciBPbmUgKEFTTi4xKSBpcyB1c2VkIHRvIGRlZmluZSB0aGUgYWJzdHJhY3QKICogc3ludGF4IG9mIGluZm9ybWF0aW9uIHdpdGhvdXQgcmVzdHJpY3RpbmcgdGhlIHdheSB0aGUgaW5mb3JtYXRpb24gaXMgZW5jb2RlZAogKiBmb3IgdHJhbnNtaXNzaW9uLiBJdCBwcm92aWRlcyBhIHN0YW5kYXJkIHRoYXQgYWxsb3dzIGZvciBvcGVuIHN5c3RlbXMKICogY29tbXVuaWNhdGlvbi4gQVNOLjEgZGVmaW5lcyB0aGUgc3ludGF4IG9mIGluZm9ybWF0aW9uIGRhdGEgYW5kIGEgbnVtYmVyIG9mCiAqIHNpbXBsZSBkYXRhIHR5cGVzIGFzIHdlbGwgYXMgYSBub3RhdGlvbiBmb3IgZGVzY3JpYmluZyB0aGVtIGFuZCBzcGVjaWZ5aW5nCiAqIHZhbHVlcyBmb3IgdGhlbS4KICoKICogVGhlIFJTQSBhbGdvcml0aG0gY3JlYXRlcyBwdWJsaWMgYW5kIHByaXZhdGUga2V5cyB0aGF0IGFyZSBvZnRlbiBzdG9yZWQgaW4KICogWC41MDkgb3IgUEtDUyNYIGZvcm1hdHMgLS0gd2hpY2ggdXNlIEFTTi4xIChlbmNvZGVkIGluIERFUiBmb3JtYXQpLiBUaGlzCiAqIGNsYXNzIHByb3ZpZGVzIHRoZSBtb3N0IGJhc2ljIGZ1bmN0aW9uYWxpdHkgcmVxdWlyZWQgdG8gc3RvcmUgYW5kIGxvYWQgRFNBCiAqIGtleXMgdGhhdCBhcmUgZW5jb2RlZCBhY2NvcmRpbmcgdG8gQVNOLjEuCiAqCiAqIFRoZSBtb3N0IGNvbW1vbiBiaW5hcnkgZW5jb2RpbmdzIGZvciBBU04uMSBhcmUgQkVSIChCYXNpYyBFbmNvZGluZyBSdWxlcykKICogYW5kIERFUiAoRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcykuIERFUiBpcyBqdXN0IGEgc3Vic2V0IG9mIEJFUiB0aGF0CiAqIGhhcyBzdHJpY3RlciByZXF1aXJlbWVudHMgZm9yIGhvdyBkYXRhIG11c3QgYmUgZW5jb2RlZC4KICoKICogRWFjaCBBU04uMSBzdHJ1Y3R1cmUgaGFzIGEgdGFnIChhIGJ5dGUgaWRlbnRpZnlpbmcgdGhlIEFTTi4xIHN0cnVjdHVyZSB0eXBlKQogKiBhbmQgYSBieXRlIGFycmF5IGZvciB0aGUgdmFsdWUgb2YgdGhpcyBBU04xIHN0cnVjdHVyZSB3aGljaCBtYXkgYmUgZGF0YSBvciBhCiAqIGxpc3Qgb2YgQVNOLjEgc3RydWN0dXJlcy4KICoKICogRWFjaCBBU04uMSBzdHJ1Y3R1cmUgdXNpbmcgQkVSIGlzIChUYWctTGVuZ3RoLVZhbHVlKToKICoKICogfCBieXRlIDAgfCBieXRlcyBYIHwgYnl0ZXMgWSB8CiAqIHwtLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLQogKiB8ICB0YWcgICB8IGxlbmd0aCAgfCAgdmFsdWUgIHwKICoKICogQVNOLjEgYWxsb3dzIGZvciB0YWdzIHRvIGJlIG9mICJIaWdoLXRhZy1udW1iZXIgZm9ybSIgd2hpY2ggYWxsb3dzIGEgdGFnIHRvCiAqIGJlIHR3byBvciBtb3JlIG9jdGV0cywgYnV0IHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGNsYXNzLiBBIHRhZyBpcwogKiBvbmx5IDEgYnl0ZS4gQml0cyAxLTUgZ2l2ZSB0aGUgdGFnIG51bWJlciAoaWUgdGhlIGRhdGEgdHlwZSB3aXRoaW4gYQogKiBwYXJ0aWN1bGFyICdjbGFzcycpLCA2IGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgQVNOLjEgdmFsdWUgaXMKICogY29uc3RydWN0ZWQgZnJvbSBvdGhlciBBU04uMSB2YWx1ZXMsIGFuZCBiaXRzIDcgYW5kIDggZ2l2ZSB0aGUgJ2NsYXNzJy4gSWYKICogYml0cyA3IGFuZCA4IGFyZSBib3RoIHplcm8sIHRoZSBjbGFzcyBpcyBVTklWRVJTQUwuIElmIG9ubHkgYml0IDcgaXMgc2V0LAogKiB0aGVuIHRoZSBjbGFzcyBpcyBBUFBMSUNBVElPTi4gSWYgb25seSBiaXQgOCBpcyBzZXQsIHRoZW4gdGhlIGNsYXNzIGlzCiAqIENPTlRFWFRfU1BFQ0lGSUMuIElmIGJvdGggYml0cyA3IGFuZCA4IGFyZSBzZXQsIHRoZW4gdGhlIGNsYXNzIGlzIFBSSVZBVEUuCiAqIFRoZSB0YWcgbnVtYmVycyBmb3IgdGhlIGRhdGEgdHlwZXMgZm9yIHRoZSBjbGFzcyBVTklWRVJTQUwgYXJlIGxpc3RlZCBiZWxvdzoKICoKICogVU5JVkVSU0FMIDAgUmVzZXJ2ZWQgZm9yIHVzZSBieSB0aGUgZW5jb2RpbmcgcnVsZXMKICogVU5JVkVSU0FMIDEgQm9vbGVhbiB0eXBlCiAqIFVOSVZFUlNBTCAyIEludGVnZXIgdHlwZQogKiBVTklWRVJTQUwgMyBCaXRzdHJpbmcgdHlwZQogKiBVTklWRVJTQUwgNCBPY3RldHN0cmluZyB0eXBlCiAqIFVOSVZFUlNBTCA1IE51bGwgdHlwZQogKiBVTklWRVJTQUwgNiBPYmplY3QgaWRlbnRpZmllciB0eXBlCiAqIFVOSVZFUlNBTCA3IE9iamVjdCBkZXNjcmlwdG9yIHR5cGUKICogVU5JVkVSU0FMIDggRXh0ZXJuYWwgdHlwZSBhbmQgSW5zdGFuY2Utb2YgdHlwZQogKiBVTklWRVJTQUwgOSBSZWFsIHR5cGUKICogVU5JVkVSU0FMIDEwIEVudW1lcmF0ZWQgdHlwZQogKiBVTklWRVJTQUwgMTEgRW1iZWRkZWQtcGR2IHR5cGUKICogVU5JVkVSU0FMIDEyIFVURjhTdHJpbmcgdHlwZQogKiBVTklWRVJTQUwgMTMgUmVsYXRpdmUgb2JqZWN0IGlkZW50aWZpZXIgdHlwZQogKiBVTklWRVJTQUwgMTQtMTUgUmVzZXJ2ZWQgZm9yIGZ1dHVyZSBlZGl0aW9ucwogKiBVTklWRVJTQUwgMTYgU2VxdWVuY2UgYW5kIFNlcXVlbmNlLW9mIHR5cGVzCiAqIFVOSVZFUlNBTCAxNyBTZXQgYW5kIFNldC1vZiB0eXBlcwogKiBVTklWRVJTQUwgMTgtMjIsIDI1LTMwIENoYXJhY3RlciBzdHJpbmcgdHlwZXMKICogVU5JVkVSU0FMIDIzLTI0IFRpbWUgdHlwZXMKICoKICogVGhlIGxlbmd0aCBvZiBhbiBBU04uMSBzdHJ1Y3R1cmUgaXMgc3BlY2lmaWVkIGFmdGVyIHRoZSB0YWcgaWRlbnRpZmllci4KICogVGhlcmUgaXMgYSBkZWZpbml0ZSBmb3JtIGFuZCBhbiBpbmRlZmluaXRlIGZvcm0uIFRoZSBpbmRlZmluaXRlIGZvcm0gbWF5CiAqIGJlIHVzZWQgaWYgdGhlIGVuY29kaW5nIGlzIGNvbnN0cnVjdGVkIGFuZCBub3QgYWxsIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4KICogVGhlIGluZGVmaW5pdGUgZm9ybSBpcyBlbmNvZGVkIHVzaW5nIGEgbGVuZ3RoIGJ5dGUgd2l0aCBvbmx5IHRoZSA4dGggYml0CiAqIHNldC4gVGhlIGVuZCBvZiB0aGUgY29uc3RydWN0ZWQgb2JqZWN0IGlzIG1hcmtlZCB1c2luZyBlbmQtb2YtY29udGVudHMKICogb2N0ZXRzICh0d28gemVybyBieXRlcykuCiAqCiAqIFRoZSBkZWZpbml0ZSBmb3JtIGxvb2tzIGxpa2UgdGhpczoKICoKICogVGhlIGxlbmd0aCBtYXkgdGFrZSB1cCAxIG9yIG1vcmUgYnl0ZXMsIGl0IGRlcGVuZHMgb24gdGhlIGxlbmd0aCBvZiB0aGUKICogdmFsdWUgb2YgdGhlIEFTTi4xIHN0cnVjdHVyZS4gREVSIGVuY29kaW5nIHJlcXVpcmVzIHRoYXQgaWYgdGhlIEFTTi4xCiAqIHN0cnVjdHVyZSBoYXMgYSB2YWx1ZSB0aGF0IGhhcyBhIGxlbmd0aCBncmVhdGVyIHRoYW4gMTI3LCBtb3JlIHRoYW4gMSBieXRlCiAqIHdpbGwgYmUgdXNlZCB0byBzdG9yZSBpdHMgbGVuZ3RoLCBvdGhlcndpc2UganVzdCBvbmUgYnl0ZSB3aWxsIGJlIHVzZWQuCiAqIFRoaXMgaXMgc3RyaWN0LgogKgogKiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBsZW5ndGggb2YgdGhlIEFTTi4xIHZhbHVlIGlzIGxlc3MgdGhhbiAxMjcsIDEgb2N0ZXQKICogKGJ5dGUpIGlzIHVzZWQgdG8gc3RvcmUgdGhlICJzaG9ydCBmb3JtIiBsZW5ndGguIFRoZSA4dGggYml0IGhhcyBhIHZhbHVlIG9mCiAqIDAgaW5kaWNhdGluZyB0aGUgbGVuZ3RoIGlzICJzaG9ydCBmb3JtIiBhbmQgbm90ICJsb25nIGZvcm0iIGFuZCBiaXRzIDctMQogKiBnaXZlIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEuIChUaGUgOHRoIGJpdCBpcyB0aGUgbGVmdC1tb3N0LCBtb3N0IHNpZ25pZmljYW50CiAqIGJpdDogYWxzbyBrbm93biBhcyBiaWcgZW5kaWFuIG9yIG5ldHdvcmsgZm9ybWF0KS4KICoKICogSW4gdGhlIGNhc2UgdGhhdCB0aGUgbGVuZ3RoIG9mIHRoZSBBU04uMSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gMTI3LCAyIHRvCiAqIDEyNyBvY3RldHMgKGJ5dGVzKSBhcmUgdXNlZCB0byBzdG9yZSB0aGUgImxvbmcgZm9ybSIgbGVuZ3RoLiBUaGUgZmlyc3QKICogYnl0ZSdzIDh0aCBiaXQgaXMgc2V0IHRvIDEgdG8gaW5kaWNhdGUgdGhlIGxlbmd0aCBpcyAibG9uZyBmb3JtLiIgQml0cyA3LTEKICogZ2l2ZSB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgb2N0ZXRzLiBBbGwgZm9sbG93aW5nIG9jdGV0cyBhcmUgaW4gYmFzZSAyNTYKICogd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBmaXJzdCAodHlwaWNhbCBiaWctZW5kaWFuIGJpbmFyeSB1bnNpZ25lZAogKiBpbnRlZ2VyIHN0b3JhZ2UpLiBTbywgZm9yIGluc3RhbmNlLCBpZiB0aGUgbGVuZ3RoIG9mIGEgdmFsdWUgd2FzIDI1NywgdGhlCiAqIGZpcnN0IGJ5dGUgd291bGQgYmUgc2V0IHRvOgogKgogKiAxMDAwMDAxMCA9IDEzMCA9IDB4ODIuCiAqCiAqIFRoaXMgaW5kaWNhdGVzIHRoZXJlIGFyZSAyIG9jdGV0cyAoYmFzZSAyNTYpIGZvciB0aGUgbGVuZ3RoLiBUaGUgc2Vjb25kIGFuZAogKiB0aGlyZCBieXRlcyAodGhlIG9jdGV0cyBqdXN0IG1lbnRpb25lZCkgd291bGQgc3RvcmUgdGhlIGxlbmd0aCBpbiBiYXNlIDI1NjoKICoKICogb2N0ZXQgMjogMDAwMDAwMDEgPSAxICogMjU2XjEgPSAyNTYKICogb2N0ZXQgMzogMDAwMDAwMDEgPSAxICogMjU2XjAgPSAxCiAqIHRvdGFsID0gMjU3CiAqCiAqIFRoZSBhbGdvcml0aG0gZm9yIGNvbnZlcnRpbmcgYSBqcyBpbnRlZ2VyIHZhbHVlIG9mIDI1NyB0byBiYXNlLTI1NiBpczoKICoKICogdmFyIHZhbHVlID0gMjU3OwogKiB2YXIgYnl0ZXMgPSBbXTsKICogYnl0ZXNbMF0gPSAodmFsdWUgPj4+IDgpICYgMHhGRjsgLy8gbW9zdCBzaWduaWZpY2FudCBieXRlIGZpcnN0CiAqIGJ5dGVzWzFdID0gdmFsdWUgJiAweEZGOyAgICAgICAgLy8gbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSBsYXN0CiAqCiAqIE9uIHRoZSBBU04uMSBVTklWRVJTQUwgT2JqZWN0IElkZW50aWZpZXIgKE9JRCkgdHlwZToKICoKICogQW4gT0lEIGNhbiBiZSB3cml0dGVuIGxpa2U6ICJ2YWx1ZTEudmFsdWUyLnZhbHVlMy4uLnZhbHVlTiIKICoKICogVGhlIERFUiBlbmNvZGluZyBydWxlczoKICoKICogVGhlIGZpcnN0IGJ5dGUgaGFzIHRoZSB2YWx1ZSA0MCAqIHZhbHVlMSArIHZhbHVlMi4KICogVGhlIGZvbGxvd2luZyBieXRlcywgaWYgYW55LCBlbmNvZGUgdGhlIHJlbWFpbmluZyB2YWx1ZXMuIEVhY2ggdmFsdWUgaXMKICogZW5jb2RlZCBpbiBiYXNlIDEyOCwgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBmaXJzdCAoYmlnIGVuZGlhbiksIHdpdGggYXMKICogZmV3IGRpZ2l0cyBhcyBwb3NzaWJsZSwgYW5kIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBvZiBlYWNoIGJ5dGUgc2V0CiAqIHRvIDEgZXhjZXB0IHRoZSBsYXN0IGluIGVhY2ggdmFsdWUncyBlbmNvZGluZy4gRm9yIGV4YW1wbGU6IEdpdmVuIHRoZQogKiBPSUQgIjEuMi44NDAuMTEzNTQ5IiwgaXRzIERFUiBlbmNvZGluZyBpcyAocmVtZW1iZXIgZWFjaCBieXRlIGV4Y2VwdCB0aGUKICogbGFzdCBvbmUgaW4gZWFjaCBlbmNvZGluZyBpcyBPUidkIHdpdGggMHg4MCk6CiAqCiAqIGJ5dGUgMTogNDAgKiAxICsgMiA9IDQyID0gMHgyQS4KICogYnl0ZXMgMi0zOiAxMjggKiA2ICsgNzIgPSA4NDAgPSA2IDcyID0gNiA3MiA9IDB4MDY0OCA9IDB4ODY0OAogKiBieXRlcyA0LTY6IDE2Mzg0ICogNiArIDEyOCAqIDExOSArIDEzID0gNiAxMTkgMTMgPSAweDA2NzcwRCA9IDB4ODZGNzBECiAqCiAqIFRoZSBmaW5hbCB2YWx1ZSBpczogMHgyQTg2NDg4NkY3MEQuCiAqIFRoZSBmdWxsIE9JRCAoaW5jbHVkaW5nIEFTTi4xIHRhZyBhbmQgbGVuZ3RoIG9mIDYgYnl0ZXMpIGlzOgogKiAweDA2MDYyQTg2NDg4NkY3MEQKICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovKiBBU04uMSBBUEkgKi8KdmFyIGFzbjEgPSBmb3JnZS5hc24xID0gZm9yZ2UuYXNuMSB8fCB7fTsKCi8qKgogKiBBU04uMSBjbGFzc2VzLgogKi8KYXNuMS5DbGFzcyA9IHsKICBVTklWRVJTQUw6ICAgICAgICAweDAwLAogIEFQUExJQ0FUSU9OOiAgICAgIDB4NDAsCiAgQ09OVEVYVF9TUEVDSUZJQzogMHg4MCwKICBQUklWQVRFOiAgICAgICAgICAweEMwCn07CgovKioKICogQVNOLjEgdHlwZXMuIE5vdCBhbGwgdHlwZXMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLCBvbmx5CiAqIHRob3NlIG5lY2Vzc2FyeSB0byBpbXBsZW1lbnQgYSBzaW1wbGUgUEtJIGFyZSBpbXBsZW1lbnRlZC4KICovCmFzbjEuVHlwZSA9IHsKICBOT05FOiAgICAgICAgICAgICAwLAogIEJPT0xFQU46ICAgICAgICAgIDEsCiAgSU5URUdFUjogICAgICAgICAgMiwKICBCSVRTVFJJTkc6ICAgICAgICAzLAogIE9DVEVUU1RSSU5HOiAgICAgIDQsCiAgTlVMTDogICAgICAgICAgICAgNSwKICBPSUQ6ICAgICAgICAgICAgICA2LAogIE9ERVNDOiAgICAgICAgICAgIDcsCiAgRVhURVJOQUw6ICAgICAgICAgOCwKICBSRUFMOiAgICAgICAgICAgICA5LAogIEVOVU1FUkFURUQ6ICAgICAgMTAsCiAgRU1CRURERUQ6ICAgICAgICAxMSwKICBVVEY4OiAgICAgICAgICAgIDEyLAogIFJPSUQ6ICAgICAgICAgICAgMTMsCiAgU0VRVUVOQ0U6ICAgICAgICAxNiwKICBTRVQ6ICAgICAgICAgICAgIDE3LAogIFBSSU5UQUJMRVNUUklORzogMTksCiAgSUE1U1RSSU5HOiAgICAgICAyMiwKICBVVENUSU1FOiAgICAgICAgIDIzLAogIEdFTkVSQUxJWkVEVElNRTogMjQsCiAgQk1QU1RSSU5HOiAgICAgICAzMAp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgYXNuMSBvYmplY3QuCiAqCiAqIEBwYXJhbSB0YWdDbGFzcyB0aGUgdGFnIGNsYXNzIGZvciB0aGUgb2JqZWN0LgogKiBAcGFyYW0gdHlwZSB0aGUgZGF0YSB0eXBlICh0YWcgbnVtYmVyKSBmb3IgdGhlIG9iamVjdC4KICogQHBhcmFtIGNvbnN0cnVjdGVkIHRydWUgaWYgdGhlIGFzbjEgb2JqZWN0IGlzIGluIGNvbnN0cnVjdGVkIGZvcm0uCiAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgZm9yIHRoZSBvYmplY3QsIGlmIGl0IGlzIG5vdCBjb25zdHJ1Y3RlZC4KICoKICogQHJldHVybiB0aGUgYXNuMSBvYmplY3QuCiAqLwphc24xLmNyZWF0ZSA9IGZ1bmN0aW9uKHRhZ0NsYXNzLCB0eXBlLCBjb25zdHJ1Y3RlZCwgdmFsdWUpIHsKICAvKiBBbiBhc24xIG9iamVjdCBoYXMgYSB0YWdDbGFzcywgYSB0eXBlLCBhIGNvbnN0cnVjdGVkIGZsYWcsIGFuZCBhCiAgICB2YWx1ZS4gVGhlIHZhbHVlJ3MgdHlwZSBkZXBlbmRzIG9uIHRoZSBjb25zdHJ1Y3RlZCBmbGFnLiBJZgogICAgY29uc3RydWN0ZWQsIGl0IHdpbGwgY29udGFpbiBhIGxpc3Qgb2Ygb3RoZXIgYXNuMSBvYmplY3RzLiBJZiBub3QsCiAgICBpdCB3aWxsIGNvbnRhaW4gdGhlIEFTTi4xIHZhbHVlIGFzIGFuIGFycmF5IG9mIGJ5dGVzIGZvcm1hdHRlZAogICAgYWNjb3JkaW5nIHRvIHRoZSBBU04uMSBkYXRhIHR5cGUuICovCgogIC8vIHJlbW92ZSB1bmRlZmluZWQgdmFsdWVzCiAgaWYoZm9yZ2UudXRpbC5pc0FycmF5KHZhbHVlKSkgewogICAgdmFyIHRtcCA9IFtdOwogICAgZm9yKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKSB7CiAgICAgIGlmKHZhbHVlW2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICB0bXAucHVzaCh2YWx1ZVtpXSk7CiAgICAgIH0KICAgIH0KICAgIHZhbHVlID0gdG1wOwogIH0KCiAgcmV0dXJuIHsKICAgIHRhZ0NsYXNzOiB0YWdDbGFzcywKICAgIHR5cGU6IHR5cGUsCiAgICBjb25zdHJ1Y3RlZDogY29uc3RydWN0ZWQsCiAgICBjb21wb3NlZDogY29uc3RydWN0ZWQgfHwgZm9yZ2UudXRpbC5pc0FycmF5KHZhbHVlKSwKICAgIHZhbHVlOiB2YWx1ZQogIH07Cn07CgovKioKICogR2V0cyB0aGUgbGVuZ3RoIG9mIGEgQkVSLWVuY29kZWQgQVNOLjEgdmFsdWUuCiAqCiAqIEluIGNhc2UgdGhlIGxlbmd0aCBpcyBub3Qgc3BlY2lmaWVkLCB1bmRlZmluZWQgaXMgcmV0dXJuZWQuCiAqCiAqIEBwYXJhbSBiIHRoZSBCRVItZW5jb2RlZCBBU04uMSBieXRlIGJ1ZmZlciwgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3QKICogICAgICAgICAgbGVuZ3RoIGJ5dGUuCiAqCiAqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgQkVSLWVuY29kZWQgQVNOLjEgdmFsdWUgb3IgdW5kZWZpbmVkLgogKi8KdmFyIF9nZXRWYWx1ZUxlbmd0aCA9IGFzbjEuZ2V0QmVyVmFsdWVMZW5ndGggPSBmdW5jdGlvbihiKSB7CiAgLy8gVE9ETzogbW92ZSB0aGlzIGZ1bmN0aW9uIGFuZCByZWxhdGVkIERFUi9CRVIgZnVuY3Rpb25zIHRvIGEgZGVyLmpzCiAgLy8gZmlsZTsgYmV0dGVyIGFic3RyYWN0IEFTTi4xIGF3YXkgZnJvbSBkZXIvYmVyLgogIHZhciBiMiA9IGIuZ2V0Qnl0ZSgpOwogIGlmKGIyID09PSAweDgwKSB7CiAgICByZXR1cm4gdW5kZWZpbmVkOwogIH0KCiAgLy8gc2VlIGlmIHRoZSBsZW5ndGggaXMgInNob3J0IGZvcm0iIG9yICJsb25nIGZvcm0iIChiaXQgOCBzZXQpCiAgdmFyIGxlbmd0aDsKICB2YXIgbG9uZ0Zvcm0gPSBiMiAmIDB4ODA7CiAgaWYoIWxvbmdGb3JtKSB7CiAgICAvLyBsZW5ndGggaXMganVzdCB0aGUgZmlyc3QgYnl0ZQogICAgbGVuZ3RoID0gYjI7CiAgfSBlbHNlIHsKICAgIC8vIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhlIGxlbmd0aCBpcyBzcGVjaWZpZWQgaW4gYml0cyA3IHRocm91Z2ggMQogICAgLy8gYW5kIGVhY2ggbGVuZ3RoIGJ5dGUgaXMgaW4gYmlnLWVuZGlhbiBiYXNlLTI1NgogICAgbGVuZ3RoID0gYi5nZXRJbnQoKGIyICYgMHg3RikgPDwgMyk7CiAgfQogIHJldHVybiBsZW5ndGg7Cn07CgovKioKICogUGFyc2VzIGFuIGFzbjEgb2JqZWN0IGZyb20gYSBieXRlIGJ1ZmZlciBpbiBERVIgZm9ybWF0LgogKgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGUgYnVmZmVyIHRvIHBhcnNlIGZyb20uCiAqIEBwYXJhbSBzdHJpY3QgdHJ1ZSB0byBiZSBzdHJpY3Qgd2hlbiBjaGVja2luZyB2YWx1ZSBsZW5ndGhzLCBmYWxzZSB0bwogKiAgICAgICAgICBhbGxvdyB0cnVuY2F0ZWQgdmFsdWVzIChkZWZhdWx0OiB0cnVlKS4KICoKICogQHJldHVybiB0aGUgcGFyc2VkIGFzbjEgb2JqZWN0LgogKi8KYXNuMS5mcm9tRGVyID0gZnVuY3Rpb24oYnl0ZXMsIHN0cmljdCkgewogIGlmKHN0cmljdCA9PT0gdW5kZWZpbmVkKSB7CiAgICBzdHJpY3QgPSB0cnVlOwogIH0KCiAgLy8gd3JhcCBpbiBidWZmZXIgaWYgbmVlZGVkCiAgaWYodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykgewogICAgYnl0ZXMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihieXRlcyk7CiAgfQoKICAvLyBtaW5pbXVtIGxlbmd0aCBmb3IgQVNOLjEgREVSIHN0cnVjdHVyZSBpcyAyCiAgaWYoYnl0ZXMubGVuZ3RoKCkgPCAyKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1RvbyBmZXcgYnl0ZXMgdG8gcGFyc2UgREVSLicpOwogICAgZXJyb3IuYnl0ZXMgPSBieXRlcy5sZW5ndGgoKTsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZ2V0IHRoZSBmaXJzdCBieXRlCiAgdmFyIGIxID0gYnl0ZXMuZ2V0Qnl0ZSgpOwoKICAvLyBnZXQgdGhlIHRhZyBjbGFzcwogIHZhciB0YWdDbGFzcyA9IChiMSAmIDB4QzApOwoKICAvLyBnZXQgdGhlIHR5cGUgKGJpdHMgMS01KQogIHZhciB0eXBlID0gYjEgJiAweDFGOwoKICAvLyBnZXQgdGhlIHZhbHVlIGxlbmd0aAogIHZhciBsZW5ndGggPSBfZ2V0VmFsdWVMZW5ndGgoYnl0ZXMpOwoKICAvLyBlbnN1cmUgdGhlcmUgYXJlIGVub3VnaCBieXRlcyB0byBnZXQgdGhlIHZhbHVlCiAgaWYoYnl0ZXMubGVuZ3RoKCkgPCBsZW5ndGgpIHsKICAgIGlmKHN0cmljdCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1RvbyBmZXcgYnl0ZXMgdG8gcmVhZCBBU04uMSB2YWx1ZS4nKTsKICAgICAgZXJyb3IuZGV0YWlsID0gYnl0ZXMubGVuZ3RoKCkgKyAnIDwgJyArIGxlbmd0aDsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CiAgICAvLyBOb3RlOiBiZSBsZW5pZW50IHdpdGggdHJ1bmNhdGVkIHZhbHVlcwogICAgbGVuZ3RoID0gYnl0ZXMubGVuZ3RoKCk7CiAgfQoKICAvLyBwcmVwYXJlIHRvIGdldCB2YWx1ZQogIHZhciB2YWx1ZTsKCiAgLy8gY29uc3RydWN0ZWQgZmxhZyBpcyBiaXQgNiAoMzIgPSAweDIwKSBvZiB0aGUgZmlyc3QgYnl0ZQogIHZhciBjb25zdHJ1Y3RlZCA9ICgoYjEgJiAweDIwKSA9PT0gMHgyMCk7CgogIC8vIGRldGVybWluZSBpZiB0aGUgdmFsdWUgaXMgY29tcG9zZWQgb2Ygb3RoZXIgQVNOLjEgb2JqZWN0cyAoaWYgaXRzCiAgLy8gY29uc3RydWN0ZWQgaXQgd2lsbCBiZSBhbmQgaWYgaXRzIGEgQklUU1RSSU5HIGl0IG1heSBiZSkKICB2YXIgY29tcG9zZWQgPSBjb25zdHJ1Y3RlZDsKICBpZighY29tcG9zZWQgJiYgdGFnQ2xhc3MgPT09IGFzbjEuQ2xhc3MuVU5JVkVSU0FMICYmCiAgICB0eXBlID09PSBhc24xLlR5cGUuQklUU1RSSU5HICYmIGxlbmd0aCA+IDEpIHsKICAgIC8qIFRoZSBmaXJzdCBvY3RldCBnaXZlcyB0aGUgbnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggdGhlIGxlbmd0aCBvZiB0aGUKICAgICAgYml0IHN0cmluZyBpcyBsZXNzIHRoYW4gdGhlIG5leHQgbXVsdGlwbGUgb2YgZWlnaHQgKHRoaXMgaXMgY2FsbGVkCiAgICAgIHRoZSAibnVtYmVyIG9mIHVudXNlZCBiaXRzIikuCgogICAgICBUaGUgc2Vjb25kIGFuZCBmb2xsb3dpbmcgb2N0ZXRzIGdpdmUgdGhlIHZhbHVlIG9mIHRoZSBiaXQgc3RyaW5nCiAgICAgIGNvbnZlcnRlZCB0byBhbiBvY3RldCBzdHJpbmcuICovCiAgICAvLyBpZiB0aGVyZSBhcmUgbm8gdW51c2VkIGJpdHMsIG1heWJlIHRoZSBiaXRzdHJpbmcgaG9sZHMgQVNOLjEgb2JqcwogICAgdmFyIHJlYWQgPSBieXRlcy5yZWFkOwogICAgdmFyIHVudXNlZCA9IGJ5dGVzLmdldEJ5dGUoKTsKICAgIGlmKHVudXNlZCA9PT0gMCkgewogICAgICAvLyBpZiB0aGUgZmlyc3QgYnl0ZSBpbmRpY2F0ZXMgVU5JVkVSU0FMIG9yIENPTlRFWFRfU1BFQ0lGSUMsCiAgICAgIC8vIGFuZCB0aGUgbGVuZ3RoIGlzIHZhbGlkLCBhc3N1bWUgd2UndmUgZ290IGFuIEFTTi4xIG9iamVjdAogICAgICBiMSA9IGJ5dGVzLmdldEJ5dGUoKTsKICAgICAgdmFyIHRjID0gKGIxICYgMHhDMCk7CiAgICAgIGlmKHRjID09PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fCB0YyA9PT0gYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBsZW4gPSBfZ2V0VmFsdWVMZW5ndGgoYnl0ZXMpOwogICAgICAgICAgY29tcG9zZWQgPSAobGVuID09PSBsZW5ndGggLSAoYnl0ZXMucmVhZCAtIHJlYWQpKTsKICAgICAgICAgIGlmKGNvbXBvc2VkKSB7CiAgICAgICAgICAgIC8vIGFkanVzdCByZWFkL2xlbmd0aCB0byBhY2NvdW50IGZvciB1bnVzZWQgYml0cyBieXRlCiAgICAgICAgICAgICsrcmVhZDsKICAgICAgICAgICAgLS1sZW5ndGg7CiAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChleCkge30KICAgICAgfQogICAgfQogICAgLy8gcmVzdG9yZSByZWFkIHBvaW50ZXIKICAgIGJ5dGVzLnJlYWQgPSByZWFkOwogIH0KCiAgaWYoY29tcG9zZWQpIHsKICAgIC8vIHBhcnNlIGNoaWxkIGFzbjEgb2JqZWN0cyBmcm9tIHRoZSB2YWx1ZQogICAgdmFsdWUgPSBbXTsKICAgIGlmKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIC8vIGFzbjEgb2JqZWN0IG9mIGluZGVmaW5pdGUgbGVuZ3RoLCByZWFkIHVudGlsIGVuZCB0YWcKICAgICAgZm9yKDs7KSB7CiAgICAgICAgaWYoYnl0ZXMuYnl0ZXMoMikgPT09IFN0cmluZy5mcm9tQ2hhckNvZGUoMCwgMCkpIHsKICAgICAgICAgIGJ5dGVzLmdldEJ5dGVzKDIpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHZhbHVlLnB1c2goYXNuMS5mcm9tRGVyKGJ5dGVzLCBzdHJpY3QpKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgLy8gcGFyc2luZyBhc24xIG9iamVjdCBvZiBkZWZpbml0ZSBsZW5ndGgKICAgICAgdmFyIHN0YXJ0ID0gYnl0ZXMubGVuZ3RoKCk7CiAgICAgIHdoaWxlKGxlbmd0aCA+IDApIHsKICAgICAgICB2YWx1ZS5wdXNoKGFzbjEuZnJvbURlcihieXRlcywgc3RyaWN0KSk7CiAgICAgICAgbGVuZ3RoIC09IHN0YXJ0IC0gYnl0ZXMubGVuZ3RoKCk7CiAgICAgICAgc3RhcnQgPSBieXRlcy5sZW5ndGgoKTsKICAgICAgfQogICAgfQogIH0gZWxzZSB7CiAgICAvLyBhc24xIG5vdCBjb21wb3NlZCwgZ2V0IHJhdyB2YWx1ZQogICAgLy8gVE9ETzogZG8gREVSIHRvIE9JRCBjb252ZXJzaW9uIGFuZCB2aWNlLXZlcnNhIGluIC50b0Rlcj8KCiAgICBpZihsZW5ndGggPT09IHVuZGVmaW5lZCkgewogICAgICBpZihzdHJpY3QpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vbi1jb25zdHJ1Y3RlZCBBU04uMSBvYmplY3Qgb2YgaW5kZWZpbml0ZSBsZW5ndGguJyk7CiAgICAgIH0KICAgICAgLy8gYmUgbGVuaWVudCBhbmQgdXNlIHJlbWFpbmluZyBieXRlcwogICAgICBsZW5ndGggPSBieXRlcy5sZW5ndGgoKTsKICAgIH0KCiAgICBpZih0eXBlID09PSBhc24xLlR5cGUuQk1QU1RSSU5HKSB7CiAgICAgIHZhbHVlID0gJyc7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMikgewogICAgICAgIHZhbHVlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXMuZ2V0SW50MTYoKSk7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHZhbHVlID0gYnl0ZXMuZ2V0Qnl0ZXMobGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGNyZWF0ZSBhbmQgcmV0dXJuIGFzbjEgb2JqZWN0CiAgcmV0dXJuIGFzbjEuY3JlYXRlKHRhZ0NsYXNzLCB0eXBlLCBjb25zdHJ1Y3RlZCwgdmFsdWUpOwp9OwoKLyoqCiAqIENvbnZlcnRzIHRoZSBnaXZlbiBhc24xIG9iamVjdCB0byBhIGJ1ZmZlciBvZiBieXRlcyBpbiBERVIgZm9ybWF0LgogKgogKiBAcGFyYW0gYXNuMSB0aGUgYXNuMSBvYmplY3QgdG8gY29udmVydCB0byBieXRlcy4KICoKICogQHJldHVybiB0aGUgYnVmZmVyIG9mIGJ5dGVzLgogKi8KYXNuMS50b0RlciA9IGZ1bmN0aW9uKG9iaikgewogIHZhciBieXRlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGJ1aWxkIHRoZSBmaXJzdCBieXRlCiAgdmFyIGIxID0gb2JqLnRhZ0NsYXNzIHwgb2JqLnR5cGU7CgogIC8vIGZvciBzdG9yaW5nIHRoZSBBU04uMSB2YWx1ZQogIHZhciB2YWx1ZSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGlmIGNvbXBvc2VkLCB1c2UgZWFjaCBjaGlsZCBhc24xIG9iamVjdCdzIERFUiBieXRlcyBhcyB2YWx1ZQogIGlmKG9iai5jb21wb3NlZCkgewogICAgLy8gdHVybiBvbiA2dGggYml0ICgweDIwID0gMzIpIHRvIGluZGljYXRlIGFzbjEgaXMgY29uc3RydWN0ZWQKICAgIC8vIGZyb20gb3RoZXIgYXNuMSBvYmplY3RzCiAgICBpZihvYmouY29uc3RydWN0ZWQpIHsKICAgICAgYjEgfD0gMHgyMDsKICAgIH0gZWxzZSB7CiAgICAgIC8vIHR5cGUgaXMgYSBiaXQgc3RyaW5nLCBhZGQgdW51c2VkIGJpdHMgb2YgMHgwMAogICAgICB2YWx1ZS5wdXRCeXRlKDB4MDApOwogICAgfQoKICAgIC8vIGFkZCBhbGwgb2YgdGhlIGNoaWxkIERFUiBieXRlcyB0b2dldGhlcgogICAgZm9yKHZhciBpID0gMDsgaSA8IG9iai52YWx1ZS5sZW5ndGg7ICsraSkgewogICAgICBpZihvYmoudmFsdWVbaV0gIT09IHVuZGVmaW5lZCkgewogICAgICAgIHZhbHVlLnB1dEJ1ZmZlcihhc24xLnRvRGVyKG9iai52YWx1ZVtpXSkpOwogICAgICB9CiAgICB9CiAgfSBlbHNlIHsKICAgIC8vIHVzZSBhc24xLnZhbHVlIGRpcmVjdGx5CiAgICBpZihvYmoudHlwZSA9PT0gYXNuMS5UeXBlLkJNUFNUUklORykgewogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgb2JqLnZhbHVlLmxlbmd0aDsgKytpKSB7CiAgICAgICAgdmFsdWUucHV0SW50MTYob2JqLnZhbHVlLmNoYXJDb2RlQXQoaSkpOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICB2YWx1ZS5wdXRCeXRlcyhvYmoudmFsdWUpOwogICAgfQogIH0KCiAgLy8gYWRkIHRhZyBieXRlCiAgYnl0ZXMucHV0Qnl0ZShiMSk7CgogIC8vIHVzZSAic2hvcnQgZm9ybSIgZW5jb2RpbmcKICBpZih2YWx1ZS5sZW5ndGgoKSA8PSAxMjcpIHsKICAgIC8vIG9uZSBieXRlIGRlc2NyaWJlcyB0aGUgbGVuZ3RoCiAgICAvLyBiaXQgOCA9IDAgYW5kIGJpdHMgNy0xID0gbGVuZ3RoCiAgICBieXRlcy5wdXRCeXRlKHZhbHVlLmxlbmd0aCgpICYgMHg3Rik7CiAgfSBlbHNlIHsKICAgIC8vIHVzZSAibG9uZyBmb3JtIiBlbmNvZGluZwogICAgLy8gMiB0byAxMjcgYnl0ZXMgZGVzY3JpYmUgdGhlIGxlbmd0aAogICAgLy8gZmlyc3QgYnl0ZTogYml0IDggPSAxIGFuZCBiaXRzIDctMSA9ICMgb2YgYWRkaXRpb25hbCBieXRlcwogICAgLy8gb3RoZXIgYnl0ZXM6IGxlbmd0aCBpbiBiYXNlIDI1NiwgYmlnLWVuZGlhbgogICAgdmFyIGxlbiA9IHZhbHVlLmxlbmd0aCgpOwogICAgdmFyIGxlbkJ5dGVzID0gJyc7CiAgICBkbyB7CiAgICAgIGxlbkJ5dGVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUobGVuICYgMHhGRik7CiAgICAgIGxlbiA9IGxlbiA+Pj4gODsKICAgIH0gd2hpbGUobGVuID4gMCk7CgogICAgLy8gc2V0IGZpcnN0IGJ5dGUgdG8gIyBieXRlcyB1c2VkIHRvIHN0b3JlIHRoZSBsZW5ndGggYW5kIHR1cm4gb24KICAgIC8vIGJpdCA4IHRvIGluZGljYXRlIGxvbmctZm9ybSBsZW5ndGggaXMgdXNlZAogICAgYnl0ZXMucHV0Qnl0ZShsZW5CeXRlcy5sZW5ndGggfCAweDgwKTsKCiAgICAvLyBjb25jYXRlbmF0ZSBsZW5ndGggYnl0ZXMgaW4gcmV2ZXJzZSBzaW5jZSB0aGV5IHdlcmUgZ2VuZXJhdGVkCiAgICAvLyBsaXR0bGUgZW5kaWFuIGFuZCB3ZSBuZWVkIGJpZyBlbmRpYW4KICAgIGZvcih2YXIgaSA9IGxlbkJ5dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIGJ5dGVzLnB1dEJ5dGUobGVuQnl0ZXMuY2hhckNvZGVBdChpKSk7CiAgICB9CiAgfQoKICAvLyBjb25jYXRlbmF0ZSB2YWx1ZSBieXRlcwogIGJ5dGVzLnB1dEJ1ZmZlcih2YWx1ZSk7CiAgcmV0dXJuIGJ5dGVzOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIE9JRCBkb3Qtc2VwYXJhdGVkIHN0cmluZyB0byBhIGJ5dGUgYnVmZmVyLiBUaGUgYnl0ZSBidWZmZXIKICogY29udGFpbnMgb25seSB0aGUgREVSLWVuY29kZWQgdmFsdWUsIG5vdCBhbnkgdGFnIG9yIGxlbmd0aCBieXRlcy4KICoKICogQHBhcmFtIG9pZCB0aGUgT0lEIGRvdC1zZXBhcmF0ZWQgc3RyaW5nLgogKgogKiBAcmV0dXJuIHRoZSBieXRlIGJ1ZmZlci4KICovCmFzbjEub2lkVG9EZXIgPSBmdW5jdGlvbihvaWQpIHsKICAvLyBzcGxpdCBPSUQgaW50byBpbmRpdmlkdWFsIHZhbHVlcwogIHZhciB2YWx1ZXMgPSBvaWQuc3BsaXQoJy4nKTsKICB2YXIgYnl0ZXMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwoKICAvLyBmaXJzdCBieXRlIGlzIDQwICogdmFsdWUxICsgdmFsdWUyCiAgYnl0ZXMucHV0Qnl0ZSg0MCAqIHBhcnNlSW50KHZhbHVlc1swXSwgMTApICsgcGFyc2VJbnQodmFsdWVzWzFdLCAxMCkpOwogIC8vIG90aGVyIGJ5dGVzIGFyZSBlYWNoIHZhbHVlIGluIGJhc2UgMTI4IHdpdGggOHRoIGJpdCBzZXQgZXhjZXB0IGZvcgogIC8vIHRoZSBsYXN0IGJ5dGUgZm9yIGVhY2ggdmFsdWUKICB2YXIgbGFzdCwgdmFsdWVCeXRlcywgdmFsdWUsIGI7CiAgZm9yKHZhciBpID0gMjsgaSA8IHZhbHVlcy5sZW5ndGg7ICsraSkgewogICAgLy8gcHJvZHVjZSB2YWx1ZSBieXRlcyBpbiByZXZlcnNlIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueQogICAgLy8gYnl0ZXMgaXQgd2lsbCB0YWtlIHRvIHN0b3JlIHRoZSB2YWx1ZQogICAgbGFzdCA9IHRydWU7CiAgICB2YWx1ZUJ5dGVzID0gW107CiAgICB2YWx1ZSA9IHBhcnNlSW50KHZhbHVlc1tpXSwgMTApOwogICAgZG8gewogICAgICBiID0gdmFsdWUgJiAweDdGOwogICAgICB2YWx1ZSA9IHZhbHVlID4+PiA3OwogICAgICAvLyBpZiB2YWx1ZSBpcyBub3QgbGFzdCwgdGhlbiB0dXJuIG9uIDh0aCBiaXQKICAgICAgaWYoIWxhc3QpIHsKICAgICAgICBiIHw9IDB4ODA7CiAgICAgIH0KICAgICAgdmFsdWVCeXRlcy5wdXNoKGIpOwogICAgICBsYXN0ID0gZmFsc2U7CiAgICB9IHdoaWxlKHZhbHVlID4gMCk7CgogICAgLy8gYWRkIHZhbHVlIGJ5dGVzIGluIHJldmVyc2UgKG5lZWRzIHRvIGJlIGluIGJpZyBlbmRpYW4pCiAgICBmb3IodmFyIG4gPSB2YWx1ZUJ5dGVzLmxlbmd0aCAtIDE7IG4gPj0gMDsgLS1uKSB7CiAgICAgIGJ5dGVzLnB1dEJ5dGUodmFsdWVCeXRlc1tuXSk7CiAgICB9CiAgfQoKICByZXR1cm4gYnl0ZXM7Cn07CgovKioKICogQ29udmVydHMgYSBERVItZW5jb2RlZCBieXRlIGJ1ZmZlciB0byBhbiBPSUQgZG90LXNlcGFyYXRlZCBzdHJpbmcuIFRoZQogKiBieXRlIGJ1ZmZlciBzaG91bGQgY29udGFpbiBvbmx5IHRoZSBERVItZW5jb2RlZCB2YWx1ZSwgbm90IGFueSB0YWcgb3IKICogbGVuZ3RoIGJ5dGVzLgogKgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGUgYnVmZmVyLgogKgogKiBAcmV0dXJuIHRoZSBPSUQgZG90LXNlcGFyYXRlZCBzdHJpbmcuCiAqLwphc24xLmRlclRvT2lkID0gZnVuY3Rpb24oYnl0ZXMpIHsKICB2YXIgb2lkOwoKICAvLyB3cmFwIGluIGJ1ZmZlciBpZiBuZWVkZWQKICBpZih0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnKSB7CiAgICBieXRlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKTsKICB9CgogIC8vIGZpcnN0IGJ5dGUgaXMgNDAgKiB2YWx1ZTEgKyB2YWx1ZTIKICB2YXIgYiA9IGJ5dGVzLmdldEJ5dGUoKTsKICBvaWQgPSBNYXRoLmZsb29yKGIgLyA0MCkgKyAnLicgKyAoYiAlIDQwKTsKCiAgLy8gb3RoZXIgYnl0ZXMgYXJlIGVhY2ggdmFsdWUgaW4gYmFzZSAxMjggd2l0aCA4dGggYml0IHNldCBleGNlcHQgZm9yCiAgLy8gdGhlIGxhc3QgYnl0ZSBmb3IgZWFjaCB2YWx1ZQogIHZhciB2YWx1ZSA9IDA7CiAgd2hpbGUoYnl0ZXMubGVuZ3RoKCkgPiAwKSB7CiAgICBiID0gYnl0ZXMuZ2V0Qnl0ZSgpOwogICAgdmFsdWUgPSB2YWx1ZSA8PCA3OwogICAgLy8gbm90IHRoZSBsYXN0IGJ5dGUgZm9yIHRoZSB2YWx1ZQogICAgaWYoYiAmIDB4ODApIHsKICAgICAgdmFsdWUgKz0gYiAmIDB4N0Y7CiAgICB9IGVsc2UgewogICAgICAvLyBsYXN0IGJ5dGUKICAgICAgb2lkICs9ICcuJyArICh2YWx1ZSArIGIpOwogICAgICB2YWx1ZSA9IDA7CiAgICB9CiAgfQoKICByZXR1cm4gb2lkOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgVVRDVGltZSB2YWx1ZSB0byBhIGRhdGUuCiAqCiAqIE5vdGU6IEdlbmVyYWxpemVkVGltZSBoYXMgNCBkaWdpdHMgZm9yIHRoZSB5ZWFyIGFuZCBpcyB1c2VkIGZvciBYLjUwOQogKiBkYXRlcyBwYXNzZWQgMjA0OS4gUGFyc2luZyB0aGF0IHN0cnVjdHVyZSBoYXNuJ3QgYmVlbiBpbXBsZW1lbnRlZCB5ZXQuCiAqCiAqIEBwYXJhbSB1dGMgdGhlIFVUQ1RpbWUgdmFsdWUgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgZGF0ZS4KICovCmFzbjEudXRjVGltZVRvRGF0ZSA9IGZ1bmN0aW9uKHV0YykgewogIC8qIFRoZSBmb2xsb3dpbmcgZm9ybWF0cyBjYW4gYmUgdXNlZDoKCiAgICBZWU1NRERoaG1tWgogICAgWVlNTUREaGhtbStoaCdtbScKICAgIFlZTU1ERGhobW0taGgnbW0nCiAgICBZWU1NRERoaG1tc3NaCiAgICBZWU1NRERoaG1tc3MraGgnbW0nCiAgICBZWU1NRERoaG1tc3MtaGgnbW0nCgogICAgV2hlcmU6CgogICAgWVkgaXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IHR3byBkaWdpdHMgb2YgdGhlIHllYXIKICAgIE1NIGlzIHRoZSBtb250aCAoMDEgdG8gMTIpCiAgICBERCBpcyB0aGUgZGF5ICgwMSB0byAzMSkKICAgIGhoIGlzIHRoZSBob3VyICgwMCB0byAyMykKICAgIG1tIGFyZSB0aGUgbWludXRlcyAoMDAgdG8gNTkpCiAgICBzcyBhcmUgdGhlIHNlY29uZHMgKDAwIHRvIDU5KQogICAgWiBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzIEdNVCwgKyBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzCiAgICBsYXRlciB0aGFuIEdNVCwgYW5kIC0gaW5kaWNhdGVzIHRoYXQgbG9jYWwgdGltZSBpcyBlYXJsaWVyIHRoYW4gR01UCiAgICBoaCcgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvZmZzZXQgZnJvbSBHTVQgaW4gaG91cnMKICAgIG1tJyBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9mZnNldCBmcm9tIEdNVCBpbiBtaW51dGVzICovCiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwoKICAvLyBpZiBZWSA+PSA1MCB1c2UgMTl4eCwgaWYgWVkgPCA1MCB1c2UgMjB4eAogIHZhciB5ZWFyID0gcGFyc2VJbnQodXRjLnN1YnN0cigwLCAyKSwgMTApOwogIHllYXIgPSAoeWVhciA+PSA1MCkgPyAxOTAwICsgeWVhciA6IDIwMDAgKyB5ZWFyOwogIHZhciBNTSA9IHBhcnNlSW50KHV0Yy5zdWJzdHIoMiwgMiksIDEwKSAtIDE7IC8vIHVzZSAwLTExIGZvciBtb250aAogIHZhciBERCA9IHBhcnNlSW50KHV0Yy5zdWJzdHIoNCwgMiksIDEwKTsKICB2YXIgaGggPSBwYXJzZUludCh1dGMuc3Vic3RyKDYsIDIpLCAxMCk7CiAgdmFyIG1tID0gcGFyc2VJbnQodXRjLnN1YnN0cig4LCAyKSwgMTApOwogIHZhciBzcyA9IDA7CgogIC8vIG5vdCBqdXN0IFlZTU1ERGhobW1aCiAgaWYodXRjLmxlbmd0aCA+IDExKSB7CiAgICAvLyBnZXQgY2hhcmFjdGVyIGFmdGVyIG1pbnV0ZXMKICAgIHZhciBjID0gdXRjLmNoYXJBdCgxMCk7CiAgICB2YXIgZW5kID0gMTA7CgogICAgLy8gc2VlIGlmIHNlY29uZHMgYXJlIHByZXNlbnQKICAgIGlmKGMgIT09ICcrJyAmJiBjICE9PSAnLScpIHsKICAgICAgLy8gZ2V0IHNlY29uZHMKICAgICAgc3MgPSBwYXJzZUludCh1dGMuc3Vic3RyKDEwLCAyKSwgMTApOwogICAgICBlbmQgKz0gMjsKICAgIH0KICB9CgogIC8vIHVwZGF0ZSBkYXRlCiAgZGF0ZS5zZXRVVENGdWxsWWVhcih5ZWFyLCBNTSwgREQpOwogIGRhdGUuc2V0VVRDSG91cnMoaGgsIG1tLCBzcywgMCk7CgogIGlmKGVuZCkgewogICAgLy8gZ2V0ICsvLSBhZnRlciBlbmQgb2YgdGltZQogICAgYyA9IHV0Yy5jaGFyQXQoZW5kKTsKICAgIGlmKGMgPT09ICcrJyB8fCBjID09PSAnLScpIHsKICAgICAgLy8gZ2V0IGhvdXJzK21pbnV0ZXMgb2Zmc2V0CiAgICAgIHZhciBoaG9mZnNldCA9IHBhcnNlSW50KHV0Yy5zdWJzdHIoZW5kICsgMSwgMiksIDEwKTsKICAgICAgdmFyIG1tb2Zmc2V0ID0gcGFyc2VJbnQodXRjLnN1YnN0cihlbmQgKyA0LCAyKSwgMTApOwoKICAgICAgLy8gY2FsY3VsYXRlIG9mZnNldCBpbiBtaWxsaXNlY29uZHMKICAgICAgdmFyIG9mZnNldCA9IGhob2Zmc2V0ICogNjAgKyBtbW9mZnNldDsKICAgICAgb2Zmc2V0ICo9IDYwMDAwOwoKICAgICAgLy8gYXBwbHkgb2Zmc2V0CiAgICAgIGlmKGMgPT09ICcrJykgewogICAgICAgIGRhdGUuc2V0VGltZSgrZGF0ZSAtIG9mZnNldCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgb2Zmc2V0KTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIGRhdGU7Cn07CgovKioKICogQ29udmVydHMgYSBHZW5lcmFsaXplZFRpbWUgdmFsdWUgdG8gYSBkYXRlLgogKgogKiBAcGFyYW0gZ2VudGltZSB0aGUgR2VuZXJhbGl6ZWRUaW1lIHZhbHVlIHRvIGNvbnZlcnQuCiAqCiAqIEByZXR1cm4gdGhlIGRhdGUuCiAqLwphc24xLmdlbmVyYWxpemVkVGltZVRvRGF0ZSA9IGZ1bmN0aW9uKGdlbnRpbWUpIHsKICAvKiBUaGUgZm9sbG93aW5nIGZvcm1hdHMgY2FuIGJlIHVzZWQ6CgogICAgWVlZWU1NRERISE1NU1MKICAgIFlZWVlNTURESEhNTVNTLmZmZgogICAgWVlZWU1NRERISE1NU1NaCiAgICBZWVlZTU1EREhITU1TUy5mZmZaCiAgICBZWVlZTU1EREhITU1TUytoaCdtbScKICAgIFlZWVlNTURESEhNTVNTLmZmZitoaCdtbScKICAgIFlZWVlNTURESEhNTVNTLWhoJ21tJwogICAgWVlZWU1NRERISE1NU1MuZmZmLWhoJ21tJwoKICAgIFdoZXJlOgoKICAgIFlZWVkgaXMgdGhlIHllYXIKICAgIE1NIGlzIHRoZSBtb250aCAoMDEgdG8gMTIpCiAgICBERCBpcyB0aGUgZGF5ICgwMSB0byAzMSkKICAgIGhoIGlzIHRoZSBob3VyICgwMCB0byAyMykKICAgIG1tIGFyZSB0aGUgbWludXRlcyAoMDAgdG8gNTkpCiAgICBzcyBhcmUgdGhlIHNlY29uZHMgKDAwIHRvIDU5KQogICAgLmZmZiBpcyB0aGUgc2Vjb25kIGZyYWN0aW9uLCBhY2N1cmF0ZSB0byB0aHJlZSBkZWNpbWFsIHBsYWNlcwogICAgWiBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzIEdNVCwgKyBpbmRpY2F0ZXMgdGhhdCBsb2NhbCB0aW1lIGlzCiAgICBsYXRlciB0aGFuIEdNVCwgYW5kIC0gaW5kaWNhdGVzIHRoYXQgbG9jYWwgdGltZSBpcyBlYXJsaWVyIHRoYW4gR01UCiAgICBoaCcgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBvZmZzZXQgZnJvbSBHTVQgaW4gaG91cnMKICAgIG1tJyBpcyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9mZnNldCBmcm9tIEdNVCBpbiBtaW51dGVzICovCiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOwoKICB2YXIgWVlZWSA9IHBhcnNlSW50KGdlbnRpbWUuc3Vic3RyKDAsIDQpLCAxMCk7CiAgdmFyIE1NID0gcGFyc2VJbnQoZ2VudGltZS5zdWJzdHIoNCwgMiksIDEwKSAtIDE7IC8vIHVzZSAwLTExIGZvciBtb250aAogIHZhciBERCA9IHBhcnNlSW50KGdlbnRpbWUuc3Vic3RyKDYsIDIpLCAxMCk7CiAgdmFyIGhoID0gcGFyc2VJbnQoZ2VudGltZS5zdWJzdHIoOCwgMiksIDEwKTsKICB2YXIgbW0gPSBwYXJzZUludChnZW50aW1lLnN1YnN0cigxMCwgMiksIDEwKTsKICB2YXIgc3MgPSBwYXJzZUludChnZW50aW1lLnN1YnN0cigxMiwgMiksIDEwKTsKICB2YXIgZmZmID0gMDsKICB2YXIgb2Zmc2V0ID0gMDsKICB2YXIgaXNVVEMgPSBmYWxzZTsKCiAgaWYoZ2VudGltZS5jaGFyQXQoZ2VudGltZS5sZW5ndGggLSAxKSA9PT0gJ1onKSB7CiAgICBpc1VUQyA9IHRydWU7CiAgfQoKICB2YXIgZW5kID0gZ2VudGltZS5sZW5ndGggLSA1LCBjID0gZ2VudGltZS5jaGFyQXQoZW5kKTsKICBpZihjID09PSAnKycgfHwgYyA9PT0gJy0nKSB7CiAgICAvLyBnZXQgaG91cnMrbWludXRlcyBvZmZzZXQKICAgIHZhciBoaG9mZnNldCA9IHBhcnNlSW50KGdlbnRpbWUuc3Vic3RyKGVuZCArIDEsIDIpLCAxMCk7CiAgICB2YXIgbW1vZmZzZXQgPSBwYXJzZUludChnZW50aW1lLnN1YnN0cihlbmQgKyA0LCAyKSwgMTApOwoKICAgIC8vIGNhbGN1bGF0ZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzCiAgICBvZmZzZXQgPSBoaG9mZnNldCAqIDYwICsgbW1vZmZzZXQ7CiAgICBvZmZzZXQgKj0gNjAwMDA7CgogICAgLy8gYXBwbHkgb2Zmc2V0CiAgICBpZihjID09PSAnKycpIHsKICAgICAgb2Zmc2V0ICo9IC0xOwogICAgfQoKICAgIGlzVVRDID0gdHJ1ZTsKICB9CgogIC8vIGNoZWNrIGZvciBzZWNvbmQgZnJhY3Rpb24KICBpZihnZW50aW1lLmNoYXJBdCgxNCkgPT09ICcuJykgewogICAgZmZmID0gcGFyc2VGbG9hdChnZW50aW1lLnN1YnN0cigxNCksIDEwKSAqIDEwMDA7CiAgfQoKICBpZihpc1VUQykgewogICAgZGF0ZS5zZXRVVENGdWxsWWVhcihZWVlZLCBNTSwgREQpOwogICAgZGF0ZS5zZXRVVENIb3VycyhoaCwgbW0sIHNzLCBmZmYpOwoKICAgIC8vIGFwcGx5IG9mZnNldAogICAgZGF0ZS5zZXRUaW1lKCtkYXRlICsgb2Zmc2V0KTsKICB9IGVsc2UgewogICAgZGF0ZS5zZXRGdWxsWWVhcihZWVlZLCBNTSwgREQpOwogICAgZGF0ZS5zZXRIb3VycyhoaCwgbW0sIHNzLCBmZmYpOwogIH0KCiAgcmV0dXJuIGRhdGU7Cn07CgovKioKICogQ29udmVydHMgYSBkYXRlIHRvIGEgVVRDVGltZSB2YWx1ZS4KICoKICogTm90ZTogR2VuZXJhbGl6ZWRUaW1lIGhhcyA0IGRpZ2l0cyBmb3IgdGhlIHllYXIgYW5kIGlzIHVzZWQgZm9yIFguNTA5CiAqIGRhdGVzIHBhc3NlZCAyMDQ5LiBDb252ZXJ0aW5nIHRvIGEgR2VuZXJhbGl6ZWRUaW1lIGhhc24ndCBiZWVuCiAqIGltcGxlbWVudGVkIHlldC4KICoKICogQHBhcmFtIGRhdGUgdGhlIGRhdGUgdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgVVRDVGltZSB2YWx1ZS4KICovCmFzbjEuZGF0ZVRvVXRjVGltZSA9IGZ1bmN0aW9uKGRhdGUpIHsKICAvLyBUT0RPOiB2YWxpZGF0ZTsgY3VycmVudGx5IGFzc3VtZXMgcHJvcGVyIGZvcm1hdAogIGlmKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykgewogICAgcmV0dXJuIGRhdGU7CiAgfQoKICB2YXIgcnZhbCA9ICcnOwoKICAvLyBjcmVhdGUgZm9ybWF0IFlZTU1ERGhobW1zc1oKICB2YXIgZm9ybWF0ID0gW107CiAgZm9ybWF0LnB1c2goKCcnICsgZGF0ZS5nZXRVVENGdWxsWWVhcigpKS5zdWJzdHIoMikpOwogIGZvcm1hdC5wdXNoKCcnICsgKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDRGF0ZSgpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDSG91cnMoKSk7CiAgZm9ybWF0LnB1c2goJycgKyBkYXRlLmdldFVUQ01pbnV0ZXMoKSk7CiAgZm9ybWF0LnB1c2goJycgKyBkYXRlLmdldFVUQ1NlY29uZHMoKSk7CgogIC8vIGVuc3VyZSAyIGRpZ2l0cyBhcmUgdXNlZCBmb3IgZWFjaCBmb3JtYXQgZW50cnkKICBmb3IodmFyIGkgPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsgKytpKSB7CiAgICBpZihmb3JtYXRbaV0ubGVuZ3RoIDwgMikgewogICAgICBydmFsICs9ICcwJzsKICAgIH0KICAgIHJ2YWwgKz0gZm9ybWF0W2ldOwogIH0KICBydmFsICs9ICdaJzsKCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgYSBkYXRlIHRvIGEgR2VuZXJhbGl6ZWRUaW1lIHZhbHVlLgogKgogKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZSB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBHZW5lcmFsaXplZFRpbWUgdmFsdWUgYXMgYSBzdHJpbmcuCiAqLwphc24xLmRhdGVUb0dlbmVyYWxpemVkVGltZSA9IGZ1bmN0aW9uKGRhdGUpIHsKICAvLyBUT0RPOiB2YWxpZGF0ZTsgY3VycmVudGx5IGFzc3VtZXMgcHJvcGVyIGZvcm1hdAogIGlmKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJykgewogICAgcmV0dXJuIGRhdGU7CiAgfQoKICB2YXIgcnZhbCA9ICcnOwoKICAvLyBjcmVhdGUgZm9ybWF0IFlZWVlNTURESEhNTVNTWgogIHZhciBmb3JtYXQgPSBbXTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDRnVsbFllYXIoKSk7CiAgZm9ybWF0LnB1c2goJycgKyAoZGF0ZS5nZXRVVENNb250aCgpICsgMSkpOwogIGZvcm1hdC5wdXNoKCcnICsgZGF0ZS5nZXRVVENEYXRlKCkpOwogIGZvcm1hdC5wdXNoKCcnICsgZGF0ZS5nZXRVVENIb3VycygpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDTWludXRlcygpKTsKICBmb3JtYXQucHVzaCgnJyArIGRhdGUuZ2V0VVRDU2Vjb25kcygpKTsKCiAgLy8gZW5zdXJlIDIgZGlnaXRzIGFyZSB1c2VkIGZvciBlYWNoIGZvcm1hdCBlbnRyeQogIGZvcih2YXIgaSA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoOyArK2kpIHsKICAgIGlmKGZvcm1hdFtpXS5sZW5ndGggPCAyKSB7CiAgICAgIHJ2YWwgKz0gJzAnOwogICAgfQogICAgcnZhbCArPSBmb3JtYXRbaV07CiAgfQogIHJ2YWwgKz0gJ1onOwoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIGphdmFzY3JpcHQgaW50ZWdlciB0byBhIERFUi1lbmNvZGVkIGJ5dGUgYnVmZmVyIHRvIGJlIHVzZWQKICogYXMgdGhlIHZhbHVlIGZvciBhbiBJTlRFR0VSIHR5cGUuCiAqCiAqIEBwYXJhbSB4IHRoZSBpbnRlZ2VyLgogKgogKiBAcmV0dXJuIHRoZSBieXRlIGJ1ZmZlci4KICovCmFzbjEuaW50ZWdlclRvRGVyID0gZnVuY3Rpb24oeCkgewogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBpZih4ID49IC0weDgwICYmIHggPCAweDgwKSB7CiAgICByZXR1cm4gcnZhbC5wdXRTaWduZWRJbnQoeCwgOCk7CiAgfQogIGlmKHggPj0gLTB4ODAwMCAmJiB4IDwgMHg4MDAwKSB7CiAgICByZXR1cm4gcnZhbC5wdXRTaWduZWRJbnQoeCwgMTYpOwogIH0KICBpZih4ID49IC0weDgwMDAwMCAmJiB4IDwgMHg4MDAwMDApIHsKICAgIHJldHVybiBydmFsLnB1dFNpZ25lZEludCh4LCAyNCk7CiAgfQogIGlmKHggPj0gLTB4ODAwMDAwMDAgJiYgeCA8IDB4ODAwMDAwMDApIHsKICAgIHJldHVybiBydmFsLnB1dFNpZ25lZEludCh4LCAzMik7CiAgfQogIHZhciBlcnJvciA9IG5ldyBFcnJvcignSW50ZWdlciB0b28gbGFyZ2U7IG1heCBpcyAzMi1iaXRzLicpOwogIGVycm9yLmludGVnZXIgPSB4OwogIHRocm93IGVycm9yOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgREVSLWVuY29kZWQgYnl0ZSBidWZmZXIgdG8gYSBqYXZhc2NyaXB0IGludGVnZXIuIFRoaXMgaXMKICogdHlwaWNhbGx5IHVzZWQgdG8gZGVjb2RlIHRoZSB2YWx1ZSBvZiBhbiBJTlRFR0VSIHR5cGUuCiAqCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZSBidWZmZXIuCiAqCiAqIEByZXR1cm4gdGhlIGludGVnZXIuCiAqLwphc24xLmRlclRvSW50ZWdlciA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgLy8gd3JhcCBpbiBidWZmZXIgaWYgbmVlZGVkCiAgaWYodHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJykgewogICAgYnl0ZXMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihieXRlcyk7CiAgfQoKICB2YXIgbiA9IGJ5dGVzLmxlbmd0aCgpICogODsKICBpZihuID4gMzIpIHsKICAgIHRocm93IG5ldyBFcnJvcignSW50ZWdlciB0b28gbGFyZ2U7IG1heCBpcyAzMi1iaXRzLicpOwogIH0KICByZXR1cm4gYnl0ZXMuZ2V0U2lnbmVkSW50KG4pOwp9OwoKLyoqCiAqIFZhbGlkYXRlcyB0aGUgdGhhdCBnaXZlbiBBU04uMSBvYmplY3QgaXMgYXQgbGVhc3QgYSBzdXBlciBzZXQgb2YgdGhlCiAqIGdpdmVuIEFTTi4xIHN0cnVjdHVyZS4gT25seSB0YWcgY2xhc3NlcyBhbmQgdHlwZXMgYXJlIGNoZWNrZWQuIEFuCiAqIG9wdGlvbmFsIG1hcCBtYXkgYWxzbyBiZSBwcm92aWRlZCB0byBjYXB0dXJlIEFTTi4xIHZhbHVlcyB3aGlsZSB0aGUKICogc3RydWN0dXJlIGlzIGNoZWNrZWQuCiAqCiAqIFRvIGNhcHR1cmUgYW4gQVNOLjEgdmFsdWUsIHNldCBhbiBvYmplY3QgaW4gdGhlIHZhbGlkYXRvcidzICdjYXB0dXJlJwogKiBwYXJhbWV0ZXIgdG8gdGhlIGtleSB0byB1c2UgaW4gdGhlIGNhcHR1cmUgbWFwLiBUbyBjYXB0dXJlIHRoZSBmdWxsCiAqIEFTTi4xIG9iamVjdCwgc3BlY2lmeSAnY2FwdHVyZUFzbjEnLgogKgogKiBPYmplY3RzIGluIHRoZSB2YWxpZGF0b3IgbWF5IHNldCBhIGZpZWxkICdvcHRpb25hbCcgdG8gdHJ1ZSB0byBpbmRpY2F0ZQogKiB0aGF0IGl0IGlzbid0IG5lY2Vzc2FyeSB0byBwYXNzIHZhbGlkYXRpb24uCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIG9iamVjdCB0byB2YWxpZGF0ZS4KICogQHBhcmFtIHYgdGhlIEFTTi4xIHN0cnVjdHVyZSB2YWxpZGF0b3IuCiAqIEBwYXJhbSBjYXB0dXJlIGFuIG9wdGlvbmFsIG1hcCB0byBjYXB0dXJlIHZhbHVlcyBpbi4KICogQHBhcmFtIGVycm9ycyBhbiBvcHRpb25hbCBhcnJheSBmb3Igc3RvcmluZyB2YWxpZGF0aW9uIGVycm9ycy4KICoKICogQHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAqLwphc24xLnZhbGlkYXRlID0gZnVuY3Rpb24ob2JqLCB2LCBjYXB0dXJlLCBlcnJvcnMpIHsKICB2YXIgcnZhbCA9IGZhbHNlOwoKICAvLyBlbnN1cmUgdGFnIGNsYXNzIGFuZCB0eXBlIGFyZSB0aGUgc2FtZSBpZiBzcGVjaWZpZWQKICBpZigob2JqLnRhZ0NsYXNzID09PSB2LnRhZ0NsYXNzIHx8IHR5cGVvZih2LnRhZ0NsYXNzKSA9PT0gJ3VuZGVmaW5lZCcpICYmCiAgICAob2JqLnR5cGUgPT09IHYudHlwZSB8fCB0eXBlb2Yodi50eXBlKSA9PT0gJ3VuZGVmaW5lZCcpKSB7CiAgICAvLyBlbnN1cmUgY29uc3RydWN0ZWQgZmxhZyBpcyB0aGUgc2FtZSBpZiBzcGVjaWZpZWQKICAgIGlmKG9iai5jb25zdHJ1Y3RlZCA9PT0gdi5jb25zdHJ1Y3RlZCB8fAogICAgICB0eXBlb2Yodi5jb25zdHJ1Y3RlZCkgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHJ2YWwgPSB0cnVlOwoKICAgICAgLy8gaGFuZGxlIHN1YiB2YWx1ZXMKICAgICAgaWYodi52YWx1ZSAmJiBmb3JnZS51dGlsLmlzQXJyYXkodi52YWx1ZSkpIHsKICAgICAgICB2YXIgaiA9IDA7CiAgICAgICAgZm9yKHZhciBpID0gMDsgcnZhbCAmJiBpIDwgdi52YWx1ZS5sZW5ndGg7ICsraSkgewogICAgICAgICAgcnZhbCA9IHYudmFsdWVbaV0ub3B0aW9uYWwgfHwgZmFsc2U7CiAgICAgICAgICBpZihvYmoudmFsdWVbal0pIHsKICAgICAgICAgICAgcnZhbCA9IGFzbjEudmFsaWRhdGUob2JqLnZhbHVlW2pdLCB2LnZhbHVlW2ldLCBjYXB0dXJlLCBlcnJvcnMpOwogICAgICAgICAgICBpZihydmFsKSB7CiAgICAgICAgICAgICAgKytqOwogICAgICAgICAgICB9IGVsc2UgaWYodi52YWx1ZVtpXS5vcHRpb25hbCkgewogICAgICAgICAgICAgIHJ2YWwgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBpZighcnZhbCAmJiBlcnJvcnMpIHsKICAgICAgICAgICAgZXJyb3JzLnB1c2goCiAgICAgICAgICAgICAgJ1snICsgdi5uYW1lICsgJ10gJyArCiAgICAgICAgICAgICAgJ1RhZyBjbGFzcyAiJyArIHYudGFnQ2xhc3MgKyAnIiwgdHlwZSAiJyArCiAgICAgICAgICAgICAgdi50eXBlICsgJyIgZXhwZWN0ZWQgdmFsdWUgbGVuZ3RoICInICsKICAgICAgICAgICAgICB2LnZhbHVlLmxlbmd0aCArICciLCBnb3QgIicgKwogICAgICAgICAgICAgIG9iai52YWx1ZS5sZW5ndGggKyAnIicpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYocnZhbCAmJiBjYXB0dXJlKSB7CiAgICAgICAgaWYodi5jYXB0dXJlKSB7CiAgICAgICAgICBjYXB0dXJlW3YuY2FwdHVyZV0gPSBvYmoudmFsdWU7CiAgICAgICAgfQogICAgICAgIGlmKHYuY2FwdHVyZUFzbjEpIHsKICAgICAgICAgIGNhcHR1cmVbdi5jYXB0dXJlQXNuMV0gPSBvYmo7CiAgICAgICAgfQogICAgICB9CiAgICB9IGVsc2UgaWYoZXJyb3JzKSB7CiAgICAgIGVycm9ycy5wdXNoKAogICAgICAgICdbJyArIHYubmFtZSArICddICcgKwogICAgICAgICdFeHBlY3RlZCBjb25zdHJ1Y3RlZCAiJyArIHYuY29uc3RydWN0ZWQgKyAnIiwgZ290ICInICsKICAgICAgICBvYmouY29uc3RydWN0ZWQgKyAnIicpOwogICAgfQogIH0gZWxzZSBpZihlcnJvcnMpIHsKICAgIGlmKG9iai50YWdDbGFzcyAhPT0gdi50YWdDbGFzcykgewogICAgICBlcnJvcnMucHVzaCgKICAgICAgICAnWycgKyB2Lm5hbWUgKyAnXSAnICsKICAgICAgICAnRXhwZWN0ZWQgdGFnIGNsYXNzICInICsgdi50YWdDbGFzcyArICciLCBnb3QgIicgKwogICAgICAgIG9iai50YWdDbGFzcyArICciJyk7CiAgICB9CiAgICBpZihvYmoudHlwZSAhPT0gdi50eXBlKSB7CiAgICAgIGVycm9ycy5wdXNoKAogICAgICAgICdbJyArIHYubmFtZSArICddICcgKwogICAgICAgICdFeHBlY3RlZCB0eXBlICInICsgdi50eXBlICsgJyIsIGdvdCAiJyArIG9iai50eXBlICsgJyInKTsKICAgIH0KICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovLyByZWdleCBmb3IgdGVzdGluZyBmb3Igbm9uLWxhdGluIGNoYXJhY3RlcnMKdmFyIF9ub25MYXRpblJlZ2V4ID0gL1teXFx1MDAwMC1cXHUwMGZmXS87CgovKioKICogUHJldHR5IHByaW50cyBhbiBBU04uMSBvYmplY3QgdG8gYSBzdHJpbmcuCiAqCiAqIEBwYXJhbSBvYmogdGhlIG9iamVjdCB0byB3cml0ZSBvdXQuCiAqIEBwYXJhbSBsZXZlbCB0aGUgbGV2ZWwgaW4gdGhlIHRyZWUuCiAqIEBwYXJhbSBpbmRlbnRhdGlvbiB0aGUgaW5kZW50YXRpb24gdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBzdHJpbmcuCiAqLwphc24xLnByZXR0eVByaW50ID0gZnVuY3Rpb24ob2JqLCBsZXZlbCwgaW5kZW50YXRpb24pIHsKICB2YXIgcnZhbCA9ICcnOwoKICAvLyBzZXQgZGVmYXVsdCBsZXZlbCBhbmQgaW5kZW50YXRpb24KICBsZXZlbCA9IGxldmVsIHx8IDA7CiAgaW5kZW50YXRpb24gPSBpbmRlbnRhdGlvbiB8fCAyOwoKICAvLyBzdGFydCBuZXcgbGluZSBmb3IgZGVlcCBsZXZlbHMKICBpZihsZXZlbCA+IDApIHsKICAgIHJ2YWwgKz0gJ1xuJzsKICB9CgogIC8vIGNyZWF0ZSBpbmRlbnQKICB2YXIgaW5kZW50ID0gJyc7CiAgZm9yKHZhciBpID0gMDsgaSA8IGxldmVsICogaW5kZW50YXRpb247ICsraSkgewogICAgaW5kZW50ICs9ICcgJzsKICB9CgogIC8vIHByaW50IGNsYXNzOnR5cGUKICBydmFsICs9IGluZGVudCArICdUYWc6ICc7CiAgc3dpdGNoKG9iai50YWdDbGFzcykgewogIGNhc2UgYXNuMS5DbGFzcy5VTklWRVJTQUw6CiAgICBydmFsICs9ICdVbml2ZXJzYWw6JzsKICAgIGJyZWFrOwogIGNhc2UgYXNuMS5DbGFzcy5BUFBMSUNBVElPTjoKICAgIHJ2YWwgKz0gJ0FwcGxpY2F0aW9uOic7CiAgICBicmVhazsKICBjYXNlIGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQzoKICAgIHJ2YWwgKz0gJ0NvbnRleHQtU3BlY2lmaWM6JzsKICAgIGJyZWFrOwogIGNhc2UgYXNuMS5DbGFzcy5QUklWQVRFOgogICAgcnZhbCArPSAnUHJpdmF0ZTonOwogICAgYnJlYWs7CiAgfQoKICBpZihvYmoudGFnQ2xhc3MgPT09IGFzbjEuQ2xhc3MuVU5JVkVSU0FMKSB7CiAgICBydmFsICs9IG9iai50eXBlOwoKICAgIC8vIGtub3duIHR5cGVzCiAgICBzd2l0Y2gob2JqLnR5cGUpIHsKICAgIGNhc2UgYXNuMS5UeXBlLk5PTkU6CiAgICAgIHJ2YWwgKz0gJyAoTm9uZSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkJPT0xFQU46CiAgICAgIHJ2YWwgKz0gJyAoQm9vbGVhbiknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkJJVFNUUklORzoKICAgICAgcnZhbCArPSAnIChCaXQgc3RyaW5nKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuSU5URUdFUjoKICAgICAgcnZhbCArPSAnIChJbnRlZ2VyKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuT0NURVRTVFJJTkc6CiAgICAgIHJ2YWwgKz0gJyAoT2N0ZXQgc3RyaW5nKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuTlVMTDoKICAgICAgcnZhbCArPSAnIChOdWxsKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuT0lEOgogICAgICBydmFsICs9ICcgKE9iamVjdCBJZGVudGlmaWVyKSc7CiAgICAgIGJyZWFrOwogICAgY2FzZSBhc24xLlR5cGUuT0RFU0M6CiAgICAgIHJ2YWwgKz0gJyAoT2JqZWN0IERlc2NyaXB0b3IpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5FWFRFUk5BTDoKICAgICAgcnZhbCArPSAnIChFeHRlcm5hbCBvciBJbnN0YW5jZSBvZiknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlJFQUw6CiAgICAgIHJ2YWwgKz0gJyAoUmVhbCknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkVOVU1FUkFURUQ6CiAgICAgIHJ2YWwgKz0gJyAoRW51bWVyYXRlZCknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkVNQkVEREVEOgogICAgICBydmFsICs9ICcgKEVtYmVkZGVkIFBEViknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlVURjg6CiAgICAgIHJ2YWwgKz0gJyAoVVRGOCknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlJPSUQ6CiAgICAgIHJ2YWwgKz0gJyAoUmVsYXRpdmUgT2JqZWN0IElkZW50aWZpZXIpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5TRVFVRU5DRToKICAgICAgcnZhbCArPSAnIChTZXF1ZW5jZSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlNFVDoKICAgICAgcnZhbCArPSAnIChTZXQpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5QUklOVEFCTEVTVFJJTkc6CiAgICAgIHJ2YWwgKz0gJyAoUHJpbnRhYmxlIFN0cmluZyknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLklBNVN0cmluZzoKICAgICAgcnZhbCArPSAnIChJQTVTdHJpbmcgKEFTQ0lJKSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLlVUQ1RJTUU6CiAgICAgIHJ2YWwgKz0gJyAoVVRDIHRpbWUpJzsKICAgICAgYnJlYWs7CiAgICBjYXNlIGFzbjEuVHlwZS5HRU5FUkFMSVpFRFRJTUU6CiAgICAgIHJ2YWwgKz0gJyAoR2VuZXJhbGl6ZWQgdGltZSknOwogICAgICBicmVhazsKICAgIGNhc2UgYXNuMS5UeXBlLkJNUFNUUklORzoKICAgICAgcnZhbCArPSAnIChCTVAgU3RyaW5nKSc7CiAgICAgIGJyZWFrOwogICAgfQogIH0gZWxzZSB7CiAgICBydmFsICs9IG9iai50eXBlOwogIH0KCiAgcnZhbCArPSAnXG4nOwogIHJ2YWwgKz0gaW5kZW50ICsgJ0NvbnN0cnVjdGVkOiAnICsgb2JqLmNvbnN0cnVjdGVkICsgJ1xuJzsKCiAgaWYob2JqLmNvbXBvc2VkKSB7CiAgICB2YXIgc3VidmFsdWVzID0gMDsKICAgIHZhciBzdWIgPSAnJzsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBvYmoudmFsdWUubGVuZ3RoOyArK2kpIHsKICAgICAgaWYob2JqLnZhbHVlW2ldICE9PSB1bmRlZmluZWQpIHsKICAgICAgICBzdWJ2YWx1ZXMgKz0gMTsKICAgICAgICBzdWIgKz0gYXNuMS5wcmV0dHlQcmludChvYmoudmFsdWVbaV0sIGxldmVsICsgMSwgaW5kZW50YXRpb24pOwogICAgICAgIGlmKChpICsgMSkgPCBvYmoudmFsdWUubGVuZ3RoKSB7CiAgICAgICAgICBzdWIgKz0gJywnOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcnZhbCArPSBpbmRlbnQgKyAnU3ViIHZhbHVlczogJyArIHN1YnZhbHVlcyArIHN1YjsKICB9IGVsc2UgewogICAgcnZhbCArPSBpbmRlbnQgKyAnVmFsdWU6ICc7CiAgICBpZihvYmoudHlwZSA9PT0gYXNuMS5UeXBlLk9JRCkgewogICAgICB2YXIgb2lkID0gYXNuMS5kZXJUb09pZChvYmoudmFsdWUpOwogICAgICBydmFsICs9IG9pZDsKICAgICAgaWYoZm9yZ2UucGtpICYmIGZvcmdlLnBraS5vaWRzKSB7CiAgICAgICAgaWYob2lkIGluIGZvcmdlLnBraS5vaWRzKSB7CiAgICAgICAgICBydmFsICs9ICcgKCcgKyBmb3JnZS5wa2kub2lkc1tvaWRdICsgJykgJzsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIGlmKG9iai50eXBlID09PSBhc24xLlR5cGUuSU5URUdFUikgewogICAgICB0cnkgewogICAgICAgIHJ2YWwgKz0gYXNuMS5kZXJUb0ludGVnZXIob2JqLnZhbHVlKTsKICAgICAgfSBjYXRjaChleCkgewogICAgICAgIHJ2YWwgKz0gJzB4JyArIGZvcmdlLnV0aWwuYnl0ZXNUb0hleChvYmoudmFsdWUpOwogICAgICB9CiAgICB9IGVsc2UgaWYob2JqLnR5cGUgPT09IGFzbjEuVHlwZS5PQ1RFVFNUUklORykgewogICAgICBpZighX25vbkxhdGluUmVnZXgudGVzdChvYmoudmFsdWUpKSB7CiAgICAgICAgcnZhbCArPSAnKCcgKyBvYmoudmFsdWUgKyAnKSAnOwogICAgICB9CiAgICAgIHJ2YWwgKz0gJzB4JyArIGZvcmdlLnV0aWwuYnl0ZXNUb0hleChvYmoudmFsdWUpOwogICAgfSBlbHNlIGlmKG9iai50eXBlID09PSBhc24xLlR5cGUuVVRGOCkgewogICAgICBydmFsICs9IGZvcmdlLnV0aWwuZGVjb2RlVXRmOChvYmoudmFsdWUpOwogICAgfSBlbHNlIGlmKG9iai50eXBlID09PSBhc24xLlR5cGUuUFJJTlRBQkxFU1RSSU5HIHx8CiAgICAgIG9iai50eXBlID09PSBhc24xLlR5cGUuSUE1U3RyaW5nKSB7CiAgICAgIHJ2YWwgKz0gb2JqLnZhbHVlOwogICAgfSBlbHNlIGlmKF9ub25MYXRpblJlZ2V4LnRlc3Qob2JqLnZhbHVlKSkgewogICAgICBydmFsICs9ICcweCcgKyBmb3JnZS51dGlsLmJ5dGVzVG9IZXgob2JqLnZhbHVlKTsKICAgIH0gZWxzZSBpZihvYmoudmFsdWUubGVuZ3RoID09PSAwKSB7CiAgICAgIHJ2YWwgKz0gJ1tudWxsXSc7CiAgICB9IGVsc2UgewogICAgICBydmFsICs9IG9iai52YWx1ZTsKICAgIH0KICB9CgogIHJldHVybiBydmFsOwp9OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnYXNuMSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9hc24xJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCcsICcuL29pZHMnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogTWVzc2FnZSBEaWdlc3QgQWxnb3JpdGhtIDUgd2l0aCAxMjgtYml0IGRpZ2VzdCAoTUQ1KSBpbXBsZW1lbnRhdGlvbi4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Cgp2YXIgbWQ1ID0gZm9yZ2UubWQ1ID0gZm9yZ2UubWQ1IHx8IHt9Owpmb3JnZS5tZCA9IGZvcmdlLm1kIHx8IHt9Owpmb3JnZS5tZC5hbGdvcml0aG1zID0gZm9yZ2UubWQuYWxnb3JpdGhtcyB8fCB7fTsKZm9yZ2UubWQubWQ1ID0gZm9yZ2UubWQuYWxnb3JpdGhtcy5tZDUgPSBtZDU7CgovKioKICogQ3JlYXRlcyBhbiBNRDUgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKgogKiBAcmV0dXJuIGEgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKi8KbWQ1LmNyZWF0ZSA9IGZ1bmN0aW9uKCkgewogIC8vIGRvIGluaXRpYWxpemF0aW9uIGFzIG5lY2Vzc2FyeQogIGlmKCFfaW5pdGlhbGl6ZWQpIHsKICAgIF9pbml0KCk7CiAgfQoKICAvLyBNRDUgc3RhdGUgY29udGFpbnMgZm91ciAzMi1iaXQgaW50ZWdlcnMKICB2YXIgX3N0YXRlID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIHdvcmQgc3RvcmFnZQogIHZhciBfdyA9IG5ldyBBcnJheSgxNik7CgogIC8vIG1lc3NhZ2UgZGlnZXN0IG9iamVjdAogIHZhciBtZCA9IHsKICAgIGFsZ29yaXRobTogJ21kNScsCiAgICBibG9ja0xlbmd0aDogNjQsCiAgICBkaWdlc3RMZW5ndGg6IDE2LAogICAgLy8gNTYtYml0IGxlbmd0aCBvZiBtZXNzYWdlIHNvIGZhciAoZG9lcyBub3QgaW5jbHVkaW5nIHBhZGRpbmcpCiAgICBtZXNzYWdlTGVuZ3RoOiAwLAogICAgLy8gdHJ1ZSBtZXNzYWdlIGxlbmd0aAogICAgZnVsbE1lc3NhZ2VMZW5ndGg6IG51bGwsCiAgICAvLyBzaXplIG9mIG1lc3NhZ2UgbGVuZ3RoIGluIGJ5dGVzCiAgICBtZXNzYWdlTGVuZ3RoU2l6ZTogOAogIH07CgogIC8qKgogICAqIFN0YXJ0cyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQuc3RhcnQgPSBmdW5jdGlvbigpIHsKICAgIC8vIHVwIHRvIDU2LWJpdCBtZXNzYWdlIGxlbmd0aCBmb3IgY29udmVuaWVuY2UKICAgIG1kLm1lc3NhZ2VMZW5ndGggPSAwOwoKICAgIC8vIGZ1bGwgbWVzc2FnZSBsZW5ndGggKHNldCBtZC5tZXNzYWdlTGVuZ3RoNjQgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5KQogICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGggPSBtZC5tZXNzYWdlTGVuZ3RoNjQgPSBbXTsKICAgIHZhciBpbnQzMnMgPSBtZC5tZXNzYWdlTGVuZ3RoU2l6ZSAvIDQ7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgaW50MzJzOyArK2kpIHsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGgucHVzaCgwKTsKICAgIH0KICAgIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBfc3RhdGUgPSB7CiAgICAgIGgwOiAweDY3NDUyMzAxLAogICAgICBoMTogMHhFRkNEQUI4OSwKICAgICAgaDI6IDB4OThCQURDRkUsCiAgICAgIGgzOiAweDEwMzI1NDc2CiAgICB9OwogICAgcmV0dXJuIG1kOwogIH07CiAgLy8gc3RhcnQgZGlnZXN0IGF1dG9tYXRpY2FsbHkgZm9yIGZpcnN0IHRpbWUKICBtZC5zdGFydCgpOwoKICAvKioKICAgKiBVcGRhdGVzIHRoZSBkaWdlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZSBpbnB1dC4gVGhlIGdpdmVuIGlucHV0IGNhbgogICAqIHRyZWF0ZWQgYXMgcmF3IGlucHV0IChubyBlbmNvZGluZyB3aWxsIGJlIGFwcGxpZWQpIG9yIGFuIGVuY29kaW5nIG9mCiAgICogJ3V0ZjgnIG1heWJlIGdpdmVuIHRvIGVuY29kZSB0aGUgaW5wdXQgdXNpbmcgVVRGLTguCiAgICoKICAgKiBAcGFyYW0gbXNnIHRoZSBtZXNzYWdlIGlucHV0IHRvIHVwZGF0ZSB3aXRoLgogICAqIEBwYXJhbSBlbmNvZGluZyB0aGUgZW5jb2RpbmcgdG8gdXNlIChkZWZhdWx0OiAncmF3Jywgb3RoZXI6ICd1dGY4JykuCiAgICoKICAgKiBAcmV0dXJuIHRoaXMgZGlnZXN0IG9iamVjdC4KICAgKi8KICBtZC51cGRhdGUgPSBmdW5jdGlvbihtc2csIGVuY29kaW5nKSB7CiAgICBpZihlbmNvZGluZyA9PT0gJ3V0ZjgnKSB7CiAgICAgIG1zZyA9IGZvcmdlLnV0aWwuZW5jb2RlVXRmOChtc2cpOwogICAgfQoKICAgIC8vIHVwZGF0ZSBtZXNzYWdlIGxlbmd0aAogICAgdmFyIGxlbiA9IG1zZy5sZW5ndGg7CiAgICBtZC5tZXNzYWdlTGVuZ3RoICs9IGxlbjsKICAgIGxlbiA9IFsobGVuIC8gMHgxMDAwMDAwMDApID4+PiAwLCBsZW4gPj4+IDBdOwogICAgZm9yKHZhciBpID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGgubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gKz0gbGVuWzFdOwogICAgICBsZW5bMV0gPSBsZW5bMF0gKyAoKG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldIC8gMHgxMDAwMDAwMDApID4+PiAwKTsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gPSBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSA+Pj4gMDsKICAgICAgbGVuWzBdID0gKChsZW5bMV0gLyAweDEwMDAwMDAwMCkgPj4+IDApOwogICAgfQoKICAgIC8vIGFkZCBieXRlcyB0byBpbnB1dCBidWZmZXIKICAgIF9pbnB1dC5wdXRCeXRlcyhtc2cpOwoKICAgIC8vIHByb2Nlc3MgYnl0ZXMKICAgIF91cGRhdGUoX3N0YXRlLCBfdywgX2lucHV0KTsKCiAgICAvLyBjb21wYWN0IGlucHV0IGJ1ZmZlciBldmVyeSAySyBvciBpZiBlbXB0eQogICAgaWYoX2lucHV0LnJlYWQgPiAyMDQ4IHx8IF9pbnB1dC5sZW5ndGgoKSA9PT0gMCkgewogICAgICBfaW5wdXQuY29tcGFjdCgpOwogICAgfQoKICAgIHJldHVybiBtZDsKICB9OwoKICAvKioKICAgKiBQcm9kdWNlcyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiBhIGJ5dGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRpZ2VzdCB2YWx1ZS4KICAgKi8KICBtZC5kaWdlc3QgPSBmdW5jdGlvbigpIHsKICAgIC8qIE5vdGU6IEhlcmUgd2UgY29weSB0aGUgcmVtYWluaW5nIGJ5dGVzIGluIHRoZSBpbnB1dCBidWZmZXIgYW5kCiAgICBhZGQgdGhlIGFwcHJvcHJpYXRlIE1ENSBwYWRkaW5nLiBUaGVuIHdlIGRvIHRoZSBmaW5hbCB1cGRhdGUKICAgIG9uIGEgY29weSBvZiB0aGUgc3RhdGUgc28gdGhhdCBpZiB0aGUgdXNlciB3YW50cyB0byBnZXQKICAgIGludGVybWVkaWF0ZSBkaWdlc3RzIHRoZXkgY2FuIGRvIHNvLiAqLwoKICAgIC8qIERldGVybWluZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbXVzdCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZQogICAgdG8gZW5zdXJlIGl0cyBsZW5ndGggaXMgY29uZ3J1ZW50IHRvIDQ0OCBtb2QgNTEyLiBJbiBvdGhlciB3b3JkcywKICAgIHRoZSBkYXRhIHRvIGJlIGRpZ2VzdGVkIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA1MTIgYml0cyAob3IgMTI4IGJ5dGVzKS4KICAgIFRoaXMgZGF0YSBpbmNsdWRlcyB0aGUgbWVzc2FnZSwgc29tZSBwYWRkaW5nLCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKICAgIG1lc3NhZ2UuIFNpbmNlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBlbmNvZGVkIGFzIDggYnl0ZXMgKDY0CiAgICBiaXRzKSwgdGhhdCBtZWFucyB0aGF0IHRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIGRhdGEgbXVzdCBoYXZlIDU2IGJ5dGVzCiAgICAoNDQ4IGJpdHMpIG9mIG1lc3NhZ2UgYW5kIHBhZGRpbmcuIFRoZXJlZm9yZSwgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZQogICAgcGx1cyB0aGUgcGFkZGluZyBtdXN0IGJlIGNvbmdydWVudCB0byA0NDggbW9kIDUxMiBiZWNhdXNlCiAgICA1MTIgLSAxMjggPSA0NDguCgogICAgSW4gb3JkZXIgdG8gZmlsbCB1cCB0aGUgbWVzc2FnZSBsZW5ndGggaXQgbXVzdCBiZSBmaWxsZWQgd2l0aAogICAgcGFkZGluZyB0aGF0IGJlZ2lucyB3aXRoIDEgYml0IGZvbGxvd2VkIGJ5IGFsbCAwIGJpdHMuIFBhZGRpbmcKICAgIG11c3QgKmFsd2F5cyogYmUgcHJlc2VudCwgc28gaWYgdGhlIG1lc3NhZ2UgbGVuZ3RoIGlzIGFscmVhZHkKICAgIGNvbmdydWVudCB0byA0NDggbW9kIDUxMiwgdGhlbiA1MTIgcGFkZGluZyBiaXRzIG11c3QgYmUgYWRkZWQuICovCgogICAgdmFyIGZpbmFsQmxvY2sgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgZmluYWxCbG9jay5wdXRCeXRlcyhfaW5wdXQuYnl0ZXMoKSk7CgogICAgLy8gY29tcHV0ZSByZW1haW5pbmcgc2l6ZSB0byBiZSBkaWdlc3RlZCAoaW5jbHVkZSBtZXNzYWdlIGxlbmd0aCBzaXplKQogICAgdmFyIHJlbWFpbmluZyA9ICgKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGhbbWQuZnVsbE1lc3NhZ2VMZW5ndGgubGVuZ3RoIC0gMV0gKwogICAgICBtZC5tZXNzYWdlTGVuZ3RoU2l6ZSk7CgogICAgLy8gYWRkIHBhZGRpbmcgZm9yIG92ZXJmbG93IGJsb2NrU2l6ZSAtIG92ZXJmbG93CiAgICAvLyBfcGFkZGluZyBzdGFydHMgd2l0aCAxIGJ5dGUgd2l0aCBmaXJzdCBiaXQgaXMgc2V0IChieXRlIHZhbHVlIDEyOCksIHRoZW4KICAgIC8vIHRoZXJlIG1heSBiZSB1cCB0byAoYmxvY2tTaXplIC0gMSkgb3RoZXIgcGFkIGJ5dGVzCiAgICB2YXIgb3ZlcmZsb3cgPSByZW1haW5pbmcgJiAobWQuYmxvY2tMZW5ndGggLSAxKTsKICAgIGZpbmFsQmxvY2sucHV0Qnl0ZXMoX3BhZGRpbmcuc3Vic3RyKDAsIG1kLmJsb2NrTGVuZ3RoIC0gb3ZlcmZsb3cpKTsKCiAgICAvLyBzZXJpYWxpemUgbWVzc2FnZSBsZW5ndGggaW4gYml0cyBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyOyBzaW5jZSBsZW5ndGgKICAgIC8vIGlzIHN0b3JlZCBpbiBieXRlcyB3ZSBtdWx0aXBseSBieSA4IGFuZCBhZGQgY2FycnkKICAgIHZhciBiaXRzLCBjYXJyeSA9IDA7CiAgICBmb3IodmFyIGkgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICBiaXRzID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gKiA4ICsgY2Fycnk7CiAgICAgIGNhcnJ5ID0gKGJpdHMgLyAweDEwMDAwMDAwMCkgPj4+IDA7CiAgICAgIGZpbmFsQmxvY2sucHV0SW50MzJMZShiaXRzID4+PiAwKTsKICAgIH0KCiAgICB2YXIgczIgPSB7CiAgICAgIGgwOiBfc3RhdGUuaDAsCiAgICAgIGgxOiBfc3RhdGUuaDEsCiAgICAgIGgyOiBfc3RhdGUuaDIsCiAgICAgIGgzOiBfc3RhdGUuaDMKICAgIH07CiAgICBfdXBkYXRlKHMyLCBfdywgZmluYWxCbG9jayk7CiAgICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBydmFsLnB1dEludDMyTGUoczIuaDApOwogICAgcnZhbC5wdXRJbnQzMkxlKHMyLmgxKTsKICAgIHJ2YWwucHV0SW50MzJMZShzMi5oMik7CiAgICBydmFsLnB1dEludDMyTGUoczIuaDMpOwogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgcmV0dXJuIG1kOwp9OwoKLy8gcGFkZGluZywgY29uc3RhbnQgdGFibGVzIGZvciBjYWxjdWxhdGluZyBtZDUKdmFyIF9wYWRkaW5nID0gbnVsbDsKdmFyIF9nID0gbnVsbDsKdmFyIF9yID0gbnVsbDsKdmFyIF9rID0gbnVsbDsKdmFyIF9pbml0aWFsaXplZCA9IGZhbHNlOwoKLyoqCiAqIEluaXRpYWxpemVzIHRoZSBjb25zdGFudCB0YWJsZXMuCiAqLwpmdW5jdGlvbiBfaW5pdCgpIHsKICAvLyBjcmVhdGUgcGFkZGluZwogIF9wYWRkaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgpOwogIF9wYWRkaW5nICs9IGZvcmdlLnV0aWwuZmlsbFN0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDApLCA2NCk7CgogIC8vIGcgdmFsdWVzCiAgX2cgPSBbCiAgICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogICAgMSwgNiwgMTEsIDAsIDUsIDEwLCAxNSwgNCwgOSwgMTQsIDMsIDgsIDEzLCAyLCA3LCAxMiwKICAgIDUsIDgsIDExLCAxNCwgMSwgNCwgNywgMTAsIDEzLCAwLCAzLCA2LCA5LCAxMiwgMTUsIDIsCiAgICAwLCA3LCAxNCwgNSwgMTIsIDMsIDEwLCAxLCA4LCAxNSwgNiwgMTMsIDQsIDExLCAyLCA5XTsKCiAgLy8gcm91bmRzIHRhYmxlCiAgX3IgPSBbCiAgICA3LCAxMiwgMTcsIDIyLCAgNywgMTIsIDE3LCAyMiwgIDcsIDEyLCAxNywgMjIsICA3LCAxMiwgMTcsIDIyLAogICAgNSwgIDksIDE0LCAyMCwgIDUsICA5LCAxNCwgMjAsICA1LCAgOSwgMTQsIDIwLCAgNSwgIDksIDE0LCAyMCwKICAgIDQsIDExLCAxNiwgMjMsICA0LCAxMSwgMTYsIDIzLCAgNCwgMTEsIDE2LCAyMywgIDQsIDExLCAxNiwgMjMsCiAgICA2LCAxMCwgMTUsIDIxLCAgNiwgMTAsIDE1LCAyMSwgIDYsIDEwLCAxNSwgMjEsICA2LCAxMCwgMTUsIDIxXTsKCiAgLy8gZ2V0IHRoZSByZXN1bHQgb2YgYWJzKHNpbihpICsgMSkpIGFzIGEgMzItYml0IGludGVnZXIKICBfayA9IG5ldyBBcnJheSg2NCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IDY0OyArK2kpIHsKICAgIF9rW2ldID0gTWF0aC5mbG9vcihNYXRoLmFicyhNYXRoLnNpbihpICsgMSkpICogMHgxMDAwMDAwMDApOwogIH0KCiAgLy8gbm93IGluaXRpYWxpemVkCiAgX2luaXRpYWxpemVkID0gdHJ1ZTsKfQoKLyoqCiAqIFVwZGF0ZXMgYW4gTUQ1IHN0YXRlIHdpdGggdGhlIGdpdmVuIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gcyB0aGUgTUQ1IHN0YXRlIHRvIHVwZGF0ZS4KICogQHBhcmFtIHcgdGhlIGFycmF5IHRvIHVzZSB0byBzdG9yZSB3b3Jkcy4KICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlIGJ1ZmZlciB0byB1cGRhdGUgd2l0aC4KICovCmZ1bmN0aW9uIF91cGRhdGUocywgdywgYnl0ZXMpIHsKICAvLyBjb25zdW1lIDUxMiBiaXQgKDY0IGJ5dGUpIGNodW5rcwogIHZhciB0LCBhLCBiLCBjLCBkLCBmLCByLCBpOwogIHZhciBsZW4gPSBieXRlcy5sZW5ndGgoKTsKICB3aGlsZShsZW4gPj0gNjQpIHsKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYSA9IHMuaDA7CiAgICBiID0gcy5oMTsKICAgIGMgPSBzLmgyOwogICAgZCA9IHMuaDM7CgogICAgLy8gcm91bmQgMQogICAgZm9yKGkgPSAwOyBpIDwgMTY7ICsraSkgewogICAgICB3W2ldID0gYnl0ZXMuZ2V0SW50MzJMZSgpOwogICAgICBmID0gZCBeIChiICYgKGMgXiBkKSk7CiAgICAgIHQgPSAoYSArIGYgKyBfa1tpXSArIHdbaV0pOwogICAgICByID0gX3JbaV07CiAgICAgIGEgPSBkOwogICAgICBkID0gYzsKICAgICAgYyA9IGI7CiAgICAgIGIgKz0gKHQgPDwgcikgfCAodCA+Pj4gKDMyIC0gcikpOwogICAgfQogICAgLy8gcm91bmQgMgogICAgZm9yKDsgaSA8IDMyOyArK2kpIHsKICAgICAgZiA9IGMgXiAoZCAmIChiIF4gYykpOwogICAgICB0ID0gKGEgKyBmICsgX2tbaV0gKyB3W19nW2ldXSk7CiAgICAgIHIgPSBfcltpXTsKICAgICAgYSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiArPSAodCA8PCByKSB8ICh0ID4+PiAoMzIgLSByKSk7CiAgICB9CiAgICAvLyByb3VuZCAzCiAgICBmb3IoOyBpIDwgNDg7ICsraSkgewogICAgICBmID0gYiBeIGMgXiBkOwogICAgICB0ID0gKGEgKyBmICsgX2tbaV0gKyB3W19nW2ldXSk7CiAgICAgIHIgPSBfcltpXTsKICAgICAgYSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiArPSAodCA8PCByKSB8ICh0ID4+PiAoMzIgLSByKSk7CiAgICB9CiAgICAvLyByb3VuZCA0CiAgICBmb3IoOyBpIDwgNjQ7ICsraSkgewogICAgICBmID0gYyBeIChiIHwgfmQpOwogICAgICB0ID0gKGEgKyBmICsgX2tbaV0gKyB3W19nW2ldXSk7CiAgICAgIHIgPSBfcltpXTsKICAgICAgYSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiArPSAodCA8PCByKSB8ICh0ID4+PiAoMzIgLSByKSk7CiAgICB9CgogICAgLy8gdXBkYXRlIGhhc2ggc3RhdGUKICAgIHMuaDAgPSAocy5oMCArIGEpIHwgMDsKICAgIHMuaDEgPSAocy5oMSArIGIpIHwgMDsKICAgIHMuaDIgPSAocy5oMiArIGMpIHwgMDsKICAgIHMuaDMgPSAocy5oMyArIGQpIHwgMDsKCiAgICBsZW4gLT0gNjQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdtZDUnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvbWQ1JyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBTZWN1cmUgSGFzaCBBbGdvcml0aG0gd2l0aCAxNjAtYml0IGRpZ2VzdCAoU0hBLTEpIGltcGxlbWVudGF0aW9uLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCnZhciBzaGExID0gZm9yZ2Uuc2hhMSA9IGZvcmdlLnNoYTEgfHwge307CmZvcmdlLm1kID0gZm9yZ2UubWQgfHwge307CmZvcmdlLm1kLmFsZ29yaXRobXMgPSBmb3JnZS5tZC5hbGdvcml0aG1zIHx8IHt9Owpmb3JnZS5tZC5zaGExID0gZm9yZ2UubWQuYWxnb3JpdGhtcy5zaGExID0gc2hhMTsKCi8qKgogKiBDcmVhdGVzIGEgU0hBLTEgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKgogKiBAcmV0dXJuIGEgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0LgogKi8Kc2hhMS5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICAvLyBkbyBpbml0aWFsaXphdGlvbiBhcyBuZWNlc3NhcnkKICBpZighX2luaXRpYWxpemVkKSB7CiAgICBfaW5pdCgpOwogIH0KCiAgLy8gU0hBLTEgc3RhdGUgY29udGFpbnMgZml2ZSAzMi1iaXQgaW50ZWdlcnMKICB2YXIgX3N0YXRlID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIHdvcmQgc3RvcmFnZQogIHZhciBfdyA9IG5ldyBBcnJheSg4MCk7CgogIC8vIG1lc3NhZ2UgZGlnZXN0IG9iamVjdAogIHZhciBtZCA9IHsKICAgIGFsZ29yaXRobTogJ3NoYTEnLAogICAgYmxvY2tMZW5ndGg6IDY0LAogICAgZGlnZXN0TGVuZ3RoOiAyMCwKICAgIC8vIDU2LWJpdCBsZW5ndGggb2YgbWVzc2FnZSBzbyBmYXIgKGRvZXMgbm90IGluY2x1ZGluZyBwYWRkaW5nKQogICAgbWVzc2FnZUxlbmd0aDogMCwKICAgIC8vIHRydWUgbWVzc2FnZSBsZW5ndGgKICAgIGZ1bGxNZXNzYWdlTGVuZ3RoOiBudWxsLAogICAgLy8gc2l6ZSBvZiBtZXNzYWdlIGxlbmd0aCBpbiBieXRlcwogICAgbWVzc2FnZUxlbmd0aFNpemU6IDgKICB9OwoKICAvKioKICAgKiBTdGFydHMgdGhlIGRpZ2VzdC4KICAgKgogICAqIEByZXR1cm4gdGhpcyBkaWdlc3Qgb2JqZWN0LgogICAqLwogIG1kLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgICAvLyB1cCB0byA1Ni1iaXQgbWVzc2FnZSBsZW5ndGggZm9yIGNvbnZlbmllbmNlCiAgICBtZC5tZXNzYWdlTGVuZ3RoID0gMDsKCiAgICAvLyBmdWxsIG1lc3NhZ2UgbGVuZ3RoIChzZXQgbWQubWVzc2FnZUxlbmd0aDY0IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSkKICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoID0gbWQubWVzc2FnZUxlbmd0aDY0ID0gW107CiAgICB2YXIgaW50MzJzID0gbWQubWVzc2FnZUxlbmd0aFNpemUgLyA0OwogICAgZm9yKHZhciBpID0gMDsgaSA8IGludDMyczsgKytpKSB7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLnB1c2goMCk7CiAgICB9CiAgICBfaW5wdXQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgX3N0YXRlID0gewogICAgICBoMDogMHg2NzQ1MjMwMSwKICAgICAgaDE6IDB4RUZDREFCODksCiAgICAgIGgyOiAweDk4QkFEQ0ZFLAogICAgICBoMzogMHgxMDMyNTQ3NiwKICAgICAgaDQ6IDB4QzNEMkUxRjAKICAgIH07CiAgICByZXR1cm4gbWQ7CiAgfTsKICAvLyBzdGFydCBkaWdlc3QgYXV0b21hdGljYWxseSBmb3IgZmlyc3QgdGltZQogIG1kLnN0YXJ0KCk7CgogIC8qKgogICAqIFVwZGF0ZXMgdGhlIGRpZ2VzdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlIGlucHV0LiBUaGUgZ2l2ZW4gaW5wdXQgY2FuCiAgICogdHJlYXRlZCBhcyByYXcgaW5wdXQgKG5vIGVuY29kaW5nIHdpbGwgYmUgYXBwbGllZCkgb3IgYW4gZW5jb2Rpbmcgb2YKICAgKiAndXRmOCcgbWF5YmUgZ2l2ZW4gdG8gZW5jb2RlIHRoZSBpbnB1dCB1c2luZyBVVEYtOC4KICAgKgogICAqIEBwYXJhbSBtc2cgdGhlIG1lc3NhZ2UgaW5wdXQgdG8gdXBkYXRlIHdpdGguCiAgICogQHBhcmFtIGVuY29kaW5nIHRoZSBlbmNvZGluZyB0byB1c2UgKGRlZmF1bHQ6ICdyYXcnLCBvdGhlcjogJ3V0ZjgnKS4KICAgKgogICAqIEByZXR1cm4gdGhpcyBkaWdlc3Qgb2JqZWN0LgogICAqLwogIG1kLnVwZGF0ZSA9IGZ1bmN0aW9uKG1zZywgZW5jb2RpbmcpIHsKICAgIGlmKGVuY29kaW5nID09PSAndXRmOCcpIHsKICAgICAgbXNnID0gZm9yZ2UudXRpbC5lbmNvZGVVdGY4KG1zZyk7CiAgICB9CgogICAgLy8gdXBkYXRlIG1lc3NhZ2UgbGVuZ3RoCiAgICB2YXIgbGVuID0gbXNnLmxlbmd0aDsKICAgIG1kLm1lc3NhZ2VMZW5ndGggKz0gbGVuOwogICAgbGVuID0gWyhsZW4gLyAweDEwMDAwMDAwMCkgPj4+IDAsIGxlbiA+Pj4gMF07CiAgICBmb3IodmFyIGkgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSArPSBsZW5bMV07CiAgICAgIGxlblsxXSA9IGxlblswXSArICgobWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gLyAweDEwMDAwMDAwMCkgPj4+IDApOwogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldID4+PiAwOwogICAgICBsZW5bMF0gPSAoKGxlblsxXSAvIDB4MTAwMDAwMDAwKSA+Pj4gMCk7CiAgICB9CgogICAgLy8gYWRkIGJ5dGVzIHRvIGlucHV0IGJ1ZmZlcgogICAgX2lucHV0LnB1dEJ5dGVzKG1zZyk7CgogICAgLy8gcHJvY2VzcyBieXRlcwogICAgX3VwZGF0ZShfc3RhdGUsIF93LCBfaW5wdXQpOwoKICAgIC8vIGNvbXBhY3QgaW5wdXQgYnVmZmVyIGV2ZXJ5IDJLIG9yIGlmIGVtcHR5CiAgICBpZihfaW5wdXQucmVhZCA+IDIwNDggfHwgX2lucHV0Lmxlbmd0aCgpID09PSAwKSB7CiAgICAgIF9pbnB1dC5jb21wYWN0KCk7CiAgICB9CgogICAgcmV0dXJuIG1kOwogIH07CgogICAvKioKICAgICogUHJvZHVjZXMgdGhlIGRpZ2VzdC4KICAgICoKICAgICogQHJldHVybiBhIGJ5dGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRpZ2VzdCB2YWx1ZS4KICAgICovCiAgIG1kLmRpZ2VzdCA9IGZ1bmN0aW9uKCkgewogICAgLyogTm90ZTogSGVyZSB3ZSBjb3B5IHRoZSByZW1haW5pbmcgYnl0ZXMgaW4gdGhlIGlucHV0IGJ1ZmZlciBhbmQKICAgIGFkZCB0aGUgYXBwcm9wcmlhdGUgU0hBLTEgcGFkZGluZy4gVGhlbiB3ZSBkbyB0aGUgZmluYWwgdXBkYXRlCiAgICBvbiBhIGNvcHkgb2YgdGhlIHN0YXRlIHNvIHRoYXQgaWYgdGhlIHVzZXIgd2FudHMgdG8gZ2V0CiAgICBpbnRlcm1lZGlhdGUgZGlnZXN0cyB0aGV5IGNhbiBkbyBzby4gKi8KCiAgICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKICAgIHRvIGVuc3VyZSBpdHMgbGVuZ3RoIGlzIGNvbmdydWVudCB0byA0NDggbW9kIDUxMi4gSW4gb3RoZXIgd29yZHMsCiAgICB0aGUgZGF0YSB0byBiZSBkaWdlc3RlZCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNTEyIGJpdHMgKG9yIDEyOCBieXRlcykuCiAgICBUaGlzIGRhdGEgaW5jbHVkZXMgdGhlIG1lc3NhZ2UsIHNvbWUgcGFkZGluZywgYW5kIHRoZSBsZW5ndGggb2YgdGhlCiAgICBtZXNzYWdlLiBTaW5jZSB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIHdpbGwgYmUgZW5jb2RlZCBhcyA4IGJ5dGVzICg2NAogICAgYml0cyksIHRoYXQgbWVhbnMgdGhhdCB0aGUgbGFzdCBzZWdtZW50IG9mIHRoZSBkYXRhIG11c3QgaGF2ZSA1NiBieXRlcwogICAgKDQ0OCBiaXRzKSBvZiBtZXNzYWdlIGFuZCBwYWRkaW5nLiBUaGVyZWZvcmUsIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UKICAgIHBsdXMgdGhlIHBhZGRpbmcgbXVzdCBiZSBjb25ncnVlbnQgdG8gNDQ4IG1vZCA1MTIgYmVjYXVzZQogICAgNTEyIC0gMTI4ID0gNDQ4LgoKICAgIEluIG9yZGVyIHRvIGZpbGwgdXAgdGhlIG1lc3NhZ2UgbGVuZ3RoIGl0IG11c3QgYmUgZmlsbGVkIHdpdGgKICAgIHBhZGRpbmcgdGhhdCBiZWdpbnMgd2l0aCAxIGJpdCBmb2xsb3dlZCBieSBhbGwgMCBiaXRzLiBQYWRkaW5nCiAgICBtdXN0ICphbHdheXMqIGJlIHByZXNlbnQsIHNvIGlmIHRoZSBtZXNzYWdlIGxlbmd0aCBpcyBhbHJlYWR5CiAgICBjb25ncnVlbnQgdG8gNDQ4IG1vZCA1MTIsIHRoZW4gNTEyIHBhZGRpbmcgYml0cyBtdXN0IGJlIGFkZGVkLiAqLwoKICAgIHZhciBmaW5hbEJsb2NrID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZpbmFsQmxvY2sucHV0Qnl0ZXMoX2lucHV0LmJ5dGVzKCkpOwoKICAgIC8vIGNvbXB1dGUgcmVtYWluaW5nIHNpemUgdG8gYmUgZGlnZXN0ZWQgKGluY2x1ZGUgbWVzc2FnZSBsZW5ndGggc2l6ZSkKICAgIHZhciByZW1haW5pbmcgPSAoCiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW21kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDFdICsKICAgICAgbWQubWVzc2FnZUxlbmd0aFNpemUpOwoKICAgIC8vIGFkZCBwYWRkaW5nIGZvciBvdmVyZmxvdyBibG9ja1NpemUgLSBvdmVyZmxvdwogICAgLy8gX3BhZGRpbmcgc3RhcnRzIHdpdGggMSBieXRlIHdpdGggZmlyc3QgYml0IGlzIHNldCAoYnl0ZSB2YWx1ZSAxMjgpLCB0aGVuCiAgICAvLyB0aGVyZSBtYXkgYmUgdXAgdG8gKGJsb2NrU2l6ZSAtIDEpIG90aGVyIHBhZCBieXRlcwogICAgdmFyIG92ZXJmbG93ID0gcmVtYWluaW5nICYgKG1kLmJsb2NrTGVuZ3RoIC0gMSk7CiAgICBmaW5hbEJsb2NrLnB1dEJ5dGVzKF9wYWRkaW5nLnN1YnN0cigwLCBtZC5ibG9ja0xlbmd0aCAtIG92ZXJmbG93KSk7CgogICAgLy8gc2VyaWFsaXplIG1lc3NhZ2UgbGVuZ3RoIGluIGJpdHMgaW4gYmlnLWVuZGlhbiBvcmRlcjsgc2luY2UgbGVuZ3RoCiAgICAvLyBpcyBzdG9yZWQgaW4gYnl0ZXMgd2UgbXVsdGlwbHkgYnkgOCBhbmQgYWRkIGNhcnJ5IGZyb20gbmV4dCBpbnQKICAgIHZhciBtZXNzYWdlTGVuZ3RoID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHZhciBuZXh0LCBjYXJyeTsKICAgIHZhciBiaXRzID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbMF0gKiA4OwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aDsgKytpKSB7CiAgICAgIG5leHQgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpICsgMV0gKiA4OwogICAgICBjYXJyeSA9IChuZXh0IC8gMHgxMDAwMDAwMDApID4+PiAwOwogICAgICBiaXRzICs9IGNhcnJ5OwogICAgICBmaW5hbEJsb2NrLnB1dEludDMyKGJpdHMgPj4+IDApOwogICAgICBiaXRzID0gbmV4dDsKICAgIH0KCiAgICB2YXIgczIgPSB7CiAgICAgIGgwOiBfc3RhdGUuaDAsCiAgICAgIGgxOiBfc3RhdGUuaDEsCiAgICAgIGgyOiBfc3RhdGUuaDIsCiAgICAgIGgzOiBfc3RhdGUuaDMsCiAgICAgIGg0OiBfc3RhdGUuaDQKICAgIH07CiAgICBfdXBkYXRlKHMyLCBfdywgZmluYWxCbG9jayk7CiAgICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBydmFsLnB1dEludDMyKHMyLmgwKTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDEpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oMik7CiAgICBydmFsLnB1dEludDMyKHMyLmgzKTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDQpOwogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgcmV0dXJuIG1kOwp9OwoKLy8gc2hhLTEgcGFkZGluZyBieXRlcyBub3QgaW5pdGlhbGl6ZWQgeWV0CnZhciBfcGFkZGluZyA9IG51bGw7CnZhciBfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKCi8qKgogKiBJbml0aWFsaXplcyB0aGUgY29uc3RhbnQgdGFibGVzLgogKi8KZnVuY3Rpb24gX2luaXQoKSB7CiAgLy8gY3JlYXRlIHBhZGRpbmcKICBfcGFkZGluZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4KTsKICBfcGFkZGluZyArPSBmb3JnZS51dGlsLmZpbGxTdHJpbmcoU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwKSwgNjQpOwoKICAvLyBub3cgaW5pdGlhbGl6ZWQKICBfaW5pdGlhbGl6ZWQgPSB0cnVlOwp9CgovKioKICogVXBkYXRlcyBhIFNIQS0xIHN0YXRlIHdpdGggdGhlIGdpdmVuIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gcyB0aGUgU0hBLTEgc3RhdGUgdG8gdXBkYXRlLgogKiBAcGFyYW0gdyB0aGUgYXJyYXkgdG8gdXNlIHRvIHN0b3JlIHdvcmRzLgogKiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGUgYnVmZmVyIHRvIHVwZGF0ZSB3aXRoLgogKi8KZnVuY3Rpb24gX3VwZGF0ZShzLCB3LCBieXRlcykgewogIC8vIGNvbnN1bWUgNTEyIGJpdCAoNjQgYnl0ZSkgY2h1bmtzCiAgdmFyIHQsIGEsIGIsIGMsIGQsIGUsIGYsIGk7CiAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aCgpOwogIHdoaWxlKGxlbiA+PSA2NCkgewogICAgLy8gdGhlIHcgYXJyYXkgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBzaXh0ZWVuIDMyLWJpdCBiaWctZW5kaWFuIHdvcmRzCiAgICAvLyBhbmQgdGhlbiBleHRlbmRlZCBpbnRvIDgwIDMyLWJpdCB3b3JkcyBhY2NvcmRpbmcgdG8gU0hBLTEgYWxnb3JpdGhtCiAgICAvLyBhbmQgZm9yIDMyLTc5IHVzaW5nIE1heCBMb2NrdHl1a2hpbidzIG9wdGltaXphdGlvbgoKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYSA9IHMuaDA7CiAgICBiID0gcy5oMTsKICAgIGMgPSBzLmgyOwogICAgZCA9IHMuaDM7CiAgICBlID0gcy5oNDsKCiAgICAvLyByb3VuZCAxCiAgICBmb3IoaSA9IDA7IGkgPCAxNjsgKytpKSB7CiAgICAgIHQgPSBieXRlcy5nZXRJbnQzMigpOwogICAgICB3W2ldID0gdDsKICAgICAgZiA9IGQgXiAoYiAmIChjIF4gZCkpOwogICAgICB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBmICsgZSArIDB4NUE4Mjc5OTkgKyB0OwogICAgICBlID0gZDsKICAgICAgZCA9IGM7CiAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7CiAgICAgIGIgPSBhOwogICAgICBhID0gdDsKICAgIH0KICAgIGZvcig7IGkgPCAyMDsgKytpKSB7CiAgICAgIHQgPSAod1tpIC0gM10gXiB3W2kgLSA4XSBeIHdbaSAtIDE0XSBeIHdbaSAtIDE2XSk7CiAgICAgIHQgPSAodCA8PCAxKSB8ICh0ID4+PiAzMSk7CiAgICAgIHdbaV0gPSB0OwogICAgICBmID0gZCBeIChiICYgKGMgXiBkKSk7CiAgICAgIHQgPSAoKGEgPDwgNSkgfCAoYSA+Pj4gMjcpKSArIGYgKyBlICsgMHg1QTgyNzk5OSArIHQ7CiAgICAgIGUgPSBkOwogICAgICBkID0gYzsKICAgICAgYyA9IChiIDw8IDMwKSB8IChiID4+PiAyKTsKICAgICAgYiA9IGE7CiAgICAgIGEgPSB0OwogICAgfQogICAgLy8gcm91bmQgMgogICAgZm9yKDsgaSA8IDMyOyArK2kpIHsKICAgICAgdCA9ICh3W2kgLSAzXSBeIHdbaSAtIDhdIF4gd1tpIC0gMTRdIF4gd1tpIC0gMTZdKTsKICAgICAgdCA9ICh0IDw8IDEpIHwgKHQgPj4+IDMxKTsKICAgICAgd1tpXSA9IHQ7CiAgICAgIGYgPSBiIF4gYyBeIGQ7CiAgICAgIHQgPSAoKGEgPDwgNSkgfCAoYSA+Pj4gMjcpKSArIGYgKyBlICsgMHg2RUQ5RUJBMSArIHQ7CiAgICAgIGUgPSBkOwogICAgICBkID0gYzsKICAgICAgYyA9IChiIDw8IDMwKSB8IChiID4+PiAyKTsKICAgICAgYiA9IGE7CiAgICAgIGEgPSB0OwogICAgfQogICAgZm9yKDsgaSA8IDQwOyArK2kpIHsKICAgICAgdCA9ICh3W2kgLSA2XSBeIHdbaSAtIDE2XSBeIHdbaSAtIDI4XSBeIHdbaSAtIDMyXSk7CiAgICAgIHQgPSAodCA8PCAyKSB8ICh0ID4+PiAzMCk7CiAgICAgIHdbaV0gPSB0OwogICAgICBmID0gYiBeIGMgXiBkOwogICAgICB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBmICsgZSArIDB4NkVEOUVCQTEgKyB0OwogICAgICBlID0gZDsKICAgICAgZCA9IGM7CiAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7CiAgICAgIGIgPSBhOwogICAgICBhID0gdDsKICAgIH0KICAgIC8vIHJvdW5kIDMKICAgIGZvcig7IGkgPCA2MDsgKytpKSB7CiAgICAgIHQgPSAod1tpIC0gNl0gXiB3W2kgLSAxNl0gXiB3W2kgLSAyOF0gXiB3W2kgLSAzMl0pOwogICAgICB0ID0gKHQgPDwgMikgfCAodCA+Pj4gMzApOwogICAgICB3W2ldID0gdDsKICAgICAgZiA9IChiICYgYykgfCAoZCAmIChiIF4gYykpOwogICAgICB0ID0gKChhIDw8IDUpIHwgKGEgPj4+IDI3KSkgKyBmICsgZSArIDB4OEYxQkJDREMgKyB0OwogICAgICBlID0gZDsKICAgICAgZCA9IGM7CiAgICAgIGMgPSAoYiA8PCAzMCkgfCAoYiA+Pj4gMik7CiAgICAgIGIgPSBhOwogICAgICBhID0gdDsKICAgIH0KICAgIC8vIHJvdW5kIDQKICAgIGZvcig7IGkgPCA4MDsgKytpKSB7CiAgICAgIHQgPSAod1tpIC0gNl0gXiB3W2kgLSAxNl0gXiB3W2kgLSAyOF0gXiB3W2kgLSAzMl0pOwogICAgICB0ID0gKHQgPDwgMikgfCAodCA+Pj4gMzApOwogICAgICB3W2ldID0gdDsKICAgICAgZiA9IGIgXiBjIF4gZDsKICAgICAgdCA9ICgoYSA8PCA1KSB8IChhID4+PiAyNykpICsgZiArIGUgKyAweENBNjJDMUQ2ICsgdDsKICAgICAgZSA9IGQ7CiAgICAgIGQgPSBjOwogICAgICBjID0gKGIgPDwgMzApIHwgKGIgPj4+IDIpOwogICAgICBiID0gYTsKICAgICAgYSA9IHQ7CiAgICB9CgogICAgLy8gdXBkYXRlIGhhc2ggc3RhdGUKICAgIHMuaDAgPSAocy5oMCArIGEpIHwgMDsKICAgIHMuaDEgPSAocy5oMSArIGIpIHwgMDsKICAgIHMuaDIgPSAocy5oMiArIGMpIHwgMDsKICAgIHMuaDMgPSAocy5oMyArIGQpIHwgMDsKICAgIHMuaDQgPSAocy5oNCArIGUpIHwgMDsKCiAgICBsZW4gLT0gNjQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdzaGExJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3NoYTEnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFNlY3VyZSBIYXNoIEFsZ29yaXRobSB3aXRoIDI1Ni1iaXQgZGlnZXN0IChTSEEtMjU2KSBpbXBsZW1lbnRhdGlvbi4KICoKICogU2VlIEZJUFMgMTgwLTIgZm9yIGRldGFpbHMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDE1IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHNoYTI1NiA9IGZvcmdlLnNoYTI1NiA9IGZvcmdlLnNoYTI1NiB8fCB7fTsKZm9yZ2UubWQgPSBmb3JnZS5tZCB8fCB7fTsKZm9yZ2UubWQuYWxnb3JpdGhtcyA9IGZvcmdlLm1kLmFsZ29yaXRobXMgfHwge307CmZvcmdlLm1kLnNoYTI1NiA9IGZvcmdlLm1kLmFsZ29yaXRobXMuc2hhMjU2ID0gc2hhMjU2OwoKLyoqCiAqIENyZWF0ZXMgYSBTSEEtMjU2IG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICoKICogQHJldHVybiBhIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICovCnNoYTI1Ni5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICAvLyBkbyBpbml0aWFsaXphdGlvbiBhcyBuZWNlc3NhcnkKICBpZighX2luaXRpYWxpemVkKSB7CiAgICBfaW5pdCgpOwogIH0KCiAgLy8gU0hBLTI1NiBzdGF0ZSBjb250YWlucyBlaWdodCAzMi1iaXQgaW50ZWdlcnMKICB2YXIgX3N0YXRlID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIHdvcmQgc3RvcmFnZQogIHZhciBfdyA9IG5ldyBBcnJheSg2NCk7CgogIC8vIG1lc3NhZ2UgZGlnZXN0IG9iamVjdAogIHZhciBtZCA9IHsKICAgIGFsZ29yaXRobTogJ3NoYTI1NicsCiAgICBibG9ja0xlbmd0aDogNjQsCiAgICBkaWdlc3RMZW5ndGg6IDMyLAogICAgLy8gNTYtYml0IGxlbmd0aCBvZiBtZXNzYWdlIHNvIGZhciAoZG9lcyBub3QgaW5jbHVkaW5nIHBhZGRpbmcpCiAgICBtZXNzYWdlTGVuZ3RoOiAwLAogICAgLy8gdHJ1ZSBtZXNzYWdlIGxlbmd0aAogICAgZnVsbE1lc3NhZ2VMZW5ndGg6IG51bGwsCiAgICAvLyBzaXplIG9mIG1lc3NhZ2UgbGVuZ3RoIGluIGJ5dGVzCiAgICBtZXNzYWdlTGVuZ3RoU2l6ZTogOAogIH07CgogIC8qKgogICAqIFN0YXJ0cyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQuc3RhcnQgPSBmdW5jdGlvbigpIHsKICAgIC8vIHVwIHRvIDU2LWJpdCBtZXNzYWdlIGxlbmd0aCBmb3IgY29udmVuaWVuY2UKICAgIG1kLm1lc3NhZ2VMZW5ndGggPSAwOwoKICAgIC8vIGZ1bGwgbWVzc2FnZSBsZW5ndGggKHNldCBtZC5tZXNzYWdlTGVuZ3RoNjQgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5KQogICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGggPSBtZC5tZXNzYWdlTGVuZ3RoNjQgPSBbXTsKICAgIHZhciBpbnQzMnMgPSBtZC5tZXNzYWdlTGVuZ3RoU2l6ZSAvIDQ7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgaW50MzJzOyArK2kpIHsKICAgICAgbWQuZnVsbE1lc3NhZ2VMZW5ndGgucHVzaCgwKTsKICAgIH0KICAgIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBfc3RhdGUgPSB7CiAgICAgIGgwOiAweDZBMDlFNjY3LAogICAgICBoMTogMHhCQjY3QUU4NSwKICAgICAgaDI6IDB4M0M2RUYzNzIsCiAgICAgIGgzOiAweEE1NEZGNTNBLAogICAgICBoNDogMHg1MTBFNTI3RiwKICAgICAgaDU6IDB4OUIwNTY4OEMsCiAgICAgIGg2OiAweDFGODNEOUFCLAogICAgICBoNzogMHg1QkUwQ0QxOQogICAgfTsKICAgIHJldHVybiBtZDsKICB9OwogIC8vIHN0YXJ0IGRpZ2VzdCBhdXRvbWF0aWNhbGx5IGZvciBmaXJzdCB0aW1lCiAgbWQuc3RhcnQoKTsKCiAgLyoqCiAgICogVXBkYXRlcyB0aGUgZGlnZXN0IHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UgaW5wdXQuIFRoZSBnaXZlbiBpbnB1dCBjYW4KICAgKiB0cmVhdGVkIGFzIHJhdyBpbnB1dCAobm8gZW5jb2Rpbmcgd2lsbCBiZSBhcHBsaWVkKSBvciBhbiBlbmNvZGluZyBvZgogICAqICd1dGY4JyBtYXliZSBnaXZlbiB0byBlbmNvZGUgdGhlIGlucHV0IHVzaW5nIFVURi04LgogICAqCiAgICogQHBhcmFtIG1zZyB0aGUgbWVzc2FnZSBpbnB1dCB0byB1cGRhdGUgd2l0aC4KICAgKiBAcGFyYW0gZW5jb2RpbmcgdGhlIGVuY29kaW5nIHRvIHVzZSAoZGVmYXVsdDogJ3JhdycsIG90aGVyOiAndXRmOCcpLgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQudXBkYXRlID0gZnVuY3Rpb24obXNnLCBlbmNvZGluZykgewogICAgaWYoZW5jb2RpbmcgPT09ICd1dGY4JykgewogICAgICBtc2cgPSBmb3JnZS51dGlsLmVuY29kZVV0ZjgobXNnKTsKICAgIH0KCiAgICAvLyB1cGRhdGUgbWVzc2FnZSBsZW5ndGgKICAgIHZhciBsZW4gPSBtc2cubGVuZ3RoOwogICAgbWQubWVzc2FnZUxlbmd0aCArPSBsZW47CiAgICBsZW4gPSBbKGxlbiAvIDB4MTAwMDAwMDAwKSA+Pj4gMCwgbGVuID4+PiAwXTsKICAgIGZvcih2YXIgaSA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldICs9IGxlblsxXTsKICAgICAgbGVuWzFdID0gbGVuWzBdICsgKChtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSAvIDB4MTAwMDAwMDAwKSA+Pj4gMCk7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gPj4+IDA7CiAgICAgIGxlblswXSA9ICgobGVuWzFdIC8gMHgxMDAwMDAwMDApID4+PiAwKTsKICAgIH0KCiAgICAvLyBhZGQgYnl0ZXMgdG8gaW5wdXQgYnVmZmVyCiAgICBfaW5wdXQucHV0Qnl0ZXMobXNnKTsKCiAgICAvLyBwcm9jZXNzIGJ5dGVzCiAgICBfdXBkYXRlKF9zdGF0ZSwgX3csIF9pbnB1dCk7CgogICAgLy8gY29tcGFjdCBpbnB1dCBidWZmZXIgZXZlcnkgMksgb3IgaWYgZW1wdHkKICAgIGlmKF9pbnB1dC5yZWFkID4gMjA0OCB8fCBfaW5wdXQubGVuZ3RoKCkgPT09IDApIHsKICAgICAgX2lucHV0LmNvbXBhY3QoKTsKICAgIH0KCiAgICByZXR1cm4gbWQ7CiAgfTsKCiAgLyoqCiAgICogUHJvZHVjZXMgdGhlIGRpZ2VzdC4KICAgKgogICAqIEByZXR1cm4gYSBieXRlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkaWdlc3QgdmFsdWUuCiAgICovCiAgbWQuZGlnZXN0ID0gZnVuY3Rpb24oKSB7CiAgICAvKiBOb3RlOiBIZXJlIHdlIGNvcHkgdGhlIHJlbWFpbmluZyBieXRlcyBpbiB0aGUgaW5wdXQgYnVmZmVyIGFuZAogICAgYWRkIHRoZSBhcHByb3ByaWF0ZSBTSEEtMjU2IHBhZGRpbmcuIFRoZW4gd2UgZG8gdGhlIGZpbmFsIHVwZGF0ZQogICAgb24gYSBjb3B5IG9mIHRoZSBzdGF0ZSBzbyB0aGF0IGlmIHRoZSB1c2VyIHdhbnRzIHRvIGdldAogICAgaW50ZXJtZWRpYXRlIGRpZ2VzdHMgdGhleSBjYW4gZG8gc28uICovCgogICAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtdXN0IGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlCiAgICB0byBlbnN1cmUgaXRzIGxlbmd0aCBpcyBjb25ncnVlbnQgdG8gNDQ4IG1vZCA1MTIuIEluIG90aGVyIHdvcmRzLAogICAgdGhlIGRhdGEgdG8gYmUgZGlnZXN0ZWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDUxMiBiaXRzIChvciAxMjggYnl0ZXMpLgogICAgVGhpcyBkYXRhIGluY2x1ZGVzIHRoZSBtZXNzYWdlLCBzb21lIHBhZGRpbmcsIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQogICAgbWVzc2FnZS4gU2luY2UgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSB3aWxsIGJlIGVuY29kZWQgYXMgOCBieXRlcyAoNjQKICAgIGJpdHMpLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGxhc3Qgc2VnbWVudCBvZiB0aGUgZGF0YSBtdXN0IGhhdmUgNTYgYnl0ZXMKICAgICg0NDggYml0cykgb2YgbWVzc2FnZSBhbmQgcGFkZGluZy4gVGhlcmVmb3JlLCB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlCiAgICBwbHVzIHRoZSBwYWRkaW5nIG11c3QgYmUgY29uZ3J1ZW50IHRvIDQ0OCBtb2QgNTEyIGJlY2F1c2UKICAgIDUxMiAtIDEyOCA9IDQ0OC4KCiAgICBJbiBvcmRlciB0byBmaWxsIHVwIHRoZSBtZXNzYWdlIGxlbmd0aCBpdCBtdXN0IGJlIGZpbGxlZCB3aXRoCiAgICBwYWRkaW5nIHRoYXQgYmVnaW5zIHdpdGggMSBiaXQgZm9sbG93ZWQgYnkgYWxsIDAgYml0cy4gUGFkZGluZwogICAgbXVzdCAqYWx3YXlzKiBiZSBwcmVzZW50LCBzbyBpZiB0aGUgbWVzc2FnZSBsZW5ndGggaXMgYWxyZWFkeQogICAgY29uZ3J1ZW50IHRvIDQ0OCBtb2QgNTEyLCB0aGVuIDUxMiBwYWRkaW5nIGJpdHMgbXVzdCBiZSBhZGRlZC4gKi8KCiAgICB2YXIgZmluYWxCbG9jayA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBmaW5hbEJsb2NrLnB1dEJ5dGVzKF9pbnB1dC5ieXRlcygpKTsKCiAgICAvLyBjb21wdXRlIHJlbWFpbmluZyBzaXplIHRvIGJlIGRpZ2VzdGVkIChpbmNsdWRlIG1lc3NhZ2UgbGVuZ3RoIHNpemUpCiAgICB2YXIgcmVtYWluaW5nID0gKAogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aFttZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGggLSAxXSArCiAgICAgIG1kLm1lc3NhZ2VMZW5ndGhTaXplKTsKCiAgICAvLyBhZGQgcGFkZGluZyBmb3Igb3ZlcmZsb3cgYmxvY2tTaXplIC0gb3ZlcmZsb3cKICAgIC8vIF9wYWRkaW5nIHN0YXJ0cyB3aXRoIDEgYnl0ZSB3aXRoIGZpcnN0IGJpdCBpcyBzZXQgKGJ5dGUgdmFsdWUgMTI4KSwgdGhlbgogICAgLy8gdGhlcmUgbWF5IGJlIHVwIHRvIChibG9ja1NpemUgLSAxKSBvdGhlciBwYWQgYnl0ZXMKICAgIHZhciBvdmVyZmxvdyA9IHJlbWFpbmluZyAmIChtZC5ibG9ja0xlbmd0aCAtIDEpOwogICAgZmluYWxCbG9jay5wdXRCeXRlcyhfcGFkZGluZy5zdWJzdHIoMCwgbWQuYmxvY2tMZW5ndGggLSBvdmVyZmxvdykpOwoKICAgIC8vIHNlcmlhbGl6ZSBtZXNzYWdlIGxlbmd0aCBpbiBiaXRzIGluIGJpZy1lbmRpYW4gb3JkZXI7IHNpbmNlIGxlbmd0aAogICAgLy8gaXMgc3RvcmVkIGluIGJ5dGVzIHdlIG11bHRpcGx5IGJ5IDggYW5kIGFkZCBjYXJyeSBmcm9tIG5leHQgaW50CiAgICB2YXIgbWVzc2FnZUxlbmd0aCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICB2YXIgbmV4dCwgY2Fycnk7CiAgICB2YXIgYml0cyA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoWzBdICogODsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtZC5mdWxsTWVzc2FnZUxlbmd0aC5sZW5ndGg7ICsraSkgewogICAgICBuZXh0ID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaSArIDFdICogODsKICAgICAgY2FycnkgPSAobmV4dCAvIDB4MTAwMDAwMDAwKSA+Pj4gMDsKICAgICAgYml0cyArPSBjYXJyeTsKICAgICAgZmluYWxCbG9jay5wdXRJbnQzMihiaXRzID4+PiAwKTsKICAgICAgYml0cyA9IG5leHQ7CiAgICB9CgogICAgdmFyIHMyID0gewogICAgICBoMDogX3N0YXRlLmgwLAogICAgICBoMTogX3N0YXRlLmgxLAogICAgICBoMjogX3N0YXRlLmgyLAogICAgICBoMzogX3N0YXRlLmgzLAogICAgICBoNDogX3N0YXRlLmg0LAogICAgICBoNTogX3N0YXRlLmg1LAogICAgICBoNjogX3N0YXRlLmg2LAogICAgICBoNzogX3N0YXRlLmg3CiAgICB9OwogICAgX3VwZGF0ZShzMiwgX3csIGZpbmFsQmxvY2spOwogICAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oMCk7CiAgICBydmFsLnB1dEludDMyKHMyLmgxKTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDIpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oMyk7CiAgICBydmFsLnB1dEludDMyKHMyLmg0KTsKICAgIHJ2YWwucHV0SW50MzIoczIuaDUpOwogICAgcnZhbC5wdXRJbnQzMihzMi5oNik7CiAgICBydmFsLnB1dEludDMyKHMyLmg3KTsKICAgIHJldHVybiBydmFsOwogIH07CgogIHJldHVybiBtZDsKfTsKCi8vIHNoYS0yNTYgcGFkZGluZyBieXRlcyBub3QgaW5pdGlhbGl6ZWQgeWV0CnZhciBfcGFkZGluZyA9IG51bGw7CnZhciBfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKCi8vIHRhYmxlIG9mIGNvbnN0YW50cwp2YXIgX2sgPSBudWxsOwoKLyoqCiAqIEluaXRpYWxpemVzIHRoZSBjb25zdGFudCB0YWJsZXMuCiAqLwpmdW5jdGlvbiBfaW5pdCgpIHsKICAvLyBjcmVhdGUgcGFkZGluZwogIF9wYWRkaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZSgxMjgpOwogIF9wYWRkaW5nICs9IGZvcmdlLnV0aWwuZmlsbFN0cmluZyhTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDApLCA2NCk7CgogIC8vIGNyZWF0ZSBLIHRhYmxlIGZvciBTSEEtMjU2CiAgX2sgPSBbCiAgICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LAogICAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSwKICAgIDB4ZDgwN2FhOTgsIDB4MTI4MzViMDEsIDB4MjQzMTg1YmUsIDB4NTUwYzdkYzMsCiAgICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LAogICAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYywKICAgIDB4MmRlOTJjNmYsIDB4NGE3NDg0YWEsIDB4NWNiMGE5ZGMsIDB4NzZmOTg4ZGEsCiAgICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LAogICAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NywKICAgIDB4MjdiNzBhODUsIDB4MmUxYjIxMzgsIDB4NGQyYzZkZmMsIDB4NTMzODBkMTMsCiAgICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LAogICAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMywKICAgIDB4ZDE5MmU4MTksIDB4ZDY5OTA2MjQsIDB4ZjQwZTM1ODUsIDB4MTA2YWEwNzAsCiAgICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LAogICAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMywKICAgIDB4NzQ4ZjgyZWUsIDB4NzhhNTYzNmYsIDB4ODRjODc4MTQsIDB4OGNjNzAyMDgsCiAgICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXTsKCiAgLy8gbm93IGluaXRpYWxpemVkCiAgX2luaXRpYWxpemVkID0gdHJ1ZTsKfQoKLyoqCiAqIFVwZGF0ZXMgYSBTSEEtMjU2IHN0YXRlIHdpdGggdGhlIGdpdmVuIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gcyB0aGUgU0hBLTI1NiBzdGF0ZSB0byB1cGRhdGUuCiAqIEBwYXJhbSB3IHRoZSBhcnJheSB0byB1c2UgdG8gc3RvcmUgd29yZHMuCiAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZSBidWZmZXIgdG8gdXBkYXRlIHdpdGguCiAqLwpmdW5jdGlvbiBfdXBkYXRlKHMsIHcsIGJ5dGVzKSB7CiAgLy8gY29uc3VtZSA1MTIgYml0ICg2NCBieXRlKSBjaHVua3MKICB2YXIgdDEsIHQyLCBzMCwgczEsIGNoLCBtYWosIGksIGEsIGIsIGMsIGQsIGUsIGYsIGcsIGg7CiAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aCgpOwogIHdoaWxlKGxlbiA+PSA2NCkgewogICAgLy8gdGhlIHcgYXJyYXkgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBzaXh0ZWVuIDMyLWJpdCBiaWctZW5kaWFuIHdvcmRzCiAgICAvLyBhbmQgdGhlbiBleHRlbmRlZCBpbnRvIDY0IDMyLWJpdCB3b3JkcyBhY2NvcmRpbmcgdG8gU0hBLTI1NgogICAgZm9yKGkgPSAwOyBpIDwgMTY7ICsraSkgewogICAgICB3W2ldID0gYnl0ZXMuZ2V0SW50MzIoKTsKICAgIH0KICAgIGZvcig7IGkgPCA2NDsgKytpKSB7CiAgICAgIC8vIFhPUiB3b3JkIDIgd29yZHMgYWdvIHJvdCByaWdodCAxNywgcm90IHJpZ2h0IDE5LCBzaGZ0IHJpZ2h0IDEwCiAgICAgIHQxID0gd1tpIC0gMl07CiAgICAgIHQxID0KICAgICAgICAoKHQxID4+PiAxNykgfCAodDEgPDwgMTUpKSBeCiAgICAgICAgKCh0MSA+Pj4gMTkpIHwgKHQxIDw8IDEzKSkgXgogICAgICAgICh0MSA+Pj4gMTApOwogICAgICAvLyBYT1Igd29yZCAxNSB3b3JkcyBhZ28gcm90IHJpZ2h0IDcsIHJvdCByaWdodCAxOCwgc2hmdCByaWdodCAzCiAgICAgIHQyID0gd1tpIC0gMTVdOwogICAgICB0MiA9CiAgICAgICAgKCh0MiA+Pj4gNykgfCAodDIgPDwgMjUpKSBeCiAgICAgICAgKCh0MiA+Pj4gMTgpIHwgKHQyIDw8IDE0KSkgXgogICAgICAgICh0MiA+Pj4gMyk7CiAgICAgIC8vIHN1bSh0MSwgd29yZCA3IGFnbywgdDIsIHdvcmQgMTYgYWdvKSBtb2R1bG8gMl4zMgogICAgICB3W2ldID0gKHQxICsgd1tpIC0gN10gKyB0MiArIHdbaSAtIDE2XSkgfCAwOwogICAgfQoKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYSA9IHMuaDA7CiAgICBiID0gcy5oMTsKICAgIGMgPSBzLmgyOwogICAgZCA9IHMuaDM7CiAgICBlID0gcy5oNDsKICAgIGYgPSBzLmg1OwogICAgZyA9IHMuaDY7CiAgICBoID0gcy5oNzsKCiAgICAvLyByb3VuZCBmdW5jdGlvbgogICAgZm9yKGkgPSAwOyBpIDwgNjQ7ICsraSkgewogICAgICAvLyBTdW0xKGUpCiAgICAgIHMxID0KICAgICAgICAoKGUgPj4+IDYpIHwgKGUgPDwgMjYpKSBeCiAgICAgICAgKChlID4+PiAxMSkgfCAoZSA8PCAyMSkpIF4KICAgICAgICAoKGUgPj4+IDI1KSB8IChlIDw8IDcpKTsKICAgICAgLy8gQ2goZSwgZiwgZykgKG9wdGltaXplZCB0aGUgc2FtZSB3YXkgYXMgU0hBLTEpCiAgICAgIGNoID0gZyBeIChlICYgKGYgXiBnKSk7CiAgICAgIC8vIFN1bTAoYSkKICAgICAgczAgPQogICAgICAgICgoYSA+Pj4gMikgfCAoYSA8PCAzMCkpIF4KICAgICAgICAoKGEgPj4+IDEzKSB8IChhIDw8IDE5KSkgXgogICAgICAgICgoYSA+Pj4gMjIpIHwgKGEgPDwgMTApKTsKICAgICAgLy8gTWFqKGEsIGIsIGMpIChvcHRpbWl6ZWQgdGhlIHNhbWUgd2F5IGFzIFNIQS0xKQogICAgICBtYWogPSAoYSAmIGIpIHwgKGMgJiAoYSBeIGIpKTsKCiAgICAgIC8vIG1haW4gYWxnb3JpdGhtCiAgICAgIHQxID0gaCArIHMxICsgY2ggKyBfa1tpXSArIHdbaV07CiAgICAgIHQyID0gczAgKyBtYWo7CiAgICAgIGggPSBnOwogICAgICBnID0gZjsKICAgICAgZiA9IGU7CiAgICAgIGUgPSAoZCArIHQxKSB8IDA7CiAgICAgIGQgPSBjOwogICAgICBjID0gYjsKICAgICAgYiA9IGE7CiAgICAgIGEgPSAodDEgKyB0MikgfCAwOwogICAgfQoKICAgIC8vIHVwZGF0ZSBoYXNoIHN0YXRlCiAgICBzLmgwID0gKHMuaDAgKyBhKSB8IDA7CiAgICBzLmgxID0gKHMuaDEgKyBiKSB8IDA7CiAgICBzLmgyID0gKHMuaDIgKyBjKSB8IDA7CiAgICBzLmgzID0gKHMuaDMgKyBkKSB8IDA7CiAgICBzLmg0ID0gKHMuaDQgKyBlKSB8IDA7CiAgICBzLmg1ID0gKHMuaDUgKyBmKSB8IDA7CiAgICBzLmg2ID0gKHMuaDYgKyBnKSB8IDA7CiAgICBzLmg3ID0gKHMuaDcgKyBoKSB8IDA7CiAgICBsZW4gLT0gNjQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdzaGEyNTYnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvc2hhMjU2JyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBTZWN1cmUgSGFzaCBBbGdvcml0aG0gd2l0aCBhIDEwMjQtYml0IGJsb2NrIHNpemUgaW1wbGVtZW50YXRpb24uCiAqCiAqIFRoaXMgaW5jbHVkZXM6IFNIQS01MTIsIFNIQS0zODQsIFNIQS01MTIvMjI0LCBhbmQgU0hBLTUxMi8yNTYuIEZvcgogKiBTSEEtMjU2IChibG9jayBzaXplIDUxMiBiaXRzKSwgc2VlIHNoYTI1Ni5qcy4KICoKICogU2VlIEZJUFMgMTgwLTQgZm9yIGRldGFpbHMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHNoYTUxMiA9IGZvcmdlLnNoYTUxMiA9IGZvcmdlLnNoYTUxMiB8fCB7fTsKZm9yZ2UubWQgPSBmb3JnZS5tZCB8fCB7fTsKZm9yZ2UubWQuYWxnb3JpdGhtcyA9IGZvcmdlLm1kLmFsZ29yaXRobXMgfHwge307CgovLyBTSEEtNTEyCmZvcmdlLm1kLnNoYTUxMiA9IGZvcmdlLm1kLmFsZ29yaXRobXMuc2hhNTEyID0gc2hhNTEyOwoKLy8gU0hBLTM4NAp2YXIgc2hhMzg0ID0gZm9yZ2Uuc2hhMzg0ID0gZm9yZ2Uuc2hhNTEyLnNoYTM4NCA9IGZvcmdlLnNoYTUxMi5zaGEzODQgfHwge307CnNoYTM4NC5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gc2hhNTEyLmNyZWF0ZSgnU0hBLTM4NCcpOwp9Owpmb3JnZS5tZC5zaGEzODQgPSBmb3JnZS5tZC5hbGdvcml0aG1zLnNoYTM4NCA9IHNoYTM4NDsKCi8vIFNIQS01MTIvMjU2CmZvcmdlLnNoYTUxMi5zaGEyNTYgPSBmb3JnZS5zaGE1MTIuc2hhMjU2IHx8IHsKICBjcmVhdGU6IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHNoYTUxMi5jcmVhdGUoJ1NIQS01MTIvMjU2Jyk7CiAgfQp9Owpmb3JnZS5tZFsnc2hhNTEyLzI1NiddID0gZm9yZ2UubWQuYWxnb3JpdGhtc1snc2hhNTEyLzI1NiddID0KICBmb3JnZS5zaGE1MTIuc2hhMjU2OwoKLy8gU0hBLTUxMi8yMjQKZm9yZ2Uuc2hhNTEyLnNoYTIyNCA9IGZvcmdlLnNoYTUxMi5zaGEyMjQgfHwgewogIGNyZWF0ZTogZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gc2hhNTEyLmNyZWF0ZSgnU0hBLTUxMi8yMjQnKTsKICB9Cn07CmZvcmdlLm1kWydzaGE1MTIvMjI0J10gPSBmb3JnZS5tZC5hbGdvcml0aG1zWydzaGE1MTIvMjI0J10gPQogIGZvcmdlLnNoYTUxMi5zaGEyMjQ7CgovKioKICogQ3JlYXRlcyBhIFNIQS0yIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICoKICogQHBhcmFtIGFsZ29yaXRobSB0aGUgYWxnb3JpdGhtIHRvIHVzZSAoU0hBLTUxMiwgU0hBLTM4NCwgU0hBLTUxMi8yMjQsCiAqICAgICAgICAgIFNIQS01MTIvMjU2KS4KICoKICogQHJldHVybiBhIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICovCnNoYTUxMi5jcmVhdGUgPSBmdW5jdGlvbihhbGdvcml0aG0pIHsKICAvLyBkbyBpbml0aWFsaXphdGlvbiBhcyBuZWNlc3NhcnkKICBpZighX2luaXRpYWxpemVkKSB7CiAgICBfaW5pdCgpOwogIH0KCiAgaWYodHlwZW9mIGFsZ29yaXRobSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGFsZ29yaXRobSA9ICdTSEEtNTEyJzsKICB9CgogIGlmKCEoYWxnb3JpdGhtIGluIF9zdGF0ZXMpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgU0hBLTUxMiBhbGdvcml0aG06ICcgKyBhbGdvcml0aG0pOwogIH0KCiAgLy8gU0hBLTUxMiBzdGF0ZSBjb250YWlucyBlaWdodCA2NC1iaXQgaW50ZWdlcnMgKGVhY2ggYXMgdHdvIDMyLWJpdCBpbnRzKQogIHZhciBfc3RhdGUgPSBfc3RhdGVzW2FsZ29yaXRobV07CiAgdmFyIF9oID0gbnVsbDsKCiAgLy8gaW5wdXQgYnVmZmVyCiAgdmFyIF9pbnB1dCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIHVzZWQgZm9yIDY0LWJpdCB3b3JkIHN0b3JhZ2UKICB2YXIgX3cgPSBuZXcgQXJyYXkoODApOwogIGZvcih2YXIgd2kgPSAwOyB3aSA8IDgwOyArK3dpKSB7CiAgICBfd1t3aV0gPSBuZXcgQXJyYXkoMik7CiAgfQoKICAvLyBtZXNzYWdlIGRpZ2VzdCBvYmplY3QKICB2YXIgbWQgPSB7CiAgICAvLyBTSEEtNTEyID0+IHNoYTUxMgogICAgYWxnb3JpdGhtOiBhbGdvcml0aG0ucmVwbGFjZSgnLScsICcnKS50b0xvd2VyQ2FzZSgpLAogICAgYmxvY2tMZW5ndGg6IDEyOCwKICAgIGRpZ2VzdExlbmd0aDogNjQsCiAgICAvLyA1Ni1iaXQgbGVuZ3RoIG9mIG1lc3NhZ2Ugc28gZmFyIChkb2VzIG5vdCBpbmNsdWRpbmcgcGFkZGluZykKICAgIG1lc3NhZ2VMZW5ndGg6IDAsCiAgICAvLyB0cnVlIG1lc3NhZ2UgbGVuZ3RoCiAgICBmdWxsTWVzc2FnZUxlbmd0aDogbnVsbCwKICAgIC8vIHNpemUgb2YgbWVzc2FnZSBsZW5ndGggaW4gYnl0ZXMKICAgIG1lc3NhZ2VMZW5ndGhTaXplOiAxNgogIH07CgogIC8qKgogICAqIFN0YXJ0cyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQuc3RhcnQgPSBmdW5jdGlvbigpIHsKICAgIC8vIHVwIHRvIDU2LWJpdCBtZXNzYWdlIGxlbmd0aCBmb3IgY29udmVuaWVuY2UKICAgIG1kLm1lc3NhZ2VMZW5ndGggPSAwOwoKICAgIC8vIGZ1bGwgbWVzc2FnZSBsZW5ndGggKHNldCBtZC5tZXNzYWdlTGVuZ3RoMTI4IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSkKICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoID0gbWQubWVzc2FnZUxlbmd0aDEyOCA9IFtdOwogICAgdmFyIGludDMycyA9IG1kLm1lc3NhZ2VMZW5ndGhTaXplIC8gNDsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBpbnQzMnM7ICsraSkgewogICAgICBtZC5mdWxsTWVzc2FnZUxlbmd0aC5wdXNoKDApOwogICAgfQogICAgX2lucHV0ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIF9oID0gbmV3IEFycmF5KF9zdGF0ZS5sZW5ndGgpOwogICAgZm9yKHZhciBpID0gMDsgaSA8IF9zdGF0ZS5sZW5ndGg7ICsraSkgewogICAgICBfaFtpXSA9IF9zdGF0ZVtpXS5zbGljZSgwKTsKICAgIH0KICAgIHJldHVybiBtZDsKICB9OwogIC8vIHN0YXJ0IGRpZ2VzdCBhdXRvbWF0aWNhbGx5IGZvciBmaXJzdCB0aW1lCiAgbWQuc3RhcnQoKTsKCiAgLyoqCiAgICogVXBkYXRlcyB0aGUgZGlnZXN0IHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UgaW5wdXQuIFRoZSBnaXZlbiBpbnB1dCBjYW4KICAgKiB0cmVhdGVkIGFzIHJhdyBpbnB1dCAobm8gZW5jb2Rpbmcgd2lsbCBiZSBhcHBsaWVkKSBvciBhbiBlbmNvZGluZyBvZgogICAqICd1dGY4JyBtYXliZSBnaXZlbiB0byBlbmNvZGUgdGhlIGlucHV0IHVzaW5nIFVURi04LgogICAqCiAgICogQHBhcmFtIG1zZyB0aGUgbWVzc2FnZSBpbnB1dCB0byB1cGRhdGUgd2l0aC4KICAgKiBAcGFyYW0gZW5jb2RpbmcgdGhlIGVuY29kaW5nIHRvIHVzZSAoZGVmYXVsdDogJ3JhdycsIG90aGVyOiAndXRmOCcpLgogICAqCiAgICogQHJldHVybiB0aGlzIGRpZ2VzdCBvYmplY3QuCiAgICovCiAgbWQudXBkYXRlID0gZnVuY3Rpb24obXNnLCBlbmNvZGluZykgewogICAgaWYoZW5jb2RpbmcgPT09ICd1dGY4JykgewogICAgICBtc2cgPSBmb3JnZS51dGlsLmVuY29kZVV0ZjgobXNnKTsKICAgIH0KCiAgICAvLyB1cGRhdGUgbWVzc2FnZSBsZW5ndGgKICAgIHZhciBsZW4gPSBtc2cubGVuZ3RoOwogICAgbWQubWVzc2FnZUxlbmd0aCArPSBsZW47CiAgICBsZW4gPSBbKGxlbiAvIDB4MTAwMDAwMDAwKSA+Pj4gMCwgbGVuID4+PiAwXTsKICAgIGZvcih2YXIgaSA9IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldICs9IGxlblsxXTsKICAgICAgbGVuWzFdID0gbGVuWzBdICsgKChtZC5mdWxsTWVzc2FnZUxlbmd0aFtpXSAvIDB4MTAwMDAwMDAwKSA+Pj4gMCk7CiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW2ldID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbaV0gPj4+IDA7CiAgICAgIGxlblswXSA9ICgobGVuWzFdIC8gMHgxMDAwMDAwMDApID4+PiAwKTsKICAgIH0KCiAgICAvLyBhZGQgYnl0ZXMgdG8gaW5wdXQgYnVmZmVyCiAgICBfaW5wdXQucHV0Qnl0ZXMobXNnKTsKCiAgICAvLyBwcm9jZXNzIGJ5dGVzCiAgICBfdXBkYXRlKF9oLCBfdywgX2lucHV0KTsKCiAgICAvLyBjb21wYWN0IGlucHV0IGJ1ZmZlciBldmVyeSAySyBvciBpZiBlbXB0eQogICAgaWYoX2lucHV0LnJlYWQgPiAyMDQ4IHx8IF9pbnB1dC5sZW5ndGgoKSA9PT0gMCkgewogICAgICBfaW5wdXQuY29tcGFjdCgpOwogICAgfQoKICAgIHJldHVybiBtZDsKICB9OwoKICAvKioKICAgKiBQcm9kdWNlcyB0aGUgZGlnZXN0LgogICAqCiAgICogQHJldHVybiBhIGJ5dGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRpZ2VzdCB2YWx1ZS4KICAgKi8KICBtZC5kaWdlc3QgPSBmdW5jdGlvbigpIHsKICAgIC8qIE5vdGU6IEhlcmUgd2UgY29weSB0aGUgcmVtYWluaW5nIGJ5dGVzIGluIHRoZSBpbnB1dCBidWZmZXIgYW5kCiAgICBhZGQgdGhlIGFwcHJvcHJpYXRlIFNIQS01MTIgcGFkZGluZy4gVGhlbiB3ZSBkbyB0aGUgZmluYWwgdXBkYXRlCiAgICBvbiBhIGNvcHkgb2YgdGhlIHN0YXRlIHNvIHRoYXQgaWYgdGhlIHVzZXIgd2FudHMgdG8gZ2V0CiAgICBpbnRlcm1lZGlhdGUgZGlnZXN0cyB0aGV5IGNhbiBkbyBzby4gKi8KCiAgICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKICAgIHRvIGVuc3VyZSBpdHMgbGVuZ3RoIGlzIGNvbmdydWVudCB0byA4OTYgbW9kIDEwMjQuIEluIG90aGVyIHdvcmRzLAogICAgdGhlIGRhdGEgdG8gYmUgZGlnZXN0ZWQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDEwMjQgYml0cyAob3IgMTI4IGJ5dGVzKS4KICAgIFRoaXMgZGF0YSBpbmNsdWRlcyB0aGUgbWVzc2FnZSwgc29tZSBwYWRkaW5nLCBhbmQgdGhlIGxlbmd0aCBvZiB0aGUKICAgIG1lc3NhZ2UuIFNpbmNlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2Ugd2lsbCBiZSBlbmNvZGVkIGFzIDE2IGJ5dGVzICgxMjgKICAgIGJpdHMpLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGxhc3Qgc2VnbWVudCBvZiB0aGUgZGF0YSBtdXN0IGhhdmUgMTEyIGJ5dGVzCiAgICAoODk2IGJpdHMpIG9mIG1lc3NhZ2UgYW5kIHBhZGRpbmcuIFRoZXJlZm9yZSwgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZQogICAgcGx1cyB0aGUgcGFkZGluZyBtdXN0IGJlIGNvbmdydWVudCB0byA4OTYgbW9kIDEwMjQgYmVjYXVzZQogICAgMTAyNCAtIDEyOCA9IDg5Ni4KCiAgICBJbiBvcmRlciB0byBmaWxsIHVwIHRoZSBtZXNzYWdlIGxlbmd0aCBpdCBtdXN0IGJlIGZpbGxlZCB3aXRoCiAgICBwYWRkaW5nIHRoYXQgYmVnaW5zIHdpdGggMSBiaXQgZm9sbG93ZWQgYnkgYWxsIDAgYml0cy4gUGFkZGluZwogICAgbXVzdCAqYWx3YXlzKiBiZSBwcmVzZW50LCBzbyBpZiB0aGUgbWVzc2FnZSBsZW5ndGggaXMgYWxyZWFkeQogICAgY29uZ3J1ZW50IHRvIDg5NiBtb2QgMTAyNCwgdGhlbiAxMDI0IHBhZGRpbmcgYml0cyBtdXN0IGJlIGFkZGVkLiAqLwoKICAgIHZhciBmaW5hbEJsb2NrID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZpbmFsQmxvY2sucHV0Qnl0ZXMoX2lucHV0LmJ5dGVzKCkpOwoKICAgIC8vIGNvbXB1dGUgcmVtYWluaW5nIHNpemUgdG8gYmUgZGlnZXN0ZWQgKGluY2x1ZGUgbWVzc2FnZSBsZW5ndGggc2l6ZSkKICAgIHZhciByZW1haW5pbmcgPSAoCiAgICAgIG1kLmZ1bGxNZXNzYWdlTGVuZ3RoW21kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aCAtIDFdICsKICAgICAgbWQubWVzc2FnZUxlbmd0aFNpemUpOwoKICAgIC8vIGFkZCBwYWRkaW5nIGZvciBvdmVyZmxvdyBibG9ja1NpemUgLSBvdmVyZmxvdwogICAgLy8gX3BhZGRpbmcgc3RhcnRzIHdpdGggMSBieXRlIHdpdGggZmlyc3QgYml0IGlzIHNldCAoYnl0ZSB2YWx1ZSAxMjgpLCB0aGVuCiAgICAvLyB0aGVyZSBtYXkgYmUgdXAgdG8gKGJsb2NrU2l6ZSAtIDEpIG90aGVyIHBhZCBieXRlcwogICAgdmFyIG92ZXJmbG93ID0gcmVtYWluaW5nICYgKG1kLmJsb2NrTGVuZ3RoIC0gMSk7CiAgICBmaW5hbEJsb2NrLnB1dEJ5dGVzKF9wYWRkaW5nLnN1YnN0cigwLCBtZC5ibG9ja0xlbmd0aCAtIG92ZXJmbG93KSk7CgogICAgLy8gc2VyaWFsaXplIG1lc3NhZ2UgbGVuZ3RoIGluIGJpdHMgaW4gYmlnLWVuZGlhbiBvcmRlcjsgc2luY2UgbGVuZ3RoCiAgICAvLyBpcyBzdG9yZWQgaW4gYnl0ZXMgd2UgbXVsdGlwbHkgYnkgOCBhbmQgYWRkIGNhcnJ5IGZyb20gbmV4dCBpbnQKICAgIHZhciBtZXNzYWdlTGVuZ3RoID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHZhciBuZXh0LCBjYXJyeTsKICAgIHZhciBiaXRzID0gbWQuZnVsbE1lc3NhZ2VMZW5ndGhbMF0gKiA4OwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1kLmZ1bGxNZXNzYWdlTGVuZ3RoLmxlbmd0aDsgKytpKSB7CiAgICAgIG5leHQgPSBtZC5mdWxsTWVzc2FnZUxlbmd0aFtpICsgMV0gKiA4OwogICAgICBjYXJyeSA9IChuZXh0IC8gMHgxMDAwMDAwMDApID4+PiAwOwogICAgICBiaXRzICs9IGNhcnJ5OwogICAgICBmaW5hbEJsb2NrLnB1dEludDMyKGJpdHMgPj4+IDApOwogICAgICBiaXRzID0gbmV4dDsKICAgIH0KCiAgICB2YXIgaCA9IG5ldyBBcnJheShfaC5sZW5ndGgpOwogICAgZm9yKHZhciBpID0gMDsgaSA8IF9oLmxlbmd0aDsgKytpKSB7CiAgICAgIGhbaV0gPSBfaFtpXS5zbGljZSgwKTsKICAgIH0KICAgIF91cGRhdGUoaCwgX3csIGZpbmFsQmxvY2spOwogICAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgdmFyIGhsZW47CiAgICBpZihhbGdvcml0aG0gPT09ICdTSEEtNTEyJykgewogICAgICBobGVuID0gaC5sZW5ndGg7CiAgICB9IGVsc2UgaWYoYWxnb3JpdGhtID09PSAnU0hBLTM4NCcpIHsKICAgICAgaGxlbiA9IGgubGVuZ3RoIC0gMjsKICAgIH0gZWxzZSB7CiAgICAgIGhsZW4gPSBoLmxlbmd0aCAtIDQ7CiAgICB9CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgaGxlbjsgKytpKSB7CiAgICAgIHJ2YWwucHV0SW50MzIoaFtpXVswXSk7CiAgICAgIGlmKGkgIT09IGhsZW4gLSAxIHx8IGFsZ29yaXRobSAhPT0gJ1NIQS01MTIvMjI0JykgewogICAgICAgIHJ2YWwucHV0SW50MzIoaFtpXVsxXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBydmFsOwogIH07CgogIHJldHVybiBtZDsKfTsKCi8vIHNoYS01MTIgcGFkZGluZyBieXRlcyBub3QgaW5pdGlhbGl6ZWQgeWV0CnZhciBfcGFkZGluZyA9IG51bGw7CnZhciBfaW5pdGlhbGl6ZWQgPSBmYWxzZTsKCi8vIHRhYmxlIG9mIGNvbnN0YW50cwp2YXIgX2sgPSBudWxsOwoKLy8gaW5pdGlhbCBoYXNoIHN0YXRlcwp2YXIgX3N0YXRlcyA9IG51bGw7CgovKioKICogSW5pdGlhbGl6ZXMgdGhlIGNvbnN0YW50IHRhYmxlcy4KICovCmZ1bmN0aW9uIF9pbml0KCkgewogIC8vIGNyZWF0ZSBwYWRkaW5nCiAgX3BhZGRpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCk7CiAgX3BhZGRpbmcgKz0gZm9yZ2UudXRpbC5maWxsU3RyaW5nKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMCksIDEyOCk7CgogIC8vIGNyZWF0ZSBLIHRhYmxlIGZvciBTSEEtNTEyCiAgX2sgPSBbCiAgICBbMHg0MjhhMmY5OCwgMHhkNzI4YWUyMl0sIFsweDcxMzc0NDkxLCAweDIzZWY2NWNkXSwKICAgIFsweGI1YzBmYmNmLCAweGVjNGQzYjJmXSwgWzB4ZTliNWRiYTUsIDB4ODE4OWRiYmNdLAogICAgWzB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzhdLCBbMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOV0sCiAgICBbMHg5MjNmODJhNCwgMHhhZjE5NGY5Yl0sIFsweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4XSwKICAgIFsweGQ4MDdhYTk4LCAweGEzMDMwMjQyXSwgWzB4MTI4MzViMDEsIDB4NDU3MDZmYmVdLAogICAgWzB4MjQzMTg1YmUsIDB4NGVlNGIyOGNdLCBbMHg1NTBjN2RjMywgMHhkNWZmYjRlMl0sCiAgICBbMHg3MmJlNWQ3NCwgMHhmMjdiODk2Zl0sIFsweDgwZGViMWZlLCAweDNiMTY5NmIxXSwKICAgIFsweDliZGMwNmE3LCAweDI1YzcxMjM1XSwgWzB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTRdLAogICAgWzB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDJdLCBbMHhlZmJlNDc4NiwgMHgzODRmMjVlM10sCiAgICBbMHgwZmMxOWRjNiwgMHg4YjhjZDViNV0sIFsweDI0MGNhMWNjLCAweDc3YWM5YzY1XSwKICAgIFsweDJkZTkyYzZmLCAweDU5MmIwMjc1XSwgWzB4NGE3NDg0YWEsIDB4NmVhNmU0ODNdLAogICAgWzB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDRdLCBbMHg3NmY5ODhkYSwgMHg4MzExNTNiNV0sCiAgICBbMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYl0sIFsweGE4MzFjNjZkLCAweDJkYjQzMjEwXSwKICAgIFsweGIwMDMyN2M4LCAweDk4ZmIyMTNmXSwgWzB4YmY1OTdmYzcsIDB4YmVlZjBlZTRdLAogICAgWzB4YzZlMDBiZjMsIDB4M2RhODhmYzJdLCBbMHhkNWE3OTE0NywgMHg5MzBhYTcyNV0sCiAgICBbMHgwNmNhNjM1MSwgMHhlMDAzODI2Zl0sIFsweDE0MjkyOTY3LCAweDBhMGU2ZTcwXSwKICAgIFsweDI3YjcwYTg1LCAweDQ2ZDIyZmZjXSwgWzB4MmUxYjIxMzgsIDB4NWMyNmM5MjZdLAogICAgWzB4NGQyYzZkZmMsIDB4NWFjNDJhZWRdLCBbMHg1MzM4MGQxMywgMHg5ZDk1YjNkZl0sCiAgICBbMHg2NTBhNzM1NCwgMHg4YmFmNjNkZV0sIFsweDc2NmEwYWJiLCAweDNjNzdiMmE4XSwKICAgIFsweDgxYzJjOTJlLCAweDQ3ZWRhZWU2XSwgWzB4OTI3MjJjODUsIDB4MTQ4MjM1M2JdLAogICAgWzB4YTJiZmU4YTEsIDB4NGNmMTAzNjRdLCBbMHhhODFhNjY0YiwgMHhiYzQyMzAwMV0sCiAgICBbMHhjMjRiOGI3MCwgMHhkMGY4OTc5MV0sIFsweGM3NmM1MWEzLCAweDA2NTRiZTMwXSwKICAgIFsweGQxOTJlODE5LCAweGQ2ZWY1MjE4XSwgWzB4ZDY5OTA2MjQsIDB4NTU2NWE5MTBdLAogICAgWzB4ZjQwZTM1ODUsIDB4NTc3MTIwMmFdLCBbMHgxMDZhYTA3MCwgMHgzMmJiZDFiOF0sCiAgICBbMHgxOWE0YzExNiwgMHhiOGQyZDBjOF0sIFsweDFlMzc2YzA4LCAweDUxNDFhYjUzXSwKICAgIFsweDI3NDg3NzRjLCAweGRmOGVlYjk5XSwgWzB4MzRiMGJjYjUsIDB4ZTE5YjQ4YThdLAogICAgWzB4MzkxYzBjYjMsIDB4YzVjOTVhNjNdLCBbMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYl0sCiAgICBbMHg1YjljY2E0ZiwgMHg3NzYzZTM3M10sIFsweDY4MmU2ZmYzLCAweGQ2YjJiOGEzXSwKICAgIFsweDc0OGY4MmVlLCAweDVkZWZiMmZjXSwgWzB4NzhhNTYzNmYsIDB4NDMxNzJmNjBdLAogICAgWzB4ODRjODc4MTQsIDB4YTFmMGFiNzJdLCBbMHg4Y2M3MDIwOCwgMHgxYTY0MzllY10sCiAgICBbMHg5MGJlZmZmYSwgMHgyMzYzMWUyOF0sIFsweGE0NTA2Y2ViLCAweGRlODJiZGU5XSwKICAgIFsweGJlZjlhM2Y3LCAweGIyYzY3OTE1XSwgWzB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmJdLAogICAgWzB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWNdLCBbMHhkMTg2YjhjNywgMHgyMWMwYzIwN10sCiAgICBbMHhlYWRhN2RkNiwgMHhjZGUwZWIxZV0sIFsweGY1N2Q0ZjdmLCAweGVlNmVkMTc4XSwKICAgIFsweDA2ZjA2N2FhLCAweDcyMTc2ZmJhXSwgWzB4MGE2MzdkYzUsIDB4YTJjODk4YTZdLAogICAgWzB4MTEzZjk4MDQsIDB4YmVmOTBkYWVdLCBbMHgxYjcxMGIzNSwgMHgxMzFjNDcxYl0sCiAgICBbMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NF0sIFsweDMyY2FhYjdiLCAweDQwYzcyNDkzXSwKICAgIFsweDNjOWViZTBhLCAweDE1YzliZWJjXSwgWzB4NDMxZDY3YzQsIDB4OWMxMDBkNGNdLAogICAgWzB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjZdLCBbMHg1OTdmMjk5YywgMHhmYzY1N2UyYV0sCiAgICBbMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlY10sIFsweDZjNDQxOThjLCAweDRhNDc1ODE3XQogIF07CgogIC8vIGluaXRpYWwgaGFzaCBzdGF0ZXMKICBfc3RhdGVzID0ge307CiAgX3N0YXRlc1snU0hBLTUxMiddID0gWwogICAgWzB4NmEwOWU2NjcsIDB4ZjNiY2M5MDhdLAogICAgWzB4YmI2N2FlODUsIDB4ODRjYWE3M2JdLAogICAgWzB4M2M2ZWYzNzIsIDB4ZmU5NGY4MmJdLAogICAgWzB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjFdLAogICAgWzB4NTEwZTUyN2YsIDB4YWRlNjgyZDFdLAogICAgWzB4OWIwNTY4OGMsIDB4MmIzZTZjMWZdLAogICAgWzB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmJdLAogICAgWzB4NWJlMGNkMTksIDB4MTM3ZTIxNzldCiAgXTsKICBfc3RhdGVzWydTSEEtMzg0J10gPSBbCiAgICBbMHhjYmJiOWQ1ZCwgMHhjMTA1OWVkOF0sCiAgICBbMHg2MjlhMjkyYSwgMHgzNjdjZDUwN10sCiAgICBbMHg5MTU5MDE1YSwgMHgzMDcwZGQxN10sCiAgICBbMHgxNTJmZWNkOCwgMHhmNzBlNTkzOV0sCiAgICBbMHg2NzMzMjY2NywgMHhmZmMwMGIzMV0sCiAgICBbMHg4ZWI0NGE4NywgMHg2ODU4MTUxMV0sCiAgICBbMHhkYjBjMmUwZCwgMHg2NGY5OGZhN10sCiAgICBbMHg0N2I1NDgxZCwgMHhiZWZhNGZhNF0KICBdOwogIF9zdGF0ZXNbJ1NIQS01MTIvMjU2J10gPSBbCiAgICBbMHgyMjMxMjE5NCwgMHhGQzJCRjcyQ10sCiAgICBbMHg5RjU1NUZBMywgMHhDODRDNjRDMl0sCiAgICBbMHgyMzkzQjg2QiwgMHg2RjUzQjE1MV0sCiAgICBbMHg5NjM4NzcxOSwgMHg1OTQwRUFCRF0sCiAgICBbMHg5NjI4M0VFMiwgMHhBODhFRkZFM10sCiAgICBbMHhCRTVFMUUyNSwgMHg1Mzg2Mzk5Ml0sCiAgICBbMHgyQjAxOTlGQywgMHgyQzg1QjhBQV0sCiAgICBbMHgwRUI3MkREQywgMHg4MUM1MkNBMl0KICBdOwogIF9zdGF0ZXNbJ1NIQS01MTIvMjI0J10gPSBbCiAgICBbMHg4QzNEMzdDOCwgMHgxOTU0NERBMl0sCiAgICBbMHg3M0UxOTk2NiwgMHg4OURDRDRENl0sCiAgICBbMHgxREZBQjdBRSwgMHgzMkZGOUM4Ml0sCiAgICBbMHg2NzlERDUxNCwgMHg1ODJGOUZDRl0sCiAgICBbMHgwRjZEMkI2OSwgMHg3QkQ0NERBOF0sCiAgICBbMHg3N0UzNkY3MywgMHgwNEM0ODk0Ml0sCiAgICBbMHgzRjlEODVBOCwgMHg2QTFEMzZDOF0sCiAgICBbMHgxMTEyRTZBRCwgMHg5MUQ2OTJBMV0KICBdOwoKICAvLyBub3cgaW5pdGlhbGl6ZWQKICBfaW5pdGlhbGl6ZWQgPSB0cnVlOwp9CgovKioKICogVXBkYXRlcyBhIFNIQS01MTIgc3RhdGUgd2l0aCB0aGUgZ2l2ZW4gYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBzIHRoZSBTSEEtNTEyIHN0YXRlIHRvIHVwZGF0ZS4KICogQHBhcmFtIHcgdGhlIGFycmF5IHRvIHVzZSB0byBzdG9yZSB3b3Jkcy4KICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlIGJ1ZmZlciB0byB1cGRhdGUgd2l0aC4KICovCmZ1bmN0aW9uIF91cGRhdGUocywgdywgYnl0ZXMpIHsKICAvLyBjb25zdW1lIDUxMiBiaXQgKDEyOCBieXRlKSBjaHVua3MKICB2YXIgdDFfaGksIHQxX2xvOwogIHZhciB0Ml9oaSwgdDJfbG87CiAgdmFyIHMwX2hpLCBzMF9sbzsKICB2YXIgczFfaGksIHMxX2xvOwogIHZhciBjaF9oaSwgY2hfbG87CiAgdmFyIG1hal9oaSwgbWFqX2xvOwogIHZhciBhX2hpLCBhX2xvOwogIHZhciBiX2hpLCBiX2xvOwogIHZhciBjX2hpLCBjX2xvOwogIHZhciBkX2hpLCBkX2xvOwogIHZhciBlX2hpLCBlX2xvOwogIHZhciBmX2hpLCBmX2xvOwogIHZhciBnX2hpLCBnX2xvOwogIHZhciBoX2hpLCBoX2xvOwogIHZhciBpLCBoaSwgbG8sIHcyLCB3NywgdzE1LCB3MTY7CiAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aCgpOwogIHdoaWxlKGxlbiA+PSAxMjgpIHsKICAgIC8vIHRoZSB3IGFycmF5IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggc2l4dGVlbiA2NC1iaXQgYmlnLWVuZGlhbiB3b3JkcwogICAgLy8gYW5kIHRoZW4gZXh0ZW5kZWQgaW50byA2NCA2NC1iaXQgd29yZHMgYWNjb3JkaW5nIHRvIFNIQS01MTIKICAgIGZvcihpID0gMDsgaSA8IDE2OyArK2kpIHsKICAgICAgd1tpXVswXSA9IGJ5dGVzLmdldEludDMyKCkgPj4+IDA7CiAgICAgIHdbaV1bMV0gPSBieXRlcy5nZXRJbnQzMigpID4+PiAwOwogICAgfQogICAgZm9yKDsgaSA8IDgwOyArK2kpIHsKICAgICAgLy8gZm9yIHdvcmQgMiB3b3JkcyBhZ286IFJPVFIgMTkoeCkgXiBST1RSIDYxKHgpIF4gU0hSIDYoeCkKICAgICAgdzIgPSB3W2kgLSAyXTsKICAgICAgaGkgPSB3MlswXTsKICAgICAgbG8gPSB3MlsxXTsKCiAgICAgIC8vIGhpZ2ggYml0cwogICAgICB0MV9oaSA9ICgKICAgICAgICAoKGhpID4+PiAxOSkgfCAobG8gPDwgMTMpKSBeIC8vIFJPVFIgMTkKICAgICAgICAoKGxvID4+PiAyOSkgfCAoaGkgPDwgMykpIF4gLy8gUk9UUiA2MS8oc3dhcCArIFJPVFIgMjkpCiAgICAgICAgKGhpID4+PiA2KSkgPj4+IDA7IC8vIFNIUiA2CiAgICAgIC8vIGxvdyBiaXRzCiAgICAgIHQxX2xvID0gKAogICAgICAgICgoaGkgPDwgMTMpIHwgKGxvID4+PiAxOSkpIF4gLy8gUk9UUiAxOQogICAgICAgICgobG8gPDwgMykgfCAoaGkgPj4+IDI5KSkgXiAvLyBST1RSIDYxLyhzd2FwICsgUk9UUiAyOSkKICAgICAgICAoKGhpIDw8IDI2KSB8IChsbyA+Pj4gNikpKSA+Pj4gMDsgLy8gU0hSIDYKCiAgICAgIC8vIGZvciB3b3JkIDE1IHdvcmRzIGFnbzogUk9UUiAxKHgpIF4gUk9UUiA4KHgpIF4gU0hSIDcoeCkKICAgICAgdzE1ID0gd1tpIC0gMTVdOwogICAgICBoaSA9IHcxNVswXTsKICAgICAgbG8gPSB3MTVbMV07CgogICAgICAvLyBoaWdoIGJpdHMKICAgICAgdDJfaGkgPSAoCiAgICAgICAgKChoaSA+Pj4gMSkgfCAobG8gPDwgMzEpKSBeIC8vIFJPVFIgMQogICAgICAgICgoaGkgPj4+IDgpIHwgKGxvIDw8IDI0KSkgXiAvLyBST1RSIDgKICAgICAgICAoaGkgPj4+IDcpKSA+Pj4gMDsgLy8gU0hSIDcKICAgICAgLy8gbG93IGJpdHMKICAgICAgdDJfbG8gPSAoCiAgICAgICAgKChoaSA8PCAzMSkgfCAobG8gPj4+IDEpKSBeIC8vIFJPVFIgMQogICAgICAgICgoaGkgPDwgMjQpIHwgKGxvID4+PiA4KSkgXiAvLyBST1RSIDgKICAgICAgICAoKGhpIDw8IDI1KSB8IChsbyA+Pj4gNykpKSA+Pj4gMDsgLy8gU0hSIDcKCiAgICAgIC8vIHN1bSh0MSwgd29yZCA3IGFnbywgdDIsIHdvcmQgMTYgYWdvKSBtb2R1bG8gMl42NCAoY2FycnkgbG8gb3ZlcmZsb3cpCiAgICAgIHc3ID0gd1tpIC0gN107CiAgICAgIHcxNiA9IHdbaSAtIDE2XTsKICAgICAgbG8gPSAodDFfbG8gKyB3N1sxXSArIHQyX2xvICsgdzE2WzFdKTsKICAgICAgd1tpXVswXSA9ICh0MV9oaSArIHc3WzBdICsgdDJfaGkgKyB3MTZbMF0gKwogICAgICAgICgobG8gLyAweDEwMDAwMDAwMCkgPj4+IDApKSA+Pj4gMDsKICAgICAgd1tpXVsxXSA9IGxvID4+PiAwOwogICAgfQoKICAgIC8vIGluaXRpYWxpemUgaGFzaCB2YWx1ZSBmb3IgdGhpcyBjaHVuawogICAgYV9oaSA9IHNbMF1bMF07CiAgICBhX2xvID0gc1swXVsxXTsKICAgIGJfaGkgPSBzWzFdWzBdOwogICAgYl9sbyA9IHNbMV1bMV07CiAgICBjX2hpID0gc1syXVswXTsKICAgIGNfbG8gPSBzWzJdWzFdOwogICAgZF9oaSA9IHNbM11bMF07CiAgICBkX2xvID0gc1szXVsxXTsKICAgIGVfaGkgPSBzWzRdWzBdOwogICAgZV9sbyA9IHNbNF1bMV07CiAgICBmX2hpID0gc1s1XVswXTsKICAgIGZfbG8gPSBzWzVdWzFdOwogICAgZ19oaSA9IHNbNl1bMF07CiAgICBnX2xvID0gc1s2XVsxXTsKICAgIGhfaGkgPSBzWzddWzBdOwogICAgaF9sbyA9IHNbN11bMV07CgogICAgLy8gcm91bmQgZnVuY3Rpb24KICAgIGZvcihpID0gMDsgaSA8IDgwOyArK2kpIHsKICAgICAgLy8gU3VtMShlKSA9IFJPVFIgMTQoZSkgXiBST1RSIDE4KGUpIF4gUk9UUiA0MShlKQogICAgICBzMV9oaSA9ICgKICAgICAgICAoKGVfaGkgPj4+IDE0KSB8IChlX2xvIDw8IDE4KSkgXiAvLyBST1RSIDE0CiAgICAgICAgKChlX2hpID4+PiAxOCkgfCAoZV9sbyA8PCAxNCkpIF4gLy8gUk9UUiAxOAogICAgICAgICgoZV9sbyA+Pj4gOSkgfCAoZV9oaSA8PCAyMykpKSA+Pj4gMDsgLy8gUk9UUiA0MS8oc3dhcCArIFJPVFIgOSkKICAgICAgczFfbG8gPSAoCiAgICAgICAgKChlX2hpIDw8IDE4KSB8IChlX2xvID4+PiAxNCkpIF4gLy8gUk9UUiAxNAogICAgICAgICgoZV9oaSA8PCAxNCkgfCAoZV9sbyA+Pj4gMTgpKSBeIC8vIFJPVFIgMTgKICAgICAgICAoKGVfbG8gPDwgMjMpIHwgKGVfaGkgPj4+IDkpKSkgPj4+IDA7IC8vIFJPVFIgNDEvKHN3YXAgKyBST1RSIDkpCgogICAgICAvLyBDaChlLCBmLCBnKSAob3B0aW1pemVkIHRoZSBzYW1lIHdheSBhcyBTSEEtMSkKICAgICAgY2hfaGkgPSAoZ19oaSBeIChlX2hpICYgKGZfaGkgXiBnX2hpKSkpID4+PiAwOwogICAgICBjaF9sbyA9IChnX2xvIF4gKGVfbG8gJiAoZl9sbyBeIGdfbG8pKSkgPj4+IDA7CgogICAgICAvLyBTdW0wKGEpID0gUk9UUiAyOChhKSBeIFJPVFIgMzQoYSkgXiBST1RSIDM5KGEpCiAgICAgIHMwX2hpID0gKAogICAgICAgICgoYV9oaSA+Pj4gMjgpIHwgKGFfbG8gPDwgNCkpIF4gLy8gUk9UUiAyOAogICAgICAgICgoYV9sbyA+Pj4gMikgfCAoYV9oaSA8PCAzMCkpIF4gLy8gUk9UUiAzNC8oc3dhcCArIFJPVFIgMikKICAgICAgICAoKGFfbG8gPj4+IDcpIHwgKGFfaGkgPDwgMjUpKSkgPj4+IDA7IC8vIFJPVFIgMzkvKHN3YXAgKyBST1RSIDcpCiAgICAgIHMwX2xvID0gKAogICAgICAgICgoYV9oaSA8PCA0KSB8IChhX2xvID4+PiAyOCkpIF4gLy8gUk9UUiAyOAogICAgICAgICgoYV9sbyA8PCAzMCkgfCAoYV9oaSA+Pj4gMikpIF4gLy8gUk9UUiAzNC8oc3dhcCArIFJPVFIgMikKICAgICAgICAoKGFfbG8gPDwgMjUpIHwgKGFfaGkgPj4+IDcpKSkgPj4+IDA7IC8vIFJPVFIgMzkvKHN3YXAgKyBST1RSIDcpCgogICAgICAvLyBNYWooYSwgYiwgYykgKG9wdGltaXplZCB0aGUgc2FtZSB3YXkgYXMgU0hBLTEpCiAgICAgIG1hal9oaSA9ICgoYV9oaSAmIGJfaGkpIHwgKGNfaGkgJiAoYV9oaSBeIGJfaGkpKSkgPj4+IDA7CiAgICAgIG1hal9sbyA9ICgoYV9sbyAmIGJfbG8pIHwgKGNfbG8gJiAoYV9sbyBeIGJfbG8pKSkgPj4+IDA7CgogICAgICAvLyBtYWluIGFsZ29yaXRobQogICAgICAvLyB0MSA9IChoICsgczEgKyBjaCArIF9rW2ldICsgX3dbaV0pIG1vZHVsbyAyXjY0IChjYXJyeSBsbyBvdmVyZmxvdykKICAgICAgbG8gPSAoaF9sbyArIHMxX2xvICsgY2hfbG8gKyBfa1tpXVsxXSArIHdbaV1bMV0pOwogICAgICB0MV9oaSA9IChoX2hpICsgczFfaGkgKyBjaF9oaSArIF9rW2ldWzBdICsgd1tpXVswXSArCiAgICAgICAgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgICB0MV9sbyA9IGxvID4+PiAwOwoKICAgICAgLy8gdDIgPSBzMCArIG1haiBtb2R1bG8gMl42NCAoY2FycnkgbG8gb3ZlcmZsb3cpCiAgICAgIGxvID0gczBfbG8gKyBtYWpfbG87CiAgICAgIHQyX2hpID0gKHMwX2hpICsgbWFqX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgICB0Ml9sbyA9IGxvID4+PiAwOwoKICAgICAgaF9oaSA9IGdfaGk7CiAgICAgIGhfbG8gPSBnX2xvOwoKICAgICAgZ19oaSA9IGZfaGk7CiAgICAgIGdfbG8gPSBmX2xvOwoKICAgICAgZl9oaSA9IGVfaGk7CiAgICAgIGZfbG8gPSBlX2xvOwoKICAgICAgLy8gZSA9IChkICsgdDEpIG1vZHVsbyAyXjY0IChjYXJyeSBsbyBvdmVyZmxvdykKICAgICAgbG8gPSBkX2xvICsgdDFfbG87CiAgICAgIGVfaGkgPSAoZF9oaSArIHQxX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgICBlX2xvID0gbG8gPj4+IDA7CgogICAgICBkX2hpID0gY19oaTsKICAgICAgZF9sbyA9IGNfbG87CgogICAgICBjX2hpID0gYl9oaTsKICAgICAgY19sbyA9IGJfbG87CgogICAgICBiX2hpID0gYV9oaTsKICAgICAgYl9sbyA9IGFfbG87CgogICAgICAvLyBhID0gKHQxICsgdDIpIG1vZHVsbyAyXjY0IChjYXJyeSBsbyBvdmVyZmxvdykKICAgICAgbG8gPSB0MV9sbyArIHQyX2xvOwogICAgICBhX2hpID0gKHQxX2hpICsgdDJfaGkgKyAoKGxvIC8gMHgxMDAwMDAwMDApID4+PiAwKSkgPj4+IDA7CiAgICAgIGFfbG8gPSBsbyA+Pj4gMDsKICAgIH0KCiAgICAvLyB1cGRhdGUgaGFzaCBzdGF0ZSAoYWRkaXRpb25hbCBtb2R1bG8gMl42NCkKICAgIGxvID0gc1swXVsxXSArIGFfbG87CiAgICBzWzBdWzBdID0gKHNbMF1bMF0gKyBhX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1swXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1sxXVsxXSArIGJfbG87CiAgICBzWzFdWzBdID0gKHNbMV1bMF0gKyBiX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1sxXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1syXVsxXSArIGNfbG87CiAgICBzWzJdWzBdID0gKHNbMl1bMF0gKyBjX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1syXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1szXVsxXSArIGRfbG87CiAgICBzWzNdWzBdID0gKHNbM11bMF0gKyBkX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1szXVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s0XVsxXSArIGVfbG87CiAgICBzWzRdWzBdID0gKHNbNF1bMF0gKyBlX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s0XVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s1XVsxXSArIGZfbG87CiAgICBzWzVdWzBdID0gKHNbNV1bMF0gKyBmX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s1XVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s2XVsxXSArIGdfbG87CiAgICBzWzZdWzBdID0gKHNbNl1bMF0gKyBnX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s2XVsxXSA9IGxvID4+PiAwOwoKICAgIGxvID0gc1s3XVsxXSArIGhfbG87CiAgICBzWzddWzBdID0gKHNbN11bMF0gKyBoX2hpICsgKChsbyAvIDB4MTAwMDAwMDAwKSA+Pj4gMCkpID4+PiAwOwogICAgc1s3XVsxXSA9IGxvID4+PiAwOwoKICAgIGxlbiAtPSAxMjg7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdzaGE1MTInOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvc2hhNTEyJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBOb2RlLmpzIG1vZHVsZSBmb3IgRm9yZ2UgbWVzc2FnZSBkaWdlc3RzLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgMjAxMS0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UubWQgPSBmb3JnZS5tZCB8fCB7fTsKZm9yZ2UubWQuYWxnb3JpdGhtcyA9IHsKICBtZDU6IGZvcmdlLm1kNSwKICBzaGExOiBmb3JnZS5zaGExLAogIHNoYTI1NjogZm9yZ2Uuc2hhMjU2Cn07CmZvcmdlLm1kLm1kNSA9IGZvcmdlLm1kNTsKZm9yZ2UubWQuc2hhMSA9IGZvcmdlLnNoYTE7CmZvcmdlLm1kLnNoYTI1NiA9IGZvcmdlLnNoYTI1NjsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ21kJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoCiAgJ2pzL21kJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vbWQ1JywgJy4vc2hhMScsICcuL3NoYTI1NicsICcuL3NoYTUxMiddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBIYXNoLWJhc2VkIE1lc3NhZ2UgQXV0aGVudGljYXRpb24gQ29kZSBpbXBsZW1lbnRhdGlvbi4gUmVxdWlyZXMgYSBtZXNzYWdlCiAqIGRpZ2VzdCBvYmplY3QgdGhhdCBjYW4gYmUgb2J0YWluZWQsIGZvciBleGFtcGxlLCBmcm9tIGZvcmdlLm1kLnNoYTEgb3IKICogZm9yZ2UubWQubWQ1LgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMiBEaWdpdGFsIEJhemFhciwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8qIEhNQUMgQVBJICovCnZhciBobWFjID0gZm9yZ2UuaG1hYyA9IGZvcmdlLmhtYWMgfHwge307CgovKioKICogQ3JlYXRlcyBhbiBITUFDIG9iamVjdCB0aGF0IHVzZXMgdGhlIGdpdmVuIG1lc3NhZ2UgZGlnZXN0IG9iamVjdC4KICoKICogQHJldHVybiBhbiBITUFDIG9iamVjdC4KICovCmhtYWMuY3JlYXRlID0gZnVuY3Rpb24oKSB7CiAgLy8gdGhlIGhtYWMga2V5IHRvIHVzZQogIHZhciBfa2V5ID0gbnVsbDsKCiAgLy8gdGhlIG1lc3NhZ2UgZGlnZXN0IHRvIHVzZQogIHZhciBfbWQgPSBudWxsOwoKICAvLyB0aGUgaW5uZXIgcGFkZGluZwogIHZhciBfaXBhZGRpbmcgPSBudWxsOwoKICAvLyB0aGUgb3V0ZXIgcGFkZGluZwogIHZhciBfb3BhZGRpbmcgPSBudWxsOwoKICAvLyBobWFjIGNvbnRleHQKICB2YXIgY3R4ID0ge307CgogIC8qKgogICAqIFN0YXJ0cyBvciByZXN0YXJ0cyB0aGUgSE1BQyB3aXRoIHRoZSBnaXZlbiBrZXkgYW5kIG1lc3NhZ2UgZGlnZXN0LgogICAqCiAgICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2UsIG51bGwgdG8gcmV1c2UgdGhlIHByZXZpb3VzIG9uZSwKICAgKiAgICAgICAgICAgYSBzdHJpbmcgdG8gdXNlIGJ1aWx0aW4gJ3NoYTEnLCAnbWQ1JywgJ3NoYTI1NicuCiAgICogQHBhcmFtIGtleSB0aGUga2V5IHRvIHVzZSBhcyBhIHN0cmluZywgYXJyYXkgb2YgYnl0ZXMsIGJ5dGUgYnVmZmVyLAogICAqICAgICAgICAgICBvciBudWxsIHRvIHJldXNlIHRoZSBwcmV2aW91cyBrZXkuCiAgICovCiAgY3R4LnN0YXJ0ID0gZnVuY3Rpb24obWQsIGtleSkgewogICAgaWYobWQgIT09IG51bGwpIHsKICAgICAgaWYodHlwZW9mIG1kID09PSAnc3RyaW5nJykgewogICAgICAgIC8vIGNyZWF0ZSBidWlsdGluIG1lc3NhZ2UgZGlnZXN0CiAgICAgICAgbWQgPSBtZC50b0xvd2VyQ2FzZSgpOwogICAgICAgIGlmKG1kIGluIGZvcmdlLm1kLmFsZ29yaXRobXMpIHsKICAgICAgICAgIF9tZCA9IGZvcmdlLm1kLmFsZ29yaXRobXNbbWRdLmNyZWF0ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gaGFzaCBhbGdvcml0aG0gIicgKyBtZCArICciJyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIC8vIHN0b3JlIG1lc3NhZ2UgZGlnZXN0CiAgICAgICAgX21kID0gbWQ7CiAgICAgIH0KICAgIH0KCiAgICBpZihrZXkgPT09IG51bGwpIHsKICAgICAgLy8gcmV1c2UgcHJldmlvdXMga2V5CiAgICAgIGtleSA9IF9rZXk7CiAgICB9IGVsc2UgewogICAgICBpZih0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykgewogICAgICAgIC8vIGNvbnZlcnQgc3RyaW5nIGludG8gYnl0ZSBidWZmZXIKICAgICAgICBrZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihrZXkpOwogICAgICB9IGVsc2UgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGtleSkpIHsKICAgICAgICAvLyBjb252ZXJ0IGJ5dGUgYXJyYXkgaW50byBieXRlIGJ1ZmZlcgogICAgICAgIHZhciB0bXAgPSBrZXk7CiAgICAgICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICBrZXkucHV0Qnl0ZSh0bXBbaV0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gaWYga2V5IGlzIGxvbmdlciB0aGFuIGJsb2Nrc2l6ZSwgaGFzaCBpdAogICAgICB2YXIga2V5bGVuID0ga2V5Lmxlbmd0aCgpOwogICAgICBpZihrZXlsZW4gPiBfbWQuYmxvY2tMZW5ndGgpIHsKICAgICAgICBfbWQuc3RhcnQoKTsKICAgICAgICBfbWQudXBkYXRlKGtleS5ieXRlcygpKTsKICAgICAgICBrZXkgPSBfbWQuZGlnZXN0KCk7CiAgICAgIH0KCiAgICAgIC8vIG1peCBrZXkgaW50byBpbm5lciBhbmQgb3V0ZXIgcGFkZGluZwogICAgICAvLyBpcGFkZGluZyA9IFsweDM2ICogYmxvY2tzaXplXSBeIGtleQogICAgICAvLyBvcGFkZGluZyA9IFsweDVDICogYmxvY2tzaXplXSBeIGtleQogICAgICBfaXBhZGRpbmcgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBfb3BhZGRpbmcgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBrZXlsZW4gPSBrZXkubGVuZ3RoKCk7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBrZXlsZW47ICsraSkgewogICAgICAgIHZhciB0bXAgPSBrZXkuYXQoaSk7CiAgICAgICAgX2lwYWRkaW5nLnB1dEJ5dGUoMHgzNiBeIHRtcCk7CiAgICAgICAgX29wYWRkaW5nLnB1dEJ5dGUoMHg1QyBeIHRtcCk7CiAgICAgIH0KCiAgICAgIC8vIGlmIGtleSBpcyBzaG9ydGVyIHRoYW4gYmxvY2tzaXplLCBhZGQgYWRkaXRpb25hbCBwYWRkaW5nCiAgICAgIGlmKGtleWxlbiA8IF9tZC5ibG9ja0xlbmd0aCkgewogICAgICAgIHZhciB0bXAgPSBfbWQuYmxvY2tMZW5ndGggLSBrZXlsZW47CiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHRtcDsgKytpKSB7CiAgICAgICAgICBfaXBhZGRpbmcucHV0Qnl0ZSgweDM2KTsKICAgICAgICAgIF9vcGFkZGluZy5wdXRCeXRlKDB4NUMpOwogICAgICAgIH0KICAgICAgfQogICAgICBfa2V5ID0ga2V5OwogICAgICBfaXBhZGRpbmcgPSBfaXBhZGRpbmcuYnl0ZXMoKTsKICAgICAgX29wYWRkaW5nID0gX29wYWRkaW5nLmJ5dGVzKCk7CiAgICB9CgogICAgLy8gZGlnZXN0IGlzIGRvbmUgbGlrZSBzbzogaGFzaChvcGFkZGluZyB8IGhhc2goaXBhZGRpbmcgfCBtZXNzYWdlKSkKCiAgICAvLyBwcmVwYXJlIHRvIGRvIGlubmVyIGhhc2gKICAgIC8vIGhhc2goaXBhZGRpbmcgfCBtZXNzYWdlKQogICAgX21kLnN0YXJ0KCk7CiAgICBfbWQudXBkYXRlKF9pcGFkZGluZyk7CiAgfTsKCiAgLyoqCiAgICogVXBkYXRlcyB0aGUgSE1BQyB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlIGJ5dGVzLgogICAqCiAgICogQHBhcmFtIGJ5dGVzIHRoZSBieXRlcyB0byB1cGRhdGUgd2l0aC4KICAgKi8KICBjdHgudXBkYXRlID0gZnVuY3Rpb24oYnl0ZXMpIHsKICAgIF9tZC51cGRhdGUoYnl0ZXMpOwogIH07CgogIC8qKgogICAqIFByb2R1Y2VzIHRoZSBNZXNzYWdlIEF1dGhlbnRpY2F0aW9uIENvZGUgKE1BQykuCiAgICoKICAgKiBAcmV0dXJuIGEgYnl0ZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGlnZXN0IHZhbHVlLgogICAqLwogIGN0eC5nZXRNYWMgPSBmdW5jdGlvbigpIHsKICAgIC8vIGRpZ2VzdCBpcyBkb25lIGxpa2Ugc286IGhhc2gob3BhZGRpbmcgfCBoYXNoKGlwYWRkaW5nIHwgbWVzc2FnZSkpCiAgICAvLyBoZXJlIHdlIGRvIHRoZSBvdXRlciBoYXNoaW5nCiAgICB2YXIgaW5uZXIgPSBfbWQuZGlnZXN0KCkuYnl0ZXMoKTsKICAgIF9tZC5zdGFydCgpOwogICAgX21kLnVwZGF0ZShfb3BhZGRpbmcpOwogICAgX21kLnVwZGF0ZShpbm5lcik7CiAgICByZXR1cm4gX21kLmRpZ2VzdCgpOwogIH07CiAgLy8gYWxpYXMgZm9yIGdldE1hYwogIGN0eC5kaWdlc3QgPSBjdHguZ2V0TWFjOwoKICByZXR1cm4gY3R4Owp9OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnaG1hYyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9obWFjJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vbWQnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgYmFzaWMgUEVNIChQcml2YWN5IEVuaGFuY2VkIE1haWwpIGFsZ29yaXRobXMuCiAqCiAqIFNlZTogUkZDIDE0MjEuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqCiAqIEEgRm9yZ2UgUEVNIG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBmaWVsZHM6CiAqCiAqIHR5cGU6IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgbWVzc2FnZSAoZWc6ICJSU0EgUFJJVkFURSBLRVkiKS4KICoKICogcHJvY1R5cGU6IGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgcHJvY2Vzc2luZyBwZXJmb3JtZWQgb24gdGhlIG1lc3NhZ2UsCiAqICAgaXQgaGFzIHR3byBzdWJmaWVsZHM6IHZlcnNpb24gYW5kIHR5cGUsIGVnOiA0LEVOQ1JZUFRFRC4KICoKICogY29udGVudERvbWFpbjogaWRlbnRpZmllcyB0aGUgdHlwZSBvZiBjb250ZW50IGluIHRoZSBtZXNzYWdlLCB0eXBpY2FsbHkKICogICBvbmx5IHVzZXMgdGhlIHZhbHVlOiAiUkZDODIyIi4KICoKICogZGVrSW5mbzogaWRlbnRpZmllcyB0aGUgbWVzc2FnZSBlbmNyeXB0aW9uIGFsZ29yaXRobSBhbmQgbW9kZSBhbmQgaW5jbHVkZXMKICogICBhbnkgcGFyYW1ldGVycyBmb3IgdGhlIGFsZ29yaXRobSwgaXQgaGFzIHR3byBzdWJmaWVsZHM6IGFsZ29yaXRobSBhbmQKICogICBwYXJhbWV0ZXJzLCBlZzogREVTLUNCQyxGODE0M0VERTU5NjBDNTk3LgogKgogKiBoZWFkZXJzOiBjb250YWlucyBhbGwgb3RoZXIgUEVNIGVuY2Fwc3VsYXRlZCBoZWFkZXJzIC0tIHdoZXJlIG9yZGVyIGlzCiAqICAgc2lnbmlmaWNhbnQgKGZvciBwYWlyaW5nIGRhdGEgbGlrZSByZWNpcGllbnQgSUQgKyBrZXkgaW5mbykuCiAqCiAqIGJvZHk6IHRoZSBiaW5hcnktZW5jb2RlZCBib2R5LgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIHNob3J0Y3V0IGZvciBwZW0gQVBJCnZhciBwZW0gPSBmb3JnZS5wZW0gPSBmb3JnZS5wZW0gfHwge307CgovKioKICogRW5jb2RlcyAoc2VyaWFsaXplcykgdGhlIGdpdmVuIFBFTSBvYmplY3QuCiAqCiAqIEBwYXJhbSBtc2cgdGhlIFBFTSBtZXNzYWdlIG9iamVjdCB0byBlbmNvZGUuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lIGZvciB0aGUgYm9keSwgKGRlZmF1bHQ6IDY0KS4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBzdHJpbmcuCiAqLwpwZW0uZW5jb2RlID0gZnVuY3Rpb24obXNnLCBvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIHJ2YWwgPSAnLS0tLS1CRUdJTiAnICsgbXNnLnR5cGUgKyAnLS0tLS1cclxuJzsKCiAgLy8gZW5jb2RlIHNwZWNpYWwgaGVhZGVycwogIHZhciBoZWFkZXI7CiAgaWYobXNnLnByb2NUeXBlKSB7CiAgICBoZWFkZXIgPSB7CiAgICAgIG5hbWU6ICdQcm9jLVR5cGUnLAogICAgICB2YWx1ZXM6IFtTdHJpbmcobXNnLnByb2NUeXBlLnZlcnNpb24pLCBtc2cucHJvY1R5cGUudHlwZV0KICAgIH07CiAgICBydmFsICs9IGZvbGRIZWFkZXIoaGVhZGVyKTsKICB9CiAgaWYobXNnLmNvbnRlbnREb21haW4pIHsKICAgIGhlYWRlciA9IHtuYW1lOiAnQ29udGVudC1Eb21haW4nLCB2YWx1ZXM6IFttc2cuY29udGVudERvbWFpbl19OwogICAgcnZhbCArPSBmb2xkSGVhZGVyKGhlYWRlcik7CiAgfQogIGlmKG1zZy5kZWtJbmZvKSB7CiAgICBoZWFkZXIgPSB7bmFtZTogJ0RFSy1JbmZvJywgdmFsdWVzOiBbbXNnLmRla0luZm8uYWxnb3JpdGhtXX07CiAgICBpZihtc2cuZGVrSW5mby5wYXJhbWV0ZXJzKSB7CiAgICAgIGhlYWRlci52YWx1ZXMucHVzaChtc2cuZGVrSW5mby5wYXJhbWV0ZXJzKTsKICAgIH0KICAgIHJ2YWwgKz0gZm9sZEhlYWRlcihoZWFkZXIpOwogIH0KCiAgaWYobXNnLmhlYWRlcnMpIHsKICAgIC8vIGVuY29kZSBhbGwgb3RoZXIgaGVhZGVycwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5oZWFkZXJzLmxlbmd0aDsgKytpKSB7CiAgICAgIHJ2YWwgKz0gZm9sZEhlYWRlcihtc2cuaGVhZGVyc1tpXSk7CiAgICB9CiAgfQoKICAvLyB0ZXJtaW5hdGUgaGVhZGVyCiAgaWYobXNnLnByb2NUeXBlKSB7CiAgICBydmFsICs9ICdcclxuJzsKICB9CgogIC8vIGFkZCBib2R5CiAgcnZhbCArPSBmb3JnZS51dGlsLmVuY29kZTY0KG1zZy5ib2R5LCBvcHRpb25zLm1heGxpbmUgfHwgNjQpICsgJ1xyXG4nOwoKICBydmFsICs9ICctLS0tLUVORCAnICsgbXNnLnR5cGUgKyAnLS0tLS1cclxuJzsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBEZWNvZGVzIChkZXNlcmlhbGl6ZXMpIGFsbCBQRU0gbWVzc2FnZXMgZm91bmQgaW4gdGhlIGdpdmVuIHN0cmluZy4KICoKICogQHBhcmFtIHN0ciB0aGUgUEVNLWZvcm1hdHRlZCBzdHJpbmcgdG8gZGVjb2RlLgogKgogKiBAcmV0dXJuIHRoZSBQRU0gbWVzc2FnZSBvYmplY3RzIGluIGFuIGFycmF5LgogKi8KcGVtLmRlY29kZSA9IGZ1bmN0aW9uKHN0cikgewogIHZhciBydmFsID0gW107CgogIC8vIHNwbGl0IHN0cmluZyBpbnRvIFBFTSBtZXNzYWdlcyAoYmUgbGVuaWVudCB3L0VPRiBvbiBCRUdJTiBsaW5lKQogIHZhciByTWVzc2FnZSA9IC9ccyotLS0tLUJFR0lOIChbQS1aMC05LSBdKyktLS0tLVxyP1xuPyhbXHgyMS1ceDdlXHNdKz8oPzpccj9cblxyP1xuKSk/KFs6QS1aYS16MC05K1wvPVxzXSs/KS0tLS0tRU5EIFwxLS0tLS0vZzsKICB2YXIgckhlYWRlciA9IC8oW1x4MjEtXHg3ZV0rKTpccyooW1x4MjEtXHg3ZVxzXjpdKykvOwogIHZhciByQ1JMRiA9IC9ccj9cbi87CiAgdmFyIG1hdGNoOwogIHdoaWxlKHRydWUpIHsKICAgIG1hdGNoID0gck1lc3NhZ2UuZXhlYyhzdHIpOwogICAgaWYoIW1hdGNoKSB7CiAgICAgIGJyZWFrOwogICAgfQoKICAgIHZhciBtc2cgPSB7CiAgICAgIHR5cGU6IG1hdGNoWzFdLAogICAgICBwcm9jVHlwZTogbnVsbCwKICAgICAgY29udGVudERvbWFpbjogbnVsbCwKICAgICAgZGVrSW5mbzogbnVsbCwKICAgICAgaGVhZGVyczogW10sCiAgICAgIGJvZHk6IGZvcmdlLnV0aWwuZGVjb2RlNjQobWF0Y2hbM10pCiAgICB9OwogICAgcnZhbC5wdXNoKG1zZyk7CgogICAgLy8gbm8gaGVhZGVycwogICAgaWYoIW1hdGNoWzJdKSB7CiAgICAgIGNvbnRpbnVlOwogICAgfQoKICAgIC8vIHBhcnNlIGhlYWRlcnMKICAgIHZhciBsaW5lcyA9IG1hdGNoWzJdLnNwbGl0KHJDUkxGKTsKICAgIHZhciBsaSA9IDA7CiAgICB3aGlsZShtYXRjaCAmJiBsaSA8IGxpbmVzLmxlbmd0aCkgewogICAgICAvLyBnZXQgbGluZSwgdHJpbSBhbnkgcmhzIHdoaXRlc3BhY2UKICAgICAgdmFyIGxpbmUgPSBsaW5lc1tsaV0ucmVwbGFjZSgvXHMrJC8sICcnKTsKCiAgICAgIC8vIFJGQzI4MjIgdW5mb2xkIGFueSBmb2xsb3dpbmcgZm9sZGVkIGxpbmVzCiAgICAgIGZvcih2YXIgbmwgPSBsaSArIDE7IG5sIDwgbGluZXMubGVuZ3RoOyArK25sKSB7CiAgICAgICAgdmFyIG5leHQgPSBsaW5lc1tubF07CiAgICAgICAgaWYoIS9ccy8udGVzdChuZXh0WzBdKSkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGxpbmUgKz0gbmV4dDsKICAgICAgICBsaSA9IG5sOwogICAgICB9CgogICAgICAvLyBwYXJzZSBoZWFkZXIKICAgICAgbWF0Y2ggPSBsaW5lLm1hdGNoKHJIZWFkZXIpOwogICAgICBpZihtYXRjaCkgewogICAgICAgIHZhciBoZWFkZXIgPSB7bmFtZTogbWF0Y2hbMV0sIHZhbHVlczogW119OwogICAgICAgIHZhciB2YWx1ZXMgPSBtYXRjaFsyXS5zcGxpdCgnLCcpOwogICAgICAgIGZvcih2YXIgdmkgPSAwOyB2aSA8IHZhbHVlcy5sZW5ndGg7ICsrdmkpIHsKICAgICAgICAgIGhlYWRlci52YWx1ZXMucHVzaChsdHJpbSh2YWx1ZXNbdmldKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBQcm9jLVR5cGUgbXVzdCBiZSB0aGUgZmlyc3QgaGVhZGVyCiAgICAgICAgaWYoIW1zZy5wcm9jVHlwZSkgewogICAgICAgICAgaWYoaGVhZGVyLm5hbWUgIT09ICdQcm9jLVR5cGUnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQRU0gZm9ybWF0dGVkIG1lc3NhZ2UuIFRoZSBmaXJzdCAnICsKICAgICAgICAgICAgICAnZW5jYXBzdWxhdGVkIGhlYWRlciBtdXN0IGJlICJQcm9jLVR5cGUiLicpOwogICAgICAgICAgfSBlbHNlIGlmKGhlYWRlci52YWx1ZXMubGVuZ3RoICE9PSAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQRU0gZm9ybWF0dGVkIG1lc3NhZ2UuIFRoZSAiUHJvYy1UeXBlIiAnICsKICAgICAgICAgICAgICAnaGVhZGVyIG11c3QgaGF2ZSB0d28gc3ViZmllbGRzLicpOwogICAgICAgICAgfQogICAgICAgICAgbXNnLnByb2NUeXBlID0ge3ZlcnNpb246IHZhbHVlc1swXSwgdHlwZTogdmFsdWVzWzFdfTsKICAgICAgICB9IGVsc2UgaWYoIW1zZy5jb250ZW50RG9tYWluICYmIGhlYWRlci5uYW1lID09PSAnQ29udGVudC1Eb21haW4nKSB7CiAgICAgICAgICAvLyBzcGVjaWFsLWNhc2UgQ29udGVudC1Eb21haW4KICAgICAgICAgIG1zZy5jb250ZW50RG9tYWluID0gdmFsdWVzWzBdIHx8ICcnOwogICAgICAgIH0gZWxzZSBpZighbXNnLmRla0luZm8gJiYgaGVhZGVyLm5hbWUgPT09ICdERUstSW5mbycpIHsKICAgICAgICAgIC8vIHNwZWNpYWwtY2FzZSBERUstSW5mbwogICAgICAgICAgaWYoaGVhZGVyLnZhbHVlcy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFBFTSBmb3JtYXR0ZWQgbWVzc2FnZS4gVGhlICJERUstSW5mbyIgJyArCiAgICAgICAgICAgICAgJ2hlYWRlciBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHN1YmZpZWxkLicpOwogICAgICAgICAgfQogICAgICAgICAgbXNnLmRla0luZm8gPSB7YWxnb3JpdGhtOiB2YWx1ZXNbMF0sIHBhcmFtZXRlcnM6IHZhbHVlc1sxXSB8fCBudWxsfTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgbXNnLmhlYWRlcnMucHVzaChoZWFkZXIpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgKytsaTsKICAgIH0KCiAgICBpZihtc2cucHJvY1R5cGUgPT09ICdFTkNSWVBURUQnICYmICFtc2cuZGVrSW5mbykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLiBUaGUgIkRFSy1JbmZvIiAnICsKICAgICAgICAnaGVhZGVyIG11c3QgYmUgcHJlc2VudCBpZiAiUHJvYy1UeXBlIiBpcyAiRU5DUllQVEVEIi4nKTsKICAgIH0KICB9CgogIGlmKHJ2YWwubGVuZ3RoID09PSAwKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUEVNIGZvcm1hdHRlZCBtZXNzYWdlLicpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgpmdW5jdGlvbiBmb2xkSGVhZGVyKGhlYWRlcikgewogIHZhciBydmFsID0gaGVhZGVyLm5hbWUgKyAnOiAnOwoKICAvLyBlbnN1cmUgdmFsdWVzIHdpdGggQ1JMRiBhcmUgZm9sZGVkCiAgdmFyIHZhbHVlcyA9IFtdOwogIHZhciBpbnNlcnRTcGFjZSA9IGZ1bmN0aW9uKG1hdGNoLCAkMSkgewogICAgcmV0dXJuICcgJyArICQxOwogIH07CiAgZm9yKHZhciBpID0gMDsgaSA8IGhlYWRlci52YWx1ZXMubGVuZ3RoOyArK2kpIHsKICAgIHZhbHVlcy5wdXNoKGhlYWRlci52YWx1ZXNbaV0ucmVwbGFjZSgvXihcUytcclxuKS8sIGluc2VydFNwYWNlKSk7CiAgfQogIHJ2YWwgKz0gdmFsdWVzLmpvaW4oJywnKSArICdcclxuJzsKCiAgLy8gZG8gZm9sZGluZwogIHZhciBsZW5ndGggPSAwOwogIHZhciBjYW5kaWRhdGUgPSAtMTsKICBmb3IodmFyIGkgPSAwOyBpIDwgcnZhbC5sZW5ndGg7ICsraSwgKytsZW5ndGgpIHsKICAgIGlmKGxlbmd0aCA+IDY1ICYmIGNhbmRpZGF0ZSAhPT0gLTEpIHsKICAgICAgdmFyIGluc2VydCA9IHJ2YWxbY2FuZGlkYXRlXTsKICAgICAgaWYoaW5zZXJ0ID09PSAnLCcpIHsKICAgICAgICArK2NhbmRpZGF0ZTsKICAgICAgICBydmFsID0gcnZhbC5zdWJzdHIoMCwgY2FuZGlkYXRlKSArICdcclxuICcgKyBydmFsLnN1YnN0cihjYW5kaWRhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIHJ2YWwgPSBydmFsLnN1YnN0cigwLCBjYW5kaWRhdGUpICsKICAgICAgICAgICdcclxuJyArIGluc2VydCArIHJ2YWwuc3Vic3RyKGNhbmRpZGF0ZSArIDEpOwogICAgICB9CiAgICAgIGxlbmd0aCA9IChpIC0gY2FuZGlkYXRlIC0gMSk7CiAgICAgIGNhbmRpZGF0ZSA9IC0xOwogICAgICArK2k7CiAgICB9IGVsc2UgaWYocnZhbFtpXSA9PT0gJyAnIHx8IHJ2YWxbaV0gPT09ICdcdCcgfHwgcnZhbFtpXSA9PT0gJywnKSB7CiAgICAgIGNhbmRpZGF0ZSA9IGk7CiAgICB9CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKZnVuY3Rpb24gbHRyaW0oc3RyKSB7CiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXHMrLywgJycpOwp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdwZW0nOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcGVtJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBERVMgKERhdGEgRW5jcnlwdGlvbiBTdGFuZGFyZCkgaW1wbGVtZW50YXRpb24uCiAqCiAqIFRoaXMgaW1wbGVtZW50YXRpb24gc3VwcG9ydHMgREVTIGFzIHdlbGwgYXMgM0RFUy1FREUgaW4gRUNCIGFuZCBDQkMgbW9kZS4KICogSXQgaXMgYmFzZWQgb24gdGhlIEJTRC1saWNlbnNlZCBpbXBsZW1lbnRhdGlvbiBieSBQYXVsIFRlcm86CiAqCiAqIFBhdWwgVGVybywgSnVseSAyMDAxCiAqIGh0dHA6Ly93d3cudGVyby5jby51ay9kZXMvCiAqCiAqIE9wdGltaXNlZCBmb3IgcGVyZm9ybWFuY2Ugd2l0aCBsYXJnZSBibG9ja3MgYnkgTWljaGFlbCBIYXl3b3J0aCwgTm92ZW1iZXIgMjAwMQogKiBodHRwOi8vd3d3Lm5ldGRlYWxpbmcuY29tCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQKICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCiAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCiAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCiAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQogKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCiAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKICogU1VDSCBEQU1BR0UuCiAqCiAqIEBhdXRob3IgU3RlZmFuIFNpZWdsCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMiBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8qIERFUyBBUEkgKi8KZm9yZ2UuZGVzID0gZm9yZ2UuZGVzIHx8IHt9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGNpcGhlciA9IGZvcmdlLmNpcGhlci5jcmVhdGVDaXBoZXIoJ0RFUy08bW9kZT4nLCBrZXkpOwogKiBjaXBoZXIuc3RhcnQoe2l2OiBpdn0pOwogKgogKiBDcmVhdGVzIGFuIERFUyBjaXBoZXIgb2JqZWN0IHRvIGVuY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICogVGhlIG91dHB1dCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgJ291dHB1dCcgbWVtYmVyIG9mIHRoZSByZXR1cm5lZCBjaXBoZXIuCiAqCiAqIFRoZSBrZXkgYW5kIGl2IG1heSBiZSBnaXZlbiBhcyBiaW5hcnktZW5jb2RlZCBzdHJpbmdzIG9mIGJ5dGVzIG9yCiAqIGJ5dGUgYnVmZmVycy4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UgKDY0IG9yIDE5MiBiaXRzKS4KICogQHBhcmFtIGl2IHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICogQHBhcmFtIG1vZGUgdGhlIGNpcGhlciBtb2RlIHRvIHVzZSAoZGVmYXVsdDogJ0NCQycgaWYgSVYgaXMKICogICAgICAgICAgZ2l2ZW4sICdFQ0InIGlmIG51bGwpLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5kZXMuc3RhcnRFbmNyeXB0aW5nID0gZnVuY3Rpb24oa2V5LCBpdiwgb3V0cHV0LCBtb2RlKSB7CiAgdmFyIGNpcGhlciA9IF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG91dHB1dCwKICAgIGRlY3J5cHQ6IGZhbHNlLAogICAgbW9kZTogbW9kZSB8fCAoaXYgPT09IG51bGwgPyAnRUNCJyA6ICdDQkMnKQogIH0pOwogIGNpcGhlci5zdGFydChpdik7CiAgcmV0dXJuIGNpcGhlcjsKfTsKCi8qKgogKiBEZXByZWNhdGVkLiBJbnN0ZWFkLCB1c2U6CiAqCiAqIHZhciBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKCdERVMtPG1vZGU+Jywga2V5KTsKICoKICogQ3JlYXRlcyBhbiBERVMgY2lwaGVyIG9iamVjdCB0byBlbmNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqCiAqIFRoZSBrZXkgbWF5IGJlIGdpdmVuIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlICg2NCBvciAxOTIgYml0cykuCiAqIEBwYXJhbSBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UuZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXIgPSBmdW5jdGlvbihrZXksIG1vZGUpIHsKICByZXR1cm4gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogbnVsbCwKICAgIGRlY3J5cHQ6IGZhbHNlLAogICAgbW9kZTogbW9kZQogIH0pOwp9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGRlY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCdERVMtPG1vZGU+Jywga2V5KTsKICogZGVjaXBoZXIuc3RhcnQoe2l2OiBpdn0pOwogKgogKiBDcmVhdGVzIGFuIERFUyBjaXBoZXIgb2JqZWN0IHRvIGRlY3J5cHQgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gc3ltbWV0cmljIGtleS4KICogVGhlIG91dHB1dCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgJ291dHB1dCcgbWVtYmVyIG9mIHRoZSByZXR1cm5lZCBjaXBoZXIuCiAqCiAqIFRoZSBrZXkgYW5kIGl2IG1heSBiZSBnaXZlbiBhcyBiaW5hcnktZW5jb2RlZCBzdHJpbmdzIG9mIGJ5dGVzIG9yCiAqIGJ5dGUgYnVmZmVycy4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UgKDY0IG9yIDE5MiBiaXRzKS4KICogQHBhcmFtIGl2IHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICogQHBhcmFtIG1vZGUgdGhlIGNpcGhlciBtb2RlIHRvIHVzZSAoZGVmYXVsdDogJ0NCQycgaWYgSVYgaXMKICogICAgICAgICAgZ2l2ZW4sICdFQ0InIGlmIG51bGwpLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5kZXMuc3RhcnREZWNyeXB0aW5nID0gZnVuY3Rpb24oa2V5LCBpdiwgb3V0cHV0LCBtb2RlKSB7CiAgdmFyIGNpcGhlciA9IF9jcmVhdGVDaXBoZXIoewogICAga2V5OiBrZXksCiAgICBvdXRwdXQ6IG91dHB1dCwKICAgIGRlY3J5cHQ6IHRydWUsCiAgICBtb2RlOiBtb2RlIHx8IChpdiA9PT0gbnVsbCA/ICdFQ0InIDogJ0NCQycpCiAgfSk7CiAgY2lwaGVyLnN0YXJ0KGl2KTsKICByZXR1cm4gY2lwaGVyOwp9OwoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogdmFyIGRlY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCdERVMtPG1vZGU+Jywga2V5KTsKICoKICogQ3JlYXRlcyBhbiBERVMgY2lwaGVyIG9iamVjdCB0byBkZWNyeXB0IGRhdGEgdXNpbmcgdGhlIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqCiAqIFRoZSBrZXkgbWF5IGJlIGdpdmVuIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlICg2NCBvciAxOTIgYml0cykuCiAqIEBwYXJhbSBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UuZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIgPSBmdW5jdGlvbihrZXksIG1vZGUpIHsKICByZXR1cm4gX2NyZWF0ZUNpcGhlcih7CiAgICBrZXk6IGtleSwKICAgIG91dHB1dDogbnVsbCwKICAgIGRlY3J5cHQ6IHRydWUsCiAgICBtb2RlOiBtb2RlCiAgfSk7Cn07CgovKioKICogQ3JlYXRlcyBhIG5ldyBERVMgY2lwaGVyIGFsZ29yaXRobSBvYmplY3QuCiAqCiAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBhbGdvcml0aG0uCiAqIEBwYXJhbSBtb2RlIHRoZSBtb2RlIGZhY3RvcnkgZnVuY3Rpb24uCiAqCiAqIEByZXR1cm4gdGhlIERFUyBhbGdvcml0aG0gb2JqZWN0LgogKi8KZm9yZ2UuZGVzLkFsZ29yaXRobSA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUpIHsKICB2YXIgc2VsZiA9IHRoaXM7CiAgc2VsZi5uYW1lID0gbmFtZTsKICBzZWxmLm1vZGUgPSBuZXcgbW9kZSh7CiAgICBibG9ja1NpemU6IDgsCiAgICBjaXBoZXI6IHsKICAgICAgZW5jcnlwdDogZnVuY3Rpb24oaW5CbG9jaywgb3V0QmxvY2spIHsKICAgICAgICByZXR1cm4gX3VwZGF0ZUJsb2NrKHNlbGYuX2tleXMsIGluQmxvY2ssIG91dEJsb2NrLCBmYWxzZSk7CiAgICAgIH0sCiAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uKGluQmxvY2ssIG91dEJsb2NrKSB7CiAgICAgICAgcmV0dXJuIF91cGRhdGVCbG9jayhzZWxmLl9rZXlzLCBpbkJsb2NrLCBvdXRCbG9jaywgdHJ1ZSk7CiAgICAgIH0KICAgIH0KICB9KTsKICBzZWxmLl9pbml0ID0gZmFsc2U7Cn07CgovKioKICogSW5pdGlhbGl6ZXMgdGhpcyBERVMgYWxnb3JpdGhtIGJ5IGV4cGFuZGluZyBpdHMga2V5LgogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIGtleSB0aGUga2V5IHRvIHVzZSB3aXRoIHRoaXMgYWxnb3JpdGhtLgogKiAgICAgICAgICBkZWNyeXB0IHRydWUgaWYgdGhlIGFsZ29yaXRobSBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgZm9yIGRlY3J5cHRpb24sCiAqICAgICAgICAgICAgZmFsc2UgZm9yIGVuY3J5cHRpb24uCiAqLwpmb3JnZS5kZXMuQWxnb3JpdGhtLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24ob3B0aW9ucykgewogIGlmKHRoaXMuX2luaXQpIHsKICAgIHJldHVybjsKICB9CgogIHZhciBrZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihvcHRpb25zLmtleSk7CiAgaWYodGhpcy5uYW1lLmluZGV4T2YoJzNERVMnKSA9PT0gMCkgewogICAgaWYoa2V5Lmxlbmd0aCgpICE9PSAyNCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgVHJpcGxlLURFUyBrZXkgc2l6ZTogJyArIGtleS5sZW5ndGgoKSAqIDgpOwogICAgfQogIH0KCiAgLy8gZG8ga2V5IGV4cGFuc2lvbiB0byAxNiBvciA0OCBzdWJrZXlzIChzaW5nbGUgb3IgdHJpcGxlIERFUykKICB0aGlzLl9rZXlzID0gX2NyZWF0ZUtleXMoa2V5KTsKICB0aGlzLl9pbml0ID0gdHJ1ZTsKfTsKCgovKiogUmVnaXN0ZXIgREVTIGFsZ29yaXRobXMgKiovCgpyZWdpc3RlckFsZ29yaXRobSgnREVTLUVDQicsIGZvcmdlLmNpcGhlci5tb2Rlcy5lY2IpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLUNCQycsIGZvcmdlLmNpcGhlci5tb2Rlcy5jYmMpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLUNGQicsIGZvcmdlLmNpcGhlci5tb2Rlcy5jZmIpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLU9GQicsIGZvcmdlLmNpcGhlci5tb2Rlcy5vZmIpOwpyZWdpc3RlckFsZ29yaXRobSgnREVTLUNUUicsIGZvcmdlLmNpcGhlci5tb2Rlcy5jdHIpOwoKcmVnaXN0ZXJBbGdvcml0aG0oJzNERVMtRUNCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLmVjYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCczREVTLUNCQycsIGZvcmdlLmNpcGhlci5tb2Rlcy5jYmMpOwpyZWdpc3RlckFsZ29yaXRobSgnM0RFUy1DRkInLCBmb3JnZS5jaXBoZXIubW9kZXMuY2ZiKTsKcmVnaXN0ZXJBbGdvcml0aG0oJzNERVMtT0ZCJywgZm9yZ2UuY2lwaGVyLm1vZGVzLm9mYik7CnJlZ2lzdGVyQWxnb3JpdGhtKCczREVTLUNUUicsIGZvcmdlLmNpcGhlci5tb2Rlcy5jdHIpOwoKZnVuY3Rpb24gcmVnaXN0ZXJBbGdvcml0aG0obmFtZSwgbW9kZSkgewogIHZhciBmYWN0b3J5ID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gbmV3IGZvcmdlLmRlcy5BbGdvcml0aG0obmFtZSwgbW9kZSk7CiAgfTsKICBmb3JnZS5jaXBoZXIucmVnaXN0ZXJBbGdvcml0aG0obmFtZSwgZmFjdG9yeSk7Cn0KCgovKiogREVTIGltcGxlbWVudGF0aW9uICoqLwoKdmFyIHNwZnVuY3Rpb24xID0gWzB4MTAxMDQwMCwwLDB4MTAwMDAsMHgxMDEwNDA0LDB4MTAxMDAwNCwweDEwNDA0LDB4NCwweDEwMDAwLDB4NDAwLDB4MTAxMDQwMCwweDEwMTA0MDQsMHg0MDAsMHgxMDAwNDA0LDB4MTAxMDAwNCwweDEwMDAwMDAsMHg0LDB4NDA0LDB4MTAwMDQwMCwweDEwMDA0MDAsMHgxMDQwMCwweDEwNDAwLDB4MTAxMDAwMCwweDEwMTAwMDAsMHgxMDAwNDA0LDB4MTAwMDQsMHgxMDAwMDA0LDB4MTAwMDAwNCwweDEwMDA0LDAsMHg0MDQsMHgxMDQwNCwweDEwMDAwMDAsMHgxMDAwMCwweDEwMTA0MDQsMHg0LDB4MTAxMDAwMCwweDEwMTA0MDAsMHgxMDAwMDAwLDB4MTAwMDAwMCwweDQwMCwweDEwMTAwMDQsMHgxMDAwMCwweDEwNDAwLDB4MTAwMDAwNCwweDQwMCwweDQsMHgxMDAwNDA0LDB4MTA0MDQsMHgxMDEwNDA0LDB4MTAwMDQsMHgxMDEwMDAwLDB4MTAwMDQwNCwweDEwMDAwMDQsMHg0MDQsMHgxMDQwNCwweDEwMTA0MDAsMHg0MDQsMHgxMDAwNDAwLDB4MTAwMDQwMCwwLDB4MTAwMDQsMHgxMDQwMCwwLDB4MTAxMDAwNF07CnZhciBzcGZ1bmN0aW9uMiA9IFstMHg3ZmVmN2ZlMCwtMHg3ZmZmODAwMCwweDgwMDAsMHgxMDgwMjAsMHgxMDAwMDAsMHgyMCwtMHg3ZmVmZmZlMCwtMHg3ZmZmN2ZlMCwtMHg3ZmZmZmZlMCwtMHg3ZmVmN2ZlMCwtMHg3ZmVmODAwMCwtMHg4MDAwMDAwMCwtMHg3ZmZmODAwMCwweDEwMDAwMCwweDIwLC0weDdmZWZmZmUwLDB4MTA4MDAwLDB4MTAwMDIwLC0weDdmZmY3ZmUwLDAsLTB4ODAwMDAwMDAsMHg4MDAwLDB4MTA4MDIwLC0weDdmZjAwMDAwLDB4MTAwMDIwLC0weDdmZmZmZmUwLDAsMHgxMDgwMDAsMHg4MDIwLC0weDdmZWY4MDAwLC0weDdmZjAwMDAwLDB4ODAyMCwwLDB4MTA4MDIwLC0weDdmZWZmZmUwLDB4MTAwMDAwLC0weDdmZmY3ZmUwLC0weDdmZjAwMDAwLC0weDdmZWY4MDAwLDB4ODAwMCwtMHg3ZmYwMDAwMCwtMHg3ZmZmODAwMCwweDIwLC0weDdmZWY3ZmUwLDB4MTA4MDIwLDB4MjAsMHg4MDAwLC0weDgwMDAwMDAwLDB4ODAyMCwtMHg3ZmVmODAwMCwweDEwMDAwMCwtMHg3ZmZmZmZlMCwweDEwMDAyMCwtMHg3ZmZmN2ZlMCwtMHg3ZmZmZmZlMCwweDEwMDAyMCwweDEwODAwMCwwLC0weDdmZmY4MDAwLDB4ODAyMCwtMHg4MDAwMDAwMCwtMHg3ZmVmZmZlMCwtMHg3ZmVmN2ZlMCwweDEwODAwMF07CnZhciBzcGZ1bmN0aW9uMyA9IFsweDIwOCwweDgwMjAyMDAsMCwweDgwMjAwMDgsMHg4MDAwMjAwLDAsMHgyMDIwOCwweDgwMDAyMDAsMHgyMDAwOCwweDgwMDAwMDgsMHg4MDAwMDA4LDB4MjAwMDAsMHg4MDIwMjA4LDB4MjAwMDgsMHg4MDIwMDAwLDB4MjA4LDB4ODAwMDAwMCwweDgsMHg4MDIwMjAwLDB4MjAwLDB4MjAyMDAsMHg4MDIwMDAwLDB4ODAyMDAwOCwweDIwMjA4LDB4ODAwMDIwOCwweDIwMjAwLDB4MjAwMDAsMHg4MDAwMjA4LDB4OCwweDgwMjAyMDgsMHgyMDAsMHg4MDAwMDAwLDB4ODAyMDIwMCwweDgwMDAwMDAsMHgyMDAwOCwweDIwOCwweDIwMDAwLDB4ODAyMDIwMCwweDgwMDAyMDAsMCwweDIwMCwweDIwMDA4LDB4ODAyMDIwOCwweDgwMDAyMDAsMHg4MDAwMDA4LDB4MjAwLDAsMHg4MDIwMDA4LDB4ODAwMDIwOCwweDIwMDAwLDB4ODAwMDAwMCwweDgwMjAyMDgsMHg4LDB4MjAyMDgsMHgyMDIwMCwweDgwMDAwMDgsMHg4MDIwMDAwLDB4ODAwMDIwOCwweDIwOCwweDgwMjAwMDAsMHgyMDIwOCwweDgsMHg4MDIwMDA4LDB4MjAyMDBdOwp2YXIgc3BmdW5jdGlvbjQgPSBbMHg4MDIwMDEsMHgyMDgxLDB4MjA4MSwweDgwLDB4ODAyMDgwLDB4ODAwMDgxLDB4ODAwMDAxLDB4MjAwMSwwLDB4ODAyMDAwLDB4ODAyMDAwLDB4ODAyMDgxLDB4ODEsMCwweDgwMDA4MCwweDgwMDAwMSwweDEsMHgyMDAwLDB4ODAwMDAwLDB4ODAyMDAxLDB4ODAsMHg4MDAwMDAsMHgyMDAxLDB4MjA4MCwweDgwMDA4MSwweDEsMHgyMDgwLDB4ODAwMDgwLDB4MjAwMCwweDgwMjA4MCwweDgwMjA4MSwweDgxLDB4ODAwMDgwLDB4ODAwMDAxLDB4ODAyMDAwLDB4ODAyMDgxLDB4ODEsMCwwLDB4ODAyMDAwLDB4MjA4MCwweDgwMDA4MCwweDgwMDA4MSwweDEsMHg4MDIwMDEsMHgyMDgxLDB4MjA4MSwweDgwLDB4ODAyMDgxLDB4ODEsMHgxLDB4MjAwMCwweDgwMDAwMSwweDIwMDEsMHg4MDIwODAsMHg4MDAwODEsMHgyMDAxLDB4MjA4MCwweDgwMDAwMCwweDgwMjAwMSwweDgwLDB4ODAwMDAwLDB4MjAwMCwweDgwMjA4MF07CnZhciBzcGZ1bmN0aW9uNSA9IFsweDEwMCwweDIwODAxMDAsMHgyMDgwMDAwLDB4NDIwMDAxMDAsMHg4MDAwMCwweDEwMCwweDQwMDAwMDAwLDB4MjA4MDAwMCwweDQwMDgwMTAwLDB4ODAwMDAsMHgyMDAwMTAwLDB4NDAwODAxMDAsMHg0MjAwMDEwMCwweDQyMDgwMDAwLDB4ODAxMDAsMHg0MDAwMDAwMCwweDIwMDAwMDAsMHg0MDA4MDAwMCwweDQwMDgwMDAwLDAsMHg0MDAwMDEwMCwweDQyMDgwMTAwLDB4NDIwODAxMDAsMHgyMDAwMTAwLDB4NDIwODAwMDAsMHg0MDAwMDEwMCwwLDB4NDIwMDAwMDAsMHgyMDgwMTAwLDB4MjAwMDAwMCwweDQyMDAwMDAwLDB4ODAxMDAsMHg4MDAwMCwweDQyMDAwMTAwLDB4MTAwLDB4MjAwMDAwMCwweDQwMDAwMDAwLDB4MjA4MDAwMCwweDQyMDAwMTAwLDB4NDAwODAxMDAsMHgyMDAwMTAwLDB4NDAwMDAwMDAsMHg0MjA4MDAwMCwweDIwODAxMDAsMHg0MDA4MDEwMCwweDEwMCwweDIwMDAwMDAsMHg0MjA4MDAwMCwweDQyMDgwMTAwLDB4ODAxMDAsMHg0MjAwMDAwMCwweDQyMDgwMTAwLDB4MjA4MDAwMCwwLDB4NDAwODAwMDAsMHg0MjAwMDAwMCwweDgwMTAwLDB4MjAwMDEwMCwweDQwMDAwMTAwLDB4ODAwMDAsMCwweDQwMDgwMDAwLDB4MjA4MDEwMCwweDQwMDAwMTAwXTsKdmFyIHNwZnVuY3Rpb242ID0gWzB4MjAwMDAwMTAsMHgyMDQwMDAwMCwweDQwMDAsMHgyMDQwNDAxMCwweDIwNDAwMDAwLDB4MTAsMHgyMDQwNDAxMCwweDQwMDAwMCwweDIwMDA0MDAwLDB4NDA0MDEwLDB4NDAwMDAwLDB4MjAwMDAwMTAsMHg0MDAwMTAsMHgyMDAwNDAwMCwweDIwMDAwMDAwLDB4NDAxMCwwLDB4NDAwMDEwLDB4MjAwMDQwMTAsMHg0MDAwLDB4NDA0MDAwLDB4MjAwMDQwMTAsMHgxMCwweDIwNDAwMDEwLDB4MjA0MDAwMTAsMCwweDQwNDAxMCwweDIwNDA0MDAwLDB4NDAxMCwweDQwNDAwMCwweDIwNDA0MDAwLDB4MjAwMDAwMDAsMHgyMDAwNDAwMCwweDEwLDB4MjA0MDAwMTAsMHg0MDQwMDAsMHgyMDQwNDAxMCwweDQwMDAwMCwweDQwMTAsMHgyMDAwMDAxMCwweDQwMDAwMCwweDIwMDA0MDAwLDB4MjAwMDAwMDAsMHg0MDEwLDB4MjAwMDAwMTAsMHgyMDQwNDAxMCwweDQwNDAwMCwweDIwNDAwMDAwLDB4NDA0MDEwLDB4MjA0MDQwMDAsMCwweDIwNDAwMDEwLDB4MTAsMHg0MDAwLDB4MjA0MDAwMDAsMHg0MDQwMTAsMHg0MDAwLDB4NDAwMDEwLDB4MjAwMDQwMTAsMCwweDIwNDA0MDAwLDB4MjAwMDAwMDAsMHg0MDAwMTAsMHgyMDAwNDAxMF07CnZhciBzcGZ1bmN0aW9uNyA9IFsweDIwMDAwMCwweDQyMDAwMDIsMHg0MDAwODAyLDAsMHg4MDAsMHg0MDAwODAyLDB4MjAwODAyLDB4NDIwMDgwMCwweDQyMDA4MDIsMHgyMDAwMDAsMCwweDQwMDAwMDIsMHgyLDB4NDAwMDAwMCwweDQyMDAwMDIsMHg4MDIsMHg0MDAwODAwLDB4MjAwODAyLDB4MjAwMDAyLDB4NDAwMDgwMCwweDQwMDAwMDIsMHg0MjAwMDAwLDB4NDIwMDgwMCwweDIwMDAwMiwweDQyMDAwMDAsMHg4MDAsMHg4MDIsMHg0MjAwODAyLDB4MjAwODAwLDB4MiwweDQwMDAwMDAsMHgyMDA4MDAsMHg0MDAwMDAwLDB4MjAwODAwLDB4MjAwMDAwLDB4NDAwMDgwMiwweDQwMDA4MDIsMHg0MjAwMDAyLDB4NDIwMDAwMiwweDIsMHgyMDAwMDIsMHg0MDAwMDAwLDB4NDAwMDgwMCwweDIwMDAwMCwweDQyMDA4MDAsMHg4MDIsMHgyMDA4MDIsMHg0MjAwODAwLDB4ODAyLDB4NDAwMDAwMiwweDQyMDA4MDIsMHg0MjAwMDAwLDB4MjAwODAwLDAsMHgyLDB4NDIwMDgwMiwwLDB4MjAwODAyLDB4NDIwMDAwMCwweDgwMCwweDQwMDAwMDIsMHg0MDAwODAwLDB4ODAwLDB4MjAwMDAyXTsKdmFyIHNwZnVuY3Rpb244ID0gWzB4MTAwMDEwNDAsMHgxMDAwLDB4NDAwMDAsMHgxMDA0MTA0MCwweDEwMDAwMDAwLDB4MTAwMDEwNDAsMHg0MCwweDEwMDAwMDAwLDB4NDAwNDAsMHgxMDA0MDAwMCwweDEwMDQxMDQwLDB4NDEwMDAsMHgxMDA0MTAwMCwweDQxMDQwLDB4MTAwMCwweDQwLDB4MTAwNDAwMDAsMHgxMDAwMDA0MCwweDEwMDAxMDAwLDB4MTA0MCwweDQxMDAwLDB4NDAwNDAsMHgxMDA0MDA0MCwweDEwMDQxMDAwLDB4MTA0MCwwLDAsMHgxMDA0MDA0MCwweDEwMDAwMDQwLDB4MTAwMDEwMDAsMHg0MTA0MCwweDQwMDAwLDB4NDEwNDAsMHg0MDAwMCwweDEwMDQxMDAwLDB4MTAwMCwweDQwLDB4MTAwNDAwNDAsMHgxMDAwLDB4NDEwNDAsMHgxMDAwMTAwMCwweDQwLDB4MTAwMDAwNDAsMHgxMDA0MDAwMCwweDEwMDQwMDQwLDB4MTAwMDAwMDAsMHg0MDAwMCwweDEwMDAxMDQwLDAsMHgxMDA0MTA0MCwweDQwMDQwLDB4MTAwMDAwNDAsMHgxMDA0MDAwMCwweDEwMDAxMDAwLDB4MTAwMDEwNDAsMCwweDEwMDQxMDQwLDB4NDEwMDAsMHg0MTAwMCwweDEwNDAsMHgxMDQwLDB4NDAwNDAsMHgxMDAwMDAwMCwweDEwMDQxMDAwXTsKCi8qKgogKiBDcmVhdGUgbmVjZXNzYXJ5IHN1YiBrZXlzLgogKgogKiBAcGFyYW0ga2V5IHRoZSA2NC1iaXQgb3IgMTkyLWJpdCBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIGV4cGFuZGVkIGtleXMuCiAqLwpmdW5jdGlvbiBfY3JlYXRlS2V5cyhrZXkpIHsKICB2YXIgcGMyYnl0ZXMwICA9IFswLDB4NCwweDIwMDAwMDAwLDB4MjAwMDAwMDQsMHgxMDAwMCwweDEwMDA0LDB4MjAwMTAwMDAsMHgyMDAxMDAwNCwweDIwMCwweDIwNCwweDIwMDAwMjAwLDB4MjAwMDAyMDQsMHgxMDIwMCwweDEwMjA0LDB4MjAwMTAyMDAsMHgyMDAxMDIwNF0sCiAgICAgIHBjMmJ5dGVzMSAgPSBbMCwweDEsMHgxMDAwMDAsMHgxMDAwMDEsMHg0MDAwMDAwLDB4NDAwMDAwMSwweDQxMDAwMDAsMHg0MTAwMDAxLDB4MTAwLDB4MTAxLDB4MTAwMTAwLDB4MTAwMTAxLDB4NDAwMDEwMCwweDQwMDAxMDEsMHg0MTAwMTAwLDB4NDEwMDEwMV0sCiAgICAgIHBjMmJ5dGVzMiAgPSBbMCwweDgsMHg4MDAsMHg4MDgsMHgxMDAwMDAwLDB4MTAwMDAwOCwweDEwMDA4MDAsMHgxMDAwODA4LDAsMHg4LDB4ODAwLDB4ODA4LDB4MTAwMDAwMCwweDEwMDAwMDgsMHgxMDAwODAwLDB4MTAwMDgwOF0sCiAgICAgIHBjMmJ5dGVzMyAgPSBbMCwweDIwMDAwMCwweDgwMDAwMDAsMHg4MjAwMDAwLDB4MjAwMCwweDIwMjAwMCwweDgwMDIwMDAsMHg4MjAyMDAwLDB4MjAwMDAsMHgyMjAwMDAsMHg4MDIwMDAwLDB4ODIyMDAwMCwweDIyMDAwLDB4MjIyMDAwLDB4ODAyMjAwMCwweDgyMjIwMDBdLAogICAgICBwYzJieXRlczQgID0gWzAsMHg0MDAwMCwweDEwLDB4NDAwMTAsMCwweDQwMDAwLDB4MTAsMHg0MDAxMCwweDEwMDAsMHg0MTAwMCwweDEwMTAsMHg0MTAxMCwweDEwMDAsMHg0MTAwMCwweDEwMTAsMHg0MTAxMF0sCiAgICAgIHBjMmJ5dGVzNSAgPSBbMCwweDQwMCwweDIwLDB4NDIwLDAsMHg0MDAsMHgyMCwweDQyMCwweDIwMDAwMDAsMHgyMDAwNDAwLDB4MjAwMDAyMCwweDIwMDA0MjAsMHgyMDAwMDAwLDB4MjAwMDQwMCwweDIwMDAwMjAsMHgyMDAwNDIwXSwKICAgICAgcGMyYnl0ZXM2ICA9IFswLDB4MTAwMDAwMDAsMHg4MDAwMCwweDEwMDgwMDAwLDB4MiwweDEwMDAwMDAyLDB4ODAwMDIsMHgxMDA4MDAwMiwwLDB4MTAwMDAwMDAsMHg4MDAwMCwweDEwMDgwMDAwLDB4MiwweDEwMDAwMDAyLDB4ODAwMDIsMHgxMDA4MDAwMl0sCiAgICAgIHBjMmJ5dGVzNyAgPSBbMCwweDEwMDAwLDB4ODAwLDB4MTA4MDAsMHgyMDAwMDAwMCwweDIwMDEwMDAwLDB4MjAwMDA4MDAsMHgyMDAxMDgwMCwweDIwMDAwLDB4MzAwMDAsMHgyMDgwMCwweDMwODAwLDB4MjAwMjAwMDAsMHgyMDAzMDAwMCwweDIwMDIwODAwLDB4MjAwMzA4MDBdLAogICAgICBwYzJieXRlczggID0gWzAsMHg0MDAwMCwwLDB4NDAwMDAsMHgyLDB4NDAwMDIsMHgyLDB4NDAwMDIsMHgyMDAwMDAwLDB4MjA0MDAwMCwweDIwMDAwMDAsMHgyMDQwMDAwLDB4MjAwMDAwMiwweDIwNDAwMDIsMHgyMDAwMDAyLDB4MjA0MDAwMl0sCiAgICAgIHBjMmJ5dGVzOSAgPSBbMCwweDEwMDAwMDAwLDB4OCwweDEwMDAwMDA4LDAsMHgxMDAwMDAwMCwweDgsMHgxMDAwMDAwOCwweDQwMCwweDEwMDAwNDAwLDB4NDA4LDB4MTAwMDA0MDgsMHg0MDAsMHgxMDAwMDQwMCwweDQwOCwweDEwMDAwNDA4XSwKICAgICAgcGMyYnl0ZXMxMCA9IFswLDB4MjAsMCwweDIwLDB4MTAwMDAwLDB4MTAwMDIwLDB4MTAwMDAwLDB4MTAwMDIwLDB4MjAwMCwweDIwMjAsMHgyMDAwLDB4MjAyMCwweDEwMjAwMCwweDEwMjAyMCwweDEwMjAwMCwweDEwMjAyMF0sCiAgICAgIHBjMmJ5dGVzMTEgPSBbMCwweDEwMDAwMDAsMHgyMDAsMHgxMDAwMjAwLDB4MjAwMDAwLDB4MTIwMDAwMCwweDIwMDIwMCwweDEyMDAyMDAsMHg0MDAwMDAwLDB4NTAwMDAwMCwweDQwMDAyMDAsMHg1MDAwMjAwLDB4NDIwMDAwMCwweDUyMDAwMDAsMHg0MjAwMjAwLDB4NTIwMDIwMF0sCiAgICAgIHBjMmJ5dGVzMTIgPSBbMCwweDEwMDAsMHg4MDAwMDAwLDB4ODAwMTAwMCwweDgwMDAwLDB4ODEwMDAsMHg4MDgwMDAwLDB4ODA4MTAwMCwweDEwLDB4MTAxMCwweDgwMDAwMTAsMHg4MDAxMDEwLDB4ODAwMTAsMHg4MTAxMCwweDgwODAwMTAsMHg4MDgxMDEwXSwKICAgICAgcGMyYnl0ZXMxMyA9IFswLDB4NCwweDEwMCwweDEwNCwwLDB4NCwweDEwMCwweDEwNCwweDEsMHg1LDB4MTAxLDB4MTA1LDB4MSwweDUsMHgxMDEsMHgxMDVdOwoKICAvLyBob3cgbWFueSBpdGVyYXRpb25zICgxIGZvciBkZXMsIDMgZm9yIHRyaXBsZSBkZXMpCiAgLy8gY2hhbmdlZCBieSBQYXVsIDE2LzYvMjAwNyB0byB1c2UgVHJpcGxlIERFUyBmb3IgOSsgYnl0ZSBrZXlzCiAgdmFyIGl0ZXJhdGlvbnMgPSBrZXkubGVuZ3RoKCkgPiA4ID8gMyA6IDE7CgogIC8vIHN0b3JlcyB0aGUgcmV0dXJuIGtleXMKICB2YXIga2V5cyA9IFtdOwoKICAvLyBub3cgZGVmaW5lIHRoZSBsZWZ0IHNoaWZ0cyB3aGljaCBuZWVkIHRvIGJlIGRvbmUKICB2YXIgc2hpZnRzID0gWzAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDBdOwoKICB2YXIgbiA9IDAsIHRtcDsKICBmb3IodmFyIGogPSAwOyBqIDwgaXRlcmF0aW9uczsgaiArKykgewogICAgdmFyIGxlZnQgPSBrZXkuZ2V0SW50MzIoKTsKICAgIHZhciByaWdodCA9IGtleS5nZXRJbnQzMigpOwoKICAgIHRtcCA9ICgobGVmdCA+Pj4gNCkgXiByaWdodCkgJiAweDBmMGYwZjBmOwogICAgcmlnaHQgXj0gdG1wOwogICAgbGVmdCBePSAodG1wIDw8IDQpOwoKICAgIHRtcCA9ICgocmlnaHQgPj4+IC0xNikgXiBsZWZ0KSAmIDB4MDAwMGZmZmY7CiAgICBsZWZ0IF49IHRtcDsKICAgIHJpZ2h0IF49ICh0bXAgPDwgLTE2KTsKCiAgICB0bXAgPSAoKGxlZnQgPj4+IDIpIF4gcmlnaHQpICYgMHgzMzMzMzMzMzsKICAgIHJpZ2h0IF49IHRtcDsKICAgIGxlZnQgXj0gKHRtcCA8PCAyKTsKCiAgICB0bXAgPSAoKHJpZ2h0ID4+PiAtMTYpIF4gbGVmdCkgJiAweDAwMDBmZmZmOwogICAgbGVmdCBePSB0bXA7CiAgICByaWdodCBePSAodG1wIDw8IC0xNik7CgogICAgdG1wID0gKChsZWZ0ID4+PiAxKSBeIHJpZ2h0KSAmIDB4NTU1NTU1NTU7CiAgICByaWdodCBePSB0bXA7CiAgICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogICAgdG1wID0gKChyaWdodCA+Pj4gOCkgXiBsZWZ0KSAmIDB4MDBmZjAwZmY7CiAgICBsZWZ0IF49IHRtcDsKICAgIHJpZ2h0IF49ICh0bXAgPDwgOCk7CgogICAgdG1wID0gKChsZWZ0ID4+PiAxKSBeIHJpZ2h0KSAmIDB4NTU1NTU1NTU7CiAgICByaWdodCBePSB0bXA7CiAgICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogICAgLy8gcmlnaHQgbmVlZHMgdG8gYmUgc2hpZnRlZCBhbmQgT1InZCB3aXRoIGxhc3QgZm91ciBiaXRzIG9mIGxlZnQKICAgIHRtcCA9IChsZWZ0IDw8IDgpIHwgKChyaWdodCA+Pj4gMjApICYgMHgwMDAwMDBmMCk7CgogICAgLy8gbGVmdCBuZWVkcyB0byBiZSBwdXQgdXBzaWRlIGRvd24KICAgIGxlZnQgPSAoKHJpZ2h0IDw8IDI0KSB8ICgocmlnaHQgPDwgOCkgJiAweGZmMDAwMCkgfAogICAgICAoKHJpZ2h0ID4+PiA4KSAmIDB4ZmYwMCkgfCAoKHJpZ2h0ID4+PiAyNCkgJiAweGYwKSk7CiAgICByaWdodCA9IHRtcDsKCiAgICAvLyBub3cgZ28gdGhyb3VnaCBhbmQgcGVyZm9ybSB0aGVzZSBzaGlmdHMgb24gdGhlIGxlZnQgYW5kIHJpZ2h0IGtleXMKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaGlmdHMubGVuZ3RoOyArK2kpIHsKICAgICAgLy9zaGlmdCB0aGUga2V5cyBlaXRoZXIgb25lIG9yIHR3byBiaXRzIHRvIHRoZSBsZWZ0CiAgICAgIGlmKHNoaWZ0c1tpXSkgewogICAgICAgIGxlZnQgPSAobGVmdCA8PCAyKSB8IChsZWZ0ID4+PiAyNik7CiAgICAgICAgcmlnaHQgPSAocmlnaHQgPDwgMikgfCAocmlnaHQgPj4+IDI2KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZWZ0ID0gKGxlZnQgPDwgMSkgfCAobGVmdCA+Pj4gMjcpOwogICAgICAgIHJpZ2h0ID0gKHJpZ2h0IDw8IDEpIHwgKHJpZ2h0ID4+PiAyNyk7CiAgICAgIH0KICAgICAgbGVmdCAmPSAtMHhmOwogICAgICByaWdodCAmPSAtMHhmOwoKICAgICAgLy8gbm93IGFwcGx5IFBDLTIsIGluIHN1Y2ggYSB3YXkgdGhhdCBFIGlzIGVhc2llciB3aGVuIGVuY3J5cHRpbmcgb3IKICAgICAgLy8gZGVjcnlwdGluZyB0aGlzIGNvbnZlcnNpb24gd2lsbCBsb29rIGxpa2UgUEMtMiBleGNlcHQgb25seSB0aGUgbGFzdCA2CiAgICAgIC8vIGJpdHMgb2YgZWFjaCBieXRlIGFyZSB1c2VkIHJhdGhlciB0aGFuIDQ4IGNvbnNlY3V0aXZlIGJpdHMgYW5kIHRoZQogICAgICAvLyBvcmRlciBvZiBsaW5lcyB3aWxsIGJlIGFjY29yZGluZyB0byBob3cgdGhlIFMgc2VsZWN0aW9uIGZ1bmN0aW9ucyB3aWxsCiAgICAgIC8vIGJlIGFwcGxpZWQ6IFMyLCBTNCwgUzYsIFM4LCBTMSwgUzMsIFM1LCBTNwogICAgICB2YXIgbGVmdHRtcCA9ICgKICAgICAgICBwYzJieXRlczBbbGVmdCA+Pj4gMjhdIHwgcGMyYnl0ZXMxWyhsZWZ0ID4+PiAyNCkgJiAweGZdIHwKICAgICAgICBwYzJieXRlczJbKGxlZnQgPj4+IDIwKSAmIDB4Zl0gfCBwYzJieXRlczNbKGxlZnQgPj4+IDE2KSAmIDB4Zl0gfAogICAgICAgIHBjMmJ5dGVzNFsobGVmdCA+Pj4gMTIpICYgMHhmXSB8IHBjMmJ5dGVzNVsobGVmdCA+Pj4gOCkgJiAweGZdIHwKICAgICAgICBwYzJieXRlczZbKGxlZnQgPj4+IDQpICYgMHhmXSk7CiAgICAgIHZhciByaWdodHRtcCA9ICgKICAgICAgICBwYzJieXRlczdbcmlnaHQgPj4+IDI4XSB8IHBjMmJ5dGVzOFsocmlnaHQgPj4+IDI0KSAmIDB4Zl0gfAogICAgICAgIHBjMmJ5dGVzOVsocmlnaHQgPj4+IDIwKSAmIDB4Zl0gfCBwYzJieXRlczEwWyhyaWdodCA+Pj4gMTYpICYgMHhmXSB8CiAgICAgICAgcGMyYnl0ZXMxMVsocmlnaHQgPj4+IDEyKSAmIDB4Zl0gfCBwYzJieXRlczEyWyhyaWdodCA+Pj4gOCkgJiAweGZdIHwKICAgICAgICBwYzJieXRlczEzWyhyaWdodCA+Pj4gNCkgJiAweGZdKTsKICAgICAgdG1wID0gKChyaWdodHRtcCA+Pj4gMTYpIF4gbGVmdHRtcCkgJiAweDAwMDBmZmZmOwogICAgICBrZXlzW24rK10gPSBsZWZ0dG1wIF4gdG1wOwogICAgICBrZXlzW24rK10gPSByaWdodHRtcCBeICh0bXAgPDwgMTYpOwogICAgfQogIH0KCiAgcmV0dXJuIGtleXM7Cn0KCi8qKgogKiBVcGRhdGVzIGEgc2luZ2xlIGJsb2NrICgxIGJ5dGUpIHVzaW5nIERFUy4gVGhlIHVwZGF0ZSB3aWxsIGVpdGhlcgogKiBlbmNyeXB0IG9yIGRlY3J5cHQgdGhlIGJsb2NrLgogKgogKiBAcGFyYW0ga2V5cyB0aGUgZXhwYW5kZWQga2V5cy4KICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBibG9jayAoYW4gYXJyYXkgb2YgMzItYml0IHdvcmRzKS4KICogQHBhcmFtIG91dHB1dCB0aGUgdXBkYXRlZCBvdXRwdXQgYmxvY2suCiAqIEBwYXJhbSBkZWNyeXB0IHRydWUgdG8gZGVjcnlwdCB0aGUgYmxvY2ssIGZhbHNlIHRvIGVuY3J5cHQgaXQuCiAqLwpmdW5jdGlvbiBfdXBkYXRlQmxvY2soa2V5cywgaW5wdXQsIG91dHB1dCwgZGVjcnlwdCkgewogIC8vIHNldCB1cCBsb29wcyBmb3Igc2luZ2xlIG9yIHRyaXBsZSBERVMKICB2YXIgaXRlcmF0aW9ucyA9IGtleXMubGVuZ3RoID09PSAzMiA/IDMgOiA5OwogIHZhciBsb29waW5nOwogIGlmKGl0ZXJhdGlvbnMgPT09IDMpIHsKICAgIGxvb3BpbmcgPSBkZWNyeXB0ID8gWzMwLCAtMiwgLTJdIDogWzAsIDMyLCAyXTsKICB9IGVsc2UgewogICAgbG9vcGluZyA9IChkZWNyeXB0ID8KICAgICAgWzk0LCA2MiwgLTIsIDMyLCA2NCwgMiwgMzAsIC0yLCAtMl0gOgogICAgICBbMCwgMzIsIDIsIDYyLCAzMCwgLTIsIDY0LCA5NiwgMl0pOwogIH0KCiAgdmFyIHRtcDsKCiAgdmFyIGxlZnQgPSBpbnB1dFswXTsKICB2YXIgcmlnaHQgPSBpbnB1dFsxXTsKCiAgLy8gZmlyc3QgZWFjaCA2NCBiaXQgY2h1bmsgb2YgdGhlIG1lc3NhZ2UgbXVzdCBiZSBwZXJtdXRlZCBhY2NvcmRpbmcgdG8gSVAKICB0bXAgPSAoKGxlZnQgPj4+IDQpIF4gcmlnaHQpICYgMHgwZjBmMGYwZjsKICByaWdodCBePSB0bXA7CiAgbGVmdCBePSAodG1wIDw8IDQpOwoKICB0bXAgPSAoKGxlZnQgPj4+IDE2KSBeIHJpZ2h0KSAmIDB4MDAwMGZmZmY7CiAgcmlnaHQgXj0gdG1wOwogIGxlZnQgXj0gKHRtcCA8PCAxNik7CgogIHRtcCA9ICgocmlnaHQgPj4+IDIpIF4gbGVmdCkgJiAweDMzMzMzMzMzOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgMik7CgogIHRtcCA9ICgocmlnaHQgPj4+IDgpIF4gbGVmdCkgJiAweDAwZmYwMGZmOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgOCk7CgogIHRtcCA9ICgobGVmdCA+Pj4gMSkgXiByaWdodCkgJiAweDU1NTU1NTU1OwogIHJpZ2h0IF49IHRtcDsKICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogIC8vIHJvdGF0ZSBsZWZ0IDEgYml0CiAgbGVmdCA9ICgobGVmdCA8PCAxKSB8IChsZWZ0ID4+PiAzMSkpOwogIHJpZ2h0ID0gKChyaWdodCA8PCAxKSB8IChyaWdodCA+Pj4gMzEpKTsKCiAgZm9yKHZhciBqID0gMDsgaiA8IGl0ZXJhdGlvbnM7IGogKz0gMykgewogICAgdmFyIGVuZGxvb3AgPSBsb29waW5nW2ogKyAxXTsKICAgIHZhciBsb29waW5jID0gbG9vcGluZ1tqICsgMl07CgogICAgLy8gbm93IGdvIHRocm91Z2ggYW5kIHBlcmZvcm0gdGhlIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbgogICAgZm9yKHZhciBpID0gbG9vcGluZ1tqXTsgaSAhPSBlbmRsb29wOyBpICs9IGxvb3BpbmMpIHsKICAgICAgdmFyIHJpZ2h0MSA9IHJpZ2h0IF4ga2V5c1tpXTsKICAgICAgdmFyIHJpZ2h0MiA9ICgocmlnaHQgPj4+IDQpIHwgKHJpZ2h0IDw8IDI4KSkgXiBrZXlzW2kgKyAxXTsKCiAgICAgIC8vIHBhc3NpbmcgdGhlc2UgYnl0ZXMgdGhyb3VnaCB0aGUgUyBzZWxlY3Rpb24gZnVuY3Rpb25zCiAgICAgIHRtcCA9IGxlZnQ7CiAgICAgIGxlZnQgPSByaWdodDsKICAgICAgcmlnaHQgPSB0bXAgXiAoCiAgICAgICAgc3BmdW5jdGlvbjJbKHJpZ2h0MSA+Pj4gMjQpICYgMHgzZl0gfAogICAgICAgIHNwZnVuY3Rpb240WyhyaWdodDEgPj4+IDE2KSAmIDB4M2ZdIHwKICAgICAgICBzcGZ1bmN0aW9uNlsocmlnaHQxID4+PiAgOCkgJiAweDNmXSB8CiAgICAgICAgc3BmdW5jdGlvbjhbcmlnaHQxICYgMHgzZl0gfAogICAgICAgIHNwZnVuY3Rpb24xWyhyaWdodDIgPj4+IDI0KSAmIDB4M2ZdIHwKICAgICAgICBzcGZ1bmN0aW9uM1socmlnaHQyID4+PiAxNikgJiAweDNmXSB8CiAgICAgICAgc3BmdW5jdGlvbjVbKHJpZ2h0MiA+Pj4gIDgpICYgMHgzZl0gfAogICAgICAgIHNwZnVuY3Rpb243W3JpZ2h0MiAmIDB4M2ZdKTsKICAgIH0KICAgIC8vIHVucmV2ZXJzZSBsZWZ0IGFuZCByaWdodAogICAgdG1wID0gbGVmdDsKICAgIGxlZnQgPSByaWdodDsKICAgIHJpZ2h0ID0gdG1wOwogIH0KCiAgLy8gcm90YXRlIHJpZ2h0IDEgYml0CiAgbGVmdCA9ICgobGVmdCA+Pj4gMSkgfCAobGVmdCA8PCAzMSkpOwogIHJpZ2h0ID0gKChyaWdodCA+Pj4gMSkgfCAocmlnaHQgPDwgMzEpKTsKCiAgLy8gbm93IHBlcmZvcm0gSVAtMSwgd2hpY2ggaXMgSVAgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbgogIHRtcCA9ICgobGVmdCA+Pj4gMSkgXiByaWdodCkgJiAweDU1NTU1NTU1OwogIHJpZ2h0IF49IHRtcDsKICBsZWZ0IF49ICh0bXAgPDwgMSk7CgogIHRtcCA9ICgocmlnaHQgPj4+IDgpIF4gbGVmdCkgJiAweDAwZmYwMGZmOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgOCk7CgogIHRtcCA9ICgocmlnaHQgPj4+IDIpIF4gbGVmdCkgJiAweDMzMzMzMzMzOwogIGxlZnQgXj0gdG1wOwogIHJpZ2h0IF49ICh0bXAgPDwgMik7CgogIHRtcCA9ICgobGVmdCA+Pj4gMTYpIF4gcmlnaHQpICYgMHgwMDAwZmZmZjsKICByaWdodCBePSB0bXA7CiAgbGVmdCBePSAodG1wIDw8IDE2KTsKCiAgdG1wID0gKChsZWZ0ID4+PiA0KSBeIHJpZ2h0KSAmIDB4MGYwZjBmMGY7CiAgcmlnaHQgXj0gdG1wOwogIGxlZnQgXj0gKHRtcCA8PCA0KTsKCiAgb3V0cHV0WzBdID0gbGVmdDsKICBvdXRwdXRbMV0gPSByaWdodDsKfQoKLyoqCiAqIERlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZToKICoKICogZm9yZ2UuY2lwaGVyLmNyZWF0ZUNpcGhlcignREVTLTxtb2RlPicsIGtleSk7CiAqIGZvcmdlLmNpcGhlci5jcmVhdGVEZWNpcGhlcignREVTLTxtb2RlPicsIGtleSk7CiAqCiAqIENyZWF0ZXMgYSBkZXByZWNhdGVkIERFUyBjaXBoZXIgb2JqZWN0LiBUaGlzIG9iamVjdCdzIG1vZGUgd2lsbCBkZWZhdWx0IHRvCiAqIENCQyAoY2lwaGVyLWJsb2NrLWNoYWluaW5nKS4KICoKICogVGhlIGtleSBtYXkgYmUgZ2l2ZW4gYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMgb3IgYSBieXRlIGJ1ZmZlci4KICoKICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgdG8gdXNlLgogKiAgICAgICAgICBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlICg2NCBvciAxOTIgYml0cykuCiAqICAgICAgICAgIG91dHB1dCB0aGUgYnVmZmVyIHRvIHdyaXRlIHRvLgogKiAgICAgICAgICBkZWNyeXB0IHRydWUgZm9yIGRlY3J5cHRpb24sIGZhbHNlIGZvciBlbmNyeXB0aW9uLgogKiAgICAgICAgICBtb2RlIHRoZSBjaXBoZXIgbW9kZSB0byB1c2UgKGRlZmF1bHQ6ICdDQkMnKS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZnVuY3Rpb24gX2NyZWF0ZUNpcGhlcihvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIG1vZGUgPSAob3B0aW9ucy5tb2RlIHx8ICdDQkMnKS50b1VwcGVyQ2FzZSgpOwogIHZhciBhbGdvcml0aG0gPSAnREVTLScgKyBtb2RlOwoKICB2YXIgY2lwaGVyOwogIGlmKG9wdGlvbnMuZGVjcnlwdCkgewogICAgY2lwaGVyID0gZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0gZWxzZSB7CiAgICBjaXBoZXIgPSBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKGFsZ29yaXRobSwgb3B0aW9ucy5rZXkpOwogIH0KCiAgLy8gYmFja3dhcmRzIGNvbXBhdGlibGUgc3RhcnQgQVBJCiAgdmFyIHN0YXJ0ID0gY2lwaGVyLnN0YXJ0OwogIGNpcGhlci5zdGFydCA9IGZ1bmN0aW9uKGl2LCBvcHRpb25zKSB7CiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogc3VwcG9ydCBzZWNvbmQgYXJnIGFzIG91dHB1dCBidWZmZXIKICAgIHZhciBvdXRwdXQgPSBudWxsOwogICAgaWYob3B0aW9ucyBpbnN0YW5jZW9mIGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcikgewogICAgICBvdXRwdXQgPSBvcHRpb25zOwogICAgICBvcHRpb25zID0ge307CiAgICB9CiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIG9wdGlvbnMub3V0cHV0ID0gb3V0cHV0OwogICAgb3B0aW9ucy5pdiA9IGl2OwogICAgc3RhcnQuY2FsbChjaXBoZXIsIG9wdGlvbnMpOwogIH07CgogIHJldHVybiBjaXBoZXI7Cn0KCgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdkZXMnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgKICAnanMvZGVzJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vY2lwaGVyJywgJy4vY2lwaGVyTW9kZXMnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFBhc3N3b3JkLUJhc2VkIEtleS1EZXJpdmF0aW9uIEZ1bmN0aW9uICMyIGltcGxlbWVudGF0aW9uLgogKgogKiBTZWUgUkZDIDI4OTggZm9yIGRldGFpbHMuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHBrY3M1ID0gZm9yZ2UucGtjczUgPSBmb3JnZS5wa2NzNSB8fCB7fTsKCnZhciBfbm9kZWpzID0gKAogIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSk7CnZhciBjcnlwdG87CmlmKF9ub2RlanMgJiYgIWZvcmdlLmRpc2FibGVOYXRpdmVDb2RlKSB7CiAgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7Cn0KCi8qKgogKiBEZXJpdmVzIGEga2V5IGZyb20gYSBwYXNzd29yZC4KICoKICogQHBhcmFtIHAgdGhlIHBhc3N3b3JkIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKiBAcGFyYW0gcyB0aGUgc2FsdCBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcy4KICogQHBhcmFtIGMgdGhlIGl0ZXJhdGlvbiBjb3VudCwgYSBwb3NpdGl2ZSBpbnRlZ2VyLgogKiBAcGFyYW0gZGtMZW4gdGhlIGludGVuZGVkIGxlbmd0aCwgaW4gYnl0ZXMsIG9mIHRoZSBkZXJpdmVkIGtleSwKICogICAgICAgICAgKG1heDogMl4zMiAtIDEpICogaGFzaCBsZW5ndGggb2YgdGhlIFBSRi4KICogQHBhcmFtIFttZF0gdGhlIG1lc3NhZ2UgZGlnZXN0IChvciBhbGdvcml0aG0gaWRlbnRpZmllciBhcyBhIHN0cmluZykgdG8gdXNlCiAqICAgICAgICAgIGluIHRoZSBQUkYsIGRlZmF1bHRzIHRvIFNIQS0xLgogKiBAcGFyYW0gW2NhbGxiYWNrKGVyciwga2V5KV0gcHJlc2VuY2UgdHJpZ2dlcnMgYXN5bmNocm9ub3VzIHZlcnNpb24sIGNhbGxlZAogKiAgICAgICAgICBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogKgogKiBAcmV0dXJuIHRoZSBkZXJpdmVkIGtleSwgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMsIGZvciB0aGUKICogICAgICAgICAgIHN5bmNocm9ub3VzIHZlcnNpb24gKGlmIG5vIGNhbGxiYWNrIGlzIHNwZWNpZmllZCkuCiAqLwpmb3JnZS5wYmtkZjIgPSBwa2NzNS5wYmtkZjIgPSBmdW5jdGlvbihwLCBzLCBjLCBka0xlbiwgbWQsIGNhbGxiYWNrKSB7CiAgaWYodHlwZW9mIG1kID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG1kOwogICAgbWQgPSBudWxsOwogIH0KCiAgLy8gdXNlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpZiBwb3NzaWJsZSBhbmQgbm90IGRpc2FibGVkLCBub3RlIHRoYXQKICAvLyBzb21lIG5vZGUgdmVyc2lvbnMgb25seSBzdXBwb3J0IFNIQS0xLCBvdGhlcnMgYWxsb3cgZGlnZXN0IHRvIGJlIGNoYW5nZWQKICBpZihfbm9kZWpzICYmICFmb3JnZS5kaXNhYmxlTmF0aXZlQ29kZSAmJiBjcnlwdG8ucGJrZGYyICYmCiAgICAobWQgPT09IG51bGwgfHwgdHlwZW9mIG1kICE9PSAnb2JqZWN0JykgJiYKICAgIChjcnlwdG8ucGJrZGYyU3luYy5sZW5ndGggPiA0IHx8ICghbWQgfHwgbWQgPT09ICdzaGExJykpKSB7CiAgICBpZih0eXBlb2YgbWQgIT09ICdzdHJpbmcnKSB7CiAgICAgIC8vIGRlZmF1bHQgcHJmIHRvIFNIQS0xCiAgICAgIG1kID0gJ3NoYTEnOwogICAgfQogICAgcyA9IG5ldyBCdWZmZXIocywgJ2JpbmFyeScpOwogICAgaWYoIWNhbGxiYWNrKSB7CiAgICAgIGlmKGNyeXB0by5wYmtkZjJTeW5jLmxlbmd0aCA9PT0gNCkgewogICAgICAgIHJldHVybiBjcnlwdG8ucGJrZGYyU3luYyhwLCBzLCBjLCBka0xlbikudG9TdHJpbmcoJ2JpbmFyeScpOwogICAgICB9CiAgICAgIHJldHVybiBjcnlwdG8ucGJrZGYyU3luYyhwLCBzLCBjLCBka0xlbiwgbWQpLnRvU3RyaW5nKCdiaW5hcnknKTsKICAgIH0KICAgIGlmKGNyeXB0by5wYmtkZjJTeW5jLmxlbmd0aCA9PT0gNCkgewogICAgICByZXR1cm4gY3J5cHRvLnBia2RmMihwLCBzLCBjLCBka0xlbiwgZnVuY3Rpb24oZXJyLCBrZXkpIHsKICAgICAgICBpZihlcnIpIHsKICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICAgIH0KICAgICAgICBjYWxsYmFjayhudWxsLCBrZXkudG9TdHJpbmcoJ2JpbmFyeScpKTsKICAgICAgfSk7CiAgICB9CiAgICByZXR1cm4gY3J5cHRvLnBia2RmMihwLCBzLCBjLCBka0xlbiwgbWQsIGZ1bmN0aW9uKGVyciwga2V5KSB7CiAgICAgIGlmKGVycikgewogICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICB9CiAgICAgIGNhbGxiYWNrKG51bGwsIGtleS50b1N0cmluZygnYmluYXJ5JykpOwogICAgfSk7CiAgfQoKICBpZih0eXBlb2YgbWQgPT09ICd1bmRlZmluZWQnIHx8IG1kID09PSBudWxsKSB7CiAgICAvLyBkZWZhdWx0IHByZiB0byBTSEEtMQogICAgbWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIH0KICBpZih0eXBlb2YgbWQgPT09ICdzdHJpbmcnKSB7CiAgICBpZighKG1kIGluIGZvcmdlLm1kLmFsZ29yaXRobXMpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBoYXNoIGFsZ29yaXRobTogJyArIG1kKTsKICAgIH0KICAgIG1kID0gZm9yZ2UubWRbbWRdLmNyZWF0ZSgpOwogIH0KCiAgdmFyIGhMZW4gPSBtZC5kaWdlc3RMZW5ndGg7CgogIC8qIDEuIElmIGRrTGVuID4gKDJeMzIgLSAxKSAqIGhMZW4sIG91dHB1dCAiZGVyaXZlZCBrZXkgdG9vIGxvbmciIGFuZAogICAgc3RvcC4gKi8KICBpZihka0xlbiA+ICgweEZGRkZGRkZGICogaExlbikpIHsKICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ0Rlcml2ZWQga2V5IGlzIHRvbyBsb25nLicpOwogICAgaWYoY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICB9CiAgICB0aHJvdyBlcnI7CiAgfQoKICAvKiAyLiBMZXQgbGVuIGJlIHRoZSBudW1iZXIgb2YgaExlbi1vY3RldCBibG9ja3MgaW4gdGhlIGRlcml2ZWQga2V5LAogICAgcm91bmRpbmcgdXAsIGFuZCBsZXQgciBiZSB0aGUgbnVtYmVyIG9mIG9jdGV0cyBpbiB0aGUgbGFzdAogICAgYmxvY2s6CgogICAgbGVuID0gQ0VJTChka0xlbiAvIGhMZW4pLAogICAgciA9IGRrTGVuIC0gKGxlbiAtIDEpICogaExlbi4gKi8KICB2YXIgbGVuID0gTWF0aC5jZWlsKGRrTGVuIC8gaExlbik7CiAgdmFyIHIgPSBka0xlbiAtIChsZW4gLSAxKSAqIGhMZW47CgogIC8qIDMuIEZvciBlYWNoIGJsb2NrIG9mIHRoZSBkZXJpdmVkIGtleSBhcHBseSB0aGUgZnVuY3Rpb24gRiBkZWZpbmVkCiAgICBiZWxvdyB0byB0aGUgcGFzc3dvcmQgUCwgdGhlIHNhbHQgUywgdGhlIGl0ZXJhdGlvbiBjb3VudCBjLCBhbmQKICAgIHRoZSBibG9jayBpbmRleCB0byBjb21wdXRlIHRoZSBibG9jazoKCiAgICBUXzEgPSBGKFAsIFMsIGMsIDEpLAogICAgVF8yID0gRihQLCBTLCBjLCAyKSwKICAgIC4uLgogICAgVF9sZW4gPSBGKFAsIFMsIGMsIGxlbiksCgogICAgd2hlcmUgdGhlIGZ1bmN0aW9uIEYgaXMgZGVmaW5lZCBhcyB0aGUgZXhjbHVzaXZlLW9yIHN1bSBvZiB0aGUKICAgIGZpcnN0IGMgaXRlcmF0ZXMgb2YgdGhlIHVuZGVybHlpbmcgcHNldWRvcmFuZG9tIGZ1bmN0aW9uIFBSRgogICAgYXBwbGllZCB0byB0aGUgcGFzc3dvcmQgUCBhbmQgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHNhbHQgUwogICAgYW5kIHRoZSBibG9jayBpbmRleCBpOgoKICAgIEYoUCwgUywgYywgaSkgPSB1XzEgWE9SIHVfMiBYT1IgLi4uIFhPUiB1X2MKCiAgICB3aGVyZQoKICAgIHVfMSA9IFBSRihQLCBTIHx8IElOVChpKSksCiAgICB1XzIgPSBQUkYoUCwgdV8xKSwKICAgIC4uLgogICAgdV9jID0gUFJGKFAsIHVfe2MtMX0pLgoKICAgIEhlcmUsIElOVChpKSBpcyBhIGZvdXItb2N0ZXQgZW5jb2Rpbmcgb2YgdGhlIGludGVnZXIgaSwgbW9zdAogICAgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QuICovCiAgdmFyIHByZiA9IGZvcmdlLmhtYWMuY3JlYXRlKCk7CiAgcHJmLnN0YXJ0KG1kLCBwKTsKICB2YXIgZGsgPSAnJzsKICB2YXIgeG9yLCB1X2MsIHVfYzE7CgogIC8vIHN5bmMgdmVyc2lvbgogIGlmKCFjYWxsYmFjaykgewogICAgZm9yKHZhciBpID0gMTsgaSA8PSBsZW47ICsraSkgewogICAgICAvLyBQUkYoUCwgUyB8fCBJTlQoaSkpIChmaXJzdCBpdGVyYXRpb24pCiAgICAgIHByZi5zdGFydChudWxsLCBudWxsKTsKICAgICAgcHJmLnVwZGF0ZShzKTsKICAgICAgcHJmLnVwZGF0ZShmb3JnZS51dGlsLmludDMyVG9CeXRlcyhpKSk7CiAgICAgIHhvciA9IHVfYzEgPSBwcmYuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKCiAgICAgIC8vIFBSRihQLCB1X3tjLTF9KSAob3RoZXIgaXRlcmF0aW9ucykKICAgICAgZm9yKHZhciBqID0gMjsgaiA8PSBjOyArK2opIHsKICAgICAgICBwcmYuc3RhcnQobnVsbCwgbnVsbCk7CiAgICAgICAgcHJmLnVwZGF0ZSh1X2MxKTsKICAgICAgICB1X2MgPSBwcmYuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKICAgICAgICAvLyBGKHAsIHMsIGMsIGkpCiAgICAgICAgeG9yID0gZm9yZ2UudXRpbC54b3JCeXRlcyh4b3IsIHVfYywgaExlbik7CiAgICAgICAgdV9jMSA9IHVfYzsKICAgICAgfQoKICAgICAgLyogNC4gQ29uY2F0ZW5hdGUgdGhlIGJsb2NrcyBhbmQgZXh0cmFjdCB0aGUgZmlyc3QgZGtMZW4gb2N0ZXRzIHRvCiAgICAgICAgcHJvZHVjZSBhIGRlcml2ZWQga2V5IERLOgoKICAgICAgICBESyA9IFRfMSB8fCBUXzIgfHwgIC4uLiAgfHwgVF9sZW48MC4uci0xPiAqLwogICAgICBkayArPSAoaSA8IGxlbikgPyB4b3IgOiB4b3Iuc3Vic3RyKDAsIHIpOwogICAgfQogICAgLyogNS4gT3V0cHV0IHRoZSBkZXJpdmVkIGtleSBESy4gKi8KICAgIHJldHVybiBkazsKICB9CgogIC8vIGFzeW5jIHZlcnNpb24KICB2YXIgaSA9IDEsIGo7CiAgZnVuY3Rpb24gb3V0ZXIoKSB7CiAgICBpZihpID4gbGVuKSB7CiAgICAgIC8vIGRvbmUKICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGRrKTsKICAgIH0KCiAgICAvLyBQUkYoUCwgUyB8fCBJTlQoaSkpIChmaXJzdCBpdGVyYXRpb24pCiAgICBwcmYuc3RhcnQobnVsbCwgbnVsbCk7CiAgICBwcmYudXBkYXRlKHMpOwogICAgcHJmLnVwZGF0ZShmb3JnZS51dGlsLmludDMyVG9CeXRlcyhpKSk7CiAgICB4b3IgPSB1X2MxID0gcHJmLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CgogICAgLy8gUFJGKFAsIHVfe2MtMX0pIChvdGhlciBpdGVyYXRpb25zKQogICAgaiA9IDI7CiAgICBpbm5lcigpOwogIH0KCiAgZnVuY3Rpb24gaW5uZXIoKSB7CiAgICBpZihqIDw9IGMpIHsKICAgICAgcHJmLnN0YXJ0KG51bGwsIG51bGwpOwogICAgICBwcmYudXBkYXRlKHVfYzEpOwogICAgICB1X2MgPSBwcmYuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKICAgICAgLy8gRihwLCBzLCBjLCBpKQogICAgICB4b3IgPSBmb3JnZS51dGlsLnhvckJ5dGVzKHhvciwgdV9jLCBoTGVuKTsKICAgICAgdV9jMSA9IHVfYzsKICAgICAgKytqOwogICAgICByZXR1cm4gZm9yZ2UudXRpbC5zZXRJbW1lZGlhdGUoaW5uZXIpOwogICAgfQoKICAgIC8qIDQuIENvbmNhdGVuYXRlIHRoZSBibG9ja3MgYW5kIGV4dHJhY3QgdGhlIGZpcnN0IGRrTGVuIG9jdGV0cyB0bwogICAgICBwcm9kdWNlIGEgZGVyaXZlZCBrZXkgREs6CgogICAgICBESyA9IFRfMSB8fCBUXzIgfHwgIC4uLiAgfHwgVF9sZW48MC4uci0xPiAqLwogICAgZGsgKz0gKGkgPCBsZW4pID8geG9yIDogeG9yLnN1YnN0cigwLCByKTsKCiAgICArK2k7CiAgICBvdXRlcigpOwogIH0KCiAgb3V0ZXIoKTsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3Bia2RmMic7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wYmtkZjInLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9obWFjJywgJy4vbWQnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEEgamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBhIGNyeXB0b2dyYXBoaWNhbGx5LXNlY3VyZQogKiBQc2V1ZG8gUmFuZG9tIE51bWJlciBHZW5lcmF0b3IgKFBSTkcpLiBUaGUgRm9ydHVuYSBhbGdvcml0aG0gaXMgZm9sbG93ZWQKICogaGVyZSB0aG91Z2ggdGhlIHVzZSBvZiBTSEEtMjU2IGlzIG5vdCBlbmZvcmNlZDsgd2hlbiBnZW5lcmF0aW5nIGFuCiAqIGEgUFJORyBjb250ZXh0LCB0aGUgaGFzaGluZyBhbGdvcml0aG0gYW5kIGJsb2NrIGNpcGhlciB1c2VkIGZvcgogKiB0aGUgZ2VuZXJhdG9yIGFyZSBzcGVjaWZpZWQgdmlhIGEgcGx1Z2luLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCnZhciBfbm9kZWpzID0gKAogIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSk7CnZhciBfY3J5cHRvID0gbnVsbDsKaWYoIWZvcmdlLmRpc2FibGVOYXRpdmVDb2RlICYmIF9ub2RlanMgJiYgIXByb2Nlc3MudmVyc2lvbnNbJ25vZGUtd2Via2l0J10pIHsKICBfY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7Cn0KCi8qIFBSTkcgQVBJICovCnZhciBwcm5nID0gZm9yZ2UucHJuZyA9IGZvcmdlLnBybmcgfHwge307CgovKioKICogQ3JlYXRlcyBhIG5ldyBQUk5HIGNvbnRleHQuCiAqCiAqIEEgUFJORyBwbHVnaW4gbXVzdCBiZSBwYXNzZWQgaW4gdGhhdCB3aWxsIHByb3ZpZGU6CiAqCiAqIDEuIEEgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUga2V5IGFuZCBzZWVkIG9mIGEgUFJORyBjb250ZXh0LiBJdAogKiAgIHdpbGwgYmUgZ2l2ZW4gYSAxNiBieXRlIGtleSBhbmQgYSAxNiBieXRlIHNlZWQuIEFueSBrZXkgZXhwYW5zaW9uCiAqICAgb3IgdHJhbnNmb3JtYXRpb24gb2YgdGhlIHNlZWQgZnJvbSBhIGJ5dGUgc3RyaW5nIGludG8gYW4gYXJyYXkgb2YKICogICBpbnRlZ2VycyAob3Igc2ltaWxhcikgc2hvdWxkIGJlIHBlcmZvcm1lZC4KICogMi4gVGhlIGNyeXB0b2dyYXBoaWMgZnVuY3Rpb24gdXNlZCBieSB0aGUgZ2VuZXJhdG9yLiBJdCB0YWtlcyBhIGtleSBhbmQKICogICBhIHNlZWQuCiAqIDMuIEEgc2VlZCBpbmNyZW1lbnQgZnVuY3Rpb24uIEl0IHRha2VzIHRoZSBzZWVkIGFuZCByZXR1cm5zIHNlZWQgKyAxLgogKiA0LiBBbiBhcGkgdG8gY3JlYXRlIGEgbWVzc2FnZSBkaWdlc3QuCiAqCiAqIEZvciBhbiBleGFtcGxlLCBzZWUgcmFuZG9tLmpzLgogKgogKiBAcGFyYW0gcGx1Z2luIHRoZSBQUk5HIHBsdWdpbiB0byB1c2UuCiAqLwpwcm5nLmNyZWF0ZSA9IGZ1bmN0aW9uKHBsdWdpbikgewogIHZhciBjdHggPSB7CiAgICBwbHVnaW46IHBsdWdpbiwKICAgIGtleTogbnVsbCwKICAgIHNlZWQ6IG51bGwsCiAgICB0aW1lOiBudWxsLAogICAgLy8gbnVtYmVyIG9mIHJlc2VlZHMgc28gZmFyCiAgICByZXNlZWRzOiAwLAogICAgLy8gYW1vdW50IG9mIGRhdGEgZ2VuZXJhdGVkIHNvIGZhcgogICAgZ2VuZXJhdGVkOiAwCiAgfTsKCiAgLy8gY3JlYXRlIDMyIGVudHJvcHkgcG9vbHMgKGVhY2ggaXMgYSBtZXNzYWdlIGRpZ2VzdCkKICB2YXIgbWQgPSBwbHVnaW4ubWQ7CiAgdmFyIHBvb2xzID0gbmV3IEFycmF5KDMyKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgMzI7ICsraSkgewogICAgcG9vbHNbaV0gPSBtZC5jcmVhdGUoKTsKICB9CiAgY3R4LnBvb2xzID0gcG9vbHM7CgogIC8vIGVudHJvcHkgcG9vbHMgYXJlIHdyaXR0ZW4gdG8gY3ljbGljYWxseSwgc3RhcnRpbmcgYXQgaW5kZXggMAogIGN0eC5wb29sID0gMDsKCiAgLyoqCiAgICogR2VuZXJhdGVzIHJhbmRvbSBieXRlcy4gVGhlIGJ5dGVzIG1heSBiZSBnZW5lcmF0ZWQgc3luY2hyb25vdXNseSBvcgogICAqIGFzeW5jaHJvbm91c2x5LiBXZWIgd29ya2VycyBtdXN0IHVzZSB0aGUgYXN5bmNocm9ub3VzIGludGVyZmFjZSBvcgogICAqIGVsc2UgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZC4KICAgKgogICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZW5lcmF0ZS4KICAgKiBAcGFyYW0gW2NhbGxiYWNrKGVyciwgYnl0ZXMpXSBjYWxsZWQgb25jZSB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlcy4KICAgKgogICAqIEByZXR1cm4gY291bnQgcmFuZG9tIGJ5dGVzIGFzIGEgc3RyaW5nLgogICAqLwogIGN0eC5nZW5lcmF0ZSA9IGZ1bmN0aW9uKGNvdW50LCBjYWxsYmFjaykgewogICAgLy8gZG8gc3luY2hyb25vdXNseQogICAgaWYoIWNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBjdHguZ2VuZXJhdGVTeW5jKGNvdW50KTsKICAgIH0KCiAgICAvLyBzaW1wbGUgZ2VuZXJhdG9yIHVzaW5nIGNvdW50ZXItYmFzZWQgQ0JDCiAgICB2YXIgY2lwaGVyID0gY3R4LnBsdWdpbi5jaXBoZXI7CiAgICB2YXIgaW5jcmVtZW50ID0gY3R4LnBsdWdpbi5pbmNyZW1lbnQ7CiAgICB2YXIgZm9ybWF0S2V5ID0gY3R4LnBsdWdpbi5mb3JtYXRLZXk7CiAgICB2YXIgZm9ybWF0U2VlZCA9IGN0eC5wbHVnaW4uZm9ybWF0U2VlZDsKICAgIHZhciBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKCiAgICAvLyByZXNldCBrZXkgZm9yIGV2ZXJ5IHJlcXVlc3QKICAgIGN0eC5rZXkgPSBudWxsOwoKICAgIGdlbmVyYXRlKCk7CgogICAgZnVuY3Rpb24gZ2VuZXJhdGUoZXJyKSB7CiAgICAgIGlmKGVycikgewogICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICB9CgogICAgICAvLyBzdWZmaWNpZW50IGJ5dGVzIGdlbmVyYXRlZAogICAgICBpZihiLmxlbmd0aCgpID49IGNvdW50KSB7CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGIuZ2V0Qnl0ZXMoY291bnQpKTsKICAgICAgfQoKICAgICAgLy8gaWYgYW1vdW50IG9mIGRhdGEgZ2VuZXJhdGVkIGlzIGdyZWF0ZXIgdGhhbiAxIE1pQiwgdHJpZ2dlciByZXNlZWQKICAgICAgaWYoY3R4LmdlbmVyYXRlZCA+IDB4ZmZmZmYpIHsKICAgICAgICBjdHgua2V5ID0gbnVsbDsKICAgICAgfQoKICAgICAgaWYoY3R4LmtleSA9PT0gbnVsbCkgewogICAgICAgIC8vIHByZXZlbnQgc3RhY2sgb3ZlcmZsb3cKICAgICAgICByZXR1cm4gZm9yZ2UudXRpbC5uZXh0VGljayhmdW5jdGlvbigpIHsKICAgICAgICAgIF9yZXNlZWQoZ2VuZXJhdGUpOwogICAgICAgIH0pOwogICAgICB9CgogICAgICAvLyBnZW5lcmF0ZSB0aGUgcmFuZG9tIGJ5dGVzCiAgICAgIHZhciBieXRlcyA9IGNpcGhlcihjdHgua2V5LCBjdHguc2VlZCk7CiAgICAgIGN0eC5nZW5lcmF0ZWQgKz0gYnl0ZXMubGVuZ3RoOwogICAgICBiLnB1dEJ5dGVzKGJ5dGVzKTsKCiAgICAgIC8vIGdlbmVyYXRlIGJ5dGVzIGZvciBhIG5ldyBrZXkgYW5kIHNlZWQKICAgICAgY3R4LmtleSA9IGZvcm1hdEtleShjaXBoZXIoY3R4LmtleSwgaW5jcmVtZW50KGN0eC5zZWVkKSkpOwogICAgICBjdHguc2VlZCA9IGZvcm1hdFNlZWQoY2lwaGVyKGN0eC5rZXksIGN0eC5zZWVkKSk7CgogICAgICBmb3JnZS51dGlsLnNldEltbWVkaWF0ZShnZW5lcmF0ZSk7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogR2VuZXJhdGVzIHJhbmRvbSBieXRlcyBzeW5jaHJvbm91c2x5LgogICAqCiAgICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHRvIGdlbmVyYXRlLgogICAqCiAgICogQHJldHVybiBjb3VudCByYW5kb20gYnl0ZXMgYXMgYSBzdHJpbmcuCiAgICovCiAgY3R4LmdlbmVyYXRlU3luYyA9IGZ1bmN0aW9uKGNvdW50KSB7CiAgICAvLyBzaW1wbGUgZ2VuZXJhdG9yIHVzaW5nIGNvdW50ZXItYmFzZWQgQ0JDCiAgICB2YXIgY2lwaGVyID0gY3R4LnBsdWdpbi5jaXBoZXI7CiAgICB2YXIgaW5jcmVtZW50ID0gY3R4LnBsdWdpbi5pbmNyZW1lbnQ7CiAgICB2YXIgZm9ybWF0S2V5ID0gY3R4LnBsdWdpbi5mb3JtYXRLZXk7CiAgICB2YXIgZm9ybWF0U2VlZCA9IGN0eC5wbHVnaW4uZm9ybWF0U2VlZDsKCiAgICAvLyByZXNldCBrZXkgZm9yIGV2ZXJ5IHJlcXVlc3QKICAgIGN0eC5rZXkgPSBudWxsOwoKICAgIHZhciBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHdoaWxlKGIubGVuZ3RoKCkgPCBjb3VudCkgewogICAgICAvLyBpZiBhbW91bnQgb2YgZGF0YSBnZW5lcmF0ZWQgaXMgZ3JlYXRlciB0aGFuIDEgTWlCLCB0cmlnZ2VyIHJlc2VlZAogICAgICBpZihjdHguZ2VuZXJhdGVkID4gMHhmZmZmZikgewogICAgICAgIGN0eC5rZXkgPSBudWxsOwogICAgICB9CgogICAgICBpZihjdHgua2V5ID09PSBudWxsKSB7CiAgICAgICAgX3Jlc2VlZFN5bmMoKTsKICAgICAgfQoKICAgICAgLy8gZ2VuZXJhdGUgdGhlIHJhbmRvbSBieXRlcwogICAgICB2YXIgYnl0ZXMgPSBjaXBoZXIoY3R4LmtleSwgY3R4LnNlZWQpOwogICAgICBjdHguZ2VuZXJhdGVkICs9IGJ5dGVzLmxlbmd0aDsKICAgICAgYi5wdXRCeXRlcyhieXRlcyk7CgogICAgICAvLyBnZW5lcmF0ZSBieXRlcyBmb3IgYSBuZXcga2V5IGFuZCBzZWVkCiAgICAgIGN0eC5rZXkgPSBmb3JtYXRLZXkoY2lwaGVyKGN0eC5rZXksIGluY3JlbWVudChjdHguc2VlZCkpKTsKICAgICAgY3R4LnNlZWQgPSBmb3JtYXRTZWVkKGNpcGhlcihjdHgua2V5LCBjdHguc2VlZCkpOwogICAgfQoKICAgIHJldHVybiBiLmdldEJ5dGVzKGNvdW50KTsKICB9OwoKICAvKioKICAgKiBQcml2YXRlIGZ1bmN0aW9uIHRoYXQgYXN5bmNocm9ub3VzbHkgcmVzZWVkcyBhIGdlbmVyYXRvci4KICAgKgogICAqIEBwYXJhbSBjYWxsYmFjayhlcnIpIGNhbGxlZCBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogICAqLwogIGZ1bmN0aW9uIF9yZXNlZWQoY2FsbGJhY2spIHsKICAgIGlmKGN0eC5wb29sc1swXS5tZXNzYWdlTGVuZ3RoID49IDMyKSB7CiAgICAgIF9zZWVkKCk7CiAgICAgIHJldHVybiBjYWxsYmFjaygpOwogICAgfQogICAgLy8gbm90IGVub3VnaCBzZWVkIGRhdGEuLi4KICAgIHZhciBuZWVkZWQgPSAoMzIgLSBjdHgucG9vbHNbMF0ubWVzc2FnZUxlbmd0aCkgPDwgNTsKICAgIGN0eC5zZWVkRmlsZShuZWVkZWQsIGZ1bmN0aW9uKGVyciwgYnl0ZXMpIHsKICAgICAgaWYoZXJyKSB7CiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICAgIH0KICAgICAgY3R4LmNvbGxlY3QoYnl0ZXMpOwogICAgICBfc2VlZCgpOwogICAgICBjYWxsYmFjaygpOwogICAgfSk7CiAgfQoKICAvKioKICAgKiBQcml2YXRlIGZ1bmN0aW9uIHRoYXQgc3luY2hyb25vdXNseSByZXNlZWRzIGEgZ2VuZXJhdG9yLgogICAqLwogIGZ1bmN0aW9uIF9yZXNlZWRTeW5jKCkgewogICAgaWYoY3R4LnBvb2xzWzBdLm1lc3NhZ2VMZW5ndGggPj0gMzIpIHsKICAgICAgcmV0dXJuIF9zZWVkKCk7CiAgICB9CiAgICAvLyBub3QgZW5vdWdoIHNlZWQgZGF0YS4uLgogICAgdmFyIG5lZWRlZCA9ICgzMiAtIGN0eC5wb29sc1swXS5tZXNzYWdlTGVuZ3RoKSA8PCA1OwogICAgY3R4LmNvbGxlY3QoY3R4LnNlZWRGaWxlU3luYyhuZWVkZWQpKTsKICAgIF9zZWVkKCk7CiAgfQoKICAvKioKICAgKiBQcml2YXRlIGZ1bmN0aW9uIHRoYXQgc2VlZHMgYSBnZW5lcmF0b3Igb25jZSBlbm91Z2ggYnl0ZXMgYXJlIGF2YWlsYWJsZS4KICAgKi8KICBmdW5jdGlvbiBfc2VlZCgpIHsKICAgIC8vIGNyZWF0ZSBhIHBsdWdpbi1iYXNlZCBtZXNzYWdlIGRpZ2VzdAogICAgdmFyIG1kID0gY3R4LnBsdWdpbi5tZC5jcmVhdGUoKTsKCiAgICAvLyBkaWdlc3QgcG9vbCAwJ3MgZW50cm9weSBhbmQgcmVzdGFydCBpdAogICAgbWQudXBkYXRlKGN0eC5wb29sc1swXS5kaWdlc3QoKS5nZXRCeXRlcygpKTsKICAgIGN0eC5wb29sc1swXS5zdGFydCgpOwoKICAgIC8vIGRpZ2VzdCB0aGUgZW50cm9weSBvZiBvdGhlciBwb29scyB3aG9zZSBpbmRleCBrIG1lZXQgdGhlCiAgICAvLyBjb25kaXRpb24gJzJeayBtb2QgbiA9PSAwJyB3aGVyZSBuIGlzIHRoZSBudW1iZXIgb2YgcmVzZWVkcwogICAgdmFyIGsgPSAxOwogICAgZm9yKHZhciBpID0gMTsgaSA8IDMyOyArK2kpIHsKICAgICAgLy8gcHJldmVudCBzaWduZWQgbnVtYmVycyBmcm9tIGJlaW5nIHVzZWQKICAgICAgayA9IChrID09PSAzMSkgPyAweDgwMDAwMDAwIDogKGsgPDwgMik7CiAgICAgIGlmKGsgJSBjdHgucmVzZWVkcyA9PT0gMCkgewogICAgICAgIG1kLnVwZGF0ZShjdHgucG9vbHNbaV0uZGlnZXN0KCkuZ2V0Qnl0ZXMoKSk7CiAgICAgICAgY3R4LnBvb2xzW2ldLnN0YXJ0KCk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBnZXQgZGlnZXN0IGZvciBrZXkgYnl0ZXMgYW5kIGl0ZXJhdGUgYWdhaW4gZm9yIHNlZWQgYnl0ZXMKICAgIHZhciBrZXlCeXRlcyA9IG1kLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CiAgICBtZC5zdGFydCgpOwogICAgbWQudXBkYXRlKGtleUJ5dGVzKTsKICAgIHZhciBzZWVkQnl0ZXMgPSBtZC5kaWdlc3QoKS5nZXRCeXRlcygpOwoKICAgIC8vIHVwZGF0ZQogICAgY3R4LmtleSA9IGN0eC5wbHVnaW4uZm9ybWF0S2V5KGtleUJ5dGVzKTsKICAgIGN0eC5zZWVkID0gY3R4LnBsdWdpbi5mb3JtYXRTZWVkKHNlZWRCeXRlcyk7CiAgICBjdHgucmVzZWVkcyA9IChjdHgucmVzZWVkcyA9PT0gMHhmZmZmZmZmZikgPyAwIDogY3R4LnJlc2VlZHMgKyAxOwogICAgY3R4LmdlbmVyYXRlZCA9IDA7CiAgfQoKICAvKioKICAgKiBUaGUgYnVpbHQtaW4gZGVmYXVsdCBzZWVkRmlsZS4gVGhpcyBzZWVkRmlsZSBpcyB1c2VkIHdoZW4gZW50cm9weQogICAqIGlzIG5lZWRlZCBpbW1lZGlhdGVseS4KICAgKgogICAqIEBwYXJhbSBuZWVkZWQgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGFyZSBuZWVkZWQuCiAgICoKICAgKiBAcmV0dXJuIHRoZSByYW5kb20gYnl0ZXMuCiAgICovCiAgZnVuY3Rpb24gZGVmYXVsdFNlZWRGaWxlKG5lZWRlZCkgewogICAgLy8gdXNlIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIHN0cm9uZyBzb3VyY2Ugb2YgZW50cm9weSBpZiBhdmFpbGFibGUKICAgIHZhciBnZXRSYW5kb21WYWx1ZXMgPSBudWxsOwogICAgaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIF9jcnlwdG8gPSB3aW5kb3cuY3J5cHRvIHx8IHdpbmRvdy5tc0NyeXB0bzsKICAgICAgaWYoX2NyeXB0byAmJiBfY3J5cHRvLmdldFJhbmRvbVZhbHVlcykgewogICAgICAgIGdldFJhbmRvbVZhbHVlcyA9IGZ1bmN0aW9uKGFycikgewogICAgICAgICAgcmV0dXJuIF9jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7CiAgICAgICAgfTsKICAgICAgfQogICAgfQoKICAgIHZhciBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGlmKGdldFJhbmRvbVZhbHVlcykgewogICAgICB3aGlsZShiLmxlbmd0aCgpIDwgbmVlZGVkKSB7CiAgICAgICAgLy8gbWF4IGJ5dGUgbGVuZ3RoIGlzIDY1NTM2IGJlZm9yZSBRdW90YUV4Y2VlZGVkRXJyb3IgaXMgdGhyb3duCiAgICAgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvV2ViQ3J5cHRvQVBJLyNSYW5kb21Tb3VyY2UtbWV0aG9kLWdldFJhbmRvbVZhbHVlcwogICAgICAgIHZhciBjb3VudCA9IE1hdGgubWF4KDEsIE1hdGgubWluKG5lZWRlZCAtIGIubGVuZ3RoKCksIDY1NTM2KSAvIDQpOwogICAgICAgIHZhciBlbnRyb3B5ID0gbmV3IFVpbnQzMkFycmF5KE1hdGguZmxvb3IoY291bnQpKTsKICAgICAgICB0cnkgewogICAgICAgICAgZ2V0UmFuZG9tVmFsdWVzKGVudHJvcHkpOwogICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGVudHJvcHkubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgYi5wdXRJbnQzMihlbnRyb3B5W2ldKTsKICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgIC8qIG9ubHkgaWdub3JlIFF1b3RhRXhjZWVkZWRFcnJvciAqLwogICAgICAgICAgaWYoISh0eXBlb2YgUXVvdGFFeGNlZWRlZEVycm9yICE9PSAndW5kZWZpbmVkJyAmJgogICAgICAgICAgICBlIGluc3RhbmNlb2YgUXVvdGFFeGNlZWRlZEVycm9yKSkgewogICAgICAgICAgICB0aHJvdyBlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIGJlIHNhZCBhbmQgYWRkIHNvbWUgd2VhayByYW5kb20gZGF0YQogICAgaWYoYi5sZW5ndGgoKSA8IG5lZWRlZCkgewogICAgICAvKiBEcmF3cyBmcm9tIFBhcmstTWlsbGVyICJtaW5pbWFsIHN0YW5kYXJkIiAzMSBiaXQgUFJORywKICAgICAgaW1wbGVtZW50ZWQgd2l0aCBEYXZpZCBHLiBDYXJ0YSdzIG9wdGltaXphdGlvbjogd2l0aCAzMiBiaXQgbWF0aAogICAgICBhbmQgd2l0aG91dCBkaXZpc2lvbiAoUHVibGljIERvbWFpbikuICovCiAgICAgIHZhciBoaSwgbG8sIG5leHQ7CiAgICAgIHZhciBzZWVkID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHgwMTAwMDApOwogICAgICB3aGlsZShiLmxlbmd0aCgpIDwgbmVlZGVkKSB7CiAgICAgICAgbG8gPSAxNjgwNyAqIChzZWVkICYgMHhGRkZGKTsKICAgICAgICBoaSA9IDE2ODA3ICogKHNlZWQgPj4gMTYpOwogICAgICAgIGxvICs9IChoaSAmIDB4N0ZGRikgPDwgMTY7CiAgICAgICAgbG8gKz0gaGkgPj4gMTU7CiAgICAgICAgbG8gPSAobG8gJiAweDdGRkZGRkZGKSArIChsbyA+PiAzMSk7CiAgICAgICAgc2VlZCA9IGxvICYgMHhGRkZGRkZGRjsKCiAgICAgICAgLy8gY29uc3VtZSBsb3dlciAzIGJ5dGVzIG9mIHNlZWQKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgMzsgKytpKSB7CiAgICAgICAgICAvLyB0aHJvdyBpbiBtb3JlIHBzZXVkbyByYW5kb20KICAgICAgICAgIG5leHQgPSBzZWVkID4+PiAoaSA8PCAzKTsKICAgICAgICAgIG5leHQgXj0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMHgwMTAwKTsKICAgICAgICAgIGIucHV0Qnl0ZShTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHQgJiAweEZGKSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIGIuZ2V0Qnl0ZXMobmVlZGVkKTsKICB9CiAgLy8gaW5pdGlhbGl6ZSBzZWVkIGZpbGUgQVBJcwogIGlmKF9jcnlwdG8pIHsKICAgIC8vIHVzZSBub2RlanMgYXN5bmMgQVBJCiAgICBjdHguc2VlZEZpbGUgPSBmdW5jdGlvbihuZWVkZWQsIGNhbGxiYWNrKSB7CiAgICAgIF9jcnlwdG8ucmFuZG9tQnl0ZXMobmVlZGVkLCBmdW5jdGlvbihlcnIsIGJ5dGVzKSB7CiAgICAgICAgaWYoZXJyKSB7CiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTsKICAgICAgICB9CiAgICAgICAgY2FsbGJhY2sobnVsbCwgYnl0ZXMudG9TdHJpbmcoKSk7CiAgICAgIH0pOwogICAgfTsKICAgIC8vIHVzZSBub2RlanMgc3luYyBBUEkKICAgIGN0eC5zZWVkRmlsZVN5bmMgPSBmdW5jdGlvbihuZWVkZWQpIHsKICAgICAgcmV0dXJuIF9jcnlwdG8ucmFuZG9tQnl0ZXMobmVlZGVkKS50b1N0cmluZygpOwogICAgfTsKICB9IGVsc2UgewogICAgY3R4LnNlZWRGaWxlID0gZnVuY3Rpb24obmVlZGVkLCBjYWxsYmFjaykgewogICAgICB0cnkgewogICAgICAgIGNhbGxiYWNrKG51bGwsIGRlZmF1bHRTZWVkRmlsZShuZWVkZWQpKTsKICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgY2FsbGJhY2soZSk7CiAgICAgIH0KICAgIH07CiAgICBjdHguc2VlZEZpbGVTeW5jID0gZGVmYXVsdFNlZWRGaWxlOwogIH0KCiAgLyoqCiAgICogQWRkcyBlbnRyb3B5IHRvIGEgcHJuZyBjdHgncyBhY2N1bXVsYXRvci4KICAgKgogICAqIEBwYXJhbSBieXRlcyB0aGUgYnl0ZXMgb2YgZW50cm9weSBhcyBhIHN0cmluZy4KICAgKi8KICBjdHguY29sbGVjdCA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgICAvLyBpdGVyYXRlIG92ZXIgcG9vbHMgZGlzdHJpYnV0aW5nIGVudHJvcHkgY3ljbGljYWxseQogICAgdmFyIGNvdW50ID0gYnl0ZXMubGVuZ3RoOwogICAgZm9yKHZhciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgY3R4LnBvb2xzW2N0eC5wb29sXS51cGRhdGUoYnl0ZXMuc3Vic3RyKGksIDEpKTsKICAgICAgY3R4LnBvb2wgPSAoY3R4LnBvb2wgPT09IDMxKSA/IDAgOiBjdHgucG9vbCArIDE7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogQ29sbGVjdHMgYW4gaW50ZWdlciBvZiBuIGJpdHMuCiAgICoKICAgKiBAcGFyYW0gaSB0aGUgaW50ZWdlciBlbnRyb3B5LgogICAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgaW50ZWdlci4KICAgKi8KICBjdHguY29sbGVjdEludCA9IGZ1bmN0aW9uKGksIG4pIHsKICAgIHZhciBieXRlcyA9ICcnOwogICAgZm9yKHZhciB4ID0gMDsgeCA8IG47IHggKz0gOCkgewogICAgICBieXRlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChpID4+IHgpICYgMHhGRik7CiAgICB9CiAgICBjdHguY29sbGVjdChieXRlcyk7CiAgfTsKCiAgLyoqCiAgICogUmVnaXN0ZXJzIGEgV2ViIFdvcmtlciB0byByZWNlaXZlIGltbWVkaWF0ZSBlbnRyb3B5IGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIHVudGlsIFdlYiBXb3JrZXJzIGNhbiBhY2Nlc3MgdGhlIG5hdGl2ZSBjcnlwdG8KICAgKiBBUEkuIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgdHdpY2UgZm9yIGVhY2ggY3JlYXRlZCB3b3JrZXIsIG9uY2UgaW4KICAgKiB0aGUgbWFpbiB0aHJlYWQsIGFuZCBvbmNlIGluIHRoZSB3b3JrZXIgaXRzZWxmLgogICAqCiAgICogQHBhcmFtIHdvcmtlciB0aGUgd29ya2VyIHRvIHJlZ2lzdGVyLgogICAqLwogIGN0eC5yZWdpc3RlcldvcmtlciA9IGZ1bmN0aW9uKHdvcmtlcikgewogICAgLy8gd29ya2VyIHJlY2VpdmVzIHJhbmRvbSBieXRlcwogICAgaWYod29ya2VyID09PSBzZWxmKSB7CiAgICAgIGN0eC5zZWVkRmlsZSA9IGZ1bmN0aW9uKG5lZWRlZCwgY2FsbGJhY2spIHsKICAgICAgICBmdW5jdGlvbiBsaXN0ZW5lcihlKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IGUuZGF0YTsKICAgICAgICAgIGlmKGRhdGEuZm9yZ2UgJiYgZGF0YS5mb3JnZS5wcm5nKSB7CiAgICAgICAgICAgIHNlbGYucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyKTsKICAgICAgICAgICAgY2FsbGJhY2soZGF0YS5mb3JnZS5wcm5nLmVyciwgZGF0YS5mb3JnZS5wcm5nLmJ5dGVzKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIpOwogICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe2ZvcmdlOiB7cHJuZzoge25lZWRlZDogbmVlZGVkfX19KTsKICAgICAgfTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIG1haW4gdGhyZWFkIHNlbmRzIHJhbmRvbSBieXRlcyB1cG9uIHJlcXVlc3QKICAgICAgdmFyIGxpc3RlbmVyID0gZnVuY3Rpb24oZSkgewogICAgICAgIHZhciBkYXRhID0gZS5kYXRhOwogICAgICAgIGlmKGRhdGEuZm9yZ2UgJiYgZGF0YS5mb3JnZS5wcm5nKSB7CiAgICAgICAgICBjdHguc2VlZEZpbGUoZGF0YS5mb3JnZS5wcm5nLm5lZWRlZCwgZnVuY3Rpb24oZXJyLCBieXRlcykgewogICAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe2ZvcmdlOiB7cHJuZzoge2VycjogZXJyLCBieXRlczogYnl0ZXN9fX0pOwogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9OwogICAgICAvLyBUT0RPOiBkbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgZXZlbnQgbGlzdGVuZXIgd2hlbiB0aGUgd29ya2VyIGRpZXM/CiAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgbGlzdGVuZXIpOwogICAgfQogIH07CgogIHJldHVybiBjdHg7Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdwcm5nJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BybmcnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9tZCcsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cgp9KSgpOwoKLyoqCiAqIEFuIEFQSSBmb3IgZ2V0dGluZyBjcnlwdG9ncmFwaGljYWxseS1zZWN1cmUgcmFuZG9tIGJ5dGVzLiBUaGUgYnl0ZXMgYXJlCiAqIGdlbmVyYXRlZCB1c2luZyB0aGUgRm9ydHVuYSBhbGdvcml0aG0gZGV2aXNlZCBieSBCcnVjZSBTY2huZWllciBhbmQKICogTmllbHMgRmVyZ3Vzb24uCiAqCiAqIEdldHRpbmcgc3Ryb25nIHJhbmRvbSBieXRlcyBpcyBub3QgeWV0IGVhc3kgdG8gZG8gaW4gamF2YXNjcmlwdC4gVGhlIG9ubHkKICogdHJ1aXNoIHJhbmRvbSBlbnRyb3B5IHRoYXQgY2FuIGJlIGNvbGxlY3RlZCBpcyBmcm9tIHRoZSBtb3VzZSwga2V5Ym9hcmQsIG9yCiAqIGZyb20gdGltaW5nIHdpdGggcmVzcGVjdCB0byBwYWdlIGxvYWRzLCBldGMuIFRoaXMgZ2VuZXJhdG9yIG1ha2VzIGEgcG9vcgogKiBhdHRlbXB0IGF0IHByb3ZpZGluZyByYW5kb20gYnl0ZXMgd2hlbiB0aG9zZSBzb3VyY2VzIGhhdmVuJ3QgeWV0IHByb3ZpZGVkCiAqIGVub3VnaCBlbnRyb3B5IHRvIGluaXRpYWxseSBzZWVkIG9yIHRvIHJlc2VlZCB0aGUgUFJORy4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBmb3JnZS5yYW5kb20gYWxyZWFkeSBkZWZpbmVkCmlmKGZvcmdlLnJhbmRvbSAmJiBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMpIHsKICByZXR1cm47Cn0KCihmdW5jdGlvbihqUXVlcnkpIHsKCi8vIHRoZSBkZWZhdWx0IHBybmcgcGx1Z2luLCB1c2VzIEFFUy0xMjgKdmFyIHBybmdfYWVzID0ge307CnZhciBfcHJuZ19hZXNfb3V0cHV0ID0gbmV3IEFycmF5KDQpOwp2YXIgX3BybmdfYWVzX2J1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CnBybmdfYWVzLmZvcm1hdEtleSA9IGZ1bmN0aW9uKGtleSkgewogIC8vIGNvbnZlcnQgdGhlIGtleSBpbnRvIDMyLWJpdCBpbnRlZ2VycwogIHZhciB0bXAgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihrZXkpOwogIGtleSA9IG5ldyBBcnJheSg0KTsKICBrZXlbMF0gPSB0bXAuZ2V0SW50MzIoKTsKICBrZXlbMV0gPSB0bXAuZ2V0SW50MzIoKTsKICBrZXlbMl0gPSB0bXAuZ2V0SW50MzIoKTsKICBrZXlbM10gPSB0bXAuZ2V0SW50MzIoKTsKCiAgLy8gcmV0dXJuIHRoZSBleHBhbmRlZCBrZXkKICByZXR1cm4gZm9yZ2UuYWVzLl9leHBhbmRLZXkoa2V5LCBmYWxzZSk7Cn07CnBybmdfYWVzLmZvcm1hdFNlZWQgPSBmdW5jdGlvbihzZWVkKSB7CiAgLy8gY29udmVydCBzZWVkIGludG8gMzItYml0IGludGVnZXJzCiAgdmFyIHRtcCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKHNlZWQpOwogIHNlZWQgPSBuZXcgQXJyYXkoNCk7CiAgc2VlZFswXSA9IHRtcC5nZXRJbnQzMigpOwogIHNlZWRbMV0gPSB0bXAuZ2V0SW50MzIoKTsKICBzZWVkWzJdID0gdG1wLmdldEludDMyKCk7CiAgc2VlZFszXSA9IHRtcC5nZXRJbnQzMigpOwogIHJldHVybiBzZWVkOwp9Owpwcm5nX2Flcy5jaXBoZXIgPSBmdW5jdGlvbihrZXksIHNlZWQpIHsKICBmb3JnZS5hZXMuX3VwZGF0ZUJsb2NrKGtleSwgc2VlZCwgX3BybmdfYWVzX291dHB1dCwgZmFsc2UpOwogIF9wcm5nX2Flc19idWZmZXIucHV0SW50MzIoX3BybmdfYWVzX291dHB1dFswXSk7CiAgX3BybmdfYWVzX2J1ZmZlci5wdXRJbnQzMihfcHJuZ19hZXNfb3V0cHV0WzFdKTsKICBfcHJuZ19hZXNfYnVmZmVyLnB1dEludDMyKF9wcm5nX2Flc19vdXRwdXRbMl0pOwogIF9wcm5nX2Flc19idWZmZXIucHV0SW50MzIoX3BybmdfYWVzX291dHB1dFszXSk7CiAgcmV0dXJuIF9wcm5nX2Flc19idWZmZXIuZ2V0Qnl0ZXMoKTsKfTsKcHJuZ19hZXMuaW5jcmVtZW50ID0gZnVuY3Rpb24oc2VlZCkgewogIC8vIEZJWE1FOiBkbyB3ZSBjYXJlIGFib3V0IGNhcnJ5IG9yIHNpZ25lZCBpc3N1ZXM/CiAgKytzZWVkWzNdOwogIHJldHVybiBzZWVkOwp9Owpwcm5nX2Flcy5tZCA9IGZvcmdlLm1kLnNoYTI1NjsKCi8qKgogKiBDcmVhdGVzIGEgbmV3IFBSTkcuCiAqLwpmdW5jdGlvbiBzcGF3blBybmcoKSB7CiAgdmFyIGN0eCA9IGZvcmdlLnBybmcuY3JlYXRlKHBybmdfYWVzKTsKCiAgLyoqCiAgICogR2V0cyByYW5kb20gYnl0ZXMuIElmIGEgbmF0aXZlIHNlY3VyZSBjcnlwdG8gQVBJIGlzIHVuYXZhaWxhYmxlLCB0aGlzCiAgICogbWV0aG9kIHRyaWVzIHRvIG1ha2UgdGhlIGJ5dGVzIG1vcmUgdW5wcmVkaWN0YWJsZSBieSBkcmF3aW5nIGZyb20gZGF0YSB0aGF0CiAgICogY2FuIGJlIGNvbGxlY3RlZCBmcm9tIHRoZSB1c2VyIG9mIHRoZSBicm93c2VyLCBlZzogbW91c2UgbW92ZW1lbnQuCiAgICoKICAgKiBJZiBhIGNhbGxiYWNrIGlzIGdpdmVuLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBhc3luY2hyb25vdXNseS4KICAgKgogICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZXQuCiAgICogQHBhcmFtIFtjYWxsYmFjayhlcnIsIGJ5dGVzKV0gY2FsbGVkIG9uY2UgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCiAgICoKICAgKiBAcmV0dXJuIHRoZSByYW5kb20gYnl0ZXMgaW4gYSBzdHJpbmcuCiAgICovCiAgY3R4LmdldEJ5dGVzID0gZnVuY3Rpb24oY291bnQsIGNhbGxiYWNrKSB7CiAgICByZXR1cm4gY3R4LmdlbmVyYXRlKGNvdW50LCBjYWxsYmFjayk7CiAgfTsKCiAgLyoqCiAgICogR2V0cyByYW5kb20gYnl0ZXMgYXN5bmNocm9ub3VzbHkuIElmIGEgbmF0aXZlIHNlY3VyZSBjcnlwdG8gQVBJIGlzCiAgICogdW5hdmFpbGFibGUsIHRoaXMgbWV0aG9kIHRyaWVzIHRvIG1ha2UgdGhlIGJ5dGVzIG1vcmUgdW5wcmVkaWN0YWJsZSBieQogICAqIGRyYXdpbmcgZnJvbSBkYXRhIHRoYXQgY2FuIGJlIGNvbGxlY3RlZCBmcm9tIHRoZSB1c2VyIG9mIHRoZSBicm93c2VyLAogICAqIGVnOiBtb3VzZSBtb3ZlbWVudC4KICAgKgogICAqIEBwYXJhbSBjb3VudCB0aGUgbnVtYmVyIG9mIHJhbmRvbSBieXRlcyB0byBnZXQuCiAgICoKICAgKiBAcmV0dXJuIHRoZSByYW5kb20gYnl0ZXMgaW4gYSBzdHJpbmcuCiAgICovCiAgY3R4LmdldEJ5dGVzU3luYyA9IGZ1bmN0aW9uKGNvdW50KSB7CiAgICByZXR1cm4gY3R4LmdlbmVyYXRlKGNvdW50KTsKICB9OwoKICByZXR1cm4gY3R4Owp9CgovLyBjcmVhdGUgZGVmYXVsdCBwcm5nIGNvbnRleHQKdmFyIF9jdHggPSBzcGF3blBybmcoKTsKCi8vIGFkZCBvdGhlciBzb3VyY2VzIG9mIGVudHJvcHkgb25seSBpZiB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBpcyBub3QKLy8gYXZhaWxhYmxlIC0tIG90aGVyd2lzZSB0aGlzIHNvdXJjZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdXNlZCBieSB0aGUgcHJuZwp2YXIgX25vZGVqcyA9ICgKICB0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy52ZXJzaW9ucyAmJiBwcm9jZXNzLnZlcnNpb25zLm5vZGUpOwp2YXIgZ2V0UmFuZG9tVmFsdWVzID0gbnVsbDsKaWYodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsKICB2YXIgX2NyeXB0byA9IHdpbmRvdy5jcnlwdG8gfHwgd2luZG93Lm1zQ3J5cHRvOwogIGlmKF9jcnlwdG8gJiYgX2NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHsKICAgIGdldFJhbmRvbVZhbHVlcyA9IGZ1bmN0aW9uKGFycikgewogICAgICByZXR1cm4gX2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTsKICAgIH07CiAgfQp9CmlmKGZvcmdlLmRpc2FibGVOYXRpdmVDb2RlIHx8ICghX25vZGVqcyAmJiAhZ2V0UmFuZG9tVmFsdWVzKSkgewogIC8vIGlmIHRoaXMgaXMgYSB3ZWIgd29ya2VyLCBkbyBub3QgdXNlIHdlYWsgZW50cm9weSwgaW5zdGVhZCByZWdpc3RlciB0bwogIC8vIHJlY2VpdmUgc3Ryb25nIGVudHJvcHkgYXN5bmNocm9ub3VzbHkgZnJvbSB0aGUgbWFpbiB0aHJlYWQKICBpZih0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCB3aW5kb3cuZG9jdW1lbnQgPT09IHVuZGVmaW5lZCkgewogICAgLy8gRklYTUU6CiAgfQoKICAvLyBnZXQgbG9hZCB0aW1lIGVudHJvcHkKICBfY3R4LmNvbGxlY3RJbnQoK25ldyBEYXRlKCksIDMyKTsKCiAgLy8gYWRkIHNvbWUgZW50cm9weSBmcm9tIG5hdmlnYXRvciBvYmplY3QKICBpZih0eXBlb2YobmF2aWdhdG9yKSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgIHZhciBfbmF2Qnl0ZXMgPSAnJzsKICAgIGZvcih2YXIga2V5IGluIG5hdmlnYXRvcikgewogICAgICB0cnkgewogICAgICAgIGlmKHR5cGVvZihuYXZpZ2F0b3Jba2V5XSkgPT0gJ3N0cmluZycpIHsKICAgICAgICAgIF9uYXZCeXRlcyArPSBuYXZpZ2F0b3Jba2V5XTsKICAgICAgICB9CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIC8qIFNvbWUgbmF2aWdhdG9yIGtleXMgbWlnaHQgbm90IGJlIGFjY2Vzc2libGUsIGUuZy4gdGhlIGdlb2xvY2F0aW9uCiAgICAgICAgICBhdHRyaWJ1dGUgdGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0b3VjaGVkIGluIE1vemlsbGEgY2hyb21lOi8vCiAgICAgICAgICBjb250ZXh0LgoKICAgICAgICAgIFNpbGVudGx5IGlnbm9yZSB0aGlzIGFuZCBqdXN0IGRvbid0IHVzZSB0aGlzIGFzIGEgc291cmNlIG9mCiAgICAgICAgICBlbnRyb3B5LiAqLwogICAgICB9CiAgICB9CiAgICBfY3R4LmNvbGxlY3QoX25hdkJ5dGVzKTsKICAgIF9uYXZCeXRlcyA9IG51bGw7CiAgfQoKICAvLyBhZGQgbW91c2UgYW5kIGtleWJvYXJkIGNvbGxlY3RvcnMgaWYganF1ZXJ5IGlzIGF2YWlsYWJsZQogIGlmKGpRdWVyeSkgewogICAgLy8gc2V0IHVwIG1vdXNlIGVudHJvcHkgY2FwdHVyZQogICAgalF1ZXJ5KCkubW91c2Vtb3ZlKGZ1bmN0aW9uKGUpIHsKICAgICAgLy8gYWRkIG1vdXNlIGNvb3JkcwogICAgICBfY3R4LmNvbGxlY3RJbnQoZS5jbGllbnRYLCAxNik7CiAgICAgIF9jdHguY29sbGVjdEludChlLmNsaWVudFksIDE2KTsKICAgIH0pOwoKICAgIC8vIHNldCB1cCBrZXlib2FyZCBlbnRyb3B5IGNhcHR1cmUKICAgIGpRdWVyeSgpLmtleXByZXNzKGZ1bmN0aW9uKGUpIHsKICAgICAgX2N0eC5jb2xsZWN0SW50KGUuY2hhckNvZGUsIDgpOwogICAgfSk7CiAgfQp9CgovKiBSYW5kb20gQVBJICovCmlmKCFmb3JnZS5yYW5kb20pIHsKICBmb3JnZS5yYW5kb20gPSBfY3R4Owp9IGVsc2UgewogIC8vIGV4dGVuZCBmb3JnZS5yYW5kb20gd2l0aCBfY3R4CiAgZm9yKHZhciBrZXkgaW4gX2N0eCkgewogICAgZm9yZ2UucmFuZG9tW2tleV0gPSBfY3R4W2tleV07CiAgfQp9CgovLyBleHBvc2Ugc3Bhd24gUFJORwpmb3JnZS5yYW5kb20uY3JlYXRlSW5zdGFuY2UgPSBzcGF3blBybmc7Cgp9KSh0eXBlb2YoalF1ZXJ5KSAhPT0gJ3VuZGVmaW5lZCcgPyBqUXVlcnkgOiBudWxsKTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3JhbmRvbSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9yYW5kb20nLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9hZXMnLCAnLi9tZCcsICcuL3BybmcnLCAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFJDMiBpbXBsZW1lbnRhdGlvbi4KICoKICogQGF1dGhvciBTdGVmYW4gU2llZ2wKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqCiAqIEluZm9ybWF0aW9uIG9uIHRoZSBSQzIgY2lwaGVyIGlzIGF2YWlsYWJsZSBmcm9tIFJGQyAjMjI2OCwKICogaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjI2OC50eHQKICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Cgp2YXIgcGlUYWJsZSA9IFsKICAweGQ5LCAweDc4LCAweGY5LCAweGM0LCAweDE5LCAweGRkLCAweGI1LCAweGVkLCAweDI4LCAweGU5LCAweGZkLCAweDc5LCAweDRhLCAweGEwLCAweGQ4LCAweDlkLAogIDB4YzYsIDB4N2UsIDB4MzcsIDB4ODMsIDB4MmIsIDB4NzYsIDB4NTMsIDB4OGUsIDB4NjIsIDB4NGMsIDB4NjQsIDB4ODgsIDB4NDQsIDB4OGIsIDB4ZmIsIDB4YTIsCiAgMHgxNywgMHg5YSwgMHg1OSwgMHhmNSwgMHg4NywgMHhiMywgMHg0ZiwgMHgxMywgMHg2MSwgMHg0NSwgMHg2ZCwgMHg4ZCwgMHgwOSwgMHg4MSwgMHg3ZCwgMHgzMiwKICAweGJkLCAweDhmLCAweDQwLCAweGViLCAweDg2LCAweGI3LCAweDdiLCAweDBiLCAweGYwLCAweDk1LCAweDIxLCAweDIyLCAweDVjLCAweDZiLCAweDRlLCAweDgyLAogIDB4NTQsIDB4ZDYsIDB4NjUsIDB4OTMsIDB4Y2UsIDB4NjAsIDB4YjIsIDB4MWMsIDB4NzMsIDB4NTYsIDB4YzAsIDB4MTQsIDB4YTcsIDB4OGMsIDB4ZjEsIDB4ZGMsCiAgMHgxMiwgMHg3NSwgMHhjYSwgMHgxZiwgMHgzYiwgMHhiZSwgMHhlNCwgMHhkMSwgMHg0MiwgMHgzZCwgMHhkNCwgMHgzMCwgMHhhMywgMHgzYywgMHhiNiwgMHgyNiwKICAweDZmLCAweGJmLCAweDBlLCAweGRhLCAweDQ2LCAweDY5LCAweDA3LCAweDU3LCAweDI3LCAweGYyLCAweDFkLCAweDliLCAweGJjLCAweDk0LCAweDQzLCAweDAzLAogIDB4ZjgsIDB4MTEsIDB4YzcsIDB4ZjYsIDB4OTAsIDB4ZWYsIDB4M2UsIDB4ZTcsIDB4MDYsIDB4YzMsIDB4ZDUsIDB4MmYsIDB4YzgsIDB4NjYsIDB4MWUsIDB4ZDcsCiAgMHgwOCwgMHhlOCwgMHhlYSwgMHhkZSwgMHg4MCwgMHg1MiwgMHhlZSwgMHhmNywgMHg4NCwgMHhhYSwgMHg3MiwgMHhhYywgMHgzNSwgMHg0ZCwgMHg2YSwgMHgyYSwKICAweDk2LCAweDFhLCAweGQyLCAweDcxLCAweDVhLCAweDE1LCAweDQ5LCAweDc0LCAweDRiLCAweDlmLCAweGQwLCAweDVlLCAweDA0LCAweDE4LCAweGE0LCAweGVjLAogIDB4YzIsIDB4ZTAsIDB4NDEsIDB4NmUsIDB4MGYsIDB4NTEsIDB4Y2IsIDB4Y2MsIDB4MjQsIDB4OTEsIDB4YWYsIDB4NTAsIDB4YTEsIDB4ZjQsIDB4NzAsIDB4MzksCiAgMHg5OSwgMHg3YywgMHgzYSwgMHg4NSwgMHgyMywgMHhiOCwgMHhiNCwgMHg3YSwgMHhmYywgMHgwMiwgMHgzNiwgMHg1YiwgMHgyNSwgMHg1NSwgMHg5NywgMHgzMSwKICAweDJkLCAweDVkLCAweGZhLCAweDk4LCAweGUzLCAweDhhLCAweDkyLCAweGFlLCAweDA1LCAweGRmLCAweDI5LCAweDEwLCAweDY3LCAweDZjLCAweGJhLCAweGM5LAogIDB4ZDMsIDB4MDAsIDB4ZTYsIDB4Y2YsIDB4ZTEsIDB4OWUsIDB4YTgsIDB4MmMsIDB4NjMsIDB4MTYsIDB4MDEsIDB4M2YsIDB4NTgsIDB4ZTIsIDB4ODksIDB4YTksCiAgMHgwZCwgMHgzOCwgMHgzNCwgMHgxYiwgMHhhYiwgMHgzMywgMHhmZiwgMHhiMCwgMHhiYiwgMHg0OCwgMHgwYywgMHg1ZiwgMHhiOSwgMHhiMSwgMHhjZCwgMHgyZSwKICAweGM1LCAweGYzLCAweGRiLCAweDQ3LCAweGU1LCAweGE1LCAweDljLCAweDc3LCAweDBhLCAweGE2LCAweDIwLCAweDY4LCAweGZlLCAweDdmLCAweGMxLCAweGFkCl07Cgp2YXIgcyA9IFsxLCAyLCAzLCA1XTsKCgovKioKICogUm90YXRlIGEgd29yZCBsZWZ0IGJ5IGdpdmVuIG51bWJlciBvZiBiaXRzLgogKgogKiBCaXRzIHRoYXQgYXJlIHNoaWZ0ZWQgb3V0IG9uIHRoZSBsZWZ0IGFyZSBwdXQgYmFjayBpbiBvbiB0aGUgcmlnaHQKICogaGFuZCBzaWRlLgogKgogKiBAcGFyYW0gd29yZCBUaGUgd29yZCB0byBzaGlmdCBsZWZ0LgogKiBAcGFyYW0gYml0cyBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQgYnkuCiAqIEByZXR1cm4gVGhlIHJvdGF0ZWQgd29yZC4KICovCnZhciByb2wgPSBmdW5jdGlvbih3b3JkLCBiaXRzKSB7CiAgcmV0dXJuICgod29yZCA8PCBiaXRzKSAmIDB4ZmZmZikgfCAoKHdvcmQgJiAweGZmZmYpID4+ICgxNiAtIGJpdHMpKTsKfTsKCi8qKgogKiBSb3RhdGUgYSB3b3JkIHJpZ2h0IGJ5IGdpdmVuIG51bWJlciBvZiBiaXRzLgogKgogKiBCaXRzIHRoYXQgYXJlIHNoaWZ0ZWQgb3V0IG9uIHRoZSByaWdodCBhcmUgcHV0IGJhY2sgaW4gb24gdGhlIGxlZnQKICogaGFuZCBzaWRlLgogKgogKiBAcGFyYW0gd29yZCBUaGUgd29yZCB0byBzaGlmdCByaWdodC4KICogQHBhcmFtIGJpdHMgVGhlIG51bWJlciBvZiBiaXRzIHRvIHNoaWZ0IGJ5LgogKiBAcmV0dXJuIFRoZSByb3RhdGVkIHdvcmQuCiAqLwp2YXIgcm9yID0gZnVuY3Rpb24od29yZCwgYml0cykgewogIHJldHVybiAoKHdvcmQgJiAweGZmZmYpID4+IGJpdHMpIHwgKCh3b3JkIDw8ICgxNiAtIGJpdHMpKSAmIDB4ZmZmZik7Cn07CgoKLyogUkMyIEFQSSAqLwpmb3JnZS5yYzIgPSBmb3JnZS5yYzIgfHwge307CgovKioKICogUGVyZm9ybSBSQzIga2V5IGV4cGFuc2lvbiBhcyBwZXIgUkZDICMyMjY4LCBzZWN0aW9uIDIuCiAqCiAqIEBwYXJhbSBrZXkgdmFyaWFibGUtbGVuZ3RoIHVzZXIga2V5IChiZXR3ZWVuIDEgYW5kIDEyOCBieXRlcykKICogQHBhcmFtIGVmZktleUJpdHMgbnVtYmVyIG9mIGVmZmVjdGl2ZSBrZXkgYml0cyAoZGVmYXVsdDogMTI4KQogKiBAcmV0dXJuIHRoZSBleHBhbmRlZCBSQzIga2V5IChCeXRlQnVmZmVyIG9mIDEyOCBieXRlcykKICovCmZvcmdlLnJjMi5leHBhbmRLZXkgPSBmdW5jdGlvbihrZXksIGVmZktleUJpdHMpIHsKICBpZih0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykgewogICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoa2V5KTsKICB9CiAgZWZmS2V5Qml0cyA9IGVmZktleUJpdHMgfHwgMTI4OwoKICAvKiBpbnRyb2R1Y2UgdmFyaWFibGVzIHRoYXQgbWF0Y2ggdGhlIG5hbWVzIHVzZWQgaW4gUkZDICMyMjY4ICovCiAgdmFyIEwgPSBrZXk7CiAgdmFyIFQgPSBrZXkubGVuZ3RoKCk7CiAgdmFyIFQxID0gZWZmS2V5Qml0czsKICB2YXIgVDggPSBNYXRoLmNlaWwoVDEgLyA4KTsKICB2YXIgVE0gPSAweGZmID4+IChUMSAmIDB4MDcpOwogIHZhciBpOwoKICBmb3IoaSA9IFQ7IGkgPCAxMjg7IGkgKyspIHsKICAgIEwucHV0Qnl0ZShwaVRhYmxlWyhMLmF0KGkgLSAxKSArIEwuYXQoaSAtIFQpKSAmIDB4ZmZdKTsKICB9CgogIEwuc2V0QXQoMTI4IC0gVDgsIHBpVGFibGVbTC5hdCgxMjggLSBUOCkgJiBUTV0pOwoKICBmb3IoaSA9IDEyNyAtIFQ4OyBpID49IDA7IGkgLS0pIHsKICAgIEwuc2V0QXQoaSwgcGlUYWJsZVtMLmF0KGkgKyAxKSBeIEwuYXQoaSArIFQ4KV0pOwogIH0KCiAgcmV0dXJuIEw7Cn07CgoKLyoqCiAqIENyZWF0ZXMgYSBSQzIgY2lwaGVyIG9iamVjdC4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UgKGFzIGJhc2UgZm9yIGtleSBnZW5lcmF0aW9uKS4KICogQHBhcmFtIGJpdHMgdGhlIG51bWJlciBvZiBlZmZlY3RpdmUga2V5IGJpdHMuCiAqIEBwYXJhbSBlbmNyeXB0IGZhbHNlIGZvciBkZWNyeXB0aW9uLCB0cnVlIGZvciBlbmNyeXB0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwp2YXIgY3JlYXRlQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBiaXRzLCBlbmNyeXB0KSB7CiAgdmFyIF9maW5pc2ggPSBmYWxzZSwgX2lucHV0ID0gbnVsbCwgX291dHB1dCA9IG51bGwsIF9pdiA9IG51bGw7CiAgdmFyIG1peFJvdW5kLCBtYXNoUm91bmQ7CiAgdmFyIGksIGosIEsgPSBbXTsKCiAgLyogRXhwYW5kIGtleSBhbmQgZmlsbCBpbnRvIEtbXSBBcnJheSAqLwogIGtleSA9IGZvcmdlLnJjMi5leHBhbmRLZXkoa2V5LCBiaXRzKTsKICBmb3IoaSA9IDA7IGkgPCA2NDsgaSArKykgewogICAgSy5wdXNoKGtleS5nZXRJbnQxNkxlKCkpOwogIH0KCiAgaWYoZW5jcnlwdCkgewogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSBtaXhpbmcgcm91bmQgImluIHBsYWNlIi4KICAgICAqCiAgICAgKiBAcGFyYW0gUiBBcnJheSBvZiBmb3VyIHdvcmRzIHRvIHBlcmZvcm0gbWl4aW5nIG9uLgogICAgICovCiAgICBtaXhSb3VuZCA9IGZ1bmN0aW9uKFIpIHsKICAgICAgZm9yKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgUltpXSArPSBLW2pdICsgKFJbKGkgKyAzKSAlIDRdICYgUlsoaSArIDIpICUgNF0pICsKICAgICAgICAgICgoflJbKGkgKyAzKSAlIDRdKSAmIFJbKGkgKyAxKSAlIDRdKTsKICAgICAgICBSW2ldID0gcm9sKFJbaV0sIHNbaV0pOwogICAgICAgIGogKys7CiAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSBtYXNoaW5nIHJvdW5kICJpbiBwbGFjZSIuCiAgICAgKgogICAgICogQHBhcmFtIFIgQXJyYXkgb2YgZm91ciB3b3JkcyB0byBwZXJmb3JtIG1hc2hpbmcgb24uCiAgICAgKi8KICAgIG1hc2hSb3VuZCA9IGZ1bmN0aW9uKFIpIHsKICAgICAgZm9yKGkgPSAwOyBpIDwgNDsgaSArKykgewogICAgICAgIFJbaV0gKz0gS1tSWyhpICsgMykgJSA0XSAmIDYzXTsKICAgICAgfQogICAgfTsKICB9IGVsc2UgewogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSByLW1peGluZyByb3VuZCAiaW4gcGxhY2UiLgogICAgICoKICAgICAqIEBwYXJhbSBSIEFycmF5IG9mIGZvdXIgd29yZHMgdG8gcGVyZm9ybSBtaXhpbmcgb24uCiAgICAgKi8KICAgIG1peFJvdW5kID0gZnVuY3Rpb24oUikgewogICAgICBmb3IoaSA9IDM7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgUltpXSA9IHJvcihSW2ldLCBzW2ldKTsKICAgICAgICBSW2ldIC09IEtbal0gKyAoUlsoaSArIDMpICUgNF0gJiBSWyhpICsgMikgJSA0XSkgKwogICAgICAgICAgKCh+UlsoaSArIDMpICUgNF0pICYgUlsoaSArIDEpICUgNF0pOwogICAgICAgIGogLS07CiAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBQZXJmb3JtIG9uZSByLW1hc2hpbmcgcm91bmQgImluIHBsYWNlIi4KICAgICAqCiAgICAgKiBAcGFyYW0gUiBBcnJheSBvZiBmb3VyIHdvcmRzIHRvIHBlcmZvcm0gbWFzaGluZyBvbi4KICAgICAqLwogICAgbWFzaFJvdW5kID0gZnVuY3Rpb24oUikgewogICAgICBmb3IoaSA9IDM7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgUltpXSAtPSBLW1JbKGkgKyAzKSAlIDRdICYgNjNdOwogICAgICB9CiAgICB9OwogIH0KCiAgLyoqCiAgICogUnVuIHRoZSBzcGVjaWZpZWQgY2lwaGVyIGV4ZWN1dGlvbiBwbGFuLgogICAqCiAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBmb3VyIHdvcmRzIGZyb20gdGhlIGlucHV0IGJ1ZmZlciwgYXBwbGllcyB0aGUgSVYgb24KICAgKiBpdCAoaWYgcmVxdWVzdGVkKSBhbmQgcnVucyB0aGUgcHJvdmlkZWQgZXhlY3V0aW9uIHBsYW4uCiAgICoKICAgKiBUaGUgcGxhbiBtdXN0IGJlIHB1dCB0b2dldGhlciBpbiBmb3JtIG9mIGEgYXJyYXkgb2YgYXJyYXlzLiAgV2hlcmUgdGhlCiAgICogb3V0ZXIgb25lIGlzIHNpbXBseSBhIGxpc3Qgb2Ygc3RlcHMgdG8gcGVyZm9ybSBhbmQgdGhlIGlubmVyIG9uZSBuZWVkcwogICAqIHRvIGhhdmUgdHdvIGVsZW1lbnRzOiB0aGUgZmlyc3Qgb25lIHRlbGxpbmcgaG93IG1hbnkgcm91bmRzIHRvIHBlcmZvcm0sCiAgICogdGhlIHNlY29uZCBvbmUgdGVsbGluZyB3aGF0IHRvIGRvIChpLmUuIHRoZSBmdW5jdGlvbiB0byBjYWxsKS4KICAgKgogICAqIEBwYXJhbSB7QXJyYXl9IHBsYW4gVGhlIHBsYW4gdG8gZXhlY3V0ZS4KICAgKi8KICB2YXIgcnVuUGxhbiA9IGZ1bmN0aW9uKHBsYW4pIHsKICAgIHZhciBSID0gW107CgogICAgLyogR2V0IGRhdGEgZnJvbSBpbnB1dCBidWZmZXIgYW5kIGZpbGwgdGhlIGZvdXIgd29yZHMgaW50byBSICovCiAgICBmb3IoaSA9IDA7IGkgPCA0OyBpICsrKSB7CiAgICAgIHZhciB2YWwgPSBfaW5wdXQuZ2V0SW50MTZMZSgpOwoKICAgICAgaWYoX2l2ICE9PSBudWxsKSB7CiAgICAgICAgaWYoZW5jcnlwdCkgewogICAgICAgICAgLyogV2UncmUgZW5jcnlwdGluZywgYXBwbHkgdGhlIElWIGZpcnN0LiAqLwogICAgICAgICAgdmFsIF49IF9pdi5nZXRJbnQxNkxlKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8qIFdlJ3JlIGRlY3J5cHRpb24sIGtlZXAgY2lwaGVyIHRleHQgZm9yIG5leHQgYmxvY2suICovCiAgICAgICAgICBfaXYucHV0SW50MTZMZSh2YWwpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgUi5wdXNoKHZhbCAmIDB4ZmZmZik7CiAgICB9CgogICAgLyogUmVzZXQgZ2xvYmFsICJqIiB2YXJpYWJsZSBhcyBwZXIgc3BlYy4gKi8KICAgIGogPSBlbmNyeXB0ID8gMCA6IDYzOwoKICAgIC8qIFJ1biBleGVjdXRpb24gcGxhbi4gKi8KICAgIGZvcih2YXIgcHRyID0gMDsgcHRyIDwgcGxhbi5sZW5ndGg7IHB0ciArKykgewogICAgICBmb3IodmFyIGN0ciA9IDA7IGN0ciA8IHBsYW5bcHRyXVswXTsgY3RyICsrKSB7CiAgICAgICAgcGxhbltwdHJdWzFdKFIpOwogICAgICB9CiAgICB9CgogICAgLyogV3JpdGUgYmFjayByZXN1bHQgdG8gb3V0cHV0IGJ1ZmZlci4gKi8KICAgIGZvcihpID0gMDsgaSA8IDQ7IGkgKyspIHsKICAgICAgaWYoX2l2ICE9PSBudWxsKSB7CiAgICAgICAgaWYoZW5jcnlwdCkgewogICAgICAgICAgLyogV2UncmUgZW5jcnlwdGluZyBpbiBDQkMtbW9kZSwgZmVlZCBiYWNrIGVuY3J5cHRlZCBieXRlcyBpbnRvCiAgICAgICAgICAgICBJViBidWZmZXIgdG8gY2FycnkgaXQgZm9yd2FyZCB0byBuZXh0IGJsb2NrLiAqLwogICAgICAgICAgX2l2LnB1dEludDE2TGUoUltpXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIFJbaV0gXj0gX2l2LmdldEludDE2TGUoKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIF9vdXRwdXQucHV0SW50MTZMZShSW2ldKTsKICAgIH0KICB9OwoKCiAgLyogQ3JlYXRlIGNpcGhlciBvYmplY3QgKi8KICB2YXIgY2lwaGVyID0gbnVsbDsKICBjaXBoZXIgPSB7CiAgICAvKioKICAgICAqIFN0YXJ0cyBvciByZXN0YXJ0cyB0aGUgZW5jcnlwdGlvbiBvciBkZWNyeXB0aW9uIHByb2Nlc3MsIHdoaWNoZXZlcgogICAgICogd2FzIHByZXZpb3VzbHkgY29uZmlndXJlZC4KICAgICAqCiAgICAgKiBUbyB1c2UgdGhlIGNpcGhlciBpbiBDQkMgbW9kZSwgaXYgbWF5IGJlIGdpdmVuIGVpdGhlciBhcyBhIHN0cmluZwogICAgICogb2YgYnl0ZXMsIG9yIGFzIGEgYnl0ZSBidWZmZXIuICBGb3IgRUNCIG1vZGUsIGdpdmUgbnVsbCBhcyBpdi4KICAgICAqCiAgICAgKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UsIG51bGwgZm9yIEVDQiBtb2RlLgogICAgICogQHBhcmFtIG91dHB1dCB0aGUgb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICAgICAqLwogICAgc3RhcnQ6IGZ1bmN0aW9uKGl2LCBvdXRwdXQpIHsKICAgICAgaWYoaXYpIHsKICAgICAgICAvKiBDQkMgbW9kZSAqLwogICAgICAgIGlmKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIGl2ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoaXYpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgX2ZpbmlzaCA9IGZhbHNlOwogICAgICBfaW5wdXQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBfb3V0cHV0ID0gb3V0cHV0IHx8IG5ldyBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgICBfaXYgPSBpdjsKCiAgICAgIGNpcGhlci5vdXRwdXQgPSBfb3V0cHV0OwogICAgfSwKCiAgICAvKioKICAgICAqIFVwZGF0ZXMgdGhlIG5leHQgYmxvY2suCiAgICAgKgogICAgICogQHBhcmFtIGlucHV0IHRoZSBidWZmZXIgdG8gcmVhZCBmcm9tLgogICAgICovCiAgICB1cGRhdGU6IGZ1bmN0aW9uKGlucHV0KSB7CiAgICAgIGlmKCFfZmluaXNoKSB7CiAgICAgICAgLy8gbm90IGZpbmlzaGluZywgc28gZmlsbCB0aGUgaW5wdXQgYnVmZmVyIHdpdGggbW9yZSBpbnB1dAogICAgICAgIF9pbnB1dC5wdXRCdWZmZXIoaW5wdXQpOwogICAgICB9CgogICAgICB3aGlsZShfaW5wdXQubGVuZ3RoKCkgPj0gOCkgewogICAgICAgIHJ1blBsYW4oWwogICAgICAgICAgICBbIDUsIG1peFJvdW5kIF0sCiAgICAgICAgICAgIFsgMSwgbWFzaFJvdW5kIF0sCiAgICAgICAgICAgIFsgNiwgbWl4Um91bmQgXSwKICAgICAgICAgICAgWyAxLCBtYXNoUm91bmQgXSwKICAgICAgICAgICAgWyA1LCBtaXhSb3VuZCBdCiAgICAgICAgICBdKTsKICAgICAgfQogICAgfSwKCiAgICAvKioKICAgICAqIEZpbmlzaGVzIGVuY3J5cHRpbmcgb3IgZGVjcnlwdGluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gcGFkIGEgcGFkZGluZyBmdW5jdGlvbiB0byB1c2UsIG51bGwgZm9yIFBLQ1MjNyBwYWRkaW5nLAogICAgICogICAgICAgICAgIHNpZ25hdHVyZShibG9ja1NpemUsIGJ1ZmZlciwgZGVjcnlwdCkuCiAgICAgKgogICAgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwsIGZhbHNlIG9uIGVycm9yLgogICAgICovCiAgICBmaW5pc2g6IGZ1bmN0aW9uKHBhZCkgewogICAgICB2YXIgcnZhbCA9IHRydWU7CgogICAgICBpZihlbmNyeXB0KSB7CiAgICAgICAgaWYocGFkKSB7CiAgICAgICAgICBydmFsID0gcGFkKDgsIF9pbnB1dCwgIWVuY3J5cHQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBhZGQgUEtDUyM3IHBhZGRpbmcgdG8gYmxvY2sgKGVhY2ggcGFkIGJ5dGUgaXMgdGhlCiAgICAgICAgICAvLyB2YWx1ZSBvZiB0aGUgbnVtYmVyIG9mIHBhZCBieXRlcykKICAgICAgICAgIHZhciBwYWRkaW5nID0gKF9pbnB1dC5sZW5ndGgoKSA9PT0gOCkgPyA4IDogKDggLSBfaW5wdXQubGVuZ3RoKCkpOwogICAgICAgICAgX2lucHV0LmZpbGxXaXRoQnl0ZShwYWRkaW5nLCBwYWRkaW5nKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmKHJ2YWwpIHsKICAgICAgICAvLyBkbyBmaW5hbCB1cGRhdGUKICAgICAgICBfZmluaXNoID0gdHJ1ZTsKICAgICAgICBjaXBoZXIudXBkYXRlKCk7CiAgICAgIH0KCiAgICAgIGlmKCFlbmNyeXB0KSB7CiAgICAgICAgLy8gY2hlY2sgZm9yIGVycm9yOiBpbnB1dCBkYXRhIG5vdCBhIG11bHRpcGxlIG9mIGJsb2NrIHNpemUKICAgICAgICBydmFsID0gKF9pbnB1dC5sZW5ndGgoKSA9PT0gMCk7CiAgICAgICAgaWYocnZhbCkgewogICAgICAgICAgaWYocGFkKSB7CiAgICAgICAgICAgIHJ2YWwgPSBwYWQoOCwgX291dHB1dCwgIWVuY3J5cHQpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gZW5zdXJlIHBhZGRpbmcgYnl0ZSBjb3VudCBpcyB2YWxpZAogICAgICAgICAgICB2YXIgbGVuID0gX291dHB1dC5sZW5ndGgoKTsKICAgICAgICAgICAgdmFyIGNvdW50ID0gX291dHB1dC5hdChsZW4gLSAxKTsKCiAgICAgICAgICAgIGlmKGNvdW50ID4gbGVuKSB7CiAgICAgICAgICAgICAgcnZhbCA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIC8vIHRyaW0gb2ZmIHBhZGRpbmcgYnl0ZXMKICAgICAgICAgICAgICBfb3V0cHV0LnRydW5jYXRlKGNvdW50KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHJ2YWw7CiAgICB9CiAgfTsKCiAgcmV0dXJuIGNpcGhlcjsKfTsKCgovKioKICogQ3JlYXRlcyBhbiBSQzIgY2lwaGVyIG9iamVjdCB0byBlbmNyeXB0IGRhdGEgaW4gRUNCIG9yIENCQyBtb2RlIHVzaW5nIHRoZQogKiBnaXZlbiBzeW1tZXRyaWMga2V5LiBUaGUgb3V0cHV0IHdpbGwgYmUgc3RvcmVkIGluIHRoZSAnb3V0cHV0JyBtZW1iZXIKICogb2YgdGhlIHJldHVybmVkIGNpcGhlci4KICoKICogVGhlIGtleSBhbmQgaXYgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqIFRoZSBjaXBoZXIgaXMgaW5pdGlhbGl6ZWQgdG8gdXNlIDEyOCBlZmZlY3RpdmUga2V5IGJpdHMuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKiBAcGFyYW0gaXYgdGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciB0byB1c2UuCiAqIEBwYXJhbSBvdXRwdXQgdGhlIGJ1ZmZlciB0byB3cml0ZSB0bywgbnVsbCB0byBjcmVhdGUgb25lLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5yYzIuc3RhcnRFbmNyeXB0aW5nID0gZnVuY3Rpb24oa2V5LCBpdiwgb3V0cHV0KSB7CiAgdmFyIGNpcGhlciA9IGZvcmdlLnJjMi5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGtleSwgMTI4KTsKICBjaXBoZXIuc3RhcnQoaXYsIG91dHB1dCk7CiAgcmV0dXJuIGNpcGhlcjsKfTsKCi8qKgogKiBDcmVhdGVzIGFuIFJDMiBjaXBoZXIgb2JqZWN0IHRvIGVuY3J5cHQgZGF0YSBpbiBFQ0Igb3IgQ0JDIG1vZGUgdXNpbmcgdGhlCiAqIGdpdmVuIHN5bW1ldHJpYyBrZXkuCiAqCiAqIFRoZSBrZXkgbWF5IGJlIGdpdmVuIGFzIGEgc3RyaW5nIG9mIGJ5dGVzIG9yIGEgYnl0ZSBidWZmZXIuCiAqCiAqIFRvIHN0YXJ0IGVuY3J5cHRpbmcgY2FsbCBzdGFydCgpIG9uIHRoZSBjaXBoZXIgd2l0aCBhbiBpdiBhbmQgb3B0aW9uYWwKICogb3V0cHV0IGJ1ZmZlci4KICoKICogQHBhcmFtIGtleSB0aGUgc3ltbWV0cmljIGtleSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdGhlIGNpcGhlci4KICovCmZvcmdlLnJjMi5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyID0gZnVuY3Rpb24oa2V5LCBiaXRzKSB7CiAgcmV0dXJuIGNyZWF0ZUNpcGhlcihrZXksIGJpdHMsIHRydWUpOwp9OwoKLyoqCiAqIENyZWF0ZXMgYW4gUkMyIGNpcGhlciBvYmplY3QgdG8gZGVjcnlwdCBkYXRhIGluIEVDQiBvciBDQkMgbW9kZSB1c2luZyB0aGUKICogZ2l2ZW4gc3ltbWV0cmljIGtleS4gVGhlIG91dHB1dCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgJ291dHB1dCcgbWVtYmVyCiAqIG9mIHRoZSByZXR1cm5lZCBjaXBoZXIuCiAqCiAqIFRoZSBrZXkgYW5kIGl2IG1heSBiZSBnaXZlbiBhcyBhIHN0cmluZyBvZiBieXRlcyBvciBhIGJ5dGUgYnVmZmVyLgogKiBUaGUgY2lwaGVyIGlzIGluaXRpYWxpemVkIHRvIHVzZSAxMjggZWZmZWN0aXZlIGtleSBiaXRzLgogKgogKiBAcGFyYW0ga2V5IHRoZSBzeW1tZXRyaWMga2V5IHRvIHVzZS4KICogQHBhcmFtIGl2IHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgdG8gdXNlLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBidWZmZXIgdG8gd3JpdGUgdG8sIG51bGwgdG8gY3JlYXRlIG9uZS4KICoKICogQHJldHVybiB0aGUgY2lwaGVyLgogKi8KZm9yZ2UucmMyLnN0YXJ0RGVjcnlwdGluZyA9IGZ1bmN0aW9uKGtleSwgaXYsIG91dHB1dCkgewogIHZhciBjaXBoZXIgPSBmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihrZXksIDEyOCk7CiAgY2lwaGVyLnN0YXJ0KGl2LCBvdXRwdXQpOwogIHJldHVybiBjaXBoZXI7Cn07CgovKioKICogQ3JlYXRlcyBhbiBSQzIgY2lwaGVyIG9iamVjdCB0byBkZWNyeXB0IGRhdGEgaW4gRUNCIG9yIENCQyBtb2RlIHVzaW5nIHRoZQogKiBnaXZlbiBzeW1tZXRyaWMga2V5LgogKgogKiBUaGUga2V5IG1heSBiZSBnaXZlbiBhcyBhIHN0cmluZyBvZiBieXRlcyBvciBhIGJ5dGUgYnVmZmVyLgogKgogKiBUbyBzdGFydCBkZWNyeXB0aW5nIGNhbGwgc3RhcnQoKSBvbiB0aGUgY2lwaGVyIHdpdGggYW4gaXYgYW5kIG9wdGlvbmFsCiAqIG91dHB1dCBidWZmZXIuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHN5bW1ldHJpYyBrZXkgdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBjaXBoZXIuCiAqLwpmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlciA9IGZ1bmN0aW9uKGtleSwgYml0cykgewogIHJldHVybiBjcmVhdGVDaXBoZXIoa2V5LCBiaXRzLCBmYWxzZSk7Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdyYzInOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcmMyJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8vIENvcHlyaWdodCAoYykgMjAwNSAgVG9tIFd1Ci8vIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi8vIFNlZSAiTElDRU5TRSIgZm9yIGRldGFpbHMuCgovLyBCYXNpYyBKYXZhU2NyaXB0IEJOIGxpYnJhcnkgLSBzdWJzZXQgdXNlZnVsIGZvciBSU0EgZW5jcnlwdGlvbi4KCi8qCkxpY2Vuc2luZyAoTElDRU5TRSkKLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGhpcyBzb2Z0d2FyZSBpcyBjb3ZlcmVkIHVuZGVyIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0OgoqLwovKgogKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSAgVG9tIFd1CiAqIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKICogIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwogKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwogKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQogKiBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUy1JUyIgQU5EIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAqIEVYUFJFU1MsIElNUExJRUQgT1IgT1RIRVJXSVNFLCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkKICogV0FSUkFOVFkgT0YgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgogKgogKiBJTiBOTyBFVkVOVCBTSEFMTCBUT00gV1UgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5DSURFTlRBTCwKICogSU5ESVJFQ1QgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9GIEFOWSBLSU5ELCBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSCiAqIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgT1IgTk9UIEFEVklTRUQgT0YKICogVEhFIFBPU1NJQklMSVRZIE9GIERBTUFHRSwgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBBUklTSU5HIE9VVAogKiBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgogKgogKiBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBjb25kaXRpb24gYXBwbGllczoKICoKICogQWxsIHJlZGlzdHJpYnV0aW9ucyBtdXN0IHJldGFpbiBhbiBpbnRhY3QgY29weSBvZiB0aGlzIGNvcHlyaWdodCBub3RpY2UKICogYW5kIGRpc2NsYWltZXIuCiAqLwovKgpBZGRyZXNzIGFsbCBxdWVzdGlvbnMgcmVnYXJkaW5nIHRoaXMgbGljZW5zZSB0bzoKCiAgVG9tIFd1CiAgdGp3QGNzLlN0YW5mb3JkLkVEVQoqLwoKKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIEJpdHMgcGVyIGRpZ2l0CnZhciBkYml0czsKCi8vIEphdmFTY3JpcHQgZW5naW5lIGFuYWx5c2lzCnZhciBjYW5hcnkgPSAweGRlYWRiZWVmY2FmZTsKdmFyIGpfbG0gPSAoKGNhbmFyeSYweGZmZmZmZik9PTB4ZWZjYWZlKTsKCi8vIChwdWJsaWMpIENvbnN0cnVjdG9yCmZ1bmN0aW9uIEJpZ0ludGVnZXIoYSxiLGMpIHsKICB0aGlzLmRhdGEgPSBbXTsKICBpZihhICE9IG51bGwpCiAgICBpZigibnVtYmVyIiA9PSB0eXBlb2YgYSkgdGhpcy5mcm9tTnVtYmVyKGEsYixjKTsKICAgIGVsc2UgaWYoYiA9PSBudWxsICYmICJzdHJpbmciICE9IHR5cGVvZiBhKSB0aGlzLmZyb21TdHJpbmcoYSwyNTYpOwogICAgZWxzZSB0aGlzLmZyb21TdHJpbmcoYSxiKTsKfQoKLy8gcmV0dXJuIG5ldywgdW5zZXQgQmlnSW50ZWdlcgpmdW5jdGlvbiBuYmkoKSB7IHJldHVybiBuZXcgQmlnSW50ZWdlcihudWxsKTsgfQoKLy8gYW06IENvbXB1dGUgd19qICs9ICh4KnRoaXNfaSksIHByb3BhZ2F0ZSBjYXJyaWVzLAovLyBjIGlzIGluaXRpYWwgY2FycnksIHJldHVybnMgZmluYWwgY2FycnkuCi8vIGMgPCAzKmR2YWx1ZSwgeCA8IDIqZHZhbHVlLCB0aGlzX2kgPCBkdmFsdWUKLy8gV2UgbmVlZCB0byBzZWxlY3QgdGhlIGZhc3Rlc3Qgb25lIHRoYXQgd29ya3MgaW4gdGhpcyBlbnZpcm9ubWVudC4KCi8vIGFtMTogdXNlIGEgc2luZ2xlIG11bHQgYW5kIGRpdmlkZSB0byBnZXQgdGhlIGhpZ2ggYml0cywKLy8gbWF4IGRpZ2l0IGJpdHMgc2hvdWxkIGJlIDI2IGJlY2F1c2UKLy8gbWF4IGludGVybmFsIHZhbHVlID0gMipkdmFsdWVeMi0yKmR2YWx1ZSAoPCAyXjUzKQpmdW5jdGlvbiBhbTEoaSx4LHcsaixjLG4pIHsKICB3aGlsZSgtLW4gPj0gMCkgewogICAgdmFyIHYgPSB4KnRoaXMuZGF0YVtpKytdK3cuZGF0YVtqXStjOwogICAgYyA9IE1hdGguZmxvb3Iodi8weDQwMDAwMDApOwogICAgdy5kYXRhW2orK10gPSB2JjB4M2ZmZmZmZjsKICB9CiAgcmV0dXJuIGM7Cn0KLy8gYW0yIGF2b2lkcyBhIGJpZyBtdWx0LWFuZC1leHRyYWN0IGNvbXBsZXRlbHkuCi8vIE1heCBkaWdpdCBiaXRzIHNob3VsZCBiZSA8PSAzMCBiZWNhdXNlIHdlIGRvIGJpdHdpc2Ugb3BzCi8vIG9uIHZhbHVlcyB1cCB0byAyKmhkdmFsdWVeMi1oZHZhbHVlLTEgKDwgMl4zMSkKZnVuY3Rpb24gYW0yKGkseCx3LGosYyxuKSB7CiAgdmFyIHhsID0geCYweDdmZmYsIHhoID0geD4+MTU7CiAgd2hpbGUoLS1uID49IDApIHsKICAgIHZhciBsID0gdGhpcy5kYXRhW2ldJjB4N2ZmZjsKICAgIHZhciBoID0gdGhpcy5kYXRhW2krK10+PjE1OwogICAgdmFyIG0gPSB4aCpsK2gqeGw7CiAgICBsID0geGwqbCsoKG0mMHg3ZmZmKTw8MTUpK3cuZGF0YVtqXSsoYyYweDNmZmZmZmZmKTsKICAgIGMgPSAobD4+PjMwKSsobT4+PjE1KSt4aCpoKyhjPj4+MzApOwogICAgdy5kYXRhW2orK10gPSBsJjB4M2ZmZmZmZmY7CiAgfQogIHJldHVybiBjOwp9Ci8vIEFsdGVybmF0ZWx5LCBzZXQgbWF4IGRpZ2l0IGJpdHMgdG8gMjggc2luY2Ugc29tZQovLyBicm93c2VycyBzbG93IGRvd24gd2hlbiBkZWFsaW5nIHdpdGggMzItYml0IG51bWJlcnMuCmZ1bmN0aW9uIGFtMyhpLHgsdyxqLGMsbikgewogIHZhciB4bCA9IHgmMHgzZmZmLCB4aCA9IHg+PjE0OwogIHdoaWxlKC0tbiA+PSAwKSB7CiAgICB2YXIgbCA9IHRoaXMuZGF0YVtpXSYweDNmZmY7CiAgICB2YXIgaCA9IHRoaXMuZGF0YVtpKytdPj4xNDsKICAgIHZhciBtID0geGgqbCtoKnhsOwogICAgbCA9IHhsKmwrKChtJjB4M2ZmZik8PDE0KSt3LmRhdGFbal0rYzsKICAgIGMgPSAobD4+MjgpKyhtPj4xNCkreGgqaDsKICAgIHcuZGF0YVtqKytdID0gbCYweGZmZmZmZmY7CiAgfQogIHJldHVybiBjOwp9CgovLyBub2RlLmpzIChubyBicm93c2VyKQppZih0eXBlb2YobmF2aWdhdG9yKSA9PT0gJ3VuZGVmaW5lZCcpCnsKICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYW0gPSBhbTM7CiAgIGRiaXRzID0gMjg7Cn0gZWxzZSBpZihqX2xtICYmIChuYXZpZ2F0b3IuYXBwTmFtZSA9PSAiTWljcm9zb2Z0IEludGVybmV0IEV4cGxvcmVyIikpIHsKICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbSA9IGFtMjsKICBkYml0cyA9IDMwOwp9IGVsc2UgaWYoal9sbSAmJiAobmF2aWdhdG9yLmFwcE5hbWUgIT0gIk5ldHNjYXBlIikpIHsKICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbSA9IGFtMTsKICBkYml0cyA9IDI2Owp9IGVsc2UgeyAvLyBNb3ppbGxhL05ldHNjYXBlIHNlZW1zIHRvIHByZWZlciBhbTMKICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5hbSA9IGFtMzsKICBkYml0cyA9IDI4Owp9CgpCaWdJbnRlZ2VyLnByb3RvdHlwZS5EQiA9IGRiaXRzOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5ETSA9ICgoMTw8ZGJpdHMpLTEpOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5EViA9ICgxPDxkYml0cyk7Cgp2YXIgQklfRlAgPSA1MjsKQmlnSW50ZWdlci5wcm90b3R5cGUuRlYgPSBNYXRoLnBvdygyLEJJX0ZQKTsKQmlnSW50ZWdlci5wcm90b3R5cGUuRjEgPSBCSV9GUC1kYml0czsKQmlnSW50ZWdlci5wcm90b3R5cGUuRjIgPSAyKmRiaXRzLUJJX0ZQOwoKLy8gRGlnaXQgY29udmVyc2lvbnMKdmFyIEJJX1JNID0gIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CnZhciBCSV9SQyA9IG5ldyBBcnJheSgpOwp2YXIgcnIsdnY7CnJyID0gIjAiLmNoYXJDb2RlQXQoMCk7CmZvcih2diA9IDA7IHZ2IDw9IDk7ICsrdnYpIEJJX1JDW3JyKytdID0gdnY7CnJyID0gImEiLmNoYXJDb2RlQXQoMCk7CmZvcih2diA9IDEwOyB2diA8IDM2OyArK3Z2KSBCSV9SQ1tycisrXSA9IHZ2OwpyciA9ICJBIi5jaGFyQ29kZUF0KDApOwpmb3IodnYgPSAxMDsgdnYgPCAzNjsgKyt2dikgQklfUkNbcnIrK10gPSB2djsKCmZ1bmN0aW9uIGludDJjaGFyKG4pIHsgcmV0dXJuIEJJX1JNLmNoYXJBdChuKTsgfQpmdW5jdGlvbiBpbnRBdChzLGkpIHsKICB2YXIgYyA9IEJJX1JDW3MuY2hhckNvZGVBdChpKV07CiAgcmV0dXJuIChjPT1udWxsKT8tMTpjOwp9CgovLyAocHJvdGVjdGVkKSBjb3B5IHRoaXMgdG8gcgpmdW5jdGlvbiBibnBDb3B5VG8ocikgewogIGZvcih2YXIgaSA9IHRoaXMudC0xOyBpID49IDA7IC0taSkgci5kYXRhW2ldID0gdGhpcy5kYXRhW2ldOwogIHIudCA9IHRoaXMudDsKICByLnMgPSB0aGlzLnM7Cn0KCi8vIChwcm90ZWN0ZWQpIHNldCBmcm9tIGludGVnZXIgdmFsdWUgeCwgLURWIDw9IHggPCBEVgpmdW5jdGlvbiBibnBGcm9tSW50KHgpIHsKICB0aGlzLnQgPSAxOwogIHRoaXMucyA9ICh4PDApPy0xOjA7CiAgaWYoeCA+IDApIHRoaXMuZGF0YVswXSA9IHg7CiAgZWxzZSBpZih4IDwgLTEpIHRoaXMuZGF0YVswXSA9IHgrdGhpcy5EVjsKICBlbHNlIHRoaXMudCA9IDA7Cn0KCi8vIHJldHVybiBiaWdpbnQgaW5pdGlhbGl6ZWQgdG8gdmFsdWUKZnVuY3Rpb24gbmJ2KGkpIHsgdmFyIHIgPSBuYmkoKTsgci5mcm9tSW50KGkpOyByZXR1cm4gcjsgfQoKLy8gKHByb3RlY3RlZCkgc2V0IGZyb20gc3RyaW5nIGFuZCByYWRpeApmdW5jdGlvbiBibnBGcm9tU3RyaW5nKHMsYikgewogIHZhciBrOwogIGlmKGIgPT0gMTYpIGsgPSA0OwogIGVsc2UgaWYoYiA9PSA4KSBrID0gMzsKICBlbHNlIGlmKGIgPT0gMjU2KSBrID0gODsgLy8gYnl0ZSBhcnJheQogIGVsc2UgaWYoYiA9PSAyKSBrID0gMTsKICBlbHNlIGlmKGIgPT0gMzIpIGsgPSA1OwogIGVsc2UgaWYoYiA9PSA0KSBrID0gMjsKICBlbHNlIHsgdGhpcy5mcm9tUmFkaXgocyxiKTsgcmV0dXJuOyB9CiAgdGhpcy50ID0gMDsKICB0aGlzLnMgPSAwOwogIHZhciBpID0gcy5sZW5ndGgsIG1pID0gZmFsc2UsIHNoID0gMDsKICB3aGlsZSgtLWkgPj0gMCkgewogICAgdmFyIHggPSAoaz09OCk/c1tpXSYweGZmOmludEF0KHMsaSk7CiAgICBpZih4IDwgMCkgewogICAgICBpZihzLmNoYXJBdChpKSA9PSAiLSIpIG1pID0gdHJ1ZTsKICAgICAgY29udGludWU7CiAgICB9CiAgICBtaSA9IGZhbHNlOwogICAgaWYoc2ggPT0gMCkKICAgICAgdGhpcy5kYXRhW3RoaXMudCsrXSA9IHg7CiAgICBlbHNlIGlmKHNoK2sgPiB0aGlzLkRCKSB7CiAgICAgIHRoaXMuZGF0YVt0aGlzLnQtMV0gfD0gKHgmKCgxPDwodGhpcy5EQi1zaCkpLTEpKTw8c2g7CiAgICAgIHRoaXMuZGF0YVt0aGlzLnQrK10gPSAoeD4+KHRoaXMuREItc2gpKTsKICAgIH0gZWxzZQogICAgICB0aGlzLmRhdGFbdGhpcy50LTFdIHw9IHg8PHNoOwogICAgc2ggKz0gazsKICAgIGlmKHNoID49IHRoaXMuREIpIHNoIC09IHRoaXMuREI7CiAgfQogIGlmKGsgPT0gOCAmJiAoc1swXSYweDgwKSAhPSAwKSB7CiAgICB0aGlzLnMgPSAtMTsKICAgIGlmKHNoID4gMCkgdGhpcy5kYXRhW3RoaXMudC0xXSB8PSAoKDE8PCh0aGlzLkRCLXNoKSktMSk8PHNoOwogIH0KICB0aGlzLmNsYW1wKCk7CiAgaWYobWkpIEJpZ0ludGVnZXIuWkVSTy5zdWJUbyh0aGlzLHRoaXMpOwp9CgovLyAocHJvdGVjdGVkKSBjbGFtcCBvZmYgZXhjZXNzIGhpZ2ggd29yZHMKZnVuY3Rpb24gYm5wQ2xhbXAoKSB7CiAgdmFyIGMgPSB0aGlzLnMmdGhpcy5ETTsKICB3aGlsZSh0aGlzLnQgPiAwICYmIHRoaXMuZGF0YVt0aGlzLnQtMV0gPT0gYykgLS10aGlzLnQ7Cn0KCi8vIChwdWJsaWMpIHJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW4gZ2l2ZW4gcmFkaXgKZnVuY3Rpb24gYm5Ub1N0cmluZyhiKSB7CiAgaWYodGhpcy5zIDwgMCkgcmV0dXJuICItIit0aGlzLm5lZ2F0ZSgpLnRvU3RyaW5nKGIpOwogIHZhciBrOwogIGlmKGIgPT0gMTYpIGsgPSA0OwogIGVsc2UgaWYoYiA9PSA4KSBrID0gMzsKICBlbHNlIGlmKGIgPT0gMikgayA9IDE7CiAgZWxzZSBpZihiID09IDMyKSBrID0gNTsKICBlbHNlIGlmKGIgPT0gNCkgayA9IDI7CiAgZWxzZSByZXR1cm4gdGhpcy50b1JhZGl4KGIpOwogIHZhciBrbSA9ICgxPDxrKS0xLCBkLCBtID0gZmFsc2UsIHIgPSAiIiwgaSA9IHRoaXMudDsKICB2YXIgcCA9IHRoaXMuREItKGkqdGhpcy5EQiklazsKICBpZihpLS0gPiAwKSB7CiAgICBpZihwIDwgdGhpcy5EQiAmJiAoZCA9IHRoaXMuZGF0YVtpXT4+cCkgPiAwKSB7IG0gPSB0cnVlOyByID0gaW50MmNoYXIoZCk7IH0KICAgIHdoaWxlKGkgPj0gMCkgewogICAgICBpZihwIDwgaykgewogICAgICAgIGQgPSAodGhpcy5kYXRhW2ldJigoMTw8cCktMSkpPDwoay1wKTsKICAgICAgICBkIHw9IHRoaXMuZGF0YVstLWldPj4ocCs9dGhpcy5EQi1rKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkID0gKHRoaXMuZGF0YVtpXT4+KHAtPWspKSZrbTsKICAgICAgICBpZihwIDw9IDApIHsgcCArPSB0aGlzLkRCOyAtLWk7IH0KICAgICAgfQogICAgICBpZihkID4gMCkgbSA9IHRydWU7CiAgICAgIGlmKG0pIHIgKz0gaW50MmNoYXIoZCk7CiAgICB9CiAgfQogIHJldHVybiBtP3I6IjAiOwp9CgovLyAocHVibGljKSAtdGhpcwpmdW5jdGlvbiBibk5lZ2F0ZSgpIHsgdmFyIHIgPSBuYmkoKTsgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMscik7IHJldHVybiByOyB9CgovLyAocHVibGljKSB8dGhpc3wKZnVuY3Rpb24gYm5BYnMoKSB7IHJldHVybiAodGhpcy5zPDApP3RoaXMubmVnYXRlKCk6dGhpczsgfQoKLy8gKHB1YmxpYykgcmV0dXJuICsgaWYgdGhpcyA+IGEsIC0gaWYgdGhpcyA8IGEsIDAgaWYgZXF1YWwKZnVuY3Rpb24gYm5Db21wYXJlVG8oYSkgewogIHZhciByID0gdGhpcy5zLWEuczsKICBpZihyICE9IDApIHJldHVybiByOwogIHZhciBpID0gdGhpcy50OwogIHIgPSBpLWEudDsKICBpZihyICE9IDApIHJldHVybiAodGhpcy5zPDApPy1yOnI7CiAgd2hpbGUoLS1pID49IDApIGlmKChyPXRoaXMuZGF0YVtpXS1hLmRhdGFbaV0pICE9IDApIHJldHVybiByOwogIHJldHVybiAwOwp9CgovLyByZXR1cm5zIGJpdCBsZW5ndGggb2YgdGhlIGludGVnZXIgeApmdW5jdGlvbiBuYml0cyh4KSB7CiAgdmFyIHIgPSAxLCB0OwogIGlmKCh0PXg+Pj4xNikgIT0gMCkgeyB4ID0gdDsgciArPSAxNjsgfQogIGlmKCh0PXg+PjgpICE9IDApIHsgeCA9IHQ7IHIgKz0gODsgfQogIGlmKCh0PXg+PjQpICE9IDApIHsgeCA9IHQ7IHIgKz0gNDsgfQogIGlmKCh0PXg+PjIpICE9IDApIHsgeCA9IHQ7IHIgKz0gMjsgfQogIGlmKCh0PXg+PjEpICE9IDApIHsgeCA9IHQ7IHIgKz0gMTsgfQogIHJldHVybiByOwp9CgovLyAocHVibGljKSByZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIGluICJ0aGlzIgpmdW5jdGlvbiBibkJpdExlbmd0aCgpIHsKICBpZih0aGlzLnQgPD0gMCkgcmV0dXJuIDA7CiAgcmV0dXJuIHRoaXMuREIqKHRoaXMudC0xKStuYml0cyh0aGlzLmRhdGFbdGhpcy50LTFdXih0aGlzLnMmdGhpcy5ETSkpOwp9CgovLyAocHJvdGVjdGVkKSByID0gdGhpcyA8PCBuKkRCCmZ1bmN0aW9uIGJucERMU2hpZnRUbyhuLHIpIHsKICB2YXIgaTsKICBmb3IoaSA9IHRoaXMudC0xOyBpID49IDA7IC0taSkgci5kYXRhW2krbl0gPSB0aGlzLmRhdGFbaV07CiAgZm9yKGkgPSBuLTE7IGkgPj0gMDsgLS1pKSByLmRhdGFbaV0gPSAwOwogIHIudCA9IHRoaXMudCtuOwogIHIucyA9IHRoaXMuczsKfQoKLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgPj4gbipEQgpmdW5jdGlvbiBibnBEUlNoaWZ0VG8obixyKSB7CiAgZm9yKHZhciBpID0gbjsgaSA8IHRoaXMudDsgKytpKSByLmRhdGFbaS1uXSA9IHRoaXMuZGF0YVtpXTsKICByLnQgPSBNYXRoLm1heCh0aGlzLnQtbiwwKTsKICByLnMgPSB0aGlzLnM7Cn0KCi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIDw8IG4KZnVuY3Rpb24gYm5wTFNoaWZ0VG8obixyKSB7CiAgdmFyIGJzID0gbiV0aGlzLkRCOwogIHZhciBjYnMgPSB0aGlzLkRCLWJzOwogIHZhciBibSA9ICgxPDxjYnMpLTE7CiAgdmFyIGRzID0gTWF0aC5mbG9vcihuL3RoaXMuREIpLCBjID0gKHRoaXMuczw8YnMpJnRoaXMuRE0sIGk7CiAgZm9yKGkgPSB0aGlzLnQtMTsgaSA+PSAwOyAtLWkpIHsKICAgIHIuZGF0YVtpK2RzKzFdID0gKHRoaXMuZGF0YVtpXT4+Y2JzKXxjOwogICAgYyA9ICh0aGlzLmRhdGFbaV0mYm0pPDxiczsKICB9CiAgZm9yKGkgPSBkcy0xOyBpID49IDA7IC0taSkgci5kYXRhW2ldID0gMDsKICByLmRhdGFbZHNdID0gYzsKICByLnQgPSB0aGlzLnQrZHMrMTsKICByLnMgPSB0aGlzLnM7CiAgci5jbGFtcCgpOwp9CgovLyAocHJvdGVjdGVkKSByID0gdGhpcyA+PiBuCmZ1bmN0aW9uIGJucFJTaGlmdFRvKG4scikgewogIHIucyA9IHRoaXMuczsKICB2YXIgZHMgPSBNYXRoLmZsb29yKG4vdGhpcy5EQik7CiAgaWYoZHMgPj0gdGhpcy50KSB7IHIudCA9IDA7IHJldHVybjsgfQogIHZhciBicyA9IG4ldGhpcy5EQjsKICB2YXIgY2JzID0gdGhpcy5EQi1iczsKICB2YXIgYm0gPSAoMTw8YnMpLTE7CiAgci5kYXRhWzBdID0gdGhpcy5kYXRhW2RzXT4+YnM7CiAgZm9yKHZhciBpID0gZHMrMTsgaSA8IHRoaXMudDsgKytpKSB7CiAgICByLmRhdGFbaS1kcy0xXSB8PSAodGhpcy5kYXRhW2ldJmJtKTw8Y2JzOwogICAgci5kYXRhW2ktZHNdID0gdGhpcy5kYXRhW2ldPj5iczsKICB9CiAgaWYoYnMgPiAwKSByLmRhdGFbdGhpcy50LWRzLTFdIHw9ICh0aGlzLnMmYm0pPDxjYnM7CiAgci50ID0gdGhpcy50LWRzOwogIHIuY2xhbXAoKTsKfQoKLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgLSBhCmZ1bmN0aW9uIGJucFN1YlRvKGEscikgewogIHZhciBpID0gMCwgYyA9IDAsIG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKICB3aGlsZShpIDwgbSkgewogICAgYyArPSB0aGlzLmRhdGFbaV0tYS5kYXRhW2ldOwogICAgci5kYXRhW2krK10gPSBjJnRoaXMuRE07CiAgICBjID4+PSB0aGlzLkRCOwogIH0KICBpZihhLnQgPCB0aGlzLnQpIHsKICAgIGMgLT0gYS5zOwogICAgd2hpbGUoaSA8IHRoaXMudCkgewogICAgICBjICs9IHRoaXMuZGF0YVtpXTsKICAgICAgci5kYXRhW2krK10gPSBjJnRoaXMuRE07CiAgICAgIGMgPj49IHRoaXMuREI7CiAgICB9CiAgICBjICs9IHRoaXMuczsKICB9IGVsc2UgewogICAgYyArPSB0aGlzLnM7CiAgICB3aGlsZShpIDwgYS50KSB7CiAgICAgIGMgLT0gYS5kYXRhW2ldOwogICAgICByLmRhdGFbaSsrXSA9IGMmdGhpcy5ETTsKICAgICAgYyA+Pj0gdGhpcy5EQjsKICAgIH0KICAgIGMgLT0gYS5zOwogIH0KICByLnMgPSAoYzwwKT8tMTowOwogIGlmKGMgPCAtMSkgci5kYXRhW2krK10gPSB0aGlzLkRWK2M7CiAgZWxzZSBpZihjID4gMCkgci5kYXRhW2krK10gPSBjOwogIHIudCA9IGk7CiAgci5jbGFtcCgpOwp9CgovLyAocHJvdGVjdGVkKSByID0gdGhpcyAqIGEsIHIgIT0gdGhpcyxhIChIQUMgMTQuMTIpCi8vICJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBvbmUgaWYgYXBwcm9wcmlhdGUuCmZ1bmN0aW9uIGJucE11bHRpcGx5VG8oYSxyKSB7CiAgdmFyIHggPSB0aGlzLmFicygpLCB5ID0gYS5hYnMoKTsKICB2YXIgaSA9IHgudDsKICByLnQgPSBpK3kudDsKICB3aGlsZSgtLWkgPj0gMCkgci5kYXRhW2ldID0gMDsKICBmb3IoaSA9IDA7IGkgPCB5LnQ7ICsraSkgci5kYXRhW2kreC50XSA9IHguYW0oMCx5LmRhdGFbaV0scixpLDAseC50KTsKICByLnMgPSAwOwogIHIuY2xhbXAoKTsKICBpZih0aGlzLnMgIT0gYS5zKSBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ocixyKTsKfQoKLy8gKHByb3RlY3RlZCkgciA9IHRoaXNeMiwgciAhPSB0aGlzIChIQUMgMTQuMTYpCmZ1bmN0aW9uIGJucFNxdWFyZVRvKHIpIHsKICB2YXIgeCA9IHRoaXMuYWJzKCk7CiAgdmFyIGkgPSByLnQgPSAyKngudDsKICB3aGlsZSgtLWkgPj0gMCkgci5kYXRhW2ldID0gMDsKICBmb3IoaSA9IDA7IGkgPCB4LnQtMTsgKytpKSB7CiAgICB2YXIgYyA9IHguYW0oaSx4LmRhdGFbaV0sciwyKmksMCwxKTsKICAgIGlmKChyLmRhdGFbaSt4LnRdKz14LmFtKGkrMSwyKnguZGF0YVtpXSxyLDIqaSsxLGMseC50LWktMSkpID49IHguRFYpIHsKICAgICAgci5kYXRhW2kreC50XSAtPSB4LkRWOwogICAgICByLmRhdGFbaSt4LnQrMV0gPSAxOwogICAgfQogIH0KICBpZihyLnQgPiAwKSByLmRhdGFbci50LTFdICs9IHguYW0oaSx4LmRhdGFbaV0sciwyKmksMCwxKTsKICByLnMgPSAwOwogIHIuY2xhbXAoKTsKfQoKLy8gKHByb3RlY3RlZCkgZGl2aWRlIHRoaXMgYnkgbSwgcXVvdGllbnQgYW5kIHJlbWFpbmRlciB0byBxLCByIChIQUMgMTQuMjApCi8vIHIgIT0gcSwgdGhpcyAhPSBtLiAgcSBvciByIG1heSBiZSBudWxsLgpmdW5jdGlvbiBibnBEaXZSZW1UbyhtLHEscikgewogIHZhciBwbSA9IG0uYWJzKCk7CiAgaWYocG0udCA8PSAwKSByZXR1cm47CiAgdmFyIHB0ID0gdGhpcy5hYnMoKTsKICBpZihwdC50IDwgcG0udCkgewogICAgaWYocSAhPSBudWxsKSBxLmZyb21JbnQoMCk7CiAgICBpZihyICE9IG51bGwpIHRoaXMuY29weVRvKHIpOwogICAgcmV0dXJuOwogIH0KICBpZihyID09IG51bGwpIHIgPSBuYmkoKTsKICB2YXIgeSA9IG5iaSgpLCB0cyA9IHRoaXMucywgbXMgPSBtLnM7CiAgdmFyIG5zaCA9IHRoaXMuREItbmJpdHMocG0uZGF0YVtwbS50LTFdKTsJLy8gbm9ybWFsaXplIG1vZHVsdXMKICBpZihuc2ggPiAwKSB7IHBtLmxTaGlmdFRvKG5zaCx5KTsgcHQubFNoaWZ0VG8obnNoLHIpOyB9IGVsc2UgeyBwbS5jb3B5VG8oeSk7IHB0LmNvcHlUbyhyKTsgfQogIHZhciB5cyA9IHkudDsKICB2YXIgeTAgPSB5LmRhdGFbeXMtMV07CiAgaWYoeTAgPT0gMCkgcmV0dXJuOwogIHZhciB5dCA9IHkwKigxPDx0aGlzLkYxKSsoKHlzPjEpP3kuZGF0YVt5cy0yXT4+dGhpcy5GMjowKTsKICB2YXIgZDEgPSB0aGlzLkZWL3l0LCBkMiA9ICgxPDx0aGlzLkYxKS95dCwgZSA9IDE8PHRoaXMuRjI7CiAgdmFyIGkgPSByLnQsIGogPSBpLXlzLCB0ID0gKHE9PW51bGwpP25iaSgpOnE7CiAgeS5kbFNoaWZ0VG8oaix0KTsKICBpZihyLmNvbXBhcmVUbyh0KSA+PSAwKSB7CiAgICByLmRhdGFbci50KytdID0gMTsKICAgIHIuc3ViVG8odCxyKTsKICB9CiAgQmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLHQpOwogIHQuc3ViVG8oeSx5KTsJLy8gIm5lZ2F0aXZlIiB5IHNvIHdlIGNhbiByZXBsYWNlIHN1YiB3aXRoIGFtIGxhdGVyCiAgd2hpbGUoeS50IDwgeXMpIHkuZGF0YVt5LnQrK10gPSAwOwogIHdoaWxlKC0taiA+PSAwKSB7CiAgICAvLyBFc3RpbWF0ZSBxdW90aWVudCBkaWdpdAogICAgdmFyIHFkID0gKHIuZGF0YVstLWldPT15MCk/dGhpcy5ETTpNYXRoLmZsb29yKHIuZGF0YVtpXSpkMSsoci5kYXRhW2ktMV0rZSkqZDIpOwogICAgaWYoKHIuZGF0YVtpXSs9eS5hbSgwLHFkLHIsaiwwLHlzKSkgPCBxZCkgewkvLyBUcnkgaXQgb3V0CiAgICAgIHkuZGxTaGlmdFRvKGosdCk7CiAgICAgIHIuc3ViVG8odCxyKTsKICAgICAgd2hpbGUoci5kYXRhW2ldIDwgLS1xZCkgci5zdWJUbyh0LHIpOwogICAgfQogIH0KICBpZihxICE9IG51bGwpIHsKICAgIHIuZHJTaGlmdFRvKHlzLHEpOwogICAgaWYodHMgIT0gbXMpIEJpZ0ludGVnZXIuWkVSTy5zdWJUbyhxLHEpOwogIH0KICByLnQgPSB5czsKICByLmNsYW1wKCk7CiAgaWYobnNoID4gMCkgci5yU2hpZnRUbyhuc2gscik7CS8vIERlbm9ybWFsaXplIHJlbWFpbmRlcgogIGlmKHRzIDwgMCkgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHIscik7Cn0KCi8vIChwdWJsaWMpIHRoaXMgbW9kIGEKZnVuY3Rpb24gYm5Nb2QoYSkgewogIHZhciByID0gbmJpKCk7CiAgdGhpcy5hYnMoKS5kaXZSZW1UbyhhLG51bGwscik7CiAgaWYodGhpcy5zIDwgMCAmJiByLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pID4gMCkgYS5zdWJUbyhyLHIpOwogIHJldHVybiByOwp9CgovLyBNb2R1bGFyIHJlZHVjdGlvbiB1c2luZyAiY2xhc3NpYyIgYWxnb3JpdGhtCmZ1bmN0aW9uIENsYXNzaWMobSkgeyB0aGlzLm0gPSBtOyB9CmZ1bmN0aW9uIGNDb252ZXJ0KHgpIHsKICBpZih4LnMgPCAwIHx8IHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgcmV0dXJuIHgubW9kKHRoaXMubSk7CiAgZWxzZSByZXR1cm4geDsKfQpmdW5jdGlvbiBjUmV2ZXJ0KHgpIHsgcmV0dXJuIHg7IH0KZnVuY3Rpb24gY1JlZHVjZSh4KSB7IHguZGl2UmVtVG8odGhpcy5tLG51bGwseCk7IH0KZnVuY3Rpb24gY011bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQpmdW5jdGlvbiBjU3FyVG8oeCxyKSB7IHguc3F1YXJlVG8ocik7IHRoaXMucmVkdWNlKHIpOyB9CgpDbGFzc2ljLnByb3RvdHlwZS5jb252ZXJ0ID0gY0NvbnZlcnQ7CkNsYXNzaWMucHJvdG90eXBlLnJldmVydCA9IGNSZXZlcnQ7CkNsYXNzaWMucHJvdG90eXBlLnJlZHVjZSA9IGNSZWR1Y2U7CkNsYXNzaWMucHJvdG90eXBlLm11bFRvID0gY011bFRvOwpDbGFzc2ljLnByb3RvdHlwZS5zcXJUbyA9IGNTcXJUbzsKCi8vIChwcm90ZWN0ZWQpIHJldHVybiAiLTEvdGhpcyAlIDJeREIiOyB1c2VmdWwgZm9yIE1vbnQuIHJlZHVjdGlvbgovLyBqdXN0aWZpY2F0aW9uOgovLyAgICAgICAgIHh5ID09IDEgKG1vZCBtKQovLyAgICAgICAgIHh5ID0gIDEra20KLy8gICB4eSgyLXh5KSA9ICgxK2ttKSgxLWttKQovLyB4W3koMi14eSldID0gMS1rXjJtXjIKLy8geFt5KDIteHkpXSA9PSAxIChtb2QgbV4yKQovLyBpZiB5IGlzIDEveCBtb2QgbSwgdGhlbiB5KDIteHkpIGlzIDEveCBtb2QgbV4yCi8vIHNob3VsZCByZWR1Y2UgeCBhbmQgeSgyLXh5KSBieSBtXjIgYXQgZWFjaCBzdGVwIHRvIGtlZXAgc2l6ZSBib3VuZGVkLgovLyBKUyBtdWx0aXBseSAib3ZlcmZsb3dzIiBkaWZmZXJlbnRseSBmcm9tIEMvQysrLCBzbyBjYXJlIGlzIG5lZWRlZCBoZXJlLgpmdW5jdGlvbiBibnBJbnZEaWdpdCgpIHsKICBpZih0aGlzLnQgPCAxKSByZXR1cm4gMDsKICB2YXIgeCA9IHRoaXMuZGF0YVswXTsKICBpZigoeCYxKSA9PSAwKSByZXR1cm4gMDsKICB2YXIgeSA9IHgmMzsJCS8vIHkgPT0gMS94IG1vZCAyXjIKICB5ID0gKHkqKDItKHgmMHhmKSp5KSkmMHhmOwkvLyB5ID09IDEveCBtb2QgMl40CiAgeSA9ICh5KigyLSh4JjB4ZmYpKnkpKSYweGZmOwkvLyB5ID09IDEveCBtb2QgMl44CiAgeSA9ICh5KigyLSgoKHgmMHhmZmZmKSp5KSYweGZmZmYpKSkmMHhmZmZmOwkvLyB5ID09IDEveCBtb2QgMl4xNgogIC8vIGxhc3Qgc3RlcCAtIGNhbGN1bGF0ZSBpbnZlcnNlIG1vZCBEViBkaXJlY3RseTsKICAvLyBhc3N1bWVzIDE2IDwgREIgPD0gMzIgYW5kIGFzc3VtZXMgYWJpbGl0eSB0byBoYW5kbGUgNDgtYml0IGludHMKICB5ID0gKHkqKDIteCp5JXRoaXMuRFYpKSV0aGlzLkRWOwkJLy8geSA9PSAxL3ggbW9kIDJeZGJpdHMKICAvLyB3ZSByZWFsbHkgd2FudCB0aGUgbmVnYXRpdmUgaW52ZXJzZSwgYW5kIC1EViA8IHkgPCBEVgogIHJldHVybiAoeT4wKT90aGlzLkRWLXk6LXk7Cn0KCi8vIE1vbnRnb21lcnkgcmVkdWN0aW9uCmZ1bmN0aW9uIE1vbnRnb21lcnkobSkgewogIHRoaXMubSA9IG07CiAgdGhpcy5tcCA9IG0uaW52RGlnaXQoKTsKICB0aGlzLm1wbCA9IHRoaXMubXAmMHg3ZmZmOwogIHRoaXMubXBoID0gdGhpcy5tcD4+MTU7CiAgdGhpcy51bSA9ICgxPDwobS5EQi0xNSkpLTE7CiAgdGhpcy5tdDIgPSAyKm0udDsKfQoKLy8geFIgbW9kIG0KZnVuY3Rpb24gbW9udENvbnZlcnQoeCkgewogIHZhciByID0gbmJpKCk7CiAgeC5hYnMoKS5kbFNoaWZ0VG8odGhpcy5tLnQscik7CiAgci5kaXZSZW1Ubyh0aGlzLm0sbnVsbCxyKTsKICBpZih4LnMgPCAwICYmIHIuY29tcGFyZVRvKEJpZ0ludGVnZXIuWkVSTykgPiAwKSB0aGlzLm0uc3ViVG8ocixyKTsKICByZXR1cm4gcjsKfQoKLy8geC9SIG1vZCBtCmZ1bmN0aW9uIG1vbnRSZXZlcnQoeCkgewogIHZhciByID0gbmJpKCk7CiAgeC5jb3B5VG8ocik7CiAgdGhpcy5yZWR1Y2Uocik7CiAgcmV0dXJuIHI7Cn0KCi8vIHggPSB4L1IgbW9kIG0gKEhBQyAxNC4zMikKZnVuY3Rpb24gbW9udFJlZHVjZSh4KSB7CiAgd2hpbGUoeC50IDw9IHRoaXMubXQyKQkvLyBwYWQgeCBzbyBhbSBoYXMgZW5vdWdoIHJvb20gbGF0ZXIKICAgIHguZGF0YVt4LnQrK10gPSAwOwogIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLm0udDsgKytpKSB7CiAgICAvLyBmYXN0ZXIgd2F5IG9mIGNhbGN1bGF0aW5nIHUwID0geC5kYXRhW2ldKm1wIG1vZCBEVgogICAgdmFyIGogPSB4LmRhdGFbaV0mMHg3ZmZmOwogICAgdmFyIHUwID0gKGoqdGhpcy5tcGwrKCgoaip0aGlzLm1waCsoeC5kYXRhW2ldPj4xNSkqdGhpcy5tcGwpJnRoaXMudW0pPDwxNSkpJnguRE07CiAgICAvLyB1c2UgYW0gdG8gY29tYmluZSB0aGUgbXVsdGlwbHktc2hpZnQtYWRkIGludG8gb25lIGNhbGwKICAgIGogPSBpK3RoaXMubS50OwogICAgeC5kYXRhW2pdICs9IHRoaXMubS5hbSgwLHUwLHgsaSwwLHRoaXMubS50KTsKICAgIC8vIHByb3BhZ2F0ZSBjYXJyeQogICAgd2hpbGUoeC5kYXRhW2pdID49IHguRFYpIHsgeC5kYXRhW2pdIC09IHguRFY7IHguZGF0YVsrK2pdKys7IH0KICB9CiAgeC5jbGFtcCgpOwogIHguZHJTaGlmdFRvKHRoaXMubS50LHgpOwogIGlmKHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgeC5zdWJUbyh0aGlzLm0seCk7Cn0KCi8vIHIgPSAieF4yL1IgbW9kIG0iOyB4ICE9IHIKZnVuY3Rpb24gbW9udFNxclRvKHgscikgeyB4LnNxdWFyZVRvKHIpOyB0aGlzLnJlZHVjZShyKTsgfQoKLy8gciA9ICJ4eS9SIG1vZCBtIjsgeCx5ICE9IHIKZnVuY3Rpb24gbW9udE11bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQoKTW9udGdvbWVyeS5wcm90b3R5cGUuY29udmVydCA9IG1vbnRDb252ZXJ0OwpNb250Z29tZXJ5LnByb3RvdHlwZS5yZXZlcnQgPSBtb250UmV2ZXJ0OwpNb250Z29tZXJ5LnByb3RvdHlwZS5yZWR1Y2UgPSBtb250UmVkdWNlOwpNb250Z29tZXJ5LnByb3RvdHlwZS5tdWxUbyA9IG1vbnRNdWxUbzsKTW9udGdvbWVyeS5wcm90b3R5cGUuc3FyVG8gPSBtb250U3FyVG87CgovLyAocHJvdGVjdGVkKSB0cnVlIGlmZiB0aGlzIGlzIGV2ZW4KZnVuY3Rpb24gYm5wSXNFdmVuKCkgeyByZXR1cm4gKCh0aGlzLnQ+MCk/KHRoaXMuZGF0YVswXSYxKTp0aGlzLnMpID09IDA7IH0KCi8vIChwcm90ZWN0ZWQpIHRoaXNeZSwgZSA8IDJeMzIsIGRvaW5nIHNxciBhbmQgbXVsIHdpdGggInIiIChIQUMgMTQuNzkpCmZ1bmN0aW9uIGJucEV4cChlLHopIHsKICBpZihlID4gMHhmZmZmZmZmZiB8fCBlIDwgMSkgcmV0dXJuIEJpZ0ludGVnZXIuT05FOwogIHZhciByID0gbmJpKCksIHIyID0gbmJpKCksIGcgPSB6LmNvbnZlcnQodGhpcyksIGkgPSBuYml0cyhlKS0xOwogIGcuY29weVRvKHIpOwogIHdoaWxlKC0taSA+PSAwKSB7CiAgICB6LnNxclRvKHIscjIpOwogICAgaWYoKGUmKDE8PGkpKSA+IDApIHoubXVsVG8ocjIsZyxyKTsKICAgIGVsc2UgeyB2YXIgdCA9IHI7IHIgPSByMjsgcjIgPSB0OyB9CiAgfQogIHJldHVybiB6LnJldmVydChyKTsKfQoKLy8gKHB1YmxpYykgdGhpc15lICUgbSwgMCA8PSBlIDwgMl4zMgpmdW5jdGlvbiBibk1vZFBvd0ludChlLG0pIHsKICB2YXIgejsKICBpZihlIDwgMjU2IHx8IG0uaXNFdmVuKCkpIHogPSBuZXcgQ2xhc3NpYyhtKTsgZWxzZSB6ID0gbmV3IE1vbnRnb21lcnkobSk7CiAgcmV0dXJuIHRoaXMuZXhwKGUseik7Cn0KCi8vIHByb3RlY3RlZApCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb3B5VG8gPSBibnBDb3B5VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21JbnQgPSBibnBGcm9tSW50OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tU3RyaW5nID0gYm5wRnJvbVN0cmluZzsKQmlnSW50ZWdlci5wcm90b3R5cGUuY2xhbXAgPSBibnBDbGFtcDsKQmlnSW50ZWdlci5wcm90b3R5cGUuZGxTaGlmdFRvID0gYm5wRExTaGlmdFRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kclNoaWZ0VG8gPSBibnBEUlNoaWZ0VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmxTaGlmdFRvID0gYm5wTFNoaWZ0VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLnJTaGlmdFRvID0gYm5wUlNoaWZ0VG87CkJpZ0ludGVnZXIucHJvdG90eXBlLnN1YlRvID0gYm5wU3ViVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5VG8gPSBibnBNdWx0aXBseVRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmVUbyA9IGJucFNxdWFyZVRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZSZW1UbyA9IGJucERpdlJlbVRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5pbnZEaWdpdCA9IGJucEludkRpZ2l0OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBibnBJc0V2ZW47CkJpZ0ludGVnZXIucHJvdG90eXBlLmV4cCA9IGJucEV4cDsKCi8vIHB1YmxpYwpCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGJuVG9TdHJpbmc7CkJpZ0ludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGJuTmVnYXRlOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBibkFiczsKQmlnSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZVRvID0gYm5Db21wYXJlVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IGJuQml0TGVuZ3RoOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5tb2QgPSBibk1vZDsKQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93SW50ID0gYm5Nb2RQb3dJbnQ7CgovLyAiY29uc3RhbnRzIgpCaWdJbnRlZ2VyLlpFUk8gPSBuYnYoMCk7CkJpZ0ludGVnZXIuT05FID0gbmJ2KDEpOwoKLy8ganNibjIgbGliCgovL0NvcHlyaWdodCAoYykgMjAwNS0yMDA5ICBUb20gV3UKLy9BbGwgUmlnaHRzIFJlc2VydmVkLgovL1NlZSAiTElDRU5TRSIgZm9yIGRldGFpbHMgKFNlZSBqc2JuLmpzIGZvciBMSUNFTlNFKS4KCi8vRXh0ZW5kZWQgSmF2YVNjcmlwdCBCTiBmdW5jdGlvbnMsIHJlcXVpcmVkIGZvciBSU0EgcHJpdmF0ZSBvcHMuCgovL1ZlcnNpb24gMS4xOiBuZXcgQmlnSW50ZWdlcigiMCIsIDEwKSByZXR1cm5zICJwcm9wZXIiIHplcm8KCi8vKHB1YmxpYykKZnVuY3Rpb24gYm5DbG9uZSgpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5jb3B5VG8ocik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHJldHVybiB2YWx1ZSBhcyBpbnRlZ2VyCmZ1bmN0aW9uIGJuSW50VmFsdWUoKSB7CmlmKHRoaXMucyA8IDApIHsKIGlmKHRoaXMudCA9PSAxKSByZXR1cm4gdGhpcy5kYXRhWzBdLXRoaXMuRFY7CiBlbHNlIGlmKHRoaXMudCA9PSAwKSByZXR1cm4gLTE7Cn0gZWxzZSBpZih0aGlzLnQgPT0gMSkgcmV0dXJuIHRoaXMuZGF0YVswXTsKZWxzZSBpZih0aGlzLnQgPT0gMCkgcmV0dXJuIDA7Ci8vIGFzc3VtZXMgMTYgPCBEQiA8IDMyCnJldHVybiAoKHRoaXMuZGF0YVsxXSYoKDE8PCgzMi10aGlzLkRCKSktMSkpPDx0aGlzLkRCKXx0aGlzLmRhdGFbMF07Cn0KCi8vKHB1YmxpYykgcmV0dXJuIHZhbHVlIGFzIGJ5dGUKZnVuY3Rpb24gYm5CeXRlVmFsdWUoKSB7IHJldHVybiAodGhpcy50PT0wKT90aGlzLnM6KHRoaXMuZGF0YVswXTw8MjQpPj4yNDsgfQoKLy8ocHVibGljKSByZXR1cm4gdmFsdWUgYXMgc2hvcnQgKGFzc3VtZXMgREI+PTE2KQpmdW5jdGlvbiBiblNob3J0VmFsdWUoKSB7IHJldHVybiAodGhpcy50PT0wKT90aGlzLnM6KHRoaXMuZGF0YVswXTw8MTYpPj4xNjsgfQoKLy8ocHJvdGVjdGVkKSByZXR1cm4geCBzLnQuIHJeeCA8IERWCmZ1bmN0aW9uIGJucENodW5rU2l6ZShyKSB7IHJldHVybiBNYXRoLmZsb29yKE1hdGguTE4yKnRoaXMuREIvTWF0aC5sb2cocikpOyB9CgovLyhwdWJsaWMpIDAgaWYgdGhpcyA9PSAwLCAxIGlmIHRoaXMgPiAwCmZ1bmN0aW9uIGJuU2lnTnVtKCkgewppZih0aGlzLnMgPCAwKSByZXR1cm4gLTE7CmVsc2UgaWYodGhpcy50IDw9IDAgfHwgKHRoaXMudCA9PSAxICYmIHRoaXMuZGF0YVswXSA8PSAwKSkgcmV0dXJuIDA7CmVsc2UgcmV0dXJuIDE7Cn0KCi8vKHByb3RlY3RlZCkgY29udmVydCB0byByYWRpeCBzdHJpbmcKZnVuY3Rpb24gYm5wVG9SYWRpeChiKSB7CmlmKGIgPT0gbnVsbCkgYiA9IDEwOwppZih0aGlzLnNpZ251bSgpID09IDAgfHwgYiA8IDIgfHwgYiA+IDM2KSByZXR1cm4gIjAiOwp2YXIgY3MgPSB0aGlzLmNodW5rU2l6ZShiKTsKdmFyIGEgPSBNYXRoLnBvdyhiLGNzKTsKdmFyIGQgPSBuYnYoYSksIHkgPSBuYmkoKSwgeiA9IG5iaSgpLCByID0gIiI7CnRoaXMuZGl2UmVtVG8oZCx5LHopOwp3aGlsZSh5LnNpZ251bSgpID4gMCkgewogciA9IChhK3ouaW50VmFsdWUoKSkudG9TdHJpbmcoYikuc3Vic3RyKDEpICsgcjsKIHkuZGl2UmVtVG8oZCx5LHopOwp9CnJldHVybiB6LmludFZhbHVlKCkudG9TdHJpbmcoYikgKyByOwp9CgovLyhwcm90ZWN0ZWQpIGNvbnZlcnQgZnJvbSByYWRpeCBzdHJpbmcKZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsYikgewp0aGlzLmZyb21JbnQoMCk7CmlmKGIgPT0gbnVsbCkgYiA9IDEwOwp2YXIgY3MgPSB0aGlzLmNodW5rU2l6ZShiKTsKdmFyIGQgPSBNYXRoLnBvdyhiLGNzKSwgbWkgPSBmYWxzZSwgaiA9IDAsIHcgPSAwOwpmb3IodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkgewogdmFyIHggPSBpbnRBdChzLGkpOwogaWYoeCA8IDApIHsKICAgaWYocy5jaGFyQXQoaSkgPT0gIi0iICYmIHRoaXMuc2lnbnVtKCkgPT0gMCkgbWkgPSB0cnVlOwogICBjb250aW51ZTsKIH0KIHcgPSBiKncreDsKIGlmKCsraiA+PSBjcykgewogICB0aGlzLmRNdWx0aXBseShkKTsKICAgdGhpcy5kQWRkT2Zmc2V0KHcsMCk7CiAgIGogPSAwOwogICB3ID0gMDsKIH0KfQppZihqID4gMCkgewogdGhpcy5kTXVsdGlwbHkoTWF0aC5wb3coYixqKSk7CiB0aGlzLmRBZGRPZmZzZXQodywwKTsKfQppZihtaSkgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHRoaXMsdGhpcyk7Cn0KCi8vKHByb3RlY3RlZCkgYWx0ZXJuYXRlIGNvbnN0cnVjdG9yCmZ1bmN0aW9uIGJucEZyb21OdW1iZXIoYSxiLGMpIHsKaWYoIm51bWJlciIgPT0gdHlwZW9mIGIpIHsKIC8vIG5ldyBCaWdJbnRlZ2VyKGludCxpbnQsUk5HKQogaWYoYSA8IDIpIHRoaXMuZnJvbUludCgxKTsKIGVsc2UgewogICB0aGlzLmZyb21OdW1iZXIoYSxjKTsKICAgaWYoIXRoaXMudGVzdEJpdChhLTEpKSAgLy8gZm9yY2UgTVNCIHNldAogICAgIHRoaXMuYml0d2lzZVRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChhLTEpLG9wX29yLHRoaXMpOwogICBpZih0aGlzLmlzRXZlbigpKSB0aGlzLmRBZGRPZmZzZXQoMSwwKTsgLy8gZm9yY2Ugb2RkCiAgIHdoaWxlKCF0aGlzLmlzUHJvYmFibGVQcmltZShiKSkgewogICAgIHRoaXMuZEFkZE9mZnNldCgyLDApOwogICAgIGlmKHRoaXMuYml0TGVuZ3RoKCkgPiBhKSB0aGlzLnN1YlRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChhLTEpLHRoaXMpOwogICB9CiB9Cn0gZWxzZSB7CiAvLyBuZXcgQmlnSW50ZWdlcihpbnQsUk5HKQogdmFyIHggPSBuZXcgQXJyYXkoKSwgdCA9IGEmNzsKIHgubGVuZ3RoID0gKGE+PjMpKzE7CiBiLm5leHRCeXRlcyh4KTsKIGlmKHQgPiAwKSB4WzBdICY9ICgoMTw8dCktMSk7IGVsc2UgeFswXSA9IDA7CiB0aGlzLmZyb21TdHJpbmcoeCwyNTYpOwp9Cn0KCi8vKHB1YmxpYykgY29udmVydCB0byBiaWdlbmRpYW4gYnl0ZSBhcnJheQpmdW5jdGlvbiBiblRvQnl0ZUFycmF5KCkgewp2YXIgaSA9IHRoaXMudCwgciA9IG5ldyBBcnJheSgpOwpyWzBdID0gdGhpcy5zOwp2YXIgcCA9IHRoaXMuREItKGkqdGhpcy5EQiklOCwgZCwgayA9IDA7CmlmKGktLSA+IDApIHsKIGlmKHAgPCB0aGlzLkRCICYmIChkID0gdGhpcy5kYXRhW2ldPj5wKSAhPSAodGhpcy5zJnRoaXMuRE0pPj5wKQogICByW2srK10gPSBkfCh0aGlzLnM8PCh0aGlzLkRCLXApKTsKIHdoaWxlKGkgPj0gMCkgewogICBpZihwIDwgOCkgewogICAgIGQgPSAodGhpcy5kYXRhW2ldJigoMTw8cCktMSkpPDwoOC1wKTsKICAgICBkIHw9IHRoaXMuZGF0YVstLWldPj4ocCs9dGhpcy5EQi04KTsKICAgfSBlbHNlIHsKICAgICBkID0gKHRoaXMuZGF0YVtpXT4+KHAtPTgpKSYweGZmOwogICAgIGlmKHAgPD0gMCkgeyBwICs9IHRoaXMuREI7IC0taTsgfQogICB9CiAgIGlmKChkJjB4ODApICE9IDApIGQgfD0gLTI1NjsKICAgaWYoayA9PSAwICYmICh0aGlzLnMmMHg4MCkgIT0gKGQmMHg4MCkpICsrazsKICAgaWYoayA+IDAgfHwgZCAhPSB0aGlzLnMpIHJbaysrXSA9IGQ7CiB9Cn0KcmV0dXJuIHI7Cn0KCmZ1bmN0aW9uIGJuRXF1YWxzKGEpIHsgcmV0dXJuKHRoaXMuY29tcGFyZVRvKGEpPT0wKTsgfQpmdW5jdGlvbiBibk1pbihhKSB7IHJldHVybih0aGlzLmNvbXBhcmVUbyhhKTwwKT90aGlzOmE7IH0KZnVuY3Rpb24gYm5NYXgoYSkgeyByZXR1cm4odGhpcy5jb21wYXJlVG8oYSk+MCk/dGhpczphOyB9CgovLyhwcm90ZWN0ZWQpIHIgPSB0aGlzIG9wIGEgKGJpdHdpc2UpCmZ1bmN0aW9uIGJucEJpdHdpc2VUbyhhLG9wLHIpIHsKdmFyIGksIGYsIG0gPSBNYXRoLm1pbihhLnQsdGhpcy50KTsKZm9yKGkgPSAwOyBpIDwgbTsgKytpKSByLmRhdGFbaV0gPSBvcCh0aGlzLmRhdGFbaV0sYS5kYXRhW2ldKTsKaWYoYS50IDwgdGhpcy50KSB7CiBmID0gYS5zJnRoaXMuRE07CiBmb3IoaSA9IG07IGkgPCB0aGlzLnQ7ICsraSkgci5kYXRhW2ldID0gb3AodGhpcy5kYXRhW2ldLGYpOwogci50ID0gdGhpcy50Owp9IGVsc2UgewogZiA9IHRoaXMucyZ0aGlzLkRNOwogZm9yKGkgPSBtOyBpIDwgYS50OyArK2kpIHIuZGF0YVtpXSA9IG9wKGYsYS5kYXRhW2ldKTsKIHIudCA9IGEudDsKfQpyLnMgPSBvcCh0aGlzLnMsYS5zKTsKci5jbGFtcCgpOwp9CgovLyhwdWJsaWMpIHRoaXMgJiBhCmZ1bmN0aW9uIG9wX2FuZCh4LHkpIHsgcmV0dXJuIHgmeTsgfQpmdW5jdGlvbiBibkFuZChhKSB7IHZhciByID0gbmJpKCk7IHRoaXMuYml0d2lzZVRvKGEsb3BfYW5kLHIpOyByZXR1cm4gcjsgfQoKLy8ocHVibGljKSB0aGlzIHwgYQpmdW5jdGlvbiBvcF9vcih4LHkpIHsgcmV0dXJuIHh8eTsgfQpmdW5jdGlvbiBibk9yKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5iaXR3aXNlVG8oYSxvcF9vcixyKTsgcmV0dXJuIHI7IH0KCi8vKHB1YmxpYykgdGhpcyBeIGEKZnVuY3Rpb24gb3BfeG9yKHgseSkgeyByZXR1cm4geF55OyB9CmZ1bmN0aW9uIGJuWG9yKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5iaXR3aXNlVG8oYSxvcF94b3Iscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHRoaXMgJiB+YQpmdW5jdGlvbiBvcF9hbmRub3QoeCx5KSB7IHJldHVybiB4Jn55OyB9CmZ1bmN0aW9uIGJuQW5kTm90KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5iaXR3aXNlVG8oYSxvcF9hbmRub3Qscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIH50aGlzCmZ1bmN0aW9uIGJuTm90KCkgewp2YXIgciA9IG5iaSgpOwpmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy50OyArK2kpIHIuZGF0YVtpXSA9IHRoaXMuRE0mfnRoaXMuZGF0YVtpXTsKci50ID0gdGhpcy50OwpyLnMgPSB+dGhpcy5zOwpyZXR1cm4gcjsKfQoKLy8ocHVibGljKSB0aGlzIDw8IG4KZnVuY3Rpb24gYm5TaGlmdExlZnQobikgewp2YXIgciA9IG5iaSgpOwppZihuIDwgMCkgdGhpcy5yU2hpZnRUbygtbixyKTsgZWxzZSB0aGlzLmxTaGlmdFRvKG4scik7CnJldHVybiByOwp9CgovLyhwdWJsaWMpIHRoaXMgPj4gbgpmdW5jdGlvbiBiblNoaWZ0UmlnaHQobikgewp2YXIgciA9IG5iaSgpOwppZihuIDwgMCkgdGhpcy5sU2hpZnRUbygtbixyKTsgZWxzZSB0aGlzLnJTaGlmdFRvKG4scik7CnJldHVybiByOwp9CgovL3JldHVybiBpbmRleCBvZiBsb3dlc3QgMS1iaXQgaW4geCwgeCA8IDJeMzEKZnVuY3Rpb24gbGJpdCh4KSB7CmlmKHggPT0gMCkgcmV0dXJuIC0xOwp2YXIgciA9IDA7CmlmKCh4JjB4ZmZmZikgPT0gMCkgeyB4ID4+PSAxNjsgciArPSAxNjsgfQppZigoeCYweGZmKSA9PSAwKSB7IHggPj49IDg7IHIgKz0gODsgfQppZigoeCYweGYpID09IDApIHsgeCA+Pj0gNDsgciArPSA0OyB9CmlmKCh4JjMpID09IDApIHsgeCA+Pj0gMjsgciArPSAyOyB9CmlmKCh4JjEpID09IDApICsrcjsKcmV0dXJuIHI7Cn0KCi8vKHB1YmxpYykgcmV0dXJucyBpbmRleCBvZiBsb3dlc3QgMS1iaXQgKG9yIC0xIGlmIG5vbmUpCmZ1bmN0aW9uIGJuR2V0TG93ZXN0U2V0Qml0KCkgewpmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy50OyArK2kpCiBpZih0aGlzLmRhdGFbaV0gIT0gMCkgcmV0dXJuIGkqdGhpcy5EQitsYml0KHRoaXMuZGF0YVtpXSk7CmlmKHRoaXMucyA8IDApIHJldHVybiB0aGlzLnQqdGhpcy5EQjsKcmV0dXJuIC0xOwp9CgovL3JldHVybiBudW1iZXIgb2YgMSBiaXRzIGluIHgKZnVuY3Rpb24gY2JpdCh4KSB7CnZhciByID0gMDsKd2hpbGUoeCAhPSAwKSB7IHggJj0geC0xOyArK3I7IH0KcmV0dXJuIHI7Cn0KCi8vKHB1YmxpYykgcmV0dXJuIG51bWJlciBvZiBzZXQgYml0cwpmdW5jdGlvbiBibkJpdENvdW50KCkgewp2YXIgciA9IDAsIHggPSB0aGlzLnMmdGhpcy5ETTsKZm9yKHZhciBpID0gMDsgaSA8IHRoaXMudDsgKytpKSByICs9IGNiaXQodGhpcy5kYXRhW2ldXngpOwpyZXR1cm4gcjsKfQoKLy8ocHVibGljKSB0cnVlIGlmZiBudGggYml0IGlzIHNldApmdW5jdGlvbiBiblRlc3RCaXQobikgewp2YXIgaiA9IE1hdGguZmxvb3Iobi90aGlzLkRCKTsKaWYoaiA+PSB0aGlzLnQpIHJldHVybih0aGlzLnMhPTApOwpyZXR1cm4oKHRoaXMuZGF0YVtqXSYoMTw8KG4ldGhpcy5EQikpKSE9MCk7Cn0KCi8vKHByb3RlY3RlZCkgdGhpcyBvcCAoMTw8bikKZnVuY3Rpb24gYm5wQ2hhbmdlQml0KG4sb3ApIHsKdmFyIHIgPSBCaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQobik7CnRoaXMuYml0d2lzZVRvKHIsb3Ascik7CnJldHVybiByOwp9CgovLyhwdWJsaWMpIHRoaXMgfCAoMTw8bikKZnVuY3Rpb24gYm5TZXRCaXQobikgeyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixvcF9vcik7IH0KCi8vKHB1YmxpYykgdGhpcyAmIH4oMTw8bikKZnVuY3Rpb24gYm5DbGVhckJpdChuKSB7IHJldHVybiB0aGlzLmNoYW5nZUJpdChuLG9wX2FuZG5vdCk7IH0KCi8vKHB1YmxpYykgdGhpcyBeICgxPDxuKQpmdW5jdGlvbiBibkZsaXBCaXQobikgeyByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobixvcF94b3IpOyB9CgovLyhwcm90ZWN0ZWQpIHIgPSB0aGlzICsgYQpmdW5jdGlvbiBibnBBZGRUbyhhLHIpIHsKdmFyIGkgPSAwLCBjID0gMCwgbSA9IE1hdGgubWluKGEudCx0aGlzLnQpOwp3aGlsZShpIDwgbSkgewogYyArPSB0aGlzLmRhdGFbaV0rYS5kYXRhW2ldOwogci5kYXRhW2krK10gPSBjJnRoaXMuRE07CiBjID4+PSB0aGlzLkRCOwp9CmlmKGEudCA8IHRoaXMudCkgewogYyArPSBhLnM7CiB3aGlsZShpIDwgdGhpcy50KSB7CiAgIGMgKz0gdGhpcy5kYXRhW2ldOwogICByLmRhdGFbaSsrXSA9IGMmdGhpcy5ETTsKICAgYyA+Pj0gdGhpcy5EQjsKIH0KIGMgKz0gdGhpcy5zOwp9IGVsc2UgewogYyArPSB0aGlzLnM7CiB3aGlsZShpIDwgYS50KSB7CiAgIGMgKz0gYS5kYXRhW2ldOwogICByLmRhdGFbaSsrXSA9IGMmdGhpcy5ETTsKICAgYyA+Pj0gdGhpcy5EQjsKIH0KIGMgKz0gYS5zOwp9CnIucyA9IChjPDApPy0xOjA7CmlmKGMgPiAwKSByLmRhdGFbaSsrXSA9IGM7CmVsc2UgaWYoYyA8IC0xKSByLmRhdGFbaSsrXSA9IHRoaXMuRFYrYzsKci50ID0gaTsKci5jbGFtcCgpOwp9CgovLyhwdWJsaWMpIHRoaXMgKyBhCmZ1bmN0aW9uIGJuQWRkKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5hZGRUbyhhLHIpOyByZXR1cm4gcjsgfQoKLy8ocHVibGljKSB0aGlzIC0gYQpmdW5jdGlvbiBiblN1YnRyYWN0KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5zdWJUbyhhLHIpOyByZXR1cm4gcjsgfQoKLy8ocHVibGljKSB0aGlzICogYQpmdW5jdGlvbiBibk11bHRpcGx5KGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5tdWx0aXBseVRvKGEscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHRoaXMgLyBhCmZ1bmN0aW9uIGJuRGl2aWRlKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5kaXZSZW1UbyhhLHIsbnVsbCk7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIHRoaXMgJSBhCmZ1bmN0aW9uIGJuUmVtYWluZGVyKGEpIHsgdmFyIHIgPSBuYmkoKTsgdGhpcy5kaXZSZW1UbyhhLG51bGwscik7IHJldHVybiByOyB9CgovLyhwdWJsaWMpIFt0aGlzL2EsdGhpcyVhXQpmdW5jdGlvbiBibkRpdmlkZUFuZFJlbWFpbmRlcihhKSB7CnZhciBxID0gbmJpKCksIHIgPSBuYmkoKTsKdGhpcy5kaXZSZW1UbyhhLHEscik7CnJldHVybiBuZXcgQXJyYXkocSxyKTsKfQoKLy8ocHJvdGVjdGVkKSB0aGlzICo9IG4sIHRoaXMgPj0gMCwgMSA8IG4gPCBEVgpmdW5jdGlvbiBibnBETXVsdGlwbHkobikgewp0aGlzLmRhdGFbdGhpcy50XSA9IHRoaXMuYW0oMCxuLTEsdGhpcywwLDAsdGhpcy50KTsKKyt0aGlzLnQ7CnRoaXMuY2xhbXAoKTsKfQoKLy8ocHJvdGVjdGVkKSB0aGlzICs9IG4gPDwgdyB3b3JkcywgdGhpcyA+PSAwCmZ1bmN0aW9uIGJucERBZGRPZmZzZXQobix3KSB7CmlmKG4gPT0gMCkgcmV0dXJuOwp3aGlsZSh0aGlzLnQgPD0gdykgdGhpcy5kYXRhW3RoaXMudCsrXSA9IDA7CnRoaXMuZGF0YVt3XSArPSBuOwp3aGlsZSh0aGlzLmRhdGFbd10gPj0gdGhpcy5EVikgewogdGhpcy5kYXRhW3ddIC09IHRoaXMuRFY7CiBpZigrK3cgPj0gdGhpcy50KSB0aGlzLmRhdGFbdGhpcy50KytdID0gMDsKICsrdGhpcy5kYXRhW3ddOwp9Cn0KCi8vQSAibnVsbCIgcmVkdWNlcgpmdW5jdGlvbiBOdWxsRXhwKCkge30KZnVuY3Rpb24gbk5vcCh4KSB7IHJldHVybiB4OyB9CmZ1bmN0aW9uIG5NdWxUbyh4LHkscikgeyB4Lm11bHRpcGx5VG8oeSxyKTsgfQpmdW5jdGlvbiBuU3FyVG8oeCxyKSB7IHguc3F1YXJlVG8ocik7IH0KCk51bGxFeHAucHJvdG90eXBlLmNvbnZlcnQgPSBuTm9wOwpOdWxsRXhwLnByb3RvdHlwZS5yZXZlcnQgPSBuTm9wOwpOdWxsRXhwLnByb3RvdHlwZS5tdWxUbyA9IG5NdWxUbzsKTnVsbEV4cC5wcm90b3R5cGUuc3FyVG8gPSBuU3FyVG87CgovLyhwdWJsaWMpIHRoaXNeZQpmdW5jdGlvbiBiblBvdyhlKSB7IHJldHVybiB0aGlzLmV4cChlLG5ldyBOdWxsRXhwKCkpOyB9CgovLyhwcm90ZWN0ZWQpIHIgPSBsb3dlciBuIHdvcmRzIG9mICJ0aGlzICogYSIsIGEudCA8PSBuCi8vInRoaXMiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0ZS4KZnVuY3Rpb24gYm5wTXVsdGlwbHlMb3dlclRvKGEsbixyKSB7CnZhciBpID0gTWF0aC5taW4odGhpcy50K2EudCxuKTsKci5zID0gMDsgLy8gYXNzdW1lcyBhLHRoaXMgPj0gMApyLnQgPSBpOwp3aGlsZShpID4gMCkgci5kYXRhWy0taV0gPSAwOwp2YXIgajsKZm9yKGogPSByLnQtdGhpcy50OyBpIDwgajsgKytpKSByLmRhdGFbaSt0aGlzLnRdID0gdGhpcy5hbSgwLGEuZGF0YVtpXSxyLGksMCx0aGlzLnQpOwpmb3IoaiA9IE1hdGgubWluKGEudCxuKTsgaSA8IGo7ICsraSkgdGhpcy5hbSgwLGEuZGF0YVtpXSxyLGksMCxuLWkpOwpyLmNsYW1wKCk7Cn0KCi8vKHByb3RlY3RlZCkgciA9ICJ0aGlzICogYSIgd2l0aG91dCBsb3dlciBuIHdvcmRzLCBuID4gMAovLyJ0aGlzIiBzaG91bGQgYmUgdGhlIGxhcmdlciBvbmUgaWYgYXBwcm9wcmlhdGUuCmZ1bmN0aW9uIGJucE11bHRpcGx5VXBwZXJUbyhhLG4scikgewotLW47CnZhciBpID0gci50ID0gdGhpcy50K2EudC1uOwpyLnMgPSAwOyAvLyBhc3N1bWVzIGEsdGhpcyA+PSAwCndoaWxlKC0taSA+PSAwKSByLmRhdGFbaV0gPSAwOwpmb3IoaSA9IE1hdGgubWF4KG4tdGhpcy50LDApOyBpIDwgYS50OyArK2kpCiByLmRhdGFbdGhpcy50K2ktbl0gPSB0aGlzLmFtKG4taSxhLmRhdGFbaV0sciwwLDAsdGhpcy50K2ktbik7CnIuY2xhbXAoKTsKci5kclNoaWZ0VG8oMSxyKTsKfQoKLy9CYXJyZXR0IG1vZHVsYXIgcmVkdWN0aW9uCmZ1bmN0aW9uIEJhcnJldHQobSkgewovLyBzZXR1cCBCYXJyZXR0CnRoaXMucjIgPSBuYmkoKTsKdGhpcy5xMyA9IG5iaSgpOwpCaWdJbnRlZ2VyLk9ORS5kbFNoaWZ0VG8oMiptLnQsdGhpcy5yMik7CnRoaXMubXUgPSB0aGlzLnIyLmRpdmlkZShtKTsKdGhpcy5tID0gbTsKfQoKZnVuY3Rpb24gYmFycmV0dENvbnZlcnQoeCkgewppZih4LnMgPCAwIHx8IHgudCA+IDIqdGhpcy5tLnQpIHJldHVybiB4Lm1vZCh0aGlzLm0pOwplbHNlIGlmKHguY29tcGFyZVRvKHRoaXMubSkgPCAwKSByZXR1cm4geDsKZWxzZSB7IHZhciByID0gbmJpKCk7IHguY29weVRvKHIpOyB0aGlzLnJlZHVjZShyKTsgcmV0dXJuIHI7IH0KfQoKZnVuY3Rpb24gYmFycmV0dFJldmVydCh4KSB7IHJldHVybiB4OyB9CgovL3ggPSB4IG1vZCBtIChIQUMgMTQuNDIpCmZ1bmN0aW9uIGJhcnJldHRSZWR1Y2UoeCkgewp4LmRyU2hpZnRUbyh0aGlzLm0udC0xLHRoaXMucjIpOwppZih4LnQgPiB0aGlzLm0udCsxKSB7IHgudCA9IHRoaXMubS50KzE7IHguY2xhbXAoKTsgfQp0aGlzLm11Lm11bHRpcGx5VXBwZXJUbyh0aGlzLnIyLHRoaXMubS50KzEsdGhpcy5xMyk7CnRoaXMubS5tdWx0aXBseUxvd2VyVG8odGhpcy5xMyx0aGlzLm0udCsxLHRoaXMucjIpOwp3aGlsZSh4LmNvbXBhcmVUbyh0aGlzLnIyKSA8IDApIHguZEFkZE9mZnNldCgxLHRoaXMubS50KzEpOwp4LnN1YlRvKHRoaXMucjIseCk7CndoaWxlKHguY29tcGFyZVRvKHRoaXMubSkgPj0gMCkgeC5zdWJUbyh0aGlzLm0seCk7Cn0KCi8vciA9IHheMiBtb2QgbTsgeCAhPSByCmZ1bmN0aW9uIGJhcnJldHRTcXJUbyh4LHIpIHsgeC5zcXVhcmVUbyhyKTsgdGhpcy5yZWR1Y2Uocik7IH0KCi8vciA9IHgqeSBtb2QgbTsgeCx5ICE9IHIKZnVuY3Rpb24gYmFycmV0dE11bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5LHIpOyB0aGlzLnJlZHVjZShyKTsgfQoKQmFycmV0dC5wcm90b3R5cGUuY29udmVydCA9IGJhcnJldHRDb252ZXJ0OwpCYXJyZXR0LnByb3RvdHlwZS5yZXZlcnQgPSBiYXJyZXR0UmV2ZXJ0OwpCYXJyZXR0LnByb3RvdHlwZS5yZWR1Y2UgPSBiYXJyZXR0UmVkdWNlOwpCYXJyZXR0LnByb3RvdHlwZS5tdWxUbyA9IGJhcnJldHRNdWxUbzsKQmFycmV0dC5wcm90b3R5cGUuc3FyVG8gPSBiYXJyZXR0U3FyVG87CgovLyhwdWJsaWMpIHRoaXNeZSAlIG0gKEhBQyAxNC44NSkKZnVuY3Rpb24gYm5Nb2RQb3coZSxtKSB7CnZhciBpID0gZS5iaXRMZW5ndGgoKSwgaywgciA9IG5idigxKSwgejsKaWYoaSA8PSAwKSByZXR1cm4gcjsKZWxzZSBpZihpIDwgMTgpIGsgPSAxOwplbHNlIGlmKGkgPCA0OCkgayA9IDM7CmVsc2UgaWYoaSA8IDE0NCkgayA9IDQ7CmVsc2UgaWYoaSA8IDc2OCkgayA9IDU7CmVsc2UgayA9IDY7CmlmKGkgPCA4KQogeiA9IG5ldyBDbGFzc2ljKG0pOwplbHNlIGlmKG0uaXNFdmVuKCkpCiB6ID0gbmV3IEJhcnJldHQobSk7CmVsc2UKIHogPSBuZXcgTW9udGdvbWVyeShtKTsKCi8vIHByZWNvbXB1dGF0aW9uCnZhciBnID0gbmV3IEFycmF5KCksIG4gPSAzLCBrMSA9IGstMSwga20gPSAoMTw8ayktMTsKZ1sxXSA9IHouY29udmVydCh0aGlzKTsKaWYoayA+IDEpIHsKIHZhciBnMiA9IG5iaSgpOwogei5zcXJUbyhnWzFdLGcyKTsKIHdoaWxlKG4gPD0ga20pIHsKICAgZ1tuXSA9IG5iaSgpOwogICB6Lm11bFRvKGcyLGdbbi0yXSxnW25dKTsKICAgbiArPSAyOwogfQp9Cgp2YXIgaiA9IGUudC0xLCB3LCBpczEgPSB0cnVlLCByMiA9IG5iaSgpLCB0OwppID0gbmJpdHMoZS5kYXRhW2pdKS0xOwp3aGlsZShqID49IDApIHsKIGlmKGkgPj0gazEpIHcgPSAoZS5kYXRhW2pdPj4oaS1rMSkpJmttOwogZWxzZSB7CiAgIHcgPSAoZS5kYXRhW2pdJigoMTw8KGkrMSkpLTEpKTw8KGsxLWkpOwogICBpZihqID4gMCkgdyB8PSBlLmRhdGFbai0xXT4+KHRoaXMuREIraS1rMSk7CiB9CgogbiA9IGs7CiB3aGlsZSgodyYxKSA9PSAwKSB7IHcgPj49IDE7IC0tbjsgfQogaWYoKGkgLT0gbikgPCAwKSB7IGkgKz0gdGhpcy5EQjsgLS1qOyB9CiBpZihpczEpIHsgIC8vIHJldCA9PSAxLCBkb24ndCBib3RoZXIgc3F1YXJpbmcgb3IgbXVsdGlwbHlpbmcgaXQKICAgZ1t3XS5jb3B5VG8ocik7CiAgIGlzMSA9IGZhbHNlOwogfSBlbHNlIHsKICAgd2hpbGUobiA+IDEpIHsgei5zcXJUbyhyLHIyKTsgei5zcXJUbyhyMixyKTsgbiAtPSAyOyB9CiAgIGlmKG4gPiAwKSB6LnNxclRvKHIscjIpOyBlbHNlIHsgdCA9IHI7IHIgPSByMjsgcjIgPSB0OyB9CiAgIHoubXVsVG8ocjIsZ1t3XSxyKTsKIH0KCiB3aGlsZShqID49IDAgJiYgKGUuZGF0YVtqXSYoMTw8aSkpID09IDApIHsKICAgei5zcXJUbyhyLHIyKTsgdCA9IHI7IHIgPSByMjsgcjIgPSB0OwogICBpZigtLWkgPCAwKSB7IGkgPSB0aGlzLkRCLTE7IC0tajsgfQogfQp9CnJldHVybiB6LnJldmVydChyKTsKfQoKLy8ocHVibGljKSBnY2QodGhpcyxhKSAoSEFDIDE0LjU0KQpmdW5jdGlvbiBibkdDRChhKSB7CnZhciB4ID0gKHRoaXMuczwwKT90aGlzLm5lZ2F0ZSgpOnRoaXMuY2xvbmUoKTsKdmFyIHkgPSAoYS5zPDApP2EubmVnYXRlKCk6YS5jbG9uZSgpOwppZih4LmNvbXBhcmVUbyh5KSA8IDApIHsgdmFyIHQgPSB4OyB4ID0geTsgeSA9IHQ7IH0KdmFyIGkgPSB4LmdldExvd2VzdFNldEJpdCgpLCBnID0geS5nZXRMb3dlc3RTZXRCaXQoKTsKaWYoZyA8IDApIHJldHVybiB4OwppZihpIDwgZykgZyA9IGk7CmlmKGcgPiAwKSB7CiB4LnJTaGlmdFRvKGcseCk7CiB5LnJTaGlmdFRvKGcseSk7Cn0Kd2hpbGUoeC5zaWdudW0oKSA+IDApIHsKIGlmKChpID0geC5nZXRMb3dlc3RTZXRCaXQoKSkgPiAwKSB4LnJTaGlmdFRvKGkseCk7CiBpZigoaSA9IHkuZ2V0TG93ZXN0U2V0Qml0KCkpID4gMCkgeS5yU2hpZnRUbyhpLHkpOwogaWYoeC5jb21wYXJlVG8oeSkgPj0gMCkgewogICB4LnN1YlRvKHkseCk7CiAgIHguclNoaWZ0VG8oMSx4KTsKIH0gZWxzZSB7CiAgIHkuc3ViVG8oeCx5KTsKICAgeS5yU2hpZnRUbygxLHkpOwogfQp9CmlmKGcgPiAwKSB5LmxTaGlmdFRvKGcseSk7CnJldHVybiB5Owp9CgovLyhwcm90ZWN0ZWQpIHRoaXMgJSBuLCBuIDwgMl4yNgpmdW5jdGlvbiBibnBNb2RJbnQobikgewppZihuIDw9IDApIHJldHVybiAwOwp2YXIgZCA9IHRoaXMuRFYlbiwgciA9ICh0aGlzLnM8MCk/bi0xOjA7CmlmKHRoaXMudCA+IDApCiBpZihkID09IDApIHIgPSB0aGlzLmRhdGFbMF0lbjsKIGVsc2UgZm9yKHZhciBpID0gdGhpcy50LTE7IGkgPj0gMDsgLS1pKSByID0gKGQqcit0aGlzLmRhdGFbaV0pJW47CnJldHVybiByOwp9CgovLyhwdWJsaWMpIDEvdGhpcyAlIG0gKEhBQyAxNC42MSkKZnVuY3Rpb24gYm5Nb2RJbnZlcnNlKG0pIHsKdmFyIGFjID0gbS5pc0V2ZW4oKTsKaWYoKHRoaXMuaXNFdmVuKCkgJiYgYWMpIHx8IG0uc2lnbnVtKCkgPT0gMCkgcmV0dXJuIEJpZ0ludGVnZXIuWkVSTzsKdmFyIHUgPSBtLmNsb25lKCksIHYgPSB0aGlzLmNsb25lKCk7CnZhciBhID0gbmJ2KDEpLCBiID0gbmJ2KDApLCBjID0gbmJ2KDApLCBkID0gbmJ2KDEpOwp3aGlsZSh1LnNpZ251bSgpICE9IDApIHsKIHdoaWxlKHUuaXNFdmVuKCkpIHsKICAgdS5yU2hpZnRUbygxLHUpOwogICBpZihhYykgewogICAgIGlmKCFhLmlzRXZlbigpIHx8ICFiLmlzRXZlbigpKSB7IGEuYWRkVG8odGhpcyxhKTsgYi5zdWJUbyhtLGIpOyB9CiAgICAgYS5yU2hpZnRUbygxLGEpOwogICB9IGVsc2UgaWYoIWIuaXNFdmVuKCkpIGIuc3ViVG8obSxiKTsKICAgYi5yU2hpZnRUbygxLGIpOwogfQogd2hpbGUodi5pc0V2ZW4oKSkgewogICB2LnJTaGlmdFRvKDEsdik7CiAgIGlmKGFjKSB7CiAgICAgaWYoIWMuaXNFdmVuKCkgfHwgIWQuaXNFdmVuKCkpIHsgYy5hZGRUbyh0aGlzLGMpOyBkLnN1YlRvKG0sZCk7IH0KICAgICBjLnJTaGlmdFRvKDEsYyk7CiAgIH0gZWxzZSBpZighZC5pc0V2ZW4oKSkgZC5zdWJUbyhtLGQpOwogICBkLnJTaGlmdFRvKDEsZCk7CiB9CiBpZih1LmNvbXBhcmVUbyh2KSA+PSAwKSB7CiAgIHUuc3ViVG8odix1KTsKICAgaWYoYWMpIGEuc3ViVG8oYyxhKTsKICAgYi5zdWJUbyhkLGIpOwogfSBlbHNlIHsKICAgdi5zdWJUbyh1LHYpOwogICBpZihhYykgYy5zdWJUbyhhLGMpOwogICBkLnN1YlRvKGIsZCk7CiB9Cn0KaWYodi5jb21wYXJlVG8oQmlnSW50ZWdlci5PTkUpICE9IDApIHJldHVybiBCaWdJbnRlZ2VyLlpFUk87CmlmKGQuY29tcGFyZVRvKG0pID49IDApIHJldHVybiBkLnN1YnRyYWN0KG0pOwppZihkLnNpZ251bSgpIDwgMCkgZC5hZGRUbyhtLGQpOyBlbHNlIHJldHVybiBkOwppZihkLnNpZ251bSgpIDwgMCkgcmV0dXJuIGQuYWRkKG0pOyBlbHNlIHJldHVybiBkOwp9Cgp2YXIgbG93cHJpbWVzID0gWzIsMyw1LDcsMTEsMTMsMTcsMTksMjMsMjksMzEsMzcsNDEsNDMsNDcsNTMsNTksNjEsNjcsNzEsNzMsNzksODMsODksOTcsMTAxLDEwMywxMDcsMTA5LDExMywxMjcsMTMxLDEzNywxMzksMTQ5LDE1MSwxNTcsMTYzLDE2NywxNzMsMTc5LDE4MSwxOTEsMTkzLDE5NywxOTksMjExLDIyMywyMjcsMjI5LDIzMywyMzksMjQxLDI1MSwyNTcsMjYzLDI2OSwyNzEsMjc3LDI4MSwyODMsMjkzLDMwNywzMTEsMzEzLDMxNywzMzEsMzM3LDM0NywzNDksMzUzLDM1OSwzNjcsMzczLDM3OSwzODMsMzg5LDM5Nyw0MDEsNDA5LDQxOSw0MjEsNDMxLDQzMyw0MzksNDQzLDQ0OSw0NTcsNDYxLDQ2Myw0NjcsNDc5LDQ4Nyw0OTEsNDk5LDUwMyw1MDldOwp2YXIgbHBsaW0gPSAoMTw8MjYpL2xvd3ByaW1lc1tsb3dwcmltZXMubGVuZ3RoLTFdOwoKLy8ocHVibGljKSB0ZXN0IHByaW1hbGl0eSB3aXRoIGNlcnRhaW50eSA+PSAxLS41XnQKZnVuY3Rpb24gYm5Jc1Byb2JhYmxlUHJpbWUodCkgewp2YXIgaSwgeCA9IHRoaXMuYWJzKCk7CmlmKHgudCA9PSAxICYmIHguZGF0YVswXSA8PSBsb3dwcmltZXNbbG93cHJpbWVzLmxlbmd0aC0xXSkgewogZm9yKGkgPSAwOyBpIDwgbG93cHJpbWVzLmxlbmd0aDsgKytpKQogICBpZih4LmRhdGFbMF0gPT0gbG93cHJpbWVzW2ldKSByZXR1cm4gdHJ1ZTsKIHJldHVybiBmYWxzZTsKfQppZih4LmlzRXZlbigpKSByZXR1cm4gZmFsc2U7CmkgPSAxOwp3aGlsZShpIDwgbG93cHJpbWVzLmxlbmd0aCkgewogdmFyIG0gPSBsb3dwcmltZXNbaV0sIGogPSBpKzE7CiB3aGlsZShqIDwgbG93cHJpbWVzLmxlbmd0aCAmJiBtIDwgbHBsaW0pIG0gKj0gbG93cHJpbWVzW2orK107CiBtID0geC5tb2RJbnQobSk7CiB3aGlsZShpIDwgaikgaWYobSVsb3dwcmltZXNbaSsrXSA9PSAwKSByZXR1cm4gZmFsc2U7Cn0KcmV0dXJuIHgubWlsbGVyUmFiaW4odCk7Cn0KCi8vKHByb3RlY3RlZCkgdHJ1ZSBpZiBwcm9iYWJseSBwcmltZSAoSEFDIDQuMjQsIE1pbGxlci1SYWJpbikKZnVuY3Rpb24gYm5wTWlsbGVyUmFiaW4odCkgewp2YXIgbjEgPSB0aGlzLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTsKdmFyIGsgPSBuMS5nZXRMb3dlc3RTZXRCaXQoKTsKaWYoayA8PSAwKSByZXR1cm4gZmFsc2U7CnZhciByID0gbjEuc2hpZnRSaWdodChrKTsKdmFyIHBybmcgPSBibkdldFBybmcoKTsKdmFyIGE7CmZvcih2YXIgaSA9IDA7IGkgPCB0OyArK2kpIHsKIC8vIHNlbGVjdCB3aXRuZXNzICdhJyBhdCByYW5kb20gZnJvbSBiZXR3ZWVuIDEgYW5kIG4xCiBkbyB7CiAgIGEgPSBuZXcgQmlnSW50ZWdlcih0aGlzLmJpdExlbmd0aCgpLCBwcm5nKTsKIH0KIHdoaWxlKGEuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA8PSAwIHx8IGEuY29tcGFyZVRvKG4xKSA+PSAwKTsKIHZhciB5ID0gYS5tb2RQb3cocix0aGlzKTsKIGlmKHkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSAhPSAwICYmIHkuY29tcGFyZVRvKG4xKSAhPSAwKSB7CiAgIHZhciBqID0gMTsKICAgd2hpbGUoaisrIDwgayAmJiB5LmNvbXBhcmVUbyhuMSkgIT0gMCkgewogICAgIHkgPSB5Lm1vZFBvd0ludCgyLHRoaXMpOwogICAgIGlmKHkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA9PSAwKSByZXR1cm4gZmFsc2U7CiAgIH0KICAgaWYoeS5jb21wYXJlVG8objEpICE9IDApIHJldHVybiBmYWxzZTsKIH0KfQpyZXR1cm4gdHJ1ZTsKfQoKLy8gZ2V0IHBzZXVkbyByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgpmdW5jdGlvbiBibkdldFBybmcoKSB7CiAgLy8gY3JlYXRlIHBybmcgd2l0aCBhcGkgdGhhdCBtYXRjaGVzIEJpZ0ludGVnZXIgc2VjdXJlIHJhbmRvbQogIHJldHVybiB7CiAgICAvLyB4IGlzIGFuIGFycmF5IHRvIGZpbGwgd2l0aCBieXRlcwogICAgbmV4dEJ5dGVzOiBmdW5jdGlvbih4KSB7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgeFtpXSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDB4MDEwMCk7CiAgICAgIH0KICAgIH0KICB9Owp9CgovL3Byb3RlY3RlZApCaWdJbnRlZ2VyLnByb3RvdHlwZS5jaHVua1NpemUgPSBibnBDaHVua1NpemU7CkJpZ0ludGVnZXIucHJvdG90eXBlLnRvUmFkaXggPSBibnBUb1JhZGl4OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5mcm9tUmFkaXggPSBibnBGcm9tUmFkaXg7CkJpZ0ludGVnZXIucHJvdG90eXBlLmZyb21OdW1iZXIgPSBibnBGcm9tTnVtYmVyOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXR3aXNlVG8gPSBibnBCaXR3aXNlVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLmNoYW5nZUJpdCA9IGJucENoYW5nZUJpdDsKQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkVG8gPSBibnBBZGRUbzsKQmlnSW50ZWdlci5wcm90b3R5cGUuZE11bHRpcGx5ID0gYm5wRE11bHRpcGx5OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kQWRkT2Zmc2V0ID0gYm5wREFkZE9mZnNldDsKQmlnSW50ZWdlci5wcm90b3R5cGUubXVsdGlwbHlMb3dlclRvID0gYm5wTXVsdGlwbHlMb3dlclRvOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseVVwcGVyVG8gPSBibnBNdWx0aXBseVVwcGVyVG87CkJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludCA9IGJucE1vZEludDsKQmlnSW50ZWdlci5wcm90b3R5cGUubWlsbGVyUmFiaW4gPSBibnBNaWxsZXJSYWJpbjsKCi8vcHVibGljCkJpZ0ludGVnZXIucHJvdG90eXBlLmNsb25lID0gYm5DbG9uZTsKQmlnSW50ZWdlci5wcm90b3R5cGUuaW50VmFsdWUgPSBibkludFZhbHVlOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5ieXRlVmFsdWUgPSBibkJ5dGVWYWx1ZTsKQmlnSW50ZWdlci5wcm90b3R5cGUuc2hvcnRWYWx1ZSA9IGJuU2hvcnRWYWx1ZTsKQmlnSW50ZWdlci5wcm90b3R5cGUuc2lnbnVtID0gYm5TaWdOdW07CkJpZ0ludGVnZXIucHJvdG90eXBlLnRvQnl0ZUFycmF5ID0gYm5Ub0J5dGVBcnJheTsKQmlnSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gYm5FcXVhbHM7CkJpZ0ludGVnZXIucHJvdG90eXBlLm1pbiA9IGJuTWluOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5tYXggPSBibk1heDsKQmlnSW50ZWdlci5wcm90b3R5cGUuYW5kID0gYm5BbmQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gYm5PcjsKQmlnSW50ZWdlci5wcm90b3R5cGUueG9yID0gYm5Yb3I7CkJpZ0ludGVnZXIucHJvdG90eXBlLmFuZE5vdCA9IGJuQW5kTm90OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5ub3QgPSBibk5vdDsKQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gYm5TaGlmdExlZnQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0UmlnaHQgPSBiblNoaWZ0UmlnaHQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLmdldExvd2VzdFNldEJpdCA9IGJuR2V0TG93ZXN0U2V0Qml0OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5iaXRDb3VudCA9IGJuQml0Q291bnQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLnRlc3RCaXQgPSBiblRlc3RCaXQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLnNldEJpdCA9IGJuU2V0Qml0OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5jbGVhckJpdCA9IGJuQ2xlYXJCaXQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLmZsaXBCaXQgPSBibkZsaXBCaXQ7CkJpZ0ludGVnZXIucHJvdG90eXBlLmFkZCA9IGJuQWRkOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGJuU3VidHJhY3Q7CkJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5ID0gYm5NdWx0aXBseTsKQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gYm5EaXZpZGU7CkJpZ0ludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IGJuUmVtYWluZGVyOwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGVBbmRSZW1haW5kZXIgPSBibkRpdmlkZUFuZFJlbWFpbmRlcjsKQmlnSW50ZWdlci5wcm90b3R5cGUubW9kUG93ID0gYm5Nb2RQb3c7CkJpZ0ludGVnZXIucHJvdG90eXBlLm1vZEludmVyc2UgPSBibk1vZEludmVyc2U7CkJpZ0ludGVnZXIucHJvdG90eXBlLnBvdyA9IGJuUG93OwpCaWdJbnRlZ2VyLnByb3RvdHlwZS5nY2QgPSBibkdDRDsKQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gYm5Jc1Byb2JhYmxlUHJpbWU7CgovL0JpZ0ludGVnZXIgaW50ZXJmYWNlcyBub3QgaW1wbGVtZW50ZWQgaW4ganNibjoKCi8vQmlnSW50ZWdlcihpbnQgc2lnbnVtLCBieXRlW10gbWFnbml0dWRlKQovL2RvdWJsZSBkb3VibGVWYWx1ZSgpCi8vZmxvYXQgZmxvYXRWYWx1ZSgpCi8vaW50IGhhc2hDb2RlKCkKLy9sb25nIGxvbmdWYWx1ZSgpCi8vc3RhdGljIEJpZ0ludGVnZXIgdmFsdWVPZihsb25nIHZhbCkKCmZvcmdlLmpzYm4gPSBmb3JnZS5qc2JuIHx8IHt9Owpmb3JnZS5qc2JuLkJpZ0ludGVnZXIgPSBCaWdJbnRlZ2VyOwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnanNibic7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9qc2JuJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgUEtDUyMxIHYyLjI6IFJTQS1PRUFQCiAqCiAqIE1vZGlmaWVkIGJ1dCBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIE1JVCBhbmQgQlNEIGxpY2Vuc2VkIGNvZGU6CiAqCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9ranVyL2pzandzL2Jsb2IvbWFzdGVyL3JzYS5qczoKICoKICogVGhlICdqc2p3cycoSlNPTiBXZWIgU2lnbmF0dXJlIEphdmFTY3JpcHQgTGlicmFyeSkgTGljZW5zZQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgS2VuamkgVXJ1c2hpbWEKICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAogKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgogKiBUSEUgU09GVFdBUkUuCiAqCiAqIGh0dHA6Ly93ZWJyc2EuY3ZzLnNvdXJjZWZvcmdlLm5ldC92aWV3dmMvd2VicnNhL0NsaWVudC9SU0FFUy1PQUVQLmpzP2NvbnRlbnQtdHlwZT10ZXh0JTJGcGxhaW46CiAqCiAqIFJTQUVTLU9BRVAuanMKICogJElkOiBSU0FFUy1PQUVQLmpzLHYgMS4xLjEuMSAyMDAzLzAzLzE5IDE1OjM3OjIwIGVsbGlzcHJpdGNoYXJkIEV4cCAkCiAqIEphdmFTY3JpcHQgSW1wbGVtZW50YXRpb24gb2YgUEtDUyAjMSB2Mi4xIFJTQSBDUllQVE9HUkFQSFkgU1RBTkRBUkQgKFJTQSBMYWJvcmF0b3JpZXMsIEp1bmUgMTQsIDIwMDIpCiAqIENvcHlyaWdodCAoQykgRWxsaXMgUHJpdGNoYXJkLCBHdWFyZGlhbiBVbmxpbWl0ZWQgMjAwMy4KICogQ29udGFjdDogZWxsaXNAbnVraW5ldGljcy5jb20KICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlLgogKgogKiBPZmZpY2lhbCBkb2N1bWVudGF0aW9uOiBodHRwOi8vd3d3LnJzYS5jb20vcnNhbGFicy9ub2RlLmFzcD9pZD0yMTI1CiAqCiAqIEBhdXRob3IgRXZhbiBKb25lcyAoaHR0cDovL2V2YW5qb25lcy5jYS8pCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLy8gc2hvcnRjdXQgZm9yIFBLQ1MjMSBBUEkKdmFyIHBrY3MxID0gZm9yZ2UucGtjczEgPSBmb3JnZS5wa2NzMSB8fCB7fTsKCi8qKgogKiBFbmNvZGUgdGhlIGdpdmVuIFJTQUVTLU9BRVAgbWVzc2FnZSAoTSkgdXNpbmcga2V5LCB3aXRoIG9wdGlvbmFsIGxhYmVsIChMKQogKiBhbmQgc2VlZC4KICoKICogVGhpcyBtZXRob2QgZG9lcyBub3QgcGVyZm9ybSBSU0EgZW5jcnlwdGlvbiwgaXQgb25seSBlbmNvZGVzIHRoZSBtZXNzYWdlCiAqIHVzaW5nIFJTQUVTLU9BRVAuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIFJTQSBrZXkgdG8gdXNlLgogKiBAcGFyYW0gbWVzc2FnZSB0aGUgbWVzc2FnZSB0byBlbmNvZGUuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgbGFiZWwgYW4gb3B0aW9uYWwgbGFiZWwgdG8gdXNlLgogKiAgICAgICAgICBzZWVkIHRoZSBzZWVkIHRvIHVzZS4KICogICAgICAgICAgbWQgdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UsIHVuZGVmaW5lZCBmb3IgU0hBLTEuCiAqICAgICAgICAgIG1nZjEgb3B0aW9uYWwgbWdmMSBwYXJhbWV0ZXJzOgogKiAgICAgICAgICAgIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIGZvciBNR0YxLgogKgogKiBAcmV0dXJuIHRoZSBlbmNvZGVkIG1lc3NhZ2UgYnl0ZXMuCiAqLwpwa2NzMS5lbmNvZGVfcnNhX29hZXAgPSBmdW5jdGlvbihrZXksIG1lc3NhZ2UsIG9wdGlvbnMpIHsKICAvLyBwYXJzZSBhcmd1bWVudHMKICB2YXIgbGFiZWw7CiAgdmFyIHNlZWQ7CiAgdmFyIG1kOwogIHZhciBtZ2YxTWQ7CiAgLy8gbGVnYWN5IGFyZ3MgKGxhYmVsLCBzZWVkLCBtZCkKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHsKICAgIGxhYmVsID0gb3B0aW9uczsKICAgIHNlZWQgPSBhcmd1bWVudHNbM10gfHwgdW5kZWZpbmVkOwogICAgbWQgPSBhcmd1bWVudHNbNF0gfHwgdW5kZWZpbmVkOwogIH0gZWxzZSBpZihvcHRpb25zKSB7CiAgICBsYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwgdW5kZWZpbmVkOwogICAgc2VlZCA9IG9wdGlvbnMuc2VlZCB8fCB1bmRlZmluZWQ7CiAgICBtZCA9IG9wdGlvbnMubWQgfHwgdW5kZWZpbmVkOwogICAgaWYob3B0aW9ucy5tZ2YxICYmIG9wdGlvbnMubWdmMS5tZCkgewogICAgICBtZ2YxTWQgPSBvcHRpb25zLm1nZjEubWQ7CiAgICB9CiAgfQoKICAvLyBkZWZhdWx0IE9BRVAgdG8gU0hBLTEgbWVzc2FnZSBkaWdlc3QKICBpZighbWQpIHsKICAgIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB9IGVsc2UgewogICAgbWQuc3RhcnQoKTsKICB9CgogIC8vIGRlZmF1bHQgTUdGLTEgdG8gc2FtZSBhcyBPQUVQCiAgaWYoIW1nZjFNZCkgewogICAgbWdmMU1kID0gbWQ7CiAgfQoKICAvLyBjb21wdXRlIGxlbmd0aCBpbiBieXRlcyBhbmQgY2hlY2sgb3V0cHV0CiAgdmFyIGtleUxlbmd0aCA9IE1hdGguY2VpbChrZXkubi5iaXRMZW5ndGgoKSAvIDgpOwogIHZhciBtYXhMZW5ndGggPSBrZXlMZW5ndGggLSAyICogbWQuZGlnZXN0TGVuZ3RoIC0gMjsKICBpZihtZXNzYWdlLmxlbmd0aCA+IG1heExlbmd0aCkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdSU0FFUy1PQUVQIGlucHV0IG1lc3NhZ2UgbGVuZ3RoIGlzIHRvbyBsb25nLicpOwogICAgZXJyb3IubGVuZ3RoID0gbWVzc2FnZS5sZW5ndGg7CiAgICBlcnJvci5tYXhMZW5ndGggPSBtYXhMZW5ndGg7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIGlmKCFsYWJlbCkgewogICAgbGFiZWwgPSAnJzsKICB9CiAgbWQudXBkYXRlKGxhYmVsLCAncmF3Jyk7CiAgdmFyIGxIYXNoID0gbWQuZGlnZXN0KCk7CgogIHZhciBQUyA9ICcnOwogIHZhciBQU19sZW5ndGggPSBtYXhMZW5ndGggLSBtZXNzYWdlLmxlbmd0aDsKICBmb3IgKHZhciBpID0gMDsgaSA8IFBTX2xlbmd0aDsgaSsrKSB7CiAgICBQUyArPSAnXHgwMCc7CiAgfQoKICB2YXIgREIgPSBsSGFzaC5nZXRCeXRlcygpICsgUFMgKyAnXHgwMScgKyBtZXNzYWdlOwoKICBpZighc2VlZCkgewogICAgc2VlZCA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlcyhtZC5kaWdlc3RMZW5ndGgpOwogIH0gZWxzZSBpZihzZWVkLmxlbmd0aCAhPT0gbWQuZGlnZXN0TGVuZ3RoKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0ludmFsaWQgUlNBRVMtT0FFUCBzZWVkLiBUaGUgc2VlZCBsZW5ndGggbXVzdCAnICsKICAgICAgJ21hdGNoIHRoZSBkaWdlc3QgbGVuZ3RoLicpCiAgICBlcnJvci5zZWVkTGVuZ3RoID0gc2VlZC5sZW5ndGg7CiAgICBlcnJvci5kaWdlc3RMZW5ndGggPSBtZC5kaWdlc3RMZW5ndGg7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBkYk1hc2sgPSByc2FfbWdmMShzZWVkLCBrZXlMZW5ndGggLSBtZC5kaWdlc3RMZW5ndGggLSAxLCBtZ2YxTWQpOwogIHZhciBtYXNrZWREQiA9IGZvcmdlLnV0aWwueG9yQnl0ZXMoREIsIGRiTWFzaywgREIubGVuZ3RoKTsKCiAgdmFyIHNlZWRNYXNrID0gcnNhX21nZjEobWFza2VkREIsIG1kLmRpZ2VzdExlbmd0aCwgbWdmMU1kKTsKICB2YXIgbWFza2VkU2VlZCA9IGZvcmdlLnV0aWwueG9yQnl0ZXMoc2VlZCwgc2VlZE1hc2ssIHNlZWQubGVuZ3RoKTsKCiAgLy8gcmV0dXJuIGVuY29kZWQgbWVzc2FnZQogIHJldHVybiAnXHgwMCcgKyBtYXNrZWRTZWVkICsgbWFza2VkREI7Cn07CgovKioKICogRGVjb2RlIHRoZSBnaXZlbiBSU0FFUy1PQUVQIGVuY29kZWQgbWVzc2FnZSAoRU0pIHVzaW5nIGtleSwgd2l0aCBvcHRpb25hbAogKiBsYWJlbCAoTCkuCiAqCiAqIFRoaXMgbWV0aG9kIGRvZXMgbm90IHBlcmZvcm0gUlNBIGRlY3J5cHRpb24sIGl0IG9ubHkgZGVjb2RlcyB0aGUgbWVzc2FnZQogKiB1c2luZyBSU0FFUy1PQUVQLgogKgogKiBAcGFyYW0ga2V5IHRoZSBSU0Ega2V5IHRvIHVzZS4KICogQHBhcmFtIGVtIHRoZSBlbmNvZGVkIG1lc3NhZ2UgdG8gZGVjb2RlLgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2U6CiAqICAgICAgICAgIGxhYmVsIGFuIG9wdGlvbmFsIGxhYmVsIHRvIHVzZS4KICogICAgICAgICAgbWQgdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UgZm9yIE9BRVAsIHVuZGVmaW5lZCBmb3IgU0hBLTEuCiAqICAgICAgICAgIG1nZjEgb3B0aW9uYWwgbWdmMSBwYXJhbWV0ZXJzOgogKiAgICAgICAgICAgIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIGZvciBNR0YxLgogKgogKiBAcmV0dXJuIHRoZSBkZWNvZGVkIG1lc3NhZ2UgYnl0ZXMuCiAqLwpwa2NzMS5kZWNvZGVfcnNhX29hZXAgPSBmdW5jdGlvbihrZXksIGVtLCBvcHRpb25zKSB7CiAgLy8gcGFyc2UgYXJncwogIHZhciBsYWJlbDsKICB2YXIgbWQ7CiAgdmFyIG1nZjFNZDsKICAvLyBsZWdhY3kgYXJncwogIGlmKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykgewogICAgbGFiZWwgPSBvcHRpb25zOwogICAgbWQgPSBhcmd1bWVudHNbM10gfHwgdW5kZWZpbmVkOwogIH0gZWxzZSBpZihvcHRpb25zKSB7CiAgICBsYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwgdW5kZWZpbmVkOwogICAgbWQgPSBvcHRpb25zLm1kIHx8IHVuZGVmaW5lZDsKICAgIGlmKG9wdGlvbnMubWdmMSAmJiBvcHRpb25zLm1nZjEubWQpIHsKICAgICAgbWdmMU1kID0gb3B0aW9ucy5tZ2YxLm1kOwogICAgfQogIH0KCiAgLy8gY29tcHV0ZSBsZW5ndGggaW4gYnl0ZXMKICB2YXIga2V5TGVuZ3RoID0gTWF0aC5jZWlsKGtleS5uLmJpdExlbmd0aCgpIC8gOCk7CgogIGlmKGVtLmxlbmd0aCAhPT0ga2V5TGVuZ3RoKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1JTQUVTLU9BRVAgZW5jb2RlZCBtZXNzYWdlIGxlbmd0aCBpcyBpbnZhbGlkLicpOwogICAgZXJyb3IubGVuZ3RoID0gZW0ubGVuZ3RoOwogICAgZXJyb3IuZXhwZWN0ZWRMZW5ndGggPSBrZXlMZW5ndGg7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIGRlZmF1bHQgT0FFUCB0byBTSEEtMSBtZXNzYWdlIGRpZ2VzdAogIGlmKG1kID09PSB1bmRlZmluZWQpIHsKICAgIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB9IGVsc2UgewogICAgbWQuc3RhcnQoKTsKICB9CgogIC8vIGRlZmF1bHQgTUdGLTEgdG8gc2FtZSBhcyBPQUVQCiAgaWYoIW1nZjFNZCkgewogICAgbWdmMU1kID0gbWQ7CiAgfQoKICBpZihrZXlMZW5ndGggPCAyICogbWQuZGlnZXN0TGVuZ3RoICsgMikgewogICAgdGhyb3cgbmV3IEVycm9yKCdSU0FFUy1PQUVQIGtleSBpcyB0b28gc2hvcnQgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLicpOwogIH0KCiAgaWYoIWxhYmVsKSB7CiAgICBsYWJlbCA9ICcnOwogIH0KICBtZC51cGRhdGUobGFiZWwsICdyYXcnKTsKICB2YXIgbEhhc2ggPSBtZC5kaWdlc3QoKS5nZXRCeXRlcygpOwoKICAvLyBzcGxpdCB0aGUgbWVzc2FnZSBpbnRvIGl0cyBwYXJ0cwogIHZhciB5ID0gZW0uY2hhckF0KDApOwogIHZhciBtYXNrZWRTZWVkID0gZW0uc3Vic3RyaW5nKDEsIG1kLmRpZ2VzdExlbmd0aCArIDEpOwogIHZhciBtYXNrZWREQiA9IGVtLnN1YnN0cmluZygxICsgbWQuZGlnZXN0TGVuZ3RoKTsKCiAgdmFyIHNlZWRNYXNrID0gcnNhX21nZjEobWFza2VkREIsIG1kLmRpZ2VzdExlbmd0aCwgbWdmMU1kKTsKICB2YXIgc2VlZCA9IGZvcmdlLnV0aWwueG9yQnl0ZXMobWFza2VkU2VlZCwgc2VlZE1hc2ssIG1hc2tlZFNlZWQubGVuZ3RoKTsKCiAgdmFyIGRiTWFzayA9IHJzYV9tZ2YxKHNlZWQsIGtleUxlbmd0aCAtIG1kLmRpZ2VzdExlbmd0aCAtIDEsIG1nZjFNZCk7CiAgdmFyIGRiID0gZm9yZ2UudXRpbC54b3JCeXRlcyhtYXNrZWREQiwgZGJNYXNrLCBtYXNrZWREQi5sZW5ndGgpOwoKICB2YXIgbEhhc2hQcmltZSA9IGRiLnN1YnN0cmluZygwLCBtZC5kaWdlc3RMZW5ndGgpOwoKICAvLyBjb25zdGFudCB0aW1lIGNoZWNrIHRoYXQgYWxsIHZhbHVlcyBtYXRjaCB3aGF0IGlzIGV4cGVjdGVkCiAgdmFyIGVycm9yID0gKHkgIT09ICdceDAwJyk7CgogIC8vIGNvbnN0YW50IHRpbWUgY2hlY2sgbEhhc2ggdnMgbEhhc2hQcmltZQogIGZvcih2YXIgaSA9IDA7IGkgPCBtZC5kaWdlc3RMZW5ndGg7ICsraSkgewogICAgZXJyb3IgfD0gKGxIYXNoLmNoYXJBdChpKSAhPT0gbEhhc2hQcmltZS5jaGFyQXQoaSkpOwogIH0KCiAgLy8gImNvbnN0YW50IHRpbWUiIGZpbmQgdGhlIDB4MSBieXRlIHNlcGFyYXRpbmcgdGhlIHBhZGRpbmcgKHplcm9zKSBmcm9tIHRoZQogIC8vIG1lc3NhZ2UKICAvLyBUT0RPOiBJdCBtdXN0IGJlIHBvc3NpYmxlIHRvIGRvIHRoaXMgaW4gYSBiZXR0ZXIvc21hcnRlciB3YXk/CiAgdmFyIGluX3BzID0gMTsKICB2YXIgaW5kZXggPSBtZC5kaWdlc3RMZW5ndGg7CiAgZm9yKHZhciBqID0gbWQuZGlnZXN0TGVuZ3RoOyBqIDwgZGIubGVuZ3RoOyBqKyspIHsKICAgIHZhciBjb2RlID0gZGIuY2hhckNvZGVBdChqKTsKCiAgICB2YXIgaXNfMCA9IChjb2RlICYgMHgxKSBeIDB4MTsKCiAgICAvLyBub24temVybyBpZiBub3QgMCBvciAxIGluIHRoZSBwcyBzZWN0aW9uCiAgICB2YXIgZXJyb3JfbWFzayA9IGluX3BzID8gMHhmZmZlIDogMHgwMDAwOwogICAgZXJyb3IgfD0gKGNvZGUgJiBlcnJvcl9tYXNrKTsKCiAgICAvLyBsYXRjaCBpbl9wcyB0byB6ZXJvIGFmdGVyIHdlIGZpbmQgMHgxCiAgICBpbl9wcyA9IGluX3BzICYgaXNfMDsKICAgIGluZGV4ICs9IGluX3BzOwogIH0KCiAgaWYoZXJyb3IgfHwgZGIuY2hhckNvZGVBdChpbmRleCkgIT09IDB4MSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFJTQUVTLU9BRVAgcGFkZGluZy4nKTsKICB9CgogIHJldHVybiBkYi5zdWJzdHJpbmcoaW5kZXggKyAxKTsKfTsKCmZ1bmN0aW9uIHJzYV9tZ2YxKHNlZWQsIG1hc2tMZW5ndGgsIGhhc2gpIHsKICAvLyBkZWZhdWx0IHRvIFNIQS0xIG1lc3NhZ2UgZGlnZXN0CiAgaWYoIWhhc2gpIHsKICAgIGhhc2ggPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIH0KICB2YXIgdCA9ICcnOwogIHZhciBjb3VudCA9IE1hdGguY2VpbChtYXNrTGVuZ3RoIC8gaGFzaC5kaWdlc3RMZW5ndGgpOwogIGZvcih2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICB2YXIgYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoCiAgICAgIChpID4+IDI0KSAmIDB4RkYsIChpID4+IDE2KSAmIDB4RkYsIChpID4+IDgpICYgMHhGRiwgaSAmIDB4RkYpOwogICAgaGFzaC5zdGFydCgpOwogICAgaGFzaC51cGRhdGUoc2VlZCArIGMpOwogICAgdCArPSBoYXNoLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CiAgfQogIHJldHVybiB0LnN1YnN0cmluZygwLCBtYXNrTGVuZ3RoKTsKfQoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncGtjczEnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcGtjczEnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJywgJy4vcmFuZG9tJywgJy4vc2hhMSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBQcmltZSBudW1iZXIgZ2VuZXJhdGlvbiBBUEkuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAoYykgMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIGZvcmdlLnByaW1lIGFscmVhZHkgZGVmaW5lZAppZihmb3JnZS5wcmltZSkgewogIHJldHVybjsKfQoKLyogUFJJTUUgQVBJICovCnZhciBwcmltZSA9IGZvcmdlLnByaW1lID0gZm9yZ2UucHJpbWUgfHwge307Cgp2YXIgQmlnSW50ZWdlciA9IGZvcmdlLmpzYm4uQmlnSW50ZWdlcjsKCi8vIHByaW1lcyBhcmUgMzBrK2kgZm9yIGkgPSAxLCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5CnZhciBHQ0RfMzBfREVMVEEgPSBbNiwgNCwgMiwgNCwgMiwgNCwgNiwgMl07CnZhciBUSElSVFkgPSBuZXcgQmlnSW50ZWdlcihudWxsKTsKVEhJUlRZLmZyb21JbnQoMzApOwp2YXIgb3Bfb3IgPSBmdW5jdGlvbih4LCB5KSB7cmV0dXJuIHh8eTt9OwoKLyoqCiAqIEdlbmVyYXRlcyBhIHJhbmRvbSBwcm9iYWJsZSBwcmltZSB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgYml0cy4KICoKICogQWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyBjYW4gYmUgc3BlY2lmaWVkIGJ5IG5hbWUgYXMgYSBzdHJpbmcgb3IgYXMgYW4KICogb2JqZWN0IHdpdGggY3VzdG9tIG9wdGlvbnMgbGlrZSBzbzoKICoKICogewogKiAgIG5hbWU6ICdQUklNRUlOQycsCiAqICAgb3B0aW9uczogewogKiAgICAgbWF4QmxvY2tUaW1lOiA8dGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gYmxvY2sgdGhlIG1haW4KICogICAgICAgdGhyZWFkIGJlZm9yZSBhbGxvd2luZyBJL08gb3RoZXIgSlMgdG8gcnVuPiwKICogICAgIG1pbGxlclJhYmluVGVzdHM6IDx0aGUgbnVtYmVyIG9mIG1pbGxlci1yYWJpbiB0ZXN0cyB0byBydW4+LAogKiAgICAgd29ya2VyU2NyaXB0OiA8dGhlIHdvcmtlciBzY3JpcHQgVVJMPiwKICogICAgIHdvcmtlcnM6IDx0aGUgbnVtYmVyIG9mIHdlYiB3b3JrZXJzIChpZiBzdXBwb3J0ZWQpIHRvIHVzZSwKICogICAgICAgLTEgdG8gdXNlIGVzdGltYXRlZCBjb3JlcyBtaW51cyBvbmU+LgogKiAgICAgd29ya0xvYWQ6IHRoZSBzaXplIG9mIHRoZSB3b3JrIGxvYWQsIGllOiBudW1iZXIgb2YgcG9zc2libGUgcHJpbWUKICogICAgICAgbnVtYmVycyBmb3IgZWFjaCB3ZWIgd29ya2VyIHRvIGNoZWNrIHBlciB3b3JrIGFzc2lnbm1lbnQsCiAqICAgICAgIChkZWZhdWx0OiAxMDApLgogKiAgIH0KICogfQogKgogKiBAcGFyYW0gYml0cyB0aGUgbnVtYmVyIG9mIGJpdHMgZm9yIHRoZSBwcmltZSBudW1iZXIuCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZS4KICogICAgICAgICAgW2FsZ29yaXRobV0gdGhlIGFsZ29yaXRobSB0byB1c2UgKGRlZmF1bHQ6ICdQUklNRUlOQycpLgogKiAgICAgICAgICBbcHJuZ10gYSBjdXN0b20gY3J5cHRvLXNlY3VyZSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlLAogKiAgICAgICAgICAgIHRoYXQgbXVzdCBkZWZpbmUgImdldEJ5dGVzU3luYyIuCiAqCiAqIEByZXR1cm4gY2FsbGJhY2soZXJyLCBudW0pIGNhbGxlZCBvbmNlIHRoZSBvcGVyYXRpb24gY29tcGxldGVzLgogKi8KcHJpbWUuZ2VuZXJhdGVQcm9iYWJsZVByaW1lID0gZnVuY3Rpb24oYml0cywgb3B0aW9ucywgY2FsbGJhY2spIHsKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRpb25zOwogICAgb3B0aW9ucyA9IHt9OwogIH0KICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgLy8gZGVmYXVsdCB0byBQUklNRUlOQyBhbGdvcml0aG0KICB2YXIgYWxnb3JpdGhtID0gb3B0aW9ucy5hbGdvcml0aG0gfHwgJ1BSSU1FSU5DJzsKICBpZih0eXBlb2YgYWxnb3JpdGhtID09PSAnc3RyaW5nJykgewogICAgYWxnb3JpdGhtID0ge25hbWU6IGFsZ29yaXRobX07CiAgfQogIGFsZ29yaXRobS5vcHRpb25zID0gYWxnb3JpdGhtLm9wdGlvbnMgfHwge307CgogIC8vIGNyZWF0ZSBwcm5nIHdpdGggYXBpIHRoYXQgbWF0Y2hlcyBCaWdJbnRlZ2VyIHNlY3VyZSByYW5kb20KICB2YXIgcHJuZyA9IG9wdGlvbnMucHJuZyB8fCBmb3JnZS5yYW5kb207CiAgdmFyIHJuZyA9IHsKICAgIC8vIHggaXMgYW4gYXJyYXkgdG8gZmlsbCB3aXRoIGJ5dGVzCiAgICBuZXh0Qnl0ZXM6IGZ1bmN0aW9uKHgpIHsKICAgICAgdmFyIGIgPSBwcm5nLmdldEJ5dGVzU3luYyh4Lmxlbmd0aCk7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgeFtpXSA9IGIuY2hhckNvZGVBdChpKTsKICAgICAgfQogICAgfQogIH07CgogIGlmKGFsZ29yaXRobS5uYW1lID09PSAnUFJJTUVJTkMnKSB7CiAgICByZXR1cm4gcHJpbWVpbmNGaW5kUHJpbWUoYml0cywgcm5nLCBhbGdvcml0aG0ub3B0aW9ucywgY2FsbGJhY2spOwogIH0KCiAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByaW1lIGdlbmVyYXRpb24gYWxnb3JpdGhtOiAnICsgYWxnb3JpdGhtLm5hbWUpOwp9OwoKZnVuY3Rpb24gcHJpbWVpbmNGaW5kUHJpbWUoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjaykgewogIGlmKCd3b3JrZXJzJyBpbiBvcHRpb25zKSB7CiAgICByZXR1cm4gcHJpbWVpbmNGaW5kUHJpbWVXaXRoV29ya2VycyhiaXRzLCBybmcsIG9wdGlvbnMsIGNhbGxiYWNrKTsKICB9CiAgcmV0dXJuIHByaW1laW5jRmluZFByaW1lV2l0aG91dFdvcmtlcnMoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjayk7Cn0KCmZ1bmN0aW9uIHByaW1laW5jRmluZFByaW1lV2l0aG91dFdvcmtlcnMoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjaykgewogIC8vIGluaXRpYWxpemUgcmFuZG9tIG51bWJlcgogIHZhciBudW0gPSBnZW5lcmF0ZVJhbmRvbShiaXRzLCBybmcpOwoKICAvKiBOb3RlOiBBbGwgcHJpbWVzIGFyZSBvZiB0aGUgZm9ybSAzMGsraSBmb3IgaSA8IDMwIGFuZCBnY2QoMzAsIGkpPTEuIFRoZQogIG51bWJlciB3ZSBhcmUgZ2l2ZW4gaXMgYWx3YXlzIGFsaWduZWQgYXQgMzBrICsgMS4gRWFjaCB0aW1lIHRoZSBudW1iZXIgaXMKICBkZXRlcm1pbmVkIG5vdCB0byBiZSBwcmltZSB3ZSBhZGQgdG8gZ2V0IHRvIHRoZSBuZXh0ICdpJywgZWc6IGlmIHRoZSBudW1iZXIKICB3YXMgYXQgMzBrICsgMSB3ZSBhZGQgNi4gKi8KICB2YXIgZGVsdGFJZHggPSAwOwoKICAvLyBnZXQgcmVxdWlyZWQgbnVtYmVyIG9mIE1SIHRlc3RzCiAgdmFyIG1yVGVzdHMgPSBnZXRNaWxsZXJSYWJpblRlc3RzKG51bS5iaXRMZW5ndGgoKSk7CiAgaWYoJ21pbGxlclJhYmluVGVzdHMnIGluIG9wdGlvbnMpIHsKICAgIG1yVGVzdHMgPSBvcHRpb25zLm1pbGxlclJhYmluVGVzdHM7CiAgfQoKICAvLyBmaW5kIHByaW1lIG5lYXJlc3QgdG8gJ251bScgZm9yIG1heEJsb2NrVGltZSBtcwogIC8vIDEwIG1zIGdpdmVzIDVtcyBvZiBsZWV3YXkgZm9yIG90aGVyIGNhbGN1bGF0aW9ucyBiZWZvcmUgZHJvcHBpbmcKICAvLyBiZWxvdyA2MGZwcyAoMTAwMC82MCA9PSAxNi42NyksIGJ1dCBpbiByZWFsaXR5LCB0aGUgbnVtYmVyIHdpbGwKICAvLyBsaWtlbHkgYmUgaGlnaGVyIGR1ZSB0byBhbiAnYXRvbWljJyBiaWcgaW50IG1vZFBvdwogIHZhciBtYXhCbG9ja1RpbWUgPSAxMDsKICBpZignbWF4QmxvY2tUaW1lJyBpbiBvcHRpb25zKSB7CiAgICBtYXhCbG9ja1RpbWUgPSBvcHRpb25zLm1heEJsb2NrVGltZTsKICB9CiAgdmFyIHN0YXJ0ID0gK25ldyBEYXRlKCk7CiAgZG8gewogICAgLy8gb3ZlcmZsb3csIHJlZ2VuZXJhdGUgcmFuZG9tIG51bWJlcgogICAgaWYobnVtLmJpdExlbmd0aCgpID4gYml0cykgewogICAgICBudW0gPSBnZW5lcmF0ZVJhbmRvbShiaXRzLCBybmcpOwogICAgfQogICAgLy8gZG8gcHJpbWFsaXR5IHRlc3QKICAgIGlmKG51bS5pc1Byb2JhYmxlUHJpbWUobXJUZXN0cykpIHsKICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG51bSk7CiAgICB9CiAgICAvLyBnZXQgbmV4dCBwb3RlbnRpYWwgcHJpbWUKICAgIG51bS5kQWRkT2Zmc2V0KEdDRF8zMF9ERUxUQVtkZWx0YUlkeCsrICUgOF0sIDApOwogIH0gd2hpbGUobWF4QmxvY2tUaW1lIDwgMCB8fCAoK25ldyBEYXRlKCkgLSBzdGFydCA8IG1heEJsb2NrVGltZSkpOwoKICAvLyBrZWVwIHRyeWluZyAoc2V0SW1tZWRpYXRlIHdvdWxkIGJlIGJldHRlciBoZXJlKQogIGZvcmdlLnV0aWwuc2V0SW1tZWRpYXRlKGZ1bmN0aW9uKCkgewogICAgcHJpbWVpbmNGaW5kUHJpbWVXaXRob3V0V29ya2VycyhiaXRzLCBybmcsIG9wdGlvbnMsIGNhbGxiYWNrKTsKICB9KTsKfQoKZnVuY3Rpb24gcHJpbWVpbmNGaW5kUHJpbWVXaXRoV29ya2VycyhiaXRzLCBybmcsIG9wdGlvbnMsIGNhbGxiYWNrKSB7CiAgLy8gd2ViIHdvcmtlcnMgdW5hdmFpbGFibGUKICBpZih0eXBlb2YgV29ya2VyID09PSAndW5kZWZpbmVkJykgewogICAgcmV0dXJuIHByaW1laW5jRmluZFByaW1lV2l0aG91dFdvcmtlcnMoYml0cywgcm5nLCBvcHRpb25zLCBjYWxsYmFjayk7CiAgfQoKICAvLyBpbml0aWFsaXplIHJhbmRvbSBudW1iZXIKICB2YXIgbnVtID0gZ2VuZXJhdGVSYW5kb20oYml0cywgcm5nKTsKCiAgLy8gdXNlIHdlYiB3b3JrZXJzIHRvIGdlbmVyYXRlIGtleXMKICB2YXIgbnVtV29ya2VycyA9IG9wdGlvbnMud29ya2VyczsKICB2YXIgd29ya0xvYWQgPSBvcHRpb25zLndvcmtMb2FkIHx8IDEwMDsKICB2YXIgcmFuZ2UgPSB3b3JrTG9hZCAqIDMwIC8gODsKICB2YXIgd29ya2VyU2NyaXB0ID0gb3B0aW9ucy53b3JrZXJTY3JpcHQgfHwgJ2ZvcmdlL3ByaW1lLndvcmtlci5qcyc7CiAgaWYobnVtV29ya2VycyA9PT0gLTEpIHsKICAgIHJldHVybiBmb3JnZS51dGlsLmVzdGltYXRlQ29yZXMoZnVuY3Rpb24oZXJyLCBjb3JlcykgewogICAgICBpZihlcnIpIHsKICAgICAgICAvLyBkZWZhdWx0IHRvIDIKICAgICAgICBjb3JlcyA9IDI7CiAgICAgIH0KICAgICAgbnVtV29ya2VycyA9IGNvcmVzIC0gMTsKICAgICAgZ2VuZXJhdGUoKTsKICAgIH0pOwogIH0KICBnZW5lcmF0ZSgpOwoKICBmdW5jdGlvbiBnZW5lcmF0ZSgpIHsKICAgIC8vIHJlcXVpcmUgYXQgbGVhc3QgMSB3b3JrZXIKICAgIG51bVdvcmtlcnMgPSBNYXRoLm1heCgxLCBudW1Xb3JrZXJzKTsKCiAgICAvLyBUT0RPOiBjb25zaWRlciBvcHRpbWl6aW5nIGJ5IHN0YXJ0aW5nIHdvcmtlcnMgb3V0c2lkZSBnZXRQcmltZSgpIC4uLgogICAgLy8gbm90ZSB0aGF0IGluIG9yZGVyIHRvIGNsZWFuIHVwIHRoZXkgd2lsbCBoYXZlIHRvIGJlIG1hZGUgaW50ZXJuYWxseQogICAgLy8gYXN5bmNocm9ub3VzIHdoaWNoIG1heSBhY3R1YWxseSBiZSBzbG93ZXIKCiAgICAvLyBzdGFydCB3b3JrZXJzIGltbWVkaWF0ZWx5CiAgICB2YXIgd29ya2VycyA9IFtdOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG51bVdvcmtlcnM7ICsraSkgewogICAgICAvLyBGSVhNRTogZml4IHBhdGggb3IgdXNlIGJsb2IgVVJMcwogICAgICB3b3JrZXJzW2ldID0gbmV3IFdvcmtlcih3b3JrZXJTY3JpcHQpOwogICAgfQogICAgdmFyIHJ1bm5pbmcgPSBudW1Xb3JrZXJzOwoKICAgIC8vIGxpc3RlbiBmb3IgcmVxdWVzdHMgZnJvbSB3b3JrZXJzIGFuZCBhc3NpZ24gcmFuZ2VzIHRvIGZpbmQgcHJpbWUKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBudW1Xb3JrZXJzOyArK2kpIHsKICAgICAgd29ya2Vyc1tpXS5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgd29ya2VyTWVzc2FnZSk7CiAgICB9CgogICAgLyogTm90ZTogVGhlIGRpc3RyaWJ1dGlvbiBvZiByYW5kb20gbnVtYmVycyBpcyB1bmtub3duLiBUaGVyZWZvcmUsIGVhY2gKICAgIHdlYiB3b3JrZXIgaXMgY29udGludW91c2x5IGFsbG9jYXRlZCBhIHJhbmdlIG9mIG51bWJlcnMgdG8gY2hlY2sgZm9yIGEKICAgIHJhbmRvbSBudW1iZXIgdW50aWwgb25lIGlzIGZvdW5kLgoKICAgIEV2ZXJ5IDMwIG51bWJlcnMgd2lsbCBiZSBjaGVja2VkIGp1c3QgOCB0aW1lcywgYmVjYXVzZSBwcmltZSBudW1iZXJzCiAgICBoYXZlIHRoZSBmb3JtOgoKICAgIDMwaytpLCBmb3IgaSA8IDMwIGFuZCBnY2QoMzAsIGkpPTEgKHRoZXJlIGFyZSA4IHZhbHVlcyBvZiBpIGZvciB0aGlzKQoKICAgIFRoZXJlZm9yZSwgaWYgd2Ugd2FudCBhIHdlYiB3b3JrZXIgdG8gcnVuIE4gY2hlY2tzIGJlZm9yZSBhc2tpbmcgZm9yCiAgICBhIG5ldyByYW5nZSBvZiBudW1iZXJzLCBlYWNoIHJhbmdlIG11c3QgY29udGFpbiBOKjMwLzggbnVtYmVycy4KCiAgICBGb3IgMTAwIGNoZWNrcyAod29ya0xvYWQpLCB0aGlzIGlzIGEgcmFuZ2Ugb2YgMzc1LiAqLwoKICAgIHZhciBmb3VuZCA9IGZhbHNlOwogICAgZnVuY3Rpb24gd29ya2VyTWVzc2FnZShlKSB7CiAgICAgIC8vIGlnbm9yZSBtZXNzYWdlLCBwcmltZSBhbHJlYWR5IGZvdW5kCiAgICAgIGlmKGZvdW5kKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICAtLXJ1bm5pbmc7CiAgICAgIHZhciBkYXRhID0gZS5kYXRhOwogICAgICBpZihkYXRhLmZvdW5kKSB7CiAgICAgICAgLy8gdGVybWluYXRlIGFsbCB3b3JrZXJzCiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHdvcmtlcnMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHdvcmtlcnNbaV0udGVybWluYXRlKCk7CiAgICAgICAgfQogICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgbmV3IEJpZ0ludGVnZXIoZGF0YS5wcmltZSwgMTYpKTsKICAgICAgfQoKICAgICAgLy8gb3ZlcmZsb3csIHJlZ2VuZXJhdGUgcmFuZG9tIG51bWJlcgogICAgICBpZihudW0uYml0TGVuZ3RoKCkgPiBiaXRzKSB7CiAgICAgICAgbnVtID0gZ2VuZXJhdGVSYW5kb20oYml0cywgcm5nKTsKICAgICAgfQoKICAgICAgLy8gYXNzaWduIG5ldyByYW5nZSB0byBjaGVjawogICAgICB2YXIgaGV4ID0gbnVtLnRvU3RyaW5nKDE2KTsKCiAgICAgIC8vIHN0YXJ0IHByaW1lIHNlYXJjaAogICAgICBlLnRhcmdldC5wb3N0TWVzc2FnZSh7CiAgICAgICAgaGV4OiBoZXgsCiAgICAgICAgd29ya0xvYWQ6IHdvcmtMb2FkCiAgICAgIH0pOwoKICAgICAgbnVtLmRBZGRPZmZzZXQocmFuZ2UsIDApOwogICAgfQogIH0KfQoKLyoqCiAqIEdlbmVyYXRlcyBhIHJhbmRvbSBudW1iZXIgdXNpbmcgdGhlIGdpdmVuIG51bWJlciBvZiBiaXRzIGFuZCBSTkcuCiAqCiAqIEBwYXJhbSBiaXRzIHRoZSBudW1iZXIgb2YgYml0cyBmb3IgdGhlIG51bWJlci4KICogQHBhcmFtIHJuZyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSByYW5kb20gbnVtYmVyLgogKi8KZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb20oYml0cywgcm5nKSB7CiAgdmFyIG51bSA9IG5ldyBCaWdJbnRlZ2VyKGJpdHMsIHJuZyk7CiAgLy8gZm9yY2UgTVNCIHNldAogIHZhciBiaXRzMSA9IGJpdHMgLSAxOwogIGlmKCFudW0udGVzdEJpdChiaXRzMSkpIHsKICAgIG51bS5iaXR3aXNlVG8oQmlnSW50ZWdlci5PTkUuc2hpZnRMZWZ0KGJpdHMxKSwgb3Bfb3IsIG51bSk7CiAgfQogIC8vIGFsaWduIG51bWJlciBvbiAzMGsrMSBib3VuZGFyeQogIG51bS5kQWRkT2Zmc2V0KDMxIC0gbnVtLm1vZChUSElSVFkpLmJ5dGVWYWx1ZSgpLCAwKTsKICByZXR1cm4gbnVtOwp9CgovKioKICogUmV0dXJucyB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIE1pbGxlci1SYWJpbiB0ZXN0cyB0byBnZW5lcmF0ZSBhCiAqIHByaW1lIHdpdGggYW4gZXJyb3IgcHJvYmFiaWxpdHkgb2YgKDEvMileODAuCiAqCiAqIFNlZSBIYW5kYm9vayBvZiBBcHBsaWVkIENyeXB0b2dyYXBoeSBDaGFwdGVyIDQsIFRhYmxlIDQuNC4KICoKICogQHBhcmFtIGJpdHMgdGhlIGJpdCBzaXplLgogKgogKiBAcmV0dXJuIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgaXRlcmF0aW9ucy4KICovCmZ1bmN0aW9uIGdldE1pbGxlclJhYmluVGVzdHMoYml0cykgewogIGlmKGJpdHMgPD0gMTAwKSByZXR1cm4gMjc7CiAgaWYoYml0cyA8PSAxNTApIHJldHVybiAxODsKICBpZihiaXRzIDw9IDIwMCkgcmV0dXJuIDE1OwogIGlmKGJpdHMgPD0gMjUwKSByZXR1cm4gMTI7CiAgaWYoYml0cyA8PSAzMDApIHJldHVybiA5OwogIGlmKGJpdHMgPD0gMzUwKSByZXR1cm4gODsKICBpZihiaXRzIDw9IDQwMCkgcmV0dXJuIDc7CiAgaWYoYml0cyA8PSA1MDApIHJldHVybiA2OwogIGlmKGJpdHMgPD0gNjAwKSByZXR1cm4gNTsKICBpZihiaXRzIDw9IDgwMCkgcmV0dXJuIDQ7CiAgaWYoYml0cyA8PSAxMjUwKSByZXR1cm4gMzsKICByZXR1cm4gMjsKfQoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncHJpbWUnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvcHJpbWUnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJywgJy4vanNibicsICcuL3JhbmRvbSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKCn0pKCk7CgovKioKICogSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBiYXNpYyBSU0EgYWxnb3JpdGhtcy4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEwLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICoKICogVGhlIG9ubHkgYWxnb3JpdGhtIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIFBLSSBpcyBSU0EuCiAqCiAqIEFuIFJTQSBrZXkgaXMgb2Z0ZW4gc3RvcmVkIGluIEFTTi4xIERFUiBmb3JtYXQuIFRoZSBTdWJqZWN0UHVibGljS2V5SW5mbwogKiBBU04uMSBzdHJ1Y3R1cmUgaXMgY29tcG9zZWQgb2YgYW4gYWxnb3JpdGhtIG9mIHR5cGUgQWxnb3JpdGhtSWRlbnRpZmllcgogKiBhbmQgYSBzdWJqZWN0UHVibGljS2V5IG9mIHR5cGUgYml0IHN0cmluZy4KICoKICogVGhlIEFsZ29yaXRobUlkZW50aWZpZXIgY29udGFpbnMgYW4gT2JqZWN0IElkZW50aWZpZXIgKE9JRCkgYW5kIHBhcmFtZXRlcnMKICogZm9yIHRoZSBhbGdvcml0aG0sIGlmIGFueS4gSW4gdGhlIGNhc2Ugb2YgUlNBLCB0aGVyZSBhcmVuJ3QgYW55LgogKgogKiBTdWJqZWN0UHVibGljS2V5SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIGFsZ29yaXRobSBBbGdvcml0aG1JZGVudGlmaWVyLAogKiAgIHN1YmplY3RQdWJsaWNLZXkgQklUIFNUUklORwogKiB9CiAqCiAqIEFsZ29yaXRobUlkZW50aWZlciA6Oj0gU0VRVUVOQ0UgewogKiAgIGFsZ29yaXRobSBPQkpFQ1QgSURFTlRJRklFUiwKICogICBwYXJhbWV0ZXJzIEFOWSBERUZJTkVEIEJZIGFsZ29yaXRobSBPUFRJT05BTAogKiB9CiAqCiAqIEZvciBhbiBSU0EgcHVibGljIGtleSwgdGhlIHN1YmplY3RQdWJsaWNLZXkgaXM6CiAqCiAqIFJTQVB1YmxpY0tleSA6Oj0gU0VRVUVOQ0UgewogKiAgIG1vZHVsdXMgICAgICAgICAgICBJTlRFR0VSLCAgICAtLSBuCiAqICAgcHVibGljRXhwb25lbnQgICAgIElOVEVHRVIgICAgIC0tIGUKICogfQogKgogKiBQcml2YXRlS2V5SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBwcml2YXRlS2V5QWxnb3JpdGhtICAgICAgIFByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyLAogKiAgIHByaXZhdGVLZXkgICAgICAgICAgICAgICAgUHJpdmF0ZUtleSwKICogICBhdHRyaWJ1dGVzICAgICAgICAgICBbMF0gIElNUExJQ0lUIEF0dHJpYnV0ZXMgT1BUSU9OQUwKICogfQogKgogKiBWZXJzaW9uIDo6PSBJTlRFR0VSCiAqIFByaXZhdGVLZXlBbGdvcml0aG1JZGVudGlmaWVyIDo6PSBBbGdvcml0aG1JZGVudGlmaWVyCiAqIFByaXZhdGVLZXkgOjo9IE9DVEVUIFNUUklORwogKiBBdHRyaWJ1dGVzIDo6PSBTRVQgT0YgQXR0cmlidXRlCiAqCiAqIEFuIFJTQSBwcml2YXRlIGtleSBhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKICoKICogUlNBUHJpdmF0ZUtleSA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gVmVyc2lvbiwKICogICBtb2R1bHVzIElOVEVHRVIsIC0tIG4KICogICBwdWJsaWNFeHBvbmVudCBJTlRFR0VSLCAtLSBlCiAqICAgcHJpdmF0ZUV4cG9uZW50IElOVEVHRVIsIC0tIGQKICogICBwcmltZTEgSU5URUdFUiwgLS0gcAogKiAgIHByaW1lMiBJTlRFR0VSLCAtLSBxCiAqICAgZXhwb25lbnQxIElOVEVHRVIsIC0tIGQgbW9kIChwLTEpCiAqICAgZXhwb25lbnQyIElOVEVHRVIsIC0tIGQgbW9kIChxLTEpCiAqICAgY29lZmZpY2llbnQgSU5URUdFUiAtLSAoaW52ZXJzZSBvZiBxKSBtb2QgcAogKiB9CiAqCiAqIFZlcnNpb24gOjo9IElOVEVHRVIKICoKICogVGhlIE9JRCBmb3IgdGhlIFJTQSBrZXkgYWxnb3JpdGhtIGlzOiAxLjIuODQwLjExMzU0OS4xLjEuMQogKi8KKGZ1bmN0aW9uKCkgewpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KCmlmKHR5cGVvZiBCaWdJbnRlZ2VyID09PSAndW5kZWZpbmVkJykgewogIHZhciBCaWdJbnRlZ2VyID0gZm9yZ2UuanNibi5CaWdJbnRlZ2VyOwp9CgovLyBzaG9ydGN1dCBmb3IgYXNuLjEgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKCi8qCiAqIFJTQSBlbmNyeXB0aW9uIGFuZCBkZWNyeXB0aW9uLCBzZWUgUkZDIDIzMTMuCiAqLwpmb3JnZS5wa2kgPSBmb3JnZS5wa2kgfHwge307CmZvcmdlLnBraS5yc2EgPSBmb3JnZS5yc2EgPSBmb3JnZS5yc2EgfHwge307CnZhciBwa2kgPSBmb3JnZS5wa2k7CgovLyBmb3IgZmluZGluZyBwcmltZXMsIHdoaWNoIGFyZSAzMGsraSBmb3IgaSA9IDEsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjkKdmFyIEdDRF8zMF9ERUxUQSA9IFs2LCA0LCAyLCA0LCAyLCA0LCA2LCAyXTsKCi8vIHZhbGlkYXRvciBmb3IgYSBQcml2YXRlS2V5SW5mbyBzdHJ1Y3R1cmUKdmFyIHByaXZhdGVLZXlWYWxpZGF0b3IgPSB7CiAgLy8gUHJpdmF0ZUtleUluZm8KICBuYW1lOiAnUHJpdmF0ZUtleUluZm8nLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICAvLyBWZXJzaW9uIChJTlRFR0VSKQogICAgbmFtZTogJ1ByaXZhdGVLZXlJbmZvLnZlcnNpb24nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleVZlcnNpb24nCiAgfSwgewogICAgLy8gcHJpdmF0ZUtleUFsZ29yaXRobQogICAgbmFtZTogJ1ByaXZhdGVLZXlJbmZvLnByaXZhdGVLZXlBbGdvcml0aG0nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICB2YWx1ZTogW3sKICAgICAgbmFtZTogJ0FsZ29yaXRobUlkZW50aWZpZXIuYWxnb3JpdGhtJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5T2lkJwogICAgfV0KICB9LCB7CiAgICAvLyBQcml2YXRlS2V5CiAgICBuYW1lOiAnUHJpdmF0ZUtleUluZm8nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXknCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYW4gUlNBIHByaXZhdGUga2V5CnZhciByc2FQcml2YXRlS2V5VmFsaWRhdG9yID0gewogIC8vIFJTQVByaXZhdGVLZXkKICBuYW1lOiAnUlNBUHJpdmF0ZUtleScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIC8vIFZlcnNpb24gKElOVEVHRVIpCiAgICBuYW1lOiAnUlNBUHJpdmF0ZUtleS52ZXJzaW9uJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXlWZXJzaW9uJwogIH0sIHsKICAgIC8vIG1vZHVsdXMgKG4pCiAgICBuYW1lOiAnUlNBUHJpdmF0ZUtleS5tb2R1bHVzJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXlNb2R1bHVzJwogIH0sIHsKICAgIC8vIHB1YmxpY0V4cG9uZW50IChlKQogICAgbmFtZTogJ1JTQVByaXZhdGVLZXkucHVibGljRXhwb25lbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleVB1YmxpY0V4cG9uZW50JwogIH0sIHsKICAgIC8vIHByaXZhdGVFeHBvbmVudCAoZCkKICAgIG5hbWU6ICdSU0FQcml2YXRlS2V5LnByaXZhdGVFeHBvbmVudCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5UHJpdmF0ZUV4cG9uZW50JwogIH0sIHsKICAgIC8vIHByaW1lMSAocCkKICAgIG5hbWU6ICdSU0FQcml2YXRlS2V5LnByaW1lMScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5UHJpbWUxJwogIH0sIHsKICAgIC8vIHByaW1lMiAocSkKICAgIG5hbWU6ICdSU0FQcml2YXRlS2V5LnByaW1lMicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdwcml2YXRlS2V5UHJpbWUyJwogIH0sIHsKICAgIC8vIGV4cG9uZW50MSAoZCBtb2QgKHAtMSkpCiAgICBuYW1lOiAnUlNBUHJpdmF0ZUtleS5leHBvbmVudDEnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleUV4cG9uZW50MScKICB9LCB7CiAgICAvLyBleHBvbmVudDIgKGQgbW9kIChxLTEpKQogICAgbmFtZTogJ1JTQVByaXZhdGVLZXkuZXhwb25lbnQyJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ByaXZhdGVLZXlFeHBvbmVudDInCiAgfSwgewogICAgLy8gY29lZmZpY2llbnQgKChpbnZlcnNlIG9mIHEpIG1vZCBwKQogICAgbmFtZTogJ1JTQVByaXZhdGVLZXkuY29lZmZpY2llbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHJpdmF0ZUtleUNvZWZmaWNpZW50JwogIH1dCn07CgovLyB2YWxpZGF0b3IgZm9yIGFuIFJTQSBwdWJsaWMga2V5CnZhciByc2FQdWJsaWNLZXlWYWxpZGF0b3IgPSB7CiAgLy8gUlNBUHVibGljS2V5CiAgbmFtZTogJ1JTQVB1YmxpY0tleScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIC8vIG1vZHVsdXMgKG4pCiAgICBuYW1lOiAnUlNBUHVibGljS2V5Lm1vZHVsdXMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHVibGljS2V5TW9kdWx1cycKICB9LCB7CiAgICAvLyBwdWJsaWNFeHBvbmVudCAoZSkKICAgIG5hbWU6ICdSU0FQdWJsaWNLZXkuZXhwb25lbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAncHVibGljS2V5RXhwb25lbnQnCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYW4gU3ViamVjdFB1YmxpY0tleUluZm8gc3RydWN0dXJlCi8vIE5vdGU6IEN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggYW4gUlNBIHB1YmxpYyBrZXkKdmFyIHB1YmxpY0tleVZhbGlkYXRvciA9IGZvcmdlLnBraS5yc2EucHVibGljS2V5VmFsaWRhdG9yID0gewogIG5hbWU6ICdTdWJqZWN0UHVibGljS2V5SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICBjYXB0dXJlQXNuMTogJ3N1YmplY3RQdWJsaWNLZXlJbmZvJywKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdTdWJqZWN0UHVibGljS2V5SW5mby5BbGdvcml0aG1JZGVudGlmaWVyJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdBbGdvcml0aG1JZGVudGlmaWVyLmFsZ29yaXRobScsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlOiAncHVibGljS2V5T2lkJwogICAgfV0KICB9LCB7CiAgICAvLyBzdWJqZWN0UHVibGljS2V5CiAgICBuYW1lOiAnU3ViamVjdFB1YmxpY0tleUluZm8uc3ViamVjdFB1YmxpY0tleScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuQklUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgdmFsdWU6IFt7CiAgICAgIC8vIFJTQVB1YmxpY0tleQogICAgICBuYW1lOiAnU3ViamVjdFB1YmxpY0tleUluZm8uc3ViamVjdFB1YmxpY0tleS5SU0FQdWJsaWNLZXknLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ3JzYVB1YmxpY0tleScKICAgIH1dCiAgfV0KfTsKCi8qKgogKiBXcmFwIGRpZ2VzdCBpbiBEaWdlc3RJbmZvIG9iamVjdC4KICoKICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIEVNU0EtUEtDUzEtdjFfNS1FTkNPREUgYXMgcGVyIFJGQyAzNDQ3LgogKgogKiBEaWdlc3RJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgZGlnZXN0QWxnb3JpdGhtIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgZGlnZXN0IERpZ2VzdAogKiB9CiAqCiAqIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICogRGlnZXN0IDo6PSBPQ1RFVCBTVFJJTkcKICoKICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3Qgd2l0aCB0aGUgaGFzaCB0byBzaWduLgogKgogKiBAcmV0dXJuIHRoZSBlbmNvZGVkIG1lc3NhZ2UgKHJlYWR5IGZvciBSU0EgZW5jcnl0aW9uKQogKi8KdmFyIGVtc2FQa2NzMXYxNWVuY29kZSA9IGZ1bmN0aW9uKG1kKSB7CiAgLy8gZ2V0IHRoZSBvaWQgZm9yIHRoZSBhbGdvcml0aG0KICB2YXIgb2lkOwogIGlmKG1kLmFsZ29yaXRobSBpbiBwa2kub2lkcykgewogICAgb2lkID0gcGtpLm9pZHNbbWQuYWxnb3JpdGhtXTsKICB9IGVsc2UgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobS4nKTsKICAgIGVycm9yLmFsZ29yaXRobSA9IG1kLmFsZ29yaXRobTsKICAgIHRocm93IGVycm9yOwogIH0KICB2YXIgb2lkQnl0ZXMgPSBhc24xLm9pZFRvRGVyKG9pZCkuZ2V0Qnl0ZXMoKTsKCiAgLy8gY3JlYXRlIHRoZSBkaWdlc3QgaW5mbwogIHZhciBkaWdlc3RJbmZvID0gYXNuMS5jcmVhdGUoCiAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CiAgdmFyIGRpZ2VzdEFsZ29yaXRobSA9IGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgW10pOwogIGRpZ2VzdEFsZ29yaXRobS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLCBvaWRCeXRlcykpOwogIGRpZ2VzdEFsZ29yaXRobS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5OVUxMLCBmYWxzZSwgJycpKTsKICB2YXIgZGlnZXN0ID0gYXNuMS5jcmVhdGUoCiAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgZmFsc2UsIG1kLmRpZ2VzdCgpLmdldEJ5dGVzKCkpOwogIGRpZ2VzdEluZm8udmFsdWUucHVzaChkaWdlc3RBbGdvcml0aG0pOwogIGRpZ2VzdEluZm8udmFsdWUucHVzaChkaWdlc3QpOwoKICAvLyBlbmNvZGUgZGlnZXN0IGluZm8KICByZXR1cm4gYXNuMS50b0RlcihkaWdlc3RJbmZvKS5nZXRCeXRlcygpOwp9OwoKLyoqCiAqIFBlcmZvcm1zIHheYyBtb2QgbiAoUlNBIGVuY3J5cHRpb24gb3IgZGVjcnlwdGlvbiBvcGVyYXRpb24pLgogKgogKiBAcGFyYW0geCB0aGUgbnVtYmVyIHRvIHJhaXNlIGFuZCBtb2QuCiAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byB1c2UuCiAqIEBwYXJhbSBwdWIgdHJ1ZSBpZiB0aGUga2V5IGlzIHB1YmxpYywgZmFsc2UgaWYgcHJpdmF0ZS4KICoKICogQHJldHVybiB0aGUgcmVzdWx0IG9mIHheYyBtb2Qgbi4KICovCnZhciBfbW9kUG93ID0gZnVuY3Rpb24oeCwga2V5LCBwdWIpIHsKICBpZihwdWIpIHsKICAgIHJldHVybiB4Lm1vZFBvdyhrZXkuZSwga2V5Lm4pOwogIH0KCiAgaWYoIWtleS5wIHx8ICFrZXkucSkgewogICAgLy8gYWxsb3cgY2FsY3VsYXRpb24gd2l0aG91dCBDUlQgcGFyYW1zIChzbG93KQogICAgcmV0dXJuIHgubW9kUG93KGtleS5kLCBrZXkubik7CiAgfQoKICAvLyBwcmUtY29tcHV0ZSBkUCwgZFEsIGFuZCBxSW52IGlmIG5lY2Vzc2FyeQogIGlmKCFrZXkuZFApIHsKICAgIGtleS5kUCA9IGtleS5kLm1vZChrZXkucC5zdWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSkpOwogIH0KICBpZigha2V5LmRRKSB7CiAgICBrZXkuZFEgPSBrZXkuZC5tb2Qoa2V5LnEuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpKTsKICB9CiAgaWYoIWtleS5xSW52KSB7CiAgICBrZXkucUludiA9IGtleS5xLm1vZEludmVyc2Uoa2V5LnApOwogIH0KCiAgLyogQ2hpbmVzZSByZW1haW5kZXIgdGhlb3JlbSAoQ1JUKSBzdGF0ZXM6CgogICAgU3VwcG9zZSBuMSwgbjIsIC4uLiwgbmsgYXJlIHBvc2l0aXZlIGludGVnZXJzIHdoaWNoIGFyZSBwYWlyd2lzZQogICAgY29wcmltZSAobjEgYW5kIG4yIGhhdmUgbm8gY29tbW9uIGZhY3RvcnMgb3RoZXIgdGhhbiAxKS4gRm9yIGFueQogICAgaW50ZWdlcnMgeDEsIHgyLCAuLi4sIHhrIHRoZXJlIGV4aXN0cyBhbiBpbnRlZ2VyIHggc29sdmluZyB0aGUKICAgIHN5c3RlbSBvZiBzaW11bHRhbmVvdXMgY29uZ3J1ZW5jZXMgKHdoZXJlIH49IG1lYW5zIG1vZHVsYXJseQogICAgY29uZ3J1ZW50IHNvIGEgfj0gYiBtb2QgbiBtZWFucyBhIG1vZCBuID0gYiBtb2Qgbik6CgogICAgeCB+PSB4MSBtb2QgbjEKICAgIHggfj0geDIgbW9kIG4yCiAgICAuLi4KICAgIHggfj0geGsgbW9kIG5rCgogICAgVGhpcyBzeXN0ZW0gb2YgY29uZ3J1ZW5jZXMgaGFzIGEgc2luZ2xlIHNpbXVsdGFuZW91cyBzb2x1dGlvbiB4CiAgICBiZXR3ZWVuIDAgYW5kIG4gLSAxLiBGdXJ0aGVybW9yZSwgZWFjaCB4ayBzb2x1dGlvbiBhbmQgeCBpdHNlbGYKICAgIGlzIGNvbmdydWVudCBtb2R1bG8gdGhlIHByb2R1Y3QgbiA9IG4xKm4yKi4uLipuay4KICAgIFNvIHgxIG1vZCBuID0geDIgbW9kIG4gPSB4ayBtb2QgbiA9IHggbW9kIG4uCgogICAgVGhlIHNpbmdsZSBzaW11bHRhbmVvdXMgc29sdXRpb24geCBjYW4gYmUgc29sdmVkIHdpdGggdGhlIGZvbGxvd2luZwogICAgZXF1YXRpb246CgogICAgeCA9IHN1bSh4aSpyaSpzaSkgbW9kIG4gd2hlcmUgcmkgPSBuL25pIGFuZCBzaSA9IHJpXi0xIG1vZCBuaS4KCiAgICBXaGVyZSB4IGlzIGxlc3MgdGhhbiBuLCB4aSA9IHggbW9kIG5pLgoKICAgIEZvciBSU0Egd2UgYXJlIG9ubHkgY29uY2VybmVkIHdpdGggayA9IDIuIFRoZSBtb2R1bHVzIG4gPSBwcSwgd2hlcmUKICAgIHAgYW5kIHEgYXJlIGNvcHJpbWUuIFRoZSBSU0EgZGVjcnlwdGlvbiBhbGdvcml0aG0gaXM6CgogICAgeSA9IHheZCBtb2QgbgoKICAgIEdpdmVuIHRoZSBhYm92ZToKCiAgICB4MSA9IHheZCBtb2QgcAogICAgcjEgPSBuL3AgPSBxCiAgICBzMSA9IHFeLTEgbW9kIHAKICAgIHgyID0geF5kIG1vZCBxCiAgICByMiA9IG4vcSA9IHAKICAgIHMyID0gcF4tMSBtb2QgcQoKICAgIFNvIHkgPSAoeDFyMXMxICsgeDJyMnMyKSBtb2QgbgogICAgICAgICA9ICgoeF5kIG1vZCBwKXEocV4tMSBtb2QgcCkgKyAoeF5kIG1vZCBxKXAocF4tMSBtb2QgcSkpIG1vZCBuCgogICAgQWNjb3JkaW5nIHRvIEZlcm1hdCdzIExpdHRsZSBUaGVvcmVtLCBpZiB0aGUgbW9kdWx1cyBQIGlzIHByaW1lLAogICAgZm9yIGFueSBpbnRlZ2VyIEEgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgUCwgQV4oUC0xKSB+PSAxIG1vZCBQLgogICAgU2luY2UgQSBpcyBub3QgZGl2aXNpYmxlIGJ5IFAgaXQgZm9sbG93cyB0aGF0IGlmOgogICAgTiB+PSBNIG1vZCAoUCAtIDEpLCB0aGVuIEFeTiBtb2QgUCA9IEFeTSBtb2QgUC4gVGhlcmVmb3JlOgoKICAgIEFeTiBtb2QgUCA9IEFeKE0gbW9kIChQIC0gMSkpIG1vZCBQLiAoVGhlIGxhdHRlciB0YWtlcyBsZXNzIGVmZm9ydAogICAgdG8gY2FsY3VsYXRlKS4gSW4gb3JkZXIgdG8gY2FsY3VsYXRlIHheZCBtb2QgcCBtb3JlIHF1aWNrbHkgdGhlCiAgICBleHBvbmVudCBkIG1vZCAocCAtIDEpIGlzIHN0b3JlZCBpbiB0aGUgUlNBIHByaXZhdGUga2V5ICh0aGUgc2FtZQogICAgaXMgZG9uZSBmb3IgeF5kIG1vZCBxKS4gVGhlc2UgdmFsdWVzIGFyZSByZWZlcnJlZCB0byBhcyBkUCBhbmQgZFEKICAgIHJlc3BlY3RpdmVseS4gVGhlcmVmb3JlIHdlIG5vdyBoYXZlOgoKICAgIHkgPSAoKHheZFAgbW9kIHApcShxXi0xIG1vZCBwKSArICh4XmRRIG1vZCBxKXAocF4tMSBtb2QgcSkpIG1vZCBuCgogICAgU2luY2Ugd2UnbGwgYmUgcmVkdWNpbmcgeF5kUCBieSBtb2R1bG8gcCAoc2FtZSBmb3IgcSkgd2UgY2FuIGFsc28KICAgIHJlZHVjZSB4IGJ5IHAgKGFuZCBxIHJlc3BlY3RpdmVseSkgYmVmb3JlIGhhbmQuIFRoZXJlZm9yZSwgbGV0CgogICAgeHAgPSAoKHggbW9kIHApXmRQIG1vZCBwKSwgYW5kCiAgICB4cSA9ICgoeCBtb2QgcSleZFEgbW9kIHEpLCB5aWVsZGluZzoKCiAgICB5ID0gKHhwKnEqKHFeLTEgbW9kIHApICsgeHEqcCoocF4tMSBtb2QgcSkpIG1vZCBuCgogICAgVGhpcyBjYW4gYmUgZnVydGhlciByZWR1Y2VkIHRvIGEgc2ltcGxlIGFsZ29yaXRobSB0aGF0IG9ubHkKICAgIHJlcXVpcmVzIDEgaW52ZXJzZSAodGhlIHEgaW52ZXJzZSBpcyB1c2VkKSB0byBiZSB1c2VkIGFuZCBzdG9yZWQuCiAgICBUaGUgYWxnb3JpdGhtIGlzIGNhbGxlZCBHYXJuZXIncyBhbGdvcml0aG0uIElmIHFJbnYgaXMgdGhlCiAgICBpbnZlcnNlIG9mIHEsIHdlIHNpbXBseSBjYWxjdWxhdGU6CgogICAgeSA9IChxSW52Kih4cCAtIHhxKSBtb2QgcCkgKiBxICsgeHEKCiAgICBIb3dldmVyLCB0aGVyZSBhcmUgdHdvIGZ1cnRoZXIgY29tcGxpY2F0aW9ucy4gRmlyc3QsIHdlIG5lZWQgdG8KICAgIGVuc3VyZSB0aGF0IHhwID4geHEgdG8gcHJldmVudCBzaWduZWQgQmlnSW50ZWdlcnMgZnJvbSBiZWluZyB1c2VkCiAgICBzbyB3ZSBhZGQgcCB1bnRpbCB0aGlzIGlzIHRydWUgKHNpbmNlIHdlIHdpbGwgYmUgbW9kJ2luZyB3aXRoCiAgICBwIGFueXdheSkuIFRoZW4sIHRoZXJlIGlzIGEga25vd24gdGltaW5nIGF0dGFjayBvbiBhbGdvcml0aG1zCiAgICB1c2luZyB0aGUgQ1JULiBUbyBtaXRpZ2F0ZSB0aGlzIHJpc2ssICJjcnlwdG9ncmFwaGljIGJsaW5kaW5nIgogICAgc2hvdWxkIGJlIHVzZWQuIFRoaXMgcmVxdWlyZXMgc2ltcGx5IGdlbmVyYXRpbmcgYSByYW5kb20gbnVtYmVyIHIKICAgIGJldHdlZW4gMCBhbmQgbi0xIGFuZCBpdHMgaW52ZXJzZSBhbmQgbXVsdGlwbHlpbmcgeCBieSByXmUgYmVmb3JlCiAgICBjYWxjdWxhdGluZyB5IGFuZCB0aGVuIG11bHRpcGx5aW5nIHkgYnkgcl4tMSBhZnRlcndhcmRzLiBOb3RlIHRoYXQKICAgIHIgbXVzdCBiZSBjb3ByaW1lIHdpdGggbiAoZ2NkKHIsIG4pID09PSAxKSBpbiBvcmRlciB0byBoYXZlIGFuCiAgICBpbnZlcnNlLgogICovCgogIC8vIGNyeXB0b2dyYXBoaWMgYmxpbmRpbmcKICB2YXIgcjsKICBkbyB7CiAgICByID0gbmV3IEJpZ0ludGVnZXIoCiAgICAgIGZvcmdlLnV0aWwuYnl0ZXNUb0hleChmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMoa2V5Lm4uYml0TGVuZ3RoKCkgLyA4KSksCiAgICAgIDE2KTsKICB9IHdoaWxlKHIuY29tcGFyZVRvKGtleS5uKSA+PSAwIHx8ICFyLmdjZChrZXkubikuZXF1YWxzKEJpZ0ludGVnZXIuT05FKSk7CiAgeCA9IHgubXVsdGlwbHkoci5tb2RQb3coa2V5LmUsIGtleS5uKSkubW9kKGtleS5uKTsKCiAgLy8gY2FsY3VsYXRlIHhwIGFuZCB4cQogIHZhciB4cCA9IHgubW9kKGtleS5wKS5tb2RQb3coa2V5LmRQLCBrZXkucCk7CiAgdmFyIHhxID0geC5tb2Qoa2V5LnEpLm1vZFBvdyhrZXkuZFEsIGtleS5xKTsKCiAgLy8geHAgbXVzdCBiZSBsYXJnZXIgdGhhbiB4cSB0byBhdm9pZCBzaWduZWQgYml0IHVzYWdlCiAgd2hpbGUoeHAuY29tcGFyZVRvKHhxKSA8IDApIHsKICAgIHhwID0geHAuYWRkKGtleS5wKTsKICB9CgogIC8vIGRvIGxhc3Qgc3RlcAogIHZhciB5ID0geHAuc3VidHJhY3QoeHEpCiAgICAubXVsdGlwbHkoa2V5LnFJbnYpLm1vZChrZXkucCkKICAgIC5tdWx0aXBseShrZXkucSkuYWRkKHhxKTsKCiAgLy8gcmVtb3ZlIGVmZmVjdCBvZiByYW5kb20gZm9yIGNyeXB0b2dyYXBoaWMgYmxpbmRpbmcKICB5ID0geS5tdWx0aXBseShyLm1vZEludmVyc2Uoa2V5Lm4pKS5tb2Qoa2V5Lm4pOwoKICByZXR1cm4geTsKfTsKCi8qKgogKiBOT1RFOiBUSElTIE1FVEhPRCBJUyBERVBSRUNBVEVELCB1c2UgJ3NpZ24nIG9uIGEgcHJpdmF0ZSBrZXkgb2JqZWN0IG9yCiAqICdlbmNyeXB0JyBvbiBhIHB1YmxpYyBrZXkgb2JqZWN0IGluc3RlYWQuCiAqCiAqIFBlcmZvcm1zIFJTQSBlbmNyeXB0aW9uLgogKgogKiBUaGUgcGFyYW1ldGVyIGJ0IGNvbnRyb2xzIHdoZXRoZXIgdG8gcHV0IHBhZGRpbmcgYnl0ZXMgYmVmb3JlIHRoZQogKiBtZXNzYWdlIHBhc3NlZCBpbi4gU2V0IGJ0IHRvIGVpdGhlciB0cnVlIG9yIGZhbHNlIHRvIGRpc2FibGUgcGFkZGluZwogKiBjb21wbGV0ZWx5IChpbiBvcmRlciB0byBoYW5kbGUgZS5nLiBFTVNBLVBTUyBlbmNvZGluZyBzZXBlcmF0ZWx5IGJlZm9yZSksCiAqIHNpZ25hbGluZyB3aGV0aGVyIHRoZSBlbmNyeXB0aW9uIG9wZXJhdGlvbiBpcyBhIHB1YmxpYyBrZXkgb3BlcmF0aW9uCiAqIChpLmUuIGVuY3J5cHRpbmcgZGF0YSkgb3Igbm90LCBpLmUuIHByaXZhdGUga2V5IG9wZXJhdGlvbiAoZGF0YSBzaWduaW5nKS4KICoKICogRm9yIFBLQ1MjMSB2MS41IHBhZGRpbmcgcGFzcyBpbiB0aGUgYmxvY2sgdHlwZSB0byB1c2UsIGkuZS4gZWl0aGVyIDB4MDEKICogKGZvciBzaWduaW5nKSBvciAweDAyIChmb3IgZW5jcnlwdGlvbikuIFRoZSBrZXkgb3BlcmF0aW9uIG1vZGUgKHByaXZhdGUKICogb3IgcHVibGljKSBpcyBkZXJpdmVkIGZyb20gdGhpcyBmbGFnIGluIHRoYXQgY2FzZSkuCiAqCiAqIEBwYXJhbSBtIHRoZSBtZXNzYWdlIHRvIGVuY3J5cHQgYXMgYSBieXRlIHN0cmluZy4KICogQHBhcmFtIGtleSB0aGUgUlNBIGtleSB0byB1c2UuCiAqIEBwYXJhbSBidCBmb3IgUEtDUyMxIHYxLjUgcGFkZGluZywgdGhlIGJsb2NrIHR5cGUgdG8gdXNlCiAqICAgKDB4MDEgZm9yIHByaXZhdGUga2V5LCAweDAyIGZvciBwdWJsaWMpLAogKiAgIHRvIGRpc2FibGUgcGFkZGluZzogdHJ1ZSA9IHB1YmxpYyBrZXksIGZhbHNlID0gcHJpdmF0ZSBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIGVuY3J5cHRlZCBieXRlcyBhcyBhIHN0cmluZy4KICovCnBraS5yc2EuZW5jcnlwdCA9IGZ1bmN0aW9uKG0sIGtleSwgYnQpIHsKICB2YXIgcHViID0gYnQ7CiAgdmFyIGViOwoKICAvLyBnZXQgdGhlIGxlbmd0aCBvZiB0aGUgbW9kdWx1cyBpbiBieXRlcwogIHZhciBrID0gTWF0aC5jZWlsKGtleS5uLmJpdExlbmd0aCgpIC8gOCk7CgogIGlmKGJ0ICE9PSBmYWxzZSAmJiBidCAhPT0gdHJ1ZSkgewogICAgLy8gbGVnYWN5LCBkZWZhdWx0IHRvIFBLQ1MjMSB2MS41IHBhZGRpbmcKICAgIHB1YiA9IChidCA9PT0gMHgwMik7CiAgICBlYiA9IF9lbmNvZGVQa2NzMV92MV81KG0sIGtleSwgYnQpOwogIH0gZWxzZSB7CiAgICBlYiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBlYi5wdXRCeXRlcyhtKTsKICB9CgogIC8vIGxvYWQgZW5jcnlwdGlvbiBibG9jayBhcyBiaWcgaW50ZWdlciAneCcKICAvLyBGSVhNRTogaGV4IGNvbnZlcnNpb24gaW5lZmZpY2llbnQsIGdldCBCaWdJbnRlZ2VyIHcvYnl0ZSBzdHJpbmdzCiAgdmFyIHggPSBuZXcgQmlnSW50ZWdlcihlYi50b0hleCgpLCAxNik7CgogIC8vIGRvIFJTQSBlbmNyeXB0aW9uCiAgdmFyIHkgPSBfbW9kUG93KHgsIGtleSwgcHViKTsKCiAgLy8gY29udmVydCB5IGludG8gdGhlIGVuY3J5cHRlZCBkYXRhIGJ5dGUgc3RyaW5nLCBpZiB5IGlzIHNob3J0ZXIgaW4KICAvLyBieXRlcyB0aGFuIGssIHRoZW4gcHJlcGVuZCB6ZXJvIGJ5dGVzIHRvIGZpbGwgdXAgZWQKICAvLyBGSVhNRTogaGV4IGNvbnZlcnNpb24gaW5lZmZpY2llbnQsIGdldCBCaWdJbnRlZ2VyIHcvYnl0ZSBzdHJpbmdzCiAgdmFyIHloZXggPSB5LnRvU3RyaW5nKDE2KTsKICB2YXIgZWQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHZhciB6ZXJvcyA9IGsgLSBNYXRoLmNlaWwoeWhleC5sZW5ndGggLyAyKTsKICB3aGlsZSh6ZXJvcyA+IDApIHsKICAgIGVkLnB1dEJ5dGUoMHgwMCk7CiAgICAtLXplcm9zOwogIH0KICBlZC5wdXRCeXRlcyhmb3JnZS51dGlsLmhleFRvQnl0ZXMoeWhleCkpOwogIHJldHVybiBlZC5nZXRCeXRlcygpOwp9OwoKLyoqCiAqIE5PVEU6IFRISVMgTUVUSE9EIElTIERFUFJFQ0FURUQsIHVzZSAnZGVjcnlwdCcgb24gYSBwcml2YXRlIGtleSBvYmplY3Qgb3IKICogJ3ZlcmlmeScgb24gYSBwdWJsaWMga2V5IG9iamVjdCBpbnN0ZWFkLgogKgogKiBQZXJmb3JtcyBSU0EgZGVjcnlwdGlvbi4KICoKICogVGhlIHBhcmFtZXRlciBtbCBjb250cm9scyB3aGV0aGVyIHRvIGFwcGx5IFBLQ1MjMSB2MS41IHBhZGRpbmcKICogb3Igbm90LiAgU2V0IG1sID0gZmFsc2UgdG8gZGlzYWJsZSBwYWRkaW5nIHJlbW92YWwgY29tcGxldGVseQogKiAoaW4gb3JkZXIgdG8gaGFuZGxlIGUuZy4gRU1TQS1QU1MgbGF0ZXIgb24pIGFuZCBzaW1wbHkgcGFzcyBiYWNrCiAqIHRoZSBSU0EgZW5jcnlwdGlvbiBibG9jay4KICoKICogQHBhcmFtIGVkIHRoZSBlbmNyeXB0ZWQgZGF0YSB0byBkZWNyeXB0IGluIGFzIGEgYnl0ZSBzdHJpbmcuCiAqIEBwYXJhbSBrZXkgdGhlIFJTQSBrZXkgdG8gdXNlLgogKiBAcGFyYW0gcHViIHRydWUgZm9yIGEgcHVibGljIGtleSBvcGVyYXRpb24sIGZhbHNlIGZvciBwcml2YXRlLgogKiBAcGFyYW0gbWwgdGhlIG1lc3NhZ2UgbGVuZ3RoLCBpZiBrbm93biwgZmFsc2UgdG8gZGlzYWJsZSBwYWRkaW5nLgogKgogKiBAcmV0dXJuIHRoZSBkZWNyeXB0ZWQgbWVzc2FnZSBhcyBhIGJ5dGUgc3RyaW5nLgogKi8KcGtpLnJzYS5kZWNyeXB0ID0gZnVuY3Rpb24oZWQsIGtleSwgcHViLCBtbCkgewogIC8vIGdldCB0aGUgbGVuZ3RoIG9mIHRoZSBtb2R1bHVzIGluIGJ5dGVzCiAgdmFyIGsgPSBNYXRoLmNlaWwoa2V5Lm4uYml0TGVuZ3RoKCkgLyA4KTsKCiAgLy8gZXJyb3IgaWYgdGhlIGxlbmd0aCBvZiB0aGUgZW5jcnlwdGVkIGRhdGEgRUQgaXMgbm90IGsKICBpZihlZC5sZW5ndGggIT09IGspIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignRW5jcnlwdGVkIG1lc3NhZ2UgbGVuZ3RoIGlzIGludmFsaWQuJyk7CiAgICBlcnJvci5sZW5ndGggPSBlZC5sZW5ndGg7CiAgICBlcnJvci5leHBlY3RlZCA9IGs7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIGNvbnZlcnQgZW5jcnlwdGVkIGRhdGEgaW50byBhIGJpZyBpbnRlZ2VyCiAgLy8gRklYTUU6IGhleCBjb252ZXJzaW9uIGluZWZmaWNpZW50LCBnZXQgQmlnSW50ZWdlciB3L2J5dGUgc3RyaW5ncwogIHZhciB5ID0gbmV3IEJpZ0ludGVnZXIoZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoZWQpLnRvSGV4KCksIDE2KTsKCiAgLy8geSBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbW9kdWx1cyBvciBpdCB3YXNuJ3QgdGhlIHJlc3VsdCBvZgogIC8vIGEgcHJldmlvdXMgbW9kIG9wZXJhdGlvbiAoZW5jcnlwdGlvbikgdXNpbmcgdGhhdCBtb2R1bHVzCiAgaWYoeS5jb21wYXJlVG8oa2V5Lm4pID49IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGVkIG1lc3NhZ2UgaXMgaW52YWxpZC4nKTsKICB9CgogIC8vIGRvIFJTQSBkZWNyeXB0aW9uCiAgdmFyIHggPSBfbW9kUG93KHksIGtleSwgcHViKTsKCiAgLy8gY3JlYXRlIHRoZSBlbmNyeXB0aW9uIGJsb2NrLCBpZiB4IGlzIHNob3J0ZXIgaW4gYnl0ZXMgdGhhbiBrLCB0aGVuCiAgLy8gcHJlcGVuZCB6ZXJvIGJ5dGVzIHRvIGZpbGwgdXAgZWIKICAvLyBGSVhNRTogaGV4IGNvbnZlcnNpb24gaW5lZmZpY2llbnQsIGdldCBCaWdJbnRlZ2VyIHcvYnl0ZSBzdHJpbmdzCiAgdmFyIHhoZXggPSB4LnRvU3RyaW5nKDE2KTsKICB2YXIgZWIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHZhciB6ZXJvcyA9IGsgLSBNYXRoLmNlaWwoeGhleC5sZW5ndGggLyAyKTsKICB3aGlsZSh6ZXJvcyA+IDApIHsKICAgIGViLnB1dEJ5dGUoMHgwMCk7CiAgICAtLXplcm9zOwogIH0KICBlYi5wdXRCeXRlcyhmb3JnZS51dGlsLmhleFRvQnl0ZXMoeGhleCkpOwoKICBpZihtbCAhPT0gZmFsc2UpIHsKICAgIC8vIGxlZ2FjeSwgZGVmYXVsdCB0byBQS0NTIzEgdjEuNSBwYWRkaW5nCiAgICByZXR1cm4gX2RlY29kZVBrY3MxX3YxXzUoZWIuZ2V0Qnl0ZXMoKSwga2V5LCBwdWIpOwogIH0KCiAgLy8gcmV0dXJuIG1lc3NhZ2UKICByZXR1cm4gZWIuZ2V0Qnl0ZXMoKTsKfTsKCi8qKgogKiBDcmVhdGVzIGFuIFJTQSBrZXktcGFpciBnZW5lcmF0aW9uIHN0YXRlIG9iamVjdC4gSXQgaXMgdXNlZCB0byBhbGxvdwogKiBrZXktZ2VuZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQgaW4gc3RlcHMuIEl0IGFsc28gYWxsb3dzIGZvciBhIFVJIHRvCiAqIGRpc3BsYXkgcHJvZ3Jlc3MgdXBkYXRlcy4KICoKICogQHBhcmFtIGJpdHMgdGhlIHNpemUgZm9yIHRoZSBwcml2YXRlIGtleSBpbiBiaXRzLCBkZWZhdWx0cyB0byAyMDQ4LgogKiBAcGFyYW0gZSB0aGUgcHVibGljIGV4cG9uZW50IHRvIHVzZSwgZGVmYXVsdHMgdG8gNjU1MzcgKDB4MTAwMDEpLgogKiBAcGFyYW0gW29wdGlvbnNdIHRoZSBvcHRpb25zIHRvIHVzZS4KICogICAgICAgICAgcHJuZyBhIGN1c3RvbSBjcnlwdG8tc2VjdXJlIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciB0byB1c2UsCiAqICAgICAgICAgICAgdGhhdCBtdXN0IGRlZmluZSAiZ2V0Qnl0ZXNTeW5jIi4KICogICAgICAgICAgYWxnb3JpdGhtIHRoZSBhbGdvcml0aG0gdG8gdXNlIChkZWZhdWx0OiAnUFJJTUVJTkMnKS4KICoKICogQHJldHVybiB0aGUgc3RhdGUgb2JqZWN0IHRvIHVzZSB0byBnZW5lcmF0ZSB0aGUga2V5LXBhaXIuCiAqLwpwa2kucnNhLmNyZWF0ZUtleVBhaXJHZW5lcmF0aW9uU3RhdGUgPSBmdW5jdGlvbihiaXRzLCBlLCBvcHRpb25zKSB7CiAgLy8gVE9ETzogbWlncmF0ZSBzdGVwLWJhc2VkIHByaW1lIGdlbmVyYXRpb24gY29kZSB0byBmb3JnZS5wcmltZQoKICAvLyBzZXQgZGVmYXVsdCBiaXRzCiAgaWYodHlwZW9mKGJpdHMpID09PSAnc3RyaW5nJykgewogICAgYml0cyA9IHBhcnNlSW50KGJpdHMsIDEwKTsKICB9CiAgYml0cyA9IGJpdHMgfHwgMjA0ODsKCiAgLy8gY3JlYXRlIHBybmcgd2l0aCBhcGkgdGhhdCBtYXRjaGVzIEJpZ0ludGVnZXIgc2VjdXJlIHJhbmRvbQogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHZhciBwcm5nID0gb3B0aW9ucy5wcm5nIHx8IGZvcmdlLnJhbmRvbTsKICB2YXIgcm5nID0gewogICAgLy8geCBpcyBhbiBhcnJheSB0byBmaWxsIHdpdGggYnl0ZXMKICAgIG5leHRCeXRlczogZnVuY3Rpb24oeCkgewogICAgICB2YXIgYiA9IHBybmcuZ2V0Qnl0ZXNTeW5jKHgubGVuZ3RoKTsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyArK2kpIHsKICAgICAgICB4W2ldID0gYi5jaGFyQ29kZUF0KGkpOwogICAgICB9CiAgICB9CiAgfTsKCiAgdmFyIGFsZ29yaXRobSA9IG9wdGlvbnMuYWxnb3JpdGhtIHx8ICdQUklNRUlOQyc7CgogIC8vIGNyZWF0ZSBQUklNRUlOQyBhbGdvcml0aG0gc3RhdGUKICB2YXIgcnZhbDsKICBpZihhbGdvcml0aG0gPT09ICdQUklNRUlOQycpIHsKICAgIHJ2YWwgPSB7CiAgICAgIGFsZ29yaXRobTogYWxnb3JpdGhtLAogICAgICBzdGF0ZTogMCwKICAgICAgYml0czogYml0cywKICAgICAgcm5nOiBybmcsCiAgICAgIGVJbnQ6IGUgfHwgNjU1MzcsCiAgICAgIGU6IG5ldyBCaWdJbnRlZ2VyKG51bGwpLAogICAgICBwOiBudWxsLAogICAgICBxOiBudWxsLAogICAgICBxQml0czogYml0cyA+PiAxLAogICAgICBwQml0czogYml0cyAtIChiaXRzID4+IDEpLAogICAgICBwcVN0YXRlOiAwLAogICAgICBudW06IG51bGwsCiAgICAgIGtleXM6IG51bGwKICAgIH07CiAgICBydmFsLmUuZnJvbUludChydmFsLmVJbnQpOwogIH0gZWxzZSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IGdlbmVyYXRpb24gYWxnb3JpdGhtOiAnICsgYWxnb3JpdGhtKTsKICB9CgogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEF0dGVtcHRzIHRvIHJ1bnMgdGhlIGtleS1nZW5lcmF0aW9uIGFsZ29yaXRobSBmb3IgYXQgbW9zdCBuIHNlY29uZHMKICogKGFwcHJveGltYXRlbHkpIHVzaW5nIHRoZSBnaXZlbiBzdGF0ZS4gV2hlbiBrZXktZ2VuZXJhdGlvbiBoYXMgY29tcGxldGVkLAogKiB0aGUga2V5cyB3aWxsIGJlIHN0b3JlZCBpbiBzdGF0ZS5rZXlzLgogKgogKiBUbyB1c2UgdGhpcyBmdW5jdGlvbiB0byB1cGRhdGUgYSBVSSB3aGlsZSBnZW5lcmF0aW5nIGEga2V5IG9yIHRvIHByZXZlbnQKICogY2F1c2luZyBicm93c2VyIGxvY2t1cHMvd2FybmluZ3MsIHNldCAibiIgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIDAuIEEKICogc2ltcGxlIHBhdHRlcm4gZm9yIGdlbmVyYXRpbmcgYSBrZXkgYW5kIHNob3dpbmcgYSBwcm9ncmVzcyBpbmRpY2F0b3IgaXM6CiAqCiAqIHZhciBzdGF0ZSA9IHBraS5yc2EuY3JlYXRlS2V5UGFpckdlbmVyYXRpb25TdGF0ZSgyMDQ4KTsKICogdmFyIHN0ZXAgPSBmdW5jdGlvbigpIHsKICogICAvLyBzdGVwIGtleS1nZW5lcmF0aW9uLCBydW4gYWxnb3JpdGhtIGZvciAxMDAgbXMsIHJlcGVhdAogKiAgIGlmKCFmb3JnZS5wa2kucnNhLnN0ZXBLZXlQYWlyR2VuZXJhdGlvblN0YXRlKHN0YXRlLCAxMDApKSB7CiAqICAgICBzZXRUaW1lb3V0KHN0ZXAsIDEpOwogKiAgIH0gZWxzZSB7CiAqICAgICAvLyBrZXktZ2VuZXJhdGlvbiBjb21wbGV0ZQogKiAgICAgLy8gVE9ETzogdHVybiBvZmYgcHJvZ3Jlc3MgaW5kaWNhdG9yIGhlcmUKICogICAgIC8vIFRPRE86IHVzZSB0aGUgZ2VuZXJhdGVkIGtleS1wYWlyIGluICJzdGF0ZS5rZXlzIgogKiAgIH0KICogfTsKICogLy8gVE9ETzogdHVybiBvbiBwcm9ncmVzcyBpbmRpY2F0b3IgaGVyZQogKiBzZXRUaW1lb3V0KHN0ZXAsIDApOwogKgogKiBAcGFyYW0gc3RhdGUgdGhlIHN0YXRlIHRvIHVzZS4KICogQHBhcmFtIG4gdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBydW4gdGhlIGFsZ29yaXRobSBmb3IsIDAKICogICAgICAgICAgdG8gcnVuIHRoZSBhbGdvcml0aG0gdG8gY29tcGxldGlvbi4KICoKICogQHJldHVybiB0cnVlIGlmIHRoZSBrZXktZ2VuZXJhdGlvbiBjb21wbGV0ZWQsIGZhbHNlIGlmIG5vdC4KICovCnBraS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGUgPSBmdW5jdGlvbihzdGF0ZSwgbikgewogIC8vIHNldCBkZWZhdWx0IGFsZ29yaXRobSBpZiBub3Qgc2V0CiAgaWYoISgnYWxnb3JpdGhtJyBpbiBzdGF0ZSkpIHsKICAgIHN0YXRlLmFsZ29yaXRobSA9ICdQUklNRUlOQyc7CiAgfQoKICAvLyBUT0RPOiBtaWdyYXRlIHN0ZXAtYmFzZWQgcHJpbWUgZ2VuZXJhdGlvbiBjb2RlIHRvIGZvcmdlLnByaW1lCiAgLy8gVE9ETzogYWJzdHJhY3QgYXMgUFJJTUVJTkMgYWxnb3JpdGhtCgogIC8vIGRvIGtleSBnZW5lcmF0aW9uIChiYXNlZCBvbiBUb20gV3UncyByc2EuanMsIHNlZSBqc2JuLmpzIGxpY2Vuc2UpCiAgLy8gd2l0aCBzb21lIG1pbm9yIG9wdGltaXphdGlvbnMgYW5kIGRlc2lnbmVkIHRvIHJ1biBpbiBzdGVwcwoKICAvLyBsb2NhbCBzdGF0ZSB2YXJzCiAgdmFyIFRISVJUWSA9IG5ldyBCaWdJbnRlZ2VyKG51bGwpOwogIFRISVJUWS5mcm9tSW50KDMwKTsKICB2YXIgZGVsdGFJZHggPSAwOwogIHZhciBvcF9vciA9IGZ1bmN0aW9uKHgseSkgeyByZXR1cm4geHx5OyB9OwoKICAvLyBrZWVwIHN0ZXBwaW5nIHVudGlsIHRpbWUgbGltaXQgaXMgcmVhY2hlZCBvciBkb25lCiAgdmFyIHQxID0gK25ldyBEYXRlKCk7CiAgdmFyIHQyOwogIHZhciB0b3RhbCA9IDA7CiAgd2hpbGUoc3RhdGUua2V5cyA9PT0gbnVsbCAmJiAobiA8PSAwIHx8IHRvdGFsIDwgbikpIHsKICAgIC8vIGdlbmVyYXRlIHAgb3IgcQogICAgaWYoc3RhdGUuc3RhdGUgPT09IDApIHsKICAgICAgLyogTm90ZTogQWxsIHByaW1lcyBhcmUgb2YgdGhlIGZvcm06CgogICAgICAgIDMwaytpLCBmb3IgaSA8IDMwIGFuZCBnY2QoMzAsIGkpPTEsIHdoZXJlIHRoZXJlIGFyZSA4IHZhbHVlcyBmb3IgaQoKICAgICAgICBXaGVuIHdlIGdlbmVyYXRlIGEgcmFuZG9tIG51bWJlciwgd2UgYWx3YXlzIGFsaWduIGl0IGF0IDMwayArIDEuIEVhY2gKICAgICAgICB0aW1lIHRoZSBudW1iZXIgaXMgZGV0ZXJtaW5lZCBub3QgdG8gYmUgcHJpbWUgd2UgYWRkIHRvIGdldCB0byB0aGUKICAgICAgICBuZXh0ICdpJywgZWc6IGlmIHRoZSBudW1iZXIgd2FzIGF0IDMwayArIDEgd2UgYWRkIDYuICovCiAgICAgIHZhciBiaXRzID0gKHN0YXRlLnAgPT09IG51bGwpID8gc3RhdGUucEJpdHMgOiBzdGF0ZS5xQml0czsKICAgICAgdmFyIGJpdHMxID0gYml0cyAtIDE7CgogICAgICAvLyBnZXQgYSByYW5kb20gbnVtYmVyCiAgICAgIGlmKHN0YXRlLnBxU3RhdGUgPT09IDApIHsKICAgICAgICBzdGF0ZS5udW0gPSBuZXcgQmlnSW50ZWdlcihiaXRzLCBzdGF0ZS5ybmcpOwogICAgICAgIC8vIGZvcmNlIE1TQiBzZXQKICAgICAgICBpZighc3RhdGUubnVtLnRlc3RCaXQoYml0czEpKSB7CiAgICAgICAgICBzdGF0ZS5udW0uYml0d2lzZVRvKAogICAgICAgICAgICBCaWdJbnRlZ2VyLk9ORS5zaGlmdExlZnQoYml0czEpLCBvcF9vciwgc3RhdGUubnVtKTsKICAgICAgICB9CiAgICAgICAgLy8gYWxpZ24gbnVtYmVyIG9uIDMwaysxIGJvdW5kYXJ5CiAgICAgICAgc3RhdGUubnVtLmRBZGRPZmZzZXQoMzEgLSBzdGF0ZS5udW0ubW9kKFRISVJUWSkuYnl0ZVZhbHVlKCksIDApOwogICAgICAgIGRlbHRhSWR4ID0gMDsKCiAgICAgICAgKytzdGF0ZS5wcVN0YXRlOwogICAgICB9IGVsc2UgaWYoc3RhdGUucHFTdGF0ZSA9PT0gMSkgewogICAgICAgIC8vIHRyeSB0byBtYWtlIHRoZSBudW1iZXIgYSBwcmltZQogICAgICAgIGlmKHN0YXRlLm51bS5iaXRMZW5ndGgoKSA+IGJpdHMpIHsKICAgICAgICAgIC8vIG92ZXJmbG93LCB0cnkgYWdhaW4KICAgICAgICAgIHN0YXRlLnBxU3RhdGUgPSAwOwogICAgICAgICAgLy8gZG8gcHJpbWFsaXR5IHRlc3QKICAgICAgICB9IGVsc2UgaWYoc3RhdGUubnVtLmlzUHJvYmFibGVQcmltZSgKICAgICAgICAgIF9nZXRNaWxsZXJSYWJpblRlc3RzKHN0YXRlLm51bS5iaXRMZW5ndGgoKSkpKSB7CiAgICAgICAgICArK3N0YXRlLnBxU3RhdGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIC8vIGdldCBuZXh0IHBvdGVudGlhbCBwcmltZQogICAgICAgICAgc3RhdGUubnVtLmRBZGRPZmZzZXQoR0NEXzMwX0RFTFRBW2RlbHRhSWR4KysgJSA4XSwgMCk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYoc3RhdGUucHFTdGF0ZSA9PT0gMikgewogICAgICAgIC8vIGVuc3VyZSBudW1iZXIgaXMgY29wcmltZSB3aXRoIGUKICAgICAgICBzdGF0ZS5wcVN0YXRlID0KICAgICAgICAgIChzdGF0ZS5udW0uc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpLmdjZChzdGF0ZS5lKQogICAgICAgICAgLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgPT09IDApID8gMyA6IDA7CiAgICAgIH0gZWxzZSBpZihzdGF0ZS5wcVN0YXRlID09PSAzKSB7CiAgICAgICAgLy8gc3RvcmUgcCBvciBxCiAgICAgICAgc3RhdGUucHFTdGF0ZSA9IDA7CiAgICAgICAgaWYoc3RhdGUucCA9PT0gbnVsbCkgewogICAgICAgICAgc3RhdGUucCA9IHN0YXRlLm51bTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc3RhdGUucSA9IHN0YXRlLm51bTsKICAgICAgICB9CgogICAgICAgIC8vIGFkdmFuY2Ugc3RhdGUgaWYgYm90aCBwIGFuZCBxIGFyZSByZWFkeQogICAgICAgIGlmKHN0YXRlLnAgIT09IG51bGwgJiYgc3RhdGUucSAhPT0gbnVsbCkgewogICAgICAgICAgKytzdGF0ZS5zdGF0ZTsKICAgICAgICB9CiAgICAgICAgc3RhdGUubnVtID0gbnVsbDsKICAgICAgfQogICAgfSBlbHNlIGlmKHN0YXRlLnN0YXRlID09PSAxKSB7CiAgICAgIC8vIGVuc3VyZSBwIGlzIGxhcmdlciB0aGFuIHEgKHN3YXAgdGhlbSBpZiBub3QpCiAgICAgIGlmKHN0YXRlLnAuY29tcGFyZVRvKHN0YXRlLnEpIDwgMCkgewogICAgICAgIHN0YXRlLm51bSA9IHN0YXRlLnA7CiAgICAgICAgc3RhdGUucCA9IHN0YXRlLnE7CiAgICAgICAgc3RhdGUucSA9IHN0YXRlLm51bTsKICAgICAgfQogICAgICArK3N0YXRlLnN0YXRlOwogICAgfSBlbHNlIGlmKHN0YXRlLnN0YXRlID09PSAyKSB7CiAgICAgIC8vIGNvbXB1dGUgcGhpOiAocCAtIDEpKHEgLSAxKSAoRXVsZXIncyB0b3RpZW50IGZ1bmN0aW9uKQogICAgICBzdGF0ZS5wMSA9IHN0YXRlLnAuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOwogICAgICBzdGF0ZS5xMSA9IHN0YXRlLnEuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOwogICAgICBzdGF0ZS5waGkgPSBzdGF0ZS5wMS5tdWx0aXBseShzdGF0ZS5xMSk7CiAgICAgICsrc3RhdGUuc3RhdGU7CiAgICB9IGVsc2UgaWYoc3RhdGUuc3RhdGUgPT09IDMpIHsKICAgICAgLy8gZW5zdXJlIGUgYW5kIHBoaSBhcmUgY29wcmltZQogICAgICBpZihzdGF0ZS5waGkuZ2NkKHN0YXRlLmUpLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgPT09IDApIHsKICAgICAgICAvLyBwaGkgYW5kIGUgYXJlIGNvcHJpbWUsIGFkdmFuY2UKICAgICAgICArK3N0YXRlLnN0YXRlOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIHBoaSBhbmQgZSBhcmVuJ3QgY29wcmltZSwgc28gZ2VuZXJhdGUgYSBuZXcgcCBhbmQgcQogICAgICAgIHN0YXRlLnAgPSBudWxsOwogICAgICAgIHN0YXRlLnEgPSBudWxsOwogICAgICAgIHN0YXRlLnN0YXRlID0gMDsKICAgICAgfQogICAgfSBlbHNlIGlmKHN0YXRlLnN0YXRlID09PSA0KSB7CiAgICAgIC8vIGNyZWF0ZSBuLCBlbnN1cmUgbiBpcyBoYXMgdGhlIHJpZ2h0IG51bWJlciBvZiBiaXRzCiAgICAgIHN0YXRlLm4gPSBzdGF0ZS5wLm11bHRpcGx5KHN0YXRlLnEpOwoKICAgICAgLy8gZW5zdXJlIG4gaXMgcmlnaHQgbnVtYmVyIG9mIGJpdHMKICAgICAgaWYoc3RhdGUubi5iaXRMZW5ndGgoKSA9PT0gc3RhdGUuYml0cykgewogICAgICAgIC8vIHN1Y2Nlc3MsIGFkdmFuY2UKICAgICAgICArK3N0YXRlLnN0YXRlOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIGZhaWxlZCwgZ2V0IG5ldyBxCiAgICAgICAgc3RhdGUucSA9IG51bGw7CiAgICAgICAgc3RhdGUuc3RhdGUgPSAwOwogICAgICB9CiAgICB9IGVsc2UgaWYoc3RhdGUuc3RhdGUgPT09IDUpIHsKICAgICAgLy8gc2V0IGtleXMKICAgICAgdmFyIGQgPSBzdGF0ZS5lLm1vZEludmVyc2Uoc3RhdGUucGhpKTsKICAgICAgc3RhdGUua2V5cyA9IHsKICAgICAgICBwcml2YXRlS2V5OiBwa2kucnNhLnNldFByaXZhdGVLZXkoCiAgICAgICAgICBzdGF0ZS5uLCBzdGF0ZS5lLCBkLCBzdGF0ZS5wLCBzdGF0ZS5xLAogICAgICAgICAgZC5tb2Qoc3RhdGUucDEpLCBkLm1vZChzdGF0ZS5xMSksCiAgICAgICAgICBzdGF0ZS5xLm1vZEludmVyc2Uoc3RhdGUucCkpLAogICAgICAgIHB1YmxpY0tleTogcGtpLnJzYS5zZXRQdWJsaWNLZXkoc3RhdGUubiwgc3RhdGUuZSkKICAgICAgfTsKICAgIH0KCiAgICAvLyB1cGRhdGUgdGltaW5nCiAgICB0MiA9ICtuZXcgRGF0ZSgpOwogICAgdG90YWwgKz0gdDIgLSB0MTsKICAgIHQxID0gdDI7CiAgfQoKICByZXR1cm4gc3RhdGUua2V5cyAhPT0gbnVsbDsKfTsKCi8qKgogKiBHZW5lcmF0ZXMgYW4gUlNBIHB1YmxpYy1wcml2YXRlIGtleSBwYWlyIGluIGEgc2luZ2xlIGNhbGwuCiAqCiAqIFRvIGdlbmVyYXRlIGEga2V5LXBhaXIgaW4gc3RlcHMgKHRvIGFsbG93IGZvciBwcm9ncmVzcyB1cGRhdGVzIGFuZCB0bwogKiBwcmV2ZW50IGJsb2NraW5nIG9yIHdhcm5pbmdzIGluIHNsb3cgYnJvd3NlcnMpIHRoZW4gdXNlIHRoZSBrZXktcGFpcgogKiBnZW5lcmF0aW9uIHN0YXRlIGZ1bmN0aW9ucy4KICoKICogVG8gZ2VuZXJhdGUgYSBrZXktcGFpciBhc3luY2hyb25vdXNseSAoZWl0aGVyIHRocm91Z2ggd2ViLXdvcmtlcnMsIGlmCiAqIGF2YWlsYWJsZSwgb3IgYnkgYnJlYWtpbmcgdXAgdGhlIHdvcmsgb24gdGhlIG1haW4gdGhyZWFkKSwgcGFzcyBhCiAqIGNhbGxiYWNrIGZ1bmN0aW9uLgogKgogKiBAcGFyYW0gW2JpdHNdIHRoZSBzaXplIGZvciB0aGUgcHJpdmF0ZSBrZXkgaW4gYml0cywgZGVmYXVsdHMgdG8gMjA0OC4KICogQHBhcmFtIFtlXSB0aGUgcHVibGljIGV4cG9uZW50IHRvIHVzZSwgZGVmYXVsdHMgdG8gNjU1MzcuCiAqIEBwYXJhbSBbb3B0aW9uc10gb3B0aW9ucyBmb3Iga2V5LXBhaXIgZ2VuZXJhdGlvbiwgaWYgZ2l2ZW4gdGhlbiAnYml0cycKICogICAgICAgICAgYW5kICdlJyBtdXN0ICpub3QqIGJlIGdpdmVuOgogKiAgICAgICAgICBiaXRzIHRoZSBzaXplIGZvciB0aGUgcHJpdmF0ZSBrZXkgaW4gYml0cywgKGRlZmF1bHQ6IDIwNDgpLgogKiAgICAgICAgICBlIHRoZSBwdWJsaWMgZXhwb25lbnQgdG8gdXNlLCAoZGVmYXVsdDogNjU1MzcgKDB4MTAwMDEpKS4KICogICAgICAgICAgd29ya2VyU2NyaXB0IHRoZSB3b3JrZXIgc2NyaXB0IFVSTC4KICogICAgICAgICAgd29ya2VycyB0aGUgbnVtYmVyIG9mIHdlYiB3b3JrZXJzIChpZiBzdXBwb3J0ZWQpIHRvIHVzZSwKICogICAgICAgICAgICAoZGVmYXVsdDogMikuCiAqICAgICAgICAgIHdvcmtMb2FkIHRoZSBzaXplIG9mIHRoZSB3b3JrIGxvYWQsIGllOiBudW1iZXIgb2YgcG9zc2libGUgcHJpbWUKICogICAgICAgICAgICBudW1iZXJzIGZvciBlYWNoIHdlYiB3b3JrZXIgdG8gY2hlY2sgcGVyIHdvcmsgYXNzaWdubWVudCwKICogICAgICAgICAgICAoZGVmYXVsdDogMTAwKS4KICogICAgICAgICAgZSB0aGUgcHVibGljIGV4cG9uZW50IHRvIHVzZSwgZGVmYXVsdHMgdG8gNjU1MzcuCiAqICAgICAgICAgIHBybmcgYSBjdXN0b20gY3J5cHRvLXNlY3VyZSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlLAogKiAgICAgICAgICAgIHRoYXQgbXVzdCBkZWZpbmUgImdldEJ5dGVzU3luYyIuCiAqICAgICAgICAgIGFsZ29yaXRobSB0aGUgYWxnb3JpdGhtIHRvIHVzZSAoZGVmYXVsdDogJ1BSSU1FSU5DJykuCiAqIEBwYXJhbSBbY2FsbGJhY2soZXJyLCBrZXlwYWlyKV0gY2FsbGVkIG9uY2UgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCiAqCiAqIEByZXR1cm4gYW4gb2JqZWN0IHdpdGggcHJpdmF0ZUtleSBhbmQgcHVibGljS2V5IHByb3BlcnRpZXMuCiAqLwpwa2kucnNhLmdlbmVyYXRlS2V5UGFpciA9IGZ1bmN0aW9uKGJpdHMsIGUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7CiAgLy8gKGJpdHMpLCAob3B0aW9ucyksIChjYWxsYmFjaykKICBpZihhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7CiAgICBpZih0eXBlb2YgYml0cyA9PT0gJ29iamVjdCcpIHsKICAgICAgb3B0aW9ucyA9IGJpdHM7CiAgICAgIGJpdHMgPSB1bmRlZmluZWQ7CiAgICB9IGVsc2UgaWYodHlwZW9mIGJpdHMgPT09ICdmdW5jdGlvbicpIHsKICAgICAgY2FsbGJhY2sgPSBiaXRzOwogICAgICBiaXRzID0gdW5kZWZpbmVkOwogICAgfQogIH0gZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7CiAgICAvLyAoYml0cywgZSksIChiaXRzLCBvcHRpb25zKSwgKGJpdHMsIGNhbGxiYWNrKSwgKG9wdGlvbnMsIGNhbGxiYWNrKQogICAgaWYodHlwZW9mIGJpdHMgPT09ICdudW1iZXInKSB7CiAgICAgIGlmKHR5cGVvZiBlID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgY2FsbGJhY2sgPSBlOwogICAgICAgIGUgPSB1bmRlZmluZWQ7CiAgICAgIH0gZWxzZSBpZih0eXBlb2YgZSAhPT0gJ251bWJlcicpIHsKICAgICAgICBvcHRpb25zID0gZTsKICAgICAgICBlID0gdW5kZWZpbmVkOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBvcHRpb25zID0gYml0czsKICAgICAgY2FsbGJhY2sgPSBlOwogICAgICBiaXRzID0gdW5kZWZpbmVkOwogICAgICBlID0gdW5kZWZpbmVkOwogICAgfQogIH0gZWxzZSBpZihhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7CiAgICAvLyAoYml0cywgZSwgb3B0aW9ucyksIChiaXRzLCBlLCBjYWxsYmFjayksIChiaXRzLCBvcHRpb25zLCBjYWxsYmFjaykKICAgIGlmKHR5cGVvZiBlID09PSAnbnVtYmVyJykgewogICAgICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGNhbGxiYWNrID0gb3B0aW9uczsKICAgICAgICBvcHRpb25zID0gdW5kZWZpbmVkOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjYWxsYmFjayA9IG9wdGlvbnM7CiAgICAgIG9wdGlvbnMgPSBlOwogICAgICBlID0gdW5kZWZpbmVkOwogICAgfQogIH0KICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICBpZihiaXRzID09PSB1bmRlZmluZWQpIHsKICAgIGJpdHMgPSBvcHRpb25zLmJpdHMgfHwgMjA0ODsKICB9CiAgaWYoZSA9PT0gdW5kZWZpbmVkKSB7CiAgICBlID0gb3B0aW9ucy5lIHx8IDB4MTAwMDE7CiAgfQogIHZhciBzdGF0ZSA9IHBraS5yc2EuY3JlYXRlS2V5UGFpckdlbmVyYXRpb25TdGF0ZShiaXRzLCBlLCBvcHRpb25zKTsKICBpZighY2FsbGJhY2spIHsKICAgIHBraS5yc2Euc3RlcEtleVBhaXJHZW5lcmF0aW9uU3RhdGUoc3RhdGUsIDApOwogICAgcmV0dXJuIHN0YXRlLmtleXM7CiAgfQogIF9nZW5lcmF0ZUtleVBhaXIoc3RhdGUsIG9wdGlvbnMsIGNhbGxiYWNrKTsKfTsKCi8qKgogKiBTZXRzIGFuIFJTQSBwdWJsaWMga2V5IGZyb20gQmlnSW50ZWdlcnMgbW9kdWx1cyBhbmQgZXhwb25lbnQuCiAqCiAqIEBwYXJhbSBuIHRoZSBtb2R1bHVzLgogKiBAcGFyYW0gZSB0aGUgZXhwb25lbnQuCiAqCiAqIEByZXR1cm4gdGhlIHB1YmxpYyBrZXkuCiAqLwpwa2kuc2V0UnNhUHVibGljS2V5ID0gcGtpLnJzYS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbihuLCBlKSB7CiAgdmFyIGtleSA9IHsKICAgIG46IG4sCiAgICBlOiBlCiAgfTsKCiAgLyoqCiAgICogRW5jcnlwdHMgdGhlIGdpdmVuIGRhdGEgd2l0aCB0aGlzIHB1YmxpYyBrZXkuIE5ld2VyIGFwcGxpY2F0aW9ucwogICAqIHNob3VsZCB1c2UgdGhlICdSU0EtT0FFUCcgZGVjcnlwdGlvbiBzY2hlbWUsICdSU0FFUy1QS0NTMS1WMV81JyBpcyBmb3IKICAgKiBsZWdhY3kgYXBwbGljYXRpb25zLgogICAqCiAgICogQHBhcmFtIGRhdGEgdGhlIGJ5dGUgc3RyaW5nIHRvIGVuY3J5cHQuCiAgICogQHBhcmFtIHNjaGVtZSB0aGUgZW5jcnlwdGlvbiBzY2hlbWUgdG8gdXNlOgogICAqICAgICAgICAgICdSU0FFUy1QS0NTMS1WMV81JyAoZGVmYXVsdCksCiAgICogICAgICAgICAgJ1JTQS1PQUVQJywKICAgKiAgICAgICAgICAnUkFXJywgJ05PTkUnLCBvciBudWxsIHRvIHBlcmZvcm0gcmF3IFJTQSBlbmNyeXB0aW9uLAogICAqICAgICAgICAgIGFuIG9iamVjdCB3aXRoIGFuICdlbmNvZGUnIHByb3BlcnR5IHNldCB0byBhIGZ1bmN0aW9uCiAgICogICAgICAgICAgd2l0aCB0aGUgc2lnbmF0dXJlICdmdW5jdGlvbihkYXRhLCBrZXkpJyB0aGF0IHJldHVybnMKICAgKiAgICAgICAgICBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGVuY29kZWQgZGF0YS4KICAgKiBAcGFyYW0gc2NoZW1lT3B0aW9ucyBhbnkgc2NoZW1lLXNwZWNpZmljIG9wdGlvbnMuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBlbmNyeXB0ZWQgYnl0ZSBzdHJpbmcuCiAgICovCiAga2V5LmVuY3J5cHQgPSBmdW5jdGlvbihkYXRhLCBzY2hlbWUsIHNjaGVtZU9wdGlvbnMpIHsKICAgIGlmKHR5cGVvZiBzY2hlbWUgPT09ICdzdHJpbmcnKSB7CiAgICAgIHNjaGVtZSA9IHNjaGVtZS50b1VwcGVyQ2FzZSgpOwogICAgfSBlbHNlIGlmKHNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHNjaGVtZSA9ICdSU0FFUy1QS0NTMS1WMV81JzsKICAgIH0KCiAgICBpZihzY2hlbWUgPT09ICdSU0FFUy1QS0NTMS1WMV81JykgewogICAgICBzY2hlbWUgPSB7CiAgICAgICAgZW5jb2RlOiBmdW5jdGlvbihtLCBrZXksIHB1YikgewogICAgICAgICAgcmV0dXJuIF9lbmNvZGVQa2NzMV92MV81KG0sIGtleSwgMHgwMikuZ2V0Qnl0ZXMoKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9IGVsc2UgaWYoc2NoZW1lID09PSAnUlNBLU9BRVAnIHx8IHNjaGVtZSA9PT0gJ1JTQUVTLU9BRVAnKSB7CiAgICAgIHNjaGVtZSA9IHsKICAgICAgICBlbmNvZGU6IGZ1bmN0aW9uKG0sIGtleSkgewogICAgICAgICAgcmV0dXJuIGZvcmdlLnBrY3MxLmVuY29kZV9yc2Ffb2FlcChrZXksIG0sIHNjaGVtZU9wdGlvbnMpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0gZWxzZSBpZihbJ1JBVycsICdOT05FJywgJ05VTEwnLCBudWxsXS5pbmRleE9mKHNjaGVtZSkgIT09IC0xKSB7CiAgICAgIHNjaGVtZSA9IHsgZW5jb2RlOiBmdW5jdGlvbihlKSB7IHJldHVybiBlOyB9IH07CiAgICB9IGVsc2UgaWYodHlwZW9mIHNjaGVtZSA9PT0gJ3N0cmluZycpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBlbmNyeXB0aW9uIHNjaGVtZTogIicgKyBzY2hlbWUgKyAnIi4nKTsKICAgIH0KCiAgICAvLyBkbyBzY2hlbWUtYmFzZWQgZW5jb2RpbmcgdGhlbiByc2EgZW5jcnlwdGlvbgogICAgdmFyIGUgPSBzY2hlbWUuZW5jb2RlKGRhdGEsIGtleSwgdHJ1ZSk7CiAgICByZXR1cm4gcGtpLnJzYS5lbmNyeXB0KGUsIGtleSwgdHJ1ZSk7CiAgfTsKCiAgLyoqCiAgICogVmVyaWZpZXMgdGhlIGdpdmVuIHNpZ25hdHVyZSBhZ2FpbnN0IHRoZSBnaXZlbiBkaWdlc3QuCiAgICoKICAgKiBQS0NTIzEgc3VwcG9ydHMgbXVsdGlwbGUgKGN1cnJlbnRseSB0d28pIHNpZ25hdHVyZSBzY2hlbWVzOgogICAqIFJTQVNTQS1QS0NTMS1WMV81IGFuZCBSU0FTU0EtUFNTLgogICAqCiAgICogQnkgZGVmYXVsdCB0aGlzIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlICJvbGQgc2NoZW1lIiwgaS5lLgogICAqIFJTQVNTQS1QS0NTMS1WMV81LCBpbiB3aGljaCBjYXNlIG9uY2UgUlNBLWRlY3J5cHRlZCwgdGhlCiAgICogc2lnbmF0dXJlIGlzIGFuIE9DVEVUIFNUUklORyB0aGF0IGhvbGRzIGEgRGlnZXN0SW5mby4KICAgKgogICAqIERpZ2VzdEluZm8gOjo9IFNFUVVFTkNFIHsKICAgKiAgIGRpZ2VzdEFsZ29yaXRobSBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyLAogICAqICAgZGlnZXN0IERpZ2VzdAogICAqIH0KICAgKiBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyIDo6PSBBbGdvcml0aG1JZGVudGlmaWVyCiAgICogRGlnZXN0IDo6PSBPQ1RFVCBTVFJJTkcKICAgKgogICAqIFRvIHBlcmZvcm0gUFNTIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24sIHByb3ZpZGUgYW4gaW5zdGFuY2UKICAgKiBvZiBGb3JnZSBQU1Mgb2JqZWN0IGFzIHRoZSBzY2hlbWUgcGFyYW1ldGVyLgogICAqCiAgICogQHBhcmFtIGRpZ2VzdCB0aGUgbWVzc2FnZSBkaWdlc3QgaGFzaCB0byBjb21wYXJlIGFnYWluc3QgdGhlIHNpZ25hdHVyZSwKICAgKiAgICAgICAgICBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZy4KICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBzaWduYXR1cmUgdG8gdmVyaWZ5LCBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZy4KICAgKiBAcGFyYW0gc2NoZW1lIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gc2NoZW1lIHRvIHVzZToKICAgKiAgICAgICAgICAnUlNBU1NBLVBLQ1MxLVYxXzUnIG9yIHVuZGVmaW5lZCBmb3IgUlNBU1NBIFBLQ1MjMSB2MS41LAogICAqICAgICAgICAgIGEgRm9yZ2UgUFNTIG9iamVjdCBmb3IgUlNBU1NBLVBTUywKICAgKiAgICAgICAgICAnTk9ORScgb3IgbnVsbCBmb3Igbm9uZSwgRGlnZXN0SW5mbyB3aWxsIG5vdCBiZSBleHBlY3RlZCwgYnV0CiAgICogICAgICAgICAgICBQS0NTIzEgdjEuNSBwYWRkaW5nIHdpbGwgc3RpbGwgYmUgdXNlZC4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2lnbmF0dXJlIHdhcyB2ZXJpZmllZCwgZmFsc2UgaWYgbm90LgogICAqLwogICBrZXkudmVyaWZ5ID0gZnVuY3Rpb24oZGlnZXN0LCBzaWduYXR1cmUsIHNjaGVtZSkgewogICAgIGlmKHR5cGVvZiBzY2hlbWUgPT09ICdzdHJpbmcnKSB7CiAgICAgICBzY2hlbWUgPSBzY2hlbWUudG9VcHBlckNhc2UoKTsKICAgICB9IGVsc2UgaWYoc2NoZW1lID09PSB1bmRlZmluZWQpIHsKICAgICAgIHNjaGVtZSA9ICdSU0FTU0EtUEtDUzEtVjFfNSc7CiAgICAgfQoKICAgICBpZihzY2hlbWUgPT09ICdSU0FTU0EtUEtDUzEtVjFfNScpIHsKICAgICAgIHNjaGVtZSA9IHsKICAgICAgICAgdmVyaWZ5OiBmdW5jdGlvbihkaWdlc3QsIGQpIHsKICAgICAgICAgICAvLyByZW1vdmUgcGFkZGluZwogICAgICAgICAgIGQgPSBfZGVjb2RlUGtjczFfdjFfNShkLCBrZXksIHRydWUpOwogICAgICAgICAgIC8vIGQgaXMgQVNOLjEgQkVSLWVuY29kZWQgRGlnZXN0SW5mbwogICAgICAgICAgIHZhciBvYmogPSBhc24xLmZyb21EZXIoZCk7CiAgICAgICAgICAgLy8gY29tcGFyZSB0aGUgZ2l2ZW4gZGlnZXN0IHRvIHRoZSBkZWNyeXB0ZWQgb25lCiAgICAgICAgICAgcmV0dXJuIGRpZ2VzdCA9PT0gb2JqLnZhbHVlWzFdLnZhbHVlOwogICAgICAgICB9CiAgICAgICB9OwogICAgIH0gZWxzZSBpZihzY2hlbWUgPT09ICdOT05FJyB8fCBzY2hlbWUgPT09ICdOVUxMJyB8fCBzY2hlbWUgPT09IG51bGwpIHsKICAgICAgIHNjaGVtZSA9IHsKICAgICAgICAgdmVyaWZ5OiBmdW5jdGlvbihkaWdlc3QsIGQpIHsKICAgICAgICAgICAvLyByZW1vdmUgcGFkZGluZwogICAgICAgICAgIGQgPSBfZGVjb2RlUGtjczFfdjFfNShkLCBrZXksIHRydWUpOwogICAgICAgICAgIHJldHVybiBkaWdlc3QgPT09IGQ7CiAgICAgICAgIH0KICAgICAgIH07CiAgICAgfQoKICAgICAvLyBkbyByc2EgZGVjcnlwdGlvbiB3L28gYW55IGRlY29kaW5nLCB0aGVuIHZlcmlmeSAtLSB3aGljaCBkb2VzIGRlY29kaW5nCiAgICAgdmFyIGQgPSBwa2kucnNhLmRlY3J5cHQoc2lnbmF0dXJlLCBrZXksIHRydWUsIGZhbHNlKTsKICAgICByZXR1cm4gc2NoZW1lLnZlcmlmeShkaWdlc3QsIGQsIGtleS5uLmJpdExlbmd0aCgpKTsKICB9OwoKICByZXR1cm4ga2V5Owp9OwoKLyoqCiAqIFNldHMgYW4gUlNBIHByaXZhdGUga2V5IGZyb20gQmlnSW50ZWdlcnMgbW9kdWx1cywgZXhwb25lbnQsIHByaW1lcywKICogcHJpbWUgZXhwb25lbnRzLCBhbmQgbW9kdWxhciBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlLgogKgogKiBAcGFyYW0gbiB0aGUgbW9kdWx1cy4KICogQHBhcmFtIGUgdGhlIHB1YmxpYyBleHBvbmVudC4KICogQHBhcmFtIGQgdGhlIHByaXZhdGUgZXhwb25lbnQgKChpbnZlcnNlIG9mIGUpIG1vZCBuKS4KICogQHBhcmFtIHAgdGhlIGZpcnN0IHByaW1lLgogKiBAcGFyYW0gcSB0aGUgc2Vjb25kIHByaW1lLgogKiBAcGFyYW0gZFAgZXhwb25lbnQxIChkIG1vZCAocC0xKSkuCiAqIEBwYXJhbSBkUSBleHBvbmVudDIgKGQgbW9kIChxLTEpKS4KICogQHBhcmFtIHFJbnYgKChpbnZlcnNlIG9mIHEpIG1vZCBwKQogKgogKiBAcmV0dXJuIHRoZSBwcml2YXRlIGtleS4KICovCnBraS5zZXRSc2FQcml2YXRlS2V5ID0gcGtpLnJzYS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24oCiAgbiwgZSwgZCwgcCwgcSwgZFAsIGRRLCBxSW52KSB7CiAgdmFyIGtleSA9IHsKICAgIG46IG4sCiAgICBlOiBlLAogICAgZDogZCwKICAgIHA6IHAsCiAgICBxOiBxLAogICAgZFA6IGRQLAogICAgZFE6IGRRLAogICAgcUludjogcUludgogIH07CgogIC8qKgogICAqIERlY3J5cHRzIHRoZSBnaXZlbiBkYXRhIHdpdGggdGhpcyBwcml2YXRlIGtleS4gVGhlIGRlY3J5cHRpb24gc2NoZW1lCiAgICogbXVzdCBtYXRjaCB0aGUgb25lIHVzZWQgdG8gZW5jcnlwdCB0aGUgZGF0YS4KICAgKgogICAqIEBwYXJhbSBkYXRhIHRoZSBieXRlIHN0cmluZyB0byBkZWNyeXB0LgogICAqIEBwYXJhbSBzY2hlbWUgdGhlIGRlY3J5cHRpb24gc2NoZW1lIHRvIHVzZToKICAgKiAgICAgICAgICAnUlNBRVMtUEtDUzEtVjFfNScgKGRlZmF1bHQpLAogICAqICAgICAgICAgICdSU0EtT0FFUCcsCiAgICogICAgICAgICAgJ1JBVycsICdOT05FJywgb3IgbnVsbCB0byBwZXJmb3JtIHJhdyBSU0EgZGVjcnlwdGlvbi4KICAgKiBAcGFyYW0gc2NoZW1lT3B0aW9ucyBhbnkgc2NoZW1lLXNwZWNpZmljIG9wdGlvbnMuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBkZWNyeXB0ZWQgYnl0ZSBzdHJpbmcuCiAgICovCiAga2V5LmRlY3J5cHQgPSBmdW5jdGlvbihkYXRhLCBzY2hlbWUsIHNjaGVtZU9wdGlvbnMpIHsKICAgIGlmKHR5cGVvZiBzY2hlbWUgPT09ICdzdHJpbmcnKSB7CiAgICAgIHNjaGVtZSA9IHNjaGVtZS50b1VwcGVyQ2FzZSgpOwogICAgfSBlbHNlIGlmKHNjaGVtZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHNjaGVtZSA9ICdSU0FFUy1QS0NTMS1WMV81JzsKICAgIH0KCiAgICAvLyBkbyByc2EgZGVjcnlwdGlvbiB3L28gYW55IGRlY29kaW5nCiAgICB2YXIgZCA9IHBraS5yc2EuZGVjcnlwdChkYXRhLCBrZXksIGZhbHNlLCBmYWxzZSk7CgogICAgaWYoc2NoZW1lID09PSAnUlNBRVMtUEtDUzEtVjFfNScpIHsKICAgICAgc2NoZW1lID0geyBkZWNvZGU6IF9kZWNvZGVQa2NzMV92MV81IH07CiAgICB9IGVsc2UgaWYoc2NoZW1lID09PSAnUlNBLU9BRVAnIHx8IHNjaGVtZSA9PT0gJ1JTQUVTLU9BRVAnKSB7CiAgICAgIHNjaGVtZSA9IHsKICAgICAgICBkZWNvZGU6IGZ1bmN0aW9uKGQsIGtleSkgewogICAgICAgICAgcmV0dXJuIGZvcmdlLnBrY3MxLmRlY29kZV9yc2Ffb2FlcChrZXksIGQsIHNjaGVtZU9wdGlvbnMpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0gZWxzZSBpZihbJ1JBVycsICdOT05FJywgJ05VTEwnLCBudWxsXS5pbmRleE9mKHNjaGVtZSkgIT09IC0xKSB7CiAgICAgIHNjaGVtZSA9IHsgZGVjb2RlOiBmdW5jdGlvbihkKSB7IHJldHVybiBkOyB9IH07CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGVuY3J5cHRpb24gc2NoZW1lOiAiJyArIHNjaGVtZSArICciLicpOwogICAgfQoKICAgIC8vIGRlY29kZSBhY2NvcmRpbmcgdG8gc2NoZW1lCiAgICByZXR1cm4gc2NoZW1lLmRlY29kZShkLCBrZXksIGZhbHNlKTsKICB9OwoKICAvKioKICAgKiBTaWducyB0aGUgZ2l2ZW4gZGlnZXN0LCBwcm9kdWNpbmcgYSBzaWduYXR1cmUuCiAgICoKICAgKiBQS0NTIzEgc3VwcG9ydHMgbXVsdGlwbGUgKGN1cnJlbnRseSB0d28pIHNpZ25hdHVyZSBzY2hlbWVzOgogICAqIFJTQVNTQS1QS0NTMS1WMV81IGFuZCBSU0FTU0EtUFNTLgogICAqCiAgICogQnkgZGVmYXVsdCB0aGlzIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlICJvbGQgc2NoZW1lIiwgaS5lLgogICAqIFJTQVNTQS1QS0NTMS1WMV81LiBJbiBvcmRlciB0byBnZW5lcmF0ZSBhIFBTUyBzaWduYXR1cmUsIHByb3ZpZGUKICAgKiBhbiBpbnN0YW5jZSBvZiBGb3JnZSBQU1Mgb2JqZWN0IGFzIHRoZSBzY2hlbWUgcGFyYW1ldGVyLgogICAqCiAgICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3Qgd2l0aCB0aGUgaGFzaCB0byBzaWduLgogICAqIEBwYXJhbSBzY2hlbWUgdGhlIHNpZ25hdHVyZSBzY2hlbWUgdG8gdXNlOgogICAqICAgICAgICAgICdSU0FTU0EtUEtDUzEtVjFfNScgb3IgdW5kZWZpbmVkIGZvciBSU0FTU0EgUEtDUyMxIHYxLjUsCiAgICogICAgICAgICAgYSBGb3JnZSBQU1Mgb2JqZWN0IGZvciBSU0FTU0EtUFNTLAogICAqICAgICAgICAgICdOT05FJyBvciBudWxsIGZvciBub25lLCBEaWdlc3RJbmZvIHdpbGwgbm90IGJlIHVzZWQgYnV0CiAgICogICAgICAgICAgICBQS0NTIzEgdjEuNSBwYWRkaW5nIHdpbGwgc3RpbGwgYmUgdXNlZC4KICAgKgogICAqIEByZXR1cm4gdGhlIHNpZ25hdHVyZSBhcyBhIGJ5dGUgc3RyaW5nLgogICAqLwogIGtleS5zaWduID0gZnVuY3Rpb24obWQsIHNjaGVtZSkgewogICAgLyogTm90ZTogVGhlIGludGVybmFsIGltcGxlbWVudGF0aW9uIG9mIFJTQSBvcGVyYXRpb25zIGlzIGJlaW5nCiAgICAgIHRyYW5zaXRpb25lZCBhd2F5IGZyb20gYSBQS0NTIzEgdjEuNSBoYXJkLWNvZGVkIHNjaGVtZS4gU29tZSBsZWdhY3kKICAgICAgY29kZSBsaWtlIHRoZSB1c2Ugb2YgYW4gZW5jb2RpbmcgYmxvY2sgaWRlbnRpZmllciAnYnQnIHdpbGwgZXZlbnR1YWxseQogICAgICBiZSByZW1vdmVkLiAqLwoKICAgIC8vIHByaXZhdGUga2V5IG9wZXJhdGlvbgogICAgdmFyIGJ0ID0gZmFsc2U7CgogICAgaWYodHlwZW9mIHNjaGVtZSA9PT0gJ3N0cmluZycpIHsKICAgICAgc2NoZW1lID0gc2NoZW1lLnRvVXBwZXJDYXNlKCk7CiAgICB9CgogICAgaWYoc2NoZW1lID09PSB1bmRlZmluZWQgfHwgc2NoZW1lID09PSAnUlNBU1NBLVBLQ1MxLVYxXzUnKSB7CiAgICAgIHNjaGVtZSA9IHsgZW5jb2RlOiBlbXNhUGtjczF2MTVlbmNvZGUgfTsKICAgICAgYnQgPSAweDAxOwogICAgfSBlbHNlIGlmKHNjaGVtZSA9PT0gJ05PTkUnIHx8IHNjaGVtZSA9PT0gJ05VTEwnIHx8IHNjaGVtZSA9PT0gbnVsbCkgewogICAgICBzY2hlbWUgPSB7IGVuY29kZTogZnVuY3Rpb24oKSB7IHJldHVybiBtZDsgfSB9OwogICAgICBidCA9IDB4MDE7CiAgICB9CgogICAgLy8gZW5jb2RlIGFuZCB0aGVuIGVuY3J5cHQKICAgIHZhciBkID0gc2NoZW1lLmVuY29kZShtZCwga2V5Lm4uYml0TGVuZ3RoKCkpOwogICAgcmV0dXJuIHBraS5yc2EuZW5jcnlwdChkLCBrZXksIGJ0KTsKICB9OwoKICByZXR1cm4ga2V5Owp9OwoKLyoqCiAqIFdyYXBzIGFuIFJTQVByaXZhdGVLZXkgQVNOLjEgb2JqZWN0IGluIGFuIEFTTi4xIFByaXZhdGVLZXlJbmZvIG9iamVjdC4KICoKICogQHBhcmFtIHJzYUtleSB0aGUgQVNOLjEgUlNBUHJpdmF0ZUtleS4KICoKICogQHJldHVybiB0aGUgQVNOLjEgUHJpdmF0ZUtleUluZm8uCiAqLwpwa2kud3JhcFJzYVByaXZhdGVLZXkgPSBmdW5jdGlvbihyc2FLZXkpIHsKICAvLyBQcml2YXRlS2V5SW5mbwogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyB2ZXJzaW9uICgwKQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoMCkuZ2V0Qnl0ZXMoKSksCiAgICAvLyBwcml2YXRlS2V5QWxnb3JpdGhtCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKHBraS5vaWRzLnJzYUVuY3J5cHRpb24pLmdldEJ5dGVzKCkpLAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgIF0pLAogICAgLy8gUHJpdmF0ZUtleQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsCiAgICAgIGFzbjEudG9EZXIocnNhS2V5KS5nZXRCeXRlcygpKQogICAgXSk7Cn07CgovKioKICogQ29udmVydHMgYSBwcml2YXRlIGtleSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgYSBQcml2YXRlS2V5SW5mbyBjb250YWluaW5nIGFuCiAqICAgICAgICAgIFJTQVByaXZhdGVLZXkgb3IgYW4gUlNBUHJpdmF0ZUtleS4KICoKICogQHJldHVybiB0aGUgcHJpdmF0ZSBrZXkuCiAqLwpwa2kucHJpdmF0ZUtleUZyb21Bc24xID0gZnVuY3Rpb24ob2JqKSB7CiAgLy8gZ2V0IFByaXZhdGVLZXlJbmZvCiAgdmFyIGNhcHR1cmUgPSB7fTsKICB2YXIgZXJyb3JzID0gW107CiAgaWYoYXNuMS52YWxpZGF0ZShvYmosIHByaXZhdGVLZXlWYWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpIHsKICAgIG9iaiA9IGFzbjEuZnJvbURlcihmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnByaXZhdGVLZXkpKTsKICB9CgogIC8vIGdldCBSU0FQcml2YXRlS2V5CiAgY2FwdHVyZSA9IHt9OwogIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcnNhUHJpdmF0ZUtleVZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBwcml2YXRlIGtleS4gJyArCiAgICAgICdBU04uMSBvYmplY3QgZG9lcyBub3QgY29udGFpbiBhbiBSU0FQcml2YXRlS2V5LicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvLyBOb3RlOiBWZXJzaW9uIGlzIGN1cnJlbnRseSBpZ25vcmVkLgogIC8vIGNhcHR1cmUucHJpdmF0ZUtleVZlcnNpb24KICAvLyBGSVhNRTogaW5lZmZpY2llbnQsIGdldCBhIEJpZ0ludGVnZXIgdGhhdCB1c2VzIGJ5dGUgc3RyaW5ncwogIHZhciBuLCBlLCBkLCBwLCBxLCBkUCwgZFEsIHFJbnY7CiAgbiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHJpdmF0ZUtleU1vZHVsdXMpLnRvSGV4KCk7CiAgZSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHJpdmF0ZUtleVB1YmxpY0V4cG9uZW50KS50b0hleCgpOwogIGQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnByaXZhdGVLZXlQcml2YXRlRXhwb25lbnQpLnRvSGV4KCk7CiAgcCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHJpdmF0ZUtleVByaW1lMSkudG9IZXgoKTsKICBxID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5wcml2YXRlS2V5UHJpbWUyKS50b0hleCgpOwogIGRQID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5wcml2YXRlS2V5RXhwb25lbnQxKS50b0hleCgpOwogIGRRID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5wcml2YXRlS2V5RXhwb25lbnQyKS50b0hleCgpOwogIHFJbnYgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnByaXZhdGVLZXlDb2VmZmljaWVudCkudG9IZXgoKTsKCiAgLy8gc2V0IHByaXZhdGUga2V5CiAgcmV0dXJuIHBraS5zZXRSc2FQcml2YXRlS2V5KAogICAgbmV3IEJpZ0ludGVnZXIobiwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIoZSwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIoZCwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIocCwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIocSwgMTYpLAogICAgbmV3IEJpZ0ludGVnZXIoZFAsIDE2KSwKICAgIG5ldyBCaWdJbnRlZ2VyKGRRLCAxNiksCiAgICBuZXcgQmlnSW50ZWdlcihxSW52LCAxNikpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgcHJpdmF0ZSBrZXkgdG8gYW4gQVNOLjEgUlNBUHJpdmF0ZUtleS4KICoKICogQHBhcmFtIGtleSB0aGUgcHJpdmF0ZSBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIGFuIFJTQVByaXZhdGVLZXkuCiAqLwpwa2kucHJpdmF0ZUtleVRvQXNuMSA9IHBraS5wcml2YXRlS2V5VG9SU0FQcml2YXRlS2V5ID0gZnVuY3Rpb24oa2V5KSB7CiAgLy8gUlNBUHJpdmF0ZUtleQogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyB2ZXJzaW9uICgwID0gb25seSAyIHByaW1lcywgMSBtdWx0aXBsZSBwcmltZXMpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBhc24xLmludGVnZXJUb0RlcigwKS5nZXRCeXRlcygpKSwKICAgIC8vIG1vZHVsdXMgKG4pCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5uKSksCiAgICAvLyBwdWJsaWNFeHBvbmVudCAoZSkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIF9iblRvQnl0ZXMoa2V5LmUpKSwKICAgIC8vIHByaXZhdGVFeHBvbmVudCAoZCkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIF9iblRvQnl0ZXMoa2V5LmQpKSwKICAgIC8vIHByaXZhdGVLZXlQcmltZTEgKHApCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5wKSksCiAgICAvLyBwcml2YXRlS2V5UHJpbWUyIChxKQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgX2JuVG9CeXRlcyhrZXkucSkpLAogICAgLy8gcHJpdmF0ZUtleUV4cG9uZW50MSAoZFApCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5kUCkpLAogICAgLy8gcHJpdmF0ZUtleUV4cG9uZW50MiAoZFEpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5kUSkpLAogICAgLy8gY29lZmZpY2llbnQgKHFJbnYpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5xSW52KSkKICBdKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIHB1YmxpYyBrZXkgZnJvbSBhbiBBU04uMSBTdWJqZWN0UHVibGljS2V5SW5mbyBvciBSU0FQdWJsaWNLZXkuCiAqCiAqIEBwYXJhbSBvYmogdGhlIGFzbjEgcmVwcmVzZW50YXRpb24gb2YgYSBTdWJqZWN0UHVibGljS2V5SW5mbyBvciBSU0FQdWJsaWNLZXkuCiAqCiAqIEByZXR1cm4gdGhlIHB1YmxpYyBrZXkuCiAqLwpwa2kucHVibGljS2V5RnJvbUFzbjEgPSBmdW5jdGlvbihvYmopIHsKICAvLyBnZXQgU3ViamVjdFB1YmxpY0tleUluZm8KICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZihhc24xLnZhbGlkYXRlKG9iaiwgcHVibGljS2V5VmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICAvLyBnZXQgb2lkCiAgICB2YXIgb2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLnB1YmxpY0tleU9pZCk7CiAgICBpZihvaWQgIT09IHBraS5vaWRzLnJzYUVuY3J5cHRpb24pIHsKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBwdWJsaWMga2V5LiBVbmtub3duIE9JRC4nKTsKICAgICAgZXJyb3Iub2lkID0gb2lkOwogICAgICB0aHJvdyBlcnJvcjsKICAgIH0KICAgIG9iaiA9IGNhcHR1cmUucnNhUHVibGljS2V5OwogIH0KCiAgLy8gZ2V0IFJTQSBwYXJhbXMKICBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHJzYVB1YmxpY0tleVZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBwdWJsaWMga2V5LiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBkb2VzIG5vdCBjb250YWluIGFuIFJTQVB1YmxpY0tleS4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gRklYTUU6IGluZWZmaWNpZW50LCBnZXQgYSBCaWdJbnRlZ2VyIHRoYXQgdXNlcyBieXRlIHN0cmluZ3MKICB2YXIgbiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHVibGljS2V5TW9kdWx1cykudG9IZXgoKTsKICB2YXIgZSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUucHVibGljS2V5RXhwb25lbnQpLnRvSGV4KCk7CgogIC8vIHNldCBwdWJsaWMga2V5CiAgcmV0dXJuIHBraS5zZXRSc2FQdWJsaWNLZXkoCiAgICBuZXcgQmlnSW50ZWdlcihuLCAxNiksCiAgICBuZXcgQmlnSW50ZWdlcihlLCAxNikpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgcHVibGljIGtleSB0byBhbiBBU04uMSBTdWJqZWN0UHVibGljS2V5SW5mby4KICoKICogQHBhcmFtIGtleSB0aGUgcHVibGljIGtleS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIFN1YmplY3RQdWJsaWNLZXlJbmZvLgogKi8KcGtpLnB1YmxpY0tleVRvQXNuMSA9IHBraS5wdWJsaWNLZXlUb1N1YmplY3RQdWJsaWNLZXlJbmZvID0gZnVuY3Rpb24oa2V5KSB7CiAgLy8gU3ViamVjdFB1YmxpY0tleUluZm8KICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gQWxnb3JpdGhtSWRlbnRpZmllcgogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBhbGdvcml0aG0KICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgIGFzbjEub2lkVG9EZXIocGtpLm9pZHMucnNhRW5jcnlwdGlvbikuZ2V0Qnl0ZXMoKSksCiAgICAgIC8vIHBhcmFtZXRlcnMgKG51bGwpCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuTlVMTCwgZmFsc2UsICcnKQogICAgXSksCiAgICAvLyBzdWJqZWN0UHVibGljS2V5CiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLkJJVFNUUklORywgZmFsc2UsIFsKICAgICAgcGtpLnB1YmxpY0tleVRvUlNBUHVibGljS2V5KGtleSkKICAgIF0pCiAgXSk7Cn07CgovKioKICogQ29udmVydHMgYSBwdWJsaWMga2V5IHRvIGFuIEFTTi4xIFJTQVB1YmxpY0tleS4KICoKICogQHBhcmFtIGtleSB0aGUgcHVibGljIGtleS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIFJTQVB1YmxpY0tleS4KICovCnBraS5wdWJsaWNLZXlUb1JTQVB1YmxpY0tleSA9IGZ1bmN0aW9uKGtleSkgewogIC8vIFJTQVB1YmxpY0tleQogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyBtb2R1bHVzIChuKQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgX2JuVG9CeXRlcyhrZXkubikpLAogICAgLy8gcHVibGljRXhwb25lbnQgKGUpCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBfYm5Ub0J5dGVzKGtleS5lKSkKICBdKTsKfTsKCi8qKgogKiBFbmNvZGVzIGEgbWVzc2FnZSB1c2luZyBQS0NTIzEgdjEuNSBwYWRkaW5nLgogKgogKiBAcGFyYW0gbSB0aGUgbWVzc2FnZSB0byBlbmNvZGUuCiAqIEBwYXJhbSBrZXkgdGhlIFJTQSBrZXkgdG8gdXNlLgogKiBAcGFyYW0gYnQgdGhlIGJsb2NrIHR5cGUgdG8gdXNlLCBpLmUuIGVpdGhlciAweDAxIChmb3Igc2lnbmluZykgb3IgMHgwMgogKiAgICAgICAgICAoZm9yIGVuY3J5cHRpb24pLgogKgogKiBAcmV0dXJuIHRoZSBwYWRkZWQgYnl0ZSBidWZmZXIuCiAqLwpmdW5jdGlvbiBfZW5jb2RlUGtjczFfdjFfNShtLCBrZXksIGJ0KSB7CiAgdmFyIGViID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKCiAgLy8gZ2V0IHRoZSBsZW5ndGggb2YgdGhlIG1vZHVsdXMgaW4gYnl0ZXMKICB2YXIgayA9IE1hdGguY2VpbChrZXkubi5iaXRMZW5ndGgoKSAvIDgpOwoKICAvKiB1c2UgUEtDUyMxIHYxLjUgcGFkZGluZyAqLwogIGlmKG0ubGVuZ3RoID4gKGsgLSAxMSkpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignTWVzc2FnZSBpcyB0b28gbG9uZyBmb3IgUEtDUyMxIHYxLjUgcGFkZGluZy4nKTsKICAgIGVycm9yLmxlbmd0aCA9IG0ubGVuZ3RoOwogICAgZXJyb3IubWF4ID0gayAtIDExOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvKiBBIGJsb2NrIHR5cGUgQlQsIGEgcGFkZGluZyBzdHJpbmcgUFMsIGFuZCB0aGUgZGF0YSBEIHNoYWxsIGJlCiAgICBmb3JtYXR0ZWQgaW50byBhbiBvY3RldCBzdHJpbmcgRUIsIHRoZSBlbmNyeXB0aW9uIGJsb2NrOgoKICAgIEVCID0gMDAgfHwgQlQgfHwgUFMgfHwgMDAgfHwgRAoKICAgIFRoZSBibG9jayB0eXBlIEJUIHNoYWxsIGJlIGEgc2luZ2xlIG9jdGV0IGluZGljYXRpbmcgdGhlIHN0cnVjdHVyZSBvZgogICAgdGhlIGVuY3J5cHRpb24gYmxvY2suIEZvciB0aGlzIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50IGl0IHNoYWxsIGhhdmUKICAgIHZhbHVlIDAwLCAwMSwgb3IgMDIuIEZvciBhIHByaXZhdGUta2V5IG9wZXJhdGlvbiwgdGhlIGJsb2NrIHR5cGUKICAgIHNoYWxsIGJlIDAwIG9yIDAxLiBGb3IgYSBwdWJsaWMta2V5IG9wZXJhdGlvbiwgaXQgc2hhbGwgYmUgMDIuCgogICAgVGhlIHBhZGRpbmcgc3RyaW5nIFBTIHNoYWxsIGNvbnNpc3Qgb2Ygay0zLXx8RHx8IG9jdGV0cy4gRm9yIGJsb2NrCiAgICB0eXBlIDAwLCB0aGUgb2N0ZXRzIHNoYWxsIGhhdmUgdmFsdWUgMDA7IGZvciBibG9jayB0eXBlIDAxLCB0aGV5CiAgICBzaGFsbCBoYXZlIHZhbHVlIEZGOyBhbmQgZm9yIGJsb2NrIHR5cGUgMDIsIHRoZXkgc2hhbGwgYmUKICAgIHBzZXVkb3JhbmRvbWx5IGdlbmVyYXRlZCBhbmQgbm9uemVyby4gVGhpcyBtYWtlcyB0aGUgbGVuZ3RoIG9mIHRoZQogICAgZW5jcnlwdGlvbiBibG9jayBFQiBlcXVhbCB0byBrLiAqLwoKICAvLyBidWlsZCB0aGUgZW5jcnlwdGlvbiBibG9jawogIGViLnB1dEJ5dGUoMHgwMCk7CiAgZWIucHV0Qnl0ZShidCk7CgogIC8vIGNyZWF0ZSB0aGUgcGFkZGluZwogIHZhciBwYWROdW0gPSBrIC0gMyAtIG0ubGVuZ3RoOwogIHZhciBwYWRCeXRlOwogIC8vIHByaXZhdGUga2V5IG9wCiAgaWYoYnQgPT09IDB4MDAgfHwgYnQgPT09IDB4MDEpIHsKICAgIHBhZEJ5dGUgPSAoYnQgPT09IDB4MDApID8gMHgwMCA6IDB4RkY7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgcGFkTnVtOyArK2kpIHsKICAgICAgZWIucHV0Qnl0ZShwYWRCeXRlKTsKICAgIH0KICB9IGVsc2UgewogICAgLy8gcHVibGljIGtleSBvcAogICAgLy8gcGFkIHdpdGggcmFuZG9tIG5vbi16ZXJvIHZhbHVlcwogICAgd2hpbGUocGFkTnVtID4gMCkgewogICAgICB2YXIgbnVtWmVyb3MgPSAwOwogICAgICB2YXIgcGFkQnl0ZXMgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMocGFkTnVtKTsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IHBhZE51bTsgKytpKSB7CiAgICAgICAgcGFkQnl0ZSA9IHBhZEJ5dGVzLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaWYocGFkQnl0ZSA9PT0gMCkgewogICAgICAgICAgKytudW1aZXJvczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZWIucHV0Qnl0ZShwYWRCeXRlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcGFkTnVtID0gbnVtWmVyb3M7CiAgICB9CiAgfQoKICAvLyB6ZXJvIGZvbGxvd2VkIGJ5IG1lc3NhZ2UKICBlYi5wdXRCeXRlKDB4MDApOwogIGViLnB1dEJ5dGVzKG0pOwoKICByZXR1cm4gZWI7Cn0KCi8qKgogKiBEZWNvZGVzIGEgbWVzc2FnZSB1c2luZyBQS0NTIzEgdjEuNSBwYWRkaW5nLgogKgogKiBAcGFyYW0gZW0gdGhlIG1lc3NhZ2UgdG8gZGVjb2RlLgogKiBAcGFyYW0ga2V5IHRoZSBSU0Ega2V5IHRvIHVzZS4KICogQHBhcmFtIHB1YiB0cnVlIGlmIHRoZSBrZXkgaXMgYSBwdWJsaWMga2V5LCBmYWxzZSBpZiBpdCBpcyBwcml2YXRlLgogKiBAcGFyYW0gbWwgdGhlIG1lc3NhZ2UgbGVuZ3RoLCBpZiBzcGVjaWZpZWQuCiAqCiAqIEByZXR1cm4gdGhlIGRlY29kZWQgYnl0ZXMuCiAqLwpmdW5jdGlvbiBfZGVjb2RlUGtjczFfdjFfNShlbSwga2V5LCBwdWIsIG1sKSB7CiAgLy8gZ2V0IHRoZSBsZW5ndGggb2YgdGhlIG1vZHVsdXMgaW4gYnl0ZXMKICB2YXIgayA9IE1hdGguY2VpbChrZXkubi5iaXRMZW5ndGgoKSAvIDgpOwoKICAvKiBJdCBpcyBhbiBlcnJvciBpZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIG9jY3VyczoKCiAgICAxLiBUaGUgZW5jcnlwdGlvbiBibG9jayBFQiBjYW5ub3QgYmUgcGFyc2VkIHVuYW1iaWd1b3VzbHkuCiAgICAyLiBUaGUgcGFkZGluZyBzdHJpbmcgUFMgY29uc2lzdHMgb2YgZmV3ZXIgdGhhbiBlaWdodCBvY3RldHMKICAgICAgb3IgaXMgaW5jb25zaXNlbnQgd2l0aCB0aGUgYmxvY2sgdHlwZSBCVC4KICAgIDMuIFRoZSBkZWNyeXB0aW9uIHByb2Nlc3MgaXMgYSBwdWJsaWMta2V5IG9wZXJhdGlvbiBhbmQgdGhlIGJsb2NrCiAgICAgIHR5cGUgQlQgaXMgbm90IDAwIG9yIDAxLCBvciB0aGUgZGVjcnlwdGlvbiBwcm9jZXNzIGlzIGEKICAgICAgcHJpdmF0ZS1rZXkgb3BlcmF0aW9uIGFuZCB0aGUgYmxvY2sgdHlwZSBpcyBub3QgMDIuCiAgICovCgogIC8vIHBhcnNlIHRoZSBlbmNyeXB0aW9uIGJsb2NrCiAgdmFyIGViID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoZW0pOwogIHZhciBmaXJzdCA9IGViLmdldEJ5dGUoKTsKICB2YXIgYnQgPSBlYi5nZXRCeXRlKCk7CiAgaWYoZmlyc3QgIT09IDB4MDAgfHwKICAgIChwdWIgJiYgYnQgIT09IDB4MDAgJiYgYnQgIT09IDB4MDEpIHx8CiAgICAoIXB1YiAmJiBidCAhPSAweDAyKSB8fAogICAgKHB1YiAmJiBidCA9PT0gMHgwMCAmJiB0eXBlb2YobWwpID09PSAndW5kZWZpbmVkJykpIHsKICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvbiBibG9jayBpcyBpbnZhbGlkLicpOwogIH0KCiAgdmFyIHBhZE51bSA9IDA7CiAgaWYoYnQgPT09IDB4MDApIHsKICAgIC8vIGNoZWNrIGFsbCBwYWRkaW5nIGJ5dGVzIGZvciAweDAwCiAgICBwYWROdW0gPSBrIC0gMyAtIG1sOwogICAgZm9yKHZhciBpID0gMDsgaSA8IHBhZE51bTsgKytpKSB7CiAgICAgIGlmKGViLmdldEJ5dGUoKSAhPT0gMHgwMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignRW5jcnlwdGlvbiBibG9jayBpcyBpbnZhbGlkLicpOwogICAgICB9CiAgICB9CiAgfSBlbHNlIGlmKGJ0ID09PSAweDAxKSB7CiAgICAvLyBmaW5kIHRoZSBmaXJzdCBieXRlIHRoYXQgaXNuJ3QgMHhGRiwgc2hvdWxkIGJlIGFmdGVyIGFsbCBwYWRkaW5nCiAgICBwYWROdW0gPSAwOwogICAgd2hpbGUoZWIubGVuZ3RoKCkgPiAxKSB7CiAgICAgIGlmKGViLmdldEJ5dGUoKSAhPT0gMHhGRikgewogICAgICAgIC0tZWIucmVhZDsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICArK3BhZE51bTsKICAgIH0KICB9IGVsc2UgaWYoYnQgPT09IDB4MDIpIHsKICAgIC8vIGxvb2sgZm9yIDB4MDAgYnl0ZQogICAgcGFkTnVtID0gMDsKICAgIHdoaWxlKGViLmxlbmd0aCgpID4gMSkgewogICAgICBpZihlYi5nZXRCeXRlKCkgPT09IDB4MDApIHsKICAgICAgICAtLWViLnJlYWQ7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgKytwYWROdW07CiAgICB9CiAgfQoKICAvLyB6ZXJvIG11c3QgYmUgMHgwMCBhbmQgcGFkTnVtIG11c3QgYmUgKGsgLSAzIC0gbWVzc2FnZSBsZW5ndGgpCiAgdmFyIHplcm8gPSBlYi5nZXRCeXRlKCk7CiAgaWYoemVybyAhPT0gMHgwMCB8fCBwYWROdW0gIT09IChrIC0gMyAtIGViLmxlbmd0aCgpKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdFbmNyeXB0aW9uIGJsb2NrIGlzIGludmFsaWQuJyk7CiAgfQoKICByZXR1cm4gZWIuZ2V0Qnl0ZXMoKTsKfQoKLyoqCiAqIFJ1bnMgdGhlIGtleS1nZW5lcmF0aW9uIGFsZ29yaXRobSBhc3luY2hyb25vdXNseSwgZWl0aGVyIGluIHRoZSBiYWNrZ3JvdW5kCiAqIHZpYSBXZWIgV29ya2Vycywgb3IgdXNpbmcgdGhlIG1haW4gdGhyZWFkIGFuZCBzZXRJbW1lZGlhdGUuCiAqCiAqIEBwYXJhbSBzdGF0ZSB0aGUga2V5LXBhaXIgZ2VuZXJhdGlvbiBzdGF0ZS4KICogQHBhcmFtIFtvcHRpb25zXSBvcHRpb25zIGZvciBrZXktcGFpciBnZW5lcmF0aW9uOgogKiAgICAgICAgICB3b3JrZXJTY3JpcHQgdGhlIHdvcmtlciBzY3JpcHQgVVJMLgogKiAgICAgICAgICB3b3JrZXJzIHRoZSBudW1iZXIgb2Ygd2ViIHdvcmtlcnMgKGlmIHN1cHBvcnRlZCkgdG8gdXNlLAogKiAgICAgICAgICAgIChkZWZhdWx0OiAyLCAtMSB0byB1c2UgZXN0aW1hdGVkIGNvcmVzIG1pbnVzIG9uZSkuCiAqICAgICAgICAgIHdvcmtMb2FkIHRoZSBzaXplIG9mIHRoZSB3b3JrIGxvYWQsIGllOiBudW1iZXIgb2YgcG9zc2libGUgcHJpbWUKICogICAgICAgICAgICBudW1iZXJzIGZvciBlYWNoIHdlYiB3b3JrZXIgdG8gY2hlY2sgcGVyIHdvcmsgYXNzaWdubWVudCwKICogICAgICAgICAgICAoZGVmYXVsdDogMTAwKS4KICogQHBhcmFtIGNhbGxiYWNrKGVyciwga2V5cGFpcikgY2FsbGVkIG9uY2UgdGhlIG9wZXJhdGlvbiBjb21wbGV0ZXMuCiAqLwpmdW5jdGlvbiBfZ2VuZXJhdGVLZXlQYWlyKHN0YXRlLCBvcHRpb25zLCBjYWxsYmFjaykgewogIGlmKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdGlvbnM7CiAgICBvcHRpb25zID0ge307CiAgfQogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoKICB2YXIgb3B0cyA9IHsKICAgIGFsZ29yaXRobTogewogICAgICBuYW1lOiBvcHRpb25zLmFsZ29yaXRobSB8fCAnUFJJTUVJTkMnLAogICAgICBvcHRpb25zOiB7CiAgICAgICAgd29ya2Vyczogb3B0aW9ucy53b3JrZXJzIHx8IDIsCiAgICAgICAgd29ya0xvYWQ6IG9wdGlvbnMud29ya0xvYWQgfHwgMTAwLAogICAgICAgIHdvcmtlclNjcmlwdDogb3B0aW9ucy53b3JrZXJTY3JpcHQKICAgICAgfQogICAgfQogIH07CiAgaWYoJ3BybmcnIGluIG9wdGlvbnMpIHsKICAgIG9wdHMucHJuZyA9IG9wdGlvbnMucHJuZzsKICB9CgogIGdlbmVyYXRlKCk7CgogIGZ1bmN0aW9uIGdlbmVyYXRlKCkgewogICAgLy8gZmluZCBwIGFuZCB0aGVuIHEgKGRvbmUgaW4gc2VyaWVzIHRvIHNpbXBsaWZ5KQogICAgZ2V0UHJpbWUoc3RhdGUucEJpdHMsIGZ1bmN0aW9uKGVyciwgbnVtKSB7CiAgICAgIGlmKGVycikgewogICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpOwogICAgICB9CiAgICAgIHN0YXRlLnAgPSBudW07CiAgICAgIGlmKHN0YXRlLnEgIT09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmluaXNoKGVyciwgc3RhdGUucSk7CiAgICAgIH0KICAgICAgZ2V0UHJpbWUoc3RhdGUucUJpdHMsIGZpbmlzaCk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIGdldFByaW1lKGJpdHMsIGNhbGxiYWNrKSB7CiAgICBmb3JnZS5wcmltZS5nZW5lcmF0ZVByb2JhYmxlUHJpbWUoYml0cywgb3B0cywgY2FsbGJhY2spOwogIH0KCiAgZnVuY3Rpb24gZmluaXNoKGVyciwgbnVtKSB7CiAgICBpZihlcnIpIHsKICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7CiAgICB9CgogICAgLy8gc2V0IHEKICAgIHN0YXRlLnEgPSBudW07CgogICAgLy8gZW5zdXJlIHAgaXMgbGFyZ2VyIHRoYW4gcSAoc3dhcCB0aGVtIGlmIG5vdCkKICAgIGlmKHN0YXRlLnAuY29tcGFyZVRvKHN0YXRlLnEpIDwgMCkgewogICAgICB2YXIgdG1wID0gc3RhdGUucDsKICAgICAgc3RhdGUucCA9IHN0YXRlLnE7CiAgICAgIHN0YXRlLnEgPSB0bXA7CiAgICB9CgogICAgLy8gZW5zdXJlIHAgaXMgY29wcmltZSB3aXRoIGUKICAgIGlmKHN0YXRlLnAuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpLmdjZChzdGF0ZS5lKQogICAgICAuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSAhPT0gMCkgewogICAgICBzdGF0ZS5wID0gbnVsbDsKICAgICAgZ2VuZXJhdGUoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIGVuc3VyZSBxIGlzIGNvcHJpbWUgd2l0aCBlCiAgICBpZihzdGF0ZS5xLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKS5nY2Qoc3RhdGUuZSkKICAgICAgLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgIT09IDApIHsKICAgICAgc3RhdGUucSA9IG51bGw7CiAgICAgIGdldFByaW1lKHN0YXRlLnFCaXRzLCBmaW5pc2gpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gY29tcHV0ZSBwaGk6IChwIC0gMSkocSAtIDEpIChFdWxlcidzIHRvdGllbnQgZnVuY3Rpb24pCiAgICBzdGF0ZS5wMSA9IHN0YXRlLnAuc3VidHJhY3QoQmlnSW50ZWdlci5PTkUpOwogICAgc3RhdGUucTEgPSBzdGF0ZS5xLnN1YnRyYWN0KEJpZ0ludGVnZXIuT05FKTsKICAgIHN0YXRlLnBoaSA9IHN0YXRlLnAxLm11bHRpcGx5KHN0YXRlLnExKTsKCiAgICAvLyBlbnN1cmUgZSBhbmQgcGhpIGFyZSBjb3ByaW1lCiAgICBpZihzdGF0ZS5waGkuZ2NkKHN0YXRlLmUpLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgIT09IDApIHsKICAgICAgLy8gcGhpIGFuZCBlIGFyZW4ndCBjb3ByaW1lLCBzbyBnZW5lcmF0ZSBhIG5ldyBwIGFuZCBxCiAgICAgIHN0YXRlLnAgPSBzdGF0ZS5xID0gbnVsbDsKICAgICAgZ2VuZXJhdGUoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIGNyZWF0ZSBuLCBlbnN1cmUgbiBpcyBoYXMgdGhlIHJpZ2h0IG51bWJlciBvZiBiaXRzCiAgICBzdGF0ZS5uID0gc3RhdGUucC5tdWx0aXBseShzdGF0ZS5xKTsKICAgIGlmKHN0YXRlLm4uYml0TGVuZ3RoKCkgIT09IHN0YXRlLmJpdHMpIHsKICAgICAgLy8gZmFpbGVkLCBnZXQgbmV3IHEKICAgICAgc3RhdGUucSA9IG51bGw7CiAgICAgIGdldFByaW1lKHN0YXRlLnFCaXRzLCBmaW5pc2gpOwogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gc2V0IGtleXMKICAgIHZhciBkID0gc3RhdGUuZS5tb2RJbnZlcnNlKHN0YXRlLnBoaSk7CiAgICBzdGF0ZS5rZXlzID0gewogICAgICBwcml2YXRlS2V5OiBwa2kucnNhLnNldFByaXZhdGVLZXkoCiAgICAgICAgc3RhdGUubiwgc3RhdGUuZSwgZCwgc3RhdGUucCwgc3RhdGUucSwKICAgICAgICBkLm1vZChzdGF0ZS5wMSksIGQubW9kKHN0YXRlLnExKSwKICAgICAgICBzdGF0ZS5xLm1vZEludmVyc2Uoc3RhdGUucCkpLAogICAgICBwdWJsaWNLZXk6IHBraS5yc2Euc2V0UHVibGljS2V5KHN0YXRlLm4sIHN0YXRlLmUpCiAgICB9OwoKICAgIGNhbGxiYWNrKG51bGwsIHN0YXRlLmtleXMpOwogIH0KfQoKLyoqCiAqIENvbnZlcnRzIGEgcG9zaXRpdmUgQmlnSW50ZWdlciBpbnRvIDIncy1jb21wbGVtZW50IGJpZy1lbmRpYW4gYnl0ZXMuCiAqCiAqIEBwYXJhbSBiIHRoZSBiaWcgaW50ZWdlciB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBieXRlcy4KICovCmZ1bmN0aW9uIF9iblRvQnl0ZXMoYikgewogIC8vIHByZXBlbmQgMHgwMCBpZiBmaXJzdCBieXRlID49IDB4ODAKICB2YXIgaGV4ID0gYi50b1N0cmluZygxNik7CiAgaWYoaGV4WzBdID49ICc4JykgewogICAgaGV4ID0gJzAwJyArIGhleDsKICB9CiAgcmV0dXJuIGZvcmdlLnV0aWwuaGV4VG9CeXRlcyhoZXgpOwp9CgovKioKICogUmV0dXJucyB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIE1pbGxlci1SYWJpbiB0ZXN0cyB0byBnZW5lcmF0ZSBhCiAqIHByaW1lIHdpdGggYW4gZXJyb3IgcHJvYmFiaWxpdHkgb2YgKDEvMileODAuCiAqCiAqIFNlZSBIYW5kYm9vayBvZiBBcHBsaWVkIENyeXB0b2dyYXBoeSBDaGFwdGVyIDQsIFRhYmxlIDQuNC4KICoKICogQHBhcmFtIGJpdHMgdGhlIGJpdCBzaXplLgogKgogKiBAcmV0dXJuIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgaXRlcmF0aW9ucy4KICovCmZ1bmN0aW9uIF9nZXRNaWxsZXJSYWJpblRlc3RzKGJpdHMpIHsKICBpZihiaXRzIDw9IDEwMCkgcmV0dXJuIDI3OwogIGlmKGJpdHMgPD0gMTUwKSByZXR1cm4gMTg7CiAgaWYoYml0cyA8PSAyMDApIHJldHVybiAxNTsKICBpZihiaXRzIDw9IDI1MCkgcmV0dXJuIDEyOwogIGlmKGJpdHMgPD0gMzAwKSByZXR1cm4gOTsKICBpZihiaXRzIDw9IDM1MCkgcmV0dXJuIDg7CiAgaWYoYml0cyA8PSA0MDApIHJldHVybiA3OwogIGlmKGJpdHMgPD0gNTAwKSByZXR1cm4gNjsKICBpZihiaXRzIDw9IDYwMCkgcmV0dXJuIDU7CiAgaWYoYml0cyA8PSA4MDApIHJldHVybiA0OwogIGlmKGJpdHMgPD0gMTI1MCkgcmV0dXJuIDM7CiAgcmV0dXJuIDI7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3JzYSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9yc2EnLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYXNuMScsCiAgJy4vanNibicsCiAgJy4vb2lkcycsCiAgJy4vcGtjczEnLAogICcuL3ByaW1lJywKICAnLi9yYW5kb20nLAogICcuL3V0aWwnCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFBhc3N3b3JkLWJhc2VkIGVuY3J5cHRpb24gZnVuY3Rpb25zLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKiBAYXV0aG9yIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqIENvcHlyaWdodCAoYykgMjAxMiBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKgogKiBBbiBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbzoKICoKICogRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gOjo9IFNFUVVFTkNFIHsKICogICBlbmNyeXB0aW9uQWxnb3JpdGhtICBFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWREYXRhICAgICAgICBFbmNyeXB0ZWREYXRhIH0KICoKICogRW5jcnlwdGlvbkFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogRW5jcnlwdGVkRGF0YSA6Oj0gT0NURVQgU1RSSU5HCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKaWYodHlwZW9mIEJpZ0ludGVnZXIgPT09ICd1bmRlZmluZWQnKSB7CiAgdmFyIEJpZ0ludGVnZXIgPSBmb3JnZS5qc2JuLkJpZ0ludGVnZXI7Cn0KCi8vIHNob3J0Y3V0IGZvciBhc24uMSBBUEkKdmFyIGFzbjEgPSBmb3JnZS5hc24xOwoKLyogUGFzc3dvcmQtYmFzZWQgZW5jcnlwdGlvbiBpbXBsZW1lbnRhdGlvbi4gKi8KdmFyIHBraSA9IGZvcmdlLnBraSA9IGZvcmdlLnBraSB8fCB7fTsKcGtpLnBiZSA9IGZvcmdlLnBiZSA9IGZvcmdlLnBiZSB8fCB7fTsKdmFyIG9pZHMgPSBwa2kub2lkczsKCi8vIHZhbGlkYXRvciBmb3IgYW4gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gc3RydWN0dXJlCi8vIE5vdGU6IEN1cnJlbnRseSBvbmx5IHdvcmtzIHcvYWxnb3JpdGhtIHBhcmFtcwp2YXIgZW5jcnlwdGVkUHJpdmF0ZUtleVZhbGlkYXRvciA9IHsKICBuYW1lOiAnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8nLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uZW5jcnlwdGlvbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2VuY3J5cHRpb25PaWQnCiAgICB9LCB7CiAgICAgIG5hbWU6ICdBbGdvcml0aG1JZGVudGlmaWVyLnBhcmFtZXRlcnMnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIGNhcHR1cmVBc24xOiAnZW5jcnlwdGlvblBhcmFtcycKICAgIH1dCiAgfSwgewogICAgLy8gZW5jcnlwdGVkRGF0YQogICAgbmFtZTogJ0VuY3J5cHRlZFByaXZhdGVLZXlJbmZvLmVuY3J5cHRlZERhdGEnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2VuY3J5cHRlZERhdGEnCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYSBQQkVTMkFsZ29yaXRobXMgc3RydWN0dXJlCi8vIE5vdGU6IEN1cnJlbnRseSBvbmx5IHdvcmtzIHcvUEJLREYyICsgQUVTIGVuY3J5cHRpb24gc2NoZW1lcwp2YXIgUEJFUzJBbGdvcml0aG1zVmFsaWRhdG9yID0gewogIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnUEJFUzJBbGdvcml0aG1zLmtleURlcml2YXRpb25GdW5jJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMua2V5RGVyaXZhdGlvbkZ1bmMub2lkJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdrZGZPaWQnCiAgICB9LCB7CiAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMucGFyYW1zJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnUEJFUzJBbGdvcml0aG1zLnBhcmFtcy5zYWx0JywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAna2RmU2FsdCcKICAgICAgfSwgewogICAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMucGFyYW1zLml0ZXJhdGlvbkNvdW50JywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgICAgb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgICBjYXB0dXJlOiAna2RmSXRlcmF0aW9uQ291bnQnCiAgICAgIH1dCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnUEJFUzJBbGdvcml0aG1zLmVuY3J5cHRpb25TY2hlbWUub2lkJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdlbmNPaWQnCiAgICB9LCB7CiAgICAgIG5hbWU6ICdQQkVTMkFsZ29yaXRobXMuZW5jcnlwdGlvblNjaGVtZS5pdicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdlbmNJdicKICAgIH1dCiAgfV0KfTsKCnZhciBwa2NzMTJQYmVQYXJhbXNWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ3BrY3MtMTJQYmVQYXJhbXMnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAncGtjcy0xMlBiZVBhcmFtcy5zYWx0JywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5PQ1RFVFNUUklORywKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdzYWx0JwogIH0sIHsKICAgIG5hbWU6ICdwa2NzLTEyUGJlUGFyYW1zLml0ZXJhdGlvbnMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAnaXRlcmF0aW9ucycKICB9XQp9OwoKLyoqCiAqIEVuY3J5cHRzIGEgQVNOLjEgUHJpdmF0ZUtleUluZm8gb2JqZWN0LCBwcm9kdWNpbmcgYW4gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqCiAqIFBCRVMyQWxnb3JpdGhtcyBBTEdPUklUSE0tSURFTlRJRklFUiA6Oj0KICogICB7IHtQQkVTMi1wYXJhbXMgSURFTlRJRklFRCBCWSBpZC1QQkVTMn0sIC4uLn0KICoKICogaWQtUEJFUzIgT0JKRUNUIElERU5USUZJRVIgOjo9IHtwa2NzLTUgMTN9CiAqCiAqIFBCRVMyLXBhcmFtcyA6Oj0gU0VRVUVOQ0UgewogKiAgIGtleURlcml2YXRpb25GdW5jIEFsZ29yaXRobUlkZW50aWZpZXIge3tQQkVTMi1LREZzfX0sCiAqICAgZW5jcnlwdGlvblNjaGVtZSBBbGdvcml0aG1JZGVudGlmaWVyIHt7UEJFUzItRW5jc319CiAqIH0KICoKICogUEJFUzItS0RGcyBBTEdPUklUSE0tSURFTlRJRklFUiA6Oj0KICogICB7IHtQQktERjItcGFyYW1zIElERU5USUZJRUQgQlkgaWQtUEJLREYyfSwgLi4uIH0KICoKICogUEJFUzItRW5jcyBBTEdPUklUSE0tSURFTlRJRklFUiA6Oj0geyAuLi4gfQogKgogKiBQQktERjItcGFyYW1zIDo6PSBTRVFVRU5DRSB7CiAqICAgc2FsdCBDSE9JQ0UgewogKiAgICAgc3BlY2lmaWVkIE9DVEVUIFNUUklORywKICogICAgIG90aGVyU291cmNlIEFsZ29yaXRobUlkZW50aWZpZXIge3tQQktERjItU2FsdFNvdXJjZXN9fQogKiAgIH0sCiAqICAgaXRlcmF0aW9uQ291bnQgSU5URUdFUiAoMS4uTUFYKSwKICogICBrZXlMZW5ndGggSU5URUdFUiAoMS4uTUFYKSBPUFRJT05BTCwKICogICBwcmYgQWxnb3JpdGhtSWRlbnRpZmllciB7e1BCS0RGMi1QUkZzfX0gREVGQVVMVCBhbGdpZC1obWFjV2l0aFNIQTEKICogfQogKgogKiBAcGFyYW0gb2JqIHRoZSBBU04uMSBQcml2YXRlS2V5SW5mbyBvYmplY3QuCiAqIEBwYXJhbSBwYXNzd29yZCB0aGUgcGFzc3dvcmQgdG8gZW5jcnlwdCB3aXRoLgogKiBAcGFyYW0gb3B0aW9uczoKICogICAgICAgICAgYWxnb3JpdGhtIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSB0byB1c2UKICogICAgICAgICAgICAoJ2FlczEyOCcsICdhZXMxOTInLCAnYWVzMjU2JywgJzNkZXMnKSwgZGVmYXVsdHMgdG8gJ2FlczEyOCcuCiAqICAgICAgICAgIGNvdW50IHRoZSBpdGVyYXRpb24gY291bnQgdG8gdXNlLgogKiAgICAgICAgICBzYWx0U2l6ZSB0aGUgc2FsdCBzaXplIHRvIHVzZS4KICoKICogQHJldHVybiB0aGUgQVNOLjEgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqLwpwa2kuZW5jcnlwdFByaXZhdGVLZXlJbmZvID0gZnVuY3Rpb24ob2JqLCBwYXNzd29yZCwgb3B0aW9ucykgewogIC8vIHNldCBkZWZhdWx0IG9wdGlvbnMKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICBvcHRpb25zLnNhbHRTaXplID0gb3B0aW9ucy5zYWx0U2l6ZSB8fCA4OwogIG9wdGlvbnMuY291bnQgPSBvcHRpb25zLmNvdW50IHx8IDIwNDg7CiAgb3B0aW9ucy5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobSB8fCAnYWVzMTI4JzsKCiAgLy8gZ2VuZXJhdGUgUEJFIHBhcmFtcwogIHZhciBzYWx0ID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzU3luYyhvcHRpb25zLnNhbHRTaXplKTsKICB2YXIgY291bnQgPSBvcHRpb25zLmNvdW50OwogIHZhciBjb3VudEJ5dGVzID0gYXNuMS5pbnRlZ2VyVG9EZXIoY291bnQpOwogIHZhciBka0xlbjsKICB2YXIgZW5jcnlwdGlvbkFsZ29yaXRobTsKICB2YXIgZW5jcnlwdGVkRGF0YTsKICBpZihvcHRpb25zLmFsZ29yaXRobS5pbmRleE9mKCdhZXMnKSA9PT0gMCB8fCBvcHRpb25zLmFsZ29yaXRobSA9PT0gJ2RlcycpIHsKICAgIC8vIERvIFBCRVMyCiAgICB2YXIgaXZMZW4sIGVuY09pZCwgY2lwaGVyRm47CiAgICBzd2l0Y2gob3B0aW9ucy5hbGdvcml0aG0pIHsKICAgIGNhc2UgJ2FlczEyOCc6CiAgICAgIGRrTGVuID0gMTY7CiAgICAgIGl2TGVuID0gMTY7CiAgICAgIGVuY09pZCA9IG9pZHNbJ2FlczEyOC1DQkMnXTsKICAgICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgYnJlYWs7CiAgICBjYXNlICdhZXMxOTInOgogICAgICBka0xlbiA9IDI0OwogICAgICBpdkxlbiA9IDE2OwogICAgICBlbmNPaWQgPSBvaWRzWydhZXMxOTItQ0JDJ107CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnYWVzMjU2JzoKICAgICAgZGtMZW4gPSAzMjsKICAgICAgaXZMZW4gPSAxNjsKICAgICAgZW5jT2lkID0gb2lkc1snYWVzMjU2LUNCQyddOwogICAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyOwogICAgICBicmVhazsKICAgIGNhc2UgJ2Rlcyc6CiAgICAgIGRrTGVuID0gODsKICAgICAgaXZMZW4gPSA4OwogICAgICBlbmNPaWQgPSBvaWRzWydkZXNDQkMnXTsKICAgICAgY2lwaGVyRm4gPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCBlbmNyeXB0IHByaXZhdGUga2V5LiBVbmtub3duIGVuY3J5cHRpb24gYWxnb3JpdGhtLicpOwogICAgICBlcnJvci5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLy8gZW5jcnlwdCBwcml2YXRlIGtleSB1c2luZyBwYmUgU0hBLTEgYW5kIEFFUy9ERVMKICAgIHZhciBkayA9IGZvcmdlLnBrY3M1LnBia2RmMihwYXNzd29yZCwgc2FsdCwgY291bnQsIGRrTGVuKTsKICAgIHZhciBpdiA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlc1N5bmMoaXZMZW4pOwogICAgdmFyIGNpcGhlciA9IGNpcGhlckZuKGRrKTsKICAgIGNpcGhlci5zdGFydChpdik7CiAgICBjaXBoZXIudXBkYXRlKGFzbjEudG9EZXIob2JqKSk7CiAgICBjaXBoZXIuZmluaXNoKCk7CiAgICBlbmNyeXB0ZWREYXRhID0gY2lwaGVyLm91dHB1dC5nZXRCeXRlcygpOwoKICAgIGVuY3J5cHRpb25BbGdvcml0aG0gPSBhc24xLmNyZWF0ZSgKICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihvaWRzWydwa2NzNVBCRVMyJ10pLmdldEJ5dGVzKCkpLAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8ga2V5RGVyaXZhdGlvbkZ1bmMKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAgIGFzbjEub2lkVG9EZXIob2lkc1sncGtjczVQQktERjInXSkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICAvLyBQQktERjItcGFyYW1zCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICAgIC8vIHNhbHQKICAgICAgICAgICAgYXNuMS5jcmVhdGUoCiAgICAgICAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIHNhbHQpLAogICAgICAgICAgICAvLyBpdGVyYXRpb24gY291bnQKICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgICAgICAgICBjb3VudEJ5dGVzLmdldEJ5dGVzKCkpCiAgICAgICAgICBdKQogICAgICAgIF0pLAogICAgICAgIC8vIGVuY3J5cHRpb25TY2hlbWUKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAgIGFzbjEub2lkVG9EZXIoZW5jT2lkKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIGl2CiAgICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIGl2KQogICAgICAgIF0pCiAgICAgIF0pCiAgICBdKTsKICB9IGVsc2UgaWYob3B0aW9ucy5hbGdvcml0aG0gPT09ICczZGVzJykgewogICAgLy8gRG8gUEtDUzEyIFBCRQogICAgZGtMZW4gPSAyNDsKCiAgICB2YXIgc2FsdEJ5dGVzID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcihzYWx0KTsKICAgIHZhciBkayA9IHBraS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocGFzc3dvcmQsIHNhbHRCeXRlcywgMSwgY291bnQsIGRrTGVuKTsKICAgIHZhciBpdiA9IHBraS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocGFzc3dvcmQsIHNhbHRCeXRlcywgMiwgY291bnQsIGRrTGVuKTsKICAgIHZhciBjaXBoZXIgPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcihkayk7CiAgICBjaXBoZXIuc3RhcnQoaXYpOwogICAgY2lwaGVyLnVwZGF0ZShhc24xLnRvRGVyKG9iaikpOwogICAgY2lwaGVyLmZpbmlzaCgpOwogICAgZW5jcnlwdGVkRGF0YSA9IGNpcGhlci5vdXRwdXQuZ2V0Qnl0ZXMoKTsKCiAgICBlbmNyeXB0aW9uQWxnb3JpdGhtID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgIGFzbjEub2lkVG9EZXIob2lkc1sncGJlV2l0aFNIQUFuZDMtS2V5VHJpcGxlREVTLUNCQyddKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGtjcy0xMlBiZVBhcmFtcwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gc2FsdAogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLCBzYWx0KSwKICAgICAgICAvLyBpdGVyYXRpb24gY291bnQKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgICAgY291bnRCeXRlcy5nZXRCeXRlcygpKQogICAgICBdKQogICAgXSk7CiAgfSBlbHNlIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IGVuY3J5cHQgcHJpdmF0ZSBrZXkuIFVua25vd24gZW5jcnlwdGlvbiBhbGdvcml0aG0uJyk7CiAgICBlcnJvci5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8KICB2YXIgcnZhbCA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIGVuY3J5cHRpb25BbGdvcml0aG0KICAgIGVuY3J5cHRpb25BbGdvcml0aG0sCiAgICAvLyBlbmNyeXB0ZWREYXRhCiAgICBhc24xLmNyZWF0ZSgKICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIGVuY3J5cHRlZERhdGEpCiAgXSk7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogRGVjcnlwdHMgYSBBU04uMSBQcml2YXRlS2V5SW5mbyBvYmplY3QuCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIG9iamVjdC4KICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byBkZWNyeXB0IHdpdGguCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIFByaXZhdGVLZXlJbmZvIG9uIHN1Y2Nlc3MsIG51bGwgb24gZmFpbHVyZS4KICovCnBraS5kZWNyeXB0UHJpdmF0ZUtleUluZm8gPSBmdW5jdGlvbihvYmosIHBhc3N3b3JkKSB7CiAgdmFyIHJ2YWwgPSBudWxsOwoKICAvLyBnZXQgUEJFIHBhcmFtcwogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgZW5jcnlwdGVkUHJpdmF0ZUtleVZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkuICcgKwogICAgICAnQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZ2V0IGNpcGhlcgogIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuZW5jcnlwdGlvbk9pZCk7CiAgdmFyIGNpcGhlciA9IHBraS5wYmUuZ2V0Q2lwaGVyKG9pZCwgY2FwdHVyZS5lbmNyeXB0aW9uUGFyYW1zLCBwYXNzd29yZCk7CgogIC8vIGdldCBlbmNyeXB0ZWQgZGF0YQogIHZhciBlbmNyeXB0ZWQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLmVuY3J5cHRlZERhdGEpOwoKICBjaXBoZXIudXBkYXRlKGVuY3J5cHRlZCk7CiAgaWYoY2lwaGVyLmZpbmlzaCgpKSB7CiAgICBydmFsID0gYXNuMS5mcm9tRGVyKGNpcGhlci5vdXRwdXQpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgYSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyB0byBQRU0gZm9ybWF0LgogKgogKiBAcGFyYW0gZXBraSB0aGUgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqIEBwYXJhbSBtYXhsaW5lIHRoZSBtYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUsIGRlZmF1bHRzIHRvIDY0LgogKgogKiBAcmV0dXJuIHRoZSBQRU0tZm9ybWF0dGVkIGVuY3J5cHRlZCBwcml2YXRlIGtleS4KICovCnBraS5lbmNyeXB0ZWRQcml2YXRlS2V5VG9QZW0gPSBmdW5jdGlvbihlcGtpLCBtYXhsaW5lKSB7CiAgLy8gY29udmVydCB0byBERVIsIHRoZW4gUEVNLWVuY29kZQogIHZhciBtc2cgPSB7CiAgICB0eXBlOiAnRU5DUllQVEVEIFBSSVZBVEUgS0VZJywKICAgIGJvZHk6IGFzbjEudG9EZXIoZXBraSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgUEVNLWVuY29kZWQgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gdG8gQVNOLjEgZm9ybWF0LiBEZWNyeXB0aW9uCiAqIGlzIG5vdCBwZXJmb3JtZWQuCiAqCiAqIEBwYXJhbSBwZW0gdGhlIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIGluIFBFTS1mb3JtYXQuCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLgogKi8KcGtpLmVuY3J5cHRlZFByaXZhdGVLZXlGcm9tUGVtID0gZnVuY3Rpb24ocGVtKSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdFTkNSWVBURUQgUFJJVkFURSBLRVknKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGVuY3J5cHRlZCBwcml2YXRlIGtleSBmcm9tIFBFTTsgJyArCiAgICAgICdQRU0gaGVhZGVyIHR5cGUgaXMgIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIuJyk7CiAgICBlcnJvci5oZWFkZXJUeXBlID0gbXNnLnR5cGU7CiAgICB0aHJvdyBlcnJvcjsKICB9CiAgaWYobXNnLnByb2NUeXBlICYmIG1zZy5wcm9jVHlwZS50eXBlID09PSAnRU5DUllQVEVEJykgewogICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkgZnJvbSBQRU07ICcgKwogICAgICAnUEVNIGlzIGVuY3J5cHRlZC4nKTsKICB9CgogIC8vIGNvbnZlcnQgREVSIHRvIEFTTi4xIG9iamVjdAogIHJldHVybiBhc24xLmZyb21EZXIobXNnLmJvZHkpOwp9OwoKLyoqCiAqIEVuY3J5cHRzIGFuIFJTQSBwcml2YXRlIGtleS4gQnkgZGVmYXVsdCwgdGhlIGtleSB3aWxsIGJlIHdyYXBwZWQgaW4KICogYSBQcml2YXRlS2V5SW5mbyBhbmQgZW5jcnlwdGVkIHRvIHByb2R1Y2UgYSBQS0NTIzggRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8uCiAqIFRoaXMgaXMgdGhlIHN0YW5kYXJkLCBwcmVmZXJyZWQgd2F5IHRvIGVuY3J5cHQgYSBwcml2YXRlIGtleS4KICoKICogVG8gcHJvZHVjZSBhIG5vbi1zdGFuZGFyZCBQRU0tZW5jcnlwdGVkIHByaXZhdGUga2V5IHRoYXQgdXNlcyBlbmNhcHN1bGF0ZWQKICogaGVhZGVycyB0byBpbmRpY2F0ZSB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gKG9sZC1zdHlsZSBub24tUEtDUyM4IE9wZW5TU0wKICogcHJpdmF0ZSBrZXkgZW5jcnlwdGlvbiksIHNldCB0aGUgJ2xlZ2FjeScgb3B0aW9uIHRvIHRydWUuIE5vdGU6IFVzaW5nIHRoaXMKICogb3B0aW9uIHdpbGwgY2F1c2UgdGhlIGl0ZXJhdGlvbiBjb3VudCB0byBiZSBmb3JjZWQgdG8gMS4KICoKICogTm90ZTogVGhlICdkZXMnIGFsZ29yaXRobSBpcyBzdXBwb3J0ZWQsIGJ1dCBpdCBpcyBub3QgY29uc2lkZXJlZCB0byBiZQogKiBzZWN1cmUgYmVjYXVzZSBpdCBvbmx5IHVzZXMgYSBzaW5nbGUgNTYtYml0IGtleS4gSWYgcG9zc2libGUsIGl0IGlzIGhpZ2hseQogKiByZWNvbW1lbmRlZCB0aGF0IGEgZGlmZmVyZW50IGFsZ29yaXRobSBiZSB1c2VkLgogKgogKiBAcGFyYW0gcnNhS2V5IHRoZSBSU0Ega2V5IHRvIGVuY3J5cHQuCiAqIEBwYXJhbSBwYXNzd29yZCB0aGUgcGFzc3dvcmQgdG8gdXNlLgogKiBAcGFyYW0gb3B0aW9uczoKICogICAgICAgICAgYWxnb3JpdGhtOiB0aGUgZW5jcnlwdGlvbiBhbGdvcml0aG0gdG8gdXNlCiAqICAgICAgICAgICAgKCdhZXMxMjgnLCAnYWVzMTkyJywgJ2FlczI1NicsICczZGVzJywgJ2RlcycpLgogKiAgICAgICAgICBjb3VudDogdGhlIGl0ZXJhdGlvbiBjb3VudCB0byB1c2UuCiAqICAgICAgICAgIHNhbHRTaXplOiB0aGUgc2FsdCBzaXplIHRvIHVzZS4KICogICAgICAgICAgbGVnYWN5OiBvdXRwdXQgYW4gb2xkIG5vbi1QS0NTIzggUEVNLWVuY3J5cHRlZCtlbmNhcHN1bGF0ZWQKICogICAgICAgICAgICBoZWFkZXJzIChERUstSW5mbykgcHJpdmF0ZSBrZXkuCiAqCiAqIEByZXR1cm4gdGhlIFBFTS1lbmNvZGVkIEFTTi4xIEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvLgogKi8KcGtpLmVuY3J5cHRSc2FQcml2YXRlS2V5ID0gZnVuY3Rpb24ocnNhS2V5LCBwYXNzd29yZCwgb3B0aW9ucykgewogIC8vIHN0YW5kYXJkIFBLQ1MjOAogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIGlmKCFvcHRpb25zLmxlZ2FjeSkgewogICAgLy8gZW5jcnlwdCBQcml2YXRlS2V5SW5mbwogICAgdmFyIHJ2YWwgPSBwa2kud3JhcFJzYVByaXZhdGVLZXkocGtpLnByaXZhdGVLZXlUb0FzbjEocnNhS2V5KSk7CiAgICBydmFsID0gcGtpLmVuY3J5cHRQcml2YXRlS2V5SW5mbyhydmFsLCBwYXNzd29yZCwgb3B0aW9ucyk7CiAgICByZXR1cm4gcGtpLmVuY3J5cHRlZFByaXZhdGVLZXlUb1BlbShydmFsKTsKICB9CgogIC8vIGxlZ2FjeSBub24tUEtDUyM4CiAgdmFyIGFsZ29yaXRobTsKICB2YXIgaXY7CiAgdmFyIGRrTGVuOwogIHZhciBjaXBoZXJGbjsKICBzd2l0Y2gob3B0aW9ucy5hbGdvcml0aG0pIHsKICBjYXNlICdhZXMxMjgnOgogICAgYWxnb3JpdGhtID0gJ0FFUy0xMjgtQ0JDJzsKICAgIGRrTGVuID0gMTY7CiAgICBpdiA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpOwogICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIGNhc2UgJ2FlczE5Mic6CiAgICBhbGdvcml0aG0gPSAnQUVTLTE5Mi1DQkMnOwogICAgZGtMZW4gPSAyNDsKICAgIGl2ID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzU3luYygxNik7CiAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyOwogICAgYnJlYWs7CiAgY2FzZSAnYWVzMjU2JzoKICAgIGFsZ29yaXRobSA9ICdBRVMtMjU2LUNCQyc7CiAgICBka0xlbiA9IDMyOwogICAgaXYgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXNTeW5jKDE2KTsKICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICczZGVzJzoKICAgIGFsZ29yaXRobSA9ICdERVMtRURFMy1DQkMnOwogICAgZGtMZW4gPSAyNDsKICAgIGl2ID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzU3luYyg4KTsKICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICdkZXMnOgogICAgYWxnb3JpdGhtID0gJ0RFUy1DQkMnOwogICAgZGtMZW4gPSA4OwogICAgaXYgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXNTeW5jKDgpOwogICAgY2lwaGVyRm4gPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIGRlZmF1bHQ6CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBlbmNyeXB0IFJTQSBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgJyArCiAgICAgICdlbmNyeXB0aW9uIGFsZ29yaXRobSAiJyArIG9wdGlvbnMuYWxnb3JpdGhtICsgJyIuJyk7CiAgICBlcnJvci5hbGdvcml0aG0gPSBvcHRpb25zLmFsZ29yaXRobTsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZW5jcnlwdCBwcml2YXRlIGtleSB1c2luZyBPcGVuU1NMIGxlZ2FjeSBrZXkgZGVyaXZhdGlvbgogIHZhciBkayA9IGZvcmdlLnBiZS5vcGVuc3NsRGVyaXZlQnl0ZXMocGFzc3dvcmQsIGl2LnN1YnN0cigwLCA4KSwgZGtMZW4pOwogIHZhciBjaXBoZXIgPSBjaXBoZXJGbihkayk7CiAgY2lwaGVyLnN0YXJ0KGl2KTsKICBjaXBoZXIudXBkYXRlKGFzbjEudG9EZXIocGtpLnByaXZhdGVLZXlUb0FzbjEocnNhS2V5KSkpOwogIGNpcGhlci5maW5pc2goKTsKCiAgdmFyIG1zZyA9IHsKICAgIHR5cGU6ICdSU0EgUFJJVkFURSBLRVknLAogICAgcHJvY1R5cGU6IHsKICAgICAgdmVyc2lvbjogJzQnLAogICAgICB0eXBlOiAnRU5DUllQVEVEJwogICAgfSwKICAgIGRla0luZm86IHsKICAgICAgYWxnb3JpdGhtOiBhbGdvcml0aG0sCiAgICAgIHBhcmFtZXRlcnM6IGZvcmdlLnV0aWwuYnl0ZXNUb0hleChpdikudG9VcHBlckNhc2UoKQogICAgfSwKICAgIGJvZHk6IGNpcGhlci5vdXRwdXQuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnKTsKfTsKCi8qKgogKiBEZWNyeXB0cyBhbiBSU0EgcHJpdmF0ZSBrZXkuCiAqCiAqIEBwYXJhbSBwZW0gdGhlIFBFTS1mb3JtYXR0ZWQgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gdG8gZGVjcnlwdC4KICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byB1c2UuCiAqCiAqIEByZXR1cm4gdGhlIFJTQSBrZXkgb24gc3VjY2VzcywgbnVsbCBvbiBmYWlsdXJlLgogKi8KcGtpLmRlY3J5cHRSc2FQcml2YXRlS2V5ID0gZnVuY3Rpb24ocGVtLCBwYXNzd29yZCkgewogIHZhciBydmFsID0gbnVsbDsKCiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdFTkNSWVBURUQgUFJJVkFURSBLRVknICYmCiAgICBtc2cudHlwZSAhPT0gJ1BSSVZBVEUgS0VZJyAmJgogICAgbXNnLnR5cGUgIT09ICdSU0EgUFJJVkFURSBLRVknKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IHByaXZhdGUga2V5IGZyb20gUEVNOyBQRU0gaGVhZGVyIHR5cGUgJyArCiAgICAgICdpcyBub3QgIkVOQ1JZUFRFRCBQUklWQVRFIEtFWSIsICJQUklWQVRFIEtFWSIsIG9yICJSU0EgUFJJVkFURSBLRVkiLicpOwogICAgZXJyb3IuaGVhZGVyVHlwZSA9IGVycm9yOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB2YXIgZGtMZW47CiAgICB2YXIgY2lwaGVyRm47CiAgICBzd2l0Y2gobXNnLmRla0luZm8uYWxnb3JpdGhtKSB7CiAgICBjYXNlICdERVMtQ0JDJzoKICAgICAgZGtMZW4gPSA4OwogICAgICBjaXBoZXJGbiA9IGZvcmdlLmRlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyOwogICAgICBicmVhazsKICAgIGNhc2UgJ0RFUy1FREUzLUNCQyc6CiAgICAgIGRrTGVuID0gMjQ7CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnQUVTLTEyOC1DQkMnOgogICAgICBka0xlbiA9IDE2OwogICAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyOwogICAgICBicmVhazsKICAgIGNhc2UgJ0FFUy0xOTItQ0JDJzoKICAgICAgZGtMZW4gPSAyNDsKICAgICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjsKICAgICAgYnJlYWs7CiAgICBjYXNlICdBRVMtMjU2LUNCQyc6CiAgICAgIGRrTGVuID0gMzI7CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnUkMyLTQwLUNCQyc6CiAgICAgIGRrTGVuID0gNTsKICAgICAgY2lwaGVyRm4gPSBmdW5jdGlvbihrZXkpIHsKICAgICAgICByZXR1cm4gZm9yZ2UucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoa2V5LCA0MCk7CiAgICAgIH07CiAgICAgIGJyZWFrOwogICAgY2FzZSAnUkMyLTY0LUNCQyc6CiAgICAgIGRrTGVuID0gODsKICAgICAgY2lwaGVyRm4gPSBmdW5jdGlvbihrZXkpIHsKICAgICAgICByZXR1cm4gZm9yZ2UucmMyLmNyZWF0ZURlY3J5cHRpb25DaXBoZXIoa2V5LCA2NCk7CiAgICAgIH07CiAgICAgIGJyZWFrOwogICAgY2FzZSAnUkMyLTEyOC1DQkMnOgogICAgICBka0xlbiA9IDE2OwogICAgICBjaXBoZXJGbiA9IGZ1bmN0aW9uKGtleSkgewogICAgICAgIHJldHVybiBmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihrZXksIDEyOCk7CiAgICAgIH07CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDb3VsZCBub3QgZGVjcnlwdCBwcml2YXRlIGtleTsgdW5zdXBwb3J0ZWQgJyArCiAgICAgICAgJ2VuY3J5cHRpb24gYWxnb3JpdGhtICInICsgbXNnLmRla0luZm8uYWxnb3JpdGhtICsgJyIuJyk7CiAgICAgIGVycm9yLmFsZ29yaXRobSA9IG1zZy5kZWtJbmZvLmFsZ29yaXRobTsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLy8gdXNlIE9wZW5TU0wgbGVnYWN5IGtleSBkZXJpdmF0aW9uCiAgICB2YXIgaXYgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMobXNnLmRla0luZm8ucGFyYW1ldGVycyk7CiAgICB2YXIgZGsgPSBmb3JnZS5wYmUub3BlbnNzbERlcml2ZUJ5dGVzKHBhc3N3b3JkLCBpdi5zdWJzdHIoMCwgOCksIGRrTGVuKTsKICAgIHZhciBjaXBoZXIgPSBjaXBoZXJGbihkayk7CiAgICBjaXBoZXIuc3RhcnQoaXYpOwogICAgY2lwaGVyLnVwZGF0ZShmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuYm9keSkpOwogICAgaWYoY2lwaGVyLmZpbmlzaCgpKSB7CiAgICAgIHJ2YWwgPSBjaXBoZXIub3V0cHV0LmdldEJ5dGVzKCk7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gcnZhbDsKICAgIH0KICB9IGVsc2UgewogICAgcnZhbCA9IG1zZy5ib2R5OwogIH0KCiAgaWYobXNnLnR5cGUgPT09ICdFTkNSWVBURUQgUFJJVkFURSBLRVknKSB7CiAgICBydmFsID0gcGtpLmRlY3J5cHRQcml2YXRlS2V5SW5mbyhhc24xLmZyb21EZXIocnZhbCksIHBhc3N3b3JkKTsKICB9IGVsc2UgewogICAgLy8gZGVjcnlwdGlvbiBhbHJlYWR5IHBlcmZvcm1lZCBhYm92ZQogICAgcnZhbCA9IGFzbjEuZnJvbURlcihydmFsKTsKICB9CgogIGlmKHJ2YWwgIT09IG51bGwpIHsKICAgIHJ2YWwgPSBwa2kucHJpdmF0ZUtleUZyb21Bc24xKHJ2YWwpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogRGVyaXZlcyBhIFBLQ1MjMTIga2V5LgogKgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlcml2ZSB0aGUga2V5IG1hdGVyaWFsIGZyb20sIG51bGwgb3IKICogICAgICAgICAgdW5kZWZpbmVkIGZvciBub25lLgogKiBAcGFyYW0gc2FsdCB0aGUgc2FsdCwgYXMgYSBCeXRlQnVmZmVyLCB0byB1c2UuCiAqIEBwYXJhbSBpZCB0aGUgUEtDUyMxMiBJRCBieXRlICgxID0ga2V5IG1hdGVyaWFsLCAyID0gSVYsIDMgPSBNQUMpLgogKiBAcGFyYW0gaXRlciB0aGUgaXRlcmF0aW9uIGNvdW50LgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGRlcml2ZSBmcm9tIHRoZSBwYXNzd29yZC4KICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2UsIGRlZmF1bHRzIHRvIFNIQS0xLgogKgogKiBAcmV0dXJuIGEgQnl0ZUJ1ZmZlciB3aXRoIHRoZSBieXRlcyBkZXJpdmVkIGZyb20gdGhlIHBhc3N3b3JkLgogKi8KcGtpLnBiZS5nZW5lcmF0ZVBrY3MxMktleSA9IGZ1bmN0aW9uKHBhc3N3b3JkLCBzYWx0LCBpZCwgaXRlciwgbiwgbWQpIHsKICB2YXIgaiwgbDsKCiAgaWYodHlwZW9mIG1kID09PSAndW5kZWZpbmVkJyB8fCBtZCA9PT0gbnVsbCkgewogICAgbWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIH0KCiAgdmFyIHUgPSBtZC5kaWdlc3RMZW5ndGg7CiAgdmFyIHYgPSBtZC5ibG9ja0xlbmd0aDsKICB2YXIgcmVzdWx0ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwoKICAvKiBDb252ZXJ0IHBhc3N3b3JkIHRvIFVuaWNvZGUgYnl0ZSBidWZmZXIgKyB0cmFpbGluZyAwLWJ5dGUuICovCiAgdmFyIHBhc3NCdWYgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKCk7CiAgaWYocGFzc3dvcmQgIT09IG51bGwgJiYgcGFzc3dvcmQgIT09IHVuZGVmaW5lZCkgewogICAgZm9yKGwgPSAwOyBsIDwgcGFzc3dvcmQubGVuZ3RoOyBsKyspIHsKICAgICAgcGFzc0J1Zi5wdXRJbnQxNihwYXNzd29yZC5jaGFyQ29kZUF0KGwpKTsKICAgIH0KICAgIHBhc3NCdWYucHV0SW50MTYoMCk7CiAgfQoKICAvKiBMZW5ndGggb2Ygc2FsdCBhbmQgcGFzc3dvcmQgaW4gQllURVMuICovCiAgdmFyIHAgPSBwYXNzQnVmLmxlbmd0aCgpOwogIHZhciBzID0gc2FsdC5sZW5ndGgoKTsKCiAgLyogMS4gQ29uc3RydWN0IGEgc3RyaW5nLCBEICh0aGUgImRpdmVyc2lmaWVyIiksIGJ5IGNvbmNhdGVuYXRpbmcKICAgICAgICB2IGNvcGllcyBvZiBJRC4gKi8KICB2YXIgRCA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICBELmZpbGxXaXRoQnl0ZShpZCwgdik7CgogIC8qIDIuIENvbmNhdGVuYXRlIGNvcGllcyBvZiB0aGUgc2FsdCB0b2dldGhlciB0byBjcmVhdGUgYSBzdHJpbmcgUyBvZiBsZW5ndGgKICAgICAgICB2ICogY2VpbChzIC8gdikgYnl0ZXMgKHRoZSBmaW5hbCBjb3B5IG9mIHRoZSBzYWx0IG1heSBiZSB0cnVuYWN0ZWQKICAgICAgICB0byBjcmVhdGUgUykuCiAgICAgICAgTm90ZSB0aGF0IGlmIHRoZSBzYWx0IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4gc28gaXMgUy4gKi8KICB2YXIgU2xlbiA9IHYgKiBNYXRoLmNlaWwocyAvIHYpOwogIHZhciBTID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogIGZvcihsID0gMDsgbCA8IFNsZW47IGwgKyspIHsKICAgIFMucHV0Qnl0ZShzYWx0LmF0KGwgJSBzKSk7CiAgfQoKICAvKiAzLiBDb25jYXRlbmF0ZSBjb3BpZXMgb2YgdGhlIHBhc3N3b3JkIHRvZ2V0aGVyIHRvIGNyZWF0ZSBhIHN0cmluZyBQIG9mCiAgICAgICAgbGVuZ3RoIHYgKiBjZWlsKHAgLyB2KSBieXRlcyAodGhlIGZpbmFsIGNvcHkgb2YgdGhlIHBhc3N3b3JkIG1heSBiZQogICAgICAgIHRydW5jYXRlZCB0byBjcmVhdGUgUCkuCiAgICAgICAgTm90ZSB0aGF0IGlmIHRoZSBwYXNzd29yZCBpcyB0aGUgZW1wdHkgc3RyaW5nLCB0aGVuIHNvIGlzIFAuICovCiAgdmFyIFBsZW4gPSB2ICogTWF0aC5jZWlsKHAgLyB2KTsKICB2YXIgUCA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICBmb3IobCA9IDA7IGwgPCBQbGVuOyBsICsrKSB7CiAgICBQLnB1dEJ5dGUocGFzc0J1Zi5hdChsICUgcCkpOwogIH0KCiAgLyogNC4gU2V0IEk9U3x8UCB0byBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiBTIGFuZCBQLiAqLwogIHZhciBJID0gUzsKICBJLnB1dEJ1ZmZlcihQKTsKCiAgLyogNS4gU2V0IGM9Y2VpbChuIC8gdSkuICovCiAgdmFyIGMgPSBNYXRoLmNlaWwobiAvIHUpOwoKICAvKiA2LiBGb3IgaT0xLCAyLCAuLi4sIGMsIGRvIHRoZSBmb2xsb3dpbmc6ICovCiAgZm9yKHZhciBpID0gMTsgaSA8PSBjOyBpICsrKSB7CiAgICAvKiBhKSBTZXQgQWk9SF5yKER8fEkpLiAobC5lLiB0aGUgcnRoIGhhc2ggb2YgRHx8SSwgSChIKEgoLi4uSChEfHxJKSkpKSAqLwogICAgdmFyIGJ1ZiA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICAgIGJ1Zi5wdXRCeXRlcyhELmJ5dGVzKCkpOwogICAgYnVmLnB1dEJ5dGVzKEkuYnl0ZXMoKSk7CiAgICBmb3IodmFyIHJvdW5kID0gMDsgcm91bmQgPCBpdGVyOyByb3VuZCArKykgewogICAgICBtZC5zdGFydCgpOwogICAgICBtZC51cGRhdGUoYnVmLmdldEJ5dGVzKCkpOwogICAgICBidWYgPSBtZC5kaWdlc3QoKTsKICAgIH0KCiAgICAvKiBiKSBDb25jYXRlbmF0ZSBjb3BpZXMgb2YgQWkgdG8gY3JlYXRlIGEgc3RyaW5nIEIgb2YgbGVuZ3RoIHYgYnl0ZXMgKHRoZQogICAgICAgICAgZmluYWwgY29weSBvZiBBaSBtYXkgYmUgdHJ1bmNhdGVkIHRvIGNyZWF0ZSBCKS4gKi8KICAgIHZhciBCID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgZm9yKGwgPSAwOyBsIDwgdjsgbCArKykgewogICAgICBCLnB1dEJ5dGUoYnVmLmF0KGwgJSB1KSk7CiAgICB9CgogICAgLyogYykgVHJlYXRpbmcgSSBhcyBhIGNvbmNhdGVuYXRpb24gSTAsIEkxLCAuLi4sIElrLTEgb2Ygdi1ieXRlIGJsb2NrcywKICAgICAgICAgIHdoZXJlIGs9Y2VpbChzIC8gdikgKyBjZWlsKHAgLyB2KSwgbW9kaWZ5IEkgYnkgc2V0dGluZwogICAgICAgICAgSWo9KElqK0IrMSkgbW9kIDJ2IGZvciBlYWNoIGouICAqLwogICAgdmFyIGsgPSBNYXRoLmNlaWwocyAvIHYpICsgTWF0aC5jZWlsKHAgLyB2KTsKICAgIHZhciBJbmV3ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgZm9yKGogPSAwOyBqIDwgazsgaiArKykgewogICAgICB2YXIgY2h1bmsgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKEkuZ2V0Qnl0ZXModikpOwogICAgICB2YXIgeCA9IDB4MWZmOwogICAgICBmb3IobCA9IEIubGVuZ3RoKCkgLSAxOyBsID49IDA7IGwgLS0pIHsKICAgICAgICB4ID0geCA+PiA4OwogICAgICAgIHggKz0gQi5hdChsKSArIGNodW5rLmF0KGwpOwogICAgICAgIGNodW5rLnNldEF0KGwsIHggJiAweGZmKTsKICAgICAgfQogICAgICBJbmV3LnB1dEJ1ZmZlcihjaHVuayk7CiAgICB9CiAgICBJID0gSW5ldzsKCiAgICAvKiBBZGQgQWkgdG8gQS4gKi8KICAgIHJlc3VsdC5wdXRCdWZmZXIoYnVmKTsKICB9CgogIHJlc3VsdC50cnVuY2F0ZShyZXN1bHQubGVuZ3RoKCkgLSBuKTsKICByZXR1cm4gcmVzdWx0Owp9OwoKLyoqCiAqIEdldCBuZXcgRm9yZ2UgY2lwaGVyIG9iamVjdCBpbnN0YW5jZS4KICoKICogQHBhcmFtIG9pZCB0aGUgT0lEIChpbiBzdHJpbmcgbm90YXRpb24pLgogKiBAcGFyYW0gcGFyYW1zIHRoZSBBU04uMSBwYXJhbXMgb2JqZWN0LgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aC4KICoKICogQHJldHVybiBuZXcgY2lwaGVyIG9iamVjdCBpbnN0YW5jZS4KICovCnBraS5wYmUuZ2V0Q2lwaGVyID0gZnVuY3Rpb24ob2lkLCBwYXJhbXMsIHBhc3N3b3JkKSB7CiAgc3dpdGNoKG9pZCkgewogIGNhc2UgcGtpLm9pZHNbJ3BrY3M1UEJFUzInXToKICAgIHJldHVybiBwa2kucGJlLmdldENpcGhlckZvclBCRVMyKG9pZCwgcGFyYW1zLCBwYXNzd29yZCk7CgogIGNhc2UgcGtpLm9pZHNbJ3BiZVdpdGhTSEFBbmQzLUtleVRyaXBsZURFUy1DQkMnXToKICBjYXNlIHBraS5vaWRzWydwYmV3aXRoU0hBQW5kNDBCaXRSQzItQ0JDJ106CiAgICByZXR1cm4gcGtpLnBiZS5nZXRDaXBoZXJGb3JQS0NTMTJQQkUob2lkLCBwYXJhbXMsIHBhc3N3b3JkKTsKCiAgZGVmYXVsdDoKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgZW5jcnlwdGVkIFBCRSBkYXRhIGJsb2NrLiBVbnN1cHBvcnRlZCBPSUQuJyk7CiAgICBlcnJvci5vaWQgPSBvaWQ7CiAgICBlcnJvci5zdXBwb3J0ZWRPaWRzID0gWwogICAgICAncGtjczVQQkVTMicsCiAgICAgICdwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDJywKICAgICAgJ3BiZXdpdGhTSEFBbmQ0MEJpdFJDMi1DQkMnCiAgICBdOwogICAgdGhyb3cgZXJyb3I7CiAgfQp9OwoKLyoqCiAqIEdldCBuZXcgRm9yZ2UgY2lwaGVyIG9iamVjdCBpbnN0YW5jZSBhY2NvcmRpbmcgdG8gUEJFUzIgcGFyYW1zIGJsb2NrLgogKgogKiBUaGUgcmV0dXJuZWQgY2lwaGVyIGluc3RhbmNlIGlzIGFscmVhZHkgc3RhcnRlZCB1c2luZyB0aGUgSVYKICogZnJvbSBQQkVTMiBwYXJhbWV0ZXIgYmxvY2suCiAqCiAqIEBwYXJhbSBvaWQgdGhlIFBLQ1MjNSBQQktERjIgT0lEIChpbiBzdHJpbmcgbm90YXRpb24pLgogKiBAcGFyYW0gcGFyYW1zIHRoZSBBU04uMSBQQkVTMi1wYXJhbXMgb2JqZWN0LgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aC4KICoKICogQHJldHVybiBuZXcgY2lwaGVyIG9iamVjdCBpbnN0YW5jZS4KICovCnBraS5wYmUuZ2V0Q2lwaGVyRm9yUEJFUzIgPSBmdW5jdGlvbihvaWQsIHBhcmFtcywgcGFzc3dvcmQpIHsKICAvLyBnZXQgUEJFIHBhcmFtcwogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKHBhcmFtcywgUEJFUzJBbGdvcml0aG1zVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gYWxnb3JpdGhtICcgKwogICAgICAncGFyYW1ldGVycy4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gY2hlY2sgb2lkcwogIG9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5rZGZPaWQpOwogIGlmKG9pZCAhPT0gcGtpLm9pZHNbJ3BrY3M1UEJLREYyJ10pIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgZW5jcnlwdGVkIHByaXZhdGUga2V5LiAnICsKICAgICAgJ1Vuc3VwcG9ydGVkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIE9JRC4nKTsKICAgIGVycm9yLm9pZCA9IG9pZDsKICAgIGVycm9yLnN1cHBvcnRlZE9pZHMgPSBbJ3BrY3M1UEJLREYyJ107CiAgICB0aHJvdyBlcnJvcjsKICB9CiAgb2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLmVuY09pZCk7CiAgaWYob2lkICE9PSBwa2kub2lkc1snYWVzMTI4LUNCQyddICYmCiAgICBvaWQgIT09IHBraS5vaWRzWydhZXMxOTItQ0JDJ10gJiYKICAgIG9pZCAhPT0gcGtpLm9pZHNbJ2FlczI1Ni1DQkMnXSAmJgogICAgb2lkICE9PSBwa2kub2lkc1snZGVzLUVERTMtQ0JDJ10gJiYKICAgIG9pZCAhPT0gcGtpLm9pZHNbJ2Rlc0NCQyddKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIGVuY3J5cHRlZCBwcml2YXRlIGtleS4gJyArCiAgICAgICdVbnN1cHBvcnRlZCBlbmNyeXB0aW9uIHNjaGVtZSBPSUQuJyk7CiAgICBlcnJvci5vaWQgPSBvaWQ7CiAgICBlcnJvci5zdXBwb3J0ZWRPaWRzID0gWwogICAgICAnYWVzMTI4LUNCQycsICdhZXMxOTItQ0JDJywgJ2FlczI1Ni1DQkMnLCAnZGVzLUVERTMtQ0JDJywgJ2Rlc0NCQyddOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvLyBzZXQgUEJFIHBhcmFtcwogIHZhciBzYWx0ID0gY2FwdHVyZS5rZGZTYWx0OwogIHZhciBjb3VudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUua2RmSXRlcmF0aW9uQ291bnQpOwogIGNvdW50ID0gY291bnQuZ2V0SW50KGNvdW50Lmxlbmd0aCgpIDw8IDMpOwogIHZhciBka0xlbjsKICB2YXIgY2lwaGVyRm47CiAgc3dpdGNoKHBraS5vaWRzW29pZF0pIHsKICBjYXNlICdhZXMxMjgtQ0JDJzoKICAgIGRrTGVuID0gMTY7CiAgICBjaXBoZXJGbiA9IGZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyOwogICAgYnJlYWs7CiAgY2FzZSAnYWVzMTkyLUNCQyc6CiAgICBka0xlbiA9IDI0OwogICAgY2lwaGVyRm4gPSBmb3JnZS5hZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIGNhc2UgJ2FlczI1Ni1DQkMnOgogICAgZGtMZW4gPSAzMjsKICAgIGNpcGhlckZuID0gZm9yZ2UuYWVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICdkZXMtRURFMy1DQkMnOgogICAgZGtMZW4gPSAyNDsKICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLmNyZWF0ZURlY3J5cHRpb25DaXBoZXI7CiAgICBicmVhazsKICBjYXNlICdkZXNDQkMnOgogICAgZGtMZW4gPSA4OwogICAgY2lwaGVyRm4gPSBmb3JnZS5kZXMuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcjsKICAgIGJyZWFrOwogIH0KCiAgLy8gZGVjcnlwdCBwcml2YXRlIGtleSB1c2luZyBwYmUgU0hBLTEgYW5kIEFFUy9ERVMKICB2YXIgZGsgPSBmb3JnZS5wa2NzNS5wYmtkZjIocGFzc3dvcmQsIHNhbHQsIGNvdW50LCBka0xlbik7CiAgdmFyIGl2ID0gY2FwdHVyZS5lbmNJdjsKICB2YXIgY2lwaGVyID0gY2lwaGVyRm4oZGspOwogIGNpcGhlci5zdGFydChpdik7CgogIHJldHVybiBjaXBoZXI7Cn07CgovKioKICogR2V0IG5ldyBGb3JnZSBjaXBoZXIgb2JqZWN0IGluc3RhbmNlIGZvciBQS0NTIzEyIFBCRS4KICoKICogVGhlIHJldHVybmVkIGNpcGhlciBpbnN0YW5jZSBpcyBhbHJlYWR5IHN0YXJ0ZWQgdXNpbmcgdGhlIGtleSAmIElWCiAqIGRlcml2ZWQgZnJvbSB0aGUgcHJvdmlkZWQgcGFzc3dvcmQgYW5kIFBLQ1MjMTIgUEJFIHNhbHQuCiAqCiAqIEBwYXJhbSBvaWQgVGhlIFBLQ1MjMTIgUEJFIE9JRCAoaW4gc3RyaW5nIG5vdGF0aW9uKS4KICogQHBhcmFtIHBhcmFtcyBUaGUgQVNOLjEgUEtDUyMxMiBQQkUtcGFyYW1zIG9iamVjdC4KICogQHBhcmFtIHBhc3N3b3JkIFRoZSBwYXNzd29yZCB0byBkZWNyeXB0IHdpdGguCiAqCiAqIEByZXR1cm4gdGhlIG5ldyBjaXBoZXIgb2JqZWN0IGluc3RhbmNlLgogKi8KcGtpLnBiZS5nZXRDaXBoZXJGb3JQS0NTMTJQQkUgPSBmdW5jdGlvbihvaWQsIHBhcmFtcywgcGFzc3dvcmQpIHsKICAvLyBnZXQgUEJFIHBhcmFtcwogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKHBhcmFtcywgcGtjczEyUGJlUGFyYW1zVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gYWxnb3JpdGhtICcgKwogICAgICAncGFyYW1ldGVycy4gQVNOLjEgb2JqZWN0IGlzIG5vdCBhIHN1cHBvcnRlZCBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgdmFyIHNhbHQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLnNhbHQpOwogIHZhciBjb3VudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUuaXRlcmF0aW9ucyk7CiAgY291bnQgPSBjb3VudC5nZXRJbnQoY291bnQubGVuZ3RoKCkgPDwgMyk7CgogIHZhciBka0xlbiwgZEl2TGVuLCBjaXBoZXJGbjsKICBzd2l0Y2gob2lkKSB7CiAgICBjYXNlIHBraS5vaWRzWydwYmVXaXRoU0hBQW5kMy1LZXlUcmlwbGVERVMtQ0JDJ106CiAgICAgIGRrTGVuID0gMjQ7CiAgICAgIGRJdkxlbiA9IDg7CiAgICAgIGNpcGhlckZuID0gZm9yZ2UuZGVzLnN0YXJ0RGVjcnlwdGluZzsKICAgICAgYnJlYWs7CgogICAgY2FzZSBwa2kub2lkc1sncGJld2l0aFNIQUFuZDQwQml0UkMyLUNCQyddOgogICAgICBka0xlbiA9IDU7CiAgICAgIGRJdkxlbiA9IDg7CiAgICAgIGNpcGhlckZuID0gZnVuY3Rpb24oa2V5LCBpdikgewogICAgICAgIHZhciBjaXBoZXIgPSBmb3JnZS5yYzIuY3JlYXRlRGVjcnlwdGlvbkNpcGhlcihrZXksIDQwKTsKICAgICAgICBjaXBoZXIuc3RhcnQoaXYsIG51bGwpOwogICAgICAgIHJldHVybiBjaXBoZXI7CiAgICAgIH07CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgUEtDUyAjMTIgUEJFIGRhdGEgYmxvY2suIFVuc3VwcG9ydGVkIE9JRC4nKTsKICAgICAgZXJyb3Iub2lkID0gb2lkOwogICAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBrZXkgPSBwa2kucGJlLmdlbmVyYXRlUGtjczEyS2V5KHBhc3N3b3JkLCBzYWx0LCAxLCBjb3VudCwgZGtMZW4pOwogIHZhciBpdiA9IHBraS5wYmUuZ2VuZXJhdGVQa2NzMTJLZXkocGFzc3dvcmQsIHNhbHQsIDIsIGNvdW50LCBkSXZMZW4pOwoKICByZXR1cm4gY2lwaGVyRm4oa2V5LCBpdik7Cn07CgovKioKICogT3BlblNTTCdzIGxlZ2FjeSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4KICoKICogU2VlOiBodHRwOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL0VWUF9CeXRlc1RvS2V5Lmh0bWwKICoKICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byBkZXJpdmUgdGhlIGtleSBmcm9tLgogKiBAcGFyYW0gc2FsdCB0aGUgc2FsdCB0byB1c2UsIG51bGwgZm9yIG5vbmUuCiAqIEBwYXJhbSBka0xlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCBmb3IgdGhlIGRlcml2ZWQga2V5LgogKiBAcGFyYW0gW29wdGlvbnNdIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgW21kXSBhbiBvcHRpb25hbCBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlLgogKi8KcGtpLnBiZS5vcGVuc3NsRGVyaXZlQnl0ZXMgPSBmdW5jdGlvbihwYXNzd29yZCwgc2FsdCwgZGtMZW4sIG1kKSB7CiAgaWYodHlwZW9mIG1kID09PSAndW5kZWZpbmVkJyB8fCBtZCA9PT0gbnVsbCkgewogICAgbWQgPSBmb3JnZS5tZC5tZDUuY3JlYXRlKCk7CiAgfQogIGlmKHNhbHQgPT09IG51bGwpIHsKICAgIHNhbHQgPSAnJzsKICB9CiAgdmFyIGRpZ2VzdHMgPSBbaGFzaChtZCwgcGFzc3dvcmQgKyBzYWx0KV07CiAgZm9yKHZhciBsZW5ndGggPSAxNiwgaSA9IDE7IGxlbmd0aCA8IGRrTGVuOyArK2ksIGxlbmd0aCArPSAxNikgewogICAgZGlnZXN0cy5wdXNoKGhhc2gobWQsIGRpZ2VzdHNbaSAtIDFdICsgcGFzc3dvcmQgKyBzYWx0KSk7CiAgfQogIHJldHVybiBkaWdlc3RzLmpvaW4oJycpLnN1YnN0cigwLCBka0xlbik7Cn07CgpmdW5jdGlvbiBoYXNoKG1kLCBieXRlcykgewogIHJldHVybiBtZC5zdGFydCgpLnVwZGF0ZShieXRlcykuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKfQoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncGJlJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BiZScsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hZXMnLAogICcuL2FzbjEnLAogICcuL2RlcycsCiAgJy4vbWQnLAogICcuL29pZHMnLAogICcuL3BlbScsCiAgJy4vcGJrZGYyJywKICAnLi9yYW5kb20nLAogICcuL3JjMicsCiAgJy4vcnNhJywKICAnLi91dGlsJwpdLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIEFTTi4xIHZhbGlkYXRvcnMgZm9yIFBLQ1MjNyB2MS41LgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKiBAYXV0aG9yIFN0ZWZhbiBTaWVnbAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgU3RlZmFuIFNpZWdsIDxzdGVzaWVAYnJva2VucGlwZS5kZT4KICoKICogVGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIFBLQ1MjNyBpcyBhcyBmb2xsb3dzCiAqIChzZWUgUkZDICMyMzE1IGZvciBkZXRhaWxzLCBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMzE1LnR4dCk6CiAqCiAqIEEgUEtDUyM3IG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBDb250ZW50SW5mbyBvbiByb290IGxldmVsLCB3aGljaCBtYXkKICogY29udGFpbiBhbnkgbnVtYmVyIG9mIGZ1cnRoZXIgQ29udGVudEluZm8gbmVzdGVkIGludG8gaXQuCiAqCiAqIENvbnRlbnRJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgY29udGVudFR5cGUgICAgICAgICAgICAgICAgQ29udGVudFR5cGUsCiAqICAgY29udGVudCAgICAgICAgICAgICAgIFswXSAgRVhQTElDSVQgQU5ZIERFRklORUQgQlkgY29udGVudFR5cGUgT1BUSU9OQUwKICogfQogKgogKiBDb250ZW50VHlwZSA6Oj0gT0JKRUNUIElERU5USUZJRVIKICoKICogRW52ZWxvcGVkRGF0YSA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gICAgICAgICAgICAgICAgICAgIFZlcnNpb24sCiAqICAgcmVjaXBpZW50SW5mb3MgICAgICAgICAgICAgUmVjaXBpZW50SW5mb3MsCiAqICAgZW5jcnlwdGVkQ29udGVudEluZm8gICAgICAgRW5jcnlwdGVkQ29udGVudEluZm8KICogfQogKgogKiBFbmNyeXB0ZWREYXRhIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBlbmNyeXB0ZWRDb250ZW50SW5mbyAgICAgICBFbmNyeXB0ZWRDb250ZW50SW5mbwogKiB9CiAqCiAqIGlkLXNpZ25lZERhdGEgT0JKRUNUIElERU5USUZJRVIgOjo9IHsgaXNvKDEpIG1lbWJlci1ib2R5KDIpCiAqICAgdXMoODQwKSByc2Fkc2koMTEzNTQ5KSBwa2NzKDEpIHBrY3M3KDcpIDIgfQogKgogKiBTaWduZWREYXRhIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgICAgSU5URUdFUiwKICogICBkaWdlc3RBbGdvcml0aG1zICBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVycywKICogICBjb250ZW50SW5mbyAgICAgICBDb250ZW50SW5mbywKICogICBjZXJ0aWZpY2F0ZXMgICAgICBbMF0gSU1QTElDSVQgQ2VydGlmaWNhdGVzIE9QVElPTkFMLAogKiAgIGNybHMgICAgICAgICAgICAgIFsxXSBJTVBMSUNJVCBDZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0cyBPUFRJT05BTCwKICogICBzaWduZXJJbmZvcyAgICAgICBTaWduZXJJbmZvcwogKiB9CiAqCiAqIFNpZ25lckluZm9zIDo6PSBTRVQgT0YgU2lnbmVySW5mbwogKgogKiBTaWduZXJJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBpc3N1ZXJBbmRTZXJpYWxOdW1iZXIgICAgICBJc3N1ZXJBbmRTZXJpYWxOdW1iZXIsCiAqICAgZGlnZXN0QWxnb3JpdGhtICAgICAgICAgICAgRGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllciwKICogICBhdXRoZW50aWNhdGVkQXR0cmlidXRlcyAgICBbMF0gSU1QTElDSVQgQXR0cmlidXRlcyBPUFRJT05BTCwKICogICBkaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtICBEaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWREaWdlc3QgICAgICAgICAgICBFbmNyeXB0ZWREaWdlc3QsCiAqICAgdW5hdXRoZW50aWNhdGVkQXR0cmlidXRlcyAgWzFdIElNUExJQ0lUIEF0dHJpYnV0ZXMgT1BUSU9OQUwKICogfQogKgogKiBFbmNyeXB0ZWREaWdlc3QgOjo9IE9DVEVUIFNUUklORwogKgogKiBBdHRyaWJ1dGVzIDo6PSBTRVQgT0YgQXR0cmlidXRlCiAqCiAqIEF0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgewogKiAgIGF0dHJUeXBlICAgIE9CSkVDVCBJREVOVElGSUVSLAogKiAgIGF0dHJWYWx1ZXMgIFNFVCBPRiBBdHRyaWJ1dGVWYWx1ZQogKiB9CiAqCiAqIEF0dHJpYnV0ZVZhbHVlIDo6PSBBTlkKICoKICogVmVyc2lvbiA6Oj0gSU5URUdFUgogKgogKiBSZWNpcGllbnRJbmZvcyA6Oj0gU0VUIE9GIFJlY2lwaWVudEluZm8KICoKICogRW5jcnlwdGVkQ29udGVudEluZm8gOjo9IFNFUVVFTkNFIHsKICogICBjb250ZW50VHlwZSAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUsCiAqICAgY29udGVudEVuY3J5cHRpb25BbGdvcml0aG0gIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWRDb250ZW50ICAgICAgIFswXSAgSU1QTElDSVQgRW5jcnlwdGVkQ29udGVudCBPUFRJT05BTAogKiB9CiAqCiAqIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciA6Oj0gQWxnb3JpdGhtSWRlbnRpZmllcgogKgogKiBUaGUgQWxnb3JpdGhtSWRlbnRpZmllciBjb250YWlucyBhbiBPYmplY3QgSWRlbnRpZmllciAoT0lEKSBhbmQgcGFyYW1ldGVycwogKiBmb3IgdGhlIGFsZ29yaXRobSwgaWYgYW55LiBJbiB0aGUgY2FzZSBvZiBBRVMgYW5kIERFUzMsIHRoZXJlIGlzIG9ubHkgb25lLAogKiB0aGUgSVYuCiAqCiAqIEFsZ29yaXRobUlkZW50aWZlciA6Oj0gU0VRVUVOQ0UgewogKiAgICBhbGdvcml0aG0gT0JKRUNUIElERU5USUZJRVIsCiAqICAgIHBhcmFtZXRlcnMgQU5ZIERFRklORUQgQlkgYWxnb3JpdGhtIE9QVElPTkFMCiAqIH0KICoKICogRW5jcnlwdGVkQ29udGVudCA6Oj0gT0NURVQgU1RSSU5HCiAqCiAqIFJlY2lwaWVudEluZm8gOjo9IFNFUVVFTkNFIHsKICogICB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiwKICogICBpc3N1ZXJBbmRTZXJpYWxOdW1iZXIgICAgICAgSXNzdWVyQW5kU2VyaWFsTnVtYmVyLAogKiAgIGtleUVuY3J5cHRpb25BbGdvcml0aG0gICAgICBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSWRlbnRpZmllciwKICogICBlbmNyeXB0ZWRLZXkgICAgICAgICAgICAgICAgRW5jcnlwdGVkS2V5CiAqIH0KICoKICogSXNzdWVyQW5kU2VyaWFsTnVtYmVyIDo6PSBTRVFVRU5DRSB7CiAqICAgaXNzdWVyICAgICAgICAgICAgICAgICAgICAgIE5hbWUsCiAqICAgc2VyaWFsTnVtYmVyICAgICAgICAgICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyCiAqIH0KICoKICogQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIgOjo9IElOVEVHRVIKICoKICogS2V5RW5jcnlwdGlvbkFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogRW5jcnlwdGVkS2V5IDo6PSBPQ1RFVCBTVFJJTkcKICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBzaG9ydGN1dCBmb3IgQVNOLjEgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKCi8vIHNob3J0Y3V0IGZvciBQS0NTIzcgQVBJCnZhciBwN3YgPSBmb3JnZS5wa2NzN2FzbjEgPSBmb3JnZS5wa2NzN2FzbjEgfHwge307CmZvcmdlLnBrY3M3ID0gZm9yZ2UucGtjczcgfHwge307CmZvcmdlLnBrY3M3LmFzbjEgPSBwN3Y7Cgp2YXIgY29udGVudEluZm9WYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NvbnRlbnRJbmZvJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ0NvbnRlbnRJbmZvLkNvbnRlbnRUeXBlJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAnY29udGVudFR5cGUnCiAgfSwgewogICAgbmFtZTogJ0NvbnRlbnRJbmZvLmNvbnRlbnQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDAsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgY2FwdHVyZUFzbjE6ICdjb250ZW50JwogIH1dCn07CnA3di5jb250ZW50SW5mb1ZhbGlkYXRvciA9IGNvbnRlbnRJbmZvVmFsaWRhdG9yOwoKdmFyIGVuY3J5cHRlZENvbnRlbnRJbmZvVmFsaWRhdG9yID0gewogIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mby5jb250ZW50VHlwZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2NvbnRlbnRUeXBlJwogIH0sIHsKICAgIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mby5jb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnRW5jcnlwdGVkQ29udGVudEluZm8uY29udGVudEVuY3J5cHRpb25BbGdvcml0aG0uYWxnb3JpdGhtJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdlbmNBbGdvcml0aG0nCiAgICB9LCB7CiAgICAgIG5hbWU6ICdFbmNyeXB0ZWRDb250ZW50SW5mby5jb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobS5wYXJhbWV0ZXInLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIGNhcHR1cmVBc24xOiAnZW5jUGFyYW1ldGVyJwogICAgfV0KICB9LCB7CiAgICBuYW1lOiAnRW5jcnlwdGVkQ29udGVudEluZm8uZW5jcnlwdGVkQ29udGVudCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMCwKICAgIC8qIFRoZSBQS0NTIzcgc3RydWN0dXJlIG91dHB1dCBieSBPcGVuU1NMIHNvbWV3aGF0IGRpZmZlcnMgZnJvbSB3aGF0CiAgICAgKiBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZG8gZ2VuZXJhdGUuCiAgICAgKgogICAgICogT3BlblNTTCBnZW5lcmF0ZXMgYSBzdHJ1Y3R1cmUgbGlrZSB0aGlzOgogICAgICogU0VRVUVOQ0UgewogICAgICogICAgLi4uCiAgICAgKiAgICBbMF0KICAgICAqICAgICAgIDI2IERBIDY3IEQyIDE3IDlDIDQ1IDNDIEIxIDJBIEE4IDU5IDJGIDI5IDMzIDM4CiAgICAgKiAgICAgICBDMyBDMyBERiA4NiA3MSA3NCA3QSAxOSA5RiA0MCBEMCAyOSBCRSA4NSA5MCA0NQogICAgICogICAgICAgLi4uCiAgICAgKiB9CiAgICAgKgogICAgICogV2hlcmVhcyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgKGFuZCB0aGlzIFBLQ1MjNyBtb2R1bGUpIGdlbmVyYXRlOgogICAgICogU0VRVUVOQ0UgewogICAgICogICAgLi4uCiAgICAgKiAgICBbMF0gewogICAgICogICAgICAgT0NURVQgU1RSSU5HCiAgICAgKiAgICAgICAgICAyNiBEQSA2NyBEMiAxNyA5QyA0NSAzQyBCMSAyQSBBOCA1OSAyRiAyOSAzMyAzOAogICAgICogICAgICAgICAgQzMgQzMgREYgODYgNzEgNzQgN0EgMTkgOUYgNDAgRDAgMjkgQkUgODUgOTAgNDUKICAgICAqICAgICAgICAgIC4uLgogICAgICogICAgfQogICAgICogfQogICAgICoKICAgICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgYm90aCwgd2UganVzdCBjYXB0dXJlIHRoZSBjb250ZXh0IHNwZWNpZmljCiAgICAgKiBmaWVsZCBoZXJlLiAgVGhlIE9DVEVUIFNUUklORyBiaXQgaXMgcmVtb3ZlZCBiZWxvdy4KICAgICAqLwogICAgY2FwdHVyZTogJ2VuY3J5cHRlZENvbnRlbnQnLAogICAgY2FwdHVyZUFzbjE6ICdlbmNyeXB0ZWRDb250ZW50QXNuMScKICB9XQp9OwoKcDd2LmVudmVsb3BlZERhdGFWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0VudmVsb3BlZERhdGEnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnRW52ZWxvcGVkRGF0YS5WZXJzaW9uJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ZlcnNpb24nCiAgfSwgewogICAgbmFtZTogJ0VudmVsb3BlZERhdGEuUmVjaXBpZW50SW5mb3MnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFVCwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgY2FwdHVyZUFzbjE6ICdyZWNpcGllbnRJbmZvcycKICB9XS5jb25jYXQoZW5jcnlwdGVkQ29udGVudEluZm9WYWxpZGF0b3IpCn07CgpwN3YuZW5jcnlwdGVkRGF0YVZhbGlkYXRvciA9IHsKICBuYW1lOiAnRW5jcnlwdGVkRGF0YScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdFbmNyeXB0ZWREYXRhLlZlcnNpb24nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAndmVyc2lvbicKICB9XS5jb25jYXQoZW5jcnlwdGVkQ29udGVudEluZm9WYWxpZGF0b3IpCn07Cgp2YXIgc2lnbmVyVmFsaWRhdG9yID0gewogIG5hbWU6ICdTaWduZXJJbmZvJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ1NpZ25lckluZm8udmVyc2lvbicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZQogIH0sIHsKICAgIG5hbWU6ICdTaWduZXJJbmZvLmlzc3VlckFuZFNlcmlhbE51bWJlcicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnU2lnbmVySW5mby5pc3N1ZXJBbmRTZXJpYWxOdW1iZXIuaXNzdWVyJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2lzc3VlcicKICAgIH0sIHsKICAgICAgbmFtZTogJ1NpZ25lckluZm8uaXNzdWVyQW5kU2VyaWFsTnVtYmVyLnNlcmlhbE51bWJlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ3NlcmlhbCcKICAgIH1dCiAgfSwgewogICAgbmFtZTogJ1NpZ25lckluZm8uZGlnZXN0QWxnb3JpdGhtJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdTaWduZXJJbmZvLmRpZ2VzdEFsZ29yaXRobS5hbGdvcml0aG0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2RpZ2VzdEFsZ29yaXRobScKICAgIH0sIHsKICAgICAgbmFtZTogJ1NpZ25lckluZm8uZGlnZXN0QWxnb3JpdGhtLnBhcmFtZXRlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlQXNuMTogJ2RpZ2VzdFBhcmFtZXRlcicsCiAgICAgIG9wdGlvbmFsOiB0cnVlCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdTaWduZXJJbmZvLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICB0eXBlOiAwLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmU6ICdhdXRoZW50aWNhdGVkQXR0cmlidXRlcycKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVySW5mby5kaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgY2FwdHVyZTogJ3NpZ25hdHVyZUFsZ29yaXRobScKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVySW5mby5lbmNyeXB0ZWREaWdlc3QnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3NpZ25hdHVyZScKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVySW5mby51bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICB0eXBlOiAxLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmU6ICd1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzJwogIH1dCn07CgpwN3Yuc2lnbmVkRGF0YVZhbGlkYXRvciA9IHsKICBuYW1lOiAnU2lnbmVkRGF0YScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdTaWduZWREYXRhLlZlcnNpb24nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAndmVyc2lvbicKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVkRGF0YS5EaWdlc3RBbGdvcml0aG1zJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVQsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnZGlnZXN0QWxnb3JpdGhtcycKICB9LAogIGNvbnRlbnRJbmZvVmFsaWRhdG9yLAogIHsKICAgIG5hbWU6ICdTaWduZWREYXRhLkNlcnRpZmljYXRlcycsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMCwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgY2FwdHVyZUFzbjE6ICdjZXJ0aWZpY2F0ZXMnCiAgfSwgewogICAgbmFtZTogJ1NpZ25lZERhdGEuQ2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdHMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDEsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnY3JscycKICB9LCB7CiAgICBuYW1lOiAnU2lnbmVkRGF0YS5TaWduZXJJbmZvcycsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VULAogICAgY2FwdHVyZTogJ3NpZ25lckluZm9zJywKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgdmFsdWU6IFtzaWduZXJWYWxpZGF0b3JdCiAgfV0KfTsKCnA3di5yZWNpcGllbnRJbmZvVmFsaWRhdG9yID0gewogIG5hbWU6ICdSZWNpcGllbnRJbmZvJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ1JlY2lwaWVudEluZm8udmVyc2lvbicsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuSU5URUdFUiwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICd2ZXJzaW9uJwogIH0sIHsKICAgIG5hbWU6ICdSZWNpcGllbnRJbmZvLmlzc3VlckFuZFNlcmlhbCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnUmVjaXBpZW50SW5mby5pc3N1ZXJBbmRTZXJpYWwuaXNzdWVyJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2lzc3VlcicKICAgIH0sIHsKICAgICAgbmFtZTogJ1JlY2lwaWVudEluZm8uaXNzdWVyQW5kU2VyaWFsLnNlcmlhbE51bWJlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ3NlcmlhbCcKICAgIH1dCiAgfSwgewogICAgbmFtZTogJ1JlY2lwaWVudEluZm8ua2V5RW5jcnlwdGlvbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnUmVjaXBpZW50SW5mby5rZXlFbmNyeXB0aW9uQWxnb3JpdGhtLmFsZ29yaXRobScsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlOiAnZW5jQWxnb3JpdGhtJwogICAgfSwgewogICAgICBuYW1lOiAnUmVjaXBpZW50SW5mby5rZXlFbmNyeXB0aW9uQWxnb3JpdGhtLnBhcmFtZXRlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlQXNuMTogJ2VuY1BhcmFtZXRlcicKICAgIH1dCiAgfSwgewogICAgbmFtZTogJ1JlY2lwaWVudEluZm8uZW5jcnlwdGVkS2V5JywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5PQ1RFVFNUUklORywKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdlbmNLZXknCiAgfV0KfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3BrY3M3YXNuMSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wa2NzN2FzbjEnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9hc24xJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIG1hc2sgZ2VuZXJhdGlvbiBmdW5jdGlvbiBNR0YxLgogKgogKiBAYXV0aG9yIFN0ZWZhbiBTaWVnbAogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgU3RlZmFuIFNpZWdsIDxzdGVzaWVAYnJva2VucGlwZS5kZT4KICogQ29weXJpZ2h0IChjKSAyMDE0IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UubWdmID0gZm9yZ2UubWdmIHx8IHt9Owp2YXIgbWdmMSA9IGZvcmdlLm1nZi5tZ2YxID0gZm9yZ2UubWdmMSA9IGZvcmdlLm1nZjEgfHwge307CgovKioKICogQ3JlYXRlcyBhIE1HRjEgbWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9uIG9iamVjdC4KICoKICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBBUEkgdG8gdXNlIChlZzogZm9yZ2UubWQuc2hhMS5jcmVhdGUoKSkuCiAqCiAqIEByZXR1cm4gYSBtYXNrIGdlbmVyYXRpb24gZnVuY3Rpb24gb2JqZWN0LgogKi8KbWdmMS5jcmVhdGUgPSBmdW5jdGlvbihtZCkgewogIHZhciBtZ2YgPSB7CiAgICAvKioKICAgICAqIEdlbmVyYXRlIG1hc2sgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KICAgICAqCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gc2VlZCBUaGUgc2VlZCBmb3IgbWFzayBnZW5lcmF0aW9uLgogICAgICogQHBhcmFtIG1hc2tMZW4gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlLgogICAgICogQHJldHVybiB7U3RyaW5nfSBUaGUgZ2VuZXJhdGVkIG1hc2suCiAgICAgKi8KICAgIGdlbmVyYXRlOiBmdW5jdGlvbihzZWVkLCBtYXNrTGVuKSB7CiAgICAgIC8qIDIuIExldCBUIGJlIHRoZSBlbXB0eSBvY3RldCBzdHJpbmcuICovCiAgICAgIHZhciB0ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwoKICAgICAgLyogMy4gRm9yIGNvdW50ZXIgZnJvbSAwIHRvIGNlaWwobWFza0xlbiAvIGhMZW4pLCBkbyB0aGUgZm9sbG93aW5nOiAqLwogICAgICB2YXIgbGVuID0gTWF0aC5jZWlsKG1hc2tMZW4gLyBtZC5kaWdlc3RMZW5ndGgpOwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAvKiBhLiBDb252ZXJ0IGNvdW50ZXIgdG8gYW4gb2N0ZXQgc3RyaW5nIEMgb2YgbGVuZ3RoIDQgb2N0ZXRzICovCiAgICAgICAgdmFyIGMgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKCk7CiAgICAgICAgYy5wdXRJbnQzMihpKTsKCiAgICAgICAgLyogYi4gQ29uY2F0ZW5hdGUgdGhlIGhhc2ggb2YgdGhlIHNlZWQgbWdmU2VlZCBhbmQgQyB0byB0aGUgb2N0ZXQKICAgICAgICAgKiBzdHJpbmcgVDogKi8KICAgICAgICBtZC5zdGFydCgpOwogICAgICAgIG1kLnVwZGF0ZShzZWVkICsgYy5nZXRCeXRlcygpKTsKICAgICAgICB0LnB1dEJ1ZmZlcihtZC5kaWdlc3QoKSk7CiAgICAgIH0KCiAgICAgIC8qIE91dHB1dCB0aGUgbGVhZGluZyBtYXNrTGVuIG9jdGV0cyBvZiBUIGFzIHRoZSBvY3RldCBzdHJpbmcgbWFzay4gKi8KICAgICAgdC50cnVuY2F0ZSh0Lmxlbmd0aCgpIC0gbWFza0xlbik7CiAgICAgIHJldHVybiB0LmdldEJ5dGVzKCk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIG1nZjsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ21nZjEnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvbWdmMScsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogTm9kZS5qcyBtb2R1bGUgZm9yIEZvcmdlIG1hc2sgZ2VuZXJhdGlvbiBmdW5jdGlvbnMuCiAqCiAqIEBhdXRob3IgU3RlZmFuIFNpZWdsCiAqCiAqIENvcHlyaWdodCAyMDEyIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKZm9yZ2UubWdmID0gZm9yZ2UubWdmIHx8IHt9Owpmb3JnZS5tZ2YubWdmMSA9IGZvcmdlLm1nZjE7Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdtZ2YnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvbWdmJyxbJ3JlcXVpcmUnLCAnbW9kdWxlJywgJy4vbWdmMSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIFBLQ1MjMSBQU1Mgc2lnbmF0dXJlIHBhZGRpbmcuCiAqCiAqIEBhdXRob3IgU3RlZmFuIFNpZWdsCiAqCiAqIENvcHlyaWdodCAoYykgMjAxMiBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIHNob3J0Y3V0IGZvciBQU1MgQVBJCnZhciBwc3MgPSBmb3JnZS5wc3MgPSBmb3JnZS5wc3MgfHwge307CgovKioKICogQ3JlYXRlcyBhIFBTUyBzaWduYXR1cmUgc2NoZW1lIG9iamVjdC4KICoKICogVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBwcm92aWRlIGEgc2FsdCBmb3IgZW5jb2Rpbmc6CiAqCiAqIDEuIFNwZWNpZnkgdGhlIHNhbHRMZW5ndGggb25seSBhbmQgdGhlIGJ1aWx0LWluIFBSTkcgd2lsbCBnZW5lcmF0ZSBpdC4KICogMi4gU3BlY2lmeSB0aGUgc2FsdExlbmd0aCBhbmQgYSBjdXN0b20gUFJORyB3aXRoICdnZXRCeXRlc1N5bmMnIGRlZmluZWQgdGhhdAogKiAgIHdpbGwgYmUgdXNlZC4KICogMy4gU3BlY2lmeSB0aGUgc2FsdCBpdHNlbGYgYXMgYSBmb3JnZS51dGlsLkJ5dGVCdWZmZXIuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIHRvIHVzZToKICogICAgICAgICAgbWQgdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UsIGEgZm9yZ2UgbWQgaW5zdGFuY2UuCiAqICAgICAgICAgIG1nZiB0aGUgbWFzayBnZW5lcmF0aW9uIGZ1bmN0aW9uIHRvIHVzZSwgYSBmb3JnZSBtZ2YgaW5zdGFuY2UuCiAqICAgICAgICAgIFtzYWx0TGVuZ3RoXSB0aGUgbGVuZ3RoIG9mIHRoZSBzYWx0IGluIG9jdGV0cy4KICogICAgICAgICAgW3BybmddIHRoZSBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgdG8gdXNlIHRvIHByb2R1Y2UgYSBzYWx0LgogKiAgICAgICAgICBbc2FsdF0gdGhlIHNhbHQgdG8gdXNlIHdoZW4gZW5jb2RpbmcuCiAqCiAqIEByZXR1cm4gYSBzaWduYXR1cmUgc2NoZW1lIG9iamVjdC4KICovCnBzcy5jcmVhdGUgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgdy9sZWdhY3kgYXJnczogaGFzaCwgbWdmLCBzTGVuCiAgaWYoYXJndW1lbnRzLmxlbmd0aCA9PT0gMykgewogICAgb3B0aW9ucyA9IHsKICAgICAgbWQ6IGFyZ3VtZW50c1swXSwKICAgICAgbWdmOiBhcmd1bWVudHNbMV0sCiAgICAgIHNhbHRMZW5ndGg6IGFyZ3VtZW50c1syXQogICAgfTsKICB9CgogIHZhciBoYXNoID0gb3B0aW9ucy5tZDsKICB2YXIgbWdmID0gb3B0aW9ucy5tZ2Y7CiAgdmFyIGhMZW4gPSBoYXNoLmRpZ2VzdExlbmd0aDsKCiAgdmFyIHNhbHRfID0gb3B0aW9ucy5zYWx0IHx8IG51bGw7CiAgaWYodHlwZW9mIHNhbHRfID09PSAnc3RyaW5nJykgewogICAgLy8gYXNzdW1lIGJpbmFyeS1lbmNvZGVkIHN0cmluZwogICAgc2FsdF8gPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihzYWx0Xyk7CiAgfQoKICB2YXIgc0xlbjsKICBpZignc2FsdExlbmd0aCcgaW4gb3B0aW9ucykgewogICAgc0xlbiA9IG9wdGlvbnMuc2FsdExlbmd0aDsKICB9IGVsc2UgaWYoc2FsdF8gIT09IG51bGwpIHsKICAgIHNMZW4gPSBzYWx0Xy5sZW5ndGgoKTsKICB9IGVsc2UgewogICAgdGhyb3cgbmV3IEVycm9yKCdTYWx0IGxlbmd0aCBub3Qgc3BlY2lmaWVkIG9yIHNwZWNpZmljIHNhbHQgbm90IGdpdmVuLicpOwogIH0KCiAgaWYoc2FsdF8gIT09IG51bGwgJiYgc2FsdF8ubGVuZ3RoKCkgIT09IHNMZW4pIHsKICAgIHRocm93IG5ldyBFcnJvcignR2l2ZW4gc2FsdCBsZW5ndGggZG9lcyBub3QgbWF0Y2ggbGVuZ3RoIG9mIGdpdmVuIHNhbHQuJyk7CiAgfQoKICB2YXIgcHJuZyA9IG9wdGlvbnMucHJuZyB8fCBmb3JnZS5yYW5kb207CgogIHZhciBwc3NvYmogPSB7fTsKCiAgLyoqCiAgICogRW5jb2RlcyBhIFBTUyBzaWduYXR1cmUuCiAgICoKICAgKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgRU1TQS1QU1MtRU5DT0RFIGFzIHBlciBSRkMgMzQ0Nywgc2VjdGlvbiA5LjEuMS4KICAgKgogICAqIEBwYXJhbSBtZCB0aGUgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0IHdpdGggdGhlIGhhc2ggdG8gc2lnbi4KICAgKiBAcGFyYW0gbW9kc0JpdHMgdGhlIGxlbmd0aCBvZiB0aGUgUlNBIG1vZHVsdXMgaW4gYml0cy4KICAgKgogICAqIEByZXR1cm4gdGhlIGVuY29kZWQgbWVzc2FnZSBhcyBhIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBsZW5ndGgKICAgKiAgICAgICAgICAgY2VpbCgobW9kQml0cyAtIDEpIC8gOCkuCiAgICovCiAgcHNzb2JqLmVuY29kZSA9IGZ1bmN0aW9uKG1kLCBtb2RCaXRzKSB7CiAgICB2YXIgaTsKICAgIHZhciBlbUJpdHMgPSBtb2RCaXRzIC0gMTsKICAgIHZhciBlbUxlbiA9IE1hdGguY2VpbChlbUJpdHMgLyA4KTsKCiAgICAvKiAyLiBMZXQgbUhhc2ggPSBIYXNoKE0pLCBhbiBvY3RldCBzdHJpbmcgb2YgbGVuZ3RoIGhMZW4uICovCiAgICB2YXIgbUhhc2ggPSBtZC5kaWdlc3QoKS5nZXRCeXRlcygpOwoKICAgIC8qIDMuIElmIGVtTGVuIDwgaExlbiArIHNMZW4gKyAyLCBvdXRwdXQgImVuY29kaW5nIGVycm9yIiBhbmQgc3RvcC4gKi8KICAgIGlmKGVtTGVuIDwgaExlbiArIHNMZW4gKyAyKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTWVzc2FnZSBpcyB0b28gbG9uZyB0byBlbmNyeXB0LicpOwogICAgfQoKICAgIC8qIDQuIEdlbmVyYXRlIGEgcmFuZG9tIG9jdGV0IHN0cmluZyBzYWx0IG9mIGxlbmd0aCBzTGVuOyBpZiBzTGVuID0gMCwKICAgICAqICAgIHRoZW4gc2FsdCBpcyB0aGUgZW1wdHkgc3RyaW5nLiAqLwogICAgdmFyIHNhbHQ7CiAgICBpZihzYWx0XyA9PT0gbnVsbCkgewogICAgICBzYWx0ID0gcHJuZy5nZXRCeXRlc1N5bmMoc0xlbik7CiAgICB9IGVsc2UgewogICAgICBzYWx0ID0gc2FsdF8uYnl0ZXMoKTsKICAgIH0KCiAgICAvKiA1LiBMZXQgTScgPSAoMHgpMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfHwgbUhhc2ggfHwgc2FsdDsgKi8KICAgIHZhciBtXyA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICAgIG1fLmZpbGxXaXRoQnl0ZSgwLCA4KTsKICAgIG1fLnB1dEJ5dGVzKG1IYXNoKTsKICAgIG1fLnB1dEJ5dGVzKHNhbHQpOwoKICAgIC8qIDYuIExldCBIID0gSGFzaChNJyksIGFuIG9jdGV0IHN0cmluZyBvZiBsZW5ndGggaExlbi4gKi8KICAgIGhhc2guc3RhcnQoKTsKICAgIGhhc2gudXBkYXRlKG1fLmdldEJ5dGVzKCkpOwogICAgdmFyIGggPSBoYXNoLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CgogICAgLyogNy4gR2VuZXJhdGUgYW4gb2N0ZXQgc3RyaW5nIFBTIGNvbnNpc3Rpbmcgb2YgZW1MZW4gLSBzTGVuIC0gaExlbiAtIDIKICAgICAqICAgIHplcm8gb2N0ZXRzLiAgVGhlIGxlbmd0aCBvZiBQUyBtYXkgYmUgMC4gKi8KICAgIHZhciBwcyA9IG5ldyBmb3JnZS51dGlsLkJ5dGVCdWZmZXIoKTsKICAgIHBzLmZpbGxXaXRoQnl0ZSgwLCBlbUxlbiAtIHNMZW4gLSBoTGVuIC0gMik7CgogICAgLyogOC4gTGV0IERCID0gUFMgfHwgMHgwMSB8fCBzYWx0OyBEQiBpcyBhbiBvY3RldCBzdHJpbmcgb2YgbGVuZ3RoCiAgICAgKiAgICBlbUxlbiAtIGhMZW4gLSAxLiAqLwogICAgcHMucHV0Qnl0ZSgweDAxKTsKICAgIHBzLnB1dEJ5dGVzKHNhbHQpOwogICAgdmFyIGRiID0gcHMuZ2V0Qnl0ZXMoKTsKCiAgICAvKiA5LiBMZXQgZGJNYXNrID0gTUdGKEgsIGVtTGVuIC0gaExlbiAtIDEpLiAqLwogICAgdmFyIG1hc2tMZW4gPSBlbUxlbiAtIGhMZW4gLSAxOwogICAgdmFyIGRiTWFzayA9IG1nZi5nZW5lcmF0ZShoLCBtYXNrTGVuKTsKCiAgICAvKiAxMC4gTGV0IG1hc2tlZERCID0gREIgXHhvciBkYk1hc2suICovCiAgICB2YXIgbWFza2VkREIgPSAnJzsKICAgIGZvcihpID0gMDsgaSA8IG1hc2tMZW47IGkgKyspIHsKICAgICAgbWFza2VkREIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYi5jaGFyQ29kZUF0KGkpIF4gZGJNYXNrLmNoYXJDb2RlQXQoaSkpOwogICAgfQoKICAgIC8qIDExLiBTZXQgdGhlIGxlZnRtb3N0IDhlbUxlbiAtIGVtQml0cyBiaXRzIG9mIHRoZSBsZWZ0bW9zdCBvY3RldCBpbgogICAgICogICAgIG1hc2tlZERCIHRvIHplcm8uICovCiAgICB2YXIgbWFzayA9ICgweEZGMDAgPj4gKDggKiBlbUxlbiAtIGVtQml0cykpICYgMHhGRjsKICAgIG1hc2tlZERCID0gU3RyaW5nLmZyb21DaGFyQ29kZShtYXNrZWREQi5jaGFyQ29kZUF0KDApICYgfm1hc2spICsKICAgICAgbWFza2VkREIuc3Vic3RyKDEpOwoKICAgIC8qIDEyLiBMZXQgRU0gPSBtYXNrZWREQiB8fCBIIHx8IDB4YmMuCiAgICAgKiAxMy4gT3V0cHV0IEVNLiAqLwogICAgcmV0dXJuIG1hc2tlZERCICsgaCArIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhiYyk7CiAgfTsKCiAgLyoqCiAgICogVmVyaWZpZXMgYSBQU1Mgc2lnbmF0dXJlLgogICAqCiAgICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIEVNU0EtUFNTLVZFUklGWSBhcyBwZXIgUkZDIDM0NDcsIHNlY3Rpb24gOS4xLjIuCiAgICoKICAgKiBAcGFyYW0gbUhhc2ggdGhlIG1lc3NhZ2UgZGlnZXN0IGhhc2gsIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nLCB0bwogICAqICAgICAgICAgY29tcGFyZSBhZ2FpbnN0IHRoZSBzaWduYXR1cmUuCiAgICogQHBhcmFtIGVtIHRoZSBlbmNvZGVkIG1lc3NhZ2UsIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nCiAgICogICAgICAgICAgKFJTQSBkZWNyeXB0aW9uIHJlc3VsdCkuCiAgICogQHBhcmFtIG1vZHNCaXRzIHRoZSBsZW5ndGggb2YgdGhlIFJTQSBtb2R1bHVzIGluIGJpdHMuCiAgICoKICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNpZ25hdHVyZSB3YXMgdmVyaWZpZWQsIGZhbHNlIGlmIG5vdC4KICAgKi8KICBwc3NvYmoudmVyaWZ5ID0gZnVuY3Rpb24obUhhc2gsIGVtLCBtb2RCaXRzKSB7CiAgICB2YXIgaTsKICAgIHZhciBlbUJpdHMgPSBtb2RCaXRzIC0gMTsKICAgIHZhciBlbUxlbiA9IE1hdGguY2VpbChlbUJpdHMgLyA4KTsKCiAgICAvKiBjLiBDb252ZXJ0IHRoZSBtZXNzYWdlIHJlcHJlc2VudGF0aXZlIG0gdG8gYW4gZW5jb2RlZCBtZXNzYWdlIEVNCiAgICAgKiAgICBvZiBsZW5ndGggZW1MZW4gPSBjZWlsKChtb2RCaXRzIC0gMSkgLyA4KSBvY3RldHMsIHdoZXJlIG1vZEJpdHMKICAgICAqICAgIGlzIHRoZSBsZW5ndGggaW4gYml0cyBvZiB0aGUgUlNBIG1vZHVsdXMgbiAqLwogICAgZW0gPSBlbS5zdWJzdHIoLWVtTGVuKTsKCiAgICAvKiAzLiBJZiBlbUxlbiA8IGhMZW4gKyBzTGVuICsgMiwgb3V0cHV0ICJpbmNvbnNpc3RlbnQiIGFuZCBzdG9wLiAqLwogICAgaWYoZW1MZW4gPCBoTGVuICsgc0xlbiArIDIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvbnNpc3RlbnQgcGFyYW1ldGVycyB0byBQU1Mgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4nKTsKICAgIH0KCiAgICAvKiA0LiBJZiB0aGUgcmlnaHRtb3N0IG9jdGV0IG9mIEVNIGRvZXMgbm90IGhhdmUgaGV4YWRlY2ltYWwgdmFsdWUKICAgICAqICAgIDB4YmMsIG91dHB1dCAiaW5jb25zaXN0ZW50IiBhbmQgc3RvcC4gKi8KICAgIGlmKGVtLmNoYXJDb2RlQXQoZW1MZW4gLSAxKSAhPT0gMHhiYykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VuY29kZWQgbWVzc2FnZSBkb2VzIG5vdCBlbmQgaW4gMHhCQy4nKTsKICAgIH0KCiAgICAvKiA1LiBMZXQgbWFza2VkREIgYmUgdGhlIGxlZnRtb3N0IGVtTGVuIC0gaExlbiAtIDEgb2N0ZXRzIG9mIEVNLCBhbmQKICAgICAqICAgIGxldCBIIGJlIHRoZSBuZXh0IGhMZW4gb2N0ZXRzLiAqLwogICAgdmFyIG1hc2tMZW4gPSBlbUxlbiAtIGhMZW4gLSAxOwogICAgdmFyIG1hc2tlZERCID0gZW0uc3Vic3RyKDAsIG1hc2tMZW4pOwogICAgdmFyIGggPSBlbS5zdWJzdHIobWFza0xlbiwgaExlbik7CgogICAgLyogNi4gSWYgdGhlIGxlZnRtb3N0IDhlbUxlbiAtIGVtQml0cyBiaXRzIG9mIHRoZSBsZWZ0bW9zdCBvY3RldCBpbgogICAgICogICAgbWFza2VkREIgYXJlIG5vdCBhbGwgZXF1YWwgdG8gemVybywgb3V0cHV0ICJpbmNvbnNpc3RlbnQiIGFuZCBzdG9wLiAqLwogICAgdmFyIG1hc2sgPSAoMHhGRjAwID4+ICg4ICogZW1MZW4gLSBlbUJpdHMpKSAmIDB4RkY7CiAgICBpZigobWFza2VkREIuY2hhckNvZGVBdCgwKSAmIG1hc2spICE9PSAwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignQml0cyBiZXlvbmQga2V5c2l6ZSBub3QgemVybyBhcyBleHBlY3RlZC4nKTsKICAgIH0KCiAgICAvKiA3LiBMZXQgZGJNYXNrID0gTUdGKEgsIGVtTGVuIC0gaExlbiAtIDEpLiAqLwogICAgdmFyIGRiTWFzayA9IG1nZi5nZW5lcmF0ZShoLCBtYXNrTGVuKTsKCiAgICAvKiA4LiBMZXQgREIgPSBtYXNrZWREQiBceG9yIGRiTWFzay4gKi8KICAgIHZhciBkYiA9ICcnOwogICAgZm9yKGkgPSAwOyBpIDwgbWFza0xlbjsgaSArKykgewogICAgICBkYiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hc2tlZERCLmNoYXJDb2RlQXQoaSkgXiBkYk1hc2suY2hhckNvZGVBdChpKSk7CiAgICB9CgogICAgLyogOS4gU2V0IHRoZSBsZWZ0bW9zdCA4ZW1MZW4gLSBlbUJpdHMgYml0cyBvZiB0aGUgbGVmdG1vc3Qgb2N0ZXQKICAgICAqIGluIERCIHRvIHplcm8uICovCiAgICBkYiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGIuY2hhckNvZGVBdCgwKSAmIH5tYXNrKSArIGRiLnN1YnN0cigxKTsKCiAgICAvKiAxMC4gSWYgdGhlIGVtTGVuIC0gaExlbiAtIHNMZW4gLSAyIGxlZnRtb3N0IG9jdGV0cyBvZiBEQiBhcmUgbm90IHplcm8KICAgICAqIG9yIGlmIHRoZSBvY3RldCBhdCBwb3NpdGlvbiBlbUxlbiAtIGhMZW4gLSBzTGVuIC0gMSAodGhlIGxlZnRtb3N0CiAgICAgKiBwb3NpdGlvbiBpcyAicG9zaXRpb24gMSIpIGRvZXMgbm90IGhhdmUgaGV4YWRlY2ltYWwgdmFsdWUgMHgwMSwKICAgICAqIG91dHB1dCAiaW5jb25zaXN0ZW50IiBhbmQgc3RvcC4gKi8KICAgIHZhciBjaGVja0xlbiA9IGVtTGVuIC0gaExlbiAtIHNMZW4gLSAyOwogICAgZm9yKGkgPSAwOyBpIDwgY2hlY2tMZW47IGkgKyspIHsKICAgICAgaWYoZGIuY2hhckNvZGVBdChpKSAhPT0gMHgwMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignTGVmdG1vc3Qgb2N0ZXRzIG5vdCB6ZXJvIGFzIGV4cGVjdGVkJyk7CiAgICAgIH0KICAgIH0KCiAgICBpZihkYi5jaGFyQ29kZUF0KGNoZWNrTGVuKSAhPT0gMHgwMSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luY29uc2lzdGVudCBQU1Mgc2lnbmF0dXJlLCAweDAxIG1hcmtlciBub3QgZm91bmQnKTsKICAgIH0KCiAgICAvKiAxMS4gTGV0IHNhbHQgYmUgdGhlIGxhc3Qgc0xlbiBvY3RldHMgb2YgREIuICovCiAgICB2YXIgc2FsdCA9IGRiLnN1YnN0cigtc0xlbik7CgogICAgLyogMTIuICBMZXQgTScgPSAoMHgpMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgfHwgbUhhc2ggfHwgc2FsdCAqLwogICAgdmFyIG1fID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgbV8uZmlsbFdpdGhCeXRlKDAsIDgpOwogICAgbV8ucHV0Qnl0ZXMobUhhc2gpOwogICAgbV8ucHV0Qnl0ZXMoc2FsdCk7CgogICAgLyogMTMuIExldCBIJyA9IEhhc2goTScpLCBhbiBvY3RldCBzdHJpbmcgb2YgbGVuZ3RoIGhMZW4uICovCiAgICBoYXNoLnN0YXJ0KCk7CiAgICBoYXNoLnVwZGF0ZShtXy5nZXRCeXRlcygpKTsKICAgIHZhciBoXyA9IGhhc2guZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKCiAgICAvKiAxNC4gSWYgSCA9IEgnLCBvdXRwdXQgImNvbnNpc3RlbnQuIiBPdGhlcndpc2UsIG91dHB1dCAiaW5jb25zaXN0ZW50LiIgKi8KICAgIHJldHVybiBoID09PSBoXzsKICB9OwoKICByZXR1cm4gcHNzb2JqOwp9OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncHNzJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BzcycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3JhbmRvbScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBYLjUwOSBhbmQgcmVsYXRlZCBjb21wb25lbnRzIChzdWNoIGFzCiAqIENlcnRpZmljYXRpb24gU2lnbmluZyBSZXF1ZXN0cykgb2YgYSBQdWJsaWMgS2V5IEluZnJhc3RydWN0dXJlLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKgogKiBUaGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgYW4gWC41MDl2MyBjZXJ0aWZpY2F0ZSBpcyBhcyBmb2xsb3dzCiAqIChzZWUgUkZDIDI0NTkpOgogKgogKiBDZXJ0aWZpY2F0ZSA6Oj0gU0VRVUVOQ0UgewogKiAgIHRic0NlcnRpZmljYXRlICAgICAgIFRCU0NlcnRpZmljYXRlLAogKiAgIHNpZ25hdHVyZUFsZ29yaXRobSAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgc2lnbmF0dXJlVmFsdWUgICAgICAgQklUIFNUUklORwogKiB9CiAqCiAqIFRCU0NlcnRpZmljYXRlIDo6PSBTRVFVRU5DRSB7CiAqICAgdmVyc2lvbiAgICAgICAgIFswXSAgRVhQTElDSVQgVmVyc2lvbiBERUZBVUxUIHYxLAogKiAgIHNlcmlhbE51bWJlciAgICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyLAogKiAgIHNpZ25hdHVyZSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgaXNzdWVyICAgICAgICAgICAgICAgTmFtZSwKICogICB2YWxpZGl0eSAgICAgICAgICAgICBWYWxpZGl0eSwKICogICBzdWJqZWN0ICAgICAgICAgICAgICBOYW1lLAogKiAgIHN1YmplY3RQdWJsaWNLZXlJbmZvIFN1YmplY3RQdWJsaWNLZXlJbmZvLAogKiAgIGlzc3VlclVuaXF1ZUlEICBbMV0gIElNUExJQ0lUIFVuaXF1ZUlkZW50aWZpZXIgT1BUSU9OQUwsCiAqICAgICAgICAgICAgICAgICAgICAgICAgLS0gSWYgcHJlc2VudCwgdmVyc2lvbiBzaGFsbCBiZSB2MiBvciB2MwogKiAgIHN1YmplY3RVbmlxdWVJRCBbMl0gIElNUExJQ0lUIFVuaXF1ZUlkZW50aWZpZXIgT1BUSU9OQUwsCiAqICAgICAgICAgICAgICAgICAgICAgICAgLS0gSWYgcHJlc2VudCwgdmVyc2lvbiBzaGFsbCBiZSB2MiBvciB2MwogKiAgIGV4dGVuc2lvbnMgICAgICBbM10gIEVYUExJQ0lUIEV4dGVuc2lvbnMgT1BUSU9OQUwKICogICAgICAgICAgICAgICAgICAgICAgICAtLSBJZiBwcmVzZW50LCB2ZXJzaW9uIHNoYWxsIGJlIHYzCiAqIH0KICoKICogVmVyc2lvbiA6Oj0gSU5URUdFUiAgeyB2MSgwKSwgdjIoMSksIHYzKDIpIH0KICoKICogQ2VydGlmaWNhdGVTZXJpYWxOdW1iZXIgOjo9IElOVEVHRVIKICoKICogTmFtZSA6Oj0gQ0hPSUNFIHsKICogICAvLyBvbmx5IG9uZSBwb3NzaWJsZSBjaG9pY2UgZm9yIG5vdwogKiAgIFJETlNlcXVlbmNlCiAqIH0KICoKICogUkROU2VxdWVuY2UgOjo9IFNFUVVFTkNFIE9GIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKICoKICogUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSA6Oj0gU0VUIE9GIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZQogKgogKiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgOjo9IFNFUVVFTkNFIHsKICogICB0eXBlICAgICBBdHRyaWJ1dGVUeXBlLAogKiAgIHZhbHVlICAgIEF0dHJpYnV0ZVZhbHVlCiAqIH0KICogQXR0cmlidXRlVHlwZSA6Oj0gT0JKRUNUIElERU5USUZJRVIKICogQXR0cmlidXRlVmFsdWUgOjo9IEFOWSBERUZJTkVEIEJZIEF0dHJpYnV0ZVR5cGUKICoKICogVmFsaWRpdHkgOjo9IFNFUVVFTkNFIHsKICogICBub3RCZWZvcmUgICAgICBUaW1lLAogKiAgIG5vdEFmdGVyICAgICAgIFRpbWUKICogfQogKgogKiBUaW1lIDo6PSBDSE9JQ0UgewogKiAgIHV0Y1RpbWUgICAgICAgIFVUQ1RpbWUsCiAqICAgZ2VuZXJhbFRpbWUgICAgR2VuZXJhbGl6ZWRUaW1lCiAqIH0KICoKICogVW5pcXVlSWRlbnRpZmllciA6Oj0gQklUIFNUUklORwogKgogKiBTdWJqZWN0UHVibGljS2V5SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIGFsZ29yaXRobSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgc3ViamVjdFB1YmxpY0tleSAgICAgQklUIFNUUklORwogKiB9CiAqCiAqIEV4dGVuc2lvbnMgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLk1BWCkgT0YgRXh0ZW5zaW9uCiAqCiAqIEV4dGVuc2lvbiA6Oj0gU0VRVUVOQ0UgewogKiAgIGV4dG5JRCAgICAgIE9CSkVDVCBJREVOVElGSUVSLAogKiAgIGNyaXRpY2FsICAgIEJPT0xFQU4gREVGQVVMVCBGQUxTRSwKICogICBleHRuVmFsdWUgICBPQ1RFVCBTVFJJTkcKICogfQogKgogKiBUaGUgb25seSBrZXkgYWxnb3JpdGhtIGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIFBLSSBpcyBSU0EuCiAqCiAqIFJTQVNTQS1QU1Mgc2lnbmF0dXJlcyBhcmUgZGVzY3JpYmVkIGluIFJGQyAzNDQ3IGFuZCBSRkMgNDA1NS4KICoKICogUEtDUyMxMCB2MS43IGRlc2NyaWJlcyBjZXJ0aWZpY2F0ZSBzaWduaW5nIHJlcXVlc3RzOgogKgogKiBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm86CiAqCiAqIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gICAgICAgSU5URUdFUiB7IHYxKDApIH0gKHYxLC4uLiksCiAqICAgc3ViamVjdCAgICAgICBOYW1lLAogKiAgIHN1YmplY3RQS0luZm8gU3ViamVjdFB1YmxpY0tleUluZm97eyBQS0luZm9BbGdvcml0aG1zIH19LAogKiAgIGF0dHJpYnV0ZXMgICAgWzBdIEF0dHJpYnV0ZXN7eyBDUklBdHRyaWJ1dGVzIH19CiAqIH0KICoKICogQXR0cmlidXRlcyB7IEFUVFJJQlVURTpJT1NldCB9IDo6PSBTRVQgT0YgQXR0cmlidXRle3sgSU9TZXQgfX0KICoKICogQ1JJQXR0cmlidXRlcyAgQVRUUklCVVRFICA6Oj0gewogKiAgIC4uLiAtLSBhZGQgYW55IGxvY2FsbHkgZGVmaW5lZCBhdHRyaWJ1dGVzIGhlcmUgLS0gfQogKgogKiBBdHRyaWJ1dGUgeyBBVFRSSUJVVEU6SU9TZXQgfSA6Oj0gU0VRVUVOQ0UgewogKiAgIHR5cGUgICBBVFRSSUJVVEUuJmlkKHtJT1NldH0pLAogKiAgIHZhbHVlcyBTRVQgU0laRSgxLi5NQVgpIE9GIEFUVFJJQlVURS4mVHlwZSh7SU9TZXR9e0B0eXBlfSkKICogfQogKgogKiBDZXJ0aWZpY2F0aW9uUmVxdWVzdCA6Oj0gU0VRVUVOQ0UgewogKiAgIGNlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8sCiAqICAgc2lnbmF0dXJlQWxnb3JpdGhtIEFsZ29yaXRobUlkZW50aWZpZXJ7eyBTaWduYXR1cmVBbGdvcml0aG1zIH19LAogKiAgIHNpZ25hdHVyZSAgICAgICAgICBCSVQgU1RSSU5HCiAqIH0KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBzaG9ydGN1dCBmb3IgYXNuLjEgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKCi8qIFB1YmxpYyBLZXkgSW5mcmFzdHJ1Y3R1cmUgKFBLSSkgaW1wbGVtZW50YXRpb24uICovCnZhciBwa2kgPSBmb3JnZS5wa2kgPSBmb3JnZS5wa2kgfHwge307CnZhciBvaWRzID0gcGtpLm9pZHM7CgovLyBzaG9ydCBuYW1lIE9JRCBtYXBwaW5ncwp2YXIgX3Nob3J0TmFtZXMgPSB7fTsKX3Nob3J0TmFtZXNbJ0NOJ10gPSBvaWRzWydjb21tb25OYW1lJ107Cl9zaG9ydE5hbWVzWydjb21tb25OYW1lJ10gPSAnQ04nOwpfc2hvcnROYW1lc1snQyddID0gb2lkc1snY291bnRyeU5hbWUnXTsKX3Nob3J0TmFtZXNbJ2NvdW50cnlOYW1lJ10gPSAnQyc7Cl9zaG9ydE5hbWVzWydMJ10gPSBvaWRzWydsb2NhbGl0eU5hbWUnXTsKX3Nob3J0TmFtZXNbJ2xvY2FsaXR5TmFtZSddID0gJ0wnOwpfc2hvcnROYW1lc1snU1QnXSA9IG9pZHNbJ3N0YXRlT3JQcm92aW5jZU5hbWUnXTsKX3Nob3J0TmFtZXNbJ3N0YXRlT3JQcm92aW5jZU5hbWUnXSA9ICdTVCc7Cl9zaG9ydE5hbWVzWydPJ10gPSBvaWRzWydvcmdhbml6YXRpb25OYW1lJ107Cl9zaG9ydE5hbWVzWydvcmdhbml6YXRpb25OYW1lJ10gPSAnTyc7Cl9zaG9ydE5hbWVzWydPVSddID0gb2lkc1snb3JnYW5pemF0aW9uYWxVbml0TmFtZSddOwpfc2hvcnROYW1lc1snb3JnYW5pemF0aW9uYWxVbml0TmFtZSddID0gJ09VJzsKX3Nob3J0TmFtZXNbJ0UnXSA9IG9pZHNbJ2VtYWlsQWRkcmVzcyddOwpfc2hvcnROYW1lc1snZW1haWxBZGRyZXNzJ10gPSAnRSc7CgovLyB2YWxpZGF0b3IgZm9yIGFuIFN1YmplY3RQdWJsaWNLZXlJbmZvIHN0cnVjdHVyZQovLyBOb3RlOiBDdXJyZW50bHkgb25seSB3b3JrcyB3aXRoIGFuIFJTQSBwdWJsaWMga2V5CnZhciBwdWJsaWNLZXlWYWxpZGF0b3IgPSBmb3JnZS5wa2kucnNhLnB1YmxpY0tleVZhbGlkYXRvcjsKCi8vIHZhbGlkYXRvciBmb3IgYW4gWC41MDl2MyBjZXJ0aWZpY2F0ZQp2YXIgeDUwOUNlcnRpZmljYXRlVmFsaWRhdG9yID0gewogIG5hbWU6ICdDZXJ0aWZpY2F0ZScsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAndGJzQ2VydGlmaWNhdGUnLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS52ZXJzaW9uJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgICAgdHlwZTogMCwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUudmVyc2lvbi5pbnRlZ2VyJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICAgIGNhcHR1cmU6ICdjZXJ0VmVyc2lvbicKICAgICAgfV0KICAgIH0sIHsKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnNlcmlhbE51bWJlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2NlcnRTZXJpYWxOdW1iZXInCiAgICB9LCB7CiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS5zaWduYXR1cmUnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIHZhbHVlOiBbewogICAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS5zaWduYXR1cmUuYWxnb3JpdGhtJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRpbmZvU2lnbmF0dXJlT2lkJwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnNpZ25hdHVyZS5wYXJhbWV0ZXJzJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgICAgY2FwdHVyZUFzbjE6ICdjZXJ0aW5mb1NpZ25hdHVyZVBhcmFtcycKICAgICAgfV0KICAgIH0sIHsKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLmlzc3VlcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgY2FwdHVyZUFzbjE6ICdjZXJ0SXNzdWVyJwogICAgfSwgewogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUudmFsaWRpdHknLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIC8vIE5vdGU6IFVUQyBhbmQgZ2VuZXJhbGl6ZWQgdGltZXMgbWF5IGJvdGggYXBwZWFyIHNvIHRoZSBjYXB0dXJlCiAgICAgIC8vIG5hbWVzIGFyZSBiYXNlZCBvbiB0aGVpciBkZXRlY3RlZCBvcmRlciwgdGhlIG5hbWVzIHVzZWQgYmVsb3cKICAgICAgLy8gYXJlIG9ubHkgZm9yIHRoZSBjb21tb24gY2FzZSwgd2hpY2ggdmFsaWRpdHkgdGltZSByZWFsbHkgbWVhbnMKICAgICAgLy8gIm5vdEJlZm9yZSIgYW5kIHdoaWNoIG1lYW5zICJub3RBZnRlciIgd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IG9yZGVyCiAgICAgIHZhbHVlOiBbewogICAgICAgIC8vIG5vdEJlZm9yZSAoVGltZSkgKFVUQyB0aW1lIGNhc2UpCiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnZhbGlkaXR5Lm5vdEJlZm9yZSAodXRjKScsCiAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgIHR5cGU6IGFzbjEuVHlwZS5VVENUSU1FLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBvcHRpb25hbDogdHJ1ZSwKICAgICAgICBjYXB0dXJlOiAnY2VydFZhbGlkaXR5MVVUQ1RpbWUnCiAgICAgIH0sIHsKICAgICAgICAvLyBub3RCZWZvcmUgKFRpbWUpIChnZW5lcmFsaXplZCB0aW1lIGNhc2UpCiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnZhbGlkaXR5Lm5vdEJlZm9yZSAoZ2VuZXJhbGl6ZWQpJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLkdFTkVSQUxJWkVEVElNRSwKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRWYWxpZGl0eTJHZW5lcmFsaXplZFRpbWUnCiAgICAgIH0sIHsKICAgICAgICAvLyBub3RBZnRlciAoVGltZSkgKG9ubHkgVVRDIHRpbWUgaXMgc3VwcG9ydGVkKQogICAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS52YWxpZGl0eS5ub3RBZnRlciAodXRjKScsCiAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgIHR5cGU6IGFzbjEuVHlwZS5VVENUSU1FLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBvcHRpb25hbDogdHJ1ZSwKICAgICAgICBjYXB0dXJlOiAnY2VydFZhbGlkaXR5M1VUQ1RpbWUnCiAgICAgIH0sIHsKICAgICAgICAvLyBub3RBZnRlciAoVGltZSkgKG9ubHkgVVRDIHRpbWUgaXMgc3VwcG9ydGVkKQogICAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5UQlNDZXJ0aWZpY2F0ZS52YWxpZGl0eS5ub3RBZnRlciAoZ2VuZXJhbGl6ZWQpJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLkdFTkVSQUxJWkVEVElNRSwKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRWYWxpZGl0eTRHZW5lcmFsaXplZFRpbWUnCiAgICAgIH1dCiAgICB9LCB7CiAgICAgIC8vIE5hbWUgKHN1YmplY3QpIChSRE5TZXF1ZW5jZSkKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLnN1YmplY3QnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIGNhcHR1cmVBc24xOiAnY2VydFN1YmplY3QnCiAgICB9LAogICAgICAvLyBTdWJqZWN0UHVibGljS2V5SW5mbwogICAgICBwdWJsaWNLZXlWYWxpZGF0b3IsCiAgICB7CiAgICAgIC8vIGlzc3VlclVuaXF1ZUlEIChvcHRpb25hbCkKICAgICAgbmFtZTogJ0NlcnRpZmljYXRlLlRCU0NlcnRpZmljYXRlLmlzc3VlclVuaXF1ZUlEJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgICAgdHlwZTogMSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuaXNzdWVyVW5pcXVlSUQuaWQnLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuQklUU1RSSU5HLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAnY2VydElzc3VlclVuaXF1ZUlkJwogICAgICB9XQogICAgfSwgewogICAgICAvLyBzdWJqZWN0VW5pcXVlSUQgKG9wdGlvbmFsKQogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuc3ViamVjdFVuaXF1ZUlEJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgICAgdHlwZTogMiwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuc3ViamVjdFVuaXF1ZUlELmlkJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLkJJVFNUUklORywKICAgICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgICAgY2FwdHVyZTogJ2NlcnRTdWJqZWN0VW5pcXVlSWQnCiAgICAgIH1dCiAgICB9LCB7CiAgICAgIC8vIEV4dGVuc2lvbnMgKG9wdGlvbmFsKQogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuZXh0ZW5zaW9ucycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICAgIHR5cGU6IDMsCiAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2NlcnRFeHRlbnNpb25zJywKICAgICAgb3B0aW9uYWw6IHRydWUKICAgIH1dCiAgfSwgewogICAgLy8gQWxnb3JpdGhtSWRlbnRpZmllciAoc2lnbmF0dXJlIGFsZ29yaXRobSkKICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5zaWduYXR1cmVBbGdvcml0aG0nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICB2YWx1ZTogW3sKICAgICAgLy8gYWxnb3JpdGhtCiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0ZS5zaWduYXR1cmVBbGdvcml0aG0uYWxnb3JpdGhtJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdjZXJ0U2lnbmF0dXJlT2lkJwogICAgfSwgewogICAgICBuYW1lOiAnQ2VydGlmaWNhdGUuVEJTQ2VydGlmaWNhdGUuc2lnbmF0dXJlLnBhcmFtZXRlcnMnLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICBjYXB0dXJlQXNuMTogJ2NlcnRTaWduYXR1cmVQYXJhbXMnCiAgICB9XQogIH0sIHsKICAgIC8vIFNpZ25hdHVyZVZhbHVlCiAgICBuYW1lOiAnQ2VydGlmaWNhdGUuc2lnbmF0dXJlVmFsdWUnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLkJJVFNUUklORywKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdjZXJ0U2lnbmF0dXJlJwogIH1dCn07Cgp2YXIgcnNhc3NhUHNzUGFyYW1ldGVyVmFsaWRhdG9yID0gewogIG5hbWU6ICdyc2Fwc3MnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAncnNhcHNzLmhhc2hBbGdvcml0aG0nLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDAsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAncnNhcHNzLmhhc2hBbGdvcml0aG0uQWxnb3JpdGhtSWRlbnRpZmllcicsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5DbGFzcy5TRVFVRU5DRSwKICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgIG9wdGlvbmFsOiB0cnVlLAogICAgICB2YWx1ZTogW3sKICAgICAgICBuYW1lOiAncnNhcHNzLmhhc2hBbGdvcml0aG0uQWxnb3JpdGhtSWRlbnRpZmllci5hbGdvcml0aG0nLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAnaGFzaE9pZCcKICAgICAgICAvKiBwYXJhbWV0ZXIgYmxvY2sgb21pdHRlZCwgZm9yIFNIQTEgTlVMTCBhbnlob3cuICovCiAgICAgIH1dCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdyc2Fwc3MubWFza0dlbkFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdyc2Fwc3MubWFza0dlbkFsZ29yaXRobS5BbGdvcml0aG1JZGVudGlmaWVyJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLkNsYXNzLlNFUVVFTkNFLAogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgIHZhbHVlOiBbewogICAgICAgIG5hbWU6ICdyc2Fwc3MubWFza0dlbkFsZ29yaXRobS5BbGdvcml0aG1JZGVudGlmaWVyLmFsZ29yaXRobScsCiAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICAgIGNhcHR1cmU6ICdtYXNrR2VuT2lkJwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ3JzYXBzcy5tYXNrR2VuQWxnb3JpdGhtLkFsZ29yaXRobUlkZW50aWZpZXIucGFyYW1zJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgICAgIHZhbHVlOiBbewogICAgICAgICAgbmFtZTogJ3JzYXBzcy5tYXNrR2VuQWxnb3JpdGhtLkFsZ29yaXRobUlkZW50aWZpZXIucGFyYW1zLmFsZ29yaXRobScsCiAgICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICAgICAgY2FwdHVyZTogJ21hc2tHZW5IYXNoT2lkJwogICAgICAgICAgLyogcGFyYW1ldGVyIGJsb2NrIG9taXR0ZWQsIGZvciBTSEExIE5VTEwgYW55aG93LiAqLwogICAgICAgIH1dCiAgICAgIH1dCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdyc2Fwc3Muc2FsdExlbmd0aCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLAogICAgdHlwZTogMiwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdyc2Fwc3Muc2FsdExlbmd0aC5zYWx0TGVuZ3RoJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICB0eXBlOiBhc24xLkNsYXNzLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ3NhbHRMZW5ndGgnCiAgICB9XQogIH0sIHsKICAgIG5hbWU6ICdyc2Fwc3MudHJhaWxlckZpZWxkJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICB0eXBlOiAzLAogICAgb3B0aW9uYWw6IHRydWUsCiAgICB2YWx1ZTogW3sKICAgICAgbmFtZTogJ3JzYXBzcy50cmFpbGVyLnRyYWlsZXInLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuQ2xhc3MuSU5URUdFUiwKICAgICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgICBjYXB0dXJlOiAndHJhaWxlcicKICAgIH1dCiAgfV0KfTsKCi8vIHZhbGlkYXRvciBmb3IgYSBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8gc3RydWN0dXJlCnZhciBjZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm9WYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICBjYXB0dXJlQXNuMTogJ2NlcnRpZmljYXRpb25SZXF1ZXN0SW5mbycsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLmludGVnZXInLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICBjYXB0dXJlOiAnY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvVmVyc2lvbicKICB9LCB7CiAgICAvLyBOYW1lIChzdWJqZWN0KSAoUkROU2VxdWVuY2UpCiAgICBuYW1lOiAnQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLnN1YmplY3QnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBjYXB0dXJlQXNuMTogJ2NlcnRpZmljYXRpb25SZXF1ZXN0SW5mb1N1YmplY3QnCiAgfSwKICAvLyBTdWJqZWN0UHVibGljS2V5SW5mbwogIHB1YmxpY0tleVZhbGlkYXRvciwKICB7CiAgICBuYW1lOiAnQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLmF0dHJpYnV0ZXMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywKICAgIHR5cGU6IDAsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIG9wdGlvbmFsOiB0cnVlLAogICAgY2FwdHVyZTogJ2NlcnRpZmljYXRpb25SZXF1ZXN0SW5mb0F0dHJpYnV0ZXMnLAogICAgdmFsdWU6IFt7CiAgICAgIG5hbWU6ICdDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8uYXR0cmlidXRlcycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgdmFsdWU6IFt7CiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0SW5mby5hdHRyaWJ1dGVzLnR5cGUnLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0SW5mby5hdHRyaWJ1dGVzLnZhbHVlJywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLlNFVCwKICAgICAgICBjb25zdHJ1Y3RlZDogdHJ1ZQogICAgICB9XQogICAgfV0KICB9XQp9OwoKLy8gdmFsaWRhdG9yIGZvciBhIENlcnRpZmljYXRpb25SZXF1ZXN0IHN0cnVjdHVyZQp2YXIgY2VydGlmaWNhdGlvblJlcXVlc3RWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0JywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIGNhcHR1cmVBc24xOiAnY3NyJywKICB2YWx1ZTogWwogICAgY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvVmFsaWRhdG9yLCB7CiAgICAvLyBBbGdvcml0aG1JZGVudGlmaWVyIChzaWduYXR1cmUgYWxnb3JpdGhtKQogICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZUFsZ29yaXRobScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIHZhbHVlOiBbewogICAgICAvLyBhbGdvcml0aG0KICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZUFsZ29yaXRobS5hbGdvcml0aG0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuVHlwZS5PSUQsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2NzclNpZ25hdHVyZU9pZCcKICAgIH0sIHsKICAgICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZUFsZ29yaXRobS5wYXJhbWV0ZXJzJywKICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICBvcHRpb25hbDogdHJ1ZSwKICAgICAgY2FwdHVyZUFzbjE6ICdjc3JTaWduYXR1cmVQYXJhbXMnCiAgICB9XQogIH0sIHsKICAgIC8vIHNpZ25hdHVyZQogICAgbmFtZTogJ0NlcnRpZmljYXRpb25SZXF1ZXN0LnNpZ25hdHVyZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuQklUU1RSSU5HLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2NzclNpZ25hdHVyZScKICB9XQp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJETlNlcXVlbmNlIG9mIEFTTi4xIERFUi1lbmNvZGVkIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKICogc2V0cyBpbnRvIGFuIGFycmF5IHdpdGggb2JqZWN0cyB0aGF0IGhhdmUgdHlwZSBhbmQgdmFsdWUgcHJvcGVydGllcy4KICoKICogQHBhcmFtIHJkbiB0aGUgUkROU2VxdWVuY2UgdG8gY29udmVydC4KICogQHBhcmFtIG1kIGEgbWVzc2FnZSBkaWdlc3QgdG8gYXBwZW5kIHR5cGUgYW5kIHZhbHVlIHRvIGlmIHByb3ZpZGVkLgogKi8KcGtpLlJETkF0dHJpYnV0ZXNBc0FycmF5ID0gZnVuY3Rpb24ocmRuLCBtZCkgewogIHZhciBydmFsID0gW107CgogIC8vIGVhY2ggdmFsdWUgaW4gJ3JkbicgaW4gaXMgYSBTRVQgb2YgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZQogIHZhciBzZXQsIGF0dHIsIG9iajsKICBmb3IodmFyIHNpID0gMDsgc2kgPCByZG4udmFsdWUubGVuZ3RoOyArK3NpKSB7CiAgICAvLyBnZXQgdGhlIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgc2V0CiAgICBzZXQgPSByZG4udmFsdWVbc2ldOwoKICAgIC8vIGVhY2ggdmFsdWUgaW4gdGhlIFNFVCBpcyBhbiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgc2VxdWVuY2UKICAgIC8vIGNvbnRhaW5pbmcgZmlyc3QgYSB0eXBlIChhbiBPSUQpIGFuZCBzZWNvbmQgYSB2YWx1ZSAoZGVmaW5lZCBieQogICAgLy8gdGhlIE9JRCkKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzZXQudmFsdWUubGVuZ3RoOyArK2kpIHsKICAgICAgb2JqID0ge307CiAgICAgIGF0dHIgPSBzZXQudmFsdWVbaV07CiAgICAgIG9iai50eXBlID0gYXNuMS5kZXJUb09pZChhdHRyLnZhbHVlWzBdLnZhbHVlKTsKICAgICAgb2JqLnZhbHVlID0gYXR0ci52YWx1ZVsxXS52YWx1ZTsKICAgICAgb2JqLnZhbHVlVGFnQ2xhc3MgPSBhdHRyLnZhbHVlWzFdLnR5cGU7CiAgICAgIC8vIGlmIHRoZSBPSUQgaXMga25vd24sIGdldCBpdHMgbmFtZSBhbmQgc2hvcnQgbmFtZQogICAgICBpZihvYmoudHlwZSBpbiBvaWRzKSB7CiAgICAgICAgb2JqLm5hbWUgPSBvaWRzW29iai50eXBlXTsKICAgICAgICBpZihvYmoubmFtZSBpbiBfc2hvcnROYW1lcykgewogICAgICAgICAgb2JqLnNob3J0TmFtZSA9IF9zaG9ydE5hbWVzW29iai5uYW1lXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYobWQpIHsKICAgICAgICBtZC51cGRhdGUob2JqLnR5cGUpOwogICAgICAgIG1kLnVwZGF0ZShvYmoudmFsdWUpOwogICAgICB9CiAgICAgIHJ2YWwucHVzaChvYmopOwogICAgfQogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgQVNOLjEgQ1JJQXR0cmlidXRlcyBpbnRvIGFuIGFycmF5IHdpdGggb2JqZWN0cyB0aGF0IGhhdmUgdHlwZSBhbmQKICogdmFsdWUgcHJvcGVydGllcy4KICoKICogQHBhcmFtIGF0dHJpYnV0ZXMgdGhlIENSSUF0dHJpYnV0ZXMgdG8gY29udmVydC4KICovCnBraS5DUklBdHRyaWJ1dGVzQXNBcnJheSA9IGZ1bmN0aW9uKGF0dHJpYnV0ZXMpIHsKICB2YXIgcnZhbCA9IFtdOwoKICAvLyBlYWNoIHZhbHVlIGluICdhdHRyaWJ1dGVzJyBpbiBpcyBhIFNFUVVFTkNFIHdpdGggYW4gT0lEIGFuZCBhIFNFVAogIGZvcih2YXIgc2kgPSAwOyBzaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyArK3NpKSB7CiAgICAvLyBnZXQgdGhlIGF0dHJpYnV0ZSBzZXF1ZW5jZQogICAgdmFyIHNlcSA9IGF0dHJpYnV0ZXNbc2ldOwoKICAgIC8vIGVhY2ggdmFsdWUgaW4gdGhlIFNFUVVFTkNFIGNvbnRhaW5pbmcgZmlyc3QgYSB0eXBlIChhbiBPSUQpIGFuZAogICAgLy8gc2Vjb25kIGEgc2V0IG9mIHZhbHVlcyAoZGVmaW5lZCBieSB0aGUgT0lEKQogICAgdmFyIHR5cGUgPSBhc24xLmRlclRvT2lkKHNlcS52YWx1ZVswXS52YWx1ZSk7CiAgICB2YXIgdmFsdWVzID0gc2VxLnZhbHVlWzFdLnZhbHVlOwogICAgZm9yKHZhciB2aSA9IDA7IHZpIDwgdmFsdWVzLmxlbmd0aDsgKyt2aSkgewogICAgICB2YXIgb2JqID0ge307CiAgICAgIG9iai50eXBlID0gdHlwZTsKICAgICAgb2JqLnZhbHVlID0gdmFsdWVzW3ZpXS52YWx1ZTsKICAgICAgb2JqLnZhbHVlVGFnQ2xhc3MgPSB2YWx1ZXNbdmldLnR5cGU7CiAgICAgIC8vIGlmIHRoZSBPSUQgaXMga25vd24sIGdldCBpdHMgbmFtZSBhbmQgc2hvcnQgbmFtZQogICAgICBpZihvYmoudHlwZSBpbiBvaWRzKSB7CiAgICAgICAgb2JqLm5hbWUgPSBvaWRzW29iai50eXBlXTsKICAgICAgICBpZihvYmoubmFtZSBpbiBfc2hvcnROYW1lcykgewogICAgICAgICAgb2JqLnNob3J0TmFtZSA9IF9zaG9ydE5hbWVzW29iai5uYW1lXTsKICAgICAgICB9CiAgICAgIH0KICAgICAgLy8gcGFyc2UgZXh0ZW5zaW9ucwogICAgICBpZihvYmoudHlwZSA9PT0gb2lkcy5leHRlbnNpb25SZXF1ZXN0KSB7CiAgICAgICAgb2JqLmV4dGVuc2lvbnMgPSBbXTsKICAgICAgICBmb3IodmFyIGVpID0gMDsgZWkgPCBvYmoudmFsdWUubGVuZ3RoOyArK2VpKSB7CiAgICAgICAgICBvYmouZXh0ZW5zaW9ucy5wdXNoKHBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvbkZyb21Bc24xKG9iai52YWx1ZVtlaV0pKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcnZhbC5wdXNoKG9iaik7CiAgICB9CiAgfQoKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIGFuIGlzc3VlciBvciBzdWJqZWN0IGF0dHJpYnV0ZSBmcm9tIGl0cyBuYW1lLCB0eXBlLCBvciBzaG9ydCBuYW1lLgogKgogKiBAcGFyYW0gb2JqIHRoZSBpc3N1ZXIgb3Igc3ViamVjdCBvYmplY3QuCiAqIEBwYXJhbSBvcHRpb25zIGEgc2hvcnQgbmFtZSBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGg6CiAqICAgICAgICAgIHNob3J0TmFtZSB0aGUgc2hvcnQgbmFtZSBmb3IgdGhlIGF0dHJpYnV0ZS4KICogICAgICAgICAgbmFtZSB0aGUgbmFtZSBmb3IgdGhlIGF0dHJpYnV0ZS4KICogICAgICAgICAgdHlwZSB0aGUgdHlwZSBmb3IgdGhlIGF0dHJpYnV0ZS4KICoKICogQHJldHVybiB0aGUgYXR0cmlidXRlLgogKi8KZnVuY3Rpb24gX2dldEF0dHJpYnV0ZShvYmosIG9wdGlvbnMpIHsKICBpZih0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHsKICAgIG9wdGlvbnMgPSB7c2hvcnROYW1lOiBvcHRpb25zfTsKICB9CgogIHZhciBydmFsID0gbnVsbDsKICB2YXIgYXR0cjsKICBmb3IodmFyIGkgPSAwOyBydmFsID09PSBudWxsICYmIGkgPCBvYmouYXR0cmlidXRlcy5sZW5ndGg7ICsraSkgewogICAgYXR0ciA9IG9iai5hdHRyaWJ1dGVzW2ldOwogICAgaWYob3B0aW9ucy50eXBlICYmIG9wdGlvbnMudHlwZSA9PT0gYXR0ci50eXBlKSB7CiAgICAgIHJ2YWwgPSBhdHRyOwogICAgfSBlbHNlIGlmKG9wdGlvbnMubmFtZSAmJiBvcHRpb25zLm5hbWUgPT09IGF0dHIubmFtZSkgewogICAgICBydmFsID0gYXR0cjsKICAgIH0gZWxzZSBpZihvcHRpb25zLnNob3J0TmFtZSAmJiBvcHRpb25zLnNob3J0TmFtZSA9PT0gYXR0ci5zaG9ydE5hbWUpIHsKICAgICAgcnZhbCA9IGF0dHI7CiAgICB9CiAgfQogIHJldHVybiBydmFsOwp9CgovKioKICogQ29udmVydHMgc2lnbmF0dXJlIHBhcmFtZXRlcnMgZnJvbSBBU04uMSBzdHJ1Y3R1cmUuCiAqCiAqIEN1cnJlbnRseSBvbmx5IFJTQVNTQS1QU1Mgc3VwcG9ydGVkLiAgVGhlIFBLQ1MjMSB2MS41IHNpZ25hdHVyZSBzY2hlbWUgaGFkCiAqIG5vIHBhcmFtZXRlcnMuCiAqCiAqIFJTQVNTQS1QU1MtcGFyYW1zICA6Oj0gIFNFUVVFTkNFICB7CiAqICAgaGFzaEFsZ29yaXRobSAgICAgIFswXSBIYXNoQWxnb3JpdGhtIERFRkFVTFQKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYTFJZGVudGlmaWVyLAogKiAgIG1hc2tHZW5BbGdvcml0aG0gICBbMV0gTWFza0dlbkFsZ29yaXRobSBERUZBVUxUCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ2YxU0hBMUlkZW50aWZpZXIsCiAqICAgc2FsdExlbmd0aCAgICAgICAgIFsyXSBJTlRFR0VSIERFRkFVTFQgMjAsCiAqICAgdHJhaWxlckZpZWxkICAgICAgIFszXSBJTlRFR0VSIERFRkFVTFQgMQogKiB9CiAqCiAqIEhhc2hBbGdvcml0aG0gIDo6PSAgQWxnb3JpdGhtSWRlbnRpZmllcgogKgogKiBNYXNrR2VuQWxnb3JpdGhtICA6Oj0gIEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogQWxnb3JpdGhtSWRlbnRpZmVyIDo6PSBTRVFVRU5DRSB7CiAqICAgYWxnb3JpdGhtIE9CSkVDVCBJREVOVElGSUVSLAogKiAgIHBhcmFtZXRlcnMgQU5ZIERFRklORUQgQlkgYWxnb3JpdGhtIE9QVElPTkFMCiAqIH0KICoKICogQHBhcmFtIG9pZCBUaGUgT0lEIHNwZWNpZnlpbmcgdGhlIHNpZ25hdHVyZSBhbGdvcml0aG0KICogQHBhcmFtIG9iaiBUaGUgQVNOLjEgc3RydWN0dXJlIGhvbGRpbmcgdGhlIHBhcmFtZXRlcnMKICogQHBhcmFtIGZpbGxEZWZhdWx0cyBXaGV0aGVyIHRvIHVzZSByZXR1cm4gZGVmYXVsdCB2YWx1ZXMgd2hlcmUgb21pdHRlZAogKiBAcmV0dXJuIHNpZ25hdHVyZSBwYXJhbWV0ZXIgb2JqZWN0CiAqLwp2YXIgX3JlYWRTaWduYXR1cmVQYXJhbWV0ZXJzID0gZnVuY3Rpb24ob2lkLCBvYmosIGZpbGxEZWZhdWx0cykgewogIHZhciBwYXJhbXMgPSB7fTsKCiAgaWYob2lkICE9PSBvaWRzWydSU0FTU0EtUFNTJ10pIHsKICAgIHJldHVybiBwYXJhbXM7CiAgfQoKICBpZihmaWxsRGVmYXVsdHMpIHsKICAgIHBhcmFtcyA9IHsKICAgICAgaGFzaDogewogICAgICAgIGFsZ29yaXRobU9pZDogb2lkc1snc2hhMSddCiAgICAgIH0sCiAgICAgIG1nZjogewogICAgICAgIGFsZ29yaXRobU9pZDogb2lkc1snbWdmMSddLAogICAgICAgIGhhc2g6IHsKICAgICAgICAgIGFsZ29yaXRobU9pZDogb2lkc1snc2hhMSddCiAgICAgICAgfQogICAgICB9LAogICAgICBzYWx0TGVuZ3RoOiAyMAogICAgfTsKICB9CgogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcnNhc3NhUHNzUGFyYW1ldGVyVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFJTQVNTQS1QU1MgcGFyYW1ldGVyIGJsb2NrLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICBpZihjYXB0dXJlLmhhc2hPaWQgIT09IHVuZGVmaW5lZCkgewogICAgcGFyYW1zLmhhc2ggPSBwYXJhbXMuaGFzaCB8fCB7fTsKICAgIHBhcmFtcy5oYXNoLmFsZ29yaXRobU9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5oYXNoT2lkKTsKICB9CgogIGlmKGNhcHR1cmUubWFza0dlbk9pZCAhPT0gdW5kZWZpbmVkKSB7CiAgICBwYXJhbXMubWdmID0gcGFyYW1zLm1nZiB8fCB7fTsKICAgIHBhcmFtcy5tZ2YuYWxnb3JpdGhtT2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLm1hc2tHZW5PaWQpOwogICAgcGFyYW1zLm1nZi5oYXNoID0gcGFyYW1zLm1nZi5oYXNoIHx8IHt9OwogICAgcGFyYW1zLm1nZi5oYXNoLmFsZ29yaXRobU9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5tYXNrR2VuSGFzaE9pZCk7CiAgfQoKICBpZihjYXB0dXJlLnNhbHRMZW5ndGggIT09IHVuZGVmaW5lZCkgewogICAgcGFyYW1zLnNhbHRMZW5ndGggPSBjYXB0dXJlLnNhbHRMZW5ndGguY2hhckNvZGVBdCgwKTsKICB9CgogIHJldHVybiBwYXJhbXM7Cn07CgovKioKICogQ29udmVydHMgYW4gWC41MDkgY2VydGlmaWNhdGUgZnJvbSBQRU0gZm9ybWF0LgogKgogKiBOb3RlOiBJZiB0aGUgY2VydGlmaWNhdGUgaXMgdG8gYmUgdmVyaWZpZWQgdGhlbiBjb21wdXRlIGhhc2ggc2hvdWxkCiAqIGJlIHNldCB0byB0cnVlLiBUaGlzIHdpbGwgc2NhbiB0aGUgVEJTQ2VydGlmaWNhdGUgcGFydCBvZiB0aGUgQVNOLjEKICogb2JqZWN0IHdoaWxlIGl0IGlzIGNvbnZlcnRlZCBzbyBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY29udmVydGVkIGJhY2sKICogdG8gQVNOLjEtREVSLWVuY29kaW5nIGxhdGVyLgogKgogKiBAcGFyYW0gcGVtIHRoZSBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlLgogKiBAcGFyYW0gY29tcHV0ZUhhc2ggdHJ1ZSB0byBjb21wdXRlIHRoZSBoYXNoIGZvciB2ZXJpZmljYXRpb24uCiAqIEBwYXJhbSBzdHJpY3QgdHJ1ZSB0byBiZSBzdHJpY3Qgd2hlbiBjaGVja2luZyBBU04uMSB2YWx1ZSBsZW5ndGhzLCBmYWxzZSB0bwogKiAgICAgICAgICBhbGxvdyB0cnVuY2F0ZWQgdmFsdWVzIChkZWZhdWx0OiB0cnVlKS4KICoKICogQHJldHVybiB0aGUgY2VydGlmaWNhdGUuCiAqLwpwa2kuY2VydGlmaWNhdGVGcm9tUGVtID0gZnVuY3Rpb24ocGVtLCBjb21wdXRlSGFzaCwgc3RyaWN0KSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdDRVJUSUZJQ0FURScgJiYKICAgIG1zZy50eXBlICE9PSAnWDUwOSBDRVJUSUZJQ0FURScgJiYKICAgIG1zZy50eXBlICE9PSAnVFJVU1RFRCBDRVJUSUZJQ0FURScpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgY2VydGlmaWNhdGUgZnJvbSBQRU07IFBFTSBoZWFkZXIgdHlwZSAnICsKICAgICAgJ2lzIG5vdCAiQ0VSVElGSUNBVEUiLCAiWDUwOSBDRVJUSUZJQ0FURSIsIG9yICJUUlVTVEVEIENFUlRJRklDQVRFIi4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlIGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLicpOwogIH0KCiAgLy8gY29udmVydCBERVIgdG8gQVNOLjEgb2JqZWN0CiAgdmFyIG9iaiA9IGFzbjEuZnJvbURlcihtc2cuYm9keSwgc3RyaWN0KTsKCiAgcmV0dXJuIHBraS5jZXJ0aWZpY2F0ZUZyb21Bc24xKG9iaiwgY29tcHV0ZUhhc2gpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFguNTA5IGNlcnRpZmljYXRlIHRvIFBFTSBmb3JtYXQuCiAqCiAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZS4KICogQHBhcmFtIG1heGxpbmUgdGhlIG1heGltdW0gY2hhcmFjdGVycyBwZXIgbGluZSwgZGVmYXVsdHMgdG8gNjQuCiAqCiAqIEByZXR1cm4gdGhlIFBFTS1mb3JtYXR0ZWQgY2VydGlmaWNhdGUuCiAqLwpwa2kuY2VydGlmaWNhdGVUb1BlbSA9IGZ1bmN0aW9uKGNlcnQsIG1heGxpbmUpIHsKICAvLyBjb252ZXJ0IHRvIEFTTi4xLCB0aGVuIERFUiwgdGhlbiBQRU0tZW5jb2RlCiAgdmFyIG1zZyA9IHsKICAgIHR5cGU6ICdDRVJUSUZJQ0FURScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5jZXJ0aWZpY2F0ZVRvQXNuMShjZXJ0KSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJTQSBwdWJsaWMga2V5IGZyb20gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIHBlbSB0aGUgUEVNLWZvcm1hdHRlZCBwdWJsaWMga2V5LgogKgogKiBAcmV0dXJuIHRoZSBwdWJsaWMga2V5LgogKi8KcGtpLnB1YmxpY0tleUZyb21QZW0gPSBmdW5jdGlvbihwZW0pIHsKICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShwZW0pWzBdOwoKICBpZihtc2cudHlwZSAhPT0gJ1BVQkxJQyBLRVknICYmIG1zZy50eXBlICE9PSAnUlNBIFBVQkxJQyBLRVknKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IHB1YmxpYyBrZXkgZnJvbSBQRU07IFBFTSBoZWFkZXIgJyArCiAgICAgICd0eXBlIGlzIG5vdCAiUFVCTElDIEtFWSIgb3IgIlJTQSBQVUJMSUMgS0VZIi4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IHB1YmxpYyBrZXkgZnJvbSBQRU07IFBFTSBpcyBlbmNyeXB0ZWQuJyk7CiAgfQoKICAvLyBjb252ZXJ0IERFUiB0byBBU04uMSBvYmplY3QKICB2YXIgb2JqID0gYXNuMS5mcm9tRGVyKG1zZy5ib2R5KTsKCiAgcmV0dXJuIHBraS5wdWJsaWNLZXlGcm9tQXNuMShvYmopOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJTQSBwdWJsaWMga2V5IHRvIFBFTSBmb3JtYXQgKHVzaW5nIGEgU3ViamVjdFB1YmxpY0tleUluZm8pLgogKgogKiBAcGFyYW0ga2V5IHRoZSBwdWJsaWMga2V5LgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBwdWJsaWMga2V5LgogKi8KcGtpLnB1YmxpY0tleVRvUGVtID0gZnVuY3Rpb24oa2V5LCBtYXhsaW5lKSB7CiAgLy8gY29udmVydCB0byBBU04uMSwgdGhlbiBERVIsIHRoZW4gUEVNLWVuY29kZQogIHZhciBtc2cgPSB7CiAgICB0eXBlOiAnUFVCTElDIEtFWScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5wdWJsaWNLZXlUb0FzbjEoa2V5KSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFJTQSBwdWJsaWMga2V5IHRvIFBFTSBmb3JtYXQgKHVzaW5nIGFuIFJTQVB1YmxpY0tleSkuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHB1YmxpYyBrZXkuCiAqIEBwYXJhbSBtYXhsaW5lIHRoZSBtYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUsIGRlZmF1bHRzIHRvIDY0LgogKgogKiBAcmV0dXJuIHRoZSBQRU0tZm9ybWF0dGVkIHB1YmxpYyBrZXkuCiAqLwpwa2kucHVibGljS2V5VG9SU0FQdWJsaWNLZXlQZW0gPSBmdW5jdGlvbihrZXksIG1heGxpbmUpIHsKICAvLyBjb252ZXJ0IHRvIEFTTi4xLCB0aGVuIERFUiwgdGhlbiBQRU0tZW5jb2RlCiAgdmFyIG1zZyA9IHsKICAgIHR5cGU6ICdSU0EgUFVCTElDIEtFWScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5wdWJsaWNLZXlUb1JTQVB1YmxpY0tleShrZXkpKS5nZXRCeXRlcygpCiAgfTsKICByZXR1cm4gZm9yZ2UucGVtLmVuY29kZShtc2csIHttYXhsaW5lOiBtYXhsaW5lfSk7Cn07CgovKioKICogR2V0cyBhIGZpbmdlcnByaW50IGZvciB0aGUgZ2l2ZW4gcHVibGljIGtleS4KICoKICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgdG8gdXNlLgogKiAgICAgICAgICBbbWRdIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIChkZWZhdWx0cyB0byBmb3JnZS5tZC5zaGExKS4KICogICAgICAgICAgW3R5cGVdIHRoZSB0eXBlIG9mIGZpbmdlcnByaW50LCBzdWNoIGFzICdSU0FQdWJsaWNLZXknLAogKiAgICAgICAgICAgICdTdWJqZWN0UHVibGljS2V5SW5mbycgKGRlZmF1bHRzIHRvICdSU0FQdWJsaWNLZXknKS4KICogICAgICAgICAgW2VuY29kaW5nXSBhbiBhbHRlcm5hdGl2ZSBvdXRwdXQgZW5jb2RpbmcsIHN1Y2ggYXMgJ2hleCcKICogICAgICAgICAgICAoZGVmYXVsdHMgdG8gbm9uZSwgb3V0cHV0cyBhIGJ5dGUgYnVmZmVyKS4KICogICAgICAgICAgW2RlbGltaXRlcl0gdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBieXRlcyBmb3IgJ2hleCcgZW5jb2RlZAogKiAgICAgICAgICAgIG91dHB1dCwgZWc6ICc6JyAoZGVmYXVsdHMgdG8gbm9uZSkuCiAqCiAqIEByZXR1cm4gdGhlIGZpbmdlcnByaW50IGFzIGEgYnl0ZSBidWZmZXIgb3Igb3RoZXIgZW5jb2RpbmcgYmFzZWQgb24gb3B0aW9ucy4KICovCnBraS5nZXRQdWJsaWNLZXlGaW5nZXJwcmludCA9IGZ1bmN0aW9uKGtleSwgb3B0aW9ucykgewogIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogIHZhciBtZCA9IG9wdGlvbnMubWQgfHwgZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnUlNBUHVibGljS2V5JzsKCiAgdmFyIGJ5dGVzOwogIHN3aXRjaCh0eXBlKSB7CiAgY2FzZSAnUlNBUHVibGljS2V5JzoKICAgIGJ5dGVzID0gYXNuMS50b0Rlcihwa2kucHVibGljS2V5VG9SU0FQdWJsaWNLZXkoa2V5KSkuZ2V0Qnl0ZXMoKTsKICAgIGJyZWFrOwogIGNhc2UgJ1N1YmplY3RQdWJsaWNLZXlJbmZvJzoKICAgIGJ5dGVzID0gYXNuMS50b0Rlcihwa2kucHVibGljS2V5VG9Bc24xKGtleSkpLmdldEJ5dGVzKCk7CiAgICBicmVhazsKICBkZWZhdWx0OgogICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGZpbmdlcnByaW50IHR5cGUgIicgKyBvcHRpb25zLnR5cGUgKyAnIi4nKTsKICB9CgogIC8vIGhhc2ggcHVibGljIGtleSBieXRlcwogIG1kLnN0YXJ0KCk7CiAgbWQudXBkYXRlKGJ5dGVzKTsKICB2YXIgZGlnZXN0ID0gbWQuZGlnZXN0KCk7CiAgaWYob3B0aW9ucy5lbmNvZGluZyA9PT0gJ2hleCcpIHsKICAgIHZhciBoZXggPSBkaWdlc3QudG9IZXgoKTsKICAgIGlmKG9wdGlvbnMuZGVsaW1pdGVyKSB7CiAgICAgIHJldHVybiBoZXgubWF0Y2goLy57Mn0vZykuam9pbihvcHRpb25zLmRlbGltaXRlcik7CiAgICB9CiAgICByZXR1cm4gaGV4OwogIH0gZWxzZSBpZihvcHRpb25zLmVuY29kaW5nID09PSAnYmluYXJ5JykgewogICAgcmV0dXJuIGRpZ2VzdC5nZXRCeXRlcygpOwogIH0gZWxzZSBpZihvcHRpb25zLmVuY29kaW5nKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2RpbmcgIicgKyBvcHRpb25zLmVuY29kaW5nICsgJyIuJyk7CiAgfQogIHJldHVybiBkaWdlc3Q7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzEwIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKSBmcm9tIFBFTSBmb3JtYXQuCiAqCiAqIE5vdGU6IElmIHRoZSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgaXMgdG8gYmUgdmVyaWZpZWQgdGhlbiBjb21wdXRlIGhhc2gKICogc2hvdWxkIGJlIHNldCB0byB0cnVlLiBUaGlzIHdpbGwgc2NhbiB0aGUgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHBhcnQgb2YKICogdGhlIEFTTi4xIG9iamVjdCB3aGlsZSBpdCBpcyBjb252ZXJ0ZWQgc28gaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNvbnZlcnRlZAogKiBiYWNrIHRvIEFTTi4xLURFUi1lbmNvZGluZyBsYXRlci4KICoKICogQHBhcmFtIHBlbSB0aGUgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZS4KICogQHBhcmFtIGNvbXB1dGVIYXNoIHRydWUgdG8gY29tcHV0ZSB0aGUgaGFzaCBmb3IgdmVyaWZpY2F0aW9uLgogKiBAcGFyYW0gc3RyaWN0IHRydWUgdG8gYmUgc3RyaWN0IHdoZW4gY2hlY2tpbmcgQVNOLjEgdmFsdWUgbGVuZ3RocywgZmFsc2UgdG8KICogICAgICAgICAgYWxsb3cgdHJ1bmNhdGVkIHZhbHVlcyAoZGVmYXVsdDogdHJ1ZSkuCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKS4KICovCnBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdEZyb21QZW0gPSBmdW5jdGlvbihwZW0sIGNvbXB1dGVIYXNoLCBzdHJpY3QpIHsKICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShwZW0pWzBdOwoKICBpZihtc2cudHlwZSAhPT0gJ0NFUlRJRklDQVRFIFJFUVVFU1QnKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRpb24gcmVxdWVzdCBmcm9tIFBFTTsgJyArCiAgICAgICdQRU0gaGVhZGVyIHR5cGUgaXMgbm90ICJDRVJUSUZJQ0FURSBSRVFVRVNUIi4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRpb24gcmVxdWVzdCBmcm9tIFBFTTsgJyArCiAgICAgICdQRU0gaXMgZW5jcnlwdGVkLicpOwogIH0KCiAgLy8gY29udmVydCBERVIgdG8gQVNOLjEgb2JqZWN0CiAgdmFyIG9iaiA9IGFzbjEuZnJvbURlcihtc2cuYm9keSwgc3RyaWN0KTsKCiAgcmV0dXJuIHBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdEZyb21Bc24xKG9iaiwgY29tcHV0ZUhhc2gpOwp9OwoKLyoqCiAqIENvbnZlcnRzIGEgUEtDUyMxMCBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgKENTUikgdG8gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIGNzciB0aGUgY2VydGlmaWNhdGlvbiByZXF1ZXN0LgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAqLwpwa2kuY2VydGlmaWNhdGlvblJlcXVlc3RUb1BlbSA9IGZ1bmN0aW9uKGNzciwgbWF4bGluZSkgewogIC8vIGNvbnZlcnQgdG8gQVNOLjEsIHRoZW4gREVSLCB0aGVuIFBFTS1lbmNvZGUKICB2YXIgbXNnID0gewogICAgdHlwZTogJ0NFUlRJRklDQVRFIFJFUVVFU1QnLAogICAgYm9keTogYXNuMS50b0Rlcihwa2kuY2VydGlmaWNhdGlvblJlcXVlc3RUb0FzbjEoY3NyKSkuZ2V0Qnl0ZXMoKQogIH07CiAgcmV0dXJuIGZvcmdlLnBlbS5lbmNvZGUobXNnLCB7bWF4bGluZTogbWF4bGluZX0pOwp9OwoKLyoqCiAqIENyZWF0ZXMgYW4gZW1wdHkgWC41MDl2MyBSU0EgY2VydGlmaWNhdGUuCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRlLgogKi8KcGtpLmNyZWF0ZUNlcnRpZmljYXRlID0gZnVuY3Rpb24oKSB7CiAgdmFyIGNlcnQgPSB7fTsKICBjZXJ0LnZlcnNpb24gPSAweDAyOwogIGNlcnQuc2VyaWFsTnVtYmVyID0gJzAwJzsKICBjZXJ0LnNpZ25hdHVyZU9pZCA9IG51bGw7CiAgY2VydC5zaWduYXR1cmUgPSBudWxsOwogIGNlcnQuc2lnaW5mbyA9IHt9OwogIGNlcnQuc2lnaW5mby5hbGdvcml0aG1PaWQgPSBudWxsOwogIGNlcnQudmFsaWRpdHkgPSB7fTsKICBjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZSA9IG5ldyBEYXRlKCk7CiAgY2VydC52YWxpZGl0eS5ub3RBZnRlciA9IG5ldyBEYXRlKCk7CgogIGNlcnQuaXNzdWVyID0ge307CiAgY2VydC5pc3N1ZXIuZ2V0RmllbGQgPSBmdW5jdGlvbihzbikgewogICAgcmV0dXJuIF9nZXRBdHRyaWJ1dGUoY2VydC5pc3N1ZXIsIHNuKTsKICB9OwogIGNlcnQuaXNzdWVyLmFkZEZpZWxkID0gZnVuY3Rpb24oYXR0cikgewogICAgX2ZpbGxNaXNzaW5nRmllbGRzKFthdHRyXSk7CiAgICBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzLnB1c2goYXR0cik7CiAgfTsKICBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzID0gW107CiAgY2VydC5pc3N1ZXIuaGFzaCA9IG51bGw7CgogIGNlcnQuc3ViamVjdCA9IHt9OwogIGNlcnQuc3ViamVjdC5nZXRGaWVsZCA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjZXJ0LnN1YmplY3QsIHNuKTsKICB9OwogIGNlcnQuc3ViamVjdC5hZGRGaWVsZCA9IGZ1bmN0aW9uKGF0dHIpIHsKICAgIF9maWxsTWlzc2luZ0ZpZWxkcyhbYXR0cl0pOwogICAgY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNlcnQuc3ViamVjdC5hdHRyaWJ1dGVzID0gW107CiAgY2VydC5zdWJqZWN0Lmhhc2ggPSBudWxsOwoKICBjZXJ0LmV4dGVuc2lvbnMgPSBbXTsKICBjZXJ0LnB1YmxpY0tleSA9IG51bGw7CiAgY2VydC5tZCA9IG51bGw7CgogIC8qKgogICAqIFNldHMgdGhlIHN1YmplY3Qgb2YgdGhpcyBjZXJ0aWZpY2F0ZS4KICAgKgogICAqIEBwYXJhbSBhdHRycyB0aGUgYXJyYXkgb2Ygc3ViamVjdCBhdHRyaWJ1dGVzIHRvIHVzZS4KICAgKiBAcGFyYW0gdW5pcXVlSWQgYW4gb3B0aW9uYWwgYSB1bmlxdWUgSUQgdG8gdXNlLgogICAqLwogIGNlcnQuc2V0U3ViamVjdCA9IGZ1bmN0aW9uKGF0dHJzLCB1bmlxdWVJZCkgewogICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzLCBjbGVhciBoYXNoCiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoYXR0cnMpOwogICAgY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXMgPSBhdHRyczsKICAgIGRlbGV0ZSBjZXJ0LnN1YmplY3QudW5pcXVlSWQ7CiAgICBpZih1bmlxdWVJZCkgewogICAgICBjZXJ0LnN1YmplY3QudW5pcXVlSWQgPSB1bmlxdWVJZDsKICAgIH0KICAgIGNlcnQuc3ViamVjdC5oYXNoID0gbnVsbDsKICB9OwoKICAvKioKICAgKiBTZXRzIHRoZSBpc3N1ZXIgb2YgdGhpcyBjZXJ0aWZpY2F0ZS4KICAgKgogICAqIEBwYXJhbSBhdHRycyB0aGUgYXJyYXkgb2YgaXNzdWVyIGF0dHJpYnV0ZXMgdG8gdXNlLgogICAqIEBwYXJhbSB1bmlxdWVJZCBhbiBvcHRpb25hbCBhIHVuaXF1ZSBJRCB0byB1c2UuCiAgICovCiAgY2VydC5zZXRJc3N1ZXIgPSBmdW5jdGlvbihhdHRycywgdW5pcXVlSWQpIHsKICAgIC8vIHNldCBuZXcgYXR0cmlidXRlcywgY2xlYXIgaGFzaAogICAgX2ZpbGxNaXNzaW5nRmllbGRzKGF0dHJzKTsKICAgIGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMgPSBhdHRyczsKICAgIGRlbGV0ZSBjZXJ0Lmlzc3Vlci51bmlxdWVJZDsKICAgIGlmKHVuaXF1ZUlkKSB7CiAgICAgIGNlcnQuaXNzdWVyLnVuaXF1ZUlkID0gdW5pcXVlSWQ7CiAgICB9CiAgICBjZXJ0Lmlzc3Vlci5oYXNoID0gbnVsbDsKICB9OwoKICAvKioKICAgKiBTZXRzIHRoZSBleHRlbnNpb25zIG9mIHRoaXMgY2VydGlmaWNhdGUuCiAgICoKICAgKiBAcGFyYW0gZXh0cyB0aGUgYXJyYXkgb2YgZXh0ZW5zaW9ucyB0byB1c2UuCiAgICovCiAgY2VydC5zZXRFeHRlbnNpb25zID0gZnVuY3Rpb24oZXh0cykgewogICAgZm9yKHZhciBpID0gMDsgaSA8IGV4dHMubGVuZ3RoOyArK2kpIHsKICAgICAgX2ZpbGxNaXNzaW5nRXh0ZW5zaW9uRmllbGRzKGV4dHNbaV0sIHtjZXJ0OiBjZXJ0fSk7CiAgICB9CiAgICAvLyBzZXQgbmV3IGV4dGVuc2lvbnMKICAgIGNlcnQuZXh0ZW5zaW9ucyA9IGV4dHM7CiAgfTsKCiAgLyoqCiAgICogR2V0cyBhbiBleHRlbnNpb24gYnkgaXRzIG5hbWUgb3IgaWQuCiAgICoKICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgbmFtZSB0byB1c2Ugb3IgYW4gb2JqZWN0IHdpdGg6CiAgICogICAgICAgICAgbmFtZSB0aGUgbmFtZSB0byB1c2UuCiAgICogICAgICAgICAgaWQgdGhlIGlkIHRvIHVzZS4KICAgKgogICAqIEByZXR1cm4gdGhlIGV4dGVuc2lvbiBvciBudWxsIGlmIG5vdCBmb3VuZC4KICAgKi8KICBjZXJ0LmdldEV4dGVuc2lvbiA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgIGlmKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykgewogICAgICBvcHRpb25zID0ge25hbWU6IG9wdGlvbnN9OwogICAgfQoKICAgIHZhciBydmFsID0gbnVsbDsKICAgIHZhciBleHQ7CiAgICBmb3IodmFyIGkgPSAwOyBydmFsID09PSBudWxsICYmIGkgPCBjZXJ0LmV4dGVuc2lvbnMubGVuZ3RoOyArK2kpIHsKICAgICAgZXh0ID0gY2VydC5leHRlbnNpb25zW2ldOwogICAgICBpZihvcHRpb25zLmlkICYmIGV4dC5pZCA9PT0gb3B0aW9ucy5pZCkgewogICAgICAgIHJ2YWwgPSBleHQ7CiAgICAgIH0gZWxzZSBpZihvcHRpb25zLm5hbWUgJiYgZXh0Lm5hbWUgPT09IG9wdGlvbnMubmFtZSkgewogICAgICAgIHJ2YWwgPSBleHQ7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBydmFsOwogIH07CgogIC8qKgogICAqIFNpZ25zIHRoaXMgY2VydGlmaWNhdGUgdXNpbmcgdGhlIGdpdmVuIHByaXZhdGUga2V5LgogICAqCiAgICogQHBhcmFtIGtleSB0aGUgcHJpdmF0ZSBrZXkgdG8gc2lnbiB3aXRoLgogICAqIEBwYXJhbSBtZCB0aGUgbWVzc2FnZSBkaWdlc3Qgb2JqZWN0IHRvIHVzZSAoZGVmYXVsdHMgdG8gZm9yZ2UubWQuc2hhMSkuCiAgICovCiAgY2VydC5zaWduID0gZnVuY3Rpb24oa2V5LCBtZCkgewogICAgLy8gVE9ETzogZ2V0IHNpZ25hdHVyZSBPSUQgZnJvbSBwcml2YXRlIGtleQogICAgY2VydC5tZCA9IG1kIHx8IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICB2YXIgYWxnb3JpdGhtT2lkID0gb2lkc1tjZXJ0Lm1kLmFsZ29yaXRobSArICdXaXRoUlNBRW5jcnlwdGlvbiddOwogICAgaWYoIWFsZ29yaXRobU9pZCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRlIGRpZ2VzdC4gJyArCiAgICAgICAgJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QgYWxnb3JpdGhtIE9JRC4nKTsKICAgICAgZXJyb3IuYWxnb3JpdGhtID0gY2VydC5tZC5hbGdvcml0aG07CiAgICAgIHRocm93IGVycm9yOwogICAgfQogICAgY2VydC5zaWduYXR1cmVPaWQgPSBjZXJ0LnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gYWxnb3JpdGhtT2lkOwoKICAgIC8vIGdldCBUQlNDZXJ0aWZpY2F0ZSwgY29udmVydCB0byBERVIKICAgIGNlcnQudGJzQ2VydGlmaWNhdGUgPSBwa2kuZ2V0VEJTQ2VydGlmaWNhdGUoY2VydCk7CiAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNlcnQudGJzQ2VydGlmaWNhdGUpOwoKICAgIC8vIGRpZ2VzdCBhbmQgc2lnbgogICAgY2VydC5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgICBjZXJ0LnNpZ25hdHVyZSA9IGtleS5zaWduKGNlcnQubWQpOwogIH07CgogIC8qKgogICAqIEF0dGVtcHRzIHZlcmlmeSB0aGUgc2lnbmF0dXJlIG9uIHRoZSBwYXNzZWQgY2VydGlmaWNhdGUgdXNpbmcgdGhpcwogICAqIGNlcnRpZmljYXRlJ3MgcHVibGljIGtleS4KICAgKgogICAqIEBwYXJhbSBjaGlsZCB0aGUgY2VydGlmaWNhdGUgdG8gdmVyaWZ5LgogICAqCiAgICogQHJldHVybiB0cnVlIGlmIHZlcmlmaWVkLCBmYWxzZSBpZiBub3QuCiAgICovCiAgY2VydC52ZXJpZnkgPSBmdW5jdGlvbihjaGlsZCkgewogICAgdmFyIHJ2YWwgPSBmYWxzZTsKCiAgICBpZighY2VydC5pc3N1ZWQoY2hpbGQpKSB7CiAgICAgIHZhciBpc3N1ZXIgPSBjaGlsZC5pc3N1ZXI7CiAgICAgIHZhciBzdWJqZWN0ID0gY2VydC5zdWJqZWN0OwogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1RoZSBwYXJlbnQgY2VydGlmaWNhdGUgZGlkIG5vdCBpc3N1ZSB0aGUgZ2l2ZW4gY2hpbGQgJyArCiAgICAgICAgJ2NlcnRpZmljYXRlOyB0aGUgY2hpbGQgY2VydGlmaWNhdGVcJ3MgaXNzdWVyIGRvZXMgbm90IG1hdGNoIHRoZSAnICsKICAgICAgICAncGFyZW50XCdzIHN1YmplY3QuJyk7CiAgICAgIGVycm9yLmV4cGVjdGVkSXNzdWVyID0gaXNzdWVyLmF0dHJpYnV0ZXM7CiAgICAgIGVycm9yLmFjdHVhbElzc3VlciA9IHN1YmplY3QuYXR0cmlidXRlczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgdmFyIG1kID0gY2hpbGQubWQ7CiAgICBpZihtZCA9PT0gbnVsbCkgewogICAgICAvLyBjaGVjayBzaWduYXR1cmUgT0lEIGZvciBzdXBwb3J0ZWQgc2lnbmF0dXJlIHR5cGVzCiAgICAgIGlmKGNoaWxkLnNpZ25hdHVyZU9pZCBpbiBvaWRzKSB7CiAgICAgICAgdmFyIG9pZCA9IG9pZHNbY2hpbGQuc2lnbmF0dXJlT2lkXTsKICAgICAgICBzd2l0Y2gob2lkKSB7CiAgICAgICAgY2FzZSAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ21kNVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24nOgogICAgICAgICAgbWQgPSBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgICBtZCA9IGZvcmdlLm1kLnNoYTUxMi5jcmVhdGUoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ1JTQVNTQS1QU1MnOgogICAgICAgICAgbWQgPSBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYobWQgPT09IG51bGwpIHsKICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRlIGRpZ2VzdC4gJyArCiAgICAgICAgICAnVW5rbm93biBzaWduYXR1cmUgT0lELicpOwogICAgICAgIGVycm9yLnNpZ25hdHVyZU9pZCA9IGNoaWxkLnNpZ25hdHVyZU9pZDsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQoKICAgICAgLy8gcHJvZHVjZSBERVIgZm9ybWF0dGVkIFRCU0NlcnRpZmljYXRlIGFuZCBkaWdlc3QgaXQKICAgICAgdmFyIHRic0NlcnRpZmljYXRlID0gY2hpbGQudGJzQ2VydGlmaWNhdGUgfHwgcGtpLmdldFRCU0NlcnRpZmljYXRlKGNoaWxkKTsKICAgICAgdmFyIGJ5dGVzID0gYXNuMS50b0Rlcih0YnNDZXJ0aWZpY2F0ZSk7CiAgICAgIG1kLnVwZGF0ZShieXRlcy5nZXRCeXRlcygpKTsKICAgIH0KCiAgICBpZihtZCAhPT0gbnVsbCkgewogICAgICB2YXIgc2NoZW1lOwoKICAgICAgc3dpdGNoKGNoaWxkLnNpZ25hdHVyZU9pZCkgewogICAgICBjYXNlIG9pZHMuc2hhMVdpdGhSU0FFbmNyeXB0aW9uOgogICAgICAgIHNjaGVtZSA9IHVuZGVmaW5lZDsgIC8qIHVzZSBQS0NTIzEgdjEuNSBwYWRkaW5nIHNjaGVtZSAqLwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIG9pZHNbJ1JTQVNTQS1QU1MnXToKICAgICAgICB2YXIgaGFzaCwgbWdmOwoKICAgICAgICAvKiBpbml0aWFsaXplIG1nZiAqLwogICAgICAgIGhhc2ggPSBvaWRzW2NoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmhhc2guYWxnb3JpdGhtT2lkXTsKICAgICAgICBpZihoYXNoID09PSB1bmRlZmluZWQgfHwgZm9yZ2UubWRbaGFzaF0gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBNR0YgaGFzaCBmdW5jdGlvbi4nKTsKICAgICAgICAgIGVycm9yLm9pZCA9IGNoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmhhc2guYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IGhhc2g7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIG1nZiA9IG9pZHNbY2hpbGQuc2lnbmF0dXJlUGFyYW1ldGVycy5tZ2YuYWxnb3JpdGhtT2lkXTsKICAgICAgICBpZihtZ2YgPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZ2ZbbWdmXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE1HRiBmdW5jdGlvbi4nKTsKICAgICAgICAgIGVycm9yLm9pZCA9IGNoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmFsZ29yaXRobU9pZDsKICAgICAgICAgIGVycm9yLm5hbWUgPSBtZ2Y7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIG1nZiA9IGZvcmdlLm1nZlttZ2ZdLmNyZWF0ZShmb3JnZS5tZFtoYXNoXS5jcmVhdGUoKSk7CgogICAgICAgIC8qIGluaXRpYWxpemUgaGFzaCBmdW5jdGlvbiAqLwogICAgICAgIGhhc2ggPSBvaWRzW2NoaWxkLnNpZ25hdHVyZVBhcmFtZXRlcnMuaGFzaC5hbGdvcml0aG1PaWRdOwogICAgICAgIGlmKGhhc2ggPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZFtoYXNoXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB0aHJvdyB7CiAgICAgICAgICAgIG1lc3NhZ2U6ICdVbnN1cHBvcnRlZCBSU0FTU0EtUFNTIGhhc2ggZnVuY3Rpb24uJywKICAgICAgICAgICAgb2lkOiBjaGlsZC5zaWduYXR1cmVQYXJhbWV0ZXJzLmhhc2guYWxnb3JpdGhtT2lkLAogICAgICAgICAgICBuYW1lOiBoYXNoCiAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgc2NoZW1lID0gZm9yZ2UucHNzLmNyZWF0ZShmb3JnZS5tZFtoYXNoXS5jcmVhdGUoKSwgbWdmLAogICAgICAgICAgY2hpbGQuc2lnbmF0dXJlUGFyYW1ldGVycy5zYWx0TGVuZ3RoKTsKICAgICAgICBicmVhazsKICAgICAgfQoKICAgICAgLy8gdmVyaWZ5IHNpZ25hdHVyZSBvbiBjZXJ0IHVzaW5nIHB1YmxpYyBrZXkKICAgICAgcnZhbCA9IGNlcnQucHVibGljS2V5LnZlcmlmeSgKICAgICAgICBtZC5kaWdlc3QoKS5nZXRCeXRlcygpLCBjaGlsZC5zaWduYXR1cmUsIHNjaGVtZSk7CiAgICB9CgogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgLyoqCiAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgY2VydGlmaWNhdGUncyBpc3N1ZXIgbWF0Y2hlcyB0aGUgcGFzc2VkCiAgICogY2VydGlmaWNhdGUncyBzdWJqZWN0LiBOb3RlIHRoYXQgbm8gc2lnbmF0dXJlIGNoZWNrIGlzIHBlcmZvcm1lZC4KICAgKgogICAqIEBwYXJhbSBwYXJlbnQgdGhlIGNlcnRpZmljYXRlIHRvIGNoZWNrLgogICAqCiAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgY2VydGlmaWNhdGUncyBpc3N1ZXIgbWF0Y2hlcyB0aGUgcGFzc2VkIGNlcnRpZmljYXRlJ3MKICAgKiAgICAgICAgIHN1YmplY3QuCiAgICovCiAgY2VydC5pc0lzc3VlciA9IGZ1bmN0aW9uKHBhcmVudCkgewogICAgdmFyIHJ2YWwgPSBmYWxzZTsKCiAgICB2YXIgaSA9IGNlcnQuaXNzdWVyOwogICAgdmFyIHMgPSBwYXJlbnQuc3ViamVjdDsKCiAgICAvLyBjb21wYXJlIGhhc2hlcyBpZiBwcmVzZW50CiAgICBpZihpLmhhc2ggJiYgcy5oYXNoKSB7CiAgICAgIHJ2YWwgPSAoaS5oYXNoID09PSBzLmhhc2gpOwogICAgfSBlbHNlIGlmKGkuYXR0cmlidXRlcy5sZW5ndGggPT09IHMuYXR0cmlidXRlcy5sZW5ndGgpIHsKICAgICAgLy8gYWxsIGF0dHJpYnV0ZXMgYXJlIHRoZSBzYW1lIHNvIGlzc3VlciBtYXRjaGVzIHN1YmplY3QKICAgICAgcnZhbCA9IHRydWU7CiAgICAgIHZhciBpYXR0ciwgc2F0dHI7CiAgICAgIGZvcih2YXIgbiA9IDA7IHJ2YWwgJiYgbiA8IGkuYXR0cmlidXRlcy5sZW5ndGg7ICsrbikgewogICAgICAgIGlhdHRyID0gaS5hdHRyaWJ1dGVzW25dOwogICAgICAgIHNhdHRyID0gcy5hdHRyaWJ1dGVzW25dOwogICAgICAgIGlmKGlhdHRyLnR5cGUgIT09IHNhdHRyLnR5cGUgfHwgaWF0dHIudmFsdWUgIT09IHNhdHRyLnZhbHVlKSB7CiAgICAgICAgICAvLyBhdHRyaWJ1dGUgbWlzbWF0Y2gKICAgICAgICAgIHJ2YWwgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIHRydWUgaWYgdGhpcyBjZXJ0aWZpY2F0ZSdzIHN1YmplY3QgbWF0Y2hlcyB0aGUgaXNzdWVyIG9mIHRoZQogICAqIGdpdmVuIGNlcnRpZmljYXRlKS4gTm90ZSB0aGF0IG5vdCBzaWduYXR1cmUgY2hlY2sgaXMgcGVyZm9ybWVkLgogICAqCiAgICogQHBhcmFtIGNoaWxkIHRoZSBjZXJ0aWZpY2F0ZSB0byBjaGVjay4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIGNlcnRpZmljYXRlJ3Mgc3ViamVjdCBtYXRjaGVzIHRoZSBwYXNzZWQKICAgKiAgICAgICAgIGNlcnRpZmljYXRlJ3MgaXNzdWVyLgogICAqLwogIGNlcnQuaXNzdWVkID0gZnVuY3Rpb24oY2hpbGQpIHsKICAgIHJldHVybiBjaGlsZC5pc0lzc3VlcihjZXJ0KTsKICB9OwoKICAvKioKICAgKiBHZW5lcmF0ZXMgdGhlIHN1YmplY3RLZXlJZGVudGlmaWVyIGZvciB0aGlzIGNlcnRpZmljYXRlIGFzIGJ5dGUgYnVmZmVyLgogICAqCiAgICogQHJldHVybiB0aGUgc3ViamVjdEtleUlkZW50aWZpZXIgZm9yIHRoaXMgY2VydGlmaWNhdGUgYXMgYnl0ZSBidWZmZXIuCiAgICovCiAgY2VydC5nZW5lcmF0ZVN1YmplY3RLZXlJZGVudGlmaWVyID0gZnVuY3Rpb24oKSB7CiAgICAvKiBTZWU6IDQuMi4xLjIgc2VjdGlvbiBvZiB0aGUgdGhlIFJGQzMyODAsIGtleUlkZW50aWZpZXIgaXMgZWl0aGVyOgoKICAgICAgKDEpIFRoZSBrZXlJZGVudGlmaWVyIGlzIGNvbXBvc2VkIG9mIHRoZSAxNjAtYml0IFNIQS0xIGhhc2ggb2YgdGhlCiAgICAgICAgdmFsdWUgb2YgdGhlIEJJVCBTVFJJTkcgc3ViamVjdFB1YmxpY0tleSAoZXhjbHVkaW5nIHRoZSB0YWcsCiAgICAgICAgbGVuZ3RoLCBhbmQgbnVtYmVyIG9mIHVudXNlZCBiaXRzKS4KCiAgICAgICgyKSBUaGUga2V5SWRlbnRpZmllciBpcyBjb21wb3NlZCBvZiBhIGZvdXIgYml0IHR5cGUgZmllbGQgd2l0aAogICAgICAgIHRoZSB2YWx1ZSAwMTAwIGZvbGxvd2VkIGJ5IHRoZSBsZWFzdCBzaWduaWZpY2FudCA2MCBiaXRzIG9mIHRoZQogICAgICAgIFNIQS0xIGhhc2ggb2YgdGhlIHZhbHVlIG9mIHRoZSBCSVQgU1RSSU5HIHN1YmplY3RQdWJsaWNLZXkKICAgICAgICAoZXhjbHVkaW5nIHRoZSB0YWcsIGxlbmd0aCwgYW5kIG51bWJlciBvZiB1bnVzZWQgYml0IHN0cmluZyBiaXRzKS4KICAgICovCgogICAgLy8gc2tpcHBpbmcgdGhlIHRhZywgbGVuZ3RoLCBhbmQgbnVtYmVyIG9mIHVudXNlZCBiaXRzIGlzIHRoZSBzYW1lCiAgICAvLyBhcyBqdXN0IHVzaW5nIHRoZSBSU0FQdWJsaWNLZXkgKGZvciBSU0Ega2V5cywgd2hpY2ggYXJlIHRoZQogICAgLy8gb25seSBvbmVzIHN1cHBvcnRlZCkKICAgIHJldHVybiBwa2kuZ2V0UHVibGljS2V5RmluZ2VycHJpbnQoY2VydC5wdWJsaWNLZXksIHt0eXBlOiAnUlNBUHVibGljS2V5J30pOwogIH07CgogIC8qKgogICAqIFZlcmlmaWVzIHRoZSBzdWJqZWN0S2V5SWRlbnRpZmllciBleHRlbnNpb24gdmFsdWUgZm9yIHRoaXMgY2VydGlmaWNhdGUKICAgKiBhZ2FpbnN0IGl0cyBwdWJsaWMga2V5LiBJZiBubyBleHRlbnNpb24gaXMgZm91bmQsIGZhbHNlIHdpbGwgYmUKICAgKiByZXR1cm5lZC4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB2ZXJpZmllZCwgZmFsc2UgaWYgbm90LgogICAqLwogIGNlcnQudmVyaWZ5U3ViamVjdEtleUlkZW50aWZpZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBvaWQgPSBvaWRzWydzdWJqZWN0S2V5SWRlbnRpZmllciddOwogICAgZm9yKHZhciBpID0gMDsgaSA8IGNlcnQuZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkgewogICAgICB2YXIgZXh0ID0gY2VydC5leHRlbnNpb25zW2ldOwogICAgICBpZihleHQuaWQgPT09IG9pZCkgewogICAgICAgIHZhciBza2kgPSBjZXJ0LmdlbmVyYXRlU3ViamVjdEtleUlkZW50aWZpZXIoKS5nZXRCeXRlcygpOwogICAgICAgIHJldHVybiAoZm9yZ2UudXRpbC5oZXhUb0J5dGVzKGV4dC5zdWJqZWN0S2V5SWRlbnRpZmllcikgPT09IHNraSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9OwoKICByZXR1cm4gY2VydDsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBYLjUwOXYzIFJTQSBjZXJ0aWZpY2F0ZSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogTm90ZTogSWYgdGhlIGNlcnRpZmljYXRlIGlzIHRvIGJlIHZlcmlmaWVkIHRoZW4gY29tcHV0ZSBoYXNoIHNob3VsZAogKiBiZSBzZXQgdG8gdHJ1ZS4gVGhlcmUgaXMgY3VycmVudGx5IG5vIGltcGxlbWVudGF0aW9uIGZvciBjb252ZXJ0aW5nCiAqIGEgY2VydGlmaWNhdGUgYmFjayB0byBBU04uMSBzbyB0aGUgVEJTQ2VydGlmaWNhdGUgcGFydCBvZiB0aGUgQVNOLjEKICogb2JqZWN0IG5lZWRzIHRvIGJlIHNjYW5uZWQgYmVmb3JlIHRoZSBjZXJ0IG9iamVjdCBpcyBjcmVhdGVkLgogKgogKiBAcGFyYW0gb2JqIHRoZSBhc24xIHJlcHJlc2VudGF0aW9uIG9mIGFuIFguNTA5djMgUlNBIGNlcnRpZmljYXRlLgogKiBAcGFyYW0gY29tcHV0ZUhhc2ggdHJ1ZSB0byBjb21wdXRlIHRoZSBoYXNoIGZvciB2ZXJpZmljYXRpb24uCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRlLgogKi8KcGtpLmNlcnRpZmljYXRlRnJvbUFzbjEgPSBmdW5jdGlvbihvYmosIGNvbXB1dGVIYXNoKSB7CiAgLy8gdmFsaWRhdGUgY2VydGlmaWNhdGUgYW5kIGNhcHR1cmUgZGF0YQogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgeDUwOUNlcnRpZmljYXRlVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFguNTA5IGNlcnRpZmljYXRlLiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBpcyBub3QgYW4gWDUwOXYzIENlcnRpZmljYXRlLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICAvLyBlbnN1cmUgc2lnbmF0dXJlIGlzIG5vdCBpbnRlcnByZXRlZCBhcyBhbiBlbWJlZGRlZCBBU04uMSBvYmplY3QKICBpZih0eXBlb2YgY2FwdHVyZS5jZXJ0U2lnbmF0dXJlICE9PSAnc3RyaW5nJykgewogICAgdmFyIGNlcnRTaWduYXR1cmUgPSAnXHgwMCc7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgY2FwdHVyZS5jZXJ0U2lnbmF0dXJlLmxlbmd0aDsgKytpKSB7CiAgICAgIGNlcnRTaWduYXR1cmUgKz0gYXNuMS50b0RlcihjYXB0dXJlLmNlcnRTaWduYXR1cmVbaV0pLmdldEJ5dGVzKCk7CiAgICB9CiAgICBjYXB0dXJlLmNlcnRTaWduYXR1cmUgPSBjZXJ0U2lnbmF0dXJlOwogIH0KCiAgLy8gZ2V0IG9pZAogIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUucHVibGljS2V5T2lkKTsKICBpZihvaWQgIT09IHBraS5vaWRzWydyc2FFbmNyeXB0aW9uJ10pIHsKICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgcHVibGljIGtleS4gT0lEIGlzIG5vdCBSU0EuJyk7CiAgfQoKICAvLyBjcmVhdGUgY2VydGlmaWNhdGUKICB2YXIgY2VydCA9IHBraS5jcmVhdGVDZXJ0aWZpY2F0ZSgpOwogIGNlcnQudmVyc2lvbiA9IGNhcHR1cmUuY2VydFZlcnNpb24gPwogICAgY2FwdHVyZS5jZXJ0VmVyc2lvbi5jaGFyQ29kZUF0KDApIDogMDsKICB2YXIgc2VyaWFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5jZXJ0U2VyaWFsTnVtYmVyKTsKICBjZXJ0LnNlcmlhbE51bWJlciA9IHNlcmlhbC50b0hleCgpOwogIGNlcnQuc2lnbmF0dXJlT2lkID0gZm9yZ2UuYXNuMS5kZXJUb09pZChjYXB0dXJlLmNlcnRTaWduYXR1cmVPaWQpOwogIGNlcnQuc2lnbmF0dXJlUGFyYW1ldGVycyA9IF9yZWFkU2lnbmF0dXJlUGFyYW1ldGVycygKICAgIGNlcnQuc2lnbmF0dXJlT2lkLCBjYXB0dXJlLmNlcnRTaWduYXR1cmVQYXJhbXMsIHRydWUpOwogIGNlcnQuc2lnaW5mby5hbGdvcml0aG1PaWQgPSBmb3JnZS5hc24xLmRlclRvT2lkKGNhcHR1cmUuY2VydGluZm9TaWduYXR1cmVPaWQpOwogIGNlcnQuc2lnaW5mby5wYXJhbWV0ZXJzID0gX3JlYWRTaWduYXR1cmVQYXJhbWV0ZXJzKGNlcnQuc2lnaW5mby5hbGdvcml0aG1PaWQsCiAgICBjYXB0dXJlLmNlcnRpbmZvU2lnbmF0dXJlUGFyYW1zLCBmYWxzZSk7CiAgLy8gc2tpcCAidW51c2VkIGJpdHMiIGluIHNpZ25hdHVyZSB2YWx1ZSBCSVRTVFJJTkcKICB2YXIgc2lnbmF0dXJlID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5jZXJ0U2lnbmF0dXJlKTsKICArK3NpZ25hdHVyZS5yZWFkOwogIGNlcnQuc2lnbmF0dXJlID0gc2lnbmF0dXJlLmdldEJ5dGVzKCk7CgogIHZhciB2YWxpZGl0eSA9IFtdOwogIGlmKGNhcHR1cmUuY2VydFZhbGlkaXR5MVVUQ1RpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLnV0Y1RpbWVUb0RhdGUoY2FwdHVyZS5jZXJ0VmFsaWRpdHkxVVRDVGltZSkpOwogIH0KICBpZihjYXB0dXJlLmNlcnRWYWxpZGl0eTJHZW5lcmFsaXplZFRpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLmdlbmVyYWxpemVkVGltZVRvRGF0ZSgKICAgICAgY2FwdHVyZS5jZXJ0VmFsaWRpdHkyR2VuZXJhbGl6ZWRUaW1lKSk7CiAgfQogIGlmKGNhcHR1cmUuY2VydFZhbGlkaXR5M1VUQ1RpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLnV0Y1RpbWVUb0RhdGUoY2FwdHVyZS5jZXJ0VmFsaWRpdHkzVVRDVGltZSkpOwogIH0KICBpZihjYXB0dXJlLmNlcnRWYWxpZGl0eTRHZW5lcmFsaXplZFRpbWUgIT09IHVuZGVmaW5lZCkgewogICAgdmFsaWRpdHkucHVzaChhc24xLmdlbmVyYWxpemVkVGltZVRvRGF0ZSgKICAgICAgY2FwdHVyZS5jZXJ0VmFsaWRpdHk0R2VuZXJhbGl6ZWRUaW1lKSk7CiAgfQogIGlmKHZhbGlkaXR5Lmxlbmd0aCA+IDIpIHsKICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgbm90QmVmb3JlL25vdEFmdGVyIHZhbGlkaXR5IHRpbWVzOyBtb3JlICcgKwogICAgICAndGhhbiB0d28gdGltZXMgd2VyZSBwcm92aWRlZCBpbiB0aGUgY2VydGlmaWNhdGUuJyk7CiAgfQogIGlmKHZhbGlkaXR5Lmxlbmd0aCA8IDIpIHsKICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgbm90QmVmb3JlL25vdEFmdGVyIHZhbGlkaXR5IHRpbWVzOyB0aGV5ICcgKwogICAgICAnd2VyZSBub3QgcHJvdmlkZWQgYXMgZWl0aGVyIFVUQ1RpbWUgb3IgR2VuZXJhbGl6ZWRUaW1lLicpOwogIH0KICBjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZSA9IHZhbGlkaXR5WzBdOwogIGNlcnQudmFsaWRpdHkubm90QWZ0ZXIgPSB2YWxpZGl0eVsxXTsKCiAgLy8ga2VlcCBUQlNDZXJ0aWZpY2F0ZSB0byBwcmVzZXJ2ZSBzaWduYXR1cmUgd2hlbiBleHBvcnRpbmcKICBjZXJ0LnRic0NlcnRpZmljYXRlID0gY2FwdHVyZS50YnNDZXJ0aWZpY2F0ZTsKCiAgaWYoY29tcHV0ZUhhc2gpIHsKICAgIC8vIGNoZWNrIHNpZ25hdHVyZSBPSUQgZm9yIHN1cHBvcnRlZCBzaWduYXR1cmUgdHlwZXMKICAgIGNlcnQubWQgPSBudWxsOwogICAgaWYoY2VydC5zaWduYXR1cmVPaWQgaW4gb2lkcykgewogICAgICB2YXIgb2lkID0gb2lkc1tjZXJ0LnNpZ25hdHVyZU9pZF07CiAgICAgIHN3aXRjaChvaWQpIHsKICAgICAgY2FzZSAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICBjZXJ0Lm1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnbWQ1V2l0aFJTQUVuY3J5cHRpb24nOgogICAgICAgIGNlcnQubWQgPSBmb3JnZS5tZC5tZDUuY3JlYXRlKCk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3NoYTI1NldpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICBjZXJ0Lm1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY2VydC5tZCA9IGZvcmdlLm1kLnNoYTUxMi5jcmVhdGUoKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnUlNBU1NBLVBTUyc6CiAgICAgICAgY2VydC5tZCA9IGZvcmdlLm1kLnNoYTI1Ni5jcmVhdGUoKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogICAgaWYoY2VydC5tZCA9PT0gbnVsbCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRlIGRpZ2VzdC4gJyArCiAgICAgICAgJ1Vua25vd24gc2lnbmF0dXJlIE9JRC4nKTsKICAgICAgZXJyb3Iuc2lnbmF0dXJlT2lkID0gY2VydC5zaWduYXR1cmVPaWQ7CiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIC8vIHByb2R1Y2UgREVSIGZvcm1hdHRlZCBUQlNDZXJ0aWZpY2F0ZSBhbmQgZGlnZXN0IGl0CiAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNlcnQudGJzQ2VydGlmaWNhdGUpOwogICAgY2VydC5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgfQoKICAvLyBoYW5kbGUgaXNzdWVyLCBidWlsZCBpc3N1ZXIgbWVzc2FnZSBkaWdlc3QKICB2YXIgaW1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICBjZXJ0Lmlzc3Vlci5nZXRGaWVsZCA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjZXJ0Lmlzc3Vlciwgc24pOwogIH07CiAgY2VydC5pc3N1ZXIuYWRkRmllbGQgPSBmdW5jdGlvbihhdHRyKSB7CiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoW2F0dHJdKTsKICAgIGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMgPSBwa2kuUkROQXR0cmlidXRlc0FzQXJyYXkoY2FwdHVyZS5jZXJ0SXNzdWVyLCBpbWQpOwogIGlmKGNhcHR1cmUuY2VydElzc3VlclVuaXF1ZUlkKSB7CiAgICBjZXJ0Lmlzc3Vlci51bmlxdWVJZCA9IGNhcHR1cmUuY2VydElzc3VlclVuaXF1ZUlkOwogIH0KICBjZXJ0Lmlzc3Vlci5oYXNoID0gaW1kLmRpZ2VzdCgpLnRvSGV4KCk7CgogIC8vIGhhbmRsZSBzdWJqZWN0LCBidWlsZCBzdWJqZWN0IG1lc3NhZ2UgZGlnZXN0CiAgdmFyIHNtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgY2VydC5zdWJqZWN0LmdldEZpZWxkID0gZnVuY3Rpb24oc24pIHsKICAgIHJldHVybiBfZ2V0QXR0cmlidXRlKGNlcnQuc3ViamVjdCwgc24pOwogIH07CiAgY2VydC5zdWJqZWN0LmFkZEZpZWxkID0gZnVuY3Rpb24oYXR0cikgewogICAgX2ZpbGxNaXNzaW5nRmllbGRzKFthdHRyXSk7CiAgICBjZXJ0LnN1YmplY3QuYXR0cmlidXRlcy5wdXNoKGF0dHIpOwogIH07CiAgY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXMgPSBwa2kuUkROQXR0cmlidXRlc0FzQXJyYXkoY2FwdHVyZS5jZXJ0U3ViamVjdCwgc21kKTsKICBpZihjYXB0dXJlLmNlcnRTdWJqZWN0VW5pcXVlSWQpIHsKICAgIGNlcnQuc3ViamVjdC51bmlxdWVJZCA9IGNhcHR1cmUuY2VydFN1YmplY3RVbmlxdWVJZDsKICB9CiAgY2VydC5zdWJqZWN0Lmhhc2ggPSBzbWQuZGlnZXN0KCkudG9IZXgoKTsKCiAgLy8gaGFuZGxlIGV4dGVuc2lvbnMKICBpZihjYXB0dXJlLmNlcnRFeHRlbnNpb25zKSB7CiAgICBjZXJ0LmV4dGVuc2lvbnMgPSBwa2kuY2VydGlmaWNhdGVFeHRlbnNpb25zRnJvbUFzbjEoY2FwdHVyZS5jZXJ0RXh0ZW5zaW9ucyk7CiAgfSBlbHNlIHsKICAgIGNlcnQuZXh0ZW5zaW9ucyA9IFtdOwogIH0KCiAgLy8gY29udmVydCBSU0EgcHVibGljIGtleSBmcm9tIEFTTi4xCiAgY2VydC5wdWJsaWNLZXkgPSBwa2kucHVibGljS2V5RnJvbUFzbjEoY2FwdHVyZS5zdWJqZWN0UHVibGljS2V5SW5mbyk7CgogIHJldHVybiBjZXJ0Owp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIEFTTi4xIGV4dGVuc2lvbnMgb2JqZWN0ICh3aXRoIGV4dGVuc2lvbiBzZXF1ZW5jZXMgYXMgaXRzCiAqIHZhbHVlcykgaW50byBhbiBhcnJheSBvZiBleHRlbnNpb24gb2JqZWN0cyB3aXRoIHR5cGVzIGFuZCB2YWx1ZXMuCiAqCiAqIFN1cHBvcnRlZCBleHRlbnNpb25zOgogKgogKiBpZC1jZS1rZXlVc2FnZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTUgfQogKiBLZXlVc2FnZSA6Oj0gQklUIFNUUklORyB7CiAqICAgZGlnaXRhbFNpZ25hdHVyZSAgICAgICAgKDApLAogKiAgIG5vblJlcHVkaWF0aW9uICAgICAgICAgICgxKSwKICogICBrZXlFbmNpcGhlcm1lbnQgICAgICAgICAoMiksCiAqICAgZGF0YUVuY2lwaGVybWVudCAgICAgICAgKDMpLAogKiAgIGtleUFncmVlbWVudCAgICAgICAgICAgICg0KSwKICogICBrZXlDZXJ0U2lnbiAgICAgICAgICAgICAoNSksCiAqICAgY1JMU2lnbiAgICAgICAgICAgICAgICAgKDYpLAogKiAgIGVuY2lwaGVyT25seSAgICAgICAgICAgICg3KSwKICogICBkZWNpcGhlck9ubHkgICAgICAgICAgICAoOCkKICogfQogKgogKiBpZC1jZS1iYXNpY0NvbnN0cmFpbnRzIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAxOSB9CiAqIEJhc2ljQ29uc3RyYWludHMgOjo9IFNFUVVFTkNFIHsKICogICBjQSAgICAgICAgICAgICAgICAgICAgICBCT09MRUFOIERFRkFVTFQgRkFMU0UsCiAqICAgcGF0aExlbkNvbnN0cmFpbnQgICAgICAgSU5URUdFUiAoMC4uTUFYKSBPUFRJT05BTAogKiB9CiAqCiAqIHN1YmplY3RBbHROYW1lIEVYVEVOU0lPTiA6Oj0gewogKiAgIFNZTlRBWCBHZW5lcmFsTmFtZXMKICogICBJREVOVElGSUVEIEJZIGlkLWNlLXN1YmplY3RBbHROYW1lCiAqIH0KICoKICogR2VuZXJhbE5hbWVzIDo6PSBTRVFVRU5DRSBTSVpFICgxLi5NQVgpIE9GIEdlbmVyYWxOYW1lCiAqCiAqIEdlbmVyYWxOYW1lIDo6PSBDSE9JQ0UgewogKiAgIG90aGVyTmFtZSAgICAgIFswXSBJTlNUQU5DRSBPRiBPVEhFUi1OQU1FLAogKiAgIHJmYzgyMk5hbWUgICAgIFsxXSBJQTVTdHJpbmcsCiAqICAgZE5TTmFtZSAgICAgICAgWzJdIElBNVN0cmluZywKICogICB4NDAwQWRkcmVzcyAgICBbM10gT1JBZGRyZXNzLAogKiAgIGRpcmVjdG9yeU5hbWUgIFs0XSBOYW1lLAogKiAgIGVkaVBhcnR5TmFtZSAgIFs1XSBFRElQYXJ0eU5hbWUsCiAqICAgdW5pZm9ybVJlc291cmNlSWRlbnRpZmllciBbNl0gSUE1U3RyaW5nLAogKiAgIElQQWRkcmVzcyAgICAgIFs3XSBPQ1RFVCBTVFJJTkcsCiAqICAgcmVnaXN0ZXJlZElEICAgWzhdIE9CSkVDVCBJREVOVElGSUVSCiAqIH0KICoKICogT1RIRVItTkFNRSA6Oj0gVFlQRS1JREVOVElGSUVSCiAqCiAqIEVESVBhcnR5TmFtZSA6Oj0gU0VRVUVOQ0UgewogKiAgIG5hbWVBc3NpZ25lciBbMF0gRGlyZWN0b3J5U3RyaW5nIHt1Yi1uYW1lfSBPUFRJT05BTCwKICogICBwYXJ0eU5hbWUgICAgWzFdIERpcmVjdG9yeVN0cmluZyB7dWItbmFtZX0KICogfQogKgogKiBAcGFyYW0gZXh0cyB0aGUgZXh0ZW5zaW9ucyBBU04uMSB3aXRoIGV4dGVuc2lvbiBzZXF1ZW5jZXMgdG8gcGFyc2UuCiAqCiAqIEByZXR1cm4gdGhlIGFycmF5LgogKi8KcGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uc0Zyb21Bc24xID0gZnVuY3Rpb24oZXh0cykgewogIHZhciBydmFsID0gW107CiAgZm9yKHZhciBpID0gMDsgaSA8IGV4dHMudmFsdWUubGVuZ3RoOyArK2kpIHsKICAgIC8vIGdldCBleHRlbnNpb24gc2VxdWVuY2UKICAgIHZhciBleHRzZXEgPSBleHRzLnZhbHVlW2ldOwogICAgZm9yKHZhciBlaSA9IDA7IGVpIDwgZXh0c2VxLnZhbHVlLmxlbmd0aDsgKytlaSkgewogICAgICBydmFsLnB1c2gocGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uRnJvbUFzbjEoZXh0c2VxLnZhbHVlW2VpXSkpOwogICAgfQogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUGFyc2VzIGEgc2luZ2xlIGNlcnRpZmljYXRlIGV4dGVuc2lvbiBmcm9tIEFTTi4xLgogKgogKiBAcGFyYW0gZXh0IHRoZSBleHRlbnNpb24gaW4gQVNOLjEgZm9ybWF0LgogKgogKiBAcmV0dXJuIHRoZSBwYXJzZWQgZXh0ZW5zaW9uIGFzIGFuIG9iamVjdC4KICovCnBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvbkZyb21Bc24xID0gZnVuY3Rpb24oZXh0KSB7CiAgLy8gYW4gZXh0ZW5zaW9uIGhhczoKICAvLyBbMF0gZXh0bklEICAgICAgT0JKRUNUIElERU5USUZJRVIKICAvLyBbMV0gY3JpdGljYWwgICAgQk9PTEVBTiBERUZBVUxUIEZBTFNFCiAgLy8gWzJdIGV4dG5WYWx1ZSAgIE9DVEVUIFNUUklORwogIHZhciBlID0ge307CiAgZS5pZCA9IGFzbjEuZGVyVG9PaWQoZXh0LnZhbHVlWzBdLnZhbHVlKTsKICBlLmNyaXRpY2FsID0gZmFsc2U7CiAgaWYoZXh0LnZhbHVlWzFdLnR5cGUgPT09IGFzbjEuVHlwZS5CT09MRUFOKSB7CiAgICBlLmNyaXRpY2FsID0gKGV4dC52YWx1ZVsxXS52YWx1ZS5jaGFyQ29kZUF0KDApICE9PSAweDAwKTsKICAgIGUudmFsdWUgPSBleHQudmFsdWVbMl0udmFsdWU7CiAgfSBlbHNlIHsKICAgIGUudmFsdWUgPSBleHQudmFsdWVbMV0udmFsdWU7CiAgfQogIC8vIGlmIHRoZSBvaWQgaXMga25vd24sIGdldCBpdHMgbmFtZQogIGlmKGUuaWQgaW4gb2lkcykgewogICAgZS5uYW1lID0gb2lkc1tlLmlkXTsKCiAgICAvLyBoYW5kbGUga2V5IHVzYWdlCiAgICBpZihlLm5hbWUgPT09ICdrZXlVc2FnZScpIHsKICAgICAgLy8gZ2V0IHZhbHVlIGFzIEJJVCBTVFJJTkcKICAgICAgdmFyIGV2ID0gYXNuMS5mcm9tRGVyKGUudmFsdWUpOwogICAgICB2YXIgYjIgPSAweDAwOwogICAgICB2YXIgYjMgPSAweDAwOwogICAgICBpZihldi52YWx1ZS5sZW5ndGggPiAxKSB7CiAgICAgICAgLy8gc2tpcCBmaXJzdCBieXRlLCBqdXN0IGluZGljYXRlcyB1bnVzZWQgYml0cyB3aGljaAogICAgICAgIC8vIHdpbGwgYmUgcGFkZGVkIHdpdGggMHMgYW55d2F5CiAgICAgICAgLy8gZ2V0IGJ5dGVzIHdpdGggZmxhZyBiaXRzCiAgICAgICAgYjIgPSBldi52YWx1ZS5jaGFyQ29kZUF0KDEpOwogICAgICAgIGIzID0gZXYudmFsdWUubGVuZ3RoID4gMiA/IGV2LnZhbHVlLmNoYXJDb2RlQXQoMikgOiAwOwogICAgICB9CiAgICAgIC8vIHNldCBmbGFncwogICAgICBlLmRpZ2l0YWxTaWduYXR1cmUgPSAoYjIgJiAweDgwKSA9PT0gMHg4MDsKICAgICAgZS5ub25SZXB1ZGlhdGlvbiA9IChiMiAmIDB4NDApID09PSAweDQwOwogICAgICBlLmtleUVuY2lwaGVybWVudCA9IChiMiAmIDB4MjApID09PSAweDIwOwogICAgICBlLmRhdGFFbmNpcGhlcm1lbnQgPSAoYjIgJiAweDEwKSA9PT0gMHgxMDsKICAgICAgZS5rZXlBZ3JlZW1lbnQgPSAoYjIgJiAweDA4KSA9PT0gMHgwODsKICAgICAgZS5rZXlDZXJ0U2lnbiA9IChiMiAmIDB4MDQpID09PSAweDA0OwogICAgICBlLmNSTFNpZ24gPSAoYjIgJiAweDAyKSA9PT0gMHgwMjsKICAgICAgZS5lbmNpcGhlck9ubHkgPSAoYjIgJiAweDAxKSA9PT0gMHgwMTsKICAgICAgZS5kZWNpcGhlck9ubHkgPSAoYjMgJiAweDgwKSA9PT0gMHg4MDsKICAgIH0gZWxzZSBpZihlLm5hbWUgPT09ICdiYXNpY0NvbnN0cmFpbnRzJykgewogICAgICAvLyBoYW5kbGUgYmFzaWMgY29uc3RyYWludHMKICAgICAgLy8gZ2V0IHZhbHVlIGFzIFNFUVVFTkNFCiAgICAgIHZhciBldiA9IGFzbjEuZnJvbURlcihlLnZhbHVlKTsKICAgICAgLy8gZ2V0IGNBIEJPT0xFQU4gZmxhZyAoZGVmYXVsdHMgdG8gZmFsc2UpCiAgICAgIGlmKGV2LnZhbHVlLmxlbmd0aCA+IDAgJiYgZXYudmFsdWVbMF0udHlwZSA9PT0gYXNuMS5UeXBlLkJPT0xFQU4pIHsKICAgICAgICBlLmNBID0gKGV2LnZhbHVlWzBdLnZhbHVlLmNoYXJDb2RlQXQoMCkgIT09IDB4MDApOwogICAgICB9IGVsc2UgewogICAgICAgIGUuY0EgPSBmYWxzZTsKICAgICAgfQogICAgICAvLyBnZXQgcGF0aCBsZW5ndGggY29uc3RyYWludAogICAgICB2YXIgdmFsdWUgPSBudWxsOwogICAgICBpZihldi52YWx1ZS5sZW5ndGggPiAwICYmIGV2LnZhbHVlWzBdLnR5cGUgPT09IGFzbjEuVHlwZS5JTlRFR0VSKSB7CiAgICAgICAgdmFsdWUgPSBldi52YWx1ZVswXS52YWx1ZTsKICAgICAgfSBlbHNlIGlmKGV2LnZhbHVlLmxlbmd0aCA+IDEpIHsKICAgICAgICB2YWx1ZSA9IGV2LnZhbHVlWzFdLnZhbHVlOwogICAgICB9CiAgICAgIGlmKHZhbHVlICE9PSBudWxsKSB7CiAgICAgICAgZS5wYXRoTGVuQ29uc3RyYWludCA9IGFzbjEuZGVyVG9JbnRlZ2VyKHZhbHVlKTsKICAgICAgfQogICAgfSBlbHNlIGlmKGUubmFtZSA9PT0gJ2V4dEtleVVzYWdlJykgewogICAgICAvLyBoYW5kbGUgZXh0S2V5VXNhZ2UKICAgICAgLy8gdmFsdWUgaXMgYSBTRVFVRU5DRSBvZiBPSURzCiAgICAgIHZhciBldiA9IGFzbjEuZnJvbURlcihlLnZhbHVlKTsKICAgICAgZm9yKHZhciB2aSA9IDA7IHZpIDwgZXYudmFsdWUubGVuZ3RoOyArK3ZpKSB7CiAgICAgICAgdmFyIG9pZCA9IGFzbjEuZGVyVG9PaWQoZXYudmFsdWVbdmldLnZhbHVlKTsKICAgICAgICBpZihvaWQgaW4gb2lkcykgewogICAgICAgICAgZVtvaWRzW29pZF1dID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZVtvaWRdID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSBpZihlLm5hbWUgPT09ICduc0NlcnRUeXBlJykgewogICAgICAvLyBoYW5kbGUgbnNDZXJ0VHlwZQogICAgICAvLyBnZXQgdmFsdWUgYXMgQklUIFNUUklORwogICAgICB2YXIgZXYgPSBhc24xLmZyb21EZXIoZS52YWx1ZSk7CiAgICAgIHZhciBiMiA9IDB4MDA7CiAgICAgIGlmKGV2LnZhbHVlLmxlbmd0aCA+IDEpIHsKICAgICAgICAvLyBza2lwIGZpcnN0IGJ5dGUsIGp1c3QgaW5kaWNhdGVzIHVudXNlZCBiaXRzIHdoaWNoCiAgICAgICAgLy8gd2lsbCBiZSBwYWRkZWQgd2l0aCAwcyBhbnl3YXkKICAgICAgICAvLyBnZXQgYnl0ZXMgd2l0aCBmbGFnIGJpdHMKICAgICAgICBiMiA9IGV2LnZhbHVlLmNoYXJDb2RlQXQoMSk7CiAgICAgIH0KICAgICAgLy8gc2V0IGZsYWdzCiAgICAgIGUuY2xpZW50ID0gKGIyICYgMHg4MCkgPT09IDB4ODA7CiAgICAgIGUuc2VydmVyID0gKGIyICYgMHg0MCkgPT09IDB4NDA7CiAgICAgIGUuZW1haWwgPSAoYjIgJiAweDIwKSA9PT0gMHgyMDsKICAgICAgZS5vYmpzaWduID0gKGIyICYgMHgxMCkgPT09IDB4MTA7CiAgICAgIGUucmVzZXJ2ZWQgPSAoYjIgJiAweDA4KSA9PT0gMHgwODsKICAgICAgZS5zc2xDQSA9IChiMiAmIDB4MDQpID09PSAweDA0OwogICAgICBlLmVtYWlsQ0EgPSAoYjIgJiAweDAyKSA9PT0gMHgwMjsKICAgICAgZS5vYmpDQSA9IChiMiAmIDB4MDEpID09PSAweDAxOwogICAgfSBlbHNlIGlmKAogICAgICBlLm5hbWUgPT09ICdzdWJqZWN0QWx0TmFtZScgfHwKICAgICAgZS5uYW1lID09PSAnaXNzdWVyQWx0TmFtZScpIHsKICAgICAgLy8gaGFuZGxlIHN1YmplY3RBbHROYW1lL2lzc3VlckFsdE5hbWUKICAgICAgZS5hbHROYW1lcyA9IFtdOwoKICAgICAgLy8gZXYgaXMgYSBTWU5UQVggU0VRVUVOQ0UKICAgICAgdmFyIGduOwogICAgICB2YXIgZXYgPSBhc24xLmZyb21EZXIoZS52YWx1ZSk7CiAgICAgIGZvcih2YXIgbiA9IDA7IG4gPCBldi52YWx1ZS5sZW5ndGg7ICsrbikgewogICAgICAgIC8vIGdldCBHZW5lcmFsTmFtZQogICAgICAgIGduID0gZXYudmFsdWVbbl07CgogICAgICAgIHZhciBhbHROYW1lID0gewogICAgICAgICAgdHlwZTogZ24udHlwZSwKICAgICAgICAgIHZhbHVlOiBnbi52YWx1ZQogICAgICAgIH07CiAgICAgICAgZS5hbHROYW1lcy5wdXNoKGFsdE5hbWUpOwoKICAgICAgICAvLyBOb3RlOiBTdXBwb3J0IGZvciB0eXBlcyAxLDIsNiw3LDgKICAgICAgICBzd2l0Y2goZ24udHlwZSkgewogICAgICAgIC8vIHJmYzgyMk5hbWUKICAgICAgICBjYXNlIDE6CiAgICAgICAgLy8gZE5TTmFtZQogICAgICAgIGNhc2UgMjoKICAgICAgICAvLyB1bmlmb3JtUmVzb3VyY2VJZGVudGlmaWVyIChVUkkpCiAgICAgICAgY2FzZSA2OgogICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gSVBBZGRyZXNzCiAgICAgICAgY2FzZSA3OgogICAgICAgICAgLy8gY29udmVydCB0byBJUHY0L0lQdjYgc3RyaW5nIHJlcHJlc2VudGF0aW9uCiAgICAgICAgICBhbHROYW1lLmlwID0gZm9yZ2UudXRpbC5ieXRlc1RvSVAoZ24udmFsdWUpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgLy8gcmVnaXN0ZXJlZElECiAgICAgICAgY2FzZSA4OgogICAgICAgICAgYWx0TmFtZS5vaWQgPSBhc24xLmRlclRvT2lkKGduLnZhbHVlKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAvLyB1bnN1cHBvcnRlZAogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIGlmKGUubmFtZSA9PT0gJ3N1YmplY3RLZXlJZGVudGlmaWVyJykgewogICAgICAvLyB2YWx1ZSBpcyBhbiBPQ1RFVFNUUklORyB3L3RoZSBoYXNoIG9mIHRoZSBrZXktdHlwZSBzcGVjaWZpYwogICAgICAvLyBwdWJsaWMga2V5IHN0cnVjdHVyZSAoZWc6IFJTQVB1YmxpY0tleSkKICAgICAgdmFyIGV2ID0gYXNuMS5mcm9tRGVyKGUudmFsdWUpOwogICAgICBlLnN1YmplY3RLZXlJZGVudGlmaWVyID0gZm9yZ2UudXRpbC5ieXRlc1RvSGV4KGV2LnZhbHVlKTsKICAgIH0KICB9CiAgcmV0dXJuIGU7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzEwIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogTm90ZTogSWYgdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdCBpcyB0byBiZSB2ZXJpZmllZCB0aGVuIGNvbXB1dGUgaGFzaAogKiBzaG91bGQgYmUgc2V0IHRvIHRydWUuIFRoZXJlIGlzIGN1cnJlbnRseSBubyBpbXBsZW1lbnRhdGlvbiBmb3IgY29udmVydGluZwogKiBhIGNlcnRpZmljYXRlIGJhY2sgdG8gQVNOLjEgc28gdGhlIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyBwYXJ0IG9mIHRoZQogKiBBU04uMSBvYmplY3QgbmVlZHMgdG8gYmUgc2Nhbm5lZCBiZWZvcmUgdGhlIGNzciBvYmplY3QgaXMgY3JlYXRlZC4KICoKICogQHBhcmFtIG9iaiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIFBLQ1MjMTAgY2VydGlmaWNhdGlvbiByZXF1ZXN0IChDU1IpLgogKiBAcGFyYW0gY29tcHV0ZUhhc2ggdHJ1ZSB0byBjb21wdXRlIHRoZSBoYXNoIGZvciB2ZXJpZmljYXRpb24uCiAqCiAqIEByZXR1cm4gdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdCAoQ1NSKS4KICovCnBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdEZyb21Bc24xID0gZnVuY3Rpb24ob2JqLCBjb21wdXRlSGFzaCkgewogIC8vIHZhbGlkYXRlIGNlcnRpZmljYXRpb24gcmVxdWVzdCBhbmQgY2FwdHVyZSBkYXRhCiAgdmFyIGNhcHR1cmUgPSB7fTsKICB2YXIgZXJyb3JzID0gW107CiAgaWYoIWFzbjEudmFsaWRhdGUob2JqLCBjZXJ0aWZpY2F0aW9uUmVxdWVzdFZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzEwIGNlcnRpZmljYXRlIHJlcXVlc3QuICcgKwogICAgICAnQVNOLjEgb2JqZWN0IGlzIG5vdCBhIFBLQ1MjMTAgQ2VydGlmaWNhdGlvblJlcXVlc3QuJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIGVuc3VyZSBzaWduYXR1cmUgaXMgbm90IGludGVycHJldGVkIGFzIGFuIGVtYmVkZGVkIEFTTi4xIG9iamVjdAogIGlmKHR5cGVvZiBjYXB0dXJlLmNzclNpZ25hdHVyZSAhPT0gJ3N0cmluZycpIHsKICAgIHZhciBjc3JTaWduYXR1cmUgPSAnXHgwMCc7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgY2FwdHVyZS5jc3JTaWduYXR1cmUubGVuZ3RoOyArK2kpIHsKICAgICAgY3NyU2lnbmF0dXJlICs9IGFzbjEudG9EZXIoY2FwdHVyZS5jc3JTaWduYXR1cmVbaV0pLmdldEJ5dGVzKCk7CiAgICB9CiAgICBjYXB0dXJlLmNzclNpZ25hdHVyZSA9IGNzclNpZ25hdHVyZTsKICB9CgogIC8vIGdldCBvaWQKICB2YXIgb2lkID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLnB1YmxpY0tleU9pZCk7CiAgaWYob2lkICE9PSBwa2kub2lkcy5yc2FFbmNyeXB0aW9uKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIHB1YmxpYyBrZXkuIE9JRCBpcyBub3QgUlNBLicpOwogIH0KCiAgLy8gY3JlYXRlIGNlcnRpZmljYXRpb24gcmVxdWVzdAogIHZhciBjc3IgPSBwa2kuY3JlYXRlQ2VydGlmaWNhdGlvblJlcXVlc3QoKTsKICBjc3IudmVyc2lvbiA9IGNhcHR1cmUuY3NyVmVyc2lvbiA/IGNhcHR1cmUuY3NyVmVyc2lvbi5jaGFyQ29kZUF0KDApIDogMDsKICBjc3Iuc2lnbmF0dXJlT2lkID0gZm9yZ2UuYXNuMS5kZXJUb09pZChjYXB0dXJlLmNzclNpZ25hdHVyZU9pZCk7CiAgY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMgPSBfcmVhZFNpZ25hdHVyZVBhcmFtZXRlcnMoCiAgICBjc3Iuc2lnbmF0dXJlT2lkLCBjYXB0dXJlLmNzclNpZ25hdHVyZVBhcmFtcywgdHJ1ZSk7CiAgY3NyLnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gZm9yZ2UuYXNuMS5kZXJUb09pZChjYXB0dXJlLmNzclNpZ25hdHVyZU9pZCk7CiAgY3NyLnNpZ2luZm8ucGFyYW1ldGVycyA9IF9yZWFkU2lnbmF0dXJlUGFyYW1ldGVycygKICAgIGNzci5zaWdpbmZvLmFsZ29yaXRobU9pZCwgY2FwdHVyZS5jc3JTaWduYXR1cmVQYXJhbXMsIGZhbHNlKTsKICAvLyBza2lwICJ1bnVzZWQgYml0cyIgaW4gc2lnbmF0dXJlIHZhbHVlIEJJVFNUUklORwogIHZhciBzaWduYXR1cmUgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjYXB0dXJlLmNzclNpZ25hdHVyZSk7CiAgKytzaWduYXR1cmUucmVhZDsKICBjc3Iuc2lnbmF0dXJlID0gc2lnbmF0dXJlLmdldEJ5dGVzKCk7CgogIC8vIGtlZXAgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHRvIHByZXNlcnZlIHNpZ25hdHVyZSB3aGVuIGV4cG9ydGluZwogIGNzci5jZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8gPSBjYXB0dXJlLmNlcnRpZmljYXRpb25SZXF1ZXN0SW5mbzsKCiAgaWYoY29tcHV0ZUhhc2gpIHsKICAgIC8vIGNoZWNrIHNpZ25hdHVyZSBPSUQgZm9yIHN1cHBvcnRlZCBzaWduYXR1cmUgdHlwZXMKICAgIGNzci5tZCA9IG51bGw7CiAgICBpZihjc3Iuc2lnbmF0dXJlT2lkIGluIG9pZHMpIHsKICAgICAgdmFyIG9pZCA9IG9pZHNbY3NyLnNpZ25hdHVyZU9pZF07CiAgICAgIHN3aXRjaChvaWQpIHsKICAgICAgY2FzZSAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICBjc3IubWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdtZDVXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY3NyLm1kID0gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY3NyLm1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdzaGE1MTJXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgY3NyLm1kID0gZm9yZ2UubWQuc2hhNTEyLmNyZWF0ZSgpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICdSU0FTU0EtUFNTJzoKICAgICAgICBjc3IubWQgPSBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGlmKGNzci5tZCA9PT0gbnVsbCkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb21wdXRlIGNlcnRpZmljYXRpb24gcmVxdWVzdCBkaWdlc3QuICcgKwogICAgICAgICdVbmtub3duIHNpZ25hdHVyZSBPSUQuJyk7CiAgICAgIGVycm9yLnNpZ25hdHVyZU9pZCA9IGNzci5zaWduYXR1cmVPaWQ7CiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIC8vIHByb2R1Y2UgREVSIGZvcm1hdHRlZCBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8gYW5kIGRpZ2VzdCBpdAogICAgdmFyIGJ5dGVzID0gYXNuMS50b0Rlcihjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvKTsKICAgIGNzci5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgfQoKICAvLyBoYW5kbGUgc3ViamVjdCwgYnVpbGQgc3ViamVjdCBtZXNzYWdlIGRpZ2VzdAogIHZhciBzbWQgPSBmb3JnZS5tZC5zaGExLmNyZWF0ZSgpOwogIGNzci5zdWJqZWN0LmdldEZpZWxkID0gZnVuY3Rpb24oc24pIHsKICAgIHJldHVybiBfZ2V0QXR0cmlidXRlKGNzci5zdWJqZWN0LCBzbik7CiAgfTsKICBjc3Iuc3ViamVjdC5hZGRGaWVsZCA9IGZ1bmN0aW9uKGF0dHIpIHsKICAgIF9maWxsTWlzc2luZ0ZpZWxkcyhbYXR0cl0pOwogICAgY3NyLnN1YmplY3QuYXR0cmlidXRlcy5wdXNoKGF0dHIpOwogIH07CiAgY3NyLnN1YmplY3QuYXR0cmlidXRlcyA9IHBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheSgKICAgIGNhcHR1cmUuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvU3ViamVjdCwgc21kKTsKICBjc3Iuc3ViamVjdC5oYXNoID0gc21kLmRpZ2VzdCgpLnRvSGV4KCk7CgogIC8vIGNvbnZlcnQgUlNBIHB1YmxpYyBrZXkgZnJvbSBBU04uMQogIGNzci5wdWJsaWNLZXkgPSBwa2kucHVibGljS2V5RnJvbUFzbjEoY2FwdHVyZS5zdWJqZWN0UHVibGljS2V5SW5mbyk7CgogIC8vIGNvbnZlcnQgYXR0cmlidXRlcyBmcm9tIEFTTi4xCiAgY3NyLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjc3IsIHNuKTsKICB9OwogIGNzci5hZGRBdHRyaWJ1dGUgPSBmdW5jdGlvbihhdHRyKSB7CiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoW2F0dHJdKTsKICAgIGNzci5hdHRyaWJ1dGVzLnB1c2goYXR0cik7CiAgfTsKICBjc3IuYXR0cmlidXRlcyA9IHBraS5DUklBdHRyaWJ1dGVzQXNBcnJheSgKICAgIGNhcHR1cmUuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvQXR0cmlidXRlcyB8fCBbXSk7CgogIHJldHVybiBjc3I7Cn07CgovKioKICogQ3JlYXRlcyBhbiBlbXB0eSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgKGEgQ1NSIG9yIGNlcnRpZmljYXRlIHNpZ25pbmcKICogcmVxdWVzdCkuIE9uY2UgY3JlYXRlZCwgaXRzIHB1YmxpYyBrZXkgYW5kIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCBhbmQgdGhlbgogKiBpdCBjYW4gYmUgc2lnbmVkLgogKgogKiBAcmV0dXJuIHRoZSBlbXB0eSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAqLwpwa2kuY3JlYXRlQ2VydGlmaWNhdGlvblJlcXVlc3QgPSBmdW5jdGlvbigpIHsKICB2YXIgY3NyID0ge307CiAgY3NyLnZlcnNpb24gPSAweDAwOwogIGNzci5zaWduYXR1cmVPaWQgPSBudWxsOwogIGNzci5zaWduYXR1cmUgPSBudWxsOwogIGNzci5zaWdpbmZvID0ge307CiAgY3NyLnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gbnVsbDsKCiAgY3NyLnN1YmplY3QgPSB7fTsKICBjc3Iuc3ViamVjdC5nZXRGaWVsZCA9IGZ1bmN0aW9uKHNuKSB7CiAgICByZXR1cm4gX2dldEF0dHJpYnV0ZShjc3Iuc3ViamVjdCwgc24pOwogIH07CiAgY3NyLnN1YmplY3QuYWRkRmllbGQgPSBmdW5jdGlvbihhdHRyKSB7CiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoW2F0dHJdKTsKICAgIGNzci5zdWJqZWN0LmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNzci5zdWJqZWN0LmF0dHJpYnV0ZXMgPSBbXTsKICBjc3Iuc3ViamVjdC5oYXNoID0gbnVsbDsKCiAgY3NyLnB1YmxpY0tleSA9IG51bGw7CiAgY3NyLmF0dHJpYnV0ZXMgPSBbXTsKICBjc3IuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24oc24pIHsKICAgIHJldHVybiBfZ2V0QXR0cmlidXRlKGNzciwgc24pOwogIH07CiAgY3NyLmFkZEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKGF0dHIpIHsKICAgIF9maWxsTWlzc2luZ0ZpZWxkcyhbYXR0cl0pOwogICAgY3NyLmF0dHJpYnV0ZXMucHVzaChhdHRyKTsKICB9OwogIGNzci5tZCA9IG51bGw7CgogIC8qKgogICAqIFNldHMgdGhlIHN1YmplY3Qgb2YgdGhpcyBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAgICoKICAgKiBAcGFyYW0gYXR0cnMgdGhlIGFycmF5IG9mIHN1YmplY3QgYXR0cmlidXRlcyB0byB1c2UuCiAgICovCiAgY3NyLnNldFN1YmplY3QgPSBmdW5jdGlvbihhdHRycykgewogICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoYXR0cnMpOwogICAgY3NyLnN1YmplY3QuYXR0cmlidXRlcyA9IGF0dHJzOwogICAgY3NyLnN1YmplY3QuaGFzaCA9IG51bGw7CiAgfTsKCiAgLyoqCiAgICogU2V0cyB0aGUgYXR0cmlidXRlcyBvZiB0aGlzIGNlcnRpZmljYXRpb24gcmVxdWVzdC4KICAgKgogICAqIEBwYXJhbSBhdHRycyB0aGUgYXJyYXkgb2YgYXR0cmlidXRlcyB0byB1c2UuCiAgICovCiAgY3NyLnNldEF0dHJpYnV0ZXMgPSBmdW5jdGlvbihhdHRycykgewogICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCiAgICBfZmlsbE1pc3NpbmdGaWVsZHMoYXR0cnMpOwogICAgY3NyLmF0dHJpYnV0ZXMgPSBhdHRyczsKICB9OwoKICAvKioKICAgKiBTaWducyB0aGlzIGNlcnRpZmljYXRpb24gcmVxdWVzdCB1c2luZyB0aGUgZ2l2ZW4gcHJpdmF0ZSBrZXkuCiAgICoKICAgKiBAcGFyYW0ga2V5IHRoZSBwcml2YXRlIGtleSB0byBzaWduIHdpdGguCiAgICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCBvYmplY3QgdG8gdXNlIChkZWZhdWx0cyB0byBmb3JnZS5tZC5zaGExKS4KICAgKi8KICBjc3Iuc2lnbiA9IGZ1bmN0aW9uKGtleSwgbWQpIHsKICAgIC8vIFRPRE86IGdldCBzaWduYXR1cmUgT0lEIGZyb20gcHJpdmF0ZSBrZXkKICAgIGNzci5tZCA9IG1kIHx8IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICB2YXIgYWxnb3JpdGhtT2lkID0gb2lkc1tjc3IubWQuYWxnb3JpdGhtICsgJ1dpdGhSU0FFbmNyeXB0aW9uJ107CiAgICBpZighYWxnb3JpdGhtT2lkKSB7CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbXB1dGUgY2VydGlmaWNhdGlvbiByZXF1ZXN0IGRpZ2VzdC4gJyArCiAgICAgICAgJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QgYWxnb3JpdGhtIE9JRC4nKTsKICAgICAgZXJyb3IuYWxnb3JpdGhtID0gY3NyLm1kLmFsZ29yaXRobTsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CiAgICBjc3Iuc2lnbmF0dXJlT2lkID0gY3NyLnNpZ2luZm8uYWxnb3JpdGhtT2lkID0gYWxnb3JpdGhtT2lkOwoKICAgIC8vIGdldCBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8sIGNvbnZlcnQgdG8gREVSCiAgICBjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvID0gcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyhjc3IpOwogICAgdmFyIGJ5dGVzID0gYXNuMS50b0Rlcihjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvKTsKCiAgICAvLyBkaWdlc3QgYW5kIHNpZ24KICAgIGNzci5tZC51cGRhdGUoYnl0ZXMuZ2V0Qnl0ZXMoKSk7CiAgICBjc3Iuc2lnbmF0dXJlID0ga2V5LnNpZ24oY3NyLm1kKTsKICB9OwoKICAvKioKICAgKiBBdHRlbXB0cyB2ZXJpZnkgdGhlIHNpZ25hdHVyZSBvbiB0aGUgcGFzc2VkIGNlcnRpZmljYXRpb24gcmVxdWVzdCB1c2luZwogICAqIGl0cyBwdWJsaWMga2V5LgogICAqCiAgICogQSBDU1IgdGhhdCBoYXMgYmVlbiBleHBvcnRlZCB0byBhIGZpbGUgaW4gUEVNIGZvcm1hdCBjYW4gYmUgdmVyaWZpZWQgdXNpbmcKICAgKiBPcGVuU1NMIHVzaW5nIHRoaXMgY29tbWFuZDoKICAgKgogICAqIG9wZW5zc2wgcmVxIC1pbiA8dGhlLWNzci1wZW0tZmlsZT4gLXZlcmlmeSAtbm9vdXQgLXRleHQKICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB2ZXJpZmllZCwgZmFsc2UgaWYgbm90LgogICAqLwogIGNzci52ZXJpZnkgPSBmdW5jdGlvbigpIHsKICAgIHZhciBydmFsID0gZmFsc2U7CgogICAgdmFyIG1kID0gY3NyLm1kOwogICAgaWYobWQgPT09IG51bGwpIHsKICAgICAgLy8gY2hlY2sgc2lnbmF0dXJlIE9JRCBmb3Igc3VwcG9ydGVkIHNpZ25hdHVyZSB0eXBlcwogICAgICBpZihjc3Iuc2lnbmF0dXJlT2lkIGluIG9pZHMpIHsKICAgICAgICAvLyBUT0RPOiBjcmVhdGUgRFJZIGBPSUQgdG8gbWRgIGZ1bmN0aW9uCiAgICAgICAgdmFyIG9pZCA9IG9pZHNbY3NyLnNpZ25hdHVyZU9pZF07CiAgICAgICAgc3dpdGNoKG9pZCkgewogICAgICAgIGNhc2UgJ3NoYTFXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgICBtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdtZDVXaXRoUlNBRW5jcnlwdGlvbic6CiAgICAgICAgICBtZCA9IGZvcmdlLm1kLm1kNS5jcmVhdGUoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3NoYTI1NldpdGhSU0FFbmNyeXB0aW9uJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnc2hhNTEyV2l0aFJTQUVuY3J5cHRpb24nOgogICAgICAgICAgbWQgPSBmb3JnZS5tZC5zaGE1MTIuY3JlYXRlKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdSU0FTU0EtUFNTJzoKICAgICAgICAgIG1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmKG1kID09PSBudWxsKSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDb3VsZCBub3QgY29tcHV0ZSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QgZGlnZXN0LiAnICsKICAgICAgICAgICdVbmtub3duIHNpZ25hdHVyZSBPSUQuJyk7CiAgICAgICAgZXJyb3Iuc2lnbmF0dXJlT2lkID0gY3NyLnNpZ25hdHVyZU9pZDsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQoKICAgICAgLy8gcHJvZHVjZSBERVIgZm9ybWF0dGVkIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyBhbmQgZGlnZXN0IGl0CiAgICAgIHZhciBjcmkgPSBjc3IuY2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHx8CiAgICAgICAgcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyhjc3IpOwogICAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNyaSk7CiAgICAgIG1kLnVwZGF0ZShieXRlcy5nZXRCeXRlcygpKTsKICAgIH0KCiAgICBpZihtZCAhPT0gbnVsbCkgewogICAgICB2YXIgc2NoZW1lOwoKICAgICAgc3dpdGNoKGNzci5zaWduYXR1cmVPaWQpIHsKICAgICAgY2FzZSBvaWRzLnNoYTFXaXRoUlNBRW5jcnlwdGlvbjoKICAgICAgICAvKiB1c2UgUEtDUyMxIHYxLjUgcGFkZGluZyBzY2hlbWUgKi8KICAgICAgICBicmVhazsKICAgICAgY2FzZSBvaWRzWydSU0FTU0EtUFNTJ106CiAgICAgICAgdmFyIGhhc2gsIG1nZjsKCiAgICAgICAgLyogaW5pdGlhbGl6ZSBtZ2YgKi8KICAgICAgICBoYXNoID0gb2lkc1tjc3Iuc2lnbmF0dXJlUGFyYW1ldGVycy5tZ2YuaGFzaC5hbGdvcml0aG1PaWRdOwogICAgICAgIGlmKGhhc2ggPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZFtoYXNoXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE1HRiBoYXNoIGZ1bmN0aW9uLicpOwogICAgICAgICAgZXJyb3Iub2lkID0gY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmhhc2guYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IGhhc2g7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIG1nZiA9IG9pZHNbY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMubWdmLmFsZ29yaXRobU9pZF07CiAgICAgICAgaWYobWdmID09PSB1bmRlZmluZWQgfHwgZm9yZ2UubWdmW21nZl0gPT09IHVuZGVmaW5lZCkgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBNR0YgZnVuY3Rpb24uJyk7CiAgICAgICAgICBlcnJvci5vaWQgPSBjc3Iuc2lnbmF0dXJlUGFyYW1ldGVycy5tZ2YuYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IG1nZjsKICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgIH0KCiAgICAgICAgbWdmID0gZm9yZ2UubWdmW21nZl0uY3JlYXRlKGZvcmdlLm1kW2hhc2hdLmNyZWF0ZSgpKTsKCiAgICAgICAgLyogaW5pdGlhbGl6ZSBoYXNoIGZ1bmN0aW9uICovCiAgICAgICAgaGFzaCA9IG9pZHNbY3NyLnNpZ25hdHVyZVBhcmFtZXRlcnMuaGFzaC5hbGdvcml0aG1PaWRdOwogICAgICAgIGlmKGhhc2ggPT09IHVuZGVmaW5lZCB8fCBmb3JnZS5tZFtoYXNoXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIFJTQVNTQS1QU1MgaGFzaCBmdW5jdGlvbi4nKTsKICAgICAgICAgIGVycm9yLm9pZCA9IGNzci5zaWduYXR1cmVQYXJhbWV0ZXJzLmhhc2guYWxnb3JpdGhtT2lkOwogICAgICAgICAgZXJyb3IubmFtZSA9IGhhc2g7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CgogICAgICAgIHNjaGVtZSA9IGZvcmdlLnBzcy5jcmVhdGUoZm9yZ2UubWRbaGFzaF0uY3JlYXRlKCksIG1nZiwKICAgICAgICAgIGNzci5zaWduYXR1cmVQYXJhbWV0ZXJzLnNhbHRMZW5ndGgpOwogICAgICAgIGJyZWFrOwogICAgICB9CgogICAgICAvLyB2ZXJpZnkgc2lnbmF0dXJlIG9uIGNzciB1c2luZyBpdHMgcHVibGljIGtleQogICAgICBydmFsID0gY3NyLnB1YmxpY0tleS52ZXJpZnkoCiAgICAgICAgbWQuZGlnZXN0KCkuZ2V0Qnl0ZXMoKSwgY3NyLnNpZ25hdHVyZSwgc2NoZW1lKTsKICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICByZXR1cm4gY3NyOwp9OwoKLyoqCiAqIENvbnZlcnRzIGFuIFguNTA5IHN1YmplY3Qgb3IgaXNzdWVyIHRvIGFuIEFTTi4xIFJETlNlcXVlbmNlLgogKgogKiBAcGFyYW0gb2JqIHRoZSBzdWJqZWN0IG9yIGlzc3VlciAoZGlzdGluZ3Vpc2hlZCBuYW1lKS4KICoKICogQHJldHVybiB0aGUgQVNOLjEgUkROU2VxdWVuY2UuCiAqLwpmdW5jdGlvbiBfZG5Ub0FzbjEob2JqKSB7CiAgLy8gY3JlYXRlIGFuIGVtcHR5IFJETlNlcXVlbmNlCiAgdmFyIHJ2YWwgPSBhc24xLmNyZWF0ZSgKICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFtdKTsKCiAgLy8gaXRlcmF0ZSBvdmVyIGF0dHJpYnV0ZXMKICB2YXIgYXR0ciwgc2V0OwogIHZhciBhdHRycyA9IG9iai5hdHRyaWJ1dGVzOwogIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkgewogICAgYXR0ciA9IGF0dHJzW2ldOwogICAgdmFyIHZhbHVlID0gYXR0ci52YWx1ZTsKCiAgICAvLyByZXVzZSB0YWcgY2xhc3MgZm9yIGF0dHJpYnV0ZSB2YWx1ZSBpZiBhdmFpbGFibGUKICAgIHZhciB2YWx1ZVRhZ0NsYXNzID0gYXNuMS5UeXBlLlBSSU5UQUJMRVNUUklORzsKICAgIGlmKCd2YWx1ZVRhZ0NsYXNzJyBpbiBhdHRyKSB7CiAgICAgIHZhbHVlVGFnQ2xhc3MgPSBhdHRyLnZhbHVlVGFnQ2xhc3M7CgogICAgICBpZih2YWx1ZVRhZ0NsYXNzID09PSBhc24xLlR5cGUuVVRGOCkgewogICAgICAgIHZhbHVlID0gZm9yZ2UudXRpbC5lbmNvZGVVdGY4KHZhbHVlKTsKICAgICAgfQogICAgICAvLyBGSVhNRTogaGFuZGxlIG1vcmUgZW5jb2RpbmdzCiAgICB9CgogICAgLy8gY3JlYXRlIGEgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSBzZXQKICAgIC8vIGVhY2ggdmFsdWUgaW4gdGhlIHNldCBpcyBhbiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgZmlyc3QKICAgIC8vIGNvbnRhaW5pbmcgdGhlIHR5cGUgKGFuIE9JRCkgYW5kIHNlY29uZCB0aGUgdmFsdWUKICAgIHNldCA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBbCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAvLyBBdHRyaWJ1dGVUeXBlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0RlcihhdHRyLnR5cGUpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIEF0dHJpYnV0ZVZhbHVlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIHZhbHVlVGFnQ2xhc3MsIGZhbHNlLCB2YWx1ZSkKICAgICAgXSkKICAgIF0pOwogICAgcnZhbC52YWx1ZS5wdXNoKHNldCk7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEdldHMgYWxsIHByaW50YWJsZSBhdHRyaWJ1dGVzICh0eXBpY2FsbHkgb2YgYW4gaXNzdWVyIG9yIHN1YmplY3QpIGluIGEKICogc2ltcGxpZmllZCBKU09OIGZvcm1hdCBmb3IgZGlzcGxheS4KICoKICogQHBhcmFtIGF0dHJzIHRoZSBhdHRyaWJ1dGVzLgogKgogKiBAcmV0dXJuIHRoZSBKU09OIGZvciBkaXNwbGF5LgogKi8KZnVuY3Rpb24gX2dldEF0dHJpYnV0ZXNBc0pzb24oYXR0cnMpIHsKICB2YXIgcnZhbCA9IHt9OwogIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkgewogICAgdmFyIGF0dHIgPSBhdHRyc1tpXTsKICAgIGlmKGF0dHIuc2hvcnROYW1lICYmICgKICAgICAgYXR0ci52YWx1ZVRhZ0NsYXNzID09PSBhc24xLlR5cGUuVVRGOCB8fAogICAgICBhdHRyLnZhbHVlVGFnQ2xhc3MgPT09IGFzbjEuVHlwZS5QUklOVEFCTEVTVFJJTkcgfHwKICAgICAgYXR0ci52YWx1ZVRhZ0NsYXNzID09PSBhc24xLlR5cGUuSUE1U1RSSU5HKSkgewogICAgICB2YXIgdmFsdWUgPSBhdHRyLnZhbHVlOwogICAgICBpZihhdHRyLnZhbHVlVGFnQ2xhc3MgPT09IGFzbjEuVHlwZS5VVEY4KSB7CiAgICAgICAgdmFsdWUgPSBmb3JnZS51dGlsLmVuY29kZVV0ZjgoYXR0ci52YWx1ZSk7CiAgICAgIH0KICAgICAgaWYoIShhdHRyLnNob3J0TmFtZSBpbiBydmFsKSkgewogICAgICAgIHJ2YWxbYXR0ci5zaG9ydE5hbWVdID0gdmFsdWU7CiAgICAgIH0gZWxzZSBpZihmb3JnZS51dGlsLmlzQXJyYXkocnZhbFthdHRyLnNob3J0TmFtZV0pKSB7CiAgICAgICAgcnZhbFthdHRyLnNob3J0TmFtZV0ucHVzaCh2YWx1ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcnZhbFthdHRyLnNob3J0TmFtZV0gPSBbcnZhbFthdHRyLnNob3J0TmFtZV0sIHZhbHVlXTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEZpbGxzIGluIG1pc3NpbmcgZmllbGRzIGluIGF0dHJpYnV0ZXMuCiAqCiAqIEBwYXJhbSBhdHRycyB0aGUgYXR0cmlidXRlcyB0byBmaWxsIG1pc3NpbmcgZmllbGRzIGluLgogKi8KZnVuY3Rpb24gX2ZpbGxNaXNzaW5nRmllbGRzKGF0dHJzKSB7CiAgdmFyIGF0dHI7CiAgZm9yKHZhciBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgKytpKSB7CiAgICBhdHRyID0gYXR0cnNbaV07CgogICAgLy8gcG9wdWxhdGUgbWlzc2luZyBuYW1lCiAgICBpZih0eXBlb2YgYXR0ci5uYW1lID09PSAndW5kZWZpbmVkJykgewogICAgICBpZihhdHRyLnR5cGUgJiYgYXR0ci50eXBlIGluIHBraS5vaWRzKSB7CiAgICAgICAgYXR0ci5uYW1lID0gcGtpLm9pZHNbYXR0ci50eXBlXTsKICAgICAgfSBlbHNlIGlmKGF0dHIuc2hvcnROYW1lICYmIGF0dHIuc2hvcnROYW1lIGluIF9zaG9ydE5hbWVzKSB7CiAgICAgICAgYXR0ci5uYW1lID0gcGtpLm9pZHNbX3Nob3J0TmFtZXNbYXR0ci5zaG9ydE5hbWVdXTsKICAgICAgfQogICAgfQoKICAgIC8vIHBvcHVsYXRlIG1pc3NpbmcgdHlwZSAoT0lEKQogICAgaWYodHlwZW9mIGF0dHIudHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgaWYoYXR0ci5uYW1lICYmIGF0dHIubmFtZSBpbiBwa2kub2lkcykgewogICAgICAgIGF0dHIudHlwZSA9IHBraS5vaWRzW2F0dHIubmFtZV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdBdHRyaWJ1dGUgdHlwZSBub3Qgc3BlY2lmaWVkLicpOwogICAgICAgIGVycm9yLmF0dHJpYnV0ZSA9IGF0dHI7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KICAgIH0KCiAgICAvLyBwb3B1bGF0ZSBtaXNzaW5nIHNob3J0bmFtZQogICAgaWYodHlwZW9mIGF0dHIuc2hvcnROYW1lID09PSAndW5kZWZpbmVkJykgewogICAgICBpZihhdHRyLm5hbWUgJiYgYXR0ci5uYW1lIGluIF9zaG9ydE5hbWVzKSB7CiAgICAgICAgYXR0ci5zaG9ydE5hbWUgPSBfc2hvcnROYW1lc1thdHRyLm5hbWVdOwogICAgICB9CiAgICB9CgogICAgLy8gY29udmVydCBleHRlbnNpb25zIHRvIHZhbHVlCiAgICBpZihhdHRyLnR5cGUgPT09IG9pZHMuZXh0ZW5zaW9uUmVxdWVzdCkgewogICAgICBhdHRyLnZhbHVlQ29uc3RydWN0ZWQgPSB0cnVlOwogICAgICBhdHRyLnZhbHVlVGFnQ2xhc3MgPSBhc24xLlR5cGUuU0VRVUVOQ0U7CiAgICAgIGlmKCFhdHRyLnZhbHVlICYmIGF0dHIuZXh0ZW5zaW9ucykgewogICAgICAgIGF0dHIudmFsdWUgPSBbXTsKICAgICAgICBmb3IodmFyIGVpID0gMDsgZWkgPCBhdHRyLmV4dGVuc2lvbnMubGVuZ3RoOyArK2VpKSB7CiAgICAgICAgICBhdHRyLnZhbHVlLnB1c2gocGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uVG9Bc24xKAogICAgICAgICAgICBfZmlsbE1pc3NpbmdFeHRlbnNpb25GaWVsZHMoYXR0ci5leHRlbnNpb25zW2VpXSkpKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBpZih0eXBlb2YgYXR0ci52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdBdHRyaWJ1dGUgdmFsdWUgbm90IHNwZWNpZmllZC4nKTsKICAgICAgZXJyb3IuYXR0cmlidXRlID0gYXR0cjsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CiAgfQp9CgovKioKICogRmlsbHMgaW4gbWlzc2luZyBmaWVsZHMgaW4gY2VydGlmaWNhdGUgZXh0ZW5zaW9ucy4KICoKICogQHBhcmFtIGUgdGhlIGV4dGVuc2lvbi4KICogQHBhcmFtIFtvcHRpb25zXSB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIFtjZXJ0XSB0aGUgY2VydGlmaWNhdGUgdGhlIGV4dGVuc2lvbnMgYXJlIGZvci4KICoKICogQHJldHVybiB0aGUgZXh0ZW5zaW9uLgogKi8KZnVuY3Rpb24gX2ZpbGxNaXNzaW5nRXh0ZW5zaW9uRmllbGRzKGUsIG9wdGlvbnMpIHsKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgLy8gcG9wdWxhdGUgbWlzc2luZyBuYW1lCiAgaWYodHlwZW9mIGUubmFtZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGlmKGUuaWQgJiYgZS5pZCBpbiBwa2kub2lkcykgewogICAgICBlLm5hbWUgPSBwa2kub2lkc1tlLmlkXTsKICAgIH0KICB9CgogIC8vIHBvcHVsYXRlIG1pc3NpbmcgaWQKICBpZih0eXBlb2YgZS5pZCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIGlmKGUubmFtZSAmJiBlLm5hbWUgaW4gcGtpLm9pZHMpIHsKICAgICAgZS5pZCA9IHBraS5vaWRzW2UubmFtZV07CiAgICB9IGVsc2UgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0V4dGVuc2lvbiBJRCBub3Qgc3BlY2lmaWVkLicpOwogICAgICBlcnJvci5leHRlbnNpb24gPSBlOwogICAgICB0aHJvdyBlcnJvcjsKICAgIH0KICB9CgogIGlmKHR5cGVvZiBlLnZhbHVlICE9PSAndW5kZWZpbmVkJykgewogICAgcmV0dXJuIGU7CiAgfQoKICAvLyBoYW5kbGUgbWlzc2luZyB2YWx1ZToKCiAgLy8gdmFsdWUgaXMgYSBCSVQgU1RSSU5HCiAgaWYoZS5uYW1lID09PSAna2V5VXNhZ2UnKSB7CiAgICAvLyBidWlsZCBmbGFncwogICAgdmFyIHVudXNlZCA9IDA7CiAgICB2YXIgYjIgPSAweDAwOwogICAgdmFyIGIzID0gMHgwMDsKICAgIGlmKGUuZGlnaXRhbFNpZ25hdHVyZSkgewogICAgICBiMiB8PSAweDgwOwogICAgICB1bnVzZWQgPSA3OwogICAgfQogICAgaWYoZS5ub25SZXB1ZGlhdGlvbikgewogICAgICBiMiB8PSAweDQwOwogICAgICB1bnVzZWQgPSA2OwogICAgfQogICAgaWYoZS5rZXlFbmNpcGhlcm1lbnQpIHsKICAgICAgYjIgfD0gMHgyMDsKICAgICAgdW51c2VkID0gNTsKICAgIH0KICAgIGlmKGUuZGF0YUVuY2lwaGVybWVudCkgewogICAgICBiMiB8PSAweDEwOwogICAgICB1bnVzZWQgPSA0OwogICAgfQogICAgaWYoZS5rZXlBZ3JlZW1lbnQpIHsKICAgICAgYjIgfD0gMHgwODsKICAgICAgdW51c2VkID0gMzsKICAgIH0KICAgIGlmKGUua2V5Q2VydFNpZ24pIHsKICAgICAgYjIgfD0gMHgwNDsKICAgICAgdW51c2VkID0gMjsKICAgIH0KICAgIGlmKGUuY1JMU2lnbikgewogICAgICBiMiB8PSAweDAyOwogICAgICB1bnVzZWQgPSAxOwogICAgfQogICAgaWYoZS5lbmNpcGhlck9ubHkpIHsKICAgICAgYjIgfD0gMHgwMTsKICAgICAgdW51c2VkID0gMDsKICAgIH0KICAgIGlmKGUuZGVjaXBoZXJPbmx5KSB7CiAgICAgIGIzIHw9IDB4ODA7CiAgICAgIHVudXNlZCA9IDc7CiAgICB9CgogICAgLy8gY3JlYXRlIGJpdCBzdHJpbmcKICAgIHZhciB2YWx1ZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodW51c2VkKTsKICAgIGlmKGIzICE9PSAwKSB7CiAgICAgIHZhbHVlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYjIpICsgU3RyaW5nLmZyb21DaGFyQ29kZShiMyk7CiAgICB9IGVsc2UgaWYoYjIgIT09IDApIHsKICAgICAgdmFsdWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiMik7CiAgICB9CiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuQklUU1RSSU5HLCBmYWxzZSwgdmFsdWUpOwogIH0gZWxzZSBpZihlLm5hbWUgPT09ICdiYXNpY0NvbnN0cmFpbnRzJykgewogICAgLy8gYmFzaWNDb25zdHJhaW50cyBpcyBhIFNFUVVFTkNFCiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFtdKTsKICAgIC8vIGNBIEJPT0xFQU4gZmxhZyBkZWZhdWx0cyB0byBmYWxzZQogICAgaWYoZS5jQSkgewogICAgICBlLnZhbHVlLnZhbHVlLnB1c2goYXNuMS5jcmVhdGUoCiAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CT09MRUFOLCBmYWxzZSwKICAgICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkYpKSk7CiAgICB9CiAgICBpZigncGF0aExlbkNvbnN0cmFpbnQnIGluIGUpIHsKICAgICAgZS52YWx1ZS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoZS5wYXRoTGVuQ29uc3RyYWludCkuZ2V0Qnl0ZXMoKSkpOwogICAgfQogIH0gZWxzZSBpZihlLm5hbWUgPT09ICdleHRLZXlVc2FnZScpIHsKICAgIC8vIGV4dEtleVVzYWdlIGlzIGEgU0VRVUVOQ0Ugb2YgT0lEcwogICAgZS52YWx1ZSA9IGFzbjEuY3JlYXRlKAogICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CiAgICB2YXIgc2VxID0gZS52YWx1ZS52YWx1ZTsKICAgIGZvcih2YXIga2V5IGluIGUpIHsKICAgICAgaWYoZVtrZXldICE9PSB0cnVlKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgLy8ga2V5IGlzIG5hbWUgaW4gT0lEIG1hcAogICAgICBpZihrZXkgaW4gb2lkcykgewogICAgICAgIHNlcS5wdXNoKGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELAogICAgICAgICAgZmFsc2UsIGFzbjEub2lkVG9EZXIob2lkc1trZXldKS5nZXRCeXRlcygpKSk7CiAgICAgIH0gZWxzZSBpZihrZXkuaW5kZXhPZignLicpICE9PSAtMSkgewogICAgICAgIC8vIGFzc3VtZSBrZXkgaXMgYW4gT0lECiAgICAgICAgc2VxLnB1c2goYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsCiAgICAgICAgICBmYWxzZSwgYXNuMS5vaWRUb0RlcihrZXkpLmdldEJ5dGVzKCkpKTsKICAgICAgfQogICAgfQogIH0gZWxzZSBpZihlLm5hbWUgPT09ICduc0NlcnRUeXBlJykgewogICAgLy8gbnNDZXJ0VHlwZSBpcyBhIEJJVCBTVFJJTkcKICAgIC8vIGJ1aWxkIGZsYWdzCiAgICB2YXIgdW51c2VkID0gMDsKICAgIHZhciBiMiA9IDB4MDA7CgogICAgaWYoZS5jbGllbnQpIHsKICAgICAgYjIgfD0gMHg4MDsKICAgICAgdW51c2VkID0gNzsKICAgIH0KICAgIGlmKGUuc2VydmVyKSB7CiAgICAgIGIyIHw9IDB4NDA7CiAgICAgIHVudXNlZCA9IDY7CiAgICB9CiAgICBpZihlLmVtYWlsKSB7CiAgICAgIGIyIHw9IDB4MjA7CiAgICAgIHVudXNlZCA9IDU7CiAgICB9CiAgICBpZihlLm9ianNpZ24pIHsKICAgICAgYjIgfD0gMHgxMDsKICAgICAgdW51c2VkID0gNDsKICAgIH0KICAgIGlmKGUucmVzZXJ2ZWQpIHsKICAgICAgYjIgfD0gMHgwODsKICAgICAgdW51c2VkID0gMzsKICAgIH0KICAgIGlmKGUuc3NsQ0EpIHsKICAgICAgYjIgfD0gMHgwNDsKICAgICAgdW51c2VkID0gMjsKICAgIH0KICAgIGlmKGUuZW1haWxDQSkgewogICAgICBiMiB8PSAweDAyOwogICAgICB1bnVzZWQgPSAxOwogICAgfQogICAgaWYoZS5vYmpDQSkgewogICAgICBiMiB8PSAweDAxOwogICAgICB1bnVzZWQgPSAwOwogICAgfQoKICAgIC8vIGNyZWF0ZSBiaXQgc3RyaW5nCiAgICB2YXIgdmFsdWUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHVudXNlZCk7CiAgICBpZihiMiAhPT0gMCkgewogICAgICB2YWx1ZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGIyKTsKICAgIH0KICAgIGUudmFsdWUgPSBhc24xLmNyZWF0ZSgKICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CSVRTVFJJTkcsIGZhbHNlLCB2YWx1ZSk7CiAgfSBlbHNlIGlmKGUubmFtZSA9PT0gJ3N1YmplY3RBbHROYW1lJyB8fCBlLm5hbWUgPT09ICdpc3N1ZXJBbHROYW1lJykgewogICAgLy8gU1lOVEFYIFNFUVVFTkNFCiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgW10pOwoKICAgIHZhciBhbHROYW1lOwogICAgZm9yKHZhciBuID0gMDsgbiA8IGUuYWx0TmFtZXMubGVuZ3RoOyArK24pIHsKICAgICAgYWx0TmFtZSA9IGUuYWx0TmFtZXNbbl07CiAgICAgIHZhciB2YWx1ZSA9IGFsdE5hbWUudmFsdWU7CiAgICAgIC8vIGhhbmRsZSBJUAogICAgICBpZihhbHROYW1lLnR5cGUgPT09IDcgJiYgYWx0TmFtZS5pcCkgewogICAgICAgIHZhbHVlID0gZm9yZ2UudXRpbC5ieXRlc0Zyb21JUChhbHROYW1lLmlwKTsKICAgICAgICBpZih2YWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKAogICAgICAgICAgICAnRXh0ZW5zaW9uICJpcCIgdmFsdWUgaXMgbm90IGEgdmFsaWQgSVB2NCBvciBJUHY2IGFkZHJlc3MuJyk7CiAgICAgICAgICBlcnJvci5leHRlbnNpb24gPSBlOwogICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYoYWx0TmFtZS50eXBlID09PSA4KSB7CiAgICAgICAgLy8gaGFuZGxlIE9JRAogICAgICAgIGlmKGFsdE5hbWUub2lkKSB7CiAgICAgICAgICB2YWx1ZSA9IGFzbjEub2lkVG9EZXIoYXNuMS5vaWRUb0RlcihhbHROYW1lLm9pZCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAvLyBkZXByZWNhdGVkIC4uLiBjb252ZXJ0IHZhbHVlIHRvIE9JRAogICAgICAgICAgdmFsdWUgPSBhc24xLm9pZFRvRGVyKHZhbHVlKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZS52YWx1ZS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgYWx0TmFtZS50eXBlLCBmYWxzZSwKICAgICAgICB2YWx1ZSkpOwogICAgfQogIH0gZWxzZSBpZihlLm5hbWUgPT09ICdzdWJqZWN0S2V5SWRlbnRpZmllcicgJiYgb3B0aW9ucy5jZXJ0KSB7CiAgICB2YXIgc2tpID0gb3B0aW9ucy5jZXJ0LmdlbmVyYXRlU3ViamVjdEtleUlkZW50aWZpZXIoKTsKICAgIGUuc3ViamVjdEtleUlkZW50aWZpZXIgPSBza2kudG9IZXgoKTsKICAgIC8vIE9DVEVUU1RSSU5HIHcvZGlnZXN0CiAgICBlLnZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLCBza2kuZ2V0Qnl0ZXMoKSk7CiAgfQoKICAvLyBlbnN1cmUgdmFsdWUgaGFzIGJlZW4gZGVmaW5lZCBieSBub3cKICBpZih0eXBlb2YgZS52YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignRXh0ZW5zaW9uIHZhbHVlIG5vdCBzcGVjaWZpZWQuJyk7CiAgICBlcnJvci5leHRlbnNpb24gPSBlOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICByZXR1cm4gZTsKfQoKLyoqCiAqIENvbnZlcnQgc2lnbmF0dXJlIHBhcmFtZXRlcnMgb2JqZWN0IHRvIEFTTi4xCiAqCiAqIEBwYXJhbSB7U3RyaW5nfSBvaWQgU2lnbmF0dXJlIGFsZ29yaXRobSBPSUQKICogQHBhcmFtIHBhcmFtcyBUaGUgc2lnbmF0dXJlIHBhcmFtZXRycyBvYmplY3QKICogQHJldHVybiBBU04uMSBvYmplY3QgcmVwcmVzZW50aW5nIHNpZ25hdHVyZSBwYXJhbWV0ZXJzCiAqLwpmdW5jdGlvbiBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMShvaWQsIHBhcmFtcykgewogIHN3aXRjaChvaWQpIHsKICBjYXNlIG9pZHNbJ1JTQVNTQS1QU1MnXToKICAgIHZhciBwYXJ0cyA9IFtdOwoKICAgIGlmKHBhcmFtcy5oYXNoLmFsZ29yaXRobU9pZCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgIHBhcnRzLnB1c2goYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgICBhc24xLm9pZFRvRGVyKHBhcmFtcy5oYXNoLmFsZ29yaXRobU9pZCkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICBdKQogICAgICBdKSk7CiAgICB9CgogICAgaWYocGFyYW1zLm1nZi5hbGdvcml0aG1PaWQgIT09IHVuZGVmaW5lZCkgewogICAgICBwYXJ0cy5wdXNoKGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMSwgdHJ1ZSwgWwogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgYXNuMS5vaWRUb0RlcihwYXJhbXMubWdmLmFsZ29yaXRobU9pZCkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgICBhc24xLm9pZFRvRGVyKHBhcmFtcy5tZ2YuaGFzaC5hbGdvcml0aG1PaWQpLmdldEJ5dGVzKCkpLAogICAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICAgIF0pCiAgICAgICAgXSkKICAgICAgXSkpOwogICAgfQoKICAgIGlmKHBhcmFtcy5zYWx0TGVuZ3RoICE9PSB1bmRlZmluZWQpIHsKICAgICAgcGFydHMucHVzaChhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDIsIHRydWUsIFsKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIocGFyYW1zLnNhbHRMZW5ndGgpLmdldEJ5dGVzKCkpCiAgICAgIF0pKTsKICAgIH0KCiAgICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgcGFydHMpOwoKICBkZWZhdWx0OgogICAgcmV0dXJuIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuTlVMTCwgZmFsc2UsICcnKTsKICB9Cn0KCi8qKgogKiBDb252ZXJ0cyBhIGNlcnRpZmljYXRpb24gcmVxdWVzdCdzIGF0dHJpYnV0ZXMgdG8gYW4gQVNOLjEgc2V0IG9mCiAqIENSSUF0dHJpYnV0ZXMuCiAqCiAqIEBwYXJhbSBjc3IgY2VydGlmaWNhdGlvbiByZXF1ZXN0LgogKgogKiBAcmV0dXJuIHRoZSBBU04uMSBzZXQgb2YgQ1JJQXR0cmlidXRlcy4KICovCmZ1bmN0aW9uIF9DUklBdHRyaWJ1dGVzVG9Bc24xKGNzcikgewogIC8vIGNyZWF0ZSBhbiBlbXB0eSBjb250ZXh0LXNwZWNpZmljIGNvbnRhaW5lcgogIHZhciBydmFsID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbXSk7CgogIC8vIG5vIGF0dHJpYnV0ZXMsIHJldHVybiBlbXB0eSBjb250YWluZXIKICBpZihjc3IuYXR0cmlidXRlcy5sZW5ndGggPT09IDApIHsKICAgIHJldHVybiBydmFsOwogIH0KCiAgLy8gZWFjaCBhdHRyaWJ1dGUgaGFzIGEgc2VxdWVuY2Ugd2l0aCBhIHR5cGUgYW5kIGEgc2V0IG9mIHZhbHVlcwogIHZhciBhdHRycyA9IGNzci5hdHRyaWJ1dGVzOwogIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7ICsraSkgewogICAgdmFyIGF0dHIgPSBhdHRyc1tpXTsKICAgIHZhciB2YWx1ZSA9IGF0dHIudmFsdWU7CgogICAgLy8gcmV1c2UgdGFnIGNsYXNzIGZvciBhdHRyaWJ1dGUgdmFsdWUgaWYgYXZhaWxhYmxlCiAgICB2YXIgdmFsdWVUYWdDbGFzcyA9IGFzbjEuVHlwZS5VVEY4OwogICAgaWYoJ3ZhbHVlVGFnQ2xhc3MnIGluIGF0dHIpIHsKICAgICAgdmFsdWVUYWdDbGFzcyA9IGF0dHIudmFsdWVUYWdDbGFzczsKICAgIH0KICAgIGlmKHZhbHVlVGFnQ2xhc3MgPT09IGFzbjEuVHlwZS5VVEY4KSB7CiAgICAgIHZhbHVlID0gZm9yZ2UudXRpbC5lbmNvZGVVdGY4KHZhbHVlKTsKICAgIH0KICAgIHZhciB2YWx1ZUNvbnN0cnVjdGVkID0gZmFsc2U7CiAgICBpZigndmFsdWVDb25zdHJ1Y3RlZCcgaW4gYXR0cikgewogICAgICB2YWx1ZUNvbnN0cnVjdGVkID0gYXR0ci52YWx1ZUNvbnN0cnVjdGVkOwogICAgfQogICAgLy8gRklYTUU6IGhhbmRsZSBtb3JlIGVuY29kaW5ncwoKICAgIC8vIGNyZWF0ZSBhIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgc2V0CiAgICAvLyBlYWNoIHZhbHVlIGluIHRoZSBzZXQgaXMgYW4gQXR0cmlidXRlVHlwZUFuZFZhbHVlIGZpcnN0CiAgICAvLyBjb250YWluaW5nIHRoZSB0eXBlIChhbiBPSUQpIGFuZCBzZWNvbmQgdGhlIHZhbHVlCiAgICB2YXIgc2VxID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBBdHRyaWJ1dGVUeXBlCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKGF0dHIudHlwZSkuZ2V0Qnl0ZXMoKSksCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBbCiAgICAgICAgLy8gQXR0cmlidXRlVmFsdWUKICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCB2YWx1ZVRhZ0NsYXNzLCB2YWx1ZUNvbnN0cnVjdGVkLCB2YWx1ZSkKICAgICAgXSkKICAgIF0pOwogICAgcnZhbC52YWx1ZS5wdXNoKHNlcSk7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEdldHMgdGhlIEFTTi4xIFRCU0NlcnRpZmljYXRlIHBhcnQgb2YgYW4gWC41MDl2MyBjZXJ0aWZpY2F0ZS4KICoKICogQHBhcmFtIGNlcnQgdGhlIGNlcnRpZmljYXRlLgogKgogKiBAcmV0dXJuIHRoZSBhc24xIFRCU0NlcnRpZmljYXRlLgogKi8KcGtpLmdldFRCU0NlcnRpZmljYXRlID0gZnVuY3Rpb24oY2VydCkgewogIC8vIFRCU0NlcnRpZmljYXRlCiAgdmFyIHRicyA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIHZlcnNpb24KICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICAvLyBpbnRlZ2VyCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoY2VydC52ZXJzaW9uKS5nZXRCeXRlcygpKQogICAgXSksCiAgICAvLyBzZXJpYWxOdW1iZXIKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIGZvcmdlLnV0aWwuaGV4VG9CeXRlcyhjZXJ0LnNlcmlhbE51bWJlcikpLAogICAgLy8gc2lnbmF0dXJlCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihjZXJ0LnNpZ2luZm8uYWxnb3JpdGhtT2lkKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycwogICAgICBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMSgKICAgICAgICBjZXJ0LnNpZ2luZm8uYWxnb3JpdGhtT2lkLCBjZXJ0LnNpZ2luZm8ucGFyYW1ldGVycykKICAgIF0pLAogICAgLy8gaXNzdWVyCiAgICBfZG5Ub0FzbjEoY2VydC5pc3N1ZXIpLAogICAgLy8gdmFsaWRpdHkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgLy8gbm90QmVmb3JlCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuVVRDVElNRSwgZmFsc2UsCiAgICAgICAgYXNuMS5kYXRlVG9VdGNUaW1lKGNlcnQudmFsaWRpdHkubm90QmVmb3JlKSksCiAgICAgIC8vIG5vdEFmdGVyCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuVVRDVElNRSwgZmFsc2UsCiAgICAgICAgYXNuMS5kYXRlVG9VdGNUaW1lKGNlcnQudmFsaWRpdHkubm90QWZ0ZXIpKQogICAgXSksCiAgICAvLyBzdWJqZWN0CiAgICBfZG5Ub0FzbjEoY2VydC5zdWJqZWN0KSwKICAgIC8vIFN1YmplY3RQdWJsaWNLZXlJbmZvCiAgICBwa2kucHVibGljS2V5VG9Bc24xKGNlcnQucHVibGljS2V5KQogIF0pOwoKICBpZihjZXJ0Lmlzc3Vlci51bmlxdWVJZCkgewogICAgLy8gaXNzdWVyVW5pcXVlSUQgKG9wdGlvbmFsKQogICAgdGJzLnZhbHVlLnB1c2goCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMSwgdHJ1ZSwgWwogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuQklUU1RSSU5HLCBmYWxzZSwKICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMCkgKwogICAgICAgICAgY2VydC5pc3N1ZXIudW5pcXVlSWQKICAgICAgICApCiAgICAgIF0pCiAgICApOwogIH0KICBpZihjZXJ0LnN1YmplY3QudW5pcXVlSWQpIHsKICAgIC8vIHN1YmplY3RVbmlxdWVJRCAob3B0aW9uYWwpCiAgICB0YnMudmFsdWUucHVzaCgKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAyLCB0cnVlLCBbCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CSVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwKSArCiAgICAgICAgICBjZXJ0LnN1YmplY3QudW5pcXVlSWQKICAgICAgICApCiAgICAgIF0pCiAgICApOwogIH0KCiAgaWYoY2VydC5leHRlbnNpb25zLmxlbmd0aCA+IDApIHsKICAgIC8vIGV4dGVuc2lvbnMgKG9wdGlvbmFsKQogICAgdGJzLnZhbHVlLnB1c2gocGtpLmNlcnRpZmljYXRlRXh0ZW5zaW9uc1RvQXNuMShjZXJ0LmV4dGVuc2lvbnMpKTsKICB9CgogIHJldHVybiB0YnM7Cn07CgovKioKICogR2V0cyB0aGUgQVNOLjEgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIHBhcnQgb2YgYQogKiBQS0NTIzEwIENlcnRpZmljYXRpb25SZXF1ZXN0LgogKgogKiBAcGFyYW0gY3NyIHRoZSBjZXJ0aWZpY2F0aW9uIHJlcXVlc3QuCiAqCiAqIEByZXR1cm4gdGhlIGFzbjEgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvLgogKi8KcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyA9IGZ1bmN0aW9uKGNzcikgewogIC8vIENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbwogIHZhciBjcmkgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyB2ZXJzaW9uCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICBhc24xLmludGVnZXJUb0Rlcihjc3IudmVyc2lvbikuZ2V0Qnl0ZXMoKSksCiAgICAvLyBzdWJqZWN0CiAgICBfZG5Ub0FzbjEoY3NyLnN1YmplY3QpLAogICAgLy8gU3ViamVjdFB1YmxpY0tleUluZm8KICAgIHBraS5wdWJsaWNLZXlUb0FzbjEoY3NyLnB1YmxpY0tleSksCiAgICAvLyBhdHRyaWJ1dGVzCiAgICBfQ1JJQXR0cmlidXRlc1RvQXNuMShjc3IpCiAgXSk7CgogIHJldHVybiBjcmk7Cn07CgovKioKICogQ29udmVydHMgYSBEaXN0aW5ndWlzaGVkTmFtZSAoc3ViamVjdCBvciBpc3N1ZXIpIHRvIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIGRuIHRoZSBEaXN0aW5ndWlzaGVkTmFtZS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIERpc3Rpbmd1aXNoZWROYW1lLgogKi8KcGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xID0gZnVuY3Rpb24oZG4pIHsKICByZXR1cm4gX2RuVG9Bc24xKGRuKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBYLjUwOXYzIFJTQSBjZXJ0aWZpY2F0ZSB0byBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZS4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhbiBYLjUwOXYzIFJTQSBjZXJ0aWZpY2F0ZS4KICovCnBraS5jZXJ0aWZpY2F0ZVRvQXNuMSA9IGZ1bmN0aW9uKGNlcnQpIHsKICAvLyBwcmVmZXIgY2FjaGVkIFRCU0NlcnRpZmljYXRlIG92ZXIgZ2VuZXJhdGluZyBvbmUKICB2YXIgdGJzQ2VydGlmaWNhdGUgPSBjZXJ0LnRic0NlcnRpZmljYXRlIHx8IHBraS5nZXRUQlNDZXJ0aWZpY2F0ZShjZXJ0KTsKCiAgLy8gQ2VydGlmaWNhdGUKICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gVEJTQ2VydGlmaWNhdGUKICAgIHRic0NlcnRpZmljYXRlLAogICAgLy8gQWxnb3JpdGhtSWRlbnRpZmllciAoc2lnbmF0dXJlIGFsZ29yaXRobSkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgLy8gYWxnb3JpdGhtCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKGNlcnQuc2lnbmF0dXJlT2lkKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycwogICAgICBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMShjZXJ0LnNpZ25hdHVyZU9pZCwgY2VydC5zaWduYXR1cmVQYXJhbWV0ZXJzKQogICAgXSksCiAgICAvLyBTaWduYXR1cmVWYWx1ZQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CSVRTVFJJTkcsIGZhbHNlLAogICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDApICsgY2VydC5zaWduYXR1cmUpCiAgXSk7Cn07CgovKioKICogQ29udmVydHMgWC41MDl2MyBjZXJ0aWZpY2F0ZSBleHRlbnNpb25zIHRvIEFTTi4xLgogKgogKiBAcGFyYW0gZXh0cyB0aGUgZXh0ZW5zaW9ucyB0byBjb252ZXJ0LgogKgogKiBAcmV0dXJuIHRoZSBleHRlbnNpb25zIGluIEFTTi4xIGZvcm1hdC4KICovCnBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvbnNUb0FzbjEgPSBmdW5jdGlvbihleHRzKSB7CiAgLy8gY3JlYXRlIHRvcC1sZXZlbCBleHRlbnNpb24gY29udGFpbmVyCiAgdmFyIHJ2YWwgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDMsIHRydWUsIFtdKTsKCiAgLy8gY3JlYXRlIGV4dGVuc2lvbiBzZXF1ZW5jZSAoc3RvcmVzIGEgc2VxdWVuY2UgZm9yIGVhY2ggZXh0ZW5zaW9uKQogIHZhciBzZXEgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CiAgcnZhbC52YWx1ZS5wdXNoKHNlcSk7CgogIGZvcih2YXIgaSA9IDA7IGkgPCBleHRzLmxlbmd0aDsgKytpKSB7CiAgICBzZXEudmFsdWUucHVzaChwa2kuY2VydGlmaWNhdGVFeHRlbnNpb25Ub0FzbjEoZXh0c1tpXSkpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ29udmVydHMgYSBzaW5nbGUgY2VydGlmaWNhdGUgZXh0ZW5zaW9uIHRvIEFTTi4xLgogKgogKiBAcGFyYW0gZXh0IHRoZSBleHRlbnNpb24gdG8gY29udmVydC4KICoKICogQHJldHVybiB0aGUgZXh0ZW5zaW9uIGluIEFTTi4xIGZvcm1hdC4KICovCnBraS5jZXJ0aWZpY2F0ZUV4dGVuc2lvblRvQXNuMSA9IGZ1bmN0aW9uKGV4dCkgewogIC8vIGNyZWF0ZSBhIHNlcXVlbmNlIGZvciBlYWNoIGV4dGVuc2lvbgogIHZhciBleHRzZXEgPSBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbXSk7CgogIC8vIGV4dG5JRCAoT0lEKQogIGV4dHNlcS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgYXNuMS5vaWRUb0RlcihleHQuaWQpLmdldEJ5dGVzKCkpKTsKCiAgLy8gY3JpdGljYWwgZGVmYXVsdHMgdG8gZmFsc2UKICBpZihleHQuY3JpdGljYWwpIHsKICAgIC8vIGNyaXRpY2FsIEJPT0xFQU4gREVGQVVMVCBGQUxTRQogICAgZXh0c2VxLnZhbHVlLnB1c2goYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuQk9PTEVBTiwgZmFsc2UsCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRikpKTsKICB9CgogIHZhciB2YWx1ZSA9IGV4dC52YWx1ZTsKICBpZih0eXBlb2YgZXh0LnZhbHVlICE9PSAnc3RyaW5nJykgewogICAgLy8gdmFsdWUgaXMgYXNuLjEKICAgIHZhbHVlID0gYXNuMS50b0Rlcih2YWx1ZSkuZ2V0Qnl0ZXMoKTsKICB9CgogIC8vIGV4dG5WYWx1ZSAoT0NURVQgU1RSSU5HKQogIGV4dHNlcS52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIHZhbHVlKSk7CgogIHJldHVybiBleHRzZXE7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzEwIGNlcnRpZmljYXRpb24gcmVxdWVzdCB0byBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBjc3IgdGhlIGNlcnRpZmljYXRpb24gcmVxdWVzdC4KICoKICogQHJldHVybiB0aGUgYXNuMSByZXByZXNlbnRhdGlvbiBvZiBhIGNlcnRpZmljYXRpb24gcmVxdWVzdC4KICovCnBraS5jZXJ0aWZpY2F0aW9uUmVxdWVzdFRvQXNuMSA9IGZ1bmN0aW9uKGNzcikgewogIC8vIHByZWZlciBjYWNoZWQgQ2VydGlmaWNhdGlvblJlcXVlc3RJbmZvIG92ZXIgZ2VuZXJhdGluZyBvbmUKICB2YXIgY3JpID0gY3NyLmNlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyB8fAogICAgcGtpLmdldENlcnRpZmljYXRpb25SZXF1ZXN0SW5mbyhjc3IpOwoKICAvLyBDZXJ0aWZpY2F0ZQogIHJldHVybiBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAvLyBDZXJ0aWZpY2F0aW9uUmVxdWVzdEluZm8KICAgIGNyaSwKICAgIC8vIEFsZ29yaXRobUlkZW50aWZpZXIgKHNpZ25hdHVyZSBhbGdvcml0aG0pCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0Rlcihjc3Iuc2lnbmF0dXJlT2lkKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycwogICAgICBfc2lnbmF0dXJlUGFyYW1ldGVyc1RvQXNuMShjc3Iuc2lnbmF0dXJlT2lkLCBjc3Iuc2lnbmF0dXJlUGFyYW1ldGVycykKICAgIF0pLAogICAgLy8gc2lnbmF0dXJlCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLkJJVFNUUklORywgZmFsc2UsCiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMCkgKyBjc3Iuc2lnbmF0dXJlKQogIF0pOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBDQSBzdG9yZS4KICoKICogQHBhcmFtIGNlcnRzIGFuIG9wdGlvbmFsIGFycmF5IG9mIGNlcnRpZmljYXRlIG9iamVjdHMgb3IgUEVNLWZvcm1hdHRlZAogKiAgICAgICAgICBjZXJ0aWZpY2F0ZSBzdHJpbmdzIHRvIGFkZCB0byB0aGUgQ0Egc3RvcmUuCiAqCiAqIEByZXR1cm4gdGhlIENBIHN0b3JlLgogKi8KcGtpLmNyZWF0ZUNhU3RvcmUgPSBmdW5jdGlvbihjZXJ0cykgewogIC8vIGNyZWF0ZSBDQSBzdG9yZQogIHZhciBjYVN0b3JlID0gewogICAgLy8gc3RvcmVkIGNlcnRpZmljYXRlcwogICAgY2VydHM6IHt9CiAgfTsKCiAgLyoqCiAgICogR2V0cyB0aGUgY2VydGlmaWNhdGUgdGhhdCBpc3N1ZWQgdGhlIHBhc3NlZCBjZXJ0aWZpY2F0ZSBvciBpdHMKICAgKiAncGFyZW50Jy4KICAgKgogICAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZSB0byBnZXQgdGhlIHBhcmVudCBmb3IuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBwYXJlbnQgY2VydGlmaWNhdGUgb3IgbnVsbCBpZiBub25lIHdhcyBmb3VuZC4KICAgKi8KICBjYVN0b3JlLmdldElzc3VlciA9IGZ1bmN0aW9uKGNlcnQpIHsKICAgIHZhciBydmFsID0gZ2V0QnlTdWJqZWN0KGNlcnQuaXNzdWVyKTsKCiAgICAvLyBzZWUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXMKICAgIC8qaWYoZm9yZ2UudXRpbC5pc0FycmF5KHJ2YWwpKSB7CiAgICAgIC8vIFRPRE86IHJlc29sdmUgbXVsdGlwbGUgbWF0Y2hlcyBieSBjaGVja2luZwogICAgICAvLyBhdXRob3JpdHlLZXkvc3ViamVjdEtleS9pc3N1ZXJVbmlxdWVJRC9vdGhlciBpZGVudGlmaWVycywgZXRjLgogICAgICAvLyBGSVhNRTogb3IgYWx0ZXJuYXRpdmVseSBkbyBhdXRob3JpdHkga2V5IG1hcHBpbmcKICAgICAgLy8gaWYgcG9zc2libGUgKFguNTA5djEgY2VydHMgY2FuJ3Qgd29yaz8pCiAgICAgIHRocm93IG5ldyBFcnJvcignUmVzb2x2aW5nIG11bHRpcGxlIGlzc3VlciBtYXRjaGVzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuJyk7CiAgICB9Ki8KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBBZGRzIGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0byB0aGUgc3RvcmUuCiAgICoKICAgKiBAcGFyYW0gY2VydCB0aGUgY2VydGlmaWNhdGUgdG8gYWRkIGFzIGEgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSAoZWl0aGVyIGEKICAgKiAgICAgICAgICBwa2kuY2VydGlmaWNhdGUgb2JqZWN0IG9yIGEgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZSkuCiAgICovCiAgY2FTdG9yZS5hZGRDZXJ0aWZpY2F0ZSA9IGZ1bmN0aW9uKGNlcnQpIHsKICAgIC8vIGNvbnZlcnQgZnJvbSBwZW0gaWYgbmVjZXNzYXJ5CiAgICBpZih0eXBlb2YgY2VydCA9PT0gJ3N0cmluZycpIHsKICAgICAgY2VydCA9IGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUZyb21QZW0oY2VydCk7CiAgICB9CgogICAgLy8gcHJvZHVjZSBzdWJqZWN0IGhhc2ggaWYgaXQgZG9lc24ndCBleGlzdAogICAgaWYoIWNlcnQuc3ViamVjdC5oYXNoKSB7CiAgICAgIHZhciBtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgIGNlcnQuc3ViamVjdC5hdHRyaWJ1dGVzID0gIHBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheSgKICAgICAgICBfZG5Ub0FzbjEoY2VydC5zdWJqZWN0KSwgbWQpOwogICAgICBjZXJ0LnN1YmplY3QuaGFzaCA9IG1kLmRpZ2VzdCgpLnRvSGV4KCk7CiAgICB9CgogICAgaWYoY2VydC5zdWJqZWN0Lmhhc2ggaW4gY2FTdG9yZS5jZXJ0cykgewogICAgICAvLyBzdWJqZWN0IGhhc2ggYWxyZWFkeSBleGlzdHMsIGFwcGVuZCB0byBhcnJheQogICAgICB2YXIgdG1wID0gY2FTdG9yZS5jZXJ0c1tjZXJ0LnN1YmplY3QuaGFzaF07CiAgICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkodG1wKSkgewogICAgICAgIHRtcCA9IFt0bXBdOwogICAgICB9CiAgICAgIHRtcC5wdXNoKGNlcnQpOwogICAgfSBlbHNlIHsKICAgICAgY2FTdG9yZS5jZXJ0c1tjZXJ0LnN1YmplY3QuaGFzaF0gPSBjZXJ0OwogICAgfQogIH07CgogIC8qKgogICAqIENoZWNrcyB0byBzZWUgaWYgdGhlIGdpdmVuIGNlcnRpZmljYXRlIGlzIGluIHRoZSBzdG9yZS4KICAgKgogICAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZSB0byBjaGVjay4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY2VydGlmaWNhdGUgaXMgaW4gdGhlIHN0b3JlLCBmYWxzZSBpZiBub3QuCiAgICovCiAgY2FTdG9yZS5oYXNDZXJ0aWZpY2F0ZSA9IGZ1bmN0aW9uKGNlcnQpIHsKICAgIHZhciBtYXRjaCA9IGdldEJ5U3ViamVjdChjZXJ0LnN1YmplY3QpOwogICAgaWYoIW1hdGNoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkobWF0Y2gpKSB7CiAgICAgIG1hdGNoID0gW21hdGNoXTsKICAgIH0KICAgIC8vIGNvbXBhcmUgREVSLWVuY29kaW5nIG9mIGNlcnRpZmljYXRlcwogICAgdmFyIGRlcjEgPSBhc24xLnRvRGVyKHBraS5jZXJ0aWZpY2F0ZVRvQXNuMShjZXJ0KSkuZ2V0Qnl0ZXMoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtYXRjaC5sZW5ndGg7ICsraSkgewogICAgICB2YXIgZGVyMiA9IGFzbjEudG9EZXIocGtpLmNlcnRpZmljYXRlVG9Bc24xKG1hdGNoW2ldKSkuZ2V0Qnl0ZXMoKTsKICAgICAgaWYoZGVyMSA9PT0gZGVyMikgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKCiAgZnVuY3Rpb24gZ2V0QnlTdWJqZWN0KHN1YmplY3QpIHsKICAgIC8vIHByb2R1Y2Ugc3ViamVjdCBoYXNoIGlmIGl0IGRvZXNuJ3QgZXhpc3QKICAgIGlmKCFzdWJqZWN0Lmhhc2gpIHsKICAgICAgdmFyIG1kID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgICAgc3ViamVjdC5hdHRyaWJ1dGVzID0gIHBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheShfZG5Ub0FzbjEoc3ViamVjdCksIG1kKTsKICAgICAgc3ViamVjdC5oYXNoID0gbWQuZGlnZXN0KCkudG9IZXgoKTsKICAgIH0KICAgIHJldHVybiBjYVN0b3JlLmNlcnRzW3N1YmplY3QuaGFzaF0gfHwgbnVsbDsKICB9CgogIC8vIGF1dG8tYWRkIHBhc3NlZCBpbiBjZXJ0cwogIGlmKGNlcnRzKSB7CiAgICAvLyBwYXJzZSBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlcyBhcyBuZWNlc3NhcnkKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjZXJ0cy5sZW5ndGg7ICsraSkgewogICAgICB2YXIgY2VydCA9IGNlcnRzW2ldOwogICAgICBjYVN0b3JlLmFkZENlcnRpZmljYXRlKGNlcnQpOwogICAgfQogIH0KCiAgcmV0dXJuIGNhU3RvcmU7Cn07CgovKioKICogQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGVycm9ycywgYmFzZWQgb24gVExTLgogKi8KcGtpLmNlcnRpZmljYXRlRXJyb3IgPSB7CiAgYmFkX2NlcnRpZmljYXRlOiAnZm9yZ2UucGtpLkJhZENlcnRpZmljYXRlJywKICB1bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTogJ2ZvcmdlLnBraS5VbnN1cHBvcnRlZENlcnRpZmljYXRlJywKICBjZXJ0aWZpY2F0ZV9yZXZva2VkOiAnZm9yZ2UucGtpLkNlcnRpZmljYXRlUmV2b2tlZCcsCiAgY2VydGlmaWNhdGVfZXhwaXJlZDogJ2ZvcmdlLnBraS5DZXJ0aWZpY2F0ZUV4cGlyZWQnLAogIGNlcnRpZmljYXRlX3Vua25vd246ICdmb3JnZS5wa2kuQ2VydGlmaWNhdGVVbmtub3duJywKICB1bmtub3duX2NhOiAnZm9yZ2UucGtpLlVua25vd25DZXJ0aWZpY2F0ZUF1dGhvcml0eScKfTsKCi8qKgogKiBWZXJpZmllcyBhIGNlcnRpZmljYXRlIGNoYWluIGFnYWluc3QgdGhlIGdpdmVuIENlcnRpZmljYXRlIEF1dGhvcml0eSBzdG9yZQogKiB3aXRoIGFuIG9wdGlvbmFsIGN1c3RvbSB2ZXJpZnkgY2FsbGJhY2suCiAqCiAqIEBwYXJhbSBjYVN0b3JlIGEgY2VydGlmaWNhdGUgc3RvcmUgdG8gdmVyaWZ5IGFnYWluc3QuCiAqIEBwYXJhbSBjaGFpbiB0aGUgY2VydGlmaWNhdGUgY2hhaW4gdG8gdmVyaWZ5LCB3aXRoIHRoZSByb290IG9yIGhpZ2hlc3QKICogICAgICAgICAgYXV0aG9yaXR5IGF0IHRoZSBlbmQgKGFuIGFycmF5IG9mIGNlcnRpZmljYXRlcykuCiAqIEBwYXJhbSB2ZXJpZnkgY2FsbGVkIGZvciBldmVyeSBjZXJ0aWZpY2F0ZSBpbiB0aGUgY2hhaW4uCiAqCiAqIFRoZSB2ZXJpZnkgY2FsbGJhY2sgaGFzIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOgogKgogKiB2ZXJpZmllZCAtIFNldCB0byB0cnVlIGlmIGNlcnRpZmljYXRlIHdhcyB2ZXJpZmllZCwgb3RoZXJ3aXNlIHRoZQogKiAgIHBraS5jZXJ0aWZpY2F0ZUVycm9yIGZvciB3aHkgdGhlIGNlcnRpZmljYXRlIGZhaWxlZC4KICogZGVwdGggLSBUaGUgY3VycmVudCBpbmRleCBpbiB0aGUgY2hhaW4sIHdoZXJlIDAgaXMgdGhlIGVuZCBwb2ludCdzIGNlcnQuCiAqIGNlcnRzIC0gVGhlIGNlcnRpZmljYXRlIGNoYWluLCAqTk9URSogYW4gZW1wdHkgY2hhaW4gaW5kaWNhdGVzIGFuIGFub255bW91cwogKiAgIGVuZCBwb2ludC4KICoKICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIGFuZCBvbiBmYWlsdXJlIGVpdGhlciB0aGUgYXBwcm9wcmlhdGUKICogcGtpLmNlcnRpZmljYXRlRXJyb3Igb3IgYW4gb2JqZWN0IHdpdGggJ2Vycm9yJyBzZXQgdG8gdGhlIGFwcHJvcHJpYXRlCiAqIHBraS5jZXJ0aWZpY2F0ZUVycm9yIGFuZCAnbWVzc2FnZScgc2V0IHRvIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLCBlcnJvciB0aHJvd24gaWYgbm90LgogKi8KcGtpLnZlcmlmeUNlcnRpZmljYXRlQ2hhaW4gPSBmdW5jdGlvbihjYVN0b3JlLCBjaGFpbiwgdmVyaWZ5KSB7CiAgLyogRnJvbTogUkZDMzI4MCAtIEludGVybmV0IFguNTA5IFB1YmxpYyBLZXkgSW5mcmFzdHJ1Y3R1cmUgQ2VydGlmaWNhdGUKICAgIFNlY3Rpb24gNjogQ2VydGlmaWNhdGlvbiBQYXRoIFZhbGlkYXRpb24KICAgIFNlZSBpbmxpbmUgcGFyZW50aGV0aWNhbHMgcmVsYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24uCgogICAgVGhlIHByaW1hcnkgZ29hbCBvZiBwYXRoIHZhbGlkYXRpb24gaXMgdG8gdmVyaWZ5IHRoZSBiaW5kaW5nIGJldHdlZW4KICAgIGEgc3ViamVjdCBkaXN0aW5ndWlzaGVkIG5hbWUgb3IgYSBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUgYW5kIHN1YmplY3QKICAgIHB1YmxpYyBrZXksIGFzIHJlcHJlc2VudGVkIGluIHRoZSBlbmQgZW50aXR5IGNlcnRpZmljYXRlLCBiYXNlZCBvbiB0aGUKICAgIHB1YmxpYyBrZXkgb2YgdGhlIHRydXN0IGFuY2hvci4gVGhpcyByZXF1aXJlcyBvYnRhaW5pbmcgYSBzZXF1ZW5jZSBvZgogICAgY2VydGlmaWNhdGVzIHRoYXQgc3VwcG9ydCB0aGF0IGJpbmRpbmcuIFRoYXQgc2VxdWVuY2Ugc2hvdWxkIGJlIHByb3ZpZGVkCiAgICBpbiB0aGUgcGFzc2VkICdjaGFpbicuIFRoZSB0cnVzdCBhbmNob3Igc2hvdWxkIGJlIGluIHRoZSBnaXZlbiBDQQogICAgc3RvcmUuIFRoZSAnZW5kIGVudGl0eScgY2VydGlmaWNhdGUgaXMgdGhlIGNlcnRpZmljYXRlIHByb3ZpZGVkIGJ5IHRoZQogICAgZW5kIHBvaW50ICh0eXBpY2FsbHkgYSBzZXJ2ZXIpIGFuZCBpcyB0aGUgZmlyc3QgaW4gdGhlIGNoYWluLgoKICAgIFRvIG1lZXQgdGhpcyBnb2FsLCB0aGUgcGF0aCB2YWxpZGF0aW9uIHByb2Nlc3MgdmVyaWZpZXMsIGFtb25nIG90aGVyCiAgICB0aGluZ3MsIHRoYXQgYSBwcm9zcGVjdGl2ZSBjZXJ0aWZpY2F0aW9uIHBhdGggKGEgc2VxdWVuY2Ugb2YgbgogICAgY2VydGlmaWNhdGVzIG9yIGEgJ2NoYWluJykgc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKCiAgICAoYSkgZm9yIGFsbCB4IGluIHsxLCAuLi4sIG4tMX0sIHRoZSBzdWJqZWN0IG9mIGNlcnRpZmljYXRlIHggaXMKICAgICAgICAgIHRoZSBpc3N1ZXIgb2YgY2VydGlmaWNhdGUgeCsxOwoKICAgIChiKSBjZXJ0aWZpY2F0ZSAxIGlzIGlzc3VlZCBieSB0aGUgdHJ1c3QgYW5jaG9yOwoKICAgIChjKSBjZXJ0aWZpY2F0ZSBuIGlzIHRoZSBjZXJ0aWZpY2F0ZSB0byBiZSB2YWxpZGF0ZWQ7IGFuZAoKICAgIChkKSBmb3IgYWxsIHggaW4gezEsIC4uLiwgbn0sIHRoZSBjZXJ0aWZpY2F0ZSB3YXMgdmFsaWQgYXQgdGhlCiAgICAgICAgICB0aW1lIGluIHF1ZXN0aW9uLgoKICAgIE5vdGUgdGhhdCBoZXJlICduJyBpcyBpbmRleCAwIGluIHRoZSBjaGFpbiBhbmQgMSBpcyB0aGUgbGFzdCBjZXJ0aWZpY2F0ZQogICAgaW4gdGhlIGNoYWluIGFuZCBpdCBtdXN0IGJlIHNpZ25lZCBieSBhIGNlcnRpZmljYXRlIGluIHRoZSBjb25uZWN0aW9uJ3MKICAgIENBIHN0b3JlLgoKICAgIFRoZSBwYXRoIHZhbGlkYXRpb24gcHJvY2VzcyBhbHNvIGRldGVybWluZXMgdGhlIHNldCBvZiBjZXJ0aWZpY2F0ZQogICAgcG9saWNpZXMgdGhhdCBhcmUgdmFsaWQgZm9yIHRoaXMgcGF0aCwgYmFzZWQgb24gdGhlIGNlcnRpZmljYXRlIHBvbGljaWVzCiAgICBleHRlbnNpb24sIHBvbGljeSBtYXBwaW5nIGV4dGVuc2lvbiwgcG9saWN5IGNvbnN0cmFpbnRzIGV4dGVuc2lvbiwgYW5kCiAgICBpbmhpYml0IGFueS1wb2xpY3kgZXh0ZW5zaW9uLgoKICAgIE5vdGU6IFBvbGljeSBtYXBwaW5nIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIChOb3QgUmVxdWlyZWQpLgoKICAgIE5vdGU6IElmIHRoZSBjZXJ0aWZpY2F0ZSBoYXMgYW4gdW5zdXBwb3J0ZWQgY3JpdGljYWwgZXh0ZW5zaW9uLCB0aGVuIGl0CiAgICBtdXN0IGJlIHJlamVjdGVkLgoKICAgIE5vdGU6IEEgY2VydGlmaWNhdGUgaXMgc2VsZi1pc3N1ZWQgaWYgdGhlIEROcyB0aGF0IGFwcGVhciBpbiB0aGUgc3ViamVjdAogICAgYW5kIGlzc3VlciBmaWVsZHMgYXJlIGlkZW50aWNhbCBhbmQgYXJlIG5vdCBlbXB0eS4KCiAgICBUaGUgcGF0aCB2YWxpZGF0aW9uIGFsZ29yaXRobSBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgc2V2ZW4gaW5wdXRzIGFyZQogICAgcHJvdmlkZWQgdG8gdGhlIHBhdGggcHJvY2Vzc2luZyBsb2dpYy4gV2hhdCB0aGlzIHNwZWNpZmljIGltcGxlbWVudGF0aW9uCiAgICB3aWxsIHVzZSBpcyBwcm92aWRlZCBwYXJlbnRoZXRpY2FsbHk6CgogICAgKGEpIGEgcHJvc3BlY3RpdmUgY2VydGlmaWNhdGlvbiBwYXRoIG9mIGxlbmd0aCBuICh0aGUgJ2NoYWluJykKICAgIChiKSB0aGUgY3VycmVudCBkYXRlL3RpbWU6ICgnbm93JykuCiAgICAoYykgdXNlci1pbml0aWFsLXBvbGljeS1zZXQ6IEEgc2V0IG9mIGNlcnRpZmljYXRlIHBvbGljeSBpZGVudGlmaWVycwogICAgICAgICAgbmFtaW5nIHRoZSBwb2xpY2llcyB0aGF0IGFyZSBhY2NlcHRhYmxlIHRvIHRoZSBjZXJ0aWZpY2F0ZSB1c2VyLgogICAgICAgICAgVGhlIHVzZXItaW5pdGlhbC1wb2xpY3ktc2V0IGNvbnRhaW5zIHRoZSBzcGVjaWFsIHZhbHVlIGFueS1wb2xpY3kKICAgICAgICAgIGlmIHRoZSB1c2VyIGlzIG5vdCBjb25jZXJuZWQgYWJvdXQgY2VydGlmaWNhdGUgcG9saWN5CiAgICAgICAgICAoTm90IGltcGxlbWVudGVkLiBBbnkgcG9saWN5IGlzIGFjY2VwdGVkKS4KICAgIChkKSB0cnVzdCBhbmNob3IgaW5mb3JtYXRpb24sIGRlc2NyaWJpbmcgYSBDQSB0aGF0IHNlcnZlcyBhcyBhIHRydXN0CiAgICAgICAgICBhbmNob3IgZm9yIHRoZSBjZXJ0aWZpY2F0aW9uIHBhdGguIFRoZSB0cnVzdCBhbmNob3IgaW5mb3JtYXRpb24KICAgICAgICAgIGluY2x1ZGVzOgoKICAgICAgKDEpICB0aGUgdHJ1c3RlZCBpc3N1ZXIgbmFtZSwKICAgICAgKDIpICB0aGUgdHJ1c3RlZCBwdWJsaWMga2V5IGFsZ29yaXRobSwKICAgICAgKDMpICB0aGUgdHJ1c3RlZCBwdWJsaWMga2V5LCBhbmQKICAgICAgKDQpICBvcHRpb25hbGx5LCB0aGUgdHJ1c3RlZCBwdWJsaWMga2V5IHBhcmFtZXRlcnMgYXNzb2NpYXRlZAogICAgICAgICAgICAgd2l0aCB0aGUgcHVibGljIGtleS4KCiAgICAgIChUcnVzdCBhbmNob3JzIGFyZSBwcm92aWRlZCB2aWEgY2VydGlmaWNhdGVzIGluIHRoZSBDQSBzdG9yZSkuCgogICAgICBUaGUgdHJ1c3QgYW5jaG9yIGluZm9ybWF0aW9uIG1heSBiZSBwcm92aWRlZCB0byB0aGUgcGF0aCBwcm9jZXNzaW5nCiAgICAgIHByb2NlZHVyZSBpbiB0aGUgZm9ybSBvZiBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLiBUaGUgdHJ1c3RlZCBhbmNob3IKICAgICAgaW5mb3JtYXRpb24gaXMgdHJ1c3RlZCBiZWNhdXNlIGl0IHdhcyBkZWxpdmVyZWQgdG8gdGhlIHBhdGggcHJvY2Vzc2luZwogICAgICBwcm9jZWR1cmUgYnkgc29tZSB0cnVzdHdvcnRoeSBvdXQtb2YtYmFuZCBwcm9jZWR1cmUuIElmIHRoZSB0cnVzdGVkCiAgICAgIHB1YmxpYyBrZXkgYWxnb3JpdGhtIHJlcXVpcmVzIHBhcmFtZXRlcnMsIHRoZW4gdGhlIHBhcmFtZXRlcnMgYXJlCiAgICAgIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIHRydXN0ZWQgcHVibGljIGtleSAoTm8gcGFyYW1ldGVycyB1c2VkIGluIHRoaXMKICAgICAgaW1wbGVtZW50YXRpb24pLgoKICAgIChlKSBpbml0aWFsLXBvbGljeS1tYXBwaW5nLWluaGliaXQsIHdoaWNoIGluZGljYXRlcyBpZiBwb2xpY3kgbWFwcGluZyBpcwogICAgICAgICAgYWxsb3dlZCBpbiB0aGUgY2VydGlmaWNhdGlvbiBwYXRoLgogICAgICAgICAgKE5vdCBpbXBsZW1lbnRlZCwgbm8gcG9saWN5IGNoZWNraW5nKQoKICAgIChmKSBpbml0aWFsLWV4cGxpY2l0LXBvbGljeSwgd2hpY2ggaW5kaWNhdGVzIGlmIHRoZSBwYXRoIG11c3QgYmUgdmFsaWQKICAgICAgICAgIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlIGNlcnRpZmljYXRlIHBvbGljaWVzIGluIHRoZSB1c2VyLWluaXRpYWwtCiAgICAgICAgICBwb2xpY3ktc2V0LgogICAgICAgICAgKE5vdCBpbXBsZW1lbnRlZCwgbm8gcG9saWN5IGNoZWNraW5nKQoKICAgIChnKSBpbml0aWFsLWFueS1wb2xpY3ktaW5oaWJpdCwgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgdGhlCiAgICAgICAgICBhbnlQb2xpY3kgT0lEIHNob3VsZCBiZSBwcm9jZXNzZWQgaWYgaXQgaXMgaW5jbHVkZWQgaW4gYQogICAgICAgICAgY2VydGlmaWNhdGUuCiAgICAgICAgICAoTm90IGltcGxlbWVudGVkLCBzbyBhbnkgcG9saWN5IGlzIHZhbGlkIHByb3ZpZGVkIHRoYXQgaXQgaXMKICAgICAgICAgIG5vdCBtYXJrZWQgYXMgY3JpdGljYWwpICovCgogIC8qIEJhc2ljIFBhdGggUHJvY2Vzc2luZzoKCiAgICBGb3IgZWFjaCBjZXJ0aWZpY2F0ZSBpbiB0aGUgJ2NoYWluJywgdGhlIGZvbGxvd2luZyBpcyBjaGVja2VkOgoKICAgIDEuIFRoZSBjZXJ0aWZpY2F0ZSB2YWxpZGl0eSBwZXJpb2QgaW5jbHVkZXMgdGhlIGN1cnJlbnQgdGltZS4KICAgIDIuIFRoZSBjZXJ0aWZpY2F0ZSB3YXMgc2lnbmVkIGJ5IGl0cyBwYXJlbnQgKHdoZXJlIHRoZSBwYXJlbnQgaXMgZWl0aGVyCiAgICAgICB0aGUgbmV4dCBpbiB0aGUgY2hhaW4gb3IgZnJvbSB0aGUgQ0Egc3RvcmUpLiBBbGxvdyBwcm9jZXNzaW5nIHRvCiAgICAgICBjb250aW51ZSB0byB0aGUgbmV4dCBzdGVwIGlmIG5vIHBhcmVudCBpcyBmb3VuZCBidXQgdGhlIGNlcnRpZmljYXRlIGlzCiAgICAgICBpbiB0aGUgQ0Egc3RvcmUuCiAgICAzLiBUT0RPOiBUaGUgY2VydGlmaWNhdGUgaGFzIG5vdCBiZWVuIHJldm9rZWQuCiAgICA0LiBUaGUgY2VydGlmaWNhdGUgaXNzdWVyIG5hbWUgbWF0Y2hlcyB0aGUgcGFyZW50J3Mgc3ViamVjdCBuYW1lLgogICAgNS4gVE9ETzogSWYgdGhlIGNlcnRpZmljYXRlIGlzIHNlbGYtaXNzdWVkIGFuZCBub3QgdGhlIGZpbmFsIGNlcnRpZmljYXRlCiAgICAgICBpbiB0aGUgY2hhaW4sIHNraXAgdGhpcyBzdGVwLCBvdGhlcndpc2UgdmVyaWZ5IHRoYXQgdGhlIHN1YmplY3QgbmFtZQogICAgICAgaXMgd2l0aGluIG9uZSBvZiB0aGUgcGVybWl0dGVkIHN1YnRyZWVzIG9mIFguNTAwIGRpc3Rpbmd1aXNoZWQgbmFtZXMKICAgICAgIGFuZCB0aGF0IGVhY2ggb2YgdGhlIGFsdGVybmF0aXZlIG5hbWVzIGluIHRoZSBzdWJqZWN0QWx0TmFtZSBleHRlbnNpb24KICAgICAgIChjcml0aWNhbCBvciBub24tY3JpdGljYWwpIGlzIHdpdGhpbiBvbmUgb2YgdGhlIHBlcm1pdHRlZCBzdWJ0cmVlcyBmb3IKICAgICAgIHRoYXQgbmFtZSB0eXBlLgogICAgNi4gVE9ETzogSWYgdGhlIGNlcnRpZmljYXRlIGlzIHNlbGYtaXNzdWVkIGFuZCBub3QgdGhlIGZpbmFsIGNlcnRpZmljYXRlCiAgICAgICBpbiB0aGUgY2hhaW4sIHNraXAgdGhpcyBzdGVwLCBvdGhlcndpc2UgdmVyaWZ5IHRoYXQgdGhlIHN1YmplY3QgbmFtZQogICAgICAgaXMgbm90IHdpdGhpbiBvbmUgb2YgdGhlIGV4Y2x1ZGVkIHN1YnRyZWVzIGZvciBYLjUwMCBkaXN0aW5ndWlzaGVkCiAgICAgICBuYW1lcyBhbmQgbm9uZSBvZiB0aGUgc3ViamVjdEFsdE5hbWUgZXh0ZW5zaW9uIG5hbWVzIGFyZSBleGNsdWRlZCBmb3IKICAgICAgIHRoYXQgbmFtZSB0eXBlLgogICAgNy4gVGhlIG90aGVyIHN0ZXBzIGluIHRoZSBhbGdvcml0aG0gZm9yIGJhc2ljIHBhdGggcHJvY2Vzc2luZyBpbnZvbHZlCiAgICAgICBoYW5kbGluZyB0aGUgcG9saWN5IGV4dGVuc2lvbiB3aGljaCBpcyBub3QgcHJlc2VudGx5IHN1cHBvcnRlZCBpbiB0aGlzCiAgICAgICBpbXBsZW1lbnRhdGlvbi4gSW5zdGVhZCwgaWYgYSBjcml0aWNhbCBwb2xpY3kgZXh0ZW5zaW9uIGlzIGZvdW5kLCB0aGUKICAgICAgIGNlcnRpZmljYXRlIGlzIHJlamVjdGVkIGFzIG5vdCBzdXBwb3J0ZWQuCiAgICA4LiBJZiB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHRoZSBmaXJzdCBvciBpZiBpdHMgdGhlIG9ubHkgY2VydGlmaWNhdGUgaW4KICAgICAgIHRoZSBjaGFpbiAoaGF2aW5nIG5vIHBhcmVudCBmcm9tIHRoZSBDQSBzdG9yZSBvciBpcyBzZWxmLXNpZ25lZCkgYW5kIGl0CiAgICAgICBoYXMgYSBjcml0aWNhbCBrZXkgdXNhZ2UgZXh0ZW5zaW9uLCB2ZXJpZnkgdGhhdCB0aGUga2V5Q2VydFNpZ24gYml0IGlzCiAgICAgICBzZXQuIElmIHRoZSBrZXkgdXNhZ2UgZXh0ZW5zaW9uIGV4aXN0cywgdmVyaWZ5IHRoYXQgdGhlIGJhc2ljCiAgICAgICBjb25zdHJhaW50cyBleHRlbnNpb24gZXhpc3RzLiBJZiB0aGUgYmFzaWMgY29uc3RyYWludHMgZXh0ZW5zaW9uIGV4aXN0cywKICAgICAgIHZlcmlmeSB0aGF0IHRoZSBjQSBmbGFnIGlzIHNldC4gSWYgcGF0aExlbkNvbnN0cmFpbnQgaXMgc2V0LCBlbnN1cmUgdGhhdAogICAgICAgdGhlIG51bWJlciBvZiBjZXJ0aWZpY2F0ZXMgdGhhdCBwcmVjZWRlIGluIHRoZSBjaGFpbiAoY29tZSBlYXJsaWVyCiAgICAgICBpbiB0aGUgY2hhaW4gYXMgaW1wbGVtZW50ZWQgYmVsb3cpLCBleGNsdWRpbmcgdGhlIHZlcnkgZmlyc3QgaW4gdGhlCiAgICAgICBjaGFpbiAodHlwaWNhbGx5IHRoZSBlbmQtZW50aXR5IG9uZSksIGlzbid0IGdyZWF0ZXIgdGhhbiB0aGUKICAgICAgIHBhdGhMZW5Db25zdHJhaW50LiBUaGlzIGNvbnN0cmFpbnQgbGltaXRzIHRoZSBudW1iZXIgb2YgaW50ZXJtZWRpYXRlCiAgICAgICBDQXMgdGhhdCBtYXkgYXBwZWFyIGJlbG93IGEgQ0EgYmVmb3JlIG9ubHkgZW5kLWVudGl0eSBjZXJ0aWZpY2F0ZXMKICAgICAgIG1heSBiZSBpc3N1ZWQuICovCgogIC8vIGNvcHkgY2VydCBjaGFpbiByZWZlcmVuY2VzIHRvIGFub3RoZXIgYXJyYXkgdG8gcHJvdGVjdCBhZ2FpbnN0IGNoYW5nZXMKICAvLyBpbiB2ZXJpZnkgY2FsbGJhY2sKICBjaGFpbiA9IGNoYWluLnNsaWNlKDApOwogIHZhciBjZXJ0cyA9IGNoYWluLnNsaWNlKDApOwoKICAvLyBnZXQgY3VycmVudCBkYXRlCiAgdmFyIG5vdyA9IG5ldyBEYXRlKCk7CgogIC8vIHZlcmlmeSBlYWNoIGNlcnQgaW4gdGhlIGNoYWluIHVzaW5nIGl0cyBwYXJlbnQsIHdoZXJlIHRoZSBwYXJlbnQKICAvLyBpcyBlaXRoZXIgdGhlIG5leHQgaW4gdGhlIGNoYWluIG9yIGZyb20gdGhlIENBIHN0b3JlCiAgdmFyIGZpcnN0ID0gdHJ1ZTsKICB2YXIgZXJyb3IgPSBudWxsOwogIHZhciBkZXB0aCA9IDA7CiAgZG8gewogICAgdmFyIGNlcnQgPSBjaGFpbi5zaGlmdCgpOwogICAgdmFyIHBhcmVudCA9IG51bGw7CiAgICB2YXIgc2VsZlNpZ25lZCA9IGZhbHNlOwoKICAgIC8vIDEuIGNoZWNrIHZhbGlkIHRpbWUKICAgIGlmKG5vdyA8IGNlcnQudmFsaWRpdHkubm90QmVmb3JlIHx8IG5vdyA+IGNlcnQudmFsaWRpdHkubm90QWZ0ZXIpIHsKICAgICAgZXJyb3IgPSB7CiAgICAgICAgbWVzc2FnZTogJ0NlcnRpZmljYXRlIGlzIG5vdCB2YWxpZCB5ZXQgb3IgaGFzIGV4cGlyZWQuJywKICAgICAgICBlcnJvcjogcGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfZXhwaXJlZCwKICAgICAgICBub3RCZWZvcmU6IGNlcnQudmFsaWRpdHkubm90QmVmb3JlLAogICAgICAgIG5vdEFmdGVyOiBjZXJ0LnZhbGlkaXR5Lm5vdEFmdGVyLAogICAgICAgIG5vdzogbm93CiAgICAgIH07CiAgICB9CgogICAgLy8gMi4gdmVyaWZ5IHdpdGggcGFyZW50IGZyb20gY2hhaW4gb3IgQ0Egc3RvcmUKICAgIGlmKGVycm9yID09PSBudWxsKSB7CiAgICAgIHBhcmVudCA9IGNoYWluWzBdIHx8IGNhU3RvcmUuZ2V0SXNzdWVyKGNlcnQpOwogICAgICBpZihwYXJlbnQgPT09IG51bGwpIHsKICAgICAgICAvLyBjaGVjayBmb3Igc2VsZi1zaWduZWQgY2VydAogICAgICAgIGlmKGNlcnQuaXNJc3N1ZXIoY2VydCkpIHsKICAgICAgICAgIHNlbGZTaWduZWQgPSB0cnVlOwogICAgICAgICAgcGFyZW50ID0gY2VydDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmKHBhcmVudCkgewogICAgICAgIC8vIEZJWE1FOiBjdXJyZW50IENBIHN0b3JlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGhhdmUgbXVsdGlwbGUKICAgICAgICAvLyBjZXJ0aWZpY2F0ZXMgd2hlcmUgdGhlIGlzc3VlciBjYW4ndCBiZSBkZXRlcm1pbmVkIGZyb20gdGhlCiAgICAgICAgLy8gY2VydGlmaWNhdGUgKGhhcHBlbnMgcmFyZWx5IHdpdGgsIGVnOiBvbGQgY2VydGlmaWNhdGVzKSBzbyBub3JtYWxpemUKICAgICAgICAvLyBieSBhbHdheXMgcHV0dGluZyBwYXJlbnRzIGludG8gYW4gYXJyYXkKICAgICAgICAvLyBUT0RPOiB0aGVyZSdzIG1heSBiZSBhbiBleHRyZW1lIGRlZ2VuZXJhdGUgY2FzZSBjdXJyZW50bHkgdW5jb3ZlcmVkCiAgICAgICAgLy8gd2hlcmUgYW4gb2xkIGludGVybWVkaWF0ZSBjZXJ0aWZpY2F0ZSBzZWVtcyB0byBoYXZlIGEgbWF0Y2hpbmcgcGFyZW50CiAgICAgICAgLy8gYnV0IG5vbmUgb2YgdGhlIHBhcmVudHMgYWN0dWFsbHkgdmVyaWZ5IC4uLiBidXQgdGhlIGludGVybWVkaWF0ZQogICAgICAgIC8vIGlzIGluIHRoZSBDQSBhbmQgaXQgc2hvdWxkIHBhc3MgdGhpcyBjaGVjazsgbmVlZHMgaW52ZXN0aWdhdGlvbgogICAgICAgIHZhciBwYXJlbnRzID0gcGFyZW50OwogICAgICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkocGFyZW50cykpIHsKICAgICAgICAgIHBhcmVudHMgPSBbcGFyZW50c107CiAgICAgICAgfQoKICAgICAgICAvLyB0cnkgdG8gdmVyaWZ5IHdpdGggZWFjaCBwb3NzaWJsZSBwYXJlbnQgKHR5cGljYWxseSBvbmx5IG9uZSkKICAgICAgICB2YXIgdmVyaWZpZWQgPSBmYWxzZTsKICAgICAgICB3aGlsZSghdmVyaWZpZWQgJiYgcGFyZW50cy5sZW5ndGggPiAwKSB7CiAgICAgICAgICBwYXJlbnQgPSBwYXJlbnRzLnNoaWZ0KCk7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICB2ZXJpZmllZCA9IHBhcmVudC52ZXJpZnkoY2VydCk7CiAgICAgICAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgICAgIC8vIGZhaWx1cmUgdG8gdmVyaWZ5LCBkb24ndCBjYXJlIHdoeSwgdHJ5IG5leHQgb25lCiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZighdmVyaWZpZWQpIHsKICAgICAgICAgIGVycm9yID0gewogICAgICAgICAgICBtZXNzYWdlOiAnQ2VydGlmaWNhdGUgc2lnbmF0dXJlIGlzIGludmFsaWQuJywKICAgICAgICAgICAgZXJyb3I6IHBraS5jZXJ0aWZpY2F0ZUVycm9yLmJhZF9jZXJ0aWZpY2F0ZQogICAgICAgICAgfTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmKGVycm9yID09PSBudWxsICYmICghcGFyZW50IHx8IHNlbGZTaWduZWQpICYmCiAgICAgICAgIWNhU3RvcmUuaGFzQ2VydGlmaWNhdGUoY2VydCkpIHsKICAgICAgICAvLyBubyBwYXJlbnQgaXNzdWVyIGFuZCBjZXJ0aWZpY2F0ZSBpdHNlbGYgaXMgbm90IHRydXN0ZWQKICAgICAgICBlcnJvciA9IHsKICAgICAgICAgIG1lc3NhZ2U6ICdDZXJ0aWZpY2F0ZSBpcyBub3QgdHJ1c3RlZC4nLAogICAgICAgICAgZXJyb3I6IHBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2EKICAgICAgICB9OwogICAgICB9CiAgICB9CgogICAgLy8gVE9ETzogMy4gY2hlY2sgcmV2b2tlZAoKICAgIC8vIDQuIGNoZWNrIGZvciBtYXRjaGluZyBpc3N1ZXIvc3ViamVjdAogICAgaWYoZXJyb3IgPT09IG51bGwgJiYgcGFyZW50ICYmICFjZXJ0LmlzSXNzdWVyKHBhcmVudCkpIHsKICAgICAgLy8gcGFyZW50IGlzIG5vdCBpc3N1ZXIKICAgICAgZXJyb3IgPSB7CiAgICAgICAgbWVzc2FnZTogJ0NlcnRpZmljYXRlIGlzc3VlciBpcyBpbnZhbGlkLicsCiAgICAgICAgZXJyb3I6IHBraS5jZXJ0aWZpY2F0ZUVycm9yLmJhZF9jZXJ0aWZpY2F0ZQogICAgICB9OwogICAgfQoKICAgIC8vIDUuIFRPRE86IGNoZWNrIG5hbWVzIHdpdGggcGVybWl0dGVkIG5hbWVzIHRyZWUKCiAgICAvLyA2LiBUT0RPOiBjaGVjayBuYW1lcyBhZ2FpbnN0IGV4Y2x1ZGVkIG5hbWVzIHRyZWUKCiAgICAvLyA3LiBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgY3JpdGljYWwgZXh0ZW5zaW9ucwogICAgaWYoZXJyb3IgPT09IG51bGwpIHsKICAgICAgLy8gc3VwcG9ydGVkIGV4dGVuc2lvbnMKICAgICAgdmFyIHNlID0gewogICAgICAgIGtleVVzYWdlOiB0cnVlLAogICAgICAgIGJhc2ljQ29uc3RyYWludHM6IHRydWUKICAgICAgfTsKICAgICAgZm9yKHZhciBpID0gMDsgZXJyb3IgPT09IG51bGwgJiYgaSA8IGNlcnQuZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciBleHQgPSBjZXJ0LmV4dGVuc2lvbnNbaV07CiAgICAgICAgaWYoZXh0LmNyaXRpY2FsICYmICEoZXh0Lm5hbWUgaW4gc2UpKSB7CiAgICAgICAgICBlcnJvciA9IHsKICAgICAgICAgICAgbWVzc2FnZToKICAgICAgICAgICAgICAnQ2VydGlmaWNhdGUgaGFzIGFuIHVuc3VwcG9ydGVkIGNyaXRpY2FsIGV4dGVuc2lvbi4nLAogICAgICAgICAgICBlcnJvcjogcGtpLmNlcnRpZmljYXRlRXJyb3IudW5zdXBwb3J0ZWRfY2VydGlmaWNhdGUKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gOC4gY2hlY2sgZm9yIENBIGlmIGNlcnQgaXMgbm90IGZpcnN0IG9yIGlzIHRoZSBvbmx5IGNlcnRpZmljYXRlCiAgICAvLyByZW1haW5pbmcgaW4gY2hhaW4gd2l0aCBubyBwYXJlbnQgb3IgaXMgc2VsZi1zaWduZWQKICAgIGlmKGVycm9yID09PSBudWxsICYmCiAgICAgICghZmlyc3QgfHwgKGNoYWluLmxlbmd0aCA9PT0gMCAmJiAoIXBhcmVudCB8fCBzZWxmU2lnbmVkKSkpKSB7CiAgICAgIC8vIGZpcnN0IGNoZWNrIGtleVVzYWdlIGV4dGVuc2lvbiBhbmQgdGhlbiBiYXNpYyBjb25zdHJhaW50cwogICAgICB2YXIgYmNFeHQgPSBjZXJ0LmdldEV4dGVuc2lvbignYmFzaWNDb25zdHJhaW50cycpOwogICAgICB2YXIga2V5VXNhZ2VFeHQgPSBjZXJ0LmdldEV4dGVuc2lvbigna2V5VXNhZ2UnKTsKICAgICAgaWYoa2V5VXNhZ2VFeHQgIT09IG51bGwpIHsKICAgICAgICAvLyBrZXlDZXJ0U2lnbiBtdXN0IGJlIHRydWUgYW5kIHRoZXJlIG11c3QgYmUgYSBiYXNpYwogICAgICAgIC8vIGNvbnN0cmFpbnRzIGV4dGVuc2lvbgogICAgICAgIGlmKCFrZXlVc2FnZUV4dC5rZXlDZXJ0U2lnbiB8fCBiY0V4dCA9PT0gbnVsbCkgewogICAgICAgICAgLy8gYmFkIGNlcnRpZmljYXRlCiAgICAgICAgICBlcnJvciA9IHsKICAgICAgICAgICAgbWVzc2FnZToKICAgICAgICAgICAgICAnQ2VydGlmaWNhdGUga2V5VXNhZ2Ugb3IgYmFzaWNDb25zdHJhaW50cyBjb25mbGljdCAnICsKICAgICAgICAgICAgICAnb3IgaW5kaWNhdGUgdGhhdCB0aGUgY2VydGlmaWNhdGUgaXMgbm90IGEgQ0EuICcgKwogICAgICAgICAgICAgICdJZiB0aGUgY2VydGlmaWNhdGUgaXMgdGhlIG9ubHkgb25lIGluIHRoZSBjaGFpbiBvciAnICsKICAgICAgICAgICAgICAnaXNuXCd0IHRoZSBmaXJzdCB0aGVuIHRoZSBjZXJ0aWZpY2F0ZSBtdXN0IGJlIGEgJyArCiAgICAgICAgICAgICAgJ3ZhbGlkIENBLicsCiAgICAgICAgICAgIGVycm9yOiBwa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGUKICAgICAgICAgIH07CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vIGJhc2ljIGNvbnN0cmFpbnRzIGNBIGZsYWcgbXVzdCBiZSBzZXQKICAgICAgaWYoZXJyb3IgPT09IG51bGwgJiYgYmNFeHQgIT09IG51bGwgJiYgIWJjRXh0LmNBKSB7CiAgICAgICAgLy8gYmFkIGNlcnRpZmljYXRlCiAgICAgICAgZXJyb3IgPSB7CiAgICAgICAgICBtZXNzYWdlOgogICAgICAgICAgICAnQ2VydGlmaWNhdGUgYmFzaWNDb25zdHJhaW50cyBpbmRpY2F0ZXMgdGhlIGNlcnRpZmljYXRlICcgKwogICAgICAgICAgICAnaXMgbm90IGEgQ0EuJywKICAgICAgICAgIGVycm9yOiBwa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGUKICAgICAgICB9OwogICAgICB9CiAgICAgIC8vIGlmIGVycm9yIGlzIG5vdCBudWxsIGFuZCBrZXlVc2FnZSBpcyBhdmFpbGFibGUsIHRoZW4gd2Uga25vdyBpdAogICAgICAvLyBoYXMga2V5Q2VydFNpZ24gYW5kIHRoZXJlIGlzIGEgYmFzaWMgY29uc3RyYWludHMgZXh0ZW5zaW9uIHRvbywKICAgICAgLy8gd2hpY2ggbWVhbnMgd2UgY2FuIGNoZWNrIHBhdGhMZW5Db25zdHJhaW50IChpZiBpdCBleGlzdHMpCiAgICAgIGlmKGVycm9yID09PSBudWxsICYmIGtleVVzYWdlRXh0ICE9PSBudWxsICYmCiAgICAgICAgJ3BhdGhMZW5Db25zdHJhaW50JyBpbiBiY0V4dCkgewogICAgICAgIC8vIHBhdGhMZW4gaXMgdGhlIG1heGltdW0gIyBvZiBpbnRlcm1lZGlhdGUgQ0EgY2VydHMgdGhhdCBjYW4gYmUKICAgICAgICAvLyBmb3VuZCBiZXR3ZWVuIHRoZSBjdXJyZW50IGNlcnRpZmljYXRlIGFuZCB0aGUgZW5kLWVudGl0eSAoZGVwdGggMCkKICAgICAgICAvLyBjZXJ0aWZpY2F0ZTsgdGhpcyBudW1iZXIgZG9lcyBub3QgaW5jbHVkZSB0aGUgZW5kLWVudGl0eSAoZGVwdGggMCwKICAgICAgICAvLyBsYXN0IGluIHRoZSBjaGFpbikgZXZlbiBpZiBpdCBoYXBwZW5zIHRvIGJlIGEgQ0EgY2VydGlmaWNhdGUgaXRzZWxmCiAgICAgICAgdmFyIHBhdGhMZW4gPSBkZXB0aCAtIDE7CiAgICAgICAgaWYocGF0aExlbiA+IGJjRXh0LnBhdGhMZW5Db25zdHJhaW50KSB7CiAgICAgICAgICAvLyBwYXRoTGVuQ29uc3RyYWludCB2aW9sYXRlZCwgYmFkIGNlcnRpZmljYXRlCiAgICAgICAgICBlcnJvciA9IHsKICAgICAgICAgICAgbWVzc2FnZToKICAgICAgICAgICAgICAnQ2VydGlmaWNhdGUgYmFzaWNDb25zdHJhaW50cyBwYXRoTGVuQ29uc3RyYWludCB2aW9sYXRlZC4nLAogICAgICAgICAgICBlcnJvcjogcGtpLmNlcnRpZmljYXRlRXJyb3IuYmFkX2NlcnRpZmljYXRlCiAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIGNhbGwgYXBwbGljYXRpb24gY2FsbGJhY2sKICAgIHZhciB2ZmQgPSAoZXJyb3IgPT09IG51bGwpID8gdHJ1ZSA6IGVycm9yLmVycm9yOwogICAgdmFyIHJldCA9IHZlcmlmeSA/IHZlcmlmeSh2ZmQsIGRlcHRoLCBjZXJ0cykgOiB2ZmQ7CiAgICBpZihyZXQgPT09IHRydWUpIHsKICAgICAgLy8gY2xlYXIgYW55IHNldCBlcnJvcgogICAgICBlcnJvciA9IG51bGw7CiAgICB9IGVsc2UgewogICAgICAvLyBpZiBwYXNzZWQgYmFzaWMgdGVzdHMsIHNldCBkZWZhdWx0IG1lc3NhZ2UgYW5kIGFsZXJ0CiAgICAgIGlmKHZmZCA9PT0gdHJ1ZSkgewogICAgICAgIGVycm9yID0gewogICAgICAgICAgbWVzc2FnZTogJ1RoZSBhcHBsaWNhdGlvbiByZWplY3RlZCB0aGUgY2VydGlmaWNhdGUuJywKICAgICAgICAgIGVycm9yOiBwa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGUKICAgICAgICB9OwogICAgICB9CgogICAgICAvLyBjaGVjayBmb3IgY3VzdG9tIGVycm9yIGluZm8KICAgICAgaWYocmV0IHx8IHJldCA9PT0gMCkgewogICAgICAgIC8vIHNldCBjdXN0b20gbWVzc2FnZSBhbmQgZXJyb3IKICAgICAgICBpZih0eXBlb2YgcmV0ID09PSAnb2JqZWN0JyAmJiAhZm9yZ2UudXRpbC5pc0FycmF5KHJldCkpIHsKICAgICAgICAgIGlmKHJldC5tZXNzYWdlKSB7CiAgICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gcmV0Lm1lc3NhZ2U7CiAgICAgICAgICB9CiAgICAgICAgICBpZihyZXQuZXJyb3IpIHsKICAgICAgICAgICAgZXJyb3IuZXJyb3IgPSByZXQuZXJyb3I7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmKHR5cGVvZiByZXQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAvLyBzZXQgY3VzdG9tIGVycm9yCiAgICAgICAgICBlcnJvci5lcnJvciA9IHJldDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIHRocm93IGVycm9yCiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIC8vIG5vIGxvbmdlciBmaXJzdCBjZXJ0IGluIGNoYWluCiAgICBmaXJzdCA9IGZhbHNlOwogICAgKytkZXB0aDsKICB9IHdoaWxlKGNoYWluLmxlbmd0aCA+IDApOwoKICByZXR1cm4gdHJ1ZTsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3g1MDknOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZS5wa2k7CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3g1MDknLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYWVzJywKICAnLi9hc24xJywKICAnLi9kZXMnLAogICcuL21kJywKICAnLi9tZ2YnLAogICcuL29pZHMnLAogICcuL3BlbScsCiAgJy4vcHNzJywKICAnLi9yc2EnLAogICcuL3V0aWwnCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgUEtDUyMxMi4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICogQGF1dGhvciBTdGVmYW4gU2llZ2wgPHN0ZXNpZUBicm9rZW5waXBlLmRlPgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxNCBEaWdpdGFsIEJhemFhciwgSW5jLgogKiBDb3B5cmlnaHQgKGMpIDIwMTIgU3RlZmFuIFNpZWdsIDxzdGVzaWVAYnJva2VucGlwZS5kZT4KICoKICogVGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIFBLQ1MjMTIgaXMgYXMgZm9sbG93cwogKiAoc2VlIGZ0cDovL2Z0cC5yc2FzZWN1cml0eS5jb20vcHViL3BrY3MvcGtjcy0xMi9wa2NzLTEyLXRjMS5wZGYgZm9yIGRldGFpbHMpCiAqCiAqIFBGWCA6Oj0gU0VRVUVOQ0UgewogKiAgIHZlcnNpb24gIElOVEVHRVIge3YzKDMpfSh2MywuLi4pLAogKiAgIGF1dGhTYWZlIENvbnRlbnRJbmZvLAogKiAgIG1hY0RhdGEgIE1hY0RhdGEgT1BUSU9OQUwKICogfQogKgogKiBNYWNEYXRhIDo6PSBTRVFVRU5DRSB7CiAqICAgbWFjIERpZ2VzdEluZm8sCiAqICAgbWFjU2FsdCBPQ1RFVCBTVFJJTkcsCiAqICAgaXRlcmF0aW9ucyBJTlRFR0VSIERFRkFVTFQgMQogKiB9CiAqIE5vdGU6IFRoZSBpdGVyYXRpb25zIGRlZmF1bHQgaXMgZm9yIGhpc3RvcmljYWwgcmVhc29ucyBhbmQgaXRzIHVzZSBpcwogKiBkZXByZWNhdGVkLiBBIGhpZ2hlciB2YWx1ZSwgbGlrZSAxMDI0LCBpcyByZWNvbW1lbmRlZC4KICoKICogRGlnZXN0SW5mbyBpcyBkZWZpbmVkIGluIFBLQ1MjNyBhcyBmb2xsb3dzOgogKgogKiBEaWdlc3RJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgZGlnZXN0QWxnb3JpdGhtIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIsCiAqICAgZGlnZXN0IERpZ2VzdAogKiB9CiAqCiAqIERpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXIgOjo9IEFsZ29yaXRobUlkZW50aWZpZXIKICoKICogVGhlIEFsZ29yaXRobUlkZW50aWZpZXIgY29udGFpbnMgYW4gT2JqZWN0IElkZW50aWZpZXIgKE9JRCkgYW5kIHBhcmFtZXRlcnMKICogZm9yIHRoZSBhbGdvcml0aG0sIGlmIGFueS4gSW4gdGhlIGNhc2Ugb2YgU0hBMSB0aGVyZSBpcyBub25lLgogKgogKiBBbGdvcml0aG1JZGVudGlmZXIgOjo9IFNFUVVFTkNFIHsKICogICAgYWxnb3JpdGhtIE9CSkVDVCBJREVOVElGSUVSLAogKiAgICBwYXJhbWV0ZXJzIEFOWSBERUZJTkVEIEJZIGFsZ29yaXRobSBPUFRJT05BTAogKiB9CiAqCiAqIERpZ2VzdCA6Oj0gT0NURVQgU1RSSU5HCiAqCiAqCiAqIENvbnRlbnRJbmZvIDo6PSBTRVFVRU5DRSB7CiAqICAgY29udGVudFR5cGUgQ29udGVudFR5cGUsCiAqICAgY29udGVudCAgICAgWzBdIEVYUExJQ0lUIEFOWSBERUZJTkVEIEJZIGNvbnRlbnRUeXBlIE9QVElPTkFMCiAqIH0KICoKICogQ29udGVudFR5cGUgOjo9IE9CSkVDVCBJREVOVElGSUVSCiAqCiAqIEF1dGhlbnRpY2F0ZWRTYWZlIDo6PSBTRVFVRU5DRSBPRiBDb250ZW50SW5mbwogKiAtLSBEYXRhIGlmIHVuZW5jcnlwdGVkCiAqIC0tIEVuY3J5cHRlZERhdGEgaWYgcGFzc3dvcmQtZW5jcnlwdGVkCiAqIC0tIEVudmVsb3BlZERhdGEgaWYgcHVibGljIGtleS1lbmNyeXB0ZWQKICoKICoKICogU2FmZUNvbnRlbnRzIDo6PSBTRVFVRU5DRSBPRiBTYWZlQmFnCiAqCiAqIFNhZmVCYWcgOjo9IFNFUVVFTkNFIHsKICogICBiYWdJZCAgICAgQkFHLVRZUEUuJmlkICh7UEtDUzEyQmFnU2V0fSkKICogICBiYWdWYWx1ZSAgWzBdIEVYUExJQ0lUIEJBRy1UWVBFLiZUeXBlKHtQS0NTMTJCYWdTZXR9e0BiYWdJZH0pLAogKiAgIGJhZ0F0dHJpYnV0ZXMgU0VUIE9GIFBLQ1MxMkF0dHJpYnV0ZSBPUFRJT05BTAogKiB9CiAqCiAqIFBLQ1MxMkF0dHJpYnV0ZSA6Oj0gU0VRVUVOQ0UgewogKiAgIGF0dHJJZCBBVFRSSUJVVEUuJmlkICh7UEtDUzEyQXR0clNldH0pLAogKiAgIGF0dHJWYWx1ZXMgU0VUIE9GIEFUVFJJQlVURS4mVHlwZSAoe1BLQ1MxMkF0dHJTZXR9e0BhdHRySWR9KQogKiB9IC0tIFRoaXMgdHlwZSBpcyBjb21wYXRpYmxlIHdpdGggdGhlIFguNTAwIHR5cGUg4oCZQXR0cmlidXRl4oCZCiAqCiAqIFBLQ1MxMkF0dHJTZXQgQVRUUklCVVRFIDo6PSB7CiAqICAgZnJpZW5kbHlOYW1lIHwgLS0gZnJvbSBQS0NTICM5CiAqICAgbG9jYWxLZXlJZCwgLS0gZnJvbSBQS0NTICM5CiAqICAgLi4uIC0tIE90aGVyIGF0dHJpYnV0ZXMgYXJlIGFsbG93ZWQKICogfQogKgogKiBDZXJ0QmFnIDo6PSBTRVFVRU5DRSB7CiAqICAgY2VydElkICAgIEJBRy1UWVBFLiZpZCAgICh7Q2VydFR5cGVzfSksCiAqICAgY2VydFZhbHVlIFswXSBFWFBMSUNJVCBCQUctVFlQRS4mVHlwZSAoe0NlcnRUeXBlc317QGNlcnRJZH0pCiAqIH0KICoKICogeDUwOUNlcnRpZmljYXRlIEJBRy1UWVBFIDo6PSB7T0NURVQgU1RSSU5HIElERU5USUZJRUQgQlkge2NlcnRUeXBlcyAxfX0KICogICAtLSBERVItZW5jb2RlZCBYLjUwOSBjZXJ0aWZpY2F0ZSBzdG9yZWQgaW4gT0NURVQgU1RSSU5HCiAqCiAqIHNkc2lDZXJ0aWZpY2F0ZSBCQUctVFlQRSA6Oj0ge0lBNVN0cmluZyBJREVOVElGSUVEIEJZIHtjZXJ0VHlwZXMgMn19CiAqIC0tIEJhc2U2NC1lbmNvZGVkIFNEU0kgY2VydGlmaWNhdGUgc3RvcmVkIGluIElBNVN0cmluZwogKgogKiBDZXJ0VHlwZXMgQkFHLVRZUEUgOjo9IHsKICogICB4NTA5Q2VydGlmaWNhdGUgfAogKiAgIHNkc2lDZXJ0aWZpY2F0ZSwKICogICAuLi4gLS0gRm9yIGZ1dHVyZSBleHRlbnNpb25zCiAqIH0KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBzaG9ydGN1dCBmb3IgYXNuLjEgJiBQS0kgQVBJCnZhciBhc24xID0gZm9yZ2UuYXNuMTsKdmFyIHBraSA9IGZvcmdlLnBraTsKCi8vIHNob3J0Y3V0IGZvciBQS0NTIzEyIEFQSQp2YXIgcDEyID0gZm9yZ2UucGtjczEyID0gZm9yZ2UucGtjczEyIHx8IHt9OwoKdmFyIGNvbnRlbnRJbmZvVmFsaWRhdG9yID0gewogIG5hbWU6ICdDb250ZW50SW5mbycsCiAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwgIC8vIGEgQ29udGVudEluZm8KICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICB2YWx1ZTogW3sKICAgIG5hbWU6ICdDb250ZW50SW5mby5jb250ZW50VHlwZScsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2NvbnRlbnRUeXBlJwogIH0sIHsKICAgIG5hbWU6ICdDb250ZW50SW5mby5jb250ZW50JywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnY29udGVudCcKICB9XQp9OwoKdmFyIHBmeFZhbGlkYXRvciA9IHsKICBuYW1lOiAnUEZYJywKICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLAogIGNvbnN0cnVjdGVkOiB0cnVlLAogIHZhbHVlOiBbewogICAgbmFtZTogJ1BGWC52ZXJzaW9uJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5JTlRFR0VSLAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ3ZlcnNpb24nCiAgfSwKICBjb250ZW50SW5mb1ZhbGlkYXRvciwgewogICAgbmFtZTogJ1BGWC5tYWNEYXRhJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgIHR5cGU6IGFzbjEuVHlwZS5TRVFVRU5DRSwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgb3B0aW9uYWw6IHRydWUsCiAgICBjYXB0dXJlQXNuMTogJ21hYycsCiAgICB2YWx1ZTogW3sKICAgICAgbmFtZTogJ1BGWC5tYWNEYXRhLm1hYycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLlNFUVVFTkNFLCAgLy8gRGlnZXN0SW5mbwogICAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgICAgdmFsdWU6IFt7CiAgICAgICAgbmFtZTogJ1BGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0nLAogICAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsICAvLyBEaWdlc3RBbGdvcml0aG1JZGVudGlmaWVyCiAgICAgICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICAgICAgdmFsdWU6IFt7CiAgICAgICAgICBuYW1lOiAnUEZYLm1hY0RhdGEubWFjLmRpZ2VzdEFsZ29yaXRobS5hbGdvcml0aG0nLAogICAgICAgICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICAgIGNhcHR1cmU6ICdtYWNBbGdvcml0aG0nCiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ1BGWC5tYWNEYXRhLm1hYy5kaWdlc3RBbGdvcml0aG0ucGFyYW1ldGVycycsCiAgICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgICBjYXB0dXJlQXNuMTogJ21hY0FsZ29yaXRobVBhcmFtZXRlcnMnCiAgICAgICAgfV0KICAgICAgfSwgewogICAgICAgIG5hbWU6ICdQRlgubWFjRGF0YS5tYWMuZGlnZXN0JywKICAgICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgICBjYXB0dXJlOiAnbWFjRGlnZXN0JwogICAgICB9XQogICAgfSwgewogICAgICBuYW1lOiAnUEZYLm1hY0RhdGEubWFjU2FsdCcsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLk9DVEVUU1RSSU5HLAogICAgICBjb25zdHJ1Y3RlZDogZmFsc2UsCiAgICAgIGNhcHR1cmU6ICdtYWNTYWx0JwogICAgfSwgewogICAgICBuYW1lOiAnUEZYLm1hY0RhdGEuaXRlcmF0aW9ucycsCiAgICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICAgICAgdHlwZTogYXNuMS5UeXBlLklOVEVHRVIsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgb3B0aW9uYWw6IHRydWUsCiAgICAgIGNhcHR1cmU6ICdtYWNJdGVyYXRpb25zJwogICAgfV0KICB9XQp9OwoKdmFyIHNhZmVCYWdWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ1NhZmVCYWcnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnU2FmZUJhZy5iYWdJZCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ2JhZ0lkJwogIH0sIHsKICAgIG5hbWU6ICdTYWZlQmFnLmJhZ1ZhbHVlJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIGNhcHR1cmVBc24xOiAnYmFnVmFsdWUnCiAgfSwgewogICAgbmFtZTogJ1NhZmVCYWcuYmFnQXR0cmlidXRlcycsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuU0VULAogICAgY29uc3RydWN0ZWQ6IHRydWUsCiAgICBvcHRpb25hbDogdHJ1ZSwKICAgIGNhcHR1cmU6ICdiYWdBdHRyaWJ1dGVzJwogIH1dCn07Cgp2YXIgYXR0cmlidXRlVmFsaWRhdG9yID0gewogIG5hbWU6ICdBdHRyaWJ1dGUnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnQXR0cmlidXRlLmF0dHJJZCcsCiAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICB0eXBlOiBhc24xLlR5cGUuT0lELAogICAgY29uc3RydWN0ZWQ6IGZhbHNlLAogICAgY2FwdHVyZTogJ29pZCcKICB9LCB7CiAgICBuYW1lOiAnQXR0cmlidXRlLmF0dHJWYWx1ZXMnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLlNFVCwKICAgIGNvbnN0cnVjdGVkOiB0cnVlLAogICAgY2FwdHVyZTogJ3ZhbHVlcycKICB9XQp9OwoKdmFyIGNlcnRCYWdWYWxpZGF0b3IgPSB7CiAgbmFtZTogJ0NlcnRCYWcnLAogIHRhZ0NsYXNzOiBhc24xLkNsYXNzLlVOSVZFUlNBTCwKICB0eXBlOiBhc24xLlR5cGUuU0VRVUVOQ0UsCiAgY29uc3RydWN0ZWQ6IHRydWUsCiAgdmFsdWU6IFt7CiAgICBuYW1lOiAnQ2VydEJhZy5jZXJ0SWQnLAogICAgdGFnQ2xhc3M6IGFzbjEuQ2xhc3MuVU5JVkVSU0FMLAogICAgdHlwZTogYXNuMS5UeXBlLk9JRCwKICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgIGNhcHR1cmU6ICdjZXJ0SWQnCiAgfSwgewogICAgbmFtZTogJ0NlcnRCYWcuY2VydFZhbHVlJywKICAgIHRhZ0NsYXNzOiBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsCiAgICBjb25zdHJ1Y3RlZDogdHJ1ZSwKICAgIC8qIFNvIGZhciB3ZSBvbmx5IHN1cHBvcnQgWC41MDkgY2VydGlmaWNhdGVzICh3aGljaCBhcmUgd3JhcHBlZCBpbgogICAgICAgYW4gT0NURVQgU1RSSU5HLCBoZW5jZSBoYXJkIGNvZGUgdGhhdCBoZXJlKS4gKi8KICAgIHZhbHVlOiBbewogICAgICBuYW1lOiAnQ2VydEJhZy5jZXJ0VmFsdWVbMF0nLAogICAgICB0YWdDbGFzczogYXNuMS5DbGFzcy5VTklWRVJTQUwsCiAgICAgIHR5cGU6IGFzbjEuQ2xhc3MuT0NURVRTVFJJTkcsCiAgICAgIGNvbnN0cnVjdGVkOiBmYWxzZSwKICAgICAgY2FwdHVyZTogJ2NlcnQnCiAgICB9XQogIH1dCn07CgovKioKICogU2VhcmNoIFNhZmVDb250ZW50cyBzdHJ1Y3R1cmUgZm9yIGJhZ3Mgd2l0aCBtYXRjaGluZyBhdHRyaWJ1dGVzLgogKgogKiBUaGUgc2VhcmNoIGNhbiBvcHRpb25hbGx5IGJlIG5hcnJvd2VkIGJ5IGEgY2VydGFpbiBiYWcgdHlwZS4KICoKICogQHBhcmFtIHNhZmVDb250ZW50cyB0aGUgU2FmZUNvbnRlbnRzIHN0cnVjdHVyZSB0byBzZWFyY2ggaW4uCiAqIEBwYXJhbSBhdHRyTmFtZSB0aGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIGNvbXBhcmUgYWdhaW5zdC4KICogQHBhcmFtIGF0dHJWYWx1ZSB0aGUgYXR0cmlidXRlIHZhbHVlIHRvIHNlYXJjaCBmb3IuCiAqIEBwYXJhbSBbYmFnVHlwZV0gYmFnIHR5cGUgdG8gbmFycm93IHNlYXJjaCBieS4KICoKICogQHJldHVybiBhbiBhcnJheSBvZiBtYXRjaGluZyBiYWdzLgogKi8KZnVuY3Rpb24gX2dldEJhZ3NCeUF0dHJpYnV0ZShzYWZlQ29udGVudHMsIGF0dHJOYW1lLCBhdHRyVmFsdWUsIGJhZ1R5cGUpIHsKICB2YXIgcmVzdWx0ID0gW107CgogIGZvcih2YXIgaSA9IDA7IGkgPCBzYWZlQ29udGVudHMubGVuZ3RoOyBpICsrKSB7CiAgICBmb3IodmFyIGogPSAwOyBqIDwgc2FmZUNvbnRlbnRzW2ldLnNhZmVCYWdzLmxlbmd0aDsgaiArKykgewogICAgICB2YXIgYmFnID0gc2FmZUNvbnRlbnRzW2ldLnNhZmVCYWdzW2pdOwogICAgICBpZihiYWdUeXBlICE9PSB1bmRlZmluZWQgJiYgYmFnLnR5cGUgIT09IGJhZ1R5cGUpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICAvLyBvbmx5IGZpbHRlciBieSBiYWcgdHlwZSwgbm8gYXR0cmlidXRlIHNwZWNpZmllZAogICAgICBpZihhdHRyTmFtZSA9PT0gbnVsbCkgewogICAgICAgIHJlc3VsdC5wdXNoKGJhZyk7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgaWYoYmFnLmF0dHJpYnV0ZXNbYXR0ck5hbWVdICE9PSB1bmRlZmluZWQgJiYKICAgICAgICBiYWcuYXR0cmlidXRlc1thdHRyTmFtZV0uaW5kZXhPZihhdHRyVmFsdWUpID49IDApIHsKICAgICAgICByZXN1bHQucHVzaChiYWcpOwogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gcmVzdWx0Owp9CgovKioKICogQ29udmVydHMgYSBQS0NTIzEyIFBGWCBpbiBBU04uMSBub3RhdGlvbiBpbnRvIGEgUEZYIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiBUaGUgUEtDUyMxMiBQRlggaW4gQVNOLjEgbm90YXRpb24uCiAqIEBwYXJhbSBzdHJpY3QgdHJ1ZSB0byB1c2Ugc3RyaWN0IERFUiBkZWNvZGluZywgZmFsc2Ugbm90IHRvIChkZWZhdWx0OiB0cnVlKS4KICogQHBhcmFtIHtTdHJpbmd9IHBhc3N3b3JkIFBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aCAob3B0aW9uYWwpLgogKgogKiBAcmV0dXJuIFBLQ1MjMTIgUEZYIG9iamVjdC4KICovCnAxMi5wa2NzMTJGcm9tQXNuMSA9IGZ1bmN0aW9uKG9iaiwgc3RyaWN0LCBwYXNzd29yZCkgewogIC8vIGhhbmRsZSBhcmdzCiAgaWYodHlwZW9mIHN0cmljdCA9PT0gJ3N0cmluZycpIHsKICAgIHBhc3N3b3JkID0gc3RyaWN0OwogICAgc3RyaWN0ID0gdHJ1ZTsKICB9IGVsc2UgaWYoc3RyaWN0ID09PSB1bmRlZmluZWQpIHsKICAgIHN0cmljdCA9IHRydWU7CiAgfQoKICAvLyB2YWxpZGF0ZSBQRlggYW5kIGNhcHR1cmUgZGF0YQogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcGZ4VmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFBLQ1MjMTIgUEZYLiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBpcyBub3QgYW4gUEtDUyMxMiBQRlguJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcjsKICAgIHRocm93IGVycm9yOwogIH0KCiAgdmFyIHBmeCA9IHsKICAgIHZlcnNpb246IGNhcHR1cmUudmVyc2lvbi5jaGFyQ29kZUF0KDApLAogICAgc2FmZUNvbnRlbnRzOiBbXSwKCiAgICAvKioKICAgICAqIEdldHMgYmFncyB3aXRoIG1hdGNoaW5nIGF0dHJpYnV0ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGZpbHRlciB0aGUgYXR0cmlidXRlcyB0byBmaWx0ZXIgYnk6CiAgICAgKiAgICAgICAgICBbbG9jYWxLZXlJZF0gdGhlIGxvY2FsS2V5SWQgdG8gc2VhcmNoIGZvci4KICAgICAqICAgICAgICAgIFtsb2NhbEtleUlkSGV4XSB0aGUgbG9jYWxLZXlJZCBpbiBoZXggdG8gc2VhcmNoIGZvci4KICAgICAqICAgICAgICAgIFtmcmllbmRseU5hbWVdIHRoZSBmcmllbmRseSBuYW1lIHRvIHNlYXJjaCBmb3IuCiAgICAgKiAgICAgICAgICBbYmFnVHlwZV0gYmFnIHR5cGUgdG8gbmFycm93IGVhY2ggYXR0cmlidXRlIHNlYXJjaCBieS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGEgbWFwIG9mIGF0dHJpYnV0ZSB0eXBlIHRvIGFuIGFycmF5IG9mIG1hdGNoaW5nIGJhZ3Mgb3IsIGlmIG5vCiAgICAgKiAgICAgICAgICAgYXR0cmlidXRlIHdhcyBnaXZlbiBidXQgYSBiYWcgdHlwZSwgdGhlIG1hcCBrZXkgd2lsbCBiZSB0aGUKICAgICAqICAgICAgICAgICBiYWcgdHlwZS4KICAgICAqLwogICAgZ2V0QmFnczogZnVuY3Rpb24oZmlsdGVyKSB7CiAgICAgIHZhciBydmFsID0ge307CgogICAgICB2YXIgbG9jYWxLZXlJZDsKICAgICAgaWYoJ2xvY2FsS2V5SWQnIGluIGZpbHRlcikgewogICAgICAgIGxvY2FsS2V5SWQgPSBmaWx0ZXIubG9jYWxLZXlJZDsKICAgICAgfSBlbHNlIGlmKCdsb2NhbEtleUlkSGV4JyBpbiBmaWx0ZXIpIHsKICAgICAgICBsb2NhbEtleUlkID0gZm9yZ2UudXRpbC5oZXhUb0J5dGVzKGZpbHRlci5sb2NhbEtleUlkSGV4KTsKICAgICAgfQoKICAgICAgLy8gZmlsdGVyIG9uIGJhZ1R5cGUgb25seQogICAgICBpZihsb2NhbEtleUlkID09PSB1bmRlZmluZWQgJiYgISgnZnJpZW5kbHlOYW1lJyBpbiBmaWx0ZXIpICYmCiAgICAgICAgJ2JhZ1R5cGUnIGluIGZpbHRlcikgewogICAgICAgIHJ2YWxbZmlsdGVyLmJhZ1R5cGVdID0gX2dldEJhZ3NCeUF0dHJpYnV0ZSgKICAgICAgICAgIHBmeC5zYWZlQ29udGVudHMsIG51bGwsIG51bGwsIGZpbHRlci5iYWdUeXBlKTsKICAgICAgfQoKICAgICAgaWYobG9jYWxLZXlJZCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgcnZhbC5sb2NhbEtleUlkID0gX2dldEJhZ3NCeUF0dHJpYnV0ZSgKICAgICAgICAgIHBmeC5zYWZlQ29udGVudHMsICdsb2NhbEtleUlkJywKICAgICAgICAgIGxvY2FsS2V5SWQsIGZpbHRlci5iYWdUeXBlKTsKICAgICAgfQogICAgICBpZignZnJpZW5kbHlOYW1lJyBpbiBmaWx0ZXIpIHsKICAgICAgICBydmFsLmZyaWVuZGx5TmFtZSA9IF9nZXRCYWdzQnlBdHRyaWJ1dGUoCiAgICAgICAgICBwZnguc2FmZUNvbnRlbnRzLCAnZnJpZW5kbHlOYW1lJywKICAgICAgICAgIGZpbHRlci5mcmllbmRseU5hbWUsIGZpbHRlci5iYWdUeXBlKTsKICAgICAgfQoKICAgICAgcmV0dXJuIHJ2YWw7CiAgICB9LAoKICAgIC8qKgogICAgICogREVQUkVDQVRFRDogdXNlIGdldEJhZ3MoKSBpbnN0ZWFkLgogICAgICoKICAgICAqIEdldCBiYWdzIHdpdGggbWF0Y2hpbmcgZnJpZW5kbHlOYW1lIGF0dHJpYnV0ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gZnJpZW5kbHlOYW1lIHRoZSBmcmllbmRseSBuYW1lIHRvIHNlYXJjaCBmb3IuCiAgICAgKiBAcGFyYW0gW2JhZ1R5cGVdIGJhZyB0eXBlIHRvIG5hcnJvdyBzZWFyY2ggYnkuCiAgICAgKgogICAgICogQHJldHVybiBhbiBhcnJheSBvZiBiYWdzIHdpdGggbWF0Y2hpbmcgZnJpZW5kbHlOYW1lIGF0dHJpYnV0ZS4KICAgICAqLwogICAgZ2V0QmFnc0J5RnJpZW5kbHlOYW1lOiBmdW5jdGlvbihmcmllbmRseU5hbWUsIGJhZ1R5cGUpIHsKICAgICAgcmV0dXJuIF9nZXRCYWdzQnlBdHRyaWJ1dGUoCiAgICAgICAgcGZ4LnNhZmVDb250ZW50cywgJ2ZyaWVuZGx5TmFtZScsIGZyaWVuZGx5TmFtZSwgYmFnVHlwZSk7CiAgICB9LAoKICAgIC8qKgogICAgICogREVQUkVDQVRFRDogdXNlIGdldEJhZ3MoKSBpbnN0ZWFkLgogICAgICoKICAgICAqIEdldCBiYWdzIHdpdGggbWF0Y2hpbmcgbG9jYWxLZXlJZCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHBhcmFtIGxvY2FsS2V5SWQgdGhlIGxvY2FsS2V5SWQgdG8gc2VhcmNoIGZvci4KICAgICAqIEBwYXJhbSBbYmFnVHlwZV0gYmFnIHR5cGUgdG8gbmFycm93IHNlYXJjaCBieS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIGJhZ3Mgd2l0aCBtYXRjaGluZyBsb2NhbEtleUlkIGF0dHJpYnV0ZS4KICAgICAqLwogICAgZ2V0QmFnc0J5TG9jYWxLZXlJZDogZnVuY3Rpb24obG9jYWxLZXlJZCwgYmFnVHlwZSkgewogICAgICByZXR1cm4gX2dldEJhZ3NCeUF0dHJpYnV0ZSgKICAgICAgICBwZnguc2FmZUNvbnRlbnRzLCAnbG9jYWxLZXlJZCcsIGxvY2FsS2V5SWQsIGJhZ1R5cGUpOwogICAgfQogIH07CgogIGlmKGNhcHR1cmUudmVyc2lvbi5jaGFyQ29kZUF0KDApICE9PSAzKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ1BLQ1MjMTIgUEZYIG9mIHZlcnNpb24gb3RoZXIgdGhhbiAzIG5vdCBzdXBwb3J0ZWQuJyk7CiAgICBlcnJvci52ZXJzaW9uID0gY2FwdHVyZS52ZXJzaW9uLmNoYXJDb2RlQXQoMCk7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIGlmKGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5jb250ZW50VHlwZSkgIT09IHBraS5vaWRzLmRhdGEpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignT25seSBQS0NTIzEyIFBGWCBpbiBwYXNzd29yZCBpbnRlZ3JpdHkgbW9kZSBzdXBwb3J0ZWQuJyk7CiAgICBlcnJvci5vaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuY29udGVudFR5cGUpOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICB2YXIgZGF0YSA9IGNhcHR1cmUuY29udGVudC52YWx1ZVswXTsKICBpZihkYXRhLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgIGRhdGEudHlwZSAhPT0gYXNuMS5UeXBlLk9DVEVUU1RSSU5HKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BLQ1MjMTIgYXV0aFNhZmUgY29udGVudCBkYXRhIGlzIG5vdCBhbiBPQ1RFVCBTVFJJTkcuJyk7CiAgfQogIGRhdGEgPSBfZGVjb2RlUGtjczdEYXRhKGRhdGEpOwoKICAvLyBjaGVjayBmb3IgTUFDCiAgaWYoY2FwdHVyZS5tYWMpIHsKICAgIHZhciBtZCA9IG51bGw7CiAgICB2YXIgbWFjS2V5Qnl0ZXMgPSAwOwogICAgdmFyIG1hY0FsZ29yaXRobSA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5tYWNBbGdvcml0aG0pOwogICAgc3dpdGNoKG1hY0FsZ29yaXRobSkgewogICAgY2FzZSBwa2kub2lkcy5zaGExOgogICAgICBtZCA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgIG1hY0tleUJ5dGVzID0gMjA7CiAgICAgIGJyZWFrOwogICAgY2FzZSBwa2kub2lkcy5zaGEyNTY6CiAgICAgIG1kID0gZm9yZ2UubWQuc2hhMjU2LmNyZWF0ZSgpOwogICAgICBtYWNLZXlCeXRlcyA9IDMyOwogICAgICBicmVhazsKICAgIGNhc2UgcGtpLm9pZHMuc2hhMzg0OgogICAgICBtZCA9IGZvcmdlLm1kLnNoYTM4NC5jcmVhdGUoKTsKICAgICAgbWFjS2V5Qnl0ZXMgPSA0ODsKICAgICAgYnJlYWs7CiAgICBjYXNlIHBraS5vaWRzLnNoYTUxMjoKICAgICAgbWQgPSBmb3JnZS5tZC5zaGE1MTIuY3JlYXRlKCk7CiAgICAgIG1hY0tleUJ5dGVzID0gNjQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSBwa2kub2lkcy5tZDU6CiAgICAgIG1kID0gZm9yZ2UubWQubWQ1LmNyZWF0ZSgpOwogICAgICBtYWNLZXlCeXRlcyA9IDE2OwogICAgICBicmVhazsKICAgIH0KICAgIGlmKG1kID09PSBudWxsKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyMxMiB1c2VzIHVuc3VwcG9ydGVkIE1BQyBhbGdvcml0aG06ICcgKyBtYWNBbGdvcml0aG0pOwogICAgfQoKICAgIC8vIHZlcmlmeSBNQUMgKGl0ZXJhdGlvbnMgZGVmYXVsdCB0byAxKQogICAgdmFyIG1hY1NhbHQgPSBuZXcgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKGNhcHR1cmUubWFjU2FsdCk7CiAgICB2YXIgbWFjSXRlcmF0aW9ucyA9ICgoJ21hY0l0ZXJhdGlvbnMnIGluIGNhcHR1cmUpID8KICAgICAgcGFyc2VJbnQoZm9yZ2UudXRpbC5ieXRlc1RvSGV4KGNhcHR1cmUubWFjSXRlcmF0aW9ucyksIDE2KSA6IDEpOwogICAgdmFyIG1hY0tleSA9IHAxMi5nZW5lcmF0ZUtleSgKICAgICAgcGFzc3dvcmQsIG1hY1NhbHQsIDMsIG1hY0l0ZXJhdGlvbnMsIG1hY0tleUJ5dGVzLCBtZCk7CiAgICB2YXIgbWFjID0gZm9yZ2UuaG1hYy5jcmVhdGUoKTsKICAgIG1hYy5zdGFydChtZCwgbWFjS2V5KTsKICAgIG1hYy51cGRhdGUoZGF0YS52YWx1ZSk7CiAgICB2YXIgbWFjVmFsdWUgPSBtYWMuZ2V0TWFjKCk7CiAgICBpZihtYWNWYWx1ZS5nZXRCeXRlcygpICE9PSBjYXB0dXJlLm1hY0RpZ2VzdCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BLQ1MjMTIgTUFDIGNvdWxkIG5vdCBiZSB2ZXJpZmllZC4gSW52YWxpZCBwYXNzd29yZD8nKTsKICAgIH0KICB9CgogIF9kZWNvZGVBdXRoZW50aWNhdGVkU2FmZShwZngsIGRhdGEudmFsdWUsIHN0cmljdCwgcGFzc3dvcmQpOwogIHJldHVybiBwZng7Cn07CgovKioKICogRGVjb2RlcyBQS0NTIzcgRGF0YS4gUEtDUyM3IChSRkMgMjMxNSkgZGVmaW5lcyAiRGF0YSIgYXMgYW4gT0NURVQgU1RSSU5HLAogKiBidXQgaXQgaXMgc29tZXRpbWVzIGFuIE9DVEVUIFNUUklORyB0aGF0IGlzIGNvbXBvc2VkL2NvbnN0cnVjdGVkIG9mIGNodW5rcywKICogZWFjaCBpdHMgb3duIE9DVEVUIFNUUklORy4gVGhpcyBpcyBCRVItZW5jb2RpbmcgdnMuIERFUi1lbmNvZGluZy4gVGhpcwogKiBmdW5jdGlvbiB0cmFuc2Zvcm1zIHRoaXMgY29ybmVyLWNhc2UgaW50byB0aGUgdXN1YWwgc2ltcGxlLAogKiBub24tY29tcG9zZWQvY29uc3RydWN0ZWQgT0NURVQgU1RSSU5HLgogKgogKiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBtb3ZlZCB0byBBU04uMSBhdCBzb21lIHBvaW50IHRvIGJldHRlciBkZWFsIHdpdGgKICogbW9yZSBCRVItZW5jb2RpbmcgaXNzdWVzLCBzaG91bGQgdGhleSBhcmlzZS4KICoKICogQHBhcmFtIGRhdGEgdGhlIEFTTi4xIERhdGEgb2JqZWN0IHRvIHRyYW5zZm9ybS4KICovCmZ1bmN0aW9uIF9kZWNvZGVQa2NzN0RhdGEoZGF0YSkgewogIC8vIGhhbmRsZSBzcGVjaWFsIGNhc2Ugb2YgImNodW5rZWQiIGRhdGEgY29udGVudDogYW4gb2N0ZXQgc3RyaW5nIGNvbXBvc2VkCiAgLy8gb2Ygb3RoZXIgb2N0ZXQgc3RyaW5ncwogIGlmKGRhdGEuY29tcG9zZWQgfHwgZGF0YS5jb25zdHJ1Y3RlZCkgewogICAgdmFyIHZhbHVlID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBkYXRhLnZhbHVlLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhbHVlLnB1dEJ5dGVzKGRhdGEudmFsdWVbaV0udmFsdWUpOwogICAgfQogICAgZGF0YS5jb21wb3NlZCA9IGRhdGEuY29uc3RydWN0ZWQgPSBmYWxzZTsKICAgIGRhdGEudmFsdWUgPSB2YWx1ZS5nZXRCeXRlcygpOwogIH0KICByZXR1cm4gZGF0YTsKfQoKLyoqCiAqIERlY29kZSBQS0NTIzEyIEF1dGhlbnRpY2F0ZWRTYWZlIChCRVIgZW5jb2RlZCkgaW50byBQRlggb2JqZWN0LgogKgogKiBUaGUgQXV0aGVudGljYXRlZFNhZmUgaXMgYSBCRVItZW5jb2RlZCBTRVFVRU5DRSBPRiBDb250ZW50SW5mby4KICoKICogQHBhcmFtIHBmeCBUaGUgUEtDUyMxMiBQRlggb2JqZWN0IHRvIGZpbGwuCiAqIEBwYXJhbSB7U3RyaW5nfSBhdXRoU2FmZSBCRVItZW5jb2RlZCBBdXRoZW50aWNhdGVkU2FmZS4KICogQHBhcmFtIHN0cmljdCB0cnVlIHRvIHVzZSBzdHJpY3QgREVSIGRlY29kaW5nLCBmYWxzZSBub3QgdG8uCiAqIEBwYXJhbSB7U3RyaW5nfSBwYXNzd29yZCBQYXNzd29yZCB0byBkZWNyeXB0IHdpdGggKG9wdGlvbmFsKS4KICovCmZ1bmN0aW9uIF9kZWNvZGVBdXRoZW50aWNhdGVkU2FmZShwZngsIGF1dGhTYWZlLCBzdHJpY3QsIHBhc3N3b3JkKSB7CiAgYXV0aFNhZmUgPSBhc24xLmZyb21EZXIoYXV0aFNhZmUsIHN0cmljdCk7ICAvKiBhY3R1YWxseSBpdCdzIEJFUiBlbmNvZGVkICovCgogIGlmKGF1dGhTYWZlLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgIGF1dGhTYWZlLnR5cGUgIT09IGFzbjEuVHlwZS5TRVFVRU5DRSB8fAogICAgIGF1dGhTYWZlLmNvbnN0cnVjdGVkICE9PSB0cnVlKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BLQ1MjMTIgQXV0aGVudGljYXRlZFNhZmUgZXhwZWN0ZWQgdG8gYmUgYSAnICsKICAgICAgJ1NFUVVFTkNFIE9GIENvbnRlbnRJbmZvJyk7CiAgfQoKICBmb3IodmFyIGkgPSAwOyBpIDwgYXV0aFNhZmUudmFsdWUubGVuZ3RoOyBpICsrKSB7CiAgICB2YXIgY29udGVudEluZm8gPSBhdXRoU2FmZS52YWx1ZVtpXTsKCiAgICAvLyB2YWxpZGF0ZSBjb250ZW50SW5mbyBhbmQgY2FwdHVyZSBkYXRhCiAgICB2YXIgY2FwdHVyZSA9IHt9OwogICAgdmFyIGVycm9ycyA9IFtdOwogICAgaWYoIWFzbjEudmFsaWRhdGUoY29udGVudEluZm8sIGNvbnRlbnRJbmZvVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgQ29udGVudEluZm8uJyk7CiAgICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgdmFyIG9iaiA9IHsKICAgICAgZW5jcnlwdGVkOiBmYWxzZQogICAgfTsKICAgIHZhciBzYWZlQ29udGVudHMgPSBudWxsOwogICAgdmFyIGRhdGEgPSBjYXB0dXJlLmNvbnRlbnQudmFsdWVbMF07CiAgICBzd2l0Y2goYXNuMS5kZXJUb09pZChjYXB0dXJlLmNvbnRlbnRUeXBlKSkgewogICAgY2FzZSBwa2kub2lkcy5kYXRhOgogICAgICBpZihkYXRhLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgICAgICBkYXRhLnR5cGUgIT09IGFzbjEuVHlwZS5PQ1RFVFNUUklORykgewogICAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyMxMiBTYWZlQ29udGVudHMgRGF0YSBpcyBub3QgYW4gT0NURVQgU1RSSU5HLicpOwogICAgICB9CiAgICAgIHNhZmVDb250ZW50cyA9IF9kZWNvZGVQa2NzN0RhdGEoZGF0YSkudmFsdWU7CiAgICAgIGJyZWFrOwogICAgY2FzZSBwa2kub2lkcy5lbmNyeXB0ZWREYXRhOgogICAgICBzYWZlQ29udGVudHMgPSBfZGVjcnlwdFNhZmVDb250ZW50cyhkYXRhLCBwYXNzd29yZCk7CiAgICAgIG9iai5lbmNyeXB0ZWQgPSB0cnVlOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgUEtDUyMxMiBjb250ZW50VHlwZS4nKTsKICAgICAgZXJyb3IuY29udGVudFR5cGUgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuY29udGVudFR5cGUpOwogICAgICB0aHJvdyBlcnJvcjsKICAgIH0KCiAgICBvYmouc2FmZUJhZ3MgPSBfZGVjb2RlU2FmZUNvbnRlbnRzKHNhZmVDb250ZW50cywgc3RyaWN0LCBwYXNzd29yZCk7CiAgICBwZnguc2FmZUNvbnRlbnRzLnB1c2gob2JqKTsKICB9Cn0KCi8qKgogKiBEZWNyeXB0IFBLQ1MjNyBFbmNyeXB0ZWREYXRhIHN0cnVjdHVyZS4KICoKICogQHBhcmFtIGRhdGEgQVNOLjEgZW5jb2RlZCBFbmNyeXB0ZWRDb250ZW50SW5mbyBvYmplY3QuCiAqIEBwYXJhbSBwYXNzd29yZCBUaGUgdXNlci1wcm92aWRlZCBwYXNzd29yZC4KICoKICogQHJldHVybiBUaGUgZGVjcnlwdGVkIFNhZmVDb250ZW50cyAoQVNOLjEgb2JqZWN0KS4KICovCmZ1bmN0aW9uIF9kZWNyeXB0U2FmZUNvbnRlbnRzKGRhdGEsIHBhc3N3b3JkKSB7CiAgdmFyIGNhcHR1cmUgPSB7fTsKICB2YXIgZXJyb3JzID0gW107CiAgaWYoIWFzbjEudmFsaWRhdGUoCiAgICBkYXRhLCBmb3JnZS5wa2NzNy5hc24xLmVuY3J5cHRlZERhdGFWYWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgRW5jcnlwdGVkQ29udGVudEluZm8uJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUuY29udGVudFR5cGUpOwogIGlmKG9pZCAhPT0gcGtpLm9pZHMuZGF0YSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKAogICAgICAnUEtDUyMxMiBFbmNyeXB0ZWRDb250ZW50SW5mbyBDb250ZW50VHlwZSBpcyBub3QgRGF0YS4nKTsKICAgIGVycm9yLm9pZCA9IG9pZDsKICAgIHRocm93IGVycm9yOwogIH0KCiAgLy8gZ2V0IGNpcGhlcgogIG9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5lbmNBbGdvcml0aG0pOwogIHZhciBjaXBoZXIgPSBwa2kucGJlLmdldENpcGhlcihvaWQsIGNhcHR1cmUuZW5jUGFyYW1ldGVyLCBwYXNzd29yZCk7CgogIC8vIGdldCBlbmNyeXB0ZWQgZGF0YQogIHZhciBlbmNyeXB0ZWRDb250ZW50QXNuMSA9IF9kZWNvZGVQa2NzN0RhdGEoY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50QXNuMSk7CiAgdmFyIGVuY3J5cHRlZCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGVuY3J5cHRlZENvbnRlbnRBc24xLnZhbHVlKTsKCiAgY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQpOwogIGlmKCFjaXBoZXIuZmluaXNoKCkpIHsKICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgUEtDUyMxMiBTYWZlQ29udGVudHMuJyk7CiAgfQoKICByZXR1cm4gY2lwaGVyLm91dHB1dC5nZXRCeXRlcygpOwp9CgovKioKICogRGVjb2RlIFBLQ1MjMTIgU2FmZUNvbnRlbnRzIChCRVItZW5jb2RlZCkgaW50byBhcnJheSBvZiBCYWcgb2JqZWN0cy4KICoKICogVGhlIHNhZmVDb250ZW50cyBpcyBhIEJFUi1lbmNvZGVkIFNFUVVFTkNFIE9GIFNhZmVCYWcuCiAqCiAqIEBwYXJhbSB7U3RyaW5nfSBzYWZlQ29udGVudHMgQkVSLWVuY29kZWQgc2FmZUNvbnRlbnRzLgogKiBAcGFyYW0gc3RyaWN0IHRydWUgdG8gdXNlIHN0cmljdCBERVIgZGVjb2RpbmcsIGZhbHNlIG5vdCB0by4KICogQHBhcmFtIHtTdHJpbmd9IHBhc3N3b3JkIFBhc3N3b3JkIHRvIGRlY3J5cHQgd2l0aCAob3B0aW9uYWwpLgogKgogKiBAcmV0dXJuIHtBcnJheX0gQXJyYXkgb2YgQmFnIG9iamVjdHMuCiAqLwpmdW5jdGlvbiBfZGVjb2RlU2FmZUNvbnRlbnRzKHNhZmVDb250ZW50cywgc3RyaWN0LCBwYXNzd29yZCkgewogIC8vIGlmIHN0cmljdCBhbmQgbm8gc2FmZSBjb250ZW50cywgcmV0dXJuIGVtcHR5IHNhZmVzCiAgaWYoIXN0cmljdCAmJiBzYWZlQ29udGVudHMubGVuZ3RoID09PSAwKSB7CiAgICByZXR1cm4gW107CiAgfQoKICAvLyBhY3R1YWxseSBpdCdzIEJFUi1lbmNvZGVkCiAgc2FmZUNvbnRlbnRzID0gYXNuMS5mcm9tRGVyKHNhZmVDb250ZW50cywgc3RyaWN0KTsKCiAgaWYoc2FmZUNvbnRlbnRzLnRhZ0NsYXNzICE9PSBhc24xLkNsYXNzLlVOSVZFUlNBTCB8fAogICAgc2FmZUNvbnRlbnRzLnR5cGUgIT09IGFzbjEuVHlwZS5TRVFVRU5DRSB8fAogICAgc2FmZUNvbnRlbnRzLmNvbnN0cnVjdGVkICE9PSB0cnVlKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICdQS0NTIzEyIFNhZmVDb250ZW50cyBleHBlY3RlZCB0byBiZSBhIFNFUVVFTkNFIE9GIFNhZmVCYWcuJyk7CiAgfQoKICB2YXIgcmVzID0gW107CiAgZm9yKHZhciBpID0gMDsgaSA8IHNhZmVDb250ZW50cy52YWx1ZS5sZW5ndGg7IGkrKykgewogICAgdmFyIHNhZmVCYWcgPSBzYWZlQ29udGVudHMudmFsdWVbaV07CgogICAgLy8gdmFsaWRhdGUgU2FmZUJhZyBhbmQgY2FwdHVyZSBkYXRhCiAgICB2YXIgY2FwdHVyZSA9IHt9OwogICAgdmFyIGVycm9ycyA9IFtdOwogICAgaWYoIWFzbjEudmFsaWRhdGUoc2FmZUJhZywgc2FmZUJhZ1ZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFNhZmVCYWcuJyk7CiAgICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLyogQ3JlYXRlIGJhZyBvYmplY3QgYW5kIHB1c2ggdG8gcmVzdWx0IGFycmF5LiAqLwogICAgdmFyIGJhZyA9IHsKICAgICAgdHlwZTogYXNuMS5kZXJUb09pZChjYXB0dXJlLmJhZ0lkKSwKICAgICAgYXR0cmlidXRlczogX2RlY29kZUJhZ0F0dHJpYnV0ZXMoY2FwdHVyZS5iYWdBdHRyaWJ1dGVzKQogICAgfTsKICAgIHJlcy5wdXNoKGJhZyk7CgogICAgdmFyIHZhbGlkYXRvciwgZGVjb2RlcjsKICAgIHZhciBiYWdBc24xID0gY2FwdHVyZS5iYWdWYWx1ZS52YWx1ZVswXTsKICAgIHN3aXRjaChiYWcudHlwZSkgewogICAgICBjYXNlIHBraS5vaWRzLnBrY3M4U2hyb3VkZWRLZXlCYWc6CiAgICAgICAgLyogYmFnQXNuMSBoYXMgYSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbywgd2hpY2ggd2UgbmVlZCB0byBkZWNyeXB0LgogICAgICAgICAgIEFmdGVyd2FyZHMgd2UgY2FuIGhhbmRsZSBpdCBsaWtlIGEga2V5QmFnLAogICAgICAgICAgIHdoaWNoIGlzIGEgUHJpdmF0ZUtleUluZm8uICovCiAgICAgICAgYmFnQXNuMSA9IHBraS5kZWNyeXB0UHJpdmF0ZUtleUluZm8oYmFnQXNuMSwgcGFzc3dvcmQpOwogICAgICAgIGlmKGJhZ0FzbjEgPT09IG51bGwpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgJ1VuYWJsZSB0byBkZWNyeXB0IFBLQ1MjOCBTaHJvdWRlZEtleUJhZywgd3JvbmcgcGFzc3dvcmQ/Jyk7CiAgICAgICAgfQoKICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgY2FzZSBwa2kub2lkcy5rZXlCYWc6CiAgICAgICAgLyogQSBQS0NTIzEyIGtleUJhZyBpcyBhIHNpbXBsZSBQcml2YXRlS2V5SW5mbyBhcyB1bmRlcnN0b29kIGJ5IG91cgogICAgICAgICAgIFBLSSBtb2R1bGUsIGhlbmNlIHdlIGRvbid0IGhhdmUgdG8gZG8gdmFsaWRhdGlvbi9jYXB0dXJpbmcgaGVyZSwKICAgICAgICAgICBqdXN0IHBhc3Mgd2hhdCB3ZSBhbHJlYWR5IGdvdC4gKi8KICAgICAgICB0cnkgewogICAgICAgICAgYmFnLmtleSA9IHBraS5wcml2YXRlS2V5RnJvbUFzbjEoYmFnQXNuMSk7CiAgICAgICAgfSBjYXRjaChlKSB7CiAgICAgICAgICAvLyBpZ25vcmUgdW5rbm93biBrZXkgdHlwZSwgcGFzcyBhc24xIHZhbHVlCiAgICAgICAgICBiYWcua2V5ID0gbnVsbDsKICAgICAgICAgIGJhZy5hc24xID0gYmFnQXNuMTsKICAgICAgICB9CiAgICAgICAgY29udGludWU7ICAvKiBOb3RoaW5nIG1vcmUgdG8gZG8uICovCgogICAgICBjYXNlIHBraS5vaWRzLmNlcnRCYWc6CiAgICAgICAgLyogQSBQS0NTIzEyIGNlcnRCYWcgY2FuIHdyYXAgYm90aCBYLjUwOSBhbmQgc2RzaSBjZXJ0aWZpY2F0ZXMuCiAgICAgICAgICAgVGhlcmVmb3JlIHB1dCB0aGUgU2FmZUJhZyBjb250ZW50IHRocm91Z2ggYW5vdGhlciB2YWxpZGF0b3IgdG8KICAgICAgICAgICBjYXB0dXJlIHRoZSBmaWVsZHMuICBBZnRlcndhcmRzIGNoZWNrICYgc3RvcmUgdGhlIHJlc3VsdHMuICovCiAgICAgICAgdmFsaWRhdG9yID0gY2VydEJhZ1ZhbGlkYXRvcjsKICAgICAgICBkZWNvZGVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpZihhc24xLmRlclRvT2lkKGNhcHR1cmUuY2VydElkKSAhPT0gcGtpLm9pZHMueDUwOUNlcnRpZmljYXRlKSB7CiAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcigKICAgICAgICAgICAgICAnVW5zdXBwb3J0ZWQgY2VydGlmaWNhdGUgdHlwZSwgb25seSBYLjUwOSBzdXBwb3J0ZWQuJyk7CiAgICAgICAgICAgIGVycm9yLm9pZCA9IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5jZXJ0SWQpOwogICAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyB0cnVlPXByb2R1Y2UgY2VydCBoYXNoCiAgICAgICAgICB2YXIgY2VydEFzbjEgPSBhc24xLmZyb21EZXIoY2FwdHVyZS5jZXJ0LCBzdHJpY3QpOwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgYmFnLmNlcnQgPSBwa2kuY2VydGlmaWNhdGVGcm9tQXNuMShjZXJ0QXNuMSwgdHJ1ZSk7CiAgICAgICAgICB9IGNhdGNoKGUpIHsKICAgICAgICAgICAgLy8gaWdub3JlIHVua25vd24gY2VydCB0eXBlLCBwYXNzIGFzbjEgdmFsdWUKICAgICAgICAgICAgYmFnLmNlcnQgPSBudWxsOwogICAgICAgICAgICBiYWcuYXNuMSA9IGNlcnRBc24xOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgYnJlYWs7CgogICAgICBkZWZhdWx0OgogICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgUEtDUyMxMiBTYWZlQmFnIHR5cGUuJyk7CiAgICAgICAgZXJyb3Iub2lkID0gYmFnLnR5cGU7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLyogVmFsaWRhdGUgU2FmZUJhZyB2YWx1ZSAoaS5lLiBDZXJ0QmFnLCBldGMuKSBhbmQgY2FwdHVyZSBkYXRhIGlmIG5lZWRlZC4gKi8KICAgIGlmKHZhbGlkYXRvciAhPT0gdW5kZWZpbmVkICYmCiAgICAgICAhYXNuMS52YWxpZGF0ZShiYWdBc24xLCB2YWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpIHsKICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzEyICcgKyB2YWxpZGF0b3IubmFtZSk7CiAgICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgICAgdGhyb3cgZXJyb3I7CiAgICB9CgogICAgLyogQ2FsbCBkZWNvZGVyIGZ1bmN0aW9uIGZyb20gYWJvdmUgdG8gc3RvcmUgdGhlIHJlc3VsdHMuICovCiAgICBkZWNvZGVyKCk7CiAgfQoKICByZXR1cm4gcmVzOwp9CgovKioKICogRGVjb2RlIFBLQ1MjMTIgU0VUIE9GIFBLQ1MxMkF0dHJpYnV0ZSBpbnRvIEphdmFTY3JpcHQgb2JqZWN0LgogKgogKiBAcGFyYW0gYXR0cmlidXRlcyBTRVQgT0YgUEtDUzEyQXR0cmlidXRlIChBU04uMSBvYmplY3QpLgogKgogKiBAcmV0dXJuIHRoZSBkZWNvZGVkIGF0dHJpYnV0ZXMuCiAqLwpmdW5jdGlvbiBfZGVjb2RlQmFnQXR0cmlidXRlcyhhdHRyaWJ1dGVzKSB7CiAgdmFyIGRlY29kZWRBdHRycyA9IHt9OwoKICBpZihhdHRyaWJ1dGVzICE9PSB1bmRlZmluZWQpIHsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhciBjYXB0dXJlID0ge307CiAgICAgIHZhciBlcnJvcnMgPSBbXTsKICAgICAgaWYoIWFzbjEudmFsaWRhdGUoYXR0cmlidXRlc1tpXSwgYXR0cmlidXRlVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzEyIEJhZ0F0dHJpYnV0ZS4nKTsKICAgICAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgIH0KCiAgICAgIHZhciBvaWQgPSBhc24xLmRlclRvT2lkKGNhcHR1cmUub2lkKTsKICAgICAgaWYocGtpLm9pZHNbb2lkXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgLy8gdW5zdXBwb3J0ZWQgYXR0cmlidXRlIHR5cGUsIGlnbm9yZS4KICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgZGVjb2RlZEF0dHJzW3BraS5vaWRzW29pZF1dID0gW107CiAgICAgIGZvcih2YXIgaiA9IDA7IGogPCBjYXB0dXJlLnZhbHVlcy5sZW5ndGg7ICsraikgewogICAgICAgIGRlY29kZWRBdHRyc1twa2kub2lkc1tvaWRdXS5wdXNoKGNhcHR1cmUudmFsdWVzW2pdLnZhbHVlKTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIGRlY29kZWRBdHRyczsKfQoKLyoqCiAqIFdyYXBzIGEgcHJpdmF0ZSBrZXkgYW5kIGNlcnRpZmljYXRlIGluIGEgUEtDUyMxMiBQRlggd3JhcHBlci4gSWYgYQogKiBwYXNzd29yZCBpcyBwcm92aWRlZCB0aGVuIHRoZSBwcml2YXRlIGtleSB3aWxsIGJlIGVuY3J5cHRlZC4KICoKICogQW4gZW50aXJlIGNlcnRpZmljYXRlIGNoYWluIG1heSBhbHNvIGJlIGluY2x1ZGVkLiBUbyBkbyB0aGlzLCBwYXNzCiAqIGFuIGFycmF5IGZvciB0aGUgImNlcnQiIHBhcmFtZXRlciB3aGVyZSB0aGUgZmlyc3QgY2VydGlmaWNhdGUgaXMKICogdGhlIG9uZSB0aGF0IGlzIHBhaXJlZCB3aXRoIHRoZSBwcml2YXRlIGtleSBhbmQgZWFjaCBzdWJzZXF1ZW50IG9uZQogKiB2ZXJpZmllcyB0aGUgcHJldmlvdXMgb25lLiBUaGUgY2VydGlmaWNhdGVzIG1heSBiZSBpbiBQRU0gZm9ybWF0IG9yCiAqIGhhdmUgYmVlbiBhbHJlYWR5IHBhcnNlZCBieSBGb3JnZS4KICoKICogQHRvZG8gaW1wbGVtZW50IHBhc3N3b3JkLWJhc2VkLWVuY3J5cHRpb24gZm9yIHRoZSB3aG9sZSBwYWNrYWdlCiAqCiAqIEBwYXJhbSBrZXkgdGhlIHByaXZhdGUga2V5LgogKiBAcGFyYW0gY2VydCB0aGUgY2VydGlmaWNhdGUgKG1heSBiZSBhbiBhcnJheSBvZiBjZXJ0aWZpY2F0ZXMgaW4gb3JkZXIKICogICAgICAgICAgdG8gc3BlY2lmeSBhIGNlcnRpZmljYXRlIGNoYWluKS4KICogQHBhcmFtIHBhc3N3b3JkIHRoZSBwYXNzd29yZCB0byB1c2UsIG51bGwgZm9yIG5vbmUuCiAqIEBwYXJhbSBvcHRpb25zOgogKiAgICAgICAgICBhbGdvcml0aG0gdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtIHRvIHVzZQogKiAgICAgICAgICAgICgnYWVzMTI4JywgJ2FlczE5MicsICdhZXMyNTYnLCAnM2RlcycpLCBkZWZhdWx0cyB0byAnYWVzMTI4Jy4KICogICAgICAgICAgY291bnQgdGhlIGl0ZXJhdGlvbiBjb3VudCB0byB1c2UuCiAqICAgICAgICAgIHNhbHRTaXplIHRoZSBzYWx0IHNpemUgdG8gdXNlLgogKiAgICAgICAgICB1c2VNYWMgdHJ1ZSB0byBpbmNsdWRlIGEgTUFDLCBmYWxzZSBub3QgdG8sIGRlZmF1bHRzIHRvIHRydWUuCiAqICAgICAgICAgIGxvY2FsS2V5SWQgdGhlIGxvY2FsIGtleSBJRCB0byB1c2UsIGluIGhleC4KICogICAgICAgICAgZnJpZW5kbHlOYW1lIHRoZSBmcmllbmRseSBuYW1lIHRvIHVzZS4KICogICAgICAgICAgZ2VuZXJhdGVMb2NhbEtleUlkIHRydWUgdG8gZ2VuZXJhdGUgYSByYW5kb20gbG9jYWwga2V5IElELAogKiAgICAgICAgICAgIGZhbHNlIG5vdCB0bywgZGVmYXVsdHMgdG8gdHJ1ZS4KICoKICogQHJldHVybiB0aGUgUEtDUyMxMiBQRlggQVNOLjEgb2JqZWN0LgogKi8KcDEyLnRvUGtjczEyQXNuMSA9IGZ1bmN0aW9uKGtleSwgY2VydCwgcGFzc3dvcmQsIG9wdGlvbnMpIHsKICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zCiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgb3B0aW9ucy5zYWx0U2l6ZSA9IG9wdGlvbnMuc2FsdFNpemUgfHwgODsKICBvcHRpb25zLmNvdW50ID0gb3B0aW9ucy5jb3VudCB8fCAyMDQ4OwogIG9wdGlvbnMuYWxnb3JpdGhtID0gb3B0aW9ucy5hbGdvcml0aG0gfHwgb3B0aW9ucy5lbmNBbGdvcml0aG0gfHwgJ2FlczEyOCc7CiAgaWYoISgndXNlTWFjJyBpbiBvcHRpb25zKSkgewogICAgb3B0aW9ucy51c2VNYWMgPSB0cnVlOwogIH0KICBpZighKCdsb2NhbEtleUlkJyBpbiBvcHRpb25zKSkgewogICAgb3B0aW9ucy5sb2NhbEtleUlkID0gbnVsbDsKICB9CiAgaWYoISgnZ2VuZXJhdGVMb2NhbEtleUlkJyBpbiBvcHRpb25zKSkgewogICAgb3B0aW9ucy5nZW5lcmF0ZUxvY2FsS2V5SWQgPSB0cnVlOwogIH0KCiAgdmFyIGxvY2FsS2V5SWQgPSBvcHRpb25zLmxvY2FsS2V5SWQ7CiAgdmFyIGJhZ0F0dHJzOwogIGlmKGxvY2FsS2V5SWQgIT09IG51bGwpIHsKICAgIGxvY2FsS2V5SWQgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMobG9jYWxLZXlJZCk7CiAgfSBlbHNlIGlmKG9wdGlvbnMuZ2VuZXJhdGVMb2NhbEtleUlkKSB7CiAgICAvLyB1c2UgU0hBLTEgb2YgcGFpcmVkIGNlcnQsIGlmIGF2YWlsYWJsZQogICAgaWYoY2VydCkgewogICAgICB2YXIgcGFpcmVkQ2VydCA9IGZvcmdlLnV0aWwuaXNBcnJheShjZXJ0KSA/IGNlcnRbMF0gOiBjZXJ0OwogICAgICBpZih0eXBlb2YgcGFpcmVkQ2VydCA9PT0gJ3N0cmluZycpIHsKICAgICAgICBwYWlyZWRDZXJ0ID0gcGtpLmNlcnRpZmljYXRlRnJvbVBlbShwYWlyZWRDZXJ0KTsKICAgICAgfQogICAgICB2YXIgc2hhMSA9IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCk7CiAgICAgIHNoYTEudXBkYXRlKGFzbjEudG9EZXIocGtpLmNlcnRpZmljYXRlVG9Bc24xKHBhaXJlZENlcnQpKS5nZXRCeXRlcygpKTsKICAgICAgbG9jYWxLZXlJZCA9IHNoYTEuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIEZJWE1FOiBjb25zaWRlciB1c2luZyBTSEEtMSBvZiBwdWJsaWMga2V5ICh3aGljaCBjYW4gYmUgZ2VuZXJhdGVkCiAgICAgIC8vIGZyb20gcHJpdmF0ZSBrZXkgY29tcG9uZW50cyksIHNlZTogY2VydC5nZW5lcmF0ZVN1YmplY3RLZXlJZGVudGlmaWVyCiAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBieXRlcwogICAgICBsb2NhbEtleUlkID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzKDIwKTsKICAgIH0KICB9CgogIHZhciBhdHRycyA9IFtdOwogIGlmKGxvY2FsS2V5SWQgIT09IG51bGwpIHsKICAgIGF0dHJzLnB1c2goCiAgICAgIC8vIGxvY2FsS2V5SUQKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGF0dHJJZAogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgIGFzbjEub2lkVG9EZXIocGtpLm9pZHMubG9jYWxLZXlJZCkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgLy8gYXR0clZhbHVlcwogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICAgICAgbG9jYWxLZXlJZCkKICAgICAgICBdKQogICAgICBdKSk7CiAgfQogIGlmKCdmcmllbmRseU5hbWUnIGluIG9wdGlvbnMpIHsKICAgIGF0dHJzLnB1c2goCiAgICAgIC8vIGZyaWVuZGx5TmFtZQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gYXR0cklkCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5mcmllbmRseU5hbWUpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIGF0dHJWYWx1ZXMKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwgWwogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5CTVBTVFJJTkcsIGZhbHNlLAogICAgICAgICAgICBvcHRpb25zLmZyaWVuZGx5TmFtZSkKICAgICAgICBdKQogICAgICBdKSk7CiAgfQoKICBpZihhdHRycy5sZW5ndGggPiAwKSB7CiAgICBiYWdBdHRycyA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VULCB0cnVlLCBhdHRycyk7CiAgfQoKICAvLyBjb2xsZWN0IGNvbnRlbnRzIGZvciBBdXRoZW50aWNhdGVkU2FmZQogIHZhciBjb250ZW50cyA9IFtdOwoKICAvLyBjcmVhdGUgc2FmZSBiYWcocykgZm9yIGNlcnRpZmljYXRlIGNoYWluCiAgdmFyIGNoYWluID0gW107CiAgaWYoY2VydCAhPT0gbnVsbCkgewogICAgaWYoZm9yZ2UudXRpbC5pc0FycmF5KGNlcnQpKSB7CiAgICAgIGNoYWluID0gY2VydDsKICAgIH0gZWxzZSB7CiAgICAgIGNoYWluID0gW2NlcnRdOwogICAgfQogIH0KCiAgdmFyIGNlcnRTYWZlQmFncyA9IFtdOwogIGZvcih2YXIgaSA9IDA7IGkgPCBjaGFpbi5sZW5ndGg7ICsraSkgewogICAgLy8gY29udmVydCBjZXJ0IGZyb20gUEVNIGFzIG5lY2Vzc2FyeQogICAgY2VydCA9IGNoYWluW2ldOwogICAgaWYodHlwZW9mIGNlcnQgPT09ICdzdHJpbmcnKSB7CiAgICAgIGNlcnQgPSBwa2kuY2VydGlmaWNhdGVGcm9tUGVtKGNlcnQpOwogICAgfQoKICAgIC8vIFNhZmVCYWcKICAgIHZhciBjZXJ0QmFnQXR0cnMgPSAoaSA9PT0gMCkgPyBiYWdBdHRycyA6IHVuZGVmaW5lZDsKICAgIHZhciBjZXJ0QXNuMSA9IHBraS5jZXJ0aWZpY2F0ZVRvQXNuMShjZXJ0KTsKICAgIHZhciBjZXJ0U2FmZUJhZyA9CiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAvLyBiYWdJZAogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgIGFzbjEub2lkVG9EZXIocGtpLm9pZHMuY2VydEJhZykuZ2V0Qnl0ZXMoKSksCiAgICAgICAgLy8gYmFnVmFsdWUKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgIC8vIENlcnRCYWcKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgICAgLy8gY2VydElkCiAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgICBhc24xLm9pZFRvRGVyKHBraS5vaWRzLng1MDlDZXJ0aWZpY2F0ZSkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgICAgIC8vIGNlcnRWYWx1ZSAoeDUwOUNlcnRpZmljYXRlKQogICAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgICAgICAgYXNuMS50b0RlcihjZXJ0QXNuMSkuZ2V0Qnl0ZXMoKSkKICAgICAgICAgICAgXSldKV0pLAogICAgICAgIC8vIGJhZ0F0dHJpYnV0ZXMgKE9QVElPTkFMKQogICAgICAgIGNlcnRCYWdBdHRycwogICAgICBdKTsKICAgIGNlcnRTYWZlQmFncy5wdXNoKGNlcnRTYWZlQmFnKTsKICB9CgogIGlmKGNlcnRTYWZlQmFncy5sZW5ndGggPiAwKSB7CiAgICAvLyBTYWZlQ29udGVudHMKICAgIHZhciBjZXJ0U2FmZUNvbnRlbnRzID0gYXNuMS5jcmVhdGUoCiAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIGNlcnRTYWZlQmFncyk7CgogICAgLy8gQ29udGVudEluZm8KICAgIHZhciBjZXJ0Q0kgPQogICAgICAvLyBQS0NTIzcgQ29udGVudEluZm8KICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGNvbnRlbnRUeXBlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgLy8gT0lEIGZvciB0aGUgY29udGVudCB0eXBlIGlzICdkYXRhJwogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5kYXRhKS5nZXRCeXRlcygpKSwKICAgICAgICAvLyBjb250ZW50CiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsCiAgICAgICAgICAgIGFzbjEudG9EZXIoY2VydFNhZmVDb250ZW50cykuZ2V0Qnl0ZXMoKSkKICAgICAgICBdKQogICAgICBdKTsKICAgIGNvbnRlbnRzLnB1c2goY2VydENJKTsKICB9CgogIC8vIGNyZWF0ZSBzYWZlIGNvbnRlbnRzIGZvciBwcml2YXRlIGtleQogIHZhciBrZXlCYWcgPSBudWxsOwogIGlmKGtleSAhPT0gbnVsbCkgewogICAgLy8gU2FmZUJhZwogICAgdmFyIHBrQXNuMSA9IHBraS53cmFwUnNhUHJpdmF0ZUtleShwa2kucHJpdmF0ZUtleVRvQXNuMShrZXkpKTsKICAgIGlmKHBhc3N3b3JkID09PSBudWxsKSB7CiAgICAgIC8vIG5vIGVuY3J5cHRpb24KICAgICAga2V5QmFnID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGJhZ0lkCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5rZXlCYWcpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIGJhZ1ZhbHVlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgICAvLyBQcml2YXRlS2V5SW5mbwogICAgICAgICAgcGtBc24xCiAgICAgICAgXSksCiAgICAgICAgLy8gYmFnQXR0cmlidXRlcyAoT1BUSU9OQUwpCiAgICAgICAgYmFnQXR0cnMKICAgICAgXSk7CiAgICB9IGVsc2UgewogICAgICAvLyBlbmNyeXB0ZWQgUHJpdmF0ZUtleUluZm8KICAgICAga2V5QmFnID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIGJhZ0lkCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5wa2NzOFNocm91ZGVkS2V5QmFnKS5nZXRCeXRlcygpKSwKICAgICAgICAvLyBiYWdWYWx1ZQogICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICAgICAgLy8gRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8KICAgICAgICAgIHBraS5lbmNyeXB0UHJpdmF0ZUtleUluZm8ocGtBc24xLCBwYXNzd29yZCwgb3B0aW9ucykKICAgICAgICBdKSwKICAgICAgICAvLyBiYWdBdHRyaWJ1dGVzIChPUFRJT05BTCkKICAgICAgICBiYWdBdHRycwogICAgICBdKTsKICAgIH0KCiAgICAvLyBTYWZlQ29udGVudHMKICAgIHZhciBrZXlTYWZlQ29udGVudHMgPQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBba2V5QmFnXSk7CgogICAgLy8gQ29udGVudEluZm8KICAgIHZhciBrZXlDSSA9CiAgICAgIC8vIFBLQ1MjNyBDb250ZW50SW5mbwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gY29udGVudFR5cGUKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAvLyBPSUQgZm9yIHRoZSBjb250ZW50IHR5cGUgaXMgJ2RhdGEnCiAgICAgICAgICBhc24xLm9pZFRvRGVyKHBraS5vaWRzLmRhdGEpLmdldEJ5dGVzKCkpLAogICAgICAgIC8vIGNvbnRlbnQKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICAgICAgYXNuMS50b0RlcihrZXlTYWZlQ29udGVudHMpLmdldEJ5dGVzKCkpCiAgICAgICAgXSkKICAgICAgXSk7CiAgICBjb250ZW50cy5wdXNoKGtleUNJKTsKICB9CgogIC8vIGNyZWF0ZSBBdXRoZW50aWNhdGVkU2FmZSBieSBzdHJpbmdpbmcgdG9nZXRoZXIgdGhlIGNvbnRlbnRzCiAgdmFyIHNhZmUgPSBhc24xLmNyZWF0ZSgKICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIGNvbnRlbnRzKTsKCiAgdmFyIG1hY0RhdGE7CiAgaWYob3B0aW9ucy51c2VNYWMpIHsKICAgIC8vIE1hY0RhdGEKICAgIHZhciBzaGExID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICAgIHZhciBtYWNTYWx0ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigKICAgICAgZm9yZ2UucmFuZG9tLmdldEJ5dGVzKG9wdGlvbnMuc2FsdFNpemUpKTsKICAgIHZhciBjb3VudCA9IG9wdGlvbnMuY291bnQ7CiAgICAvLyAxNjAtYml0IGtleQogICAgdmFyIGtleSA9IHAxMi5nZW5lcmF0ZUtleShwYXNzd29yZCwgbWFjU2FsdCwgMywgY291bnQsIDIwKTsKICAgIHZhciBtYWMgPSBmb3JnZS5obWFjLmNyZWF0ZSgpOwogICAgbWFjLnN0YXJ0KHNoYTEsIGtleSk7CiAgICBtYWMudXBkYXRlKGFzbjEudG9EZXIoc2FmZSkuZ2V0Qnl0ZXMoKSk7CiAgICB2YXIgbWFjVmFsdWUgPSBtYWMuZ2V0TWFjKCk7CiAgICBtYWNEYXRhID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBtYWMgRGlnZXN0SW5mbwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgLy8gZGlnZXN0QWxnb3JpdGhtCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgLy8gYWxnb3JpdGhtID0gU0hBLTEKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5zaGExKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIHBhcmFtZXRlcnMgPSBOdWxsCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICBdKSwKICAgICAgICAvLyBkaWdlc3QKICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsCiAgICAgICAgICBmYWxzZSwgbWFjVmFsdWUuZ2V0Qnl0ZXMoKSkKICAgICAgXSksCiAgICAgIC8vIG1hY1NhbHQgT0NURVQgU1RSSU5HCiAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLCBtYWNTYWx0LmdldEJ5dGVzKCkpLAogICAgICAvLyBpdGVyYXRpb25zIElOVEVHRVIgKFhYWDogT25seSBzdXBwb3J0IGNvdW50IDwgNjU1MzYpCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIoY291bnQpLmdldEJ5dGVzKCkKICAgICAgKQogICAgXSk7CiAgfQoKICAvLyBQRlgKICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gdmVyc2lvbiAoMykKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIGFzbjEuaW50ZWdlclRvRGVyKDMpLmdldEJ5dGVzKCkpLAogICAgLy8gUEtDUyM3IENvbnRlbnRJbmZvCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGNvbnRlbnRUeXBlCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICAvLyBPSUQgZm9yIHRoZSBjb250ZW50IHR5cGUgaXMgJ2RhdGEnCiAgICAgICAgYXNuMS5vaWRUb0Rlcihwa2kub2lkcy5kYXRhKS5nZXRCeXRlcygpKSwKICAgICAgLy8gY29udGVudAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgYXNuMS50b0RlcihzYWZlKS5nZXRCeXRlcygpKQogICAgICBdKQogICAgXSksCiAgICBtYWNEYXRhCiAgXSk7Cn07CgovKioKICogRGVyaXZlcyBhIFBLQ1MjMTIga2V5LgogKgogKiBAcGFyYW0gcGFzc3dvcmQgdGhlIHBhc3N3b3JkIHRvIGRlcml2ZSB0aGUga2V5IG1hdGVyaWFsIGZyb20sIG51bGwgb3IKICogICAgICAgICAgdW5kZWZpbmVkIGZvciBub25lLgogKiBAcGFyYW0gc2FsdCB0aGUgc2FsdCwgYXMgYSBCeXRlQnVmZmVyLCB0byB1c2UuCiAqIEBwYXJhbSBpZCB0aGUgUEtDUyMxMiBJRCBieXRlICgxID0ga2V5IG1hdGVyaWFsLCAyID0gSVYsIDMgPSBNQUMpLgogKiBAcGFyYW0gaXRlciB0aGUgaXRlcmF0aW9uIGNvdW50LgogKiBAcGFyYW0gbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGRlcml2ZSBmcm9tIHRoZSBwYXNzd29yZC4KICogQHBhcmFtIG1kIHRoZSBtZXNzYWdlIGRpZ2VzdCB0byB1c2UsIGRlZmF1bHRzIHRvIFNIQS0xLgogKgogKiBAcmV0dXJuIGEgQnl0ZUJ1ZmZlciB3aXRoIHRoZSBieXRlcyBkZXJpdmVkIGZyb20gdGhlIHBhc3N3b3JkLgogKi8KcDEyLmdlbmVyYXRlS2V5ID0gZm9yZ2UucGJlLmdlbmVyYXRlUGtjczEyS2V5OwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAncGtjczEyJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL3BrY3MxMicsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hc24xJywKICAnLi9obWFjJywKICAnLi9vaWRzJywKICAnLi9wa2NzN2FzbjEnLAogICcuL3BiZScsCiAgJy4vcmFuZG9tJywKICAnLi9yc2EnLAogICcuL3NoYTEnLAogICcuL3V0aWwnLAogICcuL3g1MDknCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgYSBiYXNpYyBQdWJsaWMgS2V5IEluZnJhc3RydWN0dXJlLCBpbmNsdWRpbmcKICogc3VwcG9ydCBmb3IgUlNBIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXlzLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMyBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8vIHNob3J0Y3V0IGZvciBhc24uMSBBUEkKdmFyIGFzbjEgPSBmb3JnZS5hc24xOwoKLyogUHVibGljIEtleSBJbmZyYXN0cnVjdHVyZSAoUEtJKSBpbXBsZW1lbnRhdGlvbi4gKi8KdmFyIHBraSA9IGZvcmdlLnBraSA9IGZvcmdlLnBraSB8fCB7fTsKCi8qKgogKiBOT1RFOiBUSElTIE1FVEhPRCBJUyBERVBSRUNBVEVELiBVc2UgcGVtLmRlY29kZSgpIGluc3RlYWQuCiAqCiAqIENvbnZlcnRzIFBFTS1mb3JtYXR0ZWQgZGF0YSB0byBERVIuCiAqCiAqIEBwYXJhbSBwZW0gdGhlIFBFTS1mb3JtYXR0ZWQgZGF0YS4KICoKICogQHJldHVybiB0aGUgREVSLWZvcm1hdHRlZCBkYXRhLgogKi8KcGtpLnBlbVRvRGVyID0gZnVuY3Rpb24ocGVtKSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IFBFTSB0byBERVI7IFBFTSBpcyBlbmNyeXB0ZWQuJyk7CiAgfQogIHJldHVybiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuYm9keSk7Cn07CgovKioKICogQ29udmVydHMgYW4gUlNBIHByaXZhdGUga2V5IGZyb20gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIHBlbSB0aGUgUEVNLWZvcm1hdHRlZCBwcml2YXRlIGtleS4KICoKICogQHJldHVybiB0aGUgcHJpdmF0ZSBrZXkuCiAqLwpwa2kucHJpdmF0ZUtleUZyb21QZW0gPSBmdW5jdGlvbihwZW0pIHsKICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShwZW0pWzBdOwoKICBpZihtc2cudHlwZSAhPT0gJ1BSSVZBVEUgS0VZJyAmJiBtc2cudHlwZSAhPT0gJ1JTQSBQUklWQVRFIEtFWScpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgcHJpdmF0ZSBrZXkgZnJvbSBQRU07IFBFTSAnICsKICAgICAgJ2hlYWRlciB0eXBlIGlzIG5vdCAiUFJJVkFURSBLRVkiIG9yICJSU0EgUFJJVkFURSBLRVkiLicpOwogICAgZXJyb3IuaGVhZGVyVHlwZSA9IG1zZy50eXBlOwogICAgdGhyb3cgZXJyb3I7CiAgfQogIGlmKG1zZy5wcm9jVHlwZSAmJiBtc2cucHJvY1R5cGUudHlwZSA9PT0gJ0VOQ1JZUFRFRCcpIHsKICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgcHJpdmF0ZSBrZXkgZnJvbSBQRU07IFBFTSBpcyBlbmNyeXB0ZWQuJyk7CiAgfQoKICAvLyBjb252ZXJ0IERFUiB0byBBU04uMSBvYmplY3QKICB2YXIgb2JqID0gYXNuMS5mcm9tRGVyKG1zZy5ib2R5KTsKCiAgcmV0dXJuIHBraS5wcml2YXRlS2V5RnJvbUFzbjEob2JqKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhbiBSU0EgcHJpdmF0ZSBrZXkgdG8gUEVNIGZvcm1hdC4KICoKICogQHBhcmFtIGtleSB0aGUgcHJpdmF0ZSBrZXkuCiAqIEBwYXJhbSBtYXhsaW5lIHRoZSBtYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUsIGRlZmF1bHRzIHRvIDY0LgogKgogKiBAcmV0dXJuIHRoZSBQRU0tZm9ybWF0dGVkIHByaXZhdGUga2V5LgogKi8KcGtpLnByaXZhdGVLZXlUb1BlbSA9IGZ1bmN0aW9uKGtleSwgbWF4bGluZSkgewogIC8vIGNvbnZlcnQgdG8gQVNOLjEsIHRoZW4gREVSLCB0aGVuIFBFTS1lbmNvZGUKICB2YXIgbXNnID0gewogICAgdHlwZTogJ1JTQSBQUklWQVRFIEtFWScsCiAgICBib2R5OiBhc24xLnRvRGVyKHBraS5wcml2YXRlS2V5VG9Bc24xKGtleSkpLmdldEJ5dGVzKCkKICB9OwogIHJldHVybiBmb3JnZS5wZW0uZW5jb2RlKG1zZywge21heGxpbmU6IG1heGxpbmV9KTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIFByaXZhdGVLZXlJbmZvIHRvIFBFTSBmb3JtYXQuCiAqCiAqIEBwYXJhbSBwa2kgdGhlIFByaXZhdGVLZXlJbmZvLgogKiBAcGFyYW0gbWF4bGluZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiB0aGUgUEVNLWZvcm1hdHRlZCBwcml2YXRlIGtleS4KICovCnBraS5wcml2YXRlS2V5SW5mb1RvUGVtID0gZnVuY3Rpb24ocGtpLCBtYXhsaW5lKSB7CiAgLy8gY29udmVydCB0byBERVIsIHRoZW4gUEVNLWVuY29kZQogIHZhciBtc2cgPSB7CiAgICB0eXBlOiAnUFJJVkFURSBLRVknLAogICAgYm9keTogYXNuMS50b0Rlcihwa2kpLmdldEJ5dGVzKCkKICB9OwogIHJldHVybiBmb3JnZS5wZW0uZW5jb2RlKG1zZywge21heGxpbmU6IG1heGxpbmV9KTsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3BraSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wa2knLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYXNuMScsCiAgJy4vb2lkcycsCiAgJy4vcGJlJywKICAnLi9wZW0nLAogICcuL3Bia2RmMicsCiAgJy4vcGtjczEyJywKICAnLi9wc3MnLAogICcuL3JzYScsCiAgJy4vdXRpbCcsCiAgJy4veDUwOScKXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQSBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSAoVExTKS4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICoKICogVGhlIFRMUyBIYW5kc2hha2UgUHJvdG9jb2wgaW52b2x2ZXMgdGhlIGZvbGxvd2luZyBzdGVwczoKICoKICogLSBFeGNoYW5nZSBoZWxsbyBtZXNzYWdlcyB0byBhZ3JlZSBvbiBhbGdvcml0aG1zLCBleGNoYW5nZSByYW5kb20gdmFsdWVzLAogKiBhbmQgY2hlY2sgZm9yIHNlc3Npb24gcmVzdW1wdGlvbi4KICoKICogLSBFeGNoYW5nZSB0aGUgbmVjZXNzYXJ5IGNyeXB0b2dyYXBoaWMgcGFyYW1ldGVycyB0byBhbGxvdyB0aGUgY2xpZW50IGFuZAogKiBzZXJ2ZXIgdG8gYWdyZWUgb24gYSBwcmVtYXN0ZXIgc2VjcmV0LgogKgogKiAtIEV4Y2hhbmdlIGNlcnRpZmljYXRlcyBhbmQgY3J5cHRvZ3JhcGhpYyBpbmZvcm1hdGlvbiB0byBhbGxvdyB0aGUgY2xpZW50CiAqIGFuZCBzZXJ2ZXIgdG8gYXV0aGVudGljYXRlIHRoZW1zZWx2ZXMuCiAqCiAqIC0gR2VuZXJhdGUgYSBtYXN0ZXIgc2VjcmV0IGZyb20gdGhlIHByZW1hc3RlciBzZWNyZXQgYW5kIGV4Y2hhbmdlZCByYW5kb20KICogdmFsdWVzLgogKgogKiAtIFByb3ZpZGUgc2VjdXJpdHkgcGFyYW1ldGVycyB0byB0aGUgcmVjb3JkIGxheWVyLgogKgogKiAtIEFsbG93IHRoZSBjbGllbnQgYW5kIHNlcnZlciB0byB2ZXJpZnkgdGhhdCB0aGVpciBwZWVyIGhhcyBjYWxjdWxhdGVkIHRoZQogKiBzYW1lIHNlY3VyaXR5IHBhcmFtZXRlcnMgYW5kIHRoYXQgdGhlIGhhbmRzaGFrZSBvY2N1cnJlZCB3aXRob3V0IHRhbXBlcmluZwogKiBieSBhbiBhdHRhY2tlci4KICoKICogVXAgdG8gNCBkaWZmZXJlbnQgbWVzc2FnZXMgbWF5IGJlIHNlbnQgZHVyaW5nIGEga2V5IGV4Y2hhbmdlLiBUaGUgc2VydmVyCiAqIGNlcnRpZmljYXRlLCB0aGUgc2VydmVyIGtleSBleGNoYW5nZSwgdGhlIGNsaWVudCBjZXJ0aWZpY2F0ZSwgYW5kIHRoZQogKiBjbGllbnQga2V5IGV4Y2hhbmdlLgogKgogKiBBIHR5cGljYWwgaGFuZHNoYWtlIChmcm9tIHRoZSBjbGllbnQncyBwZXJzcGVjdGl2ZSkuCiAqCiAqIDEuIENsaWVudCBzZW5kcyBDbGllbnRIZWxsby4KICogMi4gQ2xpZW50IHJlY2VpdmVzIFNlcnZlckhlbGxvLgogKiAzLiBDbGllbnQgcmVjZWl2ZXMgb3B0aW9uYWwgQ2VydGlmaWNhdGUuCiAqIDQuIENsaWVudCByZWNlaXZlcyBvcHRpb25hbCBTZXJ2ZXJLZXlFeGNoYW5nZS4KICogNS4gQ2xpZW50IHJlY2VpdmVzIFNlcnZlckhlbGxvRG9uZS4KICogNi4gQ2xpZW50IHNlbmRzIG9wdGlvbmFsIENlcnRpZmljYXRlLgogKiA3LiBDbGllbnQgc2VuZHMgQ2xpZW50S2V5RXhjaGFuZ2UuCiAqIDguIENsaWVudCBzZW5kcyBvcHRpb25hbCBDZXJ0aWZpY2F0ZVZlcmlmeS4KICogOS4gQ2xpZW50IHNlbmRzIENoYW5nZUNpcGhlclNwZWMuCiAqIDEwLiBDbGllbnQgc2VuZHMgRmluaXNoZWQuCiAqIDExLiBDbGllbnQgcmVjZWl2ZXMgQ2hhbmdlQ2lwaGVyU3BlYy4KICogMTIuIENsaWVudCByZWNlaXZlcyBGaW5pc2hlZC4KICogMTMuIENsaWVudCBzZW5kcy9yZWNlaXZlcyBhcHBsaWNhdGlvbiBkYXRhLgogKgogKiBUbyByZXVzZSBhbiBleGlzdGluZyBzZXNzaW9uOgogKgogKiAxLiBDbGllbnQgc2VuZHMgQ2xpZW50SGVsbG8gd2l0aCBzZXNzaW9uIElEIGZvciByZXVzZS4KICogMi4gQ2xpZW50IHJlY2VpdmVzIFNlcnZlckhlbGxvIHdpdGggc2FtZSBzZXNzaW9uIElEIGlmIHJldXNpbmcuCiAqIDMuIENsaWVudCByZWNlaXZlcyBDaGFuZ2VDaXBoZXJTcGVjIG1lc3NhZ2UgaWYgcmV1c2luZy4KICogNC4gQ2xpZW50IHJlY2VpdmVzIEZpbmlzaGVkLgogKiA1LiBDbGllbnQgc2VuZHMgQ2hhbmdlQ2lwaGVyU3BlYy4KICogNi4gQ2xpZW50IHNlbmRzIEZpbmlzaGVkLgogKgogKiBOb3RlOiBDbGllbnQgaWdub3JlcyBIZWxsb1JlcXVlc3QgaWYgaW4gdGhlIG1pZGRsZSBvZiBhIGhhbmRzaGFrZS4KICoKICogUmVjb3JkIExheWVyOgogKgogKiBUaGUgcmVjb3JkIGxheWVyIGZyYWdtZW50cyBpbmZvcm1hdGlvbiBibG9ja3MgaW50byBUTFNQbGFpbnRleHQgcmVjb3JkcwogKiBjYXJyeWluZyBkYXRhIGluIGNodW5rcyBvZiAyXjE0IGJ5dGVzIG9yIGxlc3MuIENsaWVudCBtZXNzYWdlIGJvdW5kYXJpZXMgYXJlCiAqIG5vdCBwcmVzZXJ2ZWQgaW4gdGhlIHJlY29yZCBsYXllciAoaS5lLiwgbXVsdGlwbGUgY2xpZW50IG1lc3NhZ2VzIG9mIHRoZQogKiBzYW1lIENvbnRlbnRUeXBlIE1BWSBiZSBjb2FsZXNjZWQgaW50byBhIHNpbmdsZSBUTFNQbGFpbnRleHQgcmVjb3JkLCBvciBhCiAqIHNpbmdsZSBtZXNzYWdlIE1BWSBiZSBmcmFnbWVudGVkIGFjcm9zcyBzZXZlcmFsIHJlY29yZHMpLgogKgogKiBzdHJ1Y3QgewogKiAgIHVpbnQ4IG1ham9yOwogKiAgIHVpbnQ4IG1pbm9yOwogKiB9IFByb3RvY29sVmVyc2lvbjsKICoKICogc3RydWN0IHsKICogICBDb250ZW50VHlwZSB0eXBlOwogKiAgIFByb3RvY29sVmVyc2lvbiB2ZXJzaW9uOwogKiAgIHVpbnQxNiBsZW5ndGg7CiAqICAgb3BhcXVlIGZyYWdtZW50W1RMU1BsYWludGV4dC5sZW5ndGhdOwogKiB9IFRMU1BsYWludGV4dDsKICoKICogdHlwZToKICogICBUaGUgaGlnaGVyLWxldmVsIHByb3RvY29sIHVzZWQgdG8gcHJvY2VzcyB0aGUgZW5jbG9zZWQgZnJhZ21lbnQuCiAqCiAqIHZlcnNpb246CiAqICAgVGhlIHZlcnNpb24gb2YgdGhlIHByb3RvY29sIGJlaW5nIGVtcGxveWVkLiBUTFMgVmVyc2lvbiAxLjIgdXNlcyB2ZXJzaW9uCiAqICAgezMsIDN9LiBUTFMgVmVyc2lvbiAxLjAgdXNlcyB2ZXJzaW9uIHszLCAxfS4gTm90ZSB0aGF0IGEgY2xpZW50IHRoYXQKICogICBzdXBwb3J0cyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBUTFMgbWF5IG5vdCBrbm93IHdoYXQgdmVyc2lvbiB3aWxsIGJlCiAqICAgZW1wbG95ZWQgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSBTZXJ2ZXJIZWxsby4KICoKICogbGVuZ3RoOgogKiAgIFRoZSBsZW5ndGggKGluIGJ5dGVzKSBvZiB0aGUgZm9sbG93aW5nIFRMU1BsYWludGV4dC5mcmFnbWVudC4gVGhlIGxlbmd0aAogKiAgIE1VU1QgTk9UIGV4Y2VlZCAyXjE0ID0gMTYzODQgYnl0ZXMuCiAqCiAqIGZyYWdtZW50OgogKiAgIFRoZSBhcHBsaWNhdGlvbiBkYXRhLiBUaGlzIGRhdGEgaXMgdHJhbnNwYXJlbnQgYW5kIHRyZWF0ZWQgYXMgYW4KICogICBpbmRlcGVuZGVudCBibG9jayB0byBiZSBkZWFsdCB3aXRoIGJ5IHRoZSBoaWdoZXItbGV2ZWwgcHJvdG9jb2wgc3BlY2lmaWVkCiAqICAgYnkgdGhlIHR5cGUgZmllbGQuCiAqCiAqIEltcGxlbWVudGF0aW9ucyBNVVNUIE5PVCBzZW5kIHplcm8tbGVuZ3RoIGZyYWdtZW50cyBvZiBIYW5kc2hha2UsIEFsZXJ0LCBvcgogKiBDaGFuZ2VDaXBoZXJTcGVjIGNvbnRlbnQgdHlwZXMuIFplcm8tbGVuZ3RoIGZyYWdtZW50cyBvZiBBcHBsaWNhdGlvbiBkYXRhCiAqIE1BWSBiZSBzZW50IGFzIHRoZXkgYXJlIHBvdGVudGlhbGx5IHVzZWZ1bCBhcyBhIHRyYWZmaWMgYW5hbHlzaXMKICogY291bnRlcm1lYXN1cmUuCiAqCiAqIE5vdGU6IERhdGEgb2YgZGlmZmVyZW50IFRMUyByZWNvcmQgbGF5ZXIgY29udGVudCB0eXBlcyBNQVkgYmUgaW50ZXJsZWF2ZWQuCiAqIEFwcGxpY2F0aW9uIGRhdGEgaXMgZ2VuZXJhbGx5IG9mIGxvd2VyIHByZWNlZGVuY2UgZm9yIHRyYW5zbWlzc2lvbiB0aGFuCiAqIG90aGVyIGNvbnRlbnQgdHlwZXMuIEhvd2V2ZXIsIHJlY29yZHMgTVVTVCBiZSBkZWxpdmVyZWQgdG8gdGhlIG5ldHdvcmsgaW4KICogdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBhcmUgcHJvdGVjdGVkIGJ5IHRoZSByZWNvcmQgbGF5ZXIuIFJlY2lwaWVudHMgTVVTVAogKiByZWNlaXZlIGFuZCBwcm9jZXNzIGludGVybGVhdmVkIGFwcGxpY2F0aW9uIGxheWVyIHRyYWZmaWMgZHVyaW5nIGhhbmRzaGFrZXMKICogc3Vic2VxdWVudCB0byB0aGUgZmlyc3Qgb25lIG9uIGEgY29ubmVjdGlvbi4KICoKICogc3RydWN0IHsKICogICBDb250ZW50VHlwZSB0eXBlOyAgICAgICAvLyBzYW1lIGFzIFRMU1BsYWludGV4dC50eXBlCiAqICAgUHJvdG9jb2xWZXJzaW9uIHZlcnNpb247Ly8gc2FtZSBhcyBUTFNQbGFpbnRleHQudmVyc2lvbgogKiAgIHVpbnQxNiBsZW5ndGg7CiAqICAgb3BhcXVlIGZyYWdtZW50W1RMU0NvbXByZXNzZWQubGVuZ3RoXTsKICogfSBUTFNDb21wcmVzc2VkOwogKgogKiBsZW5ndGg6CiAqICAgVGhlIGxlbmd0aCAoaW4gYnl0ZXMpIG9mIHRoZSBmb2xsb3dpbmcgVExTQ29tcHJlc3NlZC5mcmFnbWVudC4KICogICBUaGUgbGVuZ3RoIE1VU1QgTk9UIGV4Y2VlZCAyXjE0ICsgMTAyNC4KICoKICogZnJhZ21lbnQ6CiAqICAgVGhlIGNvbXByZXNzZWQgZm9ybSBvZiBUTFNQbGFpbnRleHQuZnJhZ21lbnQuCiAqCiAqIE5vdGU6IEEgQ29tcHJlc3Npb25NZXRob2QubnVsbCBvcGVyYXRpb24gaXMgYW4gaWRlbnRpdHkgb3BlcmF0aW9uOyBubyBmaWVsZHMKICogYXJlIGFsdGVyZWQuIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIHNpbmNlIG5vIGNvbXByZXNzaW9uIGlzIHN1cHBvcnRlZCwKICogdW5jb21wcmVzc2VkIHJlY29yZHMgYXJlIGFsd2F5cyB0aGUgc2FtZSBhcyBjb21wcmVzc2VkIHJlY29yZHMuCiAqCiAqIEVuY3J5cHRpb24gSW5mb3JtYXRpb246CiAqCiAqIFRoZSBlbmNyeXB0aW9uIGFuZCBNQUMgZnVuY3Rpb25zIHRyYW5zbGF0ZSBhIFRMU0NvbXByZXNzZWQgc3RydWN0dXJlIGludG8gYQogKiBUTFNDaXBoZXJ0ZXh0LiBUaGUgZGVjcnlwdGlvbiBmdW5jdGlvbnMgcmV2ZXJzZSB0aGUgcHJvY2Vzcy4gVGhlIE1BQyBvZiB0aGUKICogcmVjb3JkIGFsc28gaW5jbHVkZXMgYSBzZXF1ZW5jZSBudW1iZXIgc28gdGhhdCBtaXNzaW5nLCBleHRyYSwgb3IgcmVwZWF0ZWQKICogbWVzc2FnZXMgYXJlIGRldGVjdGFibGUuCiAqCiAqIHN0cnVjdCB7CiAqICAgQ29udGVudFR5cGUgdHlwZTsKICogICBQcm90b2NvbFZlcnNpb24gdmVyc2lvbjsKICogICB1aW50MTYgbGVuZ3RoOwogKiAgIHNlbGVjdCAoU2VjdXJpdHlQYXJhbWV0ZXJzLmNpcGhlcl90eXBlKSB7CiAqICAgICBjYXNlIHN0cmVhbTogR2VuZXJpY1N0cmVhbUNpcGhlcjsKICogICAgIGNhc2UgYmxvY2s6ICBHZW5lcmljQmxvY2tDaXBoZXI7CiAqICAgICBjYXNlIGFlYWQ6ICAgR2VuZXJpY0FFQURDaXBoZXI7CiAqICAgfSBmcmFnbWVudDsKICogfSBUTFNDaXBoZXJ0ZXh0OwogKgogKiB0eXBlOgogKiAgIFRoZSB0eXBlIGZpZWxkIGlzIGlkZW50aWNhbCB0byBUTFNDb21wcmVzc2VkLnR5cGUuCiAqCiAqIHZlcnNpb246CiAqICAgVGhlIHZlcnNpb24gZmllbGQgaXMgaWRlbnRpY2FsIHRvIFRMU0NvbXByZXNzZWQudmVyc2lvbi4KICoKICogbGVuZ3RoOgogKiAgIFRoZSBsZW5ndGggKGluIGJ5dGVzKSBvZiB0aGUgZm9sbG93aW5nIFRMU0NpcGhlcnRleHQuZnJhZ21lbnQuCiAqICAgVGhlIGxlbmd0aCBNVVNUIE5PVCBleGNlZWQgMl4xNCArIDIwNDguCiAqCiAqIGZyYWdtZW50OgogKiAgIFRoZSBlbmNyeXB0ZWQgZm9ybSBvZiBUTFNDb21wcmVzc2VkLmZyYWdtZW50LCB3aXRoIHRoZSBNQUMuCiAqCiAqIE5vdGU6IE9ubHkgQ0JDIEJsb2NrIENpcGhlcnMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLgogKgogKiBUaGUgVExTQ29tcHJlc3NlZC5mcmFnbWVudCBzdHJ1Y3R1cmVzIGFyZSBjb252ZXJ0ZWQgdG8vZnJvbSBibG9jawogKiBUTFNDaXBoZXJ0ZXh0LmZyYWdtZW50IHN0cnVjdHVyZXMuCiAqCiAqIHN0cnVjdCB7CiAqICAgb3BhcXVlIElWW1NlY3VyaXR5UGFyYW1ldGVycy5yZWNvcmRfaXZfbGVuZ3RoXTsKICogICBibG9jay1jaXBoZXJlZCBzdHJ1Y3QgewogKiAgICAgb3BhcXVlIGNvbnRlbnRbVExTQ29tcHJlc3NlZC5sZW5ndGhdOwogKiAgICAgb3BhcXVlIE1BQ1tTZWN1cml0eVBhcmFtZXRlcnMubWFjX2xlbmd0aF07CiAqICAgICB1aW50OCBwYWRkaW5nW0dlbmVyaWNCbG9ja0NpcGhlci5wYWRkaW5nX2xlbmd0aF07CiAqICAgICB1aW50OCBwYWRkaW5nX2xlbmd0aDsKICogICB9OwogKiB9IEdlbmVyaWNCbG9ja0NpcGhlcjsKICoKICogVGhlIE1BQyBpcyBnZW5lcmF0ZWQgYXMgZGVzY3JpYmVkIGluIFNlY3Rpb24gNi4yLjMuMS4KICoKICogSVY6CiAqICAgVGhlIEluaXRpYWxpemF0aW9uIFZlY3RvciAoSVYpIFNIT1VMRCBiZSBjaG9zZW4gYXQgcmFuZG9tLCBhbmQgTVVTVCBiZQogKiAgIHVucHJlZGljdGFibGUuIE5vdGUgdGhhdCBpbiB2ZXJzaW9ucyBvZiBUTFMgcHJpb3IgdG8gMS4xLCB0aGVyZSB3YXMgbm8KICogICBJViBmaWVsZCwgYW5kIHRoZSBsYXN0IGNpcGhlcnRleHQgYmxvY2sgb2YgdGhlIHByZXZpb3VzIHJlY29yZCAodGhlICJDQkMKICogICByZXNpZHVlIikgd2FzIHVzZWQgYXMgdGhlIElWLiBUaGlzIHdhcyBjaGFuZ2VkIHRvIHByZXZlbnQgdGhlIGF0dGFja3MKICogICBkZXNjcmliZWQgaW4gW0NCQ0FUVF0uIEZvciBibG9jayBjaXBoZXJzLCB0aGUgSVYgbGVuZ3RoIGlzIG9mIGxlbmd0aAogKiAgIFNlY3VyaXR5UGFyYW1ldGVycy5yZWNvcmRfaXZfbGVuZ3RoLCB3aGljaCBpcyBlcXVhbCB0byB0aGUKICogICBTZWN1cml0eVBhcmFtZXRlcnMuYmxvY2tfc2l6ZS4KICoKICogcGFkZGluZzoKICogICBQYWRkaW5nIHRoYXQgaXMgYWRkZWQgdG8gZm9yY2UgdGhlIGxlbmd0aCBvZiB0aGUgcGxhaW50ZXh0IHRvIGJlIGFuCiAqICAgaW50ZWdyYWwgbXVsdGlwbGUgb2YgdGhlIGJsb2NrIGNpcGhlcidzIGJsb2NrIGxlbmd0aC4gVGhlIHBhZGRpbmcgTUFZIGJlCiAqICAgYW55IGxlbmd0aCB1cCB0byAyNTUgYnl0ZXMsIGFzIGxvbmcgYXMgaXQgcmVzdWx0cyBpbiB0aGUKICogICBUTFNDaXBoZXJ0ZXh0Lmxlbmd0aCBiZWluZyBhbiBpbnRlZ3JhbCBtdWx0aXBsZSBvZiB0aGUgYmxvY2sgbGVuZ3RoLgogKiAgIExlbmd0aHMgbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5IG1pZ2h0IGJlIGRlc2lyYWJsZSB0byBmcnVzdHJhdGUgYXR0YWNrcyBvbgogKiAgIGEgcHJvdG9jb2wgdGhhdCBhcmUgYmFzZWQgb24gYW5hbHlzaXMgb2YgdGhlIGxlbmd0aHMgb2YgZXhjaGFuZ2VkCiAqICAgbWVzc2FnZXMuIEVhY2ggdWludDggaW4gdGhlIHBhZGRpbmcgZGF0YSB2ZWN0b3IgTVVTVCBiZSBmaWxsZWQgd2l0aCB0aGUKICogICBwYWRkaW5nIGxlbmd0aCB2YWx1ZS4gVGhlIHJlY2VpdmVyIE1VU1QgY2hlY2sgdGhpcyBwYWRkaW5nIGFuZCBNVVNUIHVzZQogKiAgIHRoZSBiYWRfcmVjb3JkX21hYyBhbGVydCB0byBpbmRpY2F0ZSBwYWRkaW5nIGVycm9ycy4KICoKICogcGFkZGluZ19sZW5ndGg6CiAqICAgVGhlIHBhZGRpbmcgbGVuZ3RoIE1VU1QgYmUgc3VjaCB0aGF0IHRoZSB0b3RhbCBzaXplIG9mIHRoZQogKiAgIEdlbmVyaWNCbG9ja0NpcGhlciBzdHJ1Y3R1cmUgaXMgYSBtdWx0aXBsZSBvZiB0aGUgY2lwaGVyJ3MgYmxvY2sgbGVuZ3RoLgogKiAgIExlZ2FsIHZhbHVlcyByYW5nZSBmcm9tIHplcm8gdG8gMjU1LCBpbmNsdXNpdmUuIFRoaXMgbGVuZ3RoIHNwZWNpZmllcyB0aGUKICogICBsZW5ndGggb2YgdGhlIHBhZGRpbmcgZmllbGQgZXhjbHVzaXZlIG9mIHRoZSBwYWRkaW5nX2xlbmd0aCBmaWVsZCBpdHNlbGYuCiAqCiAqIFRoZSBlbmNyeXB0ZWQgZGF0YSBsZW5ndGggKFRMU0NpcGhlcnRleHQubGVuZ3RoKSBpcyBvbmUgbW9yZSB0aGFuIHRoZSBzdW0gb2YKICogU2VjdXJpdHlQYXJhbWV0ZXJzLmJsb2NrX2xlbmd0aCwgVExTQ29tcHJlc3NlZC5sZW5ndGgsCiAqIFNlY3VyaXR5UGFyYW1ldGVycy5tYWNfbGVuZ3RoLCBhbmQgcGFkZGluZ19sZW5ndGguCiAqCiAqIEV4YW1wbGU6IElmIHRoZSBibG9jayBsZW5ndGggaXMgOCBieXRlcywgdGhlIGNvbnRlbnQgbGVuZ3RoCiAqIChUTFNDb21wcmVzc2VkLmxlbmd0aCkgaXMgNjEgYnl0ZXMsIGFuZCB0aGUgTUFDIGxlbmd0aCBpcyAyMCBieXRlcywgdGhlbiB0aGUKICogbGVuZ3RoIGJlZm9yZSBwYWRkaW5nIGlzIDgyIGJ5dGVzICh0aGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIElWLiBUaHVzLCB0aGUKICogcGFkZGluZyBsZW5ndGggbW9kdWxvIDggbXVzdCBiZSBlcXVhbCB0byA2IGluIG9yZGVyIHRvIG1ha2UgdGhlIHRvdGFsIGxlbmd0aAogKiBhbiBldmVuIG11bHRpcGxlIG9mIDggYnl0ZXMgKHRoZSBibG9jayBsZW5ndGgpLiBUaGUgcGFkZGluZyBsZW5ndGggY2FuIGJlCiAqIDYsIDE0LCAyMiwgYW5kIHNvIG9uLCB0aHJvdWdoIDI1NC4gSWYgdGhlIHBhZGRpbmcgbGVuZ3RoIHdlcmUgdGhlIG1pbmltdW0KICogbmVjZXNzYXJ5LCA2LCB0aGUgcGFkZGluZyB3b3VsZCBiZSA2IGJ5dGVzLCBlYWNoIGNvbnRhaW5pbmcgdGhlIHZhbHVlIDYuCiAqIFRodXMsIHRoZSBsYXN0IDggb2N0ZXRzIG9mIHRoZSBHZW5lcmljQmxvY2tDaXBoZXIgYmVmb3JlIGJsb2NrIGVuY3J5cHRpb24KICogd291bGQgYmUgeHggMDYgMDYgMDYgMDYgMDYgMDYgMDYsIHdoZXJlIHh4IGlzIHRoZSBsYXN0IG9jdGV0IG9mIHRoZSBNQUMuCiAqCiAqIE5vdGU6IFdpdGggYmxvY2sgY2lwaGVycyBpbiBDQkMgbW9kZSAoQ2lwaGVyIEJsb2NrIENoYWluaW5nKSwgaXQgaXMgY3JpdGljYWwKICogdGhhdCB0aGUgZW50aXJlIHBsYWludGV4dCBvZiB0aGUgcmVjb3JkIGJlIGtub3duIGJlZm9yZSBhbnkgY2lwaGVydGV4dCBpcwogKiB0cmFuc21pdHRlZC4gT3RoZXJ3aXNlLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGF0dGFja2VyIHRvIG1vdW50IHRoZSBhdHRhY2sKICogZGVzY3JpYmVkIGluIFtDQkNBVFRdLgogKgogKiBJbXBsZW1lbnRhdGlvbiBub3RlOiBDYW52ZWwgZXQgYWwuIFtDQkNUSU1FXSBoYXZlIGRlbW9uc3RyYXRlZCBhIHRpbWluZwogKiBhdHRhY2sgb24gQ0JDIHBhZGRpbmcgYmFzZWQgb24gdGhlIHRpbWUgcmVxdWlyZWQgdG8gY29tcHV0ZSB0aGUgTUFDLiBJbgogKiBvcmRlciB0byBkZWZlbmQgYWdhaW5zdCB0aGlzIGF0dGFjaywgaW1wbGVtZW50YXRpb25zIE1VU1QgZW5zdXJlIHRoYXQKICogcmVjb3JkIHByb2Nlc3NpbmcgdGltZSBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSB3aGV0aGVyIG9yIG5vdCB0aGUgcGFkZGluZwogKiBpcyBjb3JyZWN0LiBJbiBnZW5lcmFsLCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcyBpcyB0byBjb21wdXRlIHRoZSBNQUMgZXZlbgogKiBpZiB0aGUgcGFkZGluZyBpcyBpbmNvcnJlY3QsIGFuZCBvbmx5IHRoZW4gcmVqZWN0IHRoZSBwYWNrZXQuIEZvciBpbnN0YW5jZSwKICogaWYgdGhlIHBhZCBhcHBlYXJzIHRvIGJlIGluY29ycmVjdCwgdGhlIGltcGxlbWVudGF0aW9uIG1pZ2h0IGFzc3VtZSBhCiAqIHplcm8tbGVuZ3RoIHBhZCBhbmQgdGhlbiBjb21wdXRlIHRoZSBNQUMuIFRoaXMgbGVhdmVzIGEgc21hbGwgdGltaW5nCiAqIGNoYW5uZWwsIHNpbmNlIE1BQyBwZXJmb3JtYW5jZSBkZXBlbmRzLCB0byBzb21lIGV4dGVudCwgb24gdGhlIHNpemUgb2YgdGhlCiAqIGRhdGEgZnJhZ21lbnQsIGJ1dCBpdCBpcyBub3QgYmVsaWV2ZWQgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGJlIGV4cGxvaXRhYmxlLAogKiBkdWUgdG8gdGhlIGxhcmdlIGJsb2NrIHNpemUgb2YgZXhpc3RpbmcgTUFDcyBhbmQgdGhlIHNtYWxsIHNpemUgb2YgdGhlCiAqIHRpbWluZyBzaWduYWwuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLyoqCiAqIEdlbmVyYXRlcyBwc2V1ZG8gcmFuZG9tIGJ5dGVzIGJ5IG1peGluZyB0aGUgcmVzdWx0IG9mIHR3byBoYXNoIGZ1bmN0aW9ucywKICogTUQ1IGFuZCBTSEEtMS4KICoKICogcHJmX1RMUzEoc2VjcmV0LCBsYWJlbCwgc2VlZCkgPQogKiAgIFBfTUQ1KFMxLCBsYWJlbCArIHNlZWQpIFhPUiBQX1NIQS0xKFMyLCBsYWJlbCArIHNlZWQpOwogKgogKiBFYWNoIFBfaGFzaCBmdW5jdGlvbiBmdW5jdGlvbnMgYXMgZm9sbG93czoKICoKICogUF9oYXNoKHNlY3JldCwgc2VlZCkgPSBITUFDX2hhc2goc2VjcmV0LCBBKDEpICsgc2VlZCkgKwogKiAgICAgICAgICAgICAgICAgICAgICAgIEhNQUNfaGFzaChzZWNyZXQsIEEoMikgKyBzZWVkKSArCiAqICAgICAgICAgICAgICAgICAgICAgICAgSE1BQ19oYXNoKHNlY3JldCwgQSgzKSArIHNlZWQpICsgLi4uCiAqIEEoKSBpcyBkZWZpbmVkIGFzOgogKiAgIEEoMCkgPSBzZWVkCiAqICAgQShpKSA9IEhNQUNfaGFzaChzZWNyZXQsIEEoaS0xKSkKICoKICogVGhlICcrJyBvcGVyYXRvciBkZW5vdGVzIGNvbmNhdGVuYXRpb24uCiAqCiAqIEFzIG1hbnkgaXRlcmF0aW9ucyBBKE4pIGFzIGFyZSBuZWVkZWQgYXJlIHBlcmZvcm1lZCB0byBnZW5lcmF0ZSBlbm91Z2gKICogcHNldWRvIHJhbmRvbSBieXRlIG91dHB1dC4gSWYgYW4gaXRlcmF0aW9uIGNyZWF0ZXMgbW9yZSBkYXRhIHRoYW4gaXMKICogbmVjZXNzYXJ5LCB0aGVuIGl0IGlzIHRydW5jYXRlZC4KICoKICogVGhlcmVmb3JlOgogKiBBKDEpID0gSE1BQ19oYXNoKHNlY3JldCwgQSgwKSkKICogICAgICA9IEhNQUNfaGFzaChzZWNyZXQsIHNlZWQpCiAqIEEoMikgPSBITUFDX2hhc2goc2VjcmV0LCBBKDEpKQogKiAgICAgID0gSE1BQ19oYXNoKHNlY3JldCwgSE1BQ19oYXNoKHNlY3JldCwgc2VlZCkpCiAqCiAqIFRoZXJlZm9yZToKICogUF9oYXNoKHNlY3JldCwgc2VlZCkgPQogKiAgIEhNQUNfaGFzaChzZWNyZXQsIEhNQUNfaGFzaChzZWNyZXQsIEEoMCkpICsgc2VlZCkgKwogKiAgIEhNQUNfaGFzaChzZWNyZXQsIEhNQUNfaGFzaChzZWNyZXQsIEEoMSkpICsgc2VlZCkgKwogKiAgIC4uLgogKgogKiBUaGVyZWZvcmU6CiAqIFBfaGFzaChzZWNyZXQsIHNlZWQpID0KICogICBITUFDX2hhc2goc2VjcmV0LCBITUFDX2hhc2goc2VjcmV0LCBzZWVkKSArIHNlZWQpICsKICogICBITUFDX2hhc2goc2VjcmV0LCBITUFDX2hhc2goc2VjcmV0LCBITUFDX2hhc2goc2VjcmV0LCBzZWVkKSkgKyBzZWVkKSArCiAqICAgLi4uCiAqCiAqIEBwYXJhbSBzZWNyZXQgdGhlIHNlY3JldCB0byB1c2UuCiAqIEBwYXJhbSBsYWJlbCB0aGUgbGFiZWwgdG8gdXNlLgogKiBAcGFyYW0gc2VlZCB0aGUgc2VlZCB2YWx1ZSB0byB1c2UuCiAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZS4KICoKICogQHJldHVybiB0aGUgcHNldWRvIHJhbmRvbSBieXRlcyBpbiBhIGJ5dGUgYnVmZmVyLgogKi8KdmFyIHByZl9UTFMxID0gZnVuY3Rpb24oc2VjcmV0LCBsYWJlbCwgc2VlZCwgbGVuZ3RoKSB7CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwoKICAvKiBGb3IgVExTIDEuMCwgdGhlIHNlY3JldCBpcyBzcGxpdCBpbiBoYWxmLCBpbnRvIHR3byBzZWNyZXRzIG9mIGVxdWFsCiAgICBsZW5ndGguIElmIHRoZSBzZWNyZXQgaGFzIGFuIG9kZCBsZW5ndGggdGhlbiB0aGUgbGFzdCBieXRlIG9mIHRoZSBmaXJzdAogICAgaGFsZiB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBzZWNvbmQuIFRoZSBsZW5ndGggb2YgdGhlCiAgICB0d28gc2VjcmV0cyBpcyBoYWxmIG9mIHRoZSBzZWNyZXQgcm91bmRlZCB1cC4gKi8KICB2YXIgaWR4ID0gKHNlY3JldC5sZW5ndGggPj4gMSk7CiAgdmFyIHNsZW4gPSBpZHggKyAoc2VjcmV0Lmxlbmd0aCAmIDEpOwogIHZhciBzMSA9IHNlY3JldC5zdWJzdHIoMCwgc2xlbik7CiAgdmFyIHMyID0gc2VjcmV0LnN1YnN0cihpZHgsIHNsZW4pOwogIHZhciBhaSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdmFyIGhtYWMgPSBmb3JnZS5obWFjLmNyZWF0ZSgpOwogIHNlZWQgPSBsYWJlbCArIHNlZWQ7CgogIC8vIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdGhhdCBtdXN0IGJlIHBlcmZvcm1lZCB0byBnZW5lcmF0ZQogIC8vIGVub3VnaCBvdXRwdXQgYnl0ZXMsIG1kNSBjcmVhdGVzIDE2IGJ5dGUgaGFzaGVzLCBzaGExIGNyZWF0ZXMgMjAKICB2YXIgbWQ1aXRyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDE2KTsKICB2YXIgc2hhMWl0ciA9IE1hdGguY2VpbChsZW5ndGggLyAyMCk7CgogIC8vIGRvIG1kNSBpdGVyYXRpb25zCiAgaG1hYy5zdGFydCgnTUQ1JywgczEpOwogIHZhciBtZDVieXRlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgYWkucHV0Qnl0ZXMoc2VlZCk7CiAgZm9yKHZhciBpID0gMDsgaSA8IG1kNWl0cjsgKytpKSB7CiAgICAvLyBITUFDX2hhc2goc2VjcmV0LCBBKGktMSkpCiAgICBobWFjLnN0YXJ0KG51bGwsIG51bGwpOwogICAgaG1hYy51cGRhdGUoYWkuZ2V0Qnl0ZXMoKSk7CiAgICBhaS5wdXRCdWZmZXIoaG1hYy5kaWdlc3QoKSk7CgogICAgLy8gSE1BQ19oYXNoKHNlY3JldCwgQShpKSArIHNlZWQpCiAgICBobWFjLnN0YXJ0KG51bGwsIG51bGwpOwogICAgaG1hYy51cGRhdGUoYWkuYnl0ZXMoKSArIHNlZWQpOwogICAgbWQ1Ynl0ZXMucHV0QnVmZmVyKGhtYWMuZGlnZXN0KCkpOwogIH0KCiAgLy8gZG8gc2hhMSBpdGVyYXRpb25zCiAgaG1hYy5zdGFydCgnU0hBMScsIHMyKTsKICB2YXIgc2hhMWJ5dGVzID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBhaS5jbGVhcigpOwogIGFpLnB1dEJ5dGVzKHNlZWQpOwogIGZvcih2YXIgaSA9IDA7IGkgPCBzaGExaXRyOyArK2kpIHsKICAgIC8vIEhNQUNfaGFzaChzZWNyZXQsIEEoaS0xKSkKICAgIGhtYWMuc3RhcnQobnVsbCwgbnVsbCk7CiAgICBobWFjLnVwZGF0ZShhaS5nZXRCeXRlcygpKTsKICAgIGFpLnB1dEJ1ZmZlcihobWFjLmRpZ2VzdCgpKTsKCiAgICAvLyBITUFDX2hhc2goc2VjcmV0LCBBKGkpICsgc2VlZCkKICAgIGhtYWMuc3RhcnQobnVsbCwgbnVsbCk7CiAgICBobWFjLnVwZGF0ZShhaS5ieXRlcygpICsgc2VlZCk7CiAgICBzaGExYnl0ZXMucHV0QnVmZmVyKGhtYWMuZGlnZXN0KCkpOwogIH0KCiAgLy8gWE9SIHRoZSBtZDUgYnl0ZXMgd2l0aCB0aGUgc2hhMSBieXRlcwogIHJ2YWwucHV0Qnl0ZXMoZm9yZ2UudXRpbC54b3JCeXRlcygKICAgIG1kNWJ5dGVzLmdldEJ5dGVzKCksIHNoYTFieXRlcy5nZXRCeXRlcygpLCBsZW5ndGgpKTsKCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogR2VuZXJhdGVzIHBzZXVkbyByYW5kb20gYnl0ZXMgdXNpbmcgYSBTSEEyNTYgYWxnb3JpdGhtLiBGb3IgVExTIDEuMi4KICoKICogQHBhcmFtIHNlY3JldCB0aGUgc2VjcmV0IHRvIHVzZS4KICogQHBhcmFtIGxhYmVsIHRoZSBsYWJlbCB0byB1c2UuCiAqIEBwYXJhbSBzZWVkIHRoZSBzZWVkIHZhbHVlIHRvIHVzZS4KICogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlLgogKgogKiBAcmV0dXJuIHRoZSBwc2V1ZG8gcmFuZG9tIGJ5dGVzIGluIGEgYnl0ZSBidWZmZXIuCiAqLwp2YXIgcHJmX3NoYTI1NiA9IGZ1bmN0aW9uKHNlY3JldCwgbGFiZWwsIHNlZWQsIGxlbmd0aCkgewogICAvLyBGSVhNRTogaW1wbGVtZW50IG1lIGZvciBUTFMgMS4yCn07CgovKioKICogR2V0cyBhIE1BQyBmb3IgYSByZWNvcmQgdXNpbmcgdGhlIFNIQS0xIGhhc2ggYWxnb3JpdGhtLgogKgogKiBAcGFyYW0ga2V5IHRoZSBtYWMga2V5LgogKiBAcGFyYW0gc3RhdGUgdGhlIHNlcXVlbmNlIG51bWJlciAoYXJyYXkgb2YgdHdvIDMyLWJpdCBpbnRlZ2VycykuCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICoKICogQHJldHVybiB0aGUgc2hhLTEgaGFzaCAoMjAgYnl0ZXMpIGZvciB0aGUgZ2l2ZW4gcmVjb3JkLgogKi8KdmFyIGhtYWNfc2hhMSA9IGZ1bmN0aW9uKGtleSwgc2VxTnVtLCByZWNvcmQpIHsKICAvKiBNQUMgaXMgY29tcHV0ZWQgbGlrZSBzbzoKICBITUFDX2hhc2goCiAgICBrZXksIHNlcU51bSArCiAgICAgIFRMU0NvbXByZXNzZWQudHlwZSArCiAgICAgIFRMU0NvbXByZXNzZWQudmVyc2lvbiArCiAgICAgIFRMU0NvbXByZXNzZWQubGVuZ3RoICsKICAgICAgVExTQ29tcHJlc3NlZC5mcmFnbWVudCkKICAqLwogIHZhciBobWFjID0gZm9yZ2UuaG1hYy5jcmVhdGUoKTsKICBobWFjLnN0YXJ0KCdTSEExJywga2V5KTsKICB2YXIgYiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgYi5wdXRJbnQzMihzZXFOdW1bMF0pOwogIGIucHV0SW50MzIoc2VxTnVtWzFdKTsKICBiLnB1dEJ5dGUocmVjb3JkLnR5cGUpOwogIGIucHV0Qnl0ZShyZWNvcmQudmVyc2lvbi5tYWpvcik7CiAgYi5wdXRCeXRlKHJlY29yZC52ZXJzaW9uLm1pbm9yKTsKICBiLnB1dEludDE2KHJlY29yZC5sZW5ndGgpOwogIGIucHV0Qnl0ZXMocmVjb3JkLmZyYWdtZW50LmJ5dGVzKCkpOwogIGhtYWMudXBkYXRlKGIuZ2V0Qnl0ZXMoKSk7CiAgcmV0dXJuIGhtYWMuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKfTsKCi8qKgogKiBDb21wcmVzc2VzIHRoZSBUTFNQbGFpbnRleHQgcmVjb3JkIGludG8gYSBUTFNDb21wcmVzc2VkIHJlY29yZCB1c2luZyB0aGUKICogZGVmbGF0ZSBhbGdvcml0aG0uCiAqCiAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgVExTUGxhaW50ZXh0IHJlY29yZCB0byBjb21wcmVzcy4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdmFyIGRlZmxhdGUgPSBmdW5jdGlvbihjLCByZWNvcmQsIHMpIHsKICB2YXIgcnZhbCA9IGZhbHNlOwoKICB0cnkgewogICAgdmFyIGJ5dGVzID0gYy5kZWZsYXRlKHJlY29yZC5mcmFnbWVudC5nZXRCeXRlcygpKTsKICAgIHJlY29yZC5mcmFnbWVudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKTsKICAgIHJlY29yZC5sZW5ndGggPSBieXRlcy5sZW5ndGg7CiAgICBydmFsID0gdHJ1ZTsKICB9IGNhdGNoKGV4KSB7CiAgICAvLyBkZWZsYXRlIGVycm9yLCBmYWlsIG91dAogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogRGVjb21wcmVzc2VzIHRoZSBUTFNDb21wcmVzc2VkIHJlY29yZCBpbnRvIGEgVExTUGxhaW50ZXh0IHJlY29yZCB1c2luZyB0aGUKICogZGVmbGF0ZSBhbGdvcml0aG0uCiAqCiAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgVExTQ29tcHJlc3NlZCByZWNvcmQgdG8gZGVjb21wcmVzcy4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdmFyIGluZmxhdGUgPSBmdW5jdGlvbihjLCByZWNvcmQsIHMpIHsKICB2YXIgcnZhbCA9IGZhbHNlOwoKICB0cnkgewogICAgdmFyIGJ5dGVzID0gYy5pbmZsYXRlKHJlY29yZC5mcmFnbWVudC5nZXRCeXRlcygpKTsKICAgIHJlY29yZC5mcmFnbWVudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGJ5dGVzKTsKICAgIHJlY29yZC5sZW5ndGggPSBieXRlcy5sZW5ndGg7CiAgICBydmFsID0gdHJ1ZTsKICB9IGNhdGNoKGV4KSB7CiAgICAvLyBpbmZsYXRlIGVycm9yLCBmYWlsIG91dAogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogUmVhZHMgYSBUTFMgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciBmcm9tIGEgYnl0ZSBidWZmZXIuCiAqCiAqIFZhcmlhYmxlLWxlbmd0aCB2ZWN0b3JzIGFyZSBkZWZpbmVkIGJ5IHNwZWNpZnlpbmcgYSBzdWJyYW5nZSBvZiBsZWdhbAogKiBsZW5ndGhzLCBpbmNsdXNpdmVseSwgdXNpbmcgdGhlIG5vdGF0aW9uIDxmbG9vci4uY2VpbGluZz4uIFdoZW4gdGhlc2UgYXJlCiAqIGVuY29kZWQsIHRoZSBhY3R1YWwgbGVuZ3RoIHByZWNlZGVzIHRoZSB2ZWN0b3IncyBjb250ZW50cyBpbiB0aGUgYnl0ZQogKiBzdHJlYW0uIFRoZSBsZW5ndGggd2lsbCBiZSBpbiB0aGUgZm9ybSBvZiBhIG51bWJlciBjb25zdW1pbmcgYXMgbWFueSBieXRlcwogKiBhcyByZXF1aXJlZCB0byBob2xkIHRoZSB2ZWN0b3IncyBzcGVjaWZpZWQgbWF4aW11bSAoY2VpbGluZykgbGVuZ3RoLiBBCiAqIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3Igd2l0aCBhbiBhY3R1YWwgbGVuZ3RoIGZpZWxkIG9mIHplcm8gaXMgcmVmZXJyZWQgdG8KICogYXMgYW4gZW1wdHkgdmVjdG9yLgogKgogKiBAcGFyYW0gYiB0aGUgYnl0ZSBidWZmZXIuCiAqIEBwYXJhbSBsZW5CeXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHN0b3JlIHRoZSBsZW5ndGguCiAqCiAqIEByZXR1cm4gdGhlIHJlc3VsdGluZyBieXRlIGJ1ZmZlci4KICovCnZhciByZWFkVmVjdG9yID0gZnVuY3Rpb24oYiwgbGVuQnl0ZXMpIHsKICB2YXIgbGVuID0gMDsKICBzd2l0Y2gobGVuQnl0ZXMpIHsKICBjYXNlIDE6CiAgICBsZW4gPSBiLmdldEJ5dGUoKTsKICAgIGJyZWFrOwogIGNhc2UgMjoKICAgIGxlbiA9IGIuZ2V0SW50MTYoKTsKICAgIGJyZWFrOwogIGNhc2UgMzoKICAgIGxlbiA9IGIuZ2V0SW50MjQoKTsKICAgIGJyZWFrOwogIGNhc2UgNDoKICAgIGxlbiA9IGIuZ2V0SW50MzIoKTsKICAgIGJyZWFrOwogIH0KCiAgLy8gcmVhZCB2ZWN0b3IgYnl0ZXMgaW50byBhIG5ldyBidWZmZXIKICByZXR1cm4gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoYi5nZXRCeXRlcyhsZW4pKTsKfTsKCi8qKgogKiBXcml0ZXMgYSBUTFMgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciB0byBhIGJ5dGUgYnVmZmVyLgogKgogKiBAcGFyYW0gYiB0aGUgYnl0ZSBidWZmZXIuCiAqIEBwYXJhbSBsZW5CeXRlcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHN0b3JlIHRoZSBsZW5ndGguCiAqIEBwYXJhbSB2IHRoZSBieXRlIGJ1ZmZlciB2ZWN0b3IuCiAqLwp2YXIgd3JpdGVWZWN0b3IgPSBmdW5jdGlvbihiLCBsZW5CeXRlcywgdikgewogIC8vIGVuY29kZSBsZW5ndGggYXQgdGhlIHN0YXJ0IG9mIHRoZSB2ZWN0b3IsIHdoZXJlIHRoZSBudW1iZXIgb2YgYnl0ZXMgZm9yCiAgLy8gdGhlIGxlbmd0aCBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgaXQgd291bGQgdGFrZSB0byBlbmNvZGUgdGhlCiAgLy8gdmVjdG9yJ3MgY2VpbGluZwogIGIucHV0SW50KHYubGVuZ3RoKCksIGxlbkJ5dGVzIDw8IDMpOwogIGIucHV0QnVmZmVyKHYpOwp9OwoKLyoqCiAqIFRoZSB0bHMgaW1wbGVtZW50YXRpb24uCiAqLwp2YXIgdGxzID0ge307CgovKioKICogVmVyc2lvbjogVExTIDEuMiA9IDMuMywgVExTIDEuMSA9IDMuMiwgVExTIDEuMCA9IDMuMS4gQm90aCBUTFMgMS4xIGFuZAogKiBUTFMgMS4yIHdlcmUgc3RpbGwgdG9vIG5ldyAoaWU6IG9wZW5TU0wgZGlkbid0IGltcGxlbWVudCB0aGVtKSBhdCB0aGUgdGltZQogKiBvZiB0aGlzIGltcGxlbWVudGF0aW9uIHNvIFRMUyAxLjAgd2FzIGltcGxlbWVudGVkIGluc3RlYWQuCiAqLwp0bHMuVmVyc2lvbnMgPSB7CiAgVExTXzFfMDoge21ham9yOiAzLCBtaW5vcjogMX0sCiAgVExTXzFfMToge21ham9yOiAzLCBtaW5vcjogMn0sCiAgVExTXzFfMjoge21ham9yOiAzLCBtaW5vcjogM30KfTsKdGxzLlN1cHBvcnRlZFZlcnNpb25zID0gWwogIHRscy5WZXJzaW9ucy5UTFNfMV8xLAogIHRscy5WZXJzaW9ucy5UTFNfMV8wCl07CnRscy5WZXJzaW9uID0gdGxzLlN1cHBvcnRlZFZlcnNpb25zWzBdOwoKLyoqCiAqIE1heGltdW0gZnJhZ21lbnQgc2l6ZS4gVHJ1ZSBtYXhpbXVtIGlzIDE2Mzg0LCBidXQgd2UgZnJhZ21lbnQgYmVmb3JlIHRoYXQKICogdG8gYWxsb3cgZm9yIHVudXN1YWwgc21hbGwgaW5jcmVhc2VzIGR1cmluZyBjb21wcmVzc2lvbi4KICovCnRscy5NYXhGcmFnbWVudCA9IDE2Mzg0IC0gMTAyNDsKCi8qKgogKiBXaGV0aGVyIHRoaXMgZW50aXR5IGlzIGNvbnNpZGVyZWQgdGhlICJjbGllbnQiIG9yICJzZXJ2ZXIiLgogKiBlbnVtIHsgc2VydmVyLCBjbGllbnQgfSBDb25uZWN0aW9uRW5kOwogKi8KdGxzLkNvbm5lY3Rpb25FbmQgPSB7CiAgc2VydmVyOiAwLAogIGNsaWVudDogMQp9OwoKLyoqCiAqIFBzZXVkby1yYW5kb20gZnVuY3Rpb24gYWxnb3JpdGhtIHVzZWQgdG8gZ2VuZXJhdGUga2V5cyBmcm9tIHRoZSBtYXN0ZXIKICogc2VjcmV0LgogKiBlbnVtIHsgdGxzX3ByZl9zaGEyNTYgfSBQUkZBbGdvcml0aG07CiAqLwp0bHMuUFJGQWxnb3JpdGhtID0gewogIHRsc19wcmZfc2hhMjU2OiAwCn07CgovKioKICogQnVsayBlbmNyeXB0aW9uIGFsZ29yaXRobXMuCiAqIGVudW0geyBudWxsLCByYzQsIGRlczMsIGFlcyB9IEJ1bGtDaXBoZXJBbGdvcml0aG07CiAqLwp0bHMuQnVsa0NpcGhlckFsZ29yaXRobSA9IHsKICBub25lOiBudWxsLAogIHJjNDogMCwKICBkZXMzOiAxLAogIGFlczogMgp9OwoKLyoqCiAqIENpcGhlciB0eXBlcy4KICogZW51bSB7IHN0cmVhbSwgYmxvY2ssIGFlYWQgfSBDaXBoZXJUeXBlOwogKi8KdGxzLkNpcGhlclR5cGUgPSB7CiAgc3RyZWFtOiAwLAogIGJsb2NrOiAxLAogIGFlYWQ6IDIKfTsKCi8qKgogKiBNQUMgKE1lc3NhZ2UgQXV0aGVudGljYXRpb24gQ29kZSkgYWxnb3JpdGhtcy4KICogZW51bSB7IG51bGwsIGhtYWNfbWQ1LCBobWFjX3NoYTEsIGhtYWNfc2hhMjU2LAogKiAgIGhtYWNfc2hhMzg0LCBobWFjX3NoYTUxMn0gTUFDQWxnb3JpdGhtOwogKi8KdGxzLk1BQ0FsZ29yaXRobSA9IHsKICBub25lOiBudWxsLAogIGhtYWNfbWQ1OiAwLAogIGhtYWNfc2hhMTogMSwKICBobWFjX3NoYTI1NjogMiwKICBobWFjX3NoYTM4NDogMywKICBobWFjX3NoYTUxMjogNAp9OwoKLyoqCiAqIENvbXByZXNzaW9uIGFsZ29yaXRobXMuCiAqIGVudW0geyBudWxsKDApLCBkZWZsYXRlKDEpLCAoMjU1KSB9IENvbXByZXNzaW9uTWV0aG9kOwogKi8KdGxzLkNvbXByZXNzaW9uTWV0aG9kID0gewogIG5vbmU6IDAsCiAgZGVmbGF0ZTogMQp9OwoKLyoqCiAqIFRMUyByZWNvcmQgY29udGVudCB0eXBlcy4KICogZW51bSB7CiAqICAgY2hhbmdlX2NpcGhlcl9zcGVjKDIwKSwgYWxlcnQoMjEpLCBoYW5kc2hha2UoMjIpLAogKiAgIGFwcGxpY2F0aW9uX2RhdGEoMjMpLCAoMjU1KQogKiB9IENvbnRlbnRUeXBlOwogKi8KdGxzLkNvbnRlbnRUeXBlID0gewogIGNoYW5nZV9jaXBoZXJfc3BlYzogMjAsCiAgYWxlcnQ6IDIxLAogIGhhbmRzaGFrZTogMjIsCiAgYXBwbGljYXRpb25fZGF0YTogMjMsCiAgaGVhcnRiZWF0OiAyNAp9OwoKLyoqCiAqIFRMUyBoYW5kc2hha2UgdHlwZXMuCiAqIGVudW0gewogKiAgIGhlbGxvX3JlcXVlc3QoMCksIGNsaWVudF9oZWxsbygxKSwgc2VydmVyX2hlbGxvKDIpLAogKiAgIGNlcnRpZmljYXRlKDExKSwgc2VydmVyX2tleV9leGNoYW5nZSAoMTIpLAogKiAgIGNlcnRpZmljYXRlX3JlcXVlc3QoMTMpLCBzZXJ2ZXJfaGVsbG9fZG9uZSgxNCksCiAqICAgY2VydGlmaWNhdGVfdmVyaWZ5KDE1KSwgY2xpZW50X2tleV9leGNoYW5nZSgxNiksCiAqICAgZmluaXNoZWQoMjApLCAoMjU1KQogKiB9IEhhbmRzaGFrZVR5cGU7CiAqLwp0bHMuSGFuZHNoYWtlVHlwZSA9IHsKICBoZWxsb19yZXF1ZXN0OiAwLAogIGNsaWVudF9oZWxsbzogMSwKICBzZXJ2ZXJfaGVsbG86IDIsCiAgY2VydGlmaWNhdGU6IDExLAogIHNlcnZlcl9rZXlfZXhjaGFuZ2U6IDEyLAogIGNlcnRpZmljYXRlX3JlcXVlc3Q6IDEzLAogIHNlcnZlcl9oZWxsb19kb25lOiAxNCwKICBjZXJ0aWZpY2F0ZV92ZXJpZnk6IDE1LAogIGNsaWVudF9rZXlfZXhjaGFuZ2U6IDE2LAogIGZpbmlzaGVkOiAyMAp9OwoKLyoqCiAqIFRMUyBBbGVydCBQcm90b2NvbC4KICoKICogZW51bSB7IHdhcm5pbmcoMSksIGZhdGFsKDIpLCAoMjU1KSB9IEFsZXJ0TGV2ZWw7CiAqCiAqIGVudW0gewogKiAgIGNsb3NlX25vdGlmeSgwKSwKICogICB1bmV4cGVjdGVkX21lc3NhZ2UoMTApLAogKiAgIGJhZF9yZWNvcmRfbWFjKDIwKSwKICogICBkZWNyeXB0aW9uX2ZhaWxlZCgyMSksCiAqICAgcmVjb3JkX292ZXJmbG93KDIyKSwKICogICBkZWNvbXByZXNzaW9uX2ZhaWx1cmUoMzApLAogKiAgIGhhbmRzaGFrZV9mYWlsdXJlKDQwKSwKICogICBiYWRfY2VydGlmaWNhdGUoNDIpLAogKiAgIHVuc3VwcG9ydGVkX2NlcnRpZmljYXRlKDQzKSwKICogICBjZXJ0aWZpY2F0ZV9yZXZva2VkKDQ0KSwKICogICBjZXJ0aWZpY2F0ZV9leHBpcmVkKDQ1KSwKICogICBjZXJ0aWZpY2F0ZV91bmtub3duKDQ2KSwKICogICBpbGxlZ2FsX3BhcmFtZXRlcig0NyksCiAqICAgdW5rbm93bl9jYSg0OCksCiAqICAgYWNjZXNzX2RlbmllZCg0OSksCiAqICAgZGVjb2RlX2Vycm9yKDUwKSwKICogICBkZWNyeXB0X2Vycm9yKDUxKSwKICogICBleHBvcnRfcmVzdHJpY3Rpb24oNjApLAogKiAgIHByb3RvY29sX3ZlcnNpb24oNzApLAogKiAgIGluc3VmZmljaWVudF9zZWN1cml0eSg3MSksCiAqICAgaW50ZXJuYWxfZXJyb3IoODApLAogKiAgIHVzZXJfY2FuY2VsZWQoOTApLAogKiAgIG5vX3JlbmVnb3RpYXRpb24oMTAwKSwKICogICAoMjU1KQogKiB9IEFsZXJ0RGVzY3JpcHRpb247CiAqCiAqIHN0cnVjdCB7CiAqICAgQWxlcnRMZXZlbCBsZXZlbDsKICogICBBbGVydERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uOwogKiB9IEFsZXJ0OwogKi8KdGxzLkFsZXJ0ID0ge307CnRscy5BbGVydC5MZXZlbCA9IHsKICB3YXJuaW5nOiAxLAogIGZhdGFsOiAyCn07CnRscy5BbGVydC5EZXNjcmlwdGlvbiA9IHsKICBjbG9zZV9ub3RpZnk6IDAsCiAgdW5leHBlY3RlZF9tZXNzYWdlOiAxMCwKICBiYWRfcmVjb3JkX21hYzogMjAsCiAgZGVjcnlwdGlvbl9mYWlsZWQ6IDIxLAogIHJlY29yZF9vdmVyZmxvdzogMjIsCiAgZGVjb21wcmVzc2lvbl9mYWlsdXJlOiAzMCwKICBoYW5kc2hha2VfZmFpbHVyZTogNDAsCiAgYmFkX2NlcnRpZmljYXRlOiA0MiwKICB1bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTogNDMsCiAgY2VydGlmaWNhdGVfcmV2b2tlZDogNDQsCiAgY2VydGlmaWNhdGVfZXhwaXJlZDogNDUsCiAgY2VydGlmaWNhdGVfdW5rbm93bjogNDYsCiAgaWxsZWdhbF9wYXJhbWV0ZXI6IDQ3LAogIHVua25vd25fY2E6IDQ4LAogIGFjY2Vzc19kZW5pZWQ6IDQ5LAogIGRlY29kZV9lcnJvcjogNTAsCiAgZGVjcnlwdF9lcnJvcjogNTEsCiAgZXhwb3J0X3Jlc3RyaWN0aW9uOiA2MCwKICBwcm90b2NvbF92ZXJzaW9uOiA3MCwKICBpbnN1ZmZpY2llbnRfc2VjdXJpdHk6IDcxLAogIGludGVybmFsX2Vycm9yOiA4MCwKICB1c2VyX2NhbmNlbGVkOiA5MCwKICBub19yZW5lZ290aWF0aW9uOiAxMDAKfTsKCi8qKgogKiBUTFMgSGVhcnRiZWF0IE1lc3NhZ2UgdHlwZXMuCiAqIGVudW0gewogKiAgIGhlYXJ0YmVhdF9yZXF1ZXN0KDEpLAogKiAgIGhlYXJ0YmVhdF9yZXNwb25zZSgyKSwKICogICAoMjU1KQogKiB9IEhlYXJ0YmVhdE1lc3NhZ2VUeXBlOwogKi8KdGxzLkhlYXJ0YmVhdE1lc3NhZ2VUeXBlID0gewogIGhlYXJ0YmVhdF9yZXF1ZXN0OiAxLAogIGhlYXJ0YmVhdF9yZXNwb25zZTogMgp9OwoKLyoqCiAqIFN1cHBvcnRlZCBjaXBoZXIgc3VpdGVzLgogKi8KdGxzLkNpcGhlclN1aXRlcyA9IHt9OwoKLyoqCiAqIEdldHMgYSBzdXBwb3J0ZWQgY2lwaGVyIHN1aXRlIGZyb20gaXRzIDIgYnl0ZSBJRC4KICoKICogQHBhcmFtIHR3b0J5dGVzIHR3byBieXRlcyBpbiBhIHN0cmluZy4KICoKICogQHJldHVybiB0aGUgbWF0Y2hpbmcgc3VwcG9ydGVkIGNpcGhlciBzdWl0ZSBvciBudWxsLgogKi8KdGxzLmdldENpcGhlclN1aXRlID0gZnVuY3Rpb24odHdvQnl0ZXMpIHsKICB2YXIgcnZhbCA9IG51bGw7CiAgZm9yKHZhciBrZXkgaW4gdGxzLkNpcGhlclN1aXRlcykgewogICAgdmFyIGNzID0gdGxzLkNpcGhlclN1aXRlc1trZXldOwogICAgaWYoY3MuaWRbMF0gPT09IHR3b0J5dGVzLmNoYXJDb2RlQXQoMCkgJiYKICAgICAgY3MuaWRbMV0gPT09IHR3b0J5dGVzLmNoYXJDb2RlQXQoMSkpIHsKICAgICAgcnZhbCA9IGNzOwogICAgICBicmVhazsKICAgIH0KICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYW4gdW5leHBlY3RlZCByZWNvcmQgaXMgZW5jb3VudGVyZWQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqLwp0bHMuaGFuZGxlVW5leHBlY3RlZCA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIC8vIGlmIGNvbm5lY3Rpb24gaXMgY2xpZW50IGFuZCBjbG9zZWQsIGlnbm9yZSB1bmV4cGVjdGVkIG1lc3NhZ2VzCiAgdmFyIGlnbm9yZSA9ICghYy5vcGVuICYmIGMuZW50aXR5ID09PSB0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnQpOwogIGlmKCFpZ25vcmUpIHsKICAgIGMuZXJyb3IoYywgewogICAgICBtZXNzYWdlOiAnVW5leHBlY3RlZCBtZXNzYWdlLiBSZWNlaXZlZCBUTFMgcmVjb3JkIG91dCBvZiBvcmRlci4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi51bmV4cGVjdGVkX21lc3NhZ2UKICAgICAgfQogICAgfSk7CiAgfQp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgY2xpZW50IHJlY2VpdmVzIGEgSGVsbG9SZXF1ZXN0IHJlY29yZC4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVIZWxsb1JlcXVlc3QgPSBmdW5jdGlvbihjLCByZWNvcmQsIGxlbmd0aCkgewogIC8vIGlnbm9yZSByZW5lZ290aWF0aW9uIHJlcXVlc3RzIGZyb20gdGhlIHNlcnZlciBkdXJpbmcgYSBoYW5kc2hha2UsIGJ1dAogIC8vIGlmIGhhbmRzaGFraW5nLCBzZW5kIGEgd2FybmluZyBhbGVydCB0aGF0IHJlbmVnb3RhdGlvbiBpcyBkZW5pZWQKICBpZighYy5oYW5kc2hha2luZyAmJiBjLmhhbmRzaGFrZXMgPiAwKSB7CiAgICAvLyBzZW5kIGFsZXJ0IHdhcm5pbmcKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlQWxlcnQoYywgewogICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC53YXJuaW5nLAogICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5ub19yZW5lZ290aWF0aW9uCiAgICB9KSk7CiAgICB0bHMuZmx1c2goYyk7CiAgfQoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIFBhcnNlcyBhIGhlbGxvIG1lc3NhZ2UgZnJvbSBhIENsaWVudEhlbGxvIG9yIFNlcnZlckhlbGxvIHJlY29yZC4KICoKICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkIHRvIHBhcnNlLgogKgogKiBAcmV0dXJuIHRoZSBwYXJzZWQgbWVzc2FnZS4KICovCnRscy5wYXJzZUhlbGxvTWVzc2FnZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgdmFyIG1zZyA9IG51bGw7CgogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CgogIC8vIG1pbmltdW0gb2YgMzggYnl0ZXMgaW4gbWVzc2FnZQogIGlmKGxlbmd0aCA8IDM4KSB7CiAgICBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogY2xpZW50ID8KICAgICAgICAnSW52YWxpZCBTZXJ2ZXJIZWxsbyBtZXNzYWdlLiBNZXNzYWdlIHRvbyBzaG9ydC4nIDoKICAgICAgICAnSW52YWxpZCBDbGllbnRIZWxsbyBtZXNzYWdlLiBNZXNzYWdlIHRvbyBzaG9ydC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcgogICAgICB9CiAgICB9KTsKICB9IGVsc2UgewogICAgLy8gdXNlICdyZW1haW5pbmcnIHRvIGNhbGN1bGF0ZSAjIG9mIHJlbWFpbmluZyBieXRlcyBpbiB0aGUgbWVzc2FnZQogICAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgICB2YXIgcmVtYWluaW5nID0gYi5sZW5ndGgoKTsKICAgIG1zZyA9IHsKICAgICAgdmVyc2lvbjogewogICAgICAgIG1ham9yOiBiLmdldEJ5dGUoKSwKICAgICAgICBtaW5vcjogYi5nZXRCeXRlKCkKICAgICAgfSwKICAgICAgcmFuZG9tOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihiLmdldEJ5dGVzKDMyKSksCiAgICAgIHNlc3Npb25faWQ6IHJlYWRWZWN0b3IoYiwgMSksCiAgICAgIGV4dGVuc2lvbnM6IFtdCiAgICB9OwogICAgaWYoY2xpZW50KSB7CiAgICAgIG1zZy5jaXBoZXJfc3VpdGUgPSBiLmdldEJ5dGVzKDIpOwogICAgICBtc2cuY29tcHJlc3Npb25fbWV0aG9kID0gYi5nZXRCeXRlKCk7CiAgICB9IGVsc2UgewogICAgICBtc2cuY2lwaGVyX3N1aXRlcyA9IHJlYWRWZWN0b3IoYiwgMik7CiAgICAgIG1zZy5jb21wcmVzc2lvbl9tZXRob2RzID0gcmVhZFZlY3RvcihiLCAxKTsKICAgIH0KCiAgICAvLyByZWFkIGV4dGVuc2lvbnMgaWYgdGhlcmUgYXJlIGFueSBieXRlcyBsZWZ0IGluIHRoZSBtZXNzYWdlCiAgICByZW1haW5pbmcgPSBsZW5ndGggLSAocmVtYWluaW5nIC0gYi5sZW5ndGgoKSk7CiAgICBpZihyZW1haW5pbmcgPiAwKSB7CiAgICAgIC8vIHBhcnNlIGV4dGVuc2lvbnMKICAgICAgdmFyIGV4dHMgPSByZWFkVmVjdG9yKGIsIDIpOwogICAgICB3aGlsZShleHRzLmxlbmd0aCgpID4gMCkgewogICAgICAgIG1zZy5leHRlbnNpb25zLnB1c2goewogICAgICAgICAgdHlwZTogW2V4dHMuZ2V0Qnl0ZSgpLCBleHRzLmdldEJ5dGUoKV0sCiAgICAgICAgICBkYXRhOiByZWFkVmVjdG9yKGV4dHMsIDIpCiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIC8vIFRPRE86IG1ha2UgZXh0ZW5zaW9uIHN1cHBvcnQgbW9kdWxhcgogICAgICBpZighY2xpZW50KSB7CiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5leHRlbnNpb25zLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICB2YXIgZXh0ID0gbXNnLmV4dGVuc2lvbnNbaV07CgogICAgICAgICAgLy8gc3VwcG9ydCBTTkkgZXh0ZW5zaW9uCiAgICAgICAgICBpZihleHQudHlwZVswXSA9PT0gMHgwMCAmJiBleHQudHlwZVsxXSA9PT0gMHgwMCkgewogICAgICAgICAgICAvLyBnZXQgc2VydmVyIG5hbWUgbGlzdAogICAgICAgICAgICB2YXIgc25sID0gcmVhZFZlY3RvcihleHQuZGF0YSwgMik7CiAgICAgICAgICAgIHdoaWxlKHNubC5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgICAgICAvLyByZWFkIHNlcnZlciBuYW1lIHR5cGUKICAgICAgICAgICAgICB2YXIgc25UeXBlID0gc25sLmdldEJ5dGUoKTsKCiAgICAgICAgICAgICAgLy8gb25seSBIb3N0TmFtZSB0eXBlICgweDAwKSBpcyBrbm93biwgYnJlYWsgb3V0IGlmCiAgICAgICAgICAgICAgLy8gYW5vdGhlciB0eXBlIGlzIGRldGVjdGVkCiAgICAgICAgICAgICAgaWYoc25UeXBlICE9PSAweDAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIC8vIGFkZCBob3N0IG5hbWUgdG8gc2VydmVyIG5hbWUgbGlzdAogICAgICAgICAgICAgIGMuc2Vzc2lvbi5leHRlbnNpb25zLnNlcnZlcl9uYW1lLnNlcnZlck5hbWVMaXN0LnB1c2goCiAgICAgICAgICAgICAgICByZWFkVmVjdG9yKHNubCwgMikuZ2V0Qnl0ZXMoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyB2ZXJzaW9uIGFscmVhZHkgc2V0LCBkbyBub3QgYWxsb3cgdmVyc2lvbiBjaGFuZ2UKICAgIGlmKGMuc2Vzc2lvbi52ZXJzaW9uKSB7CiAgICAgIGlmKG1zZy52ZXJzaW9uLm1ham9yICE9PSBjLnNlc3Npb24udmVyc2lvbi5tYWpvciB8fAogICAgICAgIG1zZy52ZXJzaW9uLm1pbm9yICE9PSBjLnNlc3Npb24udmVyc2lvbi5taW5vcikgewogICAgICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgICAgIG1lc3NhZ2U6ICdUTFMgdmVyc2lvbiBjaGFuZ2UgaXMgZGlzYWxsb3dlZCBkdXJpbmcgcmVuZWdvdGlhdGlvbi4nLAogICAgICAgICAgc2VuZDogdHJ1ZSwKICAgICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24ucHJvdG9jb2xfdmVyc2lvbgogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgLy8gZ2V0IHRoZSBjaG9zZW4gKFNlcnZlckhlbGxvKSBjaXBoZXIgc3VpdGUKICAgIGlmKGNsaWVudCkgewogICAgICAvLyBGSVhNRTogc2hvdWxkIGJlIGNoZWNraW5nIGNvbmZpZ3VyZWQgYWNjZXB0YWJsZSBjaXBoZXIgc3VpdGVzCiAgICAgIGMuc2Vzc2lvbi5jaXBoZXJTdWl0ZSA9IHRscy5nZXRDaXBoZXJTdWl0ZShtc2cuY2lwaGVyX3N1aXRlKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIGdldCBhIHN1cHBvcnRlZCBwcmVmZXJyZWQgKENsaWVudEhlbGxvKSBjaXBoZXIgc3VpdGUKICAgICAgLy8gY2hvb3NlIHRoZSBmaXJzdCBzdXBwb3J0ZWQgY2lwaGVyIHN1aXRlCiAgICAgIHZhciB0bXAgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuY2lwaGVyX3N1aXRlcy5ieXRlcygpKTsKICAgICAgd2hpbGUodG1wLmxlbmd0aCgpID4gMCkgewogICAgICAgIC8vIEZJWE1FOiBzaG91bGQgYmUgY2hlY2tpbmcgY29uZmlndXJlZCBhY2NlcHRhYmxlIHN1aXRlcwogICAgICAgIC8vIGNpcGhlciBzdWl0ZXMgdGFrZSB1cCAyIGJ5dGVzCiAgICAgICAgYy5zZXNzaW9uLmNpcGhlclN1aXRlID0gdGxzLmdldENpcGhlclN1aXRlKHRtcC5nZXRCeXRlcygyKSk7CiAgICAgICAgaWYoYy5zZXNzaW9uLmNpcGhlclN1aXRlICE9PSBudWxsKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBjaXBoZXIgc3VpdGUgbm90IHN1cHBvcnRlZAogICAgaWYoYy5zZXNzaW9uLmNpcGhlclN1aXRlID09PSBudWxsKSB7CiAgICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnTm8gY2lwaGVyIHN1aXRlcyBpbiBjb21tb24uJywKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5oYW5kc2hha2VfZmFpbHVyZQogICAgICAgIH0sCiAgICAgICAgY2lwaGVyU3VpdGU6IGZvcmdlLnV0aWwuYnl0ZXNUb0hleChtc2cuY2lwaGVyX3N1aXRlKQogICAgICB9KTsKICAgIH0KCiAgICAvLyBUT0RPOiBoYW5kbGUgY29tcHJlc3Npb24gbWV0aG9kcwogICAgaWYoY2xpZW50KSB7CiAgICAgIGMuc2Vzc2lvbi5jb21wcmVzc2lvbk1ldGhvZCA9IG1zZy5jb21wcmVzc2lvbl9tZXRob2Q7CiAgICB9IGVsc2UgewogICAgICAvLyBubyBjb21wcmVzc2lvbgogICAgICBjLnNlc3Npb24uY29tcHJlc3Npb25NZXRob2QgPSB0bHMuQ29tcHJlc3Npb25NZXRob2Qubm9uZTsKICAgIH0KICB9CgogIHJldHVybiBtc2c7Cn07CgovKioKICogQ3JlYXRlcyBzZWN1cml0eSBwYXJhbWV0ZXJzIGZvciB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBiYXNlZCBvbiB0aGUgZ2l2ZW4KICogaGVsbG8gbWVzc2FnZS4KICoKICogQHBhcmFtIGMgdGhlIFRMUyBjb25uZWN0aW9uLgogKiBAcGFyYW0gbXNnIHRoZSBoZWxsbyBtZXNzYWdlLgogKi8KdGxzLmNyZWF0ZVNlY3VyaXR5UGFyYW1ldGVycyA9IGZ1bmN0aW9uKGMsIG1zZykgewogIC8qIE5vdGU6IHNlY3VyaXR5IHBhcmFtcyBhcmUgZnJvbSBUTFMgMS4yLCBzb21lIHZhbHVlcyBsaWtlIHByZl9hbGdvcml0aG0KICBhcmUgaWdub3JlZCBmb3IgVExTIDEuMC8xLjEgYW5kIHRoZSBidWlsdGluIGFzIHNwZWNpZmllZCBpbiB0aGUgc3BlYyBpcwogIHVzZWQuICovCgogIC8vIFRPRE86IGhhbmRsZSBvdGhlciBvcHRpb25zIGZyb20gc2VydmVyIHdoZW4gbW9yZSBzdXBwb3J0ZWQKCiAgLy8gZ2V0IGNsaWVudCBhbmQgc2VydmVyIHJhbmRvbXMKICB2YXIgY2xpZW50ID0gKGMuZW50aXR5ID09PSB0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnQpOwogIHZhciBtc2dSYW5kb20gPSBtc2cucmFuZG9tLmJ5dGVzKCk7CiAgdmFyIGNSYW5kb20gPSBjbGllbnQgPyBjLnNlc3Npb24uc3AuY2xpZW50X3JhbmRvbSA6IG1zZ1JhbmRvbTsKICB2YXIgc1JhbmRvbSA9IGNsaWVudCA/IG1zZ1JhbmRvbSA6IHRscy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpOwoKICAvLyBjcmVhdGUgbmV3IHNlY3VyaXR5IHBhcmFtZXRlcnMKICBjLnNlc3Npb24uc3AgPSB7CiAgICBlbnRpdHk6IGMuZW50aXR5LAogICAgcHJmX2FsZ29yaXRobTogdGxzLlBSRkFsZ29yaXRobS50bHNfcHJmX3NoYTI1NiwKICAgIGJ1bGtfY2lwaGVyX2FsZ29yaXRobTogbnVsbCwKICAgIGNpcGhlcl90eXBlOiBudWxsLAogICAgZW5jX2tleV9sZW5ndGg6IG51bGwsCiAgICBibG9ja19sZW5ndGg6IG51bGwsCiAgICBmaXhlZF9pdl9sZW5ndGg6IG51bGwsCiAgICByZWNvcmRfaXZfbGVuZ3RoOiBudWxsLAogICAgbWFjX2FsZ29yaXRobTogbnVsbCwKICAgIG1hY19sZW5ndGg6IG51bGwsCiAgICBtYWNfa2V5X2xlbmd0aDogbnVsbCwKICAgIGNvbXByZXNzaW9uX2FsZ29yaXRobTogYy5zZXNzaW9uLmNvbXByZXNzaW9uTWV0aG9kLAogICAgcHJlX21hc3Rlcl9zZWNyZXQ6IG51bGwsCiAgICBtYXN0ZXJfc2VjcmV0OiBudWxsLAogICAgY2xpZW50X3JhbmRvbTogY1JhbmRvbSwKICAgIHNlcnZlcl9yYW5kb206IHNSYW5kb20KICB9Owp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgY2xpZW50IHJlY2VpdmVzIGEgU2VydmVySGVsbG8gcmVjb3JkLgogKgogKiBXaGVuIGEgU2VydmVySGVsbG8gbWVzc2FnZSB3aWxsIGJlIHNlbnQ6CiAqICAgVGhlIHNlcnZlciB3aWxsIHNlbmQgdGhpcyBtZXNzYWdlIGluIHJlc3BvbnNlIHRvIGEgY2xpZW50IGhlbGxvIG1lc3NhZ2UKICogICB3aGVuIGl0IHdhcyBhYmxlIHRvIGZpbmQgYW4gYWNjZXB0YWJsZSBzZXQgb2YgYWxnb3JpdGhtcy4gSWYgaXQgY2Fubm90CiAqICAgZmluZCBzdWNoIGEgbWF0Y2gsIGl0IHdpbGwgcmVzcG9uZCB3aXRoIGEgaGFuZHNoYWtlIGZhaWx1cmUgYWxlcnQuCiAqCiAqIHVpbnQyNCBsZW5ndGg7CiAqIHN0cnVjdCB7CiAqICAgUHJvdG9jb2xWZXJzaW9uIHNlcnZlcl92ZXJzaW9uOwogKiAgIFJhbmRvbSByYW5kb207CiAqICAgU2Vzc2lvbklEIHNlc3Npb25faWQ7CiAqICAgQ2lwaGVyU3VpdGUgY2lwaGVyX3N1aXRlOwogKiAgIENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uX21ldGhvZDsKICogICBzZWxlY3QoZXh0ZW5zaW9uc19wcmVzZW50KSB7CiAqICAgICBjYXNlIGZhbHNlOgogKiAgICAgICBzdHJ1Y3Qge307CiAqICAgICBjYXNlIHRydWU6CiAqICAgICAgIEV4dGVuc2lvbiBleHRlbnNpb25zPDAuLjJeMTYtMT47CiAqICAgfTsKICogfSBTZXJ2ZXJIZWxsbzsKICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVTZXJ2ZXJIZWxsbyA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgdmFyIG1zZyA9IHRscy5wYXJzZUhlbGxvTWVzc2FnZShjLCByZWNvcmQsIGxlbmd0aCk7CiAgaWYoYy5mYWlsKSB7CiAgICByZXR1cm47CiAgfQoKICAvLyBlbnN1cmUgc2VydmVyIHZlcnNpb24gaXMgY29tcGF0aWJsZQogIGlmKG1zZy52ZXJzaW9uLm1pbm9yIDw9IGMudmVyc2lvbi5taW5vcikgewogICAgYy52ZXJzaW9uLm1pbm9yID0gbXNnLnZlcnNpb24ubWlub3I7CiAgfSBlbHNlIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0luY29tcGF0aWJsZSBUTFMgdmVyc2lvbi4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9uCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gaW5kaWNhdGUgc2Vzc2lvbiB2ZXJzaW9uIGhhcyBiZWVuIHNldAogIGMuc2Vzc2lvbi52ZXJzaW9uID0gYy52ZXJzaW9uOwoKICAvLyBnZXQgdGhlIHNlc3Npb24gSUQgZnJvbSB0aGUgbWVzc2FnZQogIHZhciBzZXNzaW9uSWQgPSBtc2cuc2Vzc2lvbl9pZC5ieXRlcygpOwoKICAvLyBpZiB0aGUgc2Vzc2lvbiBJRCBpcyBub3QgYmxhbmsgYW5kIG1hdGNoZXMgdGhlIGNhY2hlZCBvbmUsIHJlc3VtZQogIC8vIHRoZSBzZXNzaW9uCiAgaWYoc2Vzc2lvbklkLmxlbmd0aCA+IDAgJiYgc2Vzc2lvbklkID09PSBjLnNlc3Npb24uaWQpIHsKICAgIC8vIHJlc3VtaW5nIHNlc3Npb24sIGV4cGVjdCBhIENoYW5nZUNpcGhlclNwZWMgbmV4dAogICAgYy5leHBlY3QgPSBTQ0M7CiAgICBjLnNlc3Npb24ucmVzdW1pbmcgPSB0cnVlOwoKICAgIC8vIGdldCBuZXcgc2VydmVyIHJhbmRvbQogICAgYy5zZXNzaW9uLnNwLnNlcnZlcl9yYW5kb20gPSBtc2cucmFuZG9tLmJ5dGVzKCk7CiAgfSBlbHNlIHsKICAgIC8vIG5vdCByZXN1bWluZywgZXhwZWN0IGEgc2VydmVyIENlcnRpZmljYXRlIG1lc3NhZ2UgbmV4dAogICAgYy5leHBlY3QgPSBTQ0U7CiAgICBjLnNlc3Npb24ucmVzdW1pbmcgPSBmYWxzZTsKCiAgICAvLyBjcmVhdGUgbmV3IHNlY3VyaXR5IHBhcmFtZXRlcnMKICAgIHRscy5jcmVhdGVTZWN1cml0eVBhcmFtZXRlcnMoYywgbXNnKTsKICB9CgogIC8vIHNldCBuZXcgc2Vzc2lvbiBJRAogIGMuc2Vzc2lvbi5pZCA9IHNlc3Npb25JZDsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIHNlcnZlciByZWNlaXZlcyBhIENsaWVudEhlbGxvIHJlY29yZC4KICoKICogV2hlbiBhIENsaWVudEhlbGxvIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFdoZW4gYSBjbGllbnQgZmlyc3QgY29ubmVjdHMgdG8gYSBzZXJ2ZXIgaXQgaXMgcmVxdWlyZWQgdG8gc2VuZCB0aGUKICogICBjbGllbnQgaGVsbG8gYXMgaXRzIGZpcnN0IG1lc3NhZ2UuIFRoZSBjbGllbnQgY2FuIGFsc28gc2VuZCBhIGNsaWVudAogKiAgIGhlbGxvIGluIHJlc3BvbnNlIHRvIGEgaGVsbG8gcmVxdWVzdCBvciBvbiBpdHMgb3duIGluaXRpYXRpdmUgaW4gb3JkZXIKICogICB0byByZW5lZ290aWF0ZSB0aGUgc2VjdXJpdHkgcGFyYW1ldGVycyBpbiBhbiBleGlzdGluZyBjb25uZWN0aW9uLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlLgogKi8KdGxzLmhhbmRsZUNsaWVudEhlbGxvID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICB2YXIgbXNnID0gdGxzLnBhcnNlSGVsbG9NZXNzYWdlKGMsIHJlY29yZCwgbGVuZ3RoKTsKICBpZihjLmZhaWwpIHsKICAgIHJldHVybjsKICB9CgogIC8vIGdldCB0aGUgc2Vzc2lvbiBJRCBmcm9tIHRoZSBtZXNzYWdlCiAgdmFyIHNlc3Npb25JZCA9IG1zZy5zZXNzaW9uX2lkLmJ5dGVzKCk7CgogIC8vIHNlZSBpZiB0aGUgZ2l2ZW4gc2Vzc2lvbiBJRCBpcyBpbiB0aGUgY2FjaGUKICB2YXIgc2Vzc2lvbiA9IG51bGw7CiAgaWYoYy5zZXNzaW9uQ2FjaGUpIHsKICAgIHNlc3Npb24gPSBjLnNlc3Npb25DYWNoZS5nZXRTZXNzaW9uKHNlc3Npb25JZCk7CiAgICBpZihzZXNzaW9uID09PSBudWxsKSB7CiAgICAgIC8vIHNlc3Npb24gSUQgbm90IGZvdW5kCiAgICAgIHNlc3Npb25JZCA9ICcnOwogICAgfSBlbHNlIGlmKHNlc3Npb24udmVyc2lvbi5tYWpvciAhPT0gbXNnLnZlcnNpb24ubWFqb3IgfHwKICAgICAgc2Vzc2lvbi52ZXJzaW9uLm1pbm9yID4gbXNnLnZlcnNpb24ubWlub3IpIHsKICAgICAgLy8gaWYgc2Vzc2lvbiB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIGNsaWVudCB2ZXJzaW9uLCBkbyBub3QgcmVzdW1lCiAgICAgIHNlc3Npb24gPSBudWxsOwogICAgICBzZXNzaW9uSWQgPSAnJzsKICAgIH0KICB9CgogIC8vIG5vIHNlc3Npb24gZm91bmQgdG8gcmVzdW1lLCBnZW5lcmF0ZSBhIG5ldyBzZXNzaW9uIElECiAgaWYoc2Vzc2lvbklkLmxlbmd0aCA9PT0gMCkgewogICAgc2Vzc2lvbklkID0gZm9yZ2UucmFuZG9tLmdldEJ5dGVzKDMyKTsKICB9CgogIC8vIHVwZGF0ZSBzZXNzaW9uCiAgYy5zZXNzaW9uLmlkID0gc2Vzc2lvbklkOwogIGMuc2Vzc2lvbi5jbGllbnRIZWxsb1ZlcnNpb24gPSBtc2cudmVyc2lvbjsKICBjLnNlc3Npb24uc3AgPSB7fTsKICBpZihzZXNzaW9uKSB7CiAgICAvLyB1c2UgdmVyc2lvbiBhbmQgc2VjdXJpdHkgcGFyYW1ldGVycyBmcm9tIHJlc3VtZWQgc2Vzc2lvbgogICAgYy52ZXJzaW9uID0gYy5zZXNzaW9uLnZlcnNpb24gPSBzZXNzaW9uLnZlcnNpb247CiAgICBjLnNlc3Npb24uc3AgPSBzZXNzaW9uLnNwOwogIH0gZWxzZSB7CiAgICAvLyB1c2UgaGlnaGVzdCBjb21wYXRpYmxlIG1pbm9yIHZlcnNpb24KICAgIHZhciB2ZXJzaW9uOwogICAgZm9yKHZhciBpID0gMTsgaSA8IHRscy5TdXBwb3J0ZWRWZXJzaW9ucy5sZW5ndGg7ICsraSkgewogICAgICB2ZXJzaW9uID0gdGxzLlN1cHBvcnRlZFZlcnNpb25zW2ldOwogICAgICBpZih2ZXJzaW9uLm1pbm9yIDw9IG1zZy52ZXJzaW9uLm1pbm9yKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICAgIGMudmVyc2lvbiA9IHttYWpvcjogdmVyc2lvbi5tYWpvciwgbWlub3I6IHZlcnNpb24ubWlub3J9OwogICAgYy5zZXNzaW9uLnZlcnNpb24gPSBjLnZlcnNpb247CiAgfQoKICAvLyBpZiBhIHNlc3Npb24gaXMgc2V0LCByZXN1bWUgaXQKICBpZihzZXNzaW9uICE9PSBudWxsKSB7CiAgICAvLyByZXN1bWluZyBzZXNzaW9uLCBleHBlY3QgYSBDaGFuZ2VDaXBoZXJTcGVjIG5leHQKICAgIGMuZXhwZWN0ID0gQ0NDOwogICAgYy5zZXNzaW9uLnJlc3VtaW5nID0gdHJ1ZTsKCiAgICAvLyBnZXQgbmV3IGNsaWVudCByYW5kb20KICAgIGMuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tID0gbXNnLnJhbmRvbS5ieXRlcygpOwogIH0gZWxzZSB7CiAgICAvLyBub3QgcmVzdW1pbmcsIGV4cGVjdCBhIENlcnRpZmljYXRlIG9yIENsaWVudEtleUV4Y2hhbmdlCiAgICBjLmV4cGVjdCA9IChjLnZlcmlmeUNsaWVudCAhPT0gZmFsc2UpID8gQ0NFIDogQ0tFOwogICAgYy5zZXNzaW9uLnJlc3VtaW5nID0gZmFsc2U7CgogICAgLy8gY3JlYXRlIG5ldyBzZWN1cml0eSBwYXJhbWV0ZXJzCiAgICB0bHMuY3JlYXRlU2VjdXJpdHlQYXJhbWV0ZXJzKGMsIG1zZyk7CiAgfQoKICAvLyBjb25uZWN0aW9uIG5vdyBvcGVuCiAgYy5vcGVuID0gdHJ1ZTsKCiAgLy8gcXVldWUgc2VydmVyIGhlbGxvCiAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgIGRhdGE6IHRscy5jcmVhdGVTZXJ2ZXJIZWxsbyhjKQogIH0pKTsKCiAgaWYoYy5zZXNzaW9uLnJlc3VtaW5nKSB7CiAgICAvLyBxdWV1ZSBjaGFuZ2UgY2lwaGVyIHNwZWMgbWVzc2FnZQogICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuY2hhbmdlX2NpcGhlcl9zcGVjLAogICAgICBkYXRhOiB0bHMuY3JlYXRlQ2hhbmdlQ2lwaGVyU3BlYygpCiAgICB9KSk7CgogICAgLy8gY3JlYXRlIHBlbmRpbmcgc3RhdGUKICAgIGMuc3RhdGUucGVuZGluZyA9IHRscy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoYyk7CgogICAgLy8gY2hhbmdlIGN1cnJlbnQgd3JpdGUgc3RhdGUgdG8gcGVuZGluZyB3cml0ZSBzdGF0ZQogICAgYy5zdGF0ZS5jdXJyZW50LndyaXRlID0gYy5zdGF0ZS5wZW5kaW5nLndyaXRlOwoKICAgIC8vIHF1ZXVlIGZpbmlzaGVkCiAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5oYW5kc2hha2UsCiAgICAgIGRhdGE6IHRscy5jcmVhdGVGaW5pc2hlZChjKQogICAgfSkpOwogIH0gZWxzZSB7CiAgICAvLyBxdWV1ZSBzZXJ2ZXIgY2VydGlmaWNhdGUKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgZGF0YTogdGxzLmNyZWF0ZUNlcnRpZmljYXRlKGMpCiAgICB9KSk7CgogICAgaWYoIWMuZmFpbCkgewogICAgICAvLyBxdWV1ZSBzZXJ2ZXIga2V5IGV4Y2hhbmdlCiAgICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgICAgIGRhdGE6IHRscy5jcmVhdGVTZXJ2ZXJLZXlFeGNoYW5nZShjKQogICAgICB9KSk7CgogICAgICAvLyByZXF1ZXN0IGNsaWVudCBjZXJ0aWZpY2F0ZSBpZiBzZXQKICAgICAgaWYoYy52ZXJpZnlDbGllbnQgIT09IGZhbHNlKSB7CiAgICAgICAgLy8gcXVldWUgY2VydGlmaWNhdGUgcmVxdWVzdAogICAgICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5oYW5kc2hha2UsCiAgICAgICAgICBkYXRhOiB0bHMuY3JlYXRlQ2VydGlmaWNhdGVSZXF1ZXN0KGMpCiAgICAgICAgfSkpOwogICAgICB9CgogICAgICAvLyBxdWV1ZSBzZXJ2ZXIgaGVsbG8gZG9uZQogICAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgICBkYXRhOiB0bHMuY3JlYXRlU2VydmVySGVsbG9Eb25lKGMpCiAgICAgIH0pKTsKICAgIH0KICB9CgogIC8vIHNlbmQgcmVjb3JkcwogIHRscy5mbHVzaChjKTsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIENlcnRpZmljYXRlIHJlY29yZC4KICoKICogV2hlbiB0aGlzIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFRoZSBzZXJ2ZXIgbXVzdCBzZW5kIGEgY2VydGlmaWNhdGUgd2hlbmV2ZXIgdGhlIGFncmVlZC11cG9uIGtleSBleGNoYW5nZQogKiAgIG1ldGhvZCBpcyBub3QgYW4gYW5vbnltb3VzIG9uZS4gVGhpcyBtZXNzYWdlIHdpbGwgYWx3YXlzIGltbWVkaWF0ZWx5CiAqICAgZm9sbG93IHRoZSBzZXJ2ZXIgaGVsbG8gbWVzc2FnZS4KICoKICogTWVhbmluZyBvZiB0aGlzIG1lc3NhZ2U6CiAqICAgVGhlIGNlcnRpZmljYXRlIHR5cGUgbXVzdCBiZSBhcHByb3ByaWF0ZSBmb3IgdGhlIHNlbGVjdGVkIGNpcGhlciBzdWl0ZSdzCiAqICAga2V5IGV4Y2hhbmdlIGFsZ29yaXRobSwgYW5kIGlzIGdlbmVyYWxseSBhbiBYLjUwOXYzIGNlcnRpZmljYXRlLiBJdCBtdXN0CiAqICAgY29udGFpbiBhIGtleSB3aGljaCBtYXRjaGVzIHRoZSBrZXkgZXhjaGFuZ2UgbWV0aG9kLCBhcyBmb2xsb3dzLiBVbmxlc3MKICogICBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGUgc2lnbmluZyBhbGdvcml0aG0gZm9yIHRoZSBjZXJ0aWZpY2F0ZSBtdXN0IGJlCiAqICAgdGhlIHNhbWUgYXMgdGhlIGFsZ29yaXRobSBmb3IgdGhlIGNlcnRpZmljYXRlIGtleS4gVW5sZXNzIG90aGVyd2lzZQogKiAgIHNwZWNpZmllZCwgdGhlIHB1YmxpYyBrZXkgbWF5IGJlIG9mIGFueSBsZW5ndGguCiAqCiAqIG9wYXF1ZSBBU04uMUNlcnQ8MS4uMl4yNC0xPjsKICogc3RydWN0IHsKICogICBBU04uMUNlcnQgY2VydGlmaWNhdGVfbGlzdDwxLi4yXjI0LTE+OwogKiB9IENlcnRpZmljYXRlOwogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlLgogKi8KdGxzLmhhbmRsZUNlcnRpZmljYXRlID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICAvLyBtaW5pbXVtIG9mIDMgYnl0ZXMgaW4gbWVzc2FnZQogIGlmKGxlbmd0aCA8IDMpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2VydGlmaWNhdGUgbWVzc2FnZS4gTWVzc2FnZSB0b28gc2hvcnQuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXIKICAgICAgfQogICAgfSk7CiAgfQoKICB2YXIgYiA9IHJlY29yZC5mcmFnbWVudDsKICB2YXIgbXNnID0gewogICAgY2VydGlmaWNhdGVfbGlzdDogcmVhZFZlY3RvcihiLCAzKQogIH07CgogIC8qIFRoZSBzZW5kZXIncyBjZXJ0aWZpY2F0ZSB3aWxsIGJlIGZpcnN0IGluIHRoZSBsaXN0IChjaGFpbiksIGVhY2gKICAgIHN1YnNlcXVlbnQgb25lIHRoYXQgZm9sbG93cyB3aWxsIGNlcnRpZnkgdGhlIHByZXZpb3VzIG9uZSwgYnV0IHJvb3QKICAgIGNlcnRpZmljYXRlcyAoc2VsZi1zaWduZWQpIHRoYXQgc3BlY2lmeSB0aGUgY2VydGlmaWNhdGUgYXV0aG9yaXR5IG1heQogICAgYmUgb21pdHRlZCB1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsaWVudHMgbXVzdCBhbHJlYWR5IHBvc3Nlc3MgaXQuICovCiAgdmFyIGNlcnQsIGFzbjE7CiAgdmFyIGNlcnRzID0gW107CiAgdHJ5IHsKICAgIHdoaWxlKG1zZy5jZXJ0aWZpY2F0ZV9saXN0Lmxlbmd0aCgpID4gMCkgewogICAgICAvLyBlYWNoIGVudHJ5IGluIG1zZy5jZXJ0aWZpY2F0ZV9saXN0IGlzIGEgdmVjdG9yIHdpdGggMyBsZW4gYnl0ZXMKICAgICAgY2VydCA9IHJlYWRWZWN0b3IobXNnLmNlcnRpZmljYXRlX2xpc3QsIDMpOwogICAgICBhc24xID0gZm9yZ2UuYXNuMS5mcm9tRGVyKGNlcnQpOwogICAgICBjZXJ0ID0gZm9yZ2UucGtpLmNlcnRpZmljYXRlRnJvbUFzbjEoYXNuMSwgdHJ1ZSk7CiAgICAgIGNlcnRzLnB1c2goY2VydCk7CiAgICB9CiAgfSBjYXRjaChleCkgewogICAgcmV0dXJuIGMuZXJyb3IoYywgewogICAgICBtZXNzYWdlOiAnQ291bGQgbm90IHBhcnNlIGNlcnRpZmljYXRlIGxpc3QuJywKICAgICAgY2F1c2U6IGV4LAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGUKICAgICAgfQogICAgfSk7CiAgfQoKICAvLyBlbnN1cmUgYXQgbGVhc3QgMSBjZXJ0aWZpY2F0ZSB3YXMgcHJvdmlkZWQgaWYgaW4gY2xpZW50LW1vZGUKICAvLyBvciBpZiB2ZXJpZnlDbGllbnQgd2FzIHNldCB0byB0cnVlIHRvIHJlcXVpcmUgYSBjZXJ0aWZpY2F0ZQogIC8vIChhcyBvcHBvc2VkIHRvICdvcHRpb25hbCcpCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICBpZigoY2xpZW50IHx8IGMudmVyaWZ5Q2xpZW50ID09PSB0cnVlKSAmJiBjZXJ0cy5sZW5ndGggPT09IDApIHsKICAgIC8vIGVycm9yLCBubyBjZXJ0aWZpY2F0ZQogICAgYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6IGNsaWVudCA/CiAgICAgICAgJ05vIHNlcnZlciBjZXJ0aWZpY2F0ZSBwcm92aWRlZC4nIDoKICAgICAgICAnTm8gY2xpZW50IGNlcnRpZmljYXRlIHByb3ZpZGVkLicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCiAgICAgIH0KICAgIH0pOwogIH0gZWxzZSBpZihjZXJ0cy5sZW5ndGggPT09IDApIHsKICAgIC8vIG5vIGNlcnRzIHRvIHZlcmlmeQogICAgLy8gZXhwZWN0IGEgU2VydmVyS2V5RXhjaGFuZ2Ugb3IgQ2xpZW50S2V5RXhjaGFuZ2UgbWVzc2FnZSBuZXh0CiAgICBjLmV4cGVjdCA9IGNsaWVudCA/IFNLRSA6IENLRTsKICB9IGVsc2UgewogICAgLy8gc2F2ZSBjZXJ0aWZpY2F0ZSBpbiBzZXNzaW9uCiAgICBpZihjbGllbnQpIHsKICAgICAgYy5zZXNzaW9uLnNlcnZlckNlcnRpZmljYXRlID0gY2VydHNbMF07CiAgICB9IGVsc2UgewogICAgICBjLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUgPSBjZXJ0c1swXTsKICAgIH0KCiAgICBpZih0bHMudmVyaWZ5Q2VydGlmaWNhdGVDaGFpbihjLCBjZXJ0cykpIHsKICAgICAgLy8gZXhwZWN0IGEgU2VydmVyS2V5RXhjaGFuZ2Ugb3IgQ2xpZW50S2V5RXhjaGFuZ2UgbWVzc2FnZSBuZXh0CiAgICAgIGMuZXhwZWN0ID0gY2xpZW50ID8gU0tFIDogQ0tFOwogICAgfQogIH0KCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIFNlcnZlcktleUV4Y2hhbmdlIHJlY29yZC4KICoKICogV2hlbiB0aGlzIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFRoaXMgbWVzc2FnZSB3aWxsIGJlIHNlbnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZQogKiAgIG1lc3NhZ2UgKG9yIHRoZSBzZXJ2ZXIgaGVsbG8gbWVzc2FnZSwgaWYgdGhpcyBpcyBhbiBhbm9ueW1vdXMKICogICBuZWdvdGlhdGlvbikuCiAqCiAqICAgVGhlIHNlcnZlciBrZXkgZXhjaGFuZ2UgbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBzZXJ2ZXIgb25seSB3aGVuIHRoZQogKiAgIHNlcnZlciBjZXJ0aWZpY2F0ZSBtZXNzYWdlIChpZiBzZW50KSBkb2VzIG5vdCBjb250YWluIGVub3VnaCBkYXRhIHRvCiAqICAgYWxsb3cgdGhlIGNsaWVudCB0byBleGNoYW5nZSBhIHByZW1hc3RlciBzZWNyZXQuCiAqCiAqIE1lYW5pbmcgb2YgdGhpcyBtZXNzYWdlOgogKiAgIFRoaXMgbWVzc2FnZSBjb252ZXlzIGNyeXB0b2dyYXBoaWMgaW5mb3JtYXRpb24gdG8gYWxsb3cgdGhlIGNsaWVudCB0bwogKiAgIGNvbW11bmljYXRlIHRoZSBwcmVtYXN0ZXIgc2VjcmV0OiBlaXRoZXIgYW4gUlNBIHB1YmxpYyBrZXkgdG8gZW5jcnlwdAogKiAgIHRoZSBwcmVtYXN0ZXIgc2VjcmV0IHdpdGgsIG9yIGEgRGlmZmllLUhlbGxtYW4gcHVibGljIGtleSB3aXRoIHdoaWNoIHRoZQogKiAgIGNsaWVudCBjYW4gY29tcGxldGUgYSBrZXkgZXhjaGFuZ2UgKHdpdGggdGhlIHJlc3VsdCBiZWluZyB0aGUgcHJlbWFzdGVyCiAqICAgc2VjcmV0LikKICoKICogZW51bSB7CiAqICAgZGhlX2RzcywgZGhlX3JzYSwgZGhfYW5vbiwgcnNhLCBkaF9kc3MsIGRoX3JzYQogKiB9IEtleUV4Y2hhbmdlQWxnb3JpdGhtOwogKgogKiBzdHJ1Y3QgewogKiAgIG9wYXF1ZSBkaF9wPDEuLjJeMTYtMT47CiAqICAgb3BhcXVlIGRoX2c8MS4uMl4xNi0xPjsKICogICBvcGFxdWUgZGhfWXM8MS4uMl4xNi0xPjsKICogfSBTZXJ2ZXJESFBhcmFtczsKICoKICogc3RydWN0IHsKICogICBzZWxlY3QoS2V5RXhjaGFuZ2VBbGdvcml0aG0pIHsKICogICAgIGNhc2UgZGhfYW5vbjoKICogICAgICAgU2VydmVyREhQYXJhbXMgcGFyYW1zOwogKiAgICAgY2FzZSBkaGVfZHNzOgogKiAgICAgY2FzZSBkaGVfcnNhOgogKiAgICAgICBTZXJ2ZXJESFBhcmFtcyBwYXJhbXM7CiAqICAgICAgIGRpZ2l0YWxseS1zaWduZWQgc3RydWN0IHsKICogICAgICAgICBvcGFxdWUgY2xpZW50X3JhbmRvbVszMl07CiAqICAgICAgICAgb3BhcXVlIHNlcnZlcl9yYW5kb21bMzJdOwogKiAgICAgICAgIFNlcnZlckRIUGFyYW1zIHBhcmFtczsKICogICAgICAgfSBzaWduZWRfcGFyYW1zOwogKiAgICAgY2FzZSByc2E6CiAqICAgICBjYXNlIGRoX2RzczoKICogICAgIGNhc2UgZGhfcnNhOgogKiAgICAgICBzdHJ1Y3Qge307CiAqICAgfTsKICogfSBTZXJ2ZXJLZXlFeGNoYW5nZTsKICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVTZXJ2ZXJLZXlFeGNoYW5nZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgLy8gdGhpcyBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIFJTQSwgbm8gRGlmZmllLUhlbGxtYW4gc3VwcG9ydAogIC8vIHNvIGFueSBsZW5ndGggPiAwIGlzIGludmFsaWQKICBpZihsZW5ndGggPiAwKSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIGtleSBwYXJhbWV0ZXJzLiBPbmx5IFJTQSBpcyBzdXBwb3J0ZWQuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24udW5zdXBwb3J0ZWRfY2VydGlmaWNhdGUKICAgICAgfQogICAgfSk7CiAgfQoKICAvLyBleHBlY3QgYW4gb3B0aW9uYWwgQ2VydGlmaWNhdGVSZXF1ZXN0IG1lc3NhZ2UgbmV4dAogIGMuZXhwZWN0ID0gU0NSOwoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgY2xpZW50IHJlY2VpdmVzIGEgQ2xpZW50S2V5RXhjaGFuZ2UgcmVjb3JkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKiBAcGFyYW0gbGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlLgogKi8KdGxzLmhhbmRsZUNsaWVudEtleUV4Y2hhbmdlID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICAvLyB0aGlzIGltcGxlbWVudGF0aW9uIG9ubHkgc3VwcG9ydHMgUlNBLCBubyBEaWZmaWUtSGVsbG1hbiBzdXBwb3J0CiAgLy8gc28gYW55IGxlbmd0aCA8IDQ4IGlzIGludmFsaWQKICBpZihsZW5ndGggPCA0OCkgewogICAgcmV0dXJuIGMuZXJyb3IoYywgewogICAgICBtZXNzYWdlOiAnSW52YWxpZCBrZXkgcGFyYW1ldGVycy4gT25seSBSU0EgaXMgc3VwcG9ydGVkLicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVuc3VwcG9ydGVkX2NlcnRpZmljYXRlCiAgICAgIH0KICAgIH0pOwogIH0KCiAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgdmFyIG1zZyA9IHsKICAgIGVuY19wcmVfbWFzdGVyX3NlY3JldDogcmVhZFZlY3RvcihiLCAyKS5nZXRCeXRlcygpCiAgfTsKCiAgLy8gZG8gcnNhIGRlY3J5cHRpb24KICB2YXIgcHJpdmF0ZUtleSA9IG51bGw7CiAgaWYoYy5nZXRQcml2YXRlS2V5KSB7CiAgICB0cnkgewogICAgICBwcml2YXRlS2V5ID0gYy5nZXRQcml2YXRlS2V5KGMsIGMuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZSk7CiAgICAgIHByaXZhdGVLZXkgPSBmb3JnZS5wa2kucHJpdmF0ZUtleUZyb21QZW0ocHJpdmF0ZUtleSk7CiAgICB9IGNhdGNoKGV4KSB7CiAgICAgIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZ2V0IHByaXZhdGUga2V5LicsCiAgICAgICAgY2F1c2U6IGV4LAogICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICB9CgogIGlmKHByaXZhdGVLZXkgPT09IG51bGwpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ05vIHByaXZhdGUga2V5IHNldC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5pbnRlcm5hbF9lcnJvcgogICAgICB9CiAgICB9KTsKICB9CgogIHRyeSB7CiAgICAvLyBkZWNyeXB0IDQ4LWJ5dGUgcHJlLW1hc3RlciBzZWNyZXQKICAgIHZhciBzcCA9IGMuc2Vzc2lvbi5zcDsKICAgIHNwLnByZV9tYXN0ZXJfc2VjcmV0ID0gcHJpdmF0ZUtleS5kZWNyeXB0KG1zZy5lbmNfcHJlX21hc3Rlcl9zZWNyZXQpOwoKICAgIC8vIGVuc3VyZSBjbGllbnQgaGVsbG8gdmVyc2lvbiBtYXRjaGVzIGZpcnN0IDIgYnl0ZXMKICAgIHZhciB2ZXJzaW9uID0gYy5zZXNzaW9uLmNsaWVudEhlbGxvVmVyc2lvbjsKICAgIGlmKHZlcnNpb24ubWFqb3IgIT09IHNwLnByZV9tYXN0ZXJfc2VjcmV0LmNoYXJDb2RlQXQoMCkgfHwKICAgICAgdmVyc2lvbi5taW5vciAhPT0gc3AucHJlX21hc3Rlcl9zZWNyZXQuY2hhckNvZGVBdCgxKSkgewogICAgICAvLyBlcnJvciwgZG8gbm90IHNlbmQgYWxlcnQgKHNlZSBCTEVJIGF0dGFjayBiZWxvdykKICAgICAgdGhyb3cgbmV3IEVycm9yKCdUTFMgdmVyc2lvbiByb2xsYmFjayBhdHRhY2sgZGV0ZWN0ZWQuJyk7CiAgICB9CiAgfSBjYXRjaChleCkgewogICAgLyogTm90ZTogRGFuaWVsIEJsZWljaGVuYmFjaGVyIFtCTEVJXSBjYW4gYmUgdXNlZCB0byBhdHRhY2sgYQogICAgICBUTFMgc2VydmVyIHdoaWNoIGlzIHVzaW5nIFBLQ1MjMSBlbmNvZGVkIFJTQSwgc28gaW5zdGVhZCBvZgogICAgICBmYWlsaW5nIGhlcmUsIHdlIGdlbmVyYXRlIDQ4IHJhbmRvbSBieXRlcyBhbmQgdXNlIHRoYXQgYXMKICAgICAgdGhlIHByZS1tYXN0ZXIgc2VjcmV0LiAqLwogICAgc3AucHJlX21hc3Rlcl9zZWNyZXQgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMoNDgpOwogIH0KCiAgLy8gZXhwZWN0IGEgQ2VydGlmaWNhdGVWZXJpZnkgbWVzc2FnZSBpZiBhIENlcnRpZmljYXRlIHdhcyByZWNlaXZlZCB0aGF0CiAgLy8gZG9lcyBub3QgaGF2ZSBmaXhlZCBEaWZmaWUtSGVsbG1hbiBwYXJhbXMsIG90aGVyd2lzZSBleHBlY3QKICAvLyBDaGFuZ2VDaXBoZXJTcGVjCiAgYy5leHBlY3QgPSBDQ0M7CiAgaWYoYy5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlICE9PSBudWxsKSB7CiAgICAvLyBvbmx5IFJTQSBzdXBwb3J0LCBzbyBleHBlY3QgQ2VydGlmaWNhdGVWZXJpZnkKICAgIC8vIFRPRE86IHN1cHBvcnQgRGlmZmllLUhlbGxtYW4KICAgIGMuZXhwZWN0ID0gQ0NWOwogIH0KCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIENlcnRpZmljYXRlUmVxdWVzdCByZWNvcmQuCiAqCiAqIFdoZW4gdGhpcyBtZXNzYWdlIHdpbGwgYmUgc2VudDoKICogICBBIG5vbi1hbm9ueW1vdXMgc2VydmVyIGNhbiBvcHRpb25hbGx5IHJlcXVlc3QgYSBjZXJ0aWZpY2F0ZSBmcm9tIHRoZQogKiAgIGNsaWVudCwgaWYgYXBwcm9wcmlhdGUgZm9yIHRoZSBzZWxlY3RlZCBjaXBoZXIgc3VpdGUuIFRoaXMgbWVzc2FnZSwgaWYKICogICBzZW50LCB3aWxsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgU2VydmVyIEtleSBFeGNoYW5nZSBtZXNzYWdlIChpZiBpdCBpcwogKiAgIHNlbnQ7IG90aGVyd2lzZSwgdGhlIFNlcnZlciBDZXJ0aWZpY2F0ZSBtZXNzYWdlKS4KICoKICogZW51bSB7CiAqICAgcnNhX3NpZ24oMSksIGRzc19zaWduKDIpLCByc2FfZml4ZWRfZGgoMyksIGRzc19maXhlZF9kaCg0KSwKICogICByc2FfZXBoZW1lcmFsX2RoX1JFU0VSVkVEKDUpLCBkc3NfZXBoZW1lcmFsX2RoX1JFU0VSVkVEKDYpLAogKiAgIGZvcnRlenphX2Rtc19SRVNFUlZFRCgyMCksICgyNTUpCiAqIH0gQ2xpZW50Q2VydGlmaWNhdGVUeXBlOwogKgogKiBvcGFxdWUgRGlzdGluZ3Vpc2hlZE5hbWU8MS4uMl4xNi0xPjsKICoKICogc3RydWN0IHsKICogICBDbGllbnRDZXJ0aWZpY2F0ZVR5cGUgY2VydGlmaWNhdGVfdHlwZXM8MS4uMl44LTE+OwogKiAgIFNpZ25hdHVyZUFuZEhhc2hBbGdvcml0aG0gc3VwcG9ydGVkX3NpZ25hdHVyZV9hbGdvcml0aG1zPDJeMTYtMT47CiAqICAgRGlzdGluZ3Vpc2hlZE5hbWUgY2VydGlmaWNhdGVfYXV0aG9yaXRpZXM8MC4uMl4xNi0xPjsKICogfSBDZXJ0aWZpY2F0ZVJlcXVlc3Q7CiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UuCiAqLwp0bHMuaGFuZGxlQ2VydGlmaWNhdGVSZXF1ZXN0ID0gZnVuY3Rpb24oYywgcmVjb3JkLCBsZW5ndGgpIHsKICAvLyBtaW5pbXVtIG9mIDMgYnl0ZXMgaW4gbWVzc2FnZQogIGlmKGxlbmd0aCA8IDMpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2VydGlmaWNhdGVSZXF1ZXN0LiBNZXNzYWdlIHRvbyBzaG9ydC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5pbGxlZ2FsX3BhcmFtZXRlcgogICAgICB9CiAgICB9KTsKICB9CgogIC8vIFRPRE86IFRMUyAxLjIrIGhhcyBkaWZmZXJlbnQgZm9ybWF0IGluY2x1ZGluZwogIC8vIFNpZ25hdHVyZUFuZEhhc2hBbGdvcml0aG0gYWZ0ZXIgY2VydCB0eXBlcwogIHZhciBiID0gcmVjb3JkLmZyYWdtZW50OwogIHZhciBtc2cgPSB7CiAgICBjZXJ0aWZpY2F0ZV90eXBlczogcmVhZFZlY3RvcihiLCAxKSwKICAgIGNlcnRpZmljYXRlX2F1dGhvcml0aWVzOiByZWFkVmVjdG9yKGIsIDIpCiAgfTsKCiAgLy8gc2F2ZSBjZXJ0aWZpY2F0ZSByZXF1ZXN0IGluIHNlc3Npb24KICBjLnNlc3Npb24uY2VydGlmaWNhdGVSZXF1ZXN0ID0gbXNnOwoKICAvLyBleHBlY3QgYSBTZXJ2ZXJIZWxsb0RvbmUgbWVzc2FnZSBuZXh0CiAgYy5leHBlY3QgPSBTSEQ7CgogIC8vIGNvbnRpbnVlCiAgYy5wcm9jZXNzKCk7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYSBzZXJ2ZXIgcmVjZWl2ZXMgYSBDZXJ0aWZpY2F0ZVZlcmlmeSByZWNvcmQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqIEBwYXJhbSBsZW5ndGggdGhlIGxlbmd0aCBvZiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UuCiAqLwp0bHMuaGFuZGxlQ2VydGlmaWNhdGVWZXJpZnkgPSBmdW5jdGlvbihjLCByZWNvcmQsIGxlbmd0aCkgewogIGlmKGxlbmd0aCA8IDIpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2VydGlmaWNhdGVWZXJpZnkuIE1lc3NhZ2UgdG9vIHNob3J0LicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gcmV3aW5kIHRvIGdldCBmdWxsIGJ5dGVzIGZvciBtZXNzYWdlIHNvIGl0IGNhbiBiZSBtYW51YWxseQogIC8vIGRpZ2VzdGVkIGJlbG93IChzcGVjaWFsIGNhc2UgZm9yIENlcnRpZmljYXRlVmVyaWZ5IG1lc3NhZ2VzIGJlY2F1c2UKICAvLyB0aGV5IG11c3QgYmUgZGlnZXN0ZWQgKmFmdGVyKiBoYW5kbGluZyBhcyBvcHBvc2VkIHRvIGFsbCBvdGhlcnMpCiAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgYi5yZWFkIC09IDQ7CiAgdmFyIG1zZ0J5dGVzID0gYi5ieXRlcygpOwogIGIucmVhZCArPSA0OwoKICB2YXIgbXNnID0gewogICAgc2lnbmF0dXJlOiByZWFkVmVjdG9yKGIsIDIpLmdldEJ5dGVzKCkKICB9OwoKICAvLyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgRFNBCgogIC8vIGdlbmVyYXRlIGRhdGEgdG8gdmVyaWZ5CiAgdmFyIHZlcmlmeSA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgdmVyaWZ5LnB1dEJ1ZmZlcihjLnNlc3Npb24ubWQ1LmRpZ2VzdCgpKTsKICB2ZXJpZnkucHV0QnVmZmVyKGMuc2Vzc2lvbi5zaGExLmRpZ2VzdCgpKTsKICB2ZXJpZnkgPSB2ZXJpZnkuZ2V0Qnl0ZXMoKTsKCiAgdHJ5IHsKICAgIHZhciBjZXJ0ID0gYy5zZXNzaW9uLmNsaWVudENlcnRpZmljYXRlOwogICAgLypiID0gZm9yZ2UucGtpLnJzYS5kZWNyeXB0KAogICAgICBtc2cuc2lnbmF0dXJlLCBjZXJ0LnB1YmxpY0tleSwgdHJ1ZSwgdmVyaWZ5Lmxlbmd0aCk7CiAgICBpZihiICE9PSB2ZXJpZnkpIHsqLwogICAgaWYoIWNlcnQucHVibGljS2V5LnZlcmlmeSh2ZXJpZnksIG1zZy5zaWduYXR1cmUsICdOT05FJykpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdDZXJ0aWZpY2F0ZVZlcmlmeSBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2guJyk7CiAgICB9CgogICAgLy8gZGlnZXN0IG1lc3NhZ2Ugbm93IHRoYXQgaXQgaGFzIGJlZW4gaGFuZGxlZAogICAgYy5zZXNzaW9uLm1kNS51cGRhdGUobXNnQnl0ZXMpOwogICAgYy5zZXNzaW9uLnNoYTEudXBkYXRlKG1zZ0J5dGVzKTsKICB9IGNhdGNoKGV4KSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdCYWQgc2lnbmF0dXJlIGluIENlcnRpZmljYXRlVmVyaWZ5LicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmhhbmRzaGFrZV9mYWlsdXJlCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gZXhwZWN0IENoYW5nZUNpcGhlclNwZWMKICBjLmV4cGVjdCA9IENDQzsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIGNsaWVudCByZWNlaXZlcyBhIFNlcnZlckhlbGxvRG9uZSByZWNvcmQuCiAqCiAqIFdoZW4gdGhpcyBtZXNzYWdlIHdpbGwgYmUgc2VudDoKICogICBUaGUgc2VydmVyIGhlbGxvIGRvbmUgbWVzc2FnZSBpcyBzZW50IGJ5IHRoZSBzZXJ2ZXIgdG8gaW5kaWNhdGUgdGhlIGVuZAogKiAgIG9mIHRoZSBzZXJ2ZXIgaGVsbG8gYW5kIGFzc29jaWF0ZWQgbWVzc2FnZXMuIEFmdGVyIHNlbmRpbmcgdGhpcyBtZXNzYWdlCiAqICAgdGhlIHNlcnZlciB3aWxsIHdhaXQgZm9yIGEgY2xpZW50IHJlc3BvbnNlLgogKgogKiBNZWFuaW5nIG9mIHRoaXMgbWVzc2FnZToKICogICBUaGlzIG1lc3NhZ2UgbWVhbnMgdGhhdCB0aGUgc2VydmVyIGlzIGRvbmUgc2VuZGluZyBtZXNzYWdlcyB0byBzdXBwb3J0CiAqICAgdGhlIGtleSBleGNoYW5nZSwgYW5kIHRoZSBjbGllbnQgY2FuIHByb2NlZWQgd2l0aCBpdHMgcGhhc2Ugb2YgdGhlIGtleQogKiAgIGV4Y2hhbmdlLgogKgogKiAgIFVwb24gcmVjZWlwdCBvZiB0aGUgc2VydmVyIGhlbGxvIGRvbmUgbWVzc2FnZSB0aGUgY2xpZW50IHNob3VsZCB2ZXJpZnkKICogICB0aGF0IHRoZSBzZXJ2ZXIgcHJvdmlkZWQgYSB2YWxpZCBjZXJ0aWZpY2F0ZSBpZiByZXF1aXJlZCBhbmQgY2hlY2sgdGhhdAogKiAgIHRoZSBzZXJ2ZXIgaGVsbG8gcGFyYW1ldGVycyBhcmUgYWNjZXB0YWJsZS4KICoKICogc3RydWN0IHt9IFNlcnZlckhlbGxvRG9uZTsKICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVTZXJ2ZXJIZWxsb0RvbmUgPSBmdW5jdGlvbihjLCByZWNvcmQsIGxlbmd0aCkgewogIC8vIGxlbiBtdXN0IGJlIDAgYnl0ZXMKICBpZihsZW5ndGggPiAwKSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIFNlcnZlckhlbGxvRG9uZSBtZXNzYWdlLiBJbnZhbGlkIGxlbmd0aC4nLAogICAgICBzZW5kOiB0cnVlLAogICAgICBhbGVydDogewogICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5yZWNvcmRfb3ZlcmZsb3cKICAgICAgfQogICAgfSk7CiAgfQoKICBpZihjLnNlcnZlckNlcnRpZmljYXRlID09PSBudWxsKSB7CiAgICAvLyBubyBzZXJ2ZXIgY2VydGlmaWNhdGUgd2FzIHByb3ZpZGVkCiAgICB2YXIgZXJyb3IgPSB7CiAgICAgIG1lc3NhZ2U6ICdObyBzZXJ2ZXIgY2VydGlmaWNhdGUgcHJvdmlkZWQuIE5vdCBlbm91Z2ggc2VjdXJpdHkuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uaW5zdWZmaWNpZW50X3NlY3VyaXR5CiAgICAgIH0KICAgIH07CgogICAgLy8gY2FsbCBhcHBsaWNhdGlvbiBjYWxsYmFjawogICAgdmFyIGRlcHRoID0gMDsKICAgIHZhciByZXQgPSBjLnZlcmlmeShjLCBlcnJvci5hbGVydC5kZXNjcmlwdGlvbiwgZGVwdGgsIFtdKTsKICAgIGlmKHJldCAhPT0gdHJ1ZSkgewogICAgICAvLyBjaGVjayBmb3IgY3VzdG9tIGFsZXJ0IGluZm8KICAgICAgaWYocmV0IHx8IHJldCA9PT0gMCkgewogICAgICAgIC8vIHNldCBjdXN0b20gbWVzc2FnZSBhbmQgYWxlcnQgZGVzY3JpcHRpb24KICAgICAgICBpZih0eXBlb2YgcmV0ID09PSAnb2JqZWN0JyAmJiAhZm9yZ2UudXRpbC5pc0FycmF5KHJldCkpIHsKICAgICAgICAgIGlmKHJldC5tZXNzYWdlKSB7CiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UgPSByZXQubWVzc2FnZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmKHJldC5hbGVydCkgewogICAgICAgICAgICBlcnJvci5hbGVydC5kZXNjcmlwdGlvbiA9IHJldC5hbGVydDsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYodHlwZW9mIHJldCA9PT0gJ251bWJlcicpIHsKICAgICAgICAgIC8vIHNldCBjdXN0b20gYWxlcnQgZGVzY3JpcHRpb24KICAgICAgICAgIGVycm9yLmFsZXJ0LmRlc2NyaXB0aW9uID0gcmV0OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gc2VuZCBlcnJvcgogICAgICByZXR1cm4gYy5lcnJvcihjLCBlcnJvcik7CiAgICB9CiAgfQoKICAvLyBjcmVhdGUgY2xpZW50IGNlcnRpZmljYXRlIG1lc3NhZ2UgaWYgcmVxdWVzdGVkCiAgaWYoYy5zZXNzaW9uLmNlcnRpZmljYXRlUmVxdWVzdCAhPT0gbnVsbCkgewogICAgcmVjb3JkID0gdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5oYW5kc2hha2UsCiAgICAgIGRhdGE6IHRscy5jcmVhdGVDZXJ0aWZpY2F0ZShjKQogICAgfSk7CiAgICB0bHMucXVldWUoYywgcmVjb3JkKTsKICB9CgogIC8vIGNyZWF0ZSBjbGllbnQga2V5IGV4Y2hhbmdlIG1lc3NhZ2UKICByZWNvcmQgPSB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgIGRhdGE6IHRscy5jcmVhdGVDbGllbnRLZXlFeGNoYW5nZShjKQogIH0pOwogIHRscy5xdWV1ZShjLCByZWNvcmQpOwoKICAvLyBleHBlY3Qgbm8gbWVzc2FnZXMgdW50aWwgdGhlIGZvbGxvd2luZyBjYWxsYmFjayBoYXMgYmVlbiBjYWxsZWQKICBjLmV4cGVjdCA9IFNFUjsKCiAgLy8gY3JlYXRlIGNhbGxiYWNrIHRvIGhhbmRsZSBjbGllbnQgc2lnbmF0dXJlIChmb3IgY2xpZW50LWNlcnRzKQogIHZhciBjYWxsYmFjayA9IGZ1bmN0aW9uKGMsIHNpZ25hdHVyZSkgewogICAgaWYoYy5zZXNzaW9uLmNlcnRpZmljYXRlUmVxdWVzdCAhPT0gbnVsbCAmJgogICAgICBjLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUgIT09IG51bGwpIHsKICAgICAgLy8gY3JlYXRlIGNlcnRpZmljYXRlIHZlcmlmeSBtZXNzYWdlCiAgICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgICAgIGRhdGE6IHRscy5jcmVhdGVDZXJ0aWZpY2F0ZVZlcmlmeShjLCBzaWduYXR1cmUpCiAgICAgIH0pKTsKICAgIH0KCiAgICAvLyBjcmVhdGUgY2hhbmdlIGNpcGhlciBzcGVjIG1lc3NhZ2UKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYywKICAgICAgZGF0YTogdGxzLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMoKQogICAgfSkpOwoKICAgIC8vIGNyZWF0ZSBwZW5kaW5nIHN0YXRlCiAgICBjLnN0YXRlLnBlbmRpbmcgPSB0bHMuY3JlYXRlQ29ubmVjdGlvblN0YXRlKGMpOwoKICAgIC8vIGNoYW5nZSBjdXJyZW50IHdyaXRlIHN0YXRlIHRvIHBlbmRpbmcgd3JpdGUgc3RhdGUKICAgIGMuc3RhdGUuY3VycmVudC53cml0ZSA9IGMuc3RhdGUucGVuZGluZy53cml0ZTsKCiAgICAvLyBjcmVhdGUgZmluaXNoZWQgbWVzc2FnZQogICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlLAogICAgICBkYXRhOiB0bHMuY3JlYXRlRmluaXNoZWQoYykKICAgIH0pKTsKCiAgICAvLyBleHBlY3QgYSBzZXJ2ZXIgQ2hhbmdlQ2lwaGVyU3BlYyBtZXNzYWdlIG5leHQKICAgIGMuZXhwZWN0ID0gU0NDOwoKICAgIC8vIHNlbmQgcmVjb3JkcwogICAgdGxzLmZsdXNoKGMpOwoKICAgIC8vIGNvbnRpbnVlCiAgICBjLnByb2Nlc3MoKTsKICB9OwoKICAvLyBpZiB0aGVyZSBpcyBubyBjZXJ0aWZpY2F0ZSByZXF1ZXN0IG9yIG5vIGNsaWVudCBjZXJ0aWZpY2F0ZSwgZG8KICAvLyBjYWxsYmFjayBpbW1lZGlhdGVseQogIGlmKGMuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3QgPT09IG51bGwgfHwKICAgIGMuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZSA9PT0gbnVsbCkgewogICAgcmV0dXJuIGNhbGxiYWNrKGMsIG51bGwpOwogIH0KCiAgLy8gb3RoZXJ3aXNlIGdldCB0aGUgY2xpZW50IHNpZ25hdHVyZQogIHRscy5nZXRDbGllbnRTaWduYXR1cmUoYywgY2FsbGJhY2spOwp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgQ2hhbmdlQ2lwaGVyU3BlYyByZWNvcmQgaXMgcmVjZWl2ZWQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqLwp0bHMuaGFuZGxlQ2hhbmdlQ2lwaGVyU3BlYyA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIGlmKHJlY29yZC5mcmFnbWVudC5nZXRCeXRlKCkgIT09IDB4MDEpIHsKICAgIHJldHVybiBjLmVycm9yKGMsIHsKICAgICAgbWVzc2FnZTogJ0ludmFsaWQgQ2hhbmdlQ2lwaGVyU3BlYyBtZXNzYWdlIHJlY2VpdmVkLicsCiAgICAgIHNlbmQ6IHRydWUsCiAgICAgIGFsZXJ0OiB7CiAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmlsbGVnYWxfcGFyYW1ldGVyCiAgICAgIH0KICAgIH0pOwogIH0KCiAgLy8gY3JlYXRlIHBlbmRpbmcgc3RhdGUgaWY6CiAgLy8gMS4gUmVzdW1pbmcgc2Vzc2lvbiBpbiBjbGllbnQgbW9kZSBPUgogIC8vIDIuIE5PVCByZXN1bWluZyBzZXNzaW9uIGluIHNlcnZlciBtb2RlCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICBpZigoYy5zZXNzaW9uLnJlc3VtaW5nICYmIGNsaWVudCkgfHwgKCFjLnNlc3Npb24ucmVzdW1pbmcgJiYgIWNsaWVudCkpIHsKICAgIGMuc3RhdGUucGVuZGluZyA9IHRscy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoYyk7CiAgfQoKICAvLyBjaGFuZ2UgY3VycmVudCByZWFkIHN0YXRlIHRvIHBlbmRpbmcgcmVhZCBzdGF0ZQogIGMuc3RhdGUuY3VycmVudC5yZWFkID0gYy5zdGF0ZS5wZW5kaW5nLnJlYWQ7CgogIC8vIGNsZWFyIHBlbmRpbmcgc3RhdGUgaWY6CiAgLy8gMS4gTk9UIHJlc3VtaW5nIHNlc3Npb24gaW4gY2xpZW50IG1vZGUgT1IKICAvLyAyLiByZXN1bWluZyBhIHNlc3Npb24gaW4gc2VydmVyIG1vZGUKICBpZigoIWMuc2Vzc2lvbi5yZXN1bWluZyAmJiBjbGllbnQpIHx8IChjLnNlc3Npb24ucmVzdW1pbmcgJiYgIWNsaWVudCkpIHsKICAgIGMuc3RhdGUucGVuZGluZyA9IG51bGw7CiAgfQoKICAvLyBleHBlY3QgYSBGaW5pc2hlZCByZWNvcmQgbmV4dAogIGMuZXhwZWN0ID0gY2xpZW50ID8gU0ZJIDogQ0ZJOwoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIENhbGxlZCB3aGVuIGEgRmluaXNoZWQgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBXaGVuIHRoaXMgbWVzc2FnZSB3aWxsIGJlIHNlbnQ6CiAqICAgQSBmaW5pc2hlZCBtZXNzYWdlIGlzIGFsd2F5cyBzZW50IGltbWVkaWF0ZWx5IGFmdGVyIGEgY2hhbmdlCiAqICAgY2lwaGVyIHNwZWMgbWVzc2FnZSB0byB2ZXJpZnkgdGhhdCB0aGUga2V5IGV4Y2hhbmdlIGFuZAogKiAgIGF1dGhlbnRpY2F0aW9uIHByb2Nlc3NlcyB3ZXJlIHN1Y2Nlc3NmdWwuIEl0IGlzIGVzc2VudGlhbCB0aGF0IGEKICogICBjaGFuZ2UgY2lwaGVyIHNwZWMgbWVzc2FnZSBiZSByZWNlaXZlZCBiZXR3ZWVuIHRoZSBvdGhlcgogKiAgIGhhbmRzaGFrZSBtZXNzYWdlcyBhbmQgdGhlIEZpbmlzaGVkIG1lc3NhZ2UuCiAqCiAqIE1lYW5pbmcgb2YgdGhpcyBtZXNzYWdlOgogKiAgIFRoZSBmaW5pc2hlZCBtZXNzYWdlIGlzIHRoZSBmaXJzdCBwcm90ZWN0ZWQgd2l0aCB0aGUganVzdC0KICogICBuZWdvdGlhdGVkIGFsZ29yaXRobXMsIGtleXMsIGFuZCBzZWNyZXRzLiBSZWNpcGllbnRzIG9mIGZpbmlzaGVkCiAqICAgbWVzc2FnZXMgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgY29udGVudHMgYXJlIGNvcnJlY3QuICBPbmNlIGEgc2lkZQogKiAgIGhhcyBzZW50IGl0cyBGaW5pc2hlZCBtZXNzYWdlIGFuZCByZWNlaXZlZCBhbmQgdmFsaWRhdGVkIHRoZQogKiAgIEZpbmlzaGVkIG1lc3NhZ2UgZnJvbSBpdHMgcGVlciwgaXQgbWF5IGJlZ2luIHRvIHNlbmQgYW5kIHJlY2VpdmUKICogICBhcHBsaWNhdGlvbiBkYXRhIG92ZXIgdGhlIGNvbm5lY3Rpb24uCiAqCiAqIHN0cnVjdCB7CiAqICAgb3BhcXVlIHZlcmlmeV9kYXRhW3ZlcmlmeV9kYXRhX2xlbmd0aF07CiAqIH0gRmluaXNoZWQ7CiAqCiAqIHZlcmlmeV9kYXRhCiAqICAgUFJGKG1hc3Rlcl9zZWNyZXQsIGZpbmlzaGVkX2xhYmVsLCBIYXNoKGhhbmRzaGFrZV9tZXNzYWdlcykpCiAqICAgICBbMC4udmVyaWZ5X2RhdGFfbGVuZ3RoLTFdOwogKgogKiBmaW5pc2hlZF9sYWJlbAogKiAgIEZvciBGaW5pc2hlZCBtZXNzYWdlcyBzZW50IGJ5IHRoZSBjbGllbnQsIHRoZSBzdHJpbmcKICogICAiY2xpZW50IGZpbmlzaGVkIi4gRm9yIEZpbmlzaGVkIG1lc3NhZ2VzIHNlbnQgYnkgdGhlIHNlcnZlciwgdGhlCiAqICAgc3RyaW5nICJzZXJ2ZXIgZmluaXNoZWQiLgogKgogKiB2ZXJpZnlfZGF0YV9sZW5ndGggZGVwZW5kcyBvbiB0aGUgY2lwaGVyIHN1aXRlLiBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkCiAqIGJ5IHRoZSBjaXBoZXIgc3VpdGUsIHRoZW4gaXQgaXMgMTIuIFZlcnNpb25zIG9mIFRMUyA8IDEuMiBhbHdheXMgdXNlZAogKiAxMiBieXRlcy4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSByZWNvcmQgdGhlIHJlY29yZC4KICogQHBhcmFtIGxlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZS4KICovCnRscy5oYW5kbGVGaW5pc2hlZCA9IGZ1bmN0aW9uKGMsIHJlY29yZCwgbGVuZ3RoKSB7CiAgLy8gcmV3aW5kIHRvIGdldCBmdWxsIGJ5dGVzIGZvciBtZXNzYWdlIHNvIGl0IGNhbiBiZSBtYW51YWxseQogIC8vIGRpZ2VzdGVkIGJlbG93IChzcGVjaWFsIGNhc2UgZm9yIEZpbmlzaGVkIG1lc3NhZ2VzIGJlY2F1c2UgdGhleQogIC8vIG11c3QgYmUgZGlnZXN0ZWQgKmFmdGVyKiBoYW5kbGluZyBhcyBvcHBvc2VkIHRvIGFsbCBvdGhlcnMpCiAgdmFyIGIgPSByZWNvcmQuZnJhZ21lbnQ7CiAgYi5yZWFkIC09IDQ7CiAgdmFyIG1zZ0J5dGVzID0gYi5ieXRlcygpOwogIGIucmVhZCArPSA0OwoKICAvLyBtZXNzYWdlIGNvbnRhaW5zIG9ubHkgdmVyaWZ5X2RhdGEKICB2YXIgdmQgPSByZWNvcmQuZnJhZ21lbnQuZ2V0Qnl0ZXMoKTsKCiAgLy8gZW5zdXJlIHZlcmlmeSBkYXRhIGlzIGNvcnJlY3QKICBiID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBiLnB1dEJ1ZmZlcihjLnNlc3Npb24ubWQ1LmRpZ2VzdCgpKTsKICBiLnB1dEJ1ZmZlcihjLnNlc3Npb24uc2hhMS5kaWdlc3QoKSk7CgogIC8vIHNldCBsYWJlbCBiYXNlZCBvbiBlbnRpdHkgdHlwZQogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CiAgdmFyIGxhYmVsID0gY2xpZW50ID8gJ3NlcnZlciBmaW5pc2hlZCcgOiAnY2xpZW50IGZpbmlzaGVkJzsKCiAgLy8gVE9ETzogZGV0ZXJtaW5lIHByZiBmdW5jdGlvbiBhbmQgdmVyaWZ5IGxlbmd0aCBmb3IgVExTIDEuMgogIHZhciBzcCA9IGMuc2Vzc2lvbi5zcDsKICB2YXIgdmRsID0gMTI7CiAgdmFyIHByZiA9IHByZl9UTFMxOwogIGIgPSBwcmYoc3AubWFzdGVyX3NlY3JldCwgbGFiZWwsIGIuZ2V0Qnl0ZXMoKSwgdmRsKTsKICBpZihiLmdldEJ5dGVzKCkgIT09IHZkKSB7CiAgICByZXR1cm4gYy5lcnJvcihjLCB7CiAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIHZlcmlmeV9kYXRhIGluIEZpbmlzaGVkIG1lc3NhZ2UuJywKICAgICAgc2VuZDogdHJ1ZSwKICAgICAgYWxlcnQ6IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uZGVjcnlwdF9lcnJvcgogICAgICB9CiAgICB9KTsKICB9CgogIC8vIGRpZ2VzdCBmaW5pc2hlZCBtZXNzYWdlIG5vdyB0aGF0IGl0IGhhcyBiZWVuIGhhbmRsZWQKICBjLnNlc3Npb24ubWQ1LnVwZGF0ZShtc2dCeXRlcyk7CiAgYy5zZXNzaW9uLnNoYTEudXBkYXRlKG1zZ0J5dGVzKTsKCiAgLy8gcmVzdW1pbmcgc2Vzc2lvbiBhcyBjbGllbnQgb3IgTk9UIHJlc3VtaW5nIHNlc3Npb24gYXMgc2VydmVyCiAgaWYoKGMuc2Vzc2lvbi5yZXN1bWluZyAmJiBjbGllbnQpIHx8ICghYy5zZXNzaW9uLnJlc3VtaW5nICYmICFjbGllbnQpKSB7CiAgICAvLyBjcmVhdGUgY2hhbmdlIGNpcGhlciBzcGVjIG1lc3NhZ2UKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmNoYW5nZV9jaXBoZXJfc3BlYywKICAgICAgZGF0YTogdGxzLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMoKQogICAgfSkpOwoKICAgIC8vIGNoYW5nZSBjdXJyZW50IHdyaXRlIHN0YXRlIHRvIHBlbmRpbmcgd3JpdGUgc3RhdGUsIGNsZWFyIHBlbmRpbmcKICAgIGMuc3RhdGUuY3VycmVudC53cml0ZSA9IGMuc3RhdGUucGVuZGluZy53cml0ZTsKICAgIGMuc3RhdGUucGVuZGluZyA9IG51bGw7CgogICAgLy8gY3JlYXRlIGZpbmlzaGVkIG1lc3NhZ2UKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgZGF0YTogdGxzLmNyZWF0ZUZpbmlzaGVkKGMpCiAgICB9KSk7CiAgfQoKICAvLyBleHBlY3QgYXBwbGljYXRpb24gZGF0YSBuZXh0CiAgYy5leHBlY3QgPSBjbGllbnQgPyBTQUQgOiBDQUQ7CgogIC8vIGhhbmRzaGFrZSBjb21wbGV0ZQogIGMuaGFuZHNoYWtpbmcgPSBmYWxzZTsKICArK2MuaGFuZHNoYWtlczsKCiAgLy8gc2F2ZSBhY2Nlc3MgdG8gcGVlciBjZXJ0aWZpY2F0ZQogIGMucGVlckNlcnRpZmljYXRlID0gY2xpZW50ID8KICAgIGMuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZSA6IGMuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZTsKCiAgLy8gc2VuZCByZWNvcmRzCiAgdGxzLmZsdXNoKGMpOwoKICAvLyBub3cgY29ubmVjdGVkCiAgYy5pc0Nvbm5lY3RlZCA9IHRydWU7CiAgYy5jb25uZWN0ZWQoYyk7CgogIC8vIGNvbnRpbnVlCiAgYy5wcm9jZXNzKCk7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYW4gQWxlcnQgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKi8KdGxzLmhhbmRsZUFsZXJ0ID0gZnVuY3Rpb24oYywgcmVjb3JkKSB7CiAgLy8gcmVhZCBhbGVydAogIHZhciBiID0gcmVjb3JkLmZyYWdtZW50OwogIHZhciBhbGVydCA9IHsKICAgIGxldmVsOiBiLmdldEJ5dGUoKSwKICAgIGRlc2NyaXB0aW9uOiBiLmdldEJ5dGUoKQogIH07CgogIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIGEgdGFibGU/CiAgLy8gZ2V0IGFwcHJvcHJpYXRlIG1lc3NhZ2UKICB2YXIgbXNnOwogIHN3aXRjaChhbGVydC5kZXNjcmlwdGlvbikgewogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeToKICAgIG1zZyA9ICdDb25uZWN0aW9uIGNsb3NlZC4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24udW5leHBlY3RlZF9tZXNzYWdlOgogICAgbXNnID0gJ1VuZXhwZWN0ZWQgbWVzc2FnZS4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX3JlY29yZF9tYWM6CiAgICBtc2cgPSAnQmFkIHJlY29yZCBNQUMuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmRlY3J5cHRpb25fZmFpbGVkOgogICAgbXNnID0gJ0RlY3J5cHRpb24gZmFpbGVkLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5yZWNvcmRfb3ZlcmZsb3c6CiAgICBtc2cgPSAnUmVjb3JkIG92ZXJmbG93Lic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvbXByZXNzaW9uX2ZhaWx1cmU6CiAgICBtc2cgPSAnRGVjb21wcmVzc2lvbiBmYWlsZWQuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmhhbmRzaGFrZV9mYWlsdXJlOgogICAgbXNnID0gJ0hhbmRzaGFrZSBmYWlsdXJlLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGU6CiAgICBtc2cgPSAnQmFkIGNlcnRpZmljYXRlLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZToKICAgIG1zZyA9ICdVbnN1cHBvcnRlZCBjZXJ0aWZpY2F0ZS4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfcmV2b2tlZDoKICAgIG1zZyA9ICdDZXJ0aWZpY2F0ZSByZXZva2VkLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkOgogICAgbXNnID0gJ0NlcnRpZmljYXRlIGV4cGlyZWQuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246CiAgICBtc2cgPSAnQ2VydGlmaWNhdGUgdW5rbm93bi4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uaWxsZWdhbF9wYXJhbWV0ZXI6CiAgICBtc2cgPSAnSWxsZWdhbCBwYXJhbWV0ZXIuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVua25vd25fY2E6CiAgICBtc2cgPSAnVW5rbm93biBjZXJ0aWZpY2F0ZSBhdXRob3JpdHkuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmFjY2Vzc19kZW5pZWQ6CiAgICBtc2cgPSAnQWNjZXNzIGRlbmllZC4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uZGVjb2RlX2Vycm9yOgogICAgbXNnID0gJ0RlY29kZSBlcnJvci4nOwogICAgYnJlYWs7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uZGVjcnlwdF9lcnJvcjoKICAgIG1zZyA9ICdEZWNyeXB0IGVycm9yLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5leHBvcnRfcmVzdHJpY3Rpb246CiAgICBtc2cgPSAnRXhwb3J0IHJlc3RyaWN0aW9uLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9uOgogICAgbXNnID0gJ1Vuc3VwcG9ydGVkIHByb3RvY29sIHZlcnNpb24uJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmluc3VmZmljaWVudF9zZWN1cml0eToKICAgIG1zZyA9ICdJbnN1ZmZpY2llbnQgc2VjdXJpdHkuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yOgogICAgbXNnID0gJ0ludGVybmFsIGVycm9yLic7CiAgICBicmVhazsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51c2VyX2NhbmNlbGVkOgogICAgbXNnID0gJ1VzZXIgY2FuY2VsZWQuJzsKICAgIGJyZWFrOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLm5vX3JlbmVnb3RpYXRpb246CiAgICBtc2cgPSAnUmVuZWdvdGlhdGlvbiBub3Qgc3VwcG9ydGVkLic7CiAgICBicmVhazsKICBkZWZhdWx0OgogICAgbXNnID0gJ1Vua25vd24gZXJyb3IuJzsKICAgIGJyZWFrOwogIH0KCiAgLy8gY2xvc2UgY29ubmVjdGlvbiBvbiBjbG9zZV9ub3RpZnksIG5vdCBhbiBlcnJvcgogIGlmKGFsZXJ0LmRlc2NyaXB0aW9uID09PSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2xvc2Vfbm90aWZ5KSB7CiAgICByZXR1cm4gYy5jbG9zZSgpOwogIH0KCiAgLy8gY2FsbCBlcnJvciBoYW5kbGVyCiAgYy5lcnJvcihjLCB7CiAgICBtZXNzYWdlOiBtc2csCiAgICBzZW5kOiBmYWxzZSwKICAgIC8vIG9yaWdpbiBpcyB0aGUgb3Bwb3NpdGUgZW5kCiAgICBvcmlnaW46IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KSA/ICdzZXJ2ZXInIDogJ2NsaWVudCcsCiAgICBhbGVydDogYWxlcnQKICB9KTsKCiAgLy8gY29udGludWUKICBjLnByb2Nlc3MoKTsKfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhIEhhbmRzaGFrZSByZWNvcmQgaXMgcmVjZWl2ZWQuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gcmVjb3JkIHRoZSByZWNvcmQuCiAqLwp0bHMuaGFuZGxlSGFuZHNoYWtlID0gZnVuY3Rpb24oYywgcmVjb3JkKSB7CiAgLy8gZ2V0IHRoZSBoYW5kc2hha2UgdHlwZSBhbmQgbWVzc2FnZSBsZW5ndGgKICB2YXIgYiA9IHJlY29yZC5mcmFnbWVudDsKICB2YXIgdHlwZSA9IGIuZ2V0Qnl0ZSgpOwogIHZhciBsZW5ndGggPSBiLmdldEludDI0KCk7CgogIC8vIHNlZSBpZiB0aGUgcmVjb3JkIGZyYWdtZW50IGRvZXNuJ3QgeWV0IGNvbnRhaW4gdGhlIGZ1bGwgbWVzc2FnZQogIGlmKGxlbmd0aCA+IGIubGVuZ3RoKCkpIHsKICAgIC8vIGNhY2hlIHRoZSByZWNvcmQsIGNsZWFyIGl0cyBmcmFnbWVudCwgYW5kIHJlc2V0IHRoZSBidWZmZXIgcmVhZAogICAgLy8gcG9pbnRlciBiZWZvcmUgdGhlIHR5cGUgYW5kIGxlbmd0aCB3ZXJlIHJlYWQKICAgIGMuZnJhZ21lbnRlZCA9IHJlY29yZDsKICAgIHJlY29yZC5mcmFnbWVudCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICBiLnJlYWQgLT0gNDsKCiAgICAvLyBjb250aW51ZQogICAgcmV0dXJuIGMucHJvY2VzcygpOwogIH0KCiAgLy8gZnVsbCBtZXNzYWdlIG5vdyBhdmFpbGFibGUsIGNsZWFyIGNhY2hlLCByZXNldCByZWFkIHBvaW50ZXIgdG8KICAvLyBiZWZvcmUgdHlwZSBhbmQgbGVuZ3RoCiAgYy5mcmFnbWVudGVkID0gbnVsbDsKICBiLnJlYWQgLT0gNDsKCiAgLy8gc2F2ZSB0aGUgaGFuZHNoYWtlIGJ5dGVzIGZvciBkaWdlc3Rpb24gYWZ0ZXIgaGFuZGxlciBpcyBmb3VuZAogIC8vIChpbmNsdWRlIHR5cGUgYW5kIGxlbmd0aCBvZiBoYW5kc2hha2UgbXNnKQogIHZhciBieXRlcyA9IGIuYnl0ZXMobGVuZ3RoICsgNCk7CgogIC8vIHJlc3RvcmUgcmVhZCBwb2ludGVyCiAgYi5yZWFkICs9IDQ7CgogIC8vIGhhbmRsZSBleHBlY3RlZCBtZXNzYWdlCiAgaWYodHlwZSBpbiBoc1RhYmxlW2MuZW50aXR5XVtjLmV4cGVjdF0pIHsKICAgIC8vIGluaXRpYWxpemUgc2VydmVyIHNlc3Npb24KICAgIGlmKGMuZW50aXR5ID09PSB0bHMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXIgJiYgIWMub3BlbiAmJiAhYy5mYWlsKSB7CiAgICAgIGMuaGFuZHNoYWtpbmcgPSB0cnVlOwogICAgICBjLnNlc3Npb24gPSB7CiAgICAgICAgdmVyc2lvbjogbnVsbCwKICAgICAgICBleHRlbnNpb25zOiB7CiAgICAgICAgICBzZXJ2ZXJfbmFtZTogewogICAgICAgICAgICBzZXJ2ZXJOYW1lTGlzdDogW10KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNpcGhlclN1aXRlOiBudWxsLAogICAgICAgIGNvbXByZXNzaW9uTWV0aG9kOiBudWxsLAogICAgICAgIHNlcnZlckNlcnRpZmljYXRlOiBudWxsLAogICAgICAgIGNsaWVudENlcnRpZmljYXRlOiBudWxsLAogICAgICAgIG1kNTogZm9yZ2UubWQubWQ1LmNyZWF0ZSgpLAogICAgICAgIHNoYTE6IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCkKICAgICAgfTsKICAgIH0KCiAgICAvKiBVcGRhdGUgaGFuZHNoYWtlIG1lc3NhZ2VzIGRpZ2VzdC4gRmluaXNoZWQgYW5kIENlcnRpZmljYXRlVmVyaWZ5CiAgICAgIG1lc3NhZ2VzIGFyZSBub3QgZGlnZXN0ZWQgaGVyZS4gVGhleSBjYW4ndCBiZSBkaWdlc3RlZCBhcyBwYXJ0IG9mCiAgICAgIHRoZSB2ZXJpZnlfZGF0YSB0aGF0IHRoZXkgY29udGFpbi4gVGhlc2UgbWVzc2FnZXMgYXJlIG1hbnVhbGx5CiAgICAgIGRpZ2VzdGVkIGluIHRoZWlyIGhhbmRsZXJzLiBIZWxsb1JlcXVlc3QgbWVzc2FnZXMgYXJlIHNpbXBseSBuZXZlcgogICAgICBpbmNsdWRlZCBpbiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UgZGlnZXN0IGFjY29yZGluZyB0byBzcGVjLiAqLwogICAgaWYodHlwZSAhPT0gdGxzLkhhbmRzaGFrZVR5cGUuaGVsbG9fcmVxdWVzdCAmJgogICAgICB0eXBlICE9PSB0bHMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZV92ZXJpZnkgJiYKICAgICAgdHlwZSAhPT0gdGxzLkhhbmRzaGFrZVR5cGUuZmluaXNoZWQpIHsKICAgICAgYy5zZXNzaW9uLm1kNS51cGRhdGUoYnl0ZXMpOwogICAgICBjLnNlc3Npb24uc2hhMS51cGRhdGUoYnl0ZXMpOwogICAgfQoKICAgIC8vIGhhbmRsZSBzcGVjaWZpYyBoYW5kc2hha2UgdHlwZSByZWNvcmQKICAgIGhzVGFibGVbYy5lbnRpdHldW2MuZXhwZWN0XVt0eXBlXShjLCByZWNvcmQsIGxlbmd0aCk7CiAgfSBlbHNlIHsKICAgIC8vIHVuZXhwZWN0ZWQgcmVjb3JkCiAgICB0bHMuaGFuZGxlVW5leHBlY3RlZChjLCByZWNvcmQpOwogIH0KfTsKCi8qKgogKiBDYWxsZWQgd2hlbiBhbiBBcHBsaWNhdGlvbkRhdGEgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKi8KdGxzLmhhbmRsZUFwcGxpY2F0aW9uRGF0YSA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIC8vIGJ1ZmZlciBkYXRhLCBub3RpZnkgdGhhdCBpdHMgcmVhZHkKICBjLmRhdGEucHV0QnVmZmVyKHJlY29yZC5mcmFnbWVudCk7CiAgYy5kYXRhUmVhZHkoYyk7CgogIC8vIGNvbnRpbnVlCiAgYy5wcm9jZXNzKCk7Cn07CgovKioKICogQ2FsbGVkIHdoZW4gYSBIZWFydGJlYXQgcmVjb3JkIGlzIHJlY2VpdmVkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkLgogKi8KdGxzLmhhbmRsZUhlYXJ0YmVhdCA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogIC8vIGdldCB0aGUgaGVhcnRiZWF0IHR5cGUgYW5kIHBheWxvYWQKICB2YXIgYiA9IHJlY29yZC5mcmFnbWVudDsKICB2YXIgdHlwZSA9IGIuZ2V0Qnl0ZSgpOwogIHZhciBsZW5ndGggPSBiLmdldEludDE2KCk7CiAgdmFyIHBheWxvYWQgPSBiLmdldEJ5dGVzKGxlbmd0aCk7CgogIGlmKHR5cGUgPT09IHRscy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCkgewogICAgLy8gZGlzY2FyZCByZXF1ZXN0IGR1cmluZyBoYW5kc2hha2Ugb3IgaWYgbGVuZ3RoIGlzIHRvbyBsYXJnZQogICAgaWYoYy5oYW5kc2hha2luZyB8fCBsZW5ndGggPiBwYXlsb2FkLmxlbmd0aCkgewogICAgICAvLyBjb250aW51ZQogICAgICByZXR1cm4gYy5wcm9jZXNzKCk7CiAgICB9CiAgICAvLyByZXRyYW5zbWl0IHBheWxvYWQKICAgIHRscy5xdWV1ZShjLCB0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhlYXJ0YmVhdCwKICAgICAgZGF0YTogdGxzLmNyZWF0ZUhlYXJ0YmVhdCgKICAgICAgICB0bHMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuaGVhcnRiZWF0X3Jlc3BvbnNlLCBwYXlsb2FkKQogICAgfSkpOwogICAgdGxzLmZsdXNoKGMpOwogIH0gZWxzZSBpZih0eXBlID09PSB0bHMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuaGVhcnRiZWF0X3Jlc3BvbnNlKSB7CiAgICAvLyBjaGVjayBwYXlsb2FkIGFnYWluc3QgZXhwZWN0ZWQgcGF5bG9hZCwgZGlzY2FyZCBoZWFydGJlYXQgaWYgbm8gbWF0Y2gKICAgIGlmKHBheWxvYWQgIT09IGMuZXhwZWN0ZWRIZWFydGJlYXRQYXlsb2FkKSB7CiAgICAgIC8vIGNvbnRpbnVlCiAgICAgIHJldHVybiBjLnByb2Nlc3MoKTsKICAgIH0KCiAgICAvLyBub3RpZnkgdGhhdCBhIHZhbGlkIGhlYXJ0YmVhdCB3YXMgcmVjZWl2ZWQKICAgIGlmKGMuaGVhcnRiZWF0UmVjZWl2ZWQpIHsKICAgICAgYy5oZWFydGJlYXRSZWNlaXZlZChjLCBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihwYXlsb2FkKSk7CiAgICB9CiAgfQoKICAvLyBjb250aW51ZQogIGMucHJvY2VzcygpOwp9OwoKLyoqCiAqIFRoZSB0cmFuc2lzdGlvbmFsIHN0YXRlIHRhYmxlcyBmb3IgcmVjZWl2aW5nIFRMUyByZWNvcmRzLiBJdCBtYXBzIHRoZQogKiBjdXJyZW50IFRMUyBlbmdpbmUgc3RhdGUgYW5kIGEgcmVjZWl2ZWQgcmVjb3JkIHRvIGEgZnVuY3Rpb24gdG8gaGFuZGxlIHRoZQogKiByZWNvcmQgYW5kIHVwZGF0ZSB0aGUgc3RhdGUuCiAqCiAqIEZvciBpbnN0YW5jZSwgaWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgU0hFLCB0aGVuIHRoZSBUTFMgZW5naW5lIGlzIGV4cGVjdGluZwogKiBhIFNlcnZlckhlbGxvIHJlY29yZC4gT25jZSBhIHJlY29yZCBpcyByZWNlaXZlZCwgdGhlIGhhbmRsZXIgZnVuY3Rpb24gaXMKICogbG9va2VkIHVwIHVzaW5nIHRoZSBzdGF0ZSBTSEUgYW5kIHRoZSByZWNvcmQncyBjb250ZW50IHR5cGUuCiAqCiAqIFRoZSByZXN1bHRpbmcgZnVuY3Rpb24gd2lsbCBlaXRoZXIgYmUgYW4gZXJyb3IgaGFuZGxlciBvciBhIHJlY29yZCBoYW5kbGVyLgogKiBUaGUgZnVuY3Rpb24gd2lsbCB0YWtlIHdoYXRldmVyIGFjdGlvbiBpcyBhcHByb3ByaWF0ZSBhbmQgdXBkYXRlIHRoZSBzdGF0ZQogKiBmb3IgdGhlIG5leHQgcmVjb3JkLgogKgogKiBUaGUgc3RhdGVzIGFyZSBhbGwgYmFzZWQgb24gcG9zc2libGUgc2VydmVyIHJlY29yZCB0eXBlcy4gTm90ZSB0aGF0IHRoZQogKiBjbGllbnQgd2lsbCBuZXZlciBzcGVjaWZpY2FsbHkgZXhwZWN0IHRvIHJlY2VpdmUgYSBIZWxsb1JlcXVlc3Qgb3IgYW4gYWxlcnQKICogZnJvbSB0aGUgc2VydmVyIHNvIHRoZXJlIGlzIG5vIHN0YXRlIHRoYXQgcmVmbGVjdHMgdGhpcy4gVGhlc2UgbWVzc2FnZXMgbWF5CiAqIG9jY3VyIGF0IGFueSB0aW1lLgogKgogKiBUaGVyZSBhcmUgdHdvIHRhYmxlcyBmb3IgbWFwcGluZyBzdGF0ZXMgYmVjYXVzZSB0aGVyZSBpcyBhIHNlY29uZCB0aWVyIG9mCiAqIHR5cGVzIGZvciBoYW5kc2hha2UgbWVzc2FnZXMuIE9uY2UgYSByZWNvcmQgd2l0aCBhIGNvbnRlbnQgdHlwZSBvZiBoYW5kc2hha2UKICogaXMgcmVjZWl2ZWQsIHRoZSBoYW5kc2hha2UgcmVjb3JkIGhhbmRsZXIgd2lsbCBsb29rIHVwIHRoZSBoYW5kc2hha2UgdHlwZSBpbgogKiB0aGUgc2Vjb25kYXJ5IG1hcCB0byBnZXQgaXRzIGFwcHJvcHJpYXRlIGhhbmRsZXIuCiAqCiAqIFZhbGlkIG1lc3NhZ2Ugb3JkZXJzIGFyZSBhcyBmb2xsb3dzOgogKgogKiA9PT09PT09PT09PT09PT09PT09PT09PUZVTEwgSEFORFNIQUtFPT09PT09PT09PT09PT09PT09PT09PQogKiBDbGllbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlcgogKgogKiBDbGllbnRIZWxsbyAgICAgICAgICAgICAgICAgIC0tLS0tLS0tPgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJIZWxsbwogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENlcnRpZmljYXRlKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZlcktleUV4Y2hhbmdlKgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2VydGlmaWNhdGVSZXF1ZXN0KgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLSAgICAgIFNlcnZlckhlbGxvRG9uZQogKiBDZXJ0aWZpY2F0ZSoKICogQ2xpZW50S2V5RXhjaGFuZ2UKICogQ2VydGlmaWNhdGVWZXJpZnkqCiAqIFtDaGFuZ2VDaXBoZXJTcGVjXQogKiBGaW5pc2hlZCAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tPgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtDaGFuZ2VDaXBoZXJTcGVjXQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLSAgICAgICAgICAgICBGaW5pc2hlZAogKiBBcHBsaWNhdGlvbiBEYXRhICAgICAgICAgICAgIDwtLS0tLS0tPiAgICAgQXBwbGljYXRpb24gRGF0YQogKgogKiA9PT09PT09PT09PT09PT09PT09PT1TRVNTSU9OIFJFU1VNUFRJT049PT09PT09PT09PT09PT09PT09PT0KICogQ2xpZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVyCiAqCiAqIENsaWVudEhlbGxvICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tPgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VydmVySGVsbG8KICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0NoYW5nZUNpcGhlclNwZWNdCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tLSAgICAgICAgICAgICBGaW5pc2hlZAogKiBbQ2hhbmdlQ2lwaGVyU3BlY10KICogRmluaXNoZWQgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0+CiAqIEFwcGxpY2F0aW9uIERhdGEgICAgICAgICAgICAgIDwtLS0tLS0tPiAgICAgQXBwbGljYXRpb24gRGF0YQogKi8KLy8gY2xpZW50IGV4cGVjdCBzdGF0ZXMgKGluZGljYXRlIHdoaWNoIHJlY29yZHMgYXJlIGV4cGVjdGVkIHRvIGJlIHJlY2VpdmVkKQp2YXIgU0hFID0gMDsgLy8gcmN2IHNlcnZlciBoZWxsbwp2YXIgU0NFID0gMTsgLy8gcmN2IHNlcnZlciBjZXJ0aWZpY2F0ZQp2YXIgU0tFID0gMjsgLy8gcmN2IHNlcnZlciBrZXkgZXhjaGFuZ2UKdmFyIFNDUiA9IDM7IC8vIHJjdiBjZXJ0aWZpY2F0ZSByZXF1ZXN0CnZhciBTSEQgPSA0OyAvLyByY3Ygc2VydmVyIGhlbGxvIGRvbmUKdmFyIFNDQyA9IDU7IC8vIHJjdiBjaGFuZ2UgY2lwaGVyIHNwZWMKdmFyIFNGSSA9IDY7IC8vIHJjdiBmaW5pc2hlZAp2YXIgU0FEID0gNzsgLy8gcmN2IGFwcGxpY2F0aW9uIGRhdGEKdmFyIFNFUiA9IDg7IC8vIG5vdCBleHBlY3RpbmcgYW55IG1lc3NhZ2VzIGF0IHRoaXMgcG9pbnQKCi8vIHNlcnZlciBleHBlY3Qgc3RhdGVzCnZhciBDSEUgPSAwOyAvLyByY3YgY2xpZW50IGhlbGxvCnZhciBDQ0UgPSAxOyAvLyByY3YgY2xpZW50IGNlcnRpZmljYXRlCnZhciBDS0UgPSAyOyAvLyByY3YgY2xpZW50IGtleSBleGNoYW5nZQp2YXIgQ0NWID0gMzsgLy8gcmN2IGNlcnRpZmljYXRlIHZlcmlmeQp2YXIgQ0NDID0gNDsgLy8gcmN2IGNoYW5nZSBjaXBoZXIgc3BlYwp2YXIgQ0ZJID0gNTsgLy8gcmN2IGZpbmlzaGVkCnZhciBDQUQgPSA2OyAvLyByY3YgYXBwbGljYXRpb24gZGF0YQp2YXIgQ0VSID0gNzsgLy8gbm90IGV4cGVjdGluZyBhbnkgbWVzc2FnZXMgYXQgdGhpcyBwb2ludAoKLy8gbWFwIGNsaWVudCBjdXJyZW50IGV4cGVjdCBzdGF0ZSBhbmQgY29udGVudCB0eXBlIHRvIGZ1bmN0aW9uCnZhciBfXyA9IHRscy5oYW5kbGVVbmV4cGVjdGVkOwp2YXIgUjAgPSB0bHMuaGFuZGxlQ2hhbmdlQ2lwaGVyU3BlYzsKdmFyIFIxID0gdGxzLmhhbmRsZUFsZXJ0Owp2YXIgUjIgPSB0bHMuaGFuZGxlSGFuZHNoYWtlOwp2YXIgUjMgPSB0bHMuaGFuZGxlQXBwbGljYXRpb25EYXRhOwp2YXIgUjQgPSB0bHMuaGFuZGxlSGVhcnRiZWF0Owp2YXIgY3RUYWJsZSA9IFtdOwpjdFRhYmxlW3Rscy5Db25uZWN0aW9uRW5kLmNsaWVudF0gPSBbCi8vICAgICAgQ0MsQUwsSFMsQUQsSEIKLypTSEUqL1tfXyxSMSxSMixfXyxSNF0sCi8qU0NFKi9bX18sUjEsUjIsX18sUjRdLAovKlNLRSovW19fLFIxLFIyLF9fLFI0XSwKLypTQ1IqL1tfXyxSMSxSMixfXyxSNF0sCi8qU0hEKi9bX18sUjEsUjIsX18sUjRdLAovKlNDQyovW1IwLFIxLF9fLF9fLFI0XSwKLypTRkkqL1tfXyxSMSxSMixfXyxSNF0sCi8qU0FEKi9bX18sUjEsUjIsUjMsUjRdLAovKlNFUiovW19fLFIxLFIyLF9fLFI0XQpdOwoKLy8gbWFwIHNlcnZlciBjdXJyZW50IGV4cGVjdCBzdGF0ZSBhbmQgY29udGVudCB0eXBlIHRvIGZ1bmN0aW9uCmN0VGFibGVbdGxzLkNvbm5lY3Rpb25FbmQuc2VydmVyXSA9IFsKLy8gICAgICBDQyxBTCxIUyxBRAovKkNIRSovW19fLFIxLFIyLF9fLFI0XSwKLypDQ0UqL1tfXyxSMSxSMixfXyxSNF0sCi8qQ0tFKi9bX18sUjEsUjIsX18sUjRdLAovKkNDViovW19fLFIxLFIyLF9fLFI0XSwKLypDQ0MqL1tSMCxSMSxfXyxfXyxSNF0sCi8qQ0ZJKi9bX18sUjEsUjIsX18sUjRdLAovKkNBRCovW19fLFIxLFIyLFIzLFI0XSwKLypDRVIqL1tfXyxSMSxSMixfXyxSNF0KXTsKCi8vIG1hcCBjbGllbnQgY3VycmVudCBleHBlY3Qgc3RhdGUgYW5kIGhhbmRzaGFrZSB0eXBlIHRvIGZ1bmN0aW9uCnZhciBIMCA9IHRscy5oYW5kbGVIZWxsb1JlcXVlc3Q7CnZhciBIMSA9IHRscy5oYW5kbGVTZXJ2ZXJIZWxsbzsKdmFyIEgyID0gdGxzLmhhbmRsZUNlcnRpZmljYXRlOwp2YXIgSDMgPSB0bHMuaGFuZGxlU2VydmVyS2V5RXhjaGFuZ2U7CnZhciBINCA9IHRscy5oYW5kbGVDZXJ0aWZpY2F0ZVJlcXVlc3Q7CnZhciBINSA9IHRscy5oYW5kbGVTZXJ2ZXJIZWxsb0RvbmU7CnZhciBINiA9IHRscy5oYW5kbGVGaW5pc2hlZDsKdmFyIGhzVGFibGUgPSBbXTsKaHNUYWJsZVt0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnRdID0gWwovLyAgICAgIEhSLDAxLFNILDAzLDA0LDA1LDA2LDA3LDA4LDA5LDEwLFNDLFNLLENSLEhELDE1LENLLDE3LDE4LDE5LEZJCi8qU0hFKi9bX18sX18sSDEsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX19dLAovKlNDRSovW0gwLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLEgyLEgzLEg0LEg1LF9fLF9fLF9fLF9fLF9fLF9fXSwKLypTS0UqL1tIMCxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxIMyxINCxINSxfXyxfXyxfXyxfXyxfXyxfX10sCi8qU0NSKi9bSDAsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sSDQsSDUsX18sX18sX18sX18sX18sX19dLAovKlNIRCovW0gwLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLEg1LF9fLF9fLF9fLF9fLF9fLF9fXSwKLypTQ0MqL1tIMCxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfX10sCi8qU0ZJKi9bSDAsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sSDZdLAovKlNBRCovW0gwLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXSwKLypTRVIqL1tIMCxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfX10KXTsKCi8vIG1hcCBzZXJ2ZXIgY3VycmVudCBleHBlY3Qgc3RhdGUgYW5kIGhhbmRzaGFrZSB0eXBlIHRvIGZ1bmN0aW9uCi8vIE5vdGU6IENBRFtDSF0gZG9lcyBub3QgbWFwIHRvIEZCIGJlY2F1c2UgcmVuZWdvdGF0aW9uIGlzIHByb2hpYml0ZWQKdmFyIEg3ID0gdGxzLmhhbmRsZUNsaWVudEhlbGxvOwp2YXIgSDggPSB0bHMuaGFuZGxlQ2xpZW50S2V5RXhjaGFuZ2U7CnZhciBIOSA9IHRscy5oYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmeTsKaHNUYWJsZVt0bHMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXJdID0gWwovLyAgICAgIDAxLENILDAyLDAzLDA0LDA1LDA2LDA3LDA4LDA5LDEwLENDLDEyLDEzLDE0LENWLENLLDE3LDE4LDE5LEZJCi8qQ0hFKi9bX18sSDcsX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX19dLAovKkNDRSovW19fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLEgyLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXSwKLypDS0UqL1tfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxIOCxfXyxfXyxfXyxfX10sCi8qQ0NWKi9bX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sSDksX18sX18sX18sX18sX19dLAovKkNDQyovW19fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXSwKLypDRkkqL1tfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxfXyxINl0sCi8qQ0FEKi9bX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX18sX19dLAovKkNFUiovW19fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fLF9fXQpdOwoKLyoqCiAqIEdlbmVyYXRlcyB0aGUgbWFzdGVyX3NlY3JldCBhbmQga2V5cyB1c2luZyB0aGUgZ2l2ZW4gc2VjdXJpdHkgcGFyYW1ldGVycy4KICoKICogVGhlIHNlY3VyaXR5IHBhcmFtZXRlcnMgZm9yIGEgVExTIGNvbm5lY3Rpb24gc3RhdGUgYXJlIGRlZmluZWQgYXMgc3VjaDoKICoKICogc3RydWN0IHsKICogICBDb25uZWN0aW9uRW5kICAgICAgICAgIGVudGl0eTsKICogICBQUkZBbGdvcml0aG0gICAgICAgICAgIHByZl9hbGdvcml0aG07CiAqICAgQnVsa0NpcGhlckFsZ29yaXRobSAgICBidWxrX2NpcGhlcl9hbGdvcml0aG07CiAqICAgQ2lwaGVyVHlwZSAgICAgICAgICAgICBjaXBoZXJfdHlwZTsKICogICB1aW50OCAgICAgICAgICAgICAgICAgIGVuY19rZXlfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgYmxvY2tfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgZml4ZWRfaXZfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgcmVjb3JkX2l2X2xlbmd0aDsKICogICBNQUNBbGdvcml0aG0gICAgICAgICAgIG1hY19hbGdvcml0aG07CiAqICAgdWludDggICAgICAgICAgICAgICAgICBtYWNfbGVuZ3RoOwogKiAgIHVpbnQ4ICAgICAgICAgICAgICAgICAgbWFjX2tleV9sZW5ndGg7CiAqICAgQ29tcHJlc3Npb25NZXRob2QgICAgICBjb21wcmVzc2lvbl9hbGdvcml0aG07CiAqICAgb3BhcXVlICAgICAgICAgICAgICAgICBtYXN0ZXJfc2VjcmV0WzQ4XTsKICogICBvcGFxdWUgICAgICAgICAgICAgICAgIGNsaWVudF9yYW5kb21bMzJdOwogKiAgIG9wYXF1ZSAgICAgICAgICAgICAgICAgc2VydmVyX3JhbmRvbVszMl07CiAqIH0gU2VjdXJpdHlQYXJhbWV0ZXJzOwogKgogKiBOb3RlIHRoYXQgdGhpcyBkZWZpbml0aW9uIGlzIGZyb20gVExTIDEuMi4gSW4gVExTIDEuMCBzb21lIG9mIHRoZXNlCiAqIHBhcmFtZXRlcnMgYXJlIGlnbm9yZWQgYmVjYXVzZSwgZm9yIGluc3RhbmNlLCB0aGUgUFJGQWxnb3JpdGhtIGlzIGEKICogYnVpbHRpbi1maXhlZCBhbGdvcml0aG0gY29tYmluaW5nIGl0ZXJhdGlvbnMgb2YgTUQ1IGFuZCBTSEEtMSBpbiBUTFMgMS4wLgogKgogKiBUaGUgUmVjb3JkIFByb3RvY29sIHJlcXVpcmVzIGFuIGFsZ29yaXRobSB0byBnZW5lcmF0ZSBrZXlzIHJlcXVpcmVkIGJ5IHRoZQogKiBjdXJyZW50IGNvbm5lY3Rpb24gc3RhdGUuCiAqCiAqIFRoZSBtYXN0ZXIgc2VjcmV0IGlzIGV4cGFuZGVkIGludG8gYSBzZXF1ZW5jZSBvZiBzZWN1cmUgYnl0ZXMsIHdoaWNoIGlzIHRoZW4KICogc3BsaXQgdG8gYSBjbGllbnQgd3JpdGUgTUFDIGtleSwgYSBzZXJ2ZXIgd3JpdGUgTUFDIGtleSwgYSBjbGllbnQgd3JpdGUKICogZW5jcnlwdGlvbiBrZXksIGFuZCBhIHNlcnZlciB3cml0ZSBlbmNyeXB0aW9uIGtleS4gSW4gVExTIDEuMCBhIGNsaWVudCB3cml0ZQogKiBJViBhbmQgc2VydmVyIHdyaXRlIElWIGFyZSBhbHNvIGdlbmVyYXRlZC4gRWFjaCBvZiB0aGVzZSBpcyBnZW5lcmF0ZWQgZnJvbQogKiB0aGUgYnl0ZSBzZXF1ZW5jZSBpbiB0aGF0IG9yZGVyLiBVbnVzZWQgdmFsdWVzIGFyZSBlbXB0eS4gSW4gVExTIDEuMiwgc29tZQogKiBBRUFEIGNpcGhlcnMgbWF5IGFkZGl0aW9uYWxseSByZXF1aXJlIGEgY2xpZW50IHdyaXRlIElWIGFuZCBhIHNlcnZlciB3cml0ZQogKiBJViAoc2VlIFNlY3Rpb24gNi4yLjMuMykuCiAqCiAqIFdoZW4ga2V5cywgTUFDIGtleXMsIGFuZCBJVnMgYXJlIGdlbmVyYXRlZCwgdGhlIG1hc3RlciBzZWNyZXQgaXMgdXNlZCBhcyBhbgogKiBlbnRyb3B5IHNvdXJjZS4KICoKICogVG8gZ2VuZXJhdGUgdGhlIGtleSBtYXRlcmlhbCwgY29tcHV0ZToKICoKICogbWFzdGVyX3NlY3JldCA9IFBSRihwcmVfbWFzdGVyX3NlY3JldCwgIm1hc3RlciBzZWNyZXQiLAogKiAgICAgICAgICAgICAgICAgICAgIENsaWVudEhlbGxvLnJhbmRvbSArIFNlcnZlckhlbGxvLnJhbmRvbSkKICoKICoga2V5X2Jsb2NrID0gUFJGKFNlY3VyaXR5UGFyYW1ldGVycy5tYXN0ZXJfc2VjcmV0LAogKiAgICAgICAgICAgICAgICAgImtleSBleHBhbnNpb24iLAogKiAgICAgICAgICAgICAgICAgU2VjdXJpdHlQYXJhbWV0ZXJzLnNlcnZlcl9yYW5kb20gKwogKiAgICAgICAgICAgICAgICAgU2VjdXJpdHlQYXJhbWV0ZXJzLmNsaWVudF9yYW5kb20pOwogKgogKiB1bnRpbCBlbm91Z2ggb3V0cHV0IGhhcyBiZWVuIGdlbmVyYXRlZC4gVGhlbiwgdGhlIGtleV9ibG9jayBpcwogKiBwYXJ0aXRpb25lZCBhcyBmb2xsb3dzOgogKgogKiBjbGllbnRfd3JpdGVfTUFDX2tleVtTZWN1cml0eVBhcmFtZXRlcnMubWFjX2tleV9sZW5ndGhdCiAqIHNlcnZlcl93cml0ZV9NQUNfa2V5W1NlY3VyaXR5UGFyYW1ldGVycy5tYWNfa2V5X2xlbmd0aF0KICogY2xpZW50X3dyaXRlX2tleVtTZWN1cml0eVBhcmFtZXRlcnMuZW5jX2tleV9sZW5ndGhdCiAqIHNlcnZlcl93cml0ZV9rZXlbU2VjdXJpdHlQYXJhbWV0ZXJzLmVuY19rZXlfbGVuZ3RoXQogKiBjbGllbnRfd3JpdGVfSVZbU2VjdXJpdHlQYXJhbWV0ZXJzLmZpeGVkX2l2X2xlbmd0aF0KICogc2VydmVyX3dyaXRlX0lWW1NlY3VyaXR5UGFyYW1ldGVycy5maXhlZF9pdl9sZW5ndGhdCiAqCiAqIEluIFRMUyAxLjIsIHRoZSBjbGllbnRfd3JpdGVfSVYgYW5kIHNlcnZlcl93cml0ZV9JViBhcmUgb25seSBnZW5lcmF0ZWQgZm9yCiAqIGltcGxpY2l0IG5vbmNlIHRlY2huaXF1ZXMgYXMgZGVzY3JpYmVkIGluIFNlY3Rpb24gMy4yLjEgb2YgW0FFQURdLiBUaGlzCiAqIGltcGxlbWVudGF0aW9uIHVzZXMgVExTIDEuMCBzbyBJVnMgYXJlIGdlbmVyYXRlZC4KICoKICogSW1wbGVtZW50YXRpb24gbm90ZTogVGhlIGN1cnJlbnRseSBkZWZpbmVkIGNpcGhlciBzdWl0ZSB3aGljaCByZXF1aXJlcyB0aGUKICogbW9zdCBtYXRlcmlhbCBpcyBBRVNfMjU2X0NCQ19TSEEyNTYuIEl0IHJlcXVpcmVzIDIgeCAzMiBieXRlIGtleXMgYW5kIDIgeCAzMgogKiBieXRlIE1BQyBrZXlzLCBmb3IgYSB0b3RhbCAxMjggYnl0ZXMgb2Yga2V5IG1hdGVyaWFsLiBJbiBUTFMgMS4wIGl0IGFsc28KICogcmVxdWlyZXMgMiB4IDE2IGJ5dGUgSVZzLCBzbyBpdCBhY3R1YWxseSB0YWtlcyAxNjAgYnl0ZXMgb2Yga2V5IG1hdGVyaWFsLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHNwIHRoZSBzZWN1cml0eSBwYXJhbWV0ZXJzIHRvIHVzZS4KICoKICogQHJldHVybiB0aGUgc2VjdXJpdHkga2V5cy4KICovCnRscy5nZW5lcmF0ZUtleXMgPSBmdW5jdGlvbihjLCBzcCkgewogIC8vIFRMU19SU0FfV0lUSF9BRVNfMTI4X0NCQ19TSEEgKHJlcXVpcmVkIHRvIGJlIGNvbXBsaWFudCB3aXRoIFRMUyAxLjIpICYKICAvLyBUTFNfUlNBX1dJVEhfQUVTXzI1Nl9DQkNfU0hBIGFyZSB0aGUgb25seSBjaXBoZXIgc3VpdGVzIGltcGxlbWVudGVkCiAgLy8gYXQgcHJlc2VudAoKICAvLyBUTFNfREhFX0RTU19XSVRIXzNERVNfRURFX0NCQ19TSEEgaXMgcmVxdWlyZWQgdG8gYmUgY29tcGxpYW50IHdpdGgKICAvLyBUTFMgMS4wIGJ1dCB3ZSBkb24ndCBjYXJlIHJpZ2h0IG5vdyBiZWNhdXNlIEFFUyBpcyBiZXR0ZXIgYW5kIHdlIGhhdmUKICAvLyBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgaXQKCiAgLy8gVE9ETzogVExTIDEuMiBpbXBsZW1lbnRhdGlvbgogIC8qCiAgLy8gZGV0ZXJtaW5lIHRoZSBQUkYKICB2YXIgcHJmOwogIHN3aXRjaChzcC5wcmZfYWxnb3JpdGhtKSB7CiAgY2FzZSB0bHMuUFJGQWxnb3JpdGhtLnRsc19wcmZfc2hhMjU2OgogICAgcHJmID0gcHJmX3NoYTI1NjsKICAgIGJyZWFrOwogIGRlZmF1bHQ6CiAgICAvLyBzaG91bGQgbmV2ZXIgaGFwcGVuCiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUFJGJyk7CiAgfQogICovCgogIC8vIFRMUyAxLjAvMS4xIGltcGxlbWVudGF0aW9uCiAgdmFyIHByZiA9IHByZl9UTFMxOwoKICAvLyBjb25jYXRlbmF0ZSBzZXJ2ZXIgYW5kIGNsaWVudCByYW5kb20KICB2YXIgcmFuZG9tID0gc3AuY2xpZW50X3JhbmRvbSArIHNwLnNlcnZlcl9yYW5kb207CgogIC8vIG9ubHkgY3JlYXRlIG1hc3RlciBzZWNyZXQgaWYgc2Vzc2lvbiBpcyBuZXcKICBpZighYy5zZXNzaW9uLnJlc3VtaW5nKSB7CiAgICAvLyBjcmVhdGUgbWFzdGVyIHNlY3JldCwgY2xlYW4gdXAgcHJlLW1hc3RlciBzZWNyZXQKICAgIHNwLm1hc3Rlcl9zZWNyZXQgPSBwcmYoCiAgICAgIHNwLnByZV9tYXN0ZXJfc2VjcmV0LCAnbWFzdGVyIHNlY3JldCcsIHJhbmRvbSwgNDgpLmJ5dGVzKCk7CiAgICBzcC5wcmVfbWFzdGVyX3NlY3JldCA9IG51bGw7CiAgfQoKICAvLyBnZW5lcmF0ZSB0aGUgYW1vdW50IG9mIGtleSBtYXRlcmlhbCBuZWVkZWQKICByYW5kb20gPSBzcC5zZXJ2ZXJfcmFuZG9tICsgc3AuY2xpZW50X3JhbmRvbTsKICB2YXIgbGVuZ3RoID0gMiAqIHNwLm1hY19rZXlfbGVuZ3RoICsgMiAqIHNwLmVuY19rZXlfbGVuZ3RoOwoKICAvLyBpbmNsdWRlIElWIGZvciBUTFMvMS4wCiAgdmFyIHRsczEwID0gKGMudmVyc2lvbi5tYWpvciA9PT0gdGxzLlZlcnNpb25zLlRMU18xXzAubWFqb3IgJiYKICAgIGMudmVyc2lvbi5taW5vciA9PT0gdGxzLlZlcnNpb25zLlRMU18xXzAubWlub3IpOwogIGlmKHRsczEwKSB7CiAgICBsZW5ndGggKz0gMiAqIHNwLmZpeGVkX2l2X2xlbmd0aDsKICB9CiAgdmFyIGttID0gcHJmKHNwLm1hc3Rlcl9zZWNyZXQsICdrZXkgZXhwYW5zaW9uJywgcmFuZG9tLCBsZW5ndGgpOwoKICAvLyBzcGxpdCB0aGUga2V5IG1hdGVyaWFsIGludG8gdGhlIE1BQyBhbmQgZW5jcnlwdGlvbiBrZXlzCiAgdmFyIHJ2YWwgPSB7CiAgICBjbGllbnRfd3JpdGVfTUFDX2tleToga20uZ2V0Qnl0ZXMoc3AubWFjX2tleV9sZW5ndGgpLAogICAgc2VydmVyX3dyaXRlX01BQ19rZXk6IGttLmdldEJ5dGVzKHNwLm1hY19rZXlfbGVuZ3RoKSwKICAgIGNsaWVudF93cml0ZV9rZXk6IGttLmdldEJ5dGVzKHNwLmVuY19rZXlfbGVuZ3RoKSwKICAgIHNlcnZlcl93cml0ZV9rZXk6IGttLmdldEJ5dGVzKHNwLmVuY19rZXlfbGVuZ3RoKQogIH07CgogIC8vIGluY2x1ZGUgVExTIDEuMCBJVnMKICBpZih0bHMxMCkgewogICAgcnZhbC5jbGllbnRfd3JpdGVfSVYgPSBrbS5nZXRCeXRlcyhzcC5maXhlZF9pdl9sZW5ndGgpOwogICAgcnZhbC5zZXJ2ZXJfd3JpdGVfSVYgPSBrbS5nZXRCeXRlcyhzcC5maXhlZF9pdl9sZW5ndGgpOwogIH0KCiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ3JlYXRlcyBhIG5ldyBpbml0aWFsaXplZCBUTFMgY29ubmVjdGlvbiBzdGF0ZS4gQSBjb25uZWN0aW9uIHN0YXRlIGhhcwogKiBhIHJlYWQgbW9kZSBhbmQgYSB3cml0ZSBtb2RlLgogKgogKiBjb21wcmVzc2lvbiBzdGF0ZToKICogICBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLgogKgogKiBjaXBoZXIgc3RhdGU6CiAqICAgVGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtLiBUaGlzIHdpbGwgY29uc2lzdCBvZiB0aGUKICogICBzY2hlZHVsZWQga2V5IGZvciB0aGF0IGNvbm5lY3Rpb24uIEZvciBzdHJlYW0gY2lwaGVycywgdGhpcyB3aWxsIGFsc28KICogICBjb250YWluIHdoYXRldmVyIHN0YXRlIGluZm9ybWF0aW9uIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyB0aGUgc3RyZWFtIHRvCiAqICAgY29udGludWUgdG8gZW5jcnlwdCBvciBkZWNyeXB0IGRhdGEuCiAqCiAqIE1BQyBrZXk6CiAqICAgVGhlIE1BQyBrZXkgZm9yIHRoZSBjb25uZWN0aW9uLgogKgogKiBzZXF1ZW5jZSBudW1iZXI6CiAqICAgRWFjaCBjb25uZWN0aW9uIHN0YXRlIGNvbnRhaW5zIGEgc2VxdWVuY2UgbnVtYmVyLCB3aGljaCBpcyBtYWludGFpbmVkCiAqICAgc2VwYXJhdGVseSBmb3IgcmVhZCBhbmQgd3JpdGUgc3RhdGVzLiBUaGUgc2VxdWVuY2UgbnVtYmVyIE1VU1QgYmUgc2V0IHRvCiAqICAgemVybyB3aGVuZXZlciBhIGNvbm5lY3Rpb24gc3RhdGUgaXMgbWFkZSB0aGUgYWN0aXZlIHN0YXRlLiBTZXF1ZW5jZQogKiAgIG51bWJlcnMgYXJlIG9mIHR5cGUgdWludDY0IGFuZCBtYXkgbm90IGV4Y2VlZCAyXjY0LTEuIFNlcXVlbmNlIG51bWJlcnMgZG8KICogICBub3Qgd3JhcC4gSWYgYSBUTFMgaW1wbGVtZW50YXRpb24gd291bGQgbmVlZCB0byB3cmFwIGEgc2VxdWVuY2UgbnVtYmVyLAogKiAgIGl0IG11c3QgcmVuZWdvdGlhdGUgaW5zdGVhZC4gQSBzZXF1ZW5jZSBudW1iZXIgaXMgaW5jcmVtZW50ZWQgYWZ0ZXIgZWFjaAogKiAgIHJlY29yZDogc3BlY2lmaWNhbGx5LCB0aGUgZmlyc3QgcmVjb3JkIHRyYW5zbWl0dGVkIHVuZGVyIGEgcGFydGljdWxhcgogKiAgIGNvbm5lY3Rpb24gc3RhdGUgTVVTVCB1c2Ugc2VxdWVuY2UgbnVtYmVyIDAuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBuZXcgaW5pdGlhbGl6ZWQgVExTIGNvbm5lY3Rpb24gc3RhdGUuCiAqLwp0bHMuY3JlYXRlQ29ubmVjdGlvblN0YXRlID0gZnVuY3Rpb24oYykgewogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CgogIHZhciBjcmVhdGVNb2RlID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgbW9kZSA9IHsKICAgICAgLy8gdHdvIDMyLWJpdCBudW1iZXJzLCBmaXJzdCBpcyBtb3N0IHNpZ25pZmljYW50CiAgICAgIHNlcXVlbmNlTnVtYmVyOiBbMCwgMF0sCiAgICAgIG1hY0tleTogbnVsbCwKICAgICAgbWFjTGVuZ3RoOiAwLAogICAgICBtYWNGdW5jdGlvbjogbnVsbCwKICAgICAgY2lwaGVyU3RhdGU6IG51bGwsCiAgICAgIGNpcGhlckZ1bmN0aW9uOiBmdW5jdGlvbihyZWNvcmQpIHtyZXR1cm4gdHJ1ZTt9LAogICAgICBjb21wcmVzc2lvblN0YXRlOiBudWxsLAogICAgICBjb21wcmVzc0Z1bmN0aW9uOiBmdW5jdGlvbihyZWNvcmQpIHtyZXR1cm4gdHJ1ZTt9LAogICAgICB1cGRhdGVTZXF1ZW5jZU51bWJlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgaWYobW9kZS5zZXF1ZW5jZU51bWJlclsxXSA9PT0gMHhGRkZGRkZGRikgewogICAgICAgICAgbW9kZS5zZXF1ZW5jZU51bWJlclsxXSA9IDA7CiAgICAgICAgICArK21vZGUuc2VxdWVuY2VOdW1iZXJbMF07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICsrbW9kZS5zZXF1ZW5jZU51bWJlclsxXTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgICByZXR1cm4gbW9kZTsKICB9OwogIHZhciBzdGF0ZSA9IHsKICAgIHJlYWQ6IGNyZWF0ZU1vZGUoKSwKICAgIHdyaXRlOiBjcmVhdGVNb2RlKCkKICB9OwoKICAvLyB1cGRhdGUgZnVuY3Rpb24gaW4gcmVhZCBtb2RlIHdpbGwgZGVjcnlwdCB0aGVuIGRlY29tcHJlc3MgYSByZWNvcmQKICBzdGF0ZS5yZWFkLnVwZGF0ZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogICAgaWYoIXN0YXRlLnJlYWQuY2lwaGVyRnVuY3Rpb24ocmVjb3JkLCBzdGF0ZS5yZWFkKSkgewogICAgICBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGRlY3J5cHQgcmVjb3JkIG9yIGJhZCBNQUMuJywKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgLy8gZG9lc24ndCBtYXR0ZXIgaWYgZGVjcnlwdGlvbiBmYWlsZWQgb3IgTUFDIHdhcwogICAgICAgICAgLy8gaW52YWxpZCwgcmV0dXJuIHRoZSBzYW1lIGVycm9yIHNvIGFzIG5vdCB0byByZXZlYWwKICAgICAgICAgIC8vIHdoaWNoIG9uZSBvY2N1cnJlZAogICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfcmVjb3JkX21hYwogICAgICAgIH0KICAgICAgfSk7CiAgICB9IGVsc2UgaWYoIXN0YXRlLnJlYWQuY29tcHJlc3NGdW5jdGlvbihjLCByZWNvcmQsIHN0YXRlLnJlYWQpKSB7CiAgICAgIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgZGVjb21wcmVzcyByZWNvcmQuJywKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5kZWNvbXByZXNzaW9uX2ZhaWx1cmUKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgcmV0dXJuICFjLmZhaWw7CiAgfTsKCiAgLy8gdXBkYXRlIGZ1bmN0aW9uIGluIHdyaXRlIG1vZGUgd2lsbCBjb21wcmVzcyB0aGVuIGVuY3J5cHQgYSByZWNvcmQKICBzdGF0ZS53cml0ZS51cGRhdGUgPSBmdW5jdGlvbihjLCByZWNvcmQpIHsKICAgIGlmKCFzdGF0ZS53cml0ZS5jb21wcmVzc0Z1bmN0aW9uKGMsIHJlY29yZCwgc3RhdGUud3JpdGUpKSB7CiAgICAgIC8vIGVycm9yLCBidXQgZG8gbm90IHNlbmQgYWxlcnQgc2luY2UgaXQgd291bGQgcmVxdWlyZQogICAgICAvLyBjb21wcmVzc2lvbiBhcyB3ZWxsCiAgICAgIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3QgY29tcHJlc3MgcmVjb3JkLicsCiAgICAgICAgc2VuZDogZmFsc2UsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0gZWxzZSBpZighc3RhdGUud3JpdGUuY2lwaGVyRnVuY3Rpb24ocmVjb3JkLCBzdGF0ZS53cml0ZSkpIHsKICAgICAgLy8gZXJyb3IsIGJ1dCBkbyBub3Qgc2VuZCBhbGVydCBzaW5jZSBpdCB3b3VsZCByZXF1aXJlCiAgICAgIC8vIGVuY3J5cHRpb24gYXMgd2VsbAogICAgICBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnQ291bGQgbm90IGVuY3J5cHQgcmVjb3JkLicsCiAgICAgICAgc2VuZDogZmFsc2UsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICAgIHJldHVybiAhYy5mYWlsOwogIH07CgogIC8vIGhhbmRsZSBzZWN1cml0eSBwYXJhbWV0ZXJzCiAgaWYoYy5zZXNzaW9uKSB7CiAgICB2YXIgc3AgPSBjLnNlc3Npb24uc3A7CiAgICBjLnNlc3Npb24uY2lwaGVyU3VpdGUuaW5pdFNlY3VyaXR5UGFyYW1ldGVycyhzcCk7CgogICAgLy8gZ2VuZXJhdGUga2V5cwogICAgc3Aua2V5cyA9IHRscy5nZW5lcmF0ZUtleXMoYywgc3ApOwogICAgc3RhdGUucmVhZC5tYWNLZXkgPSBjbGllbnQgPwogICAgICBzcC5rZXlzLnNlcnZlcl93cml0ZV9NQUNfa2V5IDogc3Aua2V5cy5jbGllbnRfd3JpdGVfTUFDX2tleTsKICAgIHN0YXRlLndyaXRlLm1hY0tleSA9IGNsaWVudCA/CiAgICAgIHNwLmtleXMuY2xpZW50X3dyaXRlX01BQ19rZXkgOiBzcC5rZXlzLnNlcnZlcl93cml0ZV9NQUNfa2V5OwoKICAgIC8vIGNpcGhlciBzdWl0ZSBzZXR1cAogICAgYy5zZXNzaW9uLmNpcGhlclN1aXRlLmluaXRDb25uZWN0aW9uU3RhdGUoc3RhdGUsIGMsIHNwKTsKCiAgICAvLyBjb21wcmVzc2lvbiBzZXR1cAogICAgc3dpdGNoKHNwLmNvbXByZXNzaW9uX2FsZ29yaXRobSkgewogICAgY2FzZSB0bHMuQ29tcHJlc3Npb25NZXRob2Qubm9uZToKICAgICAgYnJlYWs7CiAgICBjYXNlIHRscy5Db21wcmVzc2lvbk1ldGhvZC5kZWZsYXRlOgogICAgICBzdGF0ZS5yZWFkLmNvbXByZXNzRnVuY3Rpb24gPSBpbmZsYXRlOwogICAgICBzdGF0ZS53cml0ZS5jb21wcmVzc0Z1bmN0aW9uID0gZGVmbGF0ZTsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbXByZXNzaW9uIGFsZ29yaXRobS4nKTsKICAgIH0KICB9CgogIHJldHVybiBzdGF0ZTsKfTsKCi8qKgogKiBDcmVhdGVzIGEgUmFuZG9tIHN0cnVjdHVyZS4KICoKICogc3RydWN0IHsKICogICB1aW50MzIgZ210X3VuaXhfdGltZTsKICogICBvcGFxdWUgcmFuZG9tX2J5dGVzWzI4XTsKICogfSBSYW5kb207CiAqCiAqIGdtdF91bml4X3RpbWU6CiAqICAgVGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSBpbiBzdGFuZGFyZCBVTklYIDMyLWJpdCBmb3JtYXQgKHNlY29uZHMgc2luY2UKICogICB0aGUgbWlkbmlnaHQgc3RhcnRpbmcgSmFuIDEsIDE5NzAsIFVUQywgaWdub3JpbmcgbGVhcCBzZWNvbmRzKSBhY2NvcmRpbmcKICogICB0byB0aGUgc2VuZGVyJ3MgaW50ZXJuYWwgY2xvY2suIENsb2NrcyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIHNldAogKiAgIGNvcnJlY3RseSBieSB0aGUgYmFzaWMgVExTIHByb3RvY29sOyBoaWdoZXItbGV2ZWwgb3IgYXBwbGljYXRpb24KICogICBwcm90b2NvbHMgbWF5IGRlZmluZSBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cy4gTm90ZSB0aGF0LCBmb3IgaGlzdG9yaWNhbAogKiAgIHJlYXNvbnMsIHRoZSBkYXRhIGVsZW1lbnQgaXMgbmFtZWQgdXNpbmcgR01ULCB0aGUgcHJlZGVjZXNzb3Igb2YgdGhlCiAqICAgY3VycmVudCB3b3JsZHdpZGUgdGltZSBiYXNlLCBVVEMuCiAqIHJhbmRvbV9ieXRlczoKICogICAyOCBieXRlcyBnZW5lcmF0ZWQgYnkgYSBzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCiAqCiAqIEByZXR1cm4gdGhlIFJhbmRvbSBzdHJ1Y3R1cmUgYXMgYSBieXRlIGFycmF5LgogKi8KdGxzLmNyZWF0ZVJhbmRvbSA9IGZ1bmN0aW9uKCkgewogIC8vIGdldCBVVEMgbWlsbGlzZWNvbmRzCiAgdmFyIGQgPSBuZXcgRGF0ZSgpOwogIHZhciB1dGMgPSArZCArIGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwOwogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBydmFsLnB1dEludDMyKHV0Yyk7CiAgcnZhbC5wdXRCeXRlcyhmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMoMjgpKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgVExTIHJlY29yZCB3aXRoIHRoZSBnaXZlbiB0eXBlIGFuZCBkYXRhLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIG9wdGlvbnM6CiAqICAgdHlwZTogdGhlIHJlY29yZCB0eXBlLgogKiAgIGRhdGE6IHRoZSBwbGFpbiB0ZXh0IGRhdGEgaW4gYSBieXRlIGJ1ZmZlci4KICoKICogQHJldHVybiB0aGUgY3JlYXRlZCByZWNvcmQuCiAqLwp0bHMuY3JlYXRlUmVjb3JkID0gZnVuY3Rpb24oYywgb3B0aW9ucykgewogIGlmKCFvcHRpb25zLmRhdGEpIHsKICAgIHJldHVybiBudWxsOwogIH0KICB2YXIgcmVjb3JkID0gewogICAgdHlwZTogb3B0aW9ucy50eXBlLAogICAgdmVyc2lvbjogewogICAgICBtYWpvcjogYy52ZXJzaW9uLm1ham9yLAogICAgICBtaW5vcjogYy52ZXJzaW9uLm1pbm9yCiAgICB9LAogICAgbGVuZ3RoOiBvcHRpb25zLmRhdGEubGVuZ3RoKCksCiAgICBmcmFnbWVudDogb3B0aW9ucy5kYXRhCiAgfTsKICByZXR1cm4gcmVjb3JkOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBUTFMgYWxlcnQgcmVjb3JkLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIGFsZXJ0OgogKiAgIGxldmVsOiB0aGUgVExTIGFsZXJ0IGxldmVsLgogKiAgIGRlc2NyaXB0aW9uOiB0aGUgVExTIGFsZXJ0IGRlc2NyaXB0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBjcmVhdGVkIGFsZXJ0IHJlY29yZC4KICovCnRscy5jcmVhdGVBbGVydCA9IGZ1bmN0aW9uKGMsIGFsZXJ0KSB7CiAgdmFyIGIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGIucHV0Qnl0ZShhbGVydC5sZXZlbCk7CiAgYi5wdXRCeXRlKGFsZXJ0LmRlc2NyaXB0aW9uKTsKICByZXR1cm4gdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuYWxlcnQsCiAgICBkYXRhOiBiCiAgfSk7Cn07CgovKiBUaGUgc3RydWN0dXJlIG9mIGEgVExTIGhhbmRzaGFrZSBtZXNzYWdlLgogKgogKiBzdHJ1Y3QgewogKiAgICBIYW5kc2hha2VUeXBlIG1zZ190eXBlOyAgICAvLyBoYW5kc2hha2UgdHlwZQogKiAgICB1aW50MjQgbGVuZ3RoOyAgICAgICAgICAgICAvLyBieXRlcyBpbiBtZXNzYWdlCiAqICAgIHNlbGVjdChIYW5kc2hha2VUeXBlKSB7CiAqICAgICAgIGNhc2UgaGVsbG9fcmVxdWVzdDogICAgICAgSGVsbG9SZXF1ZXN0OwogKiAgICAgICBjYXNlIGNsaWVudF9oZWxsbzogICAgICAgIENsaWVudEhlbGxvOwogKiAgICAgICBjYXNlIHNlcnZlcl9oZWxsbzogICAgICAgIFNlcnZlckhlbGxvOwogKiAgICAgICBjYXNlIGNlcnRpZmljYXRlOiAgICAgICAgIENlcnRpZmljYXRlOwogKiAgICAgICBjYXNlIHNlcnZlcl9rZXlfZXhjaGFuZ2U6IFNlcnZlcktleUV4Y2hhbmdlOwogKiAgICAgICBjYXNlIGNlcnRpZmljYXRlX3JlcXVlc3Q6IENlcnRpZmljYXRlUmVxdWVzdDsKICogICAgICAgY2FzZSBzZXJ2ZXJfaGVsbG9fZG9uZTogICBTZXJ2ZXJIZWxsb0RvbmU7CiAqICAgICAgIGNhc2UgY2VydGlmaWNhdGVfdmVyaWZ5OiAgQ2VydGlmaWNhdGVWZXJpZnk7CiAqICAgICAgIGNhc2UgY2xpZW50X2tleV9leGNoYW5nZTogQ2xpZW50S2V5RXhjaGFuZ2U7CiAqICAgICAgIGNhc2UgZmluaXNoZWQ6ICAgICAgICAgICAgRmluaXNoZWQ7CiAqICAgIH0gYm9keTsKICogfSBIYW5kc2hha2U7CiAqLwoKLyoqCiAqIENyZWF0ZXMgYSBDbGllbnRIZWxsbyBtZXNzYWdlLgogKgogKiBvcGFxdWUgU2Vzc2lvbklEPDAuLjMyPjsKICogZW51bSB7IG51bGwoMCksIGRlZmxhdGUoMSksICgyNTUpIH0gQ29tcHJlc3Npb25NZXRob2Q7CiAqIHVpbnQ4IENpcGhlclN1aXRlWzJdOwogKgogKiBzdHJ1Y3QgewogKiAgIFByb3RvY29sVmVyc2lvbiBjbGllbnRfdmVyc2lvbjsKICogICBSYW5kb20gcmFuZG9tOwogKiAgIFNlc3Npb25JRCBzZXNzaW9uX2lkOwogKiAgIENpcGhlclN1aXRlIGNpcGhlcl9zdWl0ZXM8Mi4uMl4xNi0yPjsKICogICBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbl9tZXRob2RzPDEuLjJeOC0xPjsKICogICBzZWxlY3QoZXh0ZW5zaW9uc19wcmVzZW50KSB7CiAqICAgICBjYXNlIGZhbHNlOgogKiAgICAgICBzdHJ1Y3Qge307CiAqICAgICBjYXNlIHRydWU6CiAqICAgICAgIEV4dGVuc2lvbiBleHRlbnNpb25zPDAuLjJeMTYtMT47CiAqICAgfTsKICogfSBDbGllbnRIZWxsbzsKICoKICogVGhlIGV4dGVuc2lvbiBmb3JtYXQgZm9yIGV4dGVuZGVkIGNsaWVudCBoZWxsb3MgYW5kIHNlcnZlciBoZWxsb3MgaXM6CiAqCiAqIHN0cnVjdCB7CiAqICAgRXh0ZW5zaW9uVHlwZSBleHRlbnNpb25fdHlwZTsKICogICBvcGFxdWUgZXh0ZW5zaW9uX2RhdGE8MC4uMl4xNi0xPjsKICogfSBFeHRlbnNpb247CiAqCiAqIEhlcmU6CiAqCiAqIC0gImV4dGVuc2lvbl90eXBlIiBpZGVudGlmaWVzIHRoZSBwYXJ0aWN1bGFyIGV4dGVuc2lvbiB0eXBlLgogKiAtICJleHRlbnNpb25fZGF0YSIgY29udGFpbnMgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIHBhcnRpY3VsYXIKICogZXh0ZW5zaW9uIHR5cGUuCiAqCiAqIFRoZSBleHRlbnNpb24gdHlwZXMgZGVmaW5lZCBpbiB0aGlzIGRvY3VtZW50IGFyZToKICoKICogZW51bSB7CiAqICAgc2VydmVyX25hbWUoMCksIG1heF9mcmFnbWVudF9sZW5ndGgoMSksCiAqICAgY2xpZW50X2NlcnRpZmljYXRlX3VybCgyKSwgdHJ1c3RlZF9jYV9rZXlzKDMpLAogKiAgIHRydW5jYXRlZF9obWFjKDQpLCBzdGF0dXNfcmVxdWVzdCg1KSwgKDY1NTM1KQogKiB9IEV4dGVuc2lvblR5cGU7CiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBDbGllbnRIZWxsbyBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVDbGllbnRIZWxsbyA9IGZ1bmN0aW9uKGMpIHsKICAvLyBzYXZlIGhlbGxvIHZlcnNpb24KICBjLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uID0gewogICAgbWFqb3I6IGMudmVyc2lvbi5tYWpvciwKICAgIG1pbm9yOiBjLnZlcnNpb24ubWlub3IKICB9OwoKICAvLyBjcmVhdGUgc3VwcG9ydGVkIGNpcGhlciBzdWl0ZXMKICB2YXIgY2lwaGVyU3VpdGVzID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBmb3IodmFyIGkgPSAwOyBpIDwgYy5jaXBoZXJTdWl0ZXMubGVuZ3RoOyArK2kpIHsKICAgIHZhciBjcyA9IGMuY2lwaGVyU3VpdGVzW2ldOwogICAgY2lwaGVyU3VpdGVzLnB1dEJ5dGUoY3MuaWRbMF0pOwogICAgY2lwaGVyU3VpdGVzLnB1dEJ5dGUoY3MuaWRbMV0pOwogIH0KICB2YXIgY1N1aXRlcyA9IGNpcGhlclN1aXRlcy5sZW5ndGgoKTsKCiAgLy8gY3JlYXRlIHN1cHBvcnRlZCBjb21wcmVzc2lvbiBtZXRob2RzLCBudWxsIGFsd2F5cyBzdXBwb3J0ZWQsIGJ1dAogIC8vIGFsc28gc3VwcG9ydCBkZWZsYXRlIGlmIGNvbm5lY3Rpb24gaGFzIGluZmxhdGUgYW5kIGRlZmxhdGUgbWV0aG9kcwogIHZhciBjb21wcmVzc2lvbk1ldGhvZHMgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGNvbXByZXNzaW9uTWV0aG9kcy5wdXRCeXRlKHRscy5Db21wcmVzc2lvbk1ldGhvZC5ub25lKTsKICAvLyBGSVhNRTogZGVmbGF0ZSBzdXBwb3J0IGRpc2FibGVkIHVudGlsIGlzc3VlcyB3aXRoIHJhdyBkZWZsYXRlIGRhdGEKICAvLyB3aXRob3V0IHpsaWIgaGVhZGVycyBhcmUgcmVzb2x2ZWQKICAvKgogIGlmKGMuaW5mbGF0ZSAhPT0gbnVsbCAmJiBjLmRlZmxhdGUgIT09IG51bGwpIHsKICAgIGNvbXByZXNzaW9uTWV0aG9kcy5wdXRCeXRlKHRscy5Db21wcmVzc2lvbk1ldGhvZC5kZWZsYXRlKTsKICB9CiAgKi8KICB2YXIgY01ldGhvZHMgPSBjb21wcmVzc2lvbk1ldGhvZHMubGVuZ3RoKCk7CgogIC8vIGNyZWF0ZSBUTFMgU05JIChzZXJ2ZXIgbmFtZSBpbmRpY2F0aW9uKSBleHRlbnNpb24gaWYgdmlydHVhbCBob3N0CiAgLy8gaGFzIGJlZW4gc3BlY2lmaWVkLCBzZWUgUkZDIDM1NDYKICB2YXIgZXh0ZW5zaW9ucyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgaWYoYy52aXJ0dWFsSG9zdCkgewogICAgLy8gY3JlYXRlIGV4dGVuc2lvbiBzdHJ1Y3QKICAgIHZhciBleHQgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgZXh0LnB1dEJ5dGUoMHgwMCk7IC8vIHR5cGUgc2VydmVyX25hbWUgKEV4dGVuc2lvblR5cGUgaXMgMiBieXRlcykKICAgIGV4dC5wdXRCeXRlKDB4MDApOwoKICAgIC8qIEluIG9yZGVyIHRvIHByb3ZpZGUgdGhlIHNlcnZlciBuYW1lLCBjbGllbnRzIE1BWSBpbmNsdWRlIGFuCiAgICAgKiBleHRlbnNpb24gb2YgdHlwZSAic2VydmVyX25hbWUiIGluIHRoZSAoZXh0ZW5kZWQpIGNsaWVudCBoZWxsby4KICAgICAqIFRoZSAiZXh0ZW5zaW9uX2RhdGEiIGZpZWxkIG9mIHRoaXMgZXh0ZW5zaW9uIFNIQUxMIGNvbnRhaW4KICAgICAqICJTZXJ2ZXJOYW1lTGlzdCIgd2hlcmU6CiAgICAgKgogICAgICogc3RydWN0IHsKICAgICAqICAgTmFtZVR5cGUgbmFtZV90eXBlOwogICAgICogICBzZWxlY3QobmFtZV90eXBlKSB7CiAgICAgKiAgICAgY2FzZSBob3N0X25hbWU6IEhvc3ROYW1lOwogICAgICogICB9IG5hbWU7CiAgICAgKiB9IFNlcnZlck5hbWU7CiAgICAgKgogICAgICogZW51bSB7CiAgICAgKiAgIGhvc3RfbmFtZSgwKSwgKDI1NSkKICAgICAqIH0gTmFtZVR5cGU7CiAgICAgKgogICAgICogb3BhcXVlIEhvc3ROYW1lPDEuLjJeMTYtMT47CiAgICAgKgogICAgICogc3RydWN0IHsKICAgICAqICAgU2VydmVyTmFtZSBzZXJ2ZXJfbmFtZV9saXN0PDEuLjJeMTYtMT4KICAgICAqIH0gU2VydmVyTmFtZUxpc3Q7CiAgICAgKi8KICAgIHZhciBzZXJ2ZXJOYW1lID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICAgIHNlcnZlck5hbWUucHV0Qnl0ZSgweDAwKTsgLy8gdHlwZSBob3N0X25hbWUKICAgIHdyaXRlVmVjdG9yKHNlcnZlck5hbWUsIDIsIGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGMudmlydHVhbEhvc3QpKTsKCiAgICAvLyBTZXJ2ZXJOYW1lTGlzdCBpcyBpbiBleHRlbnNpb25fZGF0YQogICAgdmFyIHNuTGlzdCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICB3cml0ZVZlY3Rvcihzbkxpc3QsIDIsIHNlcnZlck5hbWUpOwogICAgd3JpdGVWZWN0b3IoZXh0LCAyLCBzbkxpc3QpOwogICAgZXh0ZW5zaW9ucy5wdXRCdWZmZXIoZXh0KTsKICB9CiAgdmFyIGV4dExlbmd0aCA9IGV4dGVuc2lvbnMubGVuZ3RoKCk7CiAgaWYoZXh0TGVuZ3RoID4gMCkgewogICAgLy8gYWRkIGV4dGVuc2lvbiB2ZWN0b3IgbGVuZ3RoCiAgICBleHRMZW5ndGggKz0gMjsKICB9CgogIC8vIGRldGVybWluZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlCiAgLy8gY2lwaGVyIHN1aXRlcyBhbmQgY29tcHJlc3Npb24gbWV0aG9kcyBzaXplIHdpbGwgbmVlZCB0byBiZQogIC8vIHVwZGF0ZWQgaWYgbW9yZSBnZXQgYWRkZWQgdG8gdGhlIGxpc3QKICB2YXIgc2Vzc2lvbklkID0gYy5zZXNzaW9uLmlkOwogIHZhciBsZW5ndGggPQogICAgc2Vzc2lvbklkLmxlbmd0aCArIDEgKyAvLyBzZXNzaW9uIElEIHZlY3RvcgogICAgMiArICAgICAgICAgICAgICAgICAgICAvLyB2ZXJzaW9uIChtYWpvciArIG1pbm9yKQogICAgNCArIDI4ICsgICAgICAgICAgICAgICAvLyByYW5kb20gdGltZSBhbmQgcmFuZG9tIGJ5dGVzCiAgICAyICsgY1N1aXRlcyArICAgICAgICAgIC8vIGNpcGhlciBzdWl0ZXMgdmVjdG9yCiAgICAxICsgY01ldGhvZHMgKyAgICAgICAgIC8vIGNvbXByZXNzaW9uIG1ldGhvZHMgdmVjdG9yCiAgICBleHRMZW5ndGg7ICAgICAgICAgICAgIC8vIGV4dGVuc2lvbnMgdmVjdG9yCgogIC8vIGJ1aWxkIHJlY29yZCBmcmFnbWVudAogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBydmFsLnB1dEJ5dGUodGxzLkhhbmRzaGFrZVR5cGUuY2xpZW50X2hlbGxvKTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZHNoYWtlIGxlbmd0aAogIHJ2YWwucHV0Qnl0ZShjLnZlcnNpb24ubWFqb3IpOyAgICAgICAgICAgICAvLyBtYWpvciB2ZXJzaW9uCiAgcnZhbC5wdXRCeXRlKGMudmVyc2lvbi5taW5vcik7ICAgICAgICAgICAgIC8vIG1pbm9yIHZlcnNpb24KICBydmFsLnB1dEJ5dGVzKGMuc2Vzc2lvbi5zcC5jbGllbnRfcmFuZG9tKTsgLy8gcmFuZG9tIHRpbWUgKyBieXRlcwogIHdyaXRlVmVjdG9yKHJ2YWwsIDEsIGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKHNlc3Npb25JZCkpOwogIHdyaXRlVmVjdG9yKHJ2YWwsIDIsIGNpcGhlclN1aXRlcyk7CiAgd3JpdGVWZWN0b3IocnZhbCwgMSwgY29tcHJlc3Npb25NZXRob2RzKTsKICBpZihleHRMZW5ndGggPiAwKSB7CiAgICB3cml0ZVZlY3RvcihydmFsLCAyLCBleHRlbnNpb25zKTsKICB9CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ3JlYXRlcyBhIFNlcnZlckhlbGxvIG1lc3NhZ2UuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKgogKiBAcmV0dXJuIHRoZSBTZXJ2ZXJIZWxsbyBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVTZXJ2ZXJIZWxsbyA9IGZ1bmN0aW9uKGMpIHsKICAvLyBkZXRlcm1pbmUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZQogIHZhciBzZXNzaW9uSWQgPSBjLnNlc3Npb24uaWQ7CiAgdmFyIGxlbmd0aCA9CiAgICBzZXNzaW9uSWQubGVuZ3RoICsgMSArIC8vIHNlc3Npb24gSUQgdmVjdG9yCiAgICAyICsgICAgICAgICAgICAgICAgICAgIC8vIHZlcnNpb24gKG1ham9yICsgbWlub3IpCiAgICA0ICsgMjggKyAgICAgICAgICAgICAgIC8vIHJhbmRvbSB0aW1lIGFuZCByYW5kb20gYnl0ZXMKICAgIDIgKyAgICAgICAgICAgICAgICAgICAgLy8gY2hvc2VuIGNpcGhlciBzdWl0ZQogICAgMTsgICAgICAgICAgICAgICAgICAgICAvLyBjaG9zZW4gY29tcHJlc3Npb24gbWV0aG9kCgogIC8vIGJ1aWxkIHJlY29yZCBmcmFnbWVudAogIHZhciBydmFsID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBydmFsLnB1dEJ5dGUodGxzLkhhbmRzaGFrZVR5cGUuc2VydmVyX2hlbGxvKTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZHNoYWtlIGxlbmd0aAogIHJ2YWwucHV0Qnl0ZShjLnZlcnNpb24ubWFqb3IpOyAgICAgICAgICAgICAvLyBtYWpvciB2ZXJzaW9uCiAgcnZhbC5wdXRCeXRlKGMudmVyc2lvbi5taW5vcik7ICAgICAgICAgICAgIC8vIG1pbm9yIHZlcnNpb24KICBydmFsLnB1dEJ5dGVzKGMuc2Vzc2lvbi5zcC5zZXJ2ZXJfcmFuZG9tKTsgLy8gcmFuZG9tIHRpbWUgKyBieXRlcwogIHdyaXRlVmVjdG9yKHJ2YWwsIDEsIGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKHNlc3Npb25JZCkpOwogIHJ2YWwucHV0Qnl0ZShjLnNlc3Npb24uY2lwaGVyU3VpdGUuaWRbMF0pOwogIHJ2YWwucHV0Qnl0ZShjLnNlc3Npb24uY2lwaGVyU3VpdGUuaWRbMV0pOwogIHJ2YWwucHV0Qnl0ZShjLnNlc3Npb24uY29tcHJlc3Npb25NZXRob2QpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBDZXJ0aWZpY2F0ZSBtZXNzYWdlLgogKgogKiBXaGVuIHRoaXMgbWVzc2FnZSB3aWxsIGJlIHNlbnQ6CiAqICAgVGhpcyBpcyB0aGUgZmlyc3QgbWVzc2FnZSB0aGUgY2xpZW50IGNhbiBzZW5kIGFmdGVyIHJlY2VpdmluZyBhIHNlcnZlcgogKiAgIGhlbGxvIGRvbmUgbWVzc2FnZSBhbmQgdGhlIGZpcnN0IG1lc3NhZ2UgdGhlIHNlcnZlciBjYW4gc2VuZCBhZnRlcgogKiAgIHNlbmRpbmcgYSBTZXJ2ZXJIZWxsby4gVGhpcyBjbGllbnQgbWVzc2FnZSBpcyBvbmx5IHNlbnQgaWYgdGhlIHNlcnZlcgogKiAgIHJlcXVlc3RzIGEgY2VydGlmaWNhdGUuIElmIG5vIHN1aXRhYmxlIGNlcnRpZmljYXRlIGlzIGF2YWlsYWJsZSwgdGhlCiAqICAgY2xpZW50IHNob3VsZCBzZW5kIGEgY2VydGlmaWNhdGUgbWVzc2FnZSBjb250YWluaW5nIG5vIGNlcnRpZmljYXRlcy4gSWYKICogICBjbGllbnQgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQgYnkgdGhlIHNlcnZlciBmb3IgdGhlIGhhbmRzaGFrZSB0bwogKiAgIGNvbnRpbnVlLCBpdCBtYXkgcmVzcG9uZCB3aXRoIGEgZmF0YWwgaGFuZHNoYWtlIGZhaWx1cmUgYWxlcnQuCiAqCiAqIG9wYXF1ZSBBU04uMUNlcnQ8MS4uMl4yNC0xPjsKICoKICogc3RydWN0IHsKICogICBBU04uMUNlcnQgY2VydGlmaWNhdGVfbGlzdDwwLi4yXjI0LTE+OwogKiB9IENlcnRpZmljYXRlOwogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgQ2VydGlmaWNhdGUgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlQ2VydGlmaWNhdGUgPSBmdW5jdGlvbihjKSB7CiAgLy8gVE9ETzogY2hlY2sgY2VydGlmaWNhdGUgcmVxdWVzdCB0byBlbnN1cmUgdHlwZXMgYXJlIHN1cHBvcnRlZAoKICAvLyBnZXQgYSBjZXJ0aWZpY2F0ZSAoYSBjZXJ0aWZpY2F0ZSBhcyBhIFBFTSBzdHJpbmcpCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICB2YXIgY2VydCA9IG51bGw7CiAgaWYoYy5nZXRDZXJ0aWZpY2F0ZSkgewogICAgdmFyIGhpbnQ7CiAgICBpZihjbGllbnQpIHsKICAgICAgaGludCA9IGMuc2Vzc2lvbi5jZXJ0aWZpY2F0ZVJlcXVlc3Q7CiAgICB9IGVsc2UgewogICAgICBoaW50ID0gYy5zZXNzaW9uLmV4dGVuc2lvbnMuc2VydmVyX25hbWUuc2VydmVyTmFtZUxpc3Q7CiAgICB9CiAgICBjZXJ0ID0gYy5nZXRDZXJ0aWZpY2F0ZShjLCBoaW50KTsKICB9CgogIC8vIGJ1ZmZlciB0byBob2xkIGNlcnRpZmljYXRlIGxpc3QKICB2YXIgY2VydExpc3QgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGlmKGNlcnQgIT09IG51bGwpIHsKICAgIHRyeSB7CiAgICAgIC8vIG5vcm1hbGl6ZSBjZXJ0IHRvIGEgY2hhaW4gb2YgY2VydGlmaWNhdGVzCiAgICAgIGlmKCFmb3JnZS51dGlsLmlzQXJyYXkoY2VydCkpIHsKICAgICAgICBjZXJ0ID0gW2NlcnRdOwogICAgICB9CiAgICAgIHZhciBhc24xID0gbnVsbDsKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGNlcnQubGVuZ3RoOyArK2kpIHsKICAgICAgICB2YXIgbXNnID0gZm9yZ2UucGVtLmRlY29kZShjZXJ0W2ldKVswXTsKICAgICAgICBpZihtc2cudHlwZSAhPT0gJ0NFUlRJRklDQVRFJyAmJgogICAgICAgICAgbXNnLnR5cGUgIT09ICdYNTA5IENFUlRJRklDQVRFJyAmJgogICAgICAgICAgbXNnLnR5cGUgIT09ICdUUlVTVEVEIENFUlRJRklDQVRFJykgewogICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBjZXJ0aWZpY2F0ZSBmcm9tIFBFTTsgUEVNICcgKwogICAgICAgICAgICAnaGVhZGVyIHR5cGUgaXMgbm90ICJDRVJUSUZJQ0FURSIsICJYNTA5IENFUlRJRklDQVRFIiwgb3IgJyArCiAgICAgICAgICAgICciVFJVU1RFRCBDRVJUSUZJQ0FURSIuJyk7CiAgICAgICAgICBlcnJvci5oZWFkZXJUeXBlID0gbXNnLnR5cGU7CiAgICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgICB9CiAgICAgICAgaWYobXNnLnByb2NUeXBlICYmIG1zZy5wcm9jVHlwZS50eXBlID09PSAnRU5DUllQVEVEJykgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgY29udmVydCBjZXJ0aWZpY2F0ZSBmcm9tIFBFTTsgUEVNIGlzIGVuY3J5cHRlZC4nKTsKICAgICAgICB9CgogICAgICAgIHZhciBkZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihtc2cuYm9keSk7CiAgICAgICAgaWYoYXNuMSA9PT0gbnVsbCkgewogICAgICAgICAgYXNuMSA9IGZvcmdlLmFzbjEuZnJvbURlcihkZXIuYnl0ZXMoKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgLy8gY2VydGlmaWNhdGUgZW50cnkgaXMgaXRzZWxmIGEgdmVjdG9yIHdpdGggMyBsZW5ndGggYnl0ZXMKICAgICAgICB2YXIgY2VydEJ1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgICAgICAgd3JpdGVWZWN0b3IoY2VydEJ1ZmZlciwgMywgZGVyKTsKCiAgICAgICAgLy8gYWRkIGNlcnQgdmVjdG9yIHRvIGNlcnQgbGlzdCB2ZWN0b3IKICAgICAgICBjZXJ0TGlzdC5wdXRCdWZmZXIoY2VydEJ1ZmZlcik7CiAgICAgIH0KCiAgICAgIC8vIHNhdmUgY2VydGlmaWNhdGUKICAgICAgY2VydCA9IGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUZyb21Bc24xKGFzbjEpOwogICAgICBpZihjbGllbnQpIHsKICAgICAgICBjLnNlc3Npb24uY2xpZW50Q2VydGlmaWNhdGUgPSBjZXJ0OwogICAgICB9IGVsc2UgewogICAgICAgIGMuc2Vzc2lvbi5zZXJ2ZXJDZXJ0aWZpY2F0ZSA9IGNlcnQ7CiAgICAgIH0KICAgIH0gY2F0Y2goZXgpIHsKICAgICAgcmV0dXJuIGMuZXJyb3IoYywgewogICAgICAgIG1lc3NhZ2U6ICdDb3VsZCBub3Qgc2VuZCBjZXJ0aWZpY2F0ZSBsaXN0LicsCiAgICAgICAgY2F1c2U6IGV4LAogICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZQogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfQoKICAvLyBkZXRlcm1pbmUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZQogIHZhciBsZW5ndGggPSAzICsgY2VydExpc3QubGVuZ3RoKCk7IC8vIGNlcnQgbGlzdCB2ZWN0b3IKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZSk7CiAgcnZhbC5wdXRJbnQyNChsZW5ndGgpOwogIHdyaXRlVmVjdG9yKHJ2YWwsIDMsIGNlcnRMaXN0KTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgQ2xpZW50S2V5RXhjaGFuZ2UgbWVzc2FnZS4KICoKICogV2hlbiB0aGlzIG1lc3NhZ2Ugd2lsbCBiZSBzZW50OgogKiAgIFRoaXMgbWVzc2FnZSBpcyBhbHdheXMgc2VudCBieSB0aGUgY2xpZW50LiBJdCB3aWxsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUKICogICBjbGllbnQgY2VydGlmaWNhdGUgbWVzc2FnZSwgaWYgaXQgaXMgc2VudC4gT3RoZXJ3aXNlIGl0IHdpbGwgYmUgdGhlIGZpcnN0CiAqICAgbWVzc2FnZSBzZW50IGJ5IHRoZSBjbGllbnQgYWZ0ZXIgaXQgcmVjZWl2ZXMgdGhlIHNlcnZlciBoZWxsbyBkb25lCiAqICAgbWVzc2FnZS4KICoKICogTWVhbmluZyBvZiB0aGlzIG1lc3NhZ2U6CiAqICAgV2l0aCB0aGlzIG1lc3NhZ2UsIHRoZSBwcmVtYXN0ZXIgc2VjcmV0IGlzIHNldCwgZWl0aGVyIHRob3VnaCBkaXJlY3QKICogICB0cmFuc21pc3Npb24gb2YgdGhlIFJTQS1lbmNyeXB0ZWQgc2VjcmV0LCBvciBieSB0aGUgdHJhbnNtaXNzaW9uIG9mCiAqICAgRGlmZmllLUhlbGxtYW4gcGFyYW1ldGVycyB3aGljaCB3aWxsIGFsbG93IGVhY2ggc2lkZSB0byBhZ3JlZSB1cG9uIHRoZQogKiAgIHNhbWUgcHJlbWFzdGVyIHNlY3JldC4gV2hlbiB0aGUga2V5IGV4Y2hhbmdlIG1ldGhvZCBpcyBESF9SU0Egb3IgREhfRFNTLAogKiAgIGNsaWVudCBjZXJ0aWZpY2F0aW9uIGhhcyBiZWVuIHJlcXVlc3RlZCwgYW5kIHRoZSBjbGllbnQgd2FzIGFibGUgdG8KICogICByZXNwb25kIHdpdGggYSBjZXJ0aWZpY2F0ZSB3aGljaCBjb250YWluZWQgYSBEaWZmaWUtSGVsbG1hbiBwdWJsaWMga2V5CiAqICAgd2hvc2UgcGFyYW1ldGVycyAoZ3JvdXAgYW5kIGdlbmVyYXRvcikgbWF0Y2hlZCB0aG9zZSBzcGVjaWZpZWQgYnkgdGhlCiAqICAgc2VydmVyIGluIGl0cyBjZXJ0aWZpY2F0ZSwgdGhpcyBtZXNzYWdlIHdpbGwgbm90IGNvbnRhaW4gYW55IGRhdGEuCiAqCiAqIE1lYW5pbmcgb2YgdGhpcyBtZXNzYWdlOgogKiAgIElmIFJTQSBpcyBiZWluZyB1c2VkIGZvciBrZXkgYWdyZWVtZW50IGFuZCBhdXRoZW50aWNhdGlvbiwgdGhlIGNsaWVudAogKiAgIGdlbmVyYXRlcyBhIDQ4LWJ5dGUgcHJlbWFzdGVyIHNlY3JldCwgZW5jcnlwdHMgaXQgdXNpbmcgdGhlIHB1YmxpYyBrZXkKICogICBmcm9tIHRoZSBzZXJ2ZXIncyBjZXJ0aWZpY2F0ZSBvciB0aGUgdGVtcG9yYXJ5IFJTQSBrZXkgcHJvdmlkZWQgaW4gYQogKiAgIHNlcnZlciBrZXkgZXhjaGFuZ2UgbWVzc2FnZSwgYW5kIHNlbmRzIHRoZSByZXN1bHQgaW4gYW4gZW5jcnlwdGVkCiAqICAgcHJlbWFzdGVyIHNlY3JldCBtZXNzYWdlLiBUaGlzIHN0cnVjdHVyZSBpcyBhIHZhcmlhbnQgb2YgdGhlIGNsaWVudAogKiAgIGtleSBleGNoYW5nZSBtZXNzYWdlLCBub3QgYSBtZXNzYWdlIGluIGl0c2VsZi4KICoKICogc3RydWN0IHsKICogICBzZWxlY3QoS2V5RXhjaGFuZ2VBbGdvcml0aG0pIHsKICogICAgIGNhc2UgcnNhOiBFbmNyeXB0ZWRQcmVNYXN0ZXJTZWNyZXQ7CiAqICAgICBjYXNlIGRpZmZpZV9oZWxsbWFuOiBDbGllbnREaWZmaWVIZWxsbWFuUHVibGljOwogKiAgIH0gZXhjaGFuZ2Vfa2V5czsKICogfSBDbGllbnRLZXlFeGNoYW5nZTsKICoKICogc3RydWN0IHsKICogICBQcm90b2NvbFZlcnNpb24gY2xpZW50X3ZlcnNpb247CiAqICAgb3BhcXVlIHJhbmRvbVs0Nl07CiAqIH0gUHJlTWFzdGVyU2VjcmV0OwogKgogKiBzdHJ1Y3QgewogKiAgIHB1YmxpYy1rZXktZW5jcnlwdGVkIFByZU1hc3RlclNlY3JldCBwcmVfbWFzdGVyX3NlY3JldDsKICogfSBFbmNyeXB0ZWRQcmVNYXN0ZXJTZWNyZXQ7CiAqCiAqIEEgcHVibGljLWtleS1lbmNyeXB0ZWQgZWxlbWVudCBpcyBlbmNvZGVkIGFzIGEgdmVjdG9yIDwwLi4yXjE2LTE+LgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgQ2xpZW50S2V5RXhjaGFuZ2UgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlQ2xpZW50S2V5RXhjaGFuZ2UgPSBmdW5jdGlvbihjKSB7CiAgLy8gY3JlYXRlIGJ1ZmZlciB0byBlbmNyeXB0CiAgdmFyIGIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwoKICAvLyBhZGQgaGlnaGVzdCBjbGllbnQtc3VwcG9ydGVkIHByb3RvY29sIHRvIGhlbHAgc2VydmVyIGF2b2lkIHZlcnNpb24KICAvLyByb2xsYmFjayBhdHRhY2tzCiAgYi5wdXRCeXRlKGMuc2Vzc2lvbi5jbGllbnRIZWxsb1ZlcnNpb24ubWFqb3IpOwogIGIucHV0Qnl0ZShjLnNlc3Npb24uY2xpZW50SGVsbG9WZXJzaW9uLm1pbm9yKTsKCiAgLy8gZ2VuZXJhdGUgYW5kIGFkZCA0NiByYW5kb20gYnl0ZXMKICBiLnB1dEJ5dGVzKGZvcmdlLnJhbmRvbS5nZXRCeXRlcyg0NikpOwoKICAvLyBzYXZlIHByZS1tYXN0ZXIgc2VjcmV0CiAgdmFyIHNwID0gYy5zZXNzaW9uLnNwOwogIHNwLnByZV9tYXN0ZXJfc2VjcmV0ID0gYi5nZXRCeXRlcygpOwoKICAvLyBSU0EtZW5jcnlwdCB0aGUgcHJlLW1hc3RlciBzZWNyZXQKICB2YXIga2V5ID0gYy5zZXNzaW9uLnNlcnZlckNlcnRpZmljYXRlLnB1YmxpY0tleTsKICBiID0ga2V5LmVuY3J5cHQoc3AucHJlX21hc3Rlcl9zZWNyZXQpOwoKICAvKiBOb3RlOiBUaGUgZW5jcnlwdGVkIHByZS1tYXN0ZXIgc2VjcmV0IHdpbGwgYmUgc3RvcmVkIGluIGEKICAgIHB1YmxpYy1rZXktZW5jcnlwdGVkIG9wYXF1ZSB2ZWN0b3IgdGhhdCBoYXMgdGhlIGxlbmd0aCBwcmVmaXhlZCB1c2luZwogICAgMiBieXRlcywgc28gaW5jbHVkZSB0aG9zZSAyIGJ5dGVzIGluIHRoZSBoYW5kc2hha2UgbWVzc2FnZSBsZW5ndGguIFRoaXMKICAgIGlzIGRvbmUgYXMgYSBtaW5vciBvcHRpbWl6YXRpb24gaW5zdGVhZCBvZiBjYWxsaW5nIHdyaXRlVmVjdG9yKCkuICovCgogIC8vIGRldGVybWluZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlCiAgdmFyIGxlbmd0aCA9IGIubGVuZ3RoICsgMjsKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5jbGllbnRfa2V5X2V4Y2hhbmdlKTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7CiAgLy8gYWRkIHZlY3RvciBsZW5ndGggYnl0ZXMKICBydmFsLnB1dEludDE2KGIubGVuZ3RoKTsKICBydmFsLnB1dEJ5dGVzKGIpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBTZXJ2ZXJLZXlFeGNoYW5nZSBtZXNzYWdlLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgU2VydmVyS2V5RXhjaGFuZ2UgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlU2VydmVyS2V5RXhjaGFuZ2UgPSBmdW5jdGlvbihjKSB7CiAgLy8gdGhpcyBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIFJTQSwgbm8gRGlmZmllLUhlbGxtYW4gc3VwcG9ydCwKICAvLyBzbyB0aGlzIHJlY29yZCBpcyBlbXB0eQoKICAvLyBkZXRlcm1pbmUgbGVuZ3RoIG9mIHRoZSBoYW5kc2hha2UgbWVzc2FnZQogIHZhciBsZW5ndGggPSAwOwoKICAvLyBidWlsZCByZWNvcmQgZnJhZ21lbnQKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgaWYobGVuZ3RoID4gMCkgewogICAgcnZhbC5wdXRCeXRlKHRscy5IYW5kc2hha2VUeXBlLnNlcnZlcl9rZXlfZXhjaGFuZ2UpOwogICAgcnZhbC5wdXRJbnQyNChsZW5ndGgpOwogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBHZXRzIHRoZSBzaWduZWQgZGF0YSB1c2VkIHRvIHZlcmlmeSBhIGNsaWVudC1zaWRlIGNlcnRpZmljYXRlLiBTZWUKICogdGxzLmNyZWF0ZUNlcnRpZmljYXRlVmVyaWZ5KCkgZm9yIGRldGFpbHMuCiAqCiAqIEBwYXJhbSBjIHRoZSBjb25uZWN0aW9uLgogKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGNhbGxiYWNrIHRvIGNhbGwgb25jZSB0aGUgc2lnbmVkIGRhdGEgaXMgcmVhZHkuCiAqLwp0bHMuZ2V0Q2xpZW50U2lnbmF0dXJlID0gZnVuY3Rpb24oYywgY2FsbGJhY2spIHsKICAvLyBnZW5lcmF0ZSBkYXRhIHRvIFJTQSBlbmNyeXB0CiAgdmFyIGIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIGIucHV0QnVmZmVyKGMuc2Vzc2lvbi5tZDUuZGlnZXN0KCkpOwogIGIucHV0QnVmZmVyKGMuc2Vzc2lvbi5zaGExLmRpZ2VzdCgpKTsKICBiID0gYi5nZXRCeXRlcygpOwoKICAvLyBjcmVhdGUgZGVmYXVsdCBzaWduaW5nIGZ1bmN0aW9uIGFzIG5lY2Vzc2FyeQogIGMuZ2V0U2lnbmF0dXJlID0gYy5nZXRTaWduYXR1cmUgfHwgZnVuY3Rpb24oYywgYiwgY2FsbGJhY2spIHsKICAgIC8vIGRvIHJzYSBlbmNyeXB0aW9uLCBjYWxsIGNhbGxiYWNrCiAgICB2YXIgcHJpdmF0ZUtleSA9IG51bGw7CiAgICBpZihjLmdldFByaXZhdGVLZXkpIHsKICAgICAgdHJ5IHsKICAgICAgICBwcml2YXRlS2V5ID0gYy5nZXRQcml2YXRlS2V5KGMsIGMuc2Vzc2lvbi5jbGllbnRDZXJ0aWZpY2F0ZSk7CiAgICAgICAgcHJpdmF0ZUtleSA9IGZvcmdlLnBraS5wcml2YXRlS2V5RnJvbVBlbShwcml2YXRlS2V5KTsKICAgICAgfSBjYXRjaChleCkgewogICAgICAgIGMuZXJyb3IoYywgewogICAgICAgICAgbWVzc2FnZTogJ0NvdWxkIG5vdCBnZXQgcHJpdmF0ZSBrZXkuJywKICAgICAgICAgIGNhdXNlOiBleCwKICAgICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgICBhbGVydDogewogICAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KICAgIGlmKHByaXZhdGVLZXkgPT09IG51bGwpIHsKICAgICAgYy5lcnJvcihjLCB7CiAgICAgICAgbWVzc2FnZTogJ05vIHByaXZhdGUga2V5IHNldC4nLAogICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmludGVybmFsX2Vycm9yCiAgICAgICAgfQogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgIGIgPSBwcml2YXRlS2V5LnNpZ24oYiwgbnVsbCk7CiAgICB9CiAgICBjYWxsYmFjayhjLCBiKTsKICB9OwoKICAvLyBnZXQgY2xpZW50IHNpZ25hdHVyZQogIGMuZ2V0U2lnbmF0dXJlKGMsIGIsIGNhbGxiYWNrKTsKfTsKCi8qKgogKiBDcmVhdGVzIGEgQ2VydGlmaWNhdGVWZXJpZnkgbWVzc2FnZS4KICoKICogTWVhbmluZyBvZiB0aGlzIG1lc3NhZ2U6CiAqICAgVGhpcyBzdHJ1Y3R1cmUgY29udmV5cyB0aGUgY2xpZW50J3MgRGlmZmllLUhlbGxtYW4gcHVibGljIHZhbHVlCiAqICAgKFljKSBpZiBpdCB3YXMgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gdGhlIGNsaWVudCdzIGNlcnRpZmljYXRlLgogKiAgIFRoZSBlbmNvZGluZyB1c2VkIGZvciBZYyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBlbnVtZXJhdGVkCiAqICAgUHVibGljVmFsdWVFbmNvZGluZy4gVGhpcyBzdHJ1Y3R1cmUgaXMgYSB2YXJpYW50IG9mIHRoZSBjbGllbnQKICogICBrZXkgZXhjaGFuZ2UgbWVzc2FnZSwgbm90IGEgbWVzc2FnZSBpbiBpdHNlbGYuCiAqCiAqIFdoZW4gdGhpcyBtZXNzYWdlIHdpbGwgYmUgc2VudDoKICogICBUaGlzIG1lc3NhZ2UgaXMgdXNlZCB0byBwcm92aWRlIGV4cGxpY2l0IHZlcmlmaWNhdGlvbiBvZiBhIGNsaWVudAogKiAgIGNlcnRpZmljYXRlLiBUaGlzIG1lc3NhZ2UgaXMgb25seSBzZW50IGZvbGxvd2luZyBhIGNsaWVudAogKiAgIGNlcnRpZmljYXRlIHRoYXQgaGFzIHNpZ25pbmcgY2FwYWJpbGl0eSAoaS5lLiBhbGwgY2VydGlmaWNhdGVzCiAqICAgZXhjZXB0IHRob3NlIGNvbnRhaW5pbmcgZml4ZWQgRGlmZmllLUhlbGxtYW4gcGFyYW1ldGVycykuIFdoZW4KICogICBzZW50LCBpdCB3aWxsIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgY2xpZW50IGtleSBleGNoYW5nZSBtZXNzYWdlLgogKgogKiBzdHJ1Y3QgewogKiAgIFNpZ25hdHVyZSBzaWduYXR1cmU7CiAqIH0gQ2VydGlmaWNhdGVWZXJpZnk7CiAqCiAqIENlcnRpZmljYXRlVmVyaWZ5LnNpZ25hdHVyZS5tZDVfaGFzaAogKiAgIE1ENShoYW5kc2hha2VfbWVzc2FnZXMpOwogKgogKiBDZXJ0aWZpY2F0ZS5zaWduYXR1cmUuc2hhX2hhc2gKICogICBTSEEoaGFuZHNoYWtlX21lc3NhZ2VzKTsKICoKICogSGVyZSBoYW5kc2hha2VfbWVzc2FnZXMgcmVmZXJzIHRvIGFsbCBoYW5kc2hha2UgbWVzc2FnZXMgc2VudCBvcgogKiByZWNlaXZlZCBzdGFydGluZyBhdCBjbGllbnQgaGVsbG8gdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcgdGhpcwogKiBtZXNzYWdlLCBpbmNsdWRpbmcgdGhlIHR5cGUgYW5kIGxlbmd0aCBmaWVsZHMgb2YgdGhlIGhhbmRzaGFrZQogKiBtZXNzYWdlcy4KICoKICogc2VsZWN0KFNpZ25hdHVyZUFsZ29yaXRobSkgewogKiAgIGNhc2UgYW5vbnltb3VzOiBzdHJ1Y3QgeyB9OwogKiAgIGNhc2UgcnNhOgogKiAgICAgZGlnaXRhbGx5LXNpZ25lZCBzdHJ1Y3QgewogKiAgICAgICBvcGFxdWUgbWQ1X2hhc2hbMTZdOwogKiAgICAgICBvcGFxdWUgc2hhX2hhc2hbMjBdOwogKiAgICAgfTsKICogICBjYXNlIGRzYToKICogICAgIGRpZ2l0YWxseS1zaWduZWQgc3RydWN0IHsKICogICAgICAgb3BhcXVlIHNoYV9oYXNoWzIwXTsKICogICAgIH07CiAqIH0gU2lnbmF0dXJlOwogKgogKiBJbiBkaWdpdGFsIHNpZ25pbmcsIG9uZS13YXkgaGFzaCBmdW5jdGlvbnMgYXJlIHVzZWQgYXMgaW5wdXQgZm9yIGEKICogc2lnbmluZyBhbGdvcml0aG0uIEEgZGlnaXRhbGx5LXNpZ25lZCBlbGVtZW50IGlzIGVuY29kZWQgYXMgYW4gb3BhcXVlCiAqIHZlY3RvciA8MC4uMl4xNi0xPiwgd2hlcmUgdGhlIGxlbmd0aCBpcyBzcGVjaWZpZWQgYnkgdGhlIHNpZ25pbmcKICogYWxnb3JpdGhtIGFuZCBrZXkuCiAqCiAqIEluIFJTQSBzaWduaW5nLCBhIDM2LWJ5dGUgc3RydWN0dXJlIG9mIHR3byBoYXNoZXMgKG9uZSBTSEEgYW5kIG9uZQogKiBNRDUpIGlzIHNpZ25lZCAoZW5jcnlwdGVkIHdpdGggdGhlIHByaXZhdGUga2V5KS4gSXQgaXMgZW5jb2RlZCB3aXRoCiAqIFBLQ1MgIzEgYmxvY2sgdHlwZSAwIG9yIHR5cGUgMSBhcyBkZXNjcmliZWQgaW4gW1BLQ1MxXS4KICoKICogSW4gRFNTLCB0aGUgMjAgYnl0ZXMgb2YgdGhlIFNIQSBoYXNoIGFyZSBydW4gZGlyZWN0bHkgdGhyb3VnaCB0aGUKICogRGlnaXRhbCBTaWduaW5nIEFsZ29yaXRobSB3aXRoIG5vIGFkZGl0aW9uYWwgaGFzaGluZy4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSBzaWduYXR1cmUgdGhlIHNpZ25hdHVyZSB0byBpbmNsdWRlIGluIHRoZSBtZXNzYWdlLgogKgogKiBAcmV0dXJuIHRoZSBDZXJ0aWZpY2F0ZVZlcmlmeSBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVDZXJ0aWZpY2F0ZVZlcmlmeSA9IGZ1bmN0aW9uKGMsIHNpZ25hdHVyZSkgewogIC8qIE5vdGU6IFRoZSBzaWduYXR1cmUgd2lsbCBiZSBzdG9yZWQgaW4gYSAiZGlnaXRhbGx5LXNpZ25lZCIgb3BhcXVlCiAgICB2ZWN0b3IgdGhhdCBoYXMgdGhlIGxlbmd0aCBwcmVmaXhlZCB1c2luZyAyIGJ5dGVzLCBzbyBpbmNsdWRlIHRob3NlCiAgICAyIGJ5dGVzIGluIHRoZSBoYW5kc2hha2UgbWVzc2FnZSBsZW5ndGguIFRoaXMgaXMgZG9uZSBhcyBhIG1pbm9yCiAgICBvcHRpbWl6YXRpb24gaW5zdGVhZCBvZiBjYWxsaW5nIHdyaXRlVmVjdG9yKCkuICovCgogIC8vIGRldGVybWluZSBsZW5ndGggb2YgdGhlIGhhbmRzaGFrZSBtZXNzYWdlCiAgdmFyIGxlbmd0aCA9IHNpZ25hdHVyZS5sZW5ndGggKyAyOwoKICAvLyBidWlsZCByZWNvcmQgZnJhZ21lbnQKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgcnZhbC5wdXRCeXRlKHRscy5IYW5kc2hha2VUeXBlLmNlcnRpZmljYXRlX3ZlcmlmeSk7CiAgcnZhbC5wdXRJbnQyNChsZW5ndGgpOwogIC8vIGFkZCB2ZWN0b3IgbGVuZ3RoIGJ5dGVzCiAgcnZhbC5wdXRJbnQxNihzaWduYXR1cmUubGVuZ3RoKTsKICBydmFsLnB1dEJ5dGVzKHNpZ25hdHVyZSk7CiAgcmV0dXJuIHJ2YWw7Cn07CgovKioKICogQ3JlYXRlcyBhIENlcnRpZmljYXRlUmVxdWVzdCBtZXNzYWdlLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgQ2VydGlmaWNhdGVSZXF1ZXN0IGJ5dGUgYnVmZmVyLgogKi8KdGxzLmNyZWF0ZUNlcnRpZmljYXRlUmVxdWVzdCA9IGZ1bmN0aW9uKGMpIHsKICAvLyBUT0RPOiBzdXBwb3J0IG90aGVyIGNlcnRpZmljYXRlIHR5cGVzCiAgdmFyIGNlcnRUeXBlcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CgogIC8vIGNvbW1vbiBSU0EgY2VydGlmaWNhdGUgdHlwZQogIGNlcnRUeXBlcy5wdXRCeXRlKDB4MDEpOwoKICAvLyBUT0RPOiB2ZXJpZnkgdGhhdCB0aGlzIGRhdGEgZm9ybWF0IGlzIGNvcnJlY3QKICAvLyBhZGQgZGlzdGluZ3Vpc2hlZCBuYW1lcyBmcm9tIENBIHN0b3JlCiAgdmFyIGNBcyA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgZm9yKHZhciBrZXkgaW4gYy5jYVN0b3JlLmNlcnRzKSB7CiAgICB2YXIgY2VydCA9IGMuY2FTdG9yZS5jZXJ0c1trZXldOwogICAgdmFyIGRuID0gZm9yZ2UucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKGNlcnQuc3ViamVjdCk7CiAgICBjQXMucHV0QnVmZmVyKGZvcmdlLmFzbjEudG9EZXIoZG4pKTsKICB9CgogIC8vIFRPRE86IFRMUyAxLjIrIGhhcyBhIGRpZmZlcmVudCBmb3JtYXQKCiAgLy8gZGV0ZXJtaW5lIGxlbmd0aCBvZiB0aGUgaGFuZHNoYWtlIG1lc3NhZ2UKICB2YXIgbGVuZ3RoID0KICAgIDEgKyBjZXJ0VHlwZXMubGVuZ3RoKCkgKwogICAgMiArIGNBcy5sZW5ndGgoKTsKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5jZXJ0aWZpY2F0ZV9yZXF1ZXN0KTsKICBydmFsLnB1dEludDI0KGxlbmd0aCk7CiAgd3JpdGVWZWN0b3IocnZhbCwgMSwgY2VydFR5cGVzKTsKICB3cml0ZVZlY3RvcihydmFsLCAyLCBjQXMpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBTZXJ2ZXJIZWxsb0RvbmUgbWVzc2FnZS4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqCiAqIEByZXR1cm4gdGhlIFNlcnZlckhlbGxvRG9uZSBieXRlIGJ1ZmZlci4KICovCnRscy5jcmVhdGVTZXJ2ZXJIZWxsb0RvbmUgPSBmdW5jdGlvbihjKSB7CiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5zZXJ2ZXJfaGVsbG9fZG9uZSk7CiAgcnZhbC5wdXRJbnQyNCgwKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgQ2hhbmdlQ2lwaGVyU3BlYyBtZXNzYWdlLgogKgogKiBUaGUgY2hhbmdlIGNpcGhlciBzcGVjIHByb3RvY29sIGV4aXN0cyB0byBzaWduYWwgdHJhbnNpdGlvbnMgaW4KICogY2lwaGVyaW5nIHN0cmF0ZWdpZXMuIFRoZSBwcm90b2NvbCBjb25zaXN0cyBvZiBhIHNpbmdsZSBtZXNzYWdlLAogKiB3aGljaCBpcyBlbmNyeXB0ZWQgYW5kIGNvbXByZXNzZWQgdW5kZXIgdGhlIGN1cnJlbnQgKG5vdCB0aGUgcGVuZGluZykKICogY29ubmVjdGlvbiBzdGF0ZS4gVGhlIG1lc3NhZ2UgY29uc2lzdHMgb2YgYSBzaW5nbGUgYnl0ZSBvZiB2YWx1ZSAxLgogKgogKiBzdHJ1Y3QgewogKiAgIGVudW0geyBjaGFuZ2VfY2lwaGVyX3NwZWMoMSksICgyNTUpIH0gdHlwZTsKICogfSBDaGFuZ2VDaXBoZXJTcGVjOwogKgogKiBAcmV0dXJuIHRoZSBDaGFuZ2VDaXBoZXJTcGVjIGJ5dGUgYnVmZmVyLgogKi8KdGxzLmNyZWF0ZUNoYW5nZUNpcGhlclNwZWMgPSBmdW5jdGlvbigpIHsKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgcnZhbC5wdXRCeXRlKDB4MDEpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBGaW5pc2hlZCBtZXNzYWdlLgogKgogKiBzdHJ1Y3QgewogKiAgIG9wYXF1ZSB2ZXJpZnlfZGF0YVsxMl07CiAqIH0gRmluaXNoZWQ7CiAqCiAqIHZlcmlmeV9kYXRhCiAqICAgUFJGKG1hc3Rlcl9zZWNyZXQsIGZpbmlzaGVkX2xhYmVsLCBNRDUoaGFuZHNoYWtlX21lc3NhZ2VzKSArCiAqICAgU0hBLTEoaGFuZHNoYWtlX21lc3NhZ2VzKSkgWzAuLjExXTsKICoKICogZmluaXNoZWRfbGFiZWwKICogICBGb3IgRmluaXNoZWQgbWVzc2FnZXMgc2VudCBieSB0aGUgY2xpZW50LCB0aGUgc3RyaW5nICJjbGllbnQKICogICBmaW5pc2hlZCIuIEZvciBGaW5pc2hlZCBtZXNzYWdlcyBzZW50IGJ5IHRoZSBzZXJ2ZXIsIHRoZQogKiAgIHN0cmluZyAic2VydmVyIGZpbmlzaGVkIi4KICoKICogaGFuZHNoYWtlX21lc3NhZ2VzCiAqICAgQWxsIG9mIHRoZSBkYXRhIGZyb20gYWxsIGhhbmRzaGFrZSBtZXNzYWdlcyB1cCB0byBidXQgbm90CiAqICAgaW5jbHVkaW5nIHRoaXMgbWVzc2FnZS4gVGhpcyBpcyBvbmx5IGRhdGEgdmlzaWJsZSBhdCB0aGUKICogICBoYW5kc2hha2UgbGF5ZXIgYW5kIGRvZXMgbm90IGluY2x1ZGUgcmVjb3JkIGxheWVyIGhlYWRlcnMuCiAqICAgVGhpcyBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiBhbGwgdGhlIEhhbmRzaGFrZSBzdHJ1Y3R1cmVzIGFzCiAqICAgZGVmaW5lZCBpbiA3LjQgZXhjaGFuZ2VkIHRodXMgZmFyLgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgRmluaXNoZWQgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlRmluaXNoZWQgPSBmdW5jdGlvbihjKSB7CiAgLy8gZ2VuZXJhdGUgdmVyaWZ5X2RhdGEKICB2YXIgYiA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgYi5wdXRCdWZmZXIoYy5zZXNzaW9uLm1kNS5kaWdlc3QoKSk7CiAgYi5wdXRCdWZmZXIoYy5zZXNzaW9uLnNoYTEuZGlnZXN0KCkpOwoKICAvLyBUT0RPOiBkZXRlcm1pbmUgcHJmIGZ1bmN0aW9uIGFuZCB2ZXJpZnkgbGVuZ3RoIGZvciBUTFMgMS4yCiAgdmFyIGNsaWVudCA9IChjLmVudGl0eSA9PT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KTsKICB2YXIgc3AgPSBjLnNlc3Npb24uc3A7CiAgdmFyIHZkbCA9IDEyOwogIHZhciBwcmYgPSBwcmZfVExTMTsKICB2YXIgbGFiZWwgPSBjbGllbnQgPyAnY2xpZW50IGZpbmlzaGVkJyA6ICdzZXJ2ZXIgZmluaXNoZWQnOwogIGIgPSBwcmYoc3AubWFzdGVyX3NlY3JldCwgbGFiZWwsIGIuZ2V0Qnl0ZXMoKSwgdmRsKTsKCiAgLy8gYnVpbGQgcmVjb3JkIGZyYWdtZW50CiAgdmFyIHJ2YWwgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIHJ2YWwucHV0Qnl0ZSh0bHMuSGFuZHNoYWtlVHlwZS5maW5pc2hlZCk7CiAgcnZhbC5wdXRJbnQyNChiLmxlbmd0aCgpKTsKICBydmFsLnB1dEJ1ZmZlcihiKTsKICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBDcmVhdGVzIGEgSGVhcnRiZWF0TWVzc2FnZSAoU2VlIFJGQyA2NTIwKS4KICoKICogc3RydWN0IHsKICogICBIZWFydGJlYXRNZXNzYWdlVHlwZSB0eXBlOwogKiAgIHVpbnQxNiBwYXlsb2FkX2xlbmd0aDsKICogICBvcGFxdWUgcGF5bG9hZFtIZWFydGJlYXRNZXNzYWdlLnBheWxvYWRfbGVuZ3RoXTsKICogICBvcGFxdWUgcGFkZGluZ1twYWRkaW5nX2xlbmd0aF07CiAqIH0gSGVhcnRiZWF0TWVzc2FnZTsKICoKICogVGhlIHRvdGFsIGxlbmd0aCBvZiBhIEhlYXJ0YmVhdE1lc3NhZ2UgTVVTVCBOT1QgZXhjZWVkIDJeMTQgb3IKICogbWF4X2ZyYWdtZW50X2xlbmd0aCB3aGVuIG5lZ290aWF0ZWQgYXMgZGVmaW5lZCBpbiBbUkZDNjA2Nl0uCiAqCiAqIHR5cGU6IFRoZSBtZXNzYWdlIHR5cGUsIGVpdGhlciBoZWFydGJlYXRfcmVxdWVzdCBvciBoZWFydGJlYXRfcmVzcG9uc2UuCiAqCiAqIHBheWxvYWRfbGVuZ3RoOiBUaGUgbGVuZ3RoIG9mIHRoZSBwYXlsb2FkLgogKgogKiBwYXlsb2FkOiBUaGUgcGF5bG9hZCBjb25zaXN0cyBvZiBhcmJpdHJhcnkgY29udGVudC4KICoKICogcGFkZGluZzogVGhlIHBhZGRpbmcgaXMgcmFuZG9tIGNvbnRlbnQgdGhhdCBNVVNUIGJlIGlnbm9yZWQgYnkgdGhlCiAqICAgcmVjZWl2ZXIuIFRoZSBsZW5ndGggb2YgYSBIZWFydGJlYXRNZXNzYWdlIGlzIFRMU1BsYWludGV4dC5sZW5ndGgKICogICBmb3IgVExTIGFuZCBEVExTUGxhaW50ZXh0Lmxlbmd0aCBmb3IgRFRMUy4gRnVydGhlcm1vcmUsIHRoZQogKiAgIGxlbmd0aCBvZiB0aGUgdHlwZSBmaWVsZCBpcyAxIGJ5dGUsIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZQogKiAgIHBheWxvYWRfbGVuZ3RoIGlzIDIuIFRoZXJlZm9yZSwgdGhlIHBhZGRpbmdfbGVuZ3RoIGlzCiAqICAgVExTUGxhaW50ZXh0Lmxlbmd0aCAtIHBheWxvYWRfbGVuZ3RoIC0gMyBmb3IgVExTIGFuZAogKiAgIERUTFNQbGFpbnRleHQubGVuZ3RoIC0gcGF5bG9hZF9sZW5ndGggLSAzIGZvciBEVExTLiBUaGUKICogICBwYWRkaW5nX2xlbmd0aCBNVVNUIGJlIGF0IGxlYXN0IDE2LgogKgogKiBUaGUgc2VuZGVyIG9mIGEgSGVhcnRiZWF0TWVzc2FnZSBNVVNUIHVzZSBhIHJhbmRvbSBwYWRkaW5nIG9mIGF0CiAqIGxlYXN0IDE2IGJ5dGVzLiBUaGUgcGFkZGluZyBvZiBhIHJlY2VpdmVkIEhlYXJ0YmVhdE1lc3NhZ2UgbWVzc2FnZQogKiBNVVNUIGJlIGlnbm9yZWQuCiAqCiAqIElmIHRoZSBwYXlsb2FkX2xlbmd0aCBvZiBhIHJlY2VpdmVkIEhlYXJ0YmVhdE1lc3NhZ2UgaXMgdG9vIGxhcmdlLAogKiB0aGUgcmVjZWl2ZWQgSGVhcnRiZWF0TWVzc2FnZSBNVVNUIGJlIGRpc2NhcmRlZCBzaWxlbnRseS4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqIEBwYXJhbSB0eXBlIHRoZSB0bHMuSGVhcnRiZWF0TWVzc2FnZVR5cGUuCiAqIEBwYXJhbSBwYXlsb2FkIHRoZSBoZWFydGJlYXQgZGF0YSB0byBzZW5kIGFzIHRoZSBwYXlsb2FkLgogKiBAcGFyYW0gW3BheWxvYWRMZW5ndGhdIHRoZSBwYXlsb2FkIGxlbmd0aCB0byB1c2UsIGRlZmF1bHRzIHRvIHRoZQogKiAgICAgICAgICBhY3R1YWwgcGF5bG9hZCBsZW5ndGguCiAqCiAqIEByZXR1cm4gdGhlIEhlYXJ0YmVhdFJlcXVlc3QgYnl0ZSBidWZmZXIuCiAqLwp0bHMuY3JlYXRlSGVhcnRiZWF0ID0gZnVuY3Rpb24odHlwZSwgcGF5bG9hZCwgcGF5bG9hZExlbmd0aCkgewogIGlmKHR5cGVvZiBwYXlsb2FkTGVuZ3RoID09PSAndW5kZWZpbmVkJykgewogICAgcGF5bG9hZExlbmd0aCA9IHBheWxvYWQubGVuZ3RoOwogIH0KICAvLyBidWlsZCByZWNvcmQgZnJhZ21lbnQKICB2YXIgcnZhbCA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgcnZhbC5wdXRCeXRlKHR5cGUpOyAgICAgICAgICAgICAgIC8vIGhlYXJ0YmVhdCBtZXNzYWdlIHR5cGUKICBydmFsLnB1dEludDE2KHBheWxvYWRMZW5ndGgpOyAgICAgLy8gcGF5bG9hZCBsZW5ndGgKICBydmFsLnB1dEJ5dGVzKHBheWxvYWQpOyAgICAgICAgICAgLy8gcGF5bG9hZAogIC8vIHBhZGRpbmcKICB2YXIgcGxhaW50ZXh0TGVuZ3RoID0gcnZhbC5sZW5ndGgoKTsKICB2YXIgcGFkZGluZ0xlbmd0aCA9IE1hdGgubWF4KDE2LCBwbGFpbnRleHRMZW5ndGggLSBwYXlsb2FkTGVuZ3RoIC0gMyk7CiAgcnZhbC5wdXRCeXRlcyhmb3JnZS5yYW5kb20uZ2V0Qnl0ZXMocGFkZGluZ0xlbmd0aCkpOwogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIEZyYWdtZW50cywgY29tcHJlc3NlcywgZW5jcnlwdHMsIGFuZCBxdWV1ZXMgYSByZWNvcmQgZm9yIGRlbGl2ZXJ5LgogKgogKiBAcGFyYW0gYyB0aGUgY29ubmVjdGlvbi4KICogQHBhcmFtIHJlY29yZCB0aGUgcmVjb3JkIHRvIHF1ZXVlLgogKi8KdGxzLnF1ZXVlID0gZnVuY3Rpb24oYywgcmVjb3JkKSB7CiAgLy8gZXJyb3IgZHVyaW5nIHJlY29yZCBjcmVhdGlvbgogIGlmKCFyZWNvcmQpIHsKICAgIHJldHVybjsKICB9CgogIC8vIGlmIHRoZSByZWNvcmQgaXMgYSBoYW5kc2hha2UgcmVjb3JkLCB1cGRhdGUgaGFuZHNoYWtlIGhhc2hlcwogIGlmKHJlY29yZC50eXBlID09PSB0bHMuQ29udGVudFR5cGUuaGFuZHNoYWtlKSB7CiAgICB2YXIgYnl0ZXMgPSByZWNvcmQuZnJhZ21lbnQuYnl0ZXMoKTsKICAgIGMuc2Vzc2lvbi5tZDUudXBkYXRlKGJ5dGVzKTsKICAgIGMuc2Vzc2lvbi5zaGExLnVwZGF0ZShieXRlcyk7CiAgICBieXRlcyA9IG51bGw7CiAgfQoKICAvLyBoYW5kbGUgcmVjb3JkIGZyYWdtZW50YXRpb24KICB2YXIgcmVjb3JkczsKICBpZihyZWNvcmQuZnJhZ21lbnQubGVuZ3RoKCkgPD0gdGxzLk1heEZyYWdtZW50KSB7CiAgICByZWNvcmRzID0gW3JlY29yZF07CiAgfSBlbHNlIHsKICAgIC8vIGZyYWdtZW50IGRhdGEgYXMgbG9uZyBhcyBpdCBpcyB0b28gbG9uZwogICAgcmVjb3JkcyA9IFtdOwogICAgdmFyIGRhdGEgPSByZWNvcmQuZnJhZ21lbnQuYnl0ZXMoKTsKICAgIHdoaWxlKGRhdGEubGVuZ3RoID4gdGxzLk1heEZyYWdtZW50KSB7CiAgICAgIHJlY29yZHMucHVzaCh0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiByZWNvcmQudHlwZSwKICAgICAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihkYXRhLnNsaWNlKDAsIHRscy5NYXhGcmFnbWVudCkpCiAgICAgIH0pKTsKICAgICAgZGF0YSA9IGRhdGEuc2xpY2UodGxzLk1heEZyYWdtZW50KTsKICAgIH0KICAgIC8vIGFkZCBsYXN0IHJlY29yZAogICAgaWYoZGF0YS5sZW5ndGggPiAwKSB7CiAgICAgIHJlY29yZHMucHVzaCh0bHMuY3JlYXRlUmVjb3JkKGMsIHsKICAgICAgICB0eXBlOiByZWNvcmQudHlwZSwKICAgICAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihkYXRhKQogICAgICB9KSk7CiAgICB9CiAgfQoKICAvLyBjb21wcmVzcyBhbmQgZW5jcnlwdCBhbGwgZnJhZ21lbnRlZCByZWNvcmRzCiAgZm9yKHZhciBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoICYmICFjLmZhaWw7ICsraSkgewogICAgLy8gdXBkYXRlIHRoZSByZWNvcmQgdXNpbmcgY3VycmVudCB3cml0ZSBzdGF0ZQogICAgdmFyIHJlYyA9IHJlY29yZHNbaV07CiAgICB2YXIgcyA9IGMuc3RhdGUuY3VycmVudC53cml0ZTsKICAgIGlmKHMudXBkYXRlKGMsIHJlYykpIHsKICAgICAgLy8gc3RvcmUgcmVjb3JkCiAgICAgIGMucmVjb3Jkcy5wdXNoKHJlYyk7CiAgICB9CiAgfQp9OwoKLyoqCiAqIEZsdXNoZXMgYWxsIHF1ZXVlZCByZWNvcmRzIHRvIHRoZSBvdXRwdXQgYnVmZmVyIGFuZCBjYWxscyB0aGUKICogdGxzRGF0YVJlYWR5KCkgaGFuZGxlciBvbiB0aGUgZ2l2ZW4gY29ubmVjdGlvbi4KICoKICogQHBhcmFtIGMgdGhlIGNvbm5lY3Rpb24uCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdGxzLmZsdXNoID0gZnVuY3Rpb24oYykgewogIGZvcih2YXIgaSA9IDA7IGkgPCBjLnJlY29yZHMubGVuZ3RoOyArK2kpIHsKICAgIHZhciByZWNvcmQgPSBjLnJlY29yZHNbaV07CgogICAgLy8gYWRkIHJlY29yZCBoZWFkZXIgYW5kIGZyYWdtZW50CiAgICBjLnRsc0RhdGEucHV0Qnl0ZShyZWNvcmQudHlwZSk7CiAgICBjLnRsc0RhdGEucHV0Qnl0ZShyZWNvcmQudmVyc2lvbi5tYWpvcik7CiAgICBjLnRsc0RhdGEucHV0Qnl0ZShyZWNvcmQudmVyc2lvbi5taW5vcik7CiAgICBjLnRsc0RhdGEucHV0SW50MTYocmVjb3JkLmZyYWdtZW50Lmxlbmd0aCgpKTsKICAgIGMudGxzRGF0YS5wdXRCdWZmZXIoYy5yZWNvcmRzW2ldLmZyYWdtZW50KTsKICB9CiAgYy5yZWNvcmRzID0gW107CiAgcmV0dXJuIGMudGxzRGF0YVJlYWR5KGMpOwp9OwoKLyoqCiAqIE1hcHMgYSBwa2kuY2VydGlmaWNhdGVFcnJvciB0byBhIHRscy5BbGVydC5EZXNjcmlwdGlvbi4KICoKICogQHBhcmFtIGVycm9yIHRoZSBlcnJvciB0byBtYXAuCiAqCiAqIEByZXR1cm4gdGhlIGFsZXJ0IGRlc2NyaXB0aW9uLgogKi8KdmFyIF9jZXJ0RXJyb3JUb0FsZXJ0RGVzYyA9IGZ1bmN0aW9uKGVycm9yKSB7CiAgc3dpdGNoKGVycm9yKSB7CiAgY2FzZSB0cnVlOgogICAgcmV0dXJuIHRydWU7CiAgY2FzZSBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGU6CiAgICByZXR1cm4gdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmJhZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVuc3VwcG9ydGVkX2NlcnRpZmljYXRlOgogICAgcmV0dXJuIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX3Jldm9rZWQ6CiAgICByZXR1cm4gdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Jldm9rZWQ7CiAgY2FzZSBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV9leHBpcmVkOgogICAgcmV0dXJuIHRscy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9leHBpcmVkOwogIGNhc2UgZm9yZ2UucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfdW5rbm93bjoKICAgIHJldHVybiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfdW5rbm93bjsKICBjYXNlIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2E6CiAgICByZXR1cm4gdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVua25vd25fY2E7CiAgZGVmYXVsdDoKICAgIHJldHVybiB0bHMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlOwogIH0KfTsKCi8qKgogKiBNYXBzIGEgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uIHRvIGEgcGtpLmNlcnRpZmljYXRlRXJyb3IuCiAqCiAqIEBwYXJhbSBkZXNjIHRoZSBhbGVydCBkZXNjcmlwdGlvbi4KICoKICogQHJldHVybiB0aGUgY2VydGlmaWNhdGUgZXJyb3IuCiAqLwp2YXIgX2FsZXJ0RGVzY1RvQ2VydEVycm9yID0gZnVuY3Rpb24oZGVzYykgewogIHN3aXRjaChkZXNjKSB7CiAgY2FzZSB0cnVlOgogICAgcmV0dXJuIHRydWU7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uYmFkX2NlcnRpZmljYXRlOgogICAgcmV0dXJuIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmJhZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZToKICAgIHJldHVybiBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci51bnN1cHBvcnRlZF9jZXJ0aWZpY2F0ZTsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi5jZXJ0aWZpY2F0ZV9yZXZva2VkOgogICAgcmV0dXJuIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLmNlcnRpZmljYXRlX3Jldm9rZWQ7CiAgY2FzZSB0bHMuQWxlcnQuRGVzY3JpcHRpb24uY2VydGlmaWNhdGVfZXhwaXJlZDoKICAgIHJldHVybiBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5jZXJ0aWZpY2F0ZV9leHBpcmVkOwogIGNhc2UgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNlcnRpZmljYXRlX3Vua25vd246CiAgICByZXR1cm4gZm9yZ2UucGtpLmNlcnRpZmljYXRlRXJyb3IuY2VydGlmaWNhdGVfdW5rbm93bjsKICBjYXNlIHRscy5BbGVydC5EZXNjcmlwdGlvbi51bmtub3duX2NhOgogICAgcmV0dXJuIGZvcmdlLnBraS5jZXJ0aWZpY2F0ZUVycm9yLnVua25vd25fY2E7CiAgZGVmYXVsdDoKICAgIHJldHVybiBmb3JnZS5wa2kuY2VydGlmaWNhdGVFcnJvci5iYWRfY2VydGlmaWNhdGU7CiAgfQp9OwoKLyoqCiAqIFZlcmlmaWVzIGEgY2VydGlmaWNhdGUgY2hhaW4gYWdhaW5zdCB0aGUgZ2l2ZW4gY29ubmVjdGlvbidzCiAqIENlcnRpZmljYXRlIEF1dGhvcml0eSBzdG9yZS4KICoKICogQHBhcmFtIGMgdGhlIFRMUyBjb25uZWN0aW9uLgogKiBAcGFyYW0gY2hhaW4gdGhlIGNlcnRpZmljYXRlIGNoYWluIHRvIHZlcmlmeSwgd2l0aCB0aGUgcm9vdCBvciBoaWdoZXN0CiAqICAgICAgICAgIGF1dGhvcml0eSBhdCB0aGUgZW5kLgogKgogKiBAcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bCwgZmFsc2UgaWYgbm90LgogKi8KdGxzLnZlcmlmeUNlcnRpZmljYXRlQ2hhaW4gPSBmdW5jdGlvbihjLCBjaGFpbikgewogIHRyeSB7CiAgICAvLyB2ZXJpZnkgY2hhaW4KICAgIGZvcmdlLnBraS52ZXJpZnlDZXJ0aWZpY2F0ZUNoYWluKGMuY2FTdG9yZSwgY2hhaW4sCiAgICAgIGZ1bmN0aW9uIHZlcmlmeSh2ZmQsIGRlcHRoLCBjaGFpbikgewogICAgICAgIC8vIGNvbnZlcnQgcGtpLmNlcnRpZmljYXRlRXJyb3IgdG8gdGxzIGFsZXJ0IGRlc2NyaXB0aW9uCiAgICAgICAgdmFyIGRlc2MgPSBfY2VydEVycm9yVG9BbGVydERlc2ModmZkKTsKCiAgICAgICAgLy8gY2FsbCBhcHBsaWNhdGlvbiBjYWxsYmFjawogICAgICAgIHZhciByZXQgPSBjLnZlcmlmeShjLCB2ZmQsIGRlcHRoLCBjaGFpbik7CiAgICAgICAgaWYocmV0ICE9PSB0cnVlKSB7CiAgICAgICAgICBpZih0eXBlb2YgcmV0ID09PSAnb2JqZWN0JyAmJiAhZm9yZ2UudXRpbC5pc0FycmF5KHJldCkpIHsKICAgICAgICAgICAgLy8gdGhyb3cgY3VzdG9tIGVycm9yCiAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignVGhlIGFwcGxpY2F0aW9uIHJlamVjdGVkIHRoZSBjZXJ0aWZpY2F0ZS4nKTsKICAgICAgICAgICAgZXJyb3Iuc2VuZCA9IHRydWU7CiAgICAgICAgICAgIGVycm9yLmFsZXJ0ID0gewogICAgICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5iYWRfY2VydGlmaWNhdGUKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYocmV0Lm1lc3NhZ2UpIHsKICAgICAgICAgICAgICBlcnJvci5tZXNzYWdlID0gcmV0Lm1lc3NhZ2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYocmV0LmFsZXJ0KSB7CiAgICAgICAgICAgICAgZXJyb3IuYWxlcnQuZGVzY3JpcHRpb24gPSByZXQuYWxlcnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgZXJyb3I7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gY29udmVydCB0bHMgYWxlcnQgZGVzY3JpcHRpb24gdG8gcGtpLmNlcnRpZmljYXRlRXJyb3IKICAgICAgICAgIGlmKHJldCAhPT0gdmZkKSB7CiAgICAgICAgICAgIHJldCA9IF9hbGVydERlc2NUb0NlcnRFcnJvcihyZXQpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHJldDsKICAgICAgfSk7CiAgfSBjYXRjaChleCkgewogICAgLy8gYnVpbGQgdGxzIGVycm9yIGlmIG5vdCBhbHJlYWR5IGN1c3RvbWl6ZWQKICAgIHZhciBlcnIgPSBleDsKICAgIGlmKHR5cGVvZiBlcnIgIT09ICdvYmplY3QnIHx8IGZvcmdlLnV0aWwuaXNBcnJheShlcnIpKSB7CiAgICAgIGVyciA9IHsKICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgIGFsZXJ0OiB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgICAgZGVzY3JpcHRpb246IF9jZXJ0RXJyb3JUb0FsZXJ0RGVzYyhleCkKICAgICAgICB9CiAgICAgIH07CiAgICB9CiAgICBpZighKCdzZW5kJyBpbiBlcnIpKSB7CiAgICAgIGVyci5zZW5kID0gdHJ1ZTsKICAgIH0KICAgIGlmKCEoJ2FsZXJ0JyBpbiBlcnIpKSB7CiAgICAgIGVyci5hbGVydCA9IHsKICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLmZhdGFsLAogICAgICAgIGRlc2NyaXB0aW9uOiBfY2VydEVycm9yVG9BbGVydERlc2MoZXJyLmVycm9yKQogICAgICB9OwogICAgfQoKICAgIC8vIHNlbmQgZXJyb3IKICAgIGMuZXJyb3IoYywgZXJyKTsKICB9CgogIHJldHVybiAhYy5mYWlsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgVExTIHNlc3Npb24gY2FjaGUuCiAqCiAqIEBwYXJhbSBjYWNoZSBvcHRpb25hbCBtYXAgb2Ygc2Vzc2lvbiBJRCB0byBjYWNoZWQgc2Vzc2lvbi4KICogQHBhcmFtIGNhcGFjaXR5IHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoZSBjYWNoZSAoZGVmYXVsdDogMTAwKS4KICoKICogQHJldHVybiB0aGUgbmV3IFRMUyBzZXNzaW9uIGNhY2hlLgogKi8KdGxzLmNyZWF0ZVNlc3Npb25DYWNoZSA9IGZ1bmN0aW9uKGNhY2hlLCBjYXBhY2l0eSkgewogIHZhciBydmFsID0gbnVsbDsKCiAgLy8gYXNzdW1lIGlucHV0IGlzIGFscmVhZHkgYSBzZXNzaW9uIGNhY2hlIG9iamVjdAogIGlmKGNhY2hlICYmIGNhY2hlLmdldFNlc3Npb24gJiYgY2FjaGUuc2V0U2Vzc2lvbiAmJiBjYWNoZS5vcmRlcikgewogICAgcnZhbCA9IGNhY2hlOwogIH0gZWxzZSB7CiAgICAvLyBjcmVhdGUgY2FjaGUKICAgIHJ2YWwgPSB7fTsKICAgIHJ2YWwuY2FjaGUgPSBjYWNoZSB8fCB7fTsKICAgIHJ2YWwuY2FwYWNpdHkgPSBNYXRoLm1heChjYXBhY2l0eSB8fCAxMDAsIDEpOwogICAgcnZhbC5vcmRlciA9IFtdOwoKICAgIC8vIHN0b3JlIG9yZGVyIGZvciBzZXNzaW9ucywgZGVsZXRlIHNlc3Npb24gb3ZlcmZsb3cKICAgIGZvcih2YXIga2V5IGluIGNhY2hlKSB7CiAgICAgIGlmKHJ2YWwub3JkZXIubGVuZ3RoIDw9IGNhcGFjaXR5KSB7CiAgICAgICAgcnZhbC5vcmRlci5wdXNoKGtleSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGVsZXRlIGNhY2hlW2tleV07CiAgICAgIH0KICAgIH0KCiAgICAvLyBnZXQgYSBzZXNzaW9uIGZyb20gYSBzZXNzaW9uIElEIChvciBnZXQgYW55IHNlc3Npb24pCiAgICBydmFsLmdldFNlc3Npb24gPSBmdW5jdGlvbihzZXNzaW9uSWQpIHsKICAgICAgdmFyIHNlc3Npb24gPSBudWxsOwogICAgICB2YXIga2V5ID0gbnVsbDsKCiAgICAgIC8vIGlmIHNlc3Npb24gSUQgcHJvdmlkZWQsIHVzZSBpdAogICAgICBpZihzZXNzaW9uSWQpIHsKICAgICAgICBrZXkgPSBmb3JnZS51dGlsLmJ5dGVzVG9IZXgoc2Vzc2lvbklkKTsKICAgICAgfSBlbHNlIGlmKHJ2YWwub3JkZXIubGVuZ3RoID4gMCkgewogICAgICAgIC8vIGdldCBmaXJzdCBzZXNzaW9uIGZyb20gY2FjaGUKICAgICAgICBrZXkgPSBydmFsLm9yZGVyWzBdOwogICAgICB9CgogICAgICBpZihrZXkgIT09IG51bGwgJiYga2V5IGluIHJ2YWwuY2FjaGUpIHsKICAgICAgICAvLyBnZXQgY2FjaGVkIHNlc3Npb24gYW5kIHJlbW92ZSBmcm9tIGNhY2hlCiAgICAgICAgc2Vzc2lvbiA9IHJ2YWwuY2FjaGVba2V5XTsKICAgICAgICBkZWxldGUgcnZhbC5jYWNoZVtrZXldOwogICAgICAgIGZvcih2YXIgaSBpbiBydmFsLm9yZGVyKSB7CiAgICAgICAgICBpZihydmFsLm9yZGVyW2ldID09PSBrZXkpIHsKICAgICAgICAgICAgcnZhbC5vcmRlci5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHNlc3Npb247CiAgICB9OwoKICAgIC8vIHNldCBhIHNlc3Npb24gaW4gdGhlIGNhY2hlCiAgICBydmFsLnNldFNlc3Npb24gPSBmdW5jdGlvbihzZXNzaW9uSWQsIHNlc3Npb24pIHsKICAgICAgLy8gcmVtb3ZlIHNlc3Npb24gZnJvbSBjYWNoZSBpZiBhdCBjYXBhY2l0eQogICAgICBpZihydmFsLm9yZGVyLmxlbmd0aCA9PT0gcnZhbC5jYXBhY2l0eSkgewogICAgICAgIHZhciBrZXkgPSBydmFsLm9yZGVyLnNoaWZ0KCk7CiAgICAgICAgZGVsZXRlIHJ2YWwuY2FjaGVba2V5XTsKICAgICAgfQogICAgICAvLyBhZGQgc2Vzc2lvbiB0byBjYWNoZQogICAgICB2YXIga2V5ID0gZm9yZ2UudXRpbC5ieXRlc1RvSGV4KHNlc3Npb25JZCk7CiAgICAgIHJ2YWwub3JkZXIucHVzaChrZXkpOwogICAgICBydmFsLmNhY2hlW2tleV0gPSBzZXNzaW9uOwogICAgfTsKICB9CgogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgVExTIGNvbm5lY3Rpb24uCiAqCiAqIFNlZSBwdWJsaWMgY3JlYXRlQ29ubmVjdGlvbigpIGRvY3MgZm9yIG1vcmUgZGV0YWlscy4KICoKICogQHBhcmFtIG9wdGlvbnMgdGhlIG9wdGlvbnMgZm9yIHRoaXMgY29ubmVjdGlvbi4KICoKICogQHJldHVybiB0aGUgbmV3IFRMUyBjb25uZWN0aW9uLgogKi8KdGxzLmNyZWF0ZUNvbm5lY3Rpb24gPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgdmFyIGNhU3RvcmUgPSBudWxsOwogIGlmKG9wdGlvbnMuY2FTdG9yZSkgewogICAgLy8gaWYgQ0Egc3RvcmUgaXMgYW4gYXJyYXksIGNvbnZlcnQgaXQgdG8gYSBDQSBzdG9yZSBvYmplY3QKICAgIGlmKGZvcmdlLnV0aWwuaXNBcnJheShvcHRpb25zLmNhU3RvcmUpKSB7CiAgICAgIGNhU3RvcmUgPSBmb3JnZS5wa2kuY3JlYXRlQ2FTdG9yZShvcHRpb25zLmNhU3RvcmUpOwogICAgfSBlbHNlIHsKICAgICAgY2FTdG9yZSA9IG9wdGlvbnMuY2FTdG9yZTsKICAgIH0KICB9IGVsc2UgewogICAgLy8gY3JlYXRlIGVtcHR5IENBIHN0b3JlCiAgICBjYVN0b3JlID0gZm9yZ2UucGtpLmNyZWF0ZUNhU3RvcmUoKTsKICB9CgogIC8vIHNldHVwIGRlZmF1bHQgY2lwaGVyIHN1aXRlcwogIHZhciBjaXBoZXJTdWl0ZXMgPSBvcHRpb25zLmNpcGhlclN1aXRlcyB8fCBudWxsOwogIGlmKGNpcGhlclN1aXRlcyA9PT0gbnVsbCkgewogICAgY2lwaGVyU3VpdGVzID0gW107CiAgICBmb3IodmFyIGtleSBpbiB0bHMuQ2lwaGVyU3VpdGVzKSB7CiAgICAgIGNpcGhlclN1aXRlcy5wdXNoKHRscy5DaXBoZXJTdWl0ZXNba2V5XSk7CiAgICB9CiAgfQoKICAvLyBzZXQgZGVmYXVsdCBlbnRpdHkKICB2YXIgZW50aXR5ID0gKG9wdGlvbnMuc2VydmVyIHx8IGZhbHNlKSA/CiAgICB0bHMuQ29ubmVjdGlvbkVuZC5zZXJ2ZXIgOiB0bHMuQ29ubmVjdGlvbkVuZC5jbGllbnQ7CgogIC8vIGNyZWF0ZSBzZXNzaW9uIGNhY2hlIGlmIHJlcXVlc3RlZAogIHZhciBzZXNzaW9uQ2FjaGUgPSBvcHRpb25zLnNlc3Npb25DYWNoZSA/CiAgICB0bHMuY3JlYXRlU2Vzc2lvbkNhY2hlKG9wdGlvbnMuc2Vzc2lvbkNhY2hlKSA6IG51bGw7CgogIC8vIGNyZWF0ZSBUTFMgY29ubmVjdGlvbgogIHZhciBjID0gewogICAgdmVyc2lvbjoge21ham9yOiB0bHMuVmVyc2lvbi5tYWpvciwgbWlub3I6IHRscy5WZXJzaW9uLm1pbm9yfSwKICAgIGVudGl0eTogZW50aXR5LAogICAgc2Vzc2lvbklkOiBvcHRpb25zLnNlc3Npb25JZCwKICAgIGNhU3RvcmU6IGNhU3RvcmUsCiAgICBzZXNzaW9uQ2FjaGU6IHNlc3Npb25DYWNoZSwKICAgIGNpcGhlclN1aXRlczogY2lwaGVyU3VpdGVzLAogICAgY29ubmVjdGVkOiBvcHRpb25zLmNvbm5lY3RlZCwKICAgIHZpcnR1YWxIb3N0OiBvcHRpb25zLnZpcnR1YWxIb3N0IHx8IG51bGwsCiAgICB2ZXJpZnlDbGllbnQ6IG9wdGlvbnMudmVyaWZ5Q2xpZW50IHx8IGZhbHNlLAogICAgdmVyaWZ5OiBvcHRpb25zLnZlcmlmeSB8fCBmdW5jdGlvbihjbiwgdmZkLCBkcHRoLCBjdHMpIHtyZXR1cm4gdmZkO30sCiAgICBnZXRDZXJ0aWZpY2F0ZTogb3B0aW9ucy5nZXRDZXJ0aWZpY2F0ZSB8fCBudWxsLAogICAgZ2V0UHJpdmF0ZUtleTogb3B0aW9ucy5nZXRQcml2YXRlS2V5IHx8IG51bGwsCiAgICBnZXRTaWduYXR1cmU6IG9wdGlvbnMuZ2V0U2lnbmF0dXJlIHx8IG51bGwsCiAgICBpbnB1dDogZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKSwKICAgIHRsc0RhdGE6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCksCiAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpLAogICAgdGxzRGF0YVJlYWR5OiBvcHRpb25zLnRsc0RhdGFSZWFkeSwKICAgIGRhdGFSZWFkeTogb3B0aW9ucy5kYXRhUmVhZHksCiAgICBoZWFydGJlYXRSZWNlaXZlZDogb3B0aW9ucy5oZWFydGJlYXRSZWNlaXZlZCwKICAgIGNsb3NlZDogb3B0aW9ucy5jbG9zZWQsCiAgICBlcnJvcjogZnVuY3Rpb24oYywgZXgpIHsKICAgICAgLy8gc2V0IG9yaWdpbiBpZiBub3Qgc2V0CiAgICAgIGV4Lm9yaWdpbiA9IGV4Lm9yaWdpbiB8fAogICAgICAgICgoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCkgPyAnY2xpZW50JyA6ICdzZXJ2ZXInKTsKCiAgICAgIC8vIHNlbmQgVExTIGFsZXJ0CiAgICAgIGlmKGV4LnNlbmQpIHsKICAgICAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZUFsZXJ0KGMsIGV4LmFsZXJ0KSk7CiAgICAgICAgdGxzLmZsdXNoKGMpOwogICAgICB9CgogICAgICAvLyBlcnJvciBpcyBmYXRhbCBieSBkZWZhdWx0CiAgICAgIHZhciBmYXRhbCA9IChleC5mYXRhbCAhPT0gZmFsc2UpOwogICAgICBpZihmYXRhbCkgewogICAgICAgIC8vIHNldCBmYWlsIGZsYWcKICAgICAgICBjLmZhaWwgPSB0cnVlOwogICAgICB9CgogICAgICAvLyBjYWxsIGVycm9yIGhhbmRsZXIgZmlyc3QKICAgICAgb3B0aW9ucy5lcnJvcihjLCBleCk7CgogICAgICBpZihmYXRhbCkgewogICAgICAgIC8vIGZhdGFsIGVycm9yLCBjbG9zZSBjb25uZWN0aW9uLCBkbyBub3QgY2xlYXIgZmFpbAogICAgICAgIGMuY2xvc2UoZmFsc2UpOwogICAgICB9CiAgICB9LAogICAgZGVmbGF0ZTogb3B0aW9ucy5kZWZsYXRlIHx8IG51bGwsCiAgICBpbmZsYXRlOiBvcHRpb25zLmluZmxhdGUgfHwgbnVsbAogIH07CgogIC8qKgogICAqIFJlc2V0cyBhIGNsb3NlZCBUTFMgY29ubmVjdGlvbiBmb3IgcmV1c2UuIENhbGxlZCBpbiBjLmNsb3NlKCkuCiAgICoKICAgKiBAcGFyYW0gY2xlYXJGYWlsIHRydWUgdG8gY2xlYXIgdGhlIGZhaWwgZmxhZyAoZGVmYXVsdDogdHJ1ZSkuCiAgICovCiAgYy5yZXNldCA9IGZ1bmN0aW9uKGNsZWFyRmFpbCkgewogICAgYy52ZXJzaW9uID0ge21ham9yOiB0bHMuVmVyc2lvbi5tYWpvciwgbWlub3I6IHRscy5WZXJzaW9uLm1pbm9yfTsKICAgIGMucmVjb3JkID0gbnVsbDsKICAgIGMuc2Vzc2lvbiA9IG51bGw7CiAgICBjLnBlZXJDZXJ0aWZpY2F0ZSA9IG51bGw7CiAgICBjLnN0YXRlID0gewogICAgICBwZW5kaW5nOiBudWxsLAogICAgICBjdXJyZW50OiBudWxsCiAgICB9OwogICAgYy5leHBlY3QgPSAoYy5lbnRpdHkgPT09IHRscy5Db25uZWN0aW9uRW5kLmNsaWVudCkgPyBTSEUgOiBDSEU7CiAgICBjLmZyYWdtZW50ZWQgPSBudWxsOwogICAgYy5yZWNvcmRzID0gW107CiAgICBjLm9wZW4gPSBmYWxzZTsKICAgIGMuaGFuZHNoYWtlcyA9IDA7CiAgICBjLmhhbmRzaGFraW5nID0gZmFsc2U7CiAgICBjLmlzQ29ubmVjdGVkID0gZmFsc2U7CiAgICBjLmZhaWwgPSAhKGNsZWFyRmFpbCB8fCB0eXBlb2YoY2xlYXJGYWlsKSA9PT0gJ3VuZGVmaW5lZCcpOwogICAgYy5pbnB1dC5jbGVhcigpOwogICAgYy50bHNEYXRhLmNsZWFyKCk7CiAgICBjLmRhdGEuY2xlYXIoKTsKICAgIGMuc3RhdGUuY3VycmVudCA9IHRscy5jcmVhdGVDb25uZWN0aW9uU3RhdGUoYyk7CiAgfTsKCiAgLy8gZG8gaW5pdGlhbCByZXNldCBvZiBjb25uZWN0aW9uCiAgYy5yZXNldCgpOwoKICAvKioKICAgKiBVcGRhdGVzIHRoZSBjdXJyZW50IFRMUyBlbmdpbmUgc3RhdGUgYmFzZWQgb24gdGhlIGdpdmVuIHJlY29yZC4KICAgKgogICAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbi4KICAgKiBAcGFyYW0gcmVjb3JkIHRoZSBUTFMgcmVjb3JkIHRvIGFjdCBvbi4KICAgKi8KICB2YXIgX3VwZGF0ZSA9IGZ1bmN0aW9uKGMsIHJlY29yZCkgewogICAgLy8gZ2V0IHJlY29yZCBoYW5kbGVyIChhbGlnbiB0eXBlIGluIHRhYmxlIGJ5IHN1YnRyYWN0aW5nIGxvd2VzdCkKICAgIHZhciBhbGlnbmVkID0gcmVjb3JkLnR5cGUgLSB0bHMuQ29udGVudFR5cGUuY2hhbmdlX2NpcGhlcl9zcGVjOwogICAgdmFyIGhhbmRsZXJzID0gY3RUYWJsZVtjLmVudGl0eV1bYy5leHBlY3RdOwogICAgaWYoYWxpZ25lZCBpbiBoYW5kbGVycykgewogICAgICBoYW5kbGVyc1thbGlnbmVkXShjLCByZWNvcmQpOwogICAgfSBlbHNlIHsKICAgICAgLy8gdW5leHBlY3RlZCByZWNvcmQKICAgICAgdGxzLmhhbmRsZVVuZXhwZWN0ZWQoYywgcmVjb3JkKTsKICAgIH0KICB9OwoKICAvKioKICAgKiBSZWFkcyB0aGUgcmVjb3JkIGhlYWRlciBhbmQgaW5pdGlhbGl6ZXMgdGhlIG5leHQgcmVjb3JkIG9uIHRoZSBnaXZlbgogICAqIGNvbm5lY3Rpb24uCiAgICoKICAgKiBAcGFyYW0gYyB0aGUgVExTIGNvbm5lY3Rpb24gd2l0aCB0aGUgbmV4dCByZWNvcmQuCiAgICoKICAgKiBAcmV0dXJuIDAgaWYgdGhlIGlucHV0IGRhdGEgY291bGQgYmUgcHJvY2Vzc2VkLCBvdGhlcndpc2UgdGhlCiAgICogICAgICAgICBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgZm9yIGRhdGEgdG8gYmUgcHJvY2Vzc2VkLgogICAqLwogIHZhciBfcmVhZFJlY29yZEhlYWRlciA9IGZ1bmN0aW9uKGMpIHsKICAgIHZhciBydmFsID0gMDsKCiAgICAvLyBnZXQgaW5wdXQgYnVmZmVyIGFuZCBpdHMgbGVuZ3RoCiAgICB2YXIgYiA9IGMuaW5wdXQ7CiAgICB2YXIgbGVuID0gYi5sZW5ndGgoKTsKCiAgICAvLyBuZWVkIGF0IGxlYXN0IDUgYnl0ZXMgdG8gaW5pdGlhbGl6ZSBhIHJlY29yZAogICAgaWYobGVuIDwgNSkgewogICAgICBydmFsID0gNSAtIGxlbjsKICAgIH0gZWxzZSB7CiAgICAgIC8vIGVub3VnaCBieXRlcyBmb3IgaGVhZGVyCiAgICAgIC8vIGluaXRpYWxpemUgcmVjb3JkCiAgICAgIGMucmVjb3JkID0gewogICAgICAgIHR5cGU6IGIuZ2V0Qnl0ZSgpLAogICAgICAgIHZlcnNpb246IHsKICAgICAgICAgIG1ham9yOiBiLmdldEJ5dGUoKSwKICAgICAgICAgIG1pbm9yOiBiLmdldEJ5dGUoKQogICAgICAgIH0sCiAgICAgICAgbGVuZ3RoOiBiLmdldEludDE2KCksCiAgICAgICAgZnJhZ21lbnQ6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCksCiAgICAgICAgcmVhZHk6IGZhbHNlCiAgICAgIH07CgogICAgICAvLyBjaGVjayByZWNvcmQgdmVyc2lvbgogICAgICB2YXIgY29tcGF0aWJsZVZlcnNpb24gPSAoYy5yZWNvcmQudmVyc2lvbi5tYWpvciA9PT0gYy52ZXJzaW9uLm1ham9yKTsKICAgICAgaWYoY29tcGF0aWJsZVZlcnNpb24gJiYgYy5zZXNzaW9uICYmIGMuc2Vzc2lvbi52ZXJzaW9uKSB7CiAgICAgICAgLy8gc2Vzc2lvbiB2ZXJzaW9uIGFscmVhZHkgc2V0LCByZXF1aXJlIHNhbWUgbWlub3IgdmVyc2lvbgogICAgICAgIGNvbXBhdGlibGVWZXJzaW9uID0gKGMucmVjb3JkLnZlcnNpb24ubWlub3IgPT09IGMudmVyc2lvbi5taW5vcik7CiAgICAgIH0KICAgICAgaWYoIWNvbXBhdGlibGVWZXJzaW9uKSB7CiAgICAgICAgYy5lcnJvcihjLCB7CiAgICAgICAgICBtZXNzYWdlOiAnSW5jb21wYXRpYmxlIFRMUyB2ZXJzaW9uLicsCiAgICAgICAgICBzZW5kOiB0cnVlLAogICAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgICAgbGV2ZWw6IHRscy5BbGVydC5MZXZlbC5mYXRhbCwKICAgICAgICAgICAgZGVzY3JpcHRpb246IHRscy5BbGVydC5EZXNjcmlwdGlvbi5wcm90b2NvbF92ZXJzaW9uCiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBSZWFkcyB0aGUgbmV4dCByZWNvcmQncyBjb250ZW50cyBhbmQgYXBwZW5kcyBpdHMgbWVzc2FnZSB0byBhbnkKICAgKiBwcmV2aW91c2x5IGZyYWdtZW50ZWQgbWVzc2FnZS4KICAgKgogICAqIEBwYXJhbSBjIHRoZSBUTFMgY29ubmVjdGlvbiB3aXRoIHRoZSBuZXh0IHJlY29yZC4KICAgKgogICAqIEByZXR1cm4gMCBpZiB0aGUgaW5wdXQgZGF0YSBjb3VsZCBiZSBwcm9jZXNzZWQsIG90aGVyd2lzZSB0aGUKICAgKiAgICAgICAgIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCBmb3IgZGF0YSB0byBiZSBwcm9jZXNzZWQuCiAgICovCiAgdmFyIF9yZWFkUmVjb3JkID0gZnVuY3Rpb24oYykgewogICAgdmFyIHJ2YWwgPSAwOwoKICAgIC8vIGVuc3VyZSB0aGVyZSBpcyBlbm91Z2ggaW5wdXQgZGF0YSB0byBnZXQgdGhlIGVudGlyZSByZWNvcmQKICAgIHZhciBiID0gYy5pbnB1dDsKICAgIHZhciBsZW4gPSBiLmxlbmd0aCgpOwogICAgaWYobGVuIDwgYy5yZWNvcmQubGVuZ3RoKSB7CiAgICAgIC8vIG5vdCBlbm91Z2ggZGF0YSB5ZXQsIHJldHVybiBob3cgbXVjaCBpcyByZXF1aXJlZAogICAgICBydmFsID0gYy5yZWNvcmQubGVuZ3RoIC0gbGVuOwogICAgfSBlbHNlIHsKICAgICAgLy8gdGhlcmUgaXMgZW5vdWdoIGRhdGEgdG8gcGFyc2UgdGhlIHBlbmRpbmcgcmVjb3JkCiAgICAgIC8vIGZpbGwgcmVjb3JkIGZyYWdtZW50IGFuZCBjb21wYWN0IGlucHV0IGJ1ZmZlcgogICAgICBjLnJlY29yZC5mcmFnbWVudC5wdXRCeXRlcyhiLmdldEJ5dGVzKGMucmVjb3JkLmxlbmd0aCkpOwogICAgICBiLmNvbXBhY3QoKTsKCiAgICAgIC8vIHVwZGF0ZSByZWNvcmQgdXNpbmcgY3VycmVudCByZWFkIHN0YXRlCiAgICAgIHZhciBzID0gYy5zdGF0ZS5jdXJyZW50LnJlYWQ7CiAgICAgIGlmKHMudXBkYXRlKGMsIGMucmVjb3JkKSkgewogICAgICAgIC8vIHNlZSBpZiB0aGVyZSBpcyBhIHByZXZpb3VzbHkgZnJhZ21lbnRlZCBtZXNzYWdlIHRoYXQgdGhlCiAgICAgICAgLy8gbmV3IHJlY29yZCdzIG1lc3NhZ2UgZnJhZ21lbnQgc2hvdWxkIGJlIGFwcGVuZGVkIHRvCiAgICAgICAgaWYoYy5mcmFnbWVudGVkICE9PSBudWxsKSB7CiAgICAgICAgICAvLyBpZiB0aGUgcmVjb3JkIHR5cGUgbWF0Y2hlcyBhIHByZXZpb3VzbHkgZnJhZ21lbnRlZAogICAgICAgICAgLy8gcmVjb3JkLCBhcHBlbmQgdGhlIHJlY29yZCBmcmFnbWVudCB0byBpdAogICAgICAgICAgaWYoYy5mcmFnbWVudGVkLnR5cGUgPT09IGMucmVjb3JkLnR5cGUpIHsKICAgICAgICAgICAgLy8gY29uY2F0ZW5hdGUgcmVjb3JkIGZyYWdtZW50cwogICAgICAgICAgICBjLmZyYWdtZW50ZWQuZnJhZ21lbnQucHV0QnVmZmVyKGMucmVjb3JkLmZyYWdtZW50KTsKICAgICAgICAgICAgYy5yZWNvcmQgPSBjLmZyYWdtZW50ZWQ7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBlcnJvciwgaW52YWxpZCBmcmFnbWVudGVkIHJlY29yZAogICAgICAgICAgICBjLmVycm9yKGMsIHsKICAgICAgICAgICAgICBtZXNzYWdlOiAnSW52YWxpZCBmcmFnbWVudGVkIHJlY29yZC4nLAogICAgICAgICAgICAgIHNlbmQ6IHRydWUsCiAgICAgICAgICAgICAgYWxlcnQ6IHsKICAgICAgICAgICAgICAgIGxldmVsOiB0bHMuQWxlcnQuTGV2ZWwuZmF0YWwsCiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjoKICAgICAgICAgICAgICAgICAgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLnVuZXhwZWN0ZWRfbWVzc2FnZQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyByZWNvcmQgaXMgbm93IHJlYWR5CiAgICAgICAgYy5yZWNvcmQucmVhZHkgPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJ2YWw7CiAgfTsKCiAgLyoqCiAgICogUGVyZm9ybXMgYSBoYW5kc2hha2UgdXNpbmcgdGhlIFRMUyBIYW5kc2hha2UgUHJvdG9jb2wsIGFzIGEgY2xpZW50LgogICAqCiAgICogVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBjb25uZWN0aW9uIGlzIGluIGNsaWVudCBtb2RlLgogICAqCiAgICogQHBhcmFtIHNlc3Npb25JZCB0aGUgc2Vzc2lvbiBJRCB0byB1c2UsIG51bGwgdG8gc3RhcnQgYSBuZXcgb25lLgogICAqLwogIGMuaGFuZHNoYWtlID0gZnVuY3Rpb24oc2Vzc2lvbklkKSB7CiAgICAvLyBlcnJvciB0byBjYWxsIHRoaXMgaW4gbm9uLWNsaWVudCBtb2RlCiAgICBpZihjLmVudGl0eSAhPT0gdGxzLkNvbm5lY3Rpb25FbmQuY2xpZW50KSB7CiAgICAgIC8vIG5vdCBmYXRhbCBlcnJvcgogICAgICBjLmVycm9yKGMsIHsKICAgICAgICBtZXNzYWdlOiAnQ2Fubm90IGluaXRpYXRlIGhhbmRzaGFrZSBhcyBhIHNlcnZlci4nLAogICAgICAgIGZhdGFsOiBmYWxzZQogICAgICB9KTsKICAgIH0gZWxzZSBpZihjLmhhbmRzaGFraW5nKSB7CiAgICAgIC8vIGhhbmRzaGFrZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLCBmYWlsIGJ1dCBub3QgZmF0YWwgZXJyb3IKICAgICAgYy5lcnJvcihjLCB7CiAgICAgICAgbWVzc2FnZTogJ0hhbmRzaGFrZSBhbHJlYWR5IGluIHByb2dyZXNzLicsCiAgICAgICAgZmF0YWw6IGZhbHNlCiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgLy8gY2xlYXIgZmFpbCBmbGFnIG9uIHJldXNlCiAgICAgIGlmKGMuZmFpbCAmJiAhYy5vcGVuICYmIGMuaGFuZHNoYWtlcyA9PT0gMCkgewogICAgICAgIGMuZmFpbCA9IGZhbHNlOwogICAgICB9CgogICAgICAvLyBub3cgaGFuZHNoYWtpbmcKICAgICAgYy5oYW5kc2hha2luZyA9IHRydWU7CgogICAgICAvLyBkZWZhdWx0IHRvIGJsYW5rIChuZXcgc2Vzc2lvbikKICAgICAgc2Vzc2lvbklkID0gc2Vzc2lvbklkIHx8ICcnOwoKICAgICAgLy8gaWYgYSBzZXNzaW9uIElEIHdhcyBzcGVjaWZpZWQsIHRyeSB0byBmaW5kIGl0IGluIHRoZSBjYWNoZQogICAgICB2YXIgc2Vzc2lvbiA9IG51bGw7CiAgICAgIGlmKHNlc3Npb25JZC5sZW5ndGggPiAwKSB7CiAgICAgICAgaWYoYy5zZXNzaW9uQ2FjaGUpIHsKICAgICAgICAgIHNlc3Npb24gPSBjLnNlc3Npb25DYWNoZS5nZXRTZXNzaW9uKHNlc3Npb25JZCk7CiAgICAgICAgfQoKICAgICAgICAvLyBtYXRjaGluZyBzZXNzaW9uIG5vdCBmb3VuZCBpbiBjYWNoZSwgY2xlYXIgc2Vzc2lvbiBJRAogICAgICAgIGlmKHNlc3Npb24gPT09IG51bGwpIHsKICAgICAgICAgIHNlc3Npb25JZCA9ICcnOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gbm8gc2Vzc2lvbiBnaXZlbiwgZ3JhYiBhIHNlc3Npb24gZnJvbSB0aGUgY2FjaGUsIGlmIGF2YWlsYWJsZQogICAgICBpZihzZXNzaW9uSWQubGVuZ3RoID09PSAwICYmIGMuc2Vzc2lvbkNhY2hlKSB7CiAgICAgICAgc2Vzc2lvbiA9IGMuc2Vzc2lvbkNhY2hlLmdldFNlc3Npb24oKTsKICAgICAgICBpZihzZXNzaW9uICE9PSBudWxsKSB7CiAgICAgICAgICBzZXNzaW9uSWQgPSBzZXNzaW9uLmlkOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gc2V0IHVwIHNlc3Npb24KICAgICAgYy5zZXNzaW9uID0gewogICAgICAgIGlkOiBzZXNzaW9uSWQsCiAgICAgICAgdmVyc2lvbjogbnVsbCwKICAgICAgICBjaXBoZXJTdWl0ZTogbnVsbCwKICAgICAgICBjb21wcmVzc2lvbk1ldGhvZDogbnVsbCwKICAgICAgICBzZXJ2ZXJDZXJ0aWZpY2F0ZTogbnVsbCwKICAgICAgICBjZXJ0aWZpY2F0ZVJlcXVlc3Q6IG51bGwsCiAgICAgICAgY2xpZW50Q2VydGlmaWNhdGU6IG51bGwsCiAgICAgICAgc3A6IHt9LAogICAgICAgIG1kNTogZm9yZ2UubWQubWQ1LmNyZWF0ZSgpLAogICAgICAgIHNoYTE6IGZvcmdlLm1kLnNoYTEuY3JlYXRlKCkKICAgICAgfTsKCiAgICAgIC8vIHVzZSBleGlzdGluZyBzZXNzaW9uIGluZm9ybWF0aW9uCiAgICAgIGlmKHNlc3Npb24pIHsKICAgICAgICAvLyBvbmx5IHVwZGF0ZSB2ZXJzaW9uIG9uIGNvbm5lY3Rpb24sIHNlc3Npb24gdmVyc2lvbiBub3QgeWV0IHNldAogICAgICAgIGMudmVyc2lvbiA9IHNlc3Npb24udmVyc2lvbjsKICAgICAgICBjLnNlc3Npb24uc3AgPSBzZXNzaW9uLnNwOwogICAgICB9CgogICAgICAvLyBnZW5lcmF0ZSBuZXcgY2xpZW50IHJhbmRvbQogICAgICBjLnNlc3Npb24uc3AuY2xpZW50X3JhbmRvbSA9IHRscy5jcmVhdGVSYW5kb20oKS5nZXRCeXRlcygpOwoKICAgICAgLy8gY29ubmVjdGlvbiBub3cgb3BlbgogICAgICBjLm9wZW4gPSB0cnVlOwoKICAgICAgLy8gc2VuZCBoZWxsbwogICAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgICAgdHlwZTogdGxzLkNvbnRlbnRUeXBlLmhhbmRzaGFrZSwKICAgICAgICBkYXRhOiB0bHMuY3JlYXRlQ2xpZW50SGVsbG8oYykKICAgICAgfSkpOwogICAgICB0bHMuZmx1c2goYyk7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogQ2FsbGVkIHdoZW4gVExTIHByb3RvY29sIGRhdGEgaGFzIGJlZW4gcmVjZWl2ZWQgZnJvbSBzb21ld2hlcmUgYW5kIHNob3VsZAogICAqIGJlIHByb2Nlc3NlZCBieSB0aGUgVExTIGVuZ2luZS4KICAgKgogICAqIEBwYXJhbSBkYXRhIHRoZSBUTFMgcHJvdG9jb2wgZGF0YSwgYXMgYSBzdHJpbmcsIHRvIHByb2Nlc3MuCiAgICoKICAgKiBAcmV0dXJuIDAgaWYgdGhlIGRhdGEgY291bGQgYmUgcHJvY2Vzc2VkLCBvdGhlcndpc2UgdGhlIG51bWJlciBvZiBieXRlcwogICAqICAgICAgICAgcmVxdWlyZWQgZm9yIGRhdGEgdG8gYmUgcHJvY2Vzc2VkLgogICAqLwogIGMucHJvY2VzcyA9IGZ1bmN0aW9uKGRhdGEpIHsKICAgIHZhciBydmFsID0gMDsKCiAgICAvLyBidWZmZXIgaW5wdXQgZGF0YQogICAgaWYoZGF0YSkgewogICAgICBjLmlucHV0LnB1dEJ5dGVzKGRhdGEpOwogICAgfQoKICAgIC8vIHByb2Nlc3MgbmV4dCByZWNvcmQgaWYgbm8gZmFpbHVyZSwgcHJvY2VzcyB3aWxsIGJlIGNhbGxlZCBhZnRlcgogICAgLy8gZWFjaCByZWNvcmQgaXMgaGFuZGxlZCAoc2luY2UgaGFuZGxpbmcgY2FuIGJlIGFzeW5jaHJvbm91cykKICAgIGlmKCFjLmZhaWwpIHsKICAgICAgLy8gcmVzZXQgcmVjb3JkIGlmIHJlYWR5IGFuZCBub3cgZW1wdHkKICAgICAgaWYoYy5yZWNvcmQgIT09IG51bGwgJiYKICAgICAgICBjLnJlY29yZC5yZWFkeSAmJiBjLnJlY29yZC5mcmFnbWVudC5pc0VtcHR5KCkpIHsKICAgICAgICBjLnJlY29yZCA9IG51bGw7CiAgICAgIH0KCiAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgcmVjb3JkLCB0cnkgdG8gcmVhZCByZWNvcmQgaGVhZGVyCiAgICAgIGlmKGMucmVjb3JkID09PSBudWxsKSB7CiAgICAgICAgcnZhbCA9IF9yZWFkUmVjb3JkSGVhZGVyKGMpOwogICAgICB9CgogICAgICAvLyByZWFkIHRoZSBuZXh0IHJlY29yZCAoaWYgcmVjb3JkIG5vdCB5ZXQgcmVhZHkpCiAgICAgIGlmKCFjLmZhaWwgJiYgYy5yZWNvcmQgIT09IG51bGwgJiYgIWMucmVjb3JkLnJlYWR5KSB7CiAgICAgICAgcnZhbCA9IF9yZWFkUmVjb3JkKGMpOwogICAgICB9CgogICAgICAvLyByZWNvcmQgcmVhZHkgdG8gYmUgaGFuZGxlZCwgdXBkYXRlIGVuZ2luZSBzdGF0ZQogICAgICBpZighYy5mYWlsICYmIGMucmVjb3JkICE9PSBudWxsICYmIGMucmVjb3JkLnJlYWR5KSB7CiAgICAgICAgX3VwZGF0ZShjLCBjLnJlY29yZCk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcnZhbDsKICB9OwoKICAvKioKICAgKiBSZXF1ZXN0cyB0aGF0IGFwcGxpY2F0aW9uIGRhdGEgYmUgcGFja2FnZWQgaW50byBhIFRMUyByZWNvcmQuIFRoZQogICAqIHRsc0RhdGFSZWFkeSBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIFRMUyByZWNvcmQocykgaGF2ZSBiZWVuCiAgICogcHJlcGFyZWQuCiAgICoKICAgKiBAcGFyYW0gZGF0YSB0aGUgYXBwbGljYXRpb24gZGF0YSwgYXMgYSByYXcgJ2JpbmFyeScgZW5jb2RlZCBzdHJpbmcsIHRvCiAgICogICAgICAgICAgYmUgc2VudDsgdG8gc2VuZCB1dGYtMTYvdXRmLTggc3RyaW5nIGRhdGEsIHVzZSB0aGUgcmV0dXJuIHZhbHVlCiAgICogICAgICAgICAgb2YgdXRpbC5lbmNvZGVVdGY4KHN0cikuCiAgICoKICAgKiBAcmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAgKi8KICBjLnByZXBhcmUgPSBmdW5jdGlvbihkYXRhKSB7CiAgICB0bHMucXVldWUoYywgdGxzLmNyZWF0ZVJlY29yZChjLCB7CiAgICAgIHR5cGU6IHRscy5Db250ZW50VHlwZS5hcHBsaWNhdGlvbl9kYXRhLAogICAgICBkYXRhOiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihkYXRhKQogICAgfSkpOwogICAgcmV0dXJuIHRscy5mbHVzaChjKTsKICB9OwoKICAvKioKICAgKiBSZXF1ZXN0cyB0aGF0IGEgaGVhcnRiZWF0IHJlcXVlc3QgYmUgcGFja2FnZWQgaW50byBhIFRMUyByZWNvcmQgZm9yCiAgICogdHJhbnNtaXNzaW9uLiBUaGUgdGxzRGF0YVJlYWR5IGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2hlbiBUTFMgcmVjb3JkKHMpCiAgICogaGF2ZSBiZWVuIHByZXBhcmVkLgogICAqCiAgICogV2hlbiBhIGhlYXJ0YmVhdCByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCwgdGhlIGhlYXJ0YmVhdFJlY2VpdmVkCiAgICogaGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBtYXRjaGluZyBwYXlsb2FkLiBUaGlzIGhhbmRsZXIgY2FuCiAgICogYmUgdXNlZCB0byBjbGVhciBhIHJldHJhbnNtaXNzaW9uIHRpbWVyLCBldGMuCiAgICoKICAgKiBAcGFyYW0gcGF5bG9hZCB0aGUgaGVhcnRiZWF0IGRhdGEgdG8gc2VuZCBhcyB0aGUgcGF5bG9hZCBpbiB0aGUgbWVzc2FnZS4KICAgKiBAcGFyYW0gW3BheWxvYWRMZW5ndGhdIHRoZSBwYXlsb2FkIGxlbmd0aCB0byB1c2UsIGRlZmF1bHRzIHRvIHRoZQogICAqICAgICAgICAgIGFjdHVhbCBwYXlsb2FkIGxlbmd0aC4KICAgKgogICAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogICAqLwogIGMucHJlcGFyZUhlYXJ0YmVhdFJlcXVlc3QgPSBmdW5jdGlvbihwYXlsb2FkLCBwYXlsb2FkTGVuZ3RoKSB7CiAgICBpZihwYXlsb2FkIGluc3RhbmNlb2YgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKSB7CiAgICAgIHBheWxvYWQgPSBwYXlsb2FkLmJ5dGVzKCk7CiAgICB9CiAgICBpZih0eXBlb2YgcGF5bG9hZExlbmd0aCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgcGF5bG9hZExlbmd0aCA9IHBheWxvYWQubGVuZ3RoOwogICAgfQogICAgYy5leHBlY3RlZEhlYXJ0YmVhdFBheWxvYWQgPSBwYXlsb2FkOwogICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVSZWNvcmQoYywgewogICAgICB0eXBlOiB0bHMuQ29udGVudFR5cGUuaGVhcnRiZWF0LAogICAgICBkYXRhOiB0bHMuY3JlYXRlSGVhcnRiZWF0KAogICAgICAgIHRscy5IZWFydGJlYXRNZXNzYWdlVHlwZS5oZWFydGJlYXRfcmVxdWVzdCwgcGF5bG9hZCwgcGF5bG9hZExlbmd0aCkKICAgIH0pKTsKICAgIHJldHVybiB0bHMuZmx1c2goYyk7CiAgfTsKCiAgLyoqCiAgICogQ2xvc2VzIHRoZSBjb25uZWN0aW9uIChzZW5kcyBhIGNsb3NlX25vdGlmeSBhbGVydCkuCiAgICoKICAgKiBAcGFyYW0gY2xlYXJGYWlsIHRydWUgdG8gY2xlYXIgdGhlIGZhaWwgZmxhZyAoZGVmYXVsdDogdHJ1ZSkuCiAgICovCiAgYy5jbG9zZSA9IGZ1bmN0aW9uKGNsZWFyRmFpbCkgewogICAgLy8gc2F2ZSBzZXNzaW9uIGlmIGNvbm5lY3Rpb24gZGlkbid0IGZhaWwKICAgIGlmKCFjLmZhaWwgJiYgYy5zZXNzaW9uQ2FjaGUgJiYgYy5zZXNzaW9uKSB7CiAgICAgIC8vIG9ubHkgbmVlZCB0byBwcmVzZXJ2ZSBzZXNzaW9uIElELCB2ZXJzaW9uLCBhbmQgc2VjdXJpdHkgcGFyYW1zCiAgICAgIHZhciBzZXNzaW9uID0gewogICAgICAgIGlkOiBjLnNlc3Npb24uaWQsCiAgICAgICAgdmVyc2lvbjogYy5zZXNzaW9uLnZlcnNpb24sCiAgICAgICAgc3A6IGMuc2Vzc2lvbi5zcAogICAgICB9OwogICAgICBzZXNzaW9uLnNwLmtleXMgPSBudWxsOwogICAgICBjLnNlc3Npb25DYWNoZS5zZXRTZXNzaW9uKHNlc3Npb24uaWQsIHNlc3Npb24pOwogICAgfQoKICAgIGlmKGMub3BlbikgewogICAgICAvLyBjb25uZWN0aW9uIG5vIGxvbmdlciBvcGVuLCBjbGVhciBpbnB1dAogICAgICBjLm9wZW4gPSBmYWxzZTsKICAgICAgYy5pbnB1dC5jbGVhcigpOwoKICAgICAgLy8gaWYgY29ubmVjdGVkIG9yIGhhbmRzaGFraW5nLCBzZW5kIGFuIGFsZXJ0CiAgICAgIGlmKGMuaXNDb25uZWN0ZWQgfHwgYy5oYW5kc2hha2luZykgewogICAgICAgIGMuaXNDb25uZWN0ZWQgPSBjLmhhbmRzaGFraW5nID0gZmFsc2U7CgogICAgICAgIC8vIHNlbmQgY2xvc2Vfbm90aWZ5IGFsZXJ0CiAgICAgICAgdGxzLnF1ZXVlKGMsIHRscy5jcmVhdGVBbGVydChjLCB7CiAgICAgICAgICBsZXZlbDogdGxzLkFsZXJ0LkxldmVsLndhcm5pbmcsCiAgICAgICAgICBkZXNjcmlwdGlvbjogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uLmNsb3NlX25vdGlmeQogICAgICAgIH0pKTsKICAgICAgICB0bHMuZmx1c2goYyk7CiAgICAgIH0KCiAgICAgIC8vIGNhbGwgaGFuZGxlcgogICAgICBjLmNsb3NlZChjKTsKICAgIH0KCiAgICAvLyByZXNldCBUTFMgY29ubmVjdGlvbiwgZG8gbm90IGNsZWFyIGZhaWwgZmxhZwogICAgYy5yZXNldChjbGVhckZhaWwpOwogIH07CgogIHJldHVybiBjOwp9OwoKLyogVExTIEFQSSAqLwpmb3JnZS50bHMgPSBmb3JnZS50bHMgfHwge307CgovLyBleHBvc2Ugbm9uLWZ1bmN0aW9ucwpmb3IodmFyIGtleSBpbiB0bHMpIHsKICBpZih0eXBlb2YgdGxzW2tleV0gIT09ICdmdW5jdGlvbicpIHsKICAgIGZvcmdlLnRsc1trZXldID0gdGxzW2tleV07CiAgfQp9CgovLyBleHBvc2UgcHJmX3RsczEgZm9yIHRlc3RpbmcKZm9yZ2UudGxzLnByZl90bHMxID0gcHJmX1RMUzE7CgovLyBleHBvc2Ugc2hhMSBobWFjIG1ldGhvZApmb3JnZS50bHMuaG1hY19zaGExID0gaG1hY19zaGExOwoKLy8gZXhwb3NlIHNlc3Npb24gY2FjaGUgY3JlYXRpb24KZm9yZ2UudGxzLmNyZWF0ZVNlc3Npb25DYWNoZSA9IHRscy5jcmVhdGVTZXNzaW9uQ2FjaGU7CgovKioKICogQ3JlYXRlcyBhIG5ldyBUTFMgY29ubmVjdGlvbi4gVGhpcyBkb2VzIG5vdCBtYWtlIGFueSBhc3N1bXB0aW9ucyBhYm91dCB0aGUKICogdHJhbnNwb3J0IGxheWVyIHRoYXQgVExTIGlzIHdvcmtpbmcgb24gdG9wIG9mLCBpZTogaXQgZG9lcyBub3QgYXNzdW1lIHRoZXJlCiAqIGlzIGEgVENQL0lQIGNvbm5lY3Rpb24gb3IgZXN0YWJsaXNoIG9uZS4gQSBUTFMgY29ubmVjdGlvbiBpcyB0b3RhbGx5CiAqIGFic3RyYWN0ZWQgYXdheSBmcm9tIHRoZSBsYXllciBpcyBydW5zIG9uIHRvcCBvZiwgaXQgbWVyZWx5IGVzdGFibGlzaGVzIGEKICogc2VjdXJlIGNoYW5uZWwgYmV0d2VlbiBhIGNsaWVudCIgYW5kIGEgInNlcnZlciIuCiAqCiAqIEEgVExTIGNvbm5lY3Rpb24gY29udGFpbnMgNCBjb25uZWN0aW9uIHN0YXRlczogcGVuZGluZyByZWFkIGFuZCB3cml0ZSwgYW5kCiAqIGN1cnJlbnQgcmVhZCBhbmQgd3JpdGUuCiAqCiAqIEF0IGluaXRpYWxpemF0aW9uLCB0aGUgY3VycmVudCByZWFkIGFuZCB3cml0ZSBzdGF0ZXMgd2lsbCBiZSBudWxsLiBPbmx5IG9uY2UKICogdGhlIHNlY3VyaXR5IHBhcmFtZXRlcnMgaGF2ZSBiZWVuIHNldCBhbmQgdGhlIGtleXMgaGF2ZSBiZWVuIGdlbmVyYXRlZCBjYW4KICogdGhlIHBlbmRpbmcgc3RhdGVzIGJlIGNvbnZlcnRlZCBpbnRvIGN1cnJlbnQgc3RhdGVzLiBDdXJyZW50IHN0YXRlcyB3aWxsIGJlCiAqIHVwZGF0ZWQgZm9yIGVhY2ggcmVjb3JkIHByb2Nlc3NlZC4KICoKICogQSBjdXN0b20gY2VydGlmaWNhdGUgdmVyaWZ5IGNhbGxiYWNrIG1heSBiZSBwcm92aWRlZCB0byBjaGVjayBpbmZvcm1hdGlvbgogKiBsaWtlIHRoZSBjb21tb24gbmFtZSBvbiB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUuIEl0IHdpbGwgYmUgY2FsbGVkIGZvcgogKiBldmVyeSBjZXJ0aWZpY2F0ZSBpbiB0aGUgY2hhaW4uIEl0IGhhcyB0aGUgZm9sbG93aW5nIHNpZ25hdHVyZToKICoKICogdmFyaWFibGUgZnVuYyhjLCBjZXJ0cywgaW5kZXgsIHByZVZlcmlmeSkKICogV2hlcmU6CiAqIGMgICAgICAgICBUaGUgVExTIGNvbm5lY3Rpb24KICogdmVyaWZpZWQgIFNldCB0byB0cnVlIGlmIGNlcnRpZmljYXRlIHdhcyB2ZXJpZmllZCwgb3RoZXJ3aXNlIHRoZSBhbGVydAogKiAgICAgICAgICAgdGxzLkFsZXJ0LkRlc2NyaXB0aW9uIGZvciB3aHkgdGhlIGNlcnRpZmljYXRlIGZhaWxlZC4KICogZGVwdGggICAgIFRoZSBjdXJyZW50IGluZGV4IGluIHRoZSBjaGFpbiwgd2hlcmUgMCBpcyB0aGUgc2VydmVyJ3MgY2VydC4KICogY2VydHMgICAgIFRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiwgKk5PVEUqIGlmIHRoZSBzZXJ2ZXIgd2FzIGFub255bW91cyB0aGVuCiAqICAgICAgICAgICB0aGUgY2hhaW4gd2lsbCBiZSBlbXB0eS4KICoKICogVGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIGFuZCBvbiBmYWlsdXJlIGVpdGhlciB0aGUgYXBwcm9wcmlhdGUKICogdGxzLkFsZXJ0LkRlc2NyaXB0aW9uIG9yIGFuIG9iamVjdCB3aXRoICdhbGVydCcgc2V0IHRvIHRoZSBhcHByb3ByaWF0ZQogKiB0bHMuQWxlcnQuRGVzY3JpcHRpb24gYW5kICdtZXNzYWdlJyBzZXQgdG8gYSBjdXN0b20gZXJyb3IgbWVzc2FnZS4gSWYgdHJ1ZQogKiBpcyBub3QgcmV0dXJuZWQgdGhlbiB0aGUgY29ubmVjdGlvbiB3aWxsIGFib3J0IHVzaW5nLCBpbiBvcmRlciBvZgogKiBhdmFpbGFiaWxpdHksIGZpcnN0IHRoZSByZXR1cm5lZCBhbGVydCBkZXNjcmlwdGlvbiwgc2Vjb25kIHRoZSBwcmVWZXJpZnkKICogYWxlcnQgZGVzY3JpcHRpb24sIGFuZCBsYXN0bHkgdGhlIGRlZmF1bHQgJ2JhZF9jZXJ0aWZpY2F0ZScuCiAqCiAqIFRoZXJlIGFyZSB0aHJlZSBjYWxsYmFja3MgdGhhdCBjYW4gYmUgdXNlZCB0byBtYWtlIHVzZSBvZiBjbGllbnQtc2lkZQogKiBjZXJ0aWZpY2F0ZXMgd2hlcmUgZWFjaCB0YWtlcyB0aGUgVExTIGNvbm5lY3Rpb24gYXMgdGhlIGZpcnN0IHBhcmFtZXRlcjoKICoKICogZ2V0Q2VydGlmaWNhdGUoY29ubiwgaGludCkKICogICBUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIGhpbnQgYXMgdG8gd2hpY2ggY2VydGlmaWNhdGUgc2hvdWxkIGJlCiAqICAgcmV0dXJuZWQuIElmIHRoZSBjb25uZWN0aW9uIGVudGl0eSBpcyBhIGNsaWVudCwgdGhlbiB0aGUgaGludCB3aWxsIGJlCiAqICAgdGhlIENlcnRpZmljYXRlUmVxdWVzdCBtZXNzYWdlIGZyb20gdGhlIHNlcnZlciB0aGF0IGlzIHBhcnQgb2YgdGhlCiAqICAgVExTIHByb3RvY29sLiBJZiB0aGUgY29ubmVjdGlvbiBlbnRpdHkgaXMgYSBzZXJ2ZXIsIHRoZW4gaXQgd2lsbCBiZQogKiAgIHRoZSBzZXJ2ZXJuYW1lIGxpc3QgcHJvdmlkZWQgdmlhIGFuIFNOSSBleHRlbnNpb24gdGhlIENsaWVudEhlbGxvLCBpZgogKiAgIG9uZSB3YXMgcHJvdmlkZWQgKGVtcHR5IGFycmF5IGlmIG5vdCkuIFRoZSBoaW50IGNhbiBiZSBleGFtaW5lZCB0bwogKiAgIGRldGVybWluZSB3aGljaCBjZXJ0aWZpY2F0ZSB0byB1c2UgKGFkdmFuY2VkKS4gTW9zdCBpbXBsZW1lbnRhdGlvbnMKICogICB3aWxsIGp1c3QgcmV0dXJuIGEgY2VydGlmaWNhdGUuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhCiAqICAgUEVNLWZvcm1hdHRlZCBjZXJ0aWZpY2F0ZSBvciBhbiBhcnJheSBvZiBQRU0tZm9ybWF0dGVkIGNlcnRpZmljYXRlcwogKiAgIHRoYXQgY29uc3RpdHV0ZSBhIGNlcnRpZmljYXRlIGNoYWluLCB3aXRoIHRoZSBmaXJzdCBpbiB0aGUgYXJyYXkvY2hhaW4KICogICBiZWluZyB0aGUgY2xpZW50J3MgY2VydGlmaWNhdGUuCiAqIGdldFByaXZhdGVLZXkoY29ubiwgY2VydGlmaWNhdGUpCiAqICAgVGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgYW4gZm9yZ2UucGtpIFguNTA5IGNlcnRpZmljYXRlIG9iamVjdCB0aGF0CiAqICAgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0ZWQgcHJpdmF0ZSBrZXkuIFRoZSByZXR1cm4gdmFsdWUgbXVzdAogKiAgIGJlIGEgUEVNLWZvcm1hdHRlZCBwcml2YXRlIGtleS4KICogZ2V0U2lnbmF0dXJlKGNvbm4sIGJ5dGVzLCBjYWxsYmFjaykKICogICBUaGlzIGNhbGxiYWNrIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgZ2V0UHJpdmF0ZUtleSBpZiB0aGUgcHJpdmF0ZSBrZXkKICogICBpcyBub3QgZGlyZWN0bHkgYWNjZXNzaWJsZSBpbiBqYXZhc2NyaXB0IG9yIHNob3VsZCBub3QgYmUuIEZvcgogKiAgIGluc3RhbmNlLCBhIHNlY3VyZSBleHRlcm5hbCB3ZWIgc2VydmljZSBjb3VsZCBwcm92aWRlIHRoZSBzaWduYXR1cmUKICogICBpbiBleGNoYW5nZSBmb3IgYXBwcm9wcmlhdGUgY3JlZGVudGlhbHMuIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIGEKICogICBzdHJpbmcgb2YgYnl0ZXMgdG8gYmUgc2lnbmVkIHRoYXQgYXJlIHBhcnQgb2YgdGhlIFRMUyBwcm90b2NvbC4gVGhlc2UKICogICBieXRlcyBhcmUgdXNlZCB0byB2ZXJpZnkgdGhhdCB0aGUgcHJpdmF0ZSBrZXkgZm9yIHRoZSBwcmV2aW91c2x5CiAqICAgcHJvdmlkZWQgY2xpZW50LXNpZGUgY2VydGlmaWNhdGUgaXMgYWNjZXNzaWJsZSB0byB0aGUgY2xpZW50LiBUaGUKICogICBjYWxsYmFjayBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgMiBwYXJhbWV0ZXJzLCB0aGUgVExTIGNvbm5lY3Rpb24KICogICBhbmQgdGhlIFJTQSBlbmNyeXB0ZWQgKHNpZ25lZCkgYnl0ZXMgYXMgYSBzdHJpbmcuIFRoaXMgY2FsbGJhY2sgbXVzdAogKiAgIGJlIGNhbGxlZCBvbmNlIHRoZSBzaWduYXR1cmUgaXMgcmVhZHkuCiAqCiAqIEBwYXJhbSBvcHRpb25zIHRoZSBvcHRpb25zIGZvciB0aGlzIGNvbm5lY3Rpb246CiAqICAgc2VydmVyOiB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHNlcnZlci1zaWRlLCBmYWxzZSBmb3IgY2xpZW50LgogKiAgIHNlc3Npb25JZDogYSBzZXNzaW9uIElEIHRvIHJldXNlLCBudWxsIGZvciBhIG5ldyBjb25uZWN0aW9uLgogKiAgIGNhU3RvcmU6IGFuIGFycmF5IG9mIGNlcnRpZmljYXRlcyB0byB0cnVzdC4KICogICBzZXNzaW9uQ2FjaGU6IGEgc2Vzc2lvbiBjYWNoZSB0byB1c2UuCiAqICAgY2lwaGVyU3VpdGVzOiBhbiBvcHRpb25hbCBhcnJheSBvZiBjaXBoZXIgc3VpdGVzIHRvIHVzZSwKICogICAgIHNlZSB0bHMuQ2lwaGVyU3VpdGVzLgogKiAgIGNvbm5lY3RlZDogZnVuY3Rpb24oY29ubikgY2FsbGVkIHdoZW4gdGhlIGZpcnN0IGhhbmRzaGFrZSBjb21wbGV0ZXMuCiAqICAgdmlydHVhbEhvc3Q6IHRoZSB2aXJ0dWFsIHNlcnZlciBuYW1lIHRvIHVzZSBpbiBhIFRMUyBTTkkgZXh0ZW5zaW9uLgogKiAgIHZlcmlmeUNsaWVudDogdHJ1ZSB0byByZXF1aXJlIGEgY2xpZW50IGNlcnRpZmljYXRlIGluIHNlcnZlciBtb2RlLAogKiAgICAgJ29wdGlvbmFsJyB0byByZXF1ZXN0IG9uZSwgZmFsc2Ugbm90IHRvIChkZWZhdWx0OiBmYWxzZSkuCiAqICAgdmVyaWZ5OiBhIGhhbmRsZXIgdXNlZCB0byBjdXN0b20gdmVyaWZ5IGNlcnRpZmljYXRlcyBpbiB0aGUgY2hhaW4uCiAqICAgZ2V0Q2VydGlmaWNhdGU6IGFuIG9wdGlvbmFsIGNhbGxiYWNrIHVzZWQgdG8gZ2V0IGEgY2VydGlmaWNhdGUgb3IKICogICAgIGEgY2hhaW4gb2YgY2VydGlmaWNhdGVzIChhcyBhbiBhcnJheSkuCiAqICAgZ2V0UHJpdmF0ZUtleTogYW4gb3B0aW9uYWwgY2FsbGJhY2sgdXNlZCB0byBnZXQgYSBwcml2YXRlIGtleS4KICogICBnZXRTaWduYXR1cmU6IGFuIG9wdGlvbmFsIGNhbGxiYWNrIHVzZWQgdG8gZ2V0IGEgc2lnbmF0dXJlLgogKiAgIHRsc0RhdGFSZWFkeTogZnVuY3Rpb24oY29ubikgY2FsbGVkIHdoZW4gVExTIHByb3RvY29sIGRhdGEgaGFzIGJlZW4KICogICAgIHByZXBhcmVkIGFuZCBpcyByZWFkeSB0byBiZSB1c2VkICh0eXBpY2FsbHkgc2VudCBvdmVyIGEgc29ja2V0CiAqICAgICBjb25uZWN0aW9uIHRvIGl0cyBkZXN0aW5hdGlvbiksIHJlYWQgZnJvbSBjb25uLnRsc0RhdGEgYnVmZmVyLgogKiAgIGRhdGFSZWFkeTogZnVuY3Rpb24oY29ubikgY2FsbGVkIHdoZW4gYXBwbGljYXRpb24gZGF0YSBoYXMKICogICAgIGJlZW4gcGFyc2VkIGZyb20gYSBUTFMgcmVjb3JkIGFuZCBzaG91bGQgYmUgY29uc3VtZWQgYnkgdGhlCiAqICAgICBhcHBsaWNhdGlvbiwgcmVhZCBmcm9tIGNvbm4uZGF0YSBidWZmZXIuCiAqICAgY2xvc2VkOiBmdW5jdGlvbihjb25uKSBjYWxsZWQgd2hlbiB0aGUgY29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQuCiAqICAgZXJyb3I6IGZ1bmN0aW9uKGNvbm4sIGVycm9yKSBjYWxsZWQgd2hlbiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAqICAgZGVmbGF0ZTogZnVuY3Rpb24oaW5CeXRlcykgaWYgcHJvdmlkZWQsIHdpbGwgZGVmbGF0ZSBUTFMgcmVjb3JkcyB1c2luZwogKiAgICAgdGhlIGRlZmxhdGUgYWxnb3JpdGhtIGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgaXQuCiAqICAgaW5mbGF0ZTogZnVuY3Rpb24oaW5CeXRlcykgaWYgcHJvdmlkZWQsIHdpbGwgaW5mbGF0ZSBUTFMgcmVjb3JkcyB1c2luZwogKiAgICAgdGhlIGRlZmxhdGUgYWxnb3JpdGhtIGlmIHRoZSBzZXJ2ZXIgc3VwcG9ydHMgaXQuCiAqCiAqIEByZXR1cm4gdGhlIG5ldyBUTFMgY29ubmVjdGlvbi4KICovCmZvcmdlLnRscy5jcmVhdGVDb25uZWN0aW9uID0gdGxzLmNyZWF0ZUNvbm5lY3Rpb247Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICd0bHMnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvdGxzJyxbCiAgJ3JlcXVpcmUnLAogICdtb2R1bGUnLAogICcuL2FzbjEnLAogICcuL2htYWMnLAogICcuL21kJywKICAnLi9wZW0nLAogICcuL3BraScsCiAgJy4vcmFuZG9tJywKICAnLi91dGlsJ10sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIEEgSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBBRVMgQ2lwaGVyIFN1aXRlcyBmb3IgVExTLgogKgogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxNSBEaWdpdGFsIEJhemFhciwgSW5jLgogKgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCnZhciB0bHMgPSBmb3JnZS50bHM7CgovKioKICogU3VwcG9ydGVkIGNpcGhlciBzdWl0ZXMuCiAqLwp0bHMuQ2lwaGVyU3VpdGVzWydUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBJ10gPSB7CiAgaWQ6IFsweDAwLDB4MmZdLAogIG5hbWU6ICdUTFNfUlNBX1dJVEhfQUVTXzEyOF9DQkNfU0hBJywKICBpbml0U2VjdXJpdHlQYXJhbWV0ZXJzOiBmdW5jdGlvbihzcCkgewogICAgc3AuYnVsa19jaXBoZXJfYWxnb3JpdGhtID0gdGxzLkJ1bGtDaXBoZXJBbGdvcml0aG0uYWVzOwogICAgc3AuY2lwaGVyX3R5cGUgPSB0bHMuQ2lwaGVyVHlwZS5ibG9jazsKICAgIHNwLmVuY19rZXlfbGVuZ3RoID0gMTY7CiAgICBzcC5ibG9ja19sZW5ndGggPSAxNjsKICAgIHNwLmZpeGVkX2l2X2xlbmd0aCA9IDE2OwogICAgc3AucmVjb3JkX2l2X2xlbmd0aCA9IDE2OwogICAgc3AubWFjX2FsZ29yaXRobSA9IHRscy5NQUNBbGdvcml0aG0uaG1hY19zaGExOwogICAgc3AubWFjX2xlbmd0aCA9IDIwOwogICAgc3AubWFjX2tleV9sZW5ndGggPSAyMDsKICB9LAogIGluaXRDb25uZWN0aW9uU3RhdGU6IGluaXRDb25uZWN0aW9uU3RhdGUKfTsKdGxzLkNpcGhlclN1aXRlc1snVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQSddID0gewogIGlkOiBbMHgwMCwweDM1XSwKICBuYW1lOiAnVExTX1JTQV9XSVRIX0FFU18yNTZfQ0JDX1NIQScsCiAgaW5pdFNlY3VyaXR5UGFyYW1ldGVyczogZnVuY3Rpb24oc3ApIHsKICAgIHNwLmJ1bGtfY2lwaGVyX2FsZ29yaXRobSA9IHRscy5CdWxrQ2lwaGVyQWxnb3JpdGhtLmFlczsKICAgIHNwLmNpcGhlcl90eXBlID0gdGxzLkNpcGhlclR5cGUuYmxvY2s7CiAgICBzcC5lbmNfa2V5X2xlbmd0aCA9IDMyOwogICAgc3AuYmxvY2tfbGVuZ3RoID0gMTY7CiAgICBzcC5maXhlZF9pdl9sZW5ndGggPSAxNjsKICAgIHNwLnJlY29yZF9pdl9sZW5ndGggPSAxNjsKICAgIHNwLm1hY19hbGdvcml0aG0gPSB0bHMuTUFDQWxnb3JpdGhtLmhtYWNfc2hhMTsKICAgIHNwLm1hY19sZW5ndGggPSAyMDsKICAgIHNwLm1hY19rZXlfbGVuZ3RoID0gMjA7CiAgfSwKICBpbml0Q29ubmVjdGlvblN0YXRlOiBpbml0Q29ubmVjdGlvblN0YXRlCn07CgpmdW5jdGlvbiBpbml0Q29ubmVjdGlvblN0YXRlKHN0YXRlLCBjLCBzcCkgewogIHZhciBjbGllbnQgPSAoYy5lbnRpdHkgPT09IGZvcmdlLnRscy5Db25uZWN0aW9uRW5kLmNsaWVudCk7CgogIC8vIGNpcGhlciBzZXR1cAogIHN0YXRlLnJlYWQuY2lwaGVyU3RhdGUgPSB7CiAgICBpbml0OiBmYWxzZSwKICAgIGNpcGhlcjogZm9yZ2UuY2lwaGVyLmNyZWF0ZURlY2lwaGVyKCdBRVMtQ0JDJywgY2xpZW50ID8KICAgICAgc3Aua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5IDogc3Aua2V5cy5jbGllbnRfd3JpdGVfa2V5KSwKICAgIGl2OiBjbGllbnQgPyBzcC5rZXlzLnNlcnZlcl93cml0ZV9JViA6IHNwLmtleXMuY2xpZW50X3dyaXRlX0lWCiAgfTsKICBzdGF0ZS53cml0ZS5jaXBoZXJTdGF0ZSA9IHsKICAgIGluaXQ6IGZhbHNlLAogICAgY2lwaGVyOiBmb3JnZS5jaXBoZXIuY3JlYXRlQ2lwaGVyKCdBRVMtQ0JDJywgY2xpZW50ID8KICAgICAgc3Aua2V5cy5jbGllbnRfd3JpdGVfa2V5IDogc3Aua2V5cy5zZXJ2ZXJfd3JpdGVfa2V5KSwKICAgIGl2OiBjbGllbnQgPyBzcC5rZXlzLmNsaWVudF93cml0ZV9JViA6IHNwLmtleXMuc2VydmVyX3dyaXRlX0lWCiAgfTsKICBzdGF0ZS5yZWFkLmNpcGhlckZ1bmN0aW9uID0gZGVjcnlwdF9hZXNfY2JjX3NoYTE7CiAgc3RhdGUud3JpdGUuY2lwaGVyRnVuY3Rpb24gPSBlbmNyeXB0X2Flc19jYmNfc2hhMTsKCiAgLy8gTUFDIHNldHVwCiAgc3RhdGUucmVhZC5tYWNMZW5ndGggPSBzdGF0ZS53cml0ZS5tYWNMZW5ndGggPSBzcC5tYWNfbGVuZ3RoOwogIHN0YXRlLnJlYWQubWFjRnVuY3Rpb24gPSBzdGF0ZS53cml0ZS5tYWNGdW5jdGlvbiA9IHRscy5obWFjX3NoYTE7Cn0KCi8qKgogKiBFbmNyeXB0cyB0aGUgVExTQ29tcHJlc3NlZCByZWNvcmQgaW50byBhIFRMU0NpcGhlclRleHQgcmVjb3JkIHVzaW5nIEFFUwogKiBpbiBDQkMgbW9kZS4KICoKICogQHBhcmFtIHJlY29yZCB0aGUgVExTQ29tcHJlc3NlZCByZWNvcmQgdG8gZW5jcnlwdC4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KZnVuY3Rpb24gZW5jcnlwdF9hZXNfY2JjX3NoYTEocmVjb3JkLCBzKSB7CiAgdmFyIHJ2YWwgPSBmYWxzZTsKCiAgLy8gYXBwZW5kIE1BQyB0byBmcmFnbWVudCwgdXBkYXRlIHNlcXVlbmNlIG51bWJlcgogIHZhciBtYWMgPSBzLm1hY0Z1bmN0aW9uKHMubWFjS2V5LCBzLnNlcXVlbmNlTnVtYmVyLCByZWNvcmQpOwogIHJlY29yZC5mcmFnbWVudC5wdXRCeXRlcyhtYWMpOwogIHMudXBkYXRlU2VxdWVuY2VOdW1iZXIoKTsKCiAgLy8gVExTIDEuMSsgdXNlIGFuIGV4cGxpY2l0IElWIGV2ZXJ5IHRpbWUgdG8gcHJvdGVjdCBhZ2FpbnN0IENCQyBhdHRhY2tzCiAgdmFyIGl2OwogIGlmKHJlY29yZC52ZXJzaW9uLm1pbm9yID09PSB0bHMuVmVyc2lvbnMuVExTXzFfMC5taW5vcikgewogICAgLy8gdXNlIHRoZSBwcmUtZ2VuZXJhdGVkIElWIHdoZW4gaW5pdGlhbGl6aW5nIGZvciBUTFMgMS4wLCBvdGhlcndpc2UgdXNlCiAgICAvLyB0aGUgcmVzaWR1ZSBmcm9tIHRoZSBwcmV2aW91cyBlbmNyeXB0aW9uCiAgICBpdiA9IHMuY2lwaGVyU3RhdGUuaW5pdCA/IG51bGwgOiBzLmNpcGhlclN0YXRlLml2OwogIH0gZWxzZSB7CiAgICBpdiA9IGZvcmdlLnJhbmRvbS5nZXRCeXRlc1N5bmMoMTYpOwogIH0KCiAgcy5jaXBoZXJTdGF0ZS5pbml0ID0gdHJ1ZTsKCiAgLy8gc3RhcnQgY2lwaGVyCiAgdmFyIGNpcGhlciA9IHMuY2lwaGVyU3RhdGUuY2lwaGVyOwogIGNpcGhlci5zdGFydCh7aXY6IGl2fSk7CgogIC8vIFRMUyAxLjErIHdyaXRlIElWIGludG8gb3V0cHV0CiAgaWYocmVjb3JkLnZlcnNpb24ubWlub3IgPj0gdGxzLlZlcnNpb25zLlRMU18xXzEubWlub3IpIHsKICAgIGNpcGhlci5vdXRwdXQucHV0Qnl0ZXMoaXYpOwogIH0KCiAgLy8gZG8gZW5jcnlwdGlvbiAoZGVmYXVsdCBwYWRkaW5nIGlzIGFwcHJvcHJpYXRlKQogIGNpcGhlci51cGRhdGUocmVjb3JkLmZyYWdtZW50KTsKICBpZihjaXBoZXIuZmluaXNoKGVuY3J5cHRfYWVzX2NiY19zaGExX3BhZGRpbmcpKSB7CiAgICAvLyBzZXQgcmVjb3JkIGZyYWdtZW50IHRvIGVuY3J5cHRlZCBvdXRwdXQKICAgIHJlY29yZC5mcmFnbWVudCA9IGNpcGhlci5vdXRwdXQ7CiAgICByZWNvcmQubGVuZ3RoID0gcmVjb3JkLmZyYWdtZW50Lmxlbmd0aCgpOwogICAgcnZhbCA9IHRydWU7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIEhhbmRsZXMgcGFkZGluZyBmb3IgYWVzX2NiY19zaGExIGluIGVuY3J5cHQgbW9kZS4KICoKICogQHBhcmFtIGJsb2NrU2l6ZSB0aGUgYmxvY2sgc2l6ZS4KICogQHBhcmFtIGlucHV0IHRoZSBpbnB1dCBidWZmZXIuCiAqIEBwYXJhbSBkZWNyeXB0IHRydWUgaW4gZGVjcnlwdCBtb2RlLCBmYWxzZSBpbiBlbmNyeXB0IG1vZGUuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KZnVuY3Rpb24gZW5jcnlwdF9hZXNfY2JjX3NoYTFfcGFkZGluZyhibG9ja1NpemUsIGlucHV0LCBkZWNyeXB0KSB7CiAgLyogVGhlIGVuY3J5cHRlZCBkYXRhIGxlbmd0aCAoVExTQ2lwaGVydGV4dC5sZW5ndGgpIGlzIG9uZSBtb3JlIHRoYW4gdGhlIHN1bQogICBvZiBTZWN1cml0eVBhcmFtZXRlcnMuYmxvY2tfbGVuZ3RoLCBUTFNDb21wcmVzc2VkLmxlbmd0aCwKICAgU2VjdXJpdHlQYXJhbWV0ZXJzLm1hY19sZW5ndGgsIGFuZCBwYWRkaW5nX2xlbmd0aC4KCiAgIFRoZSBwYWRkaW5nIG1heSBiZSBhbnkgbGVuZ3RoIHVwIHRvIDI1NSBieXRlcyBsb25nLCBhcyBsb25nIGFzIGl0IHJlc3VsdHMgaW4KICAgdGhlIFRMU0NpcGhlcnRleHQubGVuZ3RoIGJlaW5nIGFuIGludGVncmFsIG11bHRpcGxlIG9mIHRoZSBibG9jayBsZW5ndGguCiAgIExlbmd0aHMgbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5IG1pZ2h0IGJlIGRlc2lyYWJsZSB0byBmcnVzdHJhdGUgYXR0YWNrcyBvbiBhCiAgIHByb3RvY29sIGJhc2VkIG9uIGFuYWx5c2lzIG9mIHRoZSBsZW5ndGhzIG9mIGV4Y2hhbmdlZCBtZXNzYWdlcy4gRWFjaCB1aW50OAogICBpbiB0aGUgcGFkZGluZyBkYXRhIHZlY3RvciBtdXN0IGJlIGZpbGxlZCB3aXRoIHRoZSBwYWRkaW5nIGxlbmd0aCB2YWx1ZS4KCiAgIFRoZSBwYWRkaW5nIGxlbmd0aCBzaG91bGQgYmUgc3VjaCB0aGF0IHRoZSB0b3RhbCBzaXplIG9mIHRoZQogICBHZW5lcmljQmxvY2tDaXBoZXIgc3RydWN0dXJlIGlzIGEgbXVsdGlwbGUgb2YgdGhlIGNpcGhlcidzIGJsb2NrIGxlbmd0aC4KICAgTGVnYWwgdmFsdWVzIHJhbmdlIGZyb20gemVybyB0byAyNTUsIGluY2x1c2l2ZS4gVGhpcyBsZW5ndGggc3BlY2lmaWVzIHRoZQogICBsZW5ndGggb2YgdGhlIHBhZGRpbmcgZmllbGQgZXhjbHVzaXZlIG9mIHRoZSBwYWRkaW5nX2xlbmd0aCBmaWVsZCBpdHNlbGYuCgogICBUaGlzIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIFBLQ1MjNyBiZWNhdXNlIHRoZSBwYWRkaW5nIHZhbHVlIGlzIDEKICAgbGVzcyB0aGFuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHBhZGRpbmcgYnl0ZXMgaWYgeW91IGluY2x1ZGUgdGhlCiAgIHBhZGRpbmdfbGVuZ3RoIHVpbnQ4IGl0c2VsZiBhcyBhIHBhZGRpbmcgYnl0ZS4gKi8KICBpZighZGVjcnlwdCkgewogICAgLy8gZ2V0IHRoZSBudW1iZXIgb2YgcGFkZGluZyBieXRlcyByZXF1aXJlZCB0byByZWFjaCB0aGUgYmxvY2tTaXplIGFuZAogICAgLy8gc3VidHJhY3QgMSBmb3IgdGhlIHBhZGRpbmcgdmFsdWUgKHRvIG1ha2Ugcm9vbSBmb3IgdGhlIHBhZGRpbmdfbGVuZ3RoCiAgICAvLyB1aW50OCkKICAgIHZhciBwYWRkaW5nID0gYmxvY2tTaXplIC0gKGlucHV0Lmxlbmd0aCgpICUgYmxvY2tTaXplKTsKICAgIGlucHV0LmZpbGxXaXRoQnl0ZShwYWRkaW5nIC0gMSwgcGFkZGluZyk7CiAgfQogIHJldHVybiB0cnVlOwp9CgovKioKICogSGFuZGxlcyBwYWRkaW5nIGZvciBhZXNfY2JjX3NoYTEgaW4gZGVjcnlwdCBtb2RlLgogKgogKiBAcGFyYW0gYmxvY2tTaXplIHRoZSBibG9jayBzaXplLgogKiBAcGFyYW0gb3V0cHV0IHRoZSBvdXRwdXQgYnVmZmVyLgogKiBAcGFyYW0gZGVjcnlwdCB0cnVlIGluIGRlY3J5cHQgbW9kZSwgZmFsc2UgaW4gZW5jcnlwdCBtb2RlLgogKgogKiBAcmV0dXJuIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICovCmZ1bmN0aW9uIGRlY3J5cHRfYWVzX2NiY19zaGExX3BhZGRpbmcoYmxvY2tTaXplLCBvdXRwdXQsIGRlY3J5cHQpIHsKICB2YXIgcnZhbCA9IHRydWU7CiAgaWYoZGVjcnlwdCkgewogICAgLyogVGhlIGxhc3QgYnl0ZSBpbiB0aGUgb3V0cHV0IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHBhZGRpbmcgYnl0ZXMgbm90CiAgICAgIGluY2x1ZGluZyBpdHNlbGYuIEVhY2ggb2YgdGhlIHBhZGRpbmcgYnl0ZXMgaGFzIHRoZSBzYW1lIHZhbHVlIGFzIHRoYXQKICAgICAgbGFzdCBieXRlIChrbm93biBhcyB0aGUgcGFkZGluZ19sZW5ndGgpLiBIZXJlIHdlIGNoZWNrIGFsbCBwYWRkaW5nCiAgICAgIGJ5dGVzIHRvIGVuc3VyZSB0aGV5IGhhdmUgdGhlIHZhbHVlIG9mIHBhZGRpbmdfbGVuZ3RoIGV2ZW4gaWYgb25lIG9mCiAgICAgIHRoZW0gaXMgYmFkIGluIG9yZGVyIHRvIHdhcmQtb2ZmIHRpbWluZyBhdHRhY2tzLiAqLwogICAgdmFyIGxlbiA9IG91dHB1dC5sZW5ndGgoKTsKICAgIHZhciBwYWRkaW5nTGVuZ3RoID0gb3V0cHV0Lmxhc3QoKTsKICAgIGZvcih2YXIgaSA9IGxlbiAtIDEgLSBwYWRkaW5nTGVuZ3RoOyBpIDwgbGVuIC0gMTsgKytpKSB7CiAgICAgIHJ2YWwgPSBydmFsICYmIChvdXRwdXQuYXQoaSkgPT0gcGFkZGluZ0xlbmd0aCk7CiAgICB9CiAgICBpZihydmFsKSB7CiAgICAgIC8vIHRyaW0gb2ZmIHBhZGRpbmcgYnl0ZXMgYW5kIGxhc3QgcGFkZGluZyBsZW5ndGggYnl0ZQogICAgICBvdXRwdXQudHJ1bmNhdGUocGFkZGluZ0xlbmd0aCArIDEpOwogICAgfQogIH0KICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIERlY3J5cHRzIGEgVExTQ2lwaGVyVGV4dCByZWNvcmQgaW50byBhIFRMU0NvbXByZXNzZWQgcmVjb3JkIHVzaW5nCiAqIEFFUyBpbiBDQkMgbW9kZS4KICoKICogQHBhcmFtIHJlY29yZCB0aGUgVExTQ2lwaGVyVGV4dCByZWNvcmQgdG8gZGVjcnlwdC4KICogQHBhcmFtIHMgdGhlIENvbm5lY3Rpb25TdGF0ZSB0byB1c2UuCiAqCiAqIEByZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogKi8KdmFyIGNvdW50ID0gMDsKZnVuY3Rpb24gZGVjcnlwdF9hZXNfY2JjX3NoYTEocmVjb3JkLCBzKSB7CiAgdmFyIHJ2YWwgPSBmYWxzZTsKICArK2NvdW50OwoKICB2YXIgaXY7CiAgaWYocmVjb3JkLnZlcnNpb24ubWlub3IgPT09IHRscy5WZXJzaW9ucy5UTFNfMV8wLm1pbm9yKSB7CiAgICAvLyB1c2UgcHJlLWdlbmVyYXRlZCBJViB3aGVuIGluaXRpYWxpemluZyBmb3IgVExTIDEuMCwgb3RoZXJ3aXNlIHVzZSB0aGUKICAgIC8vIHJlc2lkdWUgZnJvbSB0aGUgcHJldmlvdXMgZGVjcnlwdGlvbgogICAgaXYgPSBzLmNpcGhlclN0YXRlLmluaXQgPyBudWxsIDogcy5jaXBoZXJTdGF0ZS5pdjsKICB9IGVsc2UgewogICAgLy8gVExTIDEuMSsgdXNlIGFuIGV4cGxpY2l0IElWIGV2ZXJ5IHRpbWUgdG8gcHJvdGVjdCBhZ2FpbnN0IENCQyBhdHRhY2tzCiAgICAvLyB0aGF0IGlzIGFwcGVuZGVkIHRvIHRoZSByZWNvcmQgZnJhZ21lbnQKICAgIGl2ID0gcmVjb3JkLmZyYWdtZW50LmdldEJ5dGVzKDE2KTsKICB9CgogIHMuY2lwaGVyU3RhdGUuaW5pdCA9IHRydWU7CgogIC8vIHN0YXJ0IGNpcGhlcgogIHZhciBjaXBoZXIgPSBzLmNpcGhlclN0YXRlLmNpcGhlcjsKICBjaXBoZXIuc3RhcnQoe2l2OiBpdn0pOwoKICAvLyBkbyBkZWNyeXB0aW9uCiAgY2lwaGVyLnVwZGF0ZShyZWNvcmQuZnJhZ21lbnQpOwogIHJ2YWwgPSBjaXBoZXIuZmluaXNoKGRlY3J5cHRfYWVzX2NiY19zaGExX3BhZGRpbmcpOwoKICAvLyBldmVuIGlmIGRlY3J5cHRpb24gZmFpbHMsIGtlZXAgZ29pbmcgdG8gbWluaW1pemUgdGltaW5nIGF0dGFja3MKCiAgLy8gZGVjcnlwdGVkIGRhdGE6CiAgLy8gZmlyc3QgKGxlbiAtIDIwKSBieXRlcyA9IGFwcGxpY2F0aW9uIGRhdGEKICAvLyBsYXN0IDIwIGJ5dGVzICAgICAgICAgID0gTUFDCiAgdmFyIG1hY0xlbiA9IHMubWFjTGVuZ3RoOwoKICAvLyBjcmVhdGUgYSByYW5kb20gTUFDIHRvIGNoZWNrIGFnYWluc3Qgc2hvdWxkIHRoZSBtYWMgbGVuZ3RoIGNoZWNrIGZhaWwKICAvLyBOb3RlOiBkbyB0aGlzIHJlZ2FyZGxlc3Mgb2YgdGhlIGZhaWx1cmUgdG8ga2VlcCB0aW1pbmcgY29uc2lzdGVudAogIHZhciBtYWMgPSBmb3JnZS5yYW5kb20uZ2V0Qnl0ZXNTeW5jKG1hY0xlbik7CgogIC8vIGdldCBmcmFnbWVudCBhbmQgbWFjCiAgdmFyIGxlbiA9IGNpcGhlci5vdXRwdXQubGVuZ3RoKCk7CiAgaWYobGVuID49IG1hY0xlbikgewogICAgcmVjb3JkLmZyYWdtZW50ID0gY2lwaGVyLm91dHB1dC5nZXRCeXRlcyhsZW4gLSBtYWNMZW4pOwogICAgbWFjID0gY2lwaGVyLm91dHB1dC5nZXRCeXRlcyhtYWNMZW4pOwogIH0gZWxzZSB7CiAgICAvLyBiYWQgZGF0YSwgYnV0IGdldCBieXRlcyBhbnl3YXkgdG8gdHJ5IHRvIGtlZXAgdGltaW5nIGNvbnNpc3RlbnQKICAgIHJlY29yZC5mcmFnbWVudCA9IGNpcGhlci5vdXRwdXQuZ2V0Qnl0ZXMoKTsKICB9CiAgcmVjb3JkLmZyYWdtZW50ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIocmVjb3JkLmZyYWdtZW50KTsKICByZWNvcmQubGVuZ3RoID0gcmVjb3JkLmZyYWdtZW50Lmxlbmd0aCgpOwoKICAvLyBzZWUgaWYgZGF0YSBpbnRlZ3JpdHkgY2hlY2tzIG91dCwgdXBkYXRlIHNlcXVlbmNlIG51bWJlcgogIHZhciBtYWMyID0gcy5tYWNGdW5jdGlvbihzLm1hY0tleSwgcy5zZXF1ZW5jZU51bWJlciwgcmVjb3JkKTsKICBzLnVwZGF0ZVNlcXVlbmNlTnVtYmVyKCk7CiAgcnZhbCA9IGNvbXBhcmVNYWNzKHMubWFjS2V5LCBtYWMsIG1hYzIpICYmIHJ2YWw7CiAgcmV0dXJuIHJ2YWw7Cn0KCi8qKgogKiBTYWZlbHkgY29tcGFyZSB0d28gTUFDcy4gVGhpcyBmdW5jdGlvbiB3aWxsIGNvbXBhcmUgdHdvIE1BQ3MgaW4gYSB3YXkKICogdGhhdCBwcm90ZWN0cyBhZ2FpbnN0IHRpbWluZyBhdHRhY2tzLgogKgogKiBUT0RPOiBFeHBvc2UgZWxzZXdoZXJlIGFzIGEgdXRpbGl0eSBBUEkuCiAqCiAqIFNlZTogaHR0cHM6Ly93d3cubmNjZ3JvdXAudHJ1c3QvdXMvYWJvdXQtdXMvbmV3c3Jvb20tYW5kLWV2ZW50cy9ibG9nLzIwMTEvZmVicnVhcnkvZG91YmxlLWhtYWMtdmVyaWZpY2F0aW9uLwogKgogKiBAcGFyYW0ga2V5IHRoZSBNQUMga2V5IHRvIHVzZS4KICogQHBhcmFtIG1hYzEgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAqIEBwYXJhbSBtYWMyIGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogKgogKiBAcmV0dXJuIHRydWUgaWYgdGhlIE1BQ3MgYXJlIHRoZSBzYW1lLCBmYWxzZSBpZiBub3QuCiAqLwpmdW5jdGlvbiBjb21wYXJlTWFjcyhrZXksIG1hYzEsIG1hYzIpIHsKICB2YXIgaG1hYyA9IGZvcmdlLmhtYWMuY3JlYXRlKCk7CgogIGhtYWMuc3RhcnQoJ1NIQTEnLCBrZXkpOwogIGhtYWMudXBkYXRlKG1hYzEpOwogIG1hYzEgPSBobWFjLmRpZ2VzdCgpLmdldEJ5dGVzKCk7CgogIGhtYWMuc3RhcnQobnVsbCwgbnVsbCk7CiAgaG1hYy51cGRhdGUobWFjMik7CiAgbWFjMiA9IGhtYWMuZGlnZXN0KCkuZ2V0Qnl0ZXMoKTsKCiAgcmV0dXJuIG1hYzEgPT09IG1hYzI7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2Flc0NpcGhlclN1aXRlcyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9hZXNDaXBoZXJTdWl0ZXMnLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi9hZXMnLCAnLi90bHMnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogRGVidWdnaW5nIHN1cHBvcnQgZm9yIHdlYiBhcHBsaWNhdGlvbnMuCiAqCiAqIEBhdXRob3IgRGF2aWQgSS4gTGVobiA8ZGxlaG5AZGlnaXRhbGJhemFhci5jb20+CiAqCiAqIENvcHlyaWdodCAyMDA4LTIwMTMgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovKiBERUJVRyBBUEkgKi8KZm9yZ2UuZGVidWcgPSBmb3JnZS5kZWJ1ZyB8fCB7fTsKCi8vIFByaXZhdGUgc3RvcmFnZSBmb3IgZGVidWdnaW5nLgovLyBVc2VmdWwgdG8gZXhwb3NlIGRhdGEgdGhhdCBpcyBvdGhlcndpc2UgdW52aWV3YWJsZSBiZWhpbmQgY2xvc3VyZXMuCi8vIE5PVEU6IHJlbWVtYmVyIHRoYXQgdGhpcyBjYW4gaG9sZCByZWZlcmVuY2VzIHRvIGRhdGEgYW5kIGNhdXNlIGxlYWtzIQovLyBmb3JtYXQgaXMgImZvcmdlLl9kZWJ1Zy48bW9kdWxlbmFtZT4uPGRhdGFuYW1lPiA9IGRhdGEiCi8vIEV4YW1wbGU6Ci8vIChmdW5jdGlvbigpIHsKLy8gICB2YXIgY2F0ID0gJ2ZvcmdlLnRlc3QuVGVzdCc7IC8vIGRlYnVnZ2luZyBjYXRlZ29yeQovLyAgIHZhciBzU3RhdGUgPSB7Li4ufTsgLy8gbG9jYWwgc3RhdGUKLy8gICBmb3JnZS5kZWJ1Zy5zZXQoY2F0LCAnc1N0YXRlJywgc1N0YXRlKTsKLy8gfSkoKTsKZm9yZ2UuZGVidWcuc3RvcmFnZSA9IHt9OwoKLyoqCiAqIEdldHMgZGVidWcgZGF0YS4gT21pdCBuYW1lIGZvciBhbGwgY2F0IGRhdGEgIE9taXQgbmFtZSBhbmQgY2F0IGZvcgogKiBhbGwgZGF0YS4KICoKICogQHBhcmFtIGNhdCBuYW1lIG9mIGRlYnVnZ2luZyBjYXRlZ29yeS4KICogQHBhcmFtIG5hbWUgbmFtZSBvZiBkYXRhIHRvIGdldCAob3B0aW9uYWwpLgogKiBAcmV0dXJuIG9iamVjdCB3aXRoIHJlcXVlc3RlZCBkZWJ1ZyBkYXRhIG9yIHVuZGVmaW5lZC4KICovCmZvcmdlLmRlYnVnLmdldCA9IGZ1bmN0aW9uKGNhdCwgbmFtZSkgewogIHZhciBydmFsOwogIGlmKHR5cGVvZihjYXQpID09PSAndW5kZWZpbmVkJykgewogICAgcnZhbCA9IGZvcmdlLmRlYnVnLnN0b3JhZ2U7CiAgfSBlbHNlIGlmKGNhdCBpbiBmb3JnZS5kZWJ1Zy5zdG9yYWdlKSB7CiAgICBpZih0eXBlb2YobmFtZSkgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHJ2YWwgPSBmb3JnZS5kZWJ1Zy5zdG9yYWdlW2NhdF07CiAgICB9IGVsc2UgewogICAgICBydmFsID0gZm9yZ2UuZGVidWcuc3RvcmFnZVtjYXRdW25hbWVdOwogICAgfQogIH0KICByZXR1cm4gcnZhbDsKfTsKCi8qKgogKiBTZXRzIGRlYnVnIGRhdGEuCiAqCiAqIEBwYXJhbSBjYXQgbmFtZSBvZiBkZWJ1Z2dpbmcgY2F0ZWdvcnkuCiAqIEBwYXJhbSBuYW1lIG5hbWUgb2YgZGF0YSB0byBzZXQuCiAqIEBwYXJhbSBkYXRhIGRhdGEgdG8gc2V0LgogKi8KZm9yZ2UuZGVidWcuc2V0ID0gZnVuY3Rpb24oY2F0LCBuYW1lLCBkYXRhKSB7CiAgaWYoIShjYXQgaW4gZm9yZ2UuZGVidWcuc3RvcmFnZSkpIHsKICAgIGZvcmdlLmRlYnVnLnN0b3JhZ2VbY2F0XSA9IHt9OwogIH0KICBmb3JnZS5kZWJ1Zy5zdG9yYWdlW2NhdF1bbmFtZV0gPSBkYXRhOwp9OwoKLyoqCiAqIENsZWFycyBkZWJ1ZyBkYXRhLiBPbWl0IG5hbWUgZm9yIGFsbCBjYXQgZGF0YS4gT21pdCBuYW1lIGFuZCBjYXQgZm9yCiAqIGFsbCBkYXRhLgogKgogKiBAcGFyYW0gY2F0IG5hbWUgb2YgZGVidWdnaW5nIGNhdGVnb3J5LgogKiBAcGFyYW0gbmFtZSBuYW1lIG9mIGRhdGEgdG8gY2xlYXIgb3Igb21pdCB0byBjbGVhciBlbnRpcmUgY2F0ZWdvcnkuCiAqLwpmb3JnZS5kZWJ1Zy5jbGVhciA9IGZ1bmN0aW9uKGNhdCwgbmFtZSkgewogIGlmKHR5cGVvZihjYXQpID09PSAndW5kZWZpbmVkJykgewogICAgZm9yZ2UuZGVidWcuc3RvcmFnZSA9IHt9OwogIH0gZWxzZSBpZihjYXQgaW4gZm9yZ2UuZGVidWcuc3RvcmFnZSkgewogICAgaWYodHlwZW9mKG5hbWUpID09PSAndW5kZWZpbmVkJykgewogICAgICBkZWxldGUgZm9yZ2UuZGVidWcuc3RvcmFnZVtjYXRdOwogICAgfSBlbHNlIHsKICAgICAgZGVsZXRlIGZvcmdlLmRlYnVnLnN0b3JhZ2VbY2F0XVtuYW1lXTsKICAgIH0KICB9Cn07Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdkZWJ1Zyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9kZWJ1ZycsWydyZXF1aXJlJywgJ21vZHVsZSddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBKYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIFJTQS1LRU0uCiAqCiAqIEBhdXRob3IgTGF1dGFybyBDb3p6YW5pIFJvZHJpZ3VlegogKiBAYXV0aG9yIERhdmUgTG9uZ2xleQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQgTGF1dGFybyBDb3p6YW5pIDxsYXV0YXJvLmNvenphbmlAc2N5dGwuY29tPgogKiBDb3B5cmlnaHQgKGMpIDIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7Cgpmb3JnZS5rZW0gPSBmb3JnZS5rZW0gfHwge307Cgp2YXIgQmlnSW50ZWdlciA9IGZvcmdlLmpzYm4uQmlnSW50ZWdlcjsKCi8qKgogKiBUaGUgQVBJIGZvciB0aGUgUlNBIEtleSBFbmNhcHN1bGF0aW9uIE1lY2hhbmlzbSAoUlNBLUtFTSkgZnJvbSBJU08gMTgwMzMtMi4KICovCmZvcmdlLmtlbS5yc2EgPSB7fTsKCi8qKgogKiBDcmVhdGVzIGFuIFJTQSBLRU0gQVBJIG9iamVjdCBmb3IgZ2VuZXJhdGluZyBhIHNlY3JldCBhc3ltbWV0cmljIGtleS4KICoKICogVGhlIHN5bW1ldHJpYyBrZXkgbWF5IGJlIGdlbmVyYXRlZCB2aWEgYSBjYWxsIHRvICdlbmNyeXB0Jywgd2hpY2ggd2lsbAogKiBwcm9kdWNlIGEgY2lwaGVydGV4dCB0byBiZSB0cmFuc21pdHRlZCB0byB0aGUgcmVjaXBpZW50IGFuZCBhIGtleSB0byBiZQogKiBrZXB0IHNlY3JldC4gVGhlIGNpcGhlcnRleHQgaXMgYSBwYXJhbWV0ZXIgdG8gYmUgcGFzc2VkIHRvICdkZWNyeXB0JyB3aGljaAogKiB3aWxsIHByb2R1Y2UgdGhlIHNhbWUgc2VjcmV0IGtleSBmb3IgdGhlIHJlY2lwaWVudCB0byB1c2UgdG8gZGVjcnlwdCBhCiAqIG1lc3NhZ2UgdGhhdCB3YXMgZW5jcnlwdGVkIHdpdGggdGhlIHNlY3JldCBrZXkuCiAqCiAqIEBwYXJhbSBrZGYgdGhlIEtERiBBUEkgdG8gdXNlIChlZzogbmV3IGZvcmdlLmtlbS5rZGYxKCkpLgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIFtwcm5nXSBhIGN1c3RvbSBjcnlwdG8tc2VjdXJlIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciB0byB1c2UsCiAqICAgICAgICAgICAgdGhhdCBtdXN0IGRlZmluZSAiZ2V0Qnl0ZXNTeW5jIi4KICovCmZvcmdlLmtlbS5yc2EuY3JlYXRlID0gZnVuY3Rpb24oa2RmLCBvcHRpb25zKSB7CiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgdmFyIHBybmcgPSBvcHRpb25zLnBybmcgfHwgZm9yZ2UucmFuZG9tOwoKICB2YXIga2VtID0ge307CgogIC8qKgogICAqIEdlbmVyYXRlcyBhIHNlY3JldCBrZXkgYW5kIGl0cyBlbmNhcHN1bGF0aW9uLgogICAqCiAgICogQHBhcmFtIHB1YmxpY0tleSB0aGUgUlNBIHB1YmxpYyBrZXkgdG8gZW5jcnlwdCB3aXRoLgogICAqIEBwYXJhbSBrZXlMZW5ndGggdGhlIGxlbmd0aCwgaW4gYnl0ZXMsIG9mIHRoZSBzZWNyZXQga2V5IHRvIGdlbmVyYXRlLgogICAqCiAgICogQHJldHVybiBhbiBvYmplY3Qgd2l0aDoKICAgKiAgIGVuY2Fwc3VsYXRpb246IHRoZSBjaXBoZXJ0ZXh0IGZvciBnZW5lcmF0aW5nIHRoZSBzZWNyZXQga2V5LCBhcyBhCiAgICogICAgIGJpbmFyeS1lbmNvZGVkIHN0cmluZyBvZiBieXRlcy4KICAgKiAgIGtleTogdGhlIHNlY3JldCBrZXkgdG8gdXNlIGZvciBlbmNyeXB0aW5nIGEgbWVzc2FnZS4KICAgKi8KICBrZW0uZW5jcnlwdCA9IGZ1bmN0aW9uKHB1YmxpY0tleSwga2V5TGVuZ3RoKSB7CiAgICAvLyBnZW5lcmF0ZSBhIHJhbmRvbSByIHdoZXJlIDEgPiByID4gbgogICAgdmFyIGJ5dGVMZW5ndGggPSBNYXRoLmNlaWwocHVibGljS2V5Lm4uYml0TGVuZ3RoKCkgLyA4KTsKICAgIHZhciByOwogICAgZG8gewogICAgICByID0gbmV3IEJpZ0ludGVnZXIoCiAgICAgICAgZm9yZ2UudXRpbC5ieXRlc1RvSGV4KHBybmcuZ2V0Qnl0ZXNTeW5jKGJ5dGVMZW5ndGgpKSwKICAgICAgICAxNikubW9kKHB1YmxpY0tleS5uKTsKICAgIH0gd2hpbGUoci5lcXVhbHMoQmlnSW50ZWdlci5aRVJPKSk7CgogICAgLy8gcHJlcGVuZCByIHdpdGggemVyb3MKICAgIHIgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMoci50b1N0cmluZygxNikpOwogICAgdmFyIHplcm9zID0gYnl0ZUxlbmd0aCAtIHIubGVuZ3RoOwogICAgaWYoemVyb3MgPiAwKSB7CiAgICAgIHIgPSBmb3JnZS51dGlsLmZpbGxTdHJpbmcoU3RyaW5nLmZyb21DaGFyQ29kZSgwKSwgemVyb3MpICsgcjsKICAgIH0KCiAgICAvLyBlbmNyeXB0IHRoZSByYW5kb20KICAgIHZhciBlbmNhcHN1bGF0aW9uID0gcHVibGljS2V5LmVuY3J5cHQociwgJ05PTkUnKTsKCiAgICAvLyBnZW5lcmF0ZSB0aGUgc2VjcmV0IGtleQogICAgdmFyIGtleSA9IGtkZi5nZW5lcmF0ZShyLCBrZXlMZW5ndGgpOwoKICAgIHJldHVybiB7ZW5jYXBzdWxhdGlvbjogZW5jYXBzdWxhdGlvbiwga2V5OiBrZXl9OwogIH07CgogIC8qKgogICAqIERlY3J5cHRzIGFuIGVuY2Fwc3VsYXRlZCBzZWNyZXQga2V5LgogICAqCiAgICogQHBhcmFtIHByaXZhdGVLZXkgdGhlIFJTQSBwcml2YXRlIGtleSB0byBkZWNyeXB0IHdpdGguCiAgICogQHBhcmFtIGVuY2Fwc3VsYXRpb24gdGhlIGNpcGhlcnRleHQgZm9yIGdlbmVyYXRpbmcgdGhlIHNlY3JldCBrZXksIGFzCiAgICogICAgICAgICAgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcgb2YgYnl0ZXMuCiAgICogQHBhcmFtIGtleUxlbmd0aCB0aGUgbGVuZ3RoLCBpbiBieXRlcywgb2YgdGhlIHNlY3JldCBrZXkgdG8gZ2VuZXJhdGUuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBzZWNyZXQga2V5IGFzIGEgYmluYXJ5LWVuY29kZWQgc3RyaW5nIG9mIGJ5dGVzLgogICAqLwogIGtlbS5kZWNyeXB0ID0gZnVuY3Rpb24ocHJpdmF0ZUtleSwgZW5jYXBzdWxhdGlvbiwga2V5TGVuZ3RoKSB7CiAgICAvLyBkZWNyeXB0IHRoZSBlbmNhcHN1bGF0aW9uIGFuZCBnZW5lcmF0ZSB0aGUgc2VjcmV0IGtleQogICAgdmFyIHIgPSBwcml2YXRlS2V5LmRlY3J5cHQoZW5jYXBzdWxhdGlvbiwgJ05PTkUnKTsKICAgIHJldHVybiBrZGYuZ2VuZXJhdGUociwga2V5TGVuZ3RoKTsKICB9OwoKICByZXR1cm4ga2VtOwp9OwoKLy8gVE9ETzogYWRkIGZvcmdlLmtlbS5rZGYuY3JlYXRlKCdLREYxJywge21kOiAuLi4sIC4uLn0pIEFQST8KCi8qKgogKiBDcmVhdGVzIGEga2V5IGRlcml2YXRpb24gQVBJIG9iamVjdCB0aGF0IGltcGxlbWVudHMgS0RGMSBwZXIgSVNPIDE4MDMzLTIuCiAqCiAqIEBwYXJhbSBtZCB0aGUgaGFzaCBBUEkgdG8gdXNlLgogKiBAcGFyYW0gW2RpZ2VzdExlbmd0aF0gYW4gb3B0aW9uYWwgZGlnZXN0IGxlbmd0aCB0aGF0IG11c3QgYmUgcG9zaXRpdmUgYW5kCiAqICAgICAgICAgIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtZC5kaWdlc3RMZW5ndGguCiAqCiAqIEByZXR1cm4gYSBLREYxIEFQSSBvYmplY3QuCiAqLwpmb3JnZS5rZW0ua2RmMSA9IGZ1bmN0aW9uKG1kLCBkaWdlc3RMZW5ndGgpIHsKICBfY3JlYXRlS0RGKHRoaXMsIG1kLCAwLCBkaWdlc3RMZW5ndGggfHwgbWQuZGlnZXN0TGVuZ3RoKTsKfTsKCi8qKgogKiBDcmVhdGVzIGEga2V5IGRlcml2YXRpb24gQVBJIG9iamVjdCB0aGF0IGltcGxlbWVudHMgS0RGMiBwZXIgSVNPIDE4MDMzLTIuCiAqCiAqIEBwYXJhbSBtZCB0aGUgaGFzaCBBUEkgdG8gdXNlLgogKiBAcGFyYW0gW2RpZ2VzdExlbmd0aF0gYW4gb3B0aW9uYWwgZGlnZXN0IGxlbmd0aCB0aGF0IG11c3QgYmUgcG9zaXRpdmUgYW5kCiAqICAgICAgICAgIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtZC5kaWdlc3RMZW5ndGguCiAqCiAqIEByZXR1cm4gYSBLREYyIEFQSSBvYmplY3QuCiAqLwpmb3JnZS5rZW0ua2RmMiA9IGZ1bmN0aW9uKG1kLCBkaWdlc3RMZW5ndGgpIHsKICBfY3JlYXRlS0RGKHRoaXMsIG1kLCAxLCBkaWdlc3RMZW5ndGggfHwgbWQuZGlnZXN0TGVuZ3RoKTsKfTsKCi8qKgogKiBDcmVhdGVzIGEgS0RGMSBvciBLREYyIEFQSSBvYmplY3QuCiAqCiAqIEBwYXJhbSBtZCB0aGUgaGFzaCBBUEkgdG8gdXNlLgogKiBAcGFyYW0gY291bnRlclN0YXJ0IHRoZSBzdGFydGluZyBpbmRleCBmb3IgdGhlIGNvdW50ZXIuCiAqIEBwYXJhbSBkaWdlc3RMZW5ndGggdGhlIGRpZ2VzdCBsZW5ndGggdG8gdXNlLgogKgogKiBAcmV0dXJuIHRoZSBLREYgQVBJIG9iamVjdC4KICovCmZ1bmN0aW9uIF9jcmVhdGVLREYoa2RmLCBtZCwgY291bnRlclN0YXJ0LCBkaWdlc3RMZW5ndGgpIHsKICAvKioKICAgKiBHZW5lcmF0ZSBhIGtleSBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aC4KICAgKgogICAqIEBwYXJhbSB4IHRoZSBiaW5hcnktZW5jb2RlZCBieXRlIHN0cmluZyB0byBnZW5lcmF0ZSBhIGtleSBmcm9tLgogICAqIEBwYXJhbSBsZW5ndGggdGhlIG51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZSAodGhlIHNpemUgb2YgdGhlIGtleSkuCiAgICoKICAgKiBAcmV0dXJuIHRoZSBrZXkgYXMgYSBiaW5hcnktZW5jb2RlZCBzdHJpbmcuCiAgICovCiAga2RmLmdlbmVyYXRlID0gZnVuY3Rpb24oeCwgbGVuZ3RoKSB7CiAgICB2YXIga2V5ID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwoKICAgIC8vIHJ1biBjb3VudGVyIGZyb20gY291bnRlclN0YXJ0IHRvIGNlaWwobGVuZ3RoIC8gSGFzaC5sZW4pCiAgICB2YXIgayA9IE1hdGguY2VpbChsZW5ndGggLyBkaWdlc3RMZW5ndGgpICsgY291bnRlclN0YXJ0OwoKICAgIHZhciBjID0gbmV3IGZvcmdlLnV0aWwuQnl0ZUJ1ZmZlcigpOwogICAgZm9yKHZhciBpID0gY291bnRlclN0YXJ0OyBpIDwgazsgKytpKSB7CiAgICAgIC8vIEkyT1NQKGksIDQpOiBjb252ZXJ0IGNvdW50ZXIgdG8gYW4gb2N0ZXQgc3RyaW5nIG9mIDQgb2N0ZXRzCiAgICAgIGMucHV0SW50MzIoaSk7CgogICAgICAvLyBkaWdlc3QgJ3gnIGFuZCB0aGUgY291bnRlciBhbmQgYWRkIHRoZSByZXN1bHQgdG8gdGhlIGtleQogICAgICBtZC5zdGFydCgpOwogICAgICBtZC51cGRhdGUoeCArIGMuZ2V0Qnl0ZXMoKSk7CiAgICAgIHZhciBoYXNoID0gbWQuZGlnZXN0KCk7CiAgICAgIGtleS5wdXRCeXRlcyhoYXNoLmdldEJ5dGVzKGRpZ2VzdExlbmd0aCkpOwogICAgfQoKICAgIC8vIHRydW5jYXRlIHRvIHRoZSBjb3JyZWN0IGtleSBsZW5ndGgKICAgIGtleS50cnVuY2F0ZShrZXkubGVuZ3RoKCkgLSBsZW5ndGgpOwogICAgcmV0dXJuIGtleS5nZXRCeXRlcygpOwogIH07Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ2tlbSc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9rZW0nLFsncmVxdWlyZScsICdtb2R1bGUnLCAnLi91dGlsJywnLi9yYW5kb20nLCcuL2pzYm4nXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogQ3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciBsb2dnaW5nIGluIGEgd2ViIGFwcGxpY2F0aW9uLgogKgogKiBAYXV0aG9yIERhdmlkIEkuIExlaG4gPGRsZWhuQGRpZ2l0YWxiYXphYXIuY29tPgogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMyBEaWdpdGFsIEJhemFhciwgSW5jLgogKi8KKGZ1bmN0aW9uKCkgewovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSBpbXBsZW1lbnRhdGlvbiAjIyMjIyMjIyMjICovCmZ1bmN0aW9uIGluaXRNb2R1bGUoZm9yZ2UpIHsKCi8qIExPRyBBUEkgKi8KZm9yZ2UubG9nID0gZm9yZ2UubG9nIHx8IHt9OwoKLyoqCiAqIEFwcGxpY2F0aW9uIGxvZ2dpbmcgc3lzdGVtLgogKgogKiBFYWNoIGxvZ2dlciBsZXZlbCBhdmFpbGFibGUgYXMgaXQncyBvd24gZnVuY3Rpb24gb2YgdGhlIGZvcm06CiAqICAgZm9yZ2UubG9nLmxldmVsKGNhdGVnb3J5LCBhcmdzLi4uKQogKiBUaGUgY2F0ZWdvcnkgaXMgYW4gYXJiaXRyYXJ5IHN0cmluZywgYW5kIHRoZSBhcmdzIGFyZSB0aGUgc2FtZSBhcwogKiBGaXJlYnVnJ3MgY29uc29sZS5sb2cgQVBJLiBCeSBkZWZhdWx0IHRoZSBjYWxsIHdpbGwgYmUgb3V0cHV0IGFzOgogKiAgICdMRVZFTCBbY2F0ZWdvcnldIDxhcmdzWzBdPiwgYXJnc1sxXSwgLi4uJwogKiBUaGlzIGVuYWJsZXMgcHJvcGVyICUgZm9ybWF0dGluZyB2aWEgdGhlIGZpcnN0IGFyZ3VtZW50LgogKiBFYWNoIGNhdGVnb3J5IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBidXQgY2FuIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgd2l0aAogKiB0aGUgc2V0Q2F0ZWdvcnlFbmFibGVkKCkgZnVuY3Rpb24uCiAqLwovLyBsaXN0IG9mIGtub3duIGxldmVscwpmb3JnZS5sb2cubGV2ZWxzID0gWwogICdub25lJywgJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbycsICdkZWJ1ZycsICd2ZXJib3NlJywgJ21heCddOwovLyBpbmZvIG9uIHRoZSBsZXZlbHMgaW5kZXhlZCBieSBuYW1lOgovLyAgIGluZGV4OiBsZXZlbCBpbmRleAovLyAgIG5hbWU6IHVwcGVyY2FzZWQgZGlzcGxheSBuYW1lCnZhciBzTGV2ZWxJbmZvID0ge307Ci8vIGxpc3Qgb2YgbG9nZ2Vycwp2YXIgc0xvZ2dlcnMgPSBbXTsKLyoqCiAqIFN0YW5kYXJkIGNvbnNvbGUgbG9nZ2VyLiBJZiBubyBjb25zb2xlIHN1cHBvcnQgaXMgZW5hYmxlZCB0aGlzIHdpbGwKICogcmVtYWluIG51bGwuIENoZWNrIGJlZm9yZSB1c2luZy4KICovCnZhciBzQ29uc29sZUxvZ2dlciA9IG51bGw7CgovLyBsb2dnZXIgZmxhZ3MKLyoqCiAqIExvY2sgdGhlIGxldmVsIGF0IHRoZSBjdXJyZW50IHZhbHVlLiBVc2VkIGluIGNhc2VzIHdoZXJlIHVzZXIgY29uZmlnIG1heQogKiBzZXQgdGhlIGxldmVsIHN1Y2ggdGhhdCBvbmx5IGNyaXRpY2FsIG1lc3NhZ2VzIGFyZSBzZWVuIGJ1dCBtb3JlIHZlcmJvc2UKICogbWVzc2FnZXMgYXJlIG5lZWRlZCBmb3IgZGVidWdnaW5nIG9yIG90aGVyIHB1cnBvc2VzLgogKi8KZm9yZ2UubG9nLkxFVkVMX0xPQ0tFRCA9ICgxIDw8IDEpOwovKioKICogQWx3YXlzIGNhbGwgbG9nIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgbG9nZ2luZyBzeXN0ZW0gd2lsbCBjaGVjayB0aGUKICogbWVzc2FnZSBsZXZlbCBhZ2FpbnN0IGxvZ2dlci5sZXZlbCBiZWZvcmUgY2FsbGluZyB0aGUgbG9nIGZ1bmN0aW9uLiBUaGlzCiAqIGZsYWcgYWxsb3dzIHRoZSBmdW5jdGlvbiB0byBkbyBpdHMgb3duIGNoZWNrLgogKi8KZm9yZ2UubG9nLk5PX0xFVkVMX0NIRUNLID0gKDEgPDwgMik7Ci8qKgogKiBQZXJmb3JtIG1lc3NhZ2UgaW50ZXJwb2xhdGlvbiB3aXRoIHRoZSBwYXNzZWQgYXJndW1lbnRzLiAiJSIgc3R5bGUKICogZmllbGRzIGluIGxvZyBtZXNzYWdlcyB3aWxsIGJlIHJlcGxhY2VkIGJ5IGFyZ3VtZW50cyBhcyBuZWVkZWQuIFNvbWUKICogbG9nZ2Vycywgc3VjaCBhcyBGaXJlYnVnLCBtYXkgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LiBUaGUgb3JpZ2luYWwgbG9nCiAqIG1lc3NhZ2Ugd2lsbCBiZSBhdmFpbGFibGUgYXMgJ21lc3NhZ2UnIGFuZCB0aGUgaW50ZXJwb2xhdGVkIHZlcnNpb24gd2lsbAogKiBiZSBhdmFpbGFibGUgYXMgJ2Z1bGxNZXNzYWdlJy4KICovCmZvcmdlLmxvZy5JTlRFUlBPTEFURSA9ICgxIDw8IDMpOwoKLy8gc2V0dXAgZWFjaCBsb2cgbGV2ZWwKZm9yKHZhciBpID0gMDsgaSA8IGZvcmdlLmxvZy5sZXZlbHMubGVuZ3RoOyArK2kpIHsKICB2YXIgbGV2ZWwgPSBmb3JnZS5sb2cubGV2ZWxzW2ldOwogIHNMZXZlbEluZm9bbGV2ZWxdID0gewogICAgaW5kZXg6IGksCiAgICBuYW1lOiBsZXZlbC50b1VwcGVyQ2FzZSgpCiAgfTsKfQoKLyoqCiAqIE1lc3NhZ2UgbG9nZ2VyLiBXaWxsIGRpc3BhdGNoIGEgbWVzc2FnZSB0byByZWdpc3RlcmVkIGxvZ2dlcnMgYXMgbmVlZGVkLgogKgogKiBAcGFyYW0gbWVzc2FnZSBtZXNzYWdlIG9iamVjdAogKi8KZm9yZ2UubG9nLmxvZ01lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlKSB7CiAgdmFyIG1lc3NhZ2VMZXZlbEluZGV4ID0gc0xldmVsSW5mb1ttZXNzYWdlLmxldmVsXS5pbmRleDsKICBmb3IodmFyIGkgPSAwOyBpIDwgc0xvZ2dlcnMubGVuZ3RoOyArK2kpIHsKICAgIHZhciBsb2dnZXIgPSBzTG9nZ2Vyc1tpXTsKICAgIGlmKGxvZ2dlci5mbGFncyAmIGZvcmdlLmxvZy5OT19MRVZFTF9DSEVDSykgewogICAgICBsb2dnZXIuZihtZXNzYWdlKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIGdldCBsb2dnZXIgbGV2ZWwKICAgICAgdmFyIGxvZ2dlckxldmVsSW5kZXggPSBzTGV2ZWxJbmZvW2xvZ2dlci5sZXZlbF0uaW5kZXg7CiAgICAgIC8vIGNoZWNrIGxldmVsCiAgICAgIGlmKG1lc3NhZ2VMZXZlbEluZGV4IDw9IGxvZ2dlckxldmVsSW5kZXgpIHsKICAgICAgICAvLyBtZXNzYWdlIGNyaXRpY2FsIGVub3VnaCwgY2FsbCBsb2dnZXIKICAgICAgICBsb2dnZXIuZihsb2dnZXIsIG1lc3NhZ2UpOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyoqCiAqIFNldHMgdGhlICdzdGFuZGFyZCcga2V5IG9uIGEgbWVzc2FnZSBvYmplY3QgdG86CiAqICJMRVZFTCBbY2F0ZWdvcnldICIgKyBtZXNzYWdlCiAqCiAqIEBwYXJhbSBtZXNzYWdlIGEgbWVzc2FnZSBsb2cgb2JqZWN0CiAqLwpmb3JnZS5sb2cucHJlcGFyZVN0YW5kYXJkID0gZnVuY3Rpb24obWVzc2FnZSkgewogIGlmKCEoJ3N0YW5kYXJkJyBpbiBtZXNzYWdlKSkgewogICAgbWVzc2FnZS5zdGFuZGFyZCA9CiAgICAgIHNMZXZlbEluZm9bbWVzc2FnZS5sZXZlbF0ubmFtZSArCiAgICAgIC8vJyAnICsgK21lc3NhZ2UudGltZXN0YW1wICsKICAgICAgJyBbJyArIG1lc3NhZ2UuY2F0ZWdvcnkgKyAnXSAnICsKICAgICAgbWVzc2FnZS5tZXNzYWdlOwogIH0KfTsKCi8qKgogKiBTZXRzIHRoZSAnZnVsbCcga2V5IG9uIGEgbWVzc2FnZSBvYmplY3QgdG8gdGhlIG9yaWdpbmFsIG1lc3NhZ2UKICogaW50ZXJwb2xhdGVkIHZpYSAlIGZvcm1hdHRpbmcgd2l0aCB0aGUgbWVzc2FnZSBhcmd1bWVudHMuCiAqCiAqIEBwYXJhbSBtZXNzYWdlIGEgbWVzc2FnZSBsb2cgb2JqZWN0LgogKi8KZm9yZ2UubG9nLnByZXBhcmVGdWxsID0gZnVuY3Rpb24obWVzc2FnZSkgewogIGlmKCEoJ2Z1bGwnIGluIG1lc3NhZ2UpKSB7CiAgICAvLyBjb3B5IGFyZ3MgYW5kIGluc2VydCBtZXNzYWdlIGF0IHRoZSBmcm9udAogICAgdmFyIGFyZ3MgPSBbbWVzc2FnZS5tZXNzYWdlXTsKICAgIGFyZ3MgPSBhcmdzLmNvbmNhdChbXSB8fCBtZXNzYWdlWydhcmd1bWVudHMnXSk7CiAgICAvLyBmb3JtYXQgdGhlIG1lc3NhZ2UKICAgIG1lc3NhZ2UuZnVsbCA9IGZvcmdlLnV0aWwuZm9ybWF0LmFwcGx5KHRoaXMsIGFyZ3MpOwogIH0KfTsKCi8qKgogKiBBcHBsaWVzIGJvdGggcHJlcGFyc2VTdGFuZGFyZCgpIGFuZCBwcmVwYXJlRnVsbCgpIHRvIGEgbWVzc2FnZSBvYmplY3QgYW5kCiAqIHN0b3JlIHJlc3VsdCBpbiAnc3RhbmRhcmRGdWxsJy4KICoKICogQHBhcmFtIG1lc3NhZ2UgYSBtZXNzYWdlIGxvZyBvYmplY3QuCiAqLwpmb3JnZS5sb2cucHJlcGFyZVN0YW5kYXJkRnVsbCA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKICBpZighKCdzdGFuZGFyZEZ1bGwnIGluIG1lc3NhZ2UpKSB7CiAgICAvLyBGSVhNRSBpbXBsZW1lbnQgJ3N0YW5kYXJkRnVsbCcgbG9nZ2luZwogICAgZm9yZ2UubG9nLnByZXBhcmVTdGFuZGFyZChtZXNzYWdlKTsKICAgIG1lc3NhZ2Uuc3RhbmRhcmRGdWxsID0gbWVzc2FnZS5zdGFuZGFyZDsKICB9Cn07CgovLyBjcmVhdGUgbG9nIGxldmVsIGZ1bmN0aW9ucwppZih0cnVlKSB7CiAgLy8gbGV2ZWxzIGZvciB3aGljaCB3ZSB3YW50IGZ1bmN0aW9ucwogIHZhciBsZXZlbHMgPSBbJ2Vycm9yJywgJ3dhcm5pbmcnLCAnaW5mbycsICdkZWJ1ZycsICd2ZXJib3NlJ107CiAgZm9yKHZhciBpID0gMDsgaSA8IGxldmVscy5sZW5ndGg7ICsraSkgewogICAgLy8gd3JhcCBpbiBhIGZ1bmN0aW9uIHRvIGVuc3VyZSBwcm9wZXIgbGV2ZWwgdmFyIGlzIHBhc3NlZAogICAgKGZ1bmN0aW9uKGxldmVsKSB7CiAgICAgIC8vIGNyZWF0ZSBmdW5jdGlvbiBmb3IgdGhpcyBsZXZlbAogICAgICBmb3JnZS5sb2dbbGV2ZWxdID0gZnVuY3Rpb24oY2F0ZWdvcnksIG1lc3NhZ2UvKiwgYXJncy4uLiovKSB7CiAgICAgICAgLy8gY29udmVydCBhcmd1bWVudHMgdG8gcmVhbCBhcnJheSwgcmVtb3ZlIGNhdGVnb3J5IGFuZCBtZXNzYWdlCiAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLnNsaWNlKDIpOwogICAgICAgIC8vIGNyZWF0ZSBtZXNzYWdlIG9iamVjdAogICAgICAgIC8vIE5vdGU6IGludGVycG9sYXRpb24gYW5kIHN0YW5kYXJkIGZvcm1hdHRpbmcgaXMgZG9uZSBsYXppbHkKICAgICAgICB2YXIgbXNnID0gewogICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLAogICAgICAgICAgbGV2ZWw6IGxldmVsLAogICAgICAgICAgY2F0ZWdvcnk6IGNhdGVnb3J5LAogICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSwKICAgICAgICAgICdhcmd1bWVudHMnOiBhcmdzCiAgICAgICAgICAvKnN0YW5kYXJkKi8KICAgICAgICAgIC8qZnVsbCovCiAgICAgICAgICAvKmZ1bGxNZXNzYWdlKi8KICAgICAgICB9OwogICAgICAgIC8vIHByb2Nlc3MgdGhpcyBtZXNzYWdlCiAgICAgICAgZm9yZ2UubG9nLmxvZ01lc3NhZ2UobXNnKTsKICAgICAgfTsKICAgIH0pKGxldmVsc1tpXSk7CiAgfQp9CgovKioKICogQ3JlYXRlcyBhIG5ldyBsb2dnZXIgd2l0aCBzcGVjaWZpZWQgY3VzdG9tIGxvZ2dpbmcgZnVuY3Rpb24uCiAqCiAqIFRoZSBsb2dnaW5nIGZ1bmN0aW9uIGhhcyBhIHNpZ25hdHVyZSBvZjoKICogICBmdW5jdGlvbihsb2dnZXIsIG1lc3NhZ2UpCiAqIGxvZ2dlcjogY3VycmVudCBsb2dnZXIKICogbWVzc2FnZTogb2JqZWN0OgogKiAgIGxldmVsOiBsZXZlbCBpZAogKiAgIGNhdGVnb3J5OiBjYXRlZ29yeQogKiAgIG1lc3NhZ2U6IHN0cmluZyBtZXNzYWdlCiAqICAgYXJndW1lbnRzOiBBcnJheSBvZiBleHRyYSBhcmd1bWVudHMKICogICBmdWxsTWVzc2FnZTogaW50ZXJwb2xhdGVkIG1lc3NhZ2UgYW5kIGFyZ3VtZW50cyBpZiBJTlRFUlBPTEFURSBmbGFnIHNldAogKgogKiBAcGFyYW0gbG9nRnVuY3Rpb24gYSBsb2dnaW5nIGZ1bmN0aW9uIHdoaWNoIHRha2VzIGEgbG9nIG1lc3NhZ2Ugb2JqZWN0CiAqICAgICAgICAgIGFzIGEgcGFyYW1ldGVyLgogKgogKiBAcmV0dXJuIGEgbG9nZ2VyIG9iamVjdC4KICovCmZvcmdlLmxvZy5tYWtlTG9nZ2VyID0gZnVuY3Rpb24obG9nRnVuY3Rpb24pIHsKICB2YXIgbG9nZ2VyID0gewogICAgZmxhZ3M6IDAsCiAgICBmOiBsb2dGdW5jdGlvbgogIH07CiAgZm9yZ2UubG9nLnNldExldmVsKGxvZ2dlciwgJ25vbmUnKTsKICByZXR1cm4gbG9nZ2VyOwp9OwoKLyoqCiAqIFNldHMgdGhlIGN1cnJlbnQgbG9nIGxldmVsIG9uIGEgbG9nZ2VyLgogKgogKiBAcGFyYW0gbG9nZ2VyIHRoZSB0YXJnZXQgbG9nZ2VyLgogKiBAcGFyYW0gbGV2ZWwgdGhlIG5ldyBtYXhpbXVtIGxvZyBsZXZlbCBhcyBhIHN0cmluZy4KICoKICogQHJldHVybiB0cnVlIGlmIHNldCwgZmFsc2UgaWYgbm90LgogKi8KZm9yZ2UubG9nLnNldExldmVsID0gZnVuY3Rpb24obG9nZ2VyLCBsZXZlbCkgewogIHZhciBydmFsID0gZmFsc2U7CiAgaWYobG9nZ2VyICYmICEobG9nZ2VyLmZsYWdzICYgZm9yZ2UubG9nLkxFVkVMX0xPQ0tFRCkpIHsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBmb3JnZS5sb2cubGV2ZWxzLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhciBhVmFsaWRMZXZlbCA9IGZvcmdlLmxvZy5sZXZlbHNbaV07CiAgICAgIGlmKGxldmVsID09IGFWYWxpZExldmVsKSB7CiAgICAgICAgLy8gc2V0IGxldmVsCiAgICAgICAgbG9nZ2VyLmxldmVsID0gbGV2ZWw7CiAgICAgICAgcnZhbCA9IHRydWU7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiBydmFsOwp9OwoKLyoqCiAqIExvY2tzIHRoZSBsb2cgbGV2ZWwgYXQgaXRzIGN1cnJlbnQgdmFsdWUuCiAqCiAqIEBwYXJhbSBsb2dnZXIgdGhlIHRhcmdldCBsb2dnZXIuCiAqIEBwYXJhbSBsb2NrIGJvb2xlYW4gbG9jayB2YWx1ZSwgZGVmYXVsdCB0byB0cnVlLgogKi8KZm9yZ2UubG9nLmxvY2sgPSBmdW5jdGlvbihsb2dnZXIsIGxvY2spIHsKICBpZih0eXBlb2YgbG9jayA9PT0gJ3VuZGVmaW5lZCcgfHwgbG9jaykgewogICAgbG9nZ2VyLmZsYWdzIHw9IGZvcmdlLmxvZy5MRVZFTF9MT0NLRUQ7CiAgfSBlbHNlIHsKICAgIGxvZ2dlci5mbGFncyAmPSB+Zm9yZ2UubG9nLkxFVkVMX0xPQ0tFRDsKICB9Cn07CgovKioKICogQWRkcyBhIGxvZ2dlci4KICoKICogQHBhcmFtIGxvZ2dlciB0aGUgbG9nZ2VyIG9iamVjdC4KICovCmZvcmdlLmxvZy5hZGRMb2dnZXIgPSBmdW5jdGlvbihsb2dnZXIpIHsKICBzTG9nZ2Vycy5wdXNoKGxvZ2dlcik7Cn07CgovLyBzZXR1cCB0aGUgY29uc29sZSBsb2dnZXIgaWYgcG9zc2libGUsIGVsc2UgY3JlYXRlIGZha2UgY29uc29sZS5sb2cKaWYodHlwZW9mKGNvbnNvbGUpICE9PSAndW5kZWZpbmVkJyAmJiAnbG9nJyBpbiBjb25zb2xlKSB7CiAgdmFyIGxvZ2dlcjsKICBpZihjb25zb2xlLmVycm9yICYmIGNvbnNvbGUud2FybiAmJiBjb25zb2xlLmluZm8gJiYgY29uc29sZS5kZWJ1ZykgewogICAgLy8gbG9va3MgbGlrZSBGaXJlYnVnLXN0eWxlIGxvZ2dpbmcgaXMgYXZhaWxhYmxlCiAgICAvLyBsZXZlbCBoYW5kbGVycyBtYXAKICAgIHZhciBsZXZlbEhhbmRsZXJzID0gewogICAgICBlcnJvcjogY29uc29sZS5lcnJvciwKICAgICAgd2FybmluZzogY29uc29sZS53YXJuLAogICAgICBpbmZvOiBjb25zb2xlLmluZm8sCiAgICAgIGRlYnVnOiBjb25zb2xlLmRlYnVnLAogICAgICB2ZXJib3NlOiBjb25zb2xlLmRlYnVnCiAgICB9OwogICAgdmFyIGYgPSBmdW5jdGlvbihsb2dnZXIsIG1lc3NhZ2UpIHsKICAgICAgZm9yZ2UubG9nLnByZXBhcmVTdGFuZGFyZChtZXNzYWdlKTsKICAgICAgdmFyIGhhbmRsZXIgPSBsZXZlbEhhbmRsZXJzW21lc3NhZ2UubGV2ZWxdOwogICAgICAvLyBwcmVwZW5kIHN0YW5kYXJkIG1lc3NhZ2UgYW5kIGNvbmNhdCBhcmdzCiAgICAgIHZhciBhcmdzID0gW21lc3NhZ2Uuc3RhbmRhcmRdOwogICAgICBhcmdzID0gYXJncy5jb25jYXQobWVzc2FnZVsnYXJndW1lbnRzJ10uc2xpY2UoKSk7CiAgICAgIC8vIGFwcGx5IHRvIGxvdy1sZXZlbCBjb25zb2xlIGZ1bmN0aW9uCiAgICAgIGhhbmRsZXIuYXBwbHkoY29uc29sZSwgYXJncyk7CiAgICB9OwogICAgbG9nZ2VyID0gZm9yZ2UubG9nLm1ha2VMb2dnZXIoZik7CiAgfSBlbHNlIHsKICAgIC8vIG9ubHkgYXBwZWFyIHRvIGhhdmUgYmFzaWMgY29uc29sZS5sb2cKICAgIHZhciBmID0gZnVuY3Rpb24obG9nZ2VyLCBtZXNzYWdlKSB7CiAgICAgIGZvcmdlLmxvZy5wcmVwYXJlU3RhbmRhcmRGdWxsKG1lc3NhZ2UpOwogICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLnN0YW5kYXJkRnVsbCk7CiAgICB9OwogICAgbG9nZ2VyID0gZm9yZ2UubG9nLm1ha2VMb2dnZXIoZik7CiAgfQogIGZvcmdlLmxvZy5zZXRMZXZlbChsb2dnZXIsICdkZWJ1ZycpOwogIGZvcmdlLmxvZy5hZGRMb2dnZXIobG9nZ2VyKTsKICBzQ29uc29sZUxvZ2dlciA9IGxvZ2dlcjsKfSBlbHNlIHsKICAvLyBkZWZpbmUgZmFrZSBjb25zb2xlLmxvZyB0byBhdm9pZCBwb3RlbnRpYWwgc2NyaXB0IGVycm9ycyBvbgogIC8vIGJyb3dzZXJzIHRoYXQgZG8gbm90IGhhdmUgY29uc29sZSBsb2dnaW5nCiAgY29uc29sZSA9IHsKICAgIGxvZzogZnVuY3Rpb24oKSB7fQogIH07Cn0KCi8qCiAqIENoZWNrIGZvciBsb2dnaW5nIGNvbnRyb2wgcXVlcnkgdmFycy4KICoKICogY29uc29sZS5sZXZlbD08bGV2ZWwtbmFtZT4KICogU2V0J3MgdGhlIGNvbnNvbGUgbG9nIGxldmVsIGJ5IG5hbWUuICBVc2VmdWwgdG8gb3ZlcnJpZGUgZGVmYXVsdHMgYW5kCiAqIGFsbG93IG1vcmUgdmVyYm9zZSBsb2dnaW5nIGJlZm9yZSBhIHVzZXIgY29uZmlnIGlzIGxvYWRlZC4KICoKICogY29uc29sZS5sb2NrPTx0cnVlfGZhbHNlPgogKiBMb2NrIHRoZSBjb25zb2xlIGxvZyBsZXZlbCBhdCB3aGF0ZXZlciBsZXZlbCBpdCBpcyBzZXQgYXQuICBUaGlzIGlzIHJ1bgogKiBhZnRlciBjb25zb2xlLmxldmVsIGlzIHByb2Nlc3NlZC4gIFVzZWZ1bCB0byBmb3JjZSBhIGxldmVsIG9mIHZlcmJvc2l0eQogKiB0aGF0IGNvdWxkIG90aGVyd2lzZSBiZSBsaW1pdGVkIGJ5IGEgdXNlciBjb25maWcuCiAqLwppZihzQ29uc29sZUxvZ2dlciAhPT0gbnVsbCkgewogIHZhciBxdWVyeSA9IGZvcmdlLnV0aWwuZ2V0UXVlcnlWYXJpYWJsZXMoKTsKICBpZignY29uc29sZS5sZXZlbCcgaW4gcXVlcnkpIHsKICAgIC8vIHNldCB3aXRoIGxhc3QgdmFsdWUKICAgIGZvcmdlLmxvZy5zZXRMZXZlbCgKICAgICAgc0NvbnNvbGVMb2dnZXIsIHF1ZXJ5Wydjb25zb2xlLmxldmVsJ10uc2xpY2UoLTEpWzBdKTsKICB9CiAgaWYoJ2NvbnNvbGUubG9jaycgaW4gcXVlcnkpIHsKICAgIC8vIHNldCB3aXRoIGxhc3QgdmFsdWUKICAgIHZhciBsb2NrID0gcXVlcnlbJ2NvbnNvbGUubG9jayddLnNsaWNlKC0xKVswXTsKICAgIGlmKGxvY2sgPT0gJ3RydWUnKSB7CiAgICAgIGZvcmdlLmxvZy5sb2NrKHNDb25zb2xlTG9nZ2VyKTsKICAgIH0KICB9Cn0KCi8vIHByb3ZpZGUgcHVibGljIGFjY2VzcyB0byBjb25zb2xlIGxvZ2dlcgpmb3JnZS5sb2cuY29uc29sZUxvZ2dlciA9IHNDb25zb2xlTG9nZ2VyOwoKfSAvLyBlbmQgbW9kdWxlIGltcGxlbWVudGF0aW9uCgovKiAjIyMjIyMjIyMjIEJlZ2luIG1vZHVsZSB3cmFwcGVyICMjIyMjIyMjIyMgKi8KdmFyIG5hbWUgPSAnbG9nJzsKaWYodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykgewogIC8vIE5vZGVKUyAtPiBBTUQKICBpZih0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JyAmJiBtb2R1bGUuZXhwb3J0cykgewogICAgdmFyIG5vZGVKUyA9IHRydWU7CiAgICBkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICAgICAgZmFjdG9yeShyZXF1aXJlLCBtb2R1bGUpOwogICAgfTsKICB9IGVsc2UgewogICAgLy8gPHNjcmlwdD4KICAgIGlmKHR5cGVvZiBmb3JnZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgZm9yZ2UgPSB7fTsKICAgIH0KICAgIHJldHVybiBpbml0TW9kdWxlKGZvcmdlKTsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KS5jb25jYXQoaW5pdE1vZHVsZSk7CiAgICAvLyBoYW5kbGUgY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiAgICBmb3JnZSA9IGZvcmdlIHx8IHt9OwogICAgZm9yZ2UuZGVmaW5lZCA9IGZvcmdlLmRlZmluZWQgfHwge307CiAgICBpZihmb3JnZS5kZWZpbmVkW25hbWVdKSB7CiAgICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICAgIH0KICAgIGZvcmdlLmRlZmluZWRbbmFtZV0gPSB0cnVlOwogICAgZm9yKHZhciBpID0gMDsgaSA8IG1vZHMubGVuZ3RoOyArK2kpIHsKICAgICAgbW9kc1tpXShmb3JnZSk7CiAgICB9CiAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgfTsKfTsKdmFyIHRtcERlZmluZSA9IGRlZmluZTsKZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgZGVwcyA9ICh0eXBlb2YgaWRzID09PSAnc3RyaW5nJykgPyBmYWN0b3J5LnNsaWNlKDIpIDogaWRzLnNsaWNlKDIpOwogIGlmKG5vZGVKUykgewogICAgZGVsZXRlIGRlZmluZTsKICAgIHJldHVybiB0bXBEZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7CiAgfQogIGRlZmluZSA9IHRtcERlZmluZTsKICByZXR1cm4gZGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9OwpkZWZpbmUoJ2pzL2xvZycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL3V0aWwnXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogSmF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBQS0NTIzcgdjEuNS4KICoKICogQGF1dGhvciBTdGVmYW4gU2llZ2wKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICoKICogQ29weXJpZ2h0IChjKSAyMDEyIFN0ZWZhbiBTaWVnbCA8c3Rlc2llQGJyb2tlbnBpcGUuZGU+CiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE1IERpZ2l0YWwgQmF6YWFyLCBJbmMuCiAqCiAqIEN1cnJlbnRseSB0aGlzIGltcGxlbWVudGF0aW9uIG9ubHkgc3VwcG9ydHMgQ29udGVudFR5cGUgb2YgRW52ZWxvcGVkRGF0YSwKICogRW5jcnlwdGVkRGF0YSwgb3IgU2lnbmVkRGF0YSBhdCB0aGUgcm9vdCBsZXZlbC4gVGhlIHRvcCBsZXZlbCBlbGVtZW50cyBtYXkKICogY29udGFpbiBvbmx5IGEgQ29udGVudEluZm8gb2YgQ29udGVudFR5cGUgRGF0YSwgaS5lLiBwbGFpbiBkYXRhLiBGdXJ0aGVyCiAqIG5lc3RpbmcgaXMgbm90ICh5ZXQpIHN1cHBvcnRlZC4KICoKICogVGhlIEZvcmdlIHZhbGlkYXRvcnMgZm9yIFBLQ1MgIzcncyBBU04uMSBzdHJ1Y3R1cmVzIGFyZSBhdmFpbGFibGUgZnJvbQogKiBhIHNlcGFyYXRlIGZpbGUgcGtjczdhc24xLmpzLCBzaW5jZSB0aG9zZSBhcmUgcmVmZXJlbmNlZCBmcm9tIG90aGVyCiAqIFBLQ1Mgc3RhbmRhcmRzIGxpa2UgUEtDUyAjMTIuCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKLy8gc2hvcnRjdXQgZm9yIEFTTi4xIEFQSQp2YXIgYXNuMSA9IGZvcmdlLmFzbjE7CgovLyBzaG9ydGN1dCBmb3IgUEtDUyM3IEFQSQp2YXIgcDcgPSBmb3JnZS5wa2NzNyA9IGZvcmdlLnBrY3M3IHx8IHt9OwoKLyoqCiAqIENvbnZlcnRzIGEgUEtDUyM3IG1lc3NhZ2UgZnJvbSBQRU0gZm9ybWF0LgogKgogKiBAcGFyYW0gcGVtIHRoZSBQRU0tZm9ybWF0dGVkIFBLQ1MjNyBtZXNzYWdlLgogKgogKiBAcmV0dXJuIHRoZSBQS0NTIzcgbWVzc2FnZS4KICovCnA3Lm1lc3NhZ2VGcm9tUGVtID0gZnVuY3Rpb24ocGVtKSB7CiAgdmFyIG1zZyA9IGZvcmdlLnBlbS5kZWNvZGUocGVtKVswXTsKCiAgaWYobXNnLnR5cGUgIT09ICdQS0NTNycpIHsKICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcignQ291bGQgbm90IGNvbnZlcnQgUEtDUyM3IG1lc3NhZ2UgZnJvbSBQRU07IFBFTSAnICsKICAgICAgJ2hlYWRlciB0eXBlIGlzIG5vdCAiUEtDUyM3Ii4nKTsKICAgIGVycm9yLmhlYWRlclR5cGUgPSBtc2cudHlwZTsKICAgIHRocm93IGVycm9yOwogIH0KICBpZihtc2cucHJvY1R5cGUgJiYgbXNnLnByb2NUeXBlLnR5cGUgPT09ICdFTkNSWVBURUQnKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBjb252ZXJ0IFBLQ1MjNyBtZXNzYWdlIGZyb20gUEVNOyBQRU0gaXMgZW5jcnlwdGVkLicpOwogIH0KCiAgLy8gY29udmVydCBERVIgdG8gQVNOLjEgb2JqZWN0CiAgdmFyIG9iaiA9IGFzbjEuZnJvbURlcihtc2cuYm9keSk7CgogIHJldHVybiBwNy5tZXNzYWdlRnJvbUFzbjEob2JqKTsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIFBLQ1MjNyBtZXNzYWdlIHRvIFBFTSBmb3JtYXQuCiAqCiAqIEBwYXJhbSBtc2cgVGhlIFBLQ1MjNyBtZXNzYWdlIG9iamVjdAogKiBAcGFyYW0gbWF4bGluZSBUaGUgbWF4aW11bSBjaGFyYWN0ZXJzIHBlciBsaW5lLCBkZWZhdWx0cyB0byA2NC4KICoKICogQHJldHVybiBUaGUgUEVNLWZvcm1hdHRlZCBQS0NTIzcgbWVzc2FnZS4KICovCnA3Lm1lc3NhZ2VUb1BlbSA9IGZ1bmN0aW9uKG1zZywgbWF4bGluZSkgewogIC8vIGNvbnZlcnQgdG8gQVNOLjEsIHRoZW4gREVSLCB0aGVuIFBFTS1lbmNvZGUKICB2YXIgcGVtT2JqID0gewogICAgdHlwZTogJ1BLQ1M3JywKICAgIGJvZHk6IGFzbjEudG9EZXIobXNnLnRvQXNuMSgpKS5nZXRCeXRlcygpCiAgfTsKICByZXR1cm4gZm9yZ2UucGVtLmVuY29kZShwZW1PYmosIHttYXhsaW5lOiBtYXhsaW5lfSk7Cn07CgovKioKICogQ29udmVydHMgYSBQS0NTIzcgbWVzc2FnZSBmcm9tIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgYSBDb250ZW50SW5mby4KICoKICogQHJldHVybiB0aGUgUEtDUyM3IG1lc3NhZ2UuCiAqLwpwNy5tZXNzYWdlRnJvbUFzbjEgPSBmdW5jdGlvbihvYmopIHsKICAvLyB2YWxpZGF0ZSByb290IGxldmVsIENvbnRlbnRJbmZvIGFuZCBjYXB0dXJlIGRhdGEKICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHA3LmFzbjEuY29udGVudEluZm9WYWxpZGF0b3IsIGNhcHR1cmUsIGVycm9ycykpCiAgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzcgbWVzc2FnZS4gJyArCiAgICAgICdBU04uMSBvYmplY3QgaXMgbm90IGFuIFBLQ1MjNyBDb250ZW50SW5mby4nKTsKICAgIGVycm9yLmVycm9ycyA9IGVycm9yczsKICAgIHRocm93IGVycm9yOwogIH0KCiAgdmFyIGNvbnRlbnRUeXBlID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLmNvbnRlbnRUeXBlKTsKICB2YXIgbXNnOwoKICBzd2l0Y2goY29udGVudFR5cGUpIHsKICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMuZW52ZWxvcGVkRGF0YToKICAgICAgbXNnID0gcDcuY3JlYXRlRW52ZWxvcGVkRGF0YSgpOwogICAgICBicmVhazsKCiAgICBjYXNlIGZvcmdlLnBraS5vaWRzLmVuY3J5cHRlZERhdGE6CiAgICAgIG1zZyA9IHA3LmNyZWF0ZUVuY3J5cHRlZERhdGEoKTsKICAgICAgYnJlYWs7CgogICAgY2FzZSBmb3JnZS5wa2kub2lkcy5zaWduZWREYXRhOgogICAgICBtc2cgPSBwNy5jcmVhdGVTaWduZWREYXRhKCk7CiAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgUEtDUyM3IG1lc3NhZ2UuIENvbnRlbnRUeXBlIHdpdGggT0lEICcgKwogICAgICAgIGNvbnRlbnRUeXBlICsgJyBpcyBub3QgKHlldCkgc3VwcG9ydGVkLicpOwogIH0KCiAgbXNnLmZyb21Bc24xKGNhcHR1cmUuY29udGVudC52YWx1ZVswXSk7CiAgcmV0dXJuIG1zZzsKfTsKCnA3LmNyZWF0ZVNpZ25lZERhdGEgPSBmdW5jdGlvbigpIHsKICB2YXIgbXNnID0gbnVsbDsKICBtc2cgPSB7CiAgICB0eXBlOiBmb3JnZS5wa2kub2lkcy5zaWduZWREYXRhLAogICAgdmVyc2lvbjogMSwKICAgIGNlcnRpZmljYXRlczogW10sCiAgICBjcmxzOiBbXSwKICAgIC8vIFRPRE86IGFkZCBqc29uLWZvcm1hdHRlZCBzaWduZXIgc3R1ZmYgaGVyZT8KICAgIHNpZ25lcnM6IFtdLAogICAgLy8gcG9wdWxhdGVkIGR1cmluZyBzaWduKCkKICAgIGRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzOiBbXSwKICAgIGNvbnRlbnRJbmZvOiBudWxsLAogICAgc2lnbmVySW5mb3M6IFtdLAoKICAgIGZyb21Bc24xOiBmdW5jdGlvbihvYmopIHsKICAgICAgLy8gdmFsaWRhdGUgU2lnbmVkRGF0YSBjb250ZW50IGJsb2NrIGFuZCBjYXB0dXJlIGRhdGEuCiAgICAgIF9mcm9tQXNuMShtc2csIG9iaiwgcDcuYXNuMS5zaWduZWREYXRhVmFsaWRhdG9yKTsKICAgICAgbXNnLmNlcnRpZmljYXRlcyA9IFtdOwogICAgICBtc2cuY3JscyA9IFtdOwogICAgICBtc2cuZGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMgPSBbXTsKICAgICAgbXNnLmNvbnRlbnRJbmZvID0gbnVsbDsKICAgICAgbXNnLnNpZ25lckluZm9zID0gW107CgogICAgICB2YXIgY2VydHMgPSBtc2cucmF3Q2FwdHVyZS5jZXJ0aWZpY2F0ZXMudmFsdWU7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjZXJ0cy5sZW5ndGg7ICsraSkgewogICAgICAgIG1zZy5jZXJ0aWZpY2F0ZXMucHVzaChmb3JnZS5wa2kuY2VydGlmaWNhdGVGcm9tQXNuMShjZXJ0c1tpXSkpOwogICAgICB9CgogICAgICAvLyBUT0RPOiBwYXJzZSBjcmxzCiAgICB9LAoKICAgIHRvQXNuMTogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGRlZ2VuZXJhdGUgY2FzZSB3aXRoIG5vIGNvbnRlbnQKICAgICAgaWYoIW1zZy5jb250ZW50SW5mbykgewogICAgICAgIG1zZy5zaWduKCk7CiAgICAgIH0KCiAgICAgIHZhciBjZXJ0cyA9IFtdOwogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbXNnLmNlcnRpZmljYXRlcy5sZW5ndGg7ICsraSkgewogICAgICAgIGNlcnRzLnB1c2goZm9yZ2UucGtpLmNlcnRpZmljYXRlVG9Bc24xKG1zZy5jZXJ0aWZpY2F0ZXNbaV0pKTsKICAgICAgfQoKICAgICAgdmFyIGNybHMgPSBbXTsKICAgICAgLy8gVE9ETzogaW1wbGVtZW50IENSTHMKCiAgICAgIC8vIFswXSBTaWduZWREYXRhCiAgICAgIHZhciBzaWduZWREYXRhID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAwLCB0cnVlLCBbCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgLy8gVmVyc2lvbgogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIobXNnLnZlcnNpb24pLmdldEJ5dGVzKCkpLAogICAgICAgICAgLy8gRGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMKICAgICAgICAgIGFzbjEuY3JlYXRlKAogICAgICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwKICAgICAgICAgICAgbXNnLmRpZ2VzdEFsZ29yaXRobUlkZW50aWZpZXJzKSwKICAgICAgICAgIC8vIENvbnRlbnRJbmZvCiAgICAgICAgICBtc2cuY29udGVudEluZm8KICAgICAgICBdKQogICAgICBdKTsKICAgICAgaWYoY2VydHMubGVuZ3RoID4gMCkgewogICAgICAgIC8vIFswXSBJTVBMSUNJVCBFeHRlbmRlZENlcnRpZmljYXRlc0FuZENlcnRpZmljYXRlcyBPUFRJT05BTAogICAgICAgIHNpZ25lZERhdGEudmFsdWVbMF0udmFsdWUucHVzaCgKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgY2VydHMpKTsKICAgICAgfQogICAgICBpZihjcmxzLmxlbmd0aCA+IDApIHsKICAgICAgICAvLyBbMV0gSU1QTElDSVQgQ2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdHMgT1BUSU9OQUwKICAgICAgICBzaWduZWREYXRhLnZhbHVlWzBdLnZhbHVlLnB1c2goCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDEsIHRydWUsIGNybHMpKTsKICAgICAgfQogICAgICAvLyBTaWduZXJJbmZvcwogICAgICBzaWduZWREYXRhLnZhbHVlWzBdLnZhbHVlLnB1c2goCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVQsIHRydWUsCiAgICAgICAgICBtc2cuc2lnbmVySW5mb3MpKTsKCiAgICAgIC8vIENvbnRlbnRJbmZvCiAgICAgIHJldHVybiBhc24xLmNyZWF0ZSgKICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgICAgICAvLyBDb250ZW50VHlwZQogICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgICBhc24xLm9pZFRvRGVyKG1zZy50eXBlKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIFswXSBTaWduZWREYXRhCiAgICAgICAgICBzaWduZWREYXRhCiAgICAgICAgXSk7CiAgICB9LAoKICAgIC8qKgogICAgICogQWRkIChhbm90aGVyKSBlbnRpdHkgdG8gbGlzdCBvZiBzaWduZXJzLgogICAgICoKICAgICAqIE5vdGU6IElmIGF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIGFyZSBwcm92aWRlZCwgdGhlbiwgcGVyIFJGQyAyMzE1LAogICAgICogdGhleSBtdXN0IGluY2x1ZGUgYXQgbGVhc3QgdHdvIGF0dHJpYnV0ZXM6IGNvbnRlbnQgdHlwZSBhbmQKICAgICAqIG1lc3NhZ2UgZGlnZXN0LiBUaGUgbWVzc2FnZSBkaWdlc3QgYXR0cmlidXRlIHZhbHVlIHdpbGwgYmUKICAgICAqIGF1dG8tY2FsY3VsYXRlZCBkdXJpbmcgc2lnbmluZyBhbmQgd2lsbCBiZSBpZ25vcmVkIGlmIHByb3ZpZGVkLgogICAgICoKICAgICAqIEhlcmUncyBhbiBleGFtcGxlIG9mIHByb3ZpZGluZyB0aGVzZSB0d28gYXR0cmlidXRlczoKICAgICAqCiAgICAgKiBmb3JnZS5wa2NzNy5jcmVhdGVTaWduZWREYXRhKCk7CiAgICAgKiBwNy5hZGRTaWduZXIoewogICAgICogICBpc3N1ZXI6IGNlcnQuaXNzdWVyLmF0dHJpYnV0ZXMsCiAgICAgKiAgIHNlcmlhbE51bWJlcjogY2VydC5zZXJpYWxOdW1iZXIsCiAgICAgKiAgIGtleTogcHJpdmF0ZUtleSwKICAgICAqICAgZGlnZXN0QWxnb3JpdGhtOiBmb3JnZS5wa2kub2lkcy5zaGExLAogICAgICogICBhdXRoZW50aWNhdGVkQXR0cmlidXRlczogW3sKICAgICAqICAgICB0eXBlOiBmb3JnZS5wa2kub2lkcy5jb250ZW50VHlwZSwKICAgICAqICAgICB2YWx1ZTogZm9yZ2UucGtpLm9pZHMuZGF0YQogICAgICogICB9LCB7CiAgICAgKiAgICAgdHlwZTogZm9yZ2UucGtpLm9pZHMubWVzc2FnZURpZ2VzdAogICAgICogICB9XQogICAgICogfSk7CiAgICAgKgogICAgICogVE9ETzogU3VwcG9ydCBbc3ViamVjdEtleUlkZW50aWZpZXJdIGFzIHNpZ25lcidzIElELgogICAgICoKICAgICAqIEBwYXJhbSBzaWduZXIgdGhlIHNpZ25lciBpbmZvcm1hdGlvbjoKICAgICAqICAgICAgICAgIGtleSB0aGUgc2lnbmVyJ3MgcHJpdmF0ZSBrZXkuCiAgICAgKiAgICAgICAgICBbY2VydGlmaWNhdGVdIGEgY2VydGlmaWNhdGUgY29udGFpbmluZyB0aGUgcHVibGljIGtleQogICAgICogICAgICAgICAgICBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25lcidzIHByaXZhdGUga2V5OyB1c2UgdGhpcyBvcHRpb24gYXMKICAgICAqICAgICAgICAgICAgYW4gYWx0ZXJuYXRpdmUgdG8gc3BlY2lmeWluZyBzaWduZXIuaXNzdWVyIGFuZAogICAgICogICAgICAgICAgICBzaWduZXIuc2VyaWFsTnVtYmVyLgogICAgICogICAgICAgICAgW2lzc3Vlcl0gdGhlIGlzc3VlciBhdHRyaWJ1dGVzIChlZzogY2VydC5pc3N1ZXIuYXR0cmlidXRlcykuCiAgICAgKiAgICAgICAgICBbc2VyaWFsTnVtYmVyXSB0aGUgc2lnbmVyJ3MgY2VydGlmaWNhdGUncyBzZXJpYWwgbnVtYmVyIGluCiAgICAgKiAgICAgICAgICAgaGV4YWRlY2ltYWwgKGVnOiBjZXJ0LnNlcmlhbE51bWJlcikuCiAgICAgKiAgICAgICAgICBbZGlnZXN0QWxnb3JpdGhtXSB0aGUgbWVzc2FnZSBkaWdlc3QgT0lELCBhcyBhIHN0cmluZywgdG8gdXNlCiAgICAgKiAgICAgICAgICAgIChlZzogZm9yZ2UucGtpLm9pZHMuc2hhMSkuCiAgICAgKiAgICAgICAgICBbYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNdIGFuIG9wdGlvbmFsIGFycmF5IG9mIGF0dHJpYnV0ZXMKICAgICAqICAgICAgICAgICAgdG8gYWxzbyBzaWduIGFsb25nIHdpdGggdGhlIGNvbnRlbnQuCiAgICAgKi8KICAgIGFkZFNpZ25lcjogZnVuY3Rpb24oc2lnbmVyKSB7CiAgICAgIHZhciBpc3N1ZXIgPSBzaWduZXIuaXNzdWVyOwogICAgICB2YXIgc2VyaWFsTnVtYmVyID0gc2lnbmVyLnNlcmlhbE51bWJlcjsKICAgICAgaWYoc2lnbmVyLmNlcnRpZmljYXRlKSB7CiAgICAgICAgdmFyIGNlcnQgPSBzaWduZXIuY2VydGlmaWNhdGU7CiAgICAgICAgaWYodHlwZW9mIGNlcnQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICBjZXJ0ID0gZm9yZ2UucGtpLmNlcnRpZmljYXRlRnJvbVBlbShjZXJ0KTsKICAgICAgICB9CiAgICAgICAgaXNzdWVyID0gY2VydC5pc3N1ZXIuYXR0cmlidXRlczsKICAgICAgICBzZXJpYWxOdW1iZXIgPSBjZXJ0LnNlcmlhbE51bWJlcjsKICAgICAgfQogICAgICB2YXIga2V5ID0gc2lnbmVyLmtleTsKICAgICAgaWYoIWtleSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICdDb3VsZCBub3QgYWRkIFBLQ1MjNyBzaWduZXI7IG5vIHByaXZhdGUga2V5IHNwZWNpZmllZC4nKTsKICAgICAgfQogICAgICBpZih0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykgewogICAgICAgIGtleSA9IGZvcmdlLnBraS5wcml2YXRlS2V5RnJvbVBlbShrZXkpOwogICAgICB9CgogICAgICAvLyBlbnN1cmUgT0lEIGtub3duIGZvciBkaWdlc3QgYWxnb3JpdGhtCiAgICAgIHZhciBkaWdlc3RBbGdvcml0aG0gPSBzaWduZXIuZGlnZXN0QWxnb3JpdGhtIHx8IGZvcmdlLnBraS5vaWRzLnNoYTE7CiAgICAgIHN3aXRjaChkaWdlc3RBbGdvcml0aG0pIHsKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkcy5zaGExOgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzLnNoYTI1NjoKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkcy5zaGEzODQ6CiAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMuc2hhNTEyOgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzLm1kNToKICAgICAgICBicmVhazsKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAnQ291bGQgbm90IGFkZCBQS0NTIzcgc2lnbmVyOyB1bmtub3duIG1lc3NhZ2UgZGlnZXN0IGFsZ29yaXRobTogJyArCiAgICAgICAgICBkaWdlc3RBbGdvcml0aG0pOwogICAgICB9CgogICAgICAvLyBpZiBhdXRoZW50aWNhdGVkQXR0cmlidXRlcyBpcyBwcmVzZW50LCB0aGVuIHRoZSBhdHRyaWJ1dGVzCiAgICAgIC8vIG11c3QgY29udGFpbiBhdCBsZWFzdCBQS0NTICM5IGNvbnRlbnQtdHlwZSBhbmQgbWVzc2FnZS1kaWdlc3QKICAgICAgdmFyIGF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzID0gc2lnbmVyLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIHx8IFtdOwogICAgICBpZihhdXRoZW50aWNhdGVkQXR0cmlidXRlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGNvbnRlbnRUeXBlID0gZmFsc2U7CiAgICAgICAgdmFyIG1lc3NhZ2VEaWdlc3QgPSBmYWxzZTsKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHZhciBhdHRyID0gYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNbaV07CiAgICAgICAgICBpZighY29udGVudFR5cGUgJiYgYXR0ci50eXBlID09PSBmb3JnZS5wa2kub2lkcy5jb250ZW50VHlwZSkgewogICAgICAgICAgICBjb250ZW50VHlwZSA9IHRydWU7CiAgICAgICAgICAgIGlmKG1lc3NhZ2VEaWdlc3QpIHsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICAgIGlmKCFtZXNzYWdlRGlnZXN0ICYmIGF0dHIudHlwZSA9PT0gZm9yZ2UucGtpLm9pZHMubWVzc2FnZURpZ2VzdCkgewogICAgICAgICAgICBtZXNzYWdlRGlnZXN0ID0gdHJ1ZTsKICAgICAgICAgICAgaWYoY29udGVudFR5cGUpIHsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKCFjb250ZW50VHlwZSB8fCAhbWVzc2FnZURpZ2VzdCkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHNpZ25lci5hdXRoZW50aWNhdGVkQXR0cmlidXRlcy4gSWYgJyArCiAgICAgICAgICAgICdzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgaXMgc3BlY2lmaWVkLCB0aGVuIGl0IG11c3QgJyArCiAgICAgICAgICAgICdjb250YWluIGF0IGxlYXN0IHR3byBhdHRyaWJ1dGVzLCBQS0NTICM5IGNvbnRlbnQtdHlwZSBhbmQgJyArCiAgICAgICAgICAgICdQS0NTICM5IG1lc3NhZ2UtZGlnZXN0LicpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgbXNnLnNpZ25lcnMucHVzaCh7CiAgICAgICAga2V5OiBrZXksCiAgICAgICAgdmVyc2lvbjogMSwKICAgICAgICBpc3N1ZXI6IGlzc3VlciwKICAgICAgICBzZXJpYWxOdW1iZXI6IHNlcmlhbE51bWJlciwKICAgICAgICBkaWdlc3RBbGdvcml0aG06IGRpZ2VzdEFsZ29yaXRobSwKICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IGZvcmdlLnBraS5vaWRzLnJzYUVuY3J5cHRpb24sCiAgICAgICAgc2lnbmF0dXJlOiBudWxsLAogICAgICAgIGF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzOiBhdXRoZW50aWNhdGVkQXR0cmlidXRlcywKICAgICAgICB1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzOiBbXQogICAgICB9KTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBTaWducyB0aGUgY29udGVudC4KICAgICAqLwogICAgc2lnbjogZnVuY3Rpb24oKSB7CiAgICAgIC8vIGF1dG8tZ2VuZXJhdGUgY29udGVudCBpbmZvCiAgICAgIGlmKHR5cGVvZiBtc2cuY29udGVudCAhPT0gJ29iamVjdCcgfHwgbXNnLmNvbnRlbnRJbmZvID09PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIERhdGEgQ29udGVudEluZm8KICAgICAgICBtc2cuY29udGVudEluZm8gPSBhc24xLmNyZWF0ZSgKICAgICAgICAgIGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgICAgLy8gQ29udGVudFR5cGUKICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgICAgIGFzbjEub2lkVG9EZXIoZm9yZ2UucGtpLm9pZHMuZGF0YSkuZ2V0Qnl0ZXMoKSkKICAgICAgICAgIF0pOwoKICAgICAgICAvLyBhZGQgYWN0dWFsIGNvbnRlbnQsIGlmIHByZXNlbnQKICAgICAgICBpZignY29udGVudCcgaW4gbXNnKSB7CiAgICAgICAgICB2YXIgY29udGVudDsKICAgICAgICAgIGlmKG1zZy5jb250ZW50IGluc3RhbmNlb2YgZm9yZ2UudXRpbC5CeXRlQnVmZmVyKSB7CiAgICAgICAgICAgIGNvbnRlbnQgPSBtc2cuY29udGVudC5ieXRlcygpOwogICAgICAgICAgfSBlbHNlIGlmKHR5cGVvZiBtc2cuY29udGVudCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgY29udGVudCA9IGZvcmdlLnV0aWwuZW5jb2RlVXRmOChtc2cuY29udGVudCk7CiAgICAgICAgICB9CgogICAgICAgICAgbXNnLmNvbnRlbnRJbmZvLnZhbHVlLnB1c2goCiAgICAgICAgICAgIC8vIFswXSBFWFBMSUNJVCBjb250ZW50CiAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICAgICAgICAgICAgY29udGVudCkKICAgICAgICAgICAgXSkpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gbm8gc2lnbmVycywgcmV0dXJuIGVhcmx5IChkZWdlbmVyYXRlIGNhc2UgZm9yIGNlcnRpZmljYXRlIGNvbnRhaW5lcikKICAgICAgaWYobXNnLnNpZ25lcnMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICAvLyBnZW5lcmF0ZSBkaWdlc3QgYWxnb3JpdGhtIGlkZW50aWZpZXJzCiAgICAgIHZhciBtZHMgPSBhZGREaWdlc3RBbGdvcml0aG1JZHMoKTsKCiAgICAgIC8vIGdlbmVyYXRlIHNpZ25lckluZm9zCiAgICAgIGFkZFNpZ25lckluZm9zKG1kcyk7CiAgICB9LAoKICAgIHZlcmlmeTogZnVuY3Rpb24oKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyM3IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gbm90IHlldCBpbXBsZW1lbnRlZC4nKTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBBZGQgYSBjZXJ0aWZpY2F0ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2VydCB0aGUgY2VydGlmaWNhdGUgdG8gYWRkLgogICAgICovCiAgICBhZGRDZXJ0aWZpY2F0ZTogZnVuY3Rpb24oY2VydCkgewogICAgICAvLyBjb252ZXJ0IGZyb20gUEVNCiAgICAgIGlmKHR5cGVvZiBjZXJ0ID09PSAnc3RyaW5nJykgewogICAgICAgIGNlcnQgPSBmb3JnZS5wa2kuY2VydGlmaWNhdGVGcm9tUGVtKGNlcnQpOwogICAgICB9CiAgICAgIG1zZy5jZXJ0aWZpY2F0ZXMucHVzaChjZXJ0KTsKICAgIH0sCgogICAgLyoqCiAgICAgKiBBZGQgYSBjZXJ0aWZpY2F0ZSByZXZva2F0aW9uIGxpc3QuCiAgICAgKgogICAgICogQHBhcmFtIGNybCB0aGUgY2VydGlmaWNhdGUgcmV2b2thdGlvbiBsaXN0IHRvIGFkZC4KICAgICAqLwogICAgYWRkQ2VydGlmaWNhdGVSZXZva2F0aW9uTGlzdDogZnVuY3Rpb24oY3JsKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUEtDUyM3IENSTCBzdXBwb3J0IG5vdCB5ZXQgaW1wbGVtZW50ZWQuJyk7CiAgICB9CiAgfTsKICByZXR1cm4gbXNnOwoKICBmdW5jdGlvbiBhZGREaWdlc3RBbGdvcml0aG1JZHMoKSB7CiAgICB2YXIgbWRzID0ge307CgogICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5zaWduZXJzLmxlbmd0aDsgKytpKSB7CiAgICAgIHZhciBzaWduZXIgPSBtc2cuc2lnbmVyc1tpXTsKICAgICAgdmFyIG9pZCA9IHNpZ25lci5kaWdlc3RBbGdvcml0aG07CiAgICAgIGlmKCEob2lkIGluIG1kcykpIHsKICAgICAgICAvLyBjb250ZW50IGRpZ2VzdAogICAgICAgIG1kc1tvaWRdID0gZm9yZ2UubWRbZm9yZ2UucGtpLm9pZHNbb2lkXV0uY3JlYXRlKCk7CiAgICAgIH0KICAgICAgaWYoc2lnbmVyLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIC8vIG5vIGN1c3RvbSBhdHRyaWJ1dGVzIHRvIGRpZ2VzdDsgdXNlIGNvbnRlbnQgbWVzc2FnZSBkaWdlc3QKICAgICAgICBzaWduZXIubWQgPSBtZHNbb2lkXTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyBjdXN0b20gYXR0cmlidXRlcyB0byBiZSBkaWdlc3RlZDsgdXNlIG93biBtZXNzYWdlIGRpZ2VzdAogICAgICAgIC8vIFRPRE86IG9wdGltaXplIHRvIGp1c3QgY29weSBtZXNzYWdlIGRpZ2VzdCBzdGF0ZSBpZiB0aGF0CiAgICAgICAgLy8gZmVhdHVyZSBpcyBldmVyIHN1cHBvcnRlZCB3aXRoIG1lc3NhZ2UgZGlnZXN0cwogICAgICAgIHNpZ25lci5tZCA9IGZvcmdlLm1kW2ZvcmdlLnBraS5vaWRzW29pZF1dLmNyZWF0ZSgpOwogICAgICB9CiAgICB9CgogICAgLy8gYWRkIHVuaXF1ZSBkaWdlc3QgYWxnb3JpdGhtIGlkZW50aWZpZXJzCiAgICBtc2cuZGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMgPSBbXTsKICAgIGZvcih2YXIgb2lkIGluIG1kcykgewogICAgICBtc2cuZGlnZXN0QWxnb3JpdGhtSWRlbnRpZmllcnMucHVzaCgKICAgICAgICAvLyBBbGdvcml0aG1JZGVudGlmaWVyCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgICAgLy8gYWxnb3JpdGhtCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgICAgIGFzbjEub2lkVG9EZXIob2lkKS5nZXRCeXRlcygpKSwKICAgICAgICAgIC8vIHBhcmFtZXRlcnMgKG51bGwpCiAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgICAgICBdKSk7CiAgICB9CgogICAgcmV0dXJuIG1kczsKICB9CgogIGZ1bmN0aW9uIGFkZFNpZ25lckluZm9zKG1kcykgewogICAgLy8gTm90ZTogQ29udGVudEluZm8gaXMgYSBTRVFVRU5DRSB3aXRoIDIgdmFsdWVzLCBzZWNvbmQgdmFsdWUgaXMKICAgIC8vIHRoZSBjb250ZW50IGZpZWxkIGFuZCBpcyBvcHRpb25hbCBmb3IgYSBDb250ZW50SW5mbyBidXQgcmVxdWlyZWQgaGVyZQogICAgLy8gc2luY2Ugc2lnbmVycyBhcmUgcHJlc2VudAogICAgaWYobXNnLmNvbnRlbnRJbmZvLnZhbHVlLmxlbmd0aCA8IDIpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICdDb3VsZCBub3Qgc2lnbiBQS0NTIzcgbWVzc2FnZTsgdGhlcmUgaXMgbm8gY29udGVudCB0byBzaWduLicpOwogICAgfQoKICAgIC8vIGdldCBDb250ZW50SW5mbyBjb250ZW50IHR5cGUKICAgIHZhciBjb250ZW50VHlwZSA9IGFzbjEuZGVyVG9PaWQobXNnLmNvbnRlbnRJbmZvLnZhbHVlWzBdLnZhbHVlKTsKCiAgICAvLyBnZXQgQ29udGVudEluZm8gY29udGVudAogICAgdmFyIGNvbnRlbnQgPSBtc2cuY29udGVudEluZm8udmFsdWVbMV07CiAgICAvLyBza2lwIFswXSBFWFBMSUNJVCBjb250ZW50IHdyYXBwZXIKICAgIGNvbnRlbnQgPSBjb250ZW50LnZhbHVlWzBdOwoKICAgIC8vIHNlcmlhbGl6ZSBjb250ZW50CiAgICB2YXIgYnl0ZXMgPSBhc24xLnRvRGVyKGNvbnRlbnQpOwoKICAgIC8vIHNraXAgaWRlbnRpZmllciBhbmQgbGVuZ3RoIHBlciBSRkMgMjMxNSA5LjMKICAgIC8vIHNraXAgaWRlbnRpZmllciAoMSBieXRlKQogICAgYnl0ZXMuZ2V0Qnl0ZSgpOwogICAgLy8gcmVhZCBhbmQgZGlzY2FyZCBsZW5ndGggYnl0ZXMKICAgIGFzbjEuZ2V0QmVyVmFsdWVMZW5ndGgoYnl0ZXMpOwogICAgYnl0ZXMgPSBieXRlcy5nZXRCeXRlcygpOwoKICAgIC8vIGRpZ2VzdCBjb250ZW50IERFUiB2YWx1ZSBieXRlcwogICAgZm9yKHZhciBvaWQgaW4gbWRzKSB7CiAgICAgIG1kc1tvaWRdLnN0YXJ0KCkudXBkYXRlKGJ5dGVzKTsKICAgIH0KCiAgICAvLyBzaWduIGNvbnRlbnQKICAgIHZhciBzaWduaW5nVGltZSA9IG5ldyBEYXRlKCk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbXNnLnNpZ25lcnMubGVuZ3RoOyArK2kpIHsKICAgICAgdmFyIHNpZ25lciA9IG1zZy5zaWduZXJzW2ldOwoKICAgICAgaWYoc2lnbmVyLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgIC8vIGlmIENvbnRlbnRJbmZvIGNvbnRlbnQgdHlwZSBpcyBub3QgIkRhdGEiLCB0aGVuCiAgICAgICAgLy8gYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgbXVzdCBiZSBwcmVzZW50IHBlciBSRkMgMjMxNQogICAgICAgIGlmKGNvbnRlbnRUeXBlICE9PSBmb3JnZS5wa2kub2lkcy5kYXRhKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICdJbnZhbGlkIHNpZ25lcjsgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgbXVzdCBiZSBwcmVzZW50ICcgKwogICAgICAgICAgICAnd2hlbiB0aGUgQ29udGVudEluZm8gY29udGVudCB0eXBlIGlzIG5vdCBQS0NTIzcgRGF0YS4nKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gcHJvY2VzcyBhdXRoZW50aWNhdGVkIGF0dHJpYnV0ZXMKICAgICAgICAvLyBbMF0gSU1QTElDSVQKICAgICAgICBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNBc24xID0gYXNuMS5jcmVhdGUoCiAgICAgICAgICBhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFtdKTsKCiAgICAgICAgLy8gcGVyIFJGQyAyMzE1LCBhdHRyaWJ1dGVzIGFyZSB0byBiZSBkaWdlc3RlZCB1c2luZyBhIFNFVCBjb250YWluZXIKICAgICAgICAvLyBub3QgdGhlIGFib3ZlIFswXSBJTVBMSUNJVCBjb250YWluZXIKICAgICAgICB2YXIgYXR0cnNBc24xID0gYXNuMS5jcmVhdGUoCiAgICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwgW10pOwoKICAgICAgICBmb3IodmFyIGFpID0gMDsgYWkgPCBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOyArK2FpKSB7CiAgICAgICAgICB2YXIgYXR0ciA9IHNpZ25lci5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1thaV07CiAgICAgICAgICBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLm1lc3NhZ2VEaWdlc3QpIHsKICAgICAgICAgICAgLy8gdXNlIGNvbnRlbnQgbWVzc2FnZSBkaWdlc3QgYXMgdmFsdWUKICAgICAgICAgICAgYXR0ci52YWx1ZSA9IG1kc1tzaWduZXIuZGlnZXN0QWxnb3JpdGhtXS5kaWdlc3QoKTsKICAgICAgICAgIH0gZWxzZSBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLnNpZ25pbmdUaW1lKSB7CiAgICAgICAgICAgIC8vIGF1dG8tcG9wdWxhdGUgc2lnbmluZyB0aW1lIGlmIG5vdCBhbHJlYWR5IHNldAogICAgICAgICAgICBpZighYXR0ci52YWx1ZSkgewogICAgICAgICAgICAgIGF0dHIudmFsdWUgPSBzaWduaW5nVGltZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIC8vIGNvbnZlcnQgdG8gQVNOLjEgYW5kIHB1c2ggb250byBBdHRyaWJ1dGVzIFNFVCAoZm9yIHNpZ25pbmcpIGFuZAogICAgICAgICAgLy8gb250byBhdXRoZW50aWNhdGVkQXR0cmlidXRlc0FzbjEgdG8gY29tcGxldGUgU2lnbmVkRGF0YSBBU04uMQogICAgICAgICAgLy8gVE9ETzogb3B0aW1pemUgYXdheSBkdXBsaWNhdGlvbgogICAgICAgICAgYXR0cnNBc24xLnZhbHVlLnB1c2goX2F0dHJpYnV0ZVRvQXNuMShhdHRyKSk7CiAgICAgICAgICBzaWduZXIuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXNBc24xLnZhbHVlLnB1c2goX2F0dHJpYnV0ZVRvQXNuMShhdHRyKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBERVItc2VyaWFsaXplIGFuZCBkaWdlc3QgU0VUIE9GIGF0dHJpYnV0ZXMgb25seQogICAgICAgIGJ5dGVzID0gYXNuMS50b0RlcihhdHRyc0FzbjEpLmdldEJ5dGVzKCk7CiAgICAgICAgc2lnbmVyLm1kLnN0YXJ0KCkudXBkYXRlKGJ5dGVzKTsKICAgICAgfQoKICAgICAgLy8gc2lnbiBkaWdlc3QKICAgICAgc2lnbmVyLnNpZ25hdHVyZSA9IHNpZ25lci5rZXkuc2lnbihzaWduZXIubWQsICdSU0FTU0EtUEtDUzEtVjFfNScpOwogICAgfQoKICAgIC8vIGFkZCBzaWduZXIgaW5mbwogICAgbXNnLnNpZ25lckluZm9zID0gX3NpZ25lcnNUb0FzbjEobXNnLnNpZ25lcnMpOwogIH0KfTsKCi8qKgogKiBDcmVhdGVzIGFuIGVtcHR5IFBLQ1MjNyBtZXNzYWdlIG9mIHR5cGUgRW5jcnlwdGVkRGF0YS4KICoKICogQHJldHVybiB0aGUgbWVzc2FnZS4KICovCnA3LmNyZWF0ZUVuY3J5cHRlZERhdGEgPSBmdW5jdGlvbigpIHsKICB2YXIgbXNnID0gbnVsbDsKICBtc2cgPSB7CiAgICB0eXBlOiBmb3JnZS5wa2kub2lkcy5lbmNyeXB0ZWREYXRhLAogICAgdmVyc2lvbjogMCwKICAgIGVuY3J5cHRlZENvbnRlbnQ6IHsKICAgICAgYWxnb3JpdGhtOiBmb3JnZS5wa2kub2lkc1snYWVzMjU2LUNCQyddCiAgICB9LAoKICAgIC8qKgogICAgICogUmVhZHMgYW4gRW5jcnlwdGVkRGF0YSBjb250ZW50IGJsb2NrIChpbiBBU04uMSBmb3JtYXQpCiAgICAgKgogICAgICogQHBhcmFtIG9iaiBUaGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgdGhlIEVuY3J5cHRlZERhdGEgY29udGVudCBibG9jawogICAgICovCiAgICBmcm9tQXNuMTogZnVuY3Rpb24ob2JqKSB7CiAgICAgIC8vIFZhbGlkYXRlIEVuY3J5cHRlZERhdGEgY29udGVudCBibG9jayBhbmQgY2FwdHVyZSBkYXRhLgogICAgICBfZnJvbUFzbjEobXNnLCBvYmosIHA3LmFzbjEuZW5jcnlwdGVkRGF0YVZhbGlkYXRvcik7CiAgICB9LAoKICAgIC8qKgogICAgICogRGVjcnlwdCBlbmNyeXB0ZWQgY29udGVudAogICAgICoKICAgICAqIEBwYXJhbSBrZXkgVGhlIChzeW1tZXRyaWMpIGtleSBhcyBhIGJ5dGUgYnVmZmVyCiAgICAgKi8KICAgIGRlY3J5cHQ6IGZ1bmN0aW9uKGtleSkgewogICAgICBpZihrZXkgIT09IHVuZGVmaW5lZCkgewogICAgICAgIG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSA9IGtleTsKICAgICAgfQogICAgICBfZGVjcnlwdENvbnRlbnQobXNnKTsKICAgIH0KICB9OwogIHJldHVybiBtc2c7Cn07CgovKioKICogQ3JlYXRlcyBhbiBlbXB0eSBQS0NTIzcgbWVzc2FnZSBvZiB0eXBlIEVudmVsb3BlZERhdGEuCiAqCiAqIEByZXR1cm4gdGhlIG1lc3NhZ2UuCiAqLwpwNy5jcmVhdGVFbnZlbG9wZWREYXRhID0gZnVuY3Rpb24oKSB7CiAgdmFyIG1zZyA9IG51bGw7CiAgbXNnID0gewogICAgdHlwZTogZm9yZ2UucGtpLm9pZHMuZW52ZWxvcGVkRGF0YSwKICAgIHZlcnNpb246IDAsCiAgICByZWNpcGllbnRzOiBbXSwKICAgIGVuY3J5cHRlZENvbnRlbnQ6IHsKICAgICAgYWxnb3JpdGhtOiBmb3JnZS5wa2kub2lkc1snYWVzMjU2LUNCQyddCiAgICB9LAoKICAgIC8qKgogICAgICogUmVhZHMgYW4gRW52ZWxvcGVkRGF0YSBjb250ZW50IGJsb2NrIChpbiBBU04uMSBmb3JtYXQpCiAgICAgKgogICAgICogQHBhcmFtIG9iaiB0aGUgQVNOLjEgcmVwcmVzZW50YXRpb24gb2YgdGhlIEVudmVsb3BlZERhdGEgY29udGVudCBibG9jay4KICAgICAqLwogICAgZnJvbUFzbjE6IGZ1bmN0aW9uKG9iaikgewogICAgICAvLyB2YWxpZGF0ZSBFbnZlbG9wZWREYXRhIGNvbnRlbnQgYmxvY2sgYW5kIGNhcHR1cmUgZGF0YQogICAgICB2YXIgY2FwdHVyZSA9IF9mcm9tQXNuMShtc2csIG9iaiwgcDcuYXNuMS5lbnZlbG9wZWREYXRhVmFsaWRhdG9yKTsKICAgICAgbXNnLnJlY2lwaWVudHMgPSBfcmVjaXBpZW50c0Zyb21Bc24xKGNhcHR1cmUucmVjaXBpZW50SW5mb3MudmFsdWUpOwogICAgfSwKCiAgICB0b0FzbjE6IGZ1bmN0aW9uKCkgewogICAgICAvLyBDb250ZW50SW5mbwogICAgICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAgIC8vIENvbnRlbnRUeXBlCiAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICAgICAgYXNuMS5vaWRUb0Rlcihtc2cudHlwZSkuZ2V0Qnl0ZXMoKSksCiAgICAgICAgLy8gWzBdIEVudmVsb3BlZERhdGEKICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLkNPTlRFWFRfU1BFQ0lGSUMsIDAsIHRydWUsIFsKICAgICAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgICAgICAgLy8gVmVyc2lvbgogICAgICAgICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgICAgICAgIGFzbjEuaW50ZWdlclRvRGVyKG1zZy52ZXJzaW9uKS5nZXRCeXRlcygpKSwKICAgICAgICAgICAgLy8gUmVjaXBpZW50SW5mb3MKICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVQsIHRydWUsCiAgICAgICAgICAgICAgX3JlY2lwaWVudHNUb0FzbjEobXNnLnJlY2lwaWVudHMpKSwKICAgICAgICAgICAgLy8gRW5jcnlwdGVkQ29udGVudEluZm8KICAgICAgICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwKICAgICAgICAgICAgICBfZW5jcnlwdGVkQ29udGVudFRvQXNuMShtc2cuZW5jcnlwdGVkQ29udGVudCkpCiAgICAgICAgICBdKQogICAgICAgIF0pCiAgICAgIF0pOwogICAgfSwKCiAgICAvKioKICAgICAqIEZpbmQgcmVjaXBpZW50IGJ5IFguNTA5IGNlcnRpZmljYXRlJ3MgaXNzdWVyLgogICAgICoKICAgICAqIEBwYXJhbSBjZXJ0IHRoZSBjZXJ0aWZpY2F0ZSB3aXRoIHRoZSBpc3N1ZXIgdG8gbG9vayBmb3IuCiAgICAgKgogICAgICogQHJldHVybiB0aGUgcmVjaXBpZW50IG9iamVjdC4KICAgICAqLwogICAgZmluZFJlY2lwaWVudDogZnVuY3Rpb24oY2VydCkgewogICAgICB2YXIgc0F0dHIgPSBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzOwoKICAgICAgZm9yKHZhciBpID0gMDsgaSA8IG1zZy5yZWNpcGllbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgdmFyIHIgPSBtc2cucmVjaXBpZW50c1tpXTsKICAgICAgICB2YXIgckF0dHIgPSByLmlzc3VlcjsKCiAgICAgICAgaWYoci5zZXJpYWxOdW1iZXIgIT09IGNlcnQuc2VyaWFsTnVtYmVyKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGlmKHJBdHRyLmxlbmd0aCAhPT0gc0F0dHIubGVuZ3RoKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHZhciBtYXRjaCA9IHRydWU7CiAgICAgICAgZm9yKHZhciBqID0gMDsgaiA8IHNBdHRyLmxlbmd0aDsgKytqKSB7CiAgICAgICAgICBpZihyQXR0cltqXS50eXBlICE9PSBzQXR0cltqXS50eXBlIHx8CiAgICAgICAgICAgIHJBdHRyW2pdLnZhbHVlICE9PSBzQXR0cltqXS52YWx1ZSkgewogICAgICAgICAgICBtYXRjaCA9IGZhbHNlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmKG1hdGNoKSB7CiAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHJldHVybiBudWxsOwogICAgfSwKCiAgICAvKioKICAgICAqIERlY3J5cHQgZW52ZWxvcGVkIGNvbnRlbnQKICAgICAqCiAgICAgKiBAcGFyYW0gcmVjaXBpZW50IFRoZSByZWNpcGllbnQgb2JqZWN0IHJlbGF0ZWQgdG8gdGhlIHByaXZhdGUga2V5CiAgICAgKiBAcGFyYW0gcHJpdktleSBUaGUgKFJTQSkgcHJpdmF0ZSBrZXkgb2JqZWN0CiAgICAgKi8KICAgIGRlY3J5cHQ6IGZ1bmN0aW9uKHJlY2lwaWVudCwgcHJpdktleSkgewogICAgICBpZihtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkgPT09IHVuZGVmaW5lZCAmJiByZWNpcGllbnQgIT09IHVuZGVmaW5lZCAmJgogICAgICAgIHByaXZLZXkgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHN3aXRjaChyZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pIHsKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMucnNhRW5jcnlwdGlvbjoKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMuZGVzQ0JDOgogICAgICAgICAgICB2YXIga2V5ID0gcHJpdktleS5kZWNyeXB0KHJlY2lwaWVudC5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpOwogICAgICAgICAgICBtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihrZXkpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGFzeW1tZXRyaWMgY2lwaGVyLCAnICsKICAgICAgICAgICAgICAnT0lEICcgKyByZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgX2RlY3J5cHRDb250ZW50KG1zZyk7CiAgICB9LAoKICAgIC8qKgogICAgICogQWRkIChhbm90aGVyKSBlbnRpdHkgdG8gbGlzdCBvZiByZWNpcGllbnRzLgogICAgICoKICAgICAqIEBwYXJhbSBjZXJ0IFRoZSBjZXJ0aWZpY2F0ZSBvZiB0aGUgZW50aXR5IHRvIGFkZC4KICAgICAqLwogICAgYWRkUmVjaXBpZW50OiBmdW5jdGlvbihjZXJ0KSB7CiAgICAgIG1zZy5yZWNpcGllbnRzLnB1c2goewogICAgICAgIHZlcnNpb246IDAsCiAgICAgICAgaXNzdWVyOiBjZXJ0Lmlzc3Vlci5hdHRyaWJ1dGVzLAogICAgICAgIHNlcmlhbE51bWJlcjogY2VydC5zZXJpYWxOdW1iZXIsCiAgICAgICAgZW5jcnlwdGVkQ29udGVudDogewogICAgICAgICAgLy8gV2Ugc2ltcGx5IGFzc3VtZSByc2FFbmNyeXB0aW9uIGhlcmUsIHNpbmNlIGZvcmdlLnBraSBvbmx5CiAgICAgICAgICAvLyBzdXBwb3J0cyBSU0Egc28gZmFyLiAgSWYgdGhlIFBLSSBtb2R1bGUgc3VwcG9ydHMgb3RoZXIKICAgICAgICAgIC8vIGNpcGhlcnMgb25lIGRheSwgd2UgbmVlZCB0byBtb2RpZnkgdGhpcyBvbmUgYXMgd2VsbC4KICAgICAgICAgIGFsZ29yaXRobTogZm9yZ2UucGtpLm9pZHMucnNhRW5jcnlwdGlvbiwKICAgICAgICAgIGtleTogY2VydC5wdWJsaWNLZXkKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAvKioKICAgICAqIEVuY3J5cHQgZW52ZWxvcGVkIGNvbnRlbnQuCiAgICAgKgogICAgICogVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0d28gb3B0aW9uYWwgYXJndW1lbnRzLCBjaXBoZXIgYW5kIGtleSwgd2hpY2gKICAgICAqIGNhbiBiZSB1c2VkIHRvIGluZmx1ZW5jZSBzeW1tZXRyaWMgZW5jcnlwdGlvbi4gIFVubGVzcyBjaXBoZXIgaXMKICAgICAqIHByb3ZpZGVkLCB0aGUgY2lwaGVyIHNwZWNpZmllZCBpbiBlbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobSBpcyB1c2VkCiAgICAgKiAoZGVmYXVsdHMgdG8gQUVTLTI1Ni1DQkMpLiAgSWYgbm8ga2V5IGlzIHByb3ZpZGVkLCBlbmNyeXB0ZWRDb250ZW50LmtleQogICAgICogaXMgKHJlLSl1c2VkLiAgSWYgdGhhdCBvbmUncyBub3Qgc2V0LCBhIHJhbmRvbSBrZXkgd2lsbCBiZSBnZW5lcmF0ZWQKICAgICAqIGF1dG9tYXRpY2FsbHkuCiAgICAgKgogICAgICogQHBhcmFtIFtrZXldIFRoZSBrZXkgdG8gYmUgdXNlZCBmb3Igc3ltbWV0cmljIGVuY3J5cHRpb24uCiAgICAgKiBAcGFyYW0gW2NpcGhlcl0gVGhlIE9JRCBvZiB0aGUgc3ltbWV0cmljIGNpcGhlciB0byB1c2UuCiAgICAgKi8KICAgIGVuY3J5cHQ6IGZ1bmN0aW9uKGtleSwgY2lwaGVyKSB7CiAgICAgIC8vIFBhcnQgMTogU3ltbWV0cmljIGVuY3J5cHRpb24KICAgICAgaWYobXNnLmVuY3J5cHRlZENvbnRlbnQuY29udGVudCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgY2lwaGVyID0gY2lwaGVyIHx8IG1zZy5lbmNyeXB0ZWRDb250ZW50LmFsZ29yaXRobTsKICAgICAgICBrZXkgPSBrZXkgfHwgbXNnLmVuY3J5cHRlZENvbnRlbnQua2V5OwoKICAgICAgICB2YXIga2V5TGVuLCBpdkxlbiwgY2lwaEZuOwogICAgICAgIHN3aXRjaChjaXBoZXIpIHsKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHNbJ2FlczEyOC1DQkMnXToKICAgICAgICAgICAga2V5TGVuID0gMTY7CiAgICAgICAgICAgIGl2TGVuID0gMTY7CiAgICAgICAgICAgIGNpcGhGbiA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBjYXNlIGZvcmdlLnBraS5vaWRzWydhZXMxOTItQ0JDJ106CiAgICAgICAgICAgIGtleUxlbiA9IDI0OwogICAgICAgICAgICBpdkxlbiA9IDE2OwogICAgICAgICAgICBjaXBoRm4gPSBmb3JnZS5hZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSBmb3JnZS5wa2kub2lkc1snYWVzMjU2LUNCQyddOgogICAgICAgICAgICBrZXlMZW4gPSAzMjsKICAgICAgICAgICAgaXZMZW4gPSAxNjsKICAgICAgICAgICAgY2lwaEZuID0gZm9yZ2UuYWVzLmNyZWF0ZUVuY3J5cHRpb25DaXBoZXI7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHNbJ2Rlcy1FREUzLUNCQyddOgogICAgICAgICAgICBrZXlMZW4gPSAyNDsKICAgICAgICAgICAgaXZMZW4gPSA4OwogICAgICAgICAgICBjaXBoRm4gPSBmb3JnZS5kZXMuY3JlYXRlRW5jcnlwdGlvbkNpcGhlcjsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzeW1tZXRyaWMgY2lwaGVyLCBPSUQgJyArIGNpcGhlcik7CiAgICAgICAgfQoKICAgICAgICBpZihrZXkgPT09IHVuZGVmaW5lZCkgewogICAgICAgICAga2V5ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoZm9yZ2UucmFuZG9tLmdldEJ5dGVzKGtleUxlbikpOwogICAgICAgIH0gZWxzZSBpZihrZXkubGVuZ3RoKCkgIT0ga2V5TGVuKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5bW1ldHJpYyBrZXkgaGFzIHdyb25nIGxlbmd0aDsgJyArCiAgICAgICAgICAgICdnb3QgJyArIGtleS5sZW5ndGgoKSArICcgYnl0ZXMsIGV4cGVjdGVkICcgKyBrZXlMZW4gKyAnLicpOwogICAgICAgIH0KCiAgICAgICAgLy8gS2VlcCBhIGNvcHkgb2YgdGhlIGtleSAmIElWIGluIHRoZSBvYmplY3QsIHNvIHRoZSBjYWxsZXIgY2FuCiAgICAgICAgLy8gdXNlIGl0IGZvciB3aGF0ZXZlciByZWFzb24uCiAgICAgICAgbXNnLmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtID0gY2lwaGVyOwogICAgICAgIG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSA9IGtleTsKICAgICAgICBtc2cuZW5jcnlwdGVkQ29udGVudC5wYXJhbWV0ZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigKICAgICAgICAgIGZvcmdlLnJhbmRvbS5nZXRCeXRlcyhpdkxlbikpOwoKICAgICAgICB2YXIgY2lwaCA9IGNpcGhGbihrZXkpOwogICAgICAgIGNpcGguc3RhcnQobXNnLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyLmNvcHkoKSk7CiAgICAgICAgY2lwaC51cGRhdGUobXNnLmNvbnRlbnQpOwoKICAgICAgICAvLyBUaGUgZmluaXNoIGZ1bmN0aW9uIGRvZXMgUEtDUyM3IHBhZGRpbmcgYnkgZGVmYXVsdCwgdGhlcmVmb3JlCiAgICAgICAgLy8gbm8gYWN0aW9uIHJlcXVpcmVkIGJ5IHVzLgogICAgICAgIGlmKCFjaXBoLmZpbmlzaCgpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N5bW1ldHJpYyBlbmNyeXB0aW9uIGZhaWxlZC4nKTsKICAgICAgICB9CgogICAgICAgIG1zZy5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQgPSBjaXBoLm91dHB1dDsKICAgICAgfQoKICAgICAgLy8gUGFydCAyOiBhc3ltbWV0cmljIGVuY3J5cHRpb24gZm9yIGVhY2ggcmVjaXBpZW50CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtc2cucmVjaXBpZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciByZWNpcGllbnQgPSBtc2cucmVjaXBpZW50c1tpXTsKCiAgICAgICAgLy8gTm90aGluZyB0byBkbywgZW5jcnlwdGlvbiBhbHJlYWR5IGRvbmUuCiAgICAgICAgaWYocmVjaXBpZW50LmVuY3J5cHRlZENvbnRlbnQuY29udGVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaChyZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pIHsKICAgICAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHMucnNhRW5jcnlwdGlvbjoKICAgICAgICAgICAgcmVjaXBpZW50LmVuY3J5cHRlZENvbnRlbnQuY29udGVudCA9CiAgICAgICAgICAgICAgcmVjaXBpZW50LmVuY3J5cHRlZENvbnRlbnQua2V5LmVuY3J5cHQoCiAgICAgICAgICAgICAgICBtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkuZGF0YSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgYXN5bW1ldHJpYyBjaXBoZXIsIE9JRCAnICsKICAgICAgICAgICAgICByZWNpcGllbnQuZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CiAgcmV0dXJuIG1zZzsKfTsKCi8qKgogKiBDb252ZXJ0cyBhIHNpbmdsZSByZWNpcGllbnQgZnJvbSBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIFJlY2lwaWVudEluZm8uCiAqCiAqIEByZXR1cm4gdGhlIHJlY2lwaWVudCBvYmplY3QuCiAqLwpmdW5jdGlvbiBfcmVjaXBpZW50RnJvbUFzbjEob2JqKSB7CiAgLy8gdmFsaWRhdGUgRW52ZWxvcGVkRGF0YSBjb250ZW50IGJsb2NrIGFuZCBjYXB0dXJlIGRhdGEKICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHA3LmFzbjEucmVjaXBpZW50SW5mb1ZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzcgUmVjaXBpZW50SW5mby4gJyArCiAgICAgICdBU04uMSBvYmplY3QgaXMgbm90IGFuIFBLQ1MjNyBSZWNpcGllbnRJbmZvLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3JzOwogICAgdGhyb3cgZXJyb3I7CiAgfQoKICByZXR1cm4gewogICAgdmVyc2lvbjogY2FwdHVyZS52ZXJzaW9uLmNoYXJDb2RlQXQoMCksCiAgICBpc3N1ZXI6IGZvcmdlLnBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheShjYXB0dXJlLmlzc3VlciksCiAgICBzZXJpYWxOdW1iZXI6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUuc2VyaWFsKS50b0hleCgpLAogICAgZW5jcnlwdGVkQ29udGVudDogewogICAgICBhbGdvcml0aG06IGFzbjEuZGVyVG9PaWQoY2FwdHVyZS5lbmNBbGdvcml0aG0pLAogICAgICBwYXJhbWV0ZXI6IGNhcHR1cmUuZW5jUGFyYW1ldGVyLnZhbHVlLAogICAgICBjb250ZW50OiBjYXB0dXJlLmVuY0tleQogICAgfQogIH07Cn0KCi8qKgogKiBDb252ZXJ0cyBhIHNpbmdsZSByZWNpcGllbnQgb2JqZWN0IHRvIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgcmVjaXBpZW50IG9iamVjdC4KICoKICogQHJldHVybiB0aGUgQVNOLjEgUmVjaXBpZW50SW5mby4KICovCmZ1bmN0aW9uIF9yZWNpcGllbnRUb0FzbjEob2JqKSB7CiAgcmV0dXJuIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIFZlcnNpb24KICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuSU5URUdFUiwgZmFsc2UsCiAgICAgIGFzbjEuaW50ZWdlclRvRGVyKG9iai52ZXJzaW9uKS5nZXRCeXRlcygpKSwKICAgIC8vIElzc3VlckFuZFNlcmlhbE51bWJlcgogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgICAvLyBOYW1lCiAgICAgIGZvcmdlLnBraS5kaXN0aW5ndWlzaGVkTmFtZVRvQXNuMSh7YXR0cmlidXRlczogb2JqLmlzc3Vlcn0pLAogICAgICAvLyBTZXJpYWwKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgICBmb3JnZS51dGlsLmhleFRvQnl0ZXMob2JqLnNlcmlhbE51bWJlcikpCiAgICBdKSwKICAgIC8vIEtleUVuY3J5cHRpb25BbGdvcml0aG1JZGVudGlmaWVyCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIEFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihvYmouZW5jcnlwdGVkQ29udGVudC5hbGdvcml0aG0pLmdldEJ5dGVzKCkpLAogICAgICAvLyBQYXJhbWV0ZXIsIGZvcmNlIE5VTEwsIG9ubHkgUlNBIHN1cHBvcnRlZCBmb3Igbm93LgogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk5VTEwsIGZhbHNlLCAnJykKICAgIF0pLAogICAgLy8gRW5jcnlwdGVkS2V5CiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgb2JqLmVuY3J5cHRlZENvbnRlbnQuY29udGVudCkKICBdKTsKfQoKLyoqCiAqIE1hcCBhIHNldCBvZiBSZWNpcGllbnRJbmZvIEFTTi4xIG9iamVjdHMgdG8gcmVjaXBpZW50IG9iamVjdHMuCiAqCiAqIEBwYXJhbSBpbmZvcyBhbiBhcnJheSBvZiBBU04uMSByZXByZXNlbnRhdGlvbnMgUmVjaXBpZW50SW5mbyAoaS5lLiBTRVQgT0YpLgogKgogKiBAcmV0dXJuIGFuIGFycmF5IG9mIHJlY2lwaWVudCBvYmplY3RzLgogKi8KZnVuY3Rpb24gX3JlY2lwaWVudHNGcm9tQXNuMShpbmZvcykgewogIHZhciByZXQgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgaW5mb3MubGVuZ3RoOyArK2kpIHsKICAgIHJldC5wdXNoKF9yZWNpcGllbnRGcm9tQXNuMShpbmZvc1tpXSkpOwogIH0KICByZXR1cm4gcmV0Owp9CgovKioKICogTWFwIGFuIGFycmF5IG9mIHJlY2lwaWVudCBvYmplY3RzIHRvIEFTTi4xIFJlY2lwaWVudEluZm8gb2JqZWN0cy4KICoKICogQHBhcmFtIHJlY2lwaWVudHMgYW4gYXJyYXkgb2YgcmVjaXBpZW50SW5mbyBvYmplY3RzLgogKgogKiBAcmV0dXJuIGFuIGFycmF5IG9mIEFTTi4xIFJlY2lwaWVudEluZm9zLgogKi8KZnVuY3Rpb24gX3JlY2lwaWVudHNUb0FzbjEocmVjaXBpZW50cykgewogIHZhciByZXQgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgcmVjaXBpZW50cy5sZW5ndGg7ICsraSkgewogICAgcmV0LnB1c2goX3JlY2lwaWVudFRvQXNuMShyZWNpcGllbnRzW2ldKSk7CiAgfQogIHJldHVybiByZXQ7Cn0KCi8qKgogKiBDb252ZXJ0cyBhIHNpbmdsZSBzaWduZXIgZnJvbSBhbiBBU04uMSBvYmplY3QuCiAqCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIGEgU2lnbmVySW5mby4KICoKICogQHJldHVybiB0aGUgc2lnbmVyIG9iamVjdC4KICovCmZ1bmN0aW9uIF9zaWduZXJGcm9tQXNuMShvYmopIHsKICAvLyB2YWxpZGF0ZSBFbnZlbG9wZWREYXRhIGNvbnRlbnQgYmxvY2sgYW5kIGNhcHR1cmUgZGF0YQogIHZhciBjYXB0dXJlID0ge307CiAgdmFyIGVycm9ycyA9IFtdOwogIGlmKCFhc24xLnZhbGlkYXRlKG9iaiwgcDcuYXNuMS5zaWduZXJJbmZvVmFsaWRhdG9yLCBjYXB0dXJlLCBlcnJvcnMpKSB7CiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFBLQ1MjNyBTaWduZXJJbmZvLiAnICsKICAgICAgJ0FTTi4xIG9iamVjdCBpcyBub3QgYW4gUEtDUyM3IFNpZ25lckluZm8uJyk7CiAgICBlcnJvci5lcnJvcnMgPSBlcnJvcnM7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIHZhciBydmFsID0gewogICAgdmVyc2lvbjogY2FwdHVyZS52ZXJzaW9uLmNoYXJDb2RlQXQoMCksCiAgICBpc3N1ZXI6IGZvcmdlLnBraS5SRE5BdHRyaWJ1dGVzQXNBcnJheShjYXB0dXJlLmlzc3VlciksCiAgICBzZXJpYWxOdW1iZXI6IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKGNhcHR1cmUuc2VyaWFsKS50b0hleCgpLAogICAgZGlnZXN0QWxnb3JpdGhtOiBhc24xLmRlclRvT2lkKGNhcHR1cmUuZGlnZXN0QWxnb3JpdGhtKSwKICAgIHNpZ25hdHVyZUFsZ29yaXRobTogYXNuMS5kZXJUb09pZChjYXB0dXJlLnNpZ25hdHVyZUFsZ29yaXRobSksCiAgICBzaWduYXR1cmU6IGNhcHR1cmUuc2lnbmF0dXJlLAogICAgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXM6IFtdLAogICAgdW5hdXRoZW50aWNhdGVkQXR0cmlidXRlczogW10KICB9OwoKICAvLyBUT0RPOiBjb252ZXJ0IGF0dHJpYnV0ZXMKICB2YXIgYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMgPSBjYXB0dXJlLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIHx8IFtdOwogIHZhciB1bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzID0gY2FwdHVyZS51bmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzIHx8IFtdOwoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIENvbnZlcnRzIGEgc2luZ2xlIHNpZ25lckluZm8gb2JqZWN0IHRvIGFuIEFTTi4xIG9iamVjdC4KICoKICogQHBhcmFtIG9iaiB0aGUgc2lnbmVySW5mbyBvYmplY3QuCiAqCiAqIEByZXR1cm4gdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIGEgU2lnbmVySW5mby4KICovCmZ1bmN0aW9uIF9zaWduZXJUb0FzbjEob2JqKSB7CiAgLy8gU2lnbmVySW5mbwogIHZhciBydmFsID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gdmVyc2lvbgogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5JTlRFR0VSLCBmYWxzZSwKICAgICAgYXNuMS5pbnRlZ2VyVG9EZXIob2JqLnZlcnNpb24pLmdldEJ5dGVzKCkpLAogICAgLy8gaXNzdWVyQW5kU2VyaWFsTnVtYmVyCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIG5hbWUKICAgICAgZm9yZ2UucGtpLmRpc3Rpbmd1aXNoZWROYW1lVG9Bc24xKHthdHRyaWJ1dGVzOiBvYmouaXNzdWVyfSksCiAgICAgIC8vIHNlcmlhbAogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLklOVEVHRVIsIGZhbHNlLAogICAgICAgIGZvcmdlLnV0aWwuaGV4VG9CeXRlcyhvYmouc2VyaWFsTnVtYmVyKSkKICAgIF0pLAogICAgLy8gZGlnZXN0QWxnb3JpdGhtCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFUVVFTkNFLCB0cnVlLCBbCiAgICAgIC8vIGFsZ29yaXRobQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgICAgYXNuMS5vaWRUb0RlcihvYmouZGlnZXN0QWxnb3JpdGhtKS5nZXRCeXRlcygpKSwKICAgICAgLy8gcGFyYW1ldGVycyAobnVsbCkKICAgICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5OVUxMLCBmYWxzZSwgJycpCiAgICBdKQogIF0pOwoKICAvLyBhdXRoZW50aWNhdGVkQXR0cmlidXRlcyAoT1BUSU9OQUwpCiAgaWYob2JqLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMSkgewogICAgLy8gYWRkIEFTTi4xIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGR1cmluZyBzaWduaW5nCiAgICBydmFsLnZhbHVlLnB1c2gob2JqLmF1dGhlbnRpY2F0ZWRBdHRyaWJ1dGVzQXNuMSk7CiAgfQoKICAvLyBkaWdlc3RFbmNyeXB0aW9uQWxnb3JpdGhtCiAgcnZhbC52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgIC8vIGFsZ29yaXRobQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICBhc24xLm9pZFRvRGVyKG9iai5zaWduYXR1cmVBbGdvcml0aG0pLmdldEJ5dGVzKCkpLAogICAgLy8gcGFyYW1ldGVycyAobnVsbCkKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuTlVMTCwgZmFsc2UsICcnKQogIF0pKTsKCiAgLy8gZW5jcnlwdGVkRGlnZXN0CiAgcnZhbC52YWx1ZS5wdXNoKGFzbjEuY3JlYXRlKAogICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PQ1RFVFNUUklORywgZmFsc2UsIG9iai5zaWduYXR1cmUpKTsKCiAgLy8gdW5hdXRoZW50aWNhdGVkQXR0cmlidXRlcyAoT1BUSU9OQUwpCiAgaWYob2JqLnVuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoID4gMCkgewogICAgLy8gWzFdIElNUExJQ0lUCiAgICB2YXIgYXR0cnNBc24xID0gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5DT05URVhUX1NQRUNJRklDLCAxLCB0cnVlLCBbXSk7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgb2JqLnVuYXV0aGVudGljYXRlZEF0dHJpYnV0ZXMubGVuZ3RoOyArK2kpIHsKICAgICAgdmFyIGF0dHIgPSBvYmoudW5hdXRoZW50aWNhdGVkQXR0cmlidXRlc1tpXTsKICAgICAgYXR0cnNBc24xLnZhbHVlcy5wdXNoKF9hdHRyaWJ1dGVUb0FzbjEoYXR0cikpOwogICAgfQogICAgcnZhbC52YWx1ZS5wdXNoKGF0dHJzQXNuMSk7CiAgfQoKICByZXR1cm4gcnZhbDsKfQoKLyoqCiAqIE1hcCBhIHNldCBvZiBTaWduZXJJbmZvIEFTTi4xIG9iamVjdHMgdG8gYW4gYXJyYXkgb2Ygc2lnbmVyIG9iamVjdHMuCiAqCiAqIEBwYXJhbSBzaWduZXJJbmZvQXNuMXMgYW4gYXJyYXkgb2YgQVNOLjEgU2lnbmVySW5mb3MgKGkuZS4gU0VUIE9GKS4KICoKICogQHJldHVybiBhbiBhcnJheSBvZiBzaWduZXJzIG9iamVjdHMuCiAqLwpmdW5jdGlvbiBfc2lnbmVyc0Zyb21Bc24xKHNpZ25lckluZm9Bc24xcykgewogIHZhciByZXQgPSBbXTsKICBmb3IodmFyIGkgPSAwOyBpIDwgc2lnbmVySW5mb0FzbjFzLmxlbmd0aDsgKytpKSB7CiAgICByZXQucHVzaChfc2lnbmVyRnJvbUFzbjEoc2lnbmVySW5mb0FzbjFzW2ldKSk7CiAgfQogIHJldHVybiByZXQ7Cn0KCi8qKgogKiBNYXAgYW4gYXJyYXkgb2Ygc2lnbmVyIG9iamVjdHMgdG8gQVNOLjEgb2JqZWN0cy4KICoKICogQHBhcmFtIHNpZ25lcnMgYW4gYXJyYXkgb2Ygc2lnbmVyIG9iamVjdHMuCiAqCiAqIEByZXR1cm4gYW4gYXJyYXkgb2YgQVNOLjEgU2lnbmVySW5mb3MuCiAqLwpmdW5jdGlvbiBfc2lnbmVyc1RvQXNuMShzaWduZXJzKSB7CiAgdmFyIHJldCA9IFtdOwogIGZvcih2YXIgaSA9IDA7IGkgPCBzaWduZXJzLmxlbmd0aDsgKytpKSB7CiAgICByZXQucHVzaChfc2lnbmVyVG9Bc24xKHNpZ25lcnNbaV0pKTsKICB9CiAgcmV0dXJuIHJldDsKfQoKLyoqCiAqIENvbnZlcnQgYW4gYXR0cmlidXRlIG9iamVjdCB0byBhbiBBU04uMSBBdHRyaWJ1dGUuCiAqCiAqIEBwYXJhbSBhdHRyIHRoZSBhdHRyaWJ1dGUgb2JqZWN0LgogKgogKiBAcmV0dXJuIHRoZSBBU04uMSBBdHRyaWJ1dGUuCiAqLwpmdW5jdGlvbiBfYXR0cmlidXRlVG9Bc24xKGF0dHIpIHsKICB2YXIgdmFsdWU7CgogIC8vIFRPRE86IGdlbmVyYWxpemUgdG8gc3VwcG9ydCBtb3JlIGF0dHJpYnV0ZXMKICBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLmNvbnRlbnRUeXBlKSB7CiAgICB2YWx1ZSA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgYXNuMS5vaWRUb0RlcihhdHRyLnZhbHVlKS5nZXRCeXRlcygpKTsKICB9IGVsc2UgaWYoYXR0ci50eXBlID09PSBmb3JnZS5wa2kub2lkcy5tZXNzYWdlRGlnZXN0KSB7CiAgICB2YWx1ZSA9IGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0NURVRTVFJJTkcsIGZhbHNlLAogICAgICBhdHRyLnZhbHVlLmJ5dGVzKCkpOwogIH0gZWxzZSBpZihhdHRyLnR5cGUgPT09IGZvcmdlLnBraS5vaWRzLnNpZ25pbmdUaW1lKSB7CiAgICAvKiBOb3RlIHBlciBSRkMgMjk4NTogRGF0ZXMgYmV0d2VlbiAxIEphbnVhcnkgMTk1MCBhbmQgMzEgRGVjZW1iZXIgMjA0OQogICAgICAoaW5jbHVzaXZlKSBNVVNUIGJlIGVuY29kZWQgYXMgVVRDVGltZS4gQW55IGRhdGVzIHdpdGggeWVhciB2YWx1ZXMKICAgICAgYmVmb3JlIDE5NTAgb3IgYWZ0ZXIgMjA0OSBNVVNUIGJlIGVuY29kZWQgYXMgR2VuZXJhbGl6ZWRUaW1lLiBbRnVydGhlcixdCiAgICAgIFVUQ1RpbWUgdmFsdWVzIE1VU1QgYmUgZXhwcmVzc2VkIGluIEdyZWVud2ljaCBNZWFuIFRpbWUgKFp1bHUpIGFuZCBNVVNUCiAgICAgIGluY2x1ZGUgc2Vjb25kcyAoaS5lLiwgdGltZXMgYXJlIFlZTU1EREhITU1TU1opLCBldmVuIHdoZXJlIHRoZQogICAgICBudW1iZXIgb2Ygc2Vjb25kcyBpcyB6ZXJvLiAgTWlkbmlnaHQgKEdNVCkgbXVzdCBiZSByZXByZXNlbnRlZCBhcwogICAgICAiWVlNTUREMDAwMDAwWiIuICovCiAgICAvLyBUT0RPOiBtYWtlIHRoZXNlIG1vZHVsZS1sZXZlbCBjb25zdGFudHMKICAgIHZhciBqYW5fMV8xOTUwID0gbmV3IERhdGUoJ0phbiAxLCAxOTUwIDAwOjAwOjAwWicpOwogICAgdmFyIGphbl8xXzIwNTAgPSBuZXcgRGF0ZSgnSmFuIDEsIDIwNTAgMDA6MDA6MDBaJyk7CiAgICB2YXIgZGF0ZSA9IGF0dHIudmFsdWU7CiAgICBpZih0eXBlb2YgZGF0ZSA9PT0gJ3N0cmluZycpIHsKICAgICAgLy8gdHJ5IHRvIHBhcnNlIGRhdGUKICAgICAgdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UoZGF0ZSk7CiAgICAgIGlmKCFpc05hTih0aW1lc3RhbXApKSB7CiAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCk7CiAgICAgIH0gZWxzZSBpZihkYXRlLmxlbmd0aCA9PT0gMTMpIHsKICAgICAgICAvLyBZWU1NRERISE1NU1NaICgxMyBjaGFycyBmb3IgVVRDVGltZSkKICAgICAgICBkYXRlID0gYXNuMS51dGNUaW1lVG9EYXRlKGRhdGUpOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIGFzc3VtZSBnZW5lcmFsaXplZCB0aW1lCiAgICAgICAgZGF0ZSA9IGFzbjEuZ2VuZXJhbGl6ZWRUaW1lVG9EYXRlKGRhdGUpOwogICAgICB9CiAgICB9CgogICAgaWYoZGF0ZSA+PSBqYW5fMV8xOTUwICYmIGRhdGUgPCBqYW5fMV8yMDUwKSB7CiAgICAgIHZhbHVlID0gYXNuMS5jcmVhdGUoCiAgICAgICAgYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5VVENUSU1FLCBmYWxzZSwKICAgICAgICBhc24xLmRhdGVUb1V0Y1RpbWUoZGF0ZSkpOwogICAgfSBlbHNlIHsKICAgICAgdmFsdWUgPSBhc24xLmNyZWF0ZSgKICAgICAgICBhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLkdFTkVSQUxJWkVEVElNRSwgZmFsc2UsCiAgICAgICAgYXNuMS5kYXRlVG9HZW5lcmFsaXplZFRpbWUoZGF0ZSkpOwogICAgfQogIH0KCiAgLy8gVE9ETzogZXhwb3NlIGFzIGNvbW1vbiBBUEkgY2FsbAogIC8vIGNyZWF0ZSBhIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgc2V0CiAgLy8gZWFjaCB2YWx1ZSBpbiB0aGUgc2V0IGlzIGFuIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZSBmaXJzdAogIC8vIGNvbnRhaW5pbmcgdGhlIHR5cGUgKGFuIE9JRCkgYW5kIHNlY29uZCB0aGUgdmFsdWUKICByZXR1cm4gYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5TRVFVRU5DRSwgdHJ1ZSwgWwogICAgLy8gQXR0cmlidXRlVHlwZQogICAgYXNuMS5jcmVhdGUoYXNuMS5DbGFzcy5VTklWRVJTQUwsIGFzbjEuVHlwZS5PSUQsIGZhbHNlLAogICAgICBhc24xLm9pZFRvRGVyKGF0dHIudHlwZSkuZ2V0Qnl0ZXMoKSksCiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLlNFVCwgdHJ1ZSwgWwogICAgICAvLyBBdHRyaWJ1dGVWYWx1ZQogICAgICB2YWx1ZQogICAgXSkKICBdKTsKfQoKLyoqCiAqIE1hcCBtZXNzYWdlcyBlbmNyeXB0ZWQgY29udGVudCB0byBBU04uMSBvYmplY3RzLgogKgogKiBAcGFyYW0gZWMgVGhlIGVuY3J5cHRlZENvbnRlbnQgb2JqZWN0IG9mIHRoZSBtZXNzYWdlLgogKgogKiBAcmV0dXJuIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbmNyeXB0ZWRDb250ZW50IG9iamVjdCAoU0VRVUVOQ0UpLgogKi8KZnVuY3Rpb24gX2VuY3J5cHRlZENvbnRlbnRUb0FzbjEoZWMpIHsKICByZXR1cm4gWwogICAgLy8gQ29udGVudFR5cGUsIGFsd2F5cyBEYXRhIGZvciB0aGUgbW9tZW50CiAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9JRCwgZmFsc2UsCiAgICAgIGFzbjEub2lkVG9EZXIoZm9yZ2UucGtpLm9pZHMuZGF0YSkuZ2V0Qnl0ZXMoKSksCiAgICAvLyBDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUlkZW50aWZpZXIKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuU0VRVUVOQ0UsIHRydWUsIFsKICAgICAgLy8gQWxnb3JpdGhtCiAgICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuVU5JVkVSU0FMLCBhc24xLlR5cGUuT0lELCBmYWxzZSwKICAgICAgICBhc24xLm9pZFRvRGVyKGVjLmFsZ29yaXRobSkuZ2V0Qnl0ZXMoKSksCiAgICAgIC8vIFBhcmFtZXRlcnMgKElWKQogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICBlYy5wYXJhbWV0ZXIuZ2V0Qnl0ZXMoKSkKICAgIF0pLAogICAgLy8gWzBdIEVuY3J5cHRlZENvbnRlbnQKICAgIGFzbjEuY3JlYXRlKGFzbjEuQ2xhc3MuQ09OVEVYVF9TUEVDSUZJQywgMCwgdHJ1ZSwgWwogICAgICBhc24xLmNyZWF0ZShhc24xLkNsYXNzLlVOSVZFUlNBTCwgYXNuMS5UeXBlLk9DVEVUU1RSSU5HLCBmYWxzZSwKICAgICAgICBlYy5jb250ZW50LmdldEJ5dGVzKCkpCiAgICBdKQogIF07Cn0KCi8qKgogKiBSZWFkcyB0aGUgImNvbW1vbiBwYXJ0IiBvZiBhbiBQS0NTIzcgY29udGVudCBibG9jayAoaW4gQVNOLjEgZm9ybWF0KQogKgogKiBUaGlzIGZ1bmN0aW9uIHJlYWRzIHRoZSAiY29tbW9uIHBhcnQiIG9mIHRoZSBQS0NTIzcgY29udGVudCBibG9ja3MKICogRW5jcnlwdGVkRGF0YSBhbmQgRW52ZWxvcGVkRGF0YSwgaS5lLiB2ZXJzaW9uIG51bWJlciBhbmQgc3ltbWV0cmljYWxseQogKiBlbmNyeXB0ZWQgY29udGVudCBibG9jay4KICoKICogVGhlIHJlc3VsdCBvZiB0aGUgQVNOLjEgdmFsaWRhdGUgYW5kIGNhcHR1cmUgcHJvY2VzcyBpcyByZXR1cm5lZAogKiB0byBhbGxvdyB0aGUgY2FsbGVyIHRvIGV4dHJhY3QgZnVydGhlciBkYXRhLCBlLmcuIHRoZSBsaXN0IG9mIHJlY2lwaWVudHMKICogaW4gY2FzZSBvZiBhIEVudmVsb3BlZERhdGEgb2JqZWN0LgogKgogKiBAcGFyYW0gbXNnIHRoZSBQS0NTIzcgb2JqZWN0IHRvIHJlYWQgdGhlIGRhdGEgdG8uCiAqIEBwYXJhbSBvYmogdGhlIEFTTi4xIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb250ZW50IGJsb2NrLgogKiBAcGFyYW0gdmFsaWRhdG9yIHRoZSBBU04uMSBzdHJ1Y3R1cmUgdmFsaWRhdG9yIG9iamVjdCB0byB1c2UuCiAqCiAqIEByZXR1cm4gdGhlIHZhbHVlIG1hcCBjYXB0dXJlZCBieSB2YWxpZGF0b3Igb2JqZWN0LgogKi8KZnVuY3Rpb24gX2Zyb21Bc24xKG1zZywgb2JqLCB2YWxpZGF0b3IpIHsKICB2YXIgY2FwdHVyZSA9IHt9OwogIHZhciBlcnJvcnMgPSBbXTsKICBpZighYXNuMS52YWxpZGF0ZShvYmosIHZhbGlkYXRvciwgY2FwdHVyZSwgZXJyb3JzKSkgewogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKCdDYW5ub3QgcmVhZCBQS0NTIzcgbWVzc2FnZS4gJyArCiAgICAgICdBU04uMSBvYmplY3QgaXMgbm90IGEgc3VwcG9ydGVkIFBLQ1MjNyBtZXNzYWdlLicpOwogICAgZXJyb3IuZXJyb3JzID0gZXJyb3I7CiAgICB0aHJvdyBlcnJvcjsKICB9CgogIC8vIENoZWNrIGNvbnRlbnRUeXBlLCBzbyBmYXIgd2Ugb25seSBzdXBwb3J0IChyYXcpIERhdGEuCiAgdmFyIGNvbnRlbnRUeXBlID0gYXNuMS5kZXJUb09pZChjYXB0dXJlLmNvbnRlbnRUeXBlKTsKICBpZihjb250ZW50VHlwZSAhPT0gZm9yZ2UucGtpLm9pZHMuZGF0YSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBQS0NTIzcgbWVzc2FnZS4gJyArCiAgICAgICdPbmx5IHdyYXBwZWQgQ29udGVudFR5cGUgRGF0YSBzdXBwb3J0ZWQuJyk7CiAgfQoKICBpZihjYXB0dXJlLmVuY3J5cHRlZENvbnRlbnQpIHsKICAgIHZhciBjb250ZW50ID0gJyc7CiAgICBpZihmb3JnZS51dGlsLmlzQXJyYXkoY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50KSkgewogICAgICBmb3IodmFyIGkgPSAwOyBpIDwgY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50Lmxlbmd0aDsgKytpKSB7CiAgICAgICAgaWYoY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50W2ldLnR5cGUgIT09IGFzbjEuVHlwZS5PQ1RFVFNUUklORykgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYWxmb3JtZWQgUEtDUyM3IG1lc3NhZ2UsIGV4cGVjdGluZyBlbmNyeXB0ZWQgJyArCiAgICAgICAgICAgICdjb250ZW50IGNvbnN0cnVjdGVkIG9mIG9ubHkgT0NURVQgU1RSSU5HIG9iamVjdHMuJyk7CiAgICAgICAgfQogICAgICAgIGNvbnRlbnQgKz0gY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50W2ldLnZhbHVlOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBjb250ZW50ID0gY2FwdHVyZS5lbmNyeXB0ZWRDb250ZW50OwogICAgfQogICAgbXNnLmVuY3J5cHRlZENvbnRlbnQgPSB7CiAgICAgIGFsZ29yaXRobTogYXNuMS5kZXJUb09pZChjYXB0dXJlLmVuY0FsZ29yaXRobSksCiAgICAgIHBhcmFtZXRlcjogZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY2FwdHVyZS5lbmNQYXJhbWV0ZXIudmFsdWUpLAogICAgICBjb250ZW50OiBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcihjb250ZW50KQogICAgfTsKICB9CgogIGlmKGNhcHR1cmUuY29udGVudCkgewogICAgdmFyIGNvbnRlbnQgPSAnJzsKICAgIGlmKGZvcmdlLnV0aWwuaXNBcnJheShjYXB0dXJlLmNvbnRlbnQpKSB7CiAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBjYXB0dXJlLmNvbnRlbnQubGVuZ3RoOyArK2kpIHsKICAgICAgICBpZihjYXB0dXJlLmNvbnRlbnRbaV0udHlwZSAhPT0gYXNuMS5UeXBlLk9DVEVUU1RSSU5HKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBQS0NTIzcgbWVzc2FnZSwgZXhwZWN0aW5nICcgKwogICAgICAgICAgICAnY29udGVudCBjb25zdHJ1Y3RlZCBvZiBvbmx5IE9DVEVUIFNUUklORyBvYmplY3RzLicpOwogICAgICAgIH0KICAgICAgICBjb250ZW50ICs9IGNhcHR1cmUuY29udGVudFtpXS52YWx1ZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgY29udGVudCA9IGNhcHR1cmUuY29udGVudDsKICAgIH0KICAgIG1zZy5jb250ZW50ID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoY29udGVudCk7CiAgfQoKICBtc2cudmVyc2lvbiA9IGNhcHR1cmUudmVyc2lvbi5jaGFyQ29kZUF0KDApOwogIG1zZy5yYXdDYXB0dXJlID0gY2FwdHVyZTsKCiAgcmV0dXJuIGNhcHR1cmU7Cn0KCi8qKgogKiBEZWNyeXB0IHRoZSBzeW1tZXRyaWNhbGx5IGVuY3J5cHRlZCBjb250ZW50IGJsb2NrIG9mIHRoZSBQS0NTIzcgbWVzc2FnZS4KICoKICogRGVjcnlwdGlvbiBpcyBza2lwcGVkIGluIGNhc2UgdGhlIFBLQ1MjNyBtZXNzYWdlIG9iamVjdCBhbHJlYWR5IGhhcyBhCiAqIChkZWNyeXB0ZWQpIGNvbnRlbnQgYXR0cmlidXRlLiAgVGhlIGFsZ29yaXRobSwga2V5IGFuZCBjaXBoZXIgcGFyYW1ldGVycwogKiAocHJvYmFibHkgdGhlIGl2KSBhcmUgdGFrZW4gZnJvbSB0aGUgZW5jcnlwdGVkQ29udGVudCBhdHRyaWJ1dGUgb2YgdGhlCiAqIG1lc3NhZ2Ugb2JqZWN0LgogKgogKiBAcGFyYW0gVGhlIFBLQ1MjNyBtZXNzYWdlIG9iamVjdC4KICovCmZ1bmN0aW9uIF9kZWNyeXB0Q29udGVudChtc2cpIHsKICBpZihtc2cuZW5jcnlwdGVkQ29udGVudC5rZXkgPT09IHVuZGVmaW5lZCkgewogICAgdGhyb3cgbmV3IEVycm9yKCdTeW1tZXRyaWMga2V5IG5vdCBhdmFpbGFibGUuJyk7CiAgfQoKICBpZihtc2cuY29udGVudCA9PT0gdW5kZWZpbmVkKSB7CiAgICB2YXIgY2lwaDsKCiAgICBzd2l0Y2gobXNnLmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtKSB7CiAgICAgIGNhc2UgZm9yZ2UucGtpLm9pZHNbJ2FlczEyOC1DQkMnXToKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkc1snYWVzMTkyLUNCQyddOgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzWydhZXMyNTYtQ0JDJ106CiAgICAgICAgY2lwaCA9IGZvcmdlLmFlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSk7CiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlIGZvcmdlLnBraS5vaWRzWydkZXNDQkMnXToKICAgICAgY2FzZSBmb3JnZS5wa2kub2lkc1snZGVzLUVERTMtQ0JDJ106CiAgICAgICAgY2lwaCA9IGZvcmdlLmRlcy5jcmVhdGVEZWNyeXB0aW9uQ2lwaGVyKG1zZy5lbmNyeXB0ZWRDb250ZW50LmtleSk7CiAgICAgICAgYnJlYWs7CgogICAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc3ltbWV0cmljIGNpcGhlciwgT0lEICcgKwogICAgICAgICAgbXNnLmVuY3J5cHRlZENvbnRlbnQuYWxnb3JpdGhtKTsKICAgIH0KICAgIGNpcGguc3RhcnQobXNnLmVuY3J5cHRlZENvbnRlbnQucGFyYW1ldGVyKTsKICAgIGNpcGgudXBkYXRlKG1zZy5lbmNyeXB0ZWRDb250ZW50LmNvbnRlbnQpOwoKICAgIGlmKCFjaXBoLmZpbmlzaCgpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignU3ltbWV0cmljIGRlY3J5cHRpb24gZmFpbGVkLicpOwogICAgfQoKICAgIG1zZy5jb250ZW50ID0gY2lwaC5vdXRwdXQ7CiAgfQp9Cgp9IC8vIGVuZCBtb2R1bGUgaW1wbGVtZW50YXRpb24KCi8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIHdyYXBwZXIgIyMjIyMjIyMjIyAqLwp2YXIgbmFtZSA9ICdwa2NzNyc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9wa2NzNycsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hZXMnLAogICcuL2FzbjEnLAogICcuL2RlcycsCiAgJy4vb2lkcycsCiAgJy4vcGVtJywKICAnLi9wa2NzN2FzbjEnLAogICcuL3JhbmRvbScsCiAgJy4vdXRpbCcsCiAgJy4veDUwOScKXSwgZnVuY3Rpb24oKSB7CiAgZGVmaW5lRnVuYy5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfSk7Cn0pKCk7CgovKioKICogRnVuY3Rpb25zIHRvIG91dHB1dCBrZXlzIGluIFNTSC1mcmllbmRseSBmb3JtYXRzLgogKgogKiBUaGlzIGlzIHBhcnQgb2YgdGhlIEZvcmdlIHByb2plY3Qgd2hpY2ggbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zIG9mCiAqIGVpdGhlciB0aGUgQlNEIExpY2Vuc2Ugb3IgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIFZlcnNpb24gMi4KICoKICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGlnaXRhbGJhemFhci9mb3JnZS9ibG9iL2NiZWJjYTM3ODA2NTg3MDNkOTI1YjYxYjJjYWZmYjFkMjYzYTZjMWQvTElDRU5TRQogKgogKiBAYXV0aG9yIGh0dHBzOi8vZ2l0aHViLmNvbS9zaGVsbGFjCiAqLwooZnVuY3Rpb24oKSB7Ci8qICMjIyMjIyMjIyMgQmVnaW4gbW9kdWxlIGltcGxlbWVudGF0aW9uICMjIyMjIyMjIyMgKi8KZnVuY3Rpb24gaW5pdE1vZHVsZShmb3JnZSkgewoKdmFyIHNzaCA9IGZvcmdlLnNzaCA9IGZvcmdlLnNzaCB8fCB7fTsKCi8qKgogKiBFbmNvZGVzIChhbmQgb3B0aW9uYWxseSBlbmNyeXB0cykgYSBwcml2YXRlIFJTQSBrZXkgYXMgYSBQdXR0eSBQUEsgZmlsZS4KICoKICogQHBhcmFtIHByaXZhdGVLZXkgdGhlIGtleS4KICogQHBhcmFtIHBhc3NwaHJhc2UgYSBwYXNzcGhyYXNlIHRvIHByb3RlY3QgdGhlIGtleSAoZmFsc3kgZm9yIG5vIGVuY3J5cHRpb24pLgogKiBAcGFyYW0gY29tbWVudCBhIGNvbW1lbnQgdG8gaW5jbHVkZSBpbiB0aGUga2V5IGZpbGUuCiAqCiAqIEByZXR1cm4gdGhlIFBQSyBmaWxlIGFzIGEgc3RyaW5nLgogKi8Kc3NoLnByaXZhdGVLZXlUb1B1dHR5ID0gZnVuY3Rpb24ocHJpdmF0ZUtleSwgcGFzc3BocmFzZSwgY29tbWVudCkgewogIGNvbW1lbnQgPSBjb21tZW50IHx8ICcnOwogIHBhc3NwaHJhc2UgPSBwYXNzcGhyYXNlIHx8ICcnOwogIHZhciBhbGdvcml0aG0gPSAnc3NoLXJzYSc7CiAgdmFyIGVuY3J5cHRpb25BbGdvcml0aG0gPSAocGFzc3BocmFzZSA9PT0gJycpID8gJ25vbmUnIDogJ2FlczI1Ni1jYmMnOwoKICB2YXIgcHBrID0gJ1B1VFRZLVVzZXItS2V5LUZpbGUtMjogJyArIGFsZ29yaXRobSArICdcclxuJzsKICBwcGsgKz0gJ0VuY3J5cHRpb246ICcgKyBlbmNyeXB0aW9uQWxnb3JpdGhtICsgJ1xyXG4nOwogIHBwayArPSAnQ29tbWVudDogJyArIGNvbW1lbnQgKyAnXHJcbic7CgogIC8vIHB1YmxpYyBrZXkgaW50byBidWZmZXIgZm9yIHBwawogIHZhciBwdWJidWZmZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihwdWJidWZmZXIsIGFsZ29yaXRobSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwdWJidWZmZXIsIHByaXZhdGVLZXkuZSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwdWJidWZmZXIsIHByaXZhdGVLZXkubik7CgogIC8vIHdyaXRlIHB1YmxpYyBrZXkKICB2YXIgcHViID0gZm9yZ2UudXRpbC5lbmNvZGU2NChwdWJidWZmZXIuYnl0ZXMoKSwgNjQpOwogIHZhciBsZW5ndGggPSBNYXRoLmZsb29yKHB1Yi5sZW5ndGggLyA2NikgKyAxOyAvLyA2NiA9IDY0ICsgXHJcbgogIHBwayArPSAnUHVibGljLUxpbmVzOiAnICsgbGVuZ3RoICsgJ1xyXG4nOwogIHBwayArPSBwdWI7CgogIC8vIHByaXZhdGUga2V5IGludG8gYSBidWZmZXIKICB2YXIgcHJpdmJ1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwcml2YnVmZmVyLCBwcml2YXRlS2V5LmQpOwogIF9hZGRCaWdJbnRlZ2VyVG9CdWZmZXIocHJpdmJ1ZmZlciwgcHJpdmF0ZUtleS5wKTsKICBfYWRkQmlnSW50ZWdlclRvQnVmZmVyKHByaXZidWZmZXIsIHByaXZhdGVLZXkucSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihwcml2YnVmZmVyLCBwcml2YXRlS2V5LnFJbnYpOwoKICAvLyBvcHRpb25hbGx5IGVuY3J5cHQgdGhlIHByaXZhdGUga2V5CiAgdmFyIHByaXY7CiAgaWYoIXBhc3NwaHJhc2UpIHsKICAgIC8vIHVzZSB0aGUgdW5lbmNyeXB0ZWQgYnVmZmVyCiAgICBwcml2ID0gZm9yZ2UudXRpbC5lbmNvZGU2NChwcml2YnVmZmVyLmJ5dGVzKCksIDY0KTsKICB9IGVsc2UgewogICAgLy8gZW5jcnlwdCBSU0Ega2V5IHVzaW5nIHBhc3NwaHJhc2UKICAgIHZhciBlbmNMZW4gPSBwcml2YnVmZmVyLmxlbmd0aCgpICsgMTYgLSAxOwogICAgZW5jTGVuIC09IGVuY0xlbiAlIDE2OwoKICAgIC8vIHBhZCBwcml2YXRlIGtleSB3aXRoIHNoYTEtZCBkYXRhIC0tIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYKICAgIHZhciBwYWRkaW5nID0gX3NoYTEocHJpdmJ1ZmZlci5ieXRlcygpKTsKCiAgICBwYWRkaW5nLnRydW5jYXRlKHBhZGRpbmcubGVuZ3RoKCkgLSBlbmNMZW4gKyBwcml2YnVmZmVyLmxlbmd0aCgpKTsKICAgIHByaXZidWZmZXIucHV0QnVmZmVyKHBhZGRpbmcpOwoKICAgIHZhciBhZXNrZXkgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogICAgYWVza2V5LnB1dEJ1ZmZlcihfc2hhMSgnXHgwMFx4MDBceDAwXHgwMCcsIHBhc3NwaHJhc2UpKTsKICAgIGFlc2tleS5wdXRCdWZmZXIoX3NoYTEoJ1x4MDBceDAwXHgwMFx4MDEnLCBwYXNzcGhyYXNlKSk7CgogICAgLy8gZW5jcnlwdCBzb21lIGJ5dGVzIHVzaW5nIENCQyBtb2RlCiAgICAvLyBrZXkgaXMgNDAgYnl0ZXMsIHNvIHRydW5jYXRlICpieSogOCBieXRlcwogICAgdmFyIGNpcGhlciA9IGZvcmdlLmFlcy5jcmVhdGVFbmNyeXB0aW9uQ2lwaGVyKGFlc2tleS50cnVuY2F0ZSg4KSwgJ0NCQycpOwogICAgY2lwaGVyLnN0YXJ0KGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCkuZmlsbFdpdGhCeXRlKDAsIDE2KSk7CiAgICBjaXBoZXIudXBkYXRlKHByaXZidWZmZXIuY29weSgpKTsKICAgIGNpcGhlci5maW5pc2goKTsKICAgIHZhciBlbmNyeXB0ZWQgPSBjaXBoZXIub3V0cHV0OwoKICAgIC8vIE5vdGU6IHRoaXMgYXBwZWFycyB0byBkaWZmZXIgZnJvbSBQdXR0eSAtLSBpcyBmb3JnZSB3cm9uZywgb3IgcHV0dHk/CiAgICAvLyBkdWUgdG8gcGFkZGluZyB3ZSBmaW5pc2ggYXMgYW4gZXhhY3QgbXVsdGlwbGUgb2YgMTYKICAgIGVuY3J5cHRlZC50cnVuY2F0ZSgxNik7IC8vIGFsbCBwYWRkaW5nCgogICAgcHJpdiA9IGZvcmdlLnV0aWwuZW5jb2RlNjQoZW5jcnlwdGVkLmJ5dGVzKCksIDY0KTsKICB9CgogIC8vIG91dHB1dCBwcml2YXRlIGtleQogIGxlbmd0aCA9IE1hdGguZmxvb3IocHJpdi5sZW5ndGggLyA2NikgKyAxOyAvLyA2NCArIFxyXG4KICBwcGsgKz0gJ1xyXG5Qcml2YXRlLUxpbmVzOiAnICsgbGVuZ3RoICsgJ1xyXG4nOwogIHBwayArPSBwcml2OwoKICAvLyBNQUMKICB2YXIgbWFja2V5ID0gX3NoYTEoJ3B1dHR5LXByaXZhdGUta2V5LWZpbGUtbWFjLWtleScsIHBhc3NwaHJhc2UpOwoKICB2YXIgbWFjYnVmZmVyID0gZm9yZ2UudXRpbC5jcmVhdGVCdWZmZXIoKTsKICBfYWRkU3RyaW5nVG9CdWZmZXIobWFjYnVmZmVyLCBhbGdvcml0aG0pOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihtYWNidWZmZXIsIGVuY3J5cHRpb25BbGdvcml0aG0pOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihtYWNidWZmZXIsIGNvbW1lbnQpOwogIG1hY2J1ZmZlci5wdXRJbnQzMihwdWJidWZmZXIubGVuZ3RoKCkpOwogIG1hY2J1ZmZlci5wdXRCdWZmZXIocHViYnVmZmVyKTsKICBtYWNidWZmZXIucHV0SW50MzIocHJpdmJ1ZmZlci5sZW5ndGgoKSk7CiAgbWFjYnVmZmVyLnB1dEJ1ZmZlcihwcml2YnVmZmVyKTsKCiAgdmFyIGhtYWMgPSBmb3JnZS5obWFjLmNyZWF0ZSgpOwogIGhtYWMuc3RhcnQoJ3NoYTEnLCBtYWNrZXkpOwogIGhtYWMudXBkYXRlKG1hY2J1ZmZlci5ieXRlcygpKTsKCiAgcHBrICs9ICdcclxuUHJpdmF0ZS1NQUM6ICcgKyBobWFjLmRpZ2VzdCgpLnRvSGV4KCkgKyAnXHJcbic7CgogIHJldHVybiBwcGs7Cn07CgovKioKICogRW5jb2RlcyBhIHB1YmxpYyBSU0Ega2V5IGFzIGFuIE9wZW5TU0ggZmlsZS4KICoKICogQHBhcmFtIGtleSB0aGUga2V5LgogKiBAcGFyYW0gY29tbWVudCBhIGNvbW1lbnQuCiAqCiAqIEByZXR1cm4gdGhlIHB1YmxpYyBrZXkgaW4gT3BlblNTSCBmb3JtYXQuCiAqLwpzc2gucHVibGljS2V5VG9PcGVuU1NIID0gZnVuY3Rpb24oa2V5LCBjb21tZW50KSB7CiAgdmFyIHR5cGUgPSAnc3NoLXJzYSc7CiAgY29tbWVudCA9IGNvbW1lbnQgfHwgJyc7CgogIHZhciBidWZmZXIgPSBmb3JnZS51dGlsLmNyZWF0ZUJ1ZmZlcigpOwogIF9hZGRTdHJpbmdUb0J1ZmZlcihidWZmZXIsIHR5cGUpOwogIF9hZGRCaWdJbnRlZ2VyVG9CdWZmZXIoYnVmZmVyLCBrZXkuZSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihidWZmZXIsIGtleS5uKTsKCiAgcmV0dXJuIHR5cGUgKyAnICcgKyBmb3JnZS51dGlsLmVuY29kZTY0KGJ1ZmZlci5ieXRlcygpKSArICcgJyArIGNvbW1lbnQ7Cn07CgovKioKICogRW5jb2RlcyBhIHByaXZhdGUgUlNBIGtleSBhcyBhbiBPcGVuU1NIIGZpbGUuCiAqCiAqIEBwYXJhbSBrZXkgdGhlIGtleS4KICogQHBhcmFtIHBhc3NwaHJhc2UgYSBwYXNzcGhyYXNlIHRvIHByb3RlY3QgdGhlIGtleSAoZmFsc3kgZm9yIG5vIGVuY3J5cHRpb24pLgogKgogKiBAcmV0dXJuIHRoZSBwdWJsaWMga2V5IGluIE9wZW5TU0ggZm9ybWF0LgogKi8Kc3NoLnByaXZhdGVLZXlUb09wZW5TU0ggPSBmdW5jdGlvbihwcml2YXRlS2V5LCBwYXNzcGhyYXNlKSB7CiAgaWYoIXBhc3NwaHJhc2UpIHsKICAgIHJldHVybiBmb3JnZS5wa2kucHJpdmF0ZUtleVRvUGVtKHByaXZhdGVLZXkpOwogIH0KICAvLyBPcGVuU1NIIHByaXZhdGUga2V5IGlzIGp1c3QgYSBsZWdhY3kgZm9ybWF0LCBpdCBzZWVtcwogIHJldHVybiBmb3JnZS5wa2kuZW5jcnlwdFJzYVByaXZhdGVLZXkocHJpdmF0ZUtleSwgcGFzc3BocmFzZSwKICAgIHtsZWdhY3k6IHRydWUsIGFsZ29yaXRobTogJ2FlczEyOCd9KTsKfTsKCi8qKgogKiBHZXRzIHRoZSBTU0ggZmluZ2VycHJpbnQgZm9yIHRoZSBnaXZlbiBwdWJsaWMga2V5LgogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb3B0aW9ucyB0byB1c2UuCiAqICAgICAgICAgIFttZF0gdGhlIG1lc3NhZ2UgZGlnZXN0IG9iamVjdCB0byB1c2UgKGRlZmF1bHRzIHRvIGZvcmdlLm1kLm1kNSkuCiAqICAgICAgICAgIFtlbmNvZGluZ10gYW4gYWx0ZXJuYXRpdmUgb3V0cHV0IGVuY29kaW5nLCBzdWNoIGFzICdoZXgnCiAqICAgICAgICAgICAgKGRlZmF1bHRzIHRvIG5vbmUsIG91dHB1dHMgYSBieXRlIGJ1ZmZlcikuCiAqICAgICAgICAgIFtkZWxpbWl0ZXJdIHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJldHdlZW4gYnl0ZXMgZm9yICdoZXgnIGVuY29kZWQKICogICAgICAgICAgICBvdXRwdXQsIGVnOiAnOicgKGRlZmF1bHRzIHRvIG5vbmUpLgogKgogKiBAcmV0dXJuIHRoZSBmaW5nZXJwcmludCBhcyBhIGJ5dGUgYnVmZmVyIG9yIG90aGVyIGVuY29kaW5nIGJhc2VkIG9uIG9wdGlvbnMuCiAqLwpzc2guZ2V0UHVibGljS2V5RmluZ2VycHJpbnQgPSBmdW5jdGlvbihrZXksIG9wdGlvbnMpIHsKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICB2YXIgbWQgPSBvcHRpb25zLm1kIHx8IGZvcmdlLm1kLm1kNS5jcmVhdGUoKTsKCiAgdmFyIHR5cGUgPSAnc3NoLXJzYSc7CiAgdmFyIGJ1ZmZlciA9IGZvcmdlLnV0aWwuY3JlYXRlQnVmZmVyKCk7CiAgX2FkZFN0cmluZ1RvQnVmZmVyKGJ1ZmZlciwgdHlwZSk7CiAgX2FkZEJpZ0ludGVnZXJUb0J1ZmZlcihidWZmZXIsIGtleS5lKTsKICBfYWRkQmlnSW50ZWdlclRvQnVmZmVyKGJ1ZmZlciwga2V5Lm4pOwoKICAvLyBoYXNoIHB1YmxpYyBrZXkgYnl0ZXMKICBtZC5zdGFydCgpOwogIG1kLnVwZGF0ZShidWZmZXIuZ2V0Qnl0ZXMoKSk7CiAgdmFyIGRpZ2VzdCA9IG1kLmRpZ2VzdCgpOwogIGlmKG9wdGlvbnMuZW5jb2RpbmcgPT09ICdoZXgnKSB7CiAgICB2YXIgaGV4ID0gZGlnZXN0LnRvSGV4KCk7CiAgICBpZihvcHRpb25zLmRlbGltaXRlcikgewogICAgICByZXR1cm4gaGV4Lm1hdGNoKC8uezJ9L2cpLmpvaW4ob3B0aW9ucy5kZWxpbWl0ZXIpOwogICAgfQogICAgcmV0dXJuIGhleDsKICB9IGVsc2UgaWYob3B0aW9ucy5lbmNvZGluZyA9PT0gJ2JpbmFyeScpIHsKICAgIHJldHVybiBkaWdlc3QuZ2V0Qnl0ZXMoKTsKICB9IGVsc2UgaWYob3B0aW9ucy5lbmNvZGluZykgewogICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nICInICsgb3B0aW9ucy5lbmNvZGluZyArICciLicpOwogIH0KICByZXR1cm4gZGlnZXN0Owp9OwoKLyoqCiAqIEFkZHMgbGVuKHZhbCkgdGhlbiB2YWwgdG8gYSBidWZmZXIuCiAqCiAqIEBwYXJhbSBidWZmZXIgdGhlIGJ1ZmZlciB0byBhZGQgdG8uCiAqIEBwYXJhbSB2YWwgYSBiaWcgaW50ZWdlci4KICovCmZ1bmN0aW9uIF9hZGRCaWdJbnRlZ2VyVG9CdWZmZXIoYnVmZmVyLCB2YWwpIHsKICB2YXIgaGV4VmFsID0gdmFsLnRvU3RyaW5nKDE2KTsKICAvLyBlbnN1cmUgMnMgY29tcGxlbWVudCArdmUKICBpZihoZXhWYWxbMF0gPj0gJzgnKSB7CiAgICBoZXhWYWwgPSAnMDAnICsgaGV4VmFsOwogIH0KICB2YXIgYnl0ZXMgPSBmb3JnZS51dGlsLmhleFRvQnl0ZXMoaGV4VmFsKTsKICBidWZmZXIucHV0SW50MzIoYnl0ZXMubGVuZ3RoKTsKICBidWZmZXIucHV0Qnl0ZXMoYnl0ZXMpOwp9CgovKioKICogQWRkcyBsZW4odmFsKSB0aGVuIHZhbCB0byBhIGJ1ZmZlci4KICoKICogQHBhcmFtIGJ1ZmZlciB0aGUgYnVmZmVyIHRvIGFkZCB0by4KICogQHBhcmFtIHZhbCBhIHN0cmluZy4KICovCmZ1bmN0aW9uIF9hZGRTdHJpbmdUb0J1ZmZlcihidWZmZXIsIHZhbCkgewogIGJ1ZmZlci5wdXRJbnQzMih2YWwubGVuZ3RoKTsKICBidWZmZXIucHV0U3RyaW5nKHZhbCk7Cn0KCi8qKgogKiBIYXNoZXMgdGhlIGFyZ3VtZW50cyBpbnRvIG9uZSB2YWx1ZSB1c2luZyBTSEEtMS4KICoKICogQHJldHVybiB0aGUgc2hhMSBoYXNoIG9mIHRoZSBwcm92aWRlZCBhcmd1bWVudHMuCiAqLwpmdW5jdGlvbiBfc2hhMSgpIHsKICB2YXIgc2hhID0gZm9yZ2UubWQuc2hhMS5jcmVhdGUoKTsKICB2YXIgbnVtID0gYXJndW1lbnRzLmxlbmd0aDsKICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgKytpKSB7CiAgICBzaGEudXBkYXRlKGFyZ3VtZW50c1tpXSk7CiAgfQogIHJldHVybiBzaGEuZGlnZXN0KCk7Cn0KCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3NzaCc7CmlmKHR5cGVvZiBkZWZpbmUgIT09ICdmdW5jdGlvbicpIHsKICAvLyBOb2RlSlMgLT4gQU1ECiAgaWYodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICAgIHZhciBub2RlSlMgPSB0cnVlOwogICAgZGVmaW5lID0gZnVuY3Rpb24oaWRzLCBmYWN0b3J5KSB7CiAgICAgIGZhY3RvcnkocmVxdWlyZSwgbW9kdWxlKTsKICAgIH07CiAgfSBlbHNlIHsKICAgIC8vIDxzY3JpcHQ+CiAgICBpZih0eXBlb2YgZm9yZ2UgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGZvcmdlID0ge307CiAgICB9CiAgICByZXR1cm4gaW5pdE1vZHVsZShmb3JnZSk7CiAgfQp9Ci8vIEFNRAp2YXIgZGVwczsKdmFyIGRlZmluZUZ1bmMgPSBmdW5jdGlvbihyZXF1aXJlLCBtb2R1bGUpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZvcmdlKSB7CiAgICB2YXIgbW9kcyA9IGRlcHMubWFwKGZ1bmN0aW9uKGRlcCkgewogICAgICByZXR1cm4gcmVxdWlyZShkZXApOwogICAgfSkuY29uY2F0KGluaXRNb2R1bGUpOwogICAgLy8gaGFuZGxlIGNpcmN1bGFyIGRlcGVuZGVuY2llcwogICAgZm9yZ2UgPSBmb3JnZSB8fCB7fTsKICAgIGZvcmdlLmRlZmluZWQgPSBmb3JnZS5kZWZpbmVkIHx8IHt9OwogICAgaWYoZm9yZ2UuZGVmaW5lZFtuYW1lXSkgewogICAgICByZXR1cm4gZm9yZ2VbbmFtZV07CiAgICB9CiAgICBmb3JnZS5kZWZpbmVkW25hbWVdID0gdHJ1ZTsKICAgIGZvcih2YXIgaSA9IDA7IGkgPCBtb2RzLmxlbmd0aDsgKytpKSB7CiAgICAgIG1vZHNbaV0oZm9yZ2UpOwogICAgfQogICAgcmV0dXJuIGZvcmdlW25hbWVdOwogIH07Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9zc2gnLFsKICAncmVxdWlyZScsCiAgJ21vZHVsZScsCiAgJy4vYWVzJywKICAnLi9obWFjJywKICAnLi9tZDUnLAogICcuL3NoYTEnLAogICcuL3V0aWwnCl0sIGZ1bmN0aW9uKCkgewogIGRlZmluZUZ1bmMuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn0pOwp9KSgpOwoKLyoqCiAqIFN1cHBvcnQgZm9yIGNvbmN1cnJlbnQgdGFzayBtYW5hZ2VtZW50IGFuZCBzeW5jaHJvbml6YXRpb24gaW4gd2ViCiAqIGFwcGxpY2F0aW9ucy4KICoKICogQGF1dGhvciBEYXZlIExvbmdsZXkKICogQGF1dGhvciBEYXZpZCBJLiBMZWhuIDxkbGVobkBkaWdpdGFsYmF6YWFyLmNvbT4KICoKICogQ29weXJpZ2h0IChjKSAyMDA5LTIwMTMgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgaW1wbGVtZW50YXRpb24gIyMjIyMjIyMjIyAqLwpmdW5jdGlvbiBpbml0TW9kdWxlKGZvcmdlKSB7CgovLyBsb2dnaW5nIGNhdGVnb3J5CnZhciBjYXQgPSAnZm9yZ2UudGFzayc7CgovLyB2ZXJib3NlIGxldmVsCi8vIDA6IG9mZiwgMTogYSBsaXR0bGUsIDI6IGEgd2hvbGUgbG90Ci8vIFZlcmJvc2UgZGVidWcgbG9nZ2luZyBpcyBzdXJyb3VuZGVkIGJ5IGEgbGV2ZWwgY2hlY2sgdG8gYXZvaWQgdGhlCi8vIHBlcmZvcm1hbmNlIGlzc3VlcyB3aXRoIGV2ZW4gY2FsbGluZyB0aGUgbG9nZ2luZyBjb2RlIHJlZ2FyZGxlc3MgaWYgaXQKLy8gaXMgYWN0dWFsbHkgbG9nZ2VkLiAgRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgdGhpcyBzaG91bGQgbm90IGJlIHNldCB0byAyCi8vIGZvciBwcm9kdWN0aW9uIHVzZS4KLy8gZXg6IGlmKHNWTCA+PSAyKSBmb3JnZS5sb2cudmVyYm9zZSguLi4uKQp2YXIgc1ZMID0gMDsKCi8vIHRyYWNrIHRhc2tzIGZvciBkZWJ1Z2dpbmcKdmFyIHNUYXNrcyA9IHt9Owp2YXIgc05leHRUYXNrSWQgPSAwOwovLyBkZWJ1ZyBhY2Nlc3MKZm9yZ2UuZGVidWcuc2V0KGNhdCwgJ3Rhc2tzJywgc1Rhc2tzKTsKCi8vIGEgbWFwIG9mIHRhc2sgdHlwZSB0byB0YXNrIHF1ZXVlCnZhciBzVGFza1F1ZXVlcyA9IHt9OwovLyBkZWJ1ZyBhY2Nlc3MKZm9yZ2UuZGVidWcuc2V0KGNhdCwgJ3F1ZXVlcycsIHNUYXNrUXVldWVzKTsKCi8vIG5hbWUgZm9yIHVubmFtZWQgdGFza3MKdmFyIHNOb1Rhc2tOYW1lID0gJz8nOwoKLy8gbWF4aW11bSBudW1iZXIgb2YgZG9OZXh0KCkgcmVjdXJzaW9ucyBiZWZvcmUgYSBjb250ZXh0IHN3YXAgb2NjdXJzCi8vIEZJWE1FOiBtaWdodCBuZWVkIHRvIHR3ZWFrIHRoaXMgYmFzZWQgb24gdGhlIGJyb3dzZXIKdmFyIHNNYXhSZWN1cnNpb25zID0gMzA7CgovLyB0aW1lIHNsaWNlIGZvciBkb2luZyB0YXNrcyBiZWZvcmUgYSBjb250ZXh0IHN3YXAgb2NjdXJzCi8vIEZJWE1FOiBtaWdodCBuZWVkIHRvIHR3ZWFrIHRoaXMgYmFzZWQgb24gdGhlIGJyb3dzZXIKdmFyIHNUaW1lU2xpY2UgPSAyMDsKCi8qKgogKiBUYXNrIHN0YXRlcy4KICoKICogUkVBRFk6IHJlYWR5IHRvIHN0YXJ0IHByb2Nlc3NpbmcKICogUlVOTklORzogdGFzayBvciBhIHN1YnRhc2sgaXMgcnVubmluZwogKiBCTE9DS0VEOiB0YXNrIGlzIHdhaXRpbmcgdG8gYWNxdWlyZSBOIHBlcm1pdHMgdG8gY29udGludWUKICogU0xFRVBJTkc6IHRhc2sgaXMgc2xlZXBpbmcgZm9yIGEgcGVyaW9kIG9mIHRpbWUKICogRE9ORTogdGFzayBpcyBkb25lCiAqIEVSUk9SOiB0YXNrIGhhcyBhbiBlcnJvcgogKi8KdmFyIFJFQURZID0gJ3JlYWR5JzsKdmFyIFJVTk5JTkcgPSAncnVubmluZyc7CnZhciBCTE9DS0VEID0gJ2Jsb2NrZWQnOwp2YXIgU0xFRVBJTkcgPSAnc2xlZXBpbmcnOwp2YXIgRE9ORSA9ICdkb25lJzsKdmFyIEVSUk9SID0gJ2Vycm9yJzsKCi8qKgogKiBUYXNrIGFjdGlvbnMuICBVc2VkIHRvIGNvbnRyb2wgc3RhdGUgdHJhbnNpdGlvbnMuCiAqCiAqIFNUT1A6IHN0b3AgcHJvY2Vzc2luZwogKiBTVEFSVDogc3RhcnQgcHJvY2Vzc2luZyB0YXNrcwogKiBCTE9DSzogYmxvY2sgdGFzayBmcm9tIGNvbnRpbnVpbmcgdW50aWwgMSBvciBtb3JlIHBlcm1pdHMgYXJlIHJlbGVhc2VkCiAqIFVOQkxPQ0s6IHJlbGVhc2Ugb25lIG9yIG1vcmUgcGVybWl0cwogKiBTTEVFUDogc2xlZXAgZm9yIGEgcGVyaW9kIG9mIHRpbWUKICogV0FLRVVQOiB3YWtldXAgZWFybHkgZnJvbSBTTEVFUElORyBzdGF0ZQogKiBDQU5DRUw6IGNhbmNlbCBmdXJ0aGVyIHRhc2tzCiAqIEZBSUw6IGEgZmFpbHVyZSBvY2N1cmVkCiAqLwp2YXIgU1RPUCA9ICdzdG9wJzsKdmFyIFNUQVJUID0gJ3N0YXJ0JzsKdmFyIEJMT0NLID0gJ2Jsb2NrJzsKdmFyIFVOQkxPQ0sgPSAndW5ibG9jayc7CnZhciBTTEVFUCA9ICdzbGVlcCc7CnZhciBXQUtFVVAgPSAnd2FrZXVwJzsKdmFyIENBTkNFTCA9ICdjYW5jZWwnOwp2YXIgRkFJTCA9ICdmYWlsJzsKCi8qKgogKiBTdGF0ZSB0cmFuc2l0aW9uIHRhYmxlLgogKgogKiBuZXh0U3RhdGUgPSBzU3RhdGVUYWJsZVtjdXJyZW50U3RhdGVdW2FjdGlvbl0KICovCnZhciBzU3RhdGVUYWJsZSA9IHt9OwoKc1N0YXRlVGFibGVbUkVBRFldID0ge307CnNTdGF0ZVRhYmxlW1JFQURZXVtTVE9QXSA9IFJFQURZOwpzU3RhdGVUYWJsZVtSRUFEWV1bU1RBUlRdID0gUlVOTklORzsKc1N0YXRlVGFibGVbUkVBRFldW0NBTkNFTF0gPSBET05FOwpzU3RhdGVUYWJsZVtSRUFEWV1bRkFJTF0gPSBFUlJPUjsKCnNTdGF0ZVRhYmxlW1JVTk5JTkddID0ge307CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1NUT1BdID0gUkVBRFk7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1NUQVJUXSA9IFJVTk5JTkc7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW0JMT0NLXSA9IEJMT0NLRUQ7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1VOQkxPQ0tdID0gUlVOTklORzsKc1N0YXRlVGFibGVbUlVOTklOR11bU0xFRVBdID0gU0xFRVBJTkc7CnNTdGF0ZVRhYmxlW1JVTk5JTkddW1dBS0VVUF0gPSBSVU5OSU5HOwpzU3RhdGVUYWJsZVtSVU5OSU5HXVtDQU5DRUxdID0gRE9ORTsKc1N0YXRlVGFibGVbUlVOTklOR11bRkFJTF0gPSBFUlJPUjsKCnNTdGF0ZVRhYmxlW0JMT0NLRURdID0ge307CnNTdGF0ZVRhYmxlW0JMT0NLRURdW1NUT1BdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bU1RBUlRdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bQkxPQ0tdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bVU5CTE9DS10gPSBCTE9DS0VEOwpzU3RhdGVUYWJsZVtCTE9DS0VEXVtTTEVFUF0gPSBCTE9DS0VEOwpzU3RhdGVUYWJsZVtCTE9DS0VEXVtXQUtFVVBdID0gQkxPQ0tFRDsKc1N0YXRlVGFibGVbQkxPQ0tFRF1bQ0FOQ0VMXSA9IERPTkU7CnNTdGF0ZVRhYmxlW0JMT0NLRURdW0ZBSUxdID0gRVJST1I7CgpzU3RhdGVUYWJsZVtTTEVFUElOR10gPSB7fTsKc1N0YXRlVGFibGVbU0xFRVBJTkddW1NUT1BdID0gU0xFRVBJTkc7CnNTdGF0ZVRhYmxlW1NMRUVQSU5HXVtTVEFSVF0gPSBTTEVFUElORzsKc1N0YXRlVGFibGVbU0xFRVBJTkddW0JMT0NLXSA9IFNMRUVQSU5HOwpzU3RhdGVUYWJsZVtTTEVFUElOR11bVU5CTE9DS10gPSBTTEVFUElORzsKc1N0YXRlVGFibGVbU0xFRVBJTkddW1NMRUVQXSA9IFNMRUVQSU5HOwpzU3RhdGVUYWJsZVtTTEVFUElOR11bV0FLRVVQXSA9IFNMRUVQSU5HOwpzU3RhdGVUYWJsZVtTTEVFUElOR11bQ0FOQ0VMXSA9IERPTkU7CnNTdGF0ZVRhYmxlW1NMRUVQSU5HXVtGQUlMXSA9IEVSUk9SOwoKc1N0YXRlVGFibGVbRE9ORV0gPSB7fTsKc1N0YXRlVGFibGVbRE9ORV1bU1RPUF0gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtTVEFSVF0gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtCTE9DS10gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtVTkJMT0NLXSA9IERPTkU7CnNTdGF0ZVRhYmxlW0RPTkVdW1NMRUVQXSA9IERPTkU7CnNTdGF0ZVRhYmxlW0RPTkVdW1dBS0VVUF0gPSBET05FOwpzU3RhdGVUYWJsZVtET05FXVtDQU5DRUxdID0gRE9ORTsKc1N0YXRlVGFibGVbRE9ORV1bRkFJTF0gPSBFUlJPUjsKCnNTdGF0ZVRhYmxlW0VSUk9SXSA9IHt9OwpzU3RhdGVUYWJsZVtFUlJPUl1bU1RPUF0gPSBFUlJPUjsKc1N0YXRlVGFibGVbRVJST1JdW1NUQVJUXSA9IEVSUk9SOwpzU3RhdGVUYWJsZVtFUlJPUl1bQkxPQ0tdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtVTkJMT0NLXSA9IEVSUk9SOwpzU3RhdGVUYWJsZVtFUlJPUl1bU0xFRVBdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtXQUtFVVBdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtDQU5DRUxdID0gRVJST1I7CnNTdGF0ZVRhYmxlW0VSUk9SXVtGQUlMXSA9IEVSUk9SOwoKLyoqCiAqIENyZWF0ZXMgYSBuZXcgdGFzay4KICoKICogQHBhcmFtIG9wdGlvbnMgb3B0aW9ucyBmb3IgdGhpcyB0YXNrCiAqICAgcnVuOiB0aGUgcnVuIGZ1bmN0aW9uIGZvciB0aGUgdGFzayAocmVxdWlyZWQpCiAqICAgbmFtZTogdGhlIHJ1biBmdW5jdGlvbiBmb3IgdGhlIHRhc2sgKG9wdGlvbmFsKQogKiAgIHBhcmVudDogcGFyZW50IG9mIHRoaXMgdGFzayAob3B0aW9uYWwpCiAqCiAqIEByZXR1cm4gdGhlIGVtcHR5IHRhc2suCiAqLwp2YXIgVGFzayA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAvLyB0YXNrIGlkCiAgdGhpcy5pZCA9IC0xOwoKICAvLyB0YXNrIG5hbWUKICB0aGlzLm5hbWUgPSBvcHRpb25zLm5hbWUgfHwgc05vVGFza05hbWU7CgogIC8vIHRhc2sgaGFzIG5vIHBhcmVudAogIHRoaXMucGFyZW50ID0gb3B0aW9ucy5wYXJlbnQgfHwgbnVsbDsKCiAgLy8gc2F2ZSBydW4gZnVuY3Rpb24KICB0aGlzLnJ1biA9IG9wdGlvbnMucnVuOwoKICAvLyBjcmVhdGUgYSBxdWV1ZSBvZiBzdWJ0YXNrcyB0byBydW4KICB0aGlzLnN1YnRhc2tzID0gW107CgogIC8vIGVycm9yIGZsYWcKICB0aGlzLmVycm9yID0gZmFsc2U7CgogIC8vIHN0YXRlIG9mIHRoZSB0YXNrCiAgdGhpcy5zdGF0ZSA9IFJFQURZOwoKICAvLyBudW1iZXIgb2YgdGltZXMgdGhlIHRhc2sgaGFzIGJlZW4gYmxvY2tlZCAoYWxzbyB0aGUgbnVtYmVyCiAgLy8gb2YgcGVybWl0cyBuZWVkZWQgdG8gYmUgcmVsZWFzZWQgdG8gY29udGludWUgcnVubmluZykKICB0aGlzLmJsb2NrcyA9IDA7CgogIC8vIHRpbWVvdXQgaWQgd2hlbiBzbGVlcGluZwogIHRoaXMudGltZW91dElkID0gbnVsbDsKCiAgLy8gbm8gc3dhcCB0aW1lIHlldAogIHRoaXMuc3dhcFRpbWUgPSBudWxsOwoKICAvLyBubyB1c2VyIGRhdGEKICB0aGlzLnVzZXJEYXRhID0gbnVsbDsKCiAgLy8gaW5pdGlhbGl6ZSB0YXNrCiAgLy8gRklYTUU6IGRlYWwgd2l0aCBvdmVyZmxvdwogIHRoaXMuaWQgPSBzTmV4dFRhc2tJZCsrOwogIHNUYXNrc1t0aGlzLmlkXSA9IHRoaXM7CiAgaWYoc1ZMID49IDEpIHsKICAgIGZvcmdlLmxvZy52ZXJib3NlKGNhdCwgJ1slc11bJXNdIGluaXQnLCB0aGlzLmlkLCB0aGlzLm5hbWUsIHRoaXMpOwogIH0KfTsKCi8qKgogKiBMb2dzIGRlYnVnIGluZm9ybWF0aW9uIG9uIHRoaXMgdGFzayBhbmQgdGhlIHN5c3RlbSBzdGF0ZS4KICovClRhc2sucHJvdG90eXBlLmRlYnVnID0gZnVuY3Rpb24obXNnKSB7CiAgbXNnID0gbXNnIHx8ICcnOwogIGZvcmdlLmxvZy5kZWJ1ZyhjYXQsIG1zZywKICAgICdbJXNdWyVzXSB0YXNrOicsIHRoaXMuaWQsIHRoaXMubmFtZSwgdGhpcywKICAgICdzdWJ0YXNrczonLCB0aGlzLnN1YnRhc2tzLmxlbmd0aCwKICAgICdxdWV1ZTonLCBzVGFza1F1ZXVlcyk7Cn07CgovKioKICogQWRkcyBhIHN1YnRhc2sgdG8gcnVuIGFmdGVyIHRhc2suZG9OZXh0KCkgb3IgdGFzay5mYWlsKCkgaXMgY2FsbGVkLgogKgogKiBAcGFyYW0gbmFtZSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIHRhc2sgKG9wdGlvbmFsKS4KICogQHBhcmFtIHN1YnJ1biBhIGZ1bmN0aW9uIHRvIHJ1biB0aGF0IHRha2VzIHRoZSBjdXJyZW50IHRhc2sgYXMKICogICAgICAgICAgaXRzIGZpcnN0IHBhcmFtZXRlci4KICoKICogQHJldHVybiB0aGUgY3VycmVudCB0YXNrICh1c2VmdWwgZm9yIGNoYWluaW5nIG5leHQoKSBjYWxscykuCiAqLwpUYXNrLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24obmFtZSwgc3VicnVuKSB7CiAgLy8ganVnZ2xlIHBhcmFtZXRlcnMgaWYgaXQgbG9va3MgbGlrZSBubyBuYW1lIGlzIGdpdmVuCiAgaWYodHlwZW9mKG5hbWUpID09PSAnZnVuY3Rpb24nKSB7CiAgICBzdWJydW4gPSBuYW1lOwoKICAgIC8vIGluaGVyaXQgcGFyZW50J3MgbmFtZQogICAgbmFtZSA9IHRoaXMubmFtZTsKICB9CiAgLy8gY3JlYXRlIHN1YnRhc2ssIHNldCBwYXJlbnQgdG8gdGhpcyB0YXNrLCBwcm9wYWdhdGUgY2FsbGJhY2tzCiAgdmFyIHN1YnRhc2sgPSBuZXcgVGFzayh7CiAgICBydW46IHN1YnJ1biwKICAgIG5hbWU6IG5hbWUsCiAgICBwYXJlbnQ6IHRoaXMKICB9KTsKICAvLyBzdGFydCBzdWJ0YXNrcyBydW5uaW5nCiAgc3VidGFzay5zdGF0ZSA9IFJVTk5JTkc7CiAgc3VidGFzay50eXBlID0gdGhpcy50eXBlOwogIHN1YnRhc2suc3VjY2Vzc0NhbGxiYWNrID0gdGhpcy5zdWNjZXNzQ2FsbGJhY2sgfHwgbnVsbDsKICBzdWJ0YXNrLmZhaWx1cmVDYWxsYmFjayA9IHRoaXMuZmFpbHVyZUNhbGxiYWNrIHx8IG51bGw7CgogIC8vIHF1ZXVlIGEgbmV3IHN1YnRhc2sKICB0aGlzLnN1YnRhc2tzLnB1c2goc3VidGFzayk7CgogIHJldHVybiB0aGlzOwp9OwoKLyoqCiAqIEFkZHMgc3VidGFza3MgdG8gcnVuIGluIHBhcmFsbGVsIGFmdGVyIHRhc2suZG9OZXh0KCkgb3IgdGFzay5mYWlsKCkKICogaXMgY2FsbGVkLgogKgogKiBAcGFyYW0gbmFtZSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGlzIHRhc2sgKG9wdGlvbmFsKS4KICogQHBhcmFtIHN1YnJ1biBmdW5jdGlvbnMgdG8gcnVuIHRoYXQgdGFrZSB0aGUgY3VycmVudCB0YXNrIGFzCiAqICAgICAgICAgIHRoZWlyIGZpcnN0IHBhcmFtZXRlci4KICoKICogQHJldHVybiB0aGUgY3VycmVudCB0YXNrICh1c2VmdWwgZm9yIGNoYWluaW5nIG5leHQoKSBjYWxscykuCiAqLwpUYXNrLnByb3RvdHlwZS5wYXJhbGxlbCA9IGZ1bmN0aW9uKG5hbWUsIHN1YnJ1bikgewogIC8vIGp1Z2dsZSBwYXJhbWV0ZXJzIGlmIGl0IGxvb2tzIGxpa2Ugbm8gbmFtZSBpcyBnaXZlbgogIGlmKGZvcmdlLnV0aWwuaXNBcnJheShuYW1lKSkgewogICAgc3VicnVuID0gbmFtZTsKCiAgICAvLyBpbmhlcml0IHBhcmVudCdzIG5hbWUKICAgIG5hbWUgPSB0aGlzLm5hbWU7CiAgfQogIC8vIFdyYXAgcGFyYWxsZWwgdGFza3MgaW4gYSByZWd1bGFyIHRhc2sgc28gdGhleSBhcmUgc3RhcnRlZCBhdCB0aGUKICAvLyBwcm9wZXIgdGltZS4KICByZXR1cm4gdGhpcy5uZXh0KG5hbWUsIGZ1bmN0aW9uKHRhc2spIHsKICAgIC8vIGJsb2NrIHdhaXRpbmcgZm9yIHN1YnRhc2tzCiAgICB2YXIgcHRhc2sgPSB0YXNrOwogICAgcHRhc2suYmxvY2soc3VicnVuLmxlbmd0aCk7CgogICAgLy8gd2UgcGFzcyB0aGUgaXRlcmF0b3IgZnJvbSB0aGUgbG9vcCBiZWxvdyBhcyBhIHBhcmFtZXRlcgogICAgLy8gdG8gYSBmdW5jdGlvbiBiZWNhdXNlIGl0IGlzIG90aGVyd2lzZSBpbmNsdWRlZCBpbiB0aGUKICAgIC8vIGNsb3N1cmUgYW5kIGNoYW5nZXMgYXMgdGhlIGxvb3AgY2hhbmdlcyAtLSBjYXVzaW5nIGkKICAgIC8vIHRvIGFsd2F5cyBiZSBzZXQgdG8gaXRzIGhpZ2hlc3QgdmFsdWUKICAgIHZhciBzdGFydFBhcmFsbGVsVGFzayA9IGZ1bmN0aW9uKHBuYW1lLCBwaSkgewogICAgICBmb3JnZS50YXNrLnN0YXJ0KHsKICAgICAgICB0eXBlOiBwbmFtZSwKICAgICAgICBydW46IGZ1bmN0aW9uKHRhc2spIHsKICAgICAgICAgICBzdWJydW5bcGldKHRhc2spOwogICAgICAgIH0sCiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24odGFzaykgewogICAgICAgICAgIHB0YXNrLnVuYmxvY2soKTsKICAgICAgICB9LAogICAgICAgIGZhaWx1cmU6IGZ1bmN0aW9uKHRhc2spIHsKICAgICAgICAgICBwdGFzay51bmJsb2NrKCk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH07CgogICAgZm9yKHZhciBpID0gMDsgaSA8IHN1YnJ1bi5sZW5ndGg7IGkrKykgewogICAgICAvLyBUeXBlIG11c3QgYmUgdW5pcXVlIHNvIHRhc2sgc3RhcnRzIGluIHBhcmFsbGVsOgogICAgICAvLyAgICBuYW1lICsgcHJpdmF0ZSBzdHJpbmcgKyB0YXNrIGlkICsgc3ViLXRhc2sgaW5kZXgKICAgICAgLy8gc3RhcnQgdGFza3MgaW4gcGFyYWxsZWwgYW5kIHVuYmxvY2sgd2hlbiB0aGUgZmluaXNoCiAgICAgIHZhciBwbmFtZSA9IG5hbWUgKyAnX19wYXJhbGxlbC0nICsgdGFzay5pZCArICctJyArIGk7CiAgICAgIHZhciBwaSA9IGk7CiAgICAgIHN0YXJ0UGFyYWxsZWxUYXNrKHBuYW1lLCBwaSk7CiAgICB9CiAgfSk7Cn07CgovKioKICogU3RvcHMgYSBydW5uaW5nIHRhc2suCiAqLwpUYXNrLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5zdGF0ZSA9IHNTdGF0ZVRhYmxlW3RoaXMuc3RhdGVdW1NUT1BdOwp9OwoKLyoqCiAqIFN0YXJ0cyBydW5uaW5nIGEgdGFzay4KICovClRhc2sucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5lcnJvciA9IGZhbHNlOwogIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtTVEFSVF07CgogIC8vIHRyeSB0byByZXN0YXJ0CiAgaWYodGhpcy5zdGF0ZSA9PT0gUlVOTklORykgewogICAgdGhpcy5zdGFydCA9IG5ldyBEYXRlKCk7CiAgICB0aGlzLnJ1bih0aGlzKTsKICAgIHJ1bk5leHQodGhpcywgMCk7CiAgfQp9OwoKLyoqCiAqIEJsb2NrcyBhIHRhc2sgdW50aWwgaXQgb25lIG9yIG1vcmUgcGVybWl0cyBoYXZlIGJlZW4gcmVsZWFzZWQuIFRoZQogKiB0YXNrIHdpbGwgbm90IHJlc3VtZSB1bnRpbCB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBwZXJtaXRzIGhhdmUKICogYmVlbiByZWxlYXNlZCB3aXRoIGNhbGwocykgdG8gdW5ibG9jaygpLgogKgogKiBAcGFyYW0gbiBudW1iZXIgb2YgcGVybWl0cyB0byB3YWl0IGZvcihkZWZhdWx0OiAxKS4KICovClRhc2sucHJvdG90eXBlLmJsb2NrID0gZnVuY3Rpb24obikgewogIG4gPSB0eXBlb2YobikgPT09ICd1bmRlZmluZWQnID8gMSA6IG47CiAgdGhpcy5ibG9ja3MgKz0gbjsKICBpZih0aGlzLmJsb2NrcyA+IDApIHsKICAgIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtCTE9DS107CiAgfQp9OwoKLyoqCiAqIFJlbGVhc2VzIGEgcGVybWl0IHRvIHVuYmxvY2sgYSB0YXNrLiBJZiBhIHRhc2sgd2FzIGJsb2NrZWQgYnkKICogcmVxdWVzdGluZyBOIHBlcm1pdHMgdmlhIGJsb2NrKCksIHRoZW4gaXQgd2lsbCBvbmx5IGNvbnRpbnVlCiAqIHJ1bm5pbmcgb25jZSBlbm91Z2ggcGVybWl0cyBoYXZlIGJlZW4gcmVsZWFzZWQgdmlhIHVuYmxvY2soKSBjYWxscy4KICoKICogSWYgbXVsdGlwbGUgcHJvY2Vzc2VzIG5lZWQgdG8gc3luY2hyb25pemUgd2l0aCBhIHNpbmdsZSB0YXNrIHRoZW4KICogdXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIChzZWUgZm9yZ2UudGFzay5jcmVhdGVDb25kaXRpb24pLiBJdCBpcwogKiBhbiBlcnJvciB0byB1bmJsb2NrIGEgdGFzayBtb3JlIHRpbWVzIHRoYW4gaXQgaGFzIGJlZW4gYmxvY2tlZC4KICoKICogQHBhcmFtIG4gbnVtYmVyIG9mIHBlcm1pdHMgdG8gcmVsZWFzZSAoZGVmYXVsdDogMSkuCiAqCiAqIEByZXR1cm4gdGhlIGN1cnJlbnQgYmxvY2sgY291bnQgKHRhc2sgaXMgdW5ibG9ja2VkIHdoZW4gY291bnQgaXMgMCkKICovClRhc2sucHJvdG90eXBlLnVuYmxvY2sgPSBmdW5jdGlvbihuKSB7CiAgbiA9IHR5cGVvZihuKSA9PT0gJ3VuZGVmaW5lZCcgPyAxIDogbjsKICB0aGlzLmJsb2NrcyAtPSBuOwogIGlmKHRoaXMuYmxvY2tzID09PSAwICYmIHRoaXMuc3RhdGUgIT09IERPTkUpIHsKICAgIHRoaXMuc3RhdGUgPSBSVU5OSU5HOwogICAgcnVuTmV4dCh0aGlzLCAwKTsKICB9CiAgcmV0dXJuIHRoaXMuYmxvY2tzOwp9OwoKLyoqCiAqIFNsZWVwIGZvciBhIHBlcmlvZCBvZiB0aW1lIGJlZm9yZSByZXN1bWluZyB0YXNrcy4KICoKICogQHBhcmFtIG4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBzbGVlcCAoZGVmYXVsdDogMCkuCiAqLwpUYXNrLnByb3RvdHlwZS5zbGVlcCA9IGZ1bmN0aW9uKG4pIHsKICBuID0gdHlwZW9mKG4pID09PSAndW5kZWZpbmVkJyA/IDAgOiBuOwogIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtTTEVFUF07CiAgdmFyIHNlbGYgPSB0aGlzOwogIHRoaXMudGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgIHNlbGYudGltZW91dElkID0gbnVsbDsKICAgIHNlbGYuc3RhdGUgPSBSVU5OSU5HOwogICAgcnVuTmV4dChzZWxmLCAwKTsKICB9LCBuKTsKfTsKCi8qKgogKiBXYWl0cyBvbiBhIGNvbmRpdGlvbiB2YXJpYWJsZSB1bnRpbCBub3RpZmllZC4gVGhlIG5leHQgdGFzayB3aWxsCiAqIG5vdCBiZSBzY2hlZHVsZWQgdW50aWwgbm90aWZpY2F0aW9uLiBBIGNvbmRpdGlvbiB2YXJpYWJsZSBjYW4gYmUKICogY3JlYXRlZCB3aXRoIGZvcmdlLnRhc2suY3JlYXRlQ29uZGl0aW9uKCkuCiAqCiAqIE9uY2UgY29uZC5ub3RpZnkoKSBpcyBjYWxsZWQsIHRoZSB0YXNrIHdpbGwgY29udGludWUuCiAqCiAqIEBwYXJhbSBjb25kIHRoZSBjb25kaXRpb24gdmFyaWFibGUgdG8gd2FpdCBvbi4KICovClRhc2sucHJvdG90eXBlLndhaXQgPSBmdW5jdGlvbihjb25kKSB7CiAgY29uZC53YWl0KHRoaXMpOwp9OwoKLyoqCiAqIElmIHNsZWVwaW5nLCB3YWtldXAgYW5kIGNvbnRpbnVlIHJ1bm5pbmcgdGFza3MuCiAqLwpUYXNrLnByb3RvdHlwZS53YWtldXAgPSBmdW5jdGlvbigpIHsKICBpZih0aGlzLnN0YXRlID09PSBTTEVFUElORykgewogICAgY2FuY2VsVGltZW91dCh0aGlzLnRpbWVvdXRJZCk7CiAgICB0aGlzLnRpbWVvdXRJZCA9IG51bGw7CiAgICB0aGlzLnN0YXRlID0gUlVOTklORzsKICAgIHJ1bk5leHQodGhpcywgMCk7CiAgfQp9OwoKLyoqCiAqIENhbmNlbCBhbGwgcmVtYWluaW5nIHN1YnRhc2tzIG9mIHRoaXMgdGFzay4KICovClRhc2sucHJvdG90eXBlLmNhbmNlbCA9IGZ1bmN0aW9uKCkgewogIHRoaXMuc3RhdGUgPSBzU3RhdGVUYWJsZVt0aGlzLnN0YXRlXVtDQU5DRUxdOwogIC8vIHJlbW92ZSBwZXJtaXRzIG5lZWRlZAogIHRoaXMucGVybWl0c05lZWRlZCA9IDA7CiAgLy8gY2FuY2VsIHRpbWVvdXRzCiAgaWYodGhpcy50aW1lb3V0SWQgIT09IG51bGwpIHsKICAgIGNhbmNlbFRpbWVvdXQodGhpcy50aW1lb3V0SWQpOwogICAgdGhpcy50aW1lb3V0SWQgPSBudWxsOwogIH0KICAvLyByZW1vdmUgc3VidGFza3MKICB0aGlzLnN1YnRhc2tzID0gW107Cn07CgovKioKICogRmluaXNoZXMgdGhpcyB0YXNrIHdpdGggZmFpbHVyZSBhbmQgc2V0cyBlcnJvciBmbGFnLiBUaGUgZW50aXJlCiAqIHRhc2sgd2lsbCBiZSBhYm9ydGVkIHVubGVzcyB0aGUgbmV4dCB0YXNrIHRoYXQgc2hvdWxkIGV4ZWN1dGUKICogaXMgcGFzc2VkIGFzIGEgcGFyYW1ldGVyLiBUaGlzIGFsbG93cyBsZXZlbHMgb2Ygc3VidGFza3MgdG8gYmUKICogc2tpcHBlZC4gRm9yIGluc3RhbmNlLCB0byBhYm9ydCBvbmx5IHRoaXMgdGFza3MncyBzdWJ0YXNrcywgdGhlbgogKiBjYWxsIGZhaWwodGFzay5wYXJlbnQpLiBUbyBhYm9ydCB0aGlzIHRhc2sncyBzdWJ0YXNrcyBhbmQgaXRzCiAqIHBhcmVudCdzIHN1YnRhc2tzLCBjYWxsIGZhaWwodGFzay5wYXJlbnQucGFyZW50KS4gVG8gYWJvcnQKICogYWxsIHRhc2tzIGFuZCBzaW1wbHkgY2FsbCB0aGUgdGFzayBjYWxsYmFjaywgY2FsbCBmYWlsKCkgb3IKICogZmFpbChudWxsKS4KICoKICogVGhlIHRhc2sgY2FsbGJhY2sgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSkgd2lsbCBhbHdheXMsIGV2ZW50dWFsbHksIGJlCiAqIGNhbGxlZC4KICoKICogQHBhcmFtIG5leHQgdGhlIHRhc2sgdG8gY29udGludWUgYXQsIG9yIG51bGwgdG8gYWJvcnQgZW50aXJlbHkuCiAqLwpUYXNrLnByb3RvdHlwZS5mYWlsID0gZnVuY3Rpb24obmV4dCkgewogIC8vIHNldCBlcnJvciBmbGFnCiAgdGhpcy5lcnJvciA9IHRydWU7CgogIC8vIGZpbmlzaCB0YXNrCiAgZmluaXNoKHRoaXMsIHRydWUpOwoKICBpZihuZXh0KSB7CiAgICAvLyBwcm9wYWdhdGUgdGFzayBpbmZvCiAgICBuZXh0LmVycm9yID0gdGhpcy5lcnJvcjsKICAgIG5leHQuc3dhcFRpbWUgPSB0aGlzLnN3YXBUaW1lOwogICAgbmV4dC51c2VyRGF0YSA9IHRoaXMudXNlckRhdGE7CgogICAgLy8gZG8gbmV4dCB0YXNrIGFzIHNwZWNpZmllZAogICAgcnVuTmV4dChuZXh0LCAwKTsKICB9IGVsc2UgewogICAgaWYodGhpcy5wYXJlbnQgIT09IG51bGwpIHsKICAgICAgLy8gZmluaXNoIHJvb3QgdGFzayAoZW5zdXJlcyBpdCBpcyByZW1vdmVkIGZyb20gdGFzayBxdWV1ZSkKICAgICAgdmFyIHBhcmVudCA9IHRoaXMucGFyZW50OwogICAgICB3aGlsZShwYXJlbnQucGFyZW50ICE9PSBudWxsKSB7CiAgICAgICAgLy8gcHJvcGFnYXRlIHRhc2sgaW5mbwogICAgICAgIHBhcmVudC5lcnJvciA9IHRoaXMuZXJyb3I7CiAgICAgICAgcGFyZW50LnN3YXBUaW1lID0gdGhpcy5zd2FwVGltZTsKICAgICAgICBwYXJlbnQudXNlckRhdGEgPSB0aGlzLnVzZXJEYXRhOwogICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7CiAgICAgIH0KICAgICAgZmluaXNoKHBhcmVudCwgdHJ1ZSk7CiAgICB9CgogICAgLy8gY2FsbCBmYWlsdXJlIGNhbGxiYWNrIGlmIG9uZSBleGlzdHMKICAgIGlmKHRoaXMuZmFpbHVyZUNhbGxiYWNrKSB7CiAgICAgIHRoaXMuZmFpbHVyZUNhbGxiYWNrKHRoaXMpOwogICAgfQogIH0KfTsKCi8qKgogKiBBc3luY2hyb25vdXNseSBzdGFydCBhIHRhc2suCiAqCiAqIEBwYXJhbSB0YXNrIHRoZSB0YXNrIHRvIHN0YXJ0LgogKi8KdmFyIHN0YXJ0ID0gZnVuY3Rpb24odGFzaykgewogIHRhc2suZXJyb3IgPSBmYWxzZTsKICB0YXNrLnN0YXRlID0gc1N0YXRlVGFibGVbdGFzay5zdGF0ZV1bU1RBUlRdOwogIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICBpZih0YXNrLnN0YXRlID09PSBSVU5OSU5HKSB7CiAgICAgIHRhc2suc3dhcFRpbWUgPSArbmV3IERhdGUoKTsKICAgICAgdGFzay5ydW4odGFzayk7CiAgICAgIHJ1bk5leHQodGFzaywgMCk7CiAgICB9CiAgfSwgMCk7Cn07CgovKioKICogUnVuIHRoZSBuZXh0IHN1YnRhc2sgb3IgZmluaXNoIHRoaXMgdGFzay4KICoKICogQHBhcmFtIHRhc2sgdGhlIHRhc2sgdG8gcHJvY2Vzcy4KICogQHBhcmFtIHJlY3Vyc2UgdGhlIHJlY3Vyc2lvbiBjb3VudC4KICovCnZhciBydW5OZXh0ID0gZnVuY3Rpb24odGFzaywgcmVjdXJzZSkgewogIC8vIGdldCB0aW1lIHNpbmNlIGxhc3QgY29udGV4dCBzd2FwIChtcyksIGlmIGVub3VnaCB0aW1lIGhhcyBwYXNzZWQgc2V0CiAgLy8gc3dhcCB0byB0cnVlIHRvIGluZGljYXRlIHRoYXQgZG9OZXh0IHdhcyBwZXJmb3JtZWQgYXN5bmNocm9ub3VzbHkKICAvLyBhbHNvLCBpZiByZWN1cnNlIGlzIHRvbyBoaWdoIGRvIGFzeW5jaHJvbm91c2x5CiAgdmFyIHN3YXAgPQogICAgKHJlY3Vyc2UgPiBzTWF4UmVjdXJzaW9ucykgfHwKICAgICgrbmV3IERhdGUoKSAtIHRhc2suc3dhcFRpbWUpID4gc1RpbWVTbGljZTsKCiAgdmFyIGRvTmV4dCA9IGZ1bmN0aW9uKHJlY3Vyc2UpIHsKICAgIHJlY3Vyc2UrKzsKICAgIGlmKHRhc2suc3RhdGUgPT09IFJVTk5JTkcpIHsKICAgICAgaWYoc3dhcCkgewogICAgICAgIC8vIHVwZGF0ZSBzd2FwIHRpbWUKICAgICAgICB0YXNrLnN3YXBUaW1lID0gK25ldyBEYXRlKCk7CiAgICAgIH0KCiAgICAgIGlmKHRhc2suc3VidGFza3MubGVuZ3RoID4gMCkgewogICAgICAgIC8vIHJ1biBuZXh0IHN1YnRhc2sKICAgICAgICB2YXIgc3VidGFzayA9IHRhc2suc3VidGFza3Muc2hpZnQoKTsKICAgICAgICBzdWJ0YXNrLmVycm9yID0gdGFzay5lcnJvcjsKICAgICAgICBzdWJ0YXNrLnN3YXBUaW1lID0gdGFzay5zd2FwVGltZTsKICAgICAgICBzdWJ0YXNrLnVzZXJEYXRhID0gdGFzay51c2VyRGF0YTsKICAgICAgICBzdWJ0YXNrLnJ1bihzdWJ0YXNrKTsKICAgICAgICBpZighc3VidGFzay5lcnJvcikgewogICAgICAgICAgIHJ1bk5leHQoc3VidGFzaywgcmVjdXJzZSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZpbmlzaCh0YXNrKTsKCiAgICAgICAgaWYoIXRhc2suZXJyb3IpIHsKICAgICAgICAgIC8vIGNoYWluIGJhY2sgdXAgYW5kIHJ1biBwYXJlbnQKICAgICAgICAgIGlmKHRhc2sucGFyZW50ICE9PSBudWxsKSB7CiAgICAgICAgICAgIC8vIHByb3BhZ2F0ZSB0YXNrIGluZm8KICAgICAgICAgICAgdGFzay5wYXJlbnQuZXJyb3IgPSB0YXNrLmVycm9yOwogICAgICAgICAgICB0YXNrLnBhcmVudC5zd2FwVGltZSA9IHRhc2suc3dhcFRpbWU7CiAgICAgICAgICAgIHRhc2sucGFyZW50LnVzZXJEYXRhID0gdGFzay51c2VyRGF0YTsKCiAgICAgICAgICAgIC8vIG5vIHN1YnRhc2tzIGxlZnQsIGNhbGwgcnVuIG5leHQgc3VidGFzayBvbiBwYXJlbnQKICAgICAgICAgICAgcnVuTmV4dCh0YXNrLnBhcmVudCwgcmVjdXJzZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgaWYoc3dhcCkgewogICAgLy8gd2UncmUgc3dhcHBpbmcsIHNvIHJ1biBhc3luY2hyb25vdXNseQogICAgc2V0VGltZW91dChkb05leHQsIDApOwogIH0gZWxzZSB7CiAgICAvLyBub3Qgc3dhcHBpbmcsIHNvIHJ1biBzeW5jaHJvbm91c2x5CiAgICBkb05leHQocmVjdXJzZSk7CiAgfQp9OwoKLyoqCiAqIEZpbmlzaGVzIGEgdGFzayBhbmQgbG9va3MgZm9yIHRoZSBuZXh0IHRhc2sgaW4gdGhlIHF1ZXVlIHRvIHN0YXJ0LgogKgogKiBAcGFyYW0gdGFzayB0aGUgdGFzayB0byBmaW5pc2guCiAqIEBwYXJhbSBzdXBwcmVzc0NhbGxiYWNrcyB0cnVlIHRvIHN1cHByZXNzIGNhbGxiYWNrcy4KICovCnZhciBmaW5pc2ggPSBmdW5jdGlvbih0YXNrLCBzdXBwcmVzc0NhbGxiYWNrcykgewogIC8vIHN1YnRhc2sgaXMgbm93IGRvbmUKICB0YXNrLnN0YXRlID0gRE9ORTsKCiAgZGVsZXRlIHNUYXNrc1t0YXNrLmlkXTsKICBpZihzVkwgPj0gMSkgewogICAgZm9yZ2UubG9nLnZlcmJvc2UoY2F0LCAnWyVzXVslc10gZmluaXNoJywKICAgICAgdGFzay5pZCwgdGFzay5uYW1lLCB0YXNrKTsKICB9CgogIC8vIG9ubHkgZG8gcXVldWUgcHJvY2Vzc2luZyBmb3Igcm9vdCB0YXNrcwogIGlmKHRhc2sucGFyZW50ID09PSBudWxsKSB7CiAgICAvLyByZXBvcnQgZXJyb3IgaWYgcXVldWUgaXMgbWlzc2luZwogICAgaWYoISh0YXNrLnR5cGUgaW4gc1Rhc2tRdWV1ZXMpKSB7CiAgICAgIGZvcmdlLmxvZy5lcnJvcihjYXQsCiAgICAgICAgJ1slc11bJXNdIHRhc2sgcXVldWUgbWlzc2luZyBbJXNdJywKICAgICAgICB0YXNrLmlkLCB0YXNrLm5hbWUsIHRhc2sudHlwZSk7CiAgICB9IGVsc2UgaWYoc1Rhc2tRdWV1ZXNbdGFzay50eXBlXS5sZW5ndGggPT09IDApIHsKICAgICAgLy8gcmVwb3J0IGVycm9yIGlmIHF1ZXVlIGlzIGVtcHR5CiAgICAgIGZvcmdlLmxvZy5lcnJvcihjYXQsCiAgICAgICAgJ1slc11bJXNdIHRhc2sgcXVldWUgZW1wdHkgWyVzXScsCiAgICAgICAgdGFzay5pZCwgdGFzay5uYW1lLCB0YXNrLnR5cGUpOwogICAgfSBlbHNlIGlmKHNUYXNrUXVldWVzW3Rhc2sudHlwZV1bMF0gIT09IHRhc2spIHsKICAgICAgLy8gcmVwb3J0IGVycm9yIGlmIHRoaXMgdGFzayBpc24ndCB0aGUgZmlyc3QgaW4gdGhlIHF1ZXVlCiAgICAgIGZvcmdlLmxvZy5lcnJvcihjYXQsCiAgICAgICAgJ1slc11bJXNdIHRhc2sgbm90IGZpcnN0IGluIHF1ZXVlIFslc10nLAogICAgICAgIHRhc2suaWQsIHRhc2submFtZSwgdGFzay50eXBlKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIHJlbW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgcXVldWUKICAgICAgc1Rhc2tRdWV1ZXNbdGFzay50eXBlXS5zaGlmdCgpOwogICAgICAvLyBjbGVhbiB1cCBxdWV1ZSBpZiBpdCBpcyBlbXB0eQogICAgICBpZihzVGFza1F1ZXVlc1t0YXNrLnR5cGVdLmxlbmd0aCA9PT0gMCkgewogICAgICAgIGlmKHNWTCA+PSAxKSB7CiAgICAgICAgICBmb3JnZS5sb2cudmVyYm9zZShjYXQsICdbJXNdWyVzXSBkZWxldGUgcXVldWUgWyVzXScsCiAgICAgICAgICAgIHRhc2suaWQsIHRhc2submFtZSwgdGFzay50eXBlKTsKICAgICAgICB9CiAgICAgICAgLyogTm90ZTogT25seSBhIHRhc2sgY2FuIGRlbGV0ZSBhIHF1ZXVlIG9mIGl0cyBvd24gdHlwZS4gVGhpcwogICAgICAgICBpcyB1c2VkIGFzIGEgd2F5IHRvIHN5bmNocm9uaXplIHRhc2tzLiBJZiBhIHF1ZXVlIGZvciBhIGNlcnRhaW4KICAgICAgICAgdGFzayB0eXBlIGV4aXN0cywgdGhlbiBhIHRhc2sgb2YgdGhhdCB0eXBlIGlzIHJ1bm5pbmcuCiAgICAgICAgICovCiAgICAgICAgZGVsZXRlIHNUYXNrUXVldWVzW3Rhc2sudHlwZV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gZGVxdWV1ZSB0aGUgbmV4dCB0YXNrIGFuZCBzdGFydCBpdAogICAgICAgIGlmKHNWTCA+PSAxKSB7CiAgICAgICAgICBmb3JnZS5sb2cudmVyYm9zZShjYXQsCiAgICAgICAgICAgICdbJXNdWyVzXSBxdWV1ZSBzdGFydCBuZXh0IFslc10gcmVtYWluOiVzJywKICAgICAgICAgICAgdGFzay5pZCwgdGFzay5uYW1lLCB0YXNrLnR5cGUsCiAgICAgICAgICAgIHNUYXNrUXVldWVzW3Rhc2sudHlwZV0ubGVuZ3RoKTsKICAgICAgICB9CiAgICAgICAgc1Rhc2tRdWV1ZXNbdGFzay50eXBlXVswXS5zdGFydCgpOwogICAgICB9CiAgICB9CgogICAgaWYoIXN1cHByZXNzQ2FsbGJhY2tzKSB7CiAgICAgIC8vIGNhbGwgZmluYWwgY2FsbGJhY2sgaWYgb25lIGV4aXN0cwogICAgICBpZih0YXNrLmVycm9yICYmIHRhc2suZmFpbHVyZUNhbGxiYWNrKSB7CiAgICAgICAgdGFzay5mYWlsdXJlQ2FsbGJhY2sodGFzayk7CiAgICAgIH0gZWxzZSBpZighdGFzay5lcnJvciAmJiB0YXNrLnN1Y2Nlc3NDYWxsYmFjaykgewogICAgICAgIHRhc2suc3VjY2Vzc0NhbGxiYWNrKHRhc2spOwogICAgICB9CiAgICB9CiAgfQp9OwoKLyogVGFza3MgQVBJICovCmZvcmdlLnRhc2sgPSBmb3JnZS50YXNrIHx8IHt9OwoKLyoqCiAqIFN0YXJ0cyBhIG5ldyB0YXNrIHRoYXQgd2lsbCBydW4gdGhlIHBhc3NlZCBmdW5jdGlvbiBhc3luY2hyb25vdXNseS4KICoKICogSW4gb3JkZXIgdG8gZmluaXNoIHRoZSB0YXNrLCBlaXRoZXIgdGFzay5kb05leHQoKSBvciB0YXNrLmZhaWwoKQogKiAqbXVzdCogYmUgY2FsbGVkLgogKgogKiBUaGUgdGFzayBtdXN0IGhhdmUgYSB0eXBlIChhIHN0cmluZyBpZGVudGlmaWVyKSB0aGF0IGNhbiBiZSB1c2VkIHRvCiAqIHN5bmNocm9uaXplIGl0IHdpdGggb3RoZXIgdGFza3Mgb2YgdGhlIHNhbWUgdHlwZS4gVGhhdCB0eXBlIGNhbiBhbHNvCiAqIGJlIHVzZWQgdG8gY2FuY2VsIHRhc2tzIHRoYXQgaGF2ZW4ndCBzdGFydGVkIHlldC4KICoKICogVG8gc3RhcnQgYSB0YXNrLCB0aGUgZm9sbG93aW5nIG9iamVjdCBtdXN0IGJlIHByb3ZpZGVkIGFzIGEgcGFyYW1ldGVyCiAqIChlYWNoIGZ1bmN0aW9uIHRha2VzIGEgdGFzayBvYmplY3QgYXMgaXRzIGZpcnN0IHBhcmFtZXRlcik6CiAqCiAqIHsKICogICB0eXBlOiB0aGUgdHlwZSBvZiB0YXNrLgogKiAgIHJ1bjogdGhlIGZ1bmN0aW9uIHRvIHJ1biB0byBleGVjdXRlIHRoZSB0YXNrLgogKiAgIHN1Y2Nlc3M6IGEgY2FsbGJhY2sgdG8gY2FsbCB3aGVuIHRoZSB0YXNrIHN1Y2NlZWRzIChvcHRpb25hbCkuCiAqICAgZmFpbHVyZTogYSBjYWxsYmFjayB0byBjYWxsIHdoZW4gdGhlIHRhc2sgZmFpbHMgKG9wdGlvbmFsKS4KICogfQogKgogKiBAcGFyYW0gb3B0aW9ucyB0aGUgb2JqZWN0IGFzIGRlc2NyaWJlZCBhYm92ZS4KICovCmZvcmdlLnRhc2suc3RhcnQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgLy8gY3JlYXRlIGEgbmV3IHRhc2sKICB2YXIgdGFzayA9IG5ldyBUYXNrKHsKICAgIHJ1bjogb3B0aW9ucy5ydW4sCiAgICBuYW1lOiBvcHRpb25zLm5hbWUgfHwgc05vVGFza05hbWUKICB9KTsKICB0YXNrLnR5cGUgPSBvcHRpb25zLnR5cGU7CiAgdGFzay5zdWNjZXNzQ2FsbGJhY2sgPSBvcHRpb25zLnN1Y2Nlc3MgfHwgbnVsbDsKICB0YXNrLmZhaWx1cmVDYWxsYmFjayA9IG9wdGlvbnMuZmFpbHVyZSB8fCBudWxsOwoKICAvLyBhcHBlbmQgdGhlIHRhc2sgb250byB0aGUgYXBwcm9wcmlhdGUgcXVldWUKICBpZighKHRhc2sudHlwZSBpbiBzVGFza1F1ZXVlcykpIHsKICAgIGlmKHNWTCA+PSAxKSB7CiAgICAgIGZvcmdlLmxvZy52ZXJib3NlKGNhdCwgJ1slc11bJXNdIGNyZWF0ZSBxdWV1ZSBbJXNdJywKICAgICAgICB0YXNrLmlkLCB0YXNrLm5hbWUsIHRhc2sudHlwZSk7CiAgICB9CiAgICAvLyBjcmVhdGUgdGhlIHF1ZXVlIHdpdGggdGhlIG5ldyB0YXNrCiAgICBzVGFza1F1ZXVlc1t0YXNrLnR5cGVdID0gW3Rhc2tdOwogICAgc3RhcnQodGFzayk7CiAgfSBlbHNlIHsKICAgIC8vIHB1c2ggdGhlIHRhc2sgb250byB0aGUgcXVldWUsIGl0IHdpbGwgYmUgcnVuIGFmdGVyIGEgdGFzawogICAgLy8gd2l0aCB0aGUgc2FtZSB0eXBlIGNvbXBsZXRlcwogICAgc1Rhc2tRdWV1ZXNbb3B0aW9ucy50eXBlXS5wdXNoKHRhc2spOwogIH0KfTsKCi8qKgogKiBDYW5jZWxzIGFsbCB0YXNrcyBvZiB0aGUgZ2l2ZW4gdHlwZSB0aGF0IGhhdmVuJ3Qgc3RhcnRlZCB5ZXQuCiAqCiAqIEBwYXJhbSB0eXBlIHRoZSB0eXBlIG9mIHRhc2sgdG8gY2FuY2VsLgogKi8KZm9yZ2UudGFzay5jYW5jZWwgPSBmdW5jdGlvbih0eXBlKSB7CiAgLy8gZmluZCB0aGUgdGFzayBxdWV1ZQogIGlmKHR5cGUgaW4gc1Rhc2tRdWV1ZXMpIHsKICAgIC8vIGVtcHR5IGFsbCBidXQgdGhlIGN1cnJlbnQgdGFzayBmcm9tIHRoZSBxdWV1ZQogICAgc1Rhc2tRdWV1ZXNbdHlwZV0gPSBbc1Rhc2tRdWV1ZXNbdHlwZV1bMF1dOwogIH0KfTsKCi8qKgogKiBDcmVhdGVzIGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIHN5bmNocm9uaXplIHRhc2tzLiBUbyBtYWtlIGEgdGFzayB3YWl0CiAqIG9uIHRoZSBjb25kaXRpb24gdmFyaWFibGUsIGNhbGwgdGFzay53YWl0KGNvbmRpdGlvbikuIFRvIG5vdGlmeSBhbGwKICogdGFza3MgdGhhdCBhcmUgd2FpdGluZywgY2FsbCBjb25kaXRpb24ubm90aWZ5KCkuCiAqCiAqIEByZXR1cm4gdGhlIGNvbmRpdGlvbiB2YXJpYWJsZS4KICovCmZvcmdlLnRhc2suY3JlYXRlQ29uZGl0aW9uID0gZnVuY3Rpb24oKSB7CiAgdmFyIGNvbmQgPSB7CiAgICAvLyBhbGwgdGFza3MgdGhhdCBhcmUgYmxvY2tlZAogICAgdGFza3M6IHt9CiAgfTsKCiAgLyoqCiAgICogQ2F1c2VzIHRoZSBnaXZlbiB0YXNrIHRvIGJsb2NrIHVudGlsIG5vdGlmeSBpcyBjYWxsZWQuIElmIHRoZSB0YXNrCiAgICogaXMgYWxyZWFkeSB3YWl0aW5nIG9uIHRoaXMgY29uZGl0aW9uIHRoZW4gdGhpcyBpcyBhIG5vLW9wLgogICAqCiAgICogQHBhcmFtIHRhc2sgdGhlIHRhc2sgdG8gY2F1c2UgdG8gd2FpdC4KICAgKi8KICBjb25kLndhaXQgPSBmdW5jdGlvbih0YXNrKSB7CiAgICAvLyBvbmx5IGJsb2NrIG9uY2UKICAgIGlmKCEodGFzay5pZCBpbiBjb25kLnRhc2tzKSkgewogICAgICAgdGFzay5ibG9jaygpOwogICAgICAgY29uZC50YXNrc1t0YXNrLmlkXSA9IHRhc2s7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogTm90aWZpZXMgYWxsIHdhaXRpbmcgdGFza3MgdG8gd2FrZSB1cC4KICAgKi8KICBjb25kLm5vdGlmeSA9IGZ1bmN0aW9uKCkgewogICAgLy8gc2luY2UgdW5ibG9jaygpIHdpbGwgcnVuIHRoZSBuZXh0IHRhc2sgZnJvbSBoZXJlLCBtYWtlIHN1cmUgdG8KICAgIC8vIGNsZWFyIHRoZSBjb25kaXRpb24ncyBibG9ja2VkIHRhc2sgbGlzdCBiZWZvcmUgdW5ibG9ja2luZwogICAgdmFyIHRtcCA9IGNvbmQudGFza3M7CiAgICBjb25kLnRhc2tzID0ge307CiAgICBmb3IodmFyIGlkIGluIHRtcCkgewogICAgICB0bXBbaWRdLnVuYmxvY2soKTsKICAgIH0KICB9OwoKICByZXR1cm4gY29uZDsKfTsKCn0gLy8gZW5kIG1vZHVsZSBpbXBsZW1lbnRhdGlvbgoKLyogIyMjIyMjIyMjIyBCZWdpbiBtb2R1bGUgd3JhcHBlciAjIyMjIyMjIyMjICovCnZhciBuYW1lID0gJ3Rhc2snOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICBmb3JnZSA9IHt9OwogICAgfQogICAgcmV0dXJuIGluaXRNb2R1bGUoZm9yZ2UpOwogIH0KfQovLyBBTUQKdmFyIGRlcHM7CnZhciBkZWZpbmVGdW5jID0gZnVuY3Rpb24ocmVxdWlyZSwgbW9kdWxlKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmb3JnZSkgewogICAgdmFyIG1vZHMgPSBkZXBzLm1hcChmdW5jdGlvbihkZXApIHsKICAgICAgcmV0dXJuIHJlcXVpcmUoZGVwKTsKICAgIH0pLmNvbmNhdChpbml0TW9kdWxlKTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZVtuYW1lXTsKICB9Owp9Owp2YXIgdG1wRGVmaW5lID0gZGVmaW5lOwpkZWZpbmUgPSBmdW5jdGlvbihpZHMsIGZhY3RvcnkpIHsKICBkZXBzID0gKHR5cGVvZiBpZHMgPT09ICdzdHJpbmcnKSA/IGZhY3Rvcnkuc2xpY2UoMikgOiBpZHMuc2xpY2UoMik7CiAgaWYobm9kZUpTKSB7CiAgICBkZWxldGUgZGVmaW5lOwogICAgcmV0dXJuIHRtcERlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKICB9CiAgZGVmaW5lID0gdG1wRGVmaW5lOwogIHJldHVybiBkZWZpbmUuYXBwbHkobnVsbCwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKSk7Cn07CmRlZmluZSgnanMvdGFzaycsWydyZXF1aXJlJywgJ21vZHVsZScsICcuL2RlYnVnJywgJy4vbG9nJywgJy4vdXRpbCddLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCi8qKgogKiBOb2RlLmpzIG1vZHVsZSBmb3IgRm9yZ2UuCiAqCiAqIEBhdXRob3IgRGF2ZSBMb25nbGV5CiAqCiAqIENvcHlyaWdodCAyMDExLTIwMTQgRGlnaXRhbCBCYXphYXIsIEluYy4KICovCihmdW5jdGlvbigpIHsKdmFyIG5hbWUgPSAnZm9yZ2UnOwppZih0eXBlb2YgZGVmaW5lICE9PSAnZnVuY3Rpb24nKSB7CiAgLy8gTm9kZUpTIC0+IEFNRAogIGlmKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnICYmIG1vZHVsZS5leHBvcnRzKSB7CiAgICB2YXIgbm9kZUpTID0gdHJ1ZTsKICAgIGRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogICAgICBmYWN0b3J5KHJlcXVpcmUsIG1vZHVsZSk7CiAgICB9OwogIH0gZWxzZSB7CiAgICAvLyA8c2NyaXB0PgogICAgaWYodHlwZW9mIGZvcmdlID09PSAndW5kZWZpbmVkJykgewogICAgICAvLyBzZXQgdG8gdHJ1ZSB0byBkaXNhYmxlIG5hdGl2ZSBjb2RlIGlmIGV2ZW4gaXQncyBhdmFpbGFibGUKICAgICAgZm9yZ2UgPSB7ZGlzYWJsZU5hdGl2ZUNvZGU6IGZhbHNlfTsKICAgIH0KICAgIHJldHVybjsKICB9Cn0KLy8gQU1ECnZhciBkZXBzOwp2YXIgZGVmaW5lRnVuYyA9IGZ1bmN0aW9uKHJlcXVpcmUsIG1vZHVsZSkgewogIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm9yZ2UpIHsKICAgIHZhciBtb2RzID0gZGVwcy5tYXAoZnVuY3Rpb24oZGVwKSB7CiAgICAgIHJldHVybiByZXF1aXJlKGRlcCk7CiAgICB9KTsKICAgIC8vIGhhbmRsZSBjaXJjdWxhciBkZXBlbmRlbmNpZXMKICAgIGZvcmdlID0gZm9yZ2UgfHwge307CiAgICBmb3JnZS5kZWZpbmVkID0gZm9yZ2UuZGVmaW5lZCB8fCB7fTsKICAgIGlmKGZvcmdlLmRlZmluZWRbbmFtZV0pIHsKICAgICAgcmV0dXJuIGZvcmdlW25hbWVdOwogICAgfQogICAgZm9yZ2UuZGVmaW5lZFtuYW1lXSA9IHRydWU7CiAgICBmb3IodmFyIGkgPSAwOyBpIDwgbW9kcy5sZW5ndGg7ICsraSkgewogICAgICBtb2RzW2ldKGZvcmdlKTsKICAgIH0KICAgIHJldHVybiBmb3JnZTsKICB9OwogIC8vIHNldCB0byB0cnVlIHRvIGRpc2FibGUgbmF0aXZlIGNvZGUgaWYgZXZlbiBpdCdzIGF2YWlsYWJsZQogIG1vZHVsZS5leHBvcnRzLmRpc2FibGVOYXRpdmVDb2RlID0gdHJ1ZTsKICBtb2R1bGUuZXhwb3J0cyhtb2R1bGUuZXhwb3J0cyk7Cn07CnZhciB0bXBEZWZpbmUgPSBkZWZpbmU7CmRlZmluZSA9IGZ1bmN0aW9uKGlkcywgZmFjdG9yeSkgewogIGRlcHMgPSAodHlwZW9mIGlkcyA9PT0gJ3N0cmluZycpID8gZmFjdG9yeS5zbGljZSgyKSA6IGlkcy5zbGljZSgyKTsKICBpZihub2RlSlMpIHsKICAgIGRlbGV0ZSBkZWZpbmU7CiAgICByZXR1cm4gdG1wRGVmaW5lLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwogIH0KICBkZWZpbmUgPSB0bXBEZWZpbmU7CiAgcmV0dXJuIGRlZmluZS5hcHBseShudWxsLCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDApKTsKfTsKZGVmaW5lKCdqcy9mb3JnZScsWwogICdyZXF1aXJlJywKICAnbW9kdWxlJywKICAnLi9hZXMnLAogICcuL2Flc0NpcGhlclN1aXRlcycsCiAgJy4vYXNuMScsCiAgJy4vY2lwaGVyJywKICAnLi9jaXBoZXJNb2RlcycsCiAgJy4vZGVidWcnLAogICcuL2RlcycsCiAgJy4vaG1hYycsCiAgJy4va2VtJywKICAnLi9sb2cnLAogICcuL21kJywKICAnLi9tZ2YxJywKICAnLi9wYmtkZjInLAogICcuL3BlbScsCiAgJy4vcGtjczcnLAogICcuL3BrY3MxJywKICAnLi9wa2NzMTInLAogICcuL3BraScsCiAgJy4vcHJpbWUnLAogICcuL3BybmcnLAogICcuL3BzcycsCiAgJy4vcmFuZG9tJywKICAnLi9yYzInLAogICcuL3NzaCcsCiAgJy4vdGFzaycsCiAgJy4vdGxzJywKICAnLi91dGlsJwpdLCBmdW5jdGlvbigpIHsKICBkZWZpbmVGdW5jLmFwcGx5KG51bGwsIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCkpOwp9KTsKfSkoKTsKCgpyZXR1cm4gcmVxdWlyZSgnanMvZm9yZ2UnKTsKCn0pOwovKioNCiogQGZpbGVvdmVydmlldyBJbnRlbChyKSBBTVQgQ2VydGlmaWNhdGUgZnVuY3Rpb25zDQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4yLjBiDQoqLw0KDQovLyBDaGVjayB3aGljaCBrZXkgcGFpciBtYXRjaGVzIHRoZSBwdWJsaWMga2V5IGluIHRoZSBjZXJ0aWZpY2F0ZQ0KZnVuY3Rpb24gYW10Y2VydF9saW5rQ2VydFByaXZhdGVLZXkoY2VydHMsIGtleXMpIHsNCiAgICBmb3IgKHZhciBpIGluIGNlcnRzKSB7DQogICAgICAgIHZhciBjZXJ0ID0gY2VydHNbaV07DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICBpZiAoeHhDZXJ0UHJpdmF0ZUtleXMubGVuZ3RoID09IDApIHJldHVybjsNCiAgICAgICAgICAgIHZhciBwdWJsaWNLZXlQRU0gPSBmb3JnZS5wa2kucHVibGljS2V5VG9QZW0oZm9yZ2UucGtpLmNlcnRpZmljYXRlRnJvbUFzbjEoZm9yZ2UuYXNuMS5mcm9tRGVyKGNlcnQuWDUwOUNlcnRpZmljYXRlKSkucHVibGljS2V5KS5zdWJzdHJpbmcoMjggKyAzMikucmVwbGFjZSgvKFxyXG58XG58XHIpL2dtLCAiIik7DQogICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHsNCiAgICAgICAgICAgICAgICBpZiAocHVibGljS2V5UEVNID09PSAoa2V5c1tqXVsnREVSS2V5J10gKyAnLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tJykpIHsNCiAgICAgICAgICAgICAgICAgICAga2V5c1tqXS5YQ2VydCA9IGNlcnQ7IC8vIExpbmsgdGhlIGtleSBwYWlyIHRvIHRoZSBjZXJ0aWZpY2F0ZQ0KICAgICAgICAgICAgICAgICAgICBjZXJ0LlhQcml2YXRlS2V5ID0ga2V5c1tqXTsgLy8gTGluayB0aGUgY2VydGlmaWNhdGUgdG8gdGhlIGtleSBwYWlyDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChlKSB7IGNvbnNvbGUubG9nKGUpOyB9DQogICAgfQ0KfQ0KDQovLyBMb2FkIGEgUDEyIGZpbGUsIGRlY29kZXMgaXQgdXNpbmcgdGhlIHBhc3N3b3JkIGFuZCByZXR1cm5zIHRoZSBwcml2YXRlIGtleSBoYW5kbGUNCmZ1bmN0aW9uIGFtdGNlcnRfbG9hZFAxMkZpbGUoZmlsZSwgcGFzc3dvcmQsIGZ1bmMpIHsNCiAgICB0cnkgew0KICAgICAgICAvLyBFbmNvZGUgaW4gQmFzZTY0IHNvIEZvcmdlIEFQSSBjYW4gcGFyc2UgaXQuDQogICAgICAgIHZhciBwMTJEZXIgPSB3aW5kb3cuZm9yZ2UudXRpbC5kZWNvZGU2NChidG9hKGZpbGUpKTsNCiAgICAgICAgdmFyIHAxMkFzbjEgPSB3aW5kb3cuZm9yZ2UuYXNuMS5mcm9tRGVyKHAxMkRlcik7DQogICAgICAgIHZhciBwMTIgPSB3aW5kb3cuZm9yZ2UucGtjczEyLnBrY3MxMkZyb21Bc24xKHAxMkFzbjEsIHBhc3N3b3JkKTsNCg0KICAgICAgICAvLyBQcml2YXRlIGtleSBpcyBzdG9yZWQgaW4gYSBzaHJvdWRlZCBrZXkgYmFnDQogICAgICAgIHZhciBiYWdzID0gcDEyLmdldEJhZ3MoeyBiYWdUeXBlOiB3aW5kb3cuZm9yZ2UucGtpLm9pZHMucGtjczhTaHJvdWRlZEtleUJhZyB9KTsNCiAgICAgICAgY29uc29sZS5hc3NlcnQoYmFnc1t3aW5kb3cuZm9yZ2UucGtpLm9pZHMucGtjczhTaHJvdWRlZEtleUJhZ10gJiYgYmFnc1t3aW5kb3cuZm9yZ2UucGtpLm9pZHMucGtjczhTaHJvdWRlZEtleUJhZ10ubGVuZ3RoID4gMCk7DQogICAgICAgIA0KICAgICAgICAvLyBJbXBvcnQgdGhlIEZvcmdlIHByaXZhdGUga2V5IHN0cnVjdHVyZSBpbnRvIFdlYiBDcnlwdG8NCiAgICAgICAgdmFyIHByaXZhdGVLZXkgPSBiYWdzW3dpbmRvdy5mb3JnZS5wa2kub2lkcy5wa2NzOFNocm91ZGVkS2V5QmFnXVswXS5rZXk7DQogICAgICAgIHZhciByc2FQcml2YXRlS2V5ID0gd2luZG93LmZvcmdlLnBraS5wcml2YXRlS2V5VG9Bc24xKHByaXZhdGVLZXkpOw0KICAgICAgICB2YXIgcHJpdmF0ZUtleUluZm8gPSB3aW5kb3cuZm9yZ2UucGtpLndyYXBSc2FQcml2YXRlS2V5KHJzYVByaXZhdGVLZXkpOw0KICAgICAgICB2YXIgcGtjczggPSB3aW5kb3cuZm9yZ2UuYXNuMS50b0Rlcihwcml2YXRlS2V5SW5mbykuZ2V0Qnl0ZXMoKTsNCiAgICAgICAgDQogICAgICAgIC8vIEdldCB0aGUgaXNzdWVyIGF0dHJpYnV0ZXMNCiAgICAgICAgdmFyIGNlcnRCYWdzID0gcDEyLmdldEJhZ3MoeyBiYWdUeXBlOiB3aW5kb3cuZm9yZ2UucGtpLm9pZHMuY2VydEJhZyB9KTsNCiAgICAgICAgdmFyIGlzc3VlckF0dHJpYnV0ZXMgPSBjZXJ0QmFnc1t3aW5kb3cuZm9yZ2UucGtpLm9pZHMuY2VydEJhZ11bMF0uY2VydC5zdWJqZWN0LmF0dHJpYnV0ZXM7DQoNCiAgICAgICAgdmFyIGJhZ3MxID0gcDEyLmdldEJhZ3MoeyBiYWdUeXBlOiBmb3JnZS5wa2kub2lkcy5jZXJ0QmFnIH0pOw0KICAgICAgICB2YXIgY2VydCA9IGJhZ3MxW2ZvcmdlLnBraS5vaWRzLmNlcnRCYWddWzBdLmNlcnQ7DQoNCiAgICAgICAgZnVuYyhwcml2YXRlS2V5LCBpc3N1ZXJBdHRyaWJ1dGVzLCBjZXJ0KTsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfSBjYXRjaCAoZXgpIHsgfQ0KICAgIHJldHVybiBmYWxzZTsNCn0NCg0KZnVuY3Rpb24gYW10Y2VydF9zaWduV2l0aENhS2V5KERFUktleSwgY2FQcml2YXRlS2V5LCBjZXJ0QXR0cmlidXRlcywgaXNzdWVyQXR0cmlidXRlcywgZXh0S2V5VXNhZ2UpIHsNCiAgICBpZiAoIWNhUHJpdmF0ZUtleSB8fCBjYVByaXZhdGVLZXkgPT0gbnVsbCkgew0KICAgICAgICB2YXIgY2VydEFuZEtleSA9IGFtdGNlcnRfY3JlYXRlQ2VydGlmaWNhdGUoaXNzdWVyQXR0cmlidXRlcyk7DQogICAgICAgIGNhUHJpdmF0ZUtleSA9IGNlcnRBbmRLZXkua2V5Ow0KICAgIH0NCiAgICByZXR1cm4gYW10Y2VydF9jcmVhdGVDZXJ0aWZpY2F0ZShjZXJ0QXR0cmlidXRlcywgY2FQcml2YXRlS2V5LCBERVJLZXksIGlzc3VlckF0dHJpYnV0ZXMsIGV4dEtleVVzYWdlKTsNCn0NCg0KLy8gLS0tIEV4dGVuZGVkIEtleSBVc2FnZSBPSUQncyAtLS0NCi8vIDEuMy42LjEuNS41LjcuMy4xICAgICAgICAgICAgPSBUTFMgU2VydmVyIGNlcnRpZmljYXRlDQovLyAxLjMuNi4xLjUuNS43LjMuMiAgICAgICAgICAgID0gVExTIENsaWVudCBjZXJ0aWZpY2F0ZQ0KLy8gMi4xNi44NDAuMS4xMTM3NDEuMS4yLjEgICAgICA9IEludGVsIEFNVCBSZW1vdGUgQ29uc29sZQ0KLy8gMi4xNi44NDAuMS4xMTM3NDEuMS4yLjIgICAgICA9IEludGVsIEFNVCBMb2NhbCBDb25zb2xlDQovLyAyLjE2Ljg0MC4xLjExMzc0MS4xLjIuMyAgICAgID0gSW50ZWwgQU1UIENsaWVudCBTZXR1cCBDZXJ0aWZpY2F0ZSAoWmVyby1Ub3VjaCkNCg0KLy8gR2VuZXJhdGUgYSBjZXJ0aWZpY2F0ZSB3aXRoIGEgc2V0IG9mIGF0dHJpYnV0ZXMgc2lnbmVkIGJ5IGEgcm9vdENlcnQuIElmIHRoZSByb290Q2VydCBpcyBvYm1pdHRlZCwgdGhlIGdlbmVyYXRlZCBjZXJ0aWZpY2F0ZSBpcyBzZWxmLXNpZ25lZC4NCmZ1bmN0aW9uIGFtdGNlcnRfY3JlYXRlQ2VydGlmaWNhdGUoY2VydEF0dHJpYnV0ZXMsIGNhUHJpdmF0ZUtleSwgREVSS2V5LCBpc3N1ZXJBdHRyaWJ1dGVzLCBleHRLZXlVc2FnZSkgew0KICAgIC8vIEdlbmVyYXRlIGEga2V5cGFpciBhbmQgY3JlYXRlIGFuIFguNTA5djMgY2VydGlmaWNhdGUNCiAgICB2YXIga2V5cywgY2VydCA9IGZvcmdlLnBraS5jcmVhdGVDZXJ0aWZpY2F0ZSgpOw0KICAgIGlmICghREVSS2V5KSB7DQogICAgICAgIGtleXMgPSBmb3JnZS5wa2kucnNhLmdlbmVyYXRlS2V5UGFpcigyMDQ4KTsNCiAgICAgICAgY2VydC5wdWJsaWNLZXkgPSBrZXlzLnB1YmxpY0tleTsNCiAgICB9IGVsc2Ugew0KICAgICAgICBjZXJ0LnB1YmxpY0tleSA9IGZvcmdlLnBraS5wdWJsaWNLZXlGcm9tUGVtKCctLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLScgKyBERVJLZXkgKyAnLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tJyk7DQogICAgfQ0KICAgIGNlcnQuc2VyaWFsTnVtYmVyID0gJycgKyBNYXRoLmZsb29yKChNYXRoLnJhbmRvbSgpICogMTAwMDAwKSArIDEpOw0KICAgIGNlcnQudmFsaWRpdHkubm90QmVmb3JlID0gbmV3IERhdGUoKTsNCiAgICBjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZS5zZXRGdWxsWWVhcihjZXJ0LnZhbGlkaXR5Lm5vdEJlZm9yZS5nZXRGdWxsWWVhcigpIC0gMSk7IC8vIENyZWF0ZSBhIGNlcnRpZmljYXRlIHRoYXQgaXMgdmFsaWQgb25lIHllYXIgYmVmb3JlLCB0byBtYWtlIHN1cmUgb3V0LW9mLXN5bmMgY2xvY2tzIGRvbid0IHJlamVjdCB0aGlzIGNlcnQuDQogICAgY2VydC52YWxpZGl0eS5ub3RBZnRlciA9IG5ldyBEYXRlKCk7DQogICAgY2VydC52YWxpZGl0eS5ub3RBZnRlci5zZXRGdWxsWWVhcihjZXJ0LnZhbGlkaXR5Lm5vdEFmdGVyLmdldEZ1bGxZZWFyKCkgKyAzMCk7DQogICAgdmFyIGF0dHJzID0gW107DQogICAgaWYgKGNlcnRBdHRyaWJ1dGVzWydDTiddKSBhdHRycy5wdXNoKHsgbmFtZTogJ2NvbW1vbk5hbWUnLCB2YWx1ZTogY2VydEF0dHJpYnV0ZXNbJ0NOJ10gfSk7DQogICAgaWYgKGNlcnRBdHRyaWJ1dGVzWydDJ10pIGF0dHJzLnB1c2goeyBuYW1lOiAnY291bnRyeU5hbWUnLCB2YWx1ZTogY2VydEF0dHJpYnV0ZXNbJ0MnXSB9KTsNCiAgICBpZiAoY2VydEF0dHJpYnV0ZXNbJ1NUJ10pIGF0dHJzLnB1c2goeyBzaG9ydE5hbWU6ICdTVCcsIHZhbHVlOiBjZXJ0QXR0cmlidXRlc1snU1QnXSB9KTsNCiAgICBpZiAoY2VydEF0dHJpYnV0ZXNbJ08nXSkgYXR0cnMucHVzaCh7IG5hbWU6ICdvcmdhbml6YXRpb25OYW1lJywgdmFsdWU6IGNlcnRBdHRyaWJ1dGVzWydPJ10gfSk7DQogICAgY2VydC5zZXRTdWJqZWN0KGF0dHJzKTsNCg0KICAgIGlmIChjYVByaXZhdGVLZXkpIHsNCiAgICAgICAgLy8gVXNlIHJvb3QgYXR0cmlidXRlcw0KICAgICAgICB2YXIgcm9vdGF0dHJzID0gW107DQogICAgICAgIGlmIChpc3N1ZXJBdHRyaWJ1dGVzWydDTiddKSByb290YXR0cnMucHVzaCh7IG5hbWU6ICdjb21tb25OYW1lJywgdmFsdWU6IGlzc3VlckF0dHJpYnV0ZXNbJ0NOJ10gfSk7DQogICAgICAgIGlmIChpc3N1ZXJBdHRyaWJ1dGVzWydDJ10pIHJvb3RhdHRycy5wdXNoKHsgbmFtZTogJ2NvdW50cnlOYW1lJywgdmFsdWU6IGlzc3VlckF0dHJpYnV0ZXNbJ0MnXSB9KTsNCiAgICAgICAgaWYgKGlzc3VlckF0dHJpYnV0ZXNbJ1NUJ10pIHJvb3RhdHRycy5wdXNoKHsgc2hvcnROYW1lOiAnU1QnLCB2YWx1ZTogaXNzdWVyQXR0cmlidXRlc1snU1QnXSB9KTsNCiAgICAgICAgaWYgKGlzc3VlckF0dHJpYnV0ZXNbJ08nXSkgcm9vdGF0dHJzLnB1c2goeyBuYW1lOiAnb3JnYW5pemF0aW9uTmFtZScsIHZhbHVlOiBpc3N1ZXJBdHRyaWJ1dGVzWydPJ10gfSk7DQogICAgICAgIGNlcnQuc2V0SXNzdWVyKHJvb3RhdHRycyk7DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gVXNlIG91ciBvd24gYXR0cmlidXRlcw0KICAgICAgICBjZXJ0LnNldElzc3VlcihhdHRycyk7DQogICAgfQ0KDQogICAgaWYgKGNhUHJpdmF0ZUtleSA9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgLy8gQ3JlYXRlIGEgcm9vdCBjZXJ0aWZpY2F0ZQ0KICAgICAgICBjZXJ0LnNldEV4dGVuc2lvbnMoW3sNCiAgICAgICAgICAgIG5hbWU6ICdiYXNpY0NvbnN0cmFpbnRzJywNCiAgICAgICAgICAgIGNBOiB0cnVlDQogICAgICAgIH0sIHsNCiAgICAgICAgICAgIG5hbWU6ICduc0NlcnRUeXBlJywNCiAgICAgICAgICAgIHNzbENBOiB0cnVlLA0KICAgICAgICAgICAgZW1haWxDQTogdHJ1ZSwNCiAgICAgICAgICAgIG9iakNBOiB0cnVlDQogICAgICAgIH0sIHsNCiAgICAgICAgICAgIG5hbWU6ICdzdWJqZWN0S2V5SWRlbnRpZmllcicNCiAgICAgICAgfV0pOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGlmIChleHRLZXlVc2FnZSA9PSBudWxsKSB7IGV4dEtleVVzYWdlID0geyBuYW1lOiAnZXh0S2V5VXNhZ2UnLCBzZXJ2ZXJBdXRoOiB0cnVlLCB9IH0gZWxzZSB7IGV4dEtleVVzYWdlLm5hbWUgPSAnZXh0S2V5VXNhZ2UnOyB9DQoNCiAgICAgICAgLyoNCiAgICAgICAgew0KICAgICAgICAgICAgbmFtZTogJ2V4dEtleVVzYWdlJywNCiAgICAgICAgICAgIHNlcnZlckF1dGg6IHRydWUsDQogICAgICAgICAgICBjbGllbnRBdXRoOiB0cnVlLA0KICAgICAgICAgICAgY29kZVNpZ25pbmc6IHRydWUsDQogICAgICAgICAgICBlbWFpbFByb3RlY3Rpb246IHRydWUsDQogICAgICAgICAgICB0aW1lU3RhbXBpbmc6IHRydWUsDQogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3NDEuMS4yLjEnOiB0cnVlDQogICAgICAgIH0NCiAgICAgICAgKi8NCg0KICAgICAgICAvLyBDcmVhdGUgYSBsZWFmIGNlcnRpZmljYXRlDQogICAgICAgIGNlcnQuc2V0RXh0ZW5zaW9ucyhbew0KICAgICAgICAgICAgbmFtZTogJ2Jhc2ljQ29uc3RyYWludHMnDQogICAgICAgIH0sIHsNCiAgICAgICAgICAgIG5hbWU6ICdrZXlVc2FnZScsDQogICAgICAgICAgICBrZXlDZXJ0U2lnbjogdHJ1ZSwNCiAgICAgICAgICAgIGRpZ2l0YWxTaWduYXR1cmU6IHRydWUsDQogICAgICAgICAgICBub25SZXB1ZGlhdGlvbjogdHJ1ZSwNCiAgICAgICAgICAgIGtleUVuY2lwaGVybWVudDogdHJ1ZSwNCiAgICAgICAgICAgIGRhdGFFbmNpcGhlcm1lbnQ6IHRydWUNCiAgICAgICAgfSwgZXh0S2V5VXNhZ2UsIHsNCiAgICAgICAgICAgIG5hbWU6ICduc0NlcnRUeXBlJywNCiAgICAgICAgICAgIGNsaWVudDogdHJ1ZSwNCiAgICAgICAgICAgIHNlcnZlcjogdHJ1ZSwNCiAgICAgICAgICAgIGVtYWlsOiB0cnVlLA0KICAgICAgICAgICAgb2Jqc2lnbjogdHJ1ZSwNCiAgICAgICAgfSwgew0KICAgICAgICAgICAgbmFtZTogJ3N1YmplY3RLZXlJZGVudGlmaWVyJw0KICAgICAgICB9XSk7DQogICAgfQ0KDQogICAgLy8gU2VsZi1zaWduIGNlcnRpZmljYXRlDQogICAgaWYgKGNhUHJpdmF0ZUtleSkgew0KICAgICAgICBjZXJ0LnNpZ24oY2FQcml2YXRlS2V5LCBmb3JnZS5tZC5zaGEyNTYuY3JlYXRlKCkpOw0KICAgIH0gZWxzZSB7DQogICAgICAgIGNlcnQuc2lnbihrZXlzLnByaXZhdGVLZXksIGZvcmdlLm1kLnNoYTI1Ni5jcmVhdGUoKSk7DQogICAgfQ0KDQogICAgaWYgKERFUktleSkgew0KICAgICAgICByZXR1cm4gY2VydDsNCiAgICB9IGVsc2Ugew0KICAgICAgICByZXR1cm4geyAnY2VydCc6IGNlcnQsICdrZXknOiBrZXlzLnByaXZhdGVLZXkgfTsNCiAgICB9DQp9DQoNCmZ1bmN0aW9uIF9zdHJpbmdUb0FycmF5QnVmZmVyKHN0cikgew0KICAgIHZhciBidWYgPSBuZXcgQXJyYXlCdWZmZXIoc3RyLmxlbmd0aCk7DQogICAgdmFyIGJ1ZlZpZXcgPSBuZXcgVWludDhBcnJheShidWYpOw0KICAgIGZvciAodmFyIGkgPSAwLCBzdHJMZW4gPSBzdHIubGVuZ3RoOyBpIDwgc3RyTGVuOyBpKyspIHsgYnVmVmlld1tpXSA9IHN0ci5jaGFyQ29kZUF0KGkpOyB9DQogICAgcmV0dXJuIGJ1ZjsNCn0NCg0KZnVuY3Rpb24gX2FycmF5QnVmZmVyVG9TdHJpbmcoYnVmZmVyKSB7DQogICAgdmFyIGJpbmFyeSA9ICcnOw0KICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7DQogICAgdmFyIGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7DQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgeyBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7IH0NCiAgICByZXR1cm4gYmluYXJ5Ow0KfQ0KLyoqDQoqIEBmaWxlb3ZlcnZpZXcgU2NyaXB0IENvbXBpbGVyIC8gRGVjb21waWxlciAvIFJ1bm5lcg0KKiBAYXV0aG9yIFlsaWFuIFNhaW50LUhpbGFpcmUNCiogQHZlcnNpb24gdjAuMS4wZQ0KKi8NCg0KLy8gQ29yZSBmdW5jdGlvbnMNCnNjcmlwdF9mdW5jdGlvblRhYmxlMSA9IFsnbm9wJywgJ2p1bXAnLCAnc2V0JywgJ3ByaW50JywgJ2RpYWxvZycsICdnZXRpdGVtJywgJ3N1YnN0cicsICdpbmRleG9mJywgJ3NwbGl0JywgJ2pvaW4nLCAnbGVuZ3RoJywgJ2pzb25wYXJzZScsICdqc29uc3RyJywgJ2FkZCcsICdzdWJzdHJhY3QnLCAncGFyc2VpbnQnLCAnd3NiYXRjaGVudW0nLCAnd3NwdXQnLCAnd3NjcmVhdGUnLCAnd3NkZWxldGUnLCAnd3NleGVjJywgJ3NjcmlwdHNwZWVkJywgJ3dzc3Vic2NyaWJlJywgJ3dzdW5zdWJzY3JpYmUnLCAncmVhZGNoYXInLCAnc2lnbndpdGhkdW1teWNhJ107DQoNCi8vIGZ1bmN0aW9ucyBvZiB0eXBlIEFSRzEgPSBmdW5jKEFSRzIsIEFSRzMsIEFSRzQsIEFSRzUsIEFSRzYpDQpzY3JpcHRfZnVuY3Rpb25UYWJsZTIgPSBbJ2VuY29kZXVyaScsICdkZWNvZGV1cmknLCAncGFzc3dvcmRjaGVjaycsICdhdG9iJywgJ2J0b2EnLCAnaGV4MnN0cicsICdzdHIyaGV4JywgJ3JhbmRvbScsICdtZDUnLCAnbWFrZXRvYXJyYXknLCAncmVhZHNob3J0JywgJ3JlYWRzaG9ydHgnLCAncmVhZGludCcsICdyZWFkc2ludCcsICdyZWFkaW50eCcsICdzaG9ydHRvc3RyJywgJ3Nob3J0dG9zdHJ4JywgJ2ludHRvc3RyJywgJ2ludHRvc3RyeCddOw0KDQovLyBmdW5jdGlvbnMgb2YgdHlwZSBBUkcxID0gZnVuYyhBUkcyLCBBUkczLCBBUkc0LCBBUkc1LCBBUkc2KQ0Kc2NyaXB0X2Z1bmN0aW9uVGFibGVYMiA9IFtlbmNvZGVVUkksIGRlY29kZVVSSSwgcGFzc3dvcmRjaGVjaywgd2luZG93LmF0b2IuYmluZCh3aW5kb3cpLCB3aW5kb3cuYnRvYS5iaW5kKHdpbmRvdyksIGhleDJyc3RyLCByc3RyMmhleCwgcmFuZG9tLCByc3RyX21kNSwgTWFrZVRvQXJyYXksIFJlYWRTaG9ydCwgUmVhZFNob3J0WCwgUmVhZEludCwgUmVhZFNJbnQsIFJlYWRJbnRYLCBTaG9ydFRvU3RyLCBTaG9ydFRvU3RyWCwgSW50VG9TdHIsIEludFRvU3RyWF07DQoNCi8vIE9wdGlvbmFsIGZ1bmN0aW9ucyBvZiB0eXBlIEFSRzEgPSBmdW5jKEFSRzIsIEFSRzMsIEFSRzQsIEFSRzUsIEFSRzYpDQpzY3JpcHRfZnVuY3Rpb25UYWJsZTMgPSBbJ3B1bGxzeXN0ZW1zdGF0dXMnLCAncHVsbGV2ZW50bG9nJywgJ3B1bGxhdWRpdGxvZycsICdwdWxsY2VydGlmaWNhdGVzJywgJ3B1bGx3YXRjaGRvZycsICdwdWxsc3lzdGVtZGVmZW5zZScsICdwdWxsaGFyZHdhcmUnLCAncHVsbHVzZXJpbmZvJywgJ3B1bGxyZW1vdGVhY2Nlc3MnLCAnaGlnaGxpZ2h0YmxvY2snLCAnZGlzY29ubmVjdCcsICdnZXRzaWRzdHJpbmcnLCAnZ2V0c2lkYnl0ZWFycmF5JywgJ3B1bGxldmVudHN1YnNjcmlwdGlvbnMnXTsNCg0KLy8gT3B0aW9uYWwgZnVuY3Rpb25zIG9mIHR5cGUgQVJHMSA9IGZ1bmMoQVJHMiwgQVJHMywgQVJHNCwgQVJHNSwgQVJHNikNCnNjcmlwdF9mdW5jdGlvblRhYmxlWDMgPSBbDQogICAgUHVsbFN5c3RlbVN0YXR1cw0KICAgICwNCiAgICANCiAgICBQdWxsRXZlbnRMb2cNCiAgICAgICAgLA0KICAgIA0KICAgIFB1bGxBdWRpdExvZw0KICAgICAgICAsDQogICAgDQogICAgUHVsbENlcnRpZmljYXRlcw0KICAgICAgICAsDQogICAgDQogICAgUHVsbFdhdGNoZG9nDQogICAgICAgICwNCiAgICANCiAgICBQdWxsU3lzdGVtRGVmZW5zZQ0KICAgICAgICAsDQogICAgDQogICAgUHVsbEhhcmR3YXJlDQogICAgICAgICwNCiAgICBQdWxsVXNlckluZm8NCiAgICAsDQogICAgDQogICAgUHVsbFJlbW90ZUFjY2Vzcw0KICAgICAgICAsDQogICAgDQogICAgc2NyaXB0X0hpZ2hsaWdodEJsb2NrDQogICAgICAgICwNCiAgICAgICAgLA0KICAgIGZ1bmN0aW9uIChydW5uZXIsIHgpIHsgcmV0dXJuIEdldFNpZFN0cmluZyh4KTsgfQ0KICAgICwNCiAgICBmdW5jdGlvbiAocnVubmVyLCB4KSB7IHJldHVybiBHZXRTaWRCeXRlQXJyYXkoeCk7IH0NCiAgICAsDQogICAgXTsNCg0KLy8gU2V0dXAgdGhlIHNjcmlwdCBzdGF0ZQ0KZnVuY3Rpb24gc2NyaXB0X3NldHVwKGJpbmFyeSwgc3RhcnR2YXJzKSB7DQogICAgdmFyIG9iaiA9IHsgc3RhcnR2YXJzOnN0YXJ0dmFycyB9Ow0KICAgIGlmIChiaW5hcnkubGVuZ3RoIDwgNikgeyBjb25zb2xlLmVycm9yKCdJbnZhbGlkIHNjcmlwdCBsZW5ndGgnKTsgcmV0dXJuIG51bGw7IH0gLy8gU2NyaXB0IG11c3QgaGF2ZSBhdCBsZWFzdCA2IGJ5dGUgaGVhZGVyDQogICAgaWYgKFJlYWRJbnQoYmluYXJ5LCAwKSAhPSAweDI0N0QyOTQ1KSB7IGNvbnNvbGUuZXJyb3IoJ0ludmFsaWQgYmluYXJ5IHNjcmlwdCcpOyByZXR1cm4gbnVsbDsgfSAvLyBDaGVjayB0aGUgc2NyaXB0IG1hZ2ljIGhlYWRlcg0KICAgIGlmIChSZWFkU2hvcnQoYmluYXJ5LCA0KSA+IDEpIHsgY29uc29sZS5lcnJvcignVW5zdXBwb3J0ZWQgc2NyaXB0IHZlcnNpb24nKTsgcmV0dXJuIG51bGw7IH0gLy8gQ2hlY2sgdGhlIHNjcmlwdCB2ZXJzaW9uDQogICAgb2JqLnNjcmlwdCA9IGJpbmFyeS5zdWJzdHJpbmcoNik7DQogICAgLy8gb2JqLm9uU3RlcDsNCiAgICAvLyBvYmoub25Db25zb2xlOw0KDQogICAgLy8gUmVzZXQgdGhlIHNjcmlwdCB0byB0aGUgc3RhcnQNCiAgICBvYmoucmVzZXQgPSBmdW5jdGlvbiAoc3RlcHNwZWVkKSB7DQogICAgICAgIG9iai5zdG9wKCk7DQogICAgICAgIG9iai5pcCA9IDA7DQogICAgICAgIG9iai52YXJpYWJsZXMgPSBzdGFydHZhcnM7DQogICAgICAgIG9iai5zdGF0ZSA9IDE7DQogICAgfQ0KDQogICAgLy8gU3RhcnQgdGhlIHNjcmlwdA0KICAgIG9iai5zdGFydCA9IGZ1bmN0aW9uIChzdGVwc3BlZWQpIHsNCiAgICAgICAgb2JqLnN0b3AoKTsNCiAgICAgICAgb2JqLnN0ZXBzcGVlZCA9IHN0ZXBzcGVlZDsNCiAgICAgICAgaWYgKHN0ZXBzcGVlZCA+IDApIHsgb2JqLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgeyBvYmouc3RlcCgpIH0sIHN0ZXBzcGVlZCk7IH0NCiAgICB9DQoNCiAgICAvLyBTdG9wIHRoZSBzY3JpcHQNCiAgICBvYmouc3RvcCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKG9iai50aW1lciAhPSBudWxsKSB7IGNsZWFySW50ZXJ2YWwob2JqLnRpbWVyKTsgfQ0KICAgICAgICBvYmoudGltZXIgPSBudWxsOw0KICAgICAgICBvYmouc3RlcHNwZWVkID0gMDsNCiAgICB9DQoNCiAgICAvLyBmdW5jdGlvbiB1c2VkIHRvIGxvYWQgYW5kIHN0b3JlIHZhcmlhYmxlIHZhbHVlcw0KICAgIG9iai5nZXRWYXIgPSBmdW5jdGlvbiAobmFtZSkgeyBpZiAobmFtZSA9PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7IHJldHVybiBvYmouZ2V0VmFyRXgobmFtZS5zcGxpdCgnLicpLCBvYmoudmFyaWFibGVzKTsgfQ0KICAgIG9iai5nZXRWYXJFeCA9IGZ1bmN0aW9uIChuYW1lLCB2YWwpIHsgdHJ5IHsgaWYgKG5hbWUgPT0gdW5kZWZpbmVkKSByZXR1cm4gdW5kZWZpbmVkOyBpZiAobmFtZS5sZW5ndGggPT0gMCkgcmV0dXJuIHZhbDsgcmV0dXJuIG9iai5nZXRWYXJFeChuYW1lLnNsaWNlKDEpLCB2YWxbbmFtZVswXV0pOyB9IGNhdGNoIChlKSB7IHJldHVybiBudWxsOyB9IH0NCiAgICBvYmouc2V0VmFyID0gZnVuY3Rpb24gKG5hbWUsIHZhbCkgeyBvYmouc2V0VmFyRXgobmFtZS5zcGxpdCgnLicpLCBvYmoudmFyaWFibGVzLCB2YWwpOyB9DQogICAgb2JqLnNldFZhckV4ID0gZnVuY3Rpb24gKG5hbWUsIHZhcnMsIHZhbCkgeyBpZiAobmFtZS5sZW5ndGggPT0gMSkgeyB2YXJzW25hbWVbMF1dID0gdmFsOyB9IGVsc2UgeyBvYmouc2V0VmFyRXgobmFtZS5zbGljZSgxKSwgdmFyc1tuYW1lWzBdXSwgdmFsKTsgfSB9DQoNCiAgICAvLyBSdW4gdGhlIHNjcmlwdCBvbmUgc3RlcCBmb3J3YXJkDQogICAgb2JqLnN0ZXAgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIGlmIChvYmouc3RhdGUgIT0gMSkgcmV0dXJuOw0KICAgICAgICBpZiAob2JqLmlwIDwgb2JqLnNjcmlwdC5sZW5ndGgpIHsNCiAgICAgICAgICAgIHZhciBjbWRpZCA9IFJlYWRTaG9ydChvYmouc2NyaXB0LCBvYmouaXApOw0KICAgICAgICAgICAgdmFyIGNtZGxlbiA9IFJlYWRTaG9ydChvYmouc2NyaXB0LCBvYmouaXAgKyAyKTsNCiAgICAgICAgICAgIHZhciBhcmdjb3VudCA9IFJlYWRTaG9ydChvYmouc2NyaXB0LCBvYmouaXAgKyA0KTsNCiAgICAgICAgICAgIHZhciBhcmdwdHIgPSBvYmouaXAgKyA2Ow0KICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTsNCg0KICAgICAgICAgICAgLy8gQ2xlYXIgYWxsIHRlbXAgdmFyaWFibGVzIChUaGlzIGlzIG9wdGlvbmFsKQ0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBvYmoudmFyaWFibGVzKSB7IGlmIChpLnN0YXJ0c1dpdGgoJ19fJykpIHsgZGVsZXRlIG9iai52YXJpYWJsZXNbaV07IH0gfQ0KDQogICAgICAgICAgICAvLyBMb29wIG9uIGVhY2ggYXJndW1lbnQsIG1vdmluZyBmb3J3YXJkIGJ5IHRoZSBhcmd1bWVudCBsZW5ndGggZWFjaCB0aW1lDQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ2NvdW50OyBpKyspIHsNCiAgICAgICAgICAgICAgICB2YXIgYXJnbGVuID0gUmVhZFNob3J0KG9iai5zY3JpcHQsIGFyZ3B0cik7DQogICAgICAgICAgICAgICAgdmFyIGFyZ3ZhbCA9IG9iai5zY3JpcHQuc3Vic3RyaW5nKGFyZ3B0ciArIDIsIGFyZ3B0ciArIDIgKyBhcmdsZW4pOw0KICAgICAgICAgICAgICAgIHZhciBhcmd0eXAgPSBhcmd2YWwuY2hhckNvZGVBdCgwKTsNCiAgICAgICAgICAgICAgICBhcmd2YWwgPSBhcmd2YWwuc3Vic3RyaW5nKDEpOw0KICAgICAgICAgICAgICAgIGlmIChhcmd0eXAgPCAyKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgdmFsdWUgYW5kIHJlcGxhY2UgYWxsIHt2YXJ9IHdpdGggdmFyaWFibGUgdmFsdWVzDQogICAgICAgICAgICAgICAgICAgIHdoaWxlIChhcmd2YWwuc3BsaXQoInsiKS5sZW5ndGggPiAxKSB7IHZhciB0ID0gYXJndmFsLnNwbGl0KCJ7IikucG9wKCkuc3BsaXQoIn0iKS5zaGlmdCgpOyBhcmd2YWwgPSBhcmd2YWwucmVwbGFjZSgneycgKyB0ICsgJ30nLCBvYmouZ2V0VmFyKHQpKTsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoYXJndHlwID09IDEpIHsgb2JqLnZhcmlhYmxlc1snX18nICsgaV0gPSBkZWNvZGVVUkkoYXJndmFsKTsgYXJndmFsID0gJ19fJyArIGk7IH0gLy8gSWYgYXJndHlwIGlzIDEsIHRoaXMgaXMgYSBsaXRlcmFsLiBTdG9yZSBpbiB0ZW1wIHZhcmlhYmxlLg0KICAgICAgICAgICAgICAgICAgICBhcmdzLnB1c2goYXJndmFsKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKGFyZ3R5cCA9PSAyIHx8IGFyZ3R5cCA9PSAzKSB7DQogICAgICAgICAgICAgICAgICAgIG9iai52YXJpYWJsZXNbJ19fJyArIGldID0gUmVhZFNJbnQoYXJndmFsLCAwKTsNCiAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKCdfXycgKyBpKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYXJncHRyICs9ICgyICsgYXJnbGVuKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gTW92ZSBpbnN0cnVjdGlvbiBwb2ludGVyIGZvcndhcmQgYnkgY29tbWFuZCBzaXplDQogICAgICAgICAgICBvYmouaXAgKz0gY21kbGVuOw0KDQogICAgICAgICAgICAvLyBHZXQgYWxsIHZhcmlhYmxlIHZhbHVlcw0KICAgICAgICAgICAgdmFyIGFyZ3N2YWwgPSBbXTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykgeyBhcmdzdmFsLnB1c2gob2JqLmdldFZhcihhcmdzW2ldKSk7IH0NCiAgICAgICAgICAgIHZhciBzdG9yZUluQXJnMDsNCg0KICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICBpZiAoY21kaWQgPCAxMDAwMCkgew0KICAgICAgICAgICAgICAgICAgICAvLyBMZXRzIHJ1biB0aGUgYWN0dWFsIGNvbW1hbmQNCiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjbWRpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiAvLyBub3ANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogLy8ganVtcChsYWJlbCkgb3IganVtcChsYWJlbCwgYSwgY29tcGFyZSwgYikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc3ZhbFsyXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnc3ZhbFsyXSA9PSAnPCcgJiYgYXJnc3ZhbFsxXSA8IGFyZ3N2YWxbM10pIHx8DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJnc3ZhbFsyXSA9PSAnPD0nICYmIGFyZ3N2YWxbMV0gPD0gYXJnc3ZhbFszXSkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmdzdmFsWzJdID09ICchPScgJiYgYXJnc3ZhbFsxXSAhPSBhcmdzdmFsWzNdKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ3N2YWxbMl0gPT0gJz0nICYmIGFyZ3N2YWxbMV0gPT0gYXJnc3ZhbFszXSkgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcmdzdmFsWzJdID09ICc+PScgJiYgYXJnc3ZhbFsxXSA+PSBhcmdzdmFsWzNdKSB8fA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFyZ3N2YWxbMl0gPT0gJz4nICYmIGFyZ3N2YWxbMV0gPiBhcmdzdmFsWzNdKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHsgb2JqLmlwID0gYXJnc3ZhbFswXTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5pcCA9IGFyZ3N2YWxbMF07IC8vIFNldCB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlciB0byB0aGUgbmV3IGxvY2F0aW9uIGluIHRoZSBzY3JpcHQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IC8vIHNldCh2YXJpYWJsZSwgdmFsdWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3NbMV0gPT0gdW5kZWZpbmVkKSBkZWxldGUgb2JqLnZhcmlhYmxlc1thcmdzWzBdXTsgZWxzZSBvYmouc2V0VmFyKGFyZ3NbMF0sIGFyZ3N2YWxbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOiAvLyBwcmludChtZXNzYWdlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub25Db25zb2xlKSB7IG9iai5vbkNvbnNvbGUob2JqLnRvU3RyaW5nKGFyZ3N2YWxbMF0pLCBvYmopOyB9IGVsc2UgeyBjb25zb2xlLmxvZyhvYmoudG9TdHJpbmcoYXJnc3ZhbFswXSkpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIFEob2JqLmNvbnNvbGVpZCkudmFsdWUgKz0gKCkgKyAnXG4nKTsgUShvYmouY29uc29sZSkuc2Nyb2xsVG9wID0gUShvYmouY29uc29sZSkuc2Nyb2xsSGVpZ2h0Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OiAvLyBkaWFsb2codGl0bGUsIGNvbnRlbnQsIGJ1dHRvbnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZGlhbG9nID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCBhcmdzdmFsWzBdLCBhcmdzdmFsWzJdLCBvYmoueHhTdGVwRGlhbG9nT2ssIGFyZ3N2YWxbMV0sIG9iaik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IC8vIGdldGl0ZW0oYSwgYiwgYykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGFyZ3N2YWxbMV0pIHsgaWYgKGFyZ3N2YWxbMV1baV1bYXJnc3ZhbFsyXV0gPT0gYXJnc3ZhbFszXSkgeyBzdG9yZUluQXJnMCA9IGk7IH0gfTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjogLy8gc3Vic3RyKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYywgaW5kZXgsIGxlbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IGFyZ3N2YWxbMV0uc3Vic3RyKGFyZ3N2YWxbMl0sIGFyZ3N2YWxbM10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiAvLyBpbmRleE9mKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYywgaW5kZXgsIGxlbikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IGFyZ3N2YWxbMV0uaW5kZXhPZihhcmdzdmFsWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODogLy8gc3BsaXQodmFyaWFibGVfZGVzdCwgdmFyaWFibGVfc3JjLCBzZXBhcmF0b3IpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBhcmdzdmFsWzFdLnNwbGl0KGFyZ3N2YWxbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OiAvLyBqb2luKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYywgc2VwYXJhdG9yKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gYXJnc3ZhbFsxXS5qb2luKGFyZ3N2YWxbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDogLy8gbGVuZ3RoKHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IGFyZ3N2YWxbMV0ubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTogLy8ganNvbnBhcnNlKHZhcmlhYmxlX2Rlc3QsIGpzb24pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBKU09OLnBhcnNlKGFyZ3N2YWxbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjogLy8ganNvbnN0cih2YXJpYWJsZV9kZXN0LCB2YXJpYWJsZV9zcmMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBKU09OLnN0cmluZ2lmeShhcmdzdmFsWzFdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6IC8vIGFkZCh2YXJpYWJsZV9kZXN0LCB2YXJpYWJsZV9zcmMsIHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gKGFyZ3N2YWxbMV0gKyBhcmdzdmFsWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6IC8vIHN1YnN0cmFjdCh2YXJpYWJsZV9kZXN0LCB2YXJpYWJsZV9zcmMsIHZhbHVlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gKGFyZ3N2YWxbMV0gLSBhcmdzdmFsWzJdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6IC8vIHBhcnNlSW50KHZhcmlhYmxlX2Rlc3QsIHZhcmlhYmxlX3NyYykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IHBhcnNlSW50KGFyZ3N2YWxbMV0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjogLy8gd3NiYXRjaGVudW0obmFtZSwgb2JqZWN0TGlzdCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouc3RhdGUgPSAyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hbXRzdGFjay5CYXRjaEVudW0oYXJnc3ZhbFswXSwgYXJnc3ZhbFsxXSwgb2JqLnh4V3NtYW5SZXR1cm4sIG9iaik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE3OiAvLyB3c3B1dChuYW1lLCBhcmdzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5zdGF0ZSA9IDI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmFtdHN0YWNrLlB1dChhcmdzdmFsWzBdLCBhcmdzdmFsWzFdLCBvYmoueHhXc21hblJldHVybiwgb2JqKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6IC8vIHdzY3JlYXRlKG5hbWUsIGFyZ3MpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suQ3JlYXRlKGFyZ3N2YWxbMF0sIGFyZ3N2YWxbMV0sIG9iai54eFdzbWFuUmV0dXJuLCBvYmopOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOTogLy8gd3NkZWxldGUobmFtZSwgYXJncykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouc3RhdGUgPSAyOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5hbXRzdGFjay5EZWxldGUoYXJnc3ZhbFswXSwgYXJnc3ZhbFsxXSwgb2JqLnh4V3NtYW5SZXR1cm4sIG9iaik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIwOiAvLyB3c2V4ZWMobmFtZSwgbWV0aG9kLCBhcmdzLCBzZWxlY3RvcnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suRXhlYyhhcmdzdmFsWzBdLCBhcmdzdmFsWzFdLCBhcmdzdmFsWzJdLCBvYmoueHhXc21hblJldHVybiwgb2JqLCAwLCBhcmdzdmFsWzNdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjE6IC8vIFNjcmlwdCBTcGVlZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5zdGVwc3BlZWQgPSBhcmdzdmFsWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoudGltZXIgIT0gbnVsbCkgeyBjbGVhckludGVydmFsKG9iai50aW1lcik7IG9iai50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsgb2JqLnN0ZXAoKSB9LCBvYmouc3RlcHNwZWVkKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjogLy8gd3NzdWJzY3JpYmUobmFtZSwgZGVsaXZlcnksIHVybCwgc2VsZWN0b3JzLCBvcGFxdWUsIHVzZXIsIHBhc3MpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suU3Vic2NyaWJlKGFyZ3N2YWxbMF0sIGFyZ3N2YWxbMV0sIGFyZ3N2YWxbMl0sIG9iai54eFdzbWFuUmV0dXJuLCBvYmosIDAsIGFyZ3N2YWxbM10sIGFyZ3N2YWxbNF0sIGFyZ3N2YWxbNV0sIGFyZ3N2YWxbNl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMzogLy8gd3N1bnN1YnNjcmliZShuYW1lLCBzZWxlY3RvcnMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYW10c3RhY2suVW5TdWJzY3JpYmUoYXJnc3ZhbFswXSwgb2JqLnh4V3NtYW5SZXR1cm4sIG9iaiwgMCwgYXJnc3ZhbFsxXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI0OiAvLyByZWFkY2hhcihzdHIsIHBvcykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhhcmdzdmFsWzFdLCBhcmdzdmFsWzJdLCBhcmdzdmFsWzFdLmNoYXJDb2RlQXQoYXJnc3ZhbFsyXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlSW5BcmcwID0gYXJnc3ZhbFsxXS5jaGFyQ29kZUF0KGFyZ3N2YWxbMl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyNTogLy8gc2lnbldpdGhEdW1teUNhDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gMjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBERVJLZXksIHh4Q2FQcml2YXRlS2V5LCBjZXJ0YXR0cmlidXRlcywgaXNzdWVyYXR0cmlidXRlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtdGNlcnRfc2lnbldpdGhDYUtleShhcmdzdmFsWzBdLCBudWxsLCBhcmdzdmFsWzFdLCB7ICdDTic6ICdVbnRydXN0ZWQgUm9vdCBDZXJ0aWZpY2F0ZScgfSwgb2JqLnh4U2lnbldpdGhEdW1teUNhUmV0dXJuKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLnN0YXRlID0gOTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJTY3JpcHQgRXJyb3IsIHVua25vd24gY29tbWFuZDogIiArIGNtZGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChjbWRpZCA8IDIwMDAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbnMgb2YgdHlwZSBBUkcxID0gZnVuYyhBUkcyLCBBUkczLCBBUkc0LCBBUkc1LCBBUkc2KQ0KICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbkFyZzAgPSBzY3JpcHRfZnVuY3Rpb25UYWJsZVgyW2NtZGlkIC0gMTAwMDBdKGFyZ3N2YWxbMV0sIGFyZ3N2YWxbMl0sIGFyZ3N2YWxbM10sIGFyZ3N2YWxbNF0sIGFyZ3N2YWxbNV0sIGFyZ3N2YWxbNl0pOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9uYWwgZnVuY3Rpb25zIG9mIHR5cGUgQVJHMSA9IGZ1bmMoQVJHMiwgQVJHMywgQVJHNCwgQVJHNSwgQVJHNikNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfZnVuY3Rpb25UYWJsZVgzICYmIHNjcmlwdF9mdW5jdGlvblRhYmxlWDNbY21kaWQgLSAyMDAwMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUluQXJnMCA9IHNjcmlwdF9mdW5jdGlvblRhYmxlWDNbY21kaWQgLSAyMDAwMF0ob2JqLCBhcmdzdmFsWzFdLCBhcmdzdmFsWzJdLCBhcmdzdmFsWzNdLCBhcmdzdmFsWzRdLCBhcmdzdmFsWzVdLCBhcmdzdmFsWzZdKTsgLy8gTm90ZSB0aGF0IG9wdGlvbmFsIGNhbGxzIHN0YXJ0IHdpdGggIm9iaiIgYXMgZmlyc3QgYXJndW1lbnQuDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoc3RvcmVJbkFyZzAgIT0gdW5kZWZpbmVkKSBvYmouc2V0VmFyKGFyZ3NbMF0sIHN0b3JlSW5BcmcwKTsNCiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGUgPT0gJ29iamVjdCcpIHsgZSA9IGUubWVzc2FnZTsgfQ0KICAgICAgICAgICAgICAgIG9iai5zZXRWYXIoJ19leGNlcHRpb24nLCBlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChvYmouc3RhdGUgPT0gMSAmJiBvYmouaXAgPj0gb2JqLnNjcmlwdC5sZW5ndGgpIHsgb2JqLnN0YXRlID0gMDsgb2JqLnN0b3AoKTsgfQ0KICAgICAgICBpZiAob2JqLm9uU3RlcCkgb2JqLm9uU3RlcChvYmopOw0KICAgICAgICByZXR1cm4gb2JqOw0KICAgIH0NCg0KICAgIG9iai54eFN0ZXBEaWFsb2dPayA9IGZ1bmN0aW9uIChidXR0b24pIHsNCiAgICAgICAgb2JqLnZhcmlhYmxlc1snRGlhbG9nU2VsZWN0J10gPSBidXR0b247DQogICAgICAgIG9iai5zdGF0ZSA9IDE7DQogICAgICAgIG9iai5kaWFsb2cgPSBmYWxzZTsNCiAgICAgICAgaWYgKG9iai5vblN0ZXApIG9iai5vblN0ZXAob2JqKTsNCiAgICB9DQoNCiAgICANCiAgICBvYmoueHhXc21hblJldHVybiA9IGZ1bmN0aW9uIChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICBvYmouc2V0VmFyKG5hbWUsIHJlc3BvbnNlcyk7DQogICAgICAgIG9iai5zZXRWYXIoJ3dzbWFuX3Jlc3VsdCcsIHN0YXR1cyk7DQogICAgICAgIG9iai5zZXRWYXIoJ3dzbWFuX3Jlc3VsdF9zdHInLCAoKGh0dHBFcnJvclRhYmxlW3N0YXR1c10pID8gKGh0dHBFcnJvclRhYmxlW3N0YXR1c10pIDogKCdFcnJvciAjJyArIHN0YXR1cykpKTsNCiAgICAgICAgb2JqLnN0YXRlID0gMTsNCiAgICAgICAgaWYgKG9iai5vblN0ZXApIG9iai5vblN0ZXAob2JqKTsNCiAgICB9DQoNCiAgICANCiAgICBvYmoueHhTaWduV2l0aER1bW15Q2FSZXR1cm4gPSBmdW5jdGlvbiAoY2VydCkgew0KICAgICAgICBvYmouc2V0VmFyKCdzaWduZWRfY2VydCcsIGJ0b2EoX2FycmF5QnVmZmVyVG9TdHJpbmcoY2VydCkpKTsNCiAgICAgICAgb2JqLnN0YXRlID0gMTsNCiAgICAgICAgaWYgKG9iai5vblN0ZXApIG9iai5vblN0ZXAob2JqKTsNCiAgICB9DQogICAgDQogICAgb2JqLnRvU3RyaW5nID0gZnVuY3Rpb24gKHgpIHsgaWYgKHR5cGVvZiB4ID09ICdvYmplY3QnKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeCk7IHJldHVybiB4OyB9DQoNCiAgICBvYmoucmVzZXQoKTsNCiAgICByZXR1cm4gb2JqOw0KfQ0KDQovLyBBcmd1bWVudCB0eXBlczogMCA9IFZhcmlhYmxlLCAxID0gU3RyaW5nLCAyID0gSW50ZWdlciwgMyA9IExhYmVsDQpmdW5jdGlvbiBzY3JpcHRfY29tcGlsZShzY3JpcHQsIG9ubXNnKSB7DQogICAgdmFyIHIgPSAnJywgc2NyaXB0bGluZXMgPSBzY3JpcHQuc3BsaXQoJ1xuJyksIGxhYmVscyA9IHt9LCBsYWJlbHN3YXAgPSBbXSwgc3dhcHMgPSBbXTsNCiAgICAvLyBHbyB0aHJ1IGVhY2ggc2NyaXB0IGxpbmUgYW5kIGVuY29kZSBpdA0KICAgIGZvciAodmFyIGkgaW4gc2NyaXB0bGluZXMpIHsNCiAgICAgICAgdmFyIHNjcmlwdGxpbmUgPSBzY3JpcHRsaW5lc1tpXTsNCiAgICAgICAgaWYgKHNjcmlwdGxpbmUuc3RhcnRzV2l0aCgnIyNTV0FQICcpKSB7IHZhciB4ID0gc2NyaXB0bGluZS5zcGxpdCgnICcpOyBpZiAoeC5sZW5ndGggPT0gMykgeyBzd2Fwc1t4WzFdXSA9IHhbMl07IH0gfSAvLyBBZGQgYSBzd2FwIGluc3RhbmNlDQogICAgICAgIGlmIChzY3JpcHRsaW5lWzBdID09ICcjJyB8fCBzY3JpcHRsaW5lLmxlbmd0aCA9PSAwKSBjb250aW51ZTsgLy8gU2tpcCBjb21tZW50cyAmIGJsYW5rIGxpbmVzDQogICAgICAgIGZvciAodmFyIHggaW4gc3dhcHMpIHsgc2NyaXB0bGluZSA9IHNjcmlwdGxpbmUuc3BsaXQoeCkuam9pbihzd2Fwc1t4XSk7IH0gLy8gQXBwbHkgYWxsIHN3YXBzDQogICAgICAgIHZhciBrZXl3b3JkcyA9IHNjcmlwdGxpbmUubWF0Y2goLyJbXiJdKiJ8W15ccyJdKy9nKTsNCiAgICAgICAgaWYgKGtleXdvcmRzLmxlbmd0aCA9PSAwKSBjb250aW51ZTsgLy8gU2tpcCBibGFuayBsaW5lcw0KICAgICAgICBpZiAoc2NyaXB0bGluZVswXSA9PSAnOicpIHsgbGFiZWxzW2tleXdvcmRzWzBdLnRvVXBwZXJDYXNlKCldID0gci5sZW5ndGg7IGNvbnRpbnVlOyB9IC8vIE1hcmsgYSBsYWJlbCBwb3NpdGlvbg0KICAgICAgICB2YXIgZnVuY0luZGV4ID0gc2NyaXB0X2Z1bmN0aW9uVGFibGUxLmluZGV4T2Yoa2V5d29yZHNbMF0udG9Mb3dlckNhc2UoKSk7DQogICAgICAgIGlmIChmdW5jSW5kZXggPT0gLTEpIHsgZnVuY0luZGV4ID0gc2NyaXB0X2Z1bmN0aW9uVGFibGUyLmluZGV4T2Yoa2V5d29yZHNbMF0udG9Mb3dlckNhc2UoKSk7IGlmIChmdW5jSW5kZXggPj0gMCkgZnVuY0luZGV4ICs9IDEwMDAwOyB9DQogICAgICAgIGlmIChmdW5jSW5kZXggPT0gLTEpIHsgZnVuY0luZGV4ID0gc2NyaXB0X2Z1bmN0aW9uVGFibGUzLmluZGV4T2Yoa2V5d29yZHNbMF0udG9Mb3dlckNhc2UoKSk7IGlmIChmdW5jSW5kZXggPj0gMCkgZnVuY0luZGV4ICs9IDIwMDAwOyB9IC8vIE9wdGlvbmFsIG1ldGhvZHMNCiAgICAgICAgaWYgKGZ1bmNJbmRleCA9PSAtMSkgeyBpZiAob25tc2cpIHsgb25tc2coIlVuYWJsZWQgdG8gY29tcGlsZSwgdW5rbm93biBjb21tYW5kOiAiICsga2V5d29yZHNbMF0pOyB9IHJldHVybiAnJzsgfQ0KICAgICAgICAvLyBFbmNvZGUgQ29tbWFuZElkLCBDbWRTaXplLCBBcmdDb3VudCwgQXJnMUxlbiwgQXJnMSwgQXJnMkxlbiwgQXJnMi4uLg0KICAgICAgICB2YXIgY21kID0gU2hvcnRUb1N0cihrZXl3b3Jkcy5sZW5ndGggLSAxKTsNCiAgICAgICAgZm9yICh2YXIgaiBpbiBrZXl3b3Jkcykgew0KICAgICAgICAgICAgaWYgKGogPT0gMCkgY29udGludWU7DQogICAgICAgICAgICBpZiAoa2V5d29yZHNbal1bMF0gPT0gJzonKSB7DQogICAgICAgICAgICAgICAgbGFiZWxzd2FwLnB1c2goW2tleXdvcmRzW2pdLCByLmxlbmd0aCArIGNtZC5sZW5ndGggKyA3XSk7IC8vIEFkZCBhIGxhYmVsIHN3YXANCiAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cig1KSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMykgKyBJbnRUb1N0cigweEZGRkZGRkZGKTsgLy8gUHV0IGFuIGVtcHR5IGxhYmVsDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBhcmdpbnQgPSBwYXJzZUludChrZXl3b3Jkc1tqXSk7DQogICAgICAgICAgICAgICAgaWYgKGFyZ2ludCA9PSBrZXl3b3Jkc1tqXSkgew0KICAgICAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cig1KSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMikgKyBJbnRUb1N0cihhcmdpbnQpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChrZXl3b3Jkc1tqXVswXSA9PSAnIicgJiYga2V5d29yZHNbal1ba2V5d29yZHNbal0ubGVuZ3RoIC0gMV0gPT0gJyInKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cihrZXl3b3Jkc1tqXS5sZW5ndGggLSAxKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMSkgKyBrZXl3b3Jkc1tqXS5zdWJzdHJpbmcoMSwga2V5d29yZHNbal0ubGVuZ3RoIC0gMSk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjbWQgKz0gU2hvcnRUb1N0cihrZXl3b3Jkc1tqXS5sZW5ndGggKyAxKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoMCkgKyBrZXl3b3Jkc1tqXTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBjbWQgPSBTaG9ydFRvU3RyKGZ1bmNJbmRleCkgKyBTaG9ydFRvU3RyKGNtZC5sZW5ndGggKyA0KSArIGNtZDsNCiAgICAgICAgciArPSBjbWQ7DQogICAgfQ0KICAgIC8vIFBlcmZvcm0gYWxsIHRoZSBuZWVkZWQgbGFiZWwgc3dhcHMNCiAgICBmb3IgKGkgaW4gbGFiZWxzd2FwKSB7DQogICAgICAgIHZhciBsYWJlbCA9IGxhYmVsc3dhcFtpXVswXS50b1VwcGVyQ2FzZSgpLCBwb3NpdGlvbiA9IGxhYmVsc3dhcFtpXVsxXSwgdGFyZ2V0ID0gbGFiZWxzW2xhYmVsXTsNCiAgICAgICAgaWYgKHRhcmdldCA9PSB1bmRlZmluZWQpIHsgaWYgKG9ubXNnKSB7IG9ubXNnKCJVbmFibGVkIHRvIGNvbXBpbGUsIHVua25vd24gbGFiZWw6ICIgKyBsYWJlbCk7IH0gcmV0dXJuICcnOyB9DQogICAgICAgIHIgPSByLnN1YnN0cigwLCBwb3NpdGlvbikgKyBJbnRUb1N0cih0YXJnZXQpICsgci5zdWJzdHIocG9zaXRpb24gKyA0KTsNCiAgICB9DQogICAgcmV0dXJuIEludFRvU3RyKDB4MjQ3RDI5NDUpICsgU2hvcnRUb1N0cigxKSArIHI7DQp9DQoNCi8vIERlY29tcGlsZSB0aGUgc2NyaXB0LCBpbnRlbmRlZCBmb3IgZGVidWdnaW5nIG9ubHkNCmZ1bmN0aW9uIHNjcmlwdF9kZWNvbXBpbGUoYmluYXJ5LCBvbmVjbWQpIHsNCiAgICB2YXIgciA9ICcnLCBwdHIgPSA2LCBsYWJlbGNvdW50ID0gMCwgbGFiZWxzID0ge307DQogICAgaWYgKG9uZWNtZCA+PSAwKSB7DQogICAgICAgIHB0ciA9IG9uZWNtZDsgLy8gSWYgd2UgYXJlIGRlY29tcGlsaW5nIGp1c3Qgb25lIGNvbW1hbmQsIHNldCB0aGUgcHRyIHRvIHRoYXQgY29tbWFuZC4NCiAgICB9IGVsc2Ugew0KICAgICAgICBpZiAoYmluYXJ5Lmxlbmd0aCA8IDYpIHsgcmV0dXJuICcjIEludmFsaWQgc2NyaXB0IGxlbmd0aCc7IH0NCiAgICAgICAgdmFyIG1hZ2ljID0gUmVhZEludChiaW5hcnksIDApOw0KICAgICAgICB2YXIgdmVyc2lvbiA9IFJlYWRTaG9ydChiaW5hcnksIDQpOw0KICAgICAgICBpZiAobWFnaWMgIT0gMHgyNDdEMjk0NSkgeyByZXR1cm4gJyMgSW52YWxpZCBiaW5hcnkgc2NyaXB0OiAnICsgbWFnaWM7IH0NCiAgICAgICAgaWYgKHZlcnNpb24gIT0gMSkgeyByZXR1cm4gJyMgSW52YWxpZCBzY3JpcHQgdmVyc2lvbic7IH0NCiAgICB9DQogICAgLy8gTG9vcCBvbiBlYWNoIGNvbW1hbmQsIG1vdmluZyBmb3J3YXJkIGJ5IHRoZSBjb21tYW5kIGxlbmd0aCBlYWNoIHRpbWUuDQogICAgd2hpbGUgKHB0ciA8IGJpbmFyeS5sZW5ndGgpIHsNCiAgICAgICAgdmFyIGNtZGlkID0gUmVhZFNob3J0KGJpbmFyeSwgcHRyKTsNCiAgICAgICAgdmFyIGNtZGxlbiA9IFJlYWRTaG9ydChiaW5hcnksIHB0ciArIDIpOw0KICAgICAgICB2YXIgYXJnY291bnQgPSBSZWFkU2hvcnQoYmluYXJ5LCBwdHIgKyA0KTsNCiAgICAgICAgdmFyIGFyZ3B0ciA9IHB0ciArIDY7DQogICAgICAgIHZhciBhcmdzdHIgPSAnJzsNCiAgICAgICAgaWYgKCEob25lY21kID49IDApKSByICs9ICI6bGFiZWwiICsgKHB0ciAtIDYpICsgIlxuIjsNCiAgICAgICAgLy8gTG9vcCBvbiBlYWNoIGFyZ3VtZW50LCBtb3ZpbmcgZm9yd2FyZCBieSB0aGUgYXJndW1lbnQgbGVuZ3RoIGVhY2ggdGltZQ0KICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ2NvdW50OyBpKyspIHsNCiAgICAgICAgICAgIHZhciBhcmdsZW4gPSBSZWFkU2hvcnQoYmluYXJ5LCBhcmdwdHIpOw0KICAgICAgICAgICAgdmFyIGFyZ3ZhbCA9IGJpbmFyeS5zdWJzdHJpbmcoYXJncHRyICsgMiwgYXJncHRyICsgMiArIGFyZ2xlbik7DQogICAgICAgICAgICB2YXIgYXJndHlwID0gYXJndmFsLmNoYXJDb2RlQXQoMCk7DQogICAgICAgICAgICBpZiAoYXJndHlwID09IDApIHsgYXJnc3RyICs9ICcgJyArIGFyZ3ZhbC5zdWJzdHJpbmcoMSk7IH0gLy8gVmFyaWFibGUNCiAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3R5cCA9PSAxKSB7IGFyZ3N0ciArPSAnIFwiJyArIGFyZ3ZhbC5zdWJzdHJpbmcoMSkgKyAnXCInOyB9IC8vIFN0cmluZw0KICAgICAgICAgICAgZWxzZSBpZiAoYXJndHlwID09IDIpIHsgYXJnc3RyICs9ICcgJyArIFJlYWRJbnQoYXJndmFsLCAxKTsgfSAvLyBJbnRlZ2VyDQogICAgICAgICAgICBlbHNlIGlmIChhcmd0eXAgPT0gMykgeyAvLyBMYWJlbA0KICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBSZWFkSW50KGFyZ3ZhbCwgMSk7DQogICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gbGFiZWxzW3RhcmdldF07DQogICAgICAgICAgICAgICAgaWYgKCFsYWJlbCkgeyBsYWJlbCA9ICI6bGFiZWwiICsgdGFyZ2V0OyBsYWJlbHNbbGFiZWxdID0gdGFyZ2V0OyB9DQogICAgICAgICAgICAgICAgYXJnc3RyICs9ICcgJyArIGxhYmVsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYXJncHRyICs9ICgyICsgYXJnbGVuKTsNCiAgICAgICAgfQ0KICAgICAgICAvLyBHbyBpbiB0aGUgc2NyaXB0IGZ1bmN0aW9uIHRhYmxlIHRvIGRlY29kZSB0aGUgZnVuY3Rpb24NCiAgICAgICAgaWYgKGNtZGlkIDwgMTAwMDApIHsNCiAgICAgICAgICAgIHIgKz0gc2NyaXB0X2Z1bmN0aW9uVGFibGUxW2NtZGlkXSArIGFyZ3N0ciArICJcbiI7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBpZiAoY21kaWQgPj0gMjAwMDApIHsNCiAgICAgICAgICAgICAgICByICs9IHNjcmlwdF9mdW5jdGlvblRhYmxlM1tjbWRpZCAtIDIwMDAwXSArIGFyZ3N0ciArICJcbiI7IC8vIE9wdGlvbmFsIG1ldGhvZHMNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgciArPSBzY3JpcHRfZnVuY3Rpb25UYWJsZTJbY21kaWQgLSAxMDAwMF0gKyBhcmdzdHIgKyAiXG4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHB0ciArPSBjbWRsZW47DQogICAgICAgIGlmIChvbmVjbWQgPj0gMCkgcmV0dXJuIHI7IC8vIElmIHdlIGFyZSBkZWNvbXBpbGluZyBqdXN0IG9uZSBjb21tYW5kLCBleGl0IG5vdw0KICAgIH0NCiAgICAvLyBSZW1vdmUgYWxsIHVudXNlZCBsYWJlbHMNCiAgICB2YXIgc2NyaXB0bGluZXMgPSByLnNwbGl0KCdcbicpOw0KICAgIHIgPSAnJzsNCiAgICBmb3IgKHZhciBpIGluIHNjcmlwdGxpbmVzKSB7DQogICAgICAgIHZhciBsaW5lID0gc2NyaXB0bGluZXNbaV07DQogICAgICAgIGlmIChsaW5lWzBdICE9ICc6JykgeyByICs9IGxpbmUgKyAnXG4nOyB9IGVsc2UgeyBpZiAobGFiZWxzW2xpbmVdKSB7IHIgKz0gbGluZSArICdcbic7IH0gfQ0KICAgIH0NCiAgICByZXR1cm4gcjsNCn0NCi8qKiANCiogQGRlc2NyaXB0aW9uIEludGVsKFIpIEFNVCBTZXR1cC5iaW4gUGFyc2VyDQoqIEBhdXRob3IgWWxpYW4gU2FpbnQtSGlsYWlyZQ0KKiBAdmVyc2lvbiB2MC4xLjANCiovDQoNCi8vIEludGVsKFIpIEFNVCBTZXR1cC5iaW4gR1VJRCdzDQp2YXIgQW10U2V0dXBCaW5TZXR1cEd1aWRzID0gWw0KICAgICJceGI1XHgxNlx4ZmJceDcxXHg4N1x4Y2JceGY5XHg0YVx4YjRceDQxXHhjYVx4N2JceDM4XHgzNVx4NzhceGY5IiwgLy8gVmVyc2lvbiAxDQogICAgIlx4OTZceGIyXHg4MVx4NThceGNmXHg2Ylx4NzJceDRjXHg4Ylx4OTFceGExXHg1ZVx4NTFceDJlXHg5OVx4YzQiLCAvLyBWZXJzaW9uIDINCiAgICAiXHhhN1x4ZjdceGY2XHhjNlx4ODlceGM0XHhmNlx4NDdceDkzXHhlZFx4ZTJceGU1XHgwMlx4MGRceGE1XHgxZCIsIC8vIFZlcnNpb24gMw0KICAgICJceGFhXHhhOVx4MzRceDUyXHhlMVx4MjlceGE5XHg0NFx4OGRceDRkXHgwOFx4MWNceDA3XHhiOVx4NjNceDUzIiAgLy8gVmVyc2lvbiA0DQpdOw0KDQovLyBOb3RlcyBhYm91dCB2ZXJzaW9uIDIgb2Ygc2V0dXAuYmluOg0KLy8gICAtIERlZmF1bHQgImFkbWluIiBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbmV3IE1FQnggcGFzc3dvcmQNCi8vICAgLSBNRV9WQVJJQUJMRV9JREVOVElGSUVSX01BTkFHRUFCSUxJVFlfRkVBVFVSRV9TRUxFQ1RJT04gbWF5IG5vdCBhcHBlYXIgYWZ0ZXIgYW55IENNIHNldHRpbmdzDQovLyAgIC0gQ01fVkFSSUFCTEVfSURFTlRJRklFUl9VU0VSX0RFRklORURfQ0VSVF9BREQgbXVzdCBiZSBwcmVjZWRlZCBieSBzZXR0aW5nIENNX1ZBUklBQkxFX0lERU5USUZJRVJfVVNFUl9ERUZJTkVEX0NFUlRTX0NPTkZJRyB0byAoVE9ETyEpDQoNCi8vIEdlbmVyYWwgbm90ZXM6DQovLyAgIC0gU2V0dXAuYmluIHNob3VsZCBhbHdheXMgc3RhcnQgd2l0aCAiQ3VycmVudE1FQnggUHdkIiwgIm5ld01lYnggUHdkIiwgIm1hbmFnZWFiaWxpdHkgc2VsZWN0aW9uIiAoaWYgcHJlc2VudCkuDQoNCi8vIEludGVsKFIpIEFNVCB2YXJpYWJsZSBpZGVudGlmaWVycw0KLy8gVHlwZTogMCA9IEJpbmFyIFN0cmluZ3ksIDEgPSBDaGFyLCAyID0gU2hvcnQsIDMgPSBJbnQNCnZhciBBbXRTZXR1cEJpblZhcklkcyA9DQp7DQogICAgMTogew0KICAgICAgICAxOiAgWzAsICJDdXJyZW50IE1FQnggUGFzc3dvcmQiXSwNCiAgICAgICAgMjogIFswLCAiTmV3IE1FQnggUGFzc3dvcmQiXSwNCiAgICAgICAgMzogIFsxLCAiTWFuYWdlYWJpbGl0eSBGZWF0dXJlIFNlbGVjdGlvbiJdLA0KICAgICAgICA0OiAgWzEsICJGaXJtd2FyZSBMb2NhbCBVcGRhdGUiLCAgICAgICAgICAgICAgICAgICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gUGFzc3dvcmQgUHJvdGVjdGVkDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiwgMjogIlBhc3N3b3JkIFByb3RlY3RlZCIgfV0sDQogICAgICAgIDU6ICBbMSwgIkZpcm13YXJlIFVwZGF0ZSBRdWFsaWZpZXIiLCAgICAgICAgICAgICAgIC8vIDAgPSBBbHdheXMsIDEgPSBOZXZlciwgMiA9IFJlc3RyaWN0ZWQNCiAgICAgICAgICAgIHsgMDogIkFsd2F5cyIsIDE6ICJOZXZlciIsIDI6ICJSZXN0cmljdGVkIiB9XSwNCiAgICAgICAgNjogIFs0LCAiUG93ZXIgUGFja2FnZSJdICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gR1VJRCBMZW5ndGggKDE2IGJ5dGVzKSwgSW50ZWwgQU1UIHZlcnNpb24gMi4xLCAzIGFuZCA0DQogICAgfSwNCiAgICAyOiB7DQogICAgICAgIDE6ICBbMCwgIlByb3Zpc2lvbmluZyBQcmVzaGFyZWQgS2V5IElEIChQSUQpIl0sDQogICAgICAgIDI6ICBbMCwgIlByb3Zpc2lvbmluZyBQcmVzaGFyZWQgS2V5IChQUFMpIl0sDQogICAgICAgIDM6ICBbMCwgIlBLSSBETlMgU3VmZml4Il0sICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDI1NSBieXRlcyBtYXggbGVuZ3RoDQogICAgICAgIDQ6ICBbMCwgIkNvbmZpZ3VyYXRpb24gU2VydmVyIEZRRE4iXSwgICAgICAgICAgICAgIC8vIDI1NSBieXRlcyBtYXggbGVuZ3RoDQogICAgICAgIDU6ICBbMSwgIlJlbW90ZSBDb25maWd1cmF0aW9uIEVuYWJsZWQgKFJDRkcpIiwgICAgIC8vIDAgPSBPZmYsIDEgPSBPbg0KICAgICAgICAgICAgeyAwOiAiT2ZmIiwgMTogIk9uIiB9XSwNCiAgICAgICAgNjogIFsxLCAiUHJlLUluc3RhbGxlZCBDZXJ0aWZpY2F0ZXMgRW5hYmxlZCIsICAgICAgLy8gMCA9IE9mZiwgMSA9IE9uDQogICAgICAgICAgICB7IDA6ICJPZmYiLCAxOiAiT24iIH1dLA0KICAgICAgICA3OiAgWzEsICJVc2VyIERlZmluZWQgQ2VydGlmaWNhdGUgQ29uZmlndXJhdGlvbiIsICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkLCAyID0gRGVsZXRlDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiwgMjogIkRlbGV0ZSIgfV0sDQogICAgICAgIDg6ICBbMCwgIlVzZXIgRGVmaW5lZCBDZXJ0aWZpY2F0ZSBBZGRpdGlvbiJdLCAgICAgIC8vIDEgYnl0ZSBoYXNoIGFsZ28sIDIwIHRvIDQ4IGJ5dGVzIGhhc2gsIDEgYnl0ZSBuYW1lIGxlbmd0aCwgdXAgdG8gMzIgYnl0ZXMgZnJpZW5kbHkgbmFtZSwgMSA9IFNIQTEgKDIwIGJ5dGVzKSwgMiA9IFNIQTI1NiAoMzIgYnl0ZXMpLCAzID0gU0hBMzg0ICg0OCBieXRlcykuIEFsZ28gMiAmIDMgYXJlIGZvciB2ZXJzaW9uIDMgYW5kIHVwLg0KICAgICAgICAxMDogWzEsICJTT0wvSURFUiBSZWRpcmVjdGlvbiBDb25maWd1cmF0aW9uIl0sDQogICAgICAgIDExOiBbMCwgIkhvc3RuYW1lIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDYzIGJ5dGVzIG1heCBsZW5ndGgNCiAgICAgICAgMTI6IFswLCAiRG9tYWluIE5hbWUiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMjU1IGJ5dGVzIG1heCBsZW5ndGgNCiAgICAgICAgMTM6IFsxLCAiREhDUCIsIHsgMTogIkRpc2FibGVkIiwgMjogIkVuYWJsZWQiIH1dLA0KICAgICAgICAxNDogWzEsICJTZWN1cmUgRmlybXdhcmUgVXBkYXRlIChTRldVKSIsICAgICAgICAgICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiB9XSwNCiAgICAgICAgMTU6IFswLCAiSVRPIl0sDQogICAgICAgIDE2OiBbMSwgIlByb3Zpc2lvbmluZyBNb2RlIChQTSkiLCAgICAgICAgICAgICAgICAgIC8vIDEgPSBFbnRlcnByaXNlLCAyID0gU21hbGwgQnVpc25lc3MgKFNNQikNCiAgICAgICAgICAgIHsgMDogIkVudGVycHJpc2UiLCAxOiAiU21hbGwgQnVpc25lc3MifV0sDQogICAgICAgIDE3OiBbMCwgIlByb3Zpc2lvbmluZyBTZXJ2ZXIgQWRkcmVzcyJdLA0KICAgICAgICAxODogWzIsICJQcm92aXNpb24gU2VydmVyIFBvcnQgTnVtYmVyIChQU1BPKSJdLA0KICAgICAgICAxOTogWzAsICJTdGF0aWMgUFY0IFBhcmFtZXRlcnMiXSwNCiAgICAgICAgMjA6IFswLCAiVkxBTiJdLA0KICAgICAgICAyMTogWzAsICJQQVNTIFBvbGljeSBGbGFnIl0sDQogICAgICAgIDIyOiBbMCwgIklQdjYiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIExlbmd0aCBpcyAyMDQgYnl0ZXMgb2xkIGZvcm1hdCwgODQgYnl0ZXMgbmV3IGZvcm1hdCwgVmVyc2lvbiAzKyBvbmx5DQogICAgICAgIDIzOiBbMSwgIlNoYXJlZC9EZWRpY2F0ZWQgRlFETiIsICAgICAgICAgICAgICAgICAgIC8vIDAgPSBEZWRpY2F0ZWQsIDEgPSBTaGFyZWQuIFRoaXMgb3B0aW9uIGlzIHZhbGlkIG9ubHkgaWYgY29uZmlndXJpbmcgdGhlIGhvc3RuYW1lIGFzIHdlbGwNCiAgICAgICAgICAgIHsgMDogIkRlZGljYXRlZCIsIDE6ICJTaGFyZWQiIH1dLA0KICAgICAgICAyNDogWzEsICJEeW5hbWljIEROUyBVcGRhdGUiLCAgICAgICAgICAgICAgICAgICAgICAvLyAwID0gRGlzYWJsZWQsIDEgPSBFbmFibGVkDQogICAgICAgICAgICB7IDA6ICJEaXNhYmxlZCIsIDE6ICJFbmFibGVkIiB9XSwNCiAgICAgICAgMjU6IFsxLCAiUmVtb3RlIERlc2t0b3AgKEtWTSkgU3RhdGUiLCAgICAgICAgICAgICAgLy8gMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZA0KICAgICAgICAgICAgeyAwOiAiRGlzYWJsZWQiLCAxOiAiRW5hYmxlZCIgfV0sDQogICAgICAgIDI2OiBbMSwgIk9wdC1pbiBVc2VyIENvbnNlbnQgT3B0aW9uIiwgICAgICAgICAgICAgIC8vIDAgPSBEaXNhYmxlZCwgMSA9IEtWTSwgMHhGRiA9IEFMTA0KICAgICAgICAgICAgeyAwIDogIkRpc2FibGVkIiwgMSA6ICJLVk0iLCAyNTUgOiAiQWxsIiB9XSwNCiAgICAgICAgMjc6IFsxLCAiT3B0LWluIFJlbW90ZSBJVCBDb25zZW50IFBvbGljeSIsICAgICAgICAgLy8gMCA9IERpc2FibGVkLCAxID0gRW5hYmxlZC4gQWxsb3dzIHVzZXIgY29uc2VudCB0byBiZSBjb25maWd1cmVkIHJlbW90ZWx5Lg0KICAgICAgICAgICAgeyAwIDogIkRpc2FibGVkIiwgMSA6ICJFbmFibGVkIn0gXSwNCiAgICAgICAgMjg6IFsxLCAiTUUgUHJvdmlzaW9uIEhhbHQgQWN0aXZlIiwgICAgICAgICAgICAgICAgLy8gMCA9IFN0b3AsIDEgPSBTdGFydC4gVGhlICJNRSBwcm92aXNpb25pbmcgSGFsdC9BY3RpdmF0ZSIgY29tbWFuZCBtdXN0IGFwcGVhciBpbiB0aGUgZmlsZSBvbmx5IGFmdGVyICJQS0lETlNTdWZmaXgiLCAiQ29uZmlnU2VydmVyRlFETiIgYW5kICJQcm92aXNpb25pbmcgU2VydmVyIEFkZHJlc3MiDQogICAgICAgICAgICB7IDAgOiAiU3RvcCIsIDEgOiAiU3RhcnQifV0sDQogICAgICAgIDI5OiBbMSwgIk1hbnVhbCBTZXR1cCBhbmQgQ29uZmlndXJhdGlvbiIsICAgICAgICAgIC8vIDAgPSBBdXRvbWF0ZWQsIDEgPSBNYW51YWwNCiAgICAgICAgICAgIHsgMCA6ICJBdXRvbWF0ZWQiLCAxIDogIk1hbnVhbCJ9XSwNCiAgICAgICAgMzA6IFszLCAiU3VwcG9ydCBDaGFubmVsIElkZW50aWZpZXIiXSwgICAgICAgICAgICAgLy8gNCBieXRlcyBsZW5ndGguIFN1cHBvcnQgY2hhbm5lbCBpZGVudGlmaWVyICh2YWxpZCB2YWx1ZXM6IDEtNjU1MzUpDQogICAgICAgIDMxOiBbMCwgIlN1cHBvcnQgQ2hhbm5lbCBEZXNjcmlwdGlvbiJdLCAgICAgICAgICAgIC8vIDYwIGJ5dGVzIG1heC4gRnJpZW5kbHkgbmFtZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwYXJ0eSByZXByZXNlbnRlZGJ5IHRoZSBzdXBwb3J0IGNoYW5uZWwgaWRlbnRpZmllci4NCiAgICAgICAgMzI6IFswLCAiU2VydmljZSBBY2NvdW50IE51bWJlciJdLCAgICAgICAgICAgICAgICAgLy8gMzIgYnl0ZXMgbWF4LiBVbmlxdWUgc3RyaW5nIGlkZW50aWZpZXIgZ2l2ZW4gdG8gdGhlIGVuZCB1c2VyIGJ5IHRoZSBzZXJ2aWNlIHByb3ZpZGVyLg0KICAgICAgICAzMzogWzAsICJFbnJvbGxlbWVudCBQYXNzY29kZSJdLCAgICAgICAgICAgICAgICAgICAvLyAzMiBieXRlcyBtYXgNCiAgICAgICAgMzQ6IFszLCAiU2VydmljZSBUeXBlIl0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNCBieXRlcyBsZW5ndGguIDEgPSBSZWFjdGl2ZSwgMiA9IFByb2FjdGl2ZSwgNCA9IE9uZSBUaW1lIFNlc3Npb24NCiAgICAgICAgMzU6IFswLCAiU2VydmljZSBQcm92aWRlciBJZGVudGlmaWVyIl0gICAgICAgICAgICAgLy8gR1VJRCBMZW5ndGggKDE2IGJ5dGVzKQ0KICAgIH0NCn0NCg0KDQovLyBQYXJzZSB0aGUgU2V0dXAuYmluIGZpbGUNCnZhciBBbXRTZXR1cEJpbkNyZWF0ZSA9IGZ1bmN0aW9uICh2ZXJzaW9uLCBmbGFncykgew0KICAgIHZhciBvYmogPSB7fTsNCiAgICBvYmouZmlsZVR5cGUgPSB2ZXJzaW9uOw0KICAgIG9iai5yZWNvcmRDaHVua0NvdW50ID0gMDsNCiAgICBvYmoucmVjb3JkSGVhZGVyQnl0ZUNvdW50ID0gMDsNCiAgICBvYmoucmVjb3JkTnVtYmVyID0gMDsNCiAgICBvYmoubWFqb3JWZXJzaW9uID0gdmVyc2lvbjsNCiAgICBvYmoubWlub3JWZXJzaW9uID0gMDsNCiAgICBvYmouZmxhZ3MgPSBmbGFnczsNCiAgICBvYmouZGF0YVJlY29yZHNDb25zdW1lZCA9IDA7DQogICAgb2JqLmRhdGFSZWNvcmRDaHVua0NvdW50ID0gMDsNCiAgICBvYmoucmVjb3JkcyA9IFtdOw0KICAgIHJldHVybiBvYmo7DQp9DQoNCg0KLy8gUGFyc2UgdGhlIFNldHVwLmJpbiBmaWxlDQp2YXIgQW10U2V0dXBCaW5EZWNvZGUgPSBmdW5jdGlvbiAoZmlsZSkgew0KDQogICAgLy8gRm9ybWF0IG9mIHRoZSBzZXR1cCBmaWxlIGhlYWRlcjoNCiAgICAvLyBGaWxlVHlwZVVVSUQoMTYpICAgICAgICAgLSB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBmaWxlIHR5cGUuIFRoaXMgaWRlbnRpZmllciB3aWxsIHJlbWFpbiB2YWxpZCBhbmQgY29uc3RhbnQgYWNyb3NzIGFsbCB2ZXJzaW9ucyBvZiB0aGUgZmlsZSB0eXBlLg0KICAgIC8vIFJlY29yZENodW5rQ291bnQoMikgICAgICAtIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIDUxMi1ieXRlIGNodW5rcyBvY2N1cGllZCBieSB0aGlzIHJlY29yZCwgaW5jbHVkaW5nIGFsbCBoZWFkZXIsIGJvZHksIGFuZCByZXNlcnZlZCBmaWVsZHMuDQogICAgLy8gUmVjb3JkSGVhZGVyQnl0ZXMoMikgICAgIC0gaW5kaWNhdGVzIHRoZSBsZW5ndGggb2YgdGhlIHJlY29yZCBoZWFkZXIgaW4gYnl0ZXMuDQogICAgLy8gUmVjb3JkTnVtYmVyKDQpICAgICAgICAgIC0gdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgcmVjb3JkIGFtb25nIGFsbCByZWNvcmRzIGluIHRoZSBmaWxlLiBUaGUgZmllbGQgY29udGFpbnMgYSBub24tbmVnYXRpdmUgb3JkaW5hbCB2YWx1ZS4gVGhlIHZhbHVlIG9mIHRoaXMgZmllbGQgaXMgYWx3YXlzIHplcm8gaW4gdGhlIExvY2FsIFByb3Zpc2lvbmluZyBGaWxlIEhlYWRlciBSZWNvcmQuDQogICAgLy8gTWFqb3JWZXJzaW9uKDEpICAgICAgICAgIC0gaWRlbnRpZmllcyB0aGUgbWFqb3IgdmVyc2lvbiBvZiB0aGUgZmlsZSBmb3JtYXQgc3BlY2lmaWNhdGlvbi4gVGhpcyBpcyBhIHBvc2l0aXZlIGludGVnZXIgdGhhdCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4gVGhlIE1ham9yIFZlcnNpb24gbnVtYmVyIGlzIGluY3JlbWVudGVkIHRvIGluZGljYXRlIHRoYXQgY2hhbmdlcyBoYXZlIGJlZW4gaW50cm9kdWNlZCB0aGF0IHdpbGwgY2F1c2UgY29kZSB3cml0dGVuIGFnYWluc3QgYSBsb3dlciBNYWpvciBWZXJzaW9uIG51bWJlciB0byBmYWlsLg0KICAgIC8vIE1pbm9yVmVyc2lvbigxKSAgICAgICAgICAtIGlkZW50aWZpZXMgdGhlIG1pbm9yIHZlcnNpb24gb2YgdGhlIGZpbGUgZm9ybWF0IHNwZWNpZmljYXRpb24uIFRoaXMgaXMgYW4gaW50ZWdlciB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLiBUaGUgTWlub3IgVmVyc2lvbiBudW1iZXIgaXMgaW5jcmVtZW50ZWQgdG8gaW5kaWNhdGUgdGhhdCBjaGFuZ2VzIGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRoYXQgd2lsbCBub3QgY2F1c2UgY29kZSB3cml0dGVuIGFnYWluc3QgdGhlIHNhbWUgTWFqb3IgVmVyc2lvbiBhbmQgYSBsb3dlciBNaW5vciBWZXJzaW9uIG51bWJlciB0byBmYWlsLiBUaGUgcHVycG9zZSBvZiB0aGlzIGJlaGF2aW9yIGlzIHRvIGFsbG93IGEgc2luZ2xlIGxvY2FsIHByb3Zpc2lvbmluZyBmaWxlIHRvIGJlIHVzZWQgZm9yIG11bHRpcGxlIGdlbmVyYXRpb25zIG9mIEludGVs77+9IEFNVCBwbGF0Zm9ybS4NCiAgICAvLyBEYXRhUmVjb3JkQ291bnQoNCkgICAgICAgLSBpbmRpY2F0ZXMgdGhlIHRvdGFsIG51bWJlciBvZiBkYXRhIHJlY29yZHMgd3JpdHRlbiBpbiB0aGUgZmlsZSB3aGVuIGl0IHdhcyBjcmVhdGVkLg0KICAgIC8vIERhdGFSZWNvcmRzQ29uc3VtZWQoNCkgICAtIGlzIGEgY291bnRlciB2YWx1ZSB0aGF0IGJlZ2lucyBhdCAwIGFuZCBpcyBpbmNyZW1lbnRlZCBieSAxIGJ5IGVhY2ggcGxhdGZvcm0gQklPUyB3aGVuIGl0IGNvbnN1bWVzIGEgZGF0YSByZWNvcmQgZnJvbSB0aGUgZmlsZS4gVGhpcyB2YWx1ZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgb2Zmc2V0IG9mIHRoZSBuZXh0IGRhdGEgcmVjb3JkIGluIHRoZSBmaWxlLg0KICAgIC8vIERhdGFSZWNvcmRDaHVua0NvdW50KDIpICAtIGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgNTEyLWJ5dGUgY2h1bmtzIGluIGVhY2ggZGF0YSByZWNvcmQuIEFsbCBkYXRhIHJlY29yZHMgYXJlIHRoZSBzYW1lIGxlbmd0aC4NCiAgICAvLyBNb2R1bGVMaXN0ICAgICAgICAgICAgICAgLSBjb250YWlucyBhIGxpc3Qgb2YgbW9kdWxlIGlkZW50aWZpZXJzLiBBIG1vZHVsZe+/vXMgaWRlbnRpZmllciBhcHBlYXJzIGluIHRoZSBsaXN0IGlmIGFuZCBvbmx5IGlmIHRoZSBkYXRhIHJlY29yZHMgY29udGFpbiBlbnRyaWVzIGZvciB0aGF0IG1vZHVsZS4gRWFjaCBtb2R1bGUgaWRlbnRpZmllciBpcyB0d28gYnl0ZXMgaW4gbGVuZ3RoLiBUaGUgbGlzdCBpcyB0ZXJtaW5hdGVkIGJ5IGFuIGlkZW50aWZpZXIgdmFsdWUgb2YgMC4gDQoNCiAgICB2YXIgb2JqID0ge30sIFVVSUQgPSBmaWxlLnN1YnN0cmluZygwLCAxNik7DQogICAgb2JqLmZpbGVUeXBlID0gMDsNCiAgICBmb3IgKHZhciBpIGluIEFtdFNldHVwQmluU2V0dXBHdWlkcykgeyBpZiAoVVVJRCA9PSBBbXRTZXR1cEJpblNldHVwR3VpZHNbaV0pIG9iai5maWxlVHlwZSA9ICgraSArIDEpOyB9DQogICAgaWYgKG9iai5maWxlVHlwZSA9PSAwKSByZXR1cm47IC8vIEJhZCBoZWFkZXINCiAgICBvYmoucmVjb3JkQ2h1bmtDb3VudCA9IFJlYWRTaG9ydFgoZmlsZSwgMTYpOw0KICAgIG9iai5yZWNvcmRIZWFkZXJCeXRlQ291bnQgPSBSZWFkU2hvcnRYKGZpbGUsIDE4KTsNCiAgICBvYmoucmVjb3JkTnVtYmVyID0gUmVhZEludFgoZmlsZSwgMjApOw0KICAgIG9iai5tYWpvclZlcnNpb24gPSBmaWxlLmNoYXJDb2RlQXQoMjQpOw0KICAgIG9iai5taW5vclZlcnNpb24gPSBmaWxlLmNoYXJDb2RlQXQoMjUpOw0KICAgIG9iai5mbGFncyA9IFJlYWRTaG9ydFgoZmlsZSwgMjYpOyAgICAgICAgICAgICAgICAgICAvLyBGbGFnczogMSA9IERvIG5vdCBjb25zdW1lIHJlY29yZHMNCiAgICB2YXIgZGF0YVJlY29yZENvdW50ID0gUmVhZEludFgoZmlsZSwgMjgpOw0KICAgIG9iai5kYXRhUmVjb3Jkc0NvbnN1bWVkID0gUmVhZEludFgoZmlsZSwgMzIpOw0KICAgIG9iai5kYXRhUmVjb3JkQ2h1bmtDb3VudCA9IFJlYWRTaG9ydFgoZmlsZSwgMzYpOw0KICAgIG9iai5yZWNvcmRzID0gW107DQoNCiAgICB2YXIgcHRyID0gNTEyOw0KICAgIHdoaWxlIChwdHIgKyA1MTIgPD0gZmlsZS5sZW5ndGgpIHsNCg0KICAgICAgICAvLyBGb3JtYXQgb2YgYSBkYXRhIHJlY29yZCBoZWFkZXI6DQogICAgICAgIC8vIFJlY29yZFR5cGVJZGVudGlmaWVyKDQpICAgICAgICAgICAtIGlkZW50aWZpZXMgdGhlIHR5cGUgb2YgcmVjb3JkIChpbiB0aGlzIGNhc2UgYSBkYXRhIHJlY29yZCkuIFJlY29yZCBJZGVudGlmaWVyczogSW52YWxpZCAtIDAsIERhdGEgUmVjb3JkIC0gMQ0KICAgICAgICAvLyBSZWNvcmRGbGFncyg0KSAgICAgICAgICAgICAgICAgICAgLSBjb250YWlucyBhIHNldCBvZiBiaXQgZmxhZ3MgdGhhdCBjaGFyYWN0ZXJpemUgdGhlIHJlY29yZC4NCiAgICAgICAgLy8gUmVjb3JkQ2h1bmtDb3VudCgyKSAgICAgICAgICAgICAgIC0gY29udGFpbnMgdGhlIG51bWJlciBvZiA1MTItYnl0ZSBjaHVua3Mgb2NjdXBpZWQgYnkgdGhlIHJlY29yZCBpbmNsdWRpbmcgYWxsIGhlYWRlciwgYm9keSwgYW5kIHJlc2VydmVkIGZpZWxkcy4NCiAgICAgICAgLy8gUmVjb3JkSGVhZGVyQnl0ZUNvdW50KDIpICAgICAgICAgIC0gaW5kaWNhdGVzIHRoZSBsZW5ndGggb2YgdGhlIHJlY29yZCBoZWFkZXIgaW4gYnl0ZXMuDQogICAgICAgIC8vIFJlY29yZE51bWJlcig0KSAgICAgICAgICAgICAgICAgICAtIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlY29yZCBhbW9uZyBhbGwgcmVjb3JkcyBpbiB0aGUgZmlsZSwgaW5jbHVkaW5nIGludmFsaWQgYXMgd2VsbCBhcyB2YWxpZCByZWNvcmRzLiBUaGUgaWRlbnRpZmllciBpcyBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLg0KDQogICAgICAgIHZhciByID0ge307DQogICAgICAgIHIudHlwZUlkZW50aWZpZXIgPSBSZWFkSW50WChmaWxlLCBwdHIpOw0KICAgICAgICByLmZsYWdzID0gUmVhZEludFgoZmlsZSwgcHRyICsgNCk7ICAgICAgICAgICAgICAvLyBGbGFnczogMSA9IFZhbGlkLCAyID0gU2NyYW1ibGVkDQogICAgICAgIHIuY2h1bmtDb3VudCA9IFJlYWRTaG9ydFgoZmlsZSwgcHRyICsgOCk7DQogICAgICAgIHIuaGVhZGVyQnl0ZUNvdW50ID0gUmVhZFNob3J0WChmaWxlLCBwdHIgKyAxMCk7DQogICAgICAgIHIubnVtYmVyID0gUmVhZEludFgoZmlsZSwgcHRyICsgMTIpOw0KICAgICAgICByLnZhcmlhYmxlcyA9IFtdOw0KDQogICAgICAgIHZhciBwdHIyID0gMCwgcmVjYmluID0gZmlsZS5zdWJzdHJpbmcocHRyICsgMjQsIHB0ciArIDUxMik7DQogICAgICAgIGlmICgoci5mbGFncyAmIDIpICE9IDApIHsgcmVjYmluID0gQW10U2V0dXBCaW5EZXNjcmFtYmxlUmVjb3JkRGF0YShyZWNiaW4pOyB9IC8vIERlLVNjcmFtYmxlIHRoZSByZWNvcmQNCiAgICAgICAgd2hpbGUgKDEpIHsNCg0KICAgICAgICAgICAgLy8gRm9ybWF0IG9mIGEgZGF0YSByZWNvcmQgZW50cnk6DQogICAgICAgICAgICAvLyBNb2R1bGVJZGVudGlmaWVyKDIpICAgICAgICAgICAtIGlkZW50aWZpZXMgdGhlIHRhcmdldCBNRSBtb2R1bGUgZm9yIHRoZSBlbnRyeS4NCiAgICAgICAgICAgIC8vIFZhcmlhYmxlSWRlbnRpZmllcigyKSAgICAgICAgIC0gYW4gZW51bWVyYXRpb24gdmFsdWUgdGhhdCBpZGVudGlmaWVzIHRoZSB2YXJpYWJsZS4gVmFyaWFibGUgaWRlbnRpZmllcnMgYXJlIHVuaXF1ZSB0byBlYWNoIE1vZHVsZUlkZW50aWZpZXIuDQogICAgICAgICAgICAvLyBWYXJpYWJsZUxlbmd0aCgyKSAgICAgICAgICAgICAtIGlzIHRoZSBsZW5ndGggb2YgdGhlIHZhcmlhYmxlIHZhbHVlIGluIGJ5dGVzLg0KICAgICAgICAgICAgLy8gVmFyaWFibGVWYWx1ZSAgICAgICAgICAgICAgICAgLSBpcyB0aGUgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gdGhlIHZhcmlhYmxlLg0KDQogICAgICAgICAgICB2YXIgdiA9IHt9Ow0KICAgICAgICAgICAgdi5tb2R1bGVpZCA9IFJlYWRTaG9ydFgocmVjYmluLCBwdHIyKTsNCiAgICAgICAgICAgIHYudmFyaWQgPSBSZWFkU2hvcnRYKHJlY2JpbiwgcHRyMiArIDIpOw0KICAgICAgICAgICAgaWYgKHYubW9kdWxlaWQgPT0gMCB8fCB2LnZhcmlkID09IDApIGJyZWFrOw0KICAgICAgICAgICAgaWYgKEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdKSB7DQogICAgICAgICAgICAgICAgdi5sZW5ndGggPSBSZWFkU2hvcnRYKHJlY2JpbiwgcHRyMiArIDQpOw0KICAgICAgICAgICAgICAgIHYudHlwZSA9IEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzBdOw0KICAgICAgICAgICAgICAgIHYuZGVzYyA9IEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzFdOw0KICAgICAgICAgICAgICAgIHYudmFsdWUgPSByZWNiaW4uc3Vic3RyaW5nKHB0cjIgKyA4LCBwdHIyICsgOCArIHYubGVuZ3RoKTsNCiAgICAgICAgICAgICAgICBpZiAodi50eXBlID09IDEgJiYgdi5sZW5ndGggPT0gMSkgdi52YWx1ZSA9IHYudmFsdWUuY2hhckNvZGVBdCgwKTsgLy8gMSBieXRlIG51bWJlcg0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHYudHlwZSA9PSAyICYmIHYubGVuZ3RoID09IDIpIHYudmFsdWUgPSBSZWFkU2hvcnRYKHYudmFsdWUsIDApOyAvLyAyIGJ5dGUgbnVtYmVyDQogICAgICAgICAgICAgICAgZWxzZSBpZiAodi50eXBlID09IDMgJiYgdi5sZW5ndGggPT0gNCkgdi52YWx1ZSA9IFJlYWRJbnRYKHYudmFsdWUsIDApOyAvLyA0IGJ5dGUgbnVtYmVyDQogICAgICAgICAgICAgICAgZWxzZSBpZiAodi50eXBlID09IDQpIHYudmFsdWUgPSBndWlkVG9TdHIocnN0cjJoZXgodi52YWx1ZSkpOyAvLyBHVUlEDQogICAgICAgICAgICAgICAgci52YXJpYWJsZXMucHVzaCh2KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHB0cjIgKz0gKDggKyAoTWF0aC5mbG9vcigodi5sZW5ndGggKyAzKSAvIDQpICogNCkpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU29ydCB0aGUgdmFyaWFibGVzDQogICAgICAgIHIudmFyaWFibGVzLnNvcnQoQW10U2V0dXBCaW5WYXJpYWJsZUNvbXBhcmUpOw0KDQogICAgICAgIG9iai5yZWNvcmRzLnB1c2gocik7DQogICAgICAgIHB0ciArPSA1MTI7DQogICAgfQ0KDQogICAgaWYgKGRhdGFSZWNvcmRDb3VudCAhPSBvYmoucmVjb3Jkcy5sZW5ndGgpIHJldHVybjsgLy8gTWlzbWF0Y2ggcmVjb3JkIGNvdW50DQogICAgcmV0dXJuIG9iajsNCn0NCg0KLy8gQ29uc3RydWN0IGEgU2V0dXAuYmluIGZpbGUNCnZhciBBbXRTZXR1cEJpbkVuY29kZSA9IGZ1bmN0aW9uIChvYmopIHsNCiAgICBpZiAob2JqLmZpbGVUeXBlIDwgMSAmJiBvYmouZmlsZVR5cGUgPiBBbXRTZXR1cEJpblNldHVwR3VpZHMubGVuZ3RoKSByZXR1cm4gbnVsbDsNCiAgICB2YXIgb3V0ID0gW10sIHIgPSBBbXRTZXR1cEJpblNldHVwR3VpZHNbb2JqLmZpbGVUeXBlIC0gMV0sIHJlY2NvdW50ID0gMDsNCiAgICByICs9IFNob3J0VG9TdHJYKG9iai5yZWNvcmRDaHVua0NvdW50KTsNCiAgICByICs9IFNob3J0VG9TdHJYKG9iai5yZWNvcmRIZWFkZXJCeXRlQ291bnQpOw0KICAgIHIgKz0gSW50VG9TdHJYKG9iai5yZWNvcmROdW1iZXIpOw0KICAgIHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShvYmoubWFqb3JWZXJzaW9uLCBvYmoubWlub3JWZXJzaW9uKTsNCiAgICByICs9IFNob3J0VG9TdHJYKG9iai5mbGFncyk7IC8vIEZsYWdzOiAxID0gRG8gbm90IGNvbnN1bWUgcmVjb3Jkcw0KICAgIHIgKz0gSW50VG9TdHJYKG9iai5yZWNvcmRzLmxlbmd0aCk7DQogICAgciArPSBJbnRUb1N0clgob2JqLmRhdGFSZWNvcmRzQ29uc3VtZWQpOw0KICAgIHIgKz0gU2hvcnRUb1N0clgob2JqLmRhdGFSZWNvcmRDaHVua0NvdW50KTsNCiAgICB3aGlsZSAoci5sZW5ndGggPCA1MTIpIHsgciArPSAiXDAiOyB9IC8vIFBhZCB0aGUgaGVhZGVyDQogICAgb3V0LnB1c2gocik7DQoNCiAgICAvLyBXcml0ZSBlYWNoIHJlY29yZA0KICAgIGZvciAodmFyIGkgaW4gb2JqLnJlY29yZHMpIHsNCiAgICAgICAgdmFyIHIyID0gIiIsIHJlYyA9IG9iai5yZWNvcmRzW2ldOw0KICAgICAgICByMiArPSBJbnRUb1N0clgocmVjLnR5cGVJZGVudGlmaWVyKTsNCiAgICAgICAgcjIgKz0gSW50VG9TdHJYKHJlYy5mbGFncyk7DQogICAgICAgIHIyICs9IEludFRvU3RyWCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQNCiAgICAgICAgcjIgKz0gSW50VG9TdHJYKDApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNlcnZlZA0KICAgICAgICByMiArPSBTaG9ydFRvU3RyWCgxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYy5jaHVua0NvdW50DQogICAgICAgIHIyICs9IFNob3J0VG9TdHJYKDI0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjLmhlYWRlckJ5dGVDb3VudA0KICAgICAgICByMiArPSBJbnRUb1N0clgoKytyZWNjb3VudCk7DQoNCiAgICAgICAgLy8gU29ydCB0aGUgdmFyaWFibGVzDQogICAgICAgIHJlYy52YXJpYWJsZXMuc29ydChBbXRTZXR1cEJpblZhcmlhYmxlQ29tcGFyZSk7DQoNCiAgICAgICAgLyoNCiAgICAgICAgLy8gQ2hhbmdlIHZhcmlhYmxlIHByaW9yaXR5DQogICAgICAgIEFtdFNldHVwQmluTW92ZVRvVG9wKHIudmFyaWFibGVzLCAxLCAzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFuYWdlYWJpbGl0eSBGZWF0dXJlIFNlbGVjdGlvbg0KICAgICAgICBBbXRTZXR1cEJpbk1vdmVUb1RvcChyLnZhcmlhYmxlcywgMSwgMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5ldyBNRUJ4IHBhc3N3b3JkDQogICAgICAgIEFtdFNldHVwQmluTW92ZVRvVG9wKHIudmFyaWFibGVzLCAxLCAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudCBNRUJ4IHBhc3N3b3JkDQogICAgICAgICovDQoNCiAgICAgICAgLy8gV3JpdGUgZWFjaCB2YXJpYWJsZQ0KICAgICAgICBmb3IgKHZhciBqIGluIHJlYy52YXJpYWJsZXMpIHsNCiAgICAgICAgICAgIHZhciByMyA9ICIiLCB2ID0gcmVjLnZhcmlhYmxlc1tqXSwgZGF0YSA9IHYudmFsdWU7DQogICAgICAgICAgICB2LnR5cGUgPSBBbXRTZXR1cEJpblZhcklkc1t2Lm1vZHVsZWlkXVt2LnZhcmlkXVswXTsgICAgICAgICAgICAgLy8gU2V0IHRoZSBjb3JyZWN0IHR5cGUgaWYgbm90IGFscmVheSBjb25uZWN0DQogICAgICAgICAgICBpZiAoKHYudHlwZSA+IDApICYmICh2LnR5cGUgPCA0KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG51bWVyaWMgdmFsdWUsIGVuY29kZSBpdCBjb3JyZWN0bHkNCiAgICAgICAgICAgICAgICBkYXRhID0gcGFyc2VJbnQoZGF0YSk7DQogICAgICAgICAgICAgICAgaWYgKHYudHlwZSA9PSAxKSBkYXRhID0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhKTsNCiAgICAgICAgICAgICAgICBpZiAodi50eXBlID09IDIpIGRhdGEgPSBTaG9ydFRvU3RyWChkYXRhKTsNCiAgICAgICAgICAgICAgICBpZiAodi50eXBlID09IDMpIGRhdGEgPSBJbnRUb1N0clgoZGF0YSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAodi50eXBlID09IDQpIHsgZGF0YSA9IGhleDJyc3RyKGd1aWRUb1N0cihkYXRhLnNwbGl0KCctJykuam9pbignJykpLnNwbGl0KCctJykuam9pbignJykpOyB9DQogICAgICAgICAgICByMyArPSBTaG9ydFRvU3RyWCh2Lm1vZHVsZWlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW9kdWxlIElkZW50aWZpZXINCiAgICAgICAgICAgIHIzICs9IFNob3J0VG9TdHJYKHYudmFyaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYXJpYWJsZSBJZGVudGlmaWVyDQogICAgICAgICAgICByMyArPSBTaG9ydFRvU3RyWChkYXRhLmxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmFyaWFibGUgTGVuZ3RoDQogICAgICAgICAgICByMyArPSBTaG9ydFRvU3RyWCgwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzZXJ2ZWQNCiAgICAgICAgICAgIHIzICs9IGRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWYXJpYWJsZSBEYXRhDQogICAgICAgICAgICB3aGlsZSAocjMubGVuZ3RoICUgNCAhPSAwKSB7IHIzICs9ICJcMCI7IH0gICAgICAgICAgICAgICAgICAgICAgLy8gUGFkIHRoZSB2YXJpYWJsZQ0KICAgICAgICAgICAgcjIgKz0gcjM7DQogICAgICAgIH0NCg0KICAgICAgICB3aGlsZSAocjIubGVuZ3RoIDwgNTEyKSB7IHIyICs9ICJcMCI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhZCB0aGUgcmVjb3JkDQogICAgICAgIGlmICgocmVjLmZsYWdzICYgMikgIT0gMCkgeyByMiA9IHIyLnN1YnN0cmluZygwLCAyNCkgKyBBbXRTZXR1cEJpblNjcmFtYmxlUmVjb3JkRGF0YShyMi5zdWJzdHJpbmcoMjQpKTsgfSAvLyBTY3JhbWJsZSB0aGUgcmVjb3JkIHN0YXJ0aW5nIGF0IGJ5dGUgMjQsIGFmdGVyIHRoZSBoZWFkZXINCiAgICAgICAgb3V0LnB1c2gocjIpOw0KICAgIH0NCiAgICByZXR1cm4gb3V0LmpvaW4oJycpOw0KfQ0KDQovLyBVc2VkIHRvIHNvcnQgdmFyaWFibGVzDQpmdW5jdGlvbiBBbXRTZXR1cEJpblZhcmlhYmxlQ29tcGFyZShhLCBiKSB7DQogICAgaWYgKGEubW9kdWxlaWQgPiBiLm1vZHVsZWlkKSByZXR1cm4gMTsNCiAgICBpZiAoYS5tb2R1bGVpZCA8IGIubW9kdWxlaWQpIHJldHVybiAtMTsNCiAgICBpZiAoYS52YXJpZCA+IGIudmFyaWQpIHJldHVybiAxOw0KICAgIGlmIChhLnZhcmlkIDwgYi52YXJpZCkgcmV0dXJuIC0xOw0KICAgIHJldHVybiAwOw0KfQ0KDQovLyBTY3JhbWJsZSBhbmQgdW4tc2NyYW1ibGUgcmVjb3Jkcw0KZnVuY3Rpb24gQW10U2V0dXBCaW5TY3JhbWJsZVJlY29yZERhdGEoZGF0YSkgeyB2YXIgb3V0ID0gIiI7IGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykgeyBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoZGF0YS5jaGFyQ29kZUF0KGkpICsgMTcpICYgMHhGRik7IH0gcmV0dXJuIG91dDsgfQ0KZnVuY3Rpb24gQW10U2V0dXBCaW5EZXNjcmFtYmxlUmVjb3JkRGF0YShkYXRhKSB7IHZhciBvdXQgPSAiIjsgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7IG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChkYXRhLmNoYXJDb2RlQXQoaSkgKyAweEVGKSAmIDB4RkYpOyB9IHJldHVybiBvdXQ7IH0NCg0KLy8gRmluZCBhIG1vZHVsZWlkL3ZhcmlkIGluIHRoZSB2YXJpYWJsZSBsaXN0LCBpZiBmb3VuZCwgbW92ZSBpdCB0byB0aGUgdG9wDQovL2Z1bmN0aW9uIEFtdFNldHVwQmluTW92ZVRvVG9wKHZhcmlhYmxlcywgbW9kdWxlaWQsIHZhcmlkKSB7IHZhciBpID0gLTE7IGZvciAodmFyIGogaW4gdmFyaWFibGVzKSB7IGlmICgodmFyaWFibGVzW2pdLm1vZHVsZWlkID09IG1vZHVsZWlkKSAmJiAodmFyaWFibGVzW2pdLnZhcmlkID09IHZhcmlkKSkgeyBpID0gajsgfSB9IGlmIChpID4gMSkgeyBBcnJheUVsZW1lbnRNb3ZlKHZhcmlhYmxlcywgaSwgMCk7IH0gfQ0KLyogRmlsZVNhdmVyLmpzDQogKiBBIHNhdmVBcygpIEZpbGVTYXZlciBpbXBsZW1lbnRhdGlvbi4NCiAqIDEuMS4yMDE1MTAwMw0KICoNCiAqIEJ5IEVsaSBHcmV5LCBodHRwOi8vZWxpZ3JleS5jb20NCiAqIExpY2Vuc2U6IE1JVA0KICogICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2VsaWdyZXkvRmlsZVNhdmVyLmpzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQNCiAqLw0KDQovKmdsb2JhbCBzZWxmICovDQovKmpzbGludCBiaXR3aXNlOiB0cnVlLCBpbmRlbnQ6IDQsIGxheGJyZWFrOiB0cnVlLCBsYXhjb21tYTogdHJ1ZSwgc21hcnR0YWJzOiB0cnVlLCBwbHVzcGx1czogdHJ1ZSAqLw0KDQovKiEgQHNvdXJjZSBodHRwOi8vcHVybC5lbGlncmV5LmNvbS9naXRodWIvRmlsZVNhdmVyLmpzL2Jsb2IvbWFzdGVyL0ZpbGVTYXZlci5qcyAqLw0KDQp2YXIgc2F2ZUFzID0gc2F2ZUFzIHx8IChmdW5jdGlvbiAodmlldykgew0KICAgICJ1c2Ugc3RyaWN0IjsNCiAgICAvLyBJRSA8MTAgaXMgZXhwbGljaXRseSB1bnN1cHBvcnRlZA0KICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAidW5kZWZpbmVkIiAmJiAvTVNJRSBbMS05XVwuLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7DQogICAgICAgIHJldHVybjsNCiAgICB9DQogICAgdmFyDQoJCSAgZG9jID0gdmlldy5kb2N1bWVudA0KCQkgIC8vIG9ubHkgZ2V0IFVSTCB3aGVuIG5lY2Vzc2FyeSBpbiBjYXNlIEJsb2IuanMgaGFzbid0IG92ZXJyaWRkZW4gaXQgeWV0DQoJCSwgZ2V0X1VSTCA9IGZ1bmN0aW9uICgpIHsNCgkJICAgIHJldHVybiB2aWV3LlVSTCB8fCB2aWV3LndlYmtpdFVSTCB8fCB2aWV3Ow0KCQl9DQoJCSwgc2F2ZV9saW5rID0gZG9jLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsICJhIikNCgkJLCBjYW5fdXNlX3NhdmVfbGluayA9ICJkb3dubG9hZCIgaW4gc2F2ZV9saW5rDQoJCSwgY2xpY2sgPSBmdW5jdGlvbiAobm9kZSkgew0KCQkgICAgdmFyIGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoImNsaWNrIik7DQoJCSAgICBub2RlLmRpc3BhdGNoRXZlbnQoZXZlbnQpOw0KCQl9DQoJCSwgaXNfc2FmYXJpID0gL1ZlcnNpb25cL1tcZFwuXSsuKlNhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KQ0KCQksIHdlYmtpdF9yZXFfZnMgPSB2aWV3LndlYmtpdFJlcXVlc3RGaWxlU3lzdGVtDQoJCSwgcmVxX2ZzID0gdmlldy5yZXF1ZXN0RmlsZVN5c3RlbSB8fCB3ZWJraXRfcmVxX2ZzIHx8IHZpZXcubW96UmVxdWVzdEZpbGVTeXN0ZW0NCgkJLCB0aHJvd19vdXRzaWRlID0gZnVuY3Rpb24gKGV4KSB7DQoJCSAgICAodmlldy5zZXRJbW1lZGlhdGUgfHwgdmlldy5zZXRUaW1lb3V0KShmdW5jdGlvbiAoKSB7DQoJCSAgICAgICAgdGhyb3cgZXg7DQoJCSAgICB9LCAwKTsNCgkJfQ0KCQksIGZvcmNlX3NhdmVhYmxlX3R5cGUgPSAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIg0KCQksIGZzX21pbl9zaXplID0gMA0KCQkvLyBTZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM3NTI5NyNjNyBhbmQNCgkJLy8gaHR0cHM6Ly9naXRodWIuY29tL2VsaWdyZXkvRmlsZVNhdmVyLmpzL2NvbW1pdC80ODU5MzBhI2NvbW1pdGNvbW1lbnQtODc2ODA0Nw0KCQkvLyBmb3IgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIHRpbWVvdXQgYW5kIHJldm9jYXRpb24gZmxvdw0KCQksIGFyYml0cmFyeV9yZXZva2VfdGltZW91dCA9IDUwMCAvLyBpbiBtcw0KCQksIHJldm9rZSA9IGZ1bmN0aW9uIChmaWxlKSB7DQoJCSAgICB2YXIgcmV2b2tlciA9IGZ1bmN0aW9uICgpIHsNCgkJICAgICAgICBpZiAodHlwZW9mIGZpbGUgPT09ICJzdHJpbmciKSB7IC8vIGZpbGUgaXMgYW4gb2JqZWN0IFVSTA0KCQkgICAgICAgICAgICBnZXRfVVJMKCkucmV2b2tlT2JqZWN0VVJMKGZpbGUpOw0KCQkgICAgICAgIH0gZWxzZSB7IC8vIGZpbGUgaXMgYSBGaWxlDQoJCSAgICAgICAgICAgIGZpbGUucmVtb3ZlKCk7DQoJCSAgICAgICAgfQ0KCQkgICAgfTsNCgkJICAgIGlmICh2aWV3LmNocm9tZSkgew0KCQkgICAgICAgIHJldm9rZXIoKTsNCgkJICAgIH0gZWxzZSB7DQoJCSAgICAgICAgc2V0VGltZW91dChyZXZva2VyLCBhcmJpdHJhcnlfcmV2b2tlX3RpbWVvdXQpOw0KCQkgICAgfQ0KCQl9DQoJCSwgZGlzcGF0Y2ggPSBmdW5jdGlvbiAoZmlsZXNhdmVyLCBldmVudF90eXBlcywgZXZlbnQpIHsNCgkJICAgIGV2ZW50X3R5cGVzID0gW10uY29uY2F0KGV2ZW50X3R5cGVzKTsNCgkJICAgIHZhciBpID0gZXZlbnRfdHlwZXMubGVuZ3RoOw0KCQkgICAgd2hpbGUgKGktLSkgew0KCQkgICAgICAgIHZhciBsaXN0ZW5lciA9IGZpbGVzYXZlclsib24iICsgZXZlbnRfdHlwZXNbaV1dOw0KCQkgICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICJmdW5jdGlvbiIpIHsNCgkJICAgICAgICAgICAgdHJ5IHsNCgkJICAgICAgICAgICAgICAgIGxpc3RlbmVyLmNhbGwoZmlsZXNhdmVyLCBldmVudCB8fCBmaWxlc2F2ZXIpOw0KCQkgICAgICAgICAgICB9IGNhdGNoIChleCkgew0KCQkgICAgICAgICAgICAgICAgdGhyb3dfb3V0c2lkZShleCk7DQoJCSAgICAgICAgICAgIH0NCgkJICAgICAgICB9DQoJCSAgICB9DQoJCX0NCgkJLCBhdXRvX2JvbSA9IGZ1bmN0aW9uIChibG9iKSB7DQoJCSAgICAvLyBwcmVwZW5kIEJPTSBmb3IgVVRGLTggWE1MIGFuZCB0ZXh0IHR5cGVzIChpbmNsdWRpbmcgSFRNTCkNCgkJICAgIGlmICgvXlxzKig/OnRleHRcL1xTKnxhcHBsaWNhdGlvblwveG1sfFxTKlwvXFMqXCt4bWwpXHMqOy4qY2hhcnNldFxzKj1ccyp1dGYtOC9pLnRlc3QoYmxvYi50eXBlKSkgew0KCQkgICAgICAgIHJldHVybiBuZXcgQmxvYihbIlx1ZmVmZiIsIGJsb2JdLCB7IHR5cGU6IGJsb2IudHlwZSB9KTsNCgkJICAgIH0NCgkJICAgIHJldHVybiBibG9iOw0KCQl9DQoJCSwgRmlsZVNhdmVyID0gZnVuY3Rpb24gKGJsb2IsIG5hbWUsIG5vX2F1dG9fYm9tKSB7DQoJCSAgICBpZiAoIW5vX2F1dG9fYm9tKSB7DQoJCSAgICAgICAgYmxvYiA9IGF1dG9fYm9tKGJsb2IpOw0KCQkgICAgfQ0KCQkgICAgLy8gRmlyc3QgdHJ5IGEuZG93bmxvYWQsIHRoZW4gd2ViIGZpbGVzeXN0ZW0sIHRoZW4gb2JqZWN0IFVSTHMNCgkJICAgIHZhcg0KCQkJCSAgZmlsZXNhdmVyID0gdGhpcw0KCQkJCSwgdHlwZSA9IGJsb2IudHlwZQ0KCQkJCSwgYmxvYl9jaGFuZ2VkID0gZmFsc2UNCgkJCQksIG9iamVjdF91cmwNCgkJCQksIHRhcmdldF92aWV3DQoJCQkJLCBkaXNwYXRjaF9hbGwgPSBmdW5jdGlvbiAoKSB7DQoJCQkJICAgIGRpc3BhdGNoKGZpbGVzYXZlciwgIndyaXRlc3RhcnQgcHJvZ3Jlc3Mgd3JpdGUgd3JpdGVlbmQiLnNwbGl0KCIgIikpOw0KCQkJCX0NCgkJCQkvLyBvbiBhbnkgZmlsZXN5cyBlcnJvcnMgcmV2ZXJ0IHRvIHNhdmluZyB3aXRoIG9iamVjdCBVUkxzDQoJCQkJLCBmc19lcnJvciA9IGZ1bmN0aW9uICgpIHsNCgkJCQkgICAgaWYgKHRhcmdldF92aWV3ICYmIGlzX3NhZmFyaSAmJiB0eXBlb2YgRmlsZVJlYWRlciAhPT0gInVuZGVmaW5lZCIpIHsNCgkJCQkgICAgICAgIC8vIFNhZmFyaSBkb2Vzbid0IGFsbG93IGRvd25sb2FkaW5nIG9mIGJsb2IgdXJscw0KCQkJCSAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQoJCQkJICAgICAgICByZWFkZXIub25sb2FkZW5kID0gZnVuY3Rpb24gKCkgew0KCQkJCSAgICAgICAgICAgIHZhciBiYXNlNjREYXRhID0gcmVhZGVyLnJlc3VsdDsNCgkJCQkgICAgICAgICAgICB0YXJnZXRfdmlldy5sb2NhdGlvbi5ocmVmID0gImRhdGE6YXR0YWNobWVudC9maWxlIiArIGJhc2U2NERhdGEuc2xpY2UoYmFzZTY0RGF0YS5zZWFyY2goL1ssO10vKSk7DQoJCQkJICAgICAgICAgICAgZmlsZXNhdmVyLnJlYWR5U3RhdGUgPSBmaWxlc2F2ZXIuRE9ORTsNCgkJCQkgICAgICAgICAgICBkaXNwYXRjaF9hbGwoKTsNCgkJCQkgICAgICAgIH07DQoJCQkJICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChibG9iKTsNCgkJCQkgICAgICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7DQoJCQkJICAgICAgICByZXR1cm47DQoJCQkJICAgIH0NCgkJCQkgICAgLy8gZG9uJ3QgY3JlYXRlIG1vcmUgb2JqZWN0IFVSTHMgdGhhbiBuZWVkZWQNCgkJCQkgICAgaWYgKGJsb2JfY2hhbmdlZCB8fCAhb2JqZWN0X3VybCkgew0KCQkJCSAgICAgICAgb2JqZWN0X3VybCA9IGdldF9VUkwoKS5jcmVhdGVPYmplY3RVUkwoYmxvYik7DQoJCQkJICAgIH0NCgkJCQkgICAgaWYgKHRhcmdldF92aWV3KSB7DQoJCQkJICAgICAgICB0YXJnZXRfdmlldy5sb2NhdGlvbi5ocmVmID0gb2JqZWN0X3VybDsNCgkJCQkgICAgfSBlbHNlIHsNCgkJCQkgICAgICAgIHZhciBuZXdfdGFiID0gdmlldy5vcGVuKG9iamVjdF91cmwsICJfYmxhbmsiKTsNCgkJCQkgICAgICAgIGlmIChuZXdfdGFiID09IHVuZGVmaW5lZCAmJiBpc19zYWZhcmkpIHsNCgkJCQkgICAgICAgICAgICAvL0FwcGxlIGRvIG5vdCBhbGxvdyB3aW5kb3cub3Blbiwgc2VlIGh0dHA6Ly9iaXQubHkvMWtaZmZSSQ0KCQkJCSAgICAgICAgICAgIHZpZXcubG9jYXRpb24uaHJlZiA9IG9iamVjdF91cmwNCgkJCQkgICAgICAgIH0NCgkJCQkgICAgfQ0KCQkJCSAgICBmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOw0KCQkJCSAgICBkaXNwYXRjaF9hbGwoKTsNCgkJCQkgICAgcmV2b2tlKG9iamVjdF91cmwpOw0KCQkJCX0NCgkJCQksIGFib3J0YWJsZSA9IGZ1bmN0aW9uIChmdW5jKSB7DQoJCQkJICAgIHJldHVybiBmdW5jdGlvbiAoKSB7DQoJCQkJICAgICAgICBpZiAoZmlsZXNhdmVyLnJlYWR5U3RhdGUgIT09IGZpbGVzYXZlci5ET05FKSB7DQoJCQkJICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsNCgkJCQkgICAgICAgIH0NCgkJCQkgICAgfTsNCgkJCQl9DQoJCQkJLCBjcmVhdGVfaWZfbm90X2ZvdW5kID0geyBjcmVhdGU6IHRydWUsIGV4Y2x1c2l2ZTogZmFsc2UgfQ0KCQkJCSwgc2xpY2UNCgkJICAgIDsNCgkJICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7DQoJCSAgICBpZiAoIW5hbWUpIHsNCgkJICAgICAgICBuYW1lID0gImRvd25sb2FkIjsNCgkJICAgIH0NCgkJICAgIGlmIChjYW5fdXNlX3NhdmVfbGluaykgew0KCQkgICAgICAgIG9iamVjdF91cmwgPSBnZXRfVVJMKCkuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOw0KCQkgICAgICAgIHNhdmVfbGluay5ocmVmID0gb2JqZWN0X3VybDsNCgkJICAgICAgICBzYXZlX2xpbmsuZG93bmxvYWQgPSBuYW1lOw0KCQkgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KCQkgICAgICAgICAgICBjbGljayhzYXZlX2xpbmspOw0KCQkgICAgICAgICAgICBkaXNwYXRjaF9hbGwoKTsNCgkJICAgICAgICAgICAgcmV2b2tlKG9iamVjdF91cmwpOw0KCQkgICAgICAgICAgICBmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOw0KCQkgICAgICAgIH0pOw0KCQkgICAgICAgIHJldHVybjsNCgkJICAgIH0NCgkJICAgIC8vIE9iamVjdCBhbmQgd2ViIGZpbGVzeXN0ZW0gVVJMcyBoYXZlIGEgcHJvYmxlbSBzYXZpbmcgaW4gR29vZ2xlIENocm9tZSB3aGVuDQoJCSAgICAvLyB2aWV3ZWQgaW4gYSB0YWIsIHNvIEkgZm9yY2Ugc2F2ZSB3aXRoIGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQ0KCQkgICAgLy8gaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9OTExNTgNCgkJICAgIC8vIFVwZGF0ZTogR29vZ2xlIGVycmFudGx5IGNsb3NlZCA5MTE1OCwgSSBzdWJtaXR0ZWQgaXQgYWdhaW46DQoJCSAgICAvLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9Mzg5NjQyDQoJCSAgICBpZiAodmlldy5jaHJvbWUgJiYgdHlwZSAmJiB0eXBlICE9PSBmb3JjZV9zYXZlYWJsZV90eXBlKSB7DQoJCSAgICAgICAgc2xpY2UgPSBibG9iLnNsaWNlIHx8IGJsb2Iud2Via2l0U2xpY2U7DQoJCSAgICAgICAgYmxvYiA9IHNsaWNlLmNhbGwoYmxvYiwgMCwgYmxvYi5zaXplLCBmb3JjZV9zYXZlYWJsZV90eXBlKTsNCgkJICAgICAgICBibG9iX2NoYW5nZWQgPSB0cnVlOw0KCQkgICAgfQ0KCQkgICAgLy8gU2luY2UgSSBjYW4ndCBiZSBzdXJlIHRoYXQgdGhlIGd1ZXNzZWQgbWVkaWEgdHlwZSB3aWxsIHRyaWdnZXIgYSBkb3dubG9hZA0KCQkgICAgLy8gaW4gV2ViS2l0LCBJIGFwcGVuZCAuZG93bmxvYWQgdG8gdGhlIGZpbGVuYW1lLg0KCQkgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NDQwDQoJCSAgICBpZiAod2Via2l0X3JlcV9mcyAmJiBuYW1lICE9PSAiZG93bmxvYWQiKSB7DQoJCSAgICAgICAgbmFtZSArPSAiLmRvd25sb2FkIjsNCgkJICAgIH0NCgkJICAgIGlmICh0eXBlID09PSBmb3JjZV9zYXZlYWJsZV90eXBlIHx8IHdlYmtpdF9yZXFfZnMpIHsNCgkJICAgICAgICB0YXJnZXRfdmlldyA9IHZpZXc7DQoJCSAgICB9DQoJCSAgICBpZiAoIXJlcV9mcykgew0KCQkgICAgICAgIGZzX2Vycm9yKCk7DQoJCSAgICAgICAgcmV0dXJuOw0KCQkgICAgfQ0KCQkgICAgZnNfbWluX3NpemUgKz0gYmxvYi5zaXplOw0KCQkgICAgcmVxX2ZzKHZpZXcuVEVNUE9SQVJZLCBmc19taW5fc2l6ZSwgYWJvcnRhYmxlKGZ1bmN0aW9uIChmcykgew0KCQkgICAgICAgIGZzLnJvb3QuZ2V0RGlyZWN0b3J5KCJzYXZlZCIsIGNyZWF0ZV9pZl9ub3RfZm91bmQsIGFib3J0YWJsZShmdW5jdGlvbiAoZGlyKSB7DQoJCSAgICAgICAgICAgIHZhciBzYXZlID0gZnVuY3Rpb24gKCkgew0KCQkgICAgICAgICAgICAgICAgZGlyLmdldEZpbGUobmFtZSwgY3JlYXRlX2lmX25vdF9mb3VuZCwgYWJvcnRhYmxlKGZ1bmN0aW9uIChmaWxlKSB7DQoJCSAgICAgICAgICAgICAgICAgICAgZmlsZS5jcmVhdGVXcml0ZXIoYWJvcnRhYmxlKGZ1bmN0aW9uICh3cml0ZXIpIHsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm9ud3JpdGVlbmQgPSBmdW5jdGlvbiAoZXZlbnQpIHsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF92aWV3LmxvY2F0aW9uLmhyZWYgPSBmaWxlLnRvVVJMKCk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goZmlsZXNhdmVyLCAid3JpdGVlbmQiLCBldmVudCk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXZva2UoZmlsZSk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci5vbmVycm9yID0gZnVuY3Rpb24gKCkgew0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVycm9yID0gd3JpdGVyLmVycm9yOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmNvZGUgIT09IGVycm9yLkFCT1JUX0VSUikgew0KCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZzX2Vycm9yKCk7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZXN0YXJ0IHByb2dyZXNzIHdyaXRlIGFib3J0Ii5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXJbIm9uIiArIGV2ZW50XSA9IGZpbGVzYXZlclsib24iICsgZXZlbnRdOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlKGJsb2IpOw0KCQkgICAgICAgICAgICAgICAgICAgICAgICBmaWxlc2F2ZXIuYWJvcnQgPSBmdW5jdGlvbiAoKSB7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIuYWJvcnQoKTsNCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLldSSVRJTkc7DQoJCSAgICAgICAgICAgICAgICAgICAgfSksIGZzX2Vycm9yKTsNCgkJICAgICAgICAgICAgICAgIH0pLCBmc19lcnJvcik7DQoJCSAgICAgICAgICAgIH07DQoJCSAgICAgICAgICAgIGRpci5nZXRGaWxlKG5hbWUsIHsgY3JlYXRlOiBmYWxzZSB9LCBhYm9ydGFibGUoZnVuY3Rpb24gKGZpbGUpIHsNCgkJICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSBmaWxlIGlmIGl0IGFscmVhZHkgZXhpc3RzDQoJCSAgICAgICAgICAgICAgICBmaWxlLnJlbW92ZSgpOw0KCQkgICAgICAgICAgICAgICAgc2F2ZSgpOw0KCQkgICAgICAgICAgICB9KSwgYWJvcnRhYmxlKGZ1bmN0aW9uIChleCkgew0KCQkgICAgICAgICAgICAgICAgaWYgKGV4LmNvZGUgPT09IGV4Lk5PVF9GT1VORF9FUlIpIHsNCgkJICAgICAgICAgICAgICAgICAgICBzYXZlKCk7DQoJCSAgICAgICAgICAgICAgICB9IGVsc2Ugew0KCQkgICAgICAgICAgICAgICAgICAgIGZzX2Vycm9yKCk7DQoJCSAgICAgICAgICAgICAgICB9DQoJCSAgICAgICAgICAgIH0pKTsNCgkJICAgICAgICB9KSwgZnNfZXJyb3IpOw0KCQkgICAgfSksIGZzX2Vycm9yKTsNCgkJfQ0KCQksIEZTX3Byb3RvID0gRmlsZVNhdmVyLnByb3RvdHlwZQ0KCQksIHNhdmVBcyA9IGZ1bmN0aW9uIChibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgew0KCQkgICAgcmV0dXJuIG5ldyBGaWxlU2F2ZXIoYmxvYiwgbmFtZSwgbm9fYXV0b19ib20pOw0KCQl9DQogICAgOw0KICAgIC8vIElFIDEwKyAobmF0aXZlIHNhdmVBcykNCiAgICBpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gInVuZGVmaW5lZCIgJiYgbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IpIHsNCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgew0KICAgICAgICAgICAgaWYgKCFub19hdXRvX2JvbSkgew0KICAgICAgICAgICAgICAgIGJsb2IgPSBhdXRvX2JvbShibG9iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihibG9iLCBuYW1lIHx8ICJkb3dubG9hZCIpOw0KICAgICAgICB9Ow0KICAgIH0NCg0KICAgIEZTX3Byb3RvLmFib3J0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICB2YXIgZmlsZXNhdmVyID0gdGhpczsNCiAgICAgICAgZmlsZXNhdmVyLnJlYWR5U3RhdGUgPSBmaWxlc2F2ZXIuRE9ORTsNCiAgICAgICAgZGlzcGF0Y2goZmlsZXNhdmVyLCAiYWJvcnQiKTsNCiAgICB9Ow0KICAgIEZTX3Byb3RvLnJlYWR5U3RhdGUgPSBGU19wcm90by5JTklUID0gMDsNCiAgICBGU19wcm90by5XUklUSU5HID0gMTsNCiAgICBGU19wcm90by5ET05FID0gMjsNCg0KICAgIEZTX3Byb3RvLmVycm9yID0NCglGU19wcm90by5vbndyaXRlc3RhcnQgPQ0KCUZTX3Byb3RvLm9ucHJvZ3Jlc3MgPQ0KCUZTX3Byb3RvLm9ud3JpdGUgPQ0KCUZTX3Byb3RvLm9uYWJvcnQgPQ0KCUZTX3Byb3RvLm9uZXJyb3IgPQ0KCUZTX3Byb3RvLm9ud3JpdGVlbmQgPQ0KCQludWxsOw0KDQogICAgcmV0dXJuIHNhdmVBczsNCn0oDQoJICAgdHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiICYmIHNlbGYNCgl8fCB0eXBlb2Ygd2luZG93ICE9PSAidW5kZWZpbmVkIiAmJiB3aW5kb3cNCgl8fCB0aGlzLmNvbnRlbnQNCikpOw0KLy8gYHNlbGZgIGlzIHVuZGVmaW5lZCBpbiBGaXJlZm94IGZvciBBbmRyb2lkIGNvbnRlbnQgc2NyaXB0IGNvbnRleHQNCi8vIHdoaWxlIGB0aGlzYCBpcyBuc0lDb250ZW50RnJhbWVNZXNzYWdlTWFuYWdlcg0KLy8gd2l0aCBhbiBhdHRyaWJ1dGUgYGNvbnRlbnRgIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHdpbmRvdw0KDQppZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMpIHsNCiAgICBtb2R1bGUuZXhwb3J0cy5zYXZlQXMgPSBzYXZlQXM7DQp9IGVsc2UgaWYgKCh0eXBlb2YgZGVmaW5lICE9PSAidW5kZWZpbmVkIiAmJiBkZWZpbmUgIT09IG51bGwpICYmIChkZWZpbmUuYW1kICE9IG51bGwpKSB7DQogICAgZGVmaW5lKFtdLCBmdW5jdGlvbiAoKSB7DQogICAgICAgIHJldHVybiBzYXZlQXM7DQogICAgfSk7DQp9DQoNCiAgICAgICAgdmFyIHZlcnNpb24gPSAnMC43LjUnOw0KICAgICAgICB2YXIgdXJsdmFycyA9IHt9Ow0KICAgICAgICB2YXIgYW10c3RhY2s7DQogICAgICAgIHZhciB3c3N0YWNrID0gbnVsbDsNCiAgICAgICAgdmFyIEFsbFdzbWFuID0gIkFNVF84MDIxeENyZWRlbnRpYWxDb250ZXh0LEFNVF84MDIxWFByb2ZpbGUsQU1UX0FjdGl2ZUZpbHRlclN0YXRpc3RpY3MsQU1UX0FnZW50UHJlc2VuY2VDYXBhYmlsaXRpZXMsQU1UX0FnZW50UHJlc2VuY2VJbnRlcmZhY2VQb2xpY3ksQU1UX0FnZW50UHJlc2VuY2VTZXJ2aWNlLEFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2csQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ0FjdGlvbixBTVRfQWxhcm1DbG9ja1NlcnZpY2UsSVBTX0FsYXJtQ2xvY2tPY2N1cnJlbmNlLEFNVF9Bc3NldFRhYmxlLEFNVF9Bc3NldFRhYmxlU2VydmljZSxBTVRfQXVkaXRMb2csQU1UX0F1ZGl0UG9saWN5UnVsZSxBTVRfQXV0aG9yaXphdGlvblNlcnZpY2UsQU1UX0Jvb3RDYXBhYmlsaXRpZXMsQU1UX0Jvb3RTZXR0aW5nRGF0YSxBTVRfQ29tcGxleEZpbHRlckVudHJ5QmFzZSxBTVRfQ1JMLEFNVF9DcnlwdG9ncmFwaGljQ2FwYWJpbGl0aWVzLEFNVF9FQUNDcmVkZW50aWFsQ29udGV4dCxBTVRfRW5kcG9pbnRBY2Nlc3NDb250cm9sU2VydmljZSxBTVRfRW52aXJvbm1lbnREZXRlY3Rpb25JbnRlcmZhY2VQb2xpY3ksQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEsQU1UX0V0aGVybmV0UG9ydFNldHRpbmdzLEFNVF9FdmVudExvZ0VudHJ5LEFNVF9FdmVudE1hbmFnZXJTZXJ2aWNlLEFNVF9FdmVudFN1YnNjcmliZXIsQU1UX0ZpbHRlckVudHJ5QmFzZSxBTVRfRmlsdGVySW5TeXN0ZW1EZWZlbnNlUG9saWN5LEFNVF9HZW5lcmFsU2V0dGluZ3MsQU1UX0dlbmVyYWxTeXN0ZW1EZWZlbnNlQ2FwYWJpbGl0aWVzLEFNVF9IZHI4MDIxRmlsdGVyLEFNVF9IZXVyaXN0aWNQYWNrZXRGaWx0ZXJJbnRlcmZhY2VQb2xpY3ksQU1UX0hldXJpc3RpY1BhY2tldEZpbHRlclNldHRpbmdzLEFNVF9IZXVyaXN0aWNQYWNrZXRGaWx0ZXJTdGF0aXN0aWNzLEFNVF9JbnRlcmZhY2VQb2xpY3ksQU1UX0lQSGVhZGVyc0ZpbHRlcixBTVRfS2VyYmVyb3NTZXR0aW5nRGF0YSxBTVRfTWFuYWdlbWVudFByZXNlbmNlUmVtb3RlU0FQLEFNVF9NZXNzYWdlTG9nLEFNVF9NUFNVc2VybmFtZVBhc3N3b3JkLEFNVF9OZXR3b3JrRmlsdGVyLEFNVF9OZXR3b3JrUG9ydERlZmF1bHRTeXN0ZW1EZWZlbnNlUG9saWN5LEFNVF9OZXR3b3JrUG9ydFN5c3RlbURlZmVuc2VDYXBhYmlsaXRpZXMsQU1UX05ldHdvcmtQb3J0U3lzdGVtRGVmZW5zZVBvbGljeSxBTVRfUENJRGV2aWNlLEFNVF9QRVRDYXBhYmlsaXRpZXMsQU1UX1BFVEZpbHRlckZvclRhcmdldCxBTVRfUEVURmlsdGVyU2V0dGluZyxBTVRfUHJvdmlzaW9uaW5nQ2VydGlmaWNhdGVIYXNoLEFNVF9QdWJsaWNLZXlDZXJ0aWZpY2F0ZSxBTVRfUHVibGljS2V5TWFuYWdlbWVudENhcGFiaWxpdGllcyxBTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2UsQU1UX1B1YmxpY1ByaXZhdGVLZXlQYWlyLEFNVF9SZWRpcmVjdGlvblNlcnZpY2UsQU1UX1JlbW90ZUFjY2Vzc0NhcGFiaWxpdGllcyxBTVRfUmVtb3RlQWNjZXNzQ3JlZGVudGlhbENvbnRleHQsQU1UX1JlbW90ZUFjY2Vzc1BvbGljeUFwcGxpZXNUb01QUyxBTVRfUmVtb3RlQWNjZXNzUG9saWN5UnVsZSxBTVRfUmVtb3RlQWNjZXNzU2VydmljZSxBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSxBTVRfU05NUEV2ZW50U3Vic2NyaWJlcixBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uLEFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5LEFNVF9TeXN0ZW1EZWZlbnNlUG9saWN5SW5TZXJ2aWNlLEFNVF9TeXN0ZW1EZWZlbnNlU2VydmljZSxBTVRfU3lzdGVtUG93ZXJTY2hlbWUsQU1UX1RoaXJkUGFydHlEYXRhU3RvcmFnZUFkbWluaXN0cmF0aW9uU2VydmljZSxBTVRfVGhpcmRQYXJ0eURhdGFTdG9yYWdlU2VydmljZSxBTVRfVGltZVN5bmNocm9uaXphdGlvblNlcnZpY2UsQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0LEFNVF9UTFNQcm90b2NvbEVuZHBvaW50LEFNVF9UTFNQcm90b2NvbEVuZHBvaW50Q29sbGVjdGlvbixBTVRfVExTU2V0dGluZ0RhdGEsQU1UX1RyYXBUYXJnZXRGb3JTZXJ2aWNlLEFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UsQU1UX1dlYlVJU2VydmljZSxBTVRfV2lGaVBvcnRDb25maWd1cmF0aW9uU2VydmljZSxDSU1fQWJzdHJhY3RJbmRpY2F0aW9uU3Vic2NyaXB0aW9uLENJTV9BY2NvdW50LENJTV9BY2NvdW50TWFuYWdlbWVudENhcGFiaWxpdGllcyxDSU1fQWNjb3VudE1hbmFnZW1lbnRTZXJ2aWNlLENJTV9BY2NvdW50T25TeXN0ZW0sQ0lNX0FkbWluRG9tYWluLENJTV9BbGVydEluZGljYXRpb24sQ0lNX0Fzc2lnbmVkSWRlbnRpdHksQ0lNX0Fzc29jaWF0ZWRQb3dlck1hbmFnZW1lbnRTZXJ2aWNlLENJTV9BdXRoZW50aWNhdGlvblNlcnZpY2UsQ0lNX0F1dGhvcml6YXRpb25TZXJ2aWNlLENJTV9CSU9TRWxlbWVudCxDSU1fQklPU0ZlYXR1cmUsQ0lNX0JJT1NGZWF0dXJlQklPU0VsZW1lbnRzLENJTV9Cb290Q29uZmlnU2V0dGluZyxDSU1fQm9vdFNlcnZpY2UsQ0lNX0Jvb3RTZXR0aW5nRGF0YSxDSU1fQm9vdFNvdXJjZVNldHRpbmcsQ0lNX0NhcGFiaWxpdGllcyxDSU1fQ2FyZCxDSU1fQ2hhc3NpcyxDSU1fQ2hpcCxDSU1fQ29sbGVjdGlvbixDSU1fQ29tcG9uZW50LENJTV9Db21wdXRlclN5c3RlbSxDSU1fQ29tcHV0ZXJTeXN0ZW1QYWNrYWdlLENJTV9Db25jcmV0ZUNvbXBvbmVudCxDSU1fQ29uY3JldGVEZXBlbmRlbmN5LENJTV9Db250cm9sbGVyLENJTV9Db29saW5nRGV2aWNlLENJTV9DcmVkZW50aWFsLENJTV9DcmVkZW50aWFsQ29udGV4dCxDSU1fQ3JlZGVudGlhbE1hbmFnZW1lbnRTZXJ2aWNlLENJTV9EZXBlbmRlbmN5LENJTV9EZXZpY2VTQVBJbXBsZW1lbnRhdGlvbixDSU1fRWxlbWVudENhcGFiaWxpdGllcyxDSU1fRWxlbWVudENvbmZvcm1zVG9Qcm9maWxlLENJTV9FbGVtZW50TG9jYXRpb24sQ0lNX0VsZW1lbnRTZXR0aW5nRGF0YSxDSU1fRWxlbWVudFNvZnR3YXJlSWRlbnRpdHksQ0lNX0VsZW1lbnRTdGF0aXN0aWNhbERhdGEsQ0lNX0VuYWJsZWRMb2dpY2FsRWxlbWVudCxDSU1fRW5hYmxlZExvZ2ljYWxFbGVtZW50Q2FwYWJpbGl0aWVzLENJTV9FdGhlcm5ldFBvcnQsQ0lNX0ZhbixDSU1fRmlsdGVyQ29sbGVjdGlvbixDSU1fRmlsdGVyQ29sbGVjdGlvblN1YnNjcmlwdGlvbixDSU1fSG9zdGVkQWNjZXNzUG9pbnQsQ0lNX0hvc3RlZERlcGVuZGVuY3ksQ0lNX0hvc3RlZFNlcnZpY2UsQ0lNX0lkZW50aXR5LENJTV9JRUVFODAyMXhDYXBhYmlsaXRpZXMsQ0lNX0lFRUU4MDIxeFNldHRpbmdzLENJTV9JbmRpY2F0aW9uLENJTV9JbmRpY2F0aW9uU2VydmljZSxDSU1fSW5zdGFsbGVkU29mdHdhcmVJZGVudGl0eSxDSU1fS1ZNUmVkaXJlY3Rpb25TQVAsQ0lNX0xBTkVuZHBvaW50LENJTV9MaXN0ZW5lckRlc3RpbmF0aW9uLENJTV9MaXN0ZW5lckRlc3RpbmF0aW9uV1NNYW5hZ2VtZW50LENJTV9Mb2NhdGlvbixDSU1fTG9nLENJTV9Mb2dFbnRyeSxDSU1fTG9naWNhbERldmljZSxDSU1fTG9naWNhbEVsZW1lbnQsQ0lNX0xvZ2ljYWxQb3J0LENJTV9Mb2dpY2FsUG9ydENhcGFiaWxpdGllcyxDSU1fTG9nTWFuYWdlc1JlY29yZCxDSU1fTWFuYWdlZENyZWRlbnRpYWwsQ0lNX01hbmFnZWRFbGVtZW50LENJTV9NYW5hZ2VkU3lzdGVtRWxlbWVudCxDSU1fTWVkaWFBY2Nlc3NEZXZpY2UsQ0lNX01lbWJlck9mQ29sbGVjdGlvbixDSU1fTWVtb3J5LENJTV9NZXNzYWdlTG9nLENJTV9OZXR3b3JrUG9ydCxDSU1fTmV0d29ya1BvcnRDYXBhYmlsaXRpZXMsQ0lNX05ldHdvcmtQb3J0Q29uZmlndXJhdGlvblNlcnZpY2UsQ0lNX09yZGVyZWRDb21wb25lbnQsQ0lNX093bmluZ0NvbGxlY3Rpb25FbGVtZW50LENJTV9Pd25pbmdKb2JFbGVtZW50LENJTV9QQ0lDb250cm9sbGVyLENJTV9QaHlzaWNhbENvbXBvbmVudCxDSU1fUGh5c2ljYWxFbGVtZW50LENJTV9QaHlzaWNhbEVsZW1lbnRMb2NhdGlvbixDSU1fUGh5c2ljYWxGcmFtZSxDSU1fUGh5c2ljYWxNZW1vcnksQ0lNX1BoeXNpY2FsUGFja2FnZSxDSU1fUG9saWN5LENJTV9Qb2xpY3lBY3Rpb24sQ0lNX1BvbGljeUNvbmRpdGlvbixDSU1fUG9saWN5SW5TeXN0ZW0sQ0lNX1BvbGljeVJ1bGUsQ0lNX1BvbGljeVJ1bGVJblN5c3RlbSxDSU1fUG9saWN5U2V0LENJTV9Qb2xpY3lTZXRBcHBsaWVzVG9FbGVtZW50LENJTV9Qb2xpY3lTZXRJblN5c3RlbSxDSU1fUG93ZXJNYW5hZ2VtZW50Q2FwYWJpbGl0aWVzLENJTV9Qb3dlck1hbmFnZW1lbnRTZXJ2aWNlLENJTV9Qb3dlclN1cHBseSxDSU1fUHJpdmlsZWdlLENJTV9Qcml2aWxlZ2VNYW5hZ2VtZW50Q2FwYWJpbGl0aWVzLENJTV9Qcml2aWxlZ2VNYW5hZ2VtZW50U2VydmljZSxDSU1fUHJvY2Vzc0luZGljYXRpb24sQ0lNX1Byb2Nlc3NvcixDSU1fUHJvdG9jb2xFbmRwb2ludCxDSU1fUHJvdmlkZXNTZXJ2aWNlVG9FbGVtZW50LENJTV9SZWFsaXplcyxDSU1fUmVjb3JkRm9yTG9nLENJTV9SZWNvcmRMb2csQ0lNX1JlZGlyZWN0aW9uU2VydmljZSxDSU1fUmVmZXJlbmNlZFByb2ZpbGUsQ0lNX1JlZ2lzdGVyZWRQcm9maWxlLENJTV9SZW1vdGVBY2Nlc3NBdmFpbGFibGVUb0VsZW1lbnQsQ0lNX1JlbW90ZUlkZW50aXR5LENJTV9SZW1vdGVQb3J0LENJTV9SZW1vdGVTZXJ2aWNlQWNjZXNzUG9pbnQsQ0lNX1JvbGUsQ0lNX1JvbGVCYXNlZEF1dGhvcml6YXRpb25TZXJ2aWNlLENJTV9Sb2xlQmFzZWRNYW5hZ2VtZW50Q2FwYWJpbGl0aWVzLENJTV9Sb2xlTGltaXRlZFRvVGFyZ2V0LENJTV9TQVBBdmFpbGFibGVGb3JFbGVtZW50LENJTV9TZWN1cml0eVNlcnZpY2UsQ0lNX1NlbnNvcixDSU1fU2VydmljZSxDSU1fU2VydmljZUFjY2Vzc0J5U0FQLENJTV9TZXJ2aWNlQWNjZXNzUG9pbnQsQ0lNX1NlcnZpY2VBZmZlY3RzRWxlbWVudCxDSU1fU2VydmljZUF2YWlsYWJsZVRvRWxlbWVudCxDSU1fU2VydmljZVNBUERlcGVuZGVuY3ksQ0lNX1NlcnZpY2VTZXJ2aWNlRGVwZW5kZW5jeSxDSU1fU2V0dGluZ0RhdGEsQ0lNX1NoYXJlZENyZWRlbnRpYWwsQ0lNX1NvZnR3YXJlRWxlbWVudCxDSU1fU29mdHdhcmVGZWF0dXJlLENJTV9Tb2Z0d2FyZUZlYXR1cmVTb2Z0d2FyZUVsZW1lbnRzLENJTV9Tb2Z0d2FyZUlkZW50aXR5LENJTV9TdGF0aXN0aWNhbERhdGEsQ0lNX1N0b3JhZ2VFeHRlbnQsQ0lNX1N5c3RlbSxDSU1fU3lzdGVtQklPUyxDSU1fU3lzdGVtQ29tcG9uZW50LENJTV9TeXN0ZW1EZXZpY2UsQ0lNX1N5c3RlbVBhY2thZ2luZyxDSU1fVXNlT2ZMb2csQ0lNX1dhdGNoZG9nLENJTV9XaUZpRW5kcG9pbnQsQ0lNX1dpRmlFbmRwb2ludENhcGFiaWxpdGllcyxDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MsQ0lNX1dpRmlQb3J0LENJTV9XaUZpUG9ydENhcGFiaWxpdGllcyxJUFNfQWRtaW5Qcm92aXNpb25pbmdSZWNvcmQsSVBTX0NsaWVudFByb3Zpc2lvbmluZ1JlY29yZCxJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlLElQU19Ib3N0SVBTZXR0aW5ncyxJUFNfSFRUUFByb3h5U2VydmljZSxJUFNfSFRUUFByb3h5QWNjZXNzUG9pbnQsSVBTX0lkZXJTZXNzaW9uVXNpbmdQb3J0LElQU19JUHY2UG9ydFNldHRpbmdzLElQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhLElQU19Ldm1TZXNzaW9uVXNpbmdQb3J0LElQU19NYW51YWxQcm92aXNpb25pbmdSZWNvcmQsSVBTX09wdEluU2VydmljZSxJUFNfUHJvdmlzaW9uaW5nQXVkaXRSZWNvcmQsSVBTX1Byb3Zpc2lvbmluZ1JlY29yZExvZyxJUFNfUmFzU2Vzc2lvblVzaW5nUG9ydCxJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UsSVBTX1NjcmVlblNldHRpbmdEYXRhLElQU19TZWNJT1NlcnZpY2UsSVBTX1Nlc3Npb25Vc2luZ1BvcnQsSVBTX1NvbFNlc3Npb25Vc2luZ1BvcnQsSVBTX1RMU1Byb3Zpc2lvbmluZ1JlY29yZCxJUFNfV2F0Y2hEb2dBY3Rpb24iLnNwbGl0KCcsJyk7DQogICAgICAgIHZhciBkaXNjb25uZWN0dXJsID0gbnVsbDsNCiAgICAgICAgdmFyIGN1cnJlbnRWaWV3ID0gMDsNCiAgICAgICAgdmFyIExvYWRpbmdIdG1sID0gIjxkaXYgc3R5bGU9dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MjBweD5Mb2FkaW5nLi4uPGRpdj4iOw0KICAgICAgICB2YXIgYW10dmVyc2lvbiA9IDA7DQogICAgICAgIHZhciBhbXR2ZXJzaW9ubWluID0gMDsNCiAgICAgICAgdmFyIGFtdEZpcnN0UHVsbCA9IDA7IC8vIEJpdG1hc2ssIFNldCB0aGlzIHdoZW4gdGhlIGZpcnN0IHB1bGwgcmVxdWVzdCBpcyBtYWRlIG9uIGEgZGV2aWNlOiAxID0gSGFyZHdhcmVJbmZvLCAyID0gV2lyZWxlc3NJbmZvLCA0ID0gU3lzdGVtRGVmZW5zZSwgOCA9IFN0b3JhZ2UsIDE2ID0gRXZlbnRMb2csIDMyID0gQXVkaXRMb2cNCg0KICAgICAgICB2YXIgYW10d2lyZWxlc3NpZiA9IC0xOyAvLyBTZXQgdG8gdGhlIGludGVyZmFjZSBpbmRleCBmb3IgdGhlIHdpcmVsZXNzIGludGVyZmFjZSwgLTEgaWYgbm8gd2lyZWxlc3MuDQogICAgICAgIHZhciB3ZWJjb21waWxlcmZlYXR1cmVzID0gWydBZ2VudFByZXNlbmNlJywnQWxhcm1zJywnQXVkaXRMb2cnLCdDZXJ0aWZpY2F0ZXMnLCdDb21wdXRlclNlbGVjdG9yVG9vbGJhcicsJ0Rlc2t0b3AtU2V0dGluZ3MnLCdFdmVudExvZycsJ0ZpbGVTYXZlcicsJ0hhcmR3YXJlSW5mbycsJ0xvb2stQ29tbWFuZGVyJywnTW9kZS1MTVMnLCdOZXR3b3JrU2V0dGluZ3MnLCdSZW1vdGVBY2Nlc3MnLCdTY3JpcHRpbmcnLCdTY3JpcHRpbmctRWRpdG9yJywnU3RvcmFnZScsJ1N5c3RlbURlZmVuc2UnLCdVU0JTZXR1cCcsJ1dpcmVsZXNzJ107DQogICAgICAgIHZhciBTdGF0dXNTdHJzID0gWydEaXNjb25uZWN0ZWQnLCAnQ29ubmVjdGluZy4uLicsICdTZXR1cC4uLicsICdDb25uZWN0ZWQnXTsNCg0KICAgICAgICB2YXIgc2NyaXB0c3RhdGU7DQoNCiAgICAgICAgdmFyIHNldHVwYmluOw0KICAgICAgICB2YXIgc2VsZWN0ZWRSZWNvcmQgPSAwOw0KICAgICAgICB2YXIgc2VsZWN0ZWRWYXJpYWJsZSA9IDA7DQoNCiAgICAgICAgdmFyIGFtdFBvd2VyUG9sbFRpbWVyID0gbnVsbDsNCg0KICAgICAgICB2YXIgbG1zID0gbnVsbDsNCiAgICAgICAgdmFyIHQsIHQyLCByc2VwYXNzID0gbnVsbDsgLy8gR2xvYmFsIHRlbXBvcmFyeSB2YXJpYWJsZQ0KDQogICAgICAgIGZ1bmN0aW9uIHN0YXJ0dXAoKSB7DQogICAgICAgICAgICAvLyBUaGlzIGlzIGEgYml0IGZyZWVreSwgYnV0IGFsbCBIVE1MIGlucHV0IGVsZW1lbnRzIGFyZSBqdXN0IGdvaW5nIHRvIGJlIGFjY2Vzc2libGUgZGlyZWN0bHkuDQogICAgICAgICAgICB2YXIgYWxsZWxlbWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsNCiAgICAgICAgICAgIGZvciAodCA9IDA7IHQgPCBhbGxlbGVtZW50cy5sZW5ndGg7IHQrKykgeyBpZiAoYWxsZWxlbWVudHNbdF0uaWQpIHsgd2luZG93W2FsbGVsZW1lbnRzW3RdLmlkXSA9IGFsbGVsZW1lbnRzW3RdOyB9IH0NCg0KDQogICAgICAgICAgICB1cmx2YXJzID0gZ2V0VXJsVmFycygpOw0KDQoNCg0KICAgICAgICAgICAgLy8gU2V0dXAgTE1TDQogICAgICAgICAgICBsbXMgPSBDcmVhdGVMbXNDb250cm9sKCk7DQogICAgICAgICAgICBsbXMub25TdGF0ZUNoYW5nZWQgPSBsbXNDaGFuZ2VkU3RhdGU7DQogICAgICAgICAgICBsbXMub25EYXRhID0gbG1zT25EYXRhOw0KICAgICAgICAgICAgbG1zLlN0YXJ0KCk7DQogICAgICAgICAgICBRSCgnaWRfbG1zRGF0YScsIExvYWRpbmdIdG1sKTsNCiAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhJywgJycpOw0KICAgICAgICAgICAgUUgoJ2lkX2NvbXB1dGVybmFtZScsICdDb25maWd1cmF0aW9uIENvbnNvbGUgdicgKyB2ZXJzaW9uKTsNCiAgICAgICAgICAgIGdvKDEwMSk7DQogICAgICAgICAgICBsbXNSZWZyZXNoKCk7DQoNCg0KDQoNCiAgICAgICAgICAgIC8vIE1hc3RlciBkcmFnICYgZHJvcA0KICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBoYWx0RXZlbnQsIGZhbHNlKTsNCiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIGhhbHRFdmVudCwgZmFsc2UpOw0KICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIGRvY3VtZW50RmlsZVNlbGVjdEhhbmRsZXIsIGZhbHNlKTsNCg0KDQogICAgICAgICAgICAvLyBTZXR1cCBUZXJtaW5hbCBkcmFnICYgZHJvcA0KICAgICAgICAgICAgUSgncDE2JykuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBoYWx0RXZlbnQsIGZhbHNlKTsNCiAgICAgICAgICAgIFEoJ3AxNicpLmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIGhhbHRFdmVudCwgZmFsc2UpOw0KICAgICAgICAgICAgUSgncDE2JykuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIGNlcnRfRmlsZVNlbGVjdEhhbmRsZXIsIGZhbHNlKTsNCg0KDQoNCg0KDQoNCg0KDQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQoNCiAgICAgICAgICAgIC8vIEFkZCBhbGwgcG9zc2libGUgdmFyaWFibGUgdHlwZXMgdG8gZGlhbG9nIDE2DQogICAgICAgICAgICB2YXIgb3B0aW9ucyA9ICcnOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBBbXRTZXR1cEJpblZhcklkcykgeyBmb3IgKHZhciBqIGluIEFtdFNldHVwQmluVmFySWRzW2ldKSB7IG9wdGlvbnMgKz0gJzxvcHRpb24gdmFsdWU9IicgKyBpICsgIi0iICsgaiArICciPicgKyBBbXRTZXR1cEJpblZhcklkc1tpXVtqXVsxXSB9IH0NCiAgICAgICAgICAgIFFIKCdkMTZ0eXBlJywgb3B0aW9ucyk7DQoNCiAgICAgICAgICAgIGRvY3VtZW50Lm9ua2V5dXAgPSBoYW5kbGVLZXlVcDsNCiAgICAgICAgICAgIGRvY3VtZW50Lm9ua2V5ZG93biA9IGhhbmRsZUtleURvd247DQogICAgICAgICAgICBkb2N1bWVudC5vbmtleXByZXNzID0gaGFuZGxlS2V5UHJlc3M7DQogICAgICAgICAgICB3aW5kb3cub25yZXNpemUgPSBjZW50ZXI7DQogICAgICAgICAgICBjZW50ZXIoKTsNCg0KDQoNCg0KICAgICAgICAgICAgc2NyaXB0TG9hZFN0YXJ0aW5nQmxvY2tzKCk7DQoNCg0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRGaWxlU2VsZWN0SGFuZGxlcihlKSB7DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgICAgICBpZiAoZS5kYXRhVHJhbnNmZXIgPT0gbnVsbCB8fCBlLmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggIT0gMSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIGYgPSBudWxsLCBmaWxlbmFtZSA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzWzBdLm5hbWUudG9Mb3dlckNhc2UoKTsNCg0KICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3ID09IDIxKSB7IFVwbG9hZFRvU3RvcmFnZShlLmRhdGFUcmFuc2Zlci5maWxlc1swXSwgZmlsZW5hbWUpOyByZXR1cm47IH0NCg0KICAgICAgICAgICAgaWYgKGN1cnJlbnRWaWV3ID09IDEwMiAmJiBmaWxlbmFtZS5lbmRzV2l0aCgnLmJpbicpKSB7IGYgPSB1c2Jfb25TZXR1cEJpblJlYWQ7IH0NCg0KICAgICAgICAgICAgaWYgKHdzc3RhY2sgIT0gbnVsbCAmJiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5tZXNjcmlwdCcpIHx8IGZpbGVuYW1lLmVuZHNXaXRoKCcubWVibG9ja3MnKSkpIHsgZiA9IHNjcmlwdF9vblNjcmlwdFJlYWQ7IH0NCiAgICAgICAgICAgIGlmIChmICE9IG51bGwpIHsgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7IHJlYWRlci5vbmxvYWQgPSBmOyByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGUuZGF0YVRyYW5zZmVyLmZpbGVzWzBdKTsgfQ0KICAgICAgICB9DQoNCg0KDQoNCiAgICAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIExNUyBjb250cm9sIGNoYW5uZWwgY2hhbmdlcyBzdGF0ZQ0KICAgICAgICBmdW5jdGlvbiBsbXNDaGFuZ2VkU3RhdGUoc2VuZGVyLCBzdGF0ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgLy9jb25zb2xlLmxvZygiTE1TIENvbnRyb2wgQ2hhbm5lbCBTdGF0ZTogIiArIHN0YXRlKTsNCiAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKSB7IA0KICAgICAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgICAgICBRVignaWRfbG1zVG9vbEJhckNvbnRlbnQnLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgUUgoJ2lkX2xtc0RhdGEnLCAnPGRpdiBzdHlsZT10ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDoyMHB4Pk1pY3JvTE1TIGRpc2Nvbm5lY3RlZC48ZGl2PicpOw0KICAgICAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhMicsICcnKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT0gMikgeyBRVignaWRfbG1zVG9vbEJhckNvbnRlbnQnLCB0cnVlKTsgbG1zUmVmcmVzaCgpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBsbXNMb2dpbigpIHsgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2F1dGhpbmRleC5odG1sJzsgfQ0KDQogICAgICAgIHZhciBsbXNQcm92aXNpb25pbmdTdGF0ZXMgPSBbJ1ByZS1Qcm92aXNpb25pbmcnLCAnSW4tUHJvdmlzaW9uaW5nJywgJ1Bvc3QtUHJvdmlzaW9uaW5nJ107DQogICAgICAgIHZhciBsbXNQcm92aXNpb25pbmdNb2RlcyA9IFsnTm9uZScsICdFbnRlcnByaXNlIE1vZGUnLCAnU21hbGwgQnVpc25lc3MgTW9kZScsICdSZW1vdGUgQXNzaXN0YW5jZSBNb2RlJ107DQogICAgICAgIHZhciBsbXNNZUluZm8gPSBudWxsOw0KICAgICAgICB2YXIgbG1zVGVtcCA9IG51bGw7DQogICAgICAgIHZhciBsbXNOb3RpZmljYXRpb25zID0gbnVsbDsNCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiBkYXRhIGlzIHJlY2VpdmVkIG9uIHRoZSBMTVMgY29udHJvbCBjaGFubmVsDQogICAgICAgIGZ1bmN0aW9uIGxtc09uRGF0YShzZW5kZXIsIGRhdGEpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBjbWRpZCA9IFJlYWRTaG9ydFgoZGF0YSwgMCk7DQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCJMTVMgQ29udHJvbCBDaGFubmVsIERhdGE6ICIgKyBkYXRhICsgIiwgY21kaWQ6IiArIGNtZGlkKTsNCg0KICAgICAgICAgICAgc3dpdGNoICgrY21kaWQpIHsNCiAgICAgICAgICAgICAgICBjYXNlIDE6IHsgLy8gTUUgSW5mb3JtYXRpb24NCiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZyhkYXRhLnN1YnN0cmluZygyKSk7DQogICAgICAgICAgICAgICAgICAgIHZhciBtZWluZm8gPSBKU09OLnBhcnNlKGRhdGEuc3Vic3RyaW5nKDIpKTsNCiAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0xvZ2luQnV0dG9uJywgbWVpbmZvWydMb2dpbk1vZGUnXSA9PSAxKTsNCg0KICAgICAgICAgICAgICAgICAgICAvLyBJZiBJbnRlbCBBTVQgaXMgaW4tYmV0d2VlbiBzdGF0ZXMsIHJlbG9hZCBkYXRhIGluIGEgZmV3IHNlY29uZHMuDQogICAgICAgICAgICAgICAgICAgIGlmICgobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10gIT0gbnVsbCkgJiYgKG1laW5mb1snUHJvdmlzaW9uaW5nTW9kZSddID09IC04NTg5OTM0NjApKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBRVignaWRfbG1zQ29uZmlndXJlQnV0dG9uJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0FjdGl2YXRlQnV0dG9uJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0RlYWN0aXZhdGVCdXR0b24nLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGxtc1JlZnJlc2gsIDEwMDApOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgbG1zTWVJbmZvID0gbWVpbmZvOw0KICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydQcm92aXNpb25pbmdTdGF0ZSddID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhJywgJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6MjBweD5JbnRlbCZyZWc7IEFNVCBub3QgZm91bmQ8ZGl2PicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUUgoJ2lkX2xtc0RhdGEyJywgJycpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgbWVpbmZvWydGbGFncyddID0gK21laW5mb1snRmxhZ3MnXTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSAnPGgyPkN1cnJlbnQgU3RhdHVzPC9oMj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZVN0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydQcm92aXNpb25pbmdTdGF0ZSddICE9IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkFjdGl2YXRpb24gc3RhdGUiLCBsbXNQcm92aXNpb25pbmdTdGF0ZXNbbWVpbmZvWydQcm92aXNpb25pbmdTdGF0ZSddXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZWluZm9bJ0ZsYWdzJ10gJiAyKSB7IHggKz0gVGFibGVFbnRyeSgnQWN0aXZhdGlvbiBzdGF0ZScsICdBY3RpdmF0ZWQgaW4gQ2xpZW50IENvbnRyb2wgTW9kZScpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobWVpbmZvWydGbGFncyddICYgNCkgeyB4ICs9IFRhYmxlRW50cnkoJ0FjdGl2YXRpb24gc3RhdGUnLCAnQWN0aXZhdGVkIGluIEFkbWluIENvbnRyb2wgTW9kZScpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IHggKz0gVGFibGVFbnRyeSgnQWN0aXZhdGlvbiBzdGF0ZScsICdBY3RpdmF0ZWQsICcgKyBsbXNQcm92aXNpb25pbmdNb2Rlc1ttZWluZm9bJ1Byb3Zpc2lvbmluZ01vZGUnXV0pOyB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoJ0ludGVsJnJlZzsgQU1UIHZlcnNpb24nLCBhZGRMaW5rKG1laW5mb1snVmVyc2lvbnMnXVsnQU1UJ10sICdsbXNTaG93VmVyc2lvbnNEbGcoKScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZWluZm9bJ01laVZlcnNpb24nXSAhPSBudWxsKSB7IHggKz0gVGFibGVFbnRyeSgnSW50ZWwmcmVnOyBNRUkgZHJpdmVyIHZlcnNpb24nLCBtZWluZm9bJ01laVZlcnNpb24nXSk7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbmQoKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1laW5mb1snUHJvdmlzaW9uaW5nU3RhdGUnXSAhPSAyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSAnPGgyPkFjdGl2YXRpb24gSW5mb3JtYXRpb248L2gyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZVN0YXJ0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1laW5mb1snRG5zU3VmZml4J10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCdUcnVzdGVkIEROUyBzdWZmaXgnLCBtZWluZm9bJ0Ruc1N1ZmZpeCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoJ1RydXN0ZWQgRE5TIHN1ZmZpeCcsICc8aT5Ob3QgU2V0PC9pPicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10gIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10ubGVuZ3RoID09IDEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgnVHJ1c3RlZCBoYXNoZXMnLCBhZGRMaW5rKG1laW5mb1snVHJ1c3RlZEhhc2hlcyddLmxlbmd0aCArICcgaGFzaCcsICdsbXNTaG93VHJ1c3RlZEhhc2hlc0RsZygpJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCdUcnVzdGVkIGhhc2hlcycsIGFkZExpbmsobWVpbmZvWydUcnVzdGVkSGFzaGVzJ10ubGVuZ3RoICsgJyBoYXNoZXMnLCAnbG1zU2hvd1RydXN0ZWRIYXNoZXNEbGcoKScpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW5kKCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhJywgeCk7DQogICAgICAgICAgICAgICAgICAgICAgICBRVignaWRfbG1zRGF0YTInLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxtc05vdGlmaWNhdGlvbnMgPSBtZWluZm9bJ05vdGlmaWNhdGlvbnMnXS5yZXZlcnNlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBsbXNSZWZyZXNoTm90aWZpY2F0aW9ucygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0NvbmZpZ3VyZUJ1dHRvbicsIChtZWluZm9bJ1Byb3Zpc2lvbmluZ1N0YXRlJ10gPT0gMikpOyAvLyBPbmx5IGRpc3BsYXkgdGhlICJMb2dpbi4uLiIgYnV0dG9uIGlmIEludGVsIEFNVCBpcyBpbiBwb3N0LXByb3Zpc2lvbmluZyBzdGF0ZS4NCiAgICAgICAgICAgICAgICAgICAgICAgIFFWKCdpZF9sbXNBY3RpdmF0ZUJ1dHRvbicsIChtZWluZm9bJ1Byb3Zpc2lvbmluZ1N0YXRlJ10gPT0gMCkgJiYgKG1laW5mb1snTG9naW5Nb2RlJ10gPj0gMikpOyAvLyBPbmx5IGRpc3BsYXkgdGhlICJBY3RpdmF0ZS4uLiIgYnV0dG9uIGlmIEludGVsIEFNVCBpcyBpbiBwcmUtcHJvdmlzaW9uaW5nIHN0YXRlIGFuZCB3ZSBhcmUgYWRybWluaXN0cmF0b3IuDQogICAgICAgICAgICAgICAgICAgICAgICBRVignaWRfbG1zRGVhY3RpdmF0ZUJ1dHRvbicsIChtZWluZm9bJ1Byb3Zpc2lvbmluZ1N0YXRlJ10gPT0gMikgJiYgKG1laW5mb1snRmxhZ3MnXSAmIDIpICYmIChtZWluZm9bJ0xvZ2luTW9kZSddID49IDIpKTsgLy8gT25seSBkaXNwbGF5IHRoZSAiRGVhY3RpdmF0ZS4uLiIgYnV0dG9uIGlmIEludGVsIEFNVCBpcyBpbiBwb3J0LXByb3Zpc2lvbmluZyBzdGF0ZSAmIGluIGNsaWVudCBjb250cm9sIG1vZGUgJiB3ZSBhcmUgYWRybWluaXN0cmF0b3IuDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgMjogeyAvLyBJbnRlbCBNRSBVbi1Qcm92aXNpb25pbmcNCiAgICAgICAgICAgICAgICAgICAgbG1zRGVhY3RpdmF0ZVgyKFJlYWRJbnRYKGRhdGEsIDIpKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgMzogeyAvLyBJbnRlbCBNRSBTeXN0ZW0gQWNjb3VudCBJbmZvcm1hdGlvbg0KICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gUmVhZEludFgoZGF0YSwgMik7DQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgQWN0aXZhdGlvbicsICdGYWlsZWQgdG8gZ2V0IGFjY291bnQgaW5mb3JtYXRpb24sIHN0YXR1cyAnICsgc3RhdHVzKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtZXVzZXIgPSBkYXRhLnN1YnN0cmluZyg2LCBkYXRhLmluZGV4T2YoJ1wwJywgNikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1lcGFzcyA9IGRhdGEuc3Vic3RyaW5nKDM5LCBkYXRhLmluZGV4T2YoJ1wwJywgMzkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgJ0ZldGNoaW5nIGFjdGl2YXRpb24gc3RhdHVzLi4uJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB3c3N0YWNrID0gV3NtYW5TdGFja0NyZWF0ZVNlcnZpY2UoImxvY2FsaG9zdCIsIDE2OTkyLCBtZXVzZXIsIG1lcGFzcywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgYW10c3RhY2sgPSBBbXRTdGFja0NyZWF0ZVNlcnZpY2Uod3NzdGFjayk7DQogICAgICAgICAgICAgICAgICAgICAgICBhbXRzdGFjay5vblByb2Nlc3NDaGFuZ2VkID0gb25Qcm9jZXNzQ2hhbmdlZDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLkJhdGNoRW51bShudWxsLCBbJypBTVRfR2VuZXJhbFNldHRpbmdzJywgJypJUFNfSG9zdEJhc2VkU2V0dXBTZXJ2aWNlJ10sIGxtc0FjdGl2YXRpb25YMSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGNhc2UgOTogeyAvLyBOZXcgbm90aWZpY2F0aW9uDQogICAgICAgICAgICAgICAgICAgIHZhciBub3RpZmljYXRpb24gPSBKU09OLnBhcnNlKGRhdGEuc3Vic3RyaW5nKDIpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGxtc05vdGlmaWNhdGlvbnMgPT0gbnVsbCkgeyBsbXNOb3RpZmljYXRpb25zID0gW107IH0NCiAgICAgICAgICAgICAgICAgICAgbG1zTm90aWZpY2F0aW9ucy51bnNoaWZ0KG5vdGlmaWNhdGlvbik7DQogICAgICAgICAgICAgICAgICAgIGxtc1JlZnJlc2hOb3RpZmljYXRpb25zKCk7DQogICAgICAgICAgICAgICAgICAgIGlmICgobm90aWZpY2F0aW9uLmNvZGUgPT0gJ2lBTVQwMDU1LTAnKSB8fCAobm90aWZpY2F0aW9uLmNvZGUgPT0gJ2lBTVQwMDU1LTEnKSB8fCAobm90aWZpY2F0aW9uLmNvZGUgPT0gJ2lBTVQwMDU1LTInKSkgeyBzZXREaWFsb2dNb2RlKCk7IGxtc1JlZnJlc2goKTsgfQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBsbXNSZWZyZXNoTm90aWZpY2F0aW9ucygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gJzxoMj5Ob3RpZmljYXRpb25zPC9oMj4nICsgVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgaWYgKGxtc05vdGlmaWNhdGlvbnMgJiYgbG1zTm90aWZpY2F0aW9ucy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBsbXNOb3RpZmljYXRpb25zKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBuID0gbG1zTm90aWZpY2F0aW9uc1tpXSwgdiA9IG4uc3RyOw0KICAgICAgICAgICAgICAgICAgICBpZiAobi5jb2RlICE9ICdpQU1UMDA1MC0zMicpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2LmluZGV4T2YoJ1VzZXIgTm90aWZpY2F0aW9uIEFsZXJ0IC0gJykgPT0gMCkgeyB2ID0gdi5zdWJzdHJpbmcoMjYpOyB9DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkobmV3IERhdGUobi5kYXRlKS50b0xvY2FsZVN0cmluZygpLCB2KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgeCArPSAiPHRyPjx0ZCBzdHlsZT1wYWRkaW5nOjhweD48aT5ObyBub3RpZmljYXRpb25zIGZvdW5kLjwvaT48dGQ+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoKTsNCiAgICAgICAgICAgIFFIKCdpZF9sbXNEYXRhMicsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbG1zQWN0aXZhdGlvblgxKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdJbnRlbCZyZWc7IEFNVCBBY3RpdmF0aW9uJywgJ0ZhaWxlZCB0byBmZXRjaCBhY3RpdmF0aW9uIHN0YXR1cywgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZXNbJ0lQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2UnXS5yZXNwb25zZVsnQWxsb3dlZENvbnRyb2xNb2RlcyddLmxlbmd0aCAhPSAyKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgQWN0aXZhdGlvbicsICdDbGllbnQgY29udHJvbCBtb2RlIGFjdGl2YXRpb24gbm90IGFsbG93ZWQnKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgbG1zVGVtcCA9IHJlc3BvbnNlc1snQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlOw0KICAgICAgICAgICAgICAgIGFtdHN0YWNrLklQU19Ib3N0QmFzZWRTZXR1cFNlcnZpY2VfU2V0dXAoMiwgcnN0cjJoZXgocnN0cl9tZDUoJ2FkbWluOicgKyByZXNwb25zZXNbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsnRGlnZXN0UmVhbG0nXSArICc6JyArIGQ0cGFzc3dvcmQudmFsdWUpKSwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbG1zQWN0aXZhdGlvblgyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGxtc0FjdGl2YXRpb25YMihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDAgfHwgcmVzcG9uc2UuQm9keVsnUmV0dXJuVmFsdWUnXSAhPSAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgQWN0aXZhdGlvbicsICdGYWlsZWQgYWN0aXZhdGlvbiwgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBzZXREaWFsb2dNb2RlKCk7DQogICAgICAgICAgICAgICAgbG1zUmVmcmVzaCgpOw0KICAgICAgICAgICAgICAgIGxtc1RlbXBbJ0hvc3ROYW1lJ10gPSBsbXNNZUluZm9bJ09zSG9zdG5hbWUnXTsgLy8gU2V0IHRoZSBPUyBob3N0bmFtZQ0KICAgICAgICAgICAgICAgIC8vIFRPRE86IEFsc28gc2V0IHRoZSBsb2NhbCBGUUROIGlmIHdlIGNhbiBnZXQgaXQgZnJvbSBMTVMNCiAgICAgICAgICAgICAgICB3c3N0YWNrID0gV3NtYW5TdGFja0NyZWF0ZVNlcnZpY2UoJ2xvY2FsaG9zdCcsIDE2OTkyLCAnYWRtaW4nLCBkNHBhc3N3b3JkLnZhbHVlLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgYW10c3RhY2sgPSBBbXRTdGFja0NyZWF0ZVNlcnZpY2Uod3NzdGFjayk7DQogICAgICAgICAgICAgICAgYW10c3RhY2sub25Qcm9jZXNzQ2hhbmdlZCA9IG9uUHJvY2Vzc0NoYW5nZWQ7DQogICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfR2VuZXJhbFNldHRpbmdzJywgbG1zVGVtcCwgZnVuY3Rpb24oKSB7IH0sIDAsIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbG1zRGVhY3RpdmF0ZSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgbG1zLlN0YXRlICE9IDIpIHJldHVybjsNCiAgICAgICAgICAgIFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgJ0NvbmZpcm0gSW50ZWwmcmVnOyBBTVQgZGVhY3RpdmF0aW9uPycpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxLCAiSW50ZWwmcmVnOyBBTVQgRGVhY3RpdmF0aW9uIiwgMywgbG1zRGVhY3RpdmF0ZVgxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGxtc0RlYWN0aXZhdGVYMSgpIHsNCiAgICAgICAgICAgIHN0YXR1c2JveCgnSW50ZWwmcmVnOyBBTVQgRGVhY3RpdmF0aW9uJywgJ0RlYWN0aXZhdGluZyBJbnRlbCZyZWc7IEFNVC4uLicpDQogICAgICAgICAgICBsbXMuU2VuZENtZCgyLCBJbnRUb1N0clgoMSkpOyAvLyBTZW5kIHJlcXVlc3QgZm9yIGRlYWN0aXZhdGlvbg0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbG1zRGVhY3RpdmF0ZVgyKHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnSW50ZWwmcmVnOyBBTVQgRGVhY3RpdmF0aW9uJywgJ0ZhaWxlZCBkZWFjdGl2YXRpb24sIHN0YXR1cyAnICsgc3RhdHVzKQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBRSCgnaWRfbG1zRGF0YScsICdQbGVhc2Ugd2FpdCBmb3IgZGVhY3RpdmF0aW9uLi4uJyk7DQogICAgICAgICAgICAgICAgUVYoJ2lkX2xtc0RhdGEyJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgICAgICBsbXNSZWZyZXNoKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBSZWZyZXNoIGJ1dHRvbiBvbiB0aGUgVUkNCiAgICAgICAgZnVuY3Rpb24gbG1zUmVmcmVzaCgpIHsNCiAgICAgICAgICAgIGlmIChsbXMuU3RhdGUgIT0gMikgcmV0dXJuOw0KICAgICAgICAgICAgbG1zLlNlbmRDbWQoMSwgIiIpOyAvLyBTZW5kIHRoZSByZXF1ZXN0IGJhc2ljIGluZm9ybWF0aW9uIGNvbW1hbmQNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENvbmZpZ3VyZSBidXR0b24gb24gdGhlIFVJDQogICAgICAgIGZ1bmN0aW9uIGxtc0NvbmZpZ3VyZSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoNCwgJ0ludGVsJnJlZzsgQU1UIExvZ2luJywgMywgZnVuY3Rpb24gKCkgeyBsbXNDb25maWd1cmVMb2dpbigpOyB9KTsNCiAgICAgICAgICAgIC8vZDR1c2VybmFtZS5yZWFkT25seSA9IGZhbHNlOw0KICAgICAgICAgICAgZDR1c2VybmFtZS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKGQ0dXNlcm5hbWUudmFsdWUgPT0gJ2FkbWluJykgZDR1c2VybmFtZS52YWx1ZSA9ICcnOw0KICAgICAgICAgICAgaW5wdXRCb3hGb2N1cygnZDR1c2VybmFtZScpOw0KICAgICAgICAgICAgbG1zVXBkYXRlTG9naW5EaWFsb2coKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSB1c2VyIGhpdHMgT0sgb24gdGhlIGxvZ2luIGRpYWxvZw0KICAgICAgICBmdW5jdGlvbiBsbXNDb25maWd1cmVMb2dpbigpIHsNCiAgICAgICAgICAgIHZhciB1c2VyID0gZDR1c2VybmFtZS52YWx1ZTsNCiAgICAgICAgICAgIGlmICh1c2VyID09ICcnKSB1c2VyID0gJ2FkbWluJzsNCiAgICAgICAgICAgIGNvbm5lY3QoJ2xvY2FsaG9zdCcsIDE2OTkyLCB1c2VyLCBkNHBhc3N3b3JkLnZhbHVlLCAwKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEFjdGl2YXRlIGJ1dHRvbiBvbiB0aGUgVUkNCiAgICAgICAgZnVuY3Rpb24gbG1zQWN0aXZhdGUoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlfHwgbG1zLlN0YXRlICE9IDIpIHJldHVybjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoNCwgJ0ludGVsJnJlZzsgQU1UIEFjdGl2YXRpb24nLCAzLCBmdW5jdGlvbiAoKSB7IGxtc0FjdGl2YXRlRXgoKTsgfSk7DQogICAgICAgICAgICAvL2Q0dXNlcm5hbWUucmVhZE9ubHkgPSB0cnVlOw0KICAgICAgICAgICAgZDR1c2VybmFtZS5kaXNhYmxlZCA9IHRydWU7DQogICAgICAgICAgICBkNHVzZXJuYW1lLnZhbHVlID0gJ2FkbWluJzsNCiAgICAgICAgICAgIGlucHV0Qm94Rm9jdXMoJ2Q0cGFzc3dvcmQnKTsNCiAgICAgICAgICAgIGxtc1VwZGF0ZUxvZ2luRGlhbG9nKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBHbyBoZWFkIHdpdGggSW50ZWwgQU1UIGNsaWVudCBjb250cm9sIG1vZGUgYWN0aXZhdGlvbg0KICAgICAgICBmdW5jdGlvbiBsbXNBY3RpdmF0ZUV4KCkNCiAgICAgICAgew0KICAgICAgICAgICAgbG1zLlNlbmRDbWQoMyk7IC8vIFNlbmQgcmVxdWVzdCBmb3IgYWNjb3VudCBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgc3RhdHVzYm94KCdJbnRlbCZyZWc7IEFNVCBBY3RpdmF0aW9uJywgJ0ZldGNoaW5nIEFjY291bnQgSW5mb3JtYXRpb24uLi4nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCBlYWNoIHRpbWUgc29tZXRoaW5nIGNoYW5nZXMgaW4gdGhlIGxvZ2luIGRpYWxvZw0KICAgICAgICBmdW5jdGlvbiBsbXNVcGRhdGVMb2dpbkRpYWxvZyhlLCBkKSB7DQogICAgICAgICAgICB2YXIgb2sgPSBwYXNzd29yZGNoZWNrKGQ0cGFzc3dvcmQudmFsdWUpOw0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgICAgIGlmIChlICE9IG51bGwgJiYgZS5rZXlDb2RlID09IDEzICYmIGQgPT0gMSkgaW5wdXRCb3hGb2N1cygnZDRwYXNzd29yZCcpOw0KICAgICAgICAgICAgaWYgKG9rID09IHRydWUgJiYgZSAhPSBudWxsICYmIGUua2V5Q29kZSA9PSAxMyAmJiBkID09IDIpIGRpYWxvZ2Nsb3NlKDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGxtc0hhc2hBcmdTdHJpbmdzID0gWyJNRDUiLCAiU0hBMSIsICJTSEEyNTYiLCAiU0hBNTEyIl07DQogICAgICAgIGZ1bmN0aW9uIGxtc1Nob3dUcnVzdGVkSGFzaGVzRGxnKCkgew0KICAgICAgICAgICAgLy8ge1wiQUNcIjolZCxcIkRGXCI6JWQsXCJBTFwiOiVkLFwiTkFcIjpcIiVzXCIsXCJIQVwiOlwiJXNcIn0iDQoNCiAgICAgICAgICAgIHZhciB4ID0gIjxkaXYgc3R5bGU9bWF4LWhlaWdodDoyNDBweDtvdmVyZmxvdy15OnNjcm9sbD4iICsgVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBsbXNNZUluZm9bJ1RydXN0ZWRIYXNoZXMnXSkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAvL3ggKz0gIjxiPiIgKyBsbXNNZUluZm9bJ1RydXN0ZWRIYXNoZXMnXVtpXVsnTmFtZSddICsgIjwvYj48YnI+PHNwYW4gc3R5bGU9Zm9udC1zaXplOjEwcHg+IiArIGxtc0hhc2hBcmdTdHJpbmdzW2xtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydIYXNoQWxnb3JpdGhtJ11dICsgKGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydBY3RpdmUnXSA9PSAxPyIsIEFjdGl2ZSI6IiIpICsgKGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydEZWZhdWx0J10gPT0gMT8iLCBEZWZhdWx0IjoiIikgKyAiPC9zcGFuPjxicj48c3BhbiBzdHlsZT1mb250LXNpemU6MTBweD4iICsgbG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0hhc2gnXSArICI8L3NwYW4+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiPGI+IiArIGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydOYW1lJ10gKyAiPC9iPjxicj48c3BhbiBzdHlsZT1mb250LXNpemU6MTBweD4iICsgbG1zSGFzaEFyZ1N0cmluZ3NbbG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0hhc2hBbGdvcml0aG0nXV0gKyAobG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0FjdGl2ZSddID09IDE/IiwgQWN0aXZlIjoiIikgKyAobG1zTWVJbmZvWydUcnVzdGVkSGFzaGVzJ11baV1bJ0RlZmF1bHQnXSA9PSAxPyIsIERlZmF1bHQiOiIiKSArICI8L3NwYW4+PGJyPjxzcGFuIHN0eWxlPWZvbnQtc2l6ZTo4cHg+IiArIGxtc01lSW5mb1snVHJ1c3RlZEhhc2hlcyddW2ldWydIYXNoJ10gKyAiPC9zcGFuPiIsICIiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoKSArICI8L2Rpdj4iOw0KICAgICAgICAgICAgbWVzc2FnZWJveCgiSW50ZWwmcmVnOyBBTVQgVHJ1c3RlZCBIYXNoZXMiLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGxtc1Nob3dWZXJzaW9uc0RsZygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJbnRlbCZyZWc7IEFNVCIsIGxtc01lSW5mb1snVmVyc2lvbnMnXVsnQU1UJ10pOw0KICAgICAgICAgICAgaWYgKGxtc01lSW5mb1snTWVpVmVyc2lvbiddICE9IG51bGwpIHsgeCArPSBUYWJsZUVudHJ5KCJJbnRlbCZyZWc7IE1FSSBkcml2ZXIiLCBsbXNNZUluZm9bJ01laVZlcnNpb24nXSk7IH0NCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gbG1zTWVJbmZvWydWZXJzaW9ucyddKSB7IGlmIChpICE9ICdBTVQnKSB4ICs9IFRhYmxlRW50cnkoaSwgbG1zTWVJbmZvWydWZXJzaW9ucyddW2ldKTsgfQ0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgbWVzc2FnZWJveCgiSW50ZWwmcmVnOyBBTVQgVmVyc2lvbnMiLCB4KTsNCiAgICAgICAgfQ0KDQoNCg0KICAgICAgICBmdW5jdGlvbiBjbGVhbnVwKCkgew0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaGFuZGxlS2V5VXAoZSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaGFuZGxlS2V5RG93bihlKSB7DQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdoYW5kbGVLZXlEb3duJywgZSk7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBoYW5kbGVLZXlQcmVzcyhlKSB7DQogICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdoYW5kbGVLZXlQcmVzcycsIGUpOw0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGNvbm5lY3RGdW5jID0gbnVsbDsNCiAgICAgICAgdmFyIGNvbm5lY3RGdW5jVGFnID0gbnVsbDsNCiAgICAgICAgZnVuY3Rpb24gY29ubmVjdChob3N0LCBwb3J0LCB1c2VyLCBwYXNzLCB0bHMsIGZ1bmMsIGZ1bmN0YWcpIHsNCiAgICAgICAgICAgIGdvKDApOw0KICAgICAgICAgICAgZnVsbHNjcmVlbm9ubHkgPSBmYWxzZTsNCiAgICAgICAgICAgIGNvbm5lY3RGdW5jID0gZnVuYzsNCiAgICAgICAgICAgIGNvbm5lY3RGdW5jVGFnID0gZnVuY3RhZzsNCg0KDQoNCiAgICAgICAgICAgIHdzc3RhY2sgPSBXc21hblN0YWNrQ3JlYXRlU2VydmljZShob3N0LCBwb3J0LCB1c2VyLCBwYXNzLCB0bHMpOw0KICAgICAgICAgICAgYW10c3RhY2sgPSBBbXRTdGFja0NyZWF0ZVNlcnZpY2Uod3NzdGFjayk7DQogICAgICAgICAgICBhbXRzdGFjay5vblByb2Nlc3NDaGFuZ2VkID0gb25Qcm9jZXNzQ2hhbmdlZDsNCg0KICAgICAgICAgICAgLy8gU2V0dXAgVExTIGNoZWNraW5nDQoNCiAgICAgICAgICAgIC8vIEhpZGUgVExTIGluZGljYXRvcg0KDQogICAgICAgICAgICAvLyBIaWRlIG1vc3Qgb2YgdGhlIGxlZnQgbWVudSBvcHRpb25zLCB3ZSB3aWxsIHNlZSB0aGVtIGFzIHdlIGxvYWQgZGF0YQ0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPCAyNTsgaSsrKSB7IFFWKCdnbycgKyBpLCBmYWxzZSk7IH0NCiAgICAgICAgICAgIFFWKCdnbzgnLCB0cnVlKTsgLy8gTmV0d29yayBTZXR0aW5ncw0KICAgICAgICAgICAgLy9RVignZ28xNScsIGZhbHNlKTsgLy8gQXVkaXQgTG9nDQoNCiAgICAgICAgICAgIC8vUVYoJ2dvMTYnLCBmYWxzZSk7IC8vIFNlY3VyaXR5IFNldHRpbmdzDQoNCiAgICAgICAgICAgIC8vUVYoJ2dvMTcnLCBmYWxzZSk7IC8vIFJlbW90ZSBBY2Nlc3MNCg0KICAgICAgICAgICAgUVYoJ2dvMjAnLCB0cnVlKTsgLy8gU2NyaXB0aW5nIEVkaXRvcg0KDQoNCg0KICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGRpc3BsYXllZCBwb3dlciBzdGF0ZQ0KDQogICAgICAgICAgICAvLyBDbGVhciBldmVyeXRoaW5nLCBtYWtlIHN1cmUgYWxsIGNvbm5lY3Rpb24gc3RhdGUgaXMgcmVzZXQuDQogICAgICAgICAgICBhbXR2ZXJzaW9uID0gYW10dmVyc2lvbm1pbiA9IGFtdEZpcnN0UHVsbCA9IDA7DQogICAgICAgICAgICBhbXRzeXNzdGF0ZSA9IGFtdGRlbHRhdGltZSA9IGFtdGxvZ2ljYWxlbGVtZW50cyA9IEhhcmR3YXJlSW52ZW50b3J5ID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgYW10UG93ZXJCb290Q2FwYWJpbGl0aWVzID0gbnVsbDsNCiAgICAgICAgICAgIHh4QWNjb3VudEZldGNoID0gOTk5Ow0KDQogICAgICAgICAgICAvLyBTaG93IGxvYWRpbmcgb24gYWxsIHBhbmVscw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzU3RhdHVzJywgTG9hZGluZ0h0bWwpOw0KDQogICAgICAgICAgICBRSCgnaWRfVGFibGVOZXR3b3JrU2V0dGluZ3NTcGFuJywgTG9hZGluZ0h0bWwpOw0KICAgICAgICAgICAgYW10d2lyZWxlc3NpZiA9IC0xOw0KDQogICAgICAgICAgICB4eFdpcmVsZXNzID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlV2lmaTInLCAnJyk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c0luZm8nLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIHh4QWNjb3VudEFkbWluTmFtZSA9IG51bGw7DQogICAgICAgICAgICB4eEFjY291bnRSZWFsbUluZm8gPSB7fTsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVVzZXJBY2NvdW50cycsIExvYWRpbmdIdG1sKTsNCg0KICAgICAgICAgICAgZXZlbnRtZXNzYWdlcyA9IG51bGw7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVFdmVudExvZycsJycpOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlRXZlbnRMb2cyJyxMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIGF1ZGl0TG9nID0gbnVsbDsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZUF1ZGl0TG9nMScsICcnKTsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZUF1ZGl0TG9nMicsIExvYWRpbmdIdG1sKTsNCg0KICAgICAgICAgICAgeHhDZXJ0aWZpY2F0ZXMgPSBudWxsOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlQ2VydHMnLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIHh4UmVtb3RlQWNjZXNzID0gbnVsbDsNCiAgICAgICAgICAgIHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID0gbnVsbDsNCiAgICAgICAgICAgIHh4Q2lyYVNlcnZlcnMgPSBudWxsOw0KICAgICAgICAgICAgeHhVc2VySW5pdGlhdGVkQ2lyYSA9IG51bGw7DQogICAgICAgICAgICB4eFJlbW90ZUFjY2Vzc0NyZWRlbnRpYUxpbmtzID0gbnVsbDsNCiAgICAgICAgICAgIHh4TVBTVXNlclBhc3MgPSBudWxsOw0KICAgICAgICAgICAgeHhQb2xpY2llcyA9IG51bGw7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVSZW1vdGVBY2Nlc3MnLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c3RlbUFnZW50UHJlc2VuY2UnLCBMb2FkaW5nSHRtbCk7DQoNCiAgICAgICAgICAgIHh4U3lzdGVtRGVmZW5zZSA9IG51bGw7DQogICAgICAgICAgICB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3kgPSB7fTsNCiAgICAgICAgICAgIHh4VXBkYXRpbmdEZWZlbnNlU3RhdHMgPSBmYWxzZTsNCiAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljcyA9IFt7fSwge31dOyAvLyBXaXJlZCBhbmQgd2lyZWxlc3MgaW50ZXJmYWNlIHN0YXRzDQogICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lciA9IG51bGw7DQogICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzdGVtRGVmZW5zZScsIExvYWRpbmdIdG1sKTsNCg0KDQogICAgICAgICAgICAvLyBTdGFydCBwdWxsaW5nIEludGVsIEFNVCBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKCIiLCBbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5IiwgIipBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSJdLCBwcm9jZXNzU3lzdGVtVmVyc2lvbik7IC8vIEdldCBJbnRlbCBBTVQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgcGxlbnR5IG1vcmUNCiAgICAgICAgICAgIC8vYW10c3RhY2suRW51bSgiQ0lNX0xvZ2ljYWxFbGVtZW50IiwgcHJvY2Vzc1N5c3RlbVZlcnNpb24pOyAvLyBHZXQgSW50ZWwgQU1UIHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIHBsZW50eSBtb3JlDQoNCg0KDQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBkaXNjb25uZWN0KCkgew0KDQoNCg0KDQoNCg0KICAgICAgICAgICAgU3RvcERlZmVuc2VTdGF0c1RpbWVyKCk7DQoNCg0KICAgICAgICAgICAgc2NyaXB0X1N0b3AoKTsNCg0KICAgICAgICAgICAgYnJlYWtTY3JpcHRCdXR0b24oKTsNCg0KICAgICAgICAgICAgZGlhbG9nY2xvc2UoMCk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9jb21wdXRlcm5hbWUnLCAnJyk7DQogICAgICAgICAgICBpZiAoYW10c3RhY2spIHsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5vblByb2Nlc3NDaGFuZ2VkID0gbnVsbDsgLy8gVW4taG9vayBwcm9ncmVzcyBpbmRpY2F0b3INCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DYW5jZWxBbGxRdWVyaWVzKDk5OSk7IC8vIEZhaWwgYWxsIHBlbmRpbmcgV1NNQU4gY2FsbHMuIFNldCB0byA5OTkgdG8gaW5kaWNhdGUgbm90IHRvIGNhbGwgYmFjayBhbnkgb2YgdGhlIHBlbmRpbmcgY2FsbHMgd2l0aCBlcnJvcnMuDQogICAgICAgICAgICAgICAgYW10c3RhY2sgPSBudWxsOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY2xlYW51cCgpOw0KICAgICAgICAgICAgd3NzdGFjayA9IG51bGw7DQogICAgICAgICAgICBkZWxldGUgYW10c3RhY2s7DQogICAgICAgICAgICBvblByb2Nlc3NDaGFuZ2VkKDAsIDEpOw0KICAgICAgICAgICAgZ28oMTAxKTsNCg0KDQoNCiAgICAgICAgICAgIFFIKCdpZF9jb21wdXRlcm5hbWUnLCAnUmVtb3RlIE1hbmFnZW1lbnQgQ29uc29sZSB2JyArIHZlcnNpb24pOw0KICAgICAgICAgICAgDQoNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIG9uUHJvY2Vzc0NoYW5nZWQoYSwgYikgew0KICAgICAgICAgICAgUVMoJ2lkX3Byb2dyZXNzYmFyJykud2lkdGggPSAoKGEgKiAxMDApIC8gYikgKyAiJSI7DQogICAgICAgICAgICBpZiAoYSA9PSAwKSByZWZyZXNoQnV0dG9ucyh0cnVlKTsgLy8gSWYgbm90aGluZyBpcyBiZWluZyBkb25lLCByZS1lbmFibGUgcmVmcmVzaCBidXR0b25zDQoNCg0KICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm90aGluZyBiZWluZyBkb25lIG5vdywgc2VlIGlmIHdlIGNhbiBwdWxsIG1vcmUgaW5mb3JtYXRpb24NCiAgICAgICAgICAgIGlmIChhICE9IDAgfHwgIWFtdHN0YWNrKSByZXR1cm47DQogICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiAwKSAmJiAoKGFtdEZpcnN0UHVsbCAmIDY0KSA9PSAwKSkgew0KICAgICAgICAgICAgICAgIGFtdEZpcnN0UHVsbCB8PSA2NDsNCiAgICAgICAgICAgICAgICBQdWxsUG93ZXJQb2xpY3koKTsNCg0KICAgICAgICAgICAgICAgIFB1bGxXYXRjaGRvZygpOw0KDQoNCiAgICAgICAgICAgICAgICBzY3JpcHRWaWV3QnV0dG9uKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrcz8xOjApOw0KDQogICAgICAgICAgICAgICAgaWYgKGFtdHZlcnNpb24gPiA1KSB7DQoNCiAgICAgICAgICAgICAgICAgICAgUHVsbENlcnRpZmljYXRlcygpOw0KDQogICAgICAgICAgICAgICAgICAgIFB1bGxSZW1vdGVBY2Nlc3MoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoKGFtdEZpcnN0UHVsbCAmIDEpID09IDApIHsgUHVsbEhhcmR3YXJlKCk7IHJldHVybjsgfQ0KDQogICAgICAgICAgICBpZiAoKGFtdEZpcnN0UHVsbCAmIDE2KSA9PSAwKSB7IFB1bGxFdmVudExvZygpOyByZXR1cm47IH0NCg0KICAgICAgICAgICAgaWYgKChhbXRGaXJzdFB1bGwgJiAzMikgPT0gMCkgeyBQdWxsQXVkaXRMb2coKTsgcmV0dXJuOyB9DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIHRvb2xtZW51Y2xpY2soeCkgew0KICAgICAgICAgICAgUVYoJ2lkX21lbnVpdGVtMScsIGN1cnJlbnRWaWV3ID09IDEwMSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF9tZW51aXRlbTInLCBjdXJyZW50VmlldyA9PSAxMDIpOw0KDQogICAgICAgICAgICB2YXIgZCA9IChRUygnaWRfY29tcHV0ZXJTZWxlY3Rvck1lbnUnKS5kaXNwbGF5ID09ICdub25lJyk7DQogICAgICAgICAgICBpZiAoZCA9PSB0cnVlICYmIHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgeHhkaWFsb2dNb2RlID0gKGQgPT0gdHJ1ZSk/OTk5OnVuZGVmaW5lZDsNCiAgICAgICAgICAgIFFWKCdpZF9jb21wdXRlclNlbGVjdG9yTWVudScsIGQpOw0KICAgICAgICAgICAgaWYgKHggPT0gMCkgcmV0dXJuOw0KICAgICAgICAgICAgZ28oeCk7DQogICAgICAgIH0NCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gQk9UVE9NIElORk9STUFUSU9OIFNUUklORw0KICAgICAgICAvLw0KDQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1N5c3RlbVZlcnNpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCB8fCBzdGF0dXMgPT0gNDAwKSB7DQogICAgICAgICAgICAgICAgdmFyIHY7DQogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy9hbXRsb2dpY2FsZWxlbWVudHMgPSByZXNwb25zZXM7DQogICAgICAgICAgICAgICAgICAgIGFtdGxvZ2ljYWxlbGVtZW50cyA9IFtdOw0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VzICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZXNbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5Il0gIT0gbnVsbCAmJiByZXNwb25zZXNbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5Il0ucmVzcG9uc2VzICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXRsb2dpY2FsZWxlbWVudHMgPSByZXNwb25zZXNbIkNJTV9Tb2Z0d2FyZUlkZW50aXR5Il0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZXNbIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIl0gIT0gbnVsbCAmJiByZXNwb25zZXNbIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIl0ucmVzcG9uc2UgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXRsb2dpY2FsZWxlbWVudHMucHVzaChyZXNwb25zZXNbIkFNVF9TZXR1cEFuZENvbmZpZ3VyYXRpb25TZXJ2aWNlIl0ucmVzcG9uc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoYW10bG9naWNhbGVsZW1lbnRzLmxlbmd0aCA9PSAwKSB7IGNvbnNvbGUuZXJyb3IoJ0VSUk9SOiBDb3VsZCBub3QgZ2V0IEludGVsIEFNVCB2ZXJzaW9uLicpOyBkaXNjb25uZWN0KCk7IHJldHVybjsgfSAvLyBDb3VsZCBub3QgZ2V0IEludGVsIEFNVCB2ZXJzaW9uLCBkaXNjb25uZWN0KCk7DQogICAgICAgICAgICAgICAgICAgIHYgPSBnZXRJbnN0YW5jZShhbXRsb2dpY2FsZWxlbWVudHMsICJBTVQiKVsiVmVyc2lvblN0cmluZyJdOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHYgPSBzdGFjay53c21hbi5jb21tLmFtdFZlcnNpb247DQogICAgICAgICAgICAgICAgICAgIGlmICghdikgeyBlcnJjaGVjayg0MDAsIHN0YWNrKTsgcmV0dXJuOyB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGFtdHZlcnNpb24gPSBwYXJzZUludCh2LnNwbGl0KCcuJylbMF0pOw0KICAgICAgICAgICAgICAgIGFtdHZlcnNpb25taW4gPSBwYXJzZUludCh2LnNwbGl0KCcuJylbMV0pOw0KDQoNCiAgICAgICAgICAgICAgICAvL2lmIChhbXR2ZXJzaW9uID4gMTApIHsgd3NzdGFjay5jb21tLk1heEFjdGl2ZUFqYXhDb3VudCA9IDQ7IGFtdHN0YWNrLk1heEFjdGl2ZUVudW1zQ291bnQgPSAxOyBjb25zb2xlLmxvZygnSFRUUCBQaXBlbGluaW5nIGFjdGl2YXRlZCcpOyB9IC8vIFdpdGggSW50ZWwgQU1UIDExIGFuZCBoaWdoZXIsIHVzZSBIVFRQIHBpcGVsaW5pbmcuDQoNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtU3RhdHVzKCk7DQogICAgICAgICAgICAgICAgdXBkYXRlU3lzdGVtU3RhdHVzKCk7DQoNCiAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIGxvYWRzIG1vcmUgV1NNQU4gb25seSBpZiBuZWVkZWQNCiAgICAgICAgICAgICAgICBpZiAoKHVybHZhcnNbJ2t2bW9ubHknXSAhPSAxKSAmJiAoZnVsbHNjcmVlbm9ubHkgPT0gZmFsc2UpKSB7DQogICAgICAgICAgICAgICAgICAgIFB1bGxVc2VySW5mbygpOw0KDQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGFtdHZlcnNpb24gPj0gOCkgUHVsbEFsYXJtcygpOw0KICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgLy8gQ29ubmVjdGlvbiBjYWxsYmFjaw0KICAgICAgICAgICAgICAgIGlmIChjb25uZWN0RnVuYykgeyBjb25uZWN0RnVuYyhjb25uZWN0RnVuY1RhZyk7IGNvbm5lY3RGdW5jID0gbnVsbDsgY29ubmVjdEZ1bmNUYWcgPSBudWxsOyB9DQoNCg0KDQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIGVycmNoZWNrKHN0YXR1cywgc3RhY2spOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ29udHJvbCB0aGUgc3RhdGUgb2YgYWxsIHJlZnJlc2ggYnV0dG9ucw0KICAgICAgICB2YXIgcmVmcmVzaEJ1dHRvbnNTdGF0ZSA9IHRydWU7DQogICAgICAgIGZ1bmN0aW9uIHJlZnJlc2hCdXR0b25zKHgpIHsNCiAgICAgICAgICAgIGlmIChyZWZyZXNoQnV0dG9uc1N0YXRlID09IHgpIHJldHVybjsNCiAgICAgICAgICAgIHJlZnJlc2hCdXR0b25zU3RhdGUgPSB4Ow0KICAgICAgICAgICAgdmFyIGkgPSAwLCBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQogICAgICAgICAgICBmb3IgKDsgaSA8IGUubGVuZ3RoOyBpKyspIHsgaWYgKGVbaV0ubmFtZSA9PSAncmVmcmVzaGJ0bicpIHsgZVtpXS5kaXNhYmxlZCA9ICF4OyB9IH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIERpc3BsYXkgVExTIGNlcnRpZmljYXRlDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gU1lTVEVNIFNUQVRVUyBQQU5FTA0KICAgICAgICAvLw0KDQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFN5c3RlbVN0YXR1cyh4KSB7DQogICAgICAgICAgICByZWZyZXNoQnV0dG9ucyhmYWxzZSk7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfVGltZVN5bmNocm9uaXphdGlvblNlcnZpY2VfR2V0TG93QWNjdXJhY3lUaW1lU3luY2gocHJvY2Vzc1N5c3RlbVRpbWUpOw0KDQogICAgICAgICAgICB2YXIgcXVlcnkgPSBbIkNJTV9TZXJ2aWNlQXZhaWxhYmxlVG9FbGVtZW50IiwgIipBTVRfR2VuZXJhbFNldHRpbmdzIiwgIkFNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyIsICIqQU1UX1JlZGlyZWN0aW9uU2VydmljZSIsICJDSU1fRWxlbWVudFNldHRpbmdEYXRhIl07DQogICAgICAgICAgICBpZiAoYW10dmVyc2lvbiA+IDUpIHF1ZXJ5LnB1c2goIklQU19JUHY2UG9ydFNldHRpbmdzIiwgIipDSU1fS1ZNUmVkaXJlY3Rpb25TQVAiLCAiKklQU19PcHRJblNlcnZpY2UiLCIqSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEiKTsNCiAgICAgICAgICAgIGlmIChhbXR2ZXJzaW9uID4gOSkgcXVlcnkucHVzaCgiKklQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSIpOw0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKCIiLCBxdWVyeSwgcHJvY2Vzc1N5c3RlbVN0YXR1cywgdHJ1ZSk7DQoNCiAgICAgICAgICAgIGlmICh4ID09IDEpIFB1bGxXaXJlbGVzcygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1N5c3RlbVRpbWUoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoZXJyY2hlY2soc3RhdHVzLCBzdGFjaykpIHJldHVybjsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgLy8gQ29udmVydCBtcyB0byB0aW1lIGFuZCBhZGp1c3QgZm9yIHRoZSB0aW1lem9uZQ0KICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERhdGUoKSwgdDIgPSBuZXcgRGF0ZSgpOw0KICAgICAgICAgICAgICAgIHQuc2V0VGltZShyZXNwb25zZXMuQm9keVsiVGEwIl0gKiAxMDAwICsgKHQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwICogMTAwMCkpOw0KICAgICAgICAgICAgICAgIGFtdGRlbHRhdGltZSA9IHQgLSB0MjsNCiAgICAgICAgICAgICAgICB1cGRhdGVTeXN0ZW1TdGF0dXMoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHZhciBhbXRkZWx0YXRpbWU7DQogICAgICAgIHZhciBhbXRzeXNzdGF0ZTsNCiAgICAgICAgdmFyIGFtdGxvZ2ljYWxlbGVtZW50czsgLy8gcHJvY2Vzc1N5c3RlbVZlcnNpb24NCiAgICAgICAgdmFyIGFtdGZlYXR1cmVzID0ge307DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NTeXN0ZW1TdGF0dXMoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICAvLyBJZiB0aGlzIGNvbXB1dGVyIGhhcyBubyBLVk0sIGlnbm9yZSBhbmQgY29udGludWUgKFN0YW5kYXJkIE1hbmFnZWFiaWxpdHkpDQogICAgICAgICAgICBpZiAoKHJlc3BvbnNlc1snSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlJ10gPT0gdW5kZWZpbmVkKSB8fCAocmVzcG9uc2VzWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXS5zdGF0dXMgPT0gNDAwKSkgeyByZXNwb25zZXNbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddID0gbnVsbDsgfQ0KICAgICAgICAgICAgaWYgKChyZXNwb25zZXNbJ0lQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhJ10gPT0gdW5kZWZpbmVkKSB8fCAocmVzcG9uc2VzWydJUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YSddLnN0YXR1cyA9PSA0MDApKSB7IHJlc3BvbnNlc1snSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXSA9IG51bGw7IH0NCiAgICAgICAgICAgIGlmICgocmVzcG9uc2VzWydDSU1fS1ZNUmVkaXJlY3Rpb25TQVAnXSA9PSB1bmRlZmluZWQpIHx8IChyZXNwb25zZXNbJ0NJTV9LVk1SZWRpcmVjdGlvblNBUCddLnN0YXR1cyA9PSA0MDApKSB7IHJlc3BvbnNlc1snQ0lNX0tWTVJlZGlyZWN0aW9uU0FQJ10gPSBudWxsOyB9DQogICAgICAgICAgICBpZiAoKHJlc3BvbnNlc1snSVBTX09wdEluU2VydmljZSddID09IHVuZGVmaW5lZCkgfHwgKHJlc3BvbnNlc1snSVBTX09wdEluU2VydmljZSddLnN0YXR1cyA9PSA0MDApKSB7IHJlc3BvbnNlc1snSVBTX09wdEluU2VydmljZSddID0gbnVsbDsgfQ0KICAgICAgICAgICAgaWYgKChyZXNwb25zZXNbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXSAhPSB1bmRlZmluZWQpICYmIChyZXNwb25zZXNbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXS5zdGF0dXMgPT0gMjAwKSkgeyBRVignZ28xMycsIHRydWUpOyB9IC8vIFNob3cgdGhlIHRlcm1pbmFsDQoNCiAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBzdGF0dXMgYWZ0ZXIgcG9zc2libGUgS1ZNIHJlbW92YWwNCiAgICAgICAgICAgIHN0YXR1cyA9IDA7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHJlc3BvbnNlcykgeyBpZiAoKHJlc3BvbnNlc1tpXSAhPSBudWxsKSAmJiAocmVzcG9uc2VzW2ldLnN0YXR1cyA+IHN0YXR1cykpIHsgc3RhdHVzID0gcmVzcG9uc2VzW2ldLnN0YXR1czsgfSB9DQoNCiAgICAgICAgICAgIGlmICgoc3RhdHVzICE9IDQwMCkgJiYgZXJyY2hlY2soc3RhdHVzLCBzdGFjaykpIHJldHVybjsNCiAgICAgICAgICAgIGFtdHN5c3N0YXRlID0gcmVzcG9uc2VzOw0KICAgICAgICAgICAgdXBkYXRlU3lzdGVtU3RhdHVzKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1cGRhdGVTeXN0ZW1TdGF0dXMoKSB7DQogICAgICAgICAgICBpZiAoKCFhbXRzeXNzdGF0ZSkgfHwgKGN1cnJlbnRWaWV3ID4gOTkpKSByZXR1cm47DQogICAgICAgICAgIA0KICAgICAgICAgICAgLy8gU3lzdGVtIFN0YXR1cyBUYWJsZQ0KICAgICAgICAgICAgdmFyIHN5c3RlbWRlZmVuc2UgPSAwLCBob3N0LCB5LCB4ID0gVGFibGVTdGFydCgpLCBmZWF0dXJlcyA9ICcnLCBncyA9IGFtdHN5c3N0YXRlWydBTVRfR2VuZXJhbFNldHRpbmdzJ10ucmVzcG9uc2U7DQoNCiAgICAgICAgICAgIGhvc3QgPSBnc1siSG9zdE5hbWUiXTsNCiAgICAgICAgICAgIHkgPSBnc1siRG9tYWluTmFtZSJdOw0KICAgICAgICAgICAgaWYgKHkgIT0gbnVsbCAmJiB5Lmxlbmd0aCA+IDApIGhvc3QgKz0gIi4iICsgeTsNCiAgICAgICAgICAgIGlmIChob3N0Lmxlbmd0aCA9PSAwKSB7IGhvc3QgPSAiPGk+Tm9uZTwvaT4iOyB9IGVsc2UgeyBob3N0ID0gRXNjYXBlSHRtbChob3N0KTsgfQ0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJOYW1lICYgRG9tYWluIiwgYWRkTGlua0NvbmRpdGlvbmFsKGhvc3QsICdzaG93RWRpdE5hbWVEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgaWYgKEhhcmR3YXJlSW52ZW50b3J5KSB4ICs9IFRhYmxlRW50cnkoIlN5c3RlbSBJRCIsIGd1aWRUb1N0cihIYXJkd2FyZUludmVudG9yeVsnQ0lNX0NvbXB1dGVyU3lzdGVtUGFja2FnZSddLnJlc3BvbnNlWyJQbGF0Zm9ybUdVSUQiXS50b0xvd2VyQ2FzZSgpKSk7DQogICAgICAgICAgICBpZiAoYW10bG9naWNhbGVsZW1lbnRzKSB7DQogICAgICAgICAgICAgICAgdmFyIG1vZGUgPSAnJywgc2NzID0gZ2V0SXRlbShhbXRsb2dpY2FsZWxlbWVudHMsICJDcmVhdGlvbkNsYXNzTmFtZSIsICJBTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZSIpOw0KDQogICAgICAgICAgICAgICAgaWYgKChzY3NbIlByb3Zpc2lvbmluZ1N0YXRlIl0gPT0gMikgJiYgKGFtdHZlcnNpb24gPiA1KSkgew0KICAgICAgICAgICAgICAgICAgICBtb2RlID0gJyBhY3RpdmF0ZWQgaW4gQWRtaW4gQ29udHJvbCBNb2RlIChBQ00pJzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHNjc1siUHJvdmlzaW9uaW5nTW9kZSJdID09IDQpIHsgbW9kZSA9ICcgYWN0aXZhdGVkIGluIENsaWVudCBDb250cm9sIE1vZGUgKENDTSknOyBzeXN0ZW1kZWZlbnNlID0gOTsgfQ0KICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJbnRlbCZyZWc7IE1FIiwgInYiICsgZ2V0SXRlbShhbXRsb2dpY2FsZWxlbWVudHMsICJJbnN0YW5jZUlEIiwgIkFNVCIpWyJWZXJzaW9uU3RyaW5nIl0gKyBtb2RlKTsNCg0KICAgICAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgICAgICBRSCgnaWRfY29tcHV0ZXJuYW1lJywgJ0NvbXB1dGVyOiAnICsgKChnc1siSG9zdE5hbWUiXSA9PSAnJykgPyAiPGk+Tm9uZTwvaT4iIDogZ3NbIkhvc3ROYW1lIl0pKTsNCg0KDQoNCg0KICAgICAgICAgICAgLy8gSW50ZWwgQU1UIEZlYXR1cmVzDQogICAgICAgICAgICBpZiAoYW10c3lzc3RhdGVbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXS5zdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgdmFyIHJlZGlyID0gYW10ZmVhdHVyZXNbMF0gPSAoYW10c3lzc3RhdGVbJ0FNVF9SZWRpcmVjdGlvblNlcnZpY2UnXS5yZXNwb25zZVsiTGlzdGVuZXJFbmFibGVkIl0gPT0gdHJ1ZSk7DQogICAgICAgICAgICAgICAgdmFyIHNvbCA9IGFtdGZlYXR1cmVzWzFdID0gKChhbXRzeXNzdGF0ZVsnQU1UX1JlZGlyZWN0aW9uU2VydmljZSddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXSAmIDIpICE9IDApOw0KICAgICAgICAgICAgICAgIHZhciBpZGVyID0gYW10ZmVhdHVyZXNbMl0gPSAoKGFtdHN5c3N0YXRlWydBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlJ10ucmVzcG9uc2VbIkVuYWJsZWRTdGF0ZSJdICYgMSkgIT0gMCk7DQogICAgICAgICAgICAgICAgdmFyIGt2bSA9IGFtdGZlYXR1cmVzWzNdID0gdW5kZWZpbmVkOw0KICAgICAgICAgICAgICAgIGlmICgoYW10dmVyc2lvbiA+IDUpICYmIChhbXRzeXNzdGF0ZVsnQ0lNX0tWTVJlZGlyZWN0aW9uU0FQJ10gIT0gbnVsbCkpIHsNCiAgICAgICAgICAgICAgICAgICAga3ZtID0gYW10ZmVhdHVyZXNbM10gPSAoKGFtdHN5c3N0YXRlWydDSU1fS1ZNUmVkaXJlY3Rpb25TQVAnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gPT0gNiAmJiBhbXRzeXNzdGF0ZVsnQ0lNX0tWTVJlZGlyZWN0aW9uU0FQJ10ucmVzcG9uc2VbIlJlcXVlc3RlZFN0YXRlIl0gPT0gMikgfHwgYW10c3lzc3RhdGVbJ0NJTV9LVk1SZWRpcmVjdGlvblNBUCddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXSA9PSAyIHx8IGFtdHN5c3N0YXRlWydDSU1fS1ZNUmVkaXJlY3Rpb25TQVAnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gPT0gNik7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChyZWRpcikgZmVhdHVyZXMgKz0gIiwgUmVkaXJlY3Rpb24gUG9ydCI7DQogICAgICAgICAgICAgICAgaWYgKHNvbCkgZmVhdHVyZXMgKz0gIiwgU2VyaWFsLW92ZXItTEFOIjsNCiAgICAgICAgICAgICAgICBpZiAoaWRlcikgZmVhdHVyZXMgKz0gIiwgSURFLVJlZGlyZWN0IjsNCiAgICAgICAgICAgICAgICBpZiAoa3ZtKSBmZWF0dXJlcyArPSAiLCBLVk0iOw0KICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlcyA9PSAnJykgZmVhdHVyZXMgPSAiICBOb25lIjsNCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkFjdGl2ZSBGZWF0dXJlcyIsIGFkZExpbmtDb25kaXRpb25hbChmZWF0dXJlcy5zdWJzdHJpbmcoMiksICdzaG93RmVhdHVyZXNEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoKGFtdHN5c3N0YXRlWydJUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YSddICE9IG51bGwpICYmIChhbXRzeXNzdGF0ZVsnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXS5yZXNwb25zZSkpIHsNCiAgICAgICAgICAgICAgICB2YXIgZGVza3RvcFNldHRpbmdzID0gYW10c3lzc3RhdGVbJ0lQU19LVk1SZWRpcmVjdGlvblNldHRpbmdEYXRhJ10ucmVzcG9uc2U7DQogICAgICAgICAgICAgICAgdmFyIHNjcmVlbm5hbWUgPSAnUHJpbWFyeSBkaXNwbGF5JzsNCiAgICAgICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiA3KSAmJiAoZGVza3RvcFNldHRpbmdzWydEZWZhdWx0U2NyZWVuJ10gIT09IHVuZGVmaW5lZCkgJiYgKGRlc2t0b3BTZXR0aW5nc1snRGVmYXVsdFNjcmVlbiddIDwgMjU1KSkgeyBzY3JlZW5uYW1lID0gWydQcmltYXJ5IGRpc3BsYXknLCAnU2Vjb25kYXJ5IGRpc3BsYXknLCAnM3JkIGRpc3BsYXknXVtkZXNrdG9wU2V0dGluZ3NbJ0RlZmF1bHRTY3JlZW4nXV07IH0NCiAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICc8c3BhbiB0aXRsZT0iVGhlIGRlZmF1bHQgcmVtb3RlIGRpc3BsYXkgaXMgdGhlICcgKyBzY3JlZW5uYW1lLnRvTG93ZXJDYXNlKCkgKyAnIj4nICsgc2NyZWVubmFtZSArICI8L3NwYW4+IjsNCiAgICAgICAgICAgICAgICBpZiAoZGVza3RvcFNldHRpbmdzWydJczU5MDBQb3J0RW5hYmxlZCddID09IHRydWUpIHsgZmVhdHVyZXMgKz0gIiwgUG9ydCA1OTAwIGVuYWJsZWQiOyB9DQogICAgICAgICAgICAgICAgaWYgKGRlc2t0b3BTZXR0aW5nc1snT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSB7IGZlYXR1cmVzICs9ICIsICIgKyBkZXNrdG9wU2V0dGluZ3NbJ09wdEluUG9saWN5VGltZW91dCddICsgIiBzZWNvbmQiICsgKChkZXNrdG9wU2V0dGluZ3NbJ09wdEluUG9saWN5VGltZW91dCddID4gMCk/J3MnOicnKSArICIgb3B0LWluIjsgfQ0KICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICIsICIgKyBkZXNrdG9wU2V0dGluZ3NbJ1Nlc3Npb25UaW1lb3V0J10gKyAiIG1pbnV0ZSIgKyAoKGRlc2t0b3BTZXR0aW5nc1snU2Vzc2lvblRpbWVvdXQnXSA+IDApID8gJ3MnIDogJycpICsgIiBzZXNzaW9uIHRpbWVvdXQiOw0KDQogICAgICAgICAgICAgICAgLy8gU2NyZWVuIGJsYW5raW5nIG9uIEFNVCAxMCBhbmQgaGlnaGVyDQogICAgICAgICAgICAgICAgaWYgKChhbXR2ZXJzaW9uID4gOSkgJiYgKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXSAhPSBudWxsKSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgc2NyZWVuQmxhbmtpbmcgPSAoKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gJiAxKSAhPSAwKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmVlbkJsYW5raW5nKSBmZWF0dXJlcyArPSAiLCBCbGFua2luZyBBbGxvd2VkIjsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIH0NCg0KDQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJSZW1vdGUgRGVza3RvcCIsIGFkZExpbmtDb25kaXRpb25hbChmZWF0dXJlcywgJ3Nob3dEZXNrdG9wU2V0dGluZ3NEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBJbnRlbCBBTVQgdXNlciBDb25zZW50DQogICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiA1KSAmJiAoYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXSAhPSBudWxsKSAmJiAoYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXS5yZXNwb25zZSAhPSB1bmRlZmluZWQpKSB7DQogICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAiVW5rbm93biBzdGF0ZSI7DQogICAgICAgICAgICAgICAgdmFyIG9wdGlucmVxdWlyZWQgPSBhbXRzeXNzdGF0ZVsnSVBTX09wdEluU2VydmljZSddLnJlc3BvbnNlWyJPcHRJblJlcXVpcmVkIl07DQogICAgICAgICAgICAgICAgaWYgKG9wdGlucmVxdWlyZWQgPT0gMCkgeyBmZWF0dXJlcyA9ICJOb3QgUmVxdWlyZWQiOyB9DQogICAgICAgICAgICAgICAgaWYgKG9wdGlucmVxdWlyZWQgPT0gMSkgeyBmZWF0dXJlcyA9ICJSZXF1aXJlZCBmb3IgS1ZNIG9ubHkiOyB9DQogICAgICAgICAgICAgICAgaWYgKG9wdGlucmVxdWlyZWQgPT0gMHhGRkZGRkZGRikgeyBmZWF0dXJlcyA9ICJBbHdheXMgUmVxdWlyZWQiOyB9DQogICAgICAgICAgICAgICAgaWYgKGFtdHN5c3N0YXRlWydJUFNfT3B0SW5TZXJ2aWNlJ10ucmVzcG9uc2VbIkNhbk1vZGlmeU9wdEluUG9saWN5Il0gPT0gdHJ1ZSkgZmVhdHVyZXMgPSBhZGRMaW5rQ29uZGl0aW9uYWwoZmVhdHVyZXMsICdzaG93Q29uc2VudERsZygpJywgeHhBY2NvdW50QWRtaW5OYW1lKTsgLy8gSWYgd2UgY2FuIG1vZGlmeSB1c2VyIGNvbnNlbnQgc2V0dGluZ3MsIGFkZCB0aGUgbGluayB0byBkbyBpdC4NCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlVzZXIgQ29uc2VudCIsIGZlYXR1cmVzKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gSW50ZWwgQU1UIFBvd2VyIHBvbGljeQ0KICAgICAgICAgICAgaWYgKEFtdFN5c3RlbVBvd2VyU2NoZW1lcyAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgdmFyIGVsZW1lbnRTZXR0aW5ncyA9IGFtdHN5c3N0YXRlWydDSU1fRWxlbWVudFNldHRpbmdEYXRhJ10ucmVzcG9uc2VzOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudFNldHRpbmdzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50U2V0dGluZ3NbaV1bJ1NldHRpbmdEYXRhJ10gJiYgZWxlbWVudFNldHRpbmdzW2ldWydJc0N1cnJlbnQnXSA9PSAxICYmIGVsZW1lbnRTZXR0aW5nc1tpXVsnU2V0dGluZ0RhdGEnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydSZXNvdXJjZVVSSSddID09ICdodHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9hbXQtc2NoZW1hLzEvQU1UX1N5c3RlbVBvd2VyU2NoZW1lJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm91bmQgdGhlIGFjdGl2ZSBJbnRlbCBBTVQgcG93ZXIgc2NoZW1lDQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG93ZXJndWlkID0gZWxlbWVudFNldHRpbmdzW2ldWydTZXR0aW5nRGF0YSddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ11bMV1bJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgZmluZCB0aGUgbmFtZSBvZiB0aGUgcG93ZXIgc2NoZW1hIGluIHRoZSBBTVRfU3lzdGVtUG93ZXJTY2hlbWUgdGFibGUNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgQW10U3lzdGVtUG93ZXJTY2hlbWVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFtdFN5c3RlbVBvd2VyU2NoZW1lc1tqXVsnU2NoZW1lR1VJRCddID09IHBvd2VyZ3VpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3VuZCB0aGUgcG93ZXIgc2NoZW1lIG5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJQb3dlciBQb2xpY3kiLCBhZGRMaW5rQ29uZGl0aW9uYWwoQW10U3lzdGVtUG93ZXJTY2hlbWVzW2pdWydEZXNjcmlwdGlvbiddLnNwbGl0KCc6JyApWzFdLCAic2hvd1Bvd2VyUG9saWN5RGxnKFwiIiArIHBvd2VyZ3VpZCArICJcIikiLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmIChhbXRkZWx0YXRpbWUpIHsgeCArPSBUYWJsZUVudHJ5KCJEYXRlICYgVGltZSIsIG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgYW10ZGVsdGF0aW1lKS50b0xvY2FsZVN0cmluZygpKTsgfQ0KICAgICAgICAgICAgdmFyIGJ1dHRvbnMgPSBBZGRSZWZyZXNoQnV0dG9uKCJQdWxsU3lzdGVtU3RhdHVzKCkiKSArICIgIjsNCg0KICAgICAgICAgICAgYnV0dG9ucyArPSBBZGRCdXR0b24oIlNhdmUgU3RhdGUuLi4iLCAic2F2ZUVudGlyZUFtdFN0YXRlKCkiKSArICIgIjsNCg0KICAgICAgICAgICAgYnV0dG9ucyArPSBBZGRCdXR0b24oIlJ1biBTY3JpcHQuLi4iLCAic2NyaXB0X3J1blNjcmlwdERsZygpIikgKyAiICI7DQogICAgICAgICAgICB4ICs9IFRhYmxlRW5kKGJ1dHRvbnMpOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzU3RhdHVzJywgeCk7DQoNCg0KICAgICAgICAgICAgdmFyIHggPSAiPHRhYmxlIGNsYXNzPWxvZzEgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHN0eWxlPXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg+IjsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoIjxkaXY+Jm5ic3A7IiArIEFkZFJlZnJlc2hCdXR0b24oIlB1bGxTeXN0ZW1TdGF0dXMoMSkiKQ0KDQogICAgICAgICAgICAgICAgKyAnIENoYW5naW5nIG5ldHdvcmsgc2V0dGluZ3MgbWF5IGNhdXNlIHRoaXMgcGFnZSB0byBiZSB1bmF2YWlsYWJsZSBmb3IgYSBmZXcgc2Vjb25kcy4nDQogICAgICAgICAgICApOw0KDQogICAgICAgICAgICAvLyBHZW5lcmFsIHNldHRpbmdzDQogICAgICAgICAgICB4ICs9ICI8YnI+PGgyPkdlbmVyYWwgU2V0dGluZ3M8L2gyPiI7DQogICAgICAgICAgICB4ICs9IFRhYmxlU3RhcnQoKTsNCg0KICAgICAgICAgICAgLy8gTmV0d29yayBzdGF0ZQ0KICAgICAgICAgICAgLy8gaWYgKGdzWyJBTVROZXR3b3JrRW5hYmxlZCJdKSB7IHggKz0gVGFibGVFbnRyeSgiTmV0d29yayBzdGF0ZSIsIChnc1siQU1UTmV0d29ya0VuYWJsZWQiXT09MSk/IkVuYWJsZWQiOiJEaXNhYmxlZCIpOyB9DQoNCiAgICAgICAgICAgIC8vIFNoYXJlZCBGUURODQogICAgICAgICAgICB2YXIgZnFkbnNoYXJlID0gJyc7DQogICAgICAgICAgICBpZiAoaG9zdCAhPSAiPGk+Tm9uZTwvaT4iKSB7DQogICAgICAgICAgICAgICAgaWYgKGdzWyJTaGFyZWRGUUROIl0gPT0gdHJ1ZSkgZnFkbnNoYXJlID0gJywgc2hhcmVkIHdpdGggT1MnOw0KICAgICAgICAgICAgICAgIGlmIChnc1siU2hhcmVkRlFETiJdID09IGZhbHNlKSBmcWRuc2hhcmUgPSAnLCBkaWZmZXJlbnQgZnJvbSBPUyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIk5hbWUgJiBEb21haW4iLCBhZGRMaW5rQ29uZGl0aW9uYWwoaG9zdCArIGZxZG5zaGFyZSwgJ3Nob3dFZGl0TmFtZURsZygxKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KDQogICAgICAgICAgICAvLyBEeW5hbWljIEROUw0KICAgICAgICAgICAgdmFyIGRkbnMgPSAnRGlzYWJsZWQnOw0KICAgICAgICAgICAgaWYgKGdzWyJERE5TVXBkYXRlRW5hYmxlZCJdID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBkZG5zID0gIkVuYWJsZWQgZWFjaCAiICsgZ3NbIkRETlNQZXJpb2RpY1VwZGF0ZUludGVydmFsIl0gKyAiIG1pbnV0ZXMsIFRUTCBpcyAiICsgZ3NbIkRETlNUVEwiXSArICIgbWludXRlcyI7DQogICAgICAgICAgICB9IGVsc2UgaWYgKGdzWyJERE5TVXBkYXRlQnlESENQU2VydmVyRW5hYmxlZCJdID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICBkZG5zID0gIlVwZGF0ZSBieSBESENQIHNlcnZlciI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkR5bmFtaWMgRE5TIiwgYWRkTGlua0NvbmRpdGlvbmFsKGRkbnMsICdzaG93RWRpdERuc0RsZygpJywgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICB4ICs9IFRhYmxlRW5kKCk7DQoNCiAgICAgICAgICAgIGZvciAodmFyIHkgaW4gYW10c3lzc3RhdGVbJ0FNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgIHZhciB6ID0gYW10c3lzc3RhdGVbJ0FNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyddLnJlc3BvbnNlc1t5XTsNCiAgICAgICAgICAgICAgICBpZiAoelsnV0xBTkxpbmtQcm90ZWN0aW9uTGV2ZWwnXSB8fCAoeSA9PSAxKSkgeyBhbXR3aXJlbGVzc2lmID0geTsgfSAvLyBTZXQgdGhlIHdpcmVsZXNzIGludGVyZmFjZSwgdGhpcyBzZWVtcyB0byBjb3ZlciBuZXcgd2lyZWxlc3Mgb25seSBjb21wdXRlcnMgYW5kIG9sZGVyIGNvbXB1dGVycyB3aXRoIGR1YWwgaW50ZXJmYWNlcy4NCiAgICAgICAgICAgICAgICBpZiAoKHkgPT0gMCkgJiYgKGFtdHdpcmVsZXNzaWYgIT0geSkgJiYgKHpbIk1BQ0FkZHJlc3MiXSA9PSAiMDAtMDAtMDAtMDAtMDAtMDAiKSkgeyBjb250aW51ZTsgfSAvLyBPbiBjb21wdXRlcnMgd2l0aCBvbmx5IHdpcmVsZXNzLCB0aGUgd2lyZWQgaW50ZXJmYWNlIHdpbGwgaGF2ZSBhIG51bGwgTUFDLCBza2lwIGl0Lg0KICAgICAgICAgICAgICAgIGlmICh5ID09IDApIHN5c3RlbWRlZmVuc2UrKzsNCiAgICAgICAgICAgICAgICB4ICs9ICI8YnI+PGgyPiIgKyAoKGFtdHdpcmVsZXNzaWYgPT0geSk/J1dpcmVsZXNzJzonV2lyZWQnKSArICIgSW50ZXJmYWNlPC9oMj4iOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVTdGFydCgpOw0KDQogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICB2YXIgbHAgPSBbXSwgbGlua3BvbGljeSA9IE1ha2VUb0FycmF5KHpbIkxpbmtQb2xpY3kiXSk7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBsaW5rcG9saWN5KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBhcCA9IGxpbmtwb2xpY3lbcF07DQogICAgICAgICAgICAgICAgICAgIGlmIChhcCA9PSAxKSBscC5wdXNoKCJTMC9BQyIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoYXAgPT0gMTQpIGxwLnB1c2goIlN4L0FDIik7DQogICAgICAgICAgICAgICAgICAgIGlmIChhcCA9PSAxNikgbHAucHVzaCgiUzAvREMiKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGFwID09IDIyNCkgbHAucHVzaCgiU3gvREMiKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJMaW5rIHN0YXRlIiwgKHpbIkxpbmtJc1VwIl0gPT0gdHJ1ZT8nTGluayBpcyB1cCc6J0xpbmsgaXMgZG93bicpICsgIiwgYXZhaWxhYmxlIGluICIgKyBscC5qb2luKCcsICcpKTsNCiAgICAgICAgICAgICAgICAqLw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiTGluayBzdGF0ZSIsICh6WyJMaW5rSXNVcCJdID09IHRydWU/J0xpbmsgaXMgdXAnOidMaW5rIGlzIGRvd24nKSk7DQogICAgICAgICAgICAgICAgaWYgKHpbIk1BQ0FkZHJlc3MiXSAhPSAiMDAtMDAtMDAtMDAtMDAtMDAiKSB7IHggKz0gVGFibGVFbnRyeSgiTUFDIGFkZHJlc3MiLCB6WyJNQUNBZGRyZXNzIl0pOyB9DQoNCg0KICAgICAgICAgICAgICAgIGlmICgoYW10d2lyZWxlc3NpZiA9PSB5KSAmJiB4eFdpcmVsZXNzICYmIHh4V2lyZWxlc3NbJ0NJTV9XaUZpUG9ydENhcGFiaWxpdGllcyddLnJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGFuZCBzdGF0ZQ0KICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlN0YXRlIiwgYWRkTGlua0NvbmRpdGlvbmFsKHh4V2lmaVN0YXRlW3h4V2lyZWxlc3NbJ0NJTV9XaUZpUG9ydCddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXV0sICdzaG93V2lmaVN0YXRlRGxnKCknLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgDQogICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgbm90IHRoYXQgdXNlZnVsDQogICAgICAgICAgICAgICAgICAgIC8vIENhcGFiaWxpdGllcw0KICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICcnLCBzYyA9IHh4V2lyZWxlc3NbJ0NJTV9XaUZpUG9ydENhcGFiaWxpdGllcyddLnJlc3BvbnNlLCBzdXBwb3J0ZWRUeXBlcyA9IHNjWyJTdXBwb3J0ZWRQb3J0VHlwZXMiXTsNCiAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHN1cHBvcnRlZFR5cGVzKSB7IHMgKz0gIiwgODAyLjExIiArICJhYmduIltzdXBwb3J0ZWRUeXBlc1tpXSAtIDcwXTsgfQ0KICAgICAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkNhcGFiaWxpdGVzIiwgcy5zdWJzdHJpbmcoMikpOw0KICAgICAgICAgICAgICAgICAgICAqLw0KDQogICAgICAgICAgICAgICAgICAgIC8vIEN1cnJlbnQgcmFkaW8gc3RhdGUNCiAgICAgICAgICAgICAgICAgICAgcyA9IHh4V2lyZWxlc3NbJ0NJTV9XaUZpRW5kcG9pbnQnXS5yZXNwb25zZVsnTEFOSUQnXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJSYWRpbyBTdGF0ZSIsIHh4UmFkaW9TdGF0ZVt4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50J10ucmVzcG9uc2VbJ0VuYWJsZWRTdGF0ZSddXSArICIsIFNTSUQ6ICIgKyAocz9zOiI8aT5Ob25lPC9pPiIpKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICBpZiAoYW10d2lyZWxlc3NpZiAhPSB5KSB7DQogICAgICAgICAgICAgICAgICAgIC8vIFRoaW5ncyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgd2lyZWQgaW50ZXJmYWNlDQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiUmVzcG9uZCB0byBwaW5nIiwgYWRkTGlua0NvbmRpdGlvbmFsKFsiRGlzYWJsZWQiLCJJQ01QIHJlc3BvbnNlIiwiUk1DUCByZXNwb25zZSIsIklDTVAgJiBSTUNQIHJlc3BvbnNlIl1bZ3NbIlBpbmdSZXNwb25zZUVuYWJsZWQiXSArIChnc1siUm1jcFBpbmdSZXNwb25zZUVuYWJsZWQiXSA8PCAxKV0sICJzaG93UGluZ0FjdGlvbkRsZygpIiwgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NCBzdGF0ZSIsIGFkZExpbmtDb25kaXRpb25hbCh6WyJESENQRW5hYmxlZCJdID09IHRydWU/IkF1dG9tYXRpYyB1c2luZyBESENQIHNlcnZlciI6IlN0YXRpYyBJUCBhZGRyZXNzIiwgInNob3dJUFNldHVwRGxnKCkiLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IElQdjQgY3VycmVudCBzZXR0aW5ncw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NCBhZGRyZXNzIiwgaXNJcEFkZHJlc3MoelsiSVBBZGRyZXNzIl0sIk5vbmUiKSk7DQogICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKHpbIkRlZmF1bHRHYXRld2F5Il0pKSB7IHggKz0gVGFibGVFbnRyeSgiSVB2NCBnYXRld2F5IC8gTWFzayIsIHpbIkRlZmF1bHRHYXRld2F5Il0gKyAiIC8gIiArIGlzSXBBZGRyZXNzKHpbIlN1Ym5ldE1hc2siXSwiTm9uZSIpKTsgfQ0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIHZhciBkbnMgPSB6WyJQcmltYXJ5RE5TIl07DQogICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKGRucykpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHpbIlNlY29uZGFyeUROUyJdKSBkbnMgKz0gIiAvICIgKyB6WyJTZWNvbmRhcnlETlMiXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJUHY0IGRvbWFpbiBuYW1lIHNlcnZlciIsIGRucyk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKChhbXRzeXNzdGF0ZVsnSVBTX0lQdjZQb3J0U2V0dGluZ3MnXS5zdGF0dXMgPT0gMjAwKSAmJiAoYW10dmVyc2lvbiA+IDUpKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIElQdjYgaXMgZW5hYmxlZCBmb3IgdGhpcyBpbnRlcmZhY2UNCiAgICAgICAgICAgICAgICAgICAgdmFyIHp6ID0gYW10c3lzc3RhdGVbJ0lQU19JUHY2UG9ydFNldHRpbmdzJ10ucmVzcG9uc2VzW3ldOw0KICAgICAgICAgICAgICAgICAgICB2YXIgaXB2NnN0YXRlID0gJ0Rpc2FibGVkJywgaXB2NiwgaXB2Nm1hbnVhbCwgZWxlbWVudFNldHRpbmdzID0gYW10c3lzc3RhdGVbJ0NJTV9FbGVtZW50U2V0dGluZ0RhdGEnXS5yZXNwb25zZXM7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudFNldHRpbmdzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFNldHRpbmdzW2ldWydTZXR0aW5nRGF0YSddICYmIGVsZW1lbnRTZXR0aW5nc1tpXVsnU2V0dGluZ0RhdGEnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddID09ICdJbnRlbChyKSBJUFMgSVB2NiBTZXR0aW5ncyAnICsgeSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjYgPSAoZWxlbWVudFNldHRpbmdzW2ldWydJc0N1cnJlbnQnXSA9PSAxKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIG1hbnVhbCBhZGRyZXNzZXMgaGF2ZSBiZWVuIGFkZGVkDQogICAgICAgICAgICAgICAgICAgIGlmIChpcHY2ID09IHRydWUpIHsgDQogICAgICAgICAgICAgICAgICAgICAgICBpcHY2bWFudWFsID0gaXNJcEFkZHJlc3MoenpbIklQdjZBZGRyZXNzIl0pIHx8IGlzSXBBZGRyZXNzKHp6WyJEZWZhdWx0Um91dGVyIl0pIHx8IGlzSXBBZGRyZXNzKHp6WyJQcmltYXJ5RE5TIl0pIHx8IGlzSXBBZGRyZXNzKHp6WyJTZWNvbmRhcnlETlMiXSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpcHY2c3RhdGUgPSAnRW5hYmxlZCwgQXV0b21hdGljICcgKyAoaXB2Nm1hbnVhbD8iJiBtYW51YWwiOiIiKSArICIgYWRkcmVzc2VzIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgSVB2NiBjdXJyZW50IHNldHRpbmdzDQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NiBzdGF0ZSIsIGFkZExpbmtDb25kaXRpb25hbChpcHY2c3RhdGUsICJzaG93SVB2NlN0YXRlRGxnKCIgKyB5ICsgIiwiICsgaXB2NiArICIpIiwgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICAgICAgICAgIGlmIChpcHY2ID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh6elsiQ3VycmVudEFkZHJlc3NJbmZvIl0gJiYgenpbIkN1cnJlbnRBZGRyZXNzSW5mbyJdLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6elsiQ3VycmVudEFkZHJlc3NJbmZvIl0gPSBNYWtlVG9BcnJheSh6elsiQ3VycmVudEFkZHJlc3NJbmZvIl0pOyAvLyBCZWNhdXNlIG91ciBXU01BTiBzdGFjayBkb2VzIG5vdCBrbm93IGlmIHRoaXMgaXMgYSBhcnJheSwgd2UgbmVlZCB0byBtYWtlIGl0IGFuIGFycmF5IGlmIGl0IGNvbnRhaW5zIDEgZWxlbWVudC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2YWRkciA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgenpbIkN1cnJlbnRBZGRyZXNzSW5mbyJdLmxlbmd0aDsgaSsrKSB7IGlmIChpcHY2YWRkci5sZW5ndGggPiAwKSBpcHY2YWRkciArPSAiLCAiOyBpcHY2YWRkciArPSB6elsiQ3VycmVudEFkZHJlc3NJbmZvIl1baV0uc3BsaXQoJywnKVswXTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NiBhZGRyZXNzIiwgYWRkTGluayhpcHY2YWRkciwgInNob3dJUHY2QWRkckRsZygiICsgeSArICIsXCIiICsgenpbIkN1cnJlbnRBZGRyZXNzSW5mbyJdICsgIlwiKSIpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJJUHY2IGFkZHJlc3MiLCAnTm9uZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKHp6WyJDdXJyZW50RGVmYXVsdFJvdXRlciJdKSkgeyB4ICs9IFRhYmxlRW50cnkoIklQdjYgZGVmYXVsdCByb3V0ZXIiLCB6elsiQ3VycmVudERlZmF1bHRSb3V0ZXIiXSk7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0lwQWRkcmVzcyh6elsiQ3VycmVudFByaW1hcnlETlMiXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG5zID0genpbIkN1cnJlbnRQcmltYXJ5RE5TIl07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSXBBZGRyZXNzKHp6WyJDdXJyZW50U2Vjb25kYXJ5RE5TIl0pKSBkbnMgKz0gIiAvICIgKyB6elsiQ3VycmVudFNlY29uZGFyeUROUyJdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiSVB2NiBkb21haW4gbmFtZSBzZXJ2ZXIiLCBkbnMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBPbmx5IGRvIG1vcmUgV1NNQU4gaWYgd2UgbmVlZCBpdA0KICAgICAgICAgICAgaWYgKCh1cmx2YXJzWydrdm1vbmx5J10gIT0gMSkgJiYgKGZ1bGxzY3JlZW5vbmx5ID09IGZhbHNlKSkgew0KDQogICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSB3aXJlbGVzcyBpbnRlcmZhY2UsIGdldCB0aGUgZGF0YSBmb3IgaXQuIElmIG5vdCwgc2hvdyB0aGF0IHRoZXJlIGlzIG5vdC4NCiAgICAgICAgICAgICAgICBpZiAoYW10d2lyZWxlc3NpZiAhPSAtMSkgeyBpZiAoKGFtdEZpcnN0UHVsbCAmIDIpID09IDApIFB1bGxXaXJlbGVzcygpOyB9DQogICAgICAgICAgICAgICAgUUgoJ2lkX1RhYmxlTmV0d29ya1NldHRpbmdzU3BhbicsIHgpOw0KDQoNCiAgICAgICAgICAgICAgICAvLyBJZiBpbiBBQ00gbW9kZSBhbmQgd2UgaGF2ZSBhIHdpcmVkIGludGVyZmFjZSwgcHVsbCBTeXN0ZW0gRGVmZW5zZSBpbmZvcm1hdGlvbg0KICAgICAgICAgICAgICAgIGlmICgoc3lzdGVtZGVmZW5zZSA9PSAxKSAmJiAoKGFtdEZpcnN0UHVsbCAmIDQpID09IDApKSBQdWxsU3lzdGVtRGVmZW5zZSgpOw0KDQoNCiAgICAgICAgICAgICAgICBpZiAoKChhbXRGaXJzdFB1bGwgJiA4KSA9PSAwKSAmJiAoYW10dmVyc2lvbiA+IDExIHx8IChhbXR2ZXJzaW9uID09IDExICYmIGFtdHZlcnNpb25taW4gPiA1KSkpIHsgUHVsbFN0b3JhZ2UoKTsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiAoY3VycmVudFZpZXcgPT0gMCkgZ28oMSwgMSk7IC8vIElmIHdlIGFyZSBhdCB0aGUgbG9hZGluZyBzY3JlZW4sIG1vc3QgdG8gU3lzdGVtIFN0YXR1cyBzY3JlZW4NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzSXBBZGRyZXNzKHQsIHgpIHsgcmV0dXJuICh0ICYmIHQgIT0gbnVsbCAmJiB0Lmxlbmd0aCA+IDAgJiYgdCAhPSAnOjonICYmIHQgIT0gJzo6MCcpP3Q6eDsgfQ0KDQoNCiAgICAgICAgdmFyIEludGVsQW10RW50aXJlU3RhdGU7DQogICAgICAgIHZhciBJbnRlbEFtdEVudGlyZVN0YXRlQ2FsbHM7DQogICAgICAgIGZ1bmN0aW9uIHNhdmVFbnRpcmVBbXRTdGF0ZSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBuID0gJycsIGQgPSBuZXcgRGF0ZSgpOw0KICAgICAgICAgICAgaWYgKGFtdHN5c3N0YXRlKSB7IG4gPSAiLSIgKyBhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlWydIb3N0TmFtZSddOyB9DQogICAgICAgICAgICBuICs9ICctJyArIGQuZ2V0RnVsbFllYXIoKSArICItIiArICgiMCIrKGQuZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpICsgIi0iICsgKCIwIiArIGQuZ2V0RGF0ZSgpKS5zbGljZSgtMikgKyAiLSIgKyAoIjAiICsgZC5nZXRIb3VycygpKS5zbGljZSgtMikgKyAiLSIgKyAoIjAiICsgZC5nZXRNaW51dGVzKCkpLnNsaWNlKC0yKTs7DQogICAgICAgICAgICBpZHhfZDE5c2F2ZXN0YXRlZmlsZW5hbWUudmFsdWUgPSAnYW10c3RhdGUnICsgbiArICcuanNvbic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDE5LCAiU2F2ZSBFbnRpcmUgSW50ZWwmcmVnOyBBTVQgU3RhdGUiLCAzLCBzYXZlRW50aXJlQW10U3RhdGVPayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzYXZlRW50aXJlQW10U3RhdGVPaygpIHsNCiAgICAgICAgICAgIEludGVsQW10RW50aXJlU3RhdGUgPSB7ICd3ZWJhcHB2ZXJzaW9uJzp2ZXJzaW9uLCdsb2NhbHRpbWUnOkRhdGUoKSwndXRjdGltZSc6bmV3IERhdGUoKS50b1VUQ1N0cmluZygpLCdpc290aW1lJzpuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkgfTsNCiAgICAgICAgICAgIFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgJ0ZldGNoaW5nIGVudGlyZSBzdGF0ZSwgcGxlYXNlIHdhaXQuLi4nKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMSwgIlNhdmUgRW50aXJlIEludGVsJnJlZzsgQU1UIFN0YXRlIiwgMCwgbnVsbCk7DQoNCiAgICAgICAgICAgIC8vIEZldGNoIGV2ZXJ5dGhpbmchDQogICAgICAgICAgICBJbnRlbEFtdEVudGlyZVN0YXRlQ2FsbHMgPSAzOw0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKG51bGwsIEFsbFdzbWFuLCBzYXZlRW50aXJlQW10U3RhdGVPazIsIG51bGwsIHRydWUpOw0KICAgICAgICAgICAgYW10c3RhY2suR2V0QXVkaXRMb2coc2F2ZUVudGlyZUFtdFN0YXRlT2szKTsNCiAgICAgICAgICAgIGFtdHN0YWNrLkdldE1lc3NhZ2VMb2coc2F2ZUVudGlyZUFtdFN0YXRlT2s0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNhdmVFbnRpcmVBbXRTdGF0ZU9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsgSW50ZWxBbXRFbnRpcmVTdGF0ZVsnd3NtYW5lbnVtcyddID0gcmVzcG9uc2VzOyBzYXZlRW50aXJlQW10U3RhdGVEb25lKCk7IH0NCiAgICAgICAgZnVuY3Rpb24gc2F2ZUVudGlyZUFtdFN0YXRlT2szKHN0YWNrLCBtZXNzYWdlcykgeyBJbnRlbEFtdEVudGlyZVN0YXRlWydhdWRpdGxvZyddID0gbWVzc2FnZXM7IHNhdmVFbnRpcmVBbXRTdGF0ZURvbmUoKTsgfQ0KICAgICAgICBmdW5jdGlvbiBzYXZlRW50aXJlQW10U3RhdGVPazQoc3RhY2ssIG1lc3NhZ2VzKSB7IEludGVsQW10RW50aXJlU3RhdGVbJ2V2ZW50bG9nJ10gPSBtZXNzYWdlczsgc2F2ZUVudGlyZUFtdFN0YXRlRG9uZSgpOyB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2F2ZUVudGlyZUFtdFN0YXRlRG9uZSgpIHsNCiAgICAgICAgICAgIGlmICgtLUludGVsQW10RW50aXJlU3RhdGVDYWxscyAhPSAwKSByZXR1cm47DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKCk7DQoNCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoSlNPTi5zdHJpbmdpZnkoSW50ZWxBbXRFbnRpcmVTdGF0ZSwgbnVsbCwgJyAgJykucmVwbGFjZSgvXG4vZywgJ1xyXG4nKSksIGlkeF9kMTlzYXZlc3RhdGVmaWxlbmFtZS52YWx1ZSk7DQogICAgICAgIH0NCg0KDQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0Rlc2t0b3BTZXR0aW5nc0RsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBkZXNrdG9wU2V0dGluZ3MgPSBhbXRzeXNzdGF0ZVsnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXS5yZXNwb25zZTsNCiAgICAgICAgICAgIHZhciB4ID0gJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpsZWZ0Pic7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9c3ViZGRpc3BsYXkgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHg+PG9wdGlvbiB2YWx1ZT0wPlByaW1hcnkgZGlzcGxheTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9MT5TZWNvbmRhcnkgZGlzcGxheTwvb3B0aW9uPiI7DQogICAgICAgICAgICBpZiAoYW10dmVyc2lvbiA+IDkpIHsgeCArPSAiPG9wdGlvbiB2YWx1ZT0yPjNyZCBkaXNwbGF5PC9vcHRpb24+IjsgfQ0KICAgICAgICAgICAgeCArPSAiPC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+RGVmYXVsdCBkaXNwbGF5PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXN1YnNlc3Npb250aW1lb3V0IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IG1heGxlbmd0aD01IG9ua2V5cHJlc3M9J3JldHVybiBudW1iZXJzT25seShldmVudCknPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlNlc3Npb24gdGltZW91dCAoTWludXRlcyk8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgaWYgKGRlc2t0b3BTZXR0aW5nc1snT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSB7IHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXN1Ym9wdGludGltZW91dCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBtYXhsZW5ndGg9NSBvbmtleXByZXNzPSdyZXR1cm4gbnVtYmVyc09ubHkoZXZlbnQpJz48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5PcHQtaW4gdGltZW91dCAoU2Vjb25kcyk8L2Rpdj48L2Rpdj4iOyB9DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9c3ViZGxlZ2FjeSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmNoYW5nZT1zaG93RGVza3RvcFNldHRpbmdzRGxnVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkRpc2FibGVkLCBSZWNvbW1lbmRlZDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9MT5FbmFibGVkLCBMZWdhY3kgS1ZNIHZpZXdlcnM8L29wdGlvbj48L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5Qb3J0IDU5MDA8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweCBpZD1zdWJzcGFzc3g+PGlucHV0IGlkPXN1YnNwYXNzIHR5cGU9cGFzc3dvcmQgYXV0b2NvbXBsZXRlPW9mZiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBtYXhsZW5ndGg9OCBvbmtleXVwPXNob3dEZXNrdG9wU2V0dGluZ3NEbGdVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD41OTAwIHBhc3N3b3JkICg4IGNoYXJzKTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICBpZiAoKGFtdHZlcnNpb24gPiA5KSAmJiAoYW10c3lzc3RhdGVbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddICE9IG51bGwpKSB7IHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1zdWJzYiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmNoYW5nZT1zaG93RGVza3RvcFNldHRpbmdzRGxnVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkRpc2FibGVkPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0xPkVuYWJsZWQ8L29wdGlvbj48L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweCB0aXRsZT0nVGhpcyBmZWF0dXJlIGlzIG5vdCBvZnRlbiBzdXBwb3J0ZWQnPlNjcmVlbiBCbGFua2luZzwvZGl2PjwvZGl2PiI7IH0NCiAgICAgICAgICAgIHggKz0gIjwvZGl2PiI7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiUmVtb3RlIERlc2t0b3AgU2V0dGluZ3MiLCAzLCBzaG93RGVza3RvcFNldHRpbmdzRGxnT2ssIHgpOw0KICAgICAgICAgICAgUSgnc3ViZGRpc3BsYXknKS52YWx1ZSA9IGRlc2t0b3BTZXR0aW5nc1snRGVmYXVsdFNjcmVlbiddOw0KICAgICAgICAgICAgUSgnc3Vic2Vzc2lvbnRpbWVvdXQnKS52YWx1ZSA9IGRlc2t0b3BTZXR0aW5nc1snU2Vzc2lvblRpbWVvdXQnXTsNCiAgICAgICAgICAgIGlmIChkZXNrdG9wU2V0dGluZ3NbJ09wdEluUG9saWN5J10gPT0gdHJ1ZSkgeyBRKCdzdWJvcHRpbnRpbWVvdXQnKS52YWx1ZSA9IGRlc2t0b3BTZXR0aW5nc1snT3B0SW5Qb2xpY3lUaW1lb3V0J107IH0NCiAgICAgICAgICAgIFEoJ3N1YmRsZWdhY3knKS52YWx1ZSA9ICgoZGVza3RvcFNldHRpbmdzWydJczU5MDBQb3J0RW5hYmxlZCddID09IHRydWUpID8gMSA6IDApOw0KICAgICAgICAgICAgaWYgKChhbXR2ZXJzaW9uID4gOSkgJiYgKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXSAhPSBudWxsKSkgeyBRKCdzdWJzYicpLnZhbHVlID0gYW10c3lzc3RhdGVbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddLnJlc3BvbnNlWyJFbmFibGVkU3RhdGUiXTsgfQ0KICAgICAgICAgICAgc2hvd0Rlc2t0b3BTZXR0aW5nc0RsZ1VwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0Rlc2t0b3BTZXR0aW5nc0RsZ1VwZGF0ZSgpIHsNCiAgICAgICAgICAgIFFWKCdzdWJzcGFzc3gnLCAoUSgnc3ViZGxlZ2FjeScpLnZhbHVlID09IDEpKTsNCiAgICAgICAgICAgIHZhciBvayA9ICgoUSgnc3ViZGxlZ2FjeScpLnZhbHVlID09IDApIHx8IChRKCdzdWJzcGFzcycpLnZhbHVlLmxlbmd0aCA9PSA4KSB8fCAoUSgnc3Vic3Bhc3MnKS52YWx1ZS5sZW5ndGggPT0gMCkpICYmIChRKCdzdWJzZXNzaW9udGltZW91dCcpLnZhbHVlLmxlbmd0aCA+IDApOw0KICAgICAgICAgICAgaWYgKChhbXRzeXNzdGF0ZVsnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnXS5yZXNwb25zZVsnT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSAmJiAoUSgnc3Vib3B0aW50aW1lb3V0JykudmFsdWUubGVuZ3RoID09IDApKSB7IG9rID0gZmFsc2U7IH0NCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCBvayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RGVza3RvcFNldHRpbmdzRGxnT2soKSB7DQogICAgICAgICAgICB2YXIgeCA9IENsb25lKGFtdHN5c3N0YXRlWydJUFNfS1ZNUmVkaXJlY3Rpb25TZXR0aW5nRGF0YSddLnJlc3BvbnNlKTsNCiAgICAgICAgICAgIHhbJ0RlZmF1bHRTY3JlZW4nXSA9IFEoJ3N1YmRkaXNwbGF5JykudmFsdWUNCiAgICAgICAgICAgIHhbJ1Nlc3Npb25UaW1lb3V0J10gPSBRKCdzdWJzZXNzaW9udGltZW91dCcpLnZhbHVlOw0KICAgICAgICAgICAgeFsnSXM1OTAwUG9ydEVuYWJsZWQnXSA9IChRKCdzdWJkbGVnYWN5JykudmFsdWUgPT0gMSk7DQogICAgICAgICAgICBpZiAoeFsnT3B0SW5Qb2xpY3knXSA9PSB0cnVlKSB7IHhbJ09wdEluUG9saWN5VGltZW91dCddID0gUSgnc3Vib3B0aW50aW1lb3V0JykudmFsdWU7IH0NCiAgICAgICAgICAgIGlmICh4WydJczU5MDBQb3J0RW5hYmxlZCddID09IHRydWUpIHsgeFsnUkZCUGFzc3dvcmQnXSA9IFEoJ3N1YnNwYXNzJykudmFsdWU7IH0NCiAgICAgICAgICAgIGFtdHN0YWNrLlB1dCgnSVBTX0tWTVJlZGlyZWN0aW9uU2V0dGluZ0RhdGEnLCB4LCBzaG93RGVza3RvcFNldHRpbmdzRGxnT2syKTsNCg0KICAgICAgICAgICAgLy8gU2NyZWVuIGJsYW5raW5nDQogICAgICAgICAgICB2YXIgeSA9IENsb25lKGFtdHN5c3N0YXRlWydJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnXS5yZXNwb25zZSk7DQogICAgICAgICAgICB5WydFbmFibGVkU3RhdGUnXSA9IHBhcnNlSW50KFEoJ3N1YnNiJykudmFsdWUpOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdJUFNfU2NyZWVuQ29uZmlndXJhdGlvblNlcnZpY2UnLCB5LCBzaG93RGVza3RvcFNldHRpbmdzRGxnT2szKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dEZXNrdG9wU2V0dGluZ3NEbGdPazIoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgUHVsbFN5c3RlbVN0YXR1cygpOyBlbHNlIG1lc3NhZ2Vib3goIlJlbW90ZSBEZXNrdG9wIFNldHRpbmdzIiwgIkVycm9yICIgKyBzdGF0dXMgKyAiLCB1bmFibGUgdG8gc2V0IHZhbHVlcy4iKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dEZXNrdG9wU2V0dGluZ3NEbGdPazMoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goIkVycm9yIiwgIlNjcmVlbiBCbGFua2luZyBjb3VsZCBub3QgYmUgc2V0LCBibGFua2luZyBtYXkgbm90IGJlIHN1cHBvcnRlZCBvbiB0aGlzIHN5c3RlbSAoIiArIHN0YXR1cyArICIpLiIpOyByZXR1cm47IH0NCiAgICAgICAgICAgIGFtdHN0YWNrLkdldCgiSVBTX1NjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlIiwgZnVuY3Rpb24gKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgYW10c3lzc3RhdGVbJ0lQU19TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSddLnJlc3BvbnNlID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlU3lzdGVtU3RhdHVzKCk7IH0NCiAgICAgICAgICAgIH0sIDAsIDEpOw0KICAgICAgICB9DQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gRVZFTlQgTE9HIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbEV2ZW50TG9nKGJ1dHRvbikgew0KICAgICAgICAgICAgaWYgKGJ1dHRvbiA9PSAxICYmIHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgYW10Rmlyc3RQdWxsIHw9IDE2Ow0KICAgICAgICAgICAgYW10c3RhY2suRW51bSgiQU1UX01lc3NhZ2VMb2ciLCBwcm9jZXNzTWVzc2FnZUxvZzApOw0KICAgICAgICAgICAgYW10c3RhY2suR2V0TWVzc2FnZUxvZyhwcm9jZXNzTWVzc2FnZUxvZzEpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHByb2Nlc3NNZXNzYWdlTG9nMHJlc3BvbnNlcyA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlTG9nMChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSByZXR1cm47DQogICAgICAgICAgICBpZiAoc3RhdHVzKSBRVignZ282JywgdHJ1ZSk7IC8vIFNob3cgZXZlbnQgbG9nIGxlZnQgcGFuZWwgb3B0aW9uDQogICAgICAgICAgICBpZiAocmVzcG9uc2VzKSBwcm9jZXNzTWVzc2FnZUxvZzByZXNwb25zZXMgPSByZXNwb25zZXM7DQogICAgICAgICAgICB2YXIgZnIgPSAnJywgeCA9ICI8dGFibGUgY2xhc3M9bG9nMSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweD4iOw0KICAgICAgICAgICAgaWYgKHByb2Nlc3NNZXNzYWdlTG9nMHJlc3BvbnNlcyAhPSBudWxsKSB7IGZyID0gKChwcm9jZXNzTWVzc2FnZUxvZzByZXNwb25zZXNbMF1bIklzRnJvemVuIl0gPT0gdHJ1ZSkgPyBBZGRCdXR0b24oIlVuLWZyZWV6ZSBMb2ciLCAiRnJlZXplTG9nKDApIikgOiBBZGRCdXR0b24oIkZyZWV6ZSBMb2ciLCAiRnJlZXplTG9nKDEpIikpOyB9DQoNCg0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgiPGRpdiBzdHlsZT1mbG9hdDpyaWdodD48aW5wdXQgaWQ9ZXZlbnRGaWx0ZXIgcGxhY2Vob2xkZXI9RmlsdGVyIHN0eWxlPW1hcmdpbjo0cHggb25rZXl1cD1ldmVudEZpbHRlcigpPiZuYnNwOzwvZGl2PjxkaXY+Jm5ic3A7IiArIEFkZFJlZnJlc2hCdXR0b24oIlB1bGxFdmVudExvZygxKSIpICsgQWRkQnV0dG9uKCJDbGVhciBMb2ciLCAiQ2xlYXJMb2coKSIpICsgQWRkQnV0dG9uKCJTYXZlLi4uIiwgIlNhdmVFdmVudExvZygpIikgKyBmcik7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVFdmVudExvZycsIHggKyAnPGJyPicpOw0KICAgICAgICB9DQoNCg0KICAgICAgICBmdW5jdGlvbiBTYXZlRXZlbnRMb2coKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8IGV2ZW50bWVzc2FnZXMgPT0gbnVsbCkgcmV0dXJuOw0KICAgICAgICAgICAgU2F2ZUpzb25GaWxlKCdJbnRlbEFtdEV2ZW50bG9nJywgJ2V2ZW50cycsICdJbnRlbCBBTVQgRXZlbnQgTG9nJywgZXZlbnRtZXNzYWdlcyk7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgZXZlbnRtZXNzYWdlcyA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlTG9nMShzdGFjaywgbWVzc2FnZXMpIHsNCiAgICAgICAgICAgIGV2ZW50bWVzc2FnZXMgPSBtZXNzYWdlczsNCiAgICAgICAgICAgIHZhciBpLCB5ID0gMCwgeCA9ICI8dGFibGUgY2xhc3M9bG9nMSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweD48dHI+PHRkIHdpZHRoPTgwcHg+PHA+PHRkPjx0ZD48dGQ+IjsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6OTBweD48Yj4mbmJzcDsmbmJzcDtFdmVudDwvYj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MTEwcHg+PGI+VGltZTwvYj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MTYwcHg+PGI+U291cmNlPC9iPjx0ZCBjbGFzcz1yMT48Yj5EZXNjcmlwdGlvbjwvYj4iOw0KICAgICAgICAgICAgZm9yIChpIGluIG1lc3NhZ2VzKSB7DQogICAgICAgICAgICAgICAgeSsrOw0KICAgICAgICAgICAgICAgIHZhciBpY29uID0gMSwgbSA9IG1lc3NhZ2VzW2ldOw0KICAgICAgICAgICAgICAgIGlmIChtWydFdmVudFNldmVyaXR5J10gPj0gOCkgeyBpY29uID0gMjsgfSBpZiAobVsnRXZlbnRTZXZlcml0eSddID49IDE2KSB7IGljb24gPSAzOyB9DQogICAgICAgICAgICAgICAgeCArPSAiPHRyIGlkPXhhbXRldmVudCIgKyBpICsgIiBjbGFzcz1yMyBvbmNsaWNrPXNob3dFdmVudERldGFpbHMoIiArIGkgKyAiKT48dGQgY2xhc3M9cjE+PHA+PGRpdiBjbGFzcz1pY29uIiArIGljb24gKyAiIHN0eWxlPWRpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDttYXJnaW4tbGVmdDo1cHg7bWFyZ2luLXJpZ2h0OjVweD48L2Rpdj4iICsgKHBhcnNlSW50KGkpICsgMSkgKyAiPHRkIGNsYXNzPXIxIHRpdGxlPSciICsgbVsnVGltZSddLnRvTG9jYWxlU3RyaW5nKCkgKyAiJz4iICsgbVsnVGltZSddLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4nLCB7IHllYXI6ICJudW1lcmljIiwgbW9udGg6ICIyLWRpZ2l0IiwgZGF5OiAibnVtZXJpYyIgfSkgKyAiPGJyPiIgKyBtWydUaW1lJ10udG9Mb2NhbGVUaW1lU3RyaW5nKCdlbicsIHsgaG91cjoiMi1kaWdpdCIsIG1pbnV0ZToiMi1kaWdpdCIsIHNlY29uZDoiMi1kaWdpdCIgfSkgKyAiPHRkIGNsYXNzPXIxPiIgKyBtWydFbnRpdHlTdHInXS5yZXBsYWNlKCIocikiLCAiJnJlZzsiKSArICI8dGQgY2xhc3M9cjE+IiArIG1bJ0Rlc2MnXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoeSA9PSAwID8gIiZuYnNwOyIgOiAiIik7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVFdmVudExvZzInLCB4ICsgJzxicj4nKTsNCiAgICAgICAgICAgIHByb2Nlc3NNZXNzYWdlTG9nMCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gRnJlZXplTG9nKHgpIHsgaWYgKCF4eGRpYWxvZ01vZGUpIHsgYW10c3RhY2suQU1UX01lc3NhZ2VMb2dfRnJlZXplTG9nKHgsIGZ1bmN0aW9uICgpIHsgYW10c3RhY2suRW51bSgiQU1UX01lc3NhZ2VMb2ciLCBwcm9jZXNzTWVzc2FnZUxvZzApOyB9KSB9IH0NCiAgICAgICAgZnVuY3Rpb24gQ2xlYXJMb2coeCkgeyBpZiAoIXh4ZGlhbG9nTW9kZSkgeyBRSCgnaWRfZGlhbG9nTWVzc2FnZScsICdDbGVhciBldmVudCBsb2c/Jyk7IHNldERpYWxvZ01vZGUoMSwgIkV2ZW50IExvZyIsIDMsIENsZWFyTG9nRXgpOyB9IH0NCiAgICAgICAgZnVuY3Rpb24gQ2xlYXJMb2dFeCgpIHsgYW10c3RhY2suQU1UX01lc3NhZ2VMb2dfQ2xlYXJMb2coZnVuY3Rpb24gKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgeyBpZiAoc3RhdHVzICE9IDIwMCkgbWVzc2FnZWJveCgiRXZlbnQgTG9nIiwgIlVuYWJsZSB0byBjbGVhciwgRXJyb3I6ICIgKyBzdGF0dXMpOyBlbHNlIFB1bGxFdmVudExvZygpOyB9KSB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0V2ZW50RGV0YWlscyhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgbSA9IGV2ZW50bWVzc2FnZXNbaF07DQogICAgICAgICAgICB2YXIgeCA9ICc8ZGl2IHN0eWxlPXRleHQtYWxpZ246bGVmdD4nOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlRpbWUiLCBtWydUaW1lJ10udG9Mb2NhbGVTdHJpbmcoKSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU291cmNlIiwgbVsnRW50aXR5U3RyJ10ucmVwbGFjZSgiKHIpIiwgIiZyZWc7IikpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkRlc2NyaXB0aW9uIiwgbVsnRGVzYyddKTsNCiAgICAgICAgICAgIHggKz0gTW9yZVN0YXJ0KCk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiRGV2aWNlIEFkZHJlc3MiLCBtWydEZXZpY2VBZGRyZXNzJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkVudGl0eSIsIG1bJ0VudGl0eSddKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJFbnRpdHkgSW5zdGFuY2UiLCBtWydFbnRpdHlJbnN0YW5jZSddKTsNCiAgICAgICAgICAgIHZhciBlID0gJyc7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIG1bJ0V2ZW50RGF0YSddKSB7IGlmIChlLmxlbmd0aCA+IDApIGUgKz0nLCc7IGUgKz0gbVsnRXZlbnREYXRhJ11baV07IH0NCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJEYXRhIiwgZSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiT2Zmc2V0IiwgbVsnRXZlbnRPZmZzZXQnXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU2Vuc29yIFR5cGUiLCBtWydFdmVudFNlbnNvclR5cGUnXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU2V2ZXJpdHkiLCBtWydFdmVudFNldmVyaXR5J10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlNvdXJjZSBUeXBlIiwgbVsnRXZlbnRTb3VyY2VUeXBlJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlR5cGUiLCBtWydFdmVudFR5cGUnXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU2Vuc29yIE51bWJlciIsIG1bJ1NlbnNvck51bWJlciddKTsNCiAgICAgICAgICAgIHggKz0gTW9yZUVuZCgpOw0KICAgICAgICAgICAgeCArPSAiPC9kaXY+IjsNCiAgICAgICAgICAgIG1lc3NhZ2Vib3goIkV2ZW50ICMiICsgKGggKyAxKSArICIgRGV0YWlscyIsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZXZlbnRGaWx0ZXIoKSB7DQogICAgICAgICAgICB2YXIgZmlsdGVyID0gUSgnZXZlbnRGaWx0ZXInKS52YWx1ZS50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgZm9yICh2YXIgdyBpbiBldmVudG1lc3NhZ2VzKSB7IFFWKCd4YW10ZXZlbnQnICsgdywgZmlsdGVyID09ICcnIHx8IGV2ZW50bWVzc2FnZXNbd11bJ0Rlc2MnXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyKSA+PSAwIHx8IGV2ZW50bWVzc2FnZXNbd11bJ0VudGl0eVN0ciddLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID49IDApOyB9DQogICAgICAgIH0NCg0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEFVRElUIExPRyBQQU5FTA0KICAgICAgICAvLw0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxBdWRpdExvZyhidXR0b24pIHsNCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMSAmJiB4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGFtdEZpcnN0UHVsbCB8PSAzMjsNCiAgICAgICAgICAgIGFtdHN0YWNrLkVudW0oIkFNVF9BdWRpdExvZyIsIHByb2Nlc3NBdWRpdExvZzApOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGF1ZGl0TG9nID0gbnVsbDsNCiAgICAgICAgdmFyIGF1ZGl0TG9nRW5hYmxlZFN0YXRlcyA9IFsiVW5rbm93biIsICJPdGhlciIsICJFbmFibGVkIiwgIkRpc2FibGVkIiwgIlNodXR0aW5nIERvd24iLCAiTm90IEFwcGxpY2FibGUiLCAiRW5hYmxlZCBidXQgT2ZmbGluZSIsICJJbiBUZXN0IiwgIkRlZmVycmVkIiwgIlF1aWVzY2UiLCAiU3RhcnRpbmciXTsNCg0KICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQXVkaXRMb2cwKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICBRVignZ28xNScsIHRydWUpOyAvLyBTaG93IGF1ZGl0IGxvZyBsZWZ0IHBhbmVsIG9wdGlvbg0KDQogICAgICAgICAgICAgICAgdmFyIHIgPSByZXNwb25zZXNbMF1bIkF1ZGl0U3RhdGUiXTsNCiAgICAgICAgICAgICAgICB2YXIgYXVkaXRzdGF0ZSA9IChyICYgMHgwMSkgPyAnRGlzYWJsZWQnIDogJ0VuYWJsZWQnOw0KICAgICAgICAgICAgICAgIGlmIChyICYgMHgwMikgYXVkaXRzdGF0ZSArPSAiLCBMb2NrZWQiOw0KICAgICAgICAgICAgICAgIGlmIChyICYgMHgwNCkgYXVkaXRzdGF0ZSArPSAiLCBBbG1vc3QgRnVsbCI7DQogICAgICAgICAgICAgICAgaWYgKHIgJiAweDA4KSBhdWRpdHN0YXRlICs9ICIsIEZ1bGwiOw0KICAgICAgICAgICAgICAgIGlmIChyICYgMHgxMCkgYXVkaXRzdGF0ZSArPSAiLCBOb0tleSI7DQoNCiAgICAgICAgICAgICAgICB2YXIgeCA9ICI8aDE+QXVkaXQgTG9nIFNldHRpbmdzPC9oMT4iICsgVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiU3RhdGUiLCBhdWRpdHN0YXRlKTsNCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlN0b3JhZ2UiLCByZXNwb25zZXNbMF1bIkN1cnJlbnROdW1iZXJPZlJlY29yZHMiXSArICIgcmVjb3JkKHMpLCAiICsgcmVzcG9uc2VzWzBdWyJQZXJjZW50YWdlRnJlZSJdICsgIiUgZnJlZSIpOw0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiT3ZlcndyaXRlIHBvbGljeSIsICgocmVzcG9uc2VzWzBdWyJPdmVyd3JpdGVQb2xpY3kiXSA9PSAyKSA/ICJXcmFwcyB3aGVuIGZ1bGwiIDogIk5ldmVyIG92ZXJ3cml0ZXMiKSk7DQogICAgICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgICAgIFFIKCdpZF9UYWJsZUF1ZGl0TG9nMScsIHgpOw0KDQogICAgICAgICAgICAgICAgYW10c3RhY2suR2V0QXVkaXRMb2cocHJvY2Vzc0F1ZGl0TG9nMSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQXVkaXRMb2cxKHN0YWNrLCBtZXNzYWdlcykgew0KICAgICAgICAgICAgYXVkaXRMb2cgPSBtZXNzYWdlczsNCiAgICAgICAgICAgIHZhciBpLCB4ID0gIjx0YWJsZSBjbGFzcz1sb2cxIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4PiI7DQoNCiAgICAgICAgICAgIHggKz0gVGFibGVFbmQoIjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ+PGlucHV0IGlkPWF1ZGl0RmlsdGVyIHBsYWNlaG9sZGVyPUZpbHRlciBzdHlsZT1tYXJnaW46NHB4IG9ua2V5dXA9YXVkaXRGaWx0ZXIoKT4mbmJzcDs8L2Rpdj48ZGl2PiAiICsgQWRkUmVmcmVzaEJ1dHRvbigiUHVsbEF1ZGl0TG9nKDEpIikgKyBBZGRCdXR0b24oIlNhdmUuLi4iLCAiU2F2ZUF1ZGl0TG9nKCkiKSArIEFkZEJ1dHRvbigiQ2xlYXIgTG9nIiwgIkNsZWFyQXVkaXRMb2coKSIpIC8qICsgQWRkQnV0dG9uKCJTZXR0aW5ncy4uLiIsICJTaG93QXVkaXRMb2dTZXR0aW5ncygpIikqLykgKyAiPGJyPiI7DQogICAgICAgICAgICBpZiAobWVzc2FnZXMubGVuZ3RoID09IDApIHsNCiAgICAgICAgICAgICAgICB4ID0gIk5vIGF1ZGl0IGxvZyBldmVudHMgZm91bmQuIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdmFyIHkgPSAwOw0KICAgICAgICAgICAgICAgIHggKz0gIjx0YWJsZSBjbGFzcz1sb2cxIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4Pjx0cj48dGQgd2lkdGg9ODBweD48cD48dGQ+PHRkPjx0ZD4iOw0KICAgICAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MTEwcHg+Jm5ic3A7Jm5ic3A7PGI+VGltZTwvYj48dGQgY2xhc3M9cjEgc3R5bGU9d2lkdGg6MjYwcHg+PGI+SW5pdGlhdG9yPC9iPjx0ZCBjbGFzcz1yMT48Yj5BY3Rpb248L2I+IjsNCiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbWVzc2FnZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG0gPSBtZXNzYWdlc1tpXSwgZGVzY3JpcHRpb24gPSBtWydBdWRpdEFwcCddLCBpbml0aWF0b3IgPSBtWydJbml0aWF0b3InXTsNCiAgICAgICAgICAgICAgICAgICAgeSsrOw0KICAgICAgICAgICAgICAgICAgICB2YXIgYWRkciA9ICcnOw0KICAgICAgICAgICAgICAgICAgICBpZiAobVsnTmV0QWRkcmVzcyddLmxlbmd0aCA+IDApIGFkZHIgPSBtWydOZXRBZGRyZXNzJ10ucmVwbGFjZSgnMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxJywnOjoxJyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChtWydFdmVudCddKSBkZXNjcmlwdGlvbiArPSAiLCAiICsgbVsnRXZlbnQnXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKG1bJ0V4U3RyJ10gIT0gbnVsbCkgZGVzY3JpcHRpb24gKz0gIiwgIiArIG1bJ0V4U3RyJ107DQogICAgICAgICAgICAgICAgICAgIGlmIChpbml0aWF0b3IgIT0gJycgJiYgYWRkciAhPSAnJykgaW5pdGlhdG9yICs9ICIsICI7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjx0ciBpZD14YW10YXVkaXQiICsgaSArICIgY2xhc3M9cjMgb25jbGljaz1zaG93QXVkaXREZXRhaWxzKCIgKyBpICsgIik+PHRkIGNsYXNzPXIxIHRpdGxlPSciICsgbVsnVGltZSddLnRvTG9jYWxlU3RyaW5nKCkgKyAiJz4mbmJzcDsmbmJzcDsiICsgbVsnVGltZSddLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4nLCB7IHllYXI6ICJudW1lcmljIiwgbW9udGg6ICIyLWRpZ2l0IiwgZGF5OiAibnVtZXJpYyIgfSkgKyAiPGJyPiZuYnNwOyZuYnNwOyIgKyBtWydUaW1lJ10udG9Mb2NhbGVUaW1lU3RyaW5nKCdlbicsIHsgaG91cjoiMi1kaWdpdCIsIG1pbnV0ZToiMi1kaWdpdCIsIHNlY29uZDoiMi1kaWdpdCIgfSkgKyAiPHRkIGNsYXNzPXIxPiIgKyBpbml0aWF0b3IgKyBhZGRyICsgIjx0ZCBjbGFzcz1yMT4iICsgZGVzY3JpcHRpb247DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbmQoeSA9PSAwID8gIiZuYnNwOyIgOiAiIikgKyAiPGJyPiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBRSCgnaWRfVGFibGVBdWRpdExvZzInLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGF1ZGl0RmlsdGVyKCkgew0KICAgICAgICAgICAgdmFyIGZpbHRlciA9IFEoJ2F1ZGl0RmlsdGVyJykudmFsdWUudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICAgIGZvciAodmFyIHcgaW4gYXVkaXRMb2cpIHsgUVYoJ3hhbXRhdWRpdCcgKyB3LCBmaWx0ZXIgPT0gJycgfHwgSlNPTi5zdHJpbmdpZnkoYXVkaXRMb2dbd10pLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID49IDApOyB9DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIFNhdmVBdWRpdExvZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgYXVkaXRMb2cgPT0gbnVsbCkgcmV0dXJuOw0KICAgICAgICAgICAgU2F2ZUpzb25GaWxlKCdJbnRlbEFtdEF1ZGl0bG9nJywgJ2F1ZGl0ZXZlbnRzJywgJ0ludGVsIEFNVCBBdWRpdCBMb2cnLCBhdWRpdExvZyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBDbGVhckF1ZGl0TG9nKHgpIHsgUUgoJ2lkX2RpYWxvZ01lc3NhZ2UnLCAnQ2xlYXIgYXVkaXQgbG9nPycpOyBzZXREaWFsb2dNb2RlKDEsICJBdWRpdCBMb2ciLCAzLCBDbGVhckF1ZGl0TG9nRXgpOyB9DQogICAgICAgIGZ1bmN0aW9uIENsZWFyQXVkaXRMb2dFeCgpIHsNCiAgICAgICAgICAgIC8vYW10c3RhY2suQU1UX0F1ZGl0TG9nX0NsZWFyTG9nKGZ1bmN0aW9uICgpIHsgUHVsbEF1ZGl0TG9nKCk7IH0pDQogICAgICAgICAgICB2YXIgaGFuZGxlID0gYW10c3RhY2suQU1UX0F1ZGl0TG9nX1NldEF1ZGl0TG9jaygxLDAsIGhhbmRsZSwgZnVuY3Rpb24oKSB7IGFtdHN0YWNrLkFNVF9BdWRpdExvZ19DbGVhckxvZyhmdW5jdGlvbiAoKSB7IGFtdHN0YWNrLkFNVF9BdWRpdExvZ19TZXRBdWRpdExvY2soMCwgMiwgaGFuZGxlLCBmdW5jdGlvbiAoKSB7IHNldFRpbWVvdXQoUHVsbEF1ZGl0TG9nLDEwMDApO30pOyB9KTsgfSk7ICAgICAgICAgDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBTaG93QXVkaXRMb2dTZXR0aW5ncygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BdWRpdExvZ19SZXF1ZXN0U3RhdGVDaGFuZ2UoMiwgMCwgQXVkaXRMb2dTZXR0aW5nc0NvbXBsZXRlZCk7IC8vIEVuYWJsZQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQXVkaXRMb2dTZXR0aW5nc0NvbXBsZXRlZChzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSBQdWxsQXVkaXRMb2coKTsgZWxzZSBtZXNzYWdlYm94KCJBdWRpdCBMb2ciLCAiRXJyb3I6ICIgKyBzdGF0dXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0F1ZGl0RGV0YWlscyhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgaSwgbSA9IGF1ZGl0TG9nW2hdLCB4ID0gJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpsZWZ0Pic7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiVGltZSIsIG1bJ1RpbWUnXS50b0xvY2FsZVN0cmluZygpKTsNCiAgICAgICAgICAgIGlmIChtWydJbml0aWF0b3InXSAhPSAnJykgeCArPSBhZGRIdG1sVmFsdWUoIkluaXRpYXRvciIsIG1bJ0luaXRpYXRvciddKTsNCiAgICAgICAgICAgIGlmIChtWydOZXRBZGRyZXNzJ10gIT0gJycpIHggKz0gYWRkSHRtbFZhbHVlKCJBZGRyZXNzIiwgbVsnTmV0QWRkcmVzcyddKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJBcHBsaWNhdGlvbiIsIG1bJ0F1ZGl0QXBwJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkV2ZW50IiwgbVsnRXZlbnQnXSk7DQogICAgICAgICAgICBpZiAobVsnRXhTdHInXSAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkV4dGVuZGVkIERhdGEiLCBtWydFeFN0ciddKTsNCiAgICAgICAgICAgIH0gZWxzZSBpZiAobVsnRXgnXS5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgdmFyIGUgPSAnJzsNCiAgICAgICAgICAgICAgICBmb3IgKGkgaW4gbVsnRXgnXSkgeyBpZiAoZS5sZW5ndGggPiAwKSBlICs9ICcsJzsgZSArPSBtWydFeCddLmNoYXJDb2RlQXQoaSk7IH0NCiAgICAgICAgICAgICAgICBpZiAoZSAhPSAnJykgeCArPSBhZGRIdG1sVmFsdWUoIkRhdGEgVmFsdWVzIiwgZSk7DQogICAgICAgICAgICAgICAgaWYgKG1bJ0V4J10ubGVuZ3RoID4gMiAmJiBSZWFkU2hvcnQobVsnRXgnXSwgMCkgPT0gKG1bJ0V4J10ubGVuZ3RoIC0gMikpIHggKz0gYWRkSHRtbFZhbHVlKCJEYXRhIFN0cmluZyIsIG1bJ0V4J10uc3Vic3RyaW5nKDIpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjwvZGl2PiI7DQogICAgICAgICAgICBtZXNzYWdlYm94KCJBdWRpdCBFdmVudCAjIiArIChoICsgMSkgKyAiIERldGFpbHMiLCB4KTsNCiAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIENlcnRpZmljYXRlcw0KICAgICAgICAvLw0KDQogICAgICAgIHZhciB4eENlcnRpZmljYXRlcyA9IG51bGw7DQogICAgICAgIHZhciB4eENlcnRQcml2YXRlS2V5cyA9IG51bGw7DQogICAgICAgIHZhciB4eFRsc1NldHRpbmdzID0gbnVsbDsNCiAgICAgICAgdmFyIHh4VGxzQ3VycmVudENlcnQgPSBudWxsOw0KICAgICAgICB2YXIgeHhUTFNDcmVkZW50aWFsQ29udGV4dCA9IG51bGw7DQogICAgICAgIHZhciB4eENhUHJpdmF0ZUtleSA9IG51bGw7DQogICAgICAgIHZhciB4eENhU3ViamVjdEF0dHJpYnV0ZXMgPSBudWxsOw0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxDZXJ0aWZpY2F0ZXMoKSB7DQogICAgICAgICAgICAvLyBXZSBvbmx5IGRlYWwgd2l0aCBjZXJ0aWZpY2F0ZXMgc3RhcnRpbmcgd2l0aCBJbnRlbCBBTVQgNiBhbmQgYmV5b25kDQogICAgICAgICAgICBhbXRzdGFjay5CYXRjaEVudW0obnVsbCwgWyJBTVRfUHVibGljS2V5Q2VydGlmaWNhdGUiLCAiQU1UX1B1YmxpY1ByaXZhdGVLZXlQYWlyIiwgIkFNVF9UTFNTZXR0aW5nRGF0YSIsICJBTVRfVExTQ3JlZGVudGlhbENvbnRleHQiXSwgcHJvY2Vzc0NlcnRzMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQ2VydHMxKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKChzdGF0dXMgPT0gNDAwKSB8fCBlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgcmV0dXJuOw0KICAgICAgICAgICAgUVYoJ2dvMTYnLCB0cnVlKTsgLy8gU2VjdXJpdHkgU2V0dGluZ3MNCiAgICAgICAgICAgIHh4Q2VydGlmaWNhdGVzID0gcmVzcG9uc2VzWyJBTVRfUHVibGljS2V5Q2VydGlmaWNhdGUiXS5yZXNwb25zZXM7DQogICAgICAgICAgICB4eENlcnRQcml2YXRlS2V5cyA9IHJlc3BvbnNlc1siQU1UX1B1YmxpY1ByaXZhdGVLZXlQYWlyIl0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5ncyA9IHJlc3BvbnNlc1siQU1UX1RMU1NldHRpbmdEYXRhIl0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgeHhUTFNDcmVkZW50aWFsQ29udGV4dCA9IHJlc3BvbnNlc1siQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0Il0ucmVzcG9uc2VzOw0KDQogICAgICAgICAgICAvLyBTZWxlY3QgdGhlIGN1cnJlbnQgVExTIGNlcnRpZmljYXRlIGluIHRoZSBkcm9wIGRvd24gYm94DQogICAgICAgICAgICB4eFRsc0N1cnJlbnRDZXJ0ID0gbnVsbDsNCiAgICAgICAgICAgIGlmICh4eFRMU0NyZWRlbnRpYWxDb250ZXh0Lmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB2YXIgY2VydEluc3RhbmNlSWQgPSB4eFRMU0NyZWRlbnRpYWxDb250ZXh0WzBdWydFbGVtZW50SW5Db250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXTsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4Q2VydGlmaWNhdGVzKSB7IGlmICh4eENlcnRpZmljYXRlc1tpXVsnSW5zdGFuY2VJRCddID09IGNlcnRJbnN0YW5jZUlkKSB7IHh4VGxzQ3VycmVudENlcnQgPSBpOyB9IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gU2V0dXAgdGhlIGNlcnRpZmljYXRlcw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRpZmljYXRlcykgew0KICAgICAgICAgICAgICAgIHh4Q2VydGlmaWNhdGVzW2ldLlRydXN0ZWRSb290Q2VydGZpY2F0ZSA9ICh4eENlcnRpZmljYXRlc1tpXVsiVHJ1c3RlZFJvb3RDZXJ0ZmljYXRlIl0gPT0gdHJ1ZSk7DQogICAgICAgICAgICAgICAgeHhDZXJ0aWZpY2F0ZXNbaV0uWDUwOUNlcnRpZmljYXRlID0gd2luZG93LmF0b2IoeHhDZXJ0aWZpY2F0ZXNbaV1bIlg1MDlDZXJ0aWZpY2F0ZSJdKTsNCiAgICAgICAgICAgICAgICB4eENlcnRpZmljYXRlc1tpXS5YSXNzdWVyID0gcGFyc2VDZXJ0TmFtZSh4eENlcnRpZmljYXRlc1tpXVsiSXNzdWVyIl0pOw0KICAgICAgICAgICAgICAgIHh4Q2VydGlmaWNhdGVzW2ldLlhTdWJqZWN0ID0gcGFyc2VDZXJ0TmFtZSh4eENlcnRpZmljYXRlc1tpXVsiU3ViamVjdCJdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGFtdGNlcnRfbGlua0NlcnRQcml2YXRlS2V5KHh4Q2VydGlmaWNhdGVzLCB4eENlcnRQcml2YXRlS2V5cyk7IC8vIFRoaXMgbGlua3MgYWxsIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzDQoNCiAgICAgICAgICAgIHVwZGF0ZUNlcnRpZmljYXRlcygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcGFyc2VDZXJ0TmFtZSh4KSB7DQogICAgICAgICAgICB2YXIgaiwgciA9IHt9LCB4eCA9IHguc3BsaXQoJywnKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHgpIHsgaiA9IHh4W2ldLmluZGV4T2YoJz0nKTsgclt4eFtpXS5zdWJzdHJpbmcoMCwgaildID0geHhbaV0uc3Vic3RyaW5nKGogKyAxKTsgfQ0KICAgICAgICAgICAgcmV0dXJuIHI7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRUbHNTZWN1cml0eVN0YXRlKHgpIHsNCiAgICAgICAgICAgIGlmICh4eFRsc1NldHRpbmdzW3hdWydFbmFibGVkJ10gPT0gZmFsc2UpIHJldHVybiAiRGlzYWJsZWQiOw0KICAgICAgICAgICAgdmFyIHIgPSAoKHh4VGxzU2V0dGluZ3NbeF1bJ011dHVhbEF1dGhlbnRpY2F0aW9uJ10gPT0gdHJ1ZSkgPyAnTXV0dWFsLWF1dGggVExTJyA6ICdTZXJ2ZXItYXV0aCBUTFMnKSArICgoeHhUbHNTZXR0aW5nc1t4XVsnQWNjZXB0Tm9uU2VjdXJlQ29ubmVjdGlvbnMnXSA9PSB0cnVlKSA/ICIgYW5kIG5vbi1UTFMiIDogIiIpOw0KICAgICAgICAgICAgaWYgKCh4eFRsc1NldHRpbmdzW3hdWydNdXR1YWxBdXRoZW50aWNhdGlvbiddID09IHRydWUpICYmICh4eFRsc1NldHRpbmdzW3hdWydUcnVzdGVkQ04nXSkpIHsNCiAgICAgICAgICAgICAgICB2YXIgdHJ1c3RlZENuID0gTWFrZVRvQXJyYXkoeHhUbHNTZXR0aW5nc1t4XVsnVHJ1c3RlZENOJ10pOw0KICAgICAgICAgICAgICAgIGlmICh0cnVzdGVkQ24ubGVuZ3RoID4gMCkgeyByICs9ICIsIFRydXN0ZWQgbmFtZSIgKyAoKHRydXN0ZWRDbi5sZW5ndGggPiAxKT8ncyc6JycpICsgIjogIiArIHRydXN0ZWRDbi5qb2luKCcsICcpICsgIi4iOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcjsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUNlcnRpZmljYXRlcygpIHsNCiAgICAgICAgICAgIGlmICh4eENlcnRpZmljYXRlcyA9PSBudWxsKSByZXR1cm47DQoNCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBpbmRleCBpcyBsb2NhbCAmIHJlbW90ZQ0KICAgICAgICAgICAgdmFyIGxvY2FsTmR4ID0gKCh4eFRsc1NldHRpbmdzWzBdWydJbnN0YW5jZUlEJ10gPT0gJ0ludGVsKHIpIEFNVCBMTVMgVExTIFNldHRpbmdzJykpID8gMCA6IDEsIHJlbW90ZU5keCA9ICgxIC0gbG9jYWxOZHgpOw0KDQogICAgICAgICAgICAvLyBHZW5lcmFsIHNldHRpbmdzDQogICAgICAgICAgICB2YXIgeCA9IFRhYmxlU3RhcnQoKTsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiUmVtb3RlIFRMUyBzZWN1cml0eSIsIGFkZExpbmtDb25kaXRpb25hbChnZXRUbHNTZWN1cml0eVN0YXRlKHJlbW90ZU5keCksICdzaG93U2V0VGxzU2VjdXJpdHlEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJMb2NhbCBUTFMgc2VjdXJpdHkiLCBhZGRMaW5rQ29uZGl0aW9uYWwoZ2V0VGxzU2VjdXJpdHlTdGF0ZShsb2NhbE5keCksICdzaG93U2V0VGxzU2VjdXJpdHlEbGcoKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgeCArPSAiPGJyPiIgKyBUYWJsZVN0YXJ0MigpICsgIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBjZXJ0aWZpY2F0ZXMgZm9yIHRoaXMgY29tcHV0ZXIuPGJyPjxicj4iOw0KICAgICAgICAgICAgaWYgKHh4Q2VydGlmaWNhdGVzLmxlbmd0aCA9PSAwICYmIHh4Q2VydFByaXZhdGVLZXlzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+PGk+Tm8gY2VydGlmaWNhdGVzIGZvdW5kLjwvaT48L2Rpdj48YnI+IjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRpZmljYXRlcykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZGVzYyA9ICcnOw0KICAgICAgICAgICAgICAgICAgICBpZiAoeHhDZXJ0aWZpY2F0ZXNbaV0uVHJ1c3RlZFJvb3RDZXJ0ZmljYXRlKSBkZXNjID0gJywgVHJ1c3RlZCBSb290JzsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHh4Q2VydGlmaWNhdGVzW2ldLlhQcml2YXRlS2V5KSBkZXNjID0gJywgUHJpdmF0ZSBLZXknOw0KICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSB4eFRsc0N1cnJlbnRDZXJ0KSBkZXNjICs9ICcsIFRMUyBjZXJ0JzsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd0NlcnREZXRhaWxzKCIgKyBpICsgIik+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDozcHg+PGI+IiArIEVzY2FwZUh0bWwoeHhDZXJ0aWZpY2F0ZXNbaV0uWFN1YmplY3RbIkNOIl0pICsgIjwvYj48aT4iICsgZGVzYyArICI8L2k+PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRQcml2YXRlS2V5cykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoIXh4Q2VydFByaXZhdGVLZXlzW2ldLlhDZXJ0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93S2V5UGFpckRldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48aT5VbmFzc2lnbmVkIFByaXZhdGUgS2V5IFBhaXIgIyIgKyBpICsgIjwvaT48L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdmFyIGJ1dHRvbnMgPSBBZGRSZWZyZXNoQnV0dG9uKCJQdWxsQ2VydGlmaWNhdGVzKCkiKTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHsgYnV0dG9ucyArPSAoQWRkQnV0dG9uKCJBZGQgQ2VydGlmaWNhdGUuLi4iLCAiYWRkQ2VydEJ1dHRvbigpIikgKyBBZGRCdXR0b24oIklzc3VlIENlcnRpZmljYXRlLi4uIiwgImlzc3VlQ2VydEJ1dHRvbigpIikpOyB9DQogICAgICAgICAgICB4ICs9ICI8YnI+PHRkIGNsYXNzPXIxPiIgKyBUYWJsZUVuZChidXR0b25zKTsNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZUNlcnRzJywgeCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93S2V5UGFpckRldGFpbHMoaCkgew0KICAgICAgICAgICAgdmFyIHggPSAiVGhpcyBpcyBhIHB1YmxpYy9wcml2YXRlIGNlcnRpZmljYXRlIGtleSBwYWlyIHRoYXQgZG9lcyBub3QgYmVsb25nIHRvIGFueSBjZXJ0aWZpY2F0ZXMuIFRoaXMgZW50cnkgc2hvdWxkIGJlIHRlbXBvcmFyeS4iOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIktleSBQYWlyICMiICsgaCwgNSwgZnVuY3Rpb24gKGIpIHsgaWYgKGIgPT0gMikgeyBhbXRzdGFjay5EZWxldGUoJ0FNVF9QdWJsaWNQcml2YXRlS2V5UGFpcicsIHsgJ0luc3RhbmNlSUQnOiB4eENlcnRQcml2YXRlS2V5c1toXVsnSW5zdGFuY2VJRCddIH0sIFB1bGxDZXJ0aWZpY2F0ZXMsIDAsIDEpOyB9IH0sIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHh4Q2VydFN1YmplY3ROYW1lcyA9IHsgJ0NOJzogJ0NvbW1vbiBOYW1lJywgJ08nOiAnT3JnYW5pemF0aW9uJywgJ09VJzogJ09yZyBVbml0JywgJ1MnOiAnU3RhdGUvUHJvdmluY2UnLCAnU1QnOiAnU3RhdGUvUHJvdmluY2UnLCAnTCc6ICdMb2NhbGl0eScsICdDJzogJ0NvdW50cnknLCAnU04nOiAnU3VybmFtZScsICdHTic6ICdHaXZlbiBuYW1lJyB9Ow0KICAgICAgICBmdW5jdGlvbiBzaG93Q2VydERldGFpbHMoaCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIGMgPSB4eENlcnRpZmljYXRlc1toXSwgeCA9ICc8YnI+JzsNCg0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkNlcnRpZmljYXRlIiwgYy5YNTA5Q2VydGlmaWNhdGUubGVuZ3RoICsgIiBieXRlcywgPGEgc3R5bGU9Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Ymx1ZSBvbmNsaWNrPWRvd25sb2FkQ2VydCgiICsgaCArICIpPkRvd25sb2FkPC9hPiIpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlRydXN0ZWQgcm9vdCIsIGMuVHJ1c3RlZFJvb3RDZXJ0ZmljYXRlID8gIlllcyIgOiAiTm8iKTsNCiAgICAgICAgICAgIGlmIChjLlRydXN0ZWRSb290Q2VydGZpY2F0ZSA9PSBmYWxzZSAmJiBjLlhQcml2YXRlS2V5KSB7IHggKz0gYWRkSHRtbFZhbHVlKCdQcml2YXRlIGtleScsICdQcmVzZW50Jyk7IH0NCg0KICAgICAgICAgICAgLy8gU2hvdyBjZXJ0aWZpY2F0ZSB1c2FnZXMNCiAgICAgICAgICAgIC8qDQogICAgICAgICAgICB5ID0gW107DQogICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2UgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIGlmIChleHRLZXlVc2FnZS5jbGllbnRBdXRoID09IHRydWUpIHsgeS5wdXNoKCJUTFMmbmJzcDtDbGllbnQiKTsgfQ0KICAgICAgICAgICAgICAgIGlmIChleHRLZXlVc2FnZS5jb2RlU2lnbmluZyA9PSB0cnVlKSB7IHkucHVzaCgiQ29kZSZuYnNwO1NpZ25pbmciKTsgfQ0KICAgICAgICAgICAgICAgIGlmIChleHRLZXlVc2FnZS5lbWFpbFByb3RlY3Rpb24gPT0gdHJ1ZSkgeyB5LnB1c2goIkVNYWlsIik7IH0NCiAgICAgICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2Uuc2VydmVyQXV0aCA9PSB0cnVlKSB7IHkucHVzaCgiVExTJm5ic3A7U2VydmVyIik7IH0NCiAgICAgICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2VbIjIuMTYuODQwLjEuMTEzNzQxLjEuMi4xIl0gPT0gdHJ1ZSkgeyB5LnB1c2goIkludGVsJnJlZzsmbmJzcDtBTVQgQ29uc29sZSIpOyB9DQogICAgICAgICAgICAgICAgaWYgKGV4dEtleVVzYWdlWyIyLjE2Ljg0MC4xLjExMzc0MS4xLjIuMiJdID09IHRydWUpIHsgeS5wdXNoKCJJbnRlbCZyZWc7Jm5ic3A7QU1UIEFnZW50Iik7IH0NCiAgICAgICAgICAgICAgICBpZiAoZXh0S2V5VXNhZ2VbIjIuMTYuODQwLjEuMTEzNzQxLjEuMi4zIl0gPT0gdHJ1ZSkgeyB5LnB1c2goIkludGVsJnJlZzsmbmJzcDtBTVQgQWN0aXZhdGlvbiIpOyB9DQogICAgICAgICAgICAgICAgaWYgKGV4dEtleVVzYWdlLnRpbWVTdGFtcGluZyA9PSB0cnVlKSB7IHkucHVzaCgiVGltZSZuYnNwO1N0YW1waW5nIik7IH0NCiAgICAgICAgICAgICAgICBpZiAoeS5sZW5ndGggPiAwKSB7IHggKz0gYWRkSHRtbFZhbHVlTm9UaXRsZSgiQ2VydGlmaWNhdGUgVXNhZ2UiLCB5LmpvaW4oJywgJykgKyAnLicpICsgJzxiciBjbGVhcj1hbGwgLz4nOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAqLw0KDQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheSI+PGk+Q2VydGlmaWNhdGUgU3ViamVjdDwvaT48L2Rpdj48YnI+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYy5YU3ViamVjdCkgeyBpZiAoYy5YU3ViamVjdFtpXSkgeyB4ICs9IGFkZEh0bWxWYWx1ZSh4eENlcnRTdWJqZWN0TmFtZXNbaV0gPyB4eENlcnRTdWJqZWN0TmFtZXNbaV0gOiBpLCBFc2NhcGVIdG1sKGMuWFN1YmplY3RbaV0pKTsgfSB9DQogICAgICAgICAgICAvLyB4ICs9IGFkZEh0bWxWYWx1ZU5vVGl0bGUoJ0ZpbmdlcnByaW50JywgYy5maW5nZXJwcmludC5zdWJzdHJpbmcoMCwyOSkgKyAnPGJyIC8+JyArIGMuZmluZ2VycHJpbnQuc3Vic3RyaW5nKDMwKSk7IC8vIFRPRE86IFBhcnNlIHRoZSBjZXJ0aWZpY2F0ZSB1c2luZyBGb3JnZSBhbmQgZ2V0IHRoZSBmaW5nZXJwcmludA0KICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9ImJvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXkiPjxpPklzc3VlciBDZXJ0aWZpY2F0ZTwvaT48L2Rpdj48YnI+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYy5YSXNzdWVyKSB7IGlmIChjLlhJc3N1ZXJbaV0pIHsgeCArPSBhZGRIdG1sVmFsdWUoeHhDZXJ0U3ViamVjdE5hbWVzW2ldID8geHhDZXJ0U3ViamVjdE5hbWVzW2ldIDogaSwgRXNjYXBlSHRtbChjLlhJc3N1ZXJbaV0pKTsgfSB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQ2VydGlmaWNhdGUgLSAiICsgRXNjYXBlSHRtbChjLlhTdWJqZWN0WyJDTiJdKSwgNSwgZnVuY3Rpb24gKGIpIHsNCiAgICAgICAgICAgICAgICBpZiAoYiA9PSAyKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJpdmF0ZSBrZXksIGRlbGV0ZSBpdC4NCiAgICAgICAgICAgICAgICAgICAgaWYgKHh4Q2VydGlmaWNhdGVzW2hdLlhQcml2YXRlS2V5KSBhbXRzdGFjay5EZWxldGUoJ0FNVF9QdWJsaWNQcml2YXRlS2V5UGFpcicsIHsgJ0luc3RhbmNlSUQnOiB4eENlcnRpZmljYXRlc1toXS5YUHJpdmF0ZUtleVsnSW5zdGFuY2VJRCddIH0sIGZ1bmN0aW9uICgpIHsgfSwgMCwgMSk7DQogICAgICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgY2VydGlmaWNhdGUNCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suRGVsZXRlKCdBTVRfUHVibGljS2V5Q2VydGlmaWNhdGUnLCB4eENlcnRpZmljYXRlc1toXSwgY2VydGlmaWNhdGVSZW1vdmVkLCAwLCAxKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LCB4KTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgZnVuY3Rpb24gZG93bmxvYWRDZXJ0KGgpIHsgDQoNCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoeHhDZXJ0aWZpY2F0ZXNbaF0uWDUwOUNlcnRpZmljYXRlKSwgeHhDZXJ0aWZpY2F0ZXNbaF0uWFN1YmplY3RbJ0NOJ10gKyAiLmNlciIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2VydF9GaWxlU2VsZWN0SGFuZGxlcihlKSB7DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgICAgICBpZiAoZS5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoID09IDEpIHsNCiAgICAgICAgICAgICAgICBpZiAoZS5kYXRhVHJhbnNmZXIuZmlsZXNbMF0ubmFtZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKCcucDEyJykpIHsNCiAgICAgICAgICAgICAgICAgICAgaXNzdWVDZXJ0QnV0dG9uKGUuZGF0YVRyYW5zZmVyLmZpbGVzKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBhZGRDZXJ0QnV0dG9uKGUuZGF0YVRyYW5zZmVyLmZpbGVzKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgeHhEcmFnRHJvcENlcnRGaWxlcyA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIGFkZENlcnRCdXR0b24oZmlsZXMpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgIXh4QWNjb3VudEFkbWluTmFtZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MTBweD48L2Rpdj4nOw0KICAgICAgICAgICAgeHhEcmFnRHJvcENlcnRGaWxlcyA9IGZpbGVzOw0KDQogICAgICAgICAgICB2YXIgaW5wdXQgPSAiPGlucHV0IGlkPWNlcnRvcGVuIG9uY2hhbmdlPWFkZENlcnRCdXR0b25VcGRhdGUoKSB0eXBlPWZpbGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggYWNjZXB0PScuY2VyLC5wZW0nPiI7DQogICAgICAgICAgICBpZiAoeHhEcmFnRHJvcENlcnRGaWxlcykgeyBpbnB1dCA9ICc8aW5wdXQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggcmVhZG9ubHkgZGlzYWJsZWQgdmFsdWU9IicgKyB4eERyYWdEcm9wQ2VydEZpbGVzWzBdLm5hbWUgKyAnIj4nOyB9DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PiIgKyBpbnB1dCArICI8ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5DZXJ0aWZpY2F0ZSBmaWxlPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1jZXJ0dHlwZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweD48b3B0aW9uIHZhbHVlPTA+Q2hhaW4gQ2VydGlmaWNhdGU8L29wdGlvbj48b3B0aW9uIHZhbHVlPTE+VHJ1c3RlZCBSb290IENlcnRpZmljYXRlPC9vcHRpb24+PC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGUgdHlwZTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQWRkIENlcnRpZmljYXRlIiwgMywgYWRkQ2VydEJ1dHRvbk9rLCB4KTsNCiAgICAgICAgICAgIGFkZENlcnRCdXR0b25VcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZENlcnRCdXR0b25VcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgY2VydG9wZW4gPSBnZXRJbnB1dEVsZW1lbnQoJ2NlcnRvcGVuJyk7DQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgIWNlcnRvcGVuIHx8IGNlcnRvcGVuLmZpbGVzLmxlbmd0aCA9PSAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZENlcnRCdXR0b25PaygpIHsNCg0KICAgICAgICAgICAgdmFyIGNlcnRvcGVuID0gZ2V0SW5wdXRFbGVtZW50KCdjZXJ0b3BlbicpOw0KICAgICAgICAgICAgdmFyIGZpbGVzID0geHhEcmFnRHJvcENlcnRGaWxlczsNCiAgICAgICAgICAgIGlmIChjZXJ0b3BlbikgZmlsZXMgPSBjZXJ0b3Blbi5maWxlczsNCiAgICAgICAgICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPT0gMSkgew0KICAgICAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOw0KICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBhZGRDZXJ0QnV0dG9uT2syOw0KICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZXNbMF0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBmdW5jdGlvbiBhZGRDZXJ0QnV0dG9uT2syKGZpbGUpIHsNCiAgICAgICAgICAgIHZhciBkYXRhID0gZmlsZS50YXJnZXQucmVzdWx0Ow0KICAgICAgICAgICAgdmFyIGkgPSBkYXRhLmluZGV4T2YoJy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLScpOw0KICAgICAgICAgICAgaWYgKGkgPiAwKSB7DQogICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIC5QRU0gZmlsZSwga2VlcCBldmVyeXRoaW5nIGJldHdlZW4gQkVHSU4vRU5ELCBjbGVhbiBpdCB1cCBhbmQgdXNlIGFzLWlzLiBJdCdzIGFscmVhZHkgQmFzZTY0Lg0KICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhpICsgMjcpOw0KICAgICAgICAgICAgICAgIGkgPSBkYXRhLmluZGV4T2YoJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nKTsNCiAgICAgICAgICAgICAgICBpZiAoaSA+IDApIGRhdGEgPSBkYXRhLnN1YnN0cmluZygwLCBpKQ0KICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1xyXG4vZywgJycpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgLkNFUiBmaWxlLCBqdXN0IGJhc2U2NCBlbmNvZGUgaXQgYW5kIHdlIHNob3VsZCBiZSBvay4NCiAgICAgICAgICAgICAgICBkYXRhID0gYnRvYShkYXRhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChnZXRTZWxlY3RFbGVtZW50KCdjZXJ0dHlwZScpLnZhbHVlID09IDEpIHsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkVHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZShkYXRhLCBjZXJ0aWZpY2F0ZUFkZGVkKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgYW10c3RhY2suQU1UX1B1YmxpY0tleU1hbmFnZW1lbnRTZXJ2aWNlX0FkZENlcnRpZmljYXRlKGRhdGEsIGNlcnRpZmljYXRlQWRkZWQpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaXNzdWVDZXJ0QnV0dG9uKGZpbGVzKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8ICF4eEFjY291bnRBZG1pbk5hbWUpIHJldHVybjsNCiAgICAgICAgICAgIHh4RHJhZ0Ryb3BDZXJ0RmlsZXMgPSBmaWxlczsNCg0KDQoNCiAgICAgICAgICAgIHZhciB4ID0gJycsIGlucHV0ID0gIjxpbnB1dCBpZD1jZXJ0b3BlbiB0eXBlPWZpbGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHggb25jaGFuZ2U9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgYWNjZXB0PScucDEyJz4iOw0KICAgICAgICAgICAgaWYgKHh4RHJhZ0Ryb3BDZXJ0RmlsZXMpIHsgaW5wdXQgPSAnPGlucHV0IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4IHJlYWRvbmx5IGRpc2FibGVkIHZhbHVlPSInICsgeHhEcmFnRHJvcENlcnRGaWxlc1swXS5uYW1lICsgJyI+JzsgfQ0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZWhlaWdodDoyNnB4O21hcmdpbi10b3A6MTRweD4iICsgaW5wdXQgKyAiPGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGUgZmlsZTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxpbnB1dCBvbmtleXVwPWlzc3VlQ2VydEJ1dHRvblVwZGF0ZSgpIGlkPWNlcnRvcGVucGFzcyB0eXBlPXBhc3N3b3JkIGF1dG9jb21wbGV0ZT1vZmYgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHg+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGUgcGFzc3dvcmQ8L2Rpdj48L2Rpdj4iOw0KDQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT0iYm9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheSI+PGk+SW50ZWwmcmVnOyBBTVQgQ2VydGlmaWNhdGU8L2k+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydGNuIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PkNvbW1vbiBOYW1lPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydG8gc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHg+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+T3JnYW5pemF0aW9uPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydHN0IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIzMHB4PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlN0YXRlL1Byb3ZpbmNlPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IG9ua2V5dXA9aXNzdWVDZXJ0QnV0dG9uVXBkYXRlKCkgaWQ9Y2VydGMgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjMwcHg+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q291bnRyeTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICc8ZGl2PkNlcnRpZmljYXRlIFVzYWdlczwvZGl2Pjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOm5vbmU7aGVpZ2h0OjEwMHB4O292ZXJmbG93OmF1dG87d2lkdGg6MTAwJTtib3JkZXI6IDFweCBzb2xpZCAjMDAwO2JhY2tncm91bmQtY29sb3I6d2hpdGU7b3ZlcmZsb3cteDpoaWRkZW47bWFyZ2luOjA7cGFkZGluZzowIj4nOw0KICAgICAgICAgICAgLy94ICs9ICc8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGlkPWQxMV9jdTE+SW50ZWwmcmVnOyBBTVQgQ29uc29sZTwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgLy94ICs9ICc8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGlkPWQxMV9jdTI+SW50ZWwmcmVnOyBBTVQgQWdlbnQ8L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIC8veCArPSAnPGxpPjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBpZD1kMTFfY3UzPkludGVsJnJlZzsgQU1UIEFjdGl2YXRpb248L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggaWQ9ZDExX2N1NCBjaGVja2VkPlRMUyBTZXJ2ZXIgKEhUVFBTKTwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgeCArPSAnPGxpPjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBpZD1kMTFfY3U1PlRMUyBDbGllbnQgKEhUVFBTKTwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgeCArPSAnPGxpPjxsYWJlbD48aW5wdXQgdHlwZT1jaGVja2JveCBpZD1kMTFfY3U2PkVtYWlsIFByb3RlY3Rpb248L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggaWQ9ZDExX2N1Nz5Db2RlIFNpZ25pbmc8L2xhYmVsPjwvbGk+JzsNCiAgICAgICAgICAgIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggaWQ9ZDExX2N1OD5UaW1lIFN0YW1wPC9sYWJlbD48L2xpPic7DQogICAgICAgICAgICB4ICs9ICc8L3VsPic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiSXNzdWUgQ2VydGlmaWNhdGUiLCAzLCBpc3N1ZUNlcnRCdXR0b25PaywgeCk7DQogICAgICAgICAgICBpc3N1ZUNlcnRCdXR0b25VcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzc3VlQ2VydEJ1dHRvblVwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBjZXJ0b3BlbiA9IGdldElucHV0RWxlbWVudCgnY2VydG9wZW4nKTsNCiAgICAgICAgICAgIFFFKCdjZXJ0b3BlbnBhc3MnLCAhY2VydG9wZW4gfHwgKGNlcnRvcGVuICYmIGNlcnRvcGVuLmZpbGVzLmxlbmd0aCA9PSAxKSk7DQogICAgICAgICAgICB2YXIgeCA9ICghY2VydG9wZW4gfHwgY2VydG9wZW4uZmlsZXMubGVuZ3RoIDwgMik7DQogICAgICAgICAgICBpZiAoKCFjZXJ0b3BlbiB8fCAoY2VydG9wZW4gJiYgY2VydG9wZW4uZmlsZXMubGVuZ3RoKSkgPT0gMSAmJiBRKCdjZXJ0b3BlbnBhc3MnKS52YWx1ZSA9PSAnJykgeCA9IGZhbHNlOw0KICAgICAgICAgICAgaWYgKGdldElucHV0RWxlbWVudCgnY2VydGNuJykudmFsdWUgPT0gJycgfHwgZ2V0SW5wdXRFbGVtZW50KCdjZXJ0bycpLnZhbHVlID09ICcnIHx8IGdldElucHV0RWxlbWVudCgnY2VydHN0JykudmFsdWUgPT0gJycgfHwgZ2V0SW5wdXRFbGVtZW50KCdjZXJ0YycpLnZhbHVlID09ICcnKSB7IHggPSBmYWxzZTsgfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gaXNzdWVDZXJ0QnV0dG9uT2soKSB7DQoNCiAgICAgICAgICAgIHZhciBjZXJ0b3BlbiA9IGdldElucHV0RWxlbWVudCgnY2VydG9wZW4nKTsNCiAgICAgICAgICAgIHZhciBmaWxlcyA9IHh4RHJhZ0Ryb3BDZXJ0RmlsZXM7DQogICAgICAgICAgICBpZiAoY2VydG9wZW4pIGZpbGVzID0gY2VydG9wZW4uZmlsZXM7DQogICAgICAgICAgICBpZiAoZmlsZXMgJiYgZmlsZXMubGVuZ3RoID09IDEpIHsNCiAgICAgICAgICAgICAgICAvLyBJc3N1ZSBhIGNlcnRpZmljYXRlIHVzaW5nIHRoaXMgZmlsZQ0KICAgICAgICAgICAgICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOw0KICAgICAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBpc3N1ZUNlcnRCdXR0b25PazI7DQogICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyhmaWxlc1swXSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIElzc3VlIGEgY2VydGlmaWNhdGUgdXNpbmcgYSBkdW1teSBDQQ0KICAgICAgICAgICAgICAgIGlzc3VlQ2VydEJ1dHRvbk9rMyhudWxsKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzc3VlQ2VydEJ1dHRvbk9rMihmaWxlKSB7DQogICAgICAgICAgICAvLyBMb2FkIHRoZSBDQSBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkNCiAgICAgICAgICAgIHZhciByID0gYW10Y2VydF9sb2FkUDEyRmlsZShmaWxlLnRhcmdldC5yZXN1bHQsIFEoJ2NlcnRvcGVucGFzcycpLnZhbHVlLCBpc3N1ZUNlcnRCdXR0b25PazMpOw0KICAgICAgICAgICAgaWYgKHIgPT0gZmFsc2UpIHsgbWVzc2FnZWJveCgiSXNzdWUgQ2VydGlmaWNhdGUiLCAiVW5hYmxlIHRvIGRlY3J5cHQvZGVjb2RlIGNlcnRpZmljYXRlLiIpOyByZXR1cm47IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGlzc3VlQ2VydEJ1dHRvbk9rMyhwcml2YXRlS2V5LCBzdWJqZWN0QXR0cmlidXRlcywgY2VydCkgew0KICAgICAgICAgICAgLy8gQXNrIEludGVsIEFNVCB0byBnZW5lcmF0ZSBhIGtleSBwYWlyDQogICAgICAgICAgICB4eENhUHJpdmF0ZUtleSA9IHByaXZhdGVLZXk7DQogICAgICAgICAgICB4eENhU3ViamVjdEF0dHJpYnV0ZXMgPSBzdWJqZWN0QXR0cmlidXRlczsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9QdWJsaWNLZXlNYW5hZ2VtZW50U2VydmljZV9HZW5lcmF0ZUtleVBhaXIoMCwgMjA0OCwgR2VuZXJhdGVLZXlQYWlyUmVzcG9uc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gR2VuZXJhdGVLZXlQYWlyUmVzcG9uc2Uoc3RhY2ssIHNlcnZpY2VOYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCdJc3N1ZSBDZXJ0aWZpY2F0ZScsICdGYWlsZWQgdG8gZ2VuZXJhdGUga2V5IHBhaXIuIFN0YXR1czogJyArIHN0YXR1cyk7IHJldHVybjsgfQ0KICAgICAgICAgICAgaWYgKHJlc3BvbnNlLkJvZHlbJ1JldHVyblZhbHVlJ10gIT0gMCkgeyBtZXNzYWdlYm94KCdJc3N1ZSBDZXJ0aWZpY2F0ZScsICdGYWlsZWQgdG8gZ2VuZXJhdGUga2V5IHBhaXIsICcgKyByZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZVN0ciddKTsgcmV0dXJuOyB9DQoNCiAgICAgICAgICAgIC8vIEdldCB0aGUgbmV3IGtleSBwYWlyDQogICAgICAgICAgICBhbXRzdGFjay5FbnVtKCJBTVRfUHVibGljUHJpdmF0ZUtleVBhaXIiLCBHZW5lcmF0ZUtleVBhaXJSZXNwb25zZTIsIHJlc3BvbnNlLkJvZHlbJ0tleVBhaXInXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEdlbmVyYXRlS2V5UGFpclJlc3BvbnNlMihzdGFjaywgc2VydmljZU5hbWUsIHJlc3BvbnNlLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgbWVzc2FnZWJveCgnSXNzdWUgQ2VydGlmaWNhdGUnLCAnRmFpbGVkIHRvIGdlbmVyYXRlIGtleSBwYWlyLiBTdGF0dXM6ICcgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgIHZhciBERVJLZXkgPSBudWxsOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiByZXNwb25zZSkgeyBpZiAocmVzcG9uc2VbaV1bJ0luc3RhbmNlSUQnXSA9PSB0YWcpIERFUktleSA9IHJlc3BvbnNlW2ldWydERVJLZXknXTsgfQ0KDQogICAgICAgICAgICAvLyBHZXQgY2VydGlmaWNhdGUgdmFsdWVzDQogICAgICAgICAgICB2YXIgY2VydGF0dHJpYnV0ZXMgPSB7ICdDTic6IGdldElucHV0RWxlbWVudCgnY2VydGNuJykudmFsdWUsICdPJzogZ2V0SW5wdXRFbGVtZW50KCdjZXJ0bycpLnZhbHVlLCAnU1QnOiBnZXRJbnB1dEVsZW1lbnQoJ2NlcnRzdCcpLnZhbHVlLCAnQyc6IGdldElucHV0RWxlbWVudCgnY2VydGMnKS52YWx1ZSB9Ow0KICAgICAgICAgICAgdmFyIGlzc3VlcmF0dHJpYnV0ZXMgPSB7ICdDTic6ICdVbnRydXN0ZWQgUm9vdCBDZXJ0aWZpY2F0ZScgfTsNCiAgICAgICAgICAgIGlmICh4eENhUHJpdmF0ZUtleSAhPSBudWxsICYmIHh4Q2FTdWJqZWN0QXR0cmlidXRlcykgew0KICAgICAgICAgICAgICAgIGlzc3VlcmF0dHJpYnV0ZXMgPSB7fTsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4Q2FTdWJqZWN0QXR0cmlidXRlcykgew0KICAgICAgICAgICAgICAgICAgICBpc3N1ZXJhdHRyaWJ1dGVzW3h4Q2FTdWJqZWN0QXR0cmlidXRlc1tpXS5zaG9ydE5hbWVdID0geHhDYVN1YmplY3RBdHRyaWJ1dGVzW2ldLnZhbHVlOyAvLyBUaGUgaXNzdWluZyBDQSdzIHN1YmplY3QgYXR0cmlidXRlcyANCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IA0KDQogICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBleHRlbmRlZCBrZXkgdXNhZ2VzDQogICAgICAgICAgICB2YXIgZXh0S2V5VXNhZ2UgPSB7IG5hbWU6ICdleHRLZXlVc2FnZScgfQ0KICAgICAgICAgICAgLy9pZiAoUSgnZDExX2N1MScpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2VbJzIuMTYuODQwLjEuMTEzNzQxLjEuMi4xJ10gPSB0cnVlOyBleHRLZXlVc2FnZS5jbGllbnRBdXRoID0gdHJ1ZTsgfQ0KICAgICAgICAgICAgLy9pZiAoUSgnZDExX2N1MicpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2VbJzIuMTYuODQwLjEuMTEzNzQxLjEuMi4yJ10gPSB0cnVlOyBleHRLZXlVc2FnZS5jbGllbnRBdXRoID0gdHJ1ZTsgfQ0KICAgICAgICAgICAgLy9pZiAoUSgnZDExX2N1MycpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2VbJzIuMTYuODQwLjEuMTEzNzQxLjEuMi4zJ10gPSB0cnVlOyBleHRLZXlVc2FnZS5jbGllbnRBdXRoID0gdHJ1ZTsgfQ0KICAgICAgICAgICAgaWYgKFEoJ2QxMV9jdTQnKS5jaGVja2VkKSB7IGV4dEtleVVzYWdlLnNlcnZlckF1dGggPSB0cnVlOyB9DQogICAgICAgICAgICBpZiAoUSgnZDExX2N1NScpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2UuY2xpZW50QXV0aCA9IHRydWU7IH0NCiAgICAgICAgICAgIGlmIChRKCdkMTFfY3U2JykuY2hlY2tlZCkgeyBleHRLZXlVc2FnZS5lbWFpbFByb3RlY3Rpb24gPSB0cnVlOyB9DQogICAgICAgICAgICBpZiAoUSgnZDExX2N1NycpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2UuY29kZVNpZ25pbmcgPSB0cnVlOyB9DQogICAgICAgICAgICBpZiAoUSgnZDExX2N1OCcpLmNoZWNrZWQpIHsgZXh0S2V5VXNhZ2UudGltZVN0YW1waW5nID0gdHJ1ZTsgfQ0KDQogICAgICAgICAgICAvLyBTaWduIHRoZSBrZXkgcGFpciB1c2luZyB0aGUgQ0EgY2VydGlmaWF0ZQ0KICAgICAgICAgICAgdmFyIGNlcnQgPSBhbXRjZXJ0X3NpZ25XaXRoQ2FLZXkoREVSS2V5LCB4eENhUHJpdmF0ZUtleSwgY2VydGF0dHJpYnV0ZXMsIGlzc3VlcmF0dHJpYnV0ZXMsIGV4dEtleVVzYWdlKTsNCiAgICAgICAgICAgIGlmIChjZXJ0ID09IG51bGwpIHsgbWVzc2FnZWJveCgnSXNzdWUgQ2VydGlmaWNhdGUnLCAnVW5hYmxlIHRvIHNpZ24gY2VydGlmaWNhdGUuJyk7IHJldHVybjsgfQ0KDQogICAgICAgICAgICAvLyBQbGFjZSB0aGUgcmVzdWx0aW5nIHNpZ25lZCBjZXJ0aWZpY2F0ZSBiYWNrIGludG8gQU1UDQogICAgICAgICAgICB2YXIgcGVtID0gZm9yZ2UucGtpLmNlcnRpZmljYXRlVG9QZW0oY2VydCkucmVwbGFjZSgvKFxyXG58XG58XHIpL2dtLCAiIik7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfUHVibGljS2V5TWFuYWdlbWVudFNlcnZpY2VfQWRkQ2VydGlmaWNhdGUocGVtLnN1YnN0cmluZygyNywgcGVtLmxlbmd0aCAtIDI1KSwgR2VuZXJhdGVLZXlQYWlyUmVzcG9uc2U0KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEdlbmVyYXRlS2V5UGFpclJlc3BvbnNlNChzdGFjaywgc2VydmljZU5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goJ0lzc3VlIENlcnRpZmljYXRlJywgJ0ZhaWxlZCB0byBnZW5lcmF0ZSBrZXkgcGFpci4gU3RhdHVzOiAnICsgc3RhdHVzKTsgcmV0dXJuOyB9DQogICAgICAgICAgICBQdWxsQ2VydGlmaWNhdGVzKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBjZXJ0aWZpY2F0ZUFkZGVkKHN0YWNrLCBzZXJ2aWNlTmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgeyBpZiAoc3RhdHVzICE9IDIwMCB8fCByZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZSddICE9IDApIHsgbWVzc2FnZWJveCgnQWRkIENlcnRpZmljYXRlJywgJ1VuYWJsZSB0byBhZGQgY2VydGlmaWNhdGUsIGVycm9yICcgKyAoc3RhdHVzICE9IDIwMCA/IHN0YXR1cyA6IHJlc3BvbnNlLkJvZHlbJ1JldHVyblZhbHVlU3RyJ10pKTsgfSBlbHNlIFB1bGxDZXJ0aWZpY2F0ZXMoKTsgfQ0KICAgICAgICBmdW5jdGlvbiBjZXJ0aWZpY2F0ZVJlbW92ZWQoc3RhY2ssIHNlcnZpY2VOYW1lLCBoZWFkZXIsIHN0YXR1cykgeyBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCdSZW1vdmUgQ2VydGlmaWNhdGUnLCAnVW5hYmxlIHRvIHJlbW92ZSBjZXJ0aWZpY2F0ZSwgZXJyb3IgJyArIHN0YXR1cyk7IH0gZWxzZSBQdWxsQ2VydGlmaWNhdGVzKCk7IH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRJbnB1dEVsZW1lbnQoaWQpIHsgdmFyIGFsbGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7IGZvciAodCA9IDA7IHQgPCBhbGxlbGVtZW50cy5sZW5ndGg7IHQrKykgeyBpZiAoYWxsZWxlbWVudHNbdF0uaWQgPT0gaWQpIHJldHVybiBhbGxlbGVtZW50c1t0XTsgfSB9DQogICAgICAgIGZ1bmN0aW9uIGdldFNlbGVjdEVsZW1lbnQoaWQpIHsgdmFyIGFsbGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpOyBmb3IgKHQgPSAwOyB0IDwgYWxsZWxlbWVudHMubGVuZ3RoOyB0KyspIHsgaWYgKGFsbGVsZW1lbnRzW3RdLmlkID09IGlkKSByZXR1cm4gYWxsZWxlbWVudHNbdF07IH0gfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXRUbHNTZWN1cml0eURsZyh4KSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48c2VsZWN0IG9uY2hhbmdlPXNob3dTZXRUbHNTZWN1cml0eURsZ1VwZGF0ZSgpIGlkPXRsc2NlcnQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHg+PG9wdGlvbiB2YWx1ZT0tMT5ObyBDZXJ0aWZpY2F0ZSwgVExTIERpc2FibGVkPC9vcHRpb24+IjsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDZXJ0aWZpY2F0ZXMpIHsgaWYgKHh4Q2VydGlmaWNhdGVzW2ldLlRydXN0ZWRSb290Q2VydGZpY2F0ZSA9PSBmYWxzZSAmJiB4eENlcnRpZmljYXRlc1tpXS5YUHJpdmF0ZUtleSAmJiAoeHhUbHNDdXJyZW50Q2VydCA9PSBudWxsIHx8IHh4VGxzQ3VycmVudENlcnQgPT0gaSkpIHsgeCArPSAiPG9wdGlvbiB2YWx1ZT0iICsgaSArICI+IiArIHh4Q2VydGlmaWNhdGVzW2ldLlhTdWJqZWN0WyJDTiJdICsgIjwvb3B0aW9uPiI7IH0gfQ0KICAgICAgICAgICAgeCArPSAiPC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+Q2VydGlmaWNhdGU8L2Rpdj48L2Rpdj4iOw0KDQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9dGxzcmVtb3RlIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9uY2hhbmdlPXNob3dTZXRUbHNTZWN1cml0eURsZ1VwZGF0ZSgpPjxvcHRpb24gdmFsdWU9MD5TZXJ2ZXItYXV0aCBUTFMgb25seTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9MT5TZXJ2ZXItYXV0aCwgbm9uLVRMUyBhbGxvd2VkPC9vcHRpb24+IjsNCiAgICAgICAgICAgIGlmIChhbXR2ZXJzaW9uIDwgOCkgeyB4ICs9ICI8b3B0aW9uIHZhbHVlPTI+TXV0dWFsLWF1dGggVExTIG9ubHk8L29wdGlvbj48b3B0aW9uIHZhbHVlPTM+TXV0dWFsLWF1dGgsIG5vbi1UTFMgYWxsb3dlZDwvb3B0aW9uPiI7IH0gLy8gU3VwcG9ydCBmb3IgbXV0dWFsLWF1dGggVExTIHNlZW1zIHRvIGhhdmUgYmVlbiByZW1vdmVkIG9uIEFNVDggYW5kIGFmdGVyDQogICAgICAgICAgICB4ICs9ICI8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5TZWN1cml0eTwvZGl2PjwvZGl2PjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHggaWQ9ZDExcmNuIHRpdGxlPSdDb21tYSBzZXBlcmF0ZWQgbGlzdCBvZiBjZXJ0aWZpY2F0ZSBjb21tb24gbmFtZXMgdGhhdCB3aWxsIGJlIGFsbG93ZWQgdG8gY29ubmVjdCByZW1vdGVseS4nPjxpbnB1dCBpZD1kMTFfcmNuIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9ua2V5dXA9c2hvd1NldFRsc1NlY3VyaXR5RGxnVXBkYXRlKCkgcGxhY2Vob2xkZXI9J25hbWUxLCBuYW1lMic+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+UmVtb3RlIENOJ3M8L2Rpdj48L2Rpdj4iOw0KDQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiVExTIFNldHRpbmdzIiwgMywgc2hvd1NldFRsc1NlY3VyaXR5RGxnT2ssIHgpOw0KDQogICAgICAgICAgICAvLyBTZWxlY3QgdGhlIGN1cnJlbnQgVExTIGNlcnRpZmljYXRlIGluIHRoZSBkcm9wIGRvd24gYm94DQogICAgICAgICAgICBpZiAoKHh4VExTQ3JlZGVudGlhbENvbnRleHQubGVuZ3RoID09IDApIHx8ICh4eFRsc1NldHRpbmdzWzBdWydFbmFibGVkJ10gPT0gZmFsc2UpIHx8ICh4eFRsc1NldHRpbmdzWzFdWydFbmFibGVkJ10gPT0gZmFsc2UpKSB7DQogICAgICAgICAgICAgICAgZ2V0U2VsZWN0RWxlbWVudCgndGxzY2VydCcpLnZhbHVlID0gLTE7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBjZXJ0SW5zdGFuY2VJZCA9IHh4VExTQ3JlZGVudGlhbENvbnRleHRbMF1bJ0VsZW1lbnRJbkNvbnRleHQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDZXJ0aWZpY2F0ZXMpIHsgaWYgKHh4Q2VydGlmaWNhdGVzW2ldWydJbnN0YW5jZUlEJ10gPT0gY2VydEluc3RhbmNlSWQpIHsgZ2V0U2VsZWN0RWxlbWVudCgndGxzY2VydCcpLnZhbHVlID0gaTsgfSB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hhdCBpbmRleCBpcyBsb2NhbCAmIHJlbW90ZQ0KICAgICAgICAgICAgdmFyIGxvY2FsTmR4ID0gKCh4eFRsc1NldHRpbmdzWzBdWydJbnN0YW5jZUlEJ10gPT0gJ0ludGVsKHIpIEFNVCBMTVMgVExTIFNldHRpbmdzJykpID8gMCA6IDEsIHJlbW90ZU5keCA9ICgxIC0gbG9jYWxOZHgpOw0KDQogICAgICAgICAgICAvLyBTZWxlY3QgY29ycmVjdCBUTFMgb3B0aW9ucyBpbiB0aGUgZHJvcCBkb3duIGJveGVzDQogICAgICAgICAgICBnZXRTZWxlY3RFbGVtZW50KCd0bHNyZW1vdGUnKS52YWx1ZSA9ICgoeHhUbHNTZXR0aW5nc1tyZW1vdGVOZHhdWydNdXR1YWxBdXRoZW50aWNhdGlvbiddID09IHRydWUpID8gMiA6IDApICsgKCh4eFRsc1NldHRpbmdzW3JlbW90ZU5keF1bJ0FjY2VwdE5vblNlY3VyZUNvbm5lY3Rpb25zJ10gPT0gdHJ1ZSkgPyAxIDogMCk7DQogICAgICAgICAgICBpZiAoeHhUbHNTZXR0aW5nc1tyZW1vdGVOZHhdWydUcnVzdGVkQ04nXSkgeyBRKCdkMTFfcmNuJykudmFsdWUgPSBNYWtlVG9BcnJheSh4eFRsc1NldHRpbmdzW3JlbW90ZU5keF1bJ1RydXN0ZWRDTiddKS5qb2luKCcsICcpOyB9DQoNCiAgICAgICAgICAgIHNob3dTZXRUbHNTZWN1cml0eURsZ1VwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1NldFRsc1NlY3VyaXR5RGxnVXBkYXRlKCkgew0KICAgICAgICAgICAgdmFyIGggPSBnZXRTZWxlY3RFbGVtZW50KCd0bHNjZXJ0JykudmFsdWU7DQogICAgICAgICAgICBRRSgndGxzcmVtb3RlJywgaCAhPSAtMSk7DQogICAgICAgICAgICBRVignZDExcmNuJywgKGggIT0gLTEpICYmIChnZXRTZWxlY3RFbGVtZW50KCd0bHNyZW1vdGUnKS52YWx1ZSA+IDEpKTsNCiAgICAgICAgICAgIHZhciBvayA9IHRydWU7DQogICAgICAgICAgICBpZiAoKGdldFNlbGVjdEVsZW1lbnQoJ3Rsc3JlbW90ZScpLnZhbHVlID4gMSkgJiYgKCFzcGxpdERvbWFpbnMoUSgnZDExX3JjbicpLnZhbHVlKSkpIHsgb2sgPSBmYWxzZTsgfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHZhciBzZXRUbHNTZWN1cml0eVBlbmRpbmdDYWxsczsNCiAgICAgICAgdmFyIHNldFRsc1NlY3VyaXR5RGVsZXRlQ3JlZGVudGlhbENvbnRleHQ7DQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXRUbHNTZWN1cml0eURsZ09rKCkgew0KICAgICAgICAgICAgdmFyIGggPSBnZXRTZWxlY3RFbGVtZW50KCd0bHNjZXJ0JykudmFsdWU7DQogICAgICAgICAgICB2YXIgciA9IGdldFNlbGVjdEVsZW1lbnQoJ3Rsc3JlbW90ZScpLnZhbHVlOw0KICAgICAgICAgICAgdmFyIHh4VGxzU2V0dGluZ3MyID0gQ2xvbmUoeHhUbHNTZXR0aW5ncyk7DQogICAgICAgICAgICBzZXRUbHNTZWN1cml0eVBlbmRpbmdDYWxscyA9IDA7DQogICAgICAgICAgICBzZXRUbHNTZWN1cml0eURlbGV0ZUNyZWRlbnRpYWxDb250ZXh0ID0gbnVsbDsNCg0KICAgICAgICAgICAgaWYgKGggIT0gLTEpIHsNCiAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIFRMUyBjZXJ0aWZpY2F0ZQ0KICAgICAgICAgICAgICAgIGlmICh4eFRMU0NyZWRlbnRpYWxDb250ZXh0Lmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gTW9kaWZ5IHRoZSBjdXJyZW50IGNvbnRleHQNCiAgICAgICAgICAgICAgICAgICAgdmFyIG5ld1RMU0NyZWRlbnRpYWxDb250ZXh0ID0gQ2xvbmUoeHhUTFNDcmVkZW50aWFsQ29udGV4dFswXSk7DQogICAgICAgICAgICAgICAgICAgIG5ld1RMU0NyZWRlbnRpYWxDb250ZXh0WydFbGVtZW50SW5Db250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXSA9IHh4Q2VydGlmaWNhdGVzW2hdWydJbnN0YW5jZUlEJ107DQogICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLlB1dCgnQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0JywgbmV3VExTQ3JlZGVudGlhbENvbnRleHQsIHNldFRsc1NlY3VyaXR5UmVzcG9uc2UsIDAsIDEpOw0KICAgICAgICAgICAgICAgICAgICBzZXRUbHNTZWN1cml0eVBlbmRpbmdDYWxscysrOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIC8vIEFkZCBhIG5ldyBzZWN1cml0eSBjb250ZXh0DQogICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLkNyZWF0ZSgnQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0Jywgew0KICAgICAgICAgICAgICAgICAgICAgICAgJ0VsZW1lbnRJbkNvbnRleHQnOic8YTpBZGRyZXNzPi93c21hbjwvYTpBZGRyZXNzPjxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+PHc6UmVzb3VyY2VVUkk+JyArIGFtdHN0YWNrLkNvbXBsZXRlTmFtZSgnQU1UX1B1YmxpY0tleUNlcnRpZmljYXRlJykgKyAnPC93OlJlc291cmNlVVJJPjx3OlNlbGVjdG9yU2V0Pjx3OlNlbGVjdG9yIE5hbWU9Ikluc3RhbmNlSUQiPicgKyB4eENlcnRpZmljYXRlc1toXVsnSW5zdGFuY2VJRCddICsgJzwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+JywNCiAgICAgICAgICAgICAgICAgICAgICAgICdFbGVtZW50UHJvdmlkaW5nQ29udGV4dCc6JzxhOkFkZHJlc3M+L3dzbWFuPC9hOkFkZHJlc3M+PGE6UmVmZXJlbmNlUGFyYW1ldGVycz48dzpSZXNvdXJjZVVSST4nICsgYW10c3RhY2suQ29tcGxldGVOYW1lKCdBTVRfVExTUHJvdG9jb2xFbmRwb2ludENvbGxlY3Rpb24nKSArICc8L3c6UmVzb3VyY2VVUkk+PHc6U2VsZWN0b3JTZXQ+PHc6U2VsZWN0b3IgTmFtZT0iRWxlbWVudE5hbWUiPlRMU1Byb3RvY29sRW5kcG9pbnRJbnN0YW5jZXMgQ29sbGVjdGlvbjwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+JyB9LCBzZXRUbHNTZWN1cml0eVJlc3BvbnNlKTsNCiAgICAgICAgICAgICAgICAgICAgc2V0VGxzU2VjdXJpdHlQZW5kaW5nQ2FsbHMrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBUTFMgY2VydGlmaWNhdGUgYXNzb2NpYXRpb24gKE1PVkUgVEhJUykNCiAgICAgICAgICAgICAgICBpZiAoeHhUTFNDcmVkZW50aWFsQ29udGV4dC5sZW5ndGggPiAwKSB7IHNldFRsc1NlY3VyaXR5RGVsZXRlQ3JlZGVudGlhbENvbnRleHQgPSBDbG9uZSh4eFRMU0NyZWRlbnRpYWxDb250ZXh0WzBdKTsgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoYXQgaW5kZXggaXMgbG9jYWwgJiByZW1vdGUNCiAgICAgICAgICAgIHZhciBsb2NhbE5keCA9ICgoeHhUbHNTZXR0aW5nc1swXVsnSW5zdGFuY2VJRCddID09ICdJbnRlbChyKSBBTVQgTE1TIFRMUyBTZXR0aW5ncycpKSA/IDAgOiAxLCByZW1vdGVOZHggPSAoMSAtIGxvY2FsTmR4KTsNCg0KICAgICAgICAgICAgLy8gUmVtb3RlIFRMUyBzZXR0aW5ncw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnRW5hYmxlZCddID0gKGggIT0gLTEpOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnTXV0dWFsQXV0aGVudGljYXRpb24nXSA9IChyID49IDIpOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnQWNjZXB0Tm9uU2VjdXJlQ29ubmVjdGlvbnMnXSA9ICgociAlIDIpID09IDEpOw0KICAgICAgICAgICAgeHhUbHNTZXR0aW5nczJbcmVtb3RlTmR4XVsnVHJ1c3RlZENOJ10gPSBzcGxpdERvbWFpbnMoUSgnZDExX3JjbicpLnZhbHVlKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gTG9jYWwgVExTIHNldHRpbmdzDQogICAgICAgICAgICB4eFRsc1NldHRpbmdzMltsb2NhbE5keF1bJ0VuYWJsZWQnXSA9IChoICE9IC0xKTsNCg0KICAgICAgICAgICAgLy8gVXBkYXRlIFRMUyBzZXR0aW5ncw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfVExTU2V0dGluZ0RhdGEnLCB4eFRsc1NldHRpbmdzMlswXSwgc2V0VGxzU2VjdXJpdHlSZXNwb25zZSwgMCwgMSwgeHhUbHNTZXR0aW5nczJbMF0pOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfVExTU2V0dGluZ0RhdGEnLCB4eFRsc1NldHRpbmdzMlsxXSwgc2V0VGxzU2VjdXJpdHlSZXNwb25zZSwgMCwgMSwgeHhUbHNTZXR0aW5nczJbMV0pOw0KICAgICAgICAgICAgc2V0VGxzU2VjdXJpdHlQZW5kaW5nQ2FsbHMgKz0gMjsNCg0KICAgICAgICAgICAgc3RhdHVzYm94KCJUTFMgU2V0dGluZ3MiLCAiQXBwbHlpbmcgbmV3IHNlY3VyaXR5IHNldHRpbmdzLi4uIik7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBTcGxpdCBhIHN0cmluZyBpbnRvIGEgYXJyYXkgb2YgZG9tYWlucy4gUmV0dXJuIG51bGwgaWYgbm90IGEgdmFsaWQgbGlzdC4NCiAgICAgICAgZnVuY3Rpb24gc3BsaXREb21haW5zKHN0cikgew0KICAgICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCcsJyk7DQogICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCA9PSAwKSByZXR1cm47DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHN0cikgeyBzdHJbaV0gPSBzdHJbaV0udHJpbSgpOyBpZiAoKHN0cltpXS5pbmRleE9mKCcgJykgPj0gMCkgfHwgKHN0cltpXS5sZW5ndGggPT0gMCkpIHJldHVybjsgfQ0KICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGggPiA0KSByZXR1cm47DQogICAgICAgICAgICByZXR1cm4gc3RyOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2V0VGxzU2VjdXJpdHlSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCIiLCAiRmFpbGVkIHRvIHNldCBUTFMgc2VjdXJpdHksIHN0YXR1cyA9ICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgIGlmIChyZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZVN0ciddICYmICFtZXRob2RjaGVjayhyZXNwb25zZSkpIHJldHVybjsNCg0KICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYWxsIHRoZSBjYWxscyBhcmUgZG9uZQ0KICAgICAgICAgICAgaWYgKCgtLXNldFRsc1NlY3VyaXR5UGVuZGluZ0NhbGxzKSA9PSAwKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIC8vIFBlcmZvcm0gYSBjb21taXQNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfU2V0dXBBbmRDb25maWd1cmF0aW9uU2VydmljZV9Db21taXRDaGFuZ2VzKG51bGwsIHNldFRsc1NlY3VyaXR5UmVzcG9uc2UyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNldFRsc1NlY3VyaXR5UmVzcG9uc2UyKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCIiLCAiRmFpbGVkIHRvIHNldCBUTFMgc2VjdXJpdHksIHN0YXR1cyA9ICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgIC8vIGlmIChyZXNwb25zZS5Cb2R5WydSZXR1cm5WYWx1ZVN0ciddICYmICFtZXRob2RjaGVjayhyZXNwb25zZSkpIHJldHVybjsNCiAgICAgICAgICAgIHNldFRpbWVvdXQoc2V0VGxzU2VjdXJpdHlSZXNwb25zZTMsIDIwMDApOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2V0VGxzU2VjdXJpdHlSZXNwb25zZTMoKSB7DQogICAgICAgICAgICBpZiAoc2V0VGxzU2VjdXJpdHlEZWxldGVDcmVkZW50aWFsQ29udGV4dCAhPSBudWxsKSB7IGFtdHN0YWNrLkRlbGV0ZSgnQU1UX1RMU0NyZWRlbnRpYWxDb250ZXh0Jywgc2V0VGxzU2VjdXJpdHlEZWxldGVDcmVkZW50aWFsQ29udGV4dCwgZnVuY3Rpb24gKCkgeyB9KTsgfQ0KICAgICAgICAgICAgUHVsbENlcnRpZmljYXRlcygpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgpOw0KICAgICAgICB9DQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gQUdFTlQgUFJFU0VOQ0UNCiAgICAgICAgLy8NCg0KICAgICAgICB2YXIgeHhXYXRjaGRvZyA9IG51bGw7DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFdhdGNoZG9nKCkgew0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKG51bGwsIFsiKkFNVF9BZ2VudFByZXNlbmNlQ2FwYWJpbGl0aWVzIiwgIkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2ciLCAiQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ0FjdGlvbiIsICJBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uIiwgIkNJTV9Db25jcmV0ZURlcGVuZGVuY3kiXSwgUHVsbFdhdGNoZG9nUmVzcG9uc2UpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFdhdGNoZG9nUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoKHN0YXR1cyA9PSAyMDApICYmIChyZXNwb25zZXNbJ0FNVF9BZ2VudFByZXNlbmNlQ2FwYWJpbGl0aWVzJ10uc3RhdHVzID09IDIwMCkpIHsNCiAgICAgICAgICAgICAgICB4eFdhdGNoZG9nID0gcmVzcG9uc2VzOw0KICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgLy8gUGxhY2UgdGhlIGFjdGlvbnMgaW50byB0aGUgd2F0Y2hkb2dzIGZvciBlYXN5IG5hdmlnYXRpb24uDQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFdhdGNoZG9nWydDSU1fQ29uY3JldGVEZXBlbmRlbmN5J10ucmVzcG9uc2VzKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBsaW5rID0geHhXYXRjaGRvZ1snQ0lNX0NvbmNyZXRlRGVwZW5kZW5jeSddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHgxID0gZ2V0SXRlbShsaW5rWydBbnRlY2VkZW50J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSwgJ0BOYW1lJywgJ0NyZWF0aW9uQ2xhc3NOYW1lJyk7DQogICAgICAgICAgICAgICAgICAgIGlmICh4MSAmJiB4MVsnVmFsdWUnXSA9PSAnQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXZpY2VpZCA9IGdldEl0ZW0obGlua1snQW50ZWNlZGVudCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdEZXZpY2VJRCcpWydWYWx1ZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeUNvbmRpdGlvbk5hbWUgPSBnZXRJdGVtKGxpbmtbJ0RlcGVuZGVudCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdQb2xpY3lDb25kaXRpb25OYW1lJylbJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2F0Y2hkb2cgPSBnZXRJdGVtKHh4V2F0Y2hkb2dbJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnXS5yZXNwb25zZXMsICdEZXZpY2VJRCcsIGRldmljZWlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0cmFuc2l0aW9uUG9saWN5ID0gZ2V0SXRlbSh4eFdhdGNoZG9nWydBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uJ10ucmVzcG9uc2VzLCAnUG9saWN5Q29uZGl0aW9uTmFtZScsIHBvbGljeUNvbmRpdGlvbk5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF3YXRjaGRvZy50cmFuc2l0aW9ucykgd2F0Y2hkb2cudHJhbnNpdGlvbnMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZG9nLnRyYW5zaXRpb25zLnB1c2godHJhbnNpdGlvblBvbGljeSk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKHgxICYmIHgxWydWYWx1ZSddID09ICdBTVRfU3RhdGVUcmFuc2l0aW9uQ29uZGl0aW9uJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeUNvbmRpdGlvbk5hbWUgPSBnZXRJdGVtKGxpbmtbJ0FudGVjZWRlbnQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddLCAnQE5hbWUnLCAnUG9saWN5Q29uZGl0aW9uTmFtZScpWydWYWx1ZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeUFjdGlvbk5hbWUgPSBnZXRJdGVtKGxpbmtbJ0RlcGVuZGVudCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdQb2xpY3lBY3Rpb25OYW1lJylbJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHJhbnNpdGlvblBvbGljeSA9IGdldEl0ZW0oeHhXYXRjaGRvZ1snQU1UX1N0YXRlVHJhbnNpdGlvbkNvbmRpdGlvbiddLnJlc3BvbnNlcywgJ1BvbGljeUNvbmRpdGlvbk5hbWUnLCBwb2xpY3lDb25kaXRpb25OYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3YXRjaGRvZ0FjdGlvbiA9IGdldEl0ZW0oeHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ0FjdGlvbiddLnJlc3BvbnNlcywgJ1BvbGljeUFjdGlvbk5hbWUnLCBwb2xpY3lBY3Rpb25OYW1lKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdHJhbnNpdGlvblBvbGljeS5hY3Rpb25zKSB0cmFuc2l0aW9uUG9saWN5LmFjdGlvbnMgPSBbXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Qb2xpY3kuYWN0aW9ucy5wdXNoKHdhdGNoZG9nQWN0aW9uKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHVwZGF0ZVdhdGNoZG9nKCk7DQogICAgICAgICAgICAgICAgUVYoJ2dvMTknLCB0cnVlKTsgLy8gU2hvdyBBZ2VudCBQcmVzZW5jZSBwYW5lbA0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHdhdGNoZG9nRW5hYmxlZFN0YXRlcyA9IFsgJ1Vua25vd24nLCAnT3RoZXInLCAnRW5hYmxlZCcsICdEaXNhYmxlZCcsICdTaHV0dGluZyBEb3duJywgJ05vdCBBcHBsaWNhYmxlJywgJ0VuYWJsZWQgYnV0IE9mZmxpbmUnLCAnSW4gVGVzdCcsICdEZWZlcnJlZCcsICdRdWllc2NlJywgJ1N0YXJ0aW5nJyBdOw0KICAgICAgICB2YXIgd2F0Y2hkb2dNb25pdG9yZWRFbnRpdHkgPSBbICdVbmtub3duJywgJ090aGVyJywgJ09wZXJhdGluZyBTeXN0ZW0nLCAnT3BlcmF0aW5nIFN5c3RlbSBCb290IFByb2Nlc3MnLCAnT3BlcmF0aW5nIFN5c3RlbSBTaHV0ZG93biBQcm9jZXNzJywgJ0Zpcm13YXJlIEJvb3QgUHJvY2VzcycsICdCSU9TIEJvb3QgUHJvY2VzcycsICdBcHBsaWNhdGlvbicsICdTZXJ2aWNlIFByb2Nlc3NvcicgXTsNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlV2F0Y2hkb2coKSB7DQogICAgICAgICAgICBpZiAoeHhXYXRjaGRvZyA9PSBudWxsKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KDQogICAgICAgICAgICAvLyBHbG9iYWwgQWdlbnQgUHJlc2Vuc2UgVmFsdWVzDQogICAgICAgICAgICB4ICs9IFRhYmxlU3RhcnQoKTsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiTWF4aW11bSBXYXRjaGRvZ3MiLCB4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZUNhcGFiaWxpdGllcyddLnJlc3BvbnNlWydNYXhUb3RhbEFnZW50cyddICsgIiB3YXRjaGRvZ3MiKTsNCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiTWF4aW11bSBUb3RhbCBBY3Rpb25zIiwgeHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VDYXBhYmlsaXRpZXMnXS5yZXNwb25zZVsnTWF4VG90YWxBY3Rpb25zJ10gKyAiIGFjdGlvbnMiKTsNCiAgICAgICAgICAgIC8vIHggKz0gVGFibGVFbnRyeSgiTWF4aW11bSBFQUMgV2F0Y2hkb2dzIiwgeHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VDYXBhYmlsaXRpZXMnXS5yZXNwb25zZVsnTWF4RWFjQWdlbnRzJ10gKyAiIHdhdGNoZG9ncyIpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpICsgIjxicj4iOw0KDQogICAgICAgICAgICAvLyBXYXRjaGRvZ3MNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBhZ2VudCBwcmVzZW5jZSB3YXRjaGRvZ3MuPGJyPjxicj4iOw0KICAgICAgICAgICAgaWYgKCh4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nJ10ucmVzcG9uc2VzID09IG51bGwpIHx8ICh4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nJ10ucmVzcG9uc2VzLmxlbmd0aCA9PSAwKSkgew0KICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGk+Tm8gYWdlbnQgcHJlc2VuY2Ugd2F0Y2hkb2cgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4V2F0Y2hkb2dbJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSB4eFdhdGNoZG9nWydBTVRfQWdlbnRQcmVzZW5jZVdhdGNoZG9nJ10ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGd1aWRUb1N0cihyc3RyMmhleChhdG9iKHdbJ0RldmljZUlEJ10pKSk7DQogICAgICAgICAgICAgICAgICAgIGlmICh3WydNb25pdG9yZWRFbnRpdHlEZXNjcmlwdGlvbiddICYmIHdbJ01vbml0b3JlZEVudGl0eURlc2NyaXB0aW9uJ10gIT0gJycpIG4gPSBFc2NhcGVIdG1sKHdbJ01vbml0b3JlZEVudGl0eURlc2NyaXB0aW9uJ10pOw0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93V2F0Y2hkb2dEZXRhaWxzKCIgKyBpICsgIik+PGlucHV0IHR5cGU9YnV0dG9uIHN0eWxlPWZsb2F0OnJpZ2h0IHZhbHVlPSdBZGQgQWN0aW9uLi4uJyBvbmNsaWNrPWFkZFdhdGNoZG9nQWN0aW9uKGV2ZW50LCIgKyBpICsgIik+IjsNCiAgICAgICAgICAgICAgICAgICAgaWYgKHcudHJhbnNpdGlvbnMpIHsgeCArPSAiPGlucHV0IHR5cGU9YnV0dG9uIHN0eWxlPWZsb2F0OnJpZ2h0IHZhbHVlPSdEZWxldGUgQWN0aW9ucy4uLicgb25jbGljaz1kZWxldGVXYXRjaGRvZ0FjdGlvbnMoZXZlbnQsIiArIGkgKyAiKT4iOyB9DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyBuICsgIjwvYj4sICIgKyBhbXRzdGFjay5XYXRjaGRvZ0N1cnJlbnRTdGF0ZXNbd1snQ3VycmVudFN0YXRlJ11dICsgIjwvZGl2PiI7DQogICAgICAgICAgICAgICAgICAgIHZhciB4eCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIHcudHJhbnNpdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdy50cmFuc2l0aW9uc1tqXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eCAhPSAnJykgeHggKz0gIjxicj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgeHggKz0gZ2V0V2F0Y2hkb2dUcmFuc2l0aW9uU3RyKHRbJ09sZFN0YXRlJ10pICsgIiAmcmFycjsgIiArIGdldFdhdGNoZG9nVHJhbnNpdGlvblN0cih0WydOZXdTdGF0ZSddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmFjdGlvbnMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aW9uID0gdC5hY3Rpb25zWzBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb25bJ0V2ZW50T25UcmFuc2l0aW9uJ10gPT0gdHJ1ZSkgeyB4eCArPSAiIDogRXZlbnQgdG8gbG9nIjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGlmICh4eCAhPSAnJykgeyB4ICs9ICI8ZGl2IHN0eWxlPXBhZGRpbmc6MTJweD4iICsgeHggKyAiPC9kaXY+IjsgfQ0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8L2Rpdj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZChBZGRSZWZyZXNoQnV0dG9uKCJQdWxsV2F0Y2hkb2coKSIpICsgQWRkQnV0dG9uKCJBZGQgV2F0Y2hkb2cuLi4iLCAiQWRkV2F0Y2hkb2coKSIpKTsNCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KDQogICAgICAgICAgICBRSCgnaWRfVGFibGVTeXN0ZW1BZ2VudFByZXNlbmNlJywgeCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRXYXRjaGRvZ1RyYW5zaXRpb25TdHIocykgew0KICAgICAgICAgICAgaWYgKHMgPT0gMzEpIHJldHVybiAiQW55IFN0YXRlIjsNCiAgICAgICAgICAgIHZhciB4ID0gJyc7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGFtdHN0YWNrLldhdGNoZG9nQ3VycmVudFN0YXRlcykgeyBpZiAoKHMgJiBpKSAhPSAwKSB7IHggKz0gJywgJyArIGFtdHN0YWNrLldhdGNoZG9nQ3VycmVudFN0YXRlc1tpXTsgfSB9DQogICAgICAgICAgICByZXR1cm4geC5zdWJzdHJpbmcoMik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93V2F0Y2hkb2dEZXRhaWxzKGkpIHsNCiAgICAgICAgICAgIHZhciB3ID0geHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZyddLnJlc3BvbnNlc1tpXTsNCg0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIC8veCArPSBhZGRIdG1sVmFsdWUoJ0RldmljZUlEJywgZ3VpZFRvU3RyKHJzdHIyaGV4KGF0b2Iod1snRGV2aWNlSUQnXSkpKSk7DQogICAgICAgICAgICBpZiAod1snTW9uaXRvcmVkRW50aXR5RGVzY3JpcHRpb24nXSAmJiB3WydNb25pdG9yZWRFbnRpdHlEZXNjcmlwdGlvbiddICE9ICcnKSB4ICs9IGFkZEh0bWxWYWx1ZSgnRGVzY3JpcHRpb24nLCBFc2NhcGVIdG1sKHdbJ01vbml0b3JlZEVudGl0eURlc2NyaXB0aW9uJ10pKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdNb25pdG9yZWQgRW50aXR5Jywgd2F0Y2hkb2dNb25pdG9yZWRFbnRpdHlbd1snTW9uaXRvcmVkRW50aXR5J11dKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdDdXJyZW50IFN0YXRlJywgYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzW3dbJ0N1cnJlbnRTdGF0ZSddXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnRW5hYmxlZCBTdGF0ZScsIHdhdGNoZG9nRW5hYmxlZFN0YXRlc1t3WydFbmFibGVkU3RhdGUnXV0pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ1N0YXJ0dXAgSW50ZXJ2YWwnLCB3WydTdGFydHVwSW50ZXJ2YWwnXSArICcgc2Vjb25kKHMpJyk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnVGltZW91dCBJbnRlcnZhbCcsIHdbJ1RpbWVvdXRJbnRlcnZhbCddICsgJyBzZWNvbmQocyknKTsNCg0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ1dhdGNoZG9nICcgKyBndWlkVG9TdHIocnN0cjJoZXgoYXRvYih3WydEZXZpY2VJRCddKSkpLCA1LCBzaG93V2F0Y2hkb2dEZXRhaWxzT2ssIHgsIHcpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1dhdGNoZG9nRGV0YWlsc09rKHgsIHcpIHsNCiAgICAgICAgICAgIGlmICh4ID09IDIpIHsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5EZWxldGUoJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnLCB7ICdEZXZpY2VJRCc6IHdbJ0RldmljZUlEJ10gfSwgUHVsbFdhdGNoZG9nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZFdhdGNoZG9nKCkgew0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXdnbmFtZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweCBtYXhsZW5ndGg9MTYgb25rZXl1cD1BZGRXYXRjaGRvZ1VwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4Pk5hbWU8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48aW5wdXQgaWQ9d2dndWlkIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI0MHB4IG1heGxlbmd0aD0zNiBvbmtleXVwPUFkZFdhdGNoZG9nVXBkYXRlKCk+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHggdGl0bGU9J0dlbmVyYXRlIHJhbmRvbSBEZXZpY2VJRCc+IiArIGFkZExpbmsoIkRldmljZUlEIiwgIkdlbmVyYXRlV2F0Y2hkb2dHdWlkKCkiKSArICI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48aW5wdXQgaWQ9d2dzdGFydCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweCBtYXhsZW5ndGg9OCBwbGFjZWhvbGRlcj0zNjAwIG9ua2V5dXA9QWRkV2F0Y2hkb2dVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5TdGFydHVwIChzZWNvbmRzKTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxpbnB1dCBpZD13Z3RpbWVvdXQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHggbWF4bGVuZ3RoPTggcGxhY2Vob2xkZXI9NjAgb25rZXl1cD1BZGRXYXRjaGRvZ1VwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlRpbWVvdXQgKHNlY29uZHMpPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdBZGQgV2F0Y2hkb2cnLCAzLCBBZGRXYXRjaGRvZ09rLCB4KTsNCiAgICAgICAgICAgIEFkZFdhdGNoZG9nVXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBHZW5lcmF0ZVdhdGNoZG9nR3VpZCgpIHsNCiAgICAgICAgICAgIHZhciBpLCBndWlkID0gJyc7DQogICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeyBndWlkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmFuZG9tKDI1NSkpOyB9DQogICAgICAgICAgICBRKCd3Z2d1aWQnKS52YWx1ZSA9IGd1aWRUb1N0cihyc3RyMmhleChndWlkKSk7DQogICAgICAgICAgICBBZGRXYXRjaGRvZ1VwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkV2F0Y2hkb2dVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgb2sgPSAoUSgnd2dzdGFydCcpLnZhbHVlID09ICcnIHx8IHBhcnNlSW50KFEoJ3dnc3RhcnQnKS52YWx1ZSkgPiAwKSAmJiAoUSgnd2d0aW1lb3V0JykudmFsdWUgPT0gJycgfHwgcGFyc2VJbnQoUSgnd2d0aW1lb3V0JykudmFsdWUpID4gMCk7DQogICAgICAgICAgICB2YXIgZ2MgPSAwLCBnID0gUSgnd2dndWlkJykudmFsdWUudG9Mb3dlckNhc2UoKTsNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZy5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgIHZhciBjID0gZy5jaGFyQ29kZUF0KGkpOw0KICAgICAgICAgICAgICAgIGlmIChjID09IDQ1KSBjb250aW51ZTsNCiAgICAgICAgICAgICAgICBpZiAoKGMgPj0gNDggJiYgYyA8PSA1NykgfHwgKGMgPj0gOTcgJiYgYyA8PSAxMDIpKSB7IGdjKys7IH0gZWxzZSB7IG9rID0gZmFsc2U7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChnYyAhPSAzMikgb2sgPSBmYWxzZTsNCiAgICAgICAgICAgIFFFKCdkbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZFdhdGNoZG9nT2soKSB7DQogICAgICAgICAgICB2YXIgdGltZW91dCA9IFEoJ3dndGltZW91dCcpLnZhbHVlLCBzdGFydHVwID0gUSgnd2dzdGFydCcpLnZhbHVlOw0KICAgICAgICAgICAgaWYgKHRpbWVvdXQgPT0gJycpIHRpbWVvdXQgPSA2MDsNCiAgICAgICAgICAgIGlmIChzdGFydHVwID09ICcnKSBzdGFydHVwID0gMzYwMDsNCiAgICAgICAgICAgIHZhciBndWlkID0gYnRvYShoZXgycnN0cihndWlkVG9TdHIoUSgnd2dndWlkJykudmFsdWUucmVwbGFjZSgvLS9nLCAnJykpLnJlcGxhY2UoLy0vZywgJycpKSk7DQogICAgICAgICAgICB2YXIgd2RvZyA9IHsgJ0NyZWF0aW9uQ2xhc3NOYW1lJzogMCwgJ0RldmljZUlEJzogZ3VpZCwgJ1N0YXJ0dXBJbnRlcnZhbCc6IHN0YXJ0dXAsICdTeXN0ZW1DcmVhdGlvbkNsYXNzTmFtZSc6IDAsICdTeXN0ZW1OYW1lJzogMCwgJ1RpbWVvdXRJbnRlcnZhbCc6IHRpbWVvdXQsICdNb25pdG9yZWRFbnRpdHlEZXNjcmlwdGlvbic6IFEoJ3dnbmFtZScpLnZhbHVlIH07DQogICAgICAgICAgICBhbXRzdGFjay5DcmVhdGUoJ0FNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2cnLCB3ZG9nLCBBZGRXYXRjaGRvZ09rMik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRXYXRjaGRvZ09rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnV2F0Y2hkb2cnLCAiVW5hYmxlIHRvIGFkZCB3YXRjaGRvZywgZXJyb3IgIyIgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsV2F0Y2hkb2coKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdhdGNoZG9nQWN0aW9uKGUsIGkpIHsNCiAgICAgICAgICAgIHZhciB3ID0geHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZyddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgIHZhciB4ID0gJzx0YWJsZT4nOw0KICAgICAgICAgICAgeCArPSAnPHRkIHN0eWxlPXdpZHRoOjE4MHB4PkZyb208YnI+Jw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBhbXRzdGFjay5XYXRjaGRvZ0N1cnJlbnRTdGF0ZXMpIHsNCiAgICAgICAgICAgICAgICB4ICs9ICc8aW5wdXQgaWQ9d2dzYScgKyBpICsgJyB0eXBlPWNoZWNrYm94IG9uY2xpY2s9YWRkV2F0Y2hkb2dBY3Rpb25VcGRhdGUoKT4gJyArIGFtdHN0YWNrLldhdGNoZG9nQ3VycmVudFN0YXRlc1tpXSArICc8YnIgLz4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAnPHRkPlRvPGJyPicNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzKSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGlucHV0IGlkPXdnc2InICsgaSArICcgdHlwZT1jaGVja2JveCBvbmNsaWNrPWFkZFdhdGNoZG9nQWN0aW9uVXBkYXRlKCk+ICcgKyBhbXRzdGFjay5XYXRjaGRvZ0N1cnJlbnRTdGF0ZXNbaV0gKyAnPGJyIC8+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gJzwvdGFibGU+PGJyPlBlcmZvcm0gQWN0aW9uPGJyPjxpbnB1dCBpZD13Z3NldmVudCB0eXBlPWNoZWNrYm94IGNoZWNrZWQgb25jbGljaz1hZGRXYXRjaGRvZ0FjdGlvblVwZGF0ZSgpPldyaXRlIHRvIGV2ZW50IGxvZzxiciAvPic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnQWRkIFdhdGNoZG9nIEFjdGlvbicsIDMsIGFkZFdhdGNoZG9nQWN0aW9uT2ssIHgsIHcpOw0KICAgICAgICAgICAgYWRkV2F0Y2hkb2dBY3Rpb25VcGRhdGUoKTsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdhdGNoZG9nQWN0aW9uVXBkYXRlKCkgew0KICAgICAgICAgICAgdmFyIHRmcm9tID0gMCwgdHRvID0gMDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzKSB7DQogICAgICAgICAgICAgICAgaWYgKFEoJ3dnc2EnICsgaSkuY2hlY2tlZCA9PSB0cnVlKSB0ZnJvbSArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgICAgICBpZiAoUSgnd2dzYicgKyBpKS5jaGVja2VkID09IHRydWUpIHR0byArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFFFKCdkbGdPa0J1dHRvbicsIHRmcm9tID4gMCAmJiB0dG8gPiAwICYmIFEoJ3dnc2V2ZW50JykuY2hlY2tlZCA9PSB0cnVlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdhdGNoZG9nQWN0aW9uT2soYiwgdykgew0KICAgICAgICAgICAgdmFyIHRmcm9tID0gMCwgdHRvID0gMDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYW10c3RhY2suV2F0Y2hkb2dDdXJyZW50U3RhdGVzKSB7DQogICAgICAgICAgICAgICAgaWYgKFEoJ3dnc2EnICsgaSkuY2hlY2tlZCA9PSB0cnVlKSB0ZnJvbSArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgICAgICBpZiAoUSgnd2dzYicgKyBpKS5jaGVja2VkID09IHRydWUpIHR0byArPSBwYXJzZUludChpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BZ2VudFByZXNlbmNlV2F0Y2hkb2dfQWRkQWN0aW9uKHRmcm9tLCB0dG8sIFEoJ3dnc2V2ZW50JykuY2hlY2tlZCwgbnVsbCwgbnVsbCwgQWRkV2F0Y2hkb2dBY3Rpb25SZXNwb25zZSwgbnVsbCwgMCwgeyAnRGV2aWNlSUQnOiB3WydEZXZpY2VJRCddIH0pOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkV2F0Y2hkb2dBY3Rpb25SZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnV2F0Y2hkb2cgQWN0aW9uJywgIlVuYWJsZSB0byBhZGQgd2F0Y2hkb2cgYWN0aW9uLCBlcnJvciAjIiArIHN0YXR1cyk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFB1bGxXYXRjaGRvZygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlV2F0Y2hkb2dBY3Rpb25zKGUsIGkpIHsNCiAgICAgICAgICAgIHZhciB3ID0geHhXYXRjaGRvZ1snQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZyddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdEZWxldGUgV2F0Y2hkb2cgQWN0aW9ucycsIDMsIGRlbGV0ZVdhdGNoZG9nQWN0aW9uc09rLCAiRGVsZXRlIGFsbCBhY3Rpb25zIGZvciB0aGlzIHdhdGNoZG9nPyIsIHcpOw0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlV2F0Y2hkb2dBY3Rpb25zT2soYiwgdykgew0KICAgICAgICAgICAgYW10c3RhY2suQU1UX0FnZW50UHJlc2VuY2VXYXRjaGRvZ19EZWxldGVBbGxBY3Rpb25zKGRlbGV0ZVdhdGNoZG9nQWN0aW9uUmVzcG9uc2UsIG51bGwsIDAsIHsgJ0RldmljZUlEJzogd1snRGV2aWNlSUQnXSB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGRlbGV0ZVdhdGNoZG9nQWN0aW9uUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goJ1dhdGNoZG9nIEFjdGlvbicsICJVbmFibGUgdG8gcmVtb3ZlIHdhdGNoZG9nIGFjdGlvbnMsIGVycm9yICMiICsgc3RhdHVzKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUHVsbFdhdGNoZG9nKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICANCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIFNZU1RFTSBERUZFTlNFIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgdmFyIHh4U3lzdGVtRGVmZW5zZSA9IG51bGw7DQogICAgICAgIHZhciB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3kgPSB7fTsNCiAgICAgICAgdmFyIHh4VXBkYXRpbmdEZWZlbnNlU3RhdHMgPSBmYWxzZTsNCiAgICAgICAgdmFyIHh4RmlsdGVyU3RhdGlzdGljcyA9IFt7fSwge31dOyAvLyBXaXJlZCBhbmQgd2lyZWxlc3MgaW50ZXJmYWNlIHN0YXRzDQogICAgICAgIHZhciB4eEZpbHRlclN0YXRpc3RpY3NUaW1lciA9IG51bGw7DQogICAgICAgIHZhciB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KDQogICAgICAgIHZhciB4eFN5c3RlbURlZmVuY2VGaWx0ZXJFdGhlcm5ldFR5cGVzID0geyAyMDQ4OiAnQWxsIElQIFBhY2tldHMnLCAyMDU0OiAnQWxsIEFSUCBQYWNrZXRzJyB9Ow0KICAgICAgICB2YXIgeHhTeXN0ZW1EZWZlbmNlRmlsdGVySVBUeXBlcyA9IHsgNDogJ0lQdjQnLCA2OiAnSVB2NicgfTsNCiAgICAgICAgdmFyIHh4U3lzdGVtRGVmZW5jZUZpbHRlckRlc2MgPSB7IDA6ICdBbGxvdywgQ291bnQnLCAxOiAnRHJvcCwgQ291bnQnLCAyOiAnUmF0ZSBsaW1pdCcsIDM6ICdBbGxvdycsIDQ6ICdEcm9wJyB9Ow0KICAgICAgICB2YXIgeHhTeXN0ZW1EZWZlbmNlRmlsdGVycyA9IHsgJ0hkclByb3RvY29sSUQnOiAxLCAnSGRyRGVzdEFkZHJlc3MnOiAyLCAnSGRyRGVzdE1hc2snOiAyLCAnSGRyU3JjQWRkcmVzcyc6IDIsICdIZHJTcmNNYXNrJzogMiwgJ0hkclNyY1BvcnRTdGFydCc6IDEsICdIZHJTcmNQb3J0RW5kJzogMSwgJ0hkckRlc3RQb3J0U3RhcnQnOiAxLCAnSGRyRGVzdFBvcnRFbmQnOiAxLCAnSGRyU3JjQWRkcmVzc0VuZE9mUmFuZ2UnOiAyLCAnSGRyRGVzdEFkZHJlc3NFbmRPZlJhbmdlICc6IDIsICdUQ1BGbGFnc09uJzogMywgJ1RDUEZsYWdzT2ZmJzogMyB9Ow0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxTeXN0ZW1EZWZlbnNlKCkgew0KICAgICAgICAgICAgYW10Rmlyc3RQdWxsIHw9IDQ7DQogICAgICAgICAgICBhbXRzdGFjay5CYXRjaEVudW0obnVsbCwgWyJBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSIsICJBTVRfTmV0d29ya1BvcnRTeXN0ZW1EZWZlbnNlUG9saWN5IiwgIkFNVF9IZHI4MDIxRmlsdGVyIiwgIkFNVF9JUEhlYWRlcnNGaWx0ZXIiLCAiQU1UX05ldHdvcmtGaWx0ZXIiXSwgUHVsbFN5c3RlbURlZmVuc2VSZXNwb25zZSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBQdWxsU3lzdGVtRGVmZW5zZVJlc3BvbnNlKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICB4eFN5c3RlbURlZmVuc2UgPSByZXNwb25zZXM7DQogICAgICAgICAgICAgICAgdXBkYXRlU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgICAgIFFWKCdnbzE4JywgdHJ1ZSk7IC8vIFNob3cgU3lzdGVtIERlZmVuc2UgUGFuZWwNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVN5c3RlbURlZmVuc2UoKSB7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlID09IG51bGwpIHJldHVybjsNCiAgICAgICAgICAgIHZhciB4ID0gJyc7DQoNCiAgICAgICAgICAgIC8vIEdldCBhY3RpdmUgcG9saWNpZXMNCiAgICAgICAgICAgIHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeSA9IHt9Ow0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9OZXR3b3JrUG9ydFN5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgbGluayA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX05ldHdvcmtQb3J0U3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICB2YXIgYSA9ICtnZXRJdGVtKGxpbmtbJ0FudGVjZWRlbnQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddLCAnQE5hbWUnLCAnRGV2aWNlSUQnKVsnVmFsdWUnXS5zdWJzdHJpbmcoMjcpOw0KICAgICAgICAgICAgICAgIHZhciBiID0gbGlua1snRGVwZW5kZW50J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXTsNCiAgICAgICAgICAgICAgICB2YXIgcCA9IGdldEl0ZW0oeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlcywgJ0luc3RhbmNlSUQnLCBiKTsNCiAgICAgICAgICAgICAgICB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbYV0gPSBwOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBHbG9iYWwgU3lzdGVtIERlZmVuc2Ugc2V0dGluZ3MNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydCgpOw0KICAgICAgICAgICAgdmFyIHBvbGljeW5hbWUgPSAnPGk+Tm9uZTwvaT4nOw0KICAgICAgICAgICAgaWYgKHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVswXSkgeyBwb2xpY3luYW1lID0geHhTeXN0ZW1EZWZlbmNlTGlua2VkUG9saWN5WzBdWydQb2xpY3lOYW1lJ107IH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiRGVmYXVsdCBXaXJlZCBQb2xpY3kiLCBhZGRMaW5rKHBvbGljeW5hbWUsICdjaGFuZ2VEZWZhdWx0UG9saWN5KDApJykpOw0KICAgICAgICAgICAgLyoNCiAgICAgICAgICAgIHBvbGljeW5hbWUgPSAnPGk+Tm9uZTwvaT4nOw0KICAgICAgICAgICAgaWYgKHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVsxXSkgeyBwb2xpY3luYW1lID0geHhTeXN0ZW1EZWZlbmNlTGlua2VkUG9saWN5WzFdWydQb2xpY3lOYW1lJ107IH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiRGVmYXVsdCBXaXJlbGVzcyBQb2xpY3kiLCBhZGRMaW5rKHBvbGljeW5hbWUsICdjaGFuZ2VEZWZhdWx0UG9saWN5KDEpJykpOw0KICAgICAgICAgICAgKi8NCg0KICAgICAgICAgICAgLy8gRmlsdGVyIFN0YXRpc3RpY3MNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7DQogICAgICAgICAgICAgICAgdmFyIGYgPSB4eEZpbHRlclN0YXRpc3RpY3NbaV07DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBmKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBjID0gZltqXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMSkgYyArPSAnIHBhY2tldCc7IGVsc2UgYyArPSAnIHBhY2tldHMnOw0KICAgICAgICAgICAgICAgICAgICB2YXIgam4gPSAoKGk9PTApPydXaXJlZCAnOidXaXJlbGVzcyAnKSArIGo7DQogICAgICAgICAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeShqbiwgYyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KICAgICAgICAgICAgeCArPSAiPGJyPiI7DQoNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg7Ym9yZGVyOjA+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBzeXN0ZW0gZGVmZW5zZSBwb2xpY2llcy48YnI+PGJyPiI7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlcy5sZW5ndGggPT0gMCkgew0KICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGk+Tm8gc3lzdGVtIGRlZmVuc2UgcG9saWNpZXMgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHBvbGljeSA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0gJyc7DQogICAgICAgICAgICAgICAgICAgIGlmIChwb2xpY3lbJ0ZpbHRlckNyZWF0aW9uSGFuZGxlcyddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3lbJ0ZpbHRlckNyZWF0aW9uSGFuZGxlcyddID0gTWFrZVRvQXJyYXkocG9saWN5WydGaWx0ZXJDcmVhdGlvbkhhbmRsZXMnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IHBvbGljeVsnRmlsdGVyQ3JlYXRpb25IYW5kbGVzJ10ubGVuZ3RoOw0KICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyA9ICcsICcgKyBjICsgJyBmaWx0ZXInICsgKGMgPiAxPydzJzonJyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd1BvbGljeURldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChwb2xpY3lbJ1BvbGljeU5hbWUnXSkgKyAiPC9iPiIgKyBkZXNjICsgIjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB4ICs9ICI8dHI+PHRkIGNsYXNzPXIxIHN0eWxlPXBhZGRpbmctbGVmdDoxNXB4Pjxicj5NYW5hZ2UgSW50ZWwmcmVnOyBBTVQgc3lzdGVtIGRlZmVuc2UgZmlsdGVycy48YnI+PGJyPiI7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlcy5sZW5ndGggPT0gMCAmJiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9JUEhlYWRlcnNGaWx0ZXInXS5yZXNwb25zZXMubGVuZ3RoID09IDApIHsNCiAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPXBhZGRpbmctbGVmdDoxNXB4PjxpPk5vIHN5c3RlbSBkZWZlbnNlIGZpbHRlcnMgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0geHhTeXN0ZW1EZWZlbmNlRmlsdGVyRXRoZXJuZXRUeXBlc1tmaWx0ZXJbJ0hkclByb3RvY29sSUQ4MDIxJ11dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWRlc2MpIGRlc2MgPSAnQWxsIEV0aGVybmV0IFByb3RvY29sICcgKyBmaWx0ZXJbJ0hkclByb3RvY29sSUQ4MDIxJ107DQogICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gJywgJyArIHh4U3lzdGVtRGVmZW5jZUZpbHRlckRlc2NbZmlsdGVyWydGaWx0ZXJQcm9maWxlJ11dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyWydGaWx0ZXJQcm9maWxlJ10gPT0gMikgeyBkZXNjICs9ICIgYXQgIiArIGZpbHRlclsnRmlsdGVyUHJvZmlsZURhdGEnXSArICIgcGFja2V0IC8gc2VjIjsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyWydBY3Rpb25FdmVudE9uTWF0Y2gnXSA9PSB0cnVlKSBkZXNjICs9ICcsIEV2ZW50IG9uIG1hdGNoJzsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd0ZpbHRlckRldGFpbHMoMCwiICsgaSArICIpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyAoZmlsdGVyWydGaWx0ZXJEaXJlY3Rpb24nXSA9PSAwID8gJyYjODU5MjsgJyA6ICcmIzg1OTQ7ICcpICsgRXNjYXBlSHRtbChmaWx0ZXJbIk5hbWUiXSkgKyAiPC9iPiwgIiArIGRlc2MgKyAiPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9JUEhlYWRlcnNGaWx0ZXInXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSB4eFN5c3RlbURlZmVuY2VGaWx0ZXJJUFR5cGVzW2ZpbHRlclsnSGRySVBWZXJzaW9uJ11dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWRlc2MpIGRlc2MgPSAnQWxsIEV0aGVybmV0IFByb3RvY29sICcgKyBmaWx0ZXJbJ0hkcklQVmVyc2lvbiddOw0KICAgICAgICAgICAgICAgICAgICBkZXNjICs9ICcsICcgKyB4eFN5c3RlbURlZmVuY2VGaWx0ZXJEZXNjW2ZpbHRlclsnRmlsdGVyUHJvZmlsZSddXTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlclsnRmlsdGVyUHJvZmlsZSddID09IDIpIHsgZGVzYyArPSAiIGF0ICIgKyBmaWx0ZXJbJ0ZpbHRlclByb2ZpbGVEYXRhJ10gKyAiIHBhY2tldCAvIHNlYyI7IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbHRlclsnQWN0aW9uRXZlbnRPbk1hdGNoJ10gPT0gdHJ1ZSkgZGVzYyArPSAnLCBFdmVudCBvbiBtYXRjaCc7DQogICAgICAgICAgICAgICAgICAgIHZhciBmaWx0ZXJjb3VudCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4geHhTeXN0ZW1EZWZlbmNlRmlsdGVycykgeyBpZiAoZmlsdGVyW2pdKSBmaWx0ZXJjb3VudCsrOyB9DQogICAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJjb3VudCA+IDApIGRlc2MgKz0gJywgJyArIGZpbHRlcmNvdW50ICsgJyBmaWx0ZXInICsgKGZpbHRlcmNvdW50PjE/J3MnOicnKTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIG9uY2xpY2s9c2hvd0ZpbHRlckRldGFpbHMoMSwiICsgaSArICIpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyAoZmlsdGVyWydGaWx0ZXJEaXJlY3Rpb24nXSA9PSAwID8gJyYjODU5MjsgJyA6ICcmIzg1OTQ7ICcpICsgRXNjYXBlSHRtbChmaWx0ZXJbIk5hbWUiXSkgKyAiPC9iPiwgIiArIGRlc2MgKyAiPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9ICI8YnI+PHRkIGNsYXNzPXIxPiIgKyBUYWJsZUVuZChBZGRSZWZyZXNoQnV0dG9uKCJQdWxsU3lzdGVtRGVmZW5zZSgpIikgKyAvKkFkZEJ1dHRvbigiVXBkYXRlIFN0YXRzIiwgIlVwZGF0ZURlZmVuc2VTdGF0cygpIikgKyovIEFkZEJ1dHRvbigiQWRkIEZpbHRlci4uLiIsICJBZGREZWZlbnNlRmlsdGVyKCkiKSArIEFkZEJ1dHRvbigiQWRkIFBvbGljeS4uLiIsICJBZGREZWZlbnNlUG9saWN5KCkiKSk7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c3RlbURlZmVuc2UnLCB4KTsNCg0KICAgICAgICAgICAgaWYgKHh4RmlsdGVyU3RhdGlzdGljc1RpbWVyID09IG51bGwpIHsNCiAgICAgICAgICAgICAgICBVcGRhdGVEZWZlbnNlU3RhdHMoKTsNCiAgICAgICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICAgICAgICAgIGlmICghdXJsdmFyc1snbm9yZWZyZXNoJ10pIHsgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXIgPSBzZXRJbnRlcnZhbChVcGRhdGVEZWZlbnNlU3RhdHMsIDUwMDApOyB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBTdG9wRGVmZW5zZVN0YXRzVGltZXIoKSB7DQogICAgICAgICAgICBpZiAoeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXIgIT0gbnVsbCkgeyBjbGVhckludGVydmFsKHh4RmlsdGVyU3RhdGlzdGljc1RpbWVyKTsgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXIgPSBudWxsOyB9DQogICAgICAgICAgICB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9IGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gVXBkYXRlRGVmZW5zZVN0YXRzKG4pIHsNCiAgICAgICAgICAgIGlmICghbiAmJiB4eEZpbHRlclN0YXRpc3RpY3NUaW1lckFjdGl2ZSA9PSB0cnVlKSB7IHJldHVybjsgfQ0KICAgICAgICAgICAgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXJBY3RpdmUgPSB0cnVlOw0KICAgICAgICAgICAgdmFyIG5ldHdvcmsgPSBuP246MDsNCiAgICAgICAgICAgIGlmICh4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbbmV0d29ya10pIHsNCiAgICAgICAgICAgICAgICB2YXIgZXJlZiA9ICc8YTpBZGRyZXNzPjwvYTpBZGRyZXNzPjxhOlJlZmVyZW5jZVBhcmFtZXRlcnM+PHc6UmVzb3VyY2VVUkk+aHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NpbS1zY2hlbWEvMi9DSU1fRXRoZXJuZXRQb3J0PC93OlJlc291cmNlVVJJPjx3OlNlbGVjdG9yU2V0Pjx3OlNlbGVjdG9yIE5hbWU9IkRldmljZUlEIj5JbnRlbChyKSBBTVQgRXRoZXJuZXQgUG9ydCAnICsgbmV0d29yayArICc8L3c6U2VsZWN0b3I+PC93OlNlbGVjdG9yU2V0PjwvYTpSZWZlcmVuY2VQYXJhbWV0ZXJzPic7DQogICAgICAgICAgICAgICAgYW10c3RhY2suQU1UX1N5c3RlbURlZmVuc2VQb2xpY3lfVXBkYXRlU3RhdGlzdGljcyhlcmVmLCBmYWxzZSwgVXBkYXRlRGVmZW5zZVN0YXRzMiwgbmV0d29yaywgMCwgeyAnSW5zdGFuY2VJRCc6IHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVtuZXR3b3JrXVsnSW5zdGFuY2VJRCddIH0pOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBObyBhY3RpdmUgcG9saWN5LCBzdG9wIHRoZSB0aW1lcg0KICAgICAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljc1tuZXR3b3JrXSA9IHt9Ow0KICAgICAgICAgICAgICAgIHVwZGF0ZVN5c3RlbURlZmVuc2UoKTsNCiAgICAgICAgICAgICAgICBTdG9wRGVmZW5zZVN0YXRzVGltZXIoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIFVwZGF0ZURlZmVuc2VTdGF0czIoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzLCBuZXR3b3JrKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgew0KICAgICAgICAgICAgICAgIGFtdHN0YWNrLkVudW0oJ0FNVF9BY3RpdmVGaWx0ZXJTdGF0aXN0aWNzJywgVXBkYXRlRGVmZW5zZVN0YXRzMywgbmV0d29yayk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFN0b3BEZWZlbnNlU3RhdHNUaW1lcigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gVXBkYXRlRGVmZW5zZVN0YXRzMyhzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMsIG5ldHdvcmspIHsNCiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgew0KICAgICAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljc1tuZXR3b3JrXSA9IHt9Ow0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcmVzcG9uc2VzKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciByZWFkY291bnQgPSByZXNwb25zZXNbaV1bJ1JlYWRDb3VudCddOw0KICAgICAgICAgICAgICAgICAgICAvLyB2YXIgbWF0Y2hlZCA9IHJlc3BvbnNlc1tpXVsnRmlsdGVyTWF0Y2hlZCddOw0KICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGdldEl0ZW0ocmVzcG9uc2VzW2ldWydEZXBlbmRlbnQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWzFdWydWYWx1ZSddWydFbmRwb2ludFJlZmVyZW5jZSddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10sICdATmFtZScsICdOYW1lJylbJ1ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgIHh4RmlsdGVyU3RhdGlzdGljc1tuZXR3b3JrXVtuYW1lXSA9IHJlYWRjb3VudDsNCiAgICAgICAgICAgICAgICAgICAgY291bnQrKzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdXBkYXRlU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeHhGaWx0ZXJTdGF0aXN0aWNzVGltZXJBY3RpdmUgPSBmYWxzZTsNCiAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHN0YXRpc3RpY3MsIHN0b3AgdGhlIHRpbWVyDQogICAgICAgICAgICBpZiAoY291bnQgPT0gMCkgeyBTdG9wRGVmZW5zZVN0YXRzVGltZXIoKTsgfSAvLyBUT0RPOiBDaGFuZ2UgdGhpcyB0byBhbGxvdyBmb3Igd2lyZWxlc3MNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNoYW5nZURlZmF1bHRQb2xpY3kobmV0d29yaykgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1wb2xpY3lTZWxlY3Rpb24gc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjY2cHg+PG9wdGlvbiB2YWx1ZT0tMT5Ob25lIjsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlcykgeyB4ICs9ICI8b3B0aW9uIHZhbHVlPSIgKyBpICsgKCh4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbbmV0d29ya10gJiYgeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlc1tpXVsnSW5zdGFuY2VJRCddID09IHh4U3lzdGVtRGVmZW5jZUxpbmtlZFBvbGljeVtuZXR3b3JrXVsnSW5zdGFuY2VJRCddKSA/ICcgc2VsZWN0ZWQnIDogJycpICsgIj4iICsgeHhTeXN0ZW1EZWZlbnNlWydBTVRfU3lzdGVtRGVmZW5zZVBvbGljeSddLnJlc3BvbnNlc1tpXVsnUG9saWN5TmFtZSddOyB9DQogICAgICAgICAgICB4ICs9ICI8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5EZWZhdWx0IFBvbGljeTwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnRGVmYXVsdCBTeXN0ZW0gRGVmZW5zZSBQb2xpY3knLCAzLCBjaGFuZ2VEZWZhdWx0UG9saWN5T2ssIHgsIG5ldHdvcmspOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2hhbmdlRGVmYXVsdFBvbGljeU9rKGJ1dHRvbiwgbmV0d29yaykgew0KICAgICAgICAgICAgdmFyIGkgPSBRKCdwb2xpY3lTZWxlY3Rpb24nKS52YWx1ZTsNCiAgICAgICAgICAgIHZhciBvbGRwb2xpY3kgPSB4eFN5c3RlbURlZmVuY2VMaW5rZWRQb2xpY3lbbmV0d29ya107DQogICAgICAgICAgICBpZiAob2xkcG9saWN5KSB7IGFtdHN0YWNrLkRlbGV0ZSgnQU1UX05ldHdvcmtQb3J0U3lzdGVtRGVmZW5zZVBvbGljeScsICc8dzpTZWxlY3RvclNldD48dzpTZWxlY3RvciBOYW1lPSJBbnRlY2VkZW50Ij48YTpFbmRwb2ludFJlZmVyZW5jZSB4bWxuczpiPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciIHhtbG5zOmM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPjxhOkFkZHJlc3M+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9hOkFkZHJlc3M+PGE6UmVmZXJlbmNlUGFyYW1ldGVycz48dzpSZXNvdXJjZVVSST5odHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY2ltLXNjaGVtYS8yL0NJTV9FdGhlcm5ldFBvcnQ8L3c6UmVzb3VyY2VVUkk+PHc6U2VsZWN0b3JTZXQ+PHc6U2VsZWN0b3IgTmFtZT0iQ3JlYXRpb25DbGFzc05hbWUiPkNJTV9FdGhlcm5ldFBvcnQ8L3c6U2VsZWN0b3I+PHc6U2VsZWN0b3IgTmFtZT0iRGV2aWNlSUQiPkludGVsKHIpIEFNVCBFdGhlcm5ldCBQb3J0ICcgKyBuZXR3b3JrICsgJzwvdzpTZWxlY3Rvcj48L3c6U2VsZWN0b3JTZXQ+PC9hOlJlZmVyZW5jZVBhcmFtZXRlcnM+PC9hOkVuZHBvaW50UmVmZXJlbmNlPjwvdzpTZWxlY3Rvcj48dzpTZWxlY3RvciBOYW1lPSJEZXBlbmRlbnQiPjxhOkVuZHBvaW50UmVmZXJlbmNlIHhtbG5zOmI9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyIgeG1sbnM6Yz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+PGE6QWRkcmVzcz5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L2E6QWRkcmVzcz48YTpSZWZlcmVuY2VQYXJhbWV0ZXJzPjx3OlJlc291cmNlVVJJPmh0dHA6Ly9pbnRlbC5jb20vd2JlbS93c2NpbS8xL2FtdC1zY2hlbWEvMS9BTVRfU3lzdGVtRGVmZW5zZVBvbGljeTwvdzpSZXNvdXJjZVVSST48dzpTZWxlY3RvclNldD48dzpTZWxlY3RvciBOYW1lPSJJbnN0YW5jZUlEIj4nICsgb2xkcG9saWN5WydJbnN0YW5jZUlEJ10gKyAnPC93OlNlbGVjdG9yPjwvdzpTZWxlY3RvclNldD48L2E6UmVmZXJlbmNlUGFyYW1ldGVycz48L2E6RW5kcG9pbnRSZWZlcmVuY2U+PC93OlNlbGVjdG9yPjwvdzpTZWxlY3RvclNldD4nLCAoKGkgPT0gLTEpID8gUHVsbFN5c3RlbURlZmVuc2UgOiBmdW5jdGlvbiAoKSB7IH0pKTsgfQ0KDQogICAgICAgICAgICBpZiAoaSA+PSAwKSB7DQogICAgICAgICAgICAgICAgdmFyIHBvbGljeSA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgdmFyIGVyZWYgPSAnPEFkZHJlc3MgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nPC9BZGRyZXNzPjxSZWZlcmVuY2VQYXJhbWV0ZXJzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciPjxSZXNvdXJjZVVSSSB4bWxucz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+aHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NpbS1zY2hlbWEvMi9DSU1fRXRoZXJuZXRQb3J0PC9SZXNvdXJjZVVSST48U2VsZWN0b3JTZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPjxTZWxlY3RvciBOYW1lPSJEZXZpY2VJRCI+SW50ZWwocikgQU1UIEV0aGVybmV0IFBvcnQgJyArIG5ldHdvcmsgKyAnPC9TZWxlY3Rvcj48L1NlbGVjdG9yU2V0PjwvUmVmZXJlbmNlUGFyYW1ldGVycz4nOw0KICAgICAgICAgICAgICAgIHZhciBwcmVmID0gJzxBZGRyZXNzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciPmh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZzwvQWRkcmVzcz48UmVmZXJlbmNlUGFyYW1ldGVycyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nIj48UmVzb3VyY2VVUkkgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPmh0dHA6Ly9pbnRlbC5jb20vd2JlbS93c2NpbS8xL2FtdC1zY2hlbWEvMS9BTVRfU3lzdGVtRGVmZW5zZVBvbGljeTwvUmVzb3VyY2VVUkk+PFNlbGVjdG9yU2V0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj48U2VsZWN0b3IgTmFtZT0iSW5zdGFuY2VJRCI+JyArIHBvbGljeVsnSW5zdGFuY2VJRCddICsgJzwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+JzsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DcmVhdGUoJ0FNVF9OZXR3b3JrUG9ydFN5c3RlbURlZmVuc2VQb2xpY3knLCB7ICdBbnRlY2VkZW50JzogZXJlZiwgJ0RlcGVuZGVudCc6IHByZWYgfSwgY2hhbmdlRGVmYXVsdFBvbGljeU9rMik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBjaGFuZ2VEZWZhdWx0UG9saWN5T2syKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdEZWZhdWx0IFN5c3RlbSBEZWZlbnNlIFBvbGljeScsICJVbmFibGUgdG8gc2V0IHBvbGljeSwgZXJyb3IgIiArIHN0YXR1cyk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFB1bGxTeXN0ZW1EZWZlbnNlKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGREZWZlbnNlRmlsdGVyKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPWZpbHRlcm5hbWUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggbWF4bGVuZ3RoPTE2IG9ua2V5dXA9QWRkRGVmZW5zZUZpbHRlclVwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4Pk5hbWU8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48c2VsZWN0IGlkPWZpbHRlcnR5cGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjY2cHggb25jaGFuZ2U9QWRkRGVmZW5zZUZpbHRlclVwZGF0ZSgpPjxvcHRpb24gdmFsdWU9MD5FdGhlcm5ldCBJUCBQYWNrZXQgRmlsdGVyPG9wdGlvbiB2YWx1ZT0xPkV0aGVybmV0IEFSUCBQYWNrZXQgRmlsdGVyPG9wdGlvbiB2YWx1ZT0yPklQdjQgUGFja2V0IEZpbHRlcjxvcHRpb24gdmFsdWU9Mz5JUHY2IFBhY2tldCBGaWx0ZXI8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5UeXBlPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHggaWQ9aXBmaWx0ZXJkaXY+PGlucHV0IGlkPWlwZmlsdGVyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IHBsYWNlaG9sZGVyPVwiT3B0aW9uYWwgUnVsZXNcIiBvbmtleXVwPUFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5NYXRjaGluZyBSdWxlczwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9ZmlsdGVyZGlyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2NnB4IG9uY2hhbmdlPUFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKT48b3B0aW9uIHZhbHVlPTA+T3V0Ym91bmQgLyBUcmFuc21pdDxvcHRpb24gdmFsdWU9MT5JbmJvdW5kIC8gUmVjZWl2ZTwvc2VsZWN0PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PkRpcmVjdGlvbjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICB4ICs9ICI8ZGl2IHN0eWxlPWhlaWdodDoyNnB4O21hcmdpbi10b3A6NHB4PjxzZWxlY3QgaWQ9ZmlsdGVycHJvZmlsZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjZweCBvbmNoYW5nZT1BZGREZWZlbnNlRmlsdGVyVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkFsbG93LCBDb3VudDxvcHRpb24gdmFsdWU9MT5Ecm9wLCBDb3VudDxvcHRpb24gdmFsdWU9Mj5SYXRlIExpbWl0PG9wdGlvbiB2YWx1ZT0zPkFsbG93PG9wdGlvbiB2YWx1ZT00PkRyb3A8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5BY3Rpb248L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweCBpZD1maWx0ZXJkYXRhZGl2PjxpbnB1dCBpZD1maWx0ZXJkYXRhIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG1heGxlbmd0aD04IG9ua2V5dXA9QWRkRGVmZW5zZUZpbHRlclVwZGF0ZSgpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PlBhY2tldHMgLyBzZWNvbmQ8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48c2VsZWN0IGlkPWZpbHRlcmFjdGlvbiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjZweCBvbmNoYW5nZT1BZGREZWZlbnNlRmlsdGVyVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT1mYWxzZT5EbyBOb3RoaW5nPG9wdGlvbiB2YWx1ZT0xPkV2ZW50IG9uIG1hdGNoPC9zZWxlY3Q+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDo0cHg+RXZlbnQgTG9nPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdBZGQgU3lzdGVtIERlZmVuc2UgRmlsdGVyJywgMywgQWRkRGVmZW5zZUZpbHRlck9rLCB4KTsNCiAgICAgICAgICAgIEFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZERlZmVuc2VGaWx0ZXJPaygpIHsNCiAgICAgICAgICAgIGlmIChRKCdmaWx0ZXJ0eXBlJykudmFsdWUgPD0gMSkgew0KICAgICAgICAgICAgICAgIC8vIEFkZCBFdGhlcm5ldCBJUCBvciBBUlAgZmlsdGVyDQogICAgICAgICAgICAgICAgdmFyIHByb3RvY29sID0gKFEoJ2ZpbHRlcnR5cGUnKS52YWx1ZSA9PSAwKSA/IDIwNDggOiAyMDU0OyAvLyBJUCA6IEFSUA0KICAgICAgICAgICAgICAgIHZhciBmaWx0ZXIgPSB7ICdJbnN0YW5jZUlEICc6IDAsICdOYW1lJzogUSgnZmlsdGVybmFtZScpLnZhbHVlLCAnQ3JlYXRpb25DbGFzc05hbWUnOiAwLCAnU3lzdGVtTmFtZSc6IDAsICdTeXN0ZW1DcmVhdGlvbkNsYXNzTmFtZSc6IDAsICdIZHJQcm90b2NvbElEODAyMSc6IHByb3RvY29sLCAnRmlsdGVyUHJvZmlsZSc6IFEoJ2ZpbHRlcnByb2ZpbGUnKS52YWx1ZSwgJ0ZpbHRlckRpcmVjdGlvbic6IFEoJ2ZpbHRlcmRpcicpLnZhbHVlLCAnQWN0aW9uRXZlbnRPbk1hdGNoJzogUSgnZmlsdGVyYWN0aW9uJykudmFsdWUgfTsNCiAgICAgICAgICAgICAgICBpZiAoUSgnZmlsdGVycHJvZmlsZScpLnZhbHVlID09IDIpIGZpbHRlclsnRmlsdGVyUHJvZmlsZURhdGEnXSA9IFEoJ2ZpbHRlcmRhdGEnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DcmVhdGUoJ0FNVF9IZHI4MDIxRmlsdGVyJywgZmlsdGVyLCBBZGREZWZlbnNlRmlsdGVyT2syKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gQWRkIElQdjQgb3IgSVB2NiBGaWx0ZXINCiAgICAgICAgICAgICAgICB2YXIgcHJvdG9jb2wgPSAoUSgnZmlsdGVydHlwZScpLnZhbHVlID09IDIpID8gNCA6IDY7IC8vIElQdjQgOiBJUHY2DQogICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHsgJ0luc3RhbmNlSUQgJzogMCwgJ05hbWUnOiBRKCdmaWx0ZXJuYW1lJykudmFsdWUsICdDcmVhdGlvbkNsYXNzTmFtZSc6IDAsICdTeXN0ZW1OYW1lJzogMCwgJ1N5c3RlbUNyZWF0aW9uQ2xhc3NOYW1lJzogMCwgJ0hkcklQVmVyc2lvbic6IHByb3RvY29sLCAnRmlsdGVyUHJvZmlsZSc6IFEoJ2ZpbHRlcnByb2ZpbGUnKS52YWx1ZSwgJ0ZpbHRlckRpcmVjdGlvbic6IFEoJ2ZpbHRlcmRpcicpLnZhbHVlLCAnQWN0aW9uRXZlbnRPbk1hdGNoJzogUSgnZmlsdGVyYWN0aW9uJykudmFsdWUgfTsNCg0KICAgICAgICAgICAgICAgIC8vIFBhcnNlIHRoZSBmaWx0ZXIgc3RyaW5nDQogICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9zb2Z0d2FyZS5pbnRlbC5jb20vc2l0ZXMvbWFuYWdlYWJpbGl0eS9BTVRfSW1wbGVtZW50YXRpb25fYW5kX1JlZmVyZW5jZV9HdWlkZS9kZWZhdWx0Lmh0bT90dXJsPUhUTUxEb2N1bWVudHMlMkZXUy1NYW5hZ2VtZW50X0NsYXNzX1JlZmVyZW5jZSUyRkFNVF9IZHI4MDIxRmlsdGVyLmh0bQ0KICAgICAgICAgICAgICAgIHZhciBmaWx0ZXJzdHJzID0gUSgnaXBmaWx0ZXInKS52YWx1ZS5zcGxpdCgnLCcpOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gZmlsdGVyc3Rycykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgeHggPSBmaWx0ZXJzdHJzW2ldLmluZGV4T2YoJz0nKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBmaWx0ZXJzdHJzW2ldLnN1YnN0cmluZygwLCB4eCk7DQogICAgICAgICAgICAgICAgICAgIHZhciB2ID0gZmlsdGVyc3Ryc1tpXS5zdWJzdHJpbmcoeHggKyAxKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB4eFN5c3RlbURlZmVuY2VGaWx0ZXJzW25dOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIXQpIHsgbiA9ICJIZHIiICsgbjsgdCA9IHh4U3lzdGVtRGVmZW5jZUZpbHRlcnNbbl07IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKHQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFBhcnNlIHYgKHRoZSB2YWx1ZSkgYmFzZWQgb24gdGhlIHR5cGUgdC4NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ID09IDIgJiYgcHJvdG9jb2wgPT0gNCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElQdjQgYWRkcmVzcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpcHNwbGl0ID0gdi5zcGxpdCgnLicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcHNwbGl0Lmxlbmd0aCA9PSA0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZmlsdGVyW25dID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGlwc3BsaXRbMF0pLCBwYXJzZUludChpcHNwbGl0WzFdKSwgcGFyc2VJbnQoaXBzcGxpdFsyXSksIHBhcnNlSW50KGlwc3BsaXRbM10pKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZmlsdGVyW25dID0gWyBwYXJzZUludChpcHNwbGl0WzBdKSwgcGFyc2VJbnQoaXBzcGxpdFsxXSksIHBhcnNlSW50KGlwc3BsaXRbMl0pLCBwYXJzZUludChpcHNwbGl0WzNdKSBdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJbbl0gPSByc3RyMmhleChTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGlwc3BsaXRbMF0pLCBwYXJzZUludChpcHNwbGl0WzFdKSwgcGFyc2VJbnQoaXBzcGxpdFsyXSksIHBhcnNlSW50KGlwc3BsaXRbM10pKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlciB2YWx1ZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJbbl0gPSB2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgaWYgKFEoJ2ZpbHRlcnByb2ZpbGUnKS52YWx1ZSA9PSAyKSBmaWx0ZXJbJ0ZpbHRlclByb2ZpbGVEYXRhJ10gPSBRKCdmaWx0ZXJkYXRhJykudmFsdWU7DQogICAgICAgICAgICAgICAgYW10c3RhY2suQ3JlYXRlKCdBTVRfSVBIZWFkZXJzRmlsdGVyJywgZmlsdGVyLCBBZGREZWZlbnNlRmlsdGVyT2syKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZERlZmVuc2VGaWx0ZXJVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgb2sgPSBRKCdmaWx0ZXJuYW1lJykudmFsdWUubGVuZ3RoID4gMDsNCiAgICAgICAgICAgIGlmIChvayAmJiBRKCdmaWx0ZXJwcm9maWxlJykudmFsdWUgPT0gMikgeyB2YXIgaSA9IHBhcnNlSW50KFEoJ2ZpbHRlcmRhdGEnKS52YWx1ZSk7IG9rID0gKGkgPiAwICYmIGkgPCAweEZGRkZGRkZGKTsgfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgICAgIFFWKCdmaWx0ZXJkYXRhZGl2JywgUSgnZmlsdGVycHJvZmlsZScpLnZhbHVlID09IDIpOw0KICAgICAgICAgICAgUVYoJ2lwZmlsdGVyZGl2JywgUSgnZmlsdGVydHlwZScpLnZhbHVlID49IDIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZUZpbHRlck9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnQWRkIFN5c3RlbSBEZWZlbnNlIEZpbHRlcicsICJVbmFibGUgdG8gYWRkIGZpbHRlciwgZXJyb3IgIyIgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0ZpbHRlckRldGFpbHModCwgaSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIGRlc2MsIGZpbHRlciwgdHlwZSwgdG47DQogICAgICAgICAgICBpZiAodCA9PSAwKSB7DQogICAgICAgICAgICAgICAgdG4gPSAnQU1UX0hkcjgwMjFGaWx0ZXInOw0KICAgICAgICAgICAgICAgIHR5cGUgPSAnRXRoZXJuZXQgVHJhZmZpYyc7DQogICAgICAgICAgICAgICAgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlW3RuXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgZGVzYyA9IHh4U3lzdGVtRGVmZW5jZUZpbHRlckV0aGVybmV0VHlwZXNbZmlsdGVyWydIZHJQcm90b2NvbElEODAyMSddXTsNCiAgICAgICAgICAgICAgICBpZiAoIWRlc2MpIGRlc2MgPSAnQWxsIEV0aGVybmV0IFByb3RvY29sICcgKyBmaWx0ZXJbJ0hkclByb3RvY29sSUQ4MDIxJ107DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRuID0gJ0FNVF9JUEhlYWRlcnNGaWx0ZXInOw0KICAgICAgICAgICAgICAgIHR5cGUgPSAnSVAgVHJhZmZpYyc7DQogICAgICAgICAgICAgICAgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlW3RuXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgZGVzYyA9IHh4U3lzdGVtRGVmZW5jZUZpbHRlcklQVHlwZXNbZmlsdGVyWydIZHJJUFZlcnNpb24nXV07DQogICAgICAgICAgICAgICAgaWYgKCFkZXNjKSBkZXNjID0gJ0FsbCBJUCBQcm90b2NvbCAnICsgZmlsdGVyWydIZHJJUFZlcnNpb24nXTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciB4ID0gJyc7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnTmFtZScsIEVzY2FwZUh0bWwoZmlsdGVyWyJOYW1lIl0pKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdUeXBlJywgdHlwZSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnTWF0Y2hpbmcgVHJhZmZpYycsIGRlc2MpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0RpcmVjdGlvbicsIGZpbHRlclsnRmlsdGVyRGlyZWN0aW9uJ10gPT0gMCA/ICdPdXRib3VuZCAvIFRyYW5zbWl0JyA6ICdJbmJvdW5kIC8gUmVjZWl2ZScpOw0KICAgICAgICAgICAgaWYgKHQgPT0gMSkgew0KICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4geHhTeXN0ZW1EZWZlbmNlRmlsdGVycykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyW2pdKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IGosIHYgPSBmaWx0ZXJbal0sIHQgPSB4eFN5c3RlbURlZmVuY2VGaWx0ZXJzW2pdOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQgPT0gMiAmJiB2Lmxlbmd0aCA9PSA0KSB7IHYgPSBoZXgycnN0cih2KTsgdiA9IHYuY2hhckNvZGVBdCgwKSArICcuJyArIHYuY2hhckNvZGVBdCgxKSArICcuJyArIHYuY2hhckNvZGVBdCgyKSArICcuJyArIHYuY2hhckNvZGVBdCgzKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4uc3RhcnRzV2l0aCgnSGRyJykpIG4gPSBuLnN1YnN0cmluZygzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdGaWx0ZXIgJyArIG4sIHYpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0V2ZW50IG9uIG1hdGNoJywgKGZpbHRlclsnQWN0aW9uRXZlbnRPbk1hdGNoJ10gPT0gdHJ1ZSkgPyAnWWVzJyA6ICdObycpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ0V0aGVybmV0IEZpbHRlciAjJyArIGZpbHRlclsnSW5zdGFuY2VJRCddLCA1LCBzaG93RmlsdGVyRGV0YWlsc09rLCB4LCBbdG4sIGZpbHRlcl0pOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0ZpbHRlckRldGFpbHNPayhiLCB0YWcpIHsNCiAgICAgICAgICAgIGlmIChiID09IDIpIHsgYW10c3RhY2suRGVsZXRlKHRhZ1swXSwgdGFnWzFdLCBkZWxldGVEZWZlbnNlRmlsdGVyKTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlRGVmZW5zZUZpbHRlcihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnUmVtb3ZlIEZpbHRlcicsICJVbmFibGUgdG8gcmVtb3ZlIGZpbHRlciwgbWFrZSBzdXJlIGl0J3Mgbm90IGluIHVzZS4iKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUHVsbFN5c3RlbURlZmVuc2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHZhciB4eEFkZERlZmVuc2VQb2xpY3lGaWx0ZXJzOw0KICAgICAgICBmdW5jdGlvbiBBZGREZWZlbnNlUG9saWN5KCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgeHhBZGREZWZlbnNlUG9saWN5RmlsdGVycyA9IFtdOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PGlucHV0IGlkPXBvbGljeW5hbWUgdGl0bGU9Jzxwb2xpY3kgbmFtZT46PHBvbGljeSBwcmVjZWRlbmNlIG51bWJlcj4nIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG1heGxlbmd0aD0xNiBvbmtleXVwPUFkZERlZmVuc2VQb2xpY3lVcGRhdGUoKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5OYW1lPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg7bWFyZ2luLXRvcDo0cHg+PHNlbGVjdCBpZD1wb2xpY3l0eCB0aXRsZT0nRGVmYXVsdCBhY3Rpb24gdG8gdGFrZSBmb3Igb3V0Ym91bmQgdHJhZmZpYycgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MTMzcHg+PG9wdGlvbiB2YWx1ZT0wPkFsbG93PG9wdGlvbiB2YWx1ZT0xPkRyb3A8b3B0aW9uIHZhbHVlPTI+QWxsb3csQ291bnQ8b3B0aW9uIHZhbHVlPTM+RHJvcCxDb3VudDxvcHRpb24gdmFsdWU9ND5BbGxvdyxDb3VudCxFdmVudDxvcHRpb24gdmFsdWU9NT5Ecm9wLENvdW50LEV2ZW50PC9zZWxlY3Q+PHNlbGVjdCBpZD1wb2xpY3lyeCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoxMzNweCB0aXRsZT0nRGVmYXVsdCBhY3Rpb24gdG8gdGFrZSBmb3IgaW5ib3VuZCB0cmFmZmljJz48b3B0aW9uIHZhbHVlPTA+QWxsb3c8b3B0aW9uIHZhbHVlPTE+RHJvcDxvcHRpb24gdmFsdWU9Mj5BbGxvdyxDb3VudDxvcHRpb24gdmFsdWU9Mz5Ecm9wLENvdW50PG9wdGlvbiB2YWx1ZT00PkFsbG93LENvdW50LEV2ZW50PG9wdGlvbiB2YWx1ZT01PkRyb3AsQ291bnQsRXZlbnQ8L3NlbGVjdD48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjRweD5EZWZhdWx0IFRYIC8gUlg8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBpZD1wb2xpY3lGaWx0ZXJzPjwvZGl2PiI7DQogICAgICAgICAgICBpZiAoeHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlcy5sZW5ndGggPiAwIHx8IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6MjZweDttYXJnaW4tdG9wOjRweD48ZGl2IHN0eWxlPWZsb2F0OnJpZ2h0PjxzZWxlY3QgaWQ9eGZpbHRlciBzdHlsZT13aWR0aDoxODZweD4iOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlWydBTVRfSGRyODAyMUZpbHRlciddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPG9wdGlvbiB2YWx1ZT0iICsgZmlsdGVyWyJJbnN0YW5jZUlEIl0gKyAiPiIgKyBmaWx0ZXJbIk5hbWUiXTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN5c3RlbURlZmVuc2VbJ0FNVF9JUEhlYWRlcnNGaWx0ZXInXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlc1tpXTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPG9wdGlvbiB2YWx1ZT0iICsgZmlsdGVyWyJJbnN0YW5jZUlEIl0gKyAiPiIgKyBmaWx0ZXJbIk5hbWUiXTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgeCArPSAiPC9zZWxlY3Q+PGlucHV0IGlkPWFkZEZpbHRlckJ1dHRvbiB0eXBlPWJ1dHRvbiB2YWx1ZT1BZGQgc3R5bGU9d2lkdGg6ODBweCBvbmNsaWNrPWFkZEZpbHRlckJ1dHRvbigpPjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6NHB4PkFkZCBGaWx0ZXI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ0FkZCBTeXN0ZW0gRGVmZW5zZSBQb2xpY3knLCAzLCBBZGREZWZlbnNlUG9saWN5T2ssIHgpOw0KICAgICAgICAgICAgQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gYWRkRmlsdGVyQnV0dG9uKCkgew0KICAgICAgICAgICAgaWYgKHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMuaW5kZXhPZihRKCd4ZmlsdGVyJykudmFsdWUpID49IDApIHJldHVybjsNCiAgICAgICAgICAgIHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMucHVzaChRKCd4ZmlsdGVyJykudmFsdWUpOw0KICAgICAgICAgICAgQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcmVtb3ZlRmlsdGVyQnV0dG9uKGgpIHsNCiAgICAgICAgICAgIHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMuc3BsaWNlKGgsIDEpOw0KICAgICAgICAgICAgQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZVBvbGljeVVwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBvayA9IFEoJ3BvbGljeW5hbWUnKS52YWx1ZS5zcGxpdCgnOicpWzBdLmxlbmd0aCA+IDA7DQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgb2spOw0KICAgICAgICAgICAgaWYgKHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMubGVuZ3RoID09IDApIHsNCiAgICAgICAgICAgICAgICBRSCgncG9saWN5RmlsdGVycycsICc8YnI+PGk+VGhpcyBwb2xpY3kgY29udGFpbnMgbm8gZmlsdGVycy48L2k+PGJyPjxicj4nKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4QWRkRGVmZW5zZVBvbGljeUZpbHRlcnMpIHsNCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBjbGFzcz1pdGVtQmFyIHN0eWxlPW1hcmdpbi1yaWdodDowPjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ+IiArIEFkZEJ1dHRvbjIoIlJlbW92ZSIsICJyZW1vdmVGaWx0ZXJCdXR0b24oIiArIGkgKyAiKSIpICsgIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4O21heC13aWR0aDoyNjBweDtvdmVyZmxvdzpoaWRkZW4+PGI+IiArIEdldEZpbHRlckJ5SWQoeHhBZGREZWZlbnNlUG9saWN5RmlsdGVyc1tpXSlbJ05hbWUnXSArICI8L2I+PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgUUgoJ3BvbGljeUZpbHRlcnMnLCB4KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFRPRE86IE9uY2UgbG9hZGVkLCB3ZSBjb3VsZCBtYWtlIGEgdGFibGUgb2YgImhhbmRsZSAtPiBmaWx0ZXIiIHdoZXJlIGJvdGggZmlsdGVyIHR5cGVzIGFyZSBtaXhlZC1pbi4gQ291bGQgbWFrZSB0aGluZ3Mgc2ltcGxlci9zbWFsbGVyPw0KICAgICAgICAvLyBXZSB3b3VsZCBvbmx5IGhhdmUgb25lIHRhYmxlIHRvIGxvb3AgaW5zdGVhZCBvZiB0d28gYXQgYSBmZXcgcGxhY2VzLiBUaGlzIGZ1bmN0aW9uIHdvdWxkIGJlIHJlbW92ZWQgY29tcGxldGVseS4NCiAgICAgICAgZnVuY3Rpb24gR2V0RmlsdGVyQnlJZChoKSB7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXMpIHsgdmFyIGZpbHRlciA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX0hkcjgwMjFGaWx0ZXInXS5yZXNwb25zZXNbaV07IGlmIChmaWx0ZXJbIkluc3RhbmNlSUQiXSA9PSBoKSByZXR1cm4gZmlsdGVyOyB9DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4U3lzdGVtRGVmZW5zZVsnQU1UX0lQSGVhZGVyc0ZpbHRlciddLnJlc3BvbnNlcykgeyB2YXIgZmlsdGVyID0geHhTeXN0ZW1EZWZlbnNlWydBTVRfSVBIZWFkZXJzRmlsdGVyJ10ucmVzcG9uc2VzW2ldOyBpZiAoZmlsdGVyWyJJbnN0YW5jZUlEIl0gPT0gaCkgcmV0dXJuIGZpbHRlcjsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZVBvbGljeU9rKCkgew0KICAgICAgICAgICAgdmFyIHR4ID0gUSgncG9saWN5dHgnKS52YWx1ZTsNCiAgICAgICAgICAgIHZhciByeCA9IFEoJ3BvbGljeXJ4JykudmFsdWU7DQogICAgICAgICAgICB2YXIgcHJpID0gMDsNCiAgICAgICAgICAgIHZhciBuID0gUSgncG9saWN5bmFtZScpLnZhbHVlLnNwbGl0KCc6Jyk7DQogICAgICAgICAgICBpZiAobi5sZW5ndGggPT0gMikgcHJpID0gcGFyc2VJbnQoblsxXSk7DQogICAgICAgICAgICB2YXIgZmlsdGVyID0geyAnSW5zdGFuY2VJRCAnOiAwLCAnUG9saWN5TmFtZSc6IG5bMF0sICdQb2xpY3lQcmVjZWRlbmNlJzogcHJpLCAnVHhEZWZhdWx0Q291bnQnOiAodHggPiAxKSwgJ1R4RGVmYXVsdERyb3AnOiAodHggJSAyID09IDEpLCAnVHhEZWZhdWx0TWF0Y2hFdmVudCc6ICh0eCA+IDMpLCAnUnhEZWZhdWx0Q291bnQnOiAocnggPiAxKSwgJ1J4RGVmYXVsdERyb3AnOiAocnggJSAyID09IDEpLCAnUnhEZWZhdWx0TWF0Y2hFdmVudCc6IChyeCA+IDMpIH07DQogICAgICAgICAgICBpZiAoeHhBZGREZWZlbnNlUG9saWN5RmlsdGVycy5sZW5ndGggPiAwKSBmaWx0ZXJbJ0ZpbHRlckNyZWF0aW9uSGFuZGxlcyddID0geHhBZGREZWZlbnNlUG9saWN5RmlsdGVyczsNCiAgICAgICAgICAgIGFtdHN0YWNrLkNyZWF0ZSgnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knLCBmaWx0ZXIsIEFkZERlZmVuc2VQb2xpY3lPazIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkRGVmZW5zZVBvbGljeU9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnQWRkIFN5c3RlbSBEZWZlbnNlIFBvbGljeScsICJVbmFibGUgdG8gYWRkIHBvbGljeSwgZXJyb3IgIyIgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtRGVmZW5zZSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1BvbGljeURldGFpbHMoaSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHBvbGljeSA9IHh4U3lzdGVtRGVmZW5zZVsnQU1UX1N5c3RlbURlZmVuc2VQb2xpY3knXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ05hbWUnLCBFc2NhcGVIdG1sKHBvbGljeVsiUG9saWN5TmFtZSJdKSk7DQogICAgICAgICAgICBpZiAocG9saWN5WyJQb2xpY3lQcmVjZWRlbmNlIl0gIT0gMCkgeCArPSBhZGRIdG1sVmFsdWUoJ1ByZWNlZGVuY2UnLCBwb2xpY3lbIlBvbGljeVByZWNlZGVuY2UiXSk7DQoNCiAgICAgICAgICAgIHZhciBhY3Rpb24gPSAocG9saWN5WyJUeERlZmF1bHREcm9wIl0gPT0gdHJ1ZSkgPyAnRHJvcCcgOiAnQWxsb3cnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiVHhEZWZhdWx0Q291bnQiXSA9PSB0cnVlKSBhY3Rpb24gKz0gJywgQ291bnQnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiVHhEZWZhdWx0TWF0Y2hFdmVudCJdID09IHRydWUpIGFjdGlvbiArPSAnLCBFdmVudCc7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnRGVmYXVsdCBUWCBBY3Rpb24nLCBhY3Rpb24pOw0KDQogICAgICAgICAgICBhY3Rpb24gPSAocG9saWN5WyJSeERlZmF1bHREcm9wIl0gPT0gdHJ1ZSkgPyAnRHJvcCcgOiAnQWxsb3cnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiUnhEZWZhdWx0Q291bnQiXSA9PSB0cnVlKSBhY3Rpb24gKz0gJywgQ291bnQnOw0KICAgICAgICAgICAgaWYgKHBvbGljeVsiUnhEZWZhdWx0TWF0Y2hFdmVudCJdID09IHRydWUpIGFjdGlvbiArPSAnLCBFdmVudCc7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgnRGVmYXVsdCBSWCBBY3Rpb24nLCBhY3Rpb24pOw0KDQogICAgICAgICAgICBpZiAocG9saWN5WydGaWx0ZXJDcmVhdGlvbkhhbmRsZXMnXSkgeyBmb3IgKHZhciBpIGluIHBvbGljeVsnRmlsdGVyQ3JlYXRpb25IYW5kbGVzJ10pIHsgeCArPSBhZGRIdG1sVmFsdWUoJ0ZpbHRlciAjJyArICgraSArIDEpLCBHZXRGaWx0ZXJCeUlkKHBvbGljeVsnRmlsdGVyQ3JlYXRpb25IYW5kbGVzJ11baV0pWydOYW1lJ10pOyB9IH0NCg0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ1BvbGljeSAjJyArIHBvbGljeVsnSW5zdGFuY2VJRCddLnN1YnN0cmluZygyMCksIDUsIHNob3dQb2xpY3lEZXRhaWxzT2ssIHgsIHBvbGljeSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UG9saWN5RGV0YWlsc09rKGIsIHRhZykgew0KICAgICAgICAgICAgaWYgKGIgPT0gMikgeyBhbXRzdGFjay5EZWxldGUoJ0FNVF9TeXN0ZW1EZWZlbnNlUG9saWN5JywgdGFnLCBkZWxldGVEZWZlbnNlUG9saWN5KTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGVsZXRlRGVmZW5zZVBvbGljeShzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnUmVtb3ZlIFBvbGljeScsICJVbmFibGUgdG8gcmVtb3ZlIHBvbGljeSwgbWFrZSBzdXJlIGl0J3Mgbm90IGluIHVzZS4iKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUHVsbFN5c3RlbURlZmVuc2UoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gV0lSRUxFU1MgU0VUVElOR1MgUEFORUwNCiAgICAgICAgLy8NCg0KICAgICAgICB2YXIgeHhXaXJlbGVzczsNCiAgICAgICAgZnVuY3Rpb24gUHVsbFdpcmVsZXNzKCkgew0KICAgICAgICAgICAgYW10Rmlyc3RQdWxsIHw9IDI7DQogICAgICAgICAgICB0cnkgeyBpZiAoYW10d2lyZWxlc3NpZiA9PSAtMSkgcmV0dXJuOyB9IGNhdGNoIChlKSB7fSAvLyBJZiB0aGUgd2lyZWxlc3MgYWRhcHRlciBoYXMgbm8gTUFDLCBkb24ndCBzaG93IHRoaXMuDQogICAgICAgICAgICBhbXRzdGFjay5CYXRjaEVudW0oIiIsIFsiKkNJTV9XaUZpUG9ydENhcGFiaWxpdGllcyIsICIqQ0lNX1dpRmlQb3J0IiwgIipDSU1fV2lGaUVuZHBvaW50IiwgIkNJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncyJdLCBwcm9jZXNzV2lyZWxlc3MpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gd2lmaVJlZnJlc2goKSB7IGlmICgheHhkaWFsb2dNb2RlKSBQdWxsV2lyZWxlc3MoKTsgfQ0KDQogICAgICAgIHZhciB4eFdpZmlTdGF0ZSA9IHsgMzogJ0Rpc2FibGVkJywgMzI3Njg6ICdFbmFibGVkIGluIFMwJywgMzI3Njk6ICdFbmFibGVkIGluIFMwLCBTeC9BQycgfTsNCiAgICAgICAgdmFyIHh4UmFkaW9TdGF0ZSA9IAl7IDI6ICdPbiwgQ29ubmVjdGVkJywgMzogJ09mZicsIDY6ICdPbiwgRGlzY29ubmVjdGVkJyB9Ow0KICAgICAgICB2YXIgeHhXaWZpQXV0aGVudGljYXRpb25NZXRob2Q9IHsgMTogJ090aGVyJywgMjogJ09wZW4nLCAzOiAnU2hhcmVkIEtleScsIDQ6ICdXUEEgUFNLJywgNTogJ1dQQSBJRUVFIDgwMi4xeCcsIDY6ICdXUEEyIFBTSycsIDc6ICdXUEEyIElFRUUgODAyLjF4JyB9Ow0KICAgICAgICB2YXIgeHhXaWZpRW5jcnlwdGlvbk1ldGhvZCA9IHsgMTogJ090aGVyJywgMjogJ1dFUCcsIDM6ICdUS0lQLVJDNCcsIDQ6ICdDQ01QLUFFUycsIDU6ICdOb25lJyB9OyAvLyBGb3IgMiAmIDUsIEF1dGhlbnRpY2F0aW9uTWV0aG9kIG11c3QgYmUgMiBvciAzLiBGb3IgMyAmIDQgQXV0aGVudGljYXRpb25NZXRob2QgbXVzdCBiZSA0LDUsNiBvciA3DQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1dpcmVsZXNzKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgeHhXaXJlbGVzcyA9IHJlc3BvbnNlczsgfSBlbHNlIHsgeHhXaXJlbGVzcyA9IHVuZGVmaW5lZDsgfQ0KICAgICAgICAgICAgdXBkYXRlU3lzdGVtU3RhdHVzKCk7DQogICAgICAgICAgICBzaG93V2lyZWxlc3NJbmZvKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93V2lyZWxlc3NJbmZvKCkgew0KICAgICAgICAgICAgaWYgKCF4eFdpcmVsZXNzKSByZXR1cm47DQogICAgICAgICAgICB2YXIgaSwgaiwgcyA9ICIiLCBzYywgeCA9ICI8YnI+PGgyPldpcmVsZXNzIFByb2ZpbGVzPC9oMj4iOw0KICAgICAgICAgICAgaWYgKCEoeHhXaXJlbGVzc1snQ0lNX1dpRmlQb3J0Q2FwYWJpbGl0aWVzJ10ucmVzcG9uc2UpKSByZXR1cm47DQoNCiAgICAgICAgICAgIC8vIFNob3cgV0lGSSBwcm9maWxlcyBzb3J0ZWQgYnkgcHJpb3JpdHkNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjIgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPldpcmVsZXNzIHByb2ZpbGVzIHRoYXQgSW50ZWwmcmVnOyBBTVQgd2lsbCB1c2UgZm9yIG5ldHdvcmsgY29ubmVjdGl2aXR5Ljxicj48YnI+IjsNCiAgICAgICAgICAgIHMgPSAwOw0KICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsNCiAgICAgICAgICAgICAgICBmb3IgKGogaW4geHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzKSB7DQogICAgICAgICAgICAgICAgICAgIHNjID0geHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzW2pdOw0KICAgICAgICAgICAgICAgICAgICBpZiAoc2NbJ0F1dGhlbnRpY2F0aW9uTWV0aG9kJ10gPT0gMSkgY29udGludWU7IC8vIFNraXAgIkVuZHBvaW50IFVzZXIgU2V0dGluZ3MiDQogICAgICAgICAgICAgICAgICAgIGlmIChzY1snUHJpb3JpdHknXSA9PSBpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93V2lmaURldGFpbHMoIiArIGogKyAiKT48ZGl2IHN0eWxlPWZsb2F0OnJpZ2h0PiIgKyBFc2NhcGVIdG1sKHNjWydTU0lEJ10pICsgIiwgIiArIHh4V2lmaUF1dGhlbnRpY2F0aW9uTWV0aG9kW3NjWydBdXRoZW50aWNhdGlvbk1ldGhvZCddXSArICIsICIgKyB4eFdpZmlFbmNyeXB0aW9uTWV0aG9kW3NjWydFbmNyeXB0aW9uTWV0aG9kJ11dICsgIiAmbmJzcDsgIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gQWRkQnV0dG9uMigiUmVtb3ZlIiwgIndpZmlSZW1vdmVCdXR0b24oXCIiICsgaiArICJcIikiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyBFc2NhcGVIdG1sKHNjWydFbGVtZW50TmFtZSddKSArICI8L2I+PC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHMrKzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChzID09IDApIHggKz0gJzxpPk5vIFdpcmVsZXNzIFByb2ZpbGVzIFByZXNlbnQ8L2k+PGJyPic7DQoNCiAgICAgICAgICAgIC8vIEVuZCBvZiB0YWJsZQ0KICAgICAgICAgICAgeCArPSAiPGJyPjx0ZCBjbGFzcz1yMj4iOw0KICAgICAgICAgICAgaWYgKHh4QWNjb3VudEFkbWluTmFtZSkgeCArPSBUYWJsZUVuZChBZGRCdXR0b24oIk5ldyBQcm9maWxlIiwgInNob3dXaWZpTmV3UHJvZmlsZSgpIikpOyBlbHNlIHggKz0gVGFibGVFbmQoJycpOw0KICAgICAgICAgICAgUUgoJ2lkX1RhYmxlV2lmaTInLCB4ICsgIjxicj4iKTsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgZnVuY3Rpb24gc2hvd1dpZmlTdGF0ZURsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBzID0gIiI7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4V2lmaVN0YXRlKSB7IHMgKz0gJzxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9ZDExIGlkPXdsJyArIGkgKyAnIHZhbHVlPScgKyBpICsgJyAnICsgKCh4eFdpcmVsZXNzWydDSU1fV2lGaVBvcnQnXS5yZXNwb25zZVsiRW5hYmxlZFN0YXRlIl0gPT0gaSk/ImNoZWNrZWQiOiIiKSArICc+JyArIHh4V2lmaVN0YXRlW2ldICsgJzxicj4nOyB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnV2lyZWxlc3MgU3RhdGUnLCAzLCB3aWZpU3RhdGVEbGcsIHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gd2lmaVN0YXRlRGxnKCkgeyBhbXRzdGFjay5DSU1fV2lGaVBvcnRfUmVxdWVzdFN0YXRlQ2hhbmdlKCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPWQxMV06Y2hlY2tlZCcpLnZhbHVlLCBudWxsLCBmdW5jdGlvbigpIHsgYW10c3RhY2suR2V0KCJDSU1fV2lGaVBvcnQiLCBmdW5jdGlvbihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgeyBpZiAoc3RhdHVzID09IDIwMCkgeyB4eFdpcmVsZXNzWydDSU1fV2lGaVBvcnQnXS5yZXNwb25zZSA9IHJlc3BvbnNlLkJvZHk7IHNob3dXaXJlbGVzc0luZm8oKTsgfSB9ICk7IH0gKTsgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dXaWZpRGV0YWlscyhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgaSwgc2MgPSB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbaF0sIHggPSAnPGRpdiBzdHlsZT10ZXh0LWFsaWduOmxlZnQ+JzsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJQcm9maWxlIE5hbWUiLCBFc2NhcGVIdG1sKHNjWydFbGVtZW50TmFtZSddKSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiU1NJRCIsIHNjWydTU0lEJ10pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkF1dGhlbnRpY2F0aW9uIiwgeHhXaWZpQXV0aGVudGljYXRpb25NZXRob2Rbc2NbJ0F1dGhlbnRpY2F0aW9uTWV0aG9kJ11dKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJFbmNyeXB0aW9uIiwgeHhXaWZpRW5jcnlwdGlvbk1ldGhvZFtzY1snRW5jcnlwdGlvbk1ldGhvZCddXSk7DQogICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiUHJpb3JpdHkiLCBzY1snUHJpb3JpdHknXSk7DQogICAgICAgICAgICB4ICs9ICI8L2Rpdj4iOw0KICAgICAgICAgICAgbWVzc2FnZWJveCgiV2lyZWxlc3MgUHJvZmlsZSIsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gd2lmaVJlbW92ZUJ1dHRvbihoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgc2MgPSB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbaF07DQogICAgICAgICAgICBRSCgnaWRfZGlhbG9nTWVzc2FnZScsICdSZW1vdmUgd2lyZWxlc3MgcHJvZmlsZSBcIicgKyBzY1siRWxlbWVudE5hbWUiXSArICdcIj8nKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMSwgIldpcmVsZXNzIFByb2ZpbGUiLCAzLCBmdW5jdGlvbiAoKSB7IHJlbW92ZVdpZmlCdXR0b25FeChoKSB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHJlbW92ZVdpZmlCdXR0b25FeChoKSB7DQogICAgICAgICAgICB2YXIgc2MgPSB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbaF07DQogICAgICAgICAgICBhbXRzdGFjay5EZWxldGUoJ0NJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncycsIHsgSW5zdGFuY2VJRDogc2NbJ0luc3RhbmNlSUQnXSB9LCByZW1vdmVXaWZpRW50cnlSZXNwb25zZSwgMCwgMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiByZW1vdmVXaWZpRW50cnlSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAobWV0aG9kY2hlY2socmVzcG9uc2UpKSByZXR1cm47DQogICAgICAgICAgICBhbXRzdGFjay5FbnVtKCJDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MiLCBmdW5jdGlvbihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsgaWYgKHN0YXR1cyA9PSAyMDApIHsgeHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzID0gcmVzcG9uc2VzOyBzaG93V2lyZWxlc3NJbmZvKCk7IH0gfSApOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1dpZmlOZXdQcm9maWxlKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgew0KICAgICAgICAgICAgICAgIHZhciB0ID0gMTsNCiAgICAgICAgICAgICAgICBmb3IgKGogaW4geHhXaXJlbGVzc1snQ0lNX1dpRmlFbmRwb2ludFNldHRpbmdzJ10ucmVzcG9uc2VzKSB7IGlmICh4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXNbal1bJ1ByaW9yaXR5J10gPT0gaSkgdCA9IDA7IH0NCiAgICAgICAgICAgICAgICBpZiAodCkgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPScrIGkgKyc+JysgaTsgfSAvLyBPcHRpb24gaXMgYSB0YWcgdGhhdCBpcyBzZWxmIGNsb3NpbmcuDQogICAgICAgICAgICB9DQogICAgICAgICAgICBRSCgnaWR4X2QxMnByaScsIHgpOw0KDQogICAgICAgICAgICBpZHhfZDEyYXV0aC52YWx1ZSA9IDY7DQogICAgICAgICAgICBpZHhfZDEyZW5jLnZhbHVlID0gNDsNCg0KICAgICAgICAgICAgaWR4X2QxMm5hbWUudmFsdWUgPSBpZHhfZDEyc3NpZC52YWx1ZSA9IGlkeF9kMTJwYXNzd29yZDEudmFsdWUgPSBpZHhfZDEycGFzc3dvcmQyLnZhbHVlID0gJyc7DQoNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTIsICJBZGQgV2lyZWxlc3MgUHJvZmlsZSIsIDMsIGZ1bmN0aW9uICgpIHsgYWRkV2lmaVByb2ZpbGUoKSB9KTsNCiAgICAgICAgICAgIHVwZGF0ZVdpZmlEaWFsb2coKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGFkZFdpZmlQcm9maWxlKCkgew0KICAgICAgICAgICAgYW10c3RhY2suQU1UX1dpRmlQb3J0Q29uZmlndXJhdGlvblNlcnZpY2VfQWRkV2lGaVNldHRpbmdzKA0KCQkJCXsNCgkJCQkgICAgJ19fcGFyYW1ldGVyVHlwZSc6ICdyZWZlcmVuY2UnLA0KCQkJCSAgICAnX19yZXNvdXJjZVVyaSc6IGFtdHN0YWNrLkNvbXBsZXRlTmFtZSgnQ0lNX1dpRmlFbmRwb2ludCcpLA0KCQkJCSAgICAnTmFtZSc6ICdXaUZpIEVuZHBvaW50IDAnDQoJCQkJfSwgew0KCQkJCSAgICAnX19wYXJhbWV0ZXJUeXBlJzogJ2luc3RhbmNlJywNCgkJCQkgICAgJ19fbmFtZXNwYWNlJzogYW10c3RhY2suQ29tcGxldGVOYW1lKCdDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnKSwNCgkJCQkgICAgJ0VsZW1lbnROYW1lJzogaWR4X2QxMm5hbWUudmFsdWUsDQoJCQkJICAgICdJbnN0YW5jZUlEJzogJ0ludGVsKHIpIEFNVDpXaUZpIEVuZHBvaW50IFNldHRpbmdzICcgKyBpZHhfZDEybmFtZS52YWx1ZSwNCgkJCQkgICAgJ0F1dGhlbnRpY2F0aW9uTWV0aG9kJzogaWR4X2QxMmF1dGgudmFsdWUsDQoJCQkJICAgICdFbmNyeXB0aW9uTWV0aG9kJzogaWR4X2QxMmVuYy52YWx1ZSwNCgkJCQkgICAgJ1NTSUQnOiBpZHhfZDEyc3NpZC52YWx1ZSwNCgkJCQkgICAgJ1ByaW9yaXR5JzogaWR4X2QxMnByaS52YWx1ZSwNCgkJCQkgICAgJ1BTS1Bhc3NQaHJhc2UnOiBpZHhfZDEycGFzc3dvcmQxLnZhbHVlDQoJCQkJfSwNCgkJCQludWxsLCBudWxsLCBudWxsLCByZW1vdmVXaWZpRW50cnlSZXNwb25zZQ0KCQkJKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVdpZmlEaWFsb2coKSB7DQogICAgICAgICAgICB2YXIgciA9IHRydWU7DQogICAgICAgICAgICB2YXIgYSA9IGlkeF9kMTJhdXRoLnZhbHVlOw0KICAgICAgICAgICAgdmFyIGUgPSBpZHhfZDEyZW5jLnZhbHVlOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmUyJywgYSA8IDQpOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmUzJywgYSA+IDMpOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmU0JywgYSA+IDMpOw0KICAgICAgICAgICAgUVYoJ2lkX2QxMmU1JywgYSA8IDQpOw0KICAgICAgICAgICAgaWYgKGEgPCA0ICYmIChlID09IDMgfHwgZSA9PSA0KSkgeyBpZHhfZDEyZW5jLnZhbHVlID0gMjsgfQ0KICAgICAgICAgICAgaWYgKGEgPiAzICYmIChlID09IDIgfHwgZSA9PSA1KSkgeyBpZHhfZDEyZW5jLnZhbHVlID0gMzsgfQ0KDQogICAgICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgcHJvZmlsZSB3aXRoIHRoaXMgbmFtZQ0KICAgICAgICAgICAgZm9yICh2YXIgaiBpbiB4eFdpcmVsZXNzWydDSU1fV2lGaUVuZHBvaW50U2V0dGluZ3MnXS5yZXNwb25zZXMpIHsgaWYgKHh4V2lyZWxlc3NbJ0NJTV9XaUZpRW5kcG9pbnRTZXR0aW5ncyddLnJlc3BvbnNlc1tqXVsnRWxlbWVudE5hbWUnXSA9PSBpZHhfZDEybmFtZS52YWx1ZSkgeyByID0gZmFsc2U7IH0gfQ0KDQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgciA9PSB0cnVlICYmIChpZHhfZDEybmFtZS52YWx1ZS5sZW5ndGggPiAwKSAmJiAoaWR4X2QxMnNzaWQudmFsdWUubGVuZ3RoID4gMCkgJiYgKGlkeF9kMTJwYXNzd29yZDEudmFsdWUubGVuZ3RoID4gNykgJiYgKGlkeF9kMTJwYXNzd29yZDEudmFsdWUgPT0gaWR4X2QxMnBhc3N3b3JkMi52YWx1ZSkpOw0KICAgICAgICB9DQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEhBUkRXQVJFIElORk9STUFUSU9OIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbEhhcmR3YXJlKCkgew0KICAgICAgICAgICAgYW10c3RhY2suQmF0Y2hFbnVtKCIiLCBbIipDSU1fQ29tcHV0ZXJTeXN0ZW1QYWNrYWdlIiwgIkNJTV9TeXN0ZW1QYWNrYWdpbmciLCAiKkNJTV9DaGFzc2lzIiwgIkNJTV9DaGlwIiwgIipDSU1fQ2FyZCIsICIqQ0lNX0JJT1NFbGVtZW50IiwgIkNJTV9Qcm9jZXNzb3IiLCAiQ0lNX1BoeXNpY2FsTWVtb3J5IiwgIkNJTV9NZWRpYUFjY2Vzc0RldmljZSIsICJDSU1fUGh5c2ljYWxQYWNrYWdlIl0sIHByb2Nlc3NIYXJkd2FyZSk7DQogICAgICAgICAgICBhbXRGaXJzdFB1bGwgfD0gMTsgLy8gU2V0IHRoZSBoYXJkd2FyZSBpbmZvIGJpdCBvbiwgaW5kaWNhdGVzIHdlIGFyZSBwdWxsaW5nIHRoaXMgaW5mb3JtYXRpb24uDQogICAgICAgIH0NCg0KICAgICAgICAvLyBodHRwOi8vd3d3LmRtdGYub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvc3RhbmRhcmRzL2RvY3VtZW50cy9EU1AwMTM0XzIuNy4xLnBkZg0KICAgICAgICB2YXIgRE1URkNQVVN0YXR1cyA9IFsiVW5rbm93biIsICJFbmFibGVkIiwgIkRpc2FibGVkIGJ5IFVzZXIiLCAiRGlzYWJsZWQgQnkgQklPUyAoUE9TVCBFcnJvcikiLCAiSWRsZSIsICJPdGhlciJdOw0KICAgICAgICB2YXIgRE1URk1lbVR5cGUgPSBbIlVua25vd24iLCAiT3RoZXIiLCAiRFJBTSIsICJTeW5jaHJvbm91cyBEUkFNIiwgIkNhY2hlIERSQU0iLCAiRURPIiwgIkVEUkFNIiwgIlZSQU0iLCAiU1JBTSIsICJSQU0iLCAiUk9NIiwgIkZsYXNoIiwgIkVFUFJPTSIsICJGRVBST00iLCAiRVBST00iLCAiQ0RSQU0iLCAiM0RSQU0iLCAiU0RSQU0iLCAiU0dSQU0iLCAiUkRSQU0iLCAiRERSIiwgIkREUi0yIiwgIkJSQU0iLCAiRkItRElNTSIsICJERFIzIiwgIkZCRDIiLCAiRERSNCIsICJMUEREUiIsICJMUEREUjIiLCAiTFBERFIzIiwgIkxQRERSNCJdOw0KICAgICAgICB2YXIgRE1URk1lbUZvcm1GYWN0b3IgPSBbJycsICdPdGhlcicsJ1Vua25vd24nLCdTSU1NJywnU0lQJywnQ2hpcCcsJ0RJUCcsJ1pJUCcsJ1Byb3ByaWV0YXJ5IENhcmQnLCdESU1NJywnVFNPUCcsJ1JvdyBvZiBjaGlwcycsJ1JJTU0nLCdTT0RJTU0nLCdTUklNTScsJ0ZCLURJTSddOw0KICAgICAgICB2YXIgRE1URlByb2NGYW1pbGx5ID0geyAvLyBQYWdlIDQ2IG9mIERNVEYgZG9jdW1lbnQNCiAgICAgICAgICAgIDE5MTogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBEdW8gUHJvY2Vzc29yJywNCiAgICAgICAgICAgIDE5MjogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBTb2xvIHByb2Nlc3NvcicsDQogICAgICAgICAgICAxOTM6ICdJbnRlbCZyZWc7IENvcmUmdHJhZGU7IDIgRXh0cmVtZSBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk0OiAnSW50ZWwmcmVnOyBDb3JlJnRyYWRlOyAyIFF1YWQgcHJvY2Vzc29yJywNCiAgICAgICAgICAgIDE5NTogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBFeHRyZW1lIG1vYmlsZSBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk2OiAnSW50ZWwmcmVnOyBDb3JlJnRyYWRlOyAyIER1byBtb2JpbGUgcHJvY2Vzc29yJywNCiAgICAgICAgICAgIDE5NzogJ0ludGVsJnJlZzsgQ29yZSZ0cmFkZTsgMiBTb2xvIG1vYmlsZSBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk4OiAnSW50ZWwmcmVnOyBDb3JlJnRyYWRlOyBpNyBwcm9jZXNzb3InLA0KICAgICAgICAgICAgMTk5OiAnRHVhbC1Db3JlIEludGVsJnJlZzsgQ2VsZXJvbiZyZWc7IHByb2Nlc3NvcicgfTsNCg0KICAgICAgICB2YXIgSGFyZHdhcmVJbnZlbnRvcnk7DQogICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NIYXJkd2FyZShzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSByZXR1cm47DQoNCiAgICAgICAgICAgIHZhciBpLCB4ID0gIjx0YWJsZSBjbGFzcz1sb2cxIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4PiI7DQogICAgICAgICAgICBIYXJkd2FyZUludmVudG9yeSA9IHJlc3BvbnNlczsNCiAgICAgICAgICAgIFFWKCdnbzInLCB0cnVlKTsgLy8gU2hvdyAiSGFyZHdhcmUgSW5mb3JtYXRpb24iIG9uIGxlZnQgcGFuZWwNCg0KDQogICAgICAgICAgICB4ICs9IFRhYmxlRW5kKCI8ZGl2PiZuYnNwOyIgKyBBZGRSZWZyZXNoQnV0dG9uKCJQdWxsSGFyZHdhcmUoMSkiKSArIEFkZEJ1dHRvbigiU2F2ZS4uLiIsICJTYXZlSGFyZHdhcmVMb2coKSIpICsgJyBIYXJkd2FyZSBpbmZvcm1hdGlvbiBpcyBnYXRoZXJlZCBhdCBzeXN0ZW0gYm9vdCB0aW1lLicpOw0KDQogICAgICAgICAgICB2YXIgYmEgPSByZXNwb25zZXNbJ0NJTV9DaGFzc2lzJ10ucmVzcG9uc2U7DQogICAgICAgICAgICB2YXIgYmIgPSByZXNwb25zZXNbJ0NJTV9DYXJkJ10ucmVzcG9uc2U7DQogICAgICAgICAgICB2YXIgdiA9IHJlc3BvbnNlc1snQ0lNX0JJT1NFbGVtZW50J10ucmVzcG9uc2VbIlNvZnR3YXJlRWxlbWVudElEIl07DQogICAgICAgICAgICANCiAgICAgICAgICAgIHggKz0gIjxicj48aDI+UGxhdGZvcm08L2gyPiI7DQogICAgICAgICAgICB4ICs9IEZ1bGxUYWJsZSh7IkNvbXB1dGVyIG1vZGVsIjpiYVsiTW9kZWwiXSwgIk1hbnVmYWN0dXJlciI6YmFbIk1hbnVmYWN0dXJlciJdLCAiVmVyc2lvbiI6YmFbIlZlcnNpb24iXSwgIlNlcmlhbCBudW1iZXIiOmJhWyJTZXJpYWxOdW1iZXIiXSwgIlN5c3RlbSBJRCI6Z3VpZFRvU3RyKHJlc3BvbnNlc1snQ0lNX1N5c3RlbVBhY2thZ2luZyddLnJlc3BvbnNlc1swXVsiUGxhdGZvcm1HVUlEIl0pLnRvTG93ZXJDYXNlKCl9LCAnJyk7DQoNCiAgICAgICAgICAgIHggKz0gIjxicj48aDI+QmFzZWJvYXJkPC9oMj4iOw0KICAgICAgICAgICAgeCArPSBGdWxsVGFibGUoeyAiTWFudWZhY3R1cmVyIjpiYlsiTWFudWZhY3R1cmVyIl0sICJQcm9kdWN0IG5hbWUiOmJiWyJNb2RlbCJdLCAiVmVyc2lvbiI6YmJbIlZlcnNpb24iXSwgIlNlcmlhbCBudW1iZXIiOmJiWyJTZXJpYWxOdW1iZXIiXSwgIkFzc2V0IHRhZyI6YmJbIlRhZyJdLCAiUmVwbGFjZWFibGU/IjooYmJbIkNhbkJlRlJVZWQiXT09dHJ1ZSk/J1llcyc6J05vJyB9LCcnKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgeCArPSAiPGJyPjxoMj5CSU9TPC9oMj4iOw0KICAgICAgICAgICAgeCArPSBGdWxsVGFibGUoeyJWZW5kb3IiOnJlc3BvbnNlc1snQ0lNX0JJT1NFbGVtZW50J10ucmVzcG9uc2VbIk1hbnVmYWN0dXJlciJdLCAiVmVyc2lvbiI6diwgIlJlbGVhc2UgZGF0ZSI6bmV3IERhdGUocmVzcG9uc2VzWydDSU1fQklPU0VsZW1lbnQnXS5yZXNwb25zZVsiUmVsZWFzZURhdGUiXVsnRGF0ZXRpbWUnXSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbicsIHt0aW1lWm9uZTonVVRDJ30pfSwnJyk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KICAgICAgICAgICAgZm9yIChpIGluIHJlc3BvbnNlc1snQ0lNX1Byb2Nlc3NvciddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgIHZhciBwID0gcmVzcG9uc2VzWydDSU1fUHJvY2Vzc29yJ10ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgIHZhciBxID0gcmVzcG9uc2VzWydDSU1fQ2hpcCddLnJlc3BvbnNlc1tpXTsgLy8gVGhpcyBpcyBhIHNob3J0Y3V0LCB3ZSBhc3N1bWUgdGhhdCB0aGUgZmlyc3QgZW50cmllcyBpbiBDSU1fQ2hpcCBhcmUgdGhlIHByb2Nlc3NvcnMsIGluIHRoZSBzYW1lIG9yZGVyLg0KICAgICAgICAgICAgICAgIHggKz0gIjxoMj5Qcm9jZXNzb3IgIiArIChwYXJzZUludChpKSArIDEpICsgIjwvaDI+IjsNCiAgICAgICAgICAgICAgICB4ICs9IEZ1bGxUYWJsZSh7Ik1hbnVmYWN0dXJlciI6dHJhZGVtYXJrcyhxWyJNYW51ZmFjdHVyZXIiXSksICJGYW1pbHkiOkRNVEZQcm9jRmFtaWxseVtwWyJGYW1pbHkiXV0sICJWZXJzaW9uIjp0cmFkZW1hcmtzKHFbIlZlcnNpb24iXSksICJNYXhpbXVtIHNvY2tldCBzcGVlZCI6cFsiTWF4Q2xvY2tTcGVlZCJdICsgIiBNSHoiLCAiU3RhdHVzIjpETVRGQ1BVU3RhdHVzW3BbIkNQVVN0YXR1cyJdXX0sJycpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAiPGJyPiI7DQoNCiAgICAgICAgICAgIGZvciAoaSBpbiByZXNwb25zZXNbJ0NJTV9QaHlzaWNhbE1lbW9yeSddLnJlc3BvbnNlcykgew0KICAgICAgICAgICAgICAgIHZhciBtID0gcmVzcG9uc2VzWydDSU1fUGh5c2ljYWxNZW1vcnknXS5yZXNwb25zZXNbaV07DQogICAgICAgICAgICAgICAgeCArPSAiPGgyPk1lbW9yeSBNb2R1bGUgIiArICgraSArIDEpICsgIjwvaDI+IjsNCiAgICAgICAgICAgICAgICB4ICs9IEZ1bGxUYWJsZSh7IkJhbmsgTGFiZWwiOm1bIkJhbmtMYWJlbCJdLCAiTWFudWZhY3R1cmVyIjptWyJNYW51ZmFjdHVyZXIiXSwgIlNlcmlhbCBOdW1iZXIiOm1bIlNlcmlhbE51bWJlciJdLCAiU2l6ZSI6cGFyc2VJbnQobVsiQ2FwYWNpdHkiXSAvIDB4MTAwMDAwKSArICIgTUIiLCAiRm9ybSBmYWN0b3IiOkRNVEZNZW1Gb3JtRmFjdG9yW21bIkZvcm1GYWN0b3IiXV0sICJUeXBlIjpETVRGTWVtVHlwZVttWyJNZW1vcnlUeXBlIl1dLCAiQXNzZXQgdGFnIjptWyJUYWciXSwgIlBhcnQgbnVtYmVyIjptWyJQYXJ0TnVtYmVyIl19LCcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KDQogICAgICAgICAgICBmb3IgKGkgaW4gcmVzcG9uc2VzWydDSU1fTWVkaWFBY2Nlc3NEZXZpY2UnXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgbSA9IHJlc3BvbnNlc1snQ0lNX01lZGlhQWNjZXNzRGV2aWNlJ10ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgIHZhciBuID0gcmVzcG9uc2VzWydDSU1fUGh5c2ljYWxQYWNrYWdlJ10ucmVzcG9uc2VzWytpICsgMV07IC8vIFRoaXMgaXMgYSBzaG9ydGN1dCwgd2UgYXNzdW1lIENJTV9QaHlzaWNhbFBhY2thZ2UgaXMgdGhlIHNhbWUgYXMgQ0lNX01lZGlhQWNjZXNzRGV2aWNlIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IGVudHJ5Lg0KICAgICAgICAgICAgICAgIHggKz0gIjxoMj5TdG9yYWdlIE1lZGlhICIgKyAocGFyc2VJbnQoaSkgKyAxKSArICI8L2gyPiI7DQogICAgICAgICAgICAgICAgeCArPSBGdWxsVGFibGUoeyJNb2RlbCI6blsnTW9kZWwnXSwiU2VyaWFsIG51bWJlciI6KG5bJ1NlcmlhbE51bWJlciddPT0nJz8nVW5rbm93bic6blsnU2VyaWFsTnVtYmVyJ10pLCAiU2l6ZSI6cGFyc2VJbnQoTWF0aC5yb3VuZChtWyJNYXhNZWRpYVNpemUiXSAqIDEwMDAgLyAweDEwMDAwMCkpICsgIiBNQiJ9LCcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gIjxicj4iOw0KDQogICAgICAgICAgICBRSCgnaWRfVGFibGVTeXNJbmZvJywgeCk7DQogICAgICAgICAgICB1cGRhdGVTeXN0ZW1TdGF0dXMoKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgZnVuY3Rpb24gU2F2ZUhhcmR3YXJlTG9nKCkgew0KICAgICAgICAgICAgaWYgKCF4eGRpYWxvZ01vZGUgJiYgSGFyZHdhcmVJbnZlbnRvcnkpIFNhdmVKc29uRmlsZSgnSW50ZWxBbXRIYXJkd2FyZScsICdoYXJkd2FyZScsICdJbnRlbCBBTVQgSGFyZHdhcmUgSW5mb3JtYXRpb24nLCBIYXJkd2FyZUludmVudG9yeSk7DQogICAgICAgIH0NCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIFBPV0VSIFBPTElDWQ0KICAgICAgICAvLw0KDQogICAgICAgIHZhciBBbXRTeXN0ZW1Qb3dlclNjaGVtZXMgPSBudWxsOw0KICAgICAgICBmdW5jdGlvbiBQdWxsUG93ZXJQb2xpY3koKSB7IGFtdHN0YWNrLkVudW0oIkFNVF9TeXN0ZW1Qb3dlclNjaGVtZSIsIHBvd2VyUG9saWN5UmVzcG9uc2UpOyB9DQogICAgICAgIGZ1bmN0aW9uIHBvd2VyUG9saWN5UmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsgQW10U3lzdGVtUG93ZXJTY2hlbWVzID0gcmVzcG9uc2U7IHVwZGF0ZVN5c3RlbVN0YXR1cygpOyB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1Bvd2VyUG9saWN5RGxnKGN1cnJlbnRndWlkKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgcyA9ICIiOw0KDQogICAgICAgICAgICAvLyBOb3cgZmluZCB0aGUgbmFtZSBvZiB0aGUgcG93ZXIgc2NoZW1hIGluIHRoZSBBTVRfU3lzdGVtUG93ZXJTY2hlbWUgdGFibGUNCiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgQW10U3lzdGVtUG93ZXJTY2hlbWVzLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkID0gKChBbXRTeXN0ZW1Qb3dlclNjaGVtZXNbal1bJ1NjaGVtZUdVSUQnXSA9PSBjdXJyZW50Z3VpZCk/JyBjaGVja2VkJzonJyk7DQogICAgICAgICAgICAgICAgcyArPSAnPGlucHV0IHR5cGU9cmFkaW8gbmFtZT1wb3dlcnBvbGljeSB2YWx1ZT1cIicgKyBBbXRTeXN0ZW1Qb3dlclNjaGVtZXNbal1bJ0luc3RhbmNlSUQnXSArICJcIiAiICsgc2VsZWN0ZWQgKyAnPicgKyBBbXRTeXN0ZW1Qb3dlclNjaGVtZXNbal1bJ0Rlc2NyaXB0aW9uJ10gKyAnPGJyPic7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdJbnRlbCZyZWc7IEFNVCBQb3dlciBQb2xpY3knLCAzLCBzaG93UG93ZXJQb2xpY3lEbGdPaywgcyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UG93ZXJQb2xpY3lEbGdPaygpIHsNCiAgICAgICAgICAgIHZhciBpZCA9IG51bGwsIGkgPSAwLCBlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0Jyk7DQogICAgICAgICAgICBmb3IgKDsgaSA8IGUubGVuZ3RoOyBpKyspIHsgaWYgKGVbaV0ubmFtZSA9PSAncG93ZXJwb2xpY3knICYmIGVbaV0uY2hlY2tlZCkgeyBpZCA9IGVbaV0udmFsdWU7IH0gfQ0KICAgICAgICAgICAgYW10c3RhY2suQU1UX1N5c3RlbVBvd2VyU2NoZW1lX1NldFBvd2VyU2NoZW1lKHNob3dQb3dlclBvbGljeURsZ09rRG9uZSwgaWQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1Bvd2VyUG9saWN5RGxnT2tEb25lKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IGlmIChzdGF0dXMgPT0gMjAwKSBQdWxsU3lzdGVtU3RhdHVzKCk7IH0NCg0KICAgICAgICAvLw0KICAgICAgICAvLyBVU0VSIElORk9STUFUSU9OIFBBTkVMDQogICAgICAgIC8vDQoNCiAgICAgICAgdmFyIHh4QWNjb3VudEFkbWluTmFtZSwgeHhBY2NvdW50UmVhbG1JbmZvLCB4eEFjY291bnRFbmFibGVkSW5mbyA9IHt9LCB4eEFjY291bnRGZXRjaCwgc2hvd0hpZGRlbkFjY291bnRzID0gZmFsc2U7DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFVzZXJJbmZvKCkgew0KICAgICAgICAgICAgeHhBY2NvdW50RmV0Y2ggPSAxOw0KICAgICAgICAgICAgZGVsZXRlIHh4QWNjb3VudEFkbWluTmFtZTsNCiAgICAgICAgICAgIHh4QWNjb3VudFJlYWxtSW5mbyA9IHt9Ow0KICAgICAgICAgICAgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX0dldEFkbWluQWNsRW50cnkoZ2V0QWRtaW5BY2xFbnRyeVJlc3BvbnNlKTsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9FbnVtZXJhdGVVc2VyQWNsRW50cmllcygxLCBlbnVtZXJhdGVVc2VyQWNsRW50cmllc1Jlc3BvbnNlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGdldEFkbWluQWNsRW50cnlSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHJldHVybjsNCiAgICAgICAgICAgIHh4QWNjb3VudFJlYWxtSW5mb1stMV0gPSB7ICdBY2Nlc3NQZXJtaXNzaW9uJzogOTk5LCAnRGlnZXN0VXNlcm5hbWUnOiByZXNwb25zZS5Cb2R5WyJVc2VybmFtZSJdLCAnUmVhbG1zJzpudWxsIH07DQogICAgICAgICAgICB4eEFjY291bnRBZG1pbk5hbWUgPSByZXNwb25zZS5Cb2R5WyJVc2VybmFtZSJdOw0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudHMoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVudW1lcmF0ZVVzZXJBY2xFbnRyaWVzUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSByZXR1cm47DQogICAgICAgICAgICAvL2lmIChlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgcmV0dXJuOw0KICAgICAgICAgICAgbWV0aG9kY2hlY2socmVzcG9uc2UpOw0KICAgICAgICAgICAgUVYoJ2dvMTEnLCB0cnVlKTsgLy8gU2hvdyAiVXNlciBBY2NvdW50cyIgb24gbGVmdCBwYW5lbA0KICAgICAgICAgICAgeHhBY2NvdW50RmV0Y2ggPSByZXNwb25zZS5Cb2R5WyJIYW5kbGVzIl0ubGVuZ3RoOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiByZXNwb25zZS5Cb2R5WyJIYW5kbGVzIl0pIHsNCiAgICAgICAgICAgICAgICB2YXIgaCA9IHJlc3BvbnNlLkJvZHlbIkhhbmRsZXMiXVtpXTsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfR2V0QWNsRW5hYmxlZFN0YXRlKGgsIGdldEFjbEVuYWJsZWRTdGF0ZVJlc3BvbnNlLCBoKTsNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfR2V0VXNlckFjbEVudHJ5RXgoaCwgZ2V0VXNlckFjbEVudHJ5RXhSZXNwb25zZSwgaCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICB1cGRhdGVBY2NvdW50cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZ2V0VXNlckFjbEVudHJ5RXhSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICB4eEFjY291bnRGZXRjaC0tOw0KICAgICAgICAgICAgLy9pZiAoZXJyY2hlY2soc3RhdHVzLCBzdGFjaykpIHJldHVybjsNCiAgICAgICAgICAgIC8vbWV0aG9kY2hlY2socmVzcG9uc2UpOw0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgLy8gU29tZXRpbWVzIEludGVsIEFNVCB3aWxsIGp1c3QgZnJlYWsgb3V0IG9uIHRoaXMgY2FsbCwgaWYgaXQncyB0aGUgY2FzZSwganVzdCBjYXJyeSBvbi4NCiAgICAgICAgICAgICAgICByZXNwb25zZS5Cb2R5WyJIYW5kbGUiXSA9IHRhZzsNCiAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLkJvZHlbIlJlYWxtcyJdKSByZXNwb25zZS5Cb2R5WyJSZWFsbXMiXSA9IFtdOw0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KHJlc3BvbnNlLkJvZHlbIlJlYWxtcyJdKSkgcmVzcG9uc2UuQm9keVsiUmVhbG1zIl0gPSBbcmVzcG9uc2UuQm9keVsiUmVhbG1zIl1dOyAvLyBJZiAiUmVhbG1zIiBpcyBub3QgYW4gYXJyYXksIGl0J3MgYmVjYXVzZSBpdCdzIGp1c3Qgb25lIHJlYWxtLiBGaXggaXMgc28gaXQncyBhbiBhcnJheSBvZiBvbmUuDQogICAgICAgICAgICAgICAgeHhBY2NvdW50UmVhbG1JbmZvW3RhZ10gPSByZXNwb25zZS5Cb2R5Ow0KICAgICAgICAgICAgICAgIHVwZGF0ZUFjY291bnRzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBnZXRBY2xFbmFibGVkU3RhdGVSZXNwb25zZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICAvL2lmIChlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgcmV0dXJuOw0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgLy8gU29tZXRpbWVzIEludGVsIEFNVCB3aWxsIGp1c3QgZnJlYWsgb3V0IG9uIHRoaXMgY2FsbCwgaWYgaXQncyB0aGUgY2FzZSwganVzdCBjYXJyeSBvbi4NCiAgICAgICAgICAgICAgICB4eEFjY291bnRFbmFibGVkSW5mb1t0YWddID0gcmVzcG9uc2UuQm9keTsNCiAgICAgICAgICAgICAgICB1cGRhdGVBY2NvdW50cygpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2V0QWNsRW5hYmxlZFN0YXRlUmVzcG9uc2Uoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKGVycmNoZWNrKHN0YXR1cywgc3RhY2spKSByZXR1cm47DQogICAgICAgICAgICBtZXRob2RjaGVjayhyZXNwb25zZSk7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfR2V0QWNsRW5hYmxlZFN0YXRlKHRhZywgZ2V0QWNsRW5hYmxlZFN0YXRlUmVzcG9uc2UsIHRhZyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1cGRhdGVBY2NvdW50cygpIHsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRGZXRjaCA+IDApIHJldHVybjsNCiAgICAgICAgICAgIHZhciB4ID0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSB0aGUgSW50ZWwmcmVnOyBBTVQgdXNlciBhY2NvdW50cyBmb3IgdGhpcyBjb21wdXRlci48YnI+PGJyPiI7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4QWNjb3VudFJlYWxtSW5mbykgew0KICAgICAgICAgICAgICAgIHZhciByID0geHhBY2NvdW50UmVhbG1JbmZvW2ldLCBuYW1lLCBoaWRkZW4gPSBmYWxzZSwgc3RhdGUgPSAwOw0KICAgICAgICAgICAgICAgIGlmIChyWyJEaWdlc3RVc2VybmFtZSJdKSB7IG5hbWUgPSByWyJEaWdlc3RVc2VybmFtZSJdOyBoaWRkZW4gPSAobmFtZVswXSA9PSAnJCcgJiYgbmFtZVsxXSA9PSAnJCcpOyB9IGVsc2UgeyBuYW1lID0gR2V0U2lkU3RyaW5nKGF0b2IoclsiS2VyYmVyb3NVc2VyU2lkIl0pKTsgfQ0KICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRFbmFibGVkSW5mb1tpXSAmJiBuYW1lICE9ICckJE9zQWRtaW4nKSB7IHN0YXRlID0gKHh4QWNjb3VudEVuYWJsZWRJbmZvW2ldWydFbmFibGVkJ10gPT0gdHJ1ZSk/MToyOyB9DQogICAgICAgICAgICAgICAgaWYgKHNob3dIaWRkZW5BY2NvdW50cyB8fCAhaGlkZGVuKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciByYiA9ICIiOw0KICAgICAgICAgICAgICAgICAgICBpZiAoclsiQWNjZXNzUGVybWlzc2lvbiJdICE9IDk5OSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlID09IDIpIHsgcmIgKz0gIkRpc2FibGVkLCAiOyB9DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmMgPSAwOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHJbIlJlYWxtcyJdKSB7IGlmIChhbXRzdGFjay5SZWFsbU5hbWVzW3JbIlJlYWxtcyJdW2ldXSAhPSAnJykgeyByYysrOyB9IH0gLy8gQ291bnQgb25seSByZWFsbXMgdGhhdCBoYXZlIGEgbmFtZSwgcmVtb3ZpbmcgcmVzZXJ2ZWQgcmVhbG1zLg0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJbIlJlYWxtcyJdLmluZGV4T2YoMjApID49IDApIHJiICs9ICJBdWRpdG9yLCAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJbIlJlYWxtcyJdLmluZGV4T2YoMykgPj0gMCkgeyByYiArPSAiQWRtaW5pc3RyYXRvciI7IH0gZWxzZSB7IGlmIChyYyA9PSAxKSB7IHJiICs9ICIxIHJlYWxtIjsgfSBlbHNlIHsgcmIgKz0gcmMgKyAiIHJlYWxtcyI7IH0gfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgcmIgKz0gIkFkbWluaXN0cmF0b3IiOw0KICAgICAgICAgICAgICAgICAgICAgICAgclsiSGFuZGxlIl0gPSAtMTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93VXNlckRldGFpbHMoIiArIHJbIkhhbmRsZSJdICsgIik+PGRpdiBzdHlsZT1mbG9hdDpyaWdodD4iOw0KICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPiAwICYmIHh4QWNjb3VudEFkbWluTmFtZSkgeCArPSAiICIgKyBBZGRCdXR0b24yKChzdGF0ZSA9PSAxPydEaXNhYmxlJzonRW5hYmxlJyksICJjaGFuZ2VBY2NvdW50U3RhdGVCdXR0b24oZXZlbnQsIiArIHJbIkhhbmRsZSJdICsgIiwiICsgc3RhdGUgKyAiKSIpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoIWhpZGRlbiAmJiB4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gIiAiICsgQWRkQnV0dG9uMigiRWRpdC4uLiIsICJjaGFuZ2VBY2NvdW50QnV0dG9uKGV2ZW50LCIgKyByWyJIYW5kbGUiXSArICIpIik7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4O3dpZHRoOjMzMHB4O2Zsb2F0OmxlZnQ7b3ZlcmZsb3cteDpoaWRkZW4gdGl0bGU9JyIgKyBuYW1lICsgIic+PGI+IiArIG5hbWUgKyAiPC9iPjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PiIgKyByYiArICI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHZhciB5ID0gIjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ7bWFyZ2luLXJpZ2h0OjhweD48YSB0aXRsZT0nVG9nZ2xlIGhpZGRlbiBhY2NvdW50cycgc3R5bGU9Y29sb3I6Z3JheTtjdXJzb3I6cG9pbnRlciBvbmNsaWNrPXRvZ2dsZUFjY291bnRCdXR0b24oKT4iICsgKHNob3dIaWRkZW5BY2NvdW50cz8nJiN4MjVCMjsnOicmI3gyNUJDOycpICsgIjwvYT48L2Rpdj48ZGl2PiZuYnNwOyIgKyBBZGRSZWZyZXNoQnV0dG9uKCJ4eEFjY291bnRGZXRjaD05OTk7UHVsbFVzZXJJbmZvKCkiKTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHkgKz0gQWRkQnV0dG9uKCJOZXcgQWNjb3VudCIsICJuZXdBY2NvdW50QnV0dG9uKCkiKTsNCiAgICAgICAgICAgIHggKz0gIjxicj48dGQgY2xhc3M9cjE+IiArIFRhYmxlRW5kKHkgKyAiPC9kaXY+Iik7DQogICAgICAgICAgICBRSCgnaWRfVGFibGVVc2VyQWNjb3VudHMnLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHRvZ2dsZUFjY291bnRCdXR0b24oKSB7DQogICAgICAgICAgICBzaG93SGlkZGVuQWNjb3VudHMgPSAhc2hvd0hpZGRlbkFjY291bnRzOw0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudHMoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHJlbW92ZVVzZXJBY2xFbnRyeVJlc3BvbnNlKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzLCB0YWcpIHsNCiAgICAgICAgICAgIGlmIChtZXRob2RjaGVjayhyZXNwb25zZSkpIHJldHVybjsNCiAgICAgICAgICAgIFB1bGxVc2VySW5mbygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2hhbmdlQWNjb3VudFN0YXRlQnV0dG9uKGUsIGgsIHMpIHsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9BdXRob3JpemF0aW9uU2VydmljZV9TZXRBY2xFbmFibGVkU3RhdGUoaCwgKHM9PTE/ZmFsc2U6dHJ1ZSksIHNldEFjbEVuYWJsZWRTdGF0ZVJlc3BvbnNlLCBoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNoYW5nZUFjY291bnRCdXR0b24oZSwgaCkgew0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdXBkYXRlUmVhbG1zKHh4QWNjb3VudFJlYWxtSW5mb1toXVsiUmVhbG1zIl0pOw0KICAgICAgICAgICAgZDJ1c2VybmFtZS52YWx1ZSA9IHh4QWNjb3VudFJlYWxtSW5mb1toXVsiRGlnZXN0VXNlcm5hbWUiXSA/IHh4QWNjb3VudFJlYWxtSW5mb1toXVsiRGlnZXN0VXNlcm5hbWUiXSA6IEdldFNpZFN0cmluZyhhdG9iKHh4QWNjb3VudFJlYWxtSW5mb1toXVsiS2VyYmVyb3NVc2VyU2lkIl0pKTsNCiAgICAgICAgICAgIGQycGFzc3dvcmQxLnZhbHVlID0gZDJwYXNzd29yZDIudmFsdWUgPSAnJzsNCiAgICAgICAgICAgIGQycGVybWlzc2lvbi52YWx1ZSA9IHh4QWNjb3VudFJlYWxtSW5mb1toXVsiQWNjZXNzUGVybWlzc2lvbiJdOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgyLCAiRWRpdCBBY2NvdW50IiwgKChoPT0tMSk/Mzo3KSwgZnVuY3Rpb24gKGJ1dHRvbikgeyBjaGFuZ2VBY2NvdW50QnV0dG9uRXgoaCwgYnV0dG9uKTsgfSk7IC8vIElmIGhhbmRsZSBpcyAtMSwgb25seSBkaXNwbGF5IE9LL0NhbmNlbCBidXR0b25zLCBpZiBub3QsIGFsc28gZGlzcGxheSBkZWxldGUgYnV0dG9uLg0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudERpYWxvZygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gbmV3QWNjb3VudEJ1dHRvbigpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHVwZGF0ZVJlYWxtcyhbXSk7DQogICAgICAgICAgICBkMnVzZXJuYW1lLnZhbHVlID0gZDJwYXNzd29yZDEudmFsdWUgPSBkMnBhc3N3b3JkMi52YWx1ZSA9ICcnOw0KICAgICAgICAgICAgZDJwZXJtaXNzaW9uLnZhbHVlID0gMjsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMiwgIk5ldyBBY2NvdW50IiwgMywgZnVuY3Rpb24gKCkgeyBjaGFuZ2VBY2NvdW50QnV0dG9uRXgobnVsbCwgMSk7IH0pOw0KICAgICAgICAgICAgdXBkYXRlQWNjb3VudERpYWxvZygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2hhbmdlQWNjb3VudEJ1dHRvbkV4KGgsIGJ1dHRvbikgew0KICAgICAgICAgICAgaWYgKGJ1dHRvbiA9PSAxKSB7IC8vIE9LIEJ1dHRvbg0KICAgICAgICAgICAgICAgIHZhciByZWFsbXMgPSBbXSwgdXNlcm5hbWUgPSBkMnVzZXJuYW1lLnZhbHVlLCBwZXJtaXNzaW9uID0gZDJwZXJtaXNzaW9uLnZhbHVlLCBwYXNzd29yZCA9IGQycGFzc3dvcmQxLnZhbHVlLCBzaWQgPSBHZXRTaWRCeXRlQXJyYXkoUSgnZDJ1c2VybmFtZScpLnZhbHVlKSwgZCA9IG51bGw7DQogICAgICAgICAgICAgICAgaWYgKHVzZXJuYW1lLmxlbmd0aCA9PSAwIHx8IHBhc3N3b3JkICE9IGQycGFzc3dvcmQyLnZhbHVlKSB7IG1lc3NhZ2Vib3goIkFjY291bnQgRXJyb3IiLCAiSW52YWxpZCBQYXJhbWV0ZXJzIik7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgIGlmIChzaWQgPT0gbnVsbCkgeyBkID0gd2luZG93LmJ0b2EocnN0cl9tZDUodXNlcm5hbWUgKyAiOiIgKyBhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlWyJEaWdlc3RSZWFsbSJdICsgIjoiICsgcGFzc3dvcmQpKTsgfSBlbHNlIHsgdXNlcm5hbWUgPSBudWxsOyBzaWQgPSBidG9hKHNpZCk7IH0NCiAgICAgICAgICAgICAgICBpZiAoaCAhPSAtMSkgeyBmb3IgKHZhciB5IGluIGFtdHN0YWNrLlJlYWxtTmFtZXMpIHsgaWYgKCgoYW10c3RhY2suUmVhbG1OYW1lc1t5XSkgfHwgKHkgPT0gMykpICYmIFEoJ3J4JyArIHkpLmNoZWNrZWQpIHsgcmVhbG1zLnB1c2goeSk7IH0gfSB9DQogICAgICAgICAgICAgICAgaWYgKGggPT0gbnVsbCkgeyBhbXRzdGFjay5BTVRfQXV0aG9yaXphdGlvblNlcnZpY2VfQWRkVXNlckFjbEVudHJ5RXgodXNlcm5hbWUsIGQsIHNpZCwgcGVybWlzc2lvbiwgcmVhbG1zLCB1c2VyQWNsRW50cnlFeFJlc3BvbnNlKTsgfQ0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGggPT0gLTEpIHsgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1NldEFkbWluQWNsRW50cnlFeCh1c2VybmFtZSwgZCwgdXNlckFjbEVudHJ5RXhSZXNwb25zZSk7IH0NCiAgICAgICAgICAgICAgICBlbHNlIHsgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1VwZGF0ZVVzZXJBY2xFbnRyeUV4KGgsIHVzZXJuYW1lLCBkLCBzaWQsIHBlcm1pc3Npb24sIHJlYWxtcywgdXNlckFjbEVudHJ5RXhSZXNwb25zZSk7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMikgeyAvLyBEZWxldGUgQnV0dG9uDQogICAgICAgICAgICAgICAgYW10c3RhY2suQU1UX0F1dGhvcml6YXRpb25TZXJ2aWNlX1JlbW92ZVVzZXJBY2xFbnRyeShoLCByZW1vdmVVc2VyQWNsRW50cnlSZXNwb25zZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2VyQWNsRW50cnlFeFJlc3BvbnNlKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzLCB0YWcpIHsgaWYgKG1ldGhvZGNoZWNrKHJlc3BvbnNlKSkgcmV0dXJuOyBQdWxsVXNlckluZm8oKTsgfQ0KICAgICAgICBmdW5jdGlvbiB1cGRhdGVSZWFsbXMocikgew0KICAgICAgICAgICAgUVYoJ2lkX2QycGVybWlzc2lvbnMnLCByICE9IG51bGwpOw0KICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHZhciB4ID0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggb25jaGFuZ2U9dXBkYXRlQWNjb3VudERpYWxvZygpIGlkPXJ4MycgKyAoKHIuaW5kZXhPZigzKSA+PSAwKT8nIGNoZWNrZWQnOicnKSArICc+QWRtaW5pc3RyYXRvcjwvbGFiZWw+PC9saT48aHIgLz4nOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIHkgaW4gYW10c3RhY2suUmVhbG1OYW1lcykgeyB2YXIgYyA9ICcnOyBpZiAoci5pbmRleE9mKHBhcnNlSW50KHkpKSA+PSAwKSBjID0gJyBjaGVja2VkJzsgaWYgKGFtdHN0YWNrLlJlYWxtTmFtZXNbeV0pIHggKz0gJzxsaT48bGFiZWw+PGlucHV0IHR5cGU9Y2hlY2tib3ggb25jaGFuZ2U9dXBkYXRlQWNjb3VudERpYWxvZygpIGlkPXJ4JyArIHkgKyBjICsgJz4nICsgYW10c3RhY2suUmVhbG1OYW1lc1t5XSArICc8L2xhYmVsPjwvbGk+JzsgfQ0KICAgICAgICAgICAgICAgIFFIKCdpZF9kMnJlYWxtcycsIHgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlQWNjb3VudERpYWxvZygpIHsNCiAgICAgICAgICAgIHZhciBvayA9IGZhbHNlOw0KICAgICAgICAgICAgZm9yICh2YXIgeSBpbiBhbXRzdGFjay5SZWFsbU5hbWVzKSB7IGlmICgoKGFtdHN0YWNrLlJlYWxtTmFtZXNbeV0pIHx8ICh5ID09IDMpKSAmJiBRKCdyeCcgKyB5KS5jaGVja2VkKSB7IG9rID0gdHJ1ZTsgfSB9DQogICAgICAgICAgICBvayAmPSAoZDJ1c2VybmFtZS52YWx1ZS5sZW5ndGggPiAwICYmIHBhc3N3b3JkY2hlY2soZDJwYXNzd29yZDEudmFsdWUpICYmIGQycGFzc3dvcmQxLnZhbHVlID09IGQycGFzc3dvcmQyLnZhbHVlKTsNCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCBvayk7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgeHhVc2VyUGVybWlzc2lvbnMgPSBbJ0xvY2FsIG9ubHknICwgJ05ldHdvcmsgb25seScsICdBbGwgKExvY2FsICYgTmV0d29yayknXTsNCiAgICAgICAgZnVuY3Rpb24gc2hvd1VzZXJEZXRhaWxzKGgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBhID0geHhBY2NvdW50UmVhbG1JbmZvW2hdLCB4ID0gJzxkaXYgc3R5bGU9dGV4dC1hbGlnbjpsZWZ0Pic7DQogICAgICAgICAgICB2YXIgaSwgbiA9IGFbIkRpZ2VzdFVzZXJuYW1lIl07DQogICAgICAgICAgICBpZiAoIW4pIG4gPSBHZXRTaWRTdHJpbmcoYXRvYihhWyJLZXJiZXJvc1VzZXJTaWQiXSkpOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIk5hbWUiLCBuKTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRFbmFibGVkSW5mb1toXSkgeyB4ICs9IGFkZEh0bWxWYWx1ZSgiU3RhdGUiLCAoKHh4QWNjb3VudEVuYWJsZWRJbmZvW2hdWydFbmFibGVkJ10gPT0gdHJ1ZSk/J0VuYWJsZWQnOidEaXNhYmxlZCcpKTsgfQ0KICAgICAgICAgICAgaWYgKG4gPT0geHhBY2NvdW50QWRtaW5OYW1lKSB7DQogICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlBlcm1pc3Npb24iLCAiQWRtaW5pc3RyYXRvciIpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiUGVybWlzc2lvbiIsIHh4VXNlclBlcm1pc3Npb25zW2FbIkFjY2Vzc1Blcm1pc3Npb24iXV0pOw0KICAgICAgICAgICAgICAgIHZhciB5ID0gJyc7DQogICAgICAgICAgICAgICAgaWYgKGFbIlJlYWxtcyJdLmluZGV4T2YoMykgPj0gMCkgew0KICAgICAgICAgICAgICAgICAgICB5ID0gJ0FkbWluaXN0cmF0b3InOw0KICAgICAgICAgICAgICAgICAgICBpZiAoYVsiUmVhbG1zIl0uaW5kZXhPZigyMCkgPj0gMCkgeSArPSAiLCBBdWRpdG9yIjsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4geHhBY2NvdW50UmVhbG1JbmZvW2hdWyJSZWFsbXMiXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFtdHN0YWNrLlJlYWxtTmFtZXNbYVsiUmVhbG1zIl1baV1dICE9ICcnKSB7IC8vIFJlbW92ZSBibGFuayByZXNlcnZlZCByZWFsbXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeS5sZW5ndGggPiAwKSB5ICs9ICIsICI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSArPSBhbXRzdGFjay5SZWFsbU5hbWVzW2FbIlJlYWxtcyJdW2ldXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAoeS5sZW5ndGggPT0gMCkgeSA9ICdOb25lJzsNCiAgICAgICAgICAgICAgICB4ICs9IGFkZEh0bWxWYWx1ZSgiUmVhbG1zIiwgIiIpICsgIjxiPiIgKyB5ICsgIjwvYj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAiPC9kaXY+IjsNCiAgICAgICAgICAgIG1lc3NhZ2Vib3goIkFjY291bnQgIiArIG4sIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gV1NNQU4gQlJPV1NFUiBQQU5FTA0KICAgICAgICAvLw0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gUmVtb3RlIFRlcm1pbmFsDQogICAgICAgIC8vDQoNCg0KICAgICAgICAvLw0KICAgICAgICAvLyBSZW1vdGUgRGVza3RvcA0KICAgICAgICAvLw0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gUmVtb3RlIElERVINCiAgICAgICAgLy8NCg0KDQoNCg0KICAgICAgICAvLw0KICAgICAgICAvLyBSZW1vdGUgQWNjZXNzDQogICAgICAgIC8vDQoNCiAgICAgICAgdmFyIHh4UmVtb3RlQWNjZXNzID0gbnVsbDsNCiAgICAgICAgdmFyIHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID0gbnVsbDsNCiAgICAgICAgdmFyIHh4Q2lyYVNlcnZlcnMgPSBudWxsOw0KICAgICAgICB2YXIgeHhVc2VySW5pdGlhdGVkQ2lyYSA9IG51bGw7DQogICAgICAgIHZhciB4eFVzZXJJbml0aWF0ZWRFbmFibGVkU3RhdGUgPSB7IDMyNzY4OiAnRGlzYWJsZWQnLCAzMjc2OTogJ0JJT1MgZW5hYmxlZCcsIDMyNzcwOiAnT1MgZW5hYmxlJywgMzI3NzE6ICdCSU9TICYgT1MgZW5hYmxlZCcgfTsNCiAgICAgICAgdmFyIHh4UmVtb3RlQWNjZXNzQ3JlZGVudGlhTGlua3MgPSBudWxsOw0KICAgICAgICB2YXIgeHhNUFNVc2VyUGFzcyA9IG51bGw7DQogICAgICAgIHZhciB4eFBvbGljaWVzID0gbnVsbDsNCg0KICAgICAgICBmdW5jdGlvbiBQdWxsUmVtb3RlQWNjZXNzKCkgew0KICAgICAgICAgICAgLy8gV2Ugb25seSBkZWFsIHdpdGggcmVtb3RlIGFjY2VzcyBzdGFydGluZyB3aXRoIEludGVsIEFNVCA2IGFuZCBiZXlvbmQNCg0KICAgICAgICAgICAgdmFyIHJlcXVlc3RzID0gWyIqQU1UX0Vudmlyb25tZW50RGV0ZWN0aW9uU2V0dGluZ0RhdGEiLCAiQU1UX01hbmFnZW1lbnRQcmVzZW5jZVJlbW90ZVNBUCIsICJBTVRfUmVtb3RlQWNjZXNzQ3JlZGVudGlhbENvbnRleHQiLCAiQU1UX1JlbW90ZUFjY2Vzc1BvbGljeUFwcGxpZXNUb01QUyIsICJBTVRfUmVtb3RlQWNjZXNzUG9saWN5UnVsZSIsICIqQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZSIsICJBTVRfTVBTVXNlcm5hbWVQYXNzd29yZCJdOw0KICAgICAgICAgICAgaWYgKGFtdHZlcnNpb24gPiAxMSkgeyByZXF1ZXN0cy5wdXNoKCIqSVBTX0hUVFBQcm94eVNlcnZpY2UiLCAiSVBTX0hUVFBQcm94eUFjY2Vzc1BvaW50Iik7IH0NCiAgICAgICAgICAgIGFtdHN0YWNrLkJhdGNoRW51bShudWxsLCByZXF1ZXN0cywgcHJvY2Vzc1JlbW90ZTEpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc1JlbW90ZTEoc3RhY2ssIG5hbWUsIHJlc3BvbnNlcywgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDQwMCkgcmV0dXJuOw0KICAgICAgICAgICAgaWYgKChlcnJjaGVjayhzdGF0dXMsIHN0YWNrKSkgfHwgKHJlc3BvbnNlc1siQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZSJdID09IHVuZGVmaW5lZCB8fCByZXNwb25zZXNbIkFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UiXS5yZXNwb25zZSA9PSB1bmRlZmluZWQpKSByZXR1cm47DQogICAgICAgICAgICBRVignZ28xNycsIHRydWUpOyAvLyBSZW1vdGUgQWNjZXNzDQogICAgICAgICAgICB4eFJlbW90ZUFjY2VzcyA9IHJlc3BvbnNlczsNCiAgICAgICAgICAgIHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID0gcmVzcG9uc2VzWyJBTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YSJdLnJlc3BvbnNlOw0KICAgICAgICAgICAgeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXSA9IE1ha2VUb0FycmF5KHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uWydEZXRlY3Rpb25TdHJpbmdzJ10pOw0KICAgICAgICAgICAgeHhDaXJhU2VydmVycyA9IHJlc3BvbnNlc1siQU1UX01hbmFnZW1lbnRQcmVzZW5jZVJlbW90ZVNBUCJdLnJlc3BvbnNlczsNCiAgICAgICAgICAgIHh4VXNlckluaXRpYXRlZENpcmEgPSByZXNwb25zZXNbIkFNVF9Vc2VySW5pdGlhdGVkQ29ubmVjdGlvblNlcnZpY2UiXS5yZXNwb25zZTsNCiAgICAgICAgICAgIHh4UmVtb3RlQWNjZXNzQ3JlZGVudGlhTGlua3MgPSByZXNwb25zZXNbIkFNVF9SZW1vdGVBY2Nlc3NDcmVkZW50aWFsQ29udGV4dCJdLnJlc3BvbnNlczsNCiAgICAgICAgICAgIHh4TVBTVXNlclBhc3MgPSByZXNwb25zZXNbIkFNVF9NUFNVc2VybmFtZVBhc3N3b3JkIl0ucmVzcG9uc2VzOw0KDQogICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHBvbGljaWVzIGF0dGFjaGVkIHRvIHNlcnZlcnMuIENyZWF0ZSBhIHBvbGljeSB0eXBlIHRvIHNlcnZlciB0YWJsZS4NCiAgICAgICAgICAgIHh4UG9saWNpZXMgPSB7ICdVc2VyJzogW10sICdBbGVydCc6IFtdLCAnUGVyaW9kaWMnOiBbXSB9Ow0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiByZXNwb25zZXNbIkFNVF9SZW1vdGVBY2Nlc3NQb2xpY3lBcHBsaWVzVG9NUFMiXS5yZXNwb25zZXMpIHsNCiAgICAgICAgICAgICAgICB2YXIgcG9saWN5ID0gcmVzcG9uc2VzWyJBTVRfUmVtb3RlQWNjZXNzUG9saWN5QXBwbGllc1RvTVBTIl0ucmVzcG9uc2VzW2ldOw0KICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXIgPSBDbG9uZShnZXRJdGVtKHh4Q2lyYVNlcnZlcnMsICJOYW1lIiwgZ2V0SXRlbShwb2xpY3lbJ01hbmFnZWRFbGVtZW50J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSwgIkBOYW1lIiwgIk5hbWUiKVsnVmFsdWUnXSkpOw0KICAgICAgICAgICAgICAgIHNlcnZlci5NcHNUeXBlID0gcG9saWN5WydNcHNUeXBlJ107IC8vIE1wc1R5cGUgd2FzIGFkZGVkIGluIEludGVsIEFNVCAxMS42DQogICAgICAgICAgICAgICAgdmFyIHB0eXBlID0gKGdldEl0ZW0ocG9saWN5WydQb2xpY3lTZXQnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddLCAiQE5hbWUiLCAiUG9saWN5UnVsZU5hbWUiKVsnVmFsdWUnXSkuc3BsaXQoJyAnKVswXTsNCiAgICAgICAgICAgICAgICB4eFBvbGljaWVzW3B0eXBlXS5wdXNoKHNlcnZlcik7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHVwZGF0ZVJlbW90ZUFjY2VzcygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlUmVtb3RlQWNjZXNzKCkgew0KICAgICAgICAgICAgaWYgKHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uID09IG51bGwpIHJldHVybjsNCiAgICAgICAgICAgIHZhciB4ID0gJycsIGUgPSAnRGlzYWJsZWQnLCBjaXJhUHJveHlTdXBwb3J0ID0gKHh4UmVtb3RlQWNjZXNzWyJJUFNfSFRUUFByb3h5U2VydmljZSJdICYmIHh4UmVtb3RlQWNjZXNzWyJJUFNfSFRUUFByb3h5QWNjZXNzUG9pbnQiXSk7DQogICAgICAgICAgICBpZiAoeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXSAmJiB4eEVudmlyb25lbWVudERldGVjdGlvblsnRGV0ZWN0aW9uU3RyaW5ncyddLmxlbmd0aCA+IDApIHsgZSA9ICdFbmFibGVkLCAnICsgeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXS5sZW5ndGggKyAnIGRvbWFpbicgKyAoeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXS5sZW5ndGggPiAxPydzJzonJyk7IH0NCg0KICAgICAgICAgICAgLy8gR2VuZXJhbCBzZXR0aW5ncw0KICAgICAgICAgICAgeCArPSBUYWJsZVN0YXJ0KCk7DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkVudmlyb25tZW50IGRldGVjdGlvbiIsIGFkZExpbmsoZSwgJ2VkaXRFbnZpcm9ubWVudERldGVjdGlvbigpJykpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVudHJ5KCJVc2VyIGluaXRpYXRpb24gb3B0aW9ucyIsIGFkZExpbmtDb25kaXRpb25hbCh4eFVzZXJJbml0aWF0ZWRFbmFibGVkU3RhdGVbeHhVc2VySW5pdGlhdGVkQ2lyYVsnRW5hYmxlZFN0YXRlJ11dLCAnZWRpdFVzZXJJbml0aWF0ZWRDaXJhKCknLCB4eEFjY291bnRBZG1pbk5hbWUpKTsNCiAgICAgICAgICAgIHZhciB5ID0gJzxpPk5vbmU8L2k+JzsNCiAgICAgICAgICAgIGlmICh4eFBvbGljaWVzWydVc2VyJ10ubGVuZ3RoID4gMCkgeyB5ID0gJyc7IGZvciAodmFyIGkgaW4geHhQb2xpY2llc1snVXNlciddKSB7IGlmICh5Lmxlbmd0aCA+IDApIHkgKz0gJywgJzsgeSArPSB4eFBvbGljaWVzWydVc2VyJ11baV1bJ0FjY2Vzc0luZm8nXTsgaWYgKHh4UG9saWNpZXNbJ1VzZXInXVtpXS5NcHNUeXBlID09IDEpIHsgeSArPSAnIChDSUxBKSc7IH0gfSB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIlVzZXIgaW5pdGlhdGVkIGNvbm5lY3Rpb24iLCBhZGRMaW5rQ29uZGl0aW9uYWwoeSwgJ2VkaXRNcHNQb2xpY3koIlVzZXIiKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgdmFyIHkgPSAnPGk+Tm9uZTwvaT4nOw0KICAgICAgICAgICAgaWYgKHh4UG9saWNpZXNbJ0FsZXJ0J10ubGVuZ3RoID4gMCkgeyB5ID0gJyc7IGZvciAodmFyIGkgaW4geHhQb2xpY2llc1snQWxlcnQnXSkgeyBpZiAoeS5sZW5ndGggPiAwKSB5ICs9ICcsICc7IHkgKz0geHhQb2xpY2llc1snQWxlcnQnXVtpXVsnQWNjZXNzSW5mbyddOyBpZiAoeHhQb2xpY2llc1snQWxlcnQnXVtpXS5NcHNUeXBlID09IDEpIHsgeSArPSAnIChDSUxBKSc7IH0gfSB9DQogICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIkFsZXJ0IGluaXRpYXRlZCBjb25uZWN0aW9uIiwgYWRkTGlua0NvbmRpdGlvbmFsKHksICdlZGl0TXBzUG9saWN5KCJBbGVydCIpJywgeHhBY2NvdW50QWRtaW5OYW1lKSk7DQogICAgICAgICAgICB2YXIgeSA9ICc8aT5Ob25lPC9pPic7DQogICAgICAgICAgICBpZiAoeHhQb2xpY2llc1snUGVyaW9kaWMnXS5sZW5ndGggPiAwKSB7IHkgPSAnJzsgZm9yICh2YXIgaSBpbiB4eFBvbGljaWVzWydQZXJpb2RpYyddKSB7IGlmICh5Lmxlbmd0aCA+IDApIHkgKz0gJywgJzsgeSArPSB4eFBvbGljaWVzWydQZXJpb2RpYyddW2ldWydBY2Nlc3NJbmZvJ107IGlmICh4eFBvbGljaWVzWydQZXJpb2RpYyddW2ldLk1wc1R5cGUgPT0gMSkgeyB5ICs9ICcgKENJTEEpJzsgfSB9IH0NCiAgICAgICAgICAgIHZhciBwZXJpb2RpY1BvbGljeSA9IGdldEl0ZW0oeHhSZW1vdGVBY2Nlc3NbIkFNVF9SZW1vdGVBY2Nlc3NQb2xpY3lSdWxlIl0ucmVzcG9uc2VzLCAiUG9saWN5UnVsZU5hbWUiLCAiUGVyaW9kaWMiKTsNCiAgICAgICAgICAgIGlmIChwZXJpb2RpY1BvbGljeSkgew0KICAgICAgICAgICAgICAgIHZhciBleGRhdGEgPSBhdG9iKHBlcmlvZGljUG9saWN5WydFeHRlbmRlZERhdGEnXSk7DQogICAgICAgICAgICAgICAgaWYgKFJlYWRJbnQoZXhkYXRhLCAwKSA9PSAwKSB7IHkgKz0gJywgZWFjaCAnICsgUmVhZEludChleGRhdGEsIDQpICsgJyBzZWNvbmRzJzsgfQ0KICAgICAgICAgICAgICAgIGlmIChSZWFkSW50KGV4ZGF0YSwgMCkgPT0gMSkgeyB2YXIgaG91cnMgPSBSZWFkSW50KGV4ZGF0YSwgNCk7IHZhciBtaW51dGVzID0gUmVhZEludChleGRhdGEsIDgpOyBpZiAobWludXRlcyA8IDEwKSBtaW51dGVzID0gJzAnICsgbWludXRlczsgeSArPSAnLCBhdCAnICsgaG91cnMgKyAiOiIgKyBtaW51dGVzICsgJyBkYWlseSc7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gVGFibGVFbnRyeSgiUGVyaW9kaWMgY29ubmVjdGlvbiIsIGFkZExpbmtDb25kaXRpb25hbCh5LCAnZWRpdE1wc1BvbGljeSgiUGVyaW9kaWMiKScsIHh4QWNjb3VudEFkbWluTmFtZSkpOw0KICAgICAgICAgICAgeCArPSBUYWJsZUVuZCgpOw0KDQogICAgICAgICAgICAvLyBTaG93IE1QUyBzZXJ2ZXJzDQogICAgICAgICAgICB4ICs9ICI8YnI+IjsNCiAgICAgICAgICAgIHggKz0gVGFibGVTdGFydDIoKTsNCiAgICAgICAgICAgIHggKz0gIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCByZW1vdGUgbWFuYWdlbWVudCBzZXJ2ZXJzLjxicj48YnI+IjsNCiAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+PGk+Tm8gcmVtb3RlIHNlcnZlcnMgZm91bmQuPC9pPjwvZGl2Pjxicj4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4Q2lyYVNlcnZlcnMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGRlc2MgPSAnOicgKyB4eENpcmFTZXJ2ZXJzW2ldWydQb3J0J107DQogICAgICAgICAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzW2ldWydDTiddKSBkZXNjICs9ICcsICcgKyB4eENpcmFTZXJ2ZXJzW2ldWydDTiddOw0KICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93U2VydmVyRGV0YWlscygiICsgaSArICIpPjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4PjxiPiIgKyB4eENpcmFTZXJ2ZXJzW2ldWyJBY2Nlc3NJbmZvIl0gKyAiPC9iPiIgKyBFc2NhcGVIdG1sKGRlc2MpICsgIjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBTaG93IE1QUyBwcm94aWVzIGlmIHN1cHBvcnRlZA0KICAgICAgICAgICAgaWYgKGNpcmFQcm94eVN1cHBvcnQpIHsNCiAgICAgICAgICAgICAgICB4ICs9ICI8YnI+TWFuYWdlIEhUVFAgcHJveGllcyB1c2VkIGZvciBtYW5hZ2VtZW50IGNvbm5lY3Rpb25zLjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB2YXIgcHJveHlTZXJ2aWNlID0geHhSZW1vdGVBY2Nlc3NbIklQU19IVFRQUHJveHlTZXJ2aWNlIl0ucmVzcG9uc2U7DQogICAgICAgICAgICAgICAgdmFyIHByb3hpZXMgPSB4eFJlbW90ZUFjY2Vzc1siSVBTX0hUVFBQcm94eUFjY2Vzc1BvaW50Il0ucmVzcG9uc2VzOw0KICAgICAgICAgICAgICAgIGlmIChwcm94aWVzLmxlbmd0aCA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPjxpPk5vIHByb3hpZXMgY29uZmlndXJlZC48L2k+PC9kaXY+PGJyPiI7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBwcm94aWVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvL3ggKz0gIjxkaXYgY2xhc3M9aXRlbUJhciBvbmNsaWNrPXNob3dQcm94eURldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChwcm94aWVzW2ldWydBY2Nlc3NJbmZvJ10pICsgIjoiICsgcHJveGllc1tpXVsnUHJveHlQb3J0J10gKyAiPC9iPiAvICIgKyBFc2NhcGVIdG1sKHByb3hpZXNbaV1bJ05ldHdvcmtEbnNTdWZmaXgnXSkgKyAiPC9kaXY+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgY2xhc3M9aXRlbUJhciBvbmNsaWNrPXNob3dQcm94eURldGFpbHMoIiArIGkgKyAiKT48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChwcm94aWVzW2ldWydBY2Nlc3NJbmZvJ10pICsgIjoiICsgcHJveGllc1tpXVsnUG9ydCddICsgIjwvYj4gLyAiICsgRXNjYXBlSHRtbChwcm94aWVzW2ldWydOZXR3b3JrRG5zU3VmZml4J10pICsgIjwvZGl2PjwvZGl2PiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciBhZGRzZXJ2ZXJidXR0b24gPSAnJzsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHsNCiAgICAgICAgICAgICAgICBhZGRzZXJ2ZXJidXR0b24gPSBBZGRCdXR0b24oIkFkZCBTZXJ2ZXIuLi4iLCAiQWRkUmVtb3RlQWNjZXNzU2VydmVyKCkiKTsNCiAgICAgICAgICAgICAgICBpZiAoY2lyYVByb3h5U3VwcG9ydCkgeyBhZGRzZXJ2ZXJidXR0b24gKz0gQWRkQnV0dG9uKCJBZGQgUHJveHkuLi4iLCAiQWRkUmVtb3RlQWNjZXNzUHJveHkoKSIpOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB4ICs9ICI8YnI+PHRkIGNsYXNzPXIxPiIgKyBUYWJsZUVuZChBZGRSZWZyZXNoQnV0dG9uKCJQdWxsUmVtb3RlQWNjZXNzKCkiKSArIGFkZHNlcnZlcmJ1dHRvbik7DQoNCiAgICAgICAgICAgIFFIKCdpZF9UYWJsZVJlbW90ZUFjY2VzcycsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHh4RWRpdE1wc1BvbGljeVR5cGU7DQogICAgICAgIGZ1bmN0aW9uIGVkaXRNcHNQb2xpY3kodHlwZSkgew0KICAgICAgICAgICAgdmFyIHggPSAnJywgY2lsYVN1cHBvcnQgPSAoKGFtdHZlcnNpb24gPiAxMSkgfHwgKChhbXR2ZXJzaW9uID09IDExKSAmJiAoYW10dmVyc2lvbiA+PSA2KSkpOw0KICAgICAgICAgICAgeHhFZGl0TXBzUG9saWN5VHlwZSA9IHR5cGU7DQogICAgICAgICAgICB2YXIgbmFtZSA9IHh4RWRpdE1wc1BvbGljeVR5cGU7DQogICAgICAgICAgICBpZiAobmFtZSA9PSAnVXNlcicpIG5hbWUgPSAnVXNlciBJbml0aWF0ZWQnOw0KICAgICAgICAgICAgdmFyIHBvbGljeSA9IGdldEl0ZW0oeHhSZW1vdGVBY2Nlc3NbIkFNVF9SZW1vdGVBY2Nlc3NQb2xpY3lSdWxlIl0ucmVzcG9uc2VzLCAiUG9saWN5UnVsZU5hbWUiLCBuYW1lKTsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMnNlcnZlcjEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9ZWRpdE1wc1BvbGljeVVwZGF0ZSgpPic7DQogICAgICAgICAgICB4ICs9ICc8b3B0aW9uIHZhbHVlPS0xPihOb25lKScNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDaXJhU2VydmVycykgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPScgKyBpICsgJycgKyAoKHh4UG9saWNpZXNbdHlwZV1bMF0gJiYgeHhQb2xpY2llc1t0eXBlXVswXVsnTmFtZSddID09IHh4Q2lyYVNlcnZlcnNbaV1bJ05hbWUnXSkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIHh4Q2lyYVNlcnZlcnNbaV1bJ0FjY2Vzc0luZm8nXSB9DQogICAgICAgICAgICB4ICs9ICc8L3NlbGVjdD48ZGl2PlByaW1hcnkgc2VydmVyPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIGlmIChjaWxhU3VwcG9ydCkgeyB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJzZXJ2ZXIxY2lyYSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDZweCBvbmNoYW5nZT1lZGl0TXBzUG9saWN5VXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0wPkNJUkEgLSBFeHRlcm5hbDxvcHRpb24gdmFsdWU9MScgKyAoKCh4eFBvbGljaWVzW3R5cGVdWzBdKSAmJiAoeHhQb2xpY2llc1t0eXBlXVswXS5NcHNUeXBlID09IDEpKT8nIHNlbGVjdGVkJzonJykgKyAnPkNJTEEgLSBJbnRlcm5hbDwvc2VsZWN0PjxkaXY+UHJpbWFyeSBNUFMgVHlwZTwvZGl2PjwvZGl2Pic7IH0NCiAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA+IDEpIHsNCiAgICAgICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJzZXJ2ZXIyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwNnB4IG9uY2hhbmdlPWVkaXRNcHNQb2xpY3lVcGRhdGUoKT4nOw0KICAgICAgICAgICAgICAgIHggKz0gJzxvcHRpb24gdmFsdWU9LTE+KE5vbmUpJw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhDaXJhU2VydmVycykgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPScgKyBpICsgJycgKyAoKHh4UG9saWNpZXNbdHlwZV1bMV0gJiYgeHhQb2xpY2llc1t0eXBlXVsxXVsnTmFtZSddID09IHh4Q2lyYVNlcnZlcnNbaV1bJ05hbWUnXSkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+JyArIHh4Q2lyYVNlcnZlcnNbaV1bJ0FjY2Vzc0luZm8nXSB9DQogICAgICAgICAgICAgICAgeCArPSAnPC9zZWxlY3Q+PGRpdj5TZWNvbmRhcnkgc2VydmVyPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgICAgICBpZiAoY2lsYVN1cHBvcnQpIHsgeCArPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48c2VsZWN0IGlkPWQyc2VydmVyMmNpcmEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9ZWRpdE1wc1BvbGljeVVwZGF0ZSgpPjxvcHRpb24gdmFsdWU9MD5DSVJBIC0gRXh0ZXJuYWw8b3B0aW9uIHZhbHVlPTEnICsgKCgoeHhQb2xpY2llc1t0eXBlXVsxXSkgJiYgKHh4UG9saWNpZXNbdHlwZV1bMV0uTXBzVHlwZSA9PSAxKSkgPyAnIHNlbGVjdGVkJyA6ICcnKSArICc+Q0lMQSAtIEludGVybmFsPC9zZWxlY3Q+PGRpdj5TZWNvbmRhcnkgTVBTIFR5cGU8L2Rpdj48L2Rpdj4nOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgdCwgdiA9IDA7DQogICAgICAgICAgICBpZiAocG9saWN5KSB7IHYgPSBwb2xpY3lbJ1R1bm5lbExpZmVUaW1lJ107IH0NCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWQybGlmZXRpbWUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25jaGFuZ2U9ZWRpdE1wc1BvbGljeVVwZGF0ZSgpIHZhbHVlPScgKyB2ICsgJz4nOw0KICAgICAgICAgICAgeCArPSAnPGRpdj5UdW5uZWwgbGlmZXRpbWUgKFNlY29uZHMpPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIGlmICh0eXBlID09ICdQZXJpb2RpYycpIHsNCiAgICAgICAgICAgICAgICB0ID0gMDsNCiAgICAgICAgICAgICAgICB2ID0gMzYwMDsNCiAgICAgICAgICAgICAgICBpZiAocG9saWN5KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciB4eCA9IGF0b2IocG9saWN5WydFeHRlbmRlZERhdGEnXSk7DQogICAgICAgICAgICAgICAgICAgIHQgPSBSZWFkSW50KHh4LCAwKTsNCiAgICAgICAgICAgICAgICAgICAgdiA9IFJlYWRJbnQoeHgsIDQpOw0KICAgICAgICAgICAgICAgICAgICBpZiAodCA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbW0gPSBSZWFkSW50KHh4LCA4KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtbSA8IDEwKSBtbSA9ICcwJyArIG1tOw0KICAgICAgICAgICAgICAgICAgICAgICAgdiArPSAnOicgKyBtbTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJ0dHlwZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDZweCBvbmNoYW5nZT1lZGl0TXBzUG9saWN5VXBkYXRlKCk+JzsNCiAgICAgICAgICAgICAgICB4ICs9ICc8b3B0aW9uIHZhbHVlPTAnICsgKHQgPT0gMCA/ICcgc2VsZWN0ZWQnIDogJycpICsgJz5QZXJpb2RpYywgdGltZSBpbnRlcnZhbDxvcHRpb24gdmFsdWU9MScgKyAodCA9PSAxID8gJyBzZWxlY3RlZCcgOiAnJykgKyAnPlRpbWUgb2YgZGF5LCBvbmNlIGEgZGF5Jw0KICAgICAgICAgICAgICAgIHggKz0gJzwvc2VsZWN0PjxkaXY+VHJpZ2dlciB0eXBlPC9kaXY+PC9kaXY+PGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48aW5wdXQgaWQ9ZDJ0aW1lciBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmtleXVwPWVkaXRNcHNQb2xpY3lVcGRhdGUoKSB2YWx1ZT0nICsgdiArICc+PGRpdiBpZD10dHlwZWxhYmVsPjwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCB0eXBlICsgIiBDb25uZWN0aW9uIiwgMywgZWRpdE1wc1BvbGljeU9rLCB4KTsNCiAgICAgICAgICAgIGVkaXRNcHNQb2xpY3lVcGRhdGUoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkaXRNcHNQb2xpY3lVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgY2lsYVN1cHBvcnQgPSAoKGFtdHZlcnNpb24gPiAxMSkgfHwgKChhbXR2ZXJzaW9uID09IDExKSAmJiAoYW10dmVyc2lvbiA+PSA2KSkpOw0KICAgICAgICAgICAgdmFyIG9rID0gKHh4Q2lyYVNlcnZlcnMubGVuZ3RoIDw9IDEgfHwgKChRKCdkMnNlcnZlcjEnKS52YWx1ZSA9PSAtMSkgfHwgKFEoJ2Qyc2VydmVyMScpLnZhbHVlICE9IFEoJ2Qyc2VydmVyMicpLnZhbHVlKSkpOw0KICAgICAgICAgICAgaWYgKG9rID09IHRydWUgJiYgeHhFZGl0TXBzUG9saWN5VHlwZSA9PSAnUGVyaW9kaWMnICYmIFEoJ2QydHR5cGUnKS52YWx1ZSA9PSAxKSB7IHZhciBoaG1tID0gUSgnZDJ0aW1lcicpLnZhbHVlLnNwbGl0KCc6Jyk7IGlmIChoaG1tLmxlbmd0aCAhPSAyKSBvayA9IGZhbHNlOyBlbHNlIHsgdmFyIGhoID0gcGFyc2VJbnQoaGhtbVswXSk7IHZhciBtbSA9IHBhcnNlSW50KGhobW1bMV0pOyBpZiAoaGggPCAwIHx8IGhoID4gMjMgfHwgbW0gPCAwIHx8IG1tID4gNTkpIG9rID0gZmFsc2U7IH0gfQ0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA+IDEpIFFFKCdkMnNlcnZlcjInLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSAhPSAtMSk7DQogICAgICAgICAgICBpZiAoeHhFZGl0TXBzUG9saWN5VHlwZSA9PSAnUGVyaW9kaWMnKSB7DQogICAgICAgICAgICAgICAgUUUoJ2QydGltZXInLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSAhPSAtMSk7DQogICAgICAgICAgICAgICAgUUgoJ3R0eXBlbGFiZWwnLCBRKCdkMnR0eXBlJykudmFsdWUgPT0gMCA/ICdUcmlnZ2VyIGludGVydmFsIChTZWNvbmRzKScgOiAnVGltZSBvZiBkYXkgKEhIOk1NKScpOw0KICAgICAgICAgICAgICAgIFFFKCdkMnR0eXBlJywgUSgnZDJzZXJ2ZXIxJykudmFsdWUgIT0gLTEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgUUUoJ2QybGlmZXRpbWUnLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSAhPSAtMSk7DQoNCiAgICAgICAgICAgIC8vIElmIHdlIGFyZSBvbiBJbnRlbCBBTVQgMTEuNiBvciBoaWdoZXIsIGVuYWJsZSB0aGUgQ0lSQS9DSUxBIHNlbGVjdG9yIHdoZW4gbmVlZGVkLg0KICAgICAgICAgICAgaWYgKGNpbGFTdXBwb3J0KSB7DQogICAgICAgICAgICAgICAgUUUoJ2Qyc2VydmVyMWNpcmEnLCBRKCdkMnNlcnZlcjEnKS52YWx1ZSA+IC0xKQ0KICAgICAgICAgICAgICAgIGlmICh4eENpcmFTZXJ2ZXJzLmxlbmd0aCA+IDEpIHsgUUUoJ2Qyc2VydmVyMmNpcmEnLCAoUSgnZDJzZXJ2ZXIxJykudmFsdWUgPiAtMSkgJiYgKFEoJ2Qyc2VydmVyMicpLnZhbHVlID4gLTEpKTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdE1wc1BvbGljeU9rKCkgew0KICAgICAgICAgICAgdmFyIG5hbWUgPSB4eEVkaXRNcHNQb2xpY3lUeXBlOw0KICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ1VzZXInKSB7IG5hbWUgPSAnVXNlciBJbml0aWF0ZWQnOyB9DQoNCiAgICAgICAgICAgIGlmIChnZXRJdGVtKHh4UmVtb3RlQWNjZXNzWyJBTVRfUmVtb3RlQWNjZXNzUG9saWN5UnVsZSJdLnJlc3BvbnNlcywgIlBvbGljeVJ1bGVOYW1lIiwgbmFtZSkpIHsNCiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIHBvbGljeQ0KICAgICAgICAgICAgICAgIGFtdHN0YWNrLkRlbGV0ZSgnQU1UX1JlbW90ZUFjY2Vzc1BvbGljeVJ1bGUnLCB7ICdQb2xpY3lSdWxlTmFtZSc6IG5hbWUgfSwgZWRpdE1wc1BvbGljeU9rMik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIC8vIE5vIG9sZCBwb2xpY3kgdG8gcmVtb3ZlLCBza2lwIHRoaXMuDQogICAgICAgICAgICAgICAgZWRpdE1wc1BvbGljeU9rMigpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdE1wc1BvbGljeU9rMihzdGFjaywgbmFtZSwgcmVzcG9uc2VzLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIHZhciBjaWxhU3VwcG9ydCA9ICgoYW10dmVyc2lvbiA+IDExKSB8fCAoKGFtdHZlcnNpb24gPT0gMTEpICYmIChhbXR2ZXJzaW9uID49IDYpKSk7DQogICAgICAgICAgICBpZiAoUSgnZDJzZXJ2ZXIxJykudmFsdWUgPT0gLTEpIHsgUHVsbFJlbW90ZUFjY2VzcygpOyByZXR1cm47IH0NCg0KICAgICAgICAgICAgdmFyIHRyaWdnZXIgPSAwOw0KICAgICAgICAgICAgaWYgKHh4RWRpdE1wc1BvbGljeVR5cGUgPT0gJ0FsZXJ0JykgdHJpZ2dlciA9IDE7DQogICAgICAgICAgICBpZiAoeHhFZGl0TXBzUG9saWN5VHlwZSA9PSAnUGVyaW9kaWMnKSB0cmlnZ2VyID0gMjsNCg0KICAgICAgICAgICAgLy8gU2V0dXAgZXh0ZW5kZWQgZGF0YQ0KICAgICAgICAgICAgdmFyIGV4dGVuZGVkRGF0YSA9IG51bGw7DQogICAgICAgICAgICBpZiAodHJpZ2dlciA9PSAyKSB7DQogICAgICAgICAgICAgICAgdmFyIHRpbWVydHlwZSA9IFEoJ2QydHR5cGUnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICB2YXIgZXhkYXRhID0gSW50VG9TdHIoUSgnZDJ0aW1lcicpLnZhbHVlKTsgLy8gSW50ZXJ2YWwgdHJpZ2dlcg0KICAgICAgICAgICAgICAgIGlmICh0aW1lcnR5cGUgPT0gMSkgeyB2YXIgaGhtbSA9IFEoJ2QydGltZXInKS52YWx1ZS5zcGxpdCgnOicpOyBleGRhdGEgPSBJbnRUb1N0cihwYXJzZUludChoaG1tWzBdKSkgKyBJbnRUb1N0cihwYXJzZUludChoaG1tWzFdKSk7IH0gLy8gVGltZSBvZiBkYXkgdHJpZ2dlcg0KICAgICAgICAgICAgICAgIGV4dGVuZGVkRGF0YSA9IGJ0b2EoSW50VG9TdHIodGltZXJ0eXBlKSArIGV4ZGF0YSk7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgTVBTIHNlcnZlciByZWZlcmVuY2VzDQogICAgICAgICAgICB2YXIgc2VydmVyMSwgc2VydmVyMjsNCiAgICAgICAgICAgIGlmIChRKCdkMnNlcnZlcjEnKS52YWx1ZSA+PSAwKSB7IHNlcnZlcjEgPSAnPEFkZHJlc3MgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+aHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nL3JvbGUvYW5vbnltb3VzPC9BZGRyZXNzPjxSZWZlcmVuY2VQYXJhbWV0ZXJzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3NpbmciPjxSZXNvdXJjZVVSSSB4bWxucz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+aHR0cDovL2ludGVsLmNvbS93YmVtL3dzY2ltLzEvYW10LXNjaGVtYS8xL0FNVF9NYW5hZ2VtZW50UHJlc2VuY2VSZW1vdGVTQVA8L1Jlc291cmNlVVJJPjxTZWxlY3RvclNldCB4bWxucz0iaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c21hbi8xL3dzbWFuLnhzZCI+PFNlbGVjdG9yIE5hbWU9Ik5hbWUiPicgKyB4eENpcmFTZXJ2ZXJzW1EoJ2Qyc2VydmVyMScpLnZhbHVlXVsnTmFtZSddICsgJzwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+JzsgfQ0KICAgICAgICAgICAgaWYgKFEoJ2Qyc2VydmVyMScpLnZhbHVlID49IDAgJiYgeHhDaXJhU2VydmVycy5sZW5ndGggPiAxICYmIFEoJ2Qyc2VydmVyMicpLnZhbHVlID49IDApIHsgc2VydmVyMiA9ICc8QWRkcmVzcyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nIj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmcvcm9sZS9hbm9ueW1vdXM8L0FkZHJlc3M+PFJlZmVyZW5jZVBhcmFtZXRlcnMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+PFJlc291cmNlVVJJIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj5odHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9hbXQtc2NoZW1hLzEvQU1UX01hbmFnZW1lbnRQcmVzZW5jZVJlbW90ZVNBUDwvUmVzb3VyY2VVUkk+PFNlbGVjdG9yU2V0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj48U2VsZWN0b3IgTmFtZT0iTmFtZSI+JyArIHh4Q2lyYVNlcnZlcnNbUSgnZDJzZXJ2ZXIyJykudmFsdWVdWydOYW1lJ10gKyAnPC9TZWxlY3Rvcj48L1NlbGVjdG9yU2V0PjwvUmVmZXJlbmNlUGFyYW1ldGVycz4nOyB9DQoNCiAgICAgICAgICAgIC8vIFB1dCB0aGUgQ0lSQS9DSUxBIHNlcnZlcnMgaW4gdGhlIHJpZ2h0IGJpbnMuDQogICAgICAgICAgICB2YXIgY2lyYVNlcnZlcnMgPSBbXTsNCiAgICAgICAgICAgIHZhciBjaWxhU2VydmVycyA9IFtdOw0KICAgICAgICAgICAgaWYgKGNpbGFTdXBwb3J0KSB7DQogICAgICAgICAgICAgICAgLy8gT25seSBJbnRlbCBBTVQgMTEuNiBzdXBwb3J0cyB0aGlzDQogICAgICAgICAgICAgICAgaWYgKHNlcnZlcjEpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKFEoJ2Qyc2VydmVyMWNpcmEnKS52YWx1ZSA9PSAwKSB7IGNpcmFTZXJ2ZXJzLnB1c2goc2VydmVyMSk7IH0gZWxzZSB7IGNpbGFTZXJ2ZXJzLnB1c2goc2VydmVyMSk7IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZlcjIpIHsgaWYgKFEoJ2Qyc2VydmVyMmNpcmEnKS52YWx1ZSA9PSAwKSB7IGNpcmFTZXJ2ZXJzLnB1c2goc2VydmVyMik7IH0gZWxzZSB7IGNpbGFTZXJ2ZXJzLnB1c2goc2VydmVyMik7IH0gfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gSWYgb2xkZXIgdGhhbiBJbnRlbCBBTVQgMTEuNiwgcHV0IGFsbCBzZXJ2ZXJzIGluIHRoZSBDSVJBIGJ1Y2tldC4NCiAgICAgICAgICAgICAgICBpZiAoc2VydmVyMSkgeyBjaXJhU2VydmVycy5wdXNoKHNlcnZlcjEpOyBpZiAoc2VydmVyMikgeyBjaXJhU2VydmVycy5wdXNoKHNlcnZlcjIpOyB9IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gR28gYWhlYWQgYW5kIGNyZWF0ZSB0aGUgbmV3IENJUkEvQ0lMQSBwb2xpY3kuDQogICAgICAgICAgICBhbXRzdGFjay5BTVRfUmVtb3RlQWNjZXNzU2VydmljZV9BZGRSZW1vdGVBY2Nlc3NQb2xpY3lSdWxlKHRyaWdnZXIsIFEoJ2QybGlmZXRpbWUnKS52YWx1ZSwgZXh0ZW5kZWREYXRhLCBjaXJhU2VydmVycywgY2lsYVNlcnZlcnMsIFB1bGxSZW1vdGVBY2Nlc3MpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcDsNCiAgICAgICAgZnVuY3Rpb24gZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uKGEpIHsNCiAgICAgICAgICAgIGlmIChhICE9IDEpIHsgZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wID0gKHh4RW52aXJvbmVtZW50RGV0ZWN0aW9uWydEZXRlY3Rpb25TdHJpbmdzJ10pID8gQ2xvbmUoeHhFbnZpcm9uZW1lbnREZXRlY3Rpb25bJ0RldGVjdGlvblN0cmluZ3MnXSkgOiBbXTsgfQ0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gJ0VudGVyIHVwIHRvIDQgaW50cmFuZXQgZG9tYWluIHN1ZmZpeC4gSWYgdGhlIGNvbXB1dGVyIGlzIG91dHNpZGUgdGhlc2UgZG9tYWlucywgSW50ZWwmcmVnOyBBTVQgbG9jYWwgcG9ydHMgd2lsbCBiZSBjbG9zZWQgYW5kIHJlbW90ZSBzZXJ2ZXIgY29ubmVjdGlvbnMgd2lsbCBiZSBhY3RpdmUuPGJyPjxicj4nOw0KICAgICAgICAgICAgaWYgKGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcC5sZW5ndGggPT0gMCkgeyB4ICs9ICI8aT5ObyBpbnRyYW5ldCBkb21haW5zLCBFbnZpcm9uZW1udCBkZXRlY3Rpb24gZGlzYWJsZWQuPC9pPjxicj4iOyB9DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcCkgeyB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgc3R5bGU9bWFyZ2luLXJpZ2h0OjA+PGRpdiBzdHlsZT1mbG9hdDpyaWdodD4iICsgQWRkQnV0dG9uMigiUmVtb3ZlIiwgImVkaXRFbnZpcm9ubWVudERldGVjdGlvblJlbW92ZSgiICsgaSArICIpIikgKyAiPC9kaXY+PGRpdiBzdHlsZT1wYWRkaW5nLXRvcDozcHg7bWF4LXdpZHRoOjI2MHB4O292ZXJmbG93OmhpZGRlbiB0aXRsZT0nIiArIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcFtpXSArICInPjxiPiIgKyBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb25UbXBbaV0gKyAiPC9iPjwvZGl2PjwvZGl2PiI7IH0NCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUgJiYgZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wLmxlbmd0aCA8IDQpIHsgeCArPSAiPGJyPjxpbnB1dCBpZD1lZElucHV0IHBsYWNlaG9sZGVyPWludHJhbmV0Lm9yZyBzdHlsZT13aWR0aDoyNzZweCBvbmtleXVwPWVkSW5wdXRDaGcoKSBtYXhsZW5ndGg9NjM+PGlucHV0IHR5cGU9YnV0dG9uIGlkPWVkQWRkIHZhbHVlPUFkZCBzdHlsZT13aWR0aDo4MHB4O21hcmdpbi1sZWZ0OjVweCBvbmNsaWNrPWVkaXRFbnZpcm9ubWVudERldGVjdGlvbkFkZCgpPiI7IH0NCiAgICAgICAgICAgIGlmIChhID09IDEpIFFIKCdpZF9kaWFsb2dPcHRpb25zJywgeCk7IGVsc2Ugc2V0RGlhbG9nTW9kZSgxMSwgJ0Vudmlyb25tZW50IERldGVjdGlvbicsIHh4QWNjb3VudEFkbWluTmFtZT8zOjEsIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbkRsZywgeCk7DQogICAgICAgICAgICBlZElucHV0Q2hnKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb25EbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhBY2NvdW50QWRtaW5OYW1lKSB7DQogICAgICAgICAgICAgICAgdmFyIHQgPSBDbG9uZSh4eEVudmlyb25lbWVudERldGVjdGlvbik7DQogICAgICAgICAgICAgICAgdFsnRGV0ZWN0aW9uU3RyaW5ncyddID0gZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wOw0KICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ0FNVF9FbnZpcm9ubWVudERldGVjdGlvblNldHRpbmdEYXRhJywgdCk7DQogICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfRW52aXJvbm1lbnREZXRlY3Rpb25TZXR0aW5nRGF0YScsIHQsIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbkRsZzIsIDAsIDEpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uRGxnMihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgbWVzc2FnZWJveCgnRW52aXJvbm1lbnQgRGV0ZWN0aW9uJywgJ0ZhaWxlZCB0byBhZGQgc2VydmVyLCBzdGF0dXMgJyArIHN0YXR1cyk7IH0NCiAgICAgICAgICAgIGVsc2UgaWYgKChyZXNwb25zZS5Cb2R5WyJSZXR1cm5WYWx1ZSJdKSAmJiAocmVzcG9uc2UuQm9keVsiUmV0dXJuVmFsdWUiXSAhPSAwKSkgeyBtZXNzYWdlYm94KCdFbnZpcm9ubWVudCBEZXRlY3Rpb24nLCByZXNwb25zZS5Cb2R5LlJldHVyblZhbHVlU3RyLnJlcGxhY2UoL18vZywgJyAnKSk7IH0NCiAgICAgICAgICAgIGVsc2UgeyBQdWxsUmVtb3RlQWNjZXNzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkSW5wdXRDaGcoKSB7DQogICAgICAgICAgICBpZiAoZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wLmxlbmd0aCA8IDQpIFFFKCdlZEFkZCcsIFEoJ2VkSW5wdXQnKS52YWx1ZS5sZW5ndGggPiAwKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbkFkZCgpIHsNCiAgICAgICAgICAgIGVkaXRFbnZpcm9ubWVudERldGVjdGlvblRtcC5wdXNoKFEoJ2VkSW5wdXQnKS52YWx1ZSk7DQogICAgICAgICAgICBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb24oMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBlZGl0RW52aXJvbm1lbnREZXRlY3Rpb25SZW1vdmUoaCkgew0KICAgICAgICAgICAgZWRpdEVudmlyb25tZW50RGV0ZWN0aW9uVG1wLnNwbGljZShoLCAxKTsNCiAgICAgICAgICAgIGVkaXRFbnZpcm9ubWVudERldGVjdGlvbigxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGVkaXRVc2VySW5pdGlhdGVkQ2lyYSgpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBzID0gIiI7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4VXNlckluaXRpYXRlZEVuYWJsZWRTdGF0ZSkgeyBzICs9ICc8aW5wdXQgdHlwZT1yYWRpbyBuYW1lPWQxMSBpZD13bCcgKyBpICsgJyB2YWx1ZT0nICsgaSArICcgJyArICgoeHhVc2VySW5pdGlhdGVkQ2lyYVsnRW5hYmxlZFN0YXRlJ10gPT0gaSkgPyAiY2hlY2tlZCIgOiAiIikgKyAnPicgKyB4eFVzZXJJbml0aWF0ZWRFbmFibGVkU3RhdGVbaV0gKyAnPGJyPic7IH0NCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdVc2VyIEluaXRpYXRlZCBUdW5uZWwnLCAzLCBlZGl0VXNlckluaXRpYXRlZENpcmFEbGcsIHMpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdFVzZXJJbml0aWF0ZWRDaXJhRGxnKCkgeyBhbXRzdGFjay5BTVRfVXNlckluaXRpYXRlZENvbm5lY3Rpb25TZXJ2aWNlX1JlcXVlc3RTdGF0ZUNoYW5nZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPWQxMV06Y2hlY2tlZCcpLnZhbHVlLCBudWxsLCBlZGl0VXNlckluaXRpYXRlZENpcmFEbGcyKTsgfQ0KICAgICAgICBmdW5jdGlvbiBlZGl0VXNlckluaXRpYXRlZENpcmFEbGcyKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IGlmIChzdGF0dXMgPT0gMjAwKSB7IGFtdHN0YWNrLkdldCgnQU1UX1VzZXJJbml0aWF0ZWRDb25uZWN0aW9uU2VydmljZScsIGVkaXRVc2VySW5pdGlhdGVkQ2lyYURsZzMsIDAsIDEpOyB9IH0NCiAgICAgICAgZnVuY3Rpb24gZWRpdFVzZXJJbml0aWF0ZWRDaXJhRGxnMyhzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgeyBpZiAoc3RhdHVzID09IDIwMCkgeyB4eFVzZXJJbml0aWF0ZWRDaXJhID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlUmVtb3RlQWNjZXNzKCk7IH0gfQ0KDQogICAgICAgIHZhciB4eFNob3dTZXJ2ZXJEZXRhaWxzSGFuZGxlOw0KICAgICAgICBmdW5jdGlvbiBzaG93U2VydmVyRGV0YWlscyhoKSB7DQogICAgICAgICAgICB4eFNob3dTZXJ2ZXJEZXRhaWxzSGFuZGxlID0gaDsNCiAgICAgICAgICAgIHZhciBzZXJ2ZXIgPSB4eENpcmFTZXJ2ZXJzW2hdOw0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJBY2Nlc3MgTmFtZSIsIHNlcnZlclsiQWNjZXNzSW5mbyJdKTsNCiAgICAgICAgICAgIGlmIChzZXJ2ZXJbIlBvcnQiXSkgeCArPSBhZGRIdG1sVmFsdWUoIlBvcnQiLCBzZXJ2ZXJbIlBvcnQiXSk7DQogICAgICAgICAgICBpZiAoc2VydmVyWyJDTiJdKSB4ICs9IGFkZEh0bWxWYWx1ZSgiQ29tbW9uIE5hbWUiLCBzZXJ2ZXJbIkNOIl0pOw0KDQogICAgICAgICAgICB2YXIgY3JlZGVudGlhbGxpbmsgPSBnZXRFbGVtZW50V2l0aENvbnRleHRTZWxlY3RvclZhbHVlKHh4UmVtb3RlQWNjZXNzQ3JlZGVudGlhTGlua3MsIHNlcnZlclsnTmFtZSddKTsNCiAgICAgICAgICAgIGlmIChjcmVkZW50aWFsbGluaykgew0KICAgICAgICAgICAgICAgIHZhciBjcmVkZW50aWFsc2VsZWN0b3J2YWx1ZSA9IGNyZWRlbnRpYWxsaW5rWydFbGVtZW50SW5Db250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVsnVmFsdWUnXTsNCiAgICAgICAgICAgICAgICBpZiAoY3JlZGVudGlhbHNlbGVjdG9ydmFsdWUuaW5kZXhPZignVXNlcm5hbWUnKSA+IDApIHsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0F1dGhlbnRpY2F0aW9uIFR5cGUnLCAnVXNlciAmIFBhc3MgLyBTZXJ2ZXItQXV0aCBUTFMnKTsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ1JlbW90ZSBJRCcsIGdldEluc3RhbmNlKHh4TVBTVXNlclBhc3MsIGNyZWRlbnRpYWxzZWxlY3RvcnZhbHVlKVsnUmVtb3RlSUQnXSk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoJ0F1dGhlbnRpY2F0aW9uIFR5cGUnLCAnQ2VydGlmaWNhdGUgLyBNdXR1YWwtQXV0aCBUTFMnKTsNCg0KICAgICAgICAgICAgICAgICAgICB2YXIgYyA9IGdldEluc3RhbmNlKHh4Q2VydGlmaWNhdGVzLCBjcmVkZW50aWFsc2VsZWN0b3J2YWx1ZSk7DQogICAgICAgICAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCdDZXJ0aWZpY2F0ZSBOYW1lJywgcGFyc2VDZXJ0TmFtZShjWydTdWJqZWN0J10pWydDTiddKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHZhciBidXR0b25zID0gMTsNCiAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIGJ1dHRvbnMgPSA1Ow0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIlJlbW90ZSBTZXJ2ZXIgIyIgKyAoaCArIDEpLCBidXR0b25zLCBzaG93U2VydmVyRGV0YWlsc09rLCB4KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGdldEVsZW1lbnRXaXRoQ29udGV4dFNlbGVjdG9yVmFsdWUoZWxlbWVudHMsIHZhbHVlKSB7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGVsZW1lbnRzKSB7DQogICAgICAgICAgICAgICAgZWxlbWVudHNbaV1bJ0VsZW1lbnRQcm92aWRpbmdDb250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSA9IE1ha2VUb0FycmF5KGVsZW1lbnRzW2ldWydFbGVtZW50UHJvdmlkaW5nQ29udGV4dCddWydSZWZlcmVuY2VQYXJhbWV0ZXJzJ11bJ1NlbGVjdG9yU2V0J11bJ1NlbGVjdG9yJ10pOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gZWxlbWVudHNbaV1bJ0VsZW1lbnRQcm92aWRpbmdDb250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXSkgeyBpZiAoZWxlbWVudHNbaV1bJ0VsZW1lbnRQcm92aWRpbmdDb250ZXh0J11bJ1JlZmVyZW5jZVBhcmFtZXRlcnMnXVsnU2VsZWN0b3JTZXQnXVsnU2VsZWN0b3InXVtqXVsnVmFsdWUnXSA9PSB2YWx1ZSkgcmV0dXJuIGVsZW1lbnRzW2ldOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gbnVsbDsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXJ2ZXJEZXRhaWxzT2socikgew0KICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBzZWxlY3RlZCBDSVJBIHNlcnZlciANCiAgICAgICAgICAgIGlmIChyID09IDIpIHsgYW10c3RhY2suRGVsZXRlKCdBTVRfTWFuYWdlbWVudFByZXNlbmNlUmVtb3RlU0FQJywgeyAnTmFtZSc6IHh4Q2lyYVNlcnZlcnNbeHhTaG93U2VydmVyRGV0YWlsc0hhbmRsZV1bJ05hbWUnXSB9LCBzaG93U2VydmVyRGV0YWlsc09rMik7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTZXJ2ZXJEZXRhaWxzT2syKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSA0MDgpIHsgbWVzc2FnZWJveCgnUmVtb3RlIFNlcnZlciBSZW1vdmFsJywgJ1VuYWJsZSB0byByZW1vdmUgc2VydmVyLCBhY2Nlc3MgZGVuaWVkLicpOyB9IGVsc2UgeyBQdWxsUmVtb3RlQWNjZXNzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHBhcnNlQ2VydE5hbWUoeCkgew0KICAgICAgICAgICAgdmFyIGosIHIgPSB7fSwgeHggPSB4LnNwbGl0KCcsJyk7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHh4KSB7IGogPSB4eFtpXS5pbmRleE9mKCc9Jyk7IHJbeHhbaV0uc3Vic3RyaW5nKDAsIGopXSA9IHh4W2ldLnN1YnN0cmluZyhqICsgMSk7IH0NCiAgICAgICAgICAgIHJldHVybiByOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBmdW5jdGlvbiBzaG93UHJveHlEZXRhaWxzKGgpIHsNCiAgICAgICAgICAgIHZhciBwcm94eSA9IHh4UmVtb3RlQWNjZXNzWyJJUFNfSFRUUFByb3h5QWNjZXNzUG9pbnQiXS5yZXNwb25zZXNbaF07DQoNCiAgICAgICAgICAgIHZhciB4ID0gYWRkSHRtbFZhbHVlKCJBY2Nlc3MgbmFtZSIsIHByb3h5WyJBY2Nlc3NJbmZvIl0gKyAnOicgKyBwcm94eVsiUHJveHlQb3J0Il0pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkROUyBzdWZmZXgiLCBwcm94eVsiTmV0d29ya0Ruc1N1ZmZpeCJdKTsNCiAgICAgICAgICAgIC8veCArPSBhZGRIdG1sVmFsdWUoIlByb3h5IHR5cGUiLCBbJ0FkbWluaXN0cmF0b3InLCAnT3BlcmF0aW5nIHN5c3RlbSddW3Byb3h5WyJQcm94eVR5cGUiXV0pOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIlByb3h5IHR5cGUiLCBbJ0FkbWluaXN0cmF0b3InLCAnT3BlcmF0aW5nIHN5c3RlbSddW3Byb3h5WyJUeXBlIl1dKTsNCiAgICAgICAgICAgIC8veCArPSBhZGRIdG1sVmFsdWUoIkxhc3QgdGltZSB1c2VkIiwgcHJveHlbIkxhc3RUaW1lVXNlZCJdKTsNCg0KICAgICAgICAgICAgdmFyIGJ1dHRvbnMgPSAxOw0KICAgICAgICAgICAgaWYgKHh4QWNjb3VudEFkbWluTmFtZSkgeyBidXR0b25zID0gNTsgfQ0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIkhUVFAgUHJveHkgIyIgKyAoaCArIDEpLCBidXR0b25zLCBzaG93UHJveHlEZXRhaWxzT2ssIHgsIGgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1Byb3h5RGV0YWlsc09rKHIsIGgpIHsNCiAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgc2VsZWN0ZWQgcHJveHkgc2VydmVyDQogICAgICAgICAgICB2YXIgcHJveHkgPSB4eFJlbW90ZUFjY2Vzc1siSVBTX0hUVFBQcm94eUFjY2Vzc1BvaW50Il0ucmVzcG9uc2VzW2hdOw0KICAgICAgICAgICAgaWYgKHIgPT0gMikgeyBhbXRzdGFjay5EZWxldGUoJ0lQU19IVFRQUHJveHlBY2Nlc3NQb2ludCcsIHsgJ05hbWUnOiBwcm94eVsnTmFtZSddIH0sIHNob3dQcm94eURldGFpbHNPazIpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UHJveHlEZXRhaWxzT2syKHN0YWNrLCBuYW1lLCByZXNwb25zZXMsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSA0MDgpIHsgbWVzc2FnZWJveCgnSFRUUCBQcm94eSBSZW1vdmFsJywgJ1VuYWJsZSB0byByZW1vdmUgSFRUUCBwcm94eSwgYWNjZXNzIGRlbmllZC4nKTsgfSBlbHNlIHsgUHVsbFJlbW90ZUFjY2VzcygpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NQcm94eSgpIHsNCiAgICAgICAgICAgIC8vIEFkZFJlbW90ZUFjY2Vzc1Byb3h5IEhvc3QgbmFtZSA9IDIsIElwdjQgPSAzLCBJcHY2ID0gNA0KICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48c2VsZWN0IGlkPWQydHlwZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDZweCBvbmNoYW5nZT1BZGRSZW1vdGVBY2Nlc3NQcm94eVVwZGF0ZSgpPjxvcHRpb24gdmFsdWU9Mj5Ib3N0bmFtZSBGUUROPG9wdGlvbiB2YWx1ZT0zPklQdjQgYWRkcmVzczxvcHRpb24gdmFsdWU9ND5JUHY2IGFkZHJlc3M8L3NlbGVjdD48ZGl2PkNvbm5lY3Rpb24gdHlwZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMmhvc3Qgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggbWF4bGVuZ3RoPTI1NSBvbmtleXVwPUFkZFJlbW90ZUFjY2Vzc1Byb3h5VXBkYXRlKCk+PGRpdiBpZD1kMnR5cGVzcGFuPjwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMnBvcnQgb25rZXlwcmVzcz0icmV0dXJuIChldmVudC5jaGFyQ29kZSA9PSAwIHx8IChldmVudC5jaGFyQ29kZSA+PSA0OCAmJiBldmVudC5jaGFyQ29kZSA8PSA1NykpIiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMDBweCBvbmtleXVwPUFkZFJlbW90ZUFjY2Vzc1Byb3h5VXBkYXRlKCk+PGRpdj5Qb3J0PC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWQyZG9tYWluIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IG1heGxlbmd0aD0xOTEgb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NQcm94eVVwZGF0ZSgpPjxkaXY+RE5TIHN1ZmZpeDwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQWRkIEhUVFAgUHJveHkiLCAzLCBBZGRSZW1vdGVBY2Nlc3NQcm94eU9rLCB4KTsNCiAgICAgICAgICAgIEFkZFJlbW90ZUFjY2Vzc1Byb3h5VXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NQcm94eVVwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBvayA9IChRKCdkMmhvc3QnKS52YWx1ZS5sZW5ndGggIT0gMCkgJiYgKFEoJ2QyZG9tYWluJykudmFsdWUubGVuZ3RoICE9IDApOw0KICAgICAgICAgICAgaWYgKChRKCdkMnBvcnQnKS52YWx1ZS5sZW5ndGggPT0gMCkgfHwgKHBhcnNlSW50KFEoJ2QycG9ydCcpLnZhbHVlKSA+IDY1NTM1KSkgeyBvayA9IGZhbHNlOyB9DQogICAgICAgICAgICBRRSgnaWR4X2RsZ09rQnV0dG9uJywgb2spOw0KICAgICAgICAgICAgUUgoJ2QydHlwZXNwYW4nLCBbJycsICcnLCAnRlFETiAvIGhvc3RuYW1lJywgJ0lQdjQgYWRkcmVzcycsICdJUHY2IGFkZHJlc3MnXVtRKCdkMnR5cGUnKS52YWx1ZV0pOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gQWRkUmVtb3RlQWNjZXNzUHJveHlPaygpIHsNCiAgICAgICAgICAgIGFtdHN0YWNrLklQU19IVFRQUHJveHlTZXJ2aWNlX0FkZFByb3h5QWNjZXNzUG9pbnQoUSgnZDJob3N0JykudmFsdWUsIFEoJ2QydHlwZScpLnZhbHVlLCBwYXJzZUludChRKCdkMnBvcnQnKS52YWx1ZSksIFEoJ2QyZG9tYWluJykudmFsdWUsIEFkZFJlbW90ZUFjY2Vzc1Byb3h5T2syKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIEFkZFJlbW90ZUFjY2Vzc1Byb3h5T2syKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goJ0FkZCBQcm94eSBTZXJ2ZXInLCAnRmFpbGVkIHRvIGFkZCBwcm94eSwgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9IDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdBZGQgUHJveHkgU2VydmVyJywgcmVzcG9uc2UuQm9keS5SZXR1cm5WYWx1ZVN0ci5yZXBsYWNlKC9fL2csICcgJykpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsUmVtb3RlQWNjZXNzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXIoKSB7DQoNCiAgICAgICAgICAgIHZhciBjZXJ0cyA9IFtdOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eENlcnRpZmljYXRlcykgeyBpZiAoeHhDZXJ0aWZpY2F0ZXNbaV0uWFByaXZhdGVLZXkpIHsgY2VydHMucHVzaCh4eENlcnRpZmljYXRlc1tpXSk7IH0gfQ0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMnR5cGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9QWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk+PG9wdGlvbiB2YWx1ZT0yMDE+SG9zdG5hbWUgRlFETjxvcHRpb24gdmFsdWU9Mz5JUHY0IGFkZHJlc3M8L3NlbGVjdD48ZGl2PkNvbm5lY3Rpb24gdHlwZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMm5hbWUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2IGlkPWQybG5hbWU+PC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWQycG9ydCBvbmtleXByZXNzPSJyZXR1cm4gKGV2ZW50LmNoYXJDb2RlID09IDAgfHwgKGV2ZW50LmNoYXJDb2RlID49IDQ4ICYmIGV2ZW50LmNoYXJDb2RlIDw9IDU3KSkiIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IHZhbHVlPTQ0MzMgb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2PlNlcnZlciBwb3J0PC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHggaWQ9ZDJ1Y24+PGlucHV0IGlkPWQyY24gc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2PlNlcnZlciBDb21tb24gTmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9ZDJhdXRoIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwNnB4IG9uY2hhbmdlPUFkZFJlbW90ZUFjY2Vzc1NlcnZlclVwZGF0ZSgpPic7DQogICAgICAgICAgICBpZiAoY2VydHMubGVuZ3RoID4gMCkgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPTE+Q2VydGlmaWNhdGUnOyB9DQogICAgICAgICAgICB4ICs9ICc8b3B0aW9uIHZhbHVlPTI+VXNlcm5hbWUvUGFzc3dvcmQ8L3NlbGVjdD48ZGl2PkF1dGhlbnRpY2F0aW9uIHR5cGU8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgeCArPSAnPHNwYW4gaWQ9ZDJ1dHlwZT4nOw0KICAgICAgICAgICAgeCArPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48aW5wdXQgaWQ9ZDJ1c2VyIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4IG9ua2V5dXA9QWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk+PGRpdj5Vc2VybmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMnBhc3Mgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjAwcHggb25rZXl1cD1BZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKT48ZGl2PlN0cm9uZyBQYXNzd29yZDwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8L3NwYW4+JzsNCiAgICAgICAgICAgIHggKz0gJzxzcGFuIGlkPWQyY3R5cGU+JzsNCiAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMmNlcnQgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjA2cHggb25jaGFuZ2U9QWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gY2VydHMpIHsgeCArPSAnPG9wdGlvbiB2YWx1ZT0nICsgY2VydHNbaV1bJ0luc3RhbmNlSUQnXS5zdWJzdHJpbmcoMzQpICsgJz4nICsgcGFyc2VDZXJ0TmFtZShjZXJ0c1tpXVsnU3ViamVjdCddKVsnQ04nXTsgfQ0KICAgICAgICAgICAgeCArPSAnPC9zZWxlY3Q+PGRpdj5DZXJ0aWZpY2F0ZTwvZGl2PjwvZGl2Pjwvc3Bhbj4nOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIkFkZCBSZW1vdGUgU2VydmVyIiwgMywgQWRkUmVtb3RlQWNjZXNzU2VydmVyT2ssIHgpOw0KICAgICAgICAgICAgQWRkUmVtb3RlQWNjZXNzU2VydmVyVXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJPaygpIHsNCiAgICAgICAgICAgIHZhciBjcmVmLCB1c2VyLCBwYXNzLCBjbjsNCiAgICAgICAgICAgIGlmIChRKCdkMmF1dGgnKS52YWx1ZSA9PSAxKSB7DQogICAgICAgICAgICAgICAgY3JlZiA9ICc8QWRkcmVzcyB4bWxucz0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNC8wOC9hZGRyZXNzaW5nIj5odHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA0LzA4L2FkZHJlc3Npbmc8L0FkZHJlc3M+PFJlZmVyZW5jZVBhcmFtZXRlcnMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDQvMDgvYWRkcmVzc2luZyI+PFJlc291cmNlVVJJIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzbWFuLzEvd3NtYW4ueHNkIj5odHRwOi8vaW50ZWwuY29tL3diZW0vd3NjaW0vMS9hbXQtc2NoZW1hLzEvQU1UX1B1YmxpY0tleUNlcnRpZmljYXRlPC9SZXNvdXJjZVVSST48U2VsZWN0b3JTZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmRtdGYub3JnL3diZW0vd3NtYW4vMS93c21hbi54c2QiPjxTZWxlY3RvciBOYW1lPSJJbnN0YW5jZUlEIj5JbnRlbChyKSBBTVQgQ2VydGlmaWNhdGU6IEhhbmRsZTogJyArIFEoJ2QyY2VydCcpLnZhbHVlICsgJzwvU2VsZWN0b3I+PC9TZWxlY3RvclNldD48L1JlZmVyZW5jZVBhcmFtZXRlcnM+JzsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdXNlciA9IFEoJ2QydXNlcicpLnZhbHVlOw0KICAgICAgICAgICAgICAgIHBhc3MgPSBRKCdkMnBhc3MnKS52YWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChRKCdkMmNuJykudmFsdWUubGVuZ3RoID4gMCkgY24gPSBRKCdkMmNuJykudmFsdWU7DQogICAgICAgICAgICBhbXRzdGFjay5BTVRfUmVtb3RlQWNjZXNzU2VydmljZV9BZGRNcFNlcnZlcihRKCdkMm5hbWUnKS52YWx1ZSwgUSgnZDJ0eXBlJykudmFsdWUsIFEoJ2QycG9ydCcpLnZhbHVlLCBRKCdkMmF1dGgnKS52YWx1ZSwgY3JlZiwgdXNlciwgcGFzcywgY24sIEFkZFJlbW90ZUFjY2Vzc1NlcnZlck9rMik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJPazIoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7DQogICAgICAgICAgICAgICAgbWVzc2FnZWJveCgnQWRkIEludGVybmV0IFNlcnZlcicsICdGYWlsZWQgdG8gYWRkIHNlcnZlciwgc3RhdHVzICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5Cb2R5WyJSZXR1cm5WYWx1ZSJdICE9IDApIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdBZGQgSW50ZXJuZXQgU2VydmVyJywgcmVzcG9uc2UuQm9keS5SZXR1cm5WYWx1ZVN0ci5yZXBsYWNlKC9fL2csICcgJykpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBQdWxsUmVtb3RlQWNjZXNzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBBZGRSZW1vdGVBY2Nlc3NTZXJ2ZXJVcGRhdGUoKSB7DQogICAgICAgICAgICB2YXIgb2sgPSAoUSgnZDJuYW1lJykudmFsdWUubGVuZ3RoICE9IDApOw0KICAgICAgICAgICAgaWYgKFEoJ2QydHlwZScpLnZhbHVlID09IDMgJiYgb2sgPT0gdHJ1ZSkgIHsgb2sgPSAoUSgnZDJjbicpLnZhbHVlLmxlbmd0aCAhPSAwKTsgfQ0KICAgICAgICAgICAgaWYgKFEoJ2QyYXV0aCcpLnZhbHVlID09IDIgJiYgb2sgPT0gdHJ1ZSkgeyBvayA9ICgoUSgnZDJ1c2VyJykudmFsdWUubGVuZ3RoICE9IDApICYmIChwYXNzd29yZGNoZWNrKFEoJ2QycGFzcycpLnZhbHVlKSkpOyB9DQogICAgICAgICAgICBpZiAoKFEoJ2QycG9ydCcpLnZhbHVlLmxlbmd0aCA9PSAwKSB8fCAocGFyc2VJbnQoUSgnZDJwb3J0JykudmFsdWUpID4gNjU1MzUpKSB7IG9rID0gZmFsc2U7IH0NCiAgICAgICAgICAgIGlmICgoUSgnZDJuYW1lJykudmFsdWUuaW5kZXhPZignOicpICE9IC0xKSB8fCAoKFEoJ2QydHlwZScpLnZhbHVlID09IDMpICYmIChRKCdkMmNuJykudmFsdWUuaW5kZXhPZignOicpICE9IC0xKSkpIHsgb2sgPSBmYWxzZTsgfQ0KICAgICAgICAgICAgUUgoJ2QybG5hbWUnLCAoUSgnZDJ0eXBlJykudmFsdWUgPT0gMjAxKSA/ICdIb3N0bmFtZScgOiAnSVB2NCBBZGRyZXNzJyk7DQogICAgICAgICAgICBRVignZDJ1dHlwZScsIFEoJ2QyYXV0aCcpLnZhbHVlID09IDIpOw0KICAgICAgICAgICAgUVYoJ2QydWNuJywgUSgnZDJ0eXBlJykudmFsdWUgPT0gMyk7DQogICAgICAgICAgICBRVignZDJjdHlwZScsIFEoJ2QyYXV0aCcpLnZhbHVlID09IDEpOw0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIG9rKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gRWRpdCBDb21wdXRlciBOYW1lICYgRE5TIGZlYXR1cmUNCiAgICAgICAgLy8NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RWRpdE5hbWVEbGcoeCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHQgPSBhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlWyJIb3N0TmFtZSJdLCB5ID0gYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsiRG9tYWluTmFtZSJdOw0KICAgICAgICAgICAgaWYgKHkgIT0gbnVsbCAmJiB5Lmxlbmd0aCA+IDApIHQgKz0gIi4iICsgeTsNCiAgICAgICAgICAgIHZhciByID0gJzxicj48ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1kMTFuYW1lIHZhbHVlPSInICsgdCArICciIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4PjxkaXY+TmFtZSAmIERvbWFpbjwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICBpZiAoeCA9PSAxKSB7DQogICAgICAgICAgICAgICAgdmFyIHMgPSAoYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsiU2hhcmVkRlFETiJdID09IHRydWUpOw0KICAgICAgICAgICAgICAgIHIgKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PHNlbGVjdCBpZD1kMTFmcWRuIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIwMHB4PjxvcHRpb24gdmFsdWU9dHJ1ZSAnICsgKHM/J3NlbGVjdGVkJzonJykgKyAnPlNoYXJlZCwgc2FtZSBhcyBPUzxvcHRpb24gdmFsdWU9ImZhbHNlIiAnICsgKHM/Jyc6J3NlbGVjdGVkJykgKyAnPkRlZGljYXRlZCwgZGlmZmVyZW50IGZyb20gT1M8L3NlbGVjdD48ZGl2Pk5hbWUgU2hhcmluZzwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnQ29tcHV0ZXIgTmFtZScsIDMsIGVkaXROYW1lRGxnT2ssIHIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZWRpdE5hbWVEbGdPaygpIHsNCiAgICAgICAgICAgIHZhciBpID0gUSgnZDExbmFtZScpLnZhbHVlLCBqID0gaS5pbmRleE9mKCcuJyksIGsgPSAnJzsNCiAgICAgICAgICAgIGlmIChqID49IDApIHsgayA9IGkuc3Vic3RyaW5nKGogKyAxKTsgaSA9IGkuc3Vic3RyaW5nKDAsIGopOyB9DQogICAgICAgICAgICB2YXIgY2xvbmUgPSBDbG9uZShhbXRzeXNzdGF0ZVsnQU1UX0dlbmVyYWxTZXR0aW5ncyddLnJlc3BvbnNlKTsNCiAgICAgICAgICAgIGNsb25lWyJIb3N0TmFtZSJdID0gaTsNCiAgICAgICAgICAgIGNsb25lWyJEb21haW5OYW1lIl0gPSBrOw0KICAgICAgICAgICAgaWYgKFEoJ2QxMWZxZG4nKSkgeyBjbG9uZVsiU2hhcmVkRlFETiJdID0gZDExZnFkbi52YWx1ZTsgfQ0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfR2VuZXJhbFNldHRpbmdzJywgY2xvbmUsIGZ1bmN0aW9uKCkgeyBhbXRzdGFjay5HZXQoJ0FNVF9HZW5lcmFsU2V0dGluZ3MnLCBjb21wdXRlck5hbWVHZXQsIDAsIDEpOyB9LCAwLCAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVyTmFtZUdldChzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZSA9IHJlc3BvbnNlLkJvZHk7IHVwZGF0ZVN5c3RlbVN0YXR1cygpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RWRpdERuc0RsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBnID0gYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZTsNCiAgICAgICAgICAgIHZhciB2ID0gMDsNCiAgICAgICAgICAgIGlmIChnWyJERE5TVXBkYXRlQnlESENQU2VydmVyRW5hYmxlZCJdID09IHRydWUpIHYgPSAxOw0KICAgICAgICAgICAgaWYgKGdbIkRETlNVcGRhdGVFbmFibGVkIl0gPT0gdHJ1ZSkgdiA9IDI7DQogICAgICAgICAgICBpZHhfZDIzZGRucy52YWx1ZSA9IHY7DQogICAgICAgICAgICBpZHhfZDIzaW50ZXJ2YWwudmFsdWUgPSBnWydERE5TUGVyaW9kaWNVcGRhdGVJbnRlcnZhbCddOw0KICAgICAgICAgICAgaWR4X2QyM3R0bC52YWx1ZSA9IGdbJ0RETlNUVEwnXTsNCiAgICAgICAgICAgIHNob3dFZGl0RG5zRGxnQ2hhbmdlKCk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDIzLCAnRHluYW1pYyBETlMgY2xpZW50JywgMywgc2hvd0VkaXREbnNEbGdPayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93RWRpdERuc0RsZ09rKCkgew0KICAgICAgICAgICAgdmFyIGNsb25lID0gQ2xvbmUoYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZSk7DQogICAgICAgICAgICBjbG9uZVsiREROU1VwZGF0ZUVuYWJsZWQiXSA9ICgoaWR4X2QyM2RkbnMudmFsdWUgPT0gMik/dHJ1ZTpmYWxzZSk7DQogICAgICAgICAgICBjbG9uZVsiREROU1VwZGF0ZUJ5REhDUFNlcnZlckVuYWJsZWQiXSA9ICgoaWR4X2QyM2RkbnMudmFsdWUgPT0gMSk/dHJ1ZTpmYWxzZSk7DQogICAgICAgICAgICBpZiAoaWR4X2QyM2RkbnMudmFsdWUgPT0gMikgew0KICAgICAgICAgICAgICAgIGNsb25lWyJERE5TUGVyaW9kaWNVcGRhdGVJbnRlcnZhbCJdID0gaWR4X2QyM2ludGVydmFsLnZhbHVlOw0KICAgICAgICAgICAgICAgIGNsb25lWyJERE5TVFRMIl0gPSBpZHhfZDIzdHRsLnZhbHVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCdBTVRfR2VuZXJhbFNldHRpbmdzJywgY2xvbmUsIGZ1bmN0aW9uKCkgeyBhbXRzdGFjay5HZXQoJ0FNVF9HZW5lcmFsU2V0dGluZ3MnLCBjb21wdXRlck5hbWVHZXQsIDAsIDEpOyB9LCAwLCAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dFZGl0RG5zRGxnQ2hhbmdlKCkgew0KICAgICAgICAgICAgUUUoJ2lkeF9kMjNpbnRlcnZhbCcsIGlkeF9kMjNkZG5zLnZhbHVlID09IDIpOw0KICAgICAgICAgICAgUUUoJ2lkeF9kMjN0dGwnLCBpZHhfZDIzZGRucy52YWx1ZSA9PSAyKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEludGVsIEFNVCBGZWF0dXJlcw0KICAgICAgICAvLw0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dGZWF0dXJlc0RsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgIXh4QWNjb3VudEFkbWluTmFtZSkgcmV0dXJuOw0KICAgICAgICAgICAgaWR4X2Q5cmVkaXIuY2hlY2tlZCA9IGFtdGZlYXR1cmVzWzBdLCBpZHhfZDlrdm0uY2hlY2tlZCA9IGFtdGZlYXR1cmVzWzNdLCBpZHhfZDlpZGVyLmNoZWNrZWQgPSBhbXRmZWF0dXJlc1syXSwgaWR4X2Q5c29sLmNoZWNrZWQgPSBhbXRmZWF0dXJlc1sxXTsNCiAgICAgICAgICAgIFFWKCdpZHhfZDlrdm1fZGl2JywgYW10ZmVhdHVyZXNbM10gIT0gdW5kZWZpbmVkKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoOSwgJ0ludGVsJnJlZzsgQU1UIEZlYXR1cmVzJywgMywgZmVhdHVyZXNEbGdPaykNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGZlYXR1cmVzRGxnT2soKSB7DQogICAgICAgICAgICB2YXIgciA9IGFtdHN5c3N0YXRlWydBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlJ10ucmVzcG9uc2U7DQogICAgICAgICAgICByWyJMaXN0ZW5lckVuYWJsZWQiXSA9IGlkeF9kOXJlZGlyLmNoZWNrZWQ7DQogICAgICAgICAgICByWyJFbmFibGVkU3RhdGUiXSA9IDMyNzY4ICsgKChpZHhfZDlpZGVyLmNoZWNrZWQ/MTowKSArIChpZHhfZDlzb2wuY2hlY2tlZD8yOjApKTsNCiAgICAgICAgICAgIGFtdHN0YWNrLkFNVF9SZWRpcmVjdGlvblNlcnZpY2VfUmVxdWVzdFN0YXRlQ2hhbmdlKHJbIkVuYWJsZWRTdGF0ZSJdLA0KICAgICAgICAgICAgICAgIGZ1bmN0aW9uKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goIkVycm9yIiwgIlJlZGlyZWN0aW9uU2VydmljZSwgUmVxdWVzdFN0YXRlQ2hhbmdlIEVycm9yICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suQ0lNX0tWTVJlZGlyZWN0aW9uU0FQX1JlcXVlc3RTdGF0ZUNoYW5nZSgoaWR4X2Q5a3ZtLmNoZWNrZWQpPzI6MywgMCwNCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goIkVycm9yIiwgIktWTVJlZGlyZWN0aW9uU0FQLCBSZXF1ZXN0U3RhdGVDaGFuZ2UgRXJyb3IgIiArIHN0YXR1cyk7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJBTVRfUmVkaXJlY3Rpb25TZXJ2aWNlIiwgciwgZnVuY3Rpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgeyBtZXNzYWdlYm94KCJFcnJvciIsICJSZWRpcmVjdGlvblNlcnZpY2UgUFVUIEVycm9yICIgKyBzdGF0dXMpOyByZXR1cm47IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbXRzdGFjay5HZXQoIkFNVF9SZWRpcmVjdGlvblNlcnZpY2UiLCBmZWF0dXJlc0RsZ0dldDEsIDAsIDEpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLkdldCgiQ0lNX0tWTVJlZGlyZWN0aW9uU0FQIiwgZmVhdHVyZXNEbGdHZXQyLCAwLCAxKSB9LCAwLCAxKQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgKTt9DQogICAgICAgICAgICApOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZmVhdHVyZXNEbGdHZXQxKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgeyBhbXRzeXNzdGF0ZVsnQU1UX1JlZGlyZWN0aW9uU2VydmljZSddLnJlc3BvbnNlID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlU3lzdGVtU3RhdHVzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGZlYXR1cmVzRGxnR2V0MihzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsgYW10c3lzc3RhdGVbJ0NJTV9LVk1SZWRpcmVjdGlvblNBUCddLnJlc3BvbnNlID0gcmVzcG9uc2UuQm9keTsgdXBkYXRlU3lzdGVtU3RhdHVzKCk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEludGVsIEFNVCBVc2VyIENvbnNlbnQNCiAgICAgICAgLy8NCg0KICAgICAgICBmdW5jdGlvbiBzaG93Q29uc2VudERsZygpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHZhciBvcHRpbnJlcXVpcmVkID0gYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXS5yZXNwb25zZVsiT3B0SW5SZXF1aXJlZCJdOw0KICAgICAgICAgICAgaWR4X2QxMG5vbmUuY2hlY2tlZCA9IChvcHRpbnJlcXVpcmVkID09IDApOw0KICAgICAgICAgICAgaWR4X2QxMGt2bS5jaGVja2VkID0gKG9wdGlucmVxdWlyZWQgPT0gMSk7DQogICAgICAgICAgICBpZHhfZDEwYWxsLmNoZWNrZWQgPSAob3B0aW5yZXF1aXJlZCA9PSAweEZGRkZGRkZGKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTAsICdVc2VyIENvbnNlbnQnLCAzLCBjb25zZW50RGxnT2spDQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBjb25zZW50RGxnT2soKSB7DQogICAgICAgICAgICBhbXRzeXNzdGF0ZVsnSVBTX09wdEluU2VydmljZSddLnJlc3BvbnNlWyJPcHRJblJlcXVpcmVkIl0gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPWQxMF06Y2hlY2tlZCcpLnZhbHVlOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCJJUFNfT3B0SW5TZXJ2aWNlIiwgYW10c3lzc3RhdGVbJ0lQU19PcHRJblNlcnZpY2UnXS5yZXNwb25zZSwgZnVuY3Rpb24oKSB7IGFtdHN0YWNrLkdldCgiSVBTX09wdEluU2VydmljZSIsIGNvbnNlbnRHZXQsIDAsIDEpOyB9LCAwLCAxKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIGNvbnNlbnRHZXQoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7IFB1bGxTeXN0ZW1TdGF0dXMoKTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gTkVUV09SSyBTRVRUSU5HUw0KICAgICAgICAvLw0KDQoNCg0KICAgICAgICAvKg0KICAgICAgICBJUHY2ICVBZGRyVHlwZSU6DQogICAgICAgICAgICAwIC0gQWRkcmVzcyBnZW5lcmF0ZWQgZnJvbTogZmU4MDo6LzY0ICsgSW50ZXJmYWNlIElELA0KICAgICAgICAgICAgMSAtIEFkZHJlc3MgZ2VuZXJhdGVkIGZyb206IFtSb3V0ZXIgYWR2ZXJ0aXNlZCBwcmVmaXhdICsgW0ludGVyZmFjZSBJRF0sDQogICAgICAgICAgICAyIC0gR2xvYmFsIElQdjYgYWRkcmVzcyBvYnRhaW5lZCBmcm9tIERIQ1B2NiBTZXJ2ZXIsDQogICAgICAgICAgICAzIC0gSVB2NiB1bmljYXN0IGFkZHJlc3MgY29uZmlndXJlZCBieSB0aGUgdXNlciwNCiAgICAgICAgICAgIDQgLSBSZXR1cm5lZCBieSBGVyBmb3IgSVB2NiBhZGRyZXNzZXMgdGhhdCBhcmUgbm90IG93bmVkIGJ5IEZXIChzdWNoIGFzIElQdjYgcm91dGVyIGFkZHJlc3MsIGNvbmZpZ3VyYXRpb24gc2VydmVyIGFkZHJlc3MgZXRjLikNCg0KICAgICAgICBJUHY2ICVBZGRyU3RhdGUlOg0KICAgICAgICAgICAgMCAtIERBRCBpcyBzdGlsbCBpbiBwcm9jZXNzIGZvciB0aGlzIGFkZHJlc3MsDQogICAgICAgICAgICAxIC0gQWRkcmVzcyBpcyB2YWxpZCBhbmQgbWF5IGJlIHVzZWQgZm9yIG5ldyBjb21tdW5pY2F0aW9uLA0KICAgICAgICAgICAgMiAtIEFkZHJlc3MgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBuZXcgY29tbXVuaWNhdGlvbiwNCiAgICAgICAgICAgIDMgLSBDb3ZlcnMgYm90aCB0aGUgcHJlZmVycmVkIGFuZCBkZXByZWNhdGVkIHN0YXRlcywNCiAgICAgICAgICAgIDQgLSBUaGUgdmFsaWQgbGlmZXRpbWUgb2YgdGhlIGFkZHJlc3MgaGFzIGV4cGlyZWQsDQogICAgICAgICAgICA1IC0gQW4gaW50ZXJmYWNlIElEIGNvbGxpc2lvbiBoYXMgYmVlbiBkZXRlY3RlZCBmb3IgdGhpcyBhZGRyZXNzIHdoZW4gcGVyZm9ybWluZyBEQUQsDQogICAgICAgICAgICA2IC0gUmV0dXJuZWQgYnkgRlcgZm9yIElQdjYgYWRkcmVzc2VzIHRoYXQgYXJlIG5vdCBvd25lZCBieSBGVyAoc3VjaCBhcyBJUHY2IHJvdXRlciBhZGRyZXNzLCBjb25maWd1cmF0aW9uIHNlcnZlciBhZGRyZXNzIGV0Yy4NCiAgICAgICAgKi8NCiAgICAgICAgLy8gaXB2NmFkZHJ0eXBlIGFyZSBlbGVtZW50IDAgdG8gNCwgaXB2NmFkZHJzdGF0ZSBhcmUgNSBhbmQgYWZ0ZXIuIE1lcmdlZCBib3RoIGFycmF5cyB0byBjdXQgZG93biBzaXplDQogICAgICAgIHZhciBpcHY2YWRkcnR5cGUgPSBbIkxpbmsgbG9jYWwgYWRkcmVzcyIsICJOZXR3b3JrIGxvY2FsIGFkZHJlc3MiLCAiR2xvYmFsIGFkZHJlc3MiLCAiVXNlciBjb25maWd1cmVkIiwgIk5vdCBhbGxvd2VkIiwgIkRBRCBpbiBwcm9ncmVzcyIsICJ2YWxpZCIsICJkZXByZWNhdGVkIiwgInByZWZlcnJlZC9kZXByZWNhdGVkIiwgImV4cGlyZWQiLCAiY29sbGlzaW9uIiwgIm5vdCBhbGxvd2VkIl07DQogICAgICAgIGZ1bmN0aW9uIHNob3dJUHY2QWRkckRsZyhuZXRpZmlkLCBhZGRyc3RyKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9IFRhYmxlU3RhcnQoKTsNCiAgICAgICAgICAgIHQgPSBhZGRyc3RyLnNwbGl0KCcsJyk7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHQubGVuZ3RoOyBpICs9IDMpIHsNCiAgICAgICAgICAgICAgICB4ICs9IFRhYmxlRW50cnkoIjxiPiIgKyB0W2ldICsgIjwvYj48YnI+PHNwYW4gc3R5bGU9Zm9udC1zaXplOjEwcHg+IiArIGlwdjZhZGRydHlwZVt0W2kgKyAxXV0gKyAiLCAiICsgaXB2NmFkZHJ0eXBlWyt0W2kgKyAyXSArIDVdICsgIjwvc3Bhbj4iLCAiIik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAnSVB2NiBhZGRyZXNzZXMgZm9yICcgKyAobmV0aWZpZD09MD8nd2lyZWQnOid3aXJlbGVzcycpICsgJyBpbnRlcmZhY2UnLCAxLCBudWxsLCB4ICsgVGFibGVFbmQoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93SVB2NlN0YXRlRGxnKG5ldGlmaWQsIHN0YXRlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8ICFhbXRzeXNzdGF0ZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHp6ID0gYW10c3lzc3RhdGVbJ0lQU19JUHY2UG9ydFNldHRpbmdzJ10ucmVzcG9uc2VzW25ldGlmaWRdOw0KICAgICAgICAgICAgaXB2Nm1hbnVhbCA9IChuZXRpZmlkID09IDAgJiYgKGlzSXBBZGRyZXNzKHp6WyJJUHY2QWRkcmVzcyJdKSB8fCBpc0lwQWRkcmVzcyh6elsiRGVmYXVsdFJvdXRlciJdKSB8fCBpc0lwQWRkcmVzcyh6elsiUHJpbWFyeUROUyJdKSB8fCBpc0lwQWRkcmVzcyh6elsiU2Vjb25kYXJ5RE5TIl0pKSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF9kMjFtYW51YWxkaXYnLCBuZXRpZmlkID09IDApOw0KICAgICAgICAgICAgUVYoJ2lkX2QyMXN1Ym5ldGRpdicsIGZhbHNlKTsNCiAgICAgICAgICAgIFFWKCdkMjFvMCcsIHRydWUpOw0KICAgICAgICAgICAgUVYoJ2QyMWwwJywgdHJ1ZSk7DQogICAgICAgICAgICBRSCgnZDIxbDAnLCAnSVB2NiBkaXNhYmxlZCcpOw0KICAgICAgICAgICAgUUgoJ2QyMWwxJywgJ0lQdjYgZW5hYmxlZCwgYXV0b21hdGljJyk7DQogICAgICAgICAgICBRSCgnZDIxbDInLCAnSVB2NiBlbmFibGVkLCBhdXRvbWF0aWMgKyBtYW51YWwgYWRkcmVzc2UnKTsNCiAgICAgICAgICAgIGQyMW8wLmNoZWNrZWQgPSAhc3RhdGU7DQogICAgICAgICAgICBkMjFvMS5jaGVja2VkID0gc3RhdGUgJiYgIWlwdjZtYW51YWw7DQogICAgICAgICAgICBkMjFvMi5jaGVja2VkID0gc3RhdGUgJiYgaXB2Nm1hbnVhbDsNCiAgICAgICAgICAgIGlkeF9kMjFhZGRyZXNzLnZhbHVlID0gaXNJcEFkZHJlc3MoenpbIklQdjZBZGRyZXNzIl0sJycpOw0KICAgICAgICAgICAgaWR4X2QyMWdhdGV3YXkudmFsdWUgPSBpc0lwQWRkcmVzcyh6elsiRGVmYXVsdFJvdXRlciJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFkbnMxLnZhbHVlID0gaXNJcEFkZHJlc3MoenpbIlByaW1hcnlETlMiXSwnJyk7DQogICAgICAgICAgICBpZHhfZDIxZG5zMi52YWx1ZSA9IGlzSXBBZGRyZXNzKHp6WyJTZWNvbmRhcnlETlMiXSwnJyk7DQogICAgICAgICAgICB1cGRhdGVJUFNldHVwRGxnKCk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDIxLCAnSVB2NiBzdXBwb3J0IGZvciAnICsgKG5ldGlmaWQ9PTA/J3dpcmVkJzond2lyZWxlc3MnKSArICcgaW50ZXJmYWNlJywgMywgZnVuY3Rpb24oKSB7IHNob3dJUHY2U3RhdGVEbGdPayhuZXRpZmlkKSB9KQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0lQdjZTdGF0ZURsZ09rKG5ldGlmaWQpIHsNCiAgICAgICAgICAgIHZhciB6eiA9IGFtdHN5c3N0YXRlWydJUFNfSVB2NlBvcnRTZXR0aW5ncyddLnJlc3BvbnNlc1tuZXRpZmlkXTsNCiAgICAgICAgICAgIGlmIChuZXRpZmlkID09IDApIHsgLy8gV2UgY2FuIG9ubHkgc2V0IElQdjYgbWFudWFsIGFkZHJlc3MgZm9yIHdpcmVkIGludGVyZmFjZQ0KICAgICAgICAgICAgICAgIGlmIChkMjFvMS5jaGVja2VkKSB7IC8vIEZ1bGx5IGF1dG9tYXRpYywgY2xlYXIgYWxsIGFkZHJlc3Nlcw0KICAgICAgICAgICAgICAgICAgICB6elsiSVB2NkFkZHJlc3MiXSA9IHp6WyJEZWZhdWx0Um91dGVyIl0gPSB6elsiUHJpbWFyeUROUyJdID0genpbIlNlY29uZGFyeUROUyJdID0gIjo6IjsNCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJJUFNfSVB2NlBvcnRTZXR0aW5ncyIsIHp6LCBzaG93SVB2NlN0YXRlRGxnRG9uZSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChkMjFvMi5jaGVja2VkKSB7IC8vIE1hbnVhbCwgc2V0IGFkZHJlc3Nlcw0KICAgICAgICAgICAgICAgICAgICB6elsiSVB2NkFkZHJlc3MiXSA9IGlkeF9kMjFhZGRyZXNzLnZhbHVlOw0KICAgICAgICAgICAgICAgICAgICB6elsiRGVmYXVsdFJvdXRlciJdID0gaWR4X2QyMWdhdGV3YXkudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIHp6WyJQcmltYXJ5RE5TIl0gPSBpZHhfZDIxZG5zMS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgenpbIlNlY29uZGFyeUROUyJdID0gaWR4X2QyMWRuczIudmFsdWU7DQogICAgICAgICAgICAgICAgICAgIGFtdHN0YWNrLlB1dCgiSVBTX0lQdjZQb3J0U2V0dGluZ3MiLCB6eiwgc2hvd0lQdjZTdGF0ZURsZ0RvbmUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIC8vIFRoaXMgY29kZSBlbmFibGVzL2Rpc2FibGVzIElQdjYgZm9yIGEgZ2l2ZW4gaW50ZXJmYWNlLg0KICAgICAgICAgICAgdmFyIGVsZW1lbnRTZXR0aW5ncyA9IGFtdHN5c3N0YXRlWydDSU1fRWxlbWVudFNldHRpbmdEYXRhJ10ucmVzcG9uc2VzOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50U2V0dGluZ3MubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudFNldHRpbmdzW2ldWydTZXR0aW5nRGF0YSddICYmIGVsZW1lbnRTZXR0aW5nc1tpXVsnU2V0dGluZ0RhdGEnXVsnUmVmZXJlbmNlUGFyYW1ldGVycyddWydTZWxlY3RvclNldCddWydTZWxlY3RvciddWydWYWx1ZSddID09ICgnSW50ZWwocikgSVBTIElQdjYgU2V0dGluZ3MgJyArIG5ldGlmaWQpKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBjbG9uZSA9IENsb25lKGVsZW1lbnRTZXR0aW5nc1tpXSk7DQogICAgICAgICAgICAgICAgICAgIGNsb25lWydJc0N1cnJlbnQnXSA9ICgoZDIxbzAuY2hlY2tlZCk/MjoxKTsNCiAgICAgICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJDSU1fRWxlbWVudFNldHRpbmdEYXRhIiwgY2xvbmUsIHNob3dJUHY2U3RhdGVEbGdEb25lKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93SVB2NlN0YXRlRGxnRG9uZShzdGFjaywgbmFtZSwgcmVzcG9uc2UsIHN0YXR1cykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAyMDApIHsNCiAgICAgICAgICAgICAgICBhbXRzeXNzdGF0ZSA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICBQdWxsU3lzdGVtU3RhdHVzKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goJ0lQdjYgc3VwcG9ydCcsICdVbmFibGUgdG8gc2V0IElQdjYgc3RhdGUsIGVycm9yICcgKyBzdGF0dXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd1BpbmdBY3Rpb25EbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgZyA9IGFtdHN5c3N0YXRlWydBTVRfR2VuZXJhbFNldHRpbmdzJ10ucmVzcG9uc2U7DQogICAgICAgICAgICB2YXIgdiA9IChnWyJQaW5nUmVzcG9uc2VFbmFibGVkIl0gPT0gdHJ1ZSkgKyAoKGdbIlJtY3BQaW5nUmVzcG9uc2VFbmFibGVkIl0gPT0gdHJ1ZSkgPDwgMSk7DQogICAgICAgICAgICBkMjBhLmNoZWNrZWQgPSAodiA9PSAwKTsNCiAgICAgICAgICAgIGQyMGIuY2hlY2tlZCA9ICh2ID09IDEpOw0KICAgICAgICAgICAgZDIwYy5jaGVja2VkID0gKHYgPT0gMik7DQogICAgICAgICAgICBkMjBkLmNoZWNrZWQgPSAodiA9PSAzKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMjAsICdJbnRlbCZyZWc7IEFNVCBQaW5nIFJlc3BvbnNlJywgMywgc2hvd1BpbmdBY3Rpb25EbGdPayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93UGluZ0FjdGlvbkRsZ09rKCkgew0KICAgICAgICAgICAgdmFyIGNsb25lID0gQ2xvbmUoYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZSk7DQogICAgICAgICAgICB2YXIgdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ZDIwXTpjaGVja2VkJykudmFsdWU7DQogICAgICAgICAgICBjbG9uZVsiUGluZ1Jlc3BvbnNlRW5hYmxlZCJdID0gKCh2ICYgMSkgIT0gMCk7DQogICAgICAgICAgICBjbG9uZVsiUm1jcFBpbmdSZXNwb25zZUVuYWJsZWQiXSA9ICgodiAmIDIpICE9IDApOw0KICAgICAgICAgICAgYW10c3RhY2suUHV0KCJBTVRfR2VuZXJhbFNldHRpbmdzIiwgY2xvbmUsIFB1bGxTeXN0ZW1TdGF0dXMsIDAsIDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0lQU2V0dXBEbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9IGFtdHN5c3N0YXRlWydBTVRfRXRoZXJuZXRQb3J0U2V0dGluZ3MnXS5yZXNwb25zZXNbMF07DQogICAgICAgICAgICBRVignaWRfZDIxbWFudWFsZGl2JywgdHJ1ZSk7DQogICAgICAgICAgICBRVignaWRfZDIxc3VibmV0ZGl2JywgdHJ1ZSk7DQogICAgICAgICAgICBRVignZDIxbzAnLCBmYWxzZSk7DQogICAgICAgICAgICBRVignZDIxbDAnLCBmYWxzZSk7DQogICAgICAgICAgICBRSCgnZDIxbDEnLCAnQXV0b21hdGljIGNvbmZpZ3VyYXRpb24gdXNpbmcgREhDUCBzZXJ2ZXInKTsNCiAgICAgICAgICAgIFFIKCdkMjFsMicsICdTdGF0aWMgY29uZmlndXJhdGlvbiB1c2luZyBJUHY0IHNldHRpbmdzIGJlbG93Jyk7DQogICAgICAgICAgICBkMjFvMS5jaGVja2VkID0gKHhbJ0RIQ1BFbmFibGVkJ10gPT0gdHJ1ZSk7DQogICAgICAgICAgICBkMjFvMi5jaGVja2VkID0gIWQyMW8xLmNoZWNrZWQ7DQogICAgICAgICAgICBpZHhfZDIxYWRkcmVzcy52YWx1ZSA9IGlzSXBBZGRyZXNzKHhbIklQQWRkcmVzcyJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFzdWJuZXQudmFsdWUgPSBpc0lwQWRkcmVzcyh4WyJTdWJuZXRNYXNrIl0sJycpOw0KICAgICAgICAgICAgaWR4X2QyMWdhdGV3YXkudmFsdWUgPSBpc0lwQWRkcmVzcyh4WyJEZWZhdWx0R2F0ZXdheSJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFkbnMxLnZhbHVlID0gaXNJcEFkZHJlc3MoeFsiUHJpbWFyeUROUyJdLCcnKTsNCiAgICAgICAgICAgIGlkeF9kMjFkbnMyLnZhbHVlID0gaXNJcEFkZHJlc3MoeFsiU2Vjb25kYXJ5RE5TIl0sJycpOw0KICAgICAgICAgICAgdXBkYXRlSVBTZXR1cERsZygpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgyMSwgJ0lQdjQgU2V0dGluZ3MnLCAzLCBzaG93SVBTZXR1cERsZ09rKQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXBkYXRlSVBTZXR1cERsZygpIHsNCiAgICAgICAgICAgIGlkeF9kMjFhZGRyZXNzLmRpc2FibGVkID0gaWR4X2QyMXN1Ym5ldC5kaXNhYmxlZCA9IGlkeF9kMjFnYXRld2F5LmRpc2FibGVkID0gaWR4X2QyMWRuczEuZGlzYWJsZWQgPSBpZHhfZDIxZG5zMi5kaXNhYmxlZCA9ICFkMjFvMi5jaGVja2VkOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0lQU2V0dXBEbGdPaygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gQ2xvbmUoYW10c3lzc3RhdGVbJ0FNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyddLnJlc3BvbnNlc1swXSk7DQogICAgICAgICAgICB4WydESENQRW5hYmxlZCddID0gZDIxbzEuY2hlY2tlZDsNCiAgICAgICAgICAgIGRlbGV0ZSB4WyJJUEFkZHJlc3MiXTsNCiAgICAgICAgICAgIGRlbGV0ZSB4WyJTdWJuZXRNYXNrIl07DQogICAgICAgICAgICBkZWxldGUgeFsiRGVmYXVsdEdhdGV3YXkiXTsNCiAgICAgICAgICAgIGRlbGV0ZSB4WyJQcmltYXJ5RE5TIl07DQogICAgICAgICAgICBkZWxldGUgeFsiU2Vjb25kYXJ5RE5TIl07DQogICAgICAgICAgICBpZiAoZDIxbzEuY2hlY2tlZCA9PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgIHhbIklQQWRkcmVzcyJdID0gaWR4X2QyMWFkZHJlc3MudmFsdWU7DQogICAgICAgICAgICAgICAgeFsiU3VibmV0TWFzayJdID0gaWR4X2QyMXN1Ym5ldC52YWx1ZTsNCiAgICAgICAgICAgICAgICB4WyJEZWZhdWx0R2F0ZXdheSJdID0gaWR4X2QyMWdhdGV3YXkudmFsdWU7DQogICAgICAgICAgICAgICAgaWYgKGlkeF9kMjFkbnMxLnZhbHVlICE9ICcnKSB4WyJQcmltYXJ5RE5TIl0gPSBpZHhfZDIxZG5zMS52YWx1ZTsNCiAgICAgICAgICAgICAgICBpZiAoaWR4X2QyMWRuczIudmFsdWUgIT0gJycpIHhbIlNlY29uZGFyeUROUyJdID0gaWR4X2QyMWRuczIudmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBhbXRzdGFjay5QdXQoIkFNVF9FdGhlcm5ldFBvcnRTZXR0aW5ncyIsIHgsIHNob3dJUFNldHVwRGxnRG9uZSwgMCwgMSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93SVBTZXR1cERsZ0RvbmUoc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgYW10c3lzc3RhdGUgPSB1bmRlZmluZWQ7DQogICAgICAgICAgICAgICAgUHVsbFN5c3RlbVN0YXR1cygpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBtZXNzYWdlYm94KCdJUHY0IFNldHRpbmdzJywgJ1VuYWJsZSB0byBzZXQgbmV0d29yayBwYXJhbWV0ZXJzLCBlcnJvciAnICsgc3RhdHVzKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gU3RvcmFnZQ0KICAgICAgICAvLw0KDQogICAgICAgIHZhciB4eFN0b3JhZ2UgPSBudWxsOw0KICAgICAgICB2YXIgeHhTdG9yYWdlVmVuZG9ycyA9IFtdOw0KICAgICAgICB2YXIgeHhTdG9yYWdlQXBwbGljYXRpb25zID0gW107DQoNCiAgICAgICAgZnVuY3Rpb24gUHVsbFN0b3JhZ2UoKSB7DQogICAgICAgICAgICBhbXRGaXJzdFB1bGwgfD0gODsNCiAgICAgICAgICAgIHdzc3RhY2suY29tbS5QZXJmb3JtQWpheCgiIiwgUHVsbFN0b3JhZ2VSZXNwb25zZSwgbnVsbCwgMCwgIi9hbXQtc3RvcmFnZS8iLCAiR0VUIik7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBQdWxsU3RvcmFnZVJlc3BvbnNlKGRhdGEsIHN0YXR1cywgdGFnKSB7DQogICAgICAgICAgICBpZiAoYW10c3RhY2suUGVuZGluZ0JhdGNoT3BlcmF0aW9ucyA9PSAwKSByZWZyZXNoQnV0dG9ucyh0cnVlKTsgLy8gSWYgbm90aGluZyBpcyBiZWluZyBkb25lLCByZS1lbmFibGUgcmVmcmVzaCBidXR0b25zDQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMjAwKSB7DQogICAgICAgICAgICAgICAgUVYoJ2dvMjEnLCB0cnVlKTsgLy8gU2hvdyBTdG9yYWdlIFBhbmVsDQoNCiAgICAgICAgICAgICAgICB2YXIgbGVuOyAvLyBSZW1vdmUgYWxsIGNoYXJzIHRoYXQgYXJlIGJlbG93IDMyLCB0aGlzIHdpbGwgYWxsb3cgcGFyc2luZyBldmVuIHRoZSB0aGUgZmlybXdhcmUgZ2l2ZXMgdXMgZ2FyYmFnZS4NCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspIHsgZG8geyBsZW4gPSBkYXRhLmxlbmd0aDsgZGF0YSA9IGRhdGEucmVwbGFjZShTdHJpbmcuZnJvbUNoYXJDb2RlKGkpLCAnJyk7IH0gd2hpbGUgKGxlbiA+IGRhdGEubGVuZ3RoKTsgfQ0KICAgICAgICAgICAgICAgIC8vZGF0YSA9ICd7ImluZm9ybWF0aW9uIjogeyJ2ZXJzaW9uIjogMS4xLCJyZWFsbXMiOiA3NzY1NzU5LCJ1c2VyIjogImFkbWluIn0sImNvbnRlbnQiOiBbeyJuYW1lIjogImluZGV4Lmh0bSIsInNpemUiOiAzODg2NH0seyJ2ZW5kb3IiOiAiVXNlciIsImFwcCI6ICJTREsiLCJuYW1lIjogIlNhbXBsZS5odG1sIiwic2l6ZSI6IDI2NzYwLCJsaW5rIjogIlNESyBTYW1wbGUifSx7InZlbmRvciI6ICJVc2VyIiwiYXBwIjogIlNESyIsIm5hbWUiOiAid3MuanMiLCJzaXplIjogNDI1NzUsImxpbmsiOiAiU0RLIFNhbXBsZSJ9LHsidmVuZG9yIjogIlVzZXIiLCJhcHAiOiAiU0RLIiwibmFtZSI6ICJidHAubWluLmNzcyIsInNpemUiOiAxMjEyNjUsImxpbmsiOiAiU0RLIFNhbXBsZSJ9LHsidmVuZG9yIjogIlVzZXIiLCJhcHAiOiAiU0RLIiwibmFtZSI6ICJsb2dvLnBuZyIsInNpemUiOiAyODAzLCJsaW5rIjogIlNESyBTYW1wbGUifV19JzsNCiAgICAgICAgICAgICAgICB0cnkgeyB4eFN0b3JhZ2UgPSBKU09OLnBhcnNlKGRhdGEpOyB9IGNhdGNoIChlKSB7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgIHh4U3RvcmFnZVZlbmRvcnMgPSBbXTsNCiAgICAgICAgICAgICAgICB4eFN0b3JhZ2VBcHBsaWNhdGlvbnMgPSBbXTsNCiAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IHh4U3RvcmFnZVsnY29udGVudCddOw0KDQogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGVudCkpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gTmV3IGZsYXQgZm9ybWF0LCBjb252ZXJ0IHRvIHRyZWUgZm9ybWF0Lg0KICAgICAgICAgICAgICAgICAgICB2YXIgbmV3Y29udGVudCA9IHt9Ow0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGNvbnRlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ZW5kb3IgPSBjb250ZW50W2ldWyJ2ZW5kb3IiXSA/IGNvbnRlbnRbaV1bInZlbmRvciJdIDogJyc7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5ld2NvbnRlbnRbdmVuZG9yXSkgeyBuZXdjb250ZW50W3ZlbmRvcl0gPSB7fTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFwcCA9IGNvbnRlbnRbaV1bImFwcCJdID8gY29udGVudFtpXVsiYXBwIl0gOiAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3Y29udGVudFt2ZW5kb3JdW2FwcF0pIHsgbmV3Y29udGVudFt2ZW5kb3JdW2FwcF0gPSB7fTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbaV1bIm5hbWUiXSkgeyBuZXdjb250ZW50W3ZlbmRvcl1bYXBwXVtjb250ZW50W2ldWyJuYW1lIl1dID0gY29udGVudFtpXTsgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHh4U3RvcmFnZVsnY29udGVudCddID0gY29udGVudCA9IG5ld2NvbnRlbnQ7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVHJlZSBmb3JtYXQsIG1vdmUgaW5kZXguaHRtIGFuZCBsb2dvbi5odG0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbJ2luZGV4Lmh0bSddIHx8IGNvbnRlbnRbJ2xvZ29uLmh0bSddKSB7IGNvbnRlbnRbJyddID0geyAnJzoge30gfTsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFsnaW5kZXguaHRtJ10pIHsgY29udGVudFsnJ11bJyddWydpbmRleC5odG0nXSA9IGNvbnRlbnRbJ2luZGV4Lmh0bSddOyBkZWxldGUgY29udGVudFsnaW5kZXguaHRtJ107IH0NCiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRbJ2xvZ29uLmh0bSddKSB7IGNvbnRlbnRbJyddWycnXVsnbG9nb24uaHRtJ10gPSBjb250ZW50Wydsb2dvbi5odG0nXTsgZGVsZXRlIGNvbnRlbnRbJ2xvZ29uLmh0bSddOyB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gRGlzcGxheSBhbGwgc3RvcmFnZSBmaWxlcw0KICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IDAsIHggPSBUYWJsZVN0YXJ0MigpICsgIjx0cj48dGQgY2xhc3M9cjEgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPk1hbmFnZSBJbnRlbCZyZWc7IEFNVCBzdG9yYWdlIGZvciB0aGlzIGNvbXB1dGVyLjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB2YXIgaWksIGpqLCB4eCA9ICIiLCBsaW5rcyA9ICIiLCBsaW5raWQgPSAzMDsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGNvbnRlbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGpjb3VudCA9IDA7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gY29udGVudFtpXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgamNvdW50Kys7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIga2NvdW50ID0gMDsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgaW4gY29udGVudFtpXVtqXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtjb3VudCsrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9IGlpIHx8IGogIT0gamopIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHh4ICE9ICIiKSB7IHggKz0geHg7IHh4ID0gIjxicj4iOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlpID0gaTsgamogPSBqOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAnJykgeyB4eCArPSBFc2NhcGVIdG1sKGkgKyAiIC8gIiArIGopOyB9IGVsc2UgeyB4eCArPSAiUm9vdCIgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3ZhciBoYW5kbGUgPSAiXCIiICsgaSArICJcIixcIiIgKyBqICsgIlwiLFwiIiArIGsgKyAiXCIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYW5kbGUgPSAiXCIiICsgaSArICgoaSAhPSAnJykgPyAnLycgOiAnJykgKyBqICsgKChqICE9ICcnKSA/ICcvJyA6ICcnKSArIGsgKyAiXCIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh4ICs9ICc8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93U3RvcmFnZURldGFpbHMoIicgKyBpICsgJyIsIicgKyBqICsgJyIsIicgKyBrICsgJyIsJyArIGhhbmRsZSArICcpPjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ+JzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh4ICs9ICIgIiArIEFkZEJ1dHRvbjIoIk9wZW4iLCAiT3BlbkZyb21TdG9yYWdlKCIgKyBoYW5kbGUgKyAiLGV2ZW50KSIpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHggKz0gIiAiICsgQWRkQnV0dG9uMigiRG93bmxvYWQiLCAiRG93bmxvYWRGcm9tU3RvcmFnZSgiICsgaGFuZGxlICsgIixcIiIgKyBrICsgIlwiLGV2ZW50KSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh4ICs9ICI8L2Rpdj48ZGl2IHN0eWxlPXBhZGRpbmctdG9wOjNweD48Yj4iICsgRXNjYXBlSHRtbChrKSArICI8L2I+LCA8aT4iICsgY29udGVudFtpXVtqXVtrXVsnc2l6ZSddICsgIiBieXRlczwvaT48L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHh4U3RvcmFnZVZlbmRvcnMuaW5kZXhPZihpKSA9PSAtMSkgeHhTdG9yYWdlVmVuZG9ycy5wdXNoKGkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eFN0b3JhZ2VBcHBsaWNhdGlvbnMuaW5kZXhPZihqKSA9PSAtMSkgeHhTdG9yYWdlQXBwbGljYXRpb25zLnB1c2goaik7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2NvdW50ID09IDApIHsgIC8vIENsZWFyIGVtcHR5IGFwcGxpY2F0aW9uICYgdmVuZG9yDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBmdW5jdGlvbiAoKSB7IH0sIG51bGwsIDAsICIvYW10LXN0b3JhZ2UvIiArIGkgKyAiLyIgKyBqLCAiREVMRVRFIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBmdW5jdGlvbiAoKSB7IH0sIG51bGwsIDAsICIvYW10LXN0b3JhZ2UvIiArIGksICJERUxFVEUiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAoamNvdW50ID09IDApIHsgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBmdW5jdGlvbiAoKSB7IH0sIG51bGwsIDAsICIvYW10LXN0b3JhZ2UvIiArIGksICJERUxFVEUiKTsgfSAvLyBDbGVhciBlbXB0eSB2ZW5kb3INCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYgKHh4ICE9ICIiKSB4ICs9IHh4Ow0KICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKSB7IHggKz0gIjxkaXYgc3R5bGU9cGFkZGluZy1sZWZ0OjE1cHg+PGJyPjxpPk5vIGZpbGVzIGZvdW5kLjwvaT48L2Rpdj48YnI+IjsgfQ0KICAgICAgICAgICAgICAgIHggKz0gIjxicj48dGQgY2xhc3M9cjE+IiArIFRhYmxlRW5kKEFkZFJlZnJlc2hCdXR0b24oIlB1bGxTdG9yYWdlKCkiKSArIEFkZEJ1dHRvbigiVXBsb2FkLi4uIiwgIlVwbG9hZFRvU3RvcmFnZSgpIikNCiAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgIFFIKCdpZF9UYWJsZVN5c3RlbVN0b3JhZ2UnLCB4KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgUUgoJ2lkX1RhYmxlU3lzdGVtU3RvcmFnZScsICdVbmFibGUgdG8gbG9hZCBzdG9yYWdlIGRhdGEuLi48YnIvPicgKyBBZGRCdXR0b24oIlJlZnJlc2giLCAiUHVsbFN0b3JhZ2UoKSIpKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dTdG9yYWdlRGV0YWlscyhpLCBqLCBrLCBoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9ICcnLCBpdGVtID0geHhTdG9yYWdlWydjb250ZW50J11baV1bal1ba107DQogICAgICAgICAgICBpZiAoaSAhPSAnJykgeCArPSBhZGRIdG1sVmFsdWUoIlZlbmRvciIsIGkpOw0KICAgICAgICAgICAgaWYgKGogIT0gJycpIHggKz0gYWRkSHRtbFZhbHVlKCJBcHBsaWNhdGlvbiIsIGopOw0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIk5hbWUiLCBrKTsNCiAgICAgICAgICAgIHggKz0gYWRkSHRtbFZhbHVlKCJTaXplIiwgaXRlbVsnc2l6ZSddICsgJyBieXRlcycpOw0KICAgICAgICAgICAgaWYgKGl0ZW1bJ2xpbmsnXSkgeyB4ICs9IGFkZEh0bWxWYWx1ZSgiTGluayIsIGl0ZW1bJ2xpbmsnXSk7IH0NCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdTdG9yYWdlIEl0ZW0nLCA1LCBzaG93U3RvcmFnZURldGFpbHNFeCwgeCwgaCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93U3RvcmFnZURldGFpbHNFeChidXR0b25zLCBoYW5kbGUpIHsNCiAgICAgICAgICAgIGlmIChidXR0b25zID09IDIpIHsgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBzdG9yYWdlRGVsZXRlUmVzcG9uc2UsIG51bGwsIDAsICcvYW10LXN0b3JhZ2UvJyArIGhhbmRsZSwgIkRFTEVURSIpOyB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzdG9yYWdlRGVsZXRlUmVzcG9uc2UoZGF0YSwgc3RhdHVzKSB7DQogICAgICAgICAgICBpZiAoc3RhdHVzICE9IDIwMCkgew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goIlN0b3JhZ2UiLCAiVW5hYmxlIHRvIGRlbGV0ZSBmaWxlIChFUlIiICsgc3RhdHVzICsgIiksIGNoZWNrIHRoYXQgdGhlIGNvbXB1dGVyIGlzIHBvd2VyZWQgb24uIik7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFB1bGxTdG9yYWdlKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIERvd25sb2FkRnJvbVN0b3JhZ2UoaGFuZGxlLCBmaWxlbmFtZSwgZSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICAgICAgd3NzdGFjay5jb21tLlBlcmZvcm1BamF4KCIiLCBEb3dubG9hZEZyb21TdG9yYWdlRXgsIGZpbGVuYW1lLCAwLCAnL2FtdC1zdG9yYWdlLycgKyBoYW5kbGUsICJHRVQiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIERvd25sb2FkRnJvbVN0b3JhZ2VFeChkYXRhLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKChzdGF0dXMgIT0gMjAwKSB8fCAoZGF0YSA9PSBudWxsKSkgeyBjb25zb2xlLmxvZyhzdGF0dXMsICdEYXRhID0gbnVsbCcpOyByZXR1cm47IH0NCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoZGF0YSksIHRhZyk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBPcGVuRnJvbVN0b3JhZ2UoaGFuZGxlLCBlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQoNCiAgICAgICAgICAgIHZhciBuZXdXaW5kb3cgPSB3aW5kb3cub3BlbignaHR0cDovLycgKyB3c3N0YWNrLmNvbW0uaG9zdCArICc6JyArIHdzc3RhY2suY29tbS5wb3J0ICsgJy9hbXQtc3RvcmFnZS8nICsgaGFuZGxlLCAnX2JsYW5rJyk7DQogICAgICAgICAgICBuZXdXaW5kb3cub3BlbmVyID0gbnVsbDsNCiAgICAgICAgICAgIG5ld1dpbmRvdy5mb2N1cygpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gUHVzaFRvU3RvcmFnZSh2ZW5kb3JBcHBuYW1lRmlsZW5hbWUsIGRhdGEsIGFwcGVuZCkgew0KICAgICAgICAgICAgdmFyIHRhZyA9IG51bGw7DQogICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiA3MDAwKSB7IHRhZyA9IFt2ZW5kb3JBcHBuYW1lRmlsZW5hbWUsIGRhdGEuc3Vic3RyaW5nKDcwMDApXTsgZGF0YSA9IGRhdGEuc3Vic3RyaW5nKDAsIDcwMDApOyB9DQogICAgICAgICAgICB3c3N0YWNrLmNvbW0uUGVyZm9ybUFqYXgoZGF0YSwgUHVzaFRvU3RvcmFnZVJlc3BvbnNlLCB0YWcsIDAsICIvYW10LXN0b3JhZ2UvIiArIHZlbmRvckFwcG5hbWVGaWxlbmFtZSArIChhcHBlbmQgPT0gdHJ1ZSA/ICI/YXBwZW5kPSIgOiAiIiksICJQVVQiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIFB1c2hUb1N0b3JhZ2VSZXNwb25zZShkYXRhLCBzdGF0dXMsIHRhZykgew0KICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAyMDApIHsgbWVzc2FnZWJveCgiU3RvcmFnZSIsICJVbmFibGUgdG8gcHVzaCBmaWxlIChFUlIiICsgc3RhdHVzICsgIiksIGNoZWNrIHRoYXQgdGhlIGNvbXB1dGVyIGlzIHBvd2VyZWQgb24uIik7IH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKHRhZyAhPSBudWxsKSB7IFB1c2hUb1N0b3JhZ2UodGFnWzBdLCB0YWdbMV0sIHRydWUpOyB9IGVsc2UgeyBQdWxsU3RvcmFnZSgpOyB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBVcGxvYWRUb1N0b3JhZ2UoZmlsZSwgZmlsZW5hbWUpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIGlmICghZmlsZW5hbWUpIHsgZmlsZW5hbWUgPSAnJzsgfQ0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIHggKz0gJzxicj5TZWxlY3QgYSBzbWFsbCBmaWxlIHRvIHVwbG9hZCB0byBzdG9yYWdlIGFuZCBlbnRlciBhIHZlbmRvciwgYXBwbGljYXRpb24gYW5kIGZpbGVuYW1lLjxicj4nOw0KICAgICAgICAgICAgaWYgKCFmaWxlKSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9aGVpZ2h0OjIwcHg+PGlucHV0IHR5cGU9ZmlsZSBpZD1tc3RvcmFnZWZpbGUgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHggb25jaGFuZ2U9U2V0U3RvcmFnZU5hbWUoKT48ZGl2PlVwbG9hZCBmaWxlPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9aGVpZ2h0OjIwcHg+PGlucHV0IGlkPW1zdG9yYWdlZmlsZSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweCByZWFkb25seSBkaXNhYmxlZD1kaXNhYmxlZCB2YWx1ZT0iJyArIGZpbGVuYW1lICsgJyIgPjxkaXY+VXBsb2FkIGZpbGU8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgeCArPSAnPGJyPjxkaXYgc3R5bGU9aGVpZ2h0OjE2cHg+PGlucHV0IGlkPW1zdG9yYWdldmVuZG9yIHBsYWNlaG9sZGVyPVZlbmRvciBsaXN0PW1zdG9yYWdldmVuZG9ybGlzdCBtYXhsZW5ndGg9MTEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHg+PGRpdj5WZW5kb3IgbmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT1oZWlnaHQ6MTZweD48aW5wdXQgaWQ9bXN0b3JhZ2VhcHBsaWNhdGlvbiBwbGFjZWhvbGRlcj1BcHAgbGlzdD1tc3RvcmFnZWFwcGxpY2F0aW9ubGlzdCBtYXhsZW5ndGg9MTEgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjQwcHg+PGRpdj5BcHBsaWNhdGlvbiBuYW1lPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxicj48ZGl2IHN0eWxlPWhlaWdodDoxNnB4PjxpbnB1dCBpZD1tc3RvcmFnZWZpbGVuYW1lIHBsYWNlaG9sZGVyPUZpbGVuYW1lIG1heGxlbmd0aD0xMSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweD48ZGl2PkZpbGVuYW1lPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgIHggKz0gJzxicj48ZGl2IHN0eWxlPWhlaWdodDoxNnB4PjxpbnB1dCBpZD1tc3RvcmFnZXR5cGUgcGxhY2Vob2xkZXI9YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIGxpc3Q9bXN0b3JhZ2V0eXBlbGlzdCBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNDBweD48ZGl2Pk1JTUUgVHlwZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB4ICs9ICc8YnI+PGRpdiBzdHlsZT1oZWlnaHQ6MTZweD48aW5wdXQgaWQ9bXN0b3JhZ2VsaW5rIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI0MHB4PjxkaXYgdGl0bGU9IklmIHNldCwgY3JlYXRlcyBhIGxpbmsgdG8gdGhpcyBjb250ZW50IGZyb20gdGhlIG1haW4gd2ViIHBhZ2UiPkxpbms8L2Rpdj48L2Rpdj48YnI+JzsNCiAgICAgICAgICAgIHggKz0gJzxkYXRhbGlzdCBpZD1tc3RvcmFnZXZlbmRvcmxpc3Q+JzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4geHhTdG9yYWdlVmVuZG9ycykgeyB4ICs9ICc8b3B0aW9uIHZhbHVlPSInICsgeHhTdG9yYWdlVmVuZG9yc1tpXSArICciPic7IH0NCiAgICAgICAgICAgIHggKz0gJzwvZGF0YWxpc3Q+JzsNCiAgICAgICAgICAgIHggKz0gJzxkYXRhbGlzdCBpZD1tc3RvcmFnZWFwcGxpY2F0aW9ubGlzdD4nOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB4eFN0b3JhZ2VBcHBsaWNhdGlvbnMpIHsgeCArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIHh4U3RvcmFnZUFwcGxpY2F0aW9uc1tpXSArICciPic7IH0NCiAgICAgICAgICAgIHggKz0gJzwvZGF0YWxpc3Q+PGRhdGFsaXN0IGlkPW1zdG9yYWdldHlwZWxpc3Q+PG9wdGlvbiB2YWx1ZT0iYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIj48b3B0aW9uIHZhbHVlPSJpbWFnZS9qcGVnIj48b3B0aW9uIHZhbHVlPSJ0ZXh0L2h0bWwiPjxvcHRpb24gdmFsdWU9InRleHQvcGxhaW4iPjwvZGF0YWxpc3Q+JzsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsICdTdG9yYWdlIFVwbG9hZCcsIDMsIFVwbG9hZFRvU3RvcmFnZUV4LCB4LCBmaWxlKTsNCiAgICAgICAgICAgIGlmIChmaWxlKSB7IFNldFN0b3JhZ2VOYW1lKGZpbGVuYW1lKTsgfQ0KICAgICAgICB9DQoNCg0KICAgICAgICBmdW5jdGlvbiBVcGxvYWRUb1N0b3JhZ2VFeChidXR0b24sIHRhZykgew0KICAgICAgICAgICAgaWYgKCF0YWcpIHsNCiAgICAgICAgICAgICAgICB2YXIgeCA9IFEoJ21zdG9yYWdlZmlsZScpOw0KICAgICAgICAgICAgICAgIGlmICh4LmZpbGVzLmxlbmd0aCAhPSAxKSByZXR1cm47DQogICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IFVwbG9hZFRvU3RvcmFnZUV4MjsNCiAgICAgICAgICAgICAgICByZWFkZXIuZmlsZW5hbWUgPSB4LmZpbGVzWzBdLm5hbWU7DQogICAgICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh4LmZpbGVzWzBdKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IFVwbG9hZFRvU3RvcmFnZUV4MjsNCiAgICAgICAgICAgICAgICByZWFkZXIuZmlsZW5hbWUgPSBRKCdtc3RvcmFnZWZpbGUnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHRhZyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBTZXRTdG9yYWdlTmFtZShmaWxlbmFtZSkgew0KICAgICAgICAgICAgaWYgKCFmaWxlbmFtZSkgew0KICAgICAgICAgICAgICAgIHZhciB4ID0gUSgnbXN0b3JhZ2VmaWxlJyk7DQogICAgICAgICAgICAgICAgaWYgKHguZmlsZXMubGVuZ3RoID09IDEpIHsgZmlsZW5hbWUgPSB4LmZpbGVzWzBdLm5hbWU7IH0gZWxzZSB7IGZpbGVuYW1lID0gJyc7IH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuc3BsaXQoJyAnKS5qb2luKCcnKTsNCiAgICAgICAgICAgIHZhciBmaWxlbmFtZVNwbGl0ID0gZmlsZW5hbWUuc3BsaXQoJy0nKTsNCiAgICAgICAgICAgIGlmIChmaWxlbmFtZVNwbGl0Lmxlbmd0aCA9PSAzICYmIGZpbGVuYW1lU3BsaXRbMF0ubGVuZ3RoIDwgMTIgJiYgZmlsZW5hbWVTcGxpdFsxXS5sZW5ndGggPCAxMikgew0KICAgICAgICAgICAgICAgIFEoJ21zdG9yYWdldmVuZG9yJykudmFsdWUgPSBmaWxlbmFtZVNwbGl0WzBdOw0KICAgICAgICAgICAgICAgIFEoJ21zdG9yYWdlYXBwbGljYXRpb24nKS52YWx1ZSA9IGZpbGVuYW1lU3BsaXRbMV07DQogICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVNwbGl0WzJdOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zcGxpdCgnLScpLmpvaW4oJycpOw0KICAgICAgICAgICAgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcuZ3onKSkgZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgZmlsZW5hbWUubGVuZ3RoIC0gMyk7DQogICAgICAgICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5odG0nKSB8fCBmaWxlbmFtZS5lbmRzV2l0aCgnLmh0bWwnKSkgUSgnbXN0b3JhZ2V0eXBlJykudmFsdWUgPSAidGV4dC9odG1sIjsNCiAgICAgICAgICAgIGVsc2UgaWYgKGZpbGVuYW1lLmVuZHNXaXRoKCcudHh0JykpIFEoJ21zdG9yYWdldHlwZScpLnZhbHVlID0gInRleHQvcGxhaW4iOw0KICAgICAgICAgICAgaWYgKGZpbGVuYW1lLmxlbmd0aCA+IDExKSBmaWxlbmFtZSA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCAxMSk7DQogICAgICAgICAgICBRKCdtc3RvcmFnZWZpbGVuYW1lJykudmFsdWUgPSBmaWxlbmFtZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIFVwbG9hZFRvU3RvcmFnZUV4MihmaWxlKSB7DQogICAgICAgICAgICB2YXIgdmFmLCB2ZW5kb3IgPSBRKCdtc3RvcmFnZXZlbmRvcicpLnZhbHVlOw0KICAgICAgICAgICAgdmFyIGFwcCA9IFEoJ21zdG9yYWdlYXBwbGljYXRpb24nKS52YWx1ZTsNCiAgICAgICAgICAgIHZhciBmaWxlbmFtZSA9IFEoJ21zdG9yYWdlZmlsZW5hbWUnKS52YWx1ZTsNCiAgICAgICAgICAgIGlmIChmaWxlbmFtZSA9PSAnJykgZmlsZW5hbWUgPSAnRmlsZW5hbWUnOw0KICAgICAgICAgICAgdmFyIG1pbWV0eXBlID0gUSgnbXN0b3JhZ2V0eXBlJykudmFsdWU7DQogICAgICAgICAgICBpZiAobWltZXR5cGUgPT0gJycpIG1pbWV0eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7DQogICAgICAgICAgICB2YXIgbGluayA9IFEoJ21zdG9yYWdlbGluaycpLnZhbHVlOw0KICAgICAgICAgICAgaWYgKHZlbmRvciA9PSAnJyAmJiBhcHAgPT0gJycgJiYgKGZpbGVuYW1lLnRvTG93ZXJDYXNlKCkgPT0gJ2xvZ29uLmh0bScgfHwgZmlsZW5hbWUudG9Mb3dlckNhc2UoKSA9PSAnaW5kZXguaHRtJykpIHsNCiAgICAgICAgICAgICAgICB2YWYgPSBmaWxlbmFtZS50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAodmVuZG9yID09ICcnKSB2ZW5kb3IgPSAnVmVuZG9yJzsNCiAgICAgICAgICAgICAgICBpZiAoYXBwID09ICcnKSBhcHAgPSAnQXBwJzsNCiAgICAgICAgICAgICAgICB2YWYgPSB2ZW5kb3IgKyAiLyIgKyBhcHAgKyAiLyIgKyBmaWxlbmFtZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgdmFyIGRhdGEgPSAiPG1ldGFkYXRhPjxoZWFkZXJzPiI7DQogICAgICAgICAgICB2YXIgZmlsZW5hbWUgPSBmaWxlLnRhcmdldC5maWxlbmFtZTsNCiAgICAgICAgICAgIGlmICghZmlsZW5hbWUpIHsgZmlsZW5hbWUgPSBRKCdtc3RvcmFnZWZpbGUnKS5maWxlc1swXS5uYW1lOyB9DQogICAgICAgICAgICBpZiAoZmlsZW5hbWUuZW5kc1dpdGgoJy5neicpKSB7IGRhdGEgKz0gIjxoPkNvbnRlbnQtRW5jb2Rpbmc6IGd6aXA8L2g+IjsgfQ0KICAgICAgICAgICAgZGF0YSArPSAiPGg+Q29udGVudC1UeXBlOiAiICsgbWltZXR5cGUgKyAiPC9oPjwvaGVhZGVycz4iOyAvLyA8aD5YLVVBLUNvbXBhdGlibGU6IElFPUVkZ2U8L2g+DQogICAgICAgICAgICBpZiAobGluayAhPSAnJykgZGF0YSArPSAiPGxpbms+IiArIGxpbmsgKyAiPC9saW5rPiI7DQogICAgICAgICAgICBkYXRhICs9ICI8L21ldGFkYXRhPiIgKyBmaWxlLnRhcmdldC5yZXN1bHQ7DQoNCiAgICAgICAgICAgIFB1c2hUb1N0b3JhZ2UodmFmLCBkYXRhKTsNCiAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIEFsYXJtIFBhbmVsDQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gX2ZtdGRhdGV0aW1lKHN0cikgew0KICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKCJUIiwiICIpLnJlcGxhY2UoIloiLCIiKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIF9mbXRpbnRlcnZhbChzdHIpIHsNCiAgICAgICAgICAgIHZhciBjbCA9IHN0ci5yZXBsYWNlKCJUIiwgIiIpLnN1YnN0cmluZyhzdHIuaW5kZXhPZignUCcpICsgMSk7DQogICAgICAgICAgICBjbCA9ICcgJyArIGNsLnJlcGxhY2UoIkQiLCAiIGRheXMgIikucmVwbGFjZSgiSCIsICIgaG91cnMgIikucmVwbGFjZSgiTSIsIiBtaW51dGVzICIpOw0KICAgICAgICAgICAgY2wgPSBjbC5yZXBsYWNlKCIgMSBkYXlzICIsICIgMSBkYXkgIikucmVwbGFjZSgiIDEgaG91cnMgIiwgIiAxIGhvdXIgIikucmVwbGFjZSgiIDEgbWludXRlcyAiLCIgMSBtaW51dGUgIik7DQogICAgICAgICAgICByZXR1cm4gY2wuc3Vic3RyaW5nKDAsIGNsLmxlbmd0aCAtIDEpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gX2ZtdHRpbWVwYWQoc3RyKSB7DQogICAgICAgICAgICBzdHIgPSAnJyArIHN0cjsNCiAgICAgICAgICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgeyBzdHIgPSAnMCcgKyBzdHI7IH0NCiAgICAgICAgICAgIHJldHVybiBzdHI7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgeHhBbGFybXMgPSBudWxsOw0KDQogICAgICAgIGZ1bmN0aW9uIFB1bGxBbGFybXMoKSB7DQogICAgICAgICAgICB2YXIgeCA9IFRhYmxlU3RhcnQyKCkgKyAiPHRyPjx0ZCBjbGFzcz1yMSBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+TWFuYWdlIHdha2UgYWxhcm1zLjxicj48YnI+Ig0KICAgICAgICAgICAgYW10c3RhY2suRW51bSgiSVBTX0FsYXJtQ2xvY2tPY2N1cnJlbmNlIiwgZnVuY3Rpb24oc3RhY2ssIG5hbWUsIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDIwMCkgew0KICAgICAgICAgICAgICAgICAgICBRVigiZ28yMyIsIHRydWUpOw0KICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgeHhBbGFybXMgPSByZXNwb25zZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgd2FrZXRpbWUgPSBuZXcgRGF0ZShyZXNwb25zZVtpXVsiU3RhcnRUaW1lIl1bIkRhdGV0aW1lIl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZXRhaWxzID0gJzxiPicgKyByZXNwb25zZVtpXVsiRWxlbWVudE5hbWUiXSArICc8L2I+LCB3YWtlIG9uICcgKyB3YWtldGltZS50b0xvY2FsZVN0cmluZygpLnJlcGxhY2UoJywgJywgJyBhdCAnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2VbaV1bIkludGVydmFsIl0gIT0gdW5kZWZpbmVkKSB7IGRldGFpbHMgKz0gJyBhbmQgZWFjaCcgKyBfZm10aW50ZXJ2YWwocmVzcG9uc2VbaV1bIkludGVydmFsIl1bIkludGVydmFsIl0pOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlW2ldWyJEZWxldGVPbkNvbXBsZXRpb24iXSA9PSB0cnVlKSB7IGRldGFpbHMgKz0gJywgZGVsZXRlIHdoZW4gZG9uZSc7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IGNsYXNzPWl0ZW1CYXIgb25jbGljaz1zaG93QWxlcnREZXRhaWxzKCIgKyBpICsgIik+PGRpdiBzdHlsZT1mbG9hdDpyaWdodD4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHggKz0gIiAiICsgQWRkQnV0dG9uMigiRWRpdC4uLiIsICJzaG93QWRkQWxhcm0oIiArIGkgKyAiKSIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gIjwvZGl2PjxkaXYgc3R5bGU9cGFkZGluZy10b3A6M3B4O3dpZHRoOmF1dG87ZmxvYXQ6bGVmdDtvdmVyZmxvdy14OmhpZGRlbj4iICsgZGV0YWlscyArICI8L2Rpdj48L2Rpdj4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgeHhBbGFybXMgPSBudWxsOw0KICAgICAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD48YnI+PGk+Tm8gd2FrZSBhbGFybXMgcmVnaXN0ZXJlZC48L2k+PC9kaXY+PGJyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSAiPGRpdj4mbmJzcDsiICsgQWRkUmVmcmVzaEJ1dHRvbigiUHVsbEFsYXJtcygpIik7DQogICAgICAgICAgICAgICAgICAgIGlmICh4eEFjY291bnRBZG1pbk5hbWUpIHsgeSArPSBBZGRCdXR0b24oIlJlbW92ZSBhbGwgYWxhcm1zIiwgIlJlbW92ZUFsbEFsYXJtcygpIikgKyBBZGRCdXR0b24oIkFkZCIsICJzaG93QWRkQWxhcm0oKSIpOyB9DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjxicj48dGQgY2xhc3M9cjE+IiArIFRhYmxlRW5kKHkgKyAiPC9kaXY+Iik7DQogICAgICAgICAgICAgICAgICAgIFFIKCdpZF9UYWJsZUFsYXJtJywgeCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwgbnVsbCwgdHJ1ZSk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBwcmVwYXJlQWxhcm1PY2N1cmVuY2VUZW1wbGF0ZShpZCwgbm0sIHN0YXJ0LCBpbnRlcnZhbCwgZGVsKSB7DQogICAgICAgICAgICByZXR1cm4gIjxkOkFsYXJtVGVtcGxhdGUgeG1sbnM6ZD1cImh0dHA6Ly9pbnRlbC5jb20vd2JlbS93c2NpbS8xL2FtdC1zY2hlbWEvMS9BTVRfQWxhcm1DbG9ja1NlcnZpY2VcIiB4bWxuczpzPVwiaHR0cDovL2ludGVsLmNvbS93YmVtL3dzY2ltLzEvaXBzLXNjaGVtYS8xL0lQU19BbGFybUNsb2NrT2NjdXJyZW5jZVwiPjxzOkluc3RhbmNlSUQ+IiArIGlkICsgIjwvczpJbnN0YW5jZUlEPjxzOlN0YXJ0VGltZT48cDpEYXRldGltZSB4bWxuczpwPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NvbW1vblwiPiIgKyBzdGFydCArICI8L3A6RGF0ZXRpbWU+PC9zOlN0YXJ0VGltZT48czpJbnRlcnZhbD48cDpJbnRlcnZhbCB4bWxuczpwPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NvbW1vblwiPiIgKyBpbnRlcnZhbCArICI8L3A6SW50ZXJ2YWw+PC9zOkludGVydmFsPjxzOkRlbGV0ZU9uQ29tcGxldGlvbj4iICsgZGVsICsgIjwvczpEZWxldGVPbkNvbXBsZXRpb24+PC9kOkFsYXJtVGVtcGxhdGU+IjsNCiAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgZnVuY3Rpb24gUmVtb3ZlQWxsQWxhcm1zKCl7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDEsICJSZW1vdmUgYWxsIHdha2UgYWxhcm1zIiwgMywgUmVtb3ZlQWxsQWxhcm1zRXgsICJDb25maXJtIHJlbW92YWwgb2YgYWxsIHdha2UgYWxhcm1zPyIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gUmVtb3ZlQWxsQWxhcm1zRXgoKSB7DQogICAgICAgICAgICB2YXIgZGVsZXRlQ291bnQgPSB4eEFsYXJtcy5sZW5ndGg7DQogICAgICAgICAgICBmb3IgKHZhciBhIGluIHh4QWxhcm1zKSB7IGFtdHN0YWNrLkRlbGV0ZSgiSVBTX0FsYXJtQ2xvY2tPY2N1cnJlbmNlIiwgeHhBbGFybXNbYV0sIGZ1bmN0aW9uKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IGlmICgtLWRlbGV0ZUNvdW50ID09IDApIHsgUHVsbEFsYXJtcygpOyB9fSk7IH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dBZGRBbGFybShhbHJtKXsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIFFFKCdkMjVhbGFybV9uYW1lJywgIWFscm0pOw0KICAgICAgICAgICAgaWYgKGFscm0gIT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgdmFyIGFsYXJtID0geHhBbGFybXNbYWxybV0sIHdha2V0aW1lID0gbmV3IERhdGUoYWxhcm1bIlN0YXJ0VGltZSJdWyJEYXRldGltZSJdKTsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9uYW1lJykudmFsdWUgPSBhbGFybVsiRWxlbWVudE5hbWUiXTsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9zZGF0ZScpLnZhbHVlID0gd2FrZXRpbWUuZ2V0RnVsbFllYXIoKSArICctJyArIF9mbXR0aW1lcGFkKHdha2V0aW1lLmdldE1vbnRoKCkgKyAxKSArICctJyArIF9mbXR0aW1lcGFkKHdha2V0aW1lLmdldERhdGUoKSk7DQogICAgICAgICAgICAgICAgUSgnZDI1YWxhcm1fc3RpbWUnKS52YWx1ZSA9IHdha2V0aW1lLmdldEhvdXJzKCkgKyAnOicgKyBfZm10dGltZXBhZCh3YWtldGltZS5nZXRNaW51dGVzKCkpICsgJzonICsgX2ZtdHRpbWVwYWQod2FrZXRpbWUuZ2V0U2Vjb25kcygpKTsNCiAgICAgICAgICAgICAgICBpZiAoYWxhcm1bIkludGVydmFsIl0pIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGogPSBhbGFybVsiSW50ZXJ2YWwiXVsiSW50ZXJ2YWwiXS5yZXBsYWNlKCdQJywnJykucmVwbGFjZSgnVCcsJycpLnJlcGxhY2UoJ0QnLCdELCcpLnJlcGxhY2UoJ0gnLCdILCcpLnJlcGxhY2UoJ00nLCdNLCcpLnNwbGl0KCcsJyksIGsgPSBbMCwgMCwgMF07DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gaikgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpsID0galtpXS5sZW5ndGggLSAxOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpbaV1bamxdID09ICdEJykgeyBrWzBdID0gcGFyc2VJbnQoaltpXS5zdWJzdHJpbmcoMCwgamwpKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpbaV1bamxdID09ICdIJykgeyBrWzFdID0gcGFyc2VJbnQoaltpXS5zdWJzdHJpbmcoMCwgamwpKTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpbaV1bamxdID09ICdNJykgeyBrWzJdID0gcGFyc2VJbnQoaltpXS5zdWJzdHJpbmcoMCwgamwpKTsgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX2ludGVydmFsJykudmFsdWUgPSBrLmpvaW4oJy0nKTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9pbnRlcnZhbCcpLnZhbHVlID0gJyc7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX2RvYycpLnZhbHVlID0gKGFsYXJtWyJEZWxldGVPbkNvbXBsZXRpb24iXSA9PSB0cnVlKT8xOjA7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICAgICAgY3VycmVudFRpbWUuc2V0RGF0ZShuZXcgRGF0ZSgpLmdldERhdGUoKSArIDEpOw0KICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX25hbWUnKS52YWx1ZSA9ICcnOw0KICAgICAgICAgICAgICAgIFEoJ2QyNWFsYXJtX3NkYXRlJykudmFsdWUgPSBjdXJyZW50VGltZS5nZXRGdWxsWWVhcigpICsgJy0nICsgX2ZtdHRpbWVwYWQoY3VycmVudFRpbWUuZ2V0TW9udGgoKSArIDEpICsgJy0nICsgX2ZtdHRpbWVwYWQoY3VycmVudFRpbWUuZ2V0RGF0ZSgpKTsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9zdGltZScpLnZhbHVlID0gY3VycmVudFRpbWUuZ2V0SG91cnMoKSArICc6JyArIF9mbXR0aW1lcGFkKGN1cnJlbnRUaW1lLmdldE1pbnV0ZXMoKSkgKyAnOjAwJzsNCiAgICAgICAgICAgICAgICBRKCdkMjVhbGFybV9pbnRlcnZhbCcpLnZhbHVlID0gJyc7DQogICAgICAgICAgICAgICAgUSgnZDI1YWxhcm1fZG9jJykudmFsdWUgPSAwOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgyNSwgIkFkZCBuZXcgYWxhcm0iLCAoYWxybSAhPSB1bmRlZmluZWQpPzc6Mywgc2hvd0FkZEFsYXJtT2ssICcnLCBhbHJtKTsNCiAgICAgICAgICAgIGFsZXJ0RGlhbG9nVXBkYXRlKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBhbGVydERpYWxvZ1VwZGF0ZSgpIHsNCiAgICAgICAgICAgIHZhciBpbCA9IFEoJ2QyNWFsYXJtX2ludGVydmFsJykudmFsdWUuc3BsaXQoJy0nKS5sZW5ndGg7DQogICAgICAgICAgICB2YXIgb2sgPSAoUSgnZDI1YWxhcm1fbmFtZScpLnZhbHVlLmxlbmd0aCA+IDApICYmIChRKCdkMjVhbGFybV9zZGF0ZScpLnZhbHVlLnNwbGl0KCctJykubGVuZ3RoID09IDMpICYmIChRKCdkMjVhbGFybV9zdGltZScpLnZhbHVlLnNwbGl0KCc6JykubGVuZ3RoID09IDMpICYmICgoaWwgPT0gMSkgfHwgKGlsID09IDMpKTsNCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCBvayk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiBzaG93QWRkQWxhcm1PayhidXR0b24sIGFscm0pIHsNCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMikgeyBzaG93QWxlcnREZXRhaWxzRGVsZXRlKGJ1dHRvbiwgYWxybSk7IHJldHVybjsgfQ0KICAgICAgICAgICAgdmFyIGFsYXJtX25hbWUgPSBRKCdkMjVhbGFybV9uYW1lJykudmFsdWU7DQogICAgICAgICAgICB2YXIgeDEgPSBRKCdkMjVhbGFybV9zZGF0ZScpLnZhbHVlLnNwbGl0KCctJyk7DQogICAgICAgICAgICB2YXIgeDIgPSBRKCdkMjVhbGFybV9zdGltZScpLnZhbHVlLnNwbGl0KCc6Jyk7DQogICAgICAgICAgICB2YXIgdCA9IG5ldyBEYXRlKHgxWzBdLCB4MVsxXSAtIDEsIHgxWzJdLCB4MlswXSwgeDJbMV0sIHgyWzJdLCAwKTsgLy8gTm90IHN1cmUgd2h5LCBidXQgbW9udGggaXMgMCA9IEpBTiwgMTEgPSBERUMNCiAgICAgICAgICAgIHZhciBhbGFybV9zdGFydHRpbWUgPSBfZm10dGltZXBhZCh0LmdldFVUQ0Z1bGxZZWFyKCkpICsgJy0nICsgX2ZtdHRpbWVwYWQodC5nZXRVVENNb250aCgpICsgMSkgKyAnLScgKyBfZm10dGltZXBhZCh0LmdldFVUQ0RhdGUoKSkgKyAnVCcgKyBfZm10dGltZXBhZCh0LmdldFVUQ0hvdXJzKCkpICsgJzonICsgX2ZtdHRpbWVwYWQodC5nZXRVVENNaW51dGVzKCkpICsgJzonICsgX2ZtdHRpbWVwYWQodC5nZXRVVENTZWNvbmRzKCkpICsgJ1onOw0KICAgICAgICAgICAgdmFyIHggPSBRKCdkMjVhbGFybV9pbnRlcnZhbCcpLnZhbHVlLnNwbGl0KCctJyk7DQogICAgICAgICAgICBpZiAoeC5sZW5ndGggIT0gMykgeyB4ID0gWzAsIDAsIDBdOyB9DQogICAgICAgICAgICB2YXIgYWxhcm1faW50ZXJ2YWwgPSAnUCcgKyB4WzBdICsgJ0RUJyArIHhbMV0gKyAnSCcgKyB4WzJdICsgJ00nOw0KICAgICAgICAgICAgdmFyIGFsYXJtX2RvYyA9IChRKCdkMjVhbGFybV9kb2MnKS52YWx1ZSA9PSAxKTsNCiAgICAgICAgICAgIHZhciB0cGwgPSBwcmVwYXJlQWxhcm1PY2N1cmVuY2VUZW1wbGF0ZShhbGFybV9uYW1lLCBhbGFybV9uYW1lLCBhbGFybV9zdGFydHRpbWUsIGFsYXJtX2ludGVydmFsLCBhbGFybV9kb2MpOw0KICAgICAgICAgICAgaWYgKGFscm0gPT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgd3NzdGFjay5FeGVjTWV0aG9kWG1sKGFtdHN0YWNrLkNvbXBsZXRlTmFtZSgiQU1UX0FsYXJtQ2xvY2tTZXJ2aWNlIiksICJBZGRBbGFybSIsIHRwbCwNCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHdzLCByZXN1cmksIHJlc3BvbnNlLCBzdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goJ0FkZCBhbGFybScsICdGYWlsZWQgdG8gYWRkIGFsYXJtLiBTdGF0dXM6ICcgKyBzdGF0dXMgKyAnLjxici8+VmVyaWZ5IHRoZSBhbGFybSBpcyBmb3IgYSBmdXR1cmUgdGltZS4nKTsgcmV0dXJuOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UuQm9keVsnUmV0dXJuVmFsdWUnXSAhPSAwKSB7IG1lc3NhZ2Vib3goJ0FkZCBhbGFybScsICdGYWlsZWQgdG8gYWRkIGFsYXJtLCAnICsgcmVzcG9uc2UuQm9keVsnUmV0dXJuVmFsdWVTdHInXSArICcuPGJyLz5WZXJpZnkgdGhlIGFsYXJtIGlzIGZvciBhIGZ1dHVyZSB0aW1lLicpOyByZXR1cm47IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIFB1bGxBbGFybXMoKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhciBhbGFybXggPSBDbG9uZSh4eEFsYXJtc1thbHJtXSk7DQogICAgICAgICAgICAgICAgYWxhcm14WyJTdGFydFRpbWUiXSA9ICI8cDpEYXRldGltZSB4bWxuczpwPVwiaHR0cDovL3NjaGVtYXMuZG10Zi5vcmcvd2JlbS93c2NpbS8xL2NvbW1vblwiPiIgKyBhbGFybV9zdGFydHRpbWUgKyAiPC9wOkRhdGV0aW1lPiI7DQogICAgICAgICAgICAgICAgYWxhcm14WyJJbnRlcnZhbCJdID0gIjxwOkludGVydmFsIHhtbG5zOnA9XCJodHRwOi8vc2NoZW1hcy5kbXRmLm9yZy93YmVtL3dzY2ltLzEvY29tbW9uXCI+IiArIGFsYXJtX2ludGVydmFsICsgIjwvcDpJbnRlcnZhbD4iOw0KICAgICAgICAgICAgICAgIGFsYXJteFsiRGVsZXRlT25Db21wbGV0aW9uIl0gPSBhbGFybV9kb2M7DQogICAgICAgICAgICAgICAgYW10c3RhY2suUHV0KCJJUFNfQWxhcm1DbG9ja09jY3VycmVuY2UiLCBhbGFybXgsIGZ1bmN0aW9uICh3cywgcmVzdXJpLCByZXNwb25zZSwgc3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMjAwKSB7IG1lc3NhZ2Vib3goJ0VkaXQgYWxhcm0nLCAnRmFpbGVkIHRvIGNoYW5nZSBhbGFybS4gU3RhdHVzOiAnICsgc3RhdHVzICsgJy48YnIvPlZlcmlmeSB0aGUgYWxhcm0gZm9yIGF0IGEgZnV0dXJlIHRpbWUuJyk7IHJldHVybjsgfQ0KICAgICAgICAgICAgICAgICAgICBQdWxsQWxhcm1zKCk7DQogICAgICAgICAgICAgICAgfSwgbnVsbCwgbnVsbCwgeyAiSW5zdGFuY2VJRCIgOiBhbGFybXhbIkluc3RhbmNlSUQiXX0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gc2hvd0FsZXJ0RGV0YWlscyhpKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgYWxhcm0gPSB4eEFsYXJtc1tpXSwgd2FrZXRpbWUgPSBuZXcgRGF0ZShhbGFybVsiU3RhcnRUaW1lIl1bIkRhdGV0aW1lIl0pOw0KICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT10ZXh0LWFsaWduOmxlZnQ+JyArIGFkZEh0bWxWYWx1ZSgiTmFtZSIsIGFsYXJtWyJFbGVtZW50TmFtZSJdKSArIGFkZEh0bWxWYWx1ZSgiV2FrZSB0aW1lIiwgd2FrZXRpbWUudG9Mb2NhbGVTdHJpbmcoKS5yZXBsYWNlKCcsICcsICcgYXQgJykpOw0KICAgICAgICAgICAgaWYgKGFsYXJtWyJJbnRlcnZhbCJdICE9IHVuZGVmaW5lZCkgeyB4ICs9IGFkZEh0bWxWYWx1ZSgiSW50ZXJuYWwiLCBfZm10aW50ZXJ2YWwoYWxhcm1bIkludGVydmFsIl1bIkludGVydmFsIl0pKTsgfQ0KICAgICAgICAgICAgeCArPSBhZGRIdG1sVmFsdWUoIkFmdGVyIHdha2UiLCAoYWxhcm1bIkRlbGV0ZU9uQ29tcGxldGlvbiJdID09IHRydWUpPyJEZWxldGUgQWxhcm0iOiJLZWVwIEFsYXJtIikgKyAiPC9kaXY+IjsNCiAgICAgICAgICAgIG1lc3NhZ2Vib3goIkFsYXJtICIgKyBhbGFybVsiRWxlbWVudE5hbWUiXSwgeCk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiQWxhcm0gIiArIGFsYXJtWyJFbGVtZW50TmFtZSJdLCA1LCBzaG93QWxlcnREZXRhaWxzRGVsZXRlLCB4LCBpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNob3dBbGVydERldGFpbHNEZWxldGUoYnV0dG9uLCB0YWcpIHsNCiAgICAgICAgICAgIGlmIChidXR0b24gPT0gMikgeyBhbXRzdGFjay5EZWxldGUoIklQU19BbGFybUNsb2NrT2NjdXJyZW5jZSIsIHh4QWxhcm1zW3RhZ10sIGZ1bmN0aW9uKHN0YWNrLCBuYW1lLCByZXNwb25zZSwgc3RhdHVzKSB7IFB1bGxBbGFybXMoKTsgfSk7IH0NCiAgICAgICAgfQ0KDQoNCg0KDQogICAgICAgIC8vDQogICAgICAgIC8vIFNjcmlwdGluZw0KICAgICAgICAvLw0KDQogICAgICAgIC8vIENhbGxlZCBieSB0aGUgIlJ1biBTY3JpcHQuLi4iIGJ1dHRvbi4gRGlzcGxheSBhIGRpYWxvZyBib3ggdG8gYXNrIGZvciB0aGUgc2NyaXB0IGZpbGUuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9ydW5TY3JpcHREbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8IHNjcmlwdHN0YXRlKSByZXR1cm47DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiUnVuIFNjcmlwdCIsIDMsIHNjcmlwdF9ydW5TY3JpcHREbGdPaywgIjxicj48aW5wdXQgaWQ9c2NyaXB0b3BlbiB0eXBlPWZpbGUgc3R5bGU9d2lkdGg6MTAwJSBhY2NlcHQ9Lm1lc2NyaXB0PiIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gT25jZSB0aGUgc2NyaXB0IGZpbGUgaXMgc2VsZWN0ZWQsIGRlY29kZSB0aGUgc2NyaXB0IGhlcmUuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9ydW5TY3JpcHREbGdPayhyKSB7DQogICAgICAgICAgICBpZiAociAhPSAxKSByZXR1cm47DQogICAgICAgICAgICB2YXIgeCA9IFEoJ3NjcmlwdG9wZW4nKTsNCiAgICAgICAgICAgIGlmICh4LmZpbGVzLmxlbmd0aCAhPSAxKSByZXR1cm47DQogICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsNCiAgICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSBzY3JpcHRfb25TY3JpcHRSZWFkOw0KICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh4LmZpbGVzWzBdKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCBvbmNlIHRoZSBzY3JpcHQgaXMgZGVjb2RlZCwgZ2V0IHRoZSBzY3JpcHQgc2V0dXAgYW5kIHN0YXJ0IHJ1bm5pbmcgaXQuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9vblNjcmlwdFJlYWQoZmlsZSkgew0KICAgICAgICAgICAgdmFyIHg7DQogICAgICAgICAgICB0cnkgeyB4ID0gSlNPTi5wYXJzZShmaWxlLnRhcmdldC5yZXN1bHQpOyB9IGNhdGNoIChlKSB7fQ0KDQogICAgICAgICAgICBpZiAoY3VycmVudFZpZXcgPT0gMjApIHsNCiAgICAgICAgICAgICAgICAvLyBMb2FkIHNjcmlwdCBpbnRvIGVkaXRvcg0KICAgICAgICAgICAgICAgIGlmICh4WydzY3JpcHRUZXh0J10pIFEoJ3NjcmlwdGFyZWEnKS52YWx1ZSA9IHhbJ3NjcmlwdFRleHQnXTsNCiAgICAgICAgICAgICAgICBpZiAoeFsnbWVzY3JpcHQnXSkgUSgnY29tcGlsZWRhcmVhJykudmFsdWUgPSByc3RyMmhleChhdG9iKHhbJ21lc2NyaXB0J10pKTsNCiAgICAgICAgICAgICAgICBpZiAoeFsnYmxvY2tzJ10pIHsgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKHhbJ2Jsb2NrcyddKTsgc2NyaXB0Vmlld0J1dHRvbigxKTsgfSBlbHNlIHsgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKCk7IHNjcmlwdFZpZXdCdXR0b24oMCk7IH0NCiAgICAgICAgICAgICAgICBpZiAoeFsnc2NyaXB0QmxvY2tzJ10pIHsgc2NyaXB0X0Jsb2NrU2NyaXB0ID0geFsnc2NyaXB0QmxvY2tzJ107IH0gZWxzZSB7IGlmICghc2NyaXB0X0J1aWxkaW5nQmxvY2tzKSB7IHNjcmlwdF9CbG9ja1NjcmlwdCA9IFtdOyB9IH0NCg0KICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc2NyaXB0QmxvY2tzIHRvIHRoZSBsYXRlc3QgYmxvY2tzLiBUaGlzIGlzIGRvZXMgYmVjYXVzZSB3ZSBtYXkgdXBkYXRlIGFuIGV4aXN0aW5nIHNjcmlwdCB0byBuZXcgYmxvY2tzLg0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gc2NyaXB0X0Jsb2NrU2NyaXB0KSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBibG9jayA9IHNjcmlwdF9CbG9ja1NjcmlwdFtpXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHhibG9jayA9IHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1tibG9ja1sneG5hbWUnXV07DQogICAgICAgICAgICAgICAgICAgIGlmICh4YmxvY2spIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gQ2xvbmUoeGJsb2NrKTsgLy8gQ2xvbmUgYSBuZXcgYmxvY2ssIHRoZW4gc2V0IGFsbCB0aGUgdmFyaWFibGVzLg0KICAgICAgICAgICAgICAgICAgICAgICAgYlsnaWQnXSA9IGJsb2NrWydpZCddOw0KICAgICAgICAgICAgICAgICAgICAgICAgYlsneG5hbWUnXSA9IGJsb2NrWyd4bmFtZSddOw0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBiLnZhcnMpIHsgaWYgKGJsb2NrLnZhcnNbal0pIHsgYi52YXJzW2pdWyd2YWx1ZSddID0gYmxvY2sudmFyc1tqXVsndmFsdWUnXTsgfSB9DQogICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRbaV0gPSBiOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gUmVzZXQgdGhlIHNjcmlwdCBzdGF0ZQ0KICAgICAgICAgICAgICAgIGZ1cGRhdGVzY3JpcHQoKTsNCiAgICAgICAgICAgICAgICBkZWxldGUgc2NyaXB0c3RhdGU7DQogICAgICAgICAgICAgICAgcmVzZXRTY3JpcHRCdXR0b24oKTsNCiAgICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICB9DQogICAgICAgICAgICB2YXIgc3RhcnR2YXJzID0geyAnX2ludGVyYWN0aXZlJzoxIH07DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX2NlcnRpZmljYXRlcyddID0gMTsNCg0KICAgICAgICAgICAgc3RhcnR2YXJzWydfbW9kZSddID0gJ0Zpcm13YXJlJzsNCg0KICAgICAgICAgICAgc3RhcnR2YXJzWydfbW9kZSddID0gJ01lc2hDZW50cmFsMic7DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX21vZGUnXSA9ICdMTVMnOw0KICAgICAgICAgICAgaWYgKHggJiYgeFsnbWVzY3JpcHQnXSkgc2NyaXB0c3RhdGUgPSBzY3JpcHRfc2V0dXAoYXRvYih4WydtZXNjcmlwdCddKSwgc3RhcnR2YXJzKTsNCiAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZSkgew0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLndzc3RhY2sgPSB3c3N0YWNrOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLmFtdHN0YWNrID0gYW10c3RhY2s7DQogICAgICAgICAgICAgICAgc2NyaXB0c3RhdGUub25TdGVwID0gc2NyaXB0X3VwZGF0ZVNjcmlwdFN0YXRlOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLm9uQ29uc29sZSA9IHNjcmlwdF9jb25zb2xlOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLnN0YXJ0KDEwMCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIG1lc3NhZ2Vib3goIlJ1biBTY3JpcHQiLCAiSW52YWxpZCBzY3JpcHQgZmlsZS4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENhbGxlZCB3aGVuIHRoZSBzY3JpcHQgY2hhbmdlcyBzdGF0ZSwgZGlzcGxheXMgdGhlIGdyZWVuIHN0YXR1cyBiYXIgYXQgdGhlIHRvcCBvZiB0aGUgd2ViIHBhZ2UuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF91cGRhdGVTY3JpcHRTdGF0ZSgpIHsNCiAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZSkgew0KICAgICAgICAgICAgICAgIFFWKCdpZF9zY3JpcHRzdGF0dXMnLCBzY3JpcHRzdGF0ZS5zdGF0ZSA+IDApOyBjZW50ZXIoKTsNCiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0c3RhdGUuc3RhdGUgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICBzY3JpcHRzdGF0ZSA9IHVuZGVmaW5lZDsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgYnkgYSBydW5uaW5nIHNjcmlwdCB0byB1cGRhdGUgdGhlIGNvbnNvbGUuIFRoZSBsYXN0IG1lc3NhZ2UgaW4gdGhlIGNvbnNvbGUgaXMgZGlzcGxheWVkIGluIHRoZSB0b3AgZ3JlZW4gYmFyLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfY29uc29sZShtc2cpIHsNCiAgICAgICAgICAgIGlmIChtc2cuaW5kZXhPZigiSU5GTzogIikgPT0gMCkgeyBtc2cgPSBtc2cuc3Vic3RyaW5nKDYpOyB9DQogICAgICAgICAgICBpZiAobXNnLmluZGV4T2YoIlNVQ0NFU1M6ICIpID09IDApIHsgbXNnID0gbXNnLnN1YnN0cmluZyg5KTsgfQ0KICAgICAgICAgICAgaWYgKG1zZy5pbmRleE9mKCJFUlJPUjogIikgPT0gMCkgeyBtc2cgPSBtc2cuc3Vic3RyaW5nKDcpOyB9DQogICAgICAgICAgICBRSCgnaWRfc2NyaXB0c3RhdHVzc3RyJywgJywgJyArIG1zZyk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgYnkgdGhlICJTdG9wIiBidXR0b24gb24gdGhlIHNjcmlwdCBzdGF0dXMgYmFyLiBDYXVzZXMgdGhlIHNjcmlwdCB0byBzdG9wLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfU3RvcCgpIHsNCiAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZSkgew0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRzdGF0ZS5kaWFsb2cgPT0gdHJ1ZSkgeyBzZXREaWFsb2dNb2RlKDApOyB9DQogICAgICAgICAgICAgICAgc2NyaXB0c3RhdGUuc3RvcCgpOw0KICAgICAgICAgICAgICAgIHNjcmlwdHN0YXRlLnN0YXRlID0gMDsNCiAgICAgICAgICAgICAgICBzY3JpcHRfdXBkYXRlU2NyaXB0U3RhdGUoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQoNCg0KICAgICAgICANCiAgICAgICAgdmFyIHNjcmlwdF9CdWlsZGluZ0Jsb2NrczsgLy8gTGlzdCBvZiBibG9jayB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgc2NyaXB0LiBUaGlzIGlzIHNob3duIG9uIHRoZSBsaXN0IHNpZGUuDQogICAgICAgIHZhciBzY3JpcHRfU3RhcnRpbmdCdWlsZGluZ0Jsb2NrczsgLy8gTGlzdCBvZiBibG9jayB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIGEgc2NyaXB0IHdoZW4geW91IGdldCBzdGFydGVkLg0KICAgICAgICB2YXIgc2NyaXB0X0Jsb2NrU2NyaXB0ID0gW107IC8vIExpc3Qgb2YgYmxvY2tzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIGN1cnJlbnQgc2NyaXB0Lg0KICAgICAgICB2YXIgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7IC8vIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYmxvY2suDQogICAgICAgIHZhciBzY3JpcHRfQnVpbGRlclZpZXcgPSAwOyAvLyAwID0gRWRpdG9yIFZpZXcsIDEgPSBCdWlsZGVyIFZpZXcNCiAgICAgICAgdmFyIGVkaXRzY3JpcHRzdGF0ZTsgLy8gVGhpcyBpcyB0aGUgaW5zdGFuY2Ugb2YgdGhlIHNjcmlwdCBydW5uZXIgdXNlZCBieSB0aGUgZWRpdG9yLiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBydW5uZXIgdXNlZCBieSB0aGUgd2ViIHBhZ2UuDQoNCg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRMb2FkU3RhcnRpbmdCbG9ja3MoKSB7DQoNCiAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7DQogICAgICAgICAgICByZXF1ZXN0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA+PSAyMDAgJiYgcmVxdWVzdC5zdGF0dXMgPCA0MDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gU3VjY2Vzcw0KICAgICAgICAgICAgICAgICAgICB2YXIgeDsNCiAgICAgICAgICAgICAgICAgICAgdHJ5IHsgeCA9IEpTT04ucGFyc2UocmVxdWVzdC5yZXNwb25zZVRleHQpOyB9IGNhdGNoIChlKSB7fQ0KICAgICAgICAgICAgICAgICAgICBpZiAoKHgpICYmICh4WydibG9ja3MnXSkpIHsgc2NyaXB0X1N0YXJ0aW5nQnVpbGRpbmdCbG9ja3MgPSB4WydibG9ja3MnXTsgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKHNjcmlwdF9TdGFydGluZ0J1aWxkaW5nQmxvY2tzKTsgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH07DQogICAgICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ0ZhaWxlZCB0byBnZXQgc2NyaXB0IGJsb2NrcycpOyB9Ow0KICAgICAgICAgICAgcmVxdWVzdC5vcGVuKCdHRVQnLCAnc2NyaXB0YmxvY2tzLnR4dCcsIHRydWUpOw0KICAgICAgICAgICAgcmVxdWVzdC5zZW5kKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgYnkgdGhlICJWaWV3IEVkaXRvciIgb3IgIlZpZXcgQnVpbGRlciIgYnV0dG9uIHRvIHRvZ2dsZSBiZXR3ZWVuIHRoZSB2aWV3IG1vZGVzLg0KICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBjb25zdHJ1Y3Rpb24gYmxvY2tzLCBkaXNwbGF5IHRoZSBzY3JpcHQgZWRpdG9yIG9ubHkuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdFZpZXdCdXR0b24oeCkgew0KICAgICAgICAgICAgc2NyaXB0X0J1aWxkZXJWaWV3ID0geDsNCiAgICAgICAgICAgIFFWKCdzY3JpcHRlZGl0b3InLCB4ID09IDApOw0KICAgICAgICAgICAgUVYoJ3NjcmlwdGJ1aWxkZXInLCB4ID09IDEpOw0KICAgICAgICAgICAgUVYoJ3ZpZXdFZGl0b3JCdXR0b24nLCBzY3JpcHRfQnVpbGRpbmdCbG9ja3MgJiYgKHggPT0gMSkpOw0KICAgICAgICAgICAgUVYoJ3ZpZXdCdWlsZGVyQnV0dG9uJywgc2NyaXB0X0J1aWxkaW5nQmxvY2tzICYmICh4ID09IDApKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIERpc3BsYXkgdGhlIGxpc3Qgb2YgY29uc3RydWN0aW9uIHNjcmlwdCBibG9jayBvbiB0aGUgbGVmdCBzaWRlLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfc2V0QnVpbGRCbG9ja3MoYmxvY2tzKSB7DQogICAgICAgICAgICBzY3JpcHRfQnVpbGRpbmdCbG9ja3MgPSBibG9ja3M7DQogICAgICAgICAgICB2YXIgeCA9ICcnOw0KICAgICAgICAgICAgaWYgKGJsb2Nrcykgew0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gYmxvY2tzKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpLmNoYXJDb2RlQXQoMCkgIT0gOTUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gJzxkaXYgaWQ9c2Jsb2NrXycgKyBpICsgJyBzdHlsZT1jdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiNjY2M7d2lkdGg6YXV0bztwYWRkaW5nOjVweDttYXJnaW46MnB4IG9uZGJsY2xpY2s9c2NyaXB0X2ZhZGRibG9jaygiJyArIGkgKyAnIikgZHJhZ2dhYmxlPXRydWUgb25kcmFnc3RhcnQ9c2NyaXB0X2ZvbmRyYWdzdGFydChldmVudCx0aGlzKSBvbmRyYWdlbmQ9c2NyaXB0X2ZvbmRyYWdlbmQoZXZlbnQsdGhpcykgdGl0bGU9IicgKyBibG9ja3NbaV1bJ2Rlc2MnXSArICciJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gJz4nICsgYmxvY2tzW2ldWyduYW1lJ10gKyAnPC9kaXY+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIFFIKCdibG9ja3MnLCB4KTsNCiAgICAgICAgICAgIHNjcmlwdF9mb25maWx0ZXJjaGFuZ2VkKCk7DQogICAgICAgICAgICBzY3JpcHRWaWV3QnV0dG9uKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrcz8xOjApOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQWRkIGEgbmV3IGJsb2NrIHRvIHRoZSBlbmQgb2YgdGhlIGJsb2NrIHNjcmlwdC4gVGhpcyBpcyBjYWxsZWQgd2hlbiB5b3UgcmlnaHQgY2xpY2sgb24gYSBibG9jayBhbmQgaGl0ICJBZGQiIGluIHRoZSBjb250ZXh0IG1lbnUuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mYWRkYmxvY2soaCkgew0KICAgICAgICAgICAgdmFyIGIgPSBDbG9uZShzY3JpcHRfQnVpbGRpbmdCbG9ja3NbaF0pOyAvLyBUbyBhZGQgYSBuZXcgYmxvY2sgdG8gdGhlIHNjcmlwdCwgY2xvbmUgdGhlIGJsb2NrLCBhc3NpZ24gaXQgYSByYW5kb20gaWQgYW5kIHNldCB0aGUgeG5hbWUgdG8gdGhlIG5hbWUgb2YgdGhlIGJsb2NrLg0KICAgICAgICAgICAgYlsnaWQnXSA9IE1hdGgucmFuZG9tKCk7DQogICAgICAgICAgICBiWyd4bmFtZSddID0gaDsNCiAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdC5wdXNoKGIpOyAvLyBOb3cgdGhhdCBhIGJsb2NrIGlzIGNyZWF0ZWQsIGFkZCBpdCBhdCB0aGUgZW5kIG9mIHRoZSBzY3JpcHQgYW5kIHNldCBpdCBhcyB0aGUgc2VsZWN0ZWQgYmxvY2suDQogICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gc2NyaXB0X0Jsb2NrU2NyaXB0Lmxlbmd0aCAtIDE7DQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7IC8vIFJlLWRpc3BsYXkgdGhlIGxpc3Qgb2Ygc2NyaXB0IGJsb2Nrcy4gVGhlIHNlbGVjdGVkIGJsb2NrIHdpbGwgYWxzbyBiZSBoaWdobGlnaHRlZC4NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEVkaXQgYSBzY3JpcHQgYmxvY2sNCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZlZGl0YmxvY2soaCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgJ0VkaXQgJyArIHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1toXVsnbmFtZSddLCAzLCBzY3JpcHRfZmVkaXRibG9ja0V4LCAnRWRpdCB0aGlzIGJsb2NrPyBUaGlzIG9wZXJhdGlvbiB3aWxsIHJlc2V0IHRoZSBibG9jayBlZGl0b3IgYW5kIGxvYWQgdGhlIGJsb2NrIGNvZGUgaW50byB0aGUgY29kZSBlZGl0b3IuJywgaCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGJsb2NrIGVkaXQgZGlhbG9nIGlzIGNsb3NlZC4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZlZGl0YmxvY2tFeChidXR0b24sIGgpIHsNCiAgICAgICAgICAgIHNjcmlwdF9uZXdTY3JpcHREbGdPaygpOw0KICAgICAgICAgICAgc2NyaXB0Vmlld0J1dHRvbigwKTsNCiAgICAgICAgICAgIHZhciB4ID0gJycsIGIgPSBzY3JpcHRfQnVpbGRpbmdCbG9ja3NbaF07DQogICAgICAgICAgICB4ICs9ICcjIyFCTE9DSyEjI1xyXG4jaWQ9JyArIGggKyAnXHJcbiNuYW1lPScgKyBiWyduYW1lJ10gKyAnXHJcbiNkZXNjPScgKyBiWydkZXNjJ10gKyAnXHJcbiMjIUJMT0NLISMjXHJcbic7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIGJbJ3ZhcnMnXSkgew0KICAgICAgICAgICAgICAgIHZhciB2ID0gYlsndmFycyddW2ldOw0KICAgICAgICAgICAgICAgIHggKz0gJyMjIVZBUiEjI1xyXG4jaWQ9JyArIGkgKyAnXHJcbiNuYW1lPScgKyB2WyduYW1lJ10gKyAnXHJcbiNkZXNjPScgKyB2WydkZXNjJ10gKyAnXHJcbiN0eXBlPScgKyB2Wyd0eXBlJ10gKyAnXHJcbic7DQogICAgICAgICAgICAgICAgaWYgKHZbJ21heGxlbmd0aCddKSB7IHggKz0gJyNtYXhsZW5ndGg9JyArIHZbJ21heGxlbmd0aCddICsgJ1xyXG4nOyB9DQogICAgICAgICAgICAgICAgaWYgKHZbJ3ZhbHVlcyddKSB7IGZvciAodmFyIGogaW4gdlsndmFsdWVzJ10pIHsgeCArPSAnI3ZhbHVlcy0nICsgaiArJz0nICsgdlsndmFsdWVzJ11bal0gKyAnXHJcbic7IH0gfQ0KICAgICAgICAgICAgICAgIHggKz0gJyN2YWx1ZT0nICsgdlsndmFsdWUnXSArICdcclxuIyNTV0FQICUlJScgKyBpICsgJyUlJSAnICsgdlsndmFsdWUnXSArICdcclxuJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHggKz0gJyMjIVZBUiEjI1xyXG4jI1NXQVAgJSUlfiUlJSAwXHJcblxyXG4jIyFCTE9DSyEjI1xyXG4nICsgYlsnY29kZSddICsgJ1xyXG4jIyFCTE9DSyEjI1xyXG4nOw0KICAgICAgICAgICAgUSgnc2NyaXB0YXJlYScpLnZhbHVlID0geDsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mQ29udmVydFNjcmlwdFRvSnNvbkJsb2NrKHNjcmlwdCkgew0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHt9LCBzY3JpcHRwYXJ0cyA9IHNjcmlwdC5zcGxpdCgnIyMhQkxPQ0shIyNcbicpLCBzY3JpcHRsaW5lcyA9IHNjcmlwdHBhcnRzWzFdLnNwbGl0KCdcbicpOw0KDQogICAgICAgICAgICAvLyBQYXJzZSBpbmZvcm1hdGlvbiBwYXJ0DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdGxpbmVzKSB7DQogICAgICAgICAgICAgICAgdmFyIHMgPSBzY3JpcHRsaW5lc1tpXS5zcGxpdCgnPScpOw0KICAgICAgICAgICAgICAgIGlmIChzLmxlbmd0aCA9PSAyKSB7IHJlc3VsdFtzWzBdLnN1YnN0cmluZygxKV0gPSBzWzFdOyB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFBhcnNlIHZhcmlhYmxlcyBwYXJ0DQogICAgICAgICAgICByZXN1bHRbJ3ZhcnMnXSA9IHt9Ow0KICAgICAgICAgICAgc2NyaXB0dmFyaWFibGVzID0gc2NyaXB0cGFydHNbMl0uc3BsaXQoJyMjIVZBUiEjI1xuJyk7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdHZhcmlhYmxlcykgew0KICAgICAgICAgICAgICAgIHNjcmlwdGxpbmVzID0gc2NyaXB0dmFyaWFibGVzW2ldLnNwbGl0KCdcbicpOw0KICAgICAgICAgICAgICAgIHZhciB2ID0ge30sIHZhbHVlcyA9IHt9LCB2YWx1ZXNsZW4gPSAwOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gc2NyaXB0bGluZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSBzY3JpcHRsaW5lc1tqXS5zcGxpdCgnPScpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoKHMubGVuZ3RoID09IDIpICYmIChzWzFdKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChzWzBdKSAmJiAoc1swXS5sZW5ndGggPiAwKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzWzBdLnN1YnN0cmluZygwLCA4KSA9PSAnI3ZhbHVlcy0nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tzWzBdLnN1YnN0cmluZyg4KV0gPSBzWzFdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXNsZW4rKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2W3NbMF0uc3Vic3RyaW5nKDEpXSA9IHNbMV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmICh2LmlkKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNsZW4gPiAwKSB7IHZbJ3ZhbHVlcyddID0gdmFsdWVzOyB9DQogICAgICAgICAgICAgICAgICAgIHZhciBpZCA9IHYuaWQ7DQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2LmlkOw0KICAgICAgICAgICAgICAgICAgICByZXN1bHRbJ3ZhcnMnXVtpZF0gPSB2Ow0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gUGFyc2UgY29kZSBwYXJ0DQogICAgICAgICAgICByZXN1bHRbJ2NvZGUnXSA9IHNjcmlwdHBhcnRzWzNdOw0KDQogICAgICAgICAgICAvLyBQYWNrYWdlIHRoZSByZXN1bHQNCiAgICAgICAgICAgIHZhciBpZCA9IHJlc3VsdC5pZDsNCiAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQuaWQ7DQogICAgICAgICAgICB2YXIgciA9IHt9Ow0KICAgICAgICAgICAgcltpZF0gPSByZXN1bHQ7DQogICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkociwgbnVsbCwgJyAgJyk7DQogICAgICAgIH0NCg0KICAgICAgICAvKg0KICAgICAgICAvLyBJZiB0aGUgZGVsZXRlIGtleSBpcyBwcmVzc2VkLCBkZWxldGUgdGhlIGJsb2NrDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25rZXlwcmVzcyhlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBpZiAoZS5rZXkgPT0gJ0RlbGV0ZScgJiYgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCAhPSBudWxsKSB7DQogICAgICAgICAgICAgICAgLy9kZWxldGUgc2NyaXB0X0Jsb2NrU2NyaXB0W3NjcmlwdF9CbG9ja1NjcmlwdFNlbGVjdGVkSWRdOw0KICAgICAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdC5zcGxpY2Uoc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCwgMSk7DQogICAgICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7DQogICAgICAgICAgICAgICAgZnVwZGF0ZXNjcmlwdCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICovDQoNCiAgICAgICAgLy8gRmlsZXIgdGhlIGxpc3Qgb2YgYmxvY2tzIG9uIHRoZSBsZWZ0IHNpZGUgbGlzdC4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmZpbHRlcmNoYW5nZWQoKSB7DQogICAgICAgICAgICB2YXIgZmlsdGVyID0gUSgnYmxvY2tmaWx0ZXInKS52YWx1ZS50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBzY3JpcHRfQnVpbGRpbmdCbG9ja3MpIHsNCiAgICAgICAgICAgICAgICAvLyBTY3JpcHQgYmxvY2tzIHRoYXQgc3RhcnQgd2l0aCAiXyIgYXJlIGhpZGRlbiBibG9ja3MgYW5kIHNob3VsZCBuZXZlciBiZSBzaG93bi4NCiAgICAgICAgICAgICAgICBpZiAoaS5jaGFyQ29kZUF0KDApICE9IDk1KSB7IFFWKCdzYmxvY2tfJyArIGksIChzY3JpcHRfQnVpbGRpbmdCbG9ja3NbaV1bJ25hbWUnXS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZmlsdGVyKSA+PSAwIHx8IHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1tpXVsnZGVzYyddLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXIpID49IDApKTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ2FsbGVkIHdoZW4geW91IGNsaWNrIG9uIGEgYmxvY2suIElmIHlvdSBkb3VibGUgY2xpY2ssIG9uIGEgYmxvY2ssIGRvIGxpa2UgcHJlc3Npbmcgb24gdGhlICJFZGl0Li4uIiBidXR0b24uDQogICAgICAgIHZhciBzY3JpcHRfZm9uY2xpY2tEYmxDbGlja0RldGVjdEluZGV4ID0gbnVsbDsNCiAgICAgICAgdmFyIHNjcmlwdF9mb25jbGlja0RibENsaWNrRGV0ZWN0VGltZSA9IG51bGw7DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25jbGljayhlLCB0KSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gbnVsbDsNCiAgICAgICAgICAgIGlmICh0KSB7IHQgPSBmZ2V0UGFyZW50V2l0aElkKHQpOyBpZiAodC5pZC5zdGFydHNXaXRoKCd4YmxvY2tfJykpIHsgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IHQuaWQuc3Vic3RyaW5nKDcpOyB9IH0gLy8gRmlndXJlIG91dCB3aGF0IGJsb2NrIHdhcyBjbGlja2VkIG9uDQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7IC8vIFRoaXMgd2lsbCBzaG93IHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYmxvY2sgaW4gYSBkaWZmZXJlbnQgY29sb3IuDQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQoNCiAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBhIGRvdWJsZSBjbGljay4gV2UgbmVlZCB0d28gY2xpY2tzIG9uIHRoZSBzYW1lIG9iamVjdCB3aXRoaW4gMjUwbXMuDQogICAgICAgICAgICBpZiAoc2NyaXB0X2ZvbmNsaWNrRGJsQ2xpY2tEZXRlY3RJbmRleCA9PSBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkICYmIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHNjcmlwdF9mb25jbGlja0RibENsaWNrRGV0ZWN0VGltZSkgPCAyNTApIHsgcmV0dXJuIHNjcmlwdF9mb25lZGl0Y2xpY2soc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCk7IH0NCiAgICAgICAgICAgIHNjcmlwdF9mb25jbGlja0RibENsaWNrRGV0ZWN0SW5kZXggPSBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkOw0KICAgICAgICAgICAgc2NyaXB0X2ZvbmNsaWNrRGJsQ2xpY2tEZXRlY3RUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBTY3JpcHQgYmxvY2sgZHJhZyAmIGRyb3AgZnVuY3Rpb25zLCBhbGxvdyB0aGUgdXNlciB0byBjcmVhdGUgYW5kIG1vdmUgc2NyaXB0IGJsb2Nrcy4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmRyYWdzdGFydChlLCB0KSB7IGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsgdCA9IGZnZXRQYXJlbnRXaXRoSWQodCk7IHQuc3R5bGUub3BhY2l0eSA9ICcwLjQnOyBlLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gJ21vdmUnOyBlLmRhdGFUcmFuc2Zlci5zZXREYXRhKCdzY3JpcHRidWlsZGVyL2Jsb2NrJywgdC5pZCk7IH0NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmRyYWdlbmQoZSwgdCkgICB7IGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsgdCA9IGZnZXRQYXJlbnRXaXRoSWQodCk7IHQuc3R5bGUub3BhY2l0eSA9ICcxLjAnOyB9DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25kcmFnZW50ZXIoZSwgdCkgeyBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47IGZnZXRQYXJlbnRXaXRoSWQodCkuc3R5bGVbJ2JvcmRlci10b3AnXSA9ICdzb2xpZCAycHggYmxhY2snOyB9DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25kcmFnbGVhdmUoZSwgdCkgeyBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47IGUgPSBlLm9yaWdpbmFsRXZlbnQgfHwgZTsgdmFyIGN1cnJlbnRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChlLnBhZ2VYLCBlLnBhZ2VZKTsgaWYgKCF0LmNvbnRhaW5zKGN1cnJlbnRFbGVtZW50KSkgeyBmZ2V0UGFyZW50V2l0aElkKHQpLnN0eWxlWydib3JkZXItdG9wJ10gPSAnbm9uZSc7IH0gfQ0KDQogICAgICAgIC8vIENhbGxlZCB3aGVuIHlvdSBkcm9wIGEgYmxvY2sgb24gdGhlIGJsb2NrIHNjcmlwdCBhcmVhLiBUaGlzIGNvZGUgd2lsbCBhZGQgb3IgbW92ZSBhIGJsb2NrIGludG8gaXQncyBuZXcgcGxhY2UuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9mb25kcm9wKGUsIHQpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHQgPSBmZ2V0UGFyZW50V2l0aElkKHQpOw0KICAgICAgICAgICAgdmFyIGIsIHggPSBlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCdzY3JpcHRidWlsZGVyL2Jsb2NrJyksIGRwID0gcGFyc2VJbnQodC5pZC5zdWJzdHJpbmcoNykpOw0KICAgICAgICAgICAgaWYgKHggPT0gJycpIHsgZG9jdW1lbnRGaWxlU2VsZWN0SGFuZGxlcihlKTsgcmV0dXJuOyB9DQogICAgICAgICAgICBpZiAoeC5zdGFydHNXaXRoKCJzYmxvY2tfIikpIHsNCiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgc2NyaXB0IGJsb2NrDQogICAgICAgICAgICAgICAgYiA9IENsb25lKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1t4LnN1YnN0cmluZyg3KV0pOw0KICAgICAgICAgICAgICAgIGJbJ2lkJ10gPSBNYXRoLnJhbmRvbSgpOw0KICAgICAgICAgICAgICAgIGJbJ3huYW1lJ10gPSB4LnN1YnN0cmluZyg3KTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gUHVsbCBhbiBleGlzdGluZyBzY3JpcHQgYmxvY2sgZnJvbSB0aGUgbGlzdA0KICAgICAgICAgICAgICAgIHZhciBpID0gcGFyc2VJbnQoeC5zdWJzdHJpbmcoNykpOw0KICAgICAgICAgICAgICAgIGIgPSBzY3JpcHRfQmxvY2tTY3JpcHRbaV07DQogICAgICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0LnNwbGljZShpLCAxKTsNCiAgICAgICAgICAgICAgICBpZiAoZHAgPiBpKSBkcC0tOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKHQuaWQgPT0gJ3NjcmlwdGJsb2NrcycpIHsNCiAgICAgICAgICAgICAgICAvLyBQdXQgdGhlIGJsb2NrIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QNCiAgICAgICAgICAgICAgICBpZiAoYikgc2NyaXB0X0Jsb2NrU2NyaXB0LnB1c2goYik7DQogICAgICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IHNjcmlwdF9CbG9ja1NjcmlwdC5sZW5ndGggLSAxOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIGJsb2NrIHdpdGhpbiB0aGUgbGlzdCwgYWJvdmUgdGhlIGRyb3AgcG9pbnQNCiAgICAgICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHQuc3BsaWNlKGRwLCAwLCBiKTsNCiAgICAgICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gZHA7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiB5b3UgaGl0ICJFZGl0Li4uIiBvbiBhIGJsb2NrLCBkaXNwbGF5cyBhIGRpYWxvZyBib3ggd2l0aCBhbGwgYmxvY2sgYXR0cmlidXRlcy4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmVkaXRjbGljayhoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICB2YXIgYmxvY2sgPSBzY3JpcHRfQmxvY2tTY3JpcHRbaF07DQogICAgICAgICAgICBzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID0gaDsNCiAgICAgICAgICAgIGZ1cGRhdGVzY3JpcHQoKTsNCg0KICAgICAgICAgICAgaWYgKGJsb2NrICE9IG51bGwpIHsNCiAgICAgICAgICAgICAgICB2YXIgYiA9IGJsb2NrWyd2YXJzJ10gPyA3IDogNTsNCiAgICAgICAgICAgICAgICB2YXIgYyA9IGJsb2NrWydkZXNjJ10gKyAiPGJyPjxicj4iOw0KICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIEZvciBlYWNoIHZhcmlhYmxlIGluIGEgYmxvY2ssIGFkZCB0aGUgcHJvcGVyIGlucHV0IGNvbnRyb2wgZm9yIHRoaXMgdmFyaWFibGUgYW5kIHNldCB0aGUgY29udHJvbCB0byB0aGUgY3VycmVudCB2YWx1ZS4NCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBibG9ja1sndmFycyddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYXR0cmlidXRlcyA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmxvY2sgdmFsdWVzIGNhbiBiZSBvbiB0eXBlIDE6VGV4dCwyOk51bWJlciwzOkRyb3BEb3duTGlzdCw0OnBhc3N3b3JkLDU6TXVsdGlTZWxlY3QNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWydtYXhsZW5ndGgnXSkgYXR0cmlidXRlcyArPSAoIiBtYXhsZW5ndGg9IiArIGJsb2NrWyd2YXJzJ11baV1bJ21heGxlbmd0aCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gMikgeyBhdHRyaWJ1dGVzICs9ICIgb25rZXlwcmVzcz0ncmV0dXJuIG51bWJlcnNPbmx5KGV2ZW50KSciIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gMSB8fCBibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gMikgeyBkID0gIjxpbnB1dCB0aXRsZT0nIiArIGJsb2NrWyd2YXJzJ11baV1bJ2Rlc2MnXSArICInIGlkPXNjcmlwdFh2YWx1ZV8iICsgaSArICIgdmFsdWU9JyIgKyBibG9ja1sndmFycyddW2ldWyd2YWx1ZSddICsgIicgIiArIGF0dHJpYnV0ZXMgKyAiIHN0eWxlPXdpZHRoOjEwMCU+PC9pbnB1dD4iOyB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tbJ3ZhcnMnXVtpXVsndHlwZSddID09IDMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gIjxzZWxlY3QgdGl0bGU9JyIgKyBibG9ja1sndmFycyddW2ldWydkZXNjJ10gKyAiJyBpZD1zY3JpcHRYdmFsdWVfIiArIGkgKyAiIHN0eWxlPXdpZHRoOjEwMCU7cGFkZGluZzowO21hcmdpbjowPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBibG9ja1sndmFycyddW2ldWyd2YWx1ZXMnXSkgeyBkICs9ICI8b3B0aW9uIHZhbHVlPSIgKyBqICsgKGogPT0gYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWUnXSA/ICIgc2VsZWN0ZWQiIDogIiIpICsgIj4iICsgYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWVzJ11bal0gKyAiPC9vcHRpb24+IjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgKz0gIjwvc2VsZWN0PiI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tbJ3ZhcnMnXVtpXVsndHlwZSddID09IDQpIHsgZCA9ICI8aW5wdXQgdHlwZT1wYXNzd29yZCBhdXRvY29tcGxldGU9b2ZmIHRpdGxlPSciICsgYmxvY2tbJ3ZhcnMnXVtpXVsnZGVzYyddICsgIicgaWQ9c2NyaXB0WHZhbHVlXyIgKyBpICsgIiB2YWx1ZT0nIiArIGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlJ10gKyAiJyAiICsgYXR0cmlidXRlcyArICIgc3R5bGU9d2lkdGg6MTAwJT48L2lucHV0PiI7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNSkgeyBkID0gJyc7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNikgeyBkID0gIjxpbnB1dCB0eXBlPWZpbGUgdGl0bGU9JyIgKyBibG9ja1sndmFycyddW2ldWydkZXNjJ10gKyAiJyBpZD1zY3JpcHRYdmFsdWVfIiArIGkgKyAiICIgKyBhdHRyaWJ1dGVzICsgIiBzdHlsZT13aWR0aDoxMDAlPjwvaW5wdXQ+IjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgYyArPSAnPHRhYmxlIHN0eWxlPXdpZHRoOjEwMCUgdGl0bGU9IicgKyBibG9ja1sndmFycyddW2ldWydkZXNjJ10gKyAnIj48dGQgc3R5bGU9d2lkdGg6MTIwcHg+JyArIGJsb2NrWyd2YXJzJ11baV1bJ25hbWUnXSArICc8dGQ+PGI+JyArIGQgKyAnPC9iPjwvdGFibGU+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYyArPSAnPHVsIGlkPXNjcmlwdFh2YWx1ZV8nICsgaSArICcgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTpub25lO2hlaWdodDoxMDBweDtvdmVyZmxvdzphdXRvO3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjMDAwO2JhY2tncm91bmQtY29sb3I6d2hpdGU7b3ZlcmZsb3cteDpoaWRkZW47bWFyZ2luOjA7cGFkZGluZzowIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHkgaW4gYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWVzJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhjID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja1sndmFycyddW2ldWyd2YWx1ZSddLmluZGV4T2YoeSkgPj0gMCkgeGMgPSAnIGNoZWNrZWQnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjICs9ICc8bGk+PGxhYmVsPjxpbnB1dCB0eXBlPWNoZWNrYm94IGlkPXNjcmlwdFh2YWx1ZXhfJyArIGkgKyAnLScgKyB5ICsgJycgKyB4YyArICc+JyArIGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlcyddW3ldICsgJzwvbGFiZWw+PC9saT4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjICs9ICc8L3VsPic7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFBhcmFtZXRlcnM6IERpYWxvZyBNb2RlICgwID0gbm9uZSksIERpYWxvZyBUaXRsZSwgQnV0dG9ucyAoMSA9IE9LLCAyID0gQ2FuY2VsLCAzID0gT0sgJiBDYW5jZWwpLCBDYWxsIGJhY2sgZnVuY3Rpb24oMCA9IENhbmNlbCwgMSA9IE9LKSwgRGlhbG9nIENvbnRlbnQgKE1vZGUgMTEgb25seSkNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTEsIGJsb2NrLm5hbWUsIGIsIHNjcmlwdF9mb25lZGl0Y2xpY2tFeCwgYywgaCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGJsb2NrIGVkaXQgZGlhbG9nIGlzIGNsb3NlZC4NCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2ZvbmVkaXRjbGlja0V4KGJ1dHRvbiwgdGFnKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBpZiAoYnV0dG9uID09IDIpIHsNCiAgICAgICAgICAgICAgICAvLyBEZWxldGUgdGhpcyBibG9jaw0KICAgICAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdC5zcGxpY2UodGFnLCAxKTsNCiAgICAgICAgICAgICAgICBpZiAoc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9PSB0YWcpIHsgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7IH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gQ2hhbmdlIHRoaXMgYmxvY2sgd2l0aCBuZXcgYXJndW1lbnRzDQogICAgICAgICAgICAgICAgdmFyIGJsb2NrID0gc2NyaXB0X0Jsb2NrU2NyaXB0W3RhZ107DQogICAgICAgICAgICAgICAgaWYgKGJsb2NrWyd2YXJzJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBibG9ja1sndmFycyddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2tbJ3ZhcnMnXVtpXVsndHlwZSddID09IDUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1sndmFycyddW2ldWyd2YWx1ZSddID0gW107DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgeSBpbiBibG9ja1sndmFycyddW2ldWyd2YWx1ZXMnXSkgeyBpZiAoUSgnc2NyaXB0WHZhbHVleF8nICsgaSArICctJyArIHkpLmNoZWNrZWQpIGJsb2NrWyd2YXJzJ11baV1bJ3ZhbHVlJ10ucHVzaCh5KTsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChibG9ja1sndmFycyddW2ldWyd0eXBlJ10gPT0gNikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gUSgnc2NyaXB0WHZhbHVlXycgKyBpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeC5maWxlcy5sZW5ndGggPT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGZpbGUpIHsgYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWUnXSA9IGJ0b2EoZmlsZS50YXJnZXQucmVzdWx0KTsgZnVwZGF0ZXNjcmlwdCgpOyB9Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKHguZmlsZXNbMF0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tbJ3ZhcnMnXVtpXVsndmFsdWUnXSA9IFEoJ3NjcmlwdFh2YWx1ZV8nICsgaSkudmFsdWU7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmdXBkYXRlc2NyaXB0KCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBTdGFydGluZyB3aXRoIGEgY2hpbGQgZWxlbWVudCwgZ28gdXAgb25lIHBhcmVudCBhdCBhIHRpbWUgdW50aWwgd2UgZmluZCBhbiBlbGVtZW50IHdpdGggYW4gSUQuDQogICAgICAgIGZ1bmN0aW9uIGZnZXRQYXJlbnRXaXRoSWQoeCkgeyB3aGlsZSAoIXguaWQpIHsgeCA9IHgucGFyZW50RWxlbWVudDsgfSByZXR1cm4geDsgfQ0KDQogICAgICAgIC8vIERpc3BsYXlzIHRoZSBsaXN0IG9mIHNjcmlwdCBibG9ja3MgdG8gdGhlIEhUTUwgcGFnZS4gRWFjaCBibG9jayBpcyBkaXNwbGF5ZWQgd2l0aCBpdCdzIG5hbWUsIGF0dHJpYnV0ZXMgYW5kIGFuIGVkaXQgYnV0dG9uLg0KICAgICAgICBmdW5jdGlvbiBmdXBkYXRlc2NyaXB0KCkgew0KICAgICAgICAgICAgdmFyIHggPSAnJzsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gc2NyaXB0X0Jsb2NrU2NyaXB0KSB7DQogICAgICAgICAgICAgICAgeCArPSAnPGRpdiBpZD14YmxvY2tfJyArIGkgKyAnIHN0eWxlPWN1cnNvcjpwb2ludGVyO21pbi1oZWlnaHQ6MjRweDtiYWNrZ3JvdW5kLWNvbG9yOiMnICsgKChzY3JpcHRfQmxvY2tTY3JpcHRTZWxlY3RlZElkID09IGkpID8gJ2FhYScgOiAnY2NjJykgKyAnO3dpZHRoOmF1dG87cGFkZGluZzo1cHg7bWFyZ2luOjJweCBkcmFnZ2FibGU9dHJ1ZSBvbmNsaWNrPXNjcmlwdF9mb25jbGljayhldmVudCx0aGlzKSBvbmRyYWdlbnRlcj1zY3JpcHRfZm9uZHJhZ2VudGVyKGV2ZW50LHRoaXMpIG9uZHJhZ2xlYXZlPXNjcmlwdF9mb25kcmFnbGVhdmUoZXZlbnQsdGhpcykgb25kcmFnc3RhcnQ9c2NyaXB0X2ZvbmRyYWdzdGFydChldmVudCx0aGlzKSBvbmRyYWdlbmQ9c2NyaXB0X2ZvbmRyYWdlbmQoZXZlbnQsdGhpcykgb25kcm9wPXNjcmlwdF9mb25kcm9wKGV2ZW50LHRoaXMpIHRpdGxlPSInICsgc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWydkZXNjJ10gKyAnIic7DQogICAgICAgICAgICAgICAgeCArPSAnPjxpbnB1dCBzdHlsZT1mbG9hdDpyaWdodCB0eXBlPWJ1dHRvbiB2YWx1ZT1FZGl0Li4uIG9uY2xpY2s9c2NyaXB0X2ZvbmVkaXRjbGljaygnICsgaSArICcpPjxkaXYgc3R5bGU9Zm9udC1zaXplOjE2cHg+PGI+JyArIHNjcmlwdF9CbG9ja1NjcmlwdFtpXS5uYW1lICsgJzwvYj4nOw0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXSkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgciA9IDA7DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjx0YWJsZSBjbGFzcz0nc2NyaXB0QmxvY2tWYXIgdXMnIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6NXB4O21hcmdpbi10b3A6OHB4PiI7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ10pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2ID0gc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3ZhbHVlJ107DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3R5cGUnXSA9PSA0ICYmIHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd2YWx1ZSddLmxlbmd0aCA+IDApIHYgPSAiKioqKioiOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd0eXBlJ10gPT0gMykgdiA9IHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd2YWx1ZXMnXVtzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXVtqXVsndmFsdWUnXV07DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3R5cGUnXSA9PSA2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsndmFycyddW2pdWyd2YWx1ZSddKSB7IHYgPSAiQmluYXJ5IGZpbGUsICIgKyBzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXVtqXVsndmFsdWUnXS5sZW5ndGggKyAiIGJ5dGVzIjsgfSBlbHNlIHsgdiA9ICJOb3Qgc2V0IjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgeCArPSAiPHRyIHRpdGxlPSciICsgc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ2Rlc2MnXSArICInPjx0ZCB3aWR0aD0yMDBweCBzdHlsZT0nIiArIChyID4gMCA/ICJib3JkZXItdG9wOjFweCBzb2xpZCAjYTgxMGE4IiA6ICIiKSArICInPjxwPiIgKyBzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ3ZhcnMnXVtqXVsnbmFtZSddICsgIjx0ZCBzdHlsZT0nIiArIChyID4gMCA/ICJib3JkZXItdG9wOjFweCBzb2xpZCAjYTgxMGE4IiA6ICIiKSArICInPiIgKyB2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgcisrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIHggKz0gIjx0cj48dGQgc3R5bGU9aGVpZ2h0OjNweD48L3RhYmxlPiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHggKz0gJzwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoeCA9PSAnJykgeyB4ID0gJzxkaXYgc3R5bGU9InBhZGRpbmc6MTVweDtjb2xvcjpncmF5Ij5TdGFydCB5b3VyIHNjcmlwdCBieSBkcmFnICYgZHJvcHBpbmcgYmxvY2tzIGZyb20gdGhlIGxlZnQgc2lkZSBpbnRvIHRoaXMgc2NyaXB0aW5nIGJveC48ZGl2Pic7IH0NCiAgICAgICAgICAgIFFIKCdzY3JpcHRibG9ja3MnLCB4ICsgIjxkaXYgc3R5bGU9aGVpZ2h0OjgwcHg+PC9kaXY+Iik7DQogICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdF9CbG9ja1NjcmlwdCkgeyBRUygneGJsb2NrXycgKyBpKS5ib3JkZXJMZWZ0ID0gKHNjcmlwdF9DdXJyZW50SGlnaGxpZ2h0QmxvY2sgPT0gaSkgPyAiM3B4IHNvbGlkIGJsYWNrIiA6ICIiOyB9DQogICAgICAgICAgICBzY3JpcHRfYmxvY2tzVG9TY3JpcHQoKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENvbnZlcnQgdGhlIGxpc3Qgb2YgYmxvY2tzIGludG8gYSBzY3JpcHQgdGhhdCBjYW4gYmUgY29tcGlsZWQNCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X2Jsb2Nrc1RvU2NyaXB0KCkgew0KICAgICAgICAgICAgdmFyIHNjcmlwdCA9ICcnOw0KICAgICAgICAgICAgaWYgKHNjcmlwdF9CdWlsZGluZ0Jsb2Nrcykgew0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfQnVpbGRpbmdCbG9ja3NbJ19zdGFydCddKSB7IHNjcmlwdCArPSAnIyMjIyMgU3RhcnRpbmcgQmxvY2sgIyMjIyNcclxuJyArIHNjcmlwdF9CdWlsZGluZ0Jsb2Nrc1snX3N0YXJ0J11bJ2NvZGUnXSArICdcclxuXHJcbic7IH0NCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHNjcmlwdF9CbG9ja1NjcmlwdCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgY29kZSA9IHNjcmlwdF9CbG9ja1NjcmlwdFtpXVsnY29kZSddOw0KICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZS5zcGxpdCgiJSUlfiUlJSIpLmpvaW4oaSk7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ10pIHsgY29kZSA9IGNvZGUuc3BsaXQoIiUlJSIgKyBqICsgIiUlJSIpLmpvaW4oc2NyaXB0X0Jsb2NrU2NyaXB0W2ldWyd2YXJzJ11bal1bJ3ZhbHVlJ10pOyB9DQogICAgICAgICAgICAgICAgICAgIHNjcmlwdCArPSAnIyMjIyMgQmxvY2s6ICcgKyBzY3JpcHRfQmxvY2tTY3JpcHRbaV1bJ25hbWUnXSArICcgIyMjIyNcclxuSGlnaGxpZ2h0QmxvY2sgX190ICcgKyBpICsgJ1xyXG4nICsgY29kZSArICdcclxuXHJcbic7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmIChzY3JpcHRfQnVpbGRpbmdCbG9ja3NbJ19lbmQnXSkgeyBzY3JpcHQgKz0gJyMjIyMjIEVuZGluZyBCbG9jayAjIyMjI1xyXG4nICsgc2NyaXB0X0J1aWxkaW5nQmxvY2tzWydfZW5kJ11bJ2NvZGUnXSArICdcclxuSGlnaGxpZ2h0QmxvY2tcclxuJzsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgUSgnc2NyaXB0YXJlYScpLnZhbHVlID0gc2NyaXB0Ow0KICAgICAgICB9DQoNCiAgICAgICAgLy8gSGlnaGxpZ2h0IGEgc2NyaXB0IGJsb2NrLiBUaGlzIGlzIHVzZWZ1bCB0byBrbm93IHdoYXQgYmxvY2sgdGhlIHNjcmlwdCBpcyBjdXJyZW50bHkgcnVubmluZw0KICAgICAgICB2YXIgc2NyaXB0X0N1cnJlbnRIaWdobGlnaHRCbG9jazsNCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X0hpZ2hsaWdodEJsb2NrKHJ1bm5lciwgeCkgew0KICAgICAgICAgICAgaWYgKHJ1bm5lciA9PSBlZGl0c2NyaXB0c3RhdGUpIHsgLy8gT25seSBoaWdobGlnaHQgYmxvY2tzIGlmIHRoZSBzY3JwdCBlZGl0b3IgaXMgcnVubmluZyB0aGUgc2NyaXB0LiBJZiBydW5uaW5nIGEgc2NyaXB0IG9uIHRoZSBwYWdlLCBkb24ndCBoaWdobGlnaHQgYmxvY2tzIGluIHRoZSBlZGl0b3IuDQogICAgICAgICAgICAgICAgc2NyaXB0X0N1cnJlbnRIaWdobGlnaHRCbG9jayA9IHg7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBzY3JpcHRfQmxvY2tTY3JpcHQpIHsgUVMoJ3hibG9ja18nICsgaSkuYm9yZGVyTGVmdCA9IChzY3JpcHRfQ3VycmVudEhpZ2hsaWdodEJsb2NrID09IGkpID8gIjNweCBzb2xpZCBibGFjayIgOiAiIjsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ2FsbGVkIGJ5IHRoZSAiTmV3Li4uIiBidXR0b24gdG8gcmVzZXQgdGhlIHNjcmlwdCBlZGl0b3IgdG8gdGhlIHN0YXJ0DQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF9uZXdTY3JpcHREbGcoKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDExLCAiTmV3IFNjcmlwdCIsIDMsIHNjcmlwdF9uZXdTY3JpcHREbGdPaywgIjxicj5SZXNldCAmIGNsZWFyIHRoZSBzY3JpcHQgZWRpdG9yPyIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQ2xlYXIgdGhlIHNjcmlwdCBlZGl0b3INCiAgICAgICAgZnVuY3Rpb24gc2NyaXB0X25ld1NjcmlwdERsZ09rKCkgew0KICAgICAgICAgICAgc2NyaXB0X3NldEJ1aWxkQmxvY2tzKHNjcmlwdF9TdGFydGluZ0J1aWxkaW5nQmxvY2tzKTsNCiAgICAgICAgICAgIHNjcmlwdF9CbG9ja1NjcmlwdCA9IFtdOw0KICAgICAgICAgICAgc2NyaXB0X0Jsb2NrU2NyaXB0U2VsZWN0ZWRJZCA9IG51bGw7DQogICAgICAgICAgICBkZWxldGUgZWRpdHNjcmlwdHN0YXRlOw0KICAgICAgICAgICAgc2NyaXB0Vmlld0J1dHRvbihzY3JpcHRfQnVpbGRpbmdCbG9ja3M/MTowKTsNCiAgICAgICAgICAgIFFIKCd2YXJpYWJsZXMnLCAnJyk7DQogICAgICAgICAgICBRKCdzY3JpcHRhcmVhJykudmFsdWUgPSAnJzsNCiAgICAgICAgICAgIHJlc2V0U2NyaXB0QnV0dG9uKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBDb21waWxlIGFuZCByZXNldCBhIHNjcmlwdCB0byB0aGUgc3RhcnRpbmcgcG9zaXRpb24NCiAgICAgICAgZnVuY3Rpb24gcmVzZXRTY3JpcHRCdXR0b24oKSB7DQogICAgICAgICAgICAvLyBDb21waWxlIHRoZSBzY3JpcHQNCiAgICAgICAgICAgIGJyZWFrU2NyaXB0QnV0dG9uKCk7DQogICAgICAgICAgICBRKCdjb21waWxlZGFyZWEnKS52YWx1ZSA9IHJzdHIyaGV4KHNjcmlwdF9jb21waWxlKFEoJ3NjcmlwdGFyZWEnKS52YWx1ZSwgZnVuY3Rpb24obSkgeyBtZXNzYWdlYm94KCJTY3JpcHQgQ29tcGlsZSBFcnJvciIsIG0pOyB9KSk7DQogICAgICAgICAgICBkZWxldGUgZWRpdHNjcmlwdHN0YXRlOw0KDQogICAgICAgICAgICAvLyBSZXNldCB0aGUgc2NyaXB0IGVudmlyb25tZW50DQogICAgICAgICAgICBRKCdjb25zb2xlJykudmFsdWUgPSAnJzsNCiAgICAgICAgICAgIFFIKCd2YXJpYWJsZXMnLCAnJyk7DQogICAgICAgICAgICBRSCgnRWRpdFNjcmlwdFN0YXR1cycsICdTdG9wcGVkJyk7DQogICAgICAgICAgICBpZiAoc2NyaXB0X0J1aWxkZXJWaWV3ID09IDEpIHsgZnVwZGF0ZXNjcmlwdCgpOyB9DQogICAgICAgICAgICBpZiAoUSgnY29tcGlsZWRhcmVhJykudmFsdWUubGVuZ3RoID09IDApIHJldHVybjsNCg0KICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHNjcmlwdCBydW50aW1lIG9iamVjdA0KICAgICAgICAgICAgdmFyIHN0YXJ0dmFycyA9IHsgJ19pbnRlcmFjdGl2ZSc6MSB9Ow0KDQogICAgICAgICAgICBzdGFydHZhcnNbJ19jZXJ0aWZpY2F0ZXMnXSA9IDE7DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX21vZGUnXSA9ICdGaXJtd2FyZSc7DQoNCiAgICAgICAgICAgIHN0YXJ0dmFyc1snX21vZGUnXSA9ICdNZXNoQ2VudHJhbDInOw0KDQogICAgICAgICAgICBzdGFydHZhcnNbJ19tb2RlJ10gPSAnTE1TJzsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZSA9IHNjcmlwdF9zZXR1cChoZXgycnN0cihRKCdjb21waWxlZGFyZWEnKS52YWx1ZSksIHN0YXJ0dmFycyk7DQogICAgICAgICAgICBlZGl0c2NyaXB0c3RhdGUud3NzdGFjayA9IHdzc3RhY2s7DQogICAgICAgICAgICBlZGl0c2NyaXB0c3RhdGUuYW10c3RhY2sgPSBhbXRzdGFjazsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZS5vblN0ZXAgPSBlZGl0c2NyaXB0X3VwZGF0ZVNjcmlwdFN0YXRlOw0KICAgICAgICAgICAgZWRpdHNjcmlwdHN0YXRlLm9uQ29uc29sZSA9IGVkaXRzY3JpcHRfY29uc29sZTsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRfdXBkYXRlU2NyaXB0U3RhdGUoZWRpdHNjcmlwdHN0YXRlKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFN0YXJ0IHJ1bm5pbmcgdGhlIHNjcmlwdA0KICAgICAgICBmdW5jdGlvbiBydW5TY3JpcHRCdXR0b24oKSB7DQogICAgICAgICAgICBpZiAoZWRpdHNjcmlwdHN0YXRlID09IG51bGwpIHJlc2V0U2NyaXB0QnV0dG9uKCk7DQogICAgICAgICAgICBpZiAoZWRpdHNjcmlwdHN0YXRlID09IG51bGwpIHJldHVybjsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZS5zdGFydCgxMDApOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU3RvcC9QYXVzZSB0aGUgc2NyaXB0DQogICAgICAgIGZ1bmN0aW9uIGJyZWFrU2NyaXB0QnV0dG9uKCkgew0KICAgICAgICAgICAgaWYgKGVkaXRzY3JpcHRzdGF0ZSA9PSBudWxsKSByZXR1cm47DQogICAgICAgICAgICBlZGl0c2NyaXB0c3RhdGUuc3RvcCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gUnVuIG9uZSBzdGVwIG9mIHRoZSBzY3JpcHQNCiAgICAgICAgZnVuY3Rpb24gc3RlcFNjcmlwdEJ1dHRvbigpIHsNCiAgICAgICAgICAgIGlmIChlZGl0c2NyaXB0c3RhdGUgPT0gbnVsbCkgcmVzZXRTY3JpcHRCdXR0b24oKTsNCiAgICAgICAgICAgIGlmIChlZGl0c2NyaXB0c3RhdGUgPT0gbnVsbCkgcmV0dXJuOw0KICAgICAgICAgICAgYnJlYWtTY3JpcHRCdXR0b24oKTsNCiAgICAgICAgICAgIGVkaXRzY3JpcHRzdGF0ZS5zdGVwKCk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBEaXNwbGF5IGEgbmV3IGxpbmUgaW50byB0aGUgc2NyaXB0IGNvbnNvbGUNCiAgICAgICAgZnVuY3Rpb24gZWRpdHNjcmlwdF9jb25zb2xlKG1zZykgew0KICAgICAgICAgICAgUSgnY29uc29sZScpLnZhbHVlICs9IChtc2cgKyAnXG4nKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFVwZGF0ZSB0aGUgc2NyaXB0IHN0YXRlIGluZm9ybWF0aW9uIGFuZCBkaXNwbGF5ZWQgdmFyaWFibGVzDQogICAgICAgIHZhciBzY3JpcHRfc3RhdGVzID0gWydTdG9wcGVkJywgJ1J1bm5pbmcnLCAnUGF1c2VkJ107DQogICAgICAgIGZ1bmN0aW9uIGVkaXRzY3JpcHRfdXBkYXRlU2NyaXB0U3RhdGUocnVuc3RhdGUpIHsNCiAgICAgICAgICAgIC8vIFVwZGF0ZSB2YXJpYWJsZXMNCiAgICAgICAgICAgIHZhciByID0gJyc7DQogICAgICAgICAgICBpZiAocnVuc3RhdGUgJiYgcnVuc3RhdGUgIT0gbnVsbCkgew0KICAgICAgICAgICAgICAgIHZhciB2cyA9IFtdOw0KICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcnVuc3RhdGUudmFyaWFibGVzKSB7IGlmICghaS5zdGFydHNXaXRoKCdfXycpKSB2cy5wdXNoKGkpOyB9DQogICAgICAgICAgICAgICAgdnMuc29ydCgpOw0KICAgICAgICAgICAgICAgIC8vZm9yICh2YXIgaSBpbiB2cykgeyByICs9IHZzW2ldICsgIiA9ICIgKyBzY3JpcHRfdG9TdHJpbmcocnVuc3RhdGUudmFyaWFibGVzW3ZzW2ldXSkgKyAiXG4iOyB9DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB2cykgew0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJ1bnN0YXRlLnZhcmlhYmxlc1t2c1tpXV0gPT0gJ29iamVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHIgKz0gIjxiPiIgKyB2c1tpXSArICI8L2I+ID0gIiArIE9iamVjdFRvU3RyaW5nRXgocnVuc3RhdGUudmFyaWFibGVzW3ZzW2ldXSwgMikgKyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICByICs9ICI8Yj4iICsgdnNbaV0gKyAiPC9iPiA9ICIgKyBFc2NhcGVIdG1sKHNjcmlwdF90b1N0cmluZyhydW5zdGF0ZS52YXJpYWJsZXNbdnNbaV1dKSkgKyAiPGJyPiI7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBRSCgndmFyaWFibGVzJywgcik7DQoNCiAgICAgICAgICAgIC8vIFVwZGF0ZSBzdGF0ZQ0KICAgICAgICAgICAgciA9ICdTdG9wcGVkLCBObyBTY3JpcHQnOw0KICAgICAgICAgICAgaWYgKHJ1bnN0YXRlICYmIHJ1bnN0YXRlICE9IG51bGwpIHsgciA9IHNjcmlwdF9zdGF0ZXNbcnVuc3RhdGUuc3RhdGVdOyBpZiAocnVuc3RhdGUuc3RhdGUgPiAwKSByICs9ICIsICIgKyBydW5zdGF0ZS5pcCArICIgOiAiICsgc2NyaXB0X2RlY29tcGlsZShydW5zdGF0ZS5zY3JpcHQsIHJ1bnN0YXRlLmlwKTsgfQ0KICAgICAgICAgICAgaWYgKHIubGVuZ3RoID4gNTApIHsgciA9IHIuc3Vic3RyaW5nKDAsIDUwKSArICIuLi4iOyB9DQogICAgICAgICAgICBRSCgnRWRpdFNjcmlwdFN0YXR1cycsIHIpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gUmV0dXJuIGEgc3RyaW5nIGZyb20gYW55IGlucHV0LCBpZiB0aGUgaW5wdXQgaXMgYW4gb2JqZWN0LCBzdHJpbmdpZnkgaXQuDQogICAgICAgIGZ1bmN0aW9uIHNjcmlwdF90b1N0cmluZyh4KSB7IGlmICh0eXBlb2YgeCA9PSAnb2JqZWN0JykgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHgpOyByZXR1cm4geDsgfQ0KDQoNCiAgICAgICAgLy8gU2F2ZSBhIHNjcmlwdCB0byBkaXNrLCBzdGFydCBieSBzaG93aW5nIGEgZGlhbG9nIGJveCB0byBwcm9tcHQgdG8gdGhlIGZpbGVuYW1lLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfc2F2ZVNjcmlwdChlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlIHx8IHNjcmlwdHN0YXRlKSByZXR1cm47DQogICAgICAgICAgICBpZiAoZSAmJiAoZS5zaGlmdEtleSA9PSB0cnVlKSkgew0KICAgICAgICAgICAgICAgIC8vIFNhdmUgYXMgc2NyaXB0IGJsb2NrDQogICAgICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIlNjcmlwdCBCbG9jayIsIDEsIG51bGwsICI8YnI+PHRleHRhcmVhIGlkPXNjcmlwdFNhdmVTY3JpcHRKc29uQmxvY2sgc3R5bGU9d2lkdGg6MTAwJTtoZWlnaHQ6MjAwcHg7cmVzaXplOnZlcnRpY2FsIC8+Iik7DQogICAgICAgICAgICAgICAgUUgoJ3NjcmlwdFNhdmVTY3JpcHRKc29uQmxvY2snLCBzY3JpcHRfZkNvbnZlcnRTY3JpcHRUb0pzb25CbG9jayhRKCdzY3JpcHRhcmVhJykudmFsdWUpKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gU2F2ZSBhcyAubWVzY3JpcHQgZmlsZQ0KDQogICAgICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxMSwgIlNhdmUgU2NyaXB0IiwgMywgc2NyaXB0X3NhdmVTY3JpcHRPaywgIjxicj48aW5wdXQgaWQ9c2NyaXB0c2F2ZW5hbWUgc3R5bGU9d2lkdGg6MTAwJSB2YWx1ZT10ZXN0Lm1lc2NyaXB0ID4iKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIE9uY2UgdGhlIGZpbGVuYW1lIGlzIHNlbGVjdGVkLCBzYXZlIHRoZSBmaWxlLg0KICAgICAgICBmdW5jdGlvbiBzY3JpcHRfc2F2ZVNjcmlwdE9rKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHggPSBKU09OLnN0cmluZ2lmeSh7DQogICAgICAgICAgICAgICAgInNjcmlwdFRleHQiOiBRKCdzY3JpcHRhcmVhJykudmFsdWUsDQogICAgICAgICAgICAgICAgIm1lc2NyaXB0IjogYnRvYShzY3JpcHRfY29tcGlsZShRKCdzY3JpcHRhcmVhJykudmFsdWUpKSwNCiAgICAgICAgICAgICAgICAiYmxvY2tzIjogc2NyaXB0X1N0YXJ0aW5nQnVpbGRpbmdCbG9ja3MsDQogICAgICAgICAgICAgICAgInNjcmlwdEJsb2NrcyI6IHNjcmlwdF9CbG9ja1NjcmlwdA0KICAgICAgICAgICAgfSwgbnVsbCwgJyAgJyk7DQogICAgICAgICAgICBzYXZlQXMoZGF0YTJibG9iKHgpLCBRKCdzY3JpcHRzYXZlbmFtZScpLnZhbHVlKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgDQoNCg0KICAgICAgICAvLw0KICAgICAgICAvLyBVU0IgU0VUVVAuQklODQogICAgICAgIC8vDQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX25ld1NldHVwQmluKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgaWR4X2QxNHZlcnNpb24udmFsdWUgPSA0Ow0KICAgICAgICAgICAgaWR4X2QxNGNvbnN1bWUudmFsdWUgPSAxOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxNCwgIkNyZWF0ZSBuZXcgU2V0dXAuYmluIGZpbGUiLCAzLCB1c2JfbmV3U2V0dXBCaW5Payk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfbmV3U2V0dXBCaW5PayhyKSB7DQogICAgICAgICAgICBpZiAociA9PSAxKSB7IHNldHVwYmluID0gQW10U2V0dXBCaW5DcmVhdGUoaWR4X2QxNHZlcnNpb24udmFsdWUsIGlkeF9kMTRjb25zdW1lLnZhbHVlKTsgfSAvLyBPSyBCdXR0b24NCiAgICAgICAgICAgIHVzYl9kaXNwbGF5U2V0dXBCaW4oKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9vcGVuU2V0dXBCaW4oKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQoNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTUsICJPcGVuIFNldHVwLmJpbiBmaWxlIiwgMywgdXNiX29wZW5TZXR1cEJpbk9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9vcGVuU2V0dXBCaW5PaygpIHsNCiAgICAgICAgICAgIHZhciB4ID0gUSgnZDE1c2V0dXBiaW5maWxlJyk7DQogICAgICAgICAgICBpZiAoeC5maWxlcy5sZW5ndGggIT0gMSkgcmV0dXJuOw0KICAgICAgICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7DQogICAgICAgICAgICByZWFkZXIub25sb2FkID0gdXNiX29uU2V0dXBCaW5SZWFkOw0KICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0JpbmFyeVN0cmluZyh4LmZpbGVzWzBdKTsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX3NhdmVTZXR1cEJpbigpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgfHwgIXNldHVwYmluKSByZXR1cm47DQoNCiAgICAgICAgICAgIHNhdmVBcyhkYXRhMmJsb2IoQW10U2V0dXBCaW5FbmNvZGUoc2V0dXBiaW4pKSwgInNldHVwLmJpbiIpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX29uU2V0dXBCaW5SZWFkKGZpbGUpIHsNCiAgICAgICAgICAgIHNldHVwYmluID0gQW10U2V0dXBCaW5EZWNvZGUoZmlsZS50YXJnZXQucmVzdWx0KTsNCiAgICAgICAgICAgIGlmICghc2V0dXBiaW4pIHsgbWVzc2FnZWJveCgiT3BlbiBGaWxlIiwgIkludmFsaWQgb3IgY29ycnVwdCBzZXR1cC5iaW4gZmlsZS4gVW5hYmxlIHRvIG9wZW4uIik7IH0gZWxzZSB7IHVzYl9kaXNwbGF5U2V0dXBCaW4oKTsgfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2Rpc3BsYXlTZXR1cEJpbigpIHsNCiAgICAgICAgICAgIFFWKCdpZF9TdGFydHVwU2NyZWVuJywgIXNldHVwYmluKTsNCg0KICAgICAgICAgICAgUVYoJ2lkX3NhdmVTZXR1cEJpbicsIHNldHVwYmluKTsNCiAgICAgICAgICAgIGlmICghc2V0dXBiaW4pIHsgcmV0dXJuIFFIKCdpZF9TZXR1cEJpbkFyZWEnLCAnJyk7IH0NCiAgICAgICAgICAgIA0KICAgICAgICAgICAgLy8gVXBkYXRlIHJlY29yZCBjb3VudA0KICAgICAgICAgICAgdmFyIGNvbnN1bWVkID0gMDsNCiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gc2V0dXBiaW4ucmVjb3JkcykgeyBpZiAoKHNldHVwYmluLnJlY29yZHNbaV0uZmxhZ3MgJiAxKSA9PSAwKSB7IGNvbnN1bWVkKys7IH0gfQ0KICAgICAgICAgICAgc2V0dXBiaW4uZGF0YVJlY29yZHNDb25zdW1lZCA9IGNvbnN1bWVkOw0KDQogICAgICAgICAgICAvLyBNYWluIEhlYWRlciAgICAgICAgICAgIA0KICAgICAgICAgICAgdmFyIHggPSAiPHRhYmxlIG9uY2xpY2s9dXNiX2VkaXRoZWFkZXIoZXZlbnQpIGNsYXNzPSdsb2cxIHVzJyBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcj48dHI+PHRkPjxwPjx0ZD4iOw0KICAgICAgICAgICAgeCArPSAiPHRyPjx0ZCBjbGFzcz1yMiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweD4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1mbG9hdDpyaWdodDttYXJnaW4tcmlnaHQ6MTJweCBvbmNsaWNrPXVzYl9hZGRSZWNvcmRTZXR1cEJpbigpPjxhPjx1IHRpdGxlPSdBZGQgYSBuZXcgcmVjb3JkJz5BZGQgUmVjb3JkPC91PjwvYT48L2Rpdj4iOw0KICAgICAgICAgICAgeCArPSAiPGRpdj48c3Ryb25nPkludGVsJnJlZzsgQU1UIFNldHVwLmJpbiBmaWxlIHZlcnNpb24gIiArIHNldHVwYmluLm1ham9yVmVyc2lvbiArICIuIiArIHNldHVwYmluLm1pbm9yVmVyc2lvbiArICI8L3N0cm9uZz4uPC9kaXY+IjsNCiAgICAgICAgICAgIHggKz0gKCgoc2V0dXBiaW4uZmxhZ3MgJiAxKSA9PSAwKSA/ICJSZWNvcmRzIHdpbGwgYmUgY29uc3VtZWQuIiA6ICJSZWNvcmRzIHdpbGwgbm90IGJlIGNvbnN1bWVkLiIpOw0KICAgICAgICAgICAgeCArPSAiPGJyPlJlY29yZHM6ICIgKyBzZXR1cGJpbi5yZWNvcmRzLmxlbmd0aCArICIsIENvbnN1bWVkOiAiICsgc2V0dXBiaW4uZGF0YVJlY29yZHNDb25zdW1lZCArICI8YnI+IjsNCiAgICAgICAgICAgIHggKz0gIjx0ciBzdHlsZT1oZWlnaHQ6NHB4PjwvdGFibGU+IjsNCg0KICAgICAgICAgICAgLy8gRGlzcGxheSBlYWNoIHJlY29yZA0KICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBzZXR1cGJpbi5yZWNvcmRzKSB7DQogICAgICAgICAgICAgICAgdmFyIHJlYyA9IHNldHVwYmluLnJlY29yZHNbaV07DQogICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1oZWlnaHQ6NHB4PjwvZGl2Pjx0YWJsZSBjbGFzcz0nbG9nMSB1cycgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHN0eWxlPXdpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg+PHRyPjx0ZD48cD48dGQ+PHRyPjx0ZCBjbGFzcz1yMiBzdHlsZT1wYWRkaW5nLWxlZnQ6MTVweDtjdXJzb3I6cG9pbnRlcj4iOw0KICAgICAgICAgICAgICAgIHggKz0gIjxkaXYgc3R5bGU9ZmxvYXQ6cmlnaHQ7bWFyZ2luLXJpZ2h0OjEycHggb25jbGljaz0ndXNiX2FkZHZhcmlhYmxlKGV2ZW50LCIgKyBpICsgIiknPjxhPjx1IHRpdGxlPSdBZGQgYSBuZXcgdmFyaWFibGUnPkFkZCBWYXJpYWJsZTwvdT48L2E+PC9kaXY+IjsNCiAgICAgICAgICAgICAgICB4ICs9ICI8ZGl2IG9uY2xpY2s9J3VzYl9lZGl0cmVjb3JkKGV2ZW50LCAiICsgaSArICIpJz5SZWNvcmQgIzxzdHJvbmc+IiArICgraSArIDEpICsgIjwvc3Ryb25nPi4gVGhpcyByZWNvcmQgaXM6IDxzdHJvbmc+IiArICgocmVjLmZsYWdzICYgMSkgPyAiVmFsaWQiIDogIkNvbnN1bWVkIikgKyAoKHJlYy5mbGFncyAmIDIpID8gIiwgU2NyYW1ibGVkIiA6ICIiKSArICI8L3N0cm9uZz48L2Rpdj4iOw0KDQogICAgICAgICAgICAgICAgLy8gRGlzcGxheSBlYWNoIHZhcmlhYmxlDQogICAgICAgICAgICAgICAgZm9yICh2YXIgaiBpbiByZWMudmFyaWFibGVzKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciB2ID0gcmVjLnZhcmlhYmxlc1tqXSwgdmFsID0gdi52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzJdICYmIEFtdFNldHVwQmluVmFySWRzW3YubW9kdWxlaWRdW3YudmFyaWRdWzJdW3ZhbF0pIHsgdmFsID0gQW10U2V0dXBCaW5WYXJJZHNbdi5tb2R1bGVpZF1bdi52YXJpZF1bMl1bdmFsXTsgfQ0KICAgICAgICAgICAgICAgICAgICBpZiAodi5tb2R1bGVpZCA9PSAyICYmIHYudmFyaWQgPT0gOCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2h0eXBlID0gdmFsLmNoYXJDb2RlQXQoMCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHR5cGUgPj0gMCAmJiBoYXNodHlwZSA8PSAzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2hzaXplID0gWzIwLCAzMiwgNDhdW2hhc2h0eXBlIC0gMV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2ggPSByc3RyMmhleCh2YWwuc3Vic3RyaW5nKDEsIGhhc2hzaXplICsgMSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYXNobmFtZXNpemUgPSB2YWwuY2hhckNvZGVBdCgxICsgaGFzaHNpemUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoYXNobmFtZSA9IHZhbC5zdWJzdHJpbmcoMiArIGhhc2hzaXplLCAyICsgaGFzaHNpemUgKyBoYXNobmFtZXNpemUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gWydTSEExJywgJ1NIQTI1NicsICdTSEEzODQnXVtoYXNodHlwZSAtIDFdICsgJywgJyArIGhhc2huYW1lICsgJywgJyArIGhhc2g7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgeCArPSAiPGRpdiBzdHlsZT1tYXJnaW4tcmlnaHQ6MTJweD48dGFibGUgb25jbGljaz0ndXNiX2VkaXR2YXJpYWJsZShldmVudCwgIiArIGkgKyAiLCIgKyBqICsgIiknIGNsYXNzPSdpdGVtQmFyIHVzJyBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjRweDttYXJnaW4tdG9wOjJweDttYXJnaW4tYm90dG9tOjJweDtwYWRkaW5nOjA+PHRyPjx0ZD48cCBzdHlsZT1mbG9hdDpyaWdodDttYXJnaW4tcmlnaHQ6OHB4PjxiPiIgKyB2YWwgKyAiPC9iPjxwPiIgKyB2WydkZXNjJ10gKyAiPHRyIHN0eWxlPWhlaWdodDo0cHg+PC90YWJsZT48L2Rpdj4iOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIHggKz0gIjx0ciBzdHlsZT1oZWlnaHQ6NHB4PjwvdGFibGU+IjsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgUUgoJ2lkX1NldHVwQmluQXJlYScsIHgpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2FkZFJlY29yZFNldHVwQmluKCkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgZDEzdmFsaWQuY2hlY2tlZCA9IDE7DQogICAgICAgICAgICBkMTNzY3JhbWJsZS5jaGVja2VkID0gMDsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTMsICJOZXcgUmVjb3JkICMiLCAzLCB1c2JfYWRkUmVjb3JkU2V0dXBCaW5Payk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfYWRkUmVjb3JkU2V0dXBCaW5PaygpIHsNCiAgICAgICAgICAgIHZhciByID0ge307DQogICAgICAgICAgICByLnR5cGVJZGVudGlmaWVyID0gMTsNCiAgICAgICAgICAgIHIuZmxhZ3MgPSAoZDEzdmFsaWQuY2hlY2tlZCA/IDEgOiAwKSArIChkMTNzY3JhbWJsZS5jaGVja2VkID8gMiA6IDApOw0KICAgICAgICAgICAgci5jaHVua0NvdW50ID0gMDsNCiAgICAgICAgICAgIHIuaGVhZGVyQnl0ZUNvdW50ID0gMDsNCiAgICAgICAgICAgIHIubnVtYmVyID0gMDsNCiAgICAgICAgICAgIHIudmFyaWFibGVzID0gW107DQogICAgICAgICAgICBzZXR1cGJpbi5yZWNvcmRzLnB1c2gocik7DQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfZWRpdGhlYWRlcihlKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBoYWx0RXZlbnQoZSk7DQogICAgICAgICAgICBpZHhfZDE0dmVyc2lvbi52YWx1ZSA9IHNldHVwYmluLm1ham9yVmVyc2lvbjsNCiAgICAgICAgICAgIGlkeF9kMTRjb25zdW1lLnZhbHVlID0gKHNldHVwYmluLmZsYWdzICYgMSk7DQogICAgICAgICAgICBzZXREaWFsb2dNb2RlKDE0LCAiRWRpdCBIZWFkZXIiLCA3LCB1c2JfZWRpdGhlYWRlcm9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9lZGl0aGVhZGVyb2socikgew0KICAgICAgICAgICAgaWYgKHIgPT0gMikgew0KICAgICAgICAgICAgICAgIGRlbGV0ZSBzZXR1cGJpbjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgc2V0dXBiaW4ubWFqb3JWZXJzaW9uID0gaWR4X2QxNHZlcnNpb24udmFsdWU7DQogICAgICAgICAgICAgICAgc2V0dXBiaW4uZmxhZ3MgPSBpZHhfZDE0Y29uc3VtZS52YWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVzYl9kaXNwbGF5U2V0dXBCaW4oKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9lZGl0cmVjb3JkKGUsIGkpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUpIHJldHVybjsNCiAgICAgICAgICAgIHNlbGVjdGVkUmVjb3JkID0gaTsNCiAgICAgICAgICAgIHNlbGVjdGVkVmFyaWFibGUgPSAtMTsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgICAgIGQxM3ZhbGlkLmNoZWNrZWQgPSAoc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0uZmxhZ3MgJiAxKTsNCiAgICAgICAgICAgIGQxM3NjcmFtYmxlLmNoZWNrZWQgPSAoc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0uZmxhZ3MgJiAyKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTMsICJFZGl0IFJlY29yZCAjIiArIChpICsgMSksIDcsIHVzYl9lZGl0cmVjb3Jkb2spOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2VkaXRyZWNvcmRvayhyKSB7DQogICAgICAgICAgICBpZiAociA9PSAxKSB7IHNldHVwYmluLnJlY29yZHNbc2VsZWN0ZWRSZWNvcmRdLmZsYWdzID0gKGQxM3ZhbGlkLmNoZWNrZWQgPyAxIDogMCkgKyAoZDEzc2NyYW1ibGUuY2hlY2tlZCA/IDIgOiAwKTsgfSAvLyBFZGl0IFJlY29yZA0KICAgICAgICAgICAgaWYgKHIgPT0gMikgeyBzZXR1cGJpbi5yZWNvcmRzLnNwbGljZShzZWxlY3RlZFJlY29yZCwgMSk7IH0gLy8gRGVsZXRlIFJlY29yZA0KICAgICAgICAgICAgdXNiX2Rpc3BsYXlTZXR1cEJpbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2VkaXR2YXJpYWJsZShlLCBpLCBqKSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBzZWxlY3RlZFJlY29yZCA9IGk7DQogICAgICAgICAgICBzZWxlY3RlZFZhcmlhYmxlID0gajsNCiAgICAgICAgICAgIHZhciBtb2RpZCA9IHNldHVwYmluLnJlY29yZHNbaV0udmFyaWFibGVzW2pdLm1vZHVsZWlkOw0KICAgICAgICAgICAgdmFyIHZhcmlkID0gc2V0dXBiaW4ucmVjb3Jkc1tpXS52YXJpYWJsZXNbal0udmFyaWQ7DQogICAgICAgICAgICBkMTZ0eXBlLnZhbHVlID0gbW9kaWQgKyAiLSIgKyB2YXJpZDsNCiAgICAgICAgICAgIGQxNnR5cGUuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgICAgICAgdXNiX29uZDE2dHlwZWNoYW5nZSgpOw0KICAgICAgICAgICAgUVYoJ2QxNmdlbmVyaWN2YWx1ZScsIGZhbHNlKTsNCiAgICAgICAgICAgIFFWKCdkMTZjdXN0b212YWx1ZScsIGZhbHNlKTsNCiAgICAgICAgICAgIGlmIChtb2RpZCA9PSAyICYmIHZhcmlkID09IDgpIHsNCiAgICAgICAgICAgICAgICB2YXIgeCA9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxzZWxlY3QgaWQ9aWR4X2QxNnZhbGMxIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9uY2hhbmdlPXVzYl9vbmQxNmNoZWNraGFzaCgpPjxvcHRpb24gdmFsdWU9MT5TSEExPC9vcHRpb24+JzsNCiAgICAgICAgICAgICAgICBpZiAoc2V0dXBiaW4ubWFqb3JWZXJzaW9uID49IDMpIHsgeCArPSAnPG9wdGlvbiB2YWx1ZT0yPlNIQTI1Njwvb3B0aW9uPjxvcHRpb24gdmFsdWU9Mz5TSEEzODQ8L29wdGlvbj4nOyB9DQogICAgICAgICAgICAgICAgeCArPSAnPC9zZWxlY3Q+PGRpdj5IYXNoIFR5cGU8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWlkeF9kMTZ2YWxjMiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweCBvbmtleXVwPXVzYl9vbmQxNmNoZWNraGFzaCgpPjxkaXY+SGFzaCAoSEVYKTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICAgICAgeCArPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48aW5wdXQgaWQ9aWR4X2QxNnZhbGMzIHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjI2MHB4IG9ua2V5dXA9dXNiX29uZDE2Y2hlY2toYXNoKCkgbWF4bGVuZ3RoPTMxPjxkaXY+SGFzaCBOYW1lPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgICAgICBRSCgnZDE2Y3VzdG9tdmFsdWUnLCB4KTsNCiAgICAgICAgICAgICAgICBRVignZDE2Y3VzdG9tdmFsdWUnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICB2YXIgdmFsID0gc2V0dXBiaW4ucmVjb3Jkc1tpXS52YXJpYWJsZXNbal0udmFsdWU7DQogICAgICAgICAgICAgICAgdmFyIGhhc2h0eXBlID0gdmFsLmNoYXJDb2RlQXQoMCk7DQogICAgICAgICAgICAgICAgaWYgKGhhc2h0eXBlID49IDAgJiYgaGFzaHR5cGUgPD0gMykgew0KICAgICAgICAgICAgICAgICAgICB2YXIgaGFzaHNpemUgPSBbMjAsIDMyLCA0OF1baGFzaHR5cGUgLSAxXTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2ggPSByc3RyMmhleCh2YWwuc3Vic3RyaW5nKDEsIGhhc2hzaXplICsgMSkpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgaGFzaG5hbWVzaXplID0gdmFsLmNoYXJDb2RlQXQoMSArIGhhc2hzaXplKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGhhc2huYW1lID0gdmFsLnN1YnN0cmluZygyICsgaGFzaHNpemUsIDIgKyBoYXNoc2l6ZSArIGhhc2huYW1lc2l6ZSkNCiAgICAgICAgICAgICAgICAgICAgdmFsID0gWydTSEExJywgJ1NIQTI1NicsICdTSEEzODQnXVtoYXNodHlwZSAtIDFdICsgJywgJyArIGhhc2huYW1lICsgJywgJyArIGhhc2g7DQogICAgICAgICAgICAgICAgICAgIFEoJ2lkeF9kMTZ2YWxjMScpLnZhbHVlID0gaGFzaHR5cGU7DQogICAgICAgICAgICAgICAgICAgIFEoJ2lkeF9kMTZ2YWxjMicpLnZhbHVlID0gaGFzaDsNCiAgICAgICAgICAgICAgICAgICAgUSgnaWR4X2QxNnZhbGMzJykudmFsdWUgPSBoYXNobmFtZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdXNiX29uZDE2Y2hlY2toYXNoKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFFWKCdkMTZnZW5lcmljdmFsdWUnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICBpZHhfZDE2dmFsdWUxLnZhbHVlID0gaWR4X2QxNnZhbHVlMi52YWx1ZSA9IHNldHVwYmluLnJlY29yZHNbaV0udmFyaWFibGVzW2pdLnZhbHVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaGFsdEV2ZW50KGUpOw0KICAgICAgICAgICAgc2V0RGlhbG9nTW9kZSgxNiwgIkVkaXQgUmVjb3JkICMiICsgKGkgKyAxKSArICIsIFZhcmlhYmxlICMiICsgKGogKyAxKSwgNywgdXNiX2VkaXR2YXJpYWJsZW9rKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9lZGl0dmFyaWFibGVvayhyKSB7DQogICAgICAgICAgICBpZiAociA9PSAxKSB7IC8vIE9LDQogICAgICAgICAgICAgICAgdmFyIGlkcyA9IGQxNnR5cGUudmFsdWUuc3BsaXQoJy0nKTsNCiAgICAgICAgICAgICAgICB2YXIgbW9kaWQgPSAraWRzWzBdOw0KICAgICAgICAgICAgICAgIHZhciB2YXJpZCA9ICtpZHNbMV07DQogICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gIiI7DQogICAgICAgICAgICAgICAgdmFyIHZhcmRlc2NyaXB0aW9uID0gQW10U2V0dXBCaW5WYXJJZHNbbW9kaWRdW3ZhcmlkXTsNCiAgICAgICAgICAgICAgICBpZiAobW9kaWQgPT0gMiAmJiB2YXJpZCA9PSA4KSB7DQogICAgICAgICAgICAgICAgICAgIHZhbHVlID0gU3RyaW5nLmZyb21DaGFyQ29kZShRKCdpZHhfZDE2dmFsYzEnKS52YWx1ZSkgKyBoZXgycnN0cihRKCdpZHhfZDE2dmFsYzInKS52YWx1ZSkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKFEoJ2lkeF9kMTZ2YWxjMycpLnZhbHVlLmxlbmd0aCkgKyBRKCdpZHhfZDE2dmFsYzMnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICBpZiAodmFyZGVzY3JpcHRpb25bMl0pIHsgdmFsdWUgPSBpZHhfZDE2dmFsdWUxLnZhbHVlOyB9IGVsc2UgeyB2YWx1ZSA9IGlkeF9kMTZ2YWx1ZTIudmFsdWU7IH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0udmFyaWFibGVzW3NlbGVjdGVkVmFyaWFibGVdLnZhbHVlID0gdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAociA9PSAyKSB7IHNldHVwYmluLnJlY29yZHNbc2VsZWN0ZWRSZWNvcmRdLnZhcmlhYmxlcy5zcGxpY2Uoc2VsZWN0ZWRWYXJpYWJsZSwgMSk7IH0gLy8gRGVsZXRlDQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2JfYWRkdmFyaWFibGUoZSwgaSkgew0KICAgICAgICAgICAgaWYgKHh4ZGlhbG9nTW9kZSkgcmV0dXJuOw0KICAgICAgICAgICAgc2VsZWN0ZWRSZWNvcmQgPSBpOw0KICAgICAgICAgICAgZDE2dHlwZS52YWx1ZSA9ICIxLTEiOw0KICAgICAgICAgICAgZDE2dHlwZS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgaWR4X2QxNnZhbHVlMS52YWx1ZSA9IGlkeF9kMTZ2YWx1ZTIudmFsdWUgPSAiIjsNCiAgICAgICAgICAgIHVzYl9vbmQxNnR5cGVjaGFuZ2UoKTsNCiAgICAgICAgICAgIGhhbHRFdmVudChlKTsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoMTYsICJBZGQgVmFyaWFibGUgdG8gUmVjb3JkICMiICsgKGkgKyAxKSwgMywgdXNiX2FkZHZhcmlhYmxlb2spOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2FkZHZhcmlhYmxlb2soKSB7DQogICAgICAgICAgICB2YXIgaWRzID0gZDE2dHlwZS52YWx1ZS5zcGxpdCgnLScpOw0KICAgICAgICAgICAgdmFyIG1vZGlkID0gK2lkc1swXTsNCiAgICAgICAgICAgIHZhciB2YXJpZCA9ICtpZHNbMV07DQogICAgICAgICAgICB2YXIgdmFsdWUgPSAiIjsNCiAgICAgICAgICAgIHZhciB2YXJkZXNjcmlwdGlvbiA9IEFtdFNldHVwQmluVmFySWRzW21vZGlkXVt2YXJpZF07DQogICAgICAgICAgICBpZiAobW9kaWQgPT0gMiAmJiB2YXJpZCA9PSA4KSB7DQogICAgICAgICAgICAgICAgdmFsdWUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFEoJ2lkeF9kMTZ2YWxjMScpLnZhbHVlKSArIGhleDJyc3RyKFEoJ2lkeF9kMTZ2YWxjMicpLnZhbHVlKSArIFN0cmluZy5mcm9tQ2hhckNvZGUoUSgnaWR4X2QxNnZhbGMzJykudmFsdWUubGVuZ3RoKSArIFEoJ2lkeF9kMTZ2YWxjMycpLnZhbHVlOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBpZiAodmFyZGVzY3JpcHRpb25bMl0pIHsgdmFsdWUgPSBpZHhfZDE2dmFsdWUxLnZhbHVlOyB9IGVsc2UgeyB2YWx1ZSA9IGlkeF9kMTZ2YWx1ZTIudmFsdWU7IH0NCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHZhcmlhYmxlDQogICAgICAgICAgICB2YXIgdiA9IHt9Ow0KICAgICAgICAgICAgdi5tb2R1bGVpZCA9IG1vZGlkOw0KICAgICAgICAgICAgdi52YXJpZCA9IHZhcmlkOw0KICAgICAgICAgICAgdi5sZW5ndGggPSAtMTsNCiAgICAgICAgICAgIHYudHlwZSA9IEFtdFNldHVwQmluVmFySWRzW21vZGlkXVt2YXJpZF1bMF07DQogICAgICAgICAgICB2LmRlc2MgPSBBbXRTZXR1cEJpblZhcklkc1ttb2RpZF1bdmFyaWRdWzFdOw0KICAgICAgICAgICAgdi52YWx1ZSA9IHZhbHVlOw0KICAgICAgICAgICAgc2V0dXBiaW4ucmVjb3Jkc1tzZWxlY3RlZFJlY29yZF0udmFyaWFibGVzLnB1c2godik7DQoNCiAgICAgICAgICAgIHNldHVwYmluLnJlY29yZHNbc2VsZWN0ZWRSZWNvcmRdLnZhcmlhYmxlcy5zb3J0KEFtdFNldHVwQmluVmFyaWFibGVDb21wYXJlKTsgLy8gU29ydCB0aGUgdmFyaWFibGVzDQogICAgICAgICAgICB1c2JfZGlzcGxheVNldHVwQmluKCk7DQogICAgICAgIH0NCg0KICAgICAgICBmdW5jdGlvbiB1c2Jfb25kMTZ0eXBlY2hhbmdlKCkgew0KICAgICAgICAgICAgdmFyIGlkcyA9IGQxNnR5cGUudmFsdWUuc3BsaXQoJy0nKTsNCiAgICAgICAgICAgIHZhciBtb2RpZCA9ICtpZHNbMF07DQogICAgICAgICAgICB2YXIgdmFyaWQgPSAraWRzWzFdOw0KICAgICAgICAgICAgdmFyIHZhcmRlc2NyaXB0aW9uID0gQW10U2V0dXBCaW5WYXJJZHNbbW9kaWRdW3ZhcmlkXTsNCiAgICAgICAgICAgIFFWKCdkMTZnZW5lcmljdmFsdWUnLCBmYWxzZSk7DQogICAgICAgICAgICBRVignZDE2Y3VzdG9tdmFsdWUnLCBmYWxzZSk7DQogICAgICAgICAgICBpZiAobW9kaWQgPT0gMiAmJiB2YXJpZCA9PSA4KSB7DQogICAgICAgICAgICAgICAgdmFyIHggPSAnPGRpdiBzdHlsZT1oZWlnaHQ6MjZweD48c2VsZWN0IGlkPWlkeF9kMTZ2YWxjMSBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweCBvbmNoYW5nZT11c2Jfb25kMTZjaGVja2hhc2goKT48b3B0aW9uIHZhbHVlPTE+U0hBMTwvb3B0aW9uPic7DQogICAgICAgICAgICAgICAgaWYgKHNldHVwYmluLm1ham9yVmVyc2lvbiA+PSAzKSB7IHggKz0gJzxvcHRpb24gdmFsdWU9Mj5TSEEyNTY8L29wdGlvbj48b3B0aW9uIHZhbHVlPTM+U0hBMzg0PC9vcHRpb24+JzsgfQ0KICAgICAgICAgICAgICAgIHggKz0gJzwvc2VsZWN0PjxkaXY+SGFzaCBUeXBlPC9kaXY+PC9kaXY+JzsNCiAgICAgICAgICAgICAgICB4ICs9ICc8ZGl2IHN0eWxlPWhlaWdodDoyNnB4PjxpbnB1dCBpZD1pZHhfZDE2dmFsYzIgc3R5bGU9ZmxvYXQ6cmlnaHQ7d2lkdGg6MjYwcHggb25rZXl1cD11c2Jfb25kMTZjaGVja2hhc2goKT48ZGl2Pkhhc2ggKEhFWCk8L2Rpdj48L2Rpdj4nOw0KICAgICAgICAgICAgICAgIHggKz0gJzxkaXYgc3R5bGU9aGVpZ2h0OjI2cHg+PGlucHV0IGlkPWlkeF9kMTZ2YWxjMyBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyNjBweCBvbmtleXVwPXVzYl9vbmQxNmNoZWNraGFzaCgpIG1heGxlbmd0aD0zMT48ZGl2Pkhhc2ggTmFtZTwvZGl2PjwvZGl2Pic7DQogICAgICAgICAgICAgICAgUVYoJ2QxNmN1c3RvbXZhbHVlJywgdHJ1ZSk7DQogICAgICAgICAgICAgICAgUUgoJ2QxNmN1c3RvbXZhbHVlJywgeCk7DQogICAgICAgICAgICAgICAgdXNiX29uZDE2Y2hlY2toYXNoKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIFFWKCdkMTZnZW5lcmljdmFsdWUnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICBpZiAodmFyZGVzY3JpcHRpb25bMl0pIHsNCiAgICAgICAgICAgICAgICAgICAgUVYoJ2lkeF9kMTZ2YWx1ZTEnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgUVYoJ2lkeF9kMTZ2YWx1ZTInLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0gIiI7DQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdmFyZGVzY3JpcHRpb25bMl0pIHsgb3B0aW9ucyArPSAnPG9wdGlvbiB2YWx1ZT0iJyArIGkgKyAnIj4nICsgdmFyZGVzY3JpcHRpb25bMl1baV0gfQ0KICAgICAgICAgICAgICAgICAgICBRSCgnaWR4X2QxNnZhbHVlMScsIG9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIFFWKCdpZHhfZDE2dmFsdWUxJywgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICBRVignaWR4X2QxNnZhbHVlMicsIHRydWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9vbmQxNmNoZWNraGFzaCgpIHsNCiAgICAgICAgICAgIHZhciBoYXNodHlwZSA9IFEoJ2lkeF9kMTZ2YWxjMScpLnZhbHVlOw0KICAgICAgICAgICAgdmFyIGhhc2hsZW4gPSBoZXgycnN0cihRKCdpZHhfZDE2dmFsYzInKS52YWx1ZSkubGVuZ3RoOw0KICAgICAgICAgICAgUUUoJ2lkeF9kbGdPa0J1dHRvbicsIChRKCdpZHhfZDE2dmFsYzMnKS52YWx1ZS5sZW5ndGggPiAwKSAmJiAoKGhhc2h0eXBlID09IDEpICYmIChoYXNobGVuID09IDIwKSkgfHwgKChoYXNodHlwZSA9PSAyKSAmJiAoaGFzaGxlbiA9PSAzMikpIHx8ICgoaGFzaHR5cGUgPT0gMykgJiYgKGhhc2hsZW4gPT0gNDgpKSk7DQogICAgICAgIH0NCg0KICAgICAgICB2YXIgdXNiX2FscGhhYmV0ID0gIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2NvbXB1dGVDaGVja3N1bShzKSB7DQogICAgICAgICAgICB2YXIgQSA9IDA7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyBpKyspIEEgKz0gcy5jaGFyQ29kZUF0KGkpOw0KICAgICAgICAgICAgcmV0dXJuIHVzYl9hbHBoYWJldFtBICUgMzZdOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gdXNiX2dlbmVyYXRlUmFuZG9tUGlkKCkgew0KICAgICAgICAgICAgdmFyIHBpZCA9ICIiOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsgcGlkICs9IHVzYl9hbHBoYWJldFtyYW5kb20oMzYpXTsgfQ0KICAgICAgICAgICAgcmV0dXJuIHBpZCArIHVzYl9jb21wdXRlQ2hlY2tzdW0ocGlkKTsNCiAgICAgICAgfQ0KDQogICAgICAgIGZ1bmN0aW9uIHVzYl9nZW5lcmF0ZVJhbmRvbVBwcygpDQogICAgICAgIHsNCiAgICAgICAgICAgIHZhciBwcHMgPSAiIiwgczsNCiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgIHMgPSAiIjsNCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykgcyArPSB1c2JfYWxwaGFiZXRbcmFuZG9tKDM2KV07DQogICAgICAgICAgICAgICAgcHBzICs9IHMgKyB1c2JfY29tcHV0ZUNoZWNrc3VtKHMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHBwczsNCiAgICAgICAgfQ0KDQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gUE9QVVAgRElBTE9HDQogICAgICAgIC8vDQoNCiAgICAgICAgLy8gdW5kZWZpbmVkID0gSGlkZGVuLCAxID0gR2VuZXJpYyBNZXNzYWdlDQogICAgICAgIHZhciB4eGRpYWxvZ01vZGU7DQogICAgICAgIHZhciB4eGRpYWxvZ0Z1bmM7DQogICAgICAgIHZhciB4eGRpYWxvZ0J1dHRvbnM7DQogICAgICAgIHZhciB4eGRpYWxvZ1RhZzsNCg0KICAgICAgICAvLyBEaXNwbGF5IGEgZGlhbG9nIGJveA0KICAgICAgICAvLyBQYXJhbWV0ZXJzOiBEaWFsb2cgTW9kZSAoMCA9IG5vbmUpLCBEaWFsb2cgVGl0bGUsIEJ1dHRvbnMgKDEgPSBPSywgMiA9IENhbmNlbCwgMyA9IE9LICYgQ2FuY2VsKSwgQ2FsbCBiYWNrIGZ1bmN0aW9uKDAgPSBDYW5jZWwsIDEgPSBPSyksIERpYWxvZyBDb250ZW50IChNb2RlIDExIG9ubHkpDQogICAgICAgIGZ1bmN0aW9uIHNldERpYWxvZ01vZGUoeCwgeSwgYiwgZiwgYywgdGFnKSB7DQogICAgICAgICAgICB4eGRpYWxvZ01vZGUgPSB4Ow0KICAgICAgICAgICAgeHhkaWFsb2dGdW5jID0gZjsNCiAgICAgICAgICAgIHh4ZGlhbG9nQnV0dG9ucyA9IGI7DQogICAgICAgICAgICB4eGRpYWxvZ1RhZyA9IHRhZzsNCiAgICAgICAgICAgIFFFKCdpZHhfZGxnT2tCdXR0b24nLCB0cnVlKTsNCiAgICAgICAgICAgIFFWKCdpZHhfZGxnT2tCdXR0b24nLCBiICYgMSk7DQogICAgICAgICAgICBRVignaWR4X2RsZ0NhbmNlbEJ1dHRvbicsIGIgJiAyKTsNCiAgICAgICAgICAgIFFWKCdpZF9kaWFsb2djbG9zZScsIGIgJiAyKTsNCiAgICAgICAgICAgIFFWKCdpZHhfZGxnRGVsZXRlQnV0dG9uJywgYiAmIDQpOw0KICAgICAgICAgICAgaWYgKHkpIFFIKCdpZF9kaWFsb2d0aXRsZScsIHkpOw0KICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCAyNjsgaSsrKSB7IFFWKCdkaWFsb2cnICsgaSwgaSA9PSB4KTsgfSAvLyBFZGl0IHRoaXMgbGluZSB3aGVuIG1vcmUgZGlhbG9ncyBhcmUgYWRkZWQNCiAgICAgICAgICAgIFFWKCdkaWFsb2cnLCB4KTsNCiAgICAgICAgICAgIGlmIChjKSB7IGlmICh4ID09IDExKSB7IFFIKCdpZF9kaWFsb2dPcHRpb25zJywgYyk7IH0gZWxzZSB7IFFIKCdpZF9kaWFsb2dNZXNzYWdlJywgYyk7IH0gfQ0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZGlhbG9nY2xvc2UoeCkgew0KICAgICAgICAgICAgdmFyIGYgPSB4eGRpYWxvZ0Z1bmMsIGIgPSB4eGRpYWxvZ0J1dHRvbnMsIHQgPSB4eGRpYWxvZ1RhZzsNCiAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgIGlmICgoKGIgJiA4KSB8fCB4KSAmJiBmKSBmKHgsIHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gY2VudGVyKCkgew0KICAgICAgICAgICAgUVMoJ2RpYWxvZycpLmxlZnQgPSAoKCgoZ2V0RG9jV2lkdGgoKSAtIDQwMCkgLyAyKSkgKyAicHgiKTsNCg0KICAgICAgICAgICAgLy9RUygnaWRfbWFpbmFyZWFfZnJhbWUnKS5oZWlnaHQgPSBRKCdpZF9tYWluYXJlYScpLm9mZnNldEhlaWdodDsNCiAgICAgICAgfQ0KICAgICAgICBmdW5jdGlvbiBtZXNzYWdlYm94KHQsIG0pIHsgUUgoJ2lkX2RpYWxvZ01lc3NhZ2UnLCBtKTsgc2V0RGlhbG9nTW9kZSgxLCB0LCAxKTsgfQ0KICAgICAgICBmdW5jdGlvbiBzdGF0dXNib3godCwgbSkgeyBRSCgnaWRfZGlhbG9nTWVzc2FnZScsIG0pOyBzZXREaWFsb2dNb2RlKDEsIHQpOyB9DQoNCiAgICAgICAgLy8NCiAgICAgICAgLy8gR0VORVJJQyBNRVRIT0RTDQogICAgICAgIC8vDQoNCg0KICAgICAgICBmdW5jdGlvbiBTYXZlSnNvbkZpbGUobmFtZSwgbmFtZTIsIGRlc2MsIGRhdGEpIHsNCiAgICAgICAgICAgIHZhciBuID0gJycsIHIgPSB7fSwgZCA9IG5ldyBEYXRlKCk7DQogICAgICAgICAgICBpZiAoYW10c3lzc3RhdGUpIHsNCiAgICAgICAgICAgICAgICBuID0gIi0iICsgYW10c3lzc3RhdGVbJ0FNVF9HZW5lcmFsU2V0dGluZ3MnXS5yZXNwb25zZVsnSG9zdE5hbWUnXTsNCiAgICAgICAgICAgICAgICByID0geyd3ZWJhcHB2ZXJzaW9uJzp2ZXJzaW9uLCdkZXNjcmlwdGlvbic6ZGVzYywnaG9zdG5hbWUnOmFtdHN5c3N0YXRlWydBTVRfR2VuZXJhbFNldHRpbmdzJ10ucmVzcG9uc2VbJ0hvc3ROYW1lJ10sJ2xvY2FsdGltZSc6RGF0ZSgpLCd1dGN0aW1lJzpuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCksJ2lzb3RpbWUnOm5ldyBEYXRlKCkudG9JU09TdHJpbmcoKX07DQogICAgICAgICAgICAgICAgaWYgKEhhcmR3YXJlSW52ZW50b3J5KSByWydzeXN0ZW1pZCddID0gZ3VpZFRvU3RyKEhhcmR3YXJlSW52ZW50b3J5WydDSU1fQ29tcHV0ZXJTeXN0ZW1QYWNrYWdlJ10ucmVzcG9uc2VbIlBsYXRmb3JtR1VJRCJdLnRvTG93ZXJDYXNlKCkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgbiArPSAnLScgKyBkLmdldEZ1bGxZZWFyKCkgKyAiLSIgKyAoIjAiKyhkLmdldE1vbnRoKCkrMSkpLnNsaWNlKC0yKSArICItIiArICgiMCIgKyBkLmdldERhdGUoKSkuc2xpY2UoLTIpICsgIi0iICsgKCIwIiArIGQuZ2V0SG91cnMoKSkuc2xpY2UoLTIpICsgIi0iICsgKCIwIiArIGQuZ2V0TWludXRlcygpKS5zbGljZSgtMik7Ow0KICAgICAgICAgICAgcltuYW1lMl0gPSBkYXRhOw0KDQogICAgICAgICAgICBzYXZlQXMoZGF0YTJibG9iKEpTT04uc3RyaW5naWZ5KHIsIG51bGwsICcgICcpLnJlcGxhY2UoL1xuL2csICdcclxuJykpLCBuYW1lICsgbiArICcuanNvbicpOw0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIGh0dHBFcnJvclRhYmxlID0gew0KICAgICAgICAgICAgMjAwOiAnT0snLA0KICAgICAgICAgICAgNDAxOiAnQXV0aGVudGljYXRpb24gRXJyb3InLA0KICAgICAgICAgICAgNDA4OiAnVGltZW91dCBFcnJvcicsDQogICAgICAgICAgICA2MDE6ICdXU01BTiBQYXJzaW5nIEVycm9yJywNCiAgICAgICAgICAgIDYwMjogJ1VuYWJsZSB0byBwYXJzZSBIVFRQIHJlc3BvbnNlIGhlYWRlcicsDQogICAgICAgICAgICA2MDM6ICdVbmV4cGVjdGVkIEhUVFAgZW51bSByZXNwb25zZScsDQogICAgICAgICAgICA2MDQ6ICdVbmV4cGVjdGVkIEhUVFAgcHVsbCByZXNwb25zZScsDQogICAgICAgIH0NCiAgICAgICAgZnVuY3Rpb24gZXJyY2hlY2socywgc3RhY2spIHsNCiAgICAgICAgICAgIGlmICh3c3N0YWNrID09IG51bGwgfHwgYW10c3RhY2sgIT0gc3RhY2spIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgaWYgKHMgIT0gMjAwICYmIHMgIT0gOSkgew0KICAgICAgICAgICAgICAgIHNldERpYWxvZ01vZGUoKTsNCiAgICAgICAgICAgICAgICB3c3N0YWNrLmNvbW0uRmFpbEFsbEVycm9yID0gOTk5OyAvLyBDYXVzZSBhbGwgbmV3IHJlc3BvbnNlcyB0byBiZSBzaWxlbnQNCiAgICAgICAgICAgICAgICBhbXRzdGFjay5DYW5jZWxBbGxRdWVyaWVzKDk5OSk7DQogICAgICAgICAgICAgICAgUUgoJ2lkX21lc3NhZ2V2aWV3c3RyJywgKChodHRwRXJyb3JUYWJsZVtzXSk/KGh0dHBFcnJvclRhYmxlW3NdKTooJ0Vycm9yICMnICsgcykpKTsNCiAgICAgICAgICAgICAgICBnbygxMDApOw0KICAgICAgICAgICAgICAgIFFTKCdpZF9wcm9ncmVzc2JhcicpLndpZHRoID0gMDsNCg0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIChzICE9IDIwMCk7DQogICAgICAgIH0NCg0KDQogICAgICAgIGZ1bmN0aW9uIGdvaUZyYW1lKGUseCx5KSB7DQogICAgICAgICAgICBpZiAoeHhkaWFsb2dNb2RlKSByZXR1cm47DQogICAgICAgICAgICBnbyh4KTsNCiAgICAgICAgICAgIGlmICgoZS5zaGlmdEtleSA9PSB0cnVlKSB8fCAoUSgnaWRfU3RvcmFnZUlGcmFtZScpLnNyYy5lbmRzV2l0aCh5KSA9PSBmYWxzZSkpIFEoJ2lkX1N0b3JhZ2VJRnJhbWUnKS5zcmMgPSB5Ow0KICAgICAgICAgICAgUVYoJ2lkX21haW5hcmVhX3BhZCcsIGZhbHNlKTsNCiAgICAgICAgICAgIFFWKCdpZF9tYWluYXJlYV9mcmFtZScsIHRydWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gZ28oeCwgZm9yY2UpIHsNCiAgICAgICAgICAgIGlmICh4eGRpYWxvZ01vZGUgJiYgZm9yY2UgIT0gMSkgcmV0dXJuOw0KDQogICAgICAgICAgICBRVignaWRfbWFpbmFyZWFfZnJhbWUnLCBmYWxzZSk7DQogICAgICAgICAgICBRVignaWRfbWFpbmFyZWFfcGFkJywgdHJ1ZSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF9sbXNNYWluUGFuZWwnLCB4ID09IDEwMSk7DQoNCiAgICAgICAgICAgIFFWKCdpZF91c2JTZXR1cFBhbmVsJywgeCA9PSAxMDIpOw0KICAgICAgICAgICAgUVYoJ2lkX21lc3NhZ2V2aWV3JywgeCA9PSAxMDApOw0KICAgICAgICAgICAgUVYoJ2lkX21haW52aWV3JywgeCA8IDEwMCk7DQogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpKyspIHsgLy8gRWRpdCB0aGlzIGxpbmUgd2hlbiBhZGRpbmcgYSBuZXcgc2NyZWVuDQogICAgICAgICAgICAgICAgUVYoJ3AnICsgaSwgaSA9PSB4KTsNCiAgICAgICAgICAgICAgICB2YXIgcSA9IFFTKCdnbycgKyBpKTsNCi8vICMjI0JFR0lOIyMje0xvb2stSW50ZWx9DQogICAgICAgICAgICAgICAgaWYgKHEpIHsgcVsnYmFja2dyb3VuZC1jb2xvciddID0gKChpID09IHgpPyIjYWJjYWUxIjoiIik7IH0gLy8gI2U4ZWVmZQ0KLy8gIyMjRU5EIyMje0xvb2stSW50ZWx9DQoNCiAgICAgICAgICAgICAgICBpZiAocSkgeyBxWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAoKGkgPT0geCk/ImdyYXkiOiIiKTsgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY3VycmVudFZpZXcgPSB4Ow0KICAgICAgICB9DQoNCiAgICAgICAgZnVuY3Rpb24gcG9ydHNGcm9tSG9zdChob3N0LCB0bHMpIHsgdmFyIHggPSBkZWNvZGVVUklDb21wb25lbnQoaG9zdCkuc3BsaXQoJzonKSwgaHAgPSAoKHRscyA9PSAwKSA/IDE2OTkyIDogMTY5OTMpLCBycCA9ICgodGxzID09IDApID8gMTY5OTQgOiAxNjk5NSk7IGlmICh4Lmxlbmd0aCA+IDEpIHsgaHAgPSBwYXJzZUludCh4WzFdKTsgfSBpZiAoeC5sZW5ndGggPiAyKSB7IHJwID0gcGFyc2VJbnQoeFsyXSk7IH0gcmV0dXJuIHsgaG9zdDogeFswXSwgaHR0cDogaHAsIHJlZGlyOiBycCB9IH0NCiAgICAgICAgZnVuY3Rpb24gYWRkTGluayh4LCBmKSB7IHJldHVybiAiPGEgc3R5bGU9Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Ymx1ZSBvbmNsaWNrPSciICsgZiArICInPiZkaWFtczsgIiArIHggKyAiPC9hPiI7IH0NCiAgICAgICAgZnVuY3Rpb24gYWRkTGlua0NvbmRpdGlvbmFsKHgsIGYsIGMpIHsgaWYgKGMpIHJldHVybiBhZGRMaW5rKHgsIGYpOyByZXR1cm4geDsgfQ0KICAgICAgICBmdW5jdGlvbiBoYWx0RXZlbnQoZSkgeyBpZiAoZS5wcmV2ZW50RGVmYXVsdCkgZS5wcmV2ZW50RGVmYXVsdCgpOyBpZiAoZS5zdG9wUHJvcGFnYXRpb24pIGUuc3RvcFByb3BhZ2F0aW9uKCk7IHJldHVybiBmYWxzZTsgfQ0KICAgICAgICBmdW5jdGlvbiBhZGRPcHRpb24ocSwgdCwgaSkgeyB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0aW9uIik7IG9wdGlvbi50ZXh0ID0gdDsgb3B0aW9uLnZhbHVlID0gaTsgUShxKS5hZGQob3B0aW9uKTsgfQ0KICAgICAgICBmdW5jdGlvbiBhZGREaXNhYmxlZE9wdGlvbihxLCB0LCBpKSB7IHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsgb3B0aW9uLnRleHQgPSB0OyBvcHRpb24udmFsdWUgPSBpOyBvcHRpb24uZGlzYWJsZWQgPSAxOyBRKHEpLmFkZChvcHRpb24pOyB9DQogICAgICAgIGZ1bmN0aW9uIHBhc3N3b3JkY2hlY2socCkgeyBpZiAocC5sZW5ndGggPCA4KSByZXR1cm4gZmFsc2U7IHZhciB1cHBlciA9IDAsIGxvd2VyID0gMCwgbnVtYmVyID0gMCwgbm9uYWxwaGEgPSAwOyBmb3IgKHZhciBpIGluIHApIHsgdmFyIGMgPSBwLmNoYXJDb2RlQXQoaSk7IGlmICgoYyA+IDY0KSAmJiAoYyA8IDkxKSkgeyB1cHBlciA9IDE7IH0gZWxzZSBpZiAoKGMgPiA5NikgJiYgKGMgPCAxMjMpKSB7IGxvd2VyID0gMTsgfSBlbHNlIGlmICgoYyA+IDQ3KSAmJiAoYyA8IDU4KSkgeyBudW1iZXIgPSAxOyB9IGVsc2UgeyBub25hbHBoYSA9IDE7IH0gfSByZXR1cm4gKCh1cHBlciArIGxvd2VyICsgbnVtYmVyICsgbm9uYWxwaGEpID09IDQpOyB9DQogICAgICAgIGZ1bmN0aW9uIG1ldGhvZGNoZWNrKHIpIHsgaWYgKHIgJiYgciAhPSBudWxsICYmIHIuQm9keSAmJiByLkJvZHlbJ1JldHVyblZhbHVlJ10gIT0gMCkgeyBtZXNzYWdlYm94KCJDYWxsIEVycm9yIiwgci5IZWFkZXJbJ01ldGhvZCddICsgIjogIiArIChyLkJvZHkuUmV0dXJuVmFsdWVTdHIgKyAnJykucmVwbGFjZSgiXyIsICIgIikpOyByZXR1cm4gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IH0NCiAgICAgICAgZnVuY3Rpb24gVGFibGVTdGFydCgpIHsgcmV0dXJuICI8dGFibGUgY2xhc3M9J2xvZzEgdXMnIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBzdHlsZT13aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4Pjx0cj48dGQgd2lkdGg9MjAwcHg+PHA+PHRkPiI7IH0NCiAgICAgICAgZnVuY3Rpb24gVGFibGVTdGFydDIoKSB7IHJldHVybiAiPHRhYmxlIGNsYXNzPSdsb2cxIHVzJyBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgc3R5bGU9d2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweD48dHI+PHRkPjxwPjx0ZD4iOyB9DQogICAgICAgIGZ1bmN0aW9uIFRhYmxlRW50cnkobiwgdikgeyByZXR1cm4gIjx0cj48dGQgY2xhc3M9cjE+PHA+IiArIG4gKyAiPHRkIGNsYXNzPXIxPiIgKyB2OyB9DQogICAgICAgIGZ1bmN0aW9uIEZ1bGxUYWJsZSh4LCBlKSB7IHZhciByID0gVGFibGVTdGFydCgpOyBmb3IgKGkgaW4geCkgeyBpZiAoaSAmJiB4W2ldKSByICs9IFRhYmxlRW50cnkoaSwgeFtpXSk7IH0gcmV0dXJuIHIgKyBUYWJsZUVuZChlKTsgfQ0KICAgICAgICBmdW5jdGlvbiBUYWJsZUVuZChuKSB7IHJldHVybiAiPHRyPjx0ZCBjb2xzcGFuPTI+PHA+IiArIChuP246JycpICsgIjwvdGFibGU+IjsgfQ0KICAgICAgICBmdW5jdGlvbiBBZGRCdXR0b24odiwgZikgeyByZXR1cm4gIjxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT0nIiArIHYgKyAiJyBvbmNsaWNrPSciICsgZiArICInIHN0eWxlPW1hcmdpbjo0cHg+IjsgfQ0KICAgICAgICBmdW5jdGlvbiBBZGRCdXR0b24yKHYsIGYsIHMpIHsgcmV0dXJuICI8aW5wdXQgdHlwZT1idXR0b24gdmFsdWU9JyIgKyB2ICsgIicgb25jbGljaz0nIiArIGYgKyAiJyAiICsgcyArICI+IjsgfQ0KICAgICAgICBmdW5jdGlvbiBBZGRSZWZyZXNoQnV0dG9uKGYpIHsgcmV0dXJuICI8aW5wdXQgdHlwZT1idXR0b24gbmFtZT1yZWZyZXNoYnRuIHZhbHVlPVJlZnJlc2ggb25jbGljaz0ncmVmcmVzaEJ1dHRvbnMoZmFsc2UpOyIgKyBmICsgIicgc3R5bGU9bWFyZ2luOjRweCAiICsgKHJlZnJlc2hCdXR0b25zU3RhdGU9PWZhbHNlPyJkaXNhYmxlZCI6IiIpICsgIj4iOyB9DQogICAgICAgIGZ1bmN0aW9uIE1vcmVTdGFydCgpIHsgcmV0dXJuICI8YSBzdHlsZT1jdXJzb3I6cG9pbnRlcjtjb2xvcjpibHVlIGlkPW1vcmV4eHgxIG9uY2xpY2s9UVYoXCJtb3JleHh4MVwiLGZhbHNlKTtRVihcIm1vcmV4eHgyXCIsdHJ1ZSk+JiN4MjVCQzsgTW9yZTwvYT48ZGl2IGlkPW1vcmV4eHgyIHN0eWxlPWRpc3BsYXk6bm9uZT48YnI+PGhyPiI7IH07DQogICAgICAgIGZ1bmN0aW9uIE1vcmVFbmQoKSB7IHJldHVybiAiPGEgc3R5bGU9Y3Vyc29yOnBvaW50ZXI7Y29sb3I6Ymx1ZSBvbmNsaWNrPVFWKFwibW9yZXh4eDJcIixmYWxzZSk7UVYoXCJtb3JleHh4MVwiLHRydWUpPiYjeDI1QjI7IExlc3M8L2E+PC9kaXY+IjsgfTsNCiAgICAgICAgZnVuY3Rpb24gZ2V0U2VsZWN0ZWRPcHRpb25zKHNlbCkgeyB2YXIgb3B0cyA9IFtdLCBvcHQ7IGZvciAodmFyIGkgPSAwLCBsZW4gPSBzZWwub3B0aW9ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykgeyBvcHQgPSBzZWwub3B0aW9uc1tpXTsgaWYgKG9wdC5zZWxlY3RlZCkgeyBvcHRzLnB1c2gob3B0LnZhbHVlKTsgfSB9IHJldHVybiBvcHRzOyB9DQogICAgICAgIGZ1bmN0aW9uIGdldEluc3RhbmNlKHgsIHkpIHsgZm9yICh2YXIgaSBpbiB4KSB7IGlmICh4W2ldWyJJbnN0YW5jZUlEIl0gPT0geSkgcmV0dXJuIHhbaV07IH0gcmV0dXJuIG51bGw7IH0NCiAgICAgICAgZnVuY3Rpb24gZ2V0SXRlbSh4LCB5LCB6KSB7IGZvciAodmFyIGkgaW4geCkgeyBpZiAoeFtpXVt5XSA9PSB6KSByZXR1cm4geFtpXTsgfSByZXR1cm4gbnVsbDsgfQ0KICAgICAgICBmdW5jdGlvbiBndWlkVG9TdHIoZykgeyByZXR1cm4gZy5zdWJzdHJpbmcoNiwgOCkgKyBnLnN1YnN0cmluZyg0LCA2KSArIGcuc3Vic3RyaW5nKDIsIDQpICsgZy5zdWJzdHJpbmcoMCwgMikgKyAiLSIgKyBnLnN1YnN0cmluZygxMCwgMTIpICsgZy5zdWJzdHJpbmcoOCwgMTApICsgIi0iICsgZy5zdWJzdHJpbmcoMTQsIDE2KSArIGcuc3Vic3RyaW5nKDEyLCAxNCkgKyAiLSIgKyBnLnN1YnN0cmluZygxNiwgMjApICsgIi0iICsgZy5zdWJzdHJpbmcoMjApOyB9DQogICAgICAgIGZ1bmN0aW9uIGdldFVybFZhcnMoKSB7IHZhciBqLCBoYXNoLCB2YXJzID0gW10sIGhhc2hlcyA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNsaWNlKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoJz8nKSArIDEpLnNwbGl0KCcmJyk7IGZvciAodmFyIGkgPSAwOyBpIDwgaGFzaGVzLmxlbmd0aDsgaSsrKSB7IGogPSBoYXNoZXNbaV0uaW5kZXhPZignPScpOyBpZiAoaiA+IDApIHsgdmFyc1toYXNoZXNbaV0uc3Vic3RyaW5nKDAsIGopXSA9IGhhc2hlc1tpXS5zdWJzdHJpbmcoaiArIDEsIGhhc2hlc1tpXS5sZW5ndGgpOyB9IH0gcmV0dXJuIHZhcnM7IH0NCiAgICAgICAgZnVuY3Rpb24gZ2V0RG9jV2lkdGgoKSB7IGlmICh3aW5kb3cuaW5uZXJXaWR0aCkgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoOyBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggIT0gMCkgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uY2xpZW50V2lkdGg7IH0NCiAgICAgICAgZnVuY3Rpb24gZ2V0RG9jSGVpZ2h0KCkgeyBpZiAod2luZG93LmlubmVySGVpZ2h0KSByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0OyBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCAhPSAwKSByZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDsgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0uY2xpZW50SGVpZ2h0OyB9DQogICAgICAgIGZ1bmN0aW9uIGFkZEh0bWxWYWx1ZSh0LCB2KSB7IHJldHVybiAnPGRpdiBzdHlsZT1oZWlnaHQ6MjBweD48ZGl2IHN0eWxlPWZsb2F0OnJpZ2h0O3dpZHRoOjIyMHB4O292ZXJmbG93OmhpZGRlbj48YiB0aXRsZT0iJyArIHYgKyAnIj4nICsgdiArICc8L2I+PC9kaXY+PGRpdj4nICsgdCArICc8L2Rpdj48L2Rpdj4nOyB9DQogICAgICAgIGZ1bmN0aW9uIGFkZEh0bWxWYWx1ZU5vVGl0bGUodCwgdikgeyByZXR1cm4gJzxkaXYgc3R5bGU9aGVpZ2h0OjIwcHg+PGRpdiBzdHlsZT1mbG9hdDpyaWdodDt3aWR0aDoyMjBweDtvdmVyZmxvdzpoaWRkZW4+JyArIHYgKyAnPC9iPjwvZGl2PjxkaXY+JyArIHQgKyAnPC9kaXY+PC9kaXY+JzsgfQ0KICAgICAgICBmdW5jdGlvbiBudW1iZXJzT25seShlLCB4KSB7IHJldHVybiAoZXZlbnQuY2hhckNvZGUgPT0gMCkgfHwgKGV2ZW50LmNoYXJDb2RlID09IHgpIHx8IChldmVudC5jaGFyQ29kZSA+PSA0OCAmJiBldmVudC5jaGFyQ29kZSA8PSA1Nyk7IH0NCg0KDQogICAgICAgIC8vIEdldCB0aGluZ3Mgc3RhcnRlZA0KICAgICAgICBzdGFydHVwKCk7DQogICAgPC9zY3JpcHQ+";amtLms.meshCommander=http.createServer();amtLms.meshCommander.listen(16994);amtLms.meshCommander.on("upgrade",function(f,g,c){switch(f.url.split("?")[0]){case"/lms.ashx":g.ws=g.upgradeWebSocket();g.ws.on("data",processLmsControlData);g.ws.on("end",function(){if(lmsControlSockets[this.id]){delete lmsControlSockets[this.id]}});var d=lmsControlSocketsNextId++;lmsControlSockets[d]=g.ws;g.ws.id=d;break;case"/webrelay.ashx":g.ws=g.upgradeWebSocket();if(amtLms.connected==true){amtLms.bindDuplexStream(g.ws,"IPv4",16992)}else{var e=require("net");g.relay=e.connect({host:"127.0.0.1",port:16992});g.relay.on("connect",function(){g.ws.on("data",function(h){g.relay.write(h)});g.ws.on("end",function(){g.relay.end()})});g.relay.on("data",function(h){g.ws.write(h)});g.relay.on("close",function(){g.ws.end()})}break;default:g.end();break}});amtLms.meshCommander.on("request",function(f,g){switch(f.url.split("?")[0]){case"/":var d=null;try{d=fs.readFileSync("lmscommander.htm")}catch(c){}if(d!=null){g.writeHead(200,"OK",{Server:"JSLMS","Cache-Control":"max-age=0, no-cache","X-Frame-Options":"DENY","Content-Type":"text/html","Transfer-Encoding":"chunked"});g.end(d)}else{g.writeHead(200,"OK",{Server:"JSLMS","Cache-Control":"max-age=0, no-cache","X-Frame-Options":"DENY","Content-Type":"text/html","Content-Encoding":"gzip","Transfer-Encoding":"chunked",ETag:b});g.end(Buffer.from(a,"base64"))}break;default:g.statusCode=404;g.statusMessage="Not Found";g.end();break}})}function setupMeiOsAdmin(a,b){if(amtMei==null){if(a){a(b)}}else{amtMei.getLocalSystemAccount(function(f){var d=require("amt-wsman-duk");var e=require("amt-wsman");var c=require("amt");oswsstack=new e(d,"127.0.0.1",16992,f.user,f.pass,false);osamtstack=new c(oswsstack);if(a){a(b)}amtMei.getVersion(function(k){var g=null;try{for(var j in k.Versions){if(k.Versions[j].Description=="AMT"){g=parseInt(k.Versions[j].Version.split(".")[0])}}}catch(h){}if((g!=null)&&(g>=12)){kvmGetData("skip");tempTimer=setInterval(function(){kvmGetData()},2000);kvmSetData(JSON.stringify({action:"restart",ver:1}))}})})}}function kvmGetData(a){osamtstack.IPS_KVMRedirectionSettingData_DataChannelRead(kvmDataGetResponse,a)}function kvmDataGetResponse(d,b,c,f,g){if((g!="skip")&&(f==200)&&(c.Body.ReturnValue==0)){var h=null;try{h=Buffer.from(c.Body.DataMessage,"base64").toString()}catch(a){return}if(h!=null){kvmProcessData(c.Body.RealmsBitmap,c.Body.MessageId,h)}}}var webRtcDesktop=null;function kvmProcessData(d,c,g){var a=null;try{a=JSON.parse(g)}catch(b){}if((a!=null)&&(a.action)){if(a.action=="present"){kvmSetData(JSON.stringify({action:"present",ver:1,platform:process.platform}))}if(a.action=="offer"){webRtcDesktop={};var f=require("ILibWebRTC");webRtcDesktop.webrtc=f.createConnection();webRtcDesktop.webrtc.on("connected",function(){});webRtcDesktop.webrtc.on("disconnected",function(){webRtcCleanUp()});webRtcDesktop.webrtc.on("dataChannel",function(h){webRtcDesktop.rtcchannel=h;var e=require("meshDesktop");webRtcDesktop.kvm=e.getRemoteDesktopStream();webRtcDesktop.kvm.pipe(webRtcDesktop.rtcchannel,{dataTypeSkip:1,end:false});webRtcDesktop.rtcchannel.on("end",function(){webRtcCleanUp()});webRtcDesktop.rtcchannel.on("data",function(j){kvmCtrlData(this,j)});webRtcDesktop.rtcchannel.pipe(webRtcDesktop.kvm,{dataTypeSkip:1,end:false})});kvmSetData(JSON.stringify({action:"answer",ver:1,sdp:webRtcDesktop.webrtc.setOffer(a.sdp)}))}}}var path={join:function(){var c=[];for(var a in arguments){var b=arguments[a];if(b!=null){while(b.endsWith("/")||b.endsWith("\\")){b=b.substring(0,b.length-1)}if(a!=0){while(b.startsWith("/")||b.startsWith("\\")){b=b.substring(1)}}c.push(b)}}if(c.length==0){return"/"}return c.join("/")}};function getDirectoryInfo(f){var g={path:f,dir:[]};if(((f==undefined)||(f==""))&&(process.platform=="win32")){var h=null;try{h=fs.readDrivesSync()}catch(b){}if(h!=null){for(var c=0;c0&&c.charCodeAt(0)!=123){if(this.fileupload!=null){c=Buffer.from(c,"base64");var k=c.readUInt32BE(0);if((k==16777216)||(k==16777217)){fs.writeSync(this.fileupload.fp,c.slice(4));b.write({action:"upload",sub:"ack",reqid:this.fileupload.reqid});if(k==16777217){fs.closeSync(this.fileupload.fp);this.fileupload=null}}}return}try{c=JSON.parse(c)}catch(g){console.error("Invalid JSON: "+c);return}if((c.path!=null)&&(process.platform!="win32")&&(c.path[0]!="/")){c.path="/"+c.path}switch(c.action){case"ping":b.write({action:"pong"});break;case"ls":var p=getDirectoryInfo(c.path);if(c.reqid!=undefined){p.reqid=c.reqid}b.write(p);break;case"mkdir":fs.mkdirSync(c.path);break;case"rm":for(var l in c.delfiles){var j=path.join(c.path,c.delfiles[l]);try{fs.unlinkSync(j)}catch(f){console.log(f)}}break;case"rename":var o=path.join(c.path,c.oldname);var n=path.join(c.path,c.newname);try{fs.renameSync(o,n)}catch(f){console.log(f)}break;case"download":var r=0;if(c.sub=="start"){if(this.filedownload!=null){b.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}this.filedownload={id:c.id,path:c.path,ptr:0};try{this.filedownload.f=fs.openSync(this.filedownload.path,"rbN")}catch(f){b.write({action:"download",sub:"cancel",id:this.filedownload.id});delete this.filedownload}if(this.filedownload){b.write({action:"download",sub:"start",id:c.id})}}else{if((this.filedownload!=null)&&(c.id==this.filedownload.id)){if(c.sub=="startack"){r=8}else{if(c.sub=="stop"){delete this.filedownload}else{if(c.sub=="ack"){r=1}}}}}while(r>0){r--;var a=Buffer.alloc(4096);var m=fs.readSync(this.filedownload.f,a,4,4092,null);this.filedownload.ptr+=m;if(m<4092){a.writeInt32BE(16777217,0);fs.closeSync(this.filedownload.f);delete this.filedownload;r=0}else{a.writeInt32BE(16777216,0)}b.write(a.slice(0,m+4).toString("base64"))}break;case"upload":if(c.sub=="start"){if(this.fileupload!=null){fs.closeSync(this.fileupload.fp)}if(!c.path||!c.name){break}this.fileupload={reqid:c.reqid};var h=path.join(c.path,c.name);try{this.fileupload.fp=fs.openSync(h,"wbN")}catch(f){}if(this.fileupload.fp){b.write({action:"upload",sub:"start",reqid:this.fileupload.reqid})}else{this.fileupload=null;b.write({action:"upload",sub:"error",reqid:this.fileupload.reqid})}}else{if(c.sub=="cancel"){if(this.fileupload!=null){fs.closeSync(this.fileupload.fp);this.fileupload=null}}}break;case"copy":for(var l in c.names){var q=path.join(c.scpath,c.names[l]),d=path.join(c.dspath,c.names[l]);if(q!=d){try{fs.copyFileSync(q,d)}catch(f){}}}break;case"move":for(var l in c.names){var q=path.join(c.scpath,c.names[l]),d=path.join(c.dspath,c.names[l]);if(q!=d){try{fs.copyFileSync(q,d);fs.unlinkSync(q)}catch(f){}}}break;default:break}}function webRtcCleanUp(){if(webRtcDesktop==null){return}if(webRtcDesktop.rtcchannel){try{webRtcDesktop.rtcchannel.close()}catch(a){}try{webRtcDesktop.rtcchannel.removeAllListeners("data")}catch(a){}try{webRtcDesktop.rtcchannel.removeAllListeners("end")}catch(a){}delete webRtcDesktop.rtcchannel}if(webRtcDesktop.webrtc){try{webRtcDesktop.webrtc.close()}catch(a){}try{webRtcDesktop.webrtc.removeAllListeners("connected")}catch(a){}try{webRtcDesktop.webrtc.removeAllListeners("disconnected")}catch(a){}try{webRtcDesktop.webrtc.removeAllListeners("dataChannel")}catch(a){}delete webRtcDesktop.webrtc}if(webRtcDesktop.kvm){try{webRtcDesktop.kvm.end()}catch(a){}delete webRtcDesktop.kvm}webRtcDesktop=null}function kvmSetData(a){osamtstack.IPS_KVMRedirectionSettingData_DataChannelWrite(Buffer.from(a).toString("base64"),function(){})}function startLmsWsmanResponse(d,b,c,e){if(e==600){console.log("ERROR: Unable to connect to Intel(R) AMT.")}else{if(e!=200){console.log("ERROR: Unable to get object from Intel(R) AMT, status = "+e+".")}else{var a=c.CIM_SoftwareIdentity.responses;if(a.length>0){var f=getInstance(a,"AMT")["VersionString"];amtversion=parseInt(f.split(".")[0]);amtversionmin=parseInt(f.split(".")[1])}}}}function processLmsControlData(b){if(b.length<2){return}var a=b.readUInt16LE(0);switch(a){case 1:getAmtInfo(function(c,d){c.LoginMode=2;d.write(Buffer.concat([Buffer.from("0100","hex"),Buffer.from(JSON.stringify(c))]))},this);break;case 2:if(b.length<6){break}amtMei.unprovision(b.readUInt32LE(2),function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(2,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 3:amtMei.getLocalSystemAccount(function(c,d){d.write(Buffer.concat([Buffer.from("030000000000","hex"),c.raw]))},this);break;case 4:amtMei.startConfiguration(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 5:amtMei.stopConfiguration(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 6:amtMei.openUserInitiatedConnection(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 7:amtMei.closeUserInitiatedConnection(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(7,0);c.writeUInt32LE(e,2);d.write(c)},this);break;case 8:amtMei.getRemoteAccessConnectionStatus(function(e,d){var c=Buffer.alloc(6);c.writeUInt16LE(8,0);c.writeUInt32LE(e.status,2);d.write(Buffer.concat([c,e.raw]))},this);break;default:break}}function startRouter(){tcpserver=net.createServer(OnTcpClientConnected);tcpserver.on("error",function(a){console.log("ERROR: "+JSON.stringify(a));exit(0);return});tcpserver.listen(settings.localport,function(){if(settings.remotename==null){console.log("Redirecting local port "+settings.localport+" to remote port "+settings.remoteport+".")}else{console.log("Redirecting local port "+settings.localport+" to "+settings.remotename+":"+settings.remoteport+".")}console.log("Press ctrl-c to exit.")})}function OnTcpClientConnected(a){try{debug(1,"Client connected");a.on("end",function(){disconnectTunnel(this,this.websocket,"Client closed")});a.pause();try{options=http.parseUri(settings.serverurl+"?user="+settings.username+"&pass="+settings.password+"&nodeid="+settings.remotenodeid+"&tcpport="+settings.remoteport)}catch(b){console.log('Unable to parse "serverUrl".');process.exit(1);return}options.checkServerIdentity=onVerifyServer;options.rejectUnauthorized=false;a.websocket=http.request(options);a.websocket.tcp=a;a.websocket.tunneling=false;a.websocket.upgrade=OnWebSocket;a.websocket.on("error",function(c){console.log("ERROR: "+JSON.stringify(c))});a.websocket.end()}catch(b){debug(2,b)}}function disconnectTunnel(c,d,b){if(d!=null){try{d.end()}catch(a){debug(2,a)}}if(c!=null){try{c.end()}catch(a){debug(2,a)}}debug(1,"Tunnel disconnected: "+b)}function OnWebSocket(b,c,a){debug(1,"Websocket connected");c.on("data",function(d){if(this.parent.tunneling==false){d=d.toString();if(d=="c"){this.parent.tunneling=true;this.pipe(this.parent.tcp);this.parent.tcp.pipe(this);debug(1,"Tunnel active")}else{if((d.length>6)&&(d.substring(0,6)=="error:")){console.log(d.substring(6));disconnectTunnel(this.tcp,this,d.substring(6))}}}});c.on("error",function(d){disconnectTunnel(this.tcp,this,"Websocket error")});c.on("close",function(d){disconnectTunnel(this.tcp,this,"Websocket closed")});c.parent=this}function discoverMeshServer(){console.log("Looking for server...");discoveryInterval=setInterval(discoverMeshServerOnce,5000);discoverMeshServerOnce()}function discoverMeshServerOnce(){var f=os.networkInterfaces();for(var a in f){if(f.hasOwnProperty(a)){for(var d=0;dm){g+="}";m++}f=JSON.parse(g)}catch(j){console.log("Error: Unable to parse Intel AMT response: "+g,j);a(null)}if(a!=null){a(d.statusCode,f)}})});c.on("error",function(d){console.log("Error occured: "+JSON.stringify(d));if(b==true){if(a!=null){a(null)}}else{getAmtStorage(a,true)}});c.end()}function pushToStorage(f,e,b,c,g){if(g==null){g=0}var h=digest.request({protocol:settings.protocol,method:"PUT",host:settings.hostname,path:("/amt-storage/"+f+((g!=0)?"?append=":"")),port:settings.localport});h.on("error",function(j){console.log("Error occured: "+JSON.stringify(j));if(c!=null){c(null)}});h.on("response",function(j){debug(1,"Chunk Done",b.length,g);if((j.statusCode==200)&&(g0)?"":"Content-Encoding:gzipContent-Type:text/html"+((e!=null)?(""+e+""):"")+"";var a=((b.length-g)>(7000-d.length))?(7000-d.length):(b.length-g);h.write(Buffer.concat([new Buffer(d),b.slice(g,g+a)]));g+=a;h.end()}function verifyStorage(c,a,b){var d=digest.request({protocol:settings.protocol,method:"GET",host:settings.hostname,path:("/amt-storage/"+c),port:settings.localport});d.on("error",function(f){console.log("Verify error occured: "+JSON.stringify(f));if(b!=null){b(null)}});d.on("response",function(e){e.ptr=0;e.ok=true;e.on("data",function(f){if(f.toString("hex")!=a.slice(e.ptr,e.ptr+f.length).toString("hex")){e.ok=false;console.log("Verifiy failed ("+e.ptr+", "+f.length+").")}e.ptr+=f.length});e.on("end",function(){if(b!=null){b(e.ok)}})});d.end()}function deleteStorage(b,a,c){var d=digest.request({protocol:settings.protocol,method:"DELETE",host:settings.hostname,path:"/amt-storage/"+b,port:settings.localport});d.on("error",function(f){if((f=="Error: Socket was unexpectedly closed")&&(c!=true)){deleteStorage(b,a,true)}else{if(a!=null){if(f.statusCode){a(f.statusCode)}else{a(null)}}}});d.on("response",function(e){if(a!=null){a(e.statusCode)}});d.end()}function parseUrlArguments(d){var c={},e=d.split("?");if(e.length<2){return c}e=e[1].split("&");for(var a in e){var b=e[a].indexOf("=");if(b>0){c[e[a].substring(0,b).toLowerCase()]=e[a].substring(b+1)}}return c}function removeItemFromArray(a,b){var c=a.indexOf(b);if(c!==-1){a.splice(c,1)}}var serviceName=null;var serviceOpSpecified=0;var serviceInstall=0;for(var i in process.argv){if(process.argv[i].toLowerCase()=="install"){serviceInstall=1}else{if(process.argv[i].toLowerCase()=="uninstall"){serviceInstall=-1}}if((process.argv[i].toLowerCase()=="microlms")||(process.argv[i].toLowerCase()=="amtlms")||(process.argv[i].toLowerCase()=="lms")){serviceName="MicroLMS";break}if((process.argv[i].toLowerCase()=="meshcommander")||(process.argv[i].toLowerCase()=="commander")){serviceName="MeshCommander";break}}if(serviceName==null){for(var i in process.argv){if((process.argv[i].toLowerCase()=="install")||(process.argv[i].toLowerCase()=="uninstall")){console.log("In order to install/uninstall, a service type must be specified.");process.exit()}}if(process.execPath.includes("MicroLMS")){serviceName="MicroLMS"}else{if(process.execPath.includes("MeshCommander")){serviceName="MeshCommander"}else{serviceName="not_a_service"}}}if(serviceInstall==0){run(process.argv)}else{var serviceHost=require("service-host");var meshcmdService=new serviceHost({name:serviceName,startType:"AUTO_START"});meshcmdService.on("serviceStart",function onStart(){console.setDestination(console.Destinations.DISABLED);if(process.execPath.includes("MicroLMS")){run([process.execPath,"microlms"])}else{if(process.execPath.includes("MeshCommander")){run([process.execPath,"meshcommander"])}else{console.log("Aborting Service Start, because unknown binary: "+process.execPath);process.exit(1)}}});meshcmdService.on("serviceStop",function onStop(){console.log("Stopping service");process.exit()});meshcmdService.on("normalStart",function onNormalStart(){try{run(process.argv)}catch(a){console.log("ERROR: "+a)}});meshcmdService.run()}; \ No newline at end of file diff --git a/public/commander.htm b/public/commander.htm index 37ee2c83..d2420212 100644 --- a/public/commander.htm +++ b/public/commander.htm @@ -1,1120 +1,1311 @@ -

  
Disconnected
\ No newline at end of file

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
sd)BD4ky`B!JzYG-`zqe%+qTmgsq0Db2?~ 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

DL-vacf~;*OWEuJGe@wMb2mhNGfXqCQlrB6u06 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%0AQ*l!S0mxZ!Z_27^fm{8%`9VtLQuP5a)6 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 z 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 V_;A2VV?`V1y!&z`Umc$;oI!(&fJ1 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

K>GOxLYei+*d00gp6(K7 zwlbe!B}Sj+OLeVfQC8ulAH%B}^zF^WWOeU&b5(juKhsd!v3*ocf9t<_vG4Pl?hB5K z;XXS$#$CdNyU$1;_}Q^pV=3Omg$zup^Wl0-;Be*+X$<>aLG2608mQH+KfFBFVT5rHS_Z!dE(^OJ0hGYJelVNjhBHw8NP=B|7gdF7yY@flO* zgp^fy!sTNTGBqwHJjyN~aveQ)gmSiNpjoIeqiT(L^<`Z(dT^8e*72GS7%+uhq!b@O z6Cu~(JuD|6Y~yeE5;iAxH@NNn*>@pcvkVIkPx!7VTfz#)hik%kbAP98+2aE=j+zV= zmmVyxegh~u^iZxg5;Jakn3IPSBM0HZPR(_g**n`b3enK!3>3oLiwx%?c~PoKW~ot3 zj!v#IK36XK?Bv`CrXjwmImmcvm#PGixFec|jDRGbg$MFio}K!G9ag`Go|_QIX(V!r zZ|yfdA=rvrI6hP?^ouVZgk>WUuNk@(51NK1iz_0RoiVMdvcGHmc}hWwMNW)7v_CSO z3g0u5x7jtM1#C5-^$4pZH#6q8gusVI7li9(69Xzl$h5tQs2GT(X-c6F5tog80mKmp zs*x@!w@RUc{_1oyiWJ6aq3==>!Tr-s%uO^MifW_jnVX5kkL&Px5^9Wxq3}@**9FXe zY17hp`fz?vRSr~kJ+lIPMim=Ztv@d5KF~QovbMirdt~ z8a8BpyuWZFobdE=xKP9t?nU9Uzol%Oe9d-8?0_3uJ}DwSd|ZQK(Dn!03`vp=BH;-Bue4AG4671k%A0_fUt-)KA2j>fOp&=%Yc z8c;81c1Ei-!-*-<8?-N5JiqPKq^ZHy%Jt+hKpB)5CM)NpCKLNr>N9Jj-#6D*>@(Wh zLJSo5`~u0#yUXx1bdOPuA2wxB-8{G6)pj`B@Zcu>DeIQMKF0t9yYeh%DU>u1f#j)eS}2;K>bV8qq4@A?}i~_haa2!yQl{V+Xb} zrsKFenvY@5+Q9$J~s}c(XcxGL3(yao|`4<{?62T%r z$cDTw-5}MhAOzsMD1Y5ab`vQ49cuR>;to?R!5ZK_y~Ft z$k7jUQmF9Rg9(*ZnsMyE!PG2ig=3K(VkHt0As<>DGpPdSMNh_lh7@Bj=4{2xNntxJ zZ^=#MyhiKD_drazbHYoh2T=KH^nWSQ${C{=RtBJRvu#jim}=X_Ln{qziLj8aJ5iDk zn=@j@W@>b4xv|d(fzi9`11qbI^`-Td^_BPZ_to{0nfv|cQ)`F2>#JtUm!I8T+r)!* z%PO5vw5#80U~!*7ES&YG`l;HLj*a~47_r#ls;(kPuyb0|y*O}SX} z5Z2LChOAN$IyIQn0aLRD<%$%z(%tp9+%e`u5T~gkD>_MrJh*KBT9^SAR(4UM`iMJQg z%j_-Blq3z-a)F0psR+{v!PVwx==}yWhF65Uf<63P02u3{2QFeuON}}Y#p>3y#+Tf@ zT-g|4nmwKuQya3Q(;{BBNrYs zSPbmTjYtV;mUK6P$u;2fzd1FG;5#ZArxz~*!oLigQl=vYBE$ja zz1&|s>FyEh`y|gpZXn9XI^UJ*b<5}6_~Gn_lTpm>t!V`W-n+;JL;4yr^iL(lueYWl;k+k z)RypNpgYP)td2JtlbcVN@=<0xQl`U+j*|d>7i6cX2@hv~#e~dSNpdhua3146`Y{So zkNP~r@4GK`$CWNlg4IgFrw5aGLS=Kt=}yR2W>#>S2SqJU?ll@K(+g{pgQ#dSpQGdi z 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