From f0eeb61df12648d09913c84398d6f86245fe7e85 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Fri, 5 Jul 2019 13:28:41 -0700 Subject: [PATCH] MeshCMD and MeshCtrl improvements. --- MeshCentralServer.njsproj | 2 +- agents/MeshCmd-signed.exe | Bin 5783392 -> 4090560 bytes agents/MeshCmd64-signed.exe | Bin 5366112 -> 3673280 bytes agents/meshcmd.js | 33 +++--- agents/meshcmd.min.js | 33 +++--- meshctrl.js | 189 ++++++++++++++++++++++++++++----- meshuser.js | 74 ++++++++----- package.json | 2 +- public/styles/style.css | 1 + views/messenger-min.handlebars | 2 +- 10 files changed, 251 insertions(+), 85 deletions(-) diff --git a/MeshCentralServer.njsproj b/MeshCentralServer.njsproj index c019d68c..f2f03f17 100644 --- a/MeshCentralServer.njsproj +++ b/MeshCentralServer.njsproj @@ -254,7 +254,7 @@ - + diff --git a/agents/MeshCmd-signed.exe b/agents/MeshCmd-signed.exe index ba7af211c31f074512e6c1a794bcac2a2c475929..bb5c6aff32e918e826d31f5ee95c74840817d703 100644 GIT binary patch delta 668174 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

b73vJYrWpW%yo><_vx` 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≫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 _dMsjY-NhuW(|b1gKW(g=z9;(N5vdky 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

khl}SIGPg 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%0DQuy4Ch~Z%xcsidh5LZwPD_{ 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

(ILSr>FZWF6Mr#3HInQOA5_YYZVfW*M`5U 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

L@S!IQt%^(B0Y?E+e)NDg~X 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

RLSBv?PqjyO$|ZW` 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

yiKm-AYn=sd98;itOVH|Asb7g}G*bvA=godx$U> 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�?cRyV(?-W?TlWUwY~Z(LUktNpcIr@*0>f=FC1q)916RV5kyGlW1YMDi90`30bc?%CdSCC zoCWndadI1;L`d;Oe(aSv|NfiISC!yII98g}I0wjH@6DItCup&)svTc?}$JDB7LT;6aa_DQ!bUk*fx)6uXrqe4X>Q^nm@ zfyAq>7k;*uX;vY2y!D7>sORX^Rh*W6hz!&4#hT#?`U`qgleWQX`n4+Ym^TimI4}S&)B3J#G- zCNhyfy}J0QOk|I(k$aGk;nl-F9pk%!k>PXu(~(RC_9JD&R5VYk zegom^I=H$9%Pk5%?f@C4R+M6DtE>0X^cMucK9T;yRNP zoqxHATP53nJ~I?1fy-iddW3{Oh;A`?2X{xEQJ{kQ+emDQBl%zM2B7)(J8)i0XX9>Q zX)uoX&ILQy9^dvZeVtL3)if)Ju9)X@F$zWUzdQO1i7FfqXSVc_@9@j?8()>#Qz2`u zeeDlevhUlco~Da-ro>797W|Lz2ipSJgyc7JK>^jGmc#$rQ4_+2cqm4jZqjSLp$e$P= zW;kd2+ro_^5&MyLrZ-$HmY*Da$M>V@uEF)xMnWd7;(_`^LVjZeUiBpU`0~c2 z2vYZPIo{xW{g~sg6~j<0E?3WB7+C{Fp*rnS^(m~LJN!}0S2tqzT``{;qOgvcrh#nm zG@H@%+nC=COJAY+Fk#}!{3~4QHh>^qc>A5@{g9AW*^suyy*zg^5};dzV^-R?PVgX< zva}Ckt6}c5kw%YJQuY-VQKVaW7Y^y0YcBrbPrCIZxU)G<`3Xcpoe?T%(nnL8n!Q|X zYLBuC_yzwjWa^`@#b{|QdR? z)}1$_@LF$(x7-9kfjj%YH(tC0Br?(U*iKZOAhltM#Oj5kGO z12H=DzX(zkwYeMpxB7U>6Zk8a=Bl09)vzDp9X7s7U|xpgzkm^sw8A1OjHWk=CV*FC zm9ET1@-Gkf4;ZYpro)qmdWGL%g>!*5h_ z&3?Ql54}AAQwh(Oj}giFQG-v2zhmJ0M+Ja1tDF7T2BR=$imz<{_Rj1#6MWW{J2@fR zZ;3JOunyCocOKZgg;rs1odL}ks1_79N$5Z|CS?5f5vB-4f2`25I{9BTk3}&8#B5Ou zJaN*P``(hfMIqD7%n{>R>l7*mcC+4^;o5OLD(O~5BWY*NUVpu6`u`%znh5^Fe%xs$ z|9kL2TAs^`zm~zB<4Kx2BR#m=2{=-%F<1HT))sWe z2V|bI5A8LJn(aa!9}QYyQU?C50_MM)%MSlO&eyLq*`a)_3;Wnod19MU%HDfQ|KnOG z!fZjytEZxh$>lKeLdRN+aDxP5jo`kJVJE}bjqTsZK2cA-2u~TS+YZz7mP-}KA1y0vk-q**IaKWU%dU*sPwYFbfzq~F5~A)Nz6 z>f8C>0j)$YP2f!(vX)@Kj@e%bG6jJ@qkjm+*1j$klhK;Z*?D3M;|IwD&-2f-+LLCh zg40+i8E_@>E3(F<6Vr~)cGSnSg3xK3$rpOT=_-RU{su>P`}%Sz!o+yqlOm27PC8AU zg6YM$Ic~TzaY7Xnh4j9$8~`ENxDE*E*<%HP%c$pE-;d&bR3g$}u`|%`{?o|uVLFRZ z4TwxRnRWd=?Gar4e5Qygk>_K&)7I$X7>3CIsmkJ1i>F{&G~Fx#3g-8_+p%j(Kb``0 zJ3M@guM)Mlkxt(KnEMZNag&UrA&5odco6_8dMU5{+fAY+m)BemTO=rN+HHP0=Z{n0 z%-AfkPy&tn#Ea_Ueh7-K#ik zzIT+@w>h?|+CF5wqik~bv+~)kmnZ7(1C(^+6~K}2xA?sDZhW9AYt7SLR5=t$Gx<6} zwVRoy?Ts~iGG3l@TbDmMl~OYEZdRq1_`}Nm58~{jIQAM5^Za!hqRq7BTIu_1!RyrR zTP^EdfSpG-X8us*hbvChhj{wrvmkWXC139a_3n3Fi>Z26du~1#9Pl7QIlFtl-;K6H zxfy$lS7hdx>~GMH9o06APAnjFXea{=F0GOuKb&Z`N^cNmUB*CWPsbPiU5eo#rVhG6 z>SueC#3PCNK`C{6=OI3>Tle<9Qf~eDiYK1v+0{nJIelK3i<6+026=gsH0Q~0CieRP zBVN|qKkn{(C0yNcj8 zRF}J~ueUoL<@A@nXwT!#kh#$xruz(>*Uu_f?$yc{ip$ z@ABgW@`Gp+;Le&>`#IGJ)X+0_U7Jio<+s(h>YNY$C8_y@B3L=?hEIoBlkzmFz56vn zJVS@UwodB|ZoNwz&H1CHU#tMs!z>B4%n0}fJQ7Y|swv<7=<2cmZ;k)k8PkOwz*41J zr0`g~ITC<#i$fQM9KkRP0&&(T;n$&52{*|4w+-B7ZB8TB7x7Jsgs{;f3SH z2`yU(NM6{O;>TRR|Ld8K%NSg0D>5^e`n z_gS%16FbBV2CCL2EUcn{K*eiywSM&*6A|Mtf|OEtt(G0c4sb_mzNk9)cycfKcnc)< zzJCwtg8GT`x?b+&Tf~Czp7_csZ0ZLEWk!e8;Q`x_^L0_C>?)X<>1uSMJQWwjXdTtz zfTFX;a+x#}AD&(X{;jRQBz-=aXw&{NbVvv8GGJ+NbUO;6Gk!{<3DCu{f>&1(#|jvJ ziAXs<@0xFh35+i0;d(HBYVIw8=e8x|tZ(1HE)N7czCyTO+HGZ@4qp*nm2K4T(pnqX z1c-KCG_g;(`9-6HRj3&xECNS-Uw8Khj*>1mPqI{&9lThFL&4>O^DVn{;vmG@P9^!& zpfo?%6&j}=s_G)$yF%Bz_Ss19r0N}Mo6HA^My(&{GyP42x~vW7U-b)GbA?DTRG}$Z z6bDCOBuy1b!ouwD8G5*NmcfH6u6H0#V_%@&m?_~c5qKkPan*W>G{(RjI2AZ~p9xSo*}Fz|bZohM`}XYG7` z_elQ?>(Be6AvR1gO}|P$%c8z*FBhl=*smWFOwvX7wC^%(1Hmw*j!nNGd)g_{d7if& znk+4bCtFh&&o}dSj=do~*Phxq5bWoEJD(XJ@*#n6cgt(6Pzng-fn|#_eEK`HS%i|n z^S2~f7Zujd(+74Y?1bdRBFGftxLAGc?vBk;MeXZ-7e83jNvu=Wzw9!eZ8i3xk2^zN zq-oa116j$xY5Rl6N^GHjJU=gKPpe6)pvBWY`=cC9ivP*W^$sc_fV1J6EeK)!DX4j$ z_38U|t>GHO{ptsbF{HZ_O*a)qqR$oQ2$`jOjGJUNx$z1hWwRXa@)wfM@6RtBws8lF z33o>p3jx15uiLTwWrNmhDUObE5S4Ilgd`UD1{e8iT0VT zcR+x5@^~%j6h!THgfW<}2MHC7VpXM)uMzsMmRjzvLe?5te_DcdJONah79ix^!Fzk@ zs;#Tues zmiEBOJ2wYA016%e#}3`Mvh^bH;@>@u+x@Pd&SjbWc&$Pogs~>?OLX7Q+;()yZ1yKvj`nOpvP3e{gP>Ze|Cx#HK46ef z5w1!!lV}vaZe-Q%zS$o^r|;~)*`MtxgR~*B1r;PvE~W3VZ`qGgR4YcdM_9 z7ij2KptW7!UohlYPn#_{8rRAL8js&dYfaPj5B1Eix1|Z@)AHob-h8&6@9ZG4w)W<( zOWAVPD-lr;O*}*$^3(IMzW!W4C~}acgZ~I3KnyU7`1vO{%&>6Nv@h^wJ_qS5@Zp~_ z!LjGe2|Cu%`t#20kB`_!_OW=xC4iI*g+Nro#GUs%_%;73kYC zEv*{{9{?#6TS2v?JO8#sv5~GAY5NVkvd|vixkj2MJusT<4wZG3$ANPG)=rR;2Sj}L}5Ue$E} zy`Pi6`G(tuv9wA+={tVWyRv1d0>^JJKOlQ05XAF_4~t6dp1&|T98cd}PZ;uN;7MT} zoKqm|3d#Chnx8TOmmH_3&_X};09R}>I;FfmCR8aSMgu1^h=!pv;_*RpK4zvp%L0{9wdAdu?3 z2!&nU22IUoekhEBYft=QX>YijhS4!Xe(TqgZ+drVq6vbi{pb5w)cFcHQUK|*Zc2N z1~&9+ysS9bw|pJy?u%hF|Cq5LopKugqN_^oaVl**n0XFGi%GA8DHAxdCxMzNqLXCJ zuE*OhjMHmp4^JH*ESQ%9&NuIvO-VL|gTRaQRpwQXF zW2Mgy`TJr1_}TKZX{~tQJZJXKD;jeD=Yjl} zRGxHuX@3&bdG;6BmR-Nwutj;h0j8DD|6$}KvG0EjZ70_vl zj7+!fQ~Gut!4B-r=6$z08^(ByuQZMw0-+8NM&Ks&ObJn6ex8RLzn}YVhK4W`{VnAu zc2cZ2X?a(@)gnB6L?2qo)-|b-SRS7){ zDT;%`y|?q%1sBif{mLbeYk!}yS7oK`bcchD`vg2D`=68W#mVUw$Cd*rhe|dRh-f<; z##JHy@!7S#o8Hf(k#@LH&(Li0&6_AOy8jk9kz?2SCVI^%^q*ap`WsgW9TQlM9z*nd zsc2>{XWwr1t6WQl`5(-Va`wi6qzUJ)^tg%&@S*NIdI&=J*o23o-KOq;v<3}QxOTq} zbEMMh)uoLGOikD=jQ?U#b7pRzrrrWh>~fHzu}PED*&lr-u|iv_#z`W$K@OX^ zel}Rbr^qmfe$6C;F!>8}nsCJJDUEb)hVu6-UY2x)3OWtE&n!#%Al$=drHB zKDydahIAIKd-j-~uY~dtH9_h3uPF`bT~2CGo0)eYO=}ukHd-`EJzby43M%kM7(Tcn z5Ba(K6u9R$kS53lF9Dtx-sxryMe2;+aI}}sugG|JN&<({8YAWeQ=7O zY6~I8f9&OFpT8!*^WurCBVT9Q&!k4>*~dIL8Zu{Tx>G3A9iytgC4cs|BRvg_^e2nq6X8zpM@o3oRk6ta$3nf#t^;BkNM-Z>2gjPFvE@nS8S`U51 z-;N&KxhiDuCq#e_qRV-JF6q~NKNq#IN~r9^cILY@b}rWq;?zia%go0r**Sf5$3=mp zkk3;RsXga$pPc7Lk~e=iHnP{tSmwatH()Ir+f8xJvj*q*nw8He}(skp*D zrvD#9UXT8zi!476w&s@J?N4&3n5xPZ9r<%OLyJ>mi=nEj_x3sVLAeI)5bK$l;| zRX?;kn!fYhKi$O7X(Kr7|Gqwg%L`-MxaXWox6Ink>e|@fvOlyqd9yxs?mgb54gU8c z6BN`wPQe=1M#P|E?TnMm9A{#nZiq6eg-eYxUJV!>*i*iI{T*%ob@vDysgU8&ue)?WauP~5iyz*7 zo*=;u1AH6Q?mk8V|9|7-hHWDn6aji2hyvaMn8}{%hs3+Z%sGnK#8s3RRk9p-T+C&3 z2ZehcJ{^HEY%CK3$Jl<6FDQU#fn8IZN&O{1VQH)Yyl~Uq=X7j1Vl!V7Ww~E4AiHZ| zH16u1O$Q`+JFieoq4_omIM1DdKu2M_L#gmktiV1gPLC-Dsfzo?4_iuiJT{<#NB`KqVy=3zPkxSt*HyNTXV&L?U%0JY$#vh?pZ zDFbVzfk~089H9B3+#2jL^GX~{Eqdh8ze-=5uV^HXgRBEhK%Sm;j>_TlxHn#>R$1Ep zLe^)5i>*uLSZ_1E(lPuOk8dFp2~qmbViEM;y|s4pS3@?$i?dyNWP0}T=}a~$=4yT4 zHf!1?hsLYf%pZy@38O7)DC3+u;Cqs&aUFmj?_!4m0heRHQCKYm}3&t}b6qvvZkV8pvI;Ku=%+ zV&z>rZ~o7TAgy|KJU#KDrG&#|E$+CD%Xx0A{uh|>UM!UR?j~{iEhEt6v^)c^!TNL5 z#vA0mKH|vtk^Bv4&1y~;5qOp>aa_zDGrz9{@jHJD@dbf^|K^r|Bg>5E#B)7Z$1Y6xsk)IX3KjM0MQb!c+ zB@H!~ror*&0cIviL^{QX?jfkpNy0g45RH7}?_PjD2~KYYWZd%db%Md8FXSr*A8HC? z4F(O+x1%k(p1@!O5Kuk1MvMA3LE6pDnWWj8!*r5PQW2>YO;)k%qfv6lxQV9`RS#|Q^i?ch`Ibnr#5J`t zyS|GcEzrNpEqTG9!+-MTw>cdVd}#KMzqnL&y7cf~$;Z3%d_c>^4lh=1CH8Q~dz+jX zomqf2blvQ1#!FS4Gl1`wV#;&CHVAC23%`AVYzAc42k(h*QIys=K)B~5?nwoRq4BQG zBl@3zJ+f!2^vCj$U@_Z!@8S<~P)RCoPR&*m2;S%%l_f#f^e-^J%@ulyXhg0q`%GrzU|9#)va}D)Cj1C!n=^n|sIpkKO zO{c-A1F}&te?NBED*H6@QXi_V;9tF_5RIfy9&_+i(>+~!eP8f&5zty94z%=#VZQHz zH{o>p=`4P(fAhW8&kX82YkxVo&B=QmUn5hD^iFVLxLY+c`=iVt}W;fW>65 zXr4X`-oKNV$IENZ*2WA&?yQRu9WVSe|HuE-uc3|5n5ZM79Ix%(qI=fEtxWcm+gdw+ zFT-QA2n0hAIVaTb3hq_Gs-YDyS}&#lI9K_76u=d*ko@Vd$#gTVeYEozGaSbyyAPBn z;m}Wo*#bfvsVl(k3rbMqtp0lT{5#^^cZky(j@;twjg?l*jWDR)ctZxG*e zm|?Y9ED?6{x#(OcKZ53Y|K|g zjKjFkkrhcYkZ{!b4qVFfu^>Kg;#%B^$0VE;6sfpUP$J9-4s*~=l!XXrtA@ia)b*RT z75D%F_)h*Z883ya)oiPi#cK*Z3}GgSJ28Nf%96=z2;%(Vo&M?EgD;e6_9PUA#9uH_ zhIzY5<*w$3Zh4$<04E>$VH+?RS0k4?g6e=Dq}?akp}fGR{eJl=^Bk*+w6N!Tf3lrq z8eJ3%pIELb@k8u2bf(=ZXD4R8V<)Xp8)U2E;roZqlbxO34$2Y=J+X7APS2DAux;iu zK6ILwU)Yke7&4^1*Gf|n0&@rXEjO!Eo=%-~{-CT0LA>!urp@i#dOSWdS@?lIq7a4A zdUTtc>*3w-p|6gw1NY4jlKPB)Beg$r^V210@pFzPWliC-6((&jY6qKFk! zgM{k)aYWFM3{N5Ec4b2rpUt)Nk$Q?Q6NU3Eb^3OZ|I#<^9%*?#EKamozk9VpKsG{+v zV~iPS$oqy2WfbGa9YElgi=NtoIr$ILady<#i>Z-z(cguOq+ykniYUip($NvFOZ|84At}M}T zq~ANuYVgu52LESg4K^OtqtNNDYB@XkV~l=K(qnV;cI(YC)j-63bO)b0x?wwJW&EB%w{hepUgXaXa-tn`K-aA1};{HL3)-5_TZe|X(vWCOjz zIgMdPr;Vk*(S-5YTg)Z(yWP=oNLF7`;)Ik!UhPC4AQa-hS>rBz-wU%d@RgZ&OE_+= zrx_29OV3PA%qz{md!iOUnQg2epl4hC_YuY=c(?CAsnGyV!>5BFAQ-wh@ASJ1`114s z79yyv&nS#e9?x8RM#^cQTz{r`v1V4iaLppQ35iv_c@)@=HJNTU`uXJS?s)E^86n>T z+@x4opVa>3oHFof`CvDEQBXs2eK;r-niYS1Sfc!9hWq-Y=mzXN*xFqq{#u$DlNmDG zuX1sk^()|H9I3YbE5E;w0JLkrftB9wMb(kwWjXxZ?JsyRY9&FhTpd}1zj15E?HumH ze>~Als+*lIJJuCpT>IMhg95?pr}^VwE+LWYtAoEfw#6JvoPw&cV_m??$d!;}}`9|Qd#8h#l-Nq(xii3sYOLRX(GQKU@&c%Y3oT1 z4gZLvlHse-+w?cR^Zt9u~%;=m15!` z^Q>nvEPn@(a!UuLb4cb(@`t8m3!$rU=d~vuQ;=zc!V?^OEjw7L^VIeg0tc`!$f%;9 zd5|wU8HYI};Ni4>W2(CYrJ|s^GP}<6k=NHrZ@lM;xvVHw=dYa4at@@scO#bF)F@>7 z_aVzf>2;5rbT9oO@$`7oX1H_O1x14{z1m{I`EQX`uQxY%`|lo72{053%0FN6Gv*OW zVSg!3xU}0V)2uyzCXAl@<#G>CkIyl_1?!tTm-|CH%v{xo4mZ}BlOt^z zm8^~th05qjQhQo1i4d>)`xd6~6oqEwQlO z9-mU!?+_rYL33C~nYf44mB1(9jI%u69JeKAfeLV&;qZQrXc&6@DRGi!hf_xC?;$uo zDR4M#EVM+jy`X>u76d80X|R2&kE-$c)AO81+)Pc{lOggAxPJoE3Xng`$gis`?T9&z zJeoKJD)Q|6{qR+Hub_2q0_s66I#JF|tRLDbS}%ACUgx^2T#=Cn>OM@n-TqeX55KS; z`kgZ3X+T7c0qJU)(SWAaHO4HYFT}5aKQk`EO@g?(6e=rtmo~Tp^Egw$tr+Zp=+D=`@3A zMk~=|7ayH=J`e#B$3n|H-tu^93eF!9L{{w)+uV%d>-SPx5?5D@^chV((RSC?<+Q^| z5dsEe(S&gq;F9iqE0x%}w&U zkX+!_%;RNwNI=$mtRtTP0HfyIVqv%&B#WU+PCW3zvnUf0T$o4Rw8GIk(4z7y_rjfi z#%BLkLT0JH>i)Bdj;bD4avzE1^%qnHk=W1gk^QhXLxrpR#lib@*8&5G|4iL`WPkt!)02;@iRJUJ3(;9>`rH2YjEk)Yn%3&m z3!GtcXZ}~0qm)IxO$_7@?PQG3@l_ou^`XWFh(h z51Tkl?yraULwTGV;-Jn4x?ht43-oWmosI#qMuUuy*CV8e$Dce8+e$zBm#N!$)?bgb z*5%nNtYkL|G&+mVYne*_1yu&TZUDpSW!&GC({+DG&&SQCH7zds{Qb6@_dmJ6bE+jj{!V+Y|P@`%@3D?9M?-C&P}uE z(W}p2h9^jCOpkfPY59AcR=@qhHx=-aj~_|s65=S5qR=5-PL5BJh>R1mTcv26FNX_S zZe6lzluhjoU#XeTSiICg_?#5&loc9QlHh;b9Hf>g`_y8zFOMEk&MyHFu{0y6Wqd8e zw`oUauLLBvr_0Q9&vmI(-ugf`4>DIL?gpmF70iK92&#MNxbbQiN#nsVbMlp?(?3 z6|<+&ohk;7spElq26Xg>b@mN6Cl=c(;IU8O5cV|K-ZT+49Jd&0xUr_gNitsL7xtB=AfdlJoVS_syoFf`T zsND1vRl583l~mpzW;vr**HYyD)_x^*6fc3>uKOr)r{U1vY(hS^-f0K&<6Sx$@2i2( zE%Zj)qAPdjWq&Q}@A%?X=QmsuY%_~6-`A6~;HF>2#U6vv5Ab^3UNfKRZp`Xq)7ivH z4KO369$Dd%UWn&zBCypG?i(w{Jp(ZvwX}C#(UiXNGGX_9yW$POBe|2O+oveZ z?EG|(2~R%%#wO?2Mz#~BQ0U5A)gfL~2VA8ePh8bn#2p%lORlD{{IA-GH;1_VD$>AY z%d<^@3XUdj`D&}4HToH9>{>^wc5qii#i}e7Pq-6**h{@P;s)(5FQ`Vqyhg?IPSmvP zuYcTFheq`;~8`VV8f(|BR&UERTs>=>ycg7~PX0VYnQ4gC zRFhePeH=a-g4!pYKxmb7ZU$4l4=n|L$zOY0~% z%ha^K-X&aYtoF-R4O(YiphxVjx;b7LXG{0Y{*2?Pcx^9|E3^Ii6XK))5D-2fzr%B; z15c%If^oiL-7a4IJ9Q$AA-|Tu2^4Q8$|xJV9#(xc#{IY7ed>5`zm;e3G$`em6>Q7* zOHyCqId#w{c#f15iMUEZqVhT5a?2pp{-^1W-jo*sUr^h*v1%M_l+c5ZBLBwN3C50g zM>>XExA87s;O24c1y0f`wJ|{5WbD0&@9v<;T|2RNHO)bSKHm9F#dh~7>|>;2VMN(VXBNO zHbTj>b$utl`Y*b4o>w|obtq2nW_$=ShY+d${X{3F1V1Ipz8`P#43l55uIO`abzM|3 zj`a($-`jLYt3-bUp8R+O_W4YE5V;J`Z_j{a+pBl=blWfV!ExvV!bs8GzfJXXEeT%} zCMY`M<6n4bg_T>s(-T&NEDL(`wre#-If;CP4rLfgBPnST$?RZ3we8ECpSRm5QFYxS zUK|X;gYQ4y?Mb?i<_i|d(E^lDqWx#DoKVv*a8v!F?vV-|_h!&$)p~J`eRuhgr(ZTP#%|m=e;}@5YAzrHNT> z-WXDb_Zhr0kY1*n#Lk$RHUhcs$2%^4epcw;qcHm9sh>u^Kq+dsNH+x^43bp-RLs?r zt>Jx5-JM0#5g;p1baP$D+!YoOqer8>C&G!<#ZH(QC0;Z<<1cUvTOgTqPw6tAYzZHp$QA3KBR(4lJ_gvy(dVJT>)F3q>gNN@@0Rms% zzJQPZVrCRW7Bw}Wr+?#+x;g3neq7j>1LK6z>OO5k{tKb}FeZLAz+tOH4)4oO;zPZL z(ySeo$4(3rk>TIPzFfyE0H|nprt3U>l@f1 zir2zm@sgC45*%>!ql@s%u#Hxbh6#yP>Z|uGzb5e zn8q&fZy}K9ZNB~OcTZm=YxEuUyPSOt}PK=W-=nmNxNK0KP-C* zm8-#%=PD)}9E37zsYl}NUxJ4z$%#7NVlMO-`qgw?CH@=u&|)Z_x^qv1jF8+Vs&eba zL0RK?t!(Gebvnu=^p8LmOcVL~9UYeEPZV4`sMJCWe(SmbkP2UzVshv7`Gcf!%eVSfE>1hu~=lC-cmq{RE?mSz^=9Cat}a5(jicf4KStv zR9PkV6~aga7NdIKrn8S-(opl~Ix!API;`RkHjutp&>in8e}Hr(!OuJ1A~`>zKYWLo z<6mxQ^rd!dmTiNX2phq=BU2;3=z}W+v;&pDfi{8%oS*)l{F&=_@S88$3WzmQd{zF( z39QipPvi#!{5yc)!J-9vP?5vM0A=?_2ma$cSSwdY+LQS5T4#PmVt84P4jMAeAHpxf zL+(haGbI$r=7>SnMcS*@=d>zBQ2BL~Wy^F{`vy@+&V8dGgD^O_!AmpKLHe4uQ_!J@1Q+5E3i8u^6&4_<7j;2tG5*bzQ zJQztvYt=k%*dFo}UHjI~RFV6*etNYv;`Z~h{86Bo2RiVw{XnnrDZ`d| zI)L48_Ir8K;3AA=XGty)Jd9vT;I5LnL@1rZ0jTbW)R6o4@dmr<&mf|os)?4la`3u_ zSyn^3@D-$;j-rumi#+4aeW9Z4PC#B2@WPkiP4-cdzu7H?P)&b&{i8mkuN1nplcFA0 zJL|d6$l!CMi5Z@?flPTl+~@U>6Ex`1<`w*2wtYZ&dGi*Dz_5!ksjwFSw}b4u;@$As z;+i2+KLkPfkKhCrZnU_X9*$9jHOlU~#o_)z)-3_gG9Az#5#DT{+1v!m*~nm=hcLQ< zK_$C?AukxK{;9ujGqx!oZglxoVQrbd6CFpAP_1c7Op3d);+O}8c&{0L+X33gi4(#Mf1Psi`7zq7GEQXQe4p252PsIVCR<8Ctf2D zu;5t50e+(s#}D9t2(9LzTV@eQ>G>#q6u#cy_2?BmK?#oZ^Qf?o(BC>b^#TCiKbd3V zH1O*}3K2a_{8KD_^LvA@_U`V8U;Pu*uS>!HaBXoo`j_=jUXMMr3!gO3F66sZ&mby_ zjFfCka^gSJfkfovj)Lcx=j_*V8dSy7+ZaHzpl5XW$NdX2%85vCxuIHjD%q%UlKB_+Cb}y(=+W`=);jL&j7Khht z`>&`EgUoM~z{MHF4oKWNAYSi*+{ zs0c$CkwN1ngrL)|f`$?KF0c@z6q(w>&_bTO;h4Pf-YAgr@!#K?VIQZI0aj!HKnbif zRso*b>Ja4TypD}MDK`V(2K3jX*ZEET*OzGO;DxH?+nOf6@6b-a%kwh1s%aT-n4yK3~7!-S^W6XEs;~*_Y5Ji+H8gue0V>(|I>fbaX$OELs&qP zBm+ohR+e8ibK%vNw)btfH*|#Qexigv z1p1BpOLBn7RQupfd%6Jp$MI}$;7x>lZtodaFZ0Pm{n zV&ccRA{}2s<)NQEm>Ri4LdSC>HY&7TrtI(fXFvB$9wpzn<i=~F`@AjUu{5T!LI{`NAQNed5sds^ys6lCTmzHN>m^$;`N(pW zgbB&MCLdA;VY*Eg7WglqSypOKIqf^yZr;JYk|bn;uua%PVfHg!jd|7|idH%|^Fm(w zthFZOQFlOUVwUdkJqn}y2SfrJE%)|nosyg8Y%T?{fT~qpSN1hg(3q40T{w)wzeu3; z9sI_=J?Ij}<*zC%0F3!#>$(2jwqCj>`g|GCFAm9HDGMND)YIc)Xa#Rck%e8MrJo%s z1e+M5_&`t;Y~t{?z6I`lU*Zm^Wa9b}9T5@&qul3?^_88^H5MQD$>jMG6Yrk^didJ| z2(3yC{!O8PB=KgwRtR;kA8gRXT>i;W6{lL2qJe2aZhq9OtQ`3q#B!Ys!cfz?YdR&a zZ#he0xXTCy8|#SqT^Od#NZp4E4E`KnO?v;XfDoW?K?tuV46oCU+AblM)sbR-mhFV z>=|1_tvb=+Cqb=My)6!KK*8?|hCSZP+Q$h*Nbq$*P;E7j2dH|>6~0xDZ=mXbkCi5V z{3(f8K1>f3DWDrITmuJW2}o5A*Ln-%*L7Dhbn^S+nH{`tVO#-m^YS%U$ZN$8!uh5* zY=CTya^?=0$pO}z>FOKV3ZANPb_}0Qc`6X5g+0S=MZthzI%Mv>Po@36?=1q+00d&n z90`+KS@{LErQ!hY_zr2z^R!mK_XjbJJb1#z3fu~>LV`6Gs3bUO^=VkLq+Od?ZqR_> zflda`Zp>~8zb58m<8?H)Hf258XiuYhc`=#40N}B3kaXBSU-~a=*JcH1x20+jn9E}4 zfx_(+b86-B0(}YWdfo<#5ZU?DSj+TLlUIGZa+_^ip9lTQ!5*T#ypP7(D>r-O<{hhY7e|#H&*FcB>%meIu z$qw3f5bnh$KR}89dj9{Gfd1 zP~1b}Av)<@%2$@0eEULHs6!63D_R1Mf4YeP!vW$C3>fdLkVCVH2B{-$2h_#{K>-DD zs6-ac9yT$h??ie%Te#d(Tl>cZs&VN6S5qqCI6!HM$;rcYOZB&3$pAV`>?jO7F=t8)AaB`Bkak1@sQrX94mj&ZL8De5ggN|zrQvo@AQta z3NZU;SzI@kfEip8c7G7>zNOr_8XwIrV{z!BsU?v~y@U`jKN`LBVBUMGpU2PlC%Hy% zU_$zmsG(U9T!tl{x&ccJ%tg^`Ht~56?wFWv-$`o7H^QCw74EoD;&|>PP~1C^Swda+ zP2N?uco=h>aewC*?kBIx;ZN>u?%^o`br(yC4&hMCZ-UbQjT&_GFB`Eg$mWd=&HT{c z%gPD)0IODF?0#!G&KIPx*7QixB?mHCibp6#Eb_GsSfp$1O2dyZEqTOX>{D)A`-7_9Z-pdBtvQRoTJiHw zQZR385yd=In}O3S(&x`W^1y#w{G^d#fBH+s>4St|4y9?7gONDhJZ1A7`Oijb0y)e6XZb3O&Hl5pAc6wg@`qXBaqiohKuP9^!`z!3l`C0hq?Iv_F~SdH5t? z9H6HeXR#o-U1Gkg*Zfn%ql1a#d;Q+#W=gTp2b&K*lt>g;brdTRM{t~Gj5QVtUI%|^`K zii`C=&M(%m-~73AXYam-K&MV1Rr>eX3<$B`7UW;?AbtLI0$~OvwhHF=B{*3&!34Az z?*IF3X!qmr(fzK1>2T%`FK3<~&$)pTts6Ihjnkl!3UYYYPaZm*LH) z4^9MiOkSmQpIsulf`Bxj;~G&)_e&BmCRAk& zF>*+<9-t9d>%zrqLl89+{XIjIJMx6tAXWogvtNK(X;-FzZw?PTUSCC!V|z}AWN3@{ z7U{!7di}EtJb<9~uTwGT-zNV%XCshaT`soV4Y_f0%D3=G_nhyb>0(`dAk(4;;RMCQ z)`0aLnD+$TRU3VS=4&qgc*!?+_YTGt3}Mz^#(55Ksv(5P&(EcGBahE=0QAPNUAYN` z@5=5C=Ee3$nV%oT)&M86hZmRG|3n~Gt}r$t7qs2?GyOojSx zdJj;AaUllhMe#}TJY*U!9(M6|4$fQcp+|5hlIKIsBuXhghGabIfpL}eQE2yf4EXXcP_Qb-hqrJ1UY~o?iFfxr|G}j%u%;bP;L4m~@DmIXNDmVNL?GcZRy5 z;6^OyNNXqGhM=tUDRjSQ8JK_@N}4P$O+IVf!;TsjsWjcpB57y>Kt@LQU67TPs>u2` z3k-QM#PWz{xixH<3JC&o6VwwXt}Dm_t(QbJ;1hVjt0{<9a0la7dkmed&IdOpAiIka zKpWJbaD96D=N#`q^i{1ds46DlzFsQ|8f@xW&pExLQAx}+{=W7N-%<$D56#~$LojKy zw9g1jtZhvVFI=QHgc(^7$s!#x03u?9D^mVNd#3gKw5wUwD&JrPy)@lryMJulz1jzR z-F*;BJkSprkw^F%7U`At0hPAR^GDffJ0VGRUZA}w-baV zSP$PnPom%js(GY&jDE0#wlFebXV7r@{63vo?n!@ay=&laQC+Aa|{y z0eU3jsQ``Bf=55nge2Ha_HI-jCMaI51xR53GE;Y?N~=7PSxMo?kN266n(c26>omV> zp`fXg0p9@+Z_KP1kHl@l$`VZ*BGm`UoK@T!LON z`q~q^Bezk!qhQayIy!rO!DDCk7&|$Tw5YT0WlGcl-cbX{>MpQ&Fu#H*a;tiOXTL)GJXxG) z_d*}uuYTDTy#tlSG@i0nB~W(G`VatCk}pSqEA(+; z8(N#C#zAFmMC#y^W$HWEUW4xwMbNlX7_ zf7RTcN@B2M&W8IS-(*^;%#e$XeZBeuqcOuj73~<%6m^2{+6?=KEXt200buguk(=Mw zrHjo$PzGJ4Cklspy*N9^+vIB;o)e&4mW(wCQK(`6-Q)%_p$Uy>ekc`>l$UG)Ob1a2 zP@|WxO(S|iy};8D6ZC zZv^m^7Vm7vfvg$c_KCu~zmgiqV(ZyTG&U!i0i#rm&(2PY1tu<5uOG^00cLYL^XCdt z=ndVRP2I8Z4K;Cd1uei#FB6C&Q!HBpt{eUIecL{O=1+9j-?;TPi$CB&bA(e2oX z852+1+{j$`3aL-nn7-F5(5g;pMj1XKx^4?*$|xt^My6r3x9Kh?Rs#)0!9}kh1)@Z zdvO(2FX1z_(3J;}R*99@%{CL%&zhps0ifusU_by*aIJ5r_nD6RBeZ$*7mg5vXBp-w zZqH$O1;QP*(*17{r{ z9++Qzw@Vq})vDT%5TpVc)8PQU85>0nUX}*A`&R2J2Vd6hYUkDnF3gm9%-^soecmJ0 z+prhgITaNdFarJE3UWqW;SM94RPufJLgvI=ptuPsjr$+K28~Up?w|BlrU+RhnD@+YFgRoq$eh_{g8Q_=Dyh3{CEqR#CElxrRN>P_h`W z^vMr#RG#^Zf5t^|)2JH0jez@j0i_E$cz@ofCi<%(BN#b%az5`rby=|tkcS)pBg8fG zB3vQ;udPfj+CI0qYBI%t<)2=HI=hsGT&@T$kw$

K9N$N~RbNkjP;K>m!~MoSO04 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

1}8Kuum=Wx0J-wfT9jUc^qouBI2u(bQ?E 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 au)XK-JXsHtbp2Gm59X#( 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

6{4P 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]!XiB#mF#(S5~sO)oOPL$~C@&fts$+WPZg3h=Dp$ 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

y) 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%0Aq>2A@mGmbB4VH<&Iy`Zt?mT0tIdDDigK!9E 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

%rvCyFOd5OSX3kI^w0Ykp!|hwC{lWG-%h@ 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 delta 2243198 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%0D(Qq^LeWLO2E&Lu(kVazn_$N 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�?cRyV( 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ϛV`-m|&%yIc5xBS2>XP{li6LPu{} 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ð#3MbS9JG0b-z6^lYQ83qxg%;a{i0kR zP|H85S}Ao>P<{m>uDH##dO|}?XtNxXy8r8z65j}65wzug=DVKSV(O)>PQSdu=`rlJ z0v8pX-rl#Qe^{#>93l`Va?~n-+NDFs9uQ0NPOmrhdf;h)r$Nx~)+_LKwO(){%d)t( zd=8-lJFd2a4(z*(T&YviSSvcpdNsAHTDR8XRBn-YeZA*MLY5|czFzCp8%RESvu9Y= zKpg#)SmoGzh&mA(qyP(cRjwL_@?trtPuc~1KDAsFT@(9x5sW8Fd?==M03Us>pW zH&lbAch@U5o^|>~GGb$zx-O(;(dlj6xX&6dP#V2)r@obc0@GHC==!yKSFQ%dfB z@R$)fLPB2Gd*e~RTd=WBliC?arurEoT1SpUCyfFE+)%cXd+paMJ;Z8N)G{pAy;DPu zRch*DjWZ-frmsQ898rO=7^hgP%zR1o`0d}Z(o^&bgSX)-23L*|yW{H@?b4+Xyvbve zsnt?^VZ1Dy;f2L5vZA313Te058waaS=l6T1%08^Txs`9AOgqP-|0fMhp~`v(R*ZD~ zWE1nM+bfN_#dcovN~pL$hMlZ#?{@n2TEWY1nkw2`7%!a$7L`cB`oP@z#Wn_|=!gjda@Aikz2t_B1>pd?wY;ZR;K=`6cs9>{S z4%!e_7cSt1l{(_CohF{jW>DvjOG1P}cvneP%$Jp*#2BqZ<&z#VW3%H8i-Zn2 zxN6(a2L0M~gE<`i!uz)dXs`u0^f8y9>>Fos z)a}#9&6+wT?QUtZk56Hc%MG#7g$18?f=RARwYi!xK>2L0m&6NFS5^|1%N1&mn?0lc z9KKuwDwS1RM*-sNw@U{(1_L{=MyFa$*n!>lq=J2qu;?$}VLcsOH^m~J#JI~8SU;Pq zHLoJQ25aL&!OOT&`NVW>xk4>x#4`R}uF^ShHm0==jCeThGVYMI&0wK|d+Vi+)pA0+ zTgTNZOrSA;W~yK=~ey}Sd-0~jv$$}%J4_LSPxFYR=6!x~C=sJ``1Gstoyala zJJ=Ekr`lvE^A7BP0t@m56`weqjmU_ci0vNpfb;INhXI?Cp4K`l<(!9x_YrK?zZ4oP;rU{q#7-gf z|J*6486~!wh*&&SAG68Wc=(A=AFKMcwjjP-u-3u+2C47@g6nlfc@>&LVCtj4VsWMfo7$8vAekEgG{fV6O{4~W1cj@E5<_C z$`bEB94-dZZzGd?)t0f-Xb7bLzUY&^jkStkB&st0ij{${puuHd`)m*zY{}@t*SnJr z;l#-l9Ik7B(LU3$z{wZOB+A|R%jDmKpfvkJci~Iz7>J^(gQgR2yLo!X(`j^f0qAX6 zTBuS2L?nEPfz#v<_E^6Bo%nAWQaae^l@1y=PfxWDT86)tFRljNLm3e*>nQK8 zG2YJpd^*sEmF^kzoyNC*7R7JkbEWA_AKeF~g;MS5(sp~(!zt0tE8s?yo-|)EJ7oMa zxL^c>;A>>wL*-T1&DJBX%;=TI2z=GeW{-KS^@@y14KWhZq~-l4Srj6xvwu8W_^^E{ z=siL1JwC{}pX+DqoR*!4LAONh8y{Z`JN2jOiDmZZRv&y|ZfxkbsmIkketNaBe*GkQ zJ@06hW%#ZDaF@3Ly2yX;;%UVyjZsgRe+G-4_ z%Mv3Vq;2TgGY(4=vVj~#SqOHzEqSa2sm1nUd%aZmP8**&e92}uuS&D8{tq90#jH1E z?mz{aJB2RE_AZ~g4aQG2yk39(?LlL@Js2Mi_K?h0^5FxIp!zy%{X|r zHa^(ddJMtW&Sx+FjfD?CtJn)Y)y>&o{^7!xW)Hvj=$C)$>1^lUdi3RAdi{J_1(V&G zbSKRN0^Ky|vm;Y~^M85p^YB84QVDQ$a5P$PEK`=}FNcFZJm0(F z47NsyDB2#cURFptQgnQP_?mn>48pGozqKZtOQoaPkN*6^S7*QT-H+Y_&#w!4wldb~ zSNc}D1}a;?Z=W@I((d90oOw9i4ld6v_c85d>-q-aNT^>oy2QzkcbE1AANG3tNIpCJ z+#2ur!RH@*KK$QjXW#g14?di&HWz+jc0POf-p}@xly^^qi`|v+>@WX`g|B?wj(U|W z#iiC0DE$3;H^YN#D?cgj~i3D{! zV=_AW-}d>l?(Bd1yN?#kx(@PXgwDv%4Un{t5W`IaT|VqG@))FvW42Qyr~fYIp4dII;85`Xm~s-8BVYIEt;<_BW87?GEH+Wi5G>f4>?I z_7s{n?4~GT<>KJkdYevEft_PNI47YV_)|srJpKO0>h{&MpYM(jo*g|E3x=IkE3@yM zJzALk_J8o;{TF8_Z+>xeaj+j;?1#G_z4ylscf%7y`t2Q!Mj|bV1KO!(Og+`p)GG~cww7X_?~X=; z*%$sI**aYT`LXS(`+7;tk6=+II#Q#CP@P7EXY;{VXAl1HgZE}X|5qQr|0K3fw=d3AU*K-O zH(KA|K?qzjO1meQuV@nfYU6nJx1K%t^6bU4h4;QJ>BrC-K`Fa4eQc%G&;Q(`FU~$c zS@^>2&wh8|=S}r|c!aT%XJCw%UjrYe^QuF_tT#o_W0+J+d#Ax9)@&uu+!EdH%&X4L zvwV%z7*P#|22pf=0|73V#-PSviZyewvD#dg*4lZxpHttpsd-x?lOtIN7g?VHa zjE-D8#WqB$JzE()!Jznd>I8c)jds;7uZ73c52m0Vrozlb7G7a71H)397(YL~-rSv5 zZx~L1qAwjV%j*&l0}Gqnu*h&|0sX)+B9_I>y8!TnLqZ9Ybwd1iU+veHUvD65=z%E{ z$+8cH4h}JwQx9Sk8yxYnTSb{*aSRS+Jco=v27=l?*v4|f#9+=B!vvA{?%5|IMzn73 z^g7r*Rc>13dxy+?Gn0)q1pP_-66pBN&a@)ouXeXvX^;jNlV(u?i`X2@SCvYzSNnBN zMa}P_nAkGQEu@v_TXg4@E4$(REV41U90gLnIpn zi+M$zGz-*;cI(aaeUga*&#?pMs+UMr%q~zg(`fe_N6Y-4RzfQWr~4~==bKl?0XWu& zhaA(sA5|*u@$Nu{jDV1+{=oqi%%JETcp3^n7k^H6jjHi%_zIv&pxt4tNX;EhBJn9+x^#(6q-mmSetzr5-!Jqr)4n z|3L$W8 z>Z7e+6HnVvciYPIz7i5UJ%xY$OWN(y_^!_gTv#1f(&a4?K?}1~;@tVU-|<1VRo~FYLRvLtMk@2K}wJP5KL`*EKr#exe_+{<|LIaO+&y zjK42Gp`Z$GX~?`T`;hE2s0z4tzt;&$a&^&JLaE$! zpCw$X(mw4=*tu5vaD;BQU)BE(-@VKxAkcV=;+(s;vcSZJL4ho=#_F;fygGIqpaAL> zL31qivWVsq(zXT{@am_-_3Jej_{u=p zR|uWS?us*y)~{D2s3ca8lof5P*?WvVFh&ddpc<7wG*PQ+|0Ege%=e%rZ@z)fg#G9` z!n1Oap5w}`LuO9dp2zxR^avYw@V8SBBU9Jj^9Lh;= z^D}J%Vx$WIBSBscuGhqTLcOB1;nk&UeD#Xu;dQ%HN{Q6k5$fkbB9L@k?>-?jXO^Lk zb);tO_;0bENk9SZzLuZ}_kTD=skAzAqB{+4_G=@6t-;kkwNl*U#k2K|bEk#;<$R>Lp<>;<*r7_yUAa>UVxJlG+Fv5iUlKu~rVdYl{;iQHR|VxMBTTwcNIx zK)t%!C4T=B6)Z6wuB*Jablq#0TaEDVL8tm0EM^~~0u-BE)Y?!^rUWaZ@zAI|Gc-g@ zXo)!CW8?QyHh8hym&mzAuWp=PKOyQEA4>aVzb2M*$C_z1A=CirC>BwLEN@kgShXL- zD^0n?IeB7(PHnOlR=FA6Ei9A@w)$v-FQ|<(_G>Z~ixqPf?3m&#h?HjCQiG8DJO5Jd z6_f0kiHapuG=2a|2B{c!nV8yPcF+{h6#wALSTOTaL+mxH-9po=e?Z|i)=y^wu{DDA zYnjtZ&2+FSYIL~nkkmDYn4ZRVe8=yjjT#&5klmpk<=COl#*_9yj+$d4CeMyndn@|8 zi`~IB$8Jx8S_3BuH^fcD3~Qe?maa}2z3K8h7U3Lq5F4#xMR6+2B}GRIFxlYe(N$CM zS*Jv6IdX~FH!#K9rvwQFgLTS>Uo&$CW0N7|n(!NSakE~D{%_#x3xZKvG z1_(utYbdCMn6=L+pzVq~G zgNUexWse&uGO_|WJ8IQ|_|NgVX8D%S87kDnBO(qp*8`=tfERBZmF8RMEzi{wdB1>G z^x#*|k3>U@iWtFB)zU5%9P(04eodlYi*15okmV~^hcMYI=TguT6cmPp6b@wb%(H*_ zy9=NFo{dbxBSkDyCIo%bAbRO8!iT0UvA9Hxq^KiXEVNeO#o3?w{DUvf{_WQf-utB^ zObbcFNc?Mx{t}nt=stuw#&)=MEjFRz_L9%dwWToelKk8+IJU1lwr@XvHv32a+@p_` zuTSjpBp*qdQUyeuzrid^)Iee@C}DhSJOxbBT7^*5#zC)E-$X$Rr>eh&e}tkBB!-5` zfDk`RCt^$yXijG~Y|thT;jj zGq1XshIh`1ZOh$gKpnmKGZ;l&jIhz{pZ_kI!vFp6F8u5VJ(LFR*=O*!&3=FQ(Pxckt>oH;%C00=Q-Y*FDUh{tuuopBprwvT{!Bv_OiK4M)Ub+v zCZG7s%iKsszIQRKUz7&3oj<$q!R!b1g-`zxGkA7XlhO*=C}~MLvt~TCtaxb1g+D-8hNj06)($oxMhu&hZdgY{*n4$Two2OPqkct5; z<(ST{iIIU-5TX!t@Pj5u5D}px90p26qlps#!rH=z3jTPPn?0U;vjp#*tz_=nY}cY` zVwyUH3NK9@466kFJDQ!|-phdL&{pr=}?8SozUnZe_ zx3(yDVy>OV0#R%r`w})~Qn`9l3z}$ozz**g&7X1?Th1EPDpuV%D(J4MTJ|897QSrq%p}n`F=b4em7w;Q(_Q?s`v#Y^{_lvG>v&d;OGW_8H7;(K+~Z33~(Y` zDkEa9xe6JS)gmt^VbHOd0OErE@ZW#*B@=_Oc=gD1c7cO!tTfe-aK1)j&*GlNd`1Ch z_$v_$PlO^EU5pprxC0DrXT4L}TW@~r`LuF_0f8PQc;BU!9}P)~{w^aWORtH{6IyPD zxi8X82oO=Q)T03@?t-!;=z1wk<^p#6V%W)Wfguq+ettX*D(gf50UiQA+!`K|jwn4p zIV|n=DiWu;co9h7z>cK3$`Y9Ej@Fx#<`}G+*X9J_q(_|F^^JZx3qKLeOLastRlIDh z09w{KB3&)be)~586R&C^?WyEZd9g;BUE9XfRO#q-ixX;;8>_wPUaEwxCb0C=WbE~E z7(d-R%6wi5`A#K)Y-|QO3S$yC$Ic_RI@m}rKr1{6*hSVujaECHyp2qzU!nz_1PnuS zrZ4kk2nKo*kQkdeXdX)$!e}!zFfrnV|6P-;pu|hXGruwjc?j z&9qI*K3vKWMmbSpTyPhX&K{{2bJCfas4-w4f@+dI1R;oGEB?;Xrr{pwF%D5$-v*o{ zJvCyf?9AP5=v`CcwVGY{SQbua#Zvm}ZlpM`QMTT?wBLH(7fl;18sUo(oQ`iWW$=Ya-o_)!$%vnPNh8m( zFWK)%OPoQK45UVm(;TsA%UecNkkHFiHc5U)TC-^MIeZ7jxKN?IL~5T-r5283kzmF$ zoIqm^3v0^ky0@(rfsK;J-RlyQ!iKg%6ukZ1&r=WQKJWUzfG{x#vz-+hzl1?yIdX)Z z;3B{s=RQc{=E)ZefP;KWngwf|f|R$6`qWqvViP|c*&jv+_b!Y_d#RX47*QJ;eZl6x zNm&teVnO1HNUDSD0zR4dG9^I!vcm7G%}Xv;zaJLk(7}P1_oOz?t~OYg6qej=wX3=@ zy$IxlKq7KZ=vpdD!Ou2Hb@c%P2}W;B3wcZgaCovXy;i2}3APHcNytaM)tnt^7YBEI z%F~CWvv^qTa>9MnLWxvHNKBrVw2tny%Zmh2yi3Re@s4GK_~-A^?$zex`L4-+S-LqS zzKj5o9dHf$(iT}o2kgmPunMm=QkY(Xp33ijHuOyL3naLGq?_Z1V zMs`vPy?P|9Ve@Xca)VP&@=%wB>Q<|a3?NJ>FbFwn&8N%a<2u0Jf3vr(T^^87R|0L6 z6r}G7jLZ4j=fZ3oEP=DpNnd-^=AD2NArL6BY{+v+B40G`v?^Sp7Eweqmj6jx?BO2> z(TFKTZPW=ir1oDLN%SPx%hJY@Ew~#AUV^%a2KEMWUuVf|0M-UykrCZQkG1A5_8poL zgkNeeO^)$|vIKQwg_9)c6{@>RVl4P6?>Hx$%gu5 zmB|!k*86z=VN{hbad&xKL5Z@I8jgTJ(hC7u-~-ZJ8P-`IOX3r&&?1r>a5|`7>&fk< zi}7nbTosCaI8Dl3lj0mcw?*0P^fjr^ITx;L6jZ!5&_bQlnSzhLJq)7wj zSw;1NqDAvRCq>xqbGI+rrb6jOEb;?vtqo$|q5)Zi+G}0<3CE9{V@zo?D}X5EwO1;i zcVMpk&DE}r3LE|4t*h2D;zoJ6*`6X3ShVf1UIh>`!Leu`G+o|2YfIFY@w|mzA^>q0 zj#?9C1hy(m!DHhP>_5x1mcDRN|octB{^_%&PpmoHl* zBj?NTG!U28?e+kcjZ%1_bRXMNsE$z!h6a{!40V>QCWb&f`>Nbc=x_7*c(5# zQ8ZuXijQT{s-n$mA6N?@4%BL$Ab|jKth&tolA2J5#EyVH$mjD_@RWiiG4ixH4TNeIx_smeSZFE3Cv-4n+Zj_`rqqTNc5r3RgWM#tO9 z=Nq(Aju9~>E~(VqL8NXAEDiZ!@iAyddWhpo0^;Gciob6OTIUHV8kwk^7`I6^ZW68J zj)|68P)7K&&ZMd)bi!&$5fO`3>sdh{;yZS$uG2QnkTr@Tu$jjhmTj#*HM&b*BSCA! zBPJe_^~@!J##K+Nr#xN~ZCMgFzw%YctkT2*? zLI@JrnvELRsHO8sR-bQ_9rdq*l?PFBO6pMW)Jav<^QYSpTFCSr}_PASHyPEF-ZD8N2G#o_vMQspDzT{ewYng?L z{BIs(e5%JXLgNXhmg7`}A-OIr;bI3xUZ~NN{1@yNb5Q6dHcsmaSXQM7n z_F|e!IAnFh+kP72zeOqWIbE3joCAaB5V@JM63cSwg;;MjBQ*HDie9^LwQ?Phe>v+d zlblpVQ&Mw_&$X#8cpNi8O=gE!D{9?J80A1iC8|Jfv5w>=YTfEf;?|Lyw3cHL%XdWQ z7`rmTL1KUkoDqq}^gW3I;bBkqd-Pkw$xZl1b4&9x4Xn98Pg zdq%1NsOn#9h>I)`cf#O+c?prj5wIV@X*yMN3IM69M`$*jQ@I+d&ZP6JKosehK@f{t zD}C0t;)^H@X#04!`6m?6_VH}uf6m}62xx0u$O3+)TGSe)f2==+%3MUwP@LiH zGaOb`cT2J~5?$*|R}_h?ed(&|uI+YLISSZS)pM)5ZY?uid*Zy5v%-!63W#~_SX3w| zfs#0}DI2i^#EWdi9|8l8h!}`%*)gR6$rr~alY9vf!1?{pd7kHe-g|FVR}aa27))2y zz3=io=Q+#&obx}5PAA$r{K;sl@HbSvAWRpuz-mQy$aHoTx_OtWl*}DHhm@k8whA&X z2b(SaUxK0!wk~%@>p^I8VN%{N+or5u%`1!8wxJUW!@-p8t%)sW6}lM|=Udm;2cymQ z2C18^srpWF)qZ(V4N%+EFta_vTTVV<{Nr$WK_9o#*xdCCYBJXf53ohyqCd#&*8ToV zRqnw6t*VQ7b~09VyF(C3HLQ5;=Wil77u*iPhrn! zKoX-u+~ShA%HAfnvhgsNO7}u8-R3zz9R;}-#{mrOen?8!tA ziD^frDvbg%9FE{(@0=(xe9HQPJ&4M1s#^h-h)CK-^kxTmMH$BtNA{fo$@#XqNv{SLoXfGP~Nx!7v0{~Nz)+@bEqSad8ajCO--u&wS*7X`=#j33YuCA?W!@HT5P-a^iw9P><+>zGHc^srj zFyb!1I-ch7!0-2~L1-Ru>}X3QB5~1j9uOmk3j}3_vy|i)*;bVd1xIr8g(tS~xWU7r z%<9$yZX&_})d9zv7PHcUnnkfHOch2vCN$TTos*Q5#A6g&=mz1#`Du`66rbJ}(Vdx7 zcw~r8APExlm>9^WXT-JV7p_6S0%F6@IYAJtM&7|D&AjnoM5_{v=r0+rBqKERJ2g-Einoh6V5mbh3u5Oy)(n{Z65xao3FxX*Wr7CW+iQzliyHELP6>3M(-q@ zCX+**31%X{Q~q7sN*=oTt;bz2_m3PrRNKdnJmWSRyU0$Io*agv!{*ojY}Z>KYc&7C zf7JDM^IlK)r~VMxf8*RT7N3!ZY6NjQMZPjHM+Z5yUmf{%Xj$`mvBagfg*VgKGMb*x zp-Gk4TsTnaaA4YM{@35V@#65RY5!2}ea*-2+jvN`*2fOI-e~rIf`Mu!WmgEgCQmnM zg%Cki)lwiD><*_suEp%q7+L?SO=TeX2)0rrRzTLGfPlR$G|P2l)B1!0ulJkZ|7O>l zlj1fi9|GbetsgA+FyZ-OipslYtthn(5h#TdJxW_34^fozd^~%O-OtFQ>>kZu z{GG11-%)RxJQLBzi1Q+L{Tek$$^4*|Y>xa+*Xz3NC%g5AO!6_}3*qR_h8F9C1NmF? zcb@D1m;Ix4O4WXijb`7Mdb(emrpjE`AE${z z?4T4aU^kAN-~AS=xUkK$sFSF>^)8WFD@5*xfBN37?&i1uP|wGo%gP=^0Qkj0Jzpw? zSg=B9o|n=(w8Q;D*AyEO zj;*TG>&@nW@&t|Xt(~qDH!m17dZ>nR%<9pm3H!||g&`!B zI&vXklfC3}rf>hK_ScIDUB+{>S7k^<&acIbhe~i-yyiduX4l)#$=+H_zcAkXrQhlL z!rP?+$l5X@)}aQZ*N5~_3yZzBQDj1fkF%rEE~>V9Pd*GZZ~s%zCvReCb>KP*cK+#c z-AGlE0;6P7E;^s|ZFd@6N&qGB_2F0A*fE=Gl$>8EH-n1b2;v3!!d~jdv=DmjQXi-T z>_+2}U9Xc)vU`6>=i~dg-WqUSTlWKw`l^6&_ISRxI#RH7Jz2j$*zEb&yC6C>e!W52 zl<w3px|Ai8Y5INh zU;UqNJ@-}%Kkhk~k8W@COaJ87n?+XG9KV|4IQj4@6yJCHY4bK|;1|NBd2r&`T3KD} zgHSZ5W2PTi(<~SJL=e15<$VSC^zR+>cm3B_fYnl1pbE$O;T*(X!g1D@@!cW%nA;1M zb4-6*Iw83@7-C3c60ir_(Ls)-U8Hq*AnV72QOE zKiLB5$fJr)8CeZUA72%rwE9>xh)#Seb=b)CmfNjwZP;LVzz7U#wed|v=)63-wz7Ka9l7#XRP9RC{Ge~^kYux|_O{yM zY*KDyv7i=t>S2v*OHJ=>UCgnSYsG`vePb4*?~tdRooU!bfmD|ef8hk=`ldzPusi#p zZ}=2)2$6z_0LFYD)t4YId;H9aUGVxp|Ev_*34sO``Q(z71nuAM-I^Y;7697VAqtti zVE>nnwx-r#mYdz58`vV(-+Qt(umH7D@5%h~u>OBU-2lagecN*vGbgbAFN8PG9@0{M zvt!0sVoB@=4_DVAiph97#z*$`f*OmQy=YNhMA%+f8k`sI;&*yp>Q&$_dH&cBWjO3CXaA2Q1AIh^>1@g=kx$w8U zDt4jIb~iRVY>f?_ZNcx!R7;n)0)e}Or!0cMtuir9OBd7;R5Gmll0uw3)Q{?egPW`k z`^ySRk7%~|tmf;;Il|loexAvN+W2An7Gx`ocP^J~x487lKH`I+HVth2UIr;p9v8T3J@x z3bC?>9CbCryerJHz&|&ETAf^&qdeXGih<0^FyOC;Lh^q7`d?rxC45*<=I(gZ%tBba6bQFn-;8i ze2`$MdV4kD)Tz9KqF{6~j55bt6M6amsivI8TUbn=#AM*cs337+_zB}$~3Y+dm$a)5DWZ)bK_&Bd=CMY zpdGQBJ4A+j^sk8;g5SxvwZHWp>48n*kYlhd)kDvyEE8zWXe6kp+q%E%+Vp;7?+y=L zFe72VlVLIUP;WD~g?}KfRcpCnPYo-wf+nTta^r)4wzhHq)K0VHlh@Q2M`9v;A=9d0b&KAW@u_hG-a4hL9k%t5|y^;$GsZr^6_BBjKpB?!lGh@Xjl7E02 z#f7>!-Os+P0C;unz760J$)hQx;851@osaCB9PDh?<$~WEyPbbGb3SXpIcq`o zmLlcBjr(WEn-_;?_m*e&6|q;Ayk_b-yWpy#e$ukck~tqa)XjtKuvJ4HQ`B;1vr>S$ zs2MXquhfL@Ps;bRYeE1l7ulbZ_;(*H%nXFOVeW)f3HJTe_ybTH*`BLDAQ~E&%c@&L z*DlLVs}3i@x}c#@HxlRpu`+4kjDA02O^R^tZQonRp?J`D8v{cfh}a&$pxdmL)bwJ* zIQy9bK^M*No*t}xsM>}+=S`=pknzeQV<_+#CKQIYh-isPFa_M3%djNmLN#Ddyv2hY z22x;_uhs}gsC?sT(c#rjsCeu6eV6u;eX)bd!L^ApZpdbFRNV^7{+k)aijnI#fn#q} z3m`yL+o8QG_b*zqu`T-yCHF1za%8_3BG31d5Vu^@eSpQrWBh-ZlKRh>IN{9mP}S4Z zrH*wmE@Ag6HsmuP@@Hb5!)z{Lcm~CVmh8G&PsTxOE=-gOSyKz?-4y3XQIxCNdmeDJ zc*k-Co%ax9{@EvcYXkvZ~(GtrJDgzfKaOpV)So(0a?7;_4^Zj^N_v(sKMh;XT`?e zZ52K80LmO-187qIz?Mw^A8Ami8rzw|Eq@nAU3pjJL48czoB_0ObxnnI24vKz zF~i@prj|SPU8ApK+m6EvSXNX`inI5oXWngf5~3|%!(2vG^d4>e4j|kjRtblJ$cxjHc3l23zm$<_}UvJYYIo!9S44#6y;U+Zi?c zaBq3m{y*~=@2MRD@q3lB^3Hf6WP^*@L!>`I?ekzUEZOM^TL9!4UGN%yK*E47F82e% z_ZN4Sq5eRV<|@cqz>EsPCed%tefiA(XE$FBI$tUnt(os-P}}X1QRA4^O#oHy1I&!= z7G>2+D7TcL=s$~sN`GGY#M|)^AFmuS48m1m&MGcIT^dNmpC6ShDEYczG3Kw8=i5qU8?S& z&arqq$)xM_6p1zEsO7`8EkW)v`w#4nxiqJMAZxd}#=DrUF+^NRiM5e3B)P;gW_ zoPg3?UUt-i)5&T$t)z~e98Y;kp-4!%uncye06B+VhBALxb@94Js@q3w4<_{Q9n6KwU5oN%q?48pgz-DV;qYfkF4lXeB5KNv<_!8u%Y?e z|3}v=s^31RdWbUkQ&OJ#bV@N%WlU7RJVN#P?uU24S4i}OI8c@7cSmX`ckxPl?~iTk zNmOa1bf^jrL&Z>8jJ}!Wc&vI^l%IRGLI}e)VKF5he3%P{fjV)S;K_7W*qpVeDgg=`(nuCW^hZf3fWlg?YGFQ`7d61-Jow|p;jA;n(PBD5T3 z1(u>8M=%(;vd?>i0~v^nL|1HOO*WI~e4Uau@Kt)WfI=;JJ7<^%4I!)qT_+>Gc#(3M z;b~=Zl&96~hFGbO%7;2u-gTX!4cgiTi&Pl`mj1r5A-=o9#)%Hh<26FM zY%Ae6GzMy$gSoYWQ;#Gjr_m=hvK44DD>nE2+@{Z$@(`bSLk6C*CVP0f)@%B`ct5nw zVq?=*KVgW|3*^iOZI9R04pHw-Qh64ovV7$E^h)|$95LrMlokjG67d=?)}f}M@>KgF zFQOM>VjsomCDKDyWS74w^;jWLk9%D_*%+tPG+Qf5t8{~*P-qv#+kp4`ApG1+?40#M z8iAO+V`0fG`}Np3GsZ>^?lKSo@^qtbUKp>FbA$HC%pRkqJcK#aO3W?y)|VyjL96o65>|aKKxDx)|CZJU$qUee2s%hiTA6j02rN z_XjpGuR#HkewM-}a+652WWkGv!(Jmhsr-kd7jWIk&v_%z;!z%E>p&B^Hl`XhX%Sa( z!-o)tDwQRqkk4#yz-Ri1-_4H^5#+~6DlHwqp*@1aBgQ=vSleX8)vCw_qUv~n=SXKz z2&7gtpFK%ZH|_g*rpcDoM}z+q%A;`xE#D6{3at)9d+;~NJBi;d5Sl0AZnVQnw*8ny z%7AwO&6A+zI1o=s^~DRh)`>@FR&n)Snx*Nr6S>UTnKx@<;O{D1!c5K!;BJ$P*X0i} zwPjj-sTSW#IJiKw@A>Z63e8%Cn>RnMbE?SN+v@}UHpXM_Qf!!YS4*41?N zP{bq5vpB*0v zgU+a$JX+_VJUVq95`TY(qCgOFhIv`T`Vh7RT#v3Qb<0r;z~`Ow#h-|+Bd04;S#jT4 z&Sro2AbyFI$RQ6WS;RP%DG@muT<8QAV1b5`TauG>P-3??Xx~#-963FodrTI*fB5u~ z2Eggyjcq@^vs`Fs^TgSl_#s!Ydd^BnLE0hWvVNlAfZ|AXtkds%#^3$R90H@w*#vNa zxYcgF2!=;*uk#L0Gu9-SgO%0BDyN&%Xr=aJtG#H^_>jf2e;G$ndDj#)uB!`by0$~L z1J&xoA26N>g?7}KqXLY18L}TXfS08vVbFN8$VVwS zG&vC;Y8B?r4?oz1)>f=%{9i1vkd^rKN#VIlN~}i`0~IYyE)^;OBWzZ#RS88Dqdr(a zjNl;IXECB3YVJ0^o6k_=-%&W<8{65=AhVGJkLT7fauPP&Eyo0n`@ydCR6`_|^%N6Il z9sd?ihjq-{QyF~Ag@wD`1F_Og@2%}=juzQWLL-i<1sa`@%Ibqt9V`G@$8TTB$c0Ar z?}rz#D~L^aaDvc>QsM1Wy~SML>G8w;`Q5pTCwGEc&z9Bz;YHzmcdS-l6I)2UH z|96Re6T=syA@_={xa0wYxwmP97)H)@aJj+?r5-_4DF^*Hd*hL42spR-O;tL> zanRI1lEMB4=|ShB4$p?UGa)Rk>>d9+r)C!SyJj)J;(P4b#J}u%Va9SB?yJQ{3Q9-T z;gCiv*umSJ43z_>!fv}1ijEf21WSvgz@|G08A zo4fj({?kx)S?tBiG4vi3d(iMmvMuFil%xMYZPiIbMn8z%%vuweX(4shOJh#B+ zJ?6Wd4&Lbz9@9`WVnk@nlJq9&6f+fcBy5XHLsR$s-S|>1l%C3 zh#W`RLBR7PLKqG>T4S%~O5N-uXK;E;z4cK7(|QLBlPd%3yVsGa!OLnc_w>@IMI(&A zw0La9{huk1RP)6@3w^#uEYEPQEU?c6K!kD}E6(+ho?Xs@%qI4FkJT~P&g4?0{=^@1 z&A#92d2Nl$T@e1e3W2ws?PX{vE&u6vvvKm3W`V)&ZxNqOLk;RjSb|;N7CsbBQ3UHsMGGg*@BQVj*OtIG z=zH5+J=vPxB0;}|7g!^Qa>!^eF1arrZU$=M*UNZYfJYYspRo$VN8C2M4e!HaHGlOl zb-&hp;m3MD{yI9Cs8&gS2xH6XpvTRxe(BchU(tqT!L@Br_!-U$Sn&H-X*&xqR&&2Q z`M_f%N6qj3-R@UyAK&uD(;;>dFJtrD&A$Km)|pHp&4{p*KT~_ZnWZadqZ$t)MnS6W|W{_ zJl~@qY%;Klq4kH4s8SaP!seI;-7V0tX*@lEZVYHh<+I=i=K#JwN`E zDN${>a#pJ(%BJU=zp~r)TJzhFyFUJNYPMpn#|<^A--G+#v_mC4F%*dw#O8NiVmi;^ z-@5ty3l=EGJ*sUyY<~YA-t4lbh!;&od(n}#>FzccKkUBsieJ~2uU=CPOlQrne6Rb~ zCwYRSd&|wq`(v^i@Zf@1<+xX9(!CN zm`7wez{GcTihuf-C@7+mTqCImmQ({Mg(x!o4}lEs>C|rSQ;5>920>HGa)daUXNUCO zJ$cl8@i)7E`YXK1F<(QU0Vl~GO`~6!psEDAEJ1uqt3@#9Y82hhXU8_l$Za0mlT4n> z^*JtpV8P3x0DRRIN0PpXW)*x6`)?C&Ery??dq)z6{4 z&=VX)G$Y`8eY<~Oy>U#bg-@Nr)^DDn|^Nr8nJ|SqNG)|4j zeG}NUi{{t=Qupg^8t362MYKEhow@Uw=J&tb_43c4i#(cjt_Xh);)0ZvnA`Chf#%o# zd5`x+eR+kfYNp27tpzH&eLZC|4PqANqAXwk8D^7!id?or(XGAJ=8JP(uML4dn)Nbk zR@>ZT*{4T|&G4j{b7umuY~UjdvqULMgO3f`>HeZUWYRY+9Z)RTU+=lu{JsCa`?H(K z$|&+7QInrz^$ix+$mN)tq{6oW8?+{}D~yf4lAp{w?pOuK%dr&v zKM$98kMr#{HTkW-a^o|f-Okl%P~(5K>$%yJIfyBx6x?8*A=JhLlW(rl>-z*MI^Dc4 z2SPt{d`zDEfDQ~j_aKGQ2tCu{#+n~{@8*qZ^j7Y4mHVO8ACQnno&Y5= zFVbddDZxTAO%9~~&KgKXQfey6?=hd_`QUSyd2hb(%QtU*7DPwSci+m+OU?Z=9p1q| zQ#&%PPm0MmsQK`_H-E-@9G}a+llJ?~0Wjj;KK$>6101YAr!9?O7)6Hw>aa15 zht+)ek8b|_8y>z$@=cJ-MQy(L-`x87&!T#1USFEkA0IaV)^~6IYf?&YH^26Gm>S2w zUT^;5t37WvHE-y-@L7cx;mLlBk&d7H^W8N5ee=d^DCS=E3os{GPMXENB2v-7VeXE; z507ss&qF7~qS*b+hfj^cctGo*2hBBc6@kgY9UGk??JRVsi~>!GSf!3F zt*1SBSp{CB8`ZPFM8M@v3ijl=pAXAuG|+KhJfu{F)+!jkx{U|Z{S!SO{}dso4np($ zt854ZWIo^gAOFJ5mz$sa%RQg$4$qgKr8R18zBqg1t*&eXbtS}FHA31Wix-=H|7X|h zpZDKR*uCrpmz#@!z30_t@w+#C1lRMWNX7S3qj0ZFv|O<1c~4!*9NOvhZ!F`>XOGZ) zIM(wlt*8R`pMXv zWP(G+o*eOm;V*@LT6e>@5wD$Z1(jJlFt@)il)bsMYpp_fSgkk&4 zFG9s;hM2G34!XZ`>*jAi=z8;y^4gorL-Mb%pAgt-tgV7A;xb@e;tel6_lAWf^?qO% zHP>Va$7%84KBXERmrbMwU;TdfTmAlq?JIw`1b9ff;5RtJ6j%GD(QFyT-U50rb@^)Z zbHCdC=|_3QpU|Fi3los%;3_KK6F|db0g}j44bnLuuCLM$dtZc0wbSZ@yi$D-QH)Xk zY;z$fkguzEqZ&k+57SCPkw=RJWCTN2>8C2^is-u(A+(_`Q{7$eI~rPB6-mK z)&KJ5%gjhpx&((|E9fSR`P9Edt!9SjIKb?P^`6}SGb&M05`5nP7WzDz|KXQ!-I$=1 z2K#7bGtl$I{tiA9-qOZVb@)s`Ov@L0z1j6+H$L$?!Vi&8s;j)qyjUwi{L?S=yxjci zkKOq3=2v=d{X`ML_u6ju;)dH~;Opu7o z=c4>uZ7ZOd02LatUiUM`IkL|d0&F#JhYo!^Q~{)y&)|-j`M2TxE!2umw7OISKX16f}s0tUljID9*$7JQ>TRS`Zk*Zkn$y!p~n3jjg= zbqt;z;9Tin!$+D>@i5JPy=RsEcRUX{F%aV&{oQr^%Rd{RHip+Nt<~N|#eKB-v5JU@n1T!?`1Amg89uRNB@Ac>_FMII+;6U6^yL*%K=2U;?PNKr4ar5 zs`5aLg4pYkUF76cV!LkQ5l|zKTI%#}g^>89cR z{`8AIFEzjQo$gP5F`i!03u{Vj)?y}`Og`!xU9KfUqBYpS$2*^uZNCQW$*Lw3LOrS6wrc5%r?VsfkbwZDDi zjZa4vmaWhi;~MHp;7w;w;Qu&P%Y!Mz=CAzQH(zUhed^}(&0qWStJ8_lo3(EV|ZF8|b2#FRZzld?!L0JcG;@iUhESC%Qd5!7j@BZO>o zv-m4Luf8=+{iLhm1F25nM+W+6`=8ut_O9J{`4wLIDqrsf^UrGdsSj#^{i_Eu^grK{ zk8aQl0Oq&^GxsGId+TK{+KBn`C3A0@-}{F*UvU`8G^Yp=HQKOhCuc^ zH$SaK`oxcoHoo!OcpU%l-@DP%{N+E>^O@I^ZxbC39c(RwAh_n|{#^G@{CqV#A2TQ_ zE5JzzOzp}2lMKGxy!X|vA1^h=^M~s+RRsm!{QgeYYo7@;1dK#$cK;XMuYECJind4c z+)(p{fA7X8UL*C-YME+@ObhZJnqT_|EXg-txbeB>uf5yz{PSV+%+qWBvrpc5qX%wb zh8_|onHJrl^5R2u6erR}9t}70FS}m;xrGlldqc#ba4vb)rh!z$A!LoK$Z|Aa_ycM~ zb;w0Imzf8*YUUdQ)iKG^XE?I5Wvf#57%tfL1_@9V9~cBI=bzGy`TA&I7c+e@fwk-@T|GATf3M;mYTFQGTU z#SOR|qP$TPe|52@~45_(23S=Xhn9QQ4Q!ch`7uWV6)&kcUeP-KK zKWP5ucX~cw^y)PF90&Kb(<$e<(w6b>AV(BM#vPJ8si3GtbR{bG+!s1{GZ4}vrCC-@ zneFTu$PoP^Q4YxtG&|{TwmhVKLHNeD(lJsq*ld3kWKqefho74_KltOg7J`0%(xBgY zhk0pRuin|}N-2#KSo!uXB{MAPm;5seI=yH#H_qKpdY*eFMV02~$UEIzd(S}sVHSCc z90f?Lvh8)%jUB1#YPmu9Z|&RE9sv95S(P^6KX^xK7jvEy)rj=BdC)Lv28E|W?^L}M zQdD1TcKt!uC%P6y^(UdvRQOQ(>>XMCu6HOE@n$u5j`ByBxKat~V|_NsN+`Xrl*)5A z1O-wfLk-;S;Y!+QYC%aTJ%&u-c)t0aKXK#jX7?X-eZ2E?q@A+oxb_~HJ72FB?WYqePatqajFYWIkOF(*vT+(#&x1;^oQ_{t5otelFgLJd>2R;o%# zPkShhqYT$i{!}|2U~qu;Ji-_l<7Urc*H7MT55pDQFrx~_2KR1x6TgTEQrAnM0UkQs7FN6m+S z=T_Iv>I(DLR_a+nW17G5O+e5u|EJwQ+5FvK@A>gBRp5h=i&hT^qIXDCX1=34c3N*a zykGprzbk|IVpD<(MheRpx;bqJcIJOfEP`w?!9dIT}I7fD(Jk1bd;@Aq; zRyKaf&Alp1B7E(DXe!!FmnUI6x(-)1P`Q22FDJx3UJmr!GRPH- zqy4geyHWv&wQ$uD^WnAr!wU^-(s>9DXXZEzrH4@&J!dLFl%PgRN8S9n?8w1t6OX)m zaG5}ubKZPG03sRs=bOK~(e?44u564BY<_^tt2KMpZ@u|mHKWhURUb&X!;x*$!-CG# znriN7u1DTu-C&axs6=Z5&V=}I*r|l~l3u59&r|J4Mrh(1G~M!In=98moWJ#^vM;YU z@BKm7=U%C5Uwhwh_d-#vjV||sEv4+0x{p27QZ15Ff_f_=26?v(2icUU>i{Z9$WQNf zGWDv?*DzU%ip`Y>Pb%eNfXBh>v3@Iwsh_*!=HJ-pdiArFU1+{B-SbxSvp2e*XVQkl zrqL&;Q30d4A^vPC79%vFovTC;Qh%Fhw$g2Ug3d_Z8%Hn)`1u?yR&8+WPjTidh2|<% zGOmS@G^0aS@;m>S)E1nhpKAW~f70`*=U`4_Tm$#->n#uPK=vefFoO~S9aJ!MiivHk zx#~X8l*5jiu=((B+uF!sD?-vf-i;$QcHctM8lA{1Lb zw%o%jYl`iCRYK8V3W?)c!hBf;ot4Hsn1xnkHvxmmRZWGNh_gRj^KU((#-#h#Z+-fC zMd*q$6VhJF?2(1b!oT=8dS3f%op32d9KqvK^!mnE z!A!pP``vH6oLj6|*i;rI-eb!$3m3X-$e4PkA(_$sZR+Ccm}$Cn*o>^0QjZwJ2Uriz zFs;-+s>p8;hi`H>fuM+L->4m@Y%Ayljti#=p2_E|E3CPD%)&}P}Kde3w%#G@z@ z9&pMApQ%7PJFKqYSyRM2)EIhAqOH@+6wp2x2>z`GmQOCIUv%SvYSN5s(la-NZ0%UA z^#;YYI{3!7Zr-r^-=Dp{*czPviP2%Q>dim-BGEx1jalt;Afjmtso-7+544ryu>#3Eb zLklM&E=tNe$vN}#0GY8i$84>CT_O=)&UdD~zP`KtxL7xCI!AW0zJt&_XJ4XK#n2&D z*d~XB3++>8YFz<#b}_BI^}bT5xS|pZ%cD{Joh5VB@uh2O)vXkyXwY7C`~W-ek()(& z$@@;*!Nu+GmbWZbC-q$+58zOg%(NUk*WK0y7?)bmRjN=eUE}dSweg!^Afjq2@k!yuJGEUw*9T6+BkL950o?)2!Ni%u@5WH@jZ>Txmevvj4_N&nusn z%Zc6Ic+mV)U%u5NB93RP9!T{L^2C&pvHIv&`_u1pbl(3h#I@Z;eDIAM-EYJoB<;2$ zb8oeavM;ahVZ(S=QzKyzDa`)iFuk9$On2A`LnrQx&0>a@8V@3-_yFx4G+x;`sWB=@ zRS~iRcg7mD;Oz=uPEDjWg=?63q@|30IN8B&HP+;+kxM2EmTNI3z}4!7&4WOe&14#) zq>M>6L#Wx>kpAwUSvV;+ryGO?5dG3qu39JtNi%(*R}HDXjNzqAwLxzu1YmoU@2)|M z$*R-XVCoWjoP$bFub=$eRBkfDnvvAuKfY^)7x<9@1;8GWRfle|R>;%Gc&XVveL-Ke zM$){BM@1`J8Wueb`N;CNya^1SA2`zf^|)GsK#|DBhakycitm48g#w}o> zc&U5Kg=AV68e;lfgA*hA26yK~LJ;?qlhmLstTc)0>s1~89(?tT3xKHL&YdjD6Z(PC z04k8SZr5X_@~NAye1~ycI^o-;+eSB|r3KDA=BO+)r;bPe%#bh)TE-i=jkXd}In;^i zZS%j$AC?+WT>{`_`Oxo$aoa5q0TQ)*zmN6+o64dDw&f$T?Wk&b2xwVO&3e7|J-x)1P>8UZ-X`+bO`x>j*xho;Bnj8QUFUE6Tuao%if+sgW5#no}YWn z$rW$hy8O+%fBWVe#bfU}_p%2G1tYPi8z>BAXas_3S{e1S=?y~*XRF{TUq$ep0T;YQ zx@Z80YrFE`vInXy19W=nwi;732%w=7F>@u<=%!Fl z;UR`t52y+SUsb6?p?T*WrYE#S`wD=M&QKF?`5S|&U9+&d87$quP{_=H4_GNnc zPSkWoQjrilg&W!zN|(@!G&f+E4u8K~RbINxah1{S<;os`T@?z->Xki-XV!dA35@(c zl!#d?Oe6VbtR2l%8u8*i4N6BH&nmQ~>=?Wn&!4&9IML~7n+$o>z-R&g;AS@$*pm;ZvqE5Qg{I7oR*6W|}Ci(y8_ilaRV+YN* z|0V$R$?A<4i*z`cbF}Ld(U;~GYq4Nthw5rg3A>>7n8;Ou6HBie<Z?nK3Z!|#~X>mTd;xSPxyI)H*;ZViu zb7JvI8lxZqce%=N%9f5#-`VH1aMxZ4zyK)_3SB~&jPQV!1%4W4*92|xuOPpb2Pms5 zcvI>g(rNY!wu)6(?gvz~)Dv63=J#IhdAR_SKVblzZ8ezv;THAQkLU=XMB44WC zBu};Be05lylZ`1G8In6|iXzQv=d4wo^R%)RU0W(^ZQpg2tyEV<6lepMTZz@7@pHmP zl;>yeO7R&hY+E|LNv0p4#4XW|ux*K>DAO>Nt@L?N+4iQDbB&}9b2kFuK8p0{-lGkx zA6he;#0^L(;(PMSUYTC81R~`DUa=w|A$Lg(P+z*R6&01p%X%~@k;&Jv2(3rmK#%Z?ih#6!?%M-Y{8(Z>0X;qxU# z18gWf;o`pdc53Hi9{!dOxr!>=L;qT5W{Gv(nO1T`hhN}XNH<0oY{K6$Bw#RxuQBavx92TL>mUJl3Up+DGe^?T^LF%ecq z+Mf8?n!2AP|#e08O^(W+VcPzChn4>wx>FnZi}{h2E~tg=jp3fX7==$ZcUPnTimA!8 z-;1@;*)r-e7utr&>qJONTADc?OQIaF8!)~%*c7QzKHoIAPB*sIBr;+fv6TX8751sF z06$9H2{u%Gw72lCcT^l?t`S9Mf}z6Aof27o*Rs zX$$TK4XBq3ew3WTp)x8)N?VsLp5Jz!$<(818Erra((vVlfy%~ZG(1x?Nstw$&Grw$ z^h9cDXY()~)8L-KB}imNopGU1MiMRD#w=aDsFmrYo7dxmr2X{26Y-MXM9#+T;2WMo3w|JjKoY z#w{B82kZRZ(vJkG3JMj{T%eLw(-4`Jy|gI(yrugIi8~?7q2!a1NobjH2e*LC{kVbm znD$bcqpeKIXpPVfOYcMbBt4+apQxZ}yCR^$Zs;KdtLvKaA$F)3;*AY*SBg`_l*fg# z-!oIrk%Jb*>7X=2WdIJ#aWMhK!t_I;*pvRmWX4hJ!(mKi3uG2AEpG;PL|9BUhOA`G zkT`BWB^dygXVg7OW}rMYW5F_woUg3T=qB+=tty}@3tD=g-%>8Ka+}aLXI2!4+_TwY z?!i=BdY>D~K4`UC9|}@xBR9jQuh!pxyx7ZwFc4I^!NK$S{W?#`%qDA(f=S59N5eyA zdzf#b;e|^l=|QGlMl7R9?E>&D(l5@CP|8=RMApIuI(*=)Qb)fX$LS?C=?ejU0!Sg~ zm8FK~8DBte5-0SMPO%4*wam@6Sx>{3@E_7cEJdyv6R);mWx{3))35EcHR#W!s=kE7`8|M+Vog7a(Fw zw0((3deEE>Gb)qA3yZaFc;AQbuJ$c0*H#x+msXeF*T0unho&F&o=vXoZmlkx$zD9Y zyRwF->=v}MPN>EY4+y&as27Kg+|MhOPHP6g3{I}AtTcw_kpTprLoz$l7}n8~4E4!9 zTQ4FVb8m8?-DNcU6ztjb81DEccR1m>_|Uq-|D!VM|MrI1jm6&1nnkZR29;ejn4wjT9xr znL9+vE-w@s4HdHMNb1P#Xxn4lh5&xRAm~1E{$omQ59MmLzKI1ZI4#J~2qj+>YRDN0 z0E`cakWg#>ZwGlHA_~W*B2>@x=B4i_;4OReGCFFN2@NJSMMd%B!R4N>E&$3MFn}l@ zt9)6i*DaqDnzy_}eMKvv!ngBWE~Ktu$eqF!vr{rV#QArs2R)I;edRKOeIanz@_mLy zTAokI;}EnOmKE!wbU_l-@fvYEQvFm__+oqsP6Wa9*igs#9haP%LvbErc!2Ab4`!%T z??ZRf+m;$3K8{Cltpm}0&T~&RWwGPdUZDuas#@%51x@FFq{bHj;$UOP_{+-h%Q7Q_ z6da7e`;Z45K6=gLKU_1koQ366a78~Jd`JXstG} zcEn_c64Y>;!@N%FGd`m5Tvv8D`%5Nc)I1~Lv;?2<(%xO>jPN#xTFT%&w5=KghsgvQ%mg2ozPT#g+UVT8$XZ#7qMOAmdVWZ z$oaw;btS6e7bK^7GtN0@TV1+eqv(I=f+(1!USLQy)e6I{ySlQp!LC0v*J+hfyv5di z&ZYkugt@3)?bVo2a@@vedWCXiA=UwWl%Af?+^s5>gdhjZ=h77|VAGu$A5_w;KU>=C zZH0ZWE<<$sXkvW|FY3eKwuhIZn?}gzs^P&j@-7+kYWewHs@yv3ej8ZRD(#)zFZ&&n zc-GH}>-MOM0~a9fr*L;B-;$`1Fm`hBM=s`fOg?O0cMy>L=%tFO7J;$PJd?XFr$pmp zH1egzJp&ahS`tpdXHWha?%8#g6#FireCDmVSLll?YtQ~gzIT^&jSs$IoW@wdhOa*J z>GM&GDkJs-sZo{TZmBj53e}IGNjd*NELHk6O}a~yZQBtpeh6n+N4V6A&vtZ~U=Ysk z6@EU-=lVx6&N8~*abzlnoyQLP`bT^mA1}?L2MS!Q%t83!S+^wVSD%bRDYjK~xtqg} zwvQFneU(*=TCcQzaa7ksD4=`Ms!G+cm44o5AY#6l5!}_E4Wet+rk~ znBZ)EpzBCwgT&sHIoLnJI8NT)lI2oBX%gO}=fUrAaqsP4+59631% zZ3h&rh)`KXE`t~2W;uo7Y>~rjEwR7SbGe)S43UoqKFsUhis{iRp6lUw=jx}JD^5qX z>aLgBbRwYi*&)L56rjd1zEBb%I-s5dP>GG>wl<)$b=j1vRpO-TVV@yfvPRAFl-S5X@hTy zb5EOV!fIPMtx3g>e)mZwD^7@&ER{kQ_aQn)(O0e(!D#_(-m+wsxGfhbnh$D7vOtMv z55trZwJ?mA$b1Fzf7E`5QaWeq-Dh8w*Bh%liV;GxkVau($)wL8U1efU4A*S$Ip>Vu z1!Q~_LN>>hLh_0MP+`t#ZIqd{{8udamNvGB2xG*`}d23iH;Wg^-x0zAg z3OXib<;$$`z8a8grF}VqYVMtbjjgWS=r;8qR5sjSLZF5oE4^+81V9O)G&@a8jz!48 zXFHUu`(8$ykpYhQbZY9~y=t#JZFNCvCGIuR$&Ylebs}1iW}!+1B)!wwY}@OPDl3c; zzD!mM%gtV)R3t3(X01{RM)RGdGmw=9&+jKKc|BPXtRG~hXeqx?EO0rbg1|hRyj%)U zBQIuC3XF=G$Y-~JQZ5ty?Xll8sq^BBrQfYXvF#OZo-lr@QbAo?*Oc3VkmK|3dZC*8 zeVIBh=#ZTLVd(QqVVA2_I{42A>gltPi&*f7q0>8^^X!ldM zM14iD(<2f6yoM>YQ*ro=>bOwZEk|qu6#Vq|4CC5A(w^gpYR?g7yeJizxGiv>&}QIW z`0ta2G{bfGv}nm-w7Oh?##gvpmqIj8bGwq)RU}WfQ+0wBC*XE%k(~0sf3#!T38L|1 zO8#f`2X?zY(w31uVatkV^w*M2h&uhF+62w0#{pr$_(EtTZ1?*p%~7dcGP76f31GZx zY;U3cQ+$G=4L0wr#Ro(uVbP3fDEm*zKHa9l<`XQ(U!U=lcFhiJktyY|FRBQ^gMC^BcK2*P`^oDCtjw2TK zB6=$dAnFDtLSi-O#>lCtyaXp1j={Dto$<1`@RV(&$|%u_JLZ#0IqF&Yh5;ClsUzIp zEMTqC5>l&?&<>T)&lHw7YS21HB`^$h#$+w5ieMp7O!>E!=#K9KG{g3Zc4M^~Ej zDjt~d*42vFfceA~aTqofF@$RhY+&5n(!tzbpD6W$BNMA_*?$Vh;>Ft(POu5?c*e%_ zigRJb<-~gqa9A^`<2zZV|b z+D`o@qGuV4C0OeJBFMFt3orGf09kCS+-r1*{GV5-1E<3EQrnfqtE$|JE9JxlJQx#` za-XnHJ4OC;njD>5RYzFMP<^fctYFwImC6Bn*UhhMZf7QIt4lk*bWnDxkV=iV0h%vQ zR|Seu{Xb7AUJ&D8dU$_*2#dIHM~;2wDEg9?E_!}iqN$Anc=eH-LeZhRVO&uSk&06H z*9&eelC+9`jt&RPqpbNNOKP)Y*FtSr9ad(qjso?xD2hG-jwWP=h7a71{h(J?R~DhX zvP`p7(y=b7F*ZnB1AO*KET>G#iqejKw+5xW_mgI(KN95WGTERbt^|bMeaeT^XF0Nd z!5E5*$i}py2*)mU>Fp)4n!N#ChcmBOw+?Tg<>iBvxe(1G&}or8c;s`;Y+r-2NoZ+h z%UTMQ0)UOy)QqspvS>877KU^`JDe(J&J0EcMcqz4UTK@6mGlDij*)iZZ$$`3>b-60 z+RCrl)s0jX`% z@`br%YfJKKSLimnew*8LwMlgye07FubyV;0=w0WCEFXvbbI zxleXeU39%tww(mJTzT;&tB<#=Reah7<&5h{o}&AVdeY5oP%yS>D5)bUy80! z_oF!c6!ZJVlXm0h+v?qbo_>3q*nk;IeWYenn{G$Re%j|-V#eYr<=0Cm%Nl`tnUsrw zAYww0&^gzfwQV0bIe}?XUw%K<@2TMBUfPmR7;BmF0jLy3v5A)*wW*Gl>^;@rFy=(gQgp5 zEO&2*!>Mz!9bzS6r74)dLq~{EBuWx?XC`QQFZL!^Feitb(`Bp4oz88Aoi6z7DvX+# zSQoF=F7o2~sK-kA4ILqfVb&264pwO5F}mT>`-dr8l_IgcrM`7OJcf#bJ)#jS4oh~K z^N~WVyL}w3GLt4<10}oCr3u_;}J7BzFUAOr{NJH?4%O z;#csRD86s#VhCMr6*v3wFz=u3Qi{eD46*SJz-OekWbxjV#025?lv*)}NN3i_4JOzpn!ow6!mOztzjQ$m5VPqe}ke3D6 z6m0S(j$9}q@&?T0QhIsP1uPPc%(Ts72i0Zd)K`(X3348>sIApR;8cjXi%#F_vf9m{ znua@ZkiVC2t39=7jcl^}aqav4@Zi_z1Qhv)-Hjn{&b!#>hc6kHA98TP{gsaOZp9v{Q|A zJ_RN}VKt2t$+0n5N6rVW6wy8qiz8`Pf;K?I+jE4uP@_d)E zagtQN40?-;xux!IMkWeCl``Q-1?WmZEOc}O%phqMU{wMlV0Nr^{p>#?4MiN9q@Yq1 zj+6-$AbRC3VScBODpuaPnRS#Ds9QTS)HL&PB(lhNSUKlh zWD^{|(c%Z-X4>T$VQ=yQdPF^_GKv!Xp*bj;2*V8T_*{+g@)k)X6KQ^M! zpo-;?h`Gs>j@&Ulq-4dGu@bcD6c{Jk1cq!oZtL7$blLE>c82UaF1Q5*3>X(apa42@ zUU_uKTSf}9unj>ybCa?9epR0@YG@rLrb)`{_d-q#wVd9V(MsoZ7&X$VDKwR{QfSrr zL843UVXHHUYHvByZXu^o+wMmMY7+Fl6Mn|DW=db<$TB}|w=R=hD0nvX*ZURRIRxi2 zgwSTc#6a4DHU-*DdDzTcD9v}5P*w>zp{r>r;PW?^5DWg$_TdE;knH(r3HUDXV2lfM zr!wkNWKH*Dnvy*a`<-`-#`Dj1A)r#tPu-q?B+LGX3q}pd8(z9!arxh0j3h1Qrl)9! z@0#F6WRTB8!WkO1LzxrX&1neu3aw~DYl1nA-9Yl)qr{d$MouwvX&O2lvnxRO$^#ZH zNMLdxc$17&C1Ige$m)D3o`_g*?Ob@5749nSNmf{Fk_7U zypv3`j8G(RLi!I3GY>~v!EC9NR5f1l14oY-S>cgt^v_vRA`}EsHS!|YZ_TV0C6j7Ug4MpIhiL_n7#J>iErZpryrBJ zJ!A=OG>JwwZfPu@s`+s+!OD>ZM$o|R+#sX8K$5-BW_goUJ`{mR<~cD-$x0r4l@LIv z2y4L04P5ZX<1BDY`LXErhPR8$oG-C?z?nxYhqg5!*(g1pT8t}vMGKa+TuudsNgXT3 zW8d|*o3atSd0GvjzlZAv;07xwhk_z2f>E0!f#=(T4OJ9XN`DkeDbF#@1EeCwf6~!8 zE)-V*OPTp}p(;dPOwgb)9M`y^dymVQq4bVQRLzd=#S_JUj?I-zWTznWbzYX?Eb!@zEuceZf&F&PS{4tsRzSem9__RRMb)Wj zb39tiW#=uh(M6Mnep%g1oBj|Vc4}Mn)eai75C|ZZnTWDPBYnruDW=q%#X3v@x9I?V zk4mo(69Wty&y>iyGe_BJn6xgi!4wr48(5pt$-0Wzf6BrG15_*}Y~QPhh(%ACaz*ex zGe)89RH$iLIfSO%)@&rM-3C5lP0Qd!_^(_cez_`DydK=>j>gEV0HZDNjGt^od8|sg zm^=!sUwF@b5zZ-5lYjwuDQYK#LlI7i-JaHGDbQJeT;JCaV35xojxl(J?1@1w@FxyJ z)GgE$x64?eDl5|h@f6uj++u}O(Bfz&AMaXL&5T+`ZPg}_zLGp7R8&|#V`z<5%5vRp zKtUBJkVa!(b_gOALs$YUGc2ukCAO<4GJkH4ywQpP)29hu00wQEm+kFkL8%)N98PtP zO)s2NYT$+_a%7U{++?_M%XMSsEEp-*hDF4D?`QyGsMf_KTg`)vjF!&gyKuBZ;=vnf zu@APT#(XrW_W}ZlL6y_)9(v^nh+LS=cgXT*xa?Ot!h^4+N0mAwu$~{TS2-@ z%Mt}kTk7V?GNR^-GRc&_WEhZcUeQ!ZQDsZph8MKi_e;!s^dDj=LINCG?0RxILU5Ws zS6ybKFO=|Aoet}hyLuHF{!F?#C>9GEBh0p2aTrZW`NUenDg@1jw8{4iOD*(6`2ux^ z8~E%es1j@nL6g6MdlqM>6(zT2CsKC#Y|`_IY~A;DE>??Z?$y{~i+e8Ju@a8z9HX8> z?C)@@z$jNPiMy6Av2{0=25!8<= zm{tET!YdLIo$n-=HUq($v$d~R@#B^%S*W+A;1uAtO%Jg|*5-5(XO{w(g$xEG>5d4k z^>dl0h0E619hoIA^a5hmCxm4#JMjddDJy#&^$2?%ZH#0j%L%+UMk}H~#u%}rLIEX? zRUxw3-|!)eEf>kN9q&(Lp36jo>3P$REvJT?w~RB`trv0DooOz|ctg^_!DGT_%l(Hu zfpUU2jKj~dbqSP?2CCI(AZ$~ByP0i8a@9y)Dr8rouV$KU7a`7DXh1y~_d79olDSX| zNfIs{H)X^xJ8Bhw@To>g$DVQUisvHsr}pAdI2RL0$MR^PsBLHudE#(9$$Z&_pVW%b zV(~6fyXcyTDQk0u1JgQ-pmrgXz27D(w$Ox48f*HC;Z z^~IPxg@-LJ(0I0|{J-K0R%;z(Vuchu4;K~VInH1sbI~-S= zu^5hI!4QsEMDIz$iqu-_EnZla5wZV4ku6Y7e4A9yA##4m_t#j}sC0tGBj4l3OTrsu ztf7J18aGrUD@oK6yq2gqSlaxYtD-4hv>fp1-cUe1psY2HtaMDlmdJw7Zj+vk0$o{! zBGXK!9MTQW4QgpW+XK2-^=xaE^3n{=M?&?Ac*W--1vAd^Z8cz@wSt5A=FQ(7>VBoj z#Pk0r>C}ED$t;LImFmj1PBj`at_q!_%G!seQo9dRxCsCe1Y=+(G`d0ps{+Vpi|R0I zA9f1&RCEkRDRaUC^~2r(Zl`Q?lCVpZM6^os+t#V$F@=zP{i;I9AhC)5kLK)`+Ny(E z#e8mqTq&4@*%!v9pjJ%>*qJZnkMZBr4n4}=pi$30VJZb2jBP=nA`i7e7PGXwcXvi` z4xi-5$+tIbVZ7E7V~7gk@q^i3nj*o=ABqCn3S>R;A1@S^l#7(5Z)`(iaQ!ejsVY8x0ELTTOZo;rscUjkxphid91N~G%E-Zw5Gwn9 zmbag^ovcgQxufTyNW;ovIurrf7L*X0xT_s5N%a|4vy+&(v!bDmsA|Q|6+!w;{gp)` zrLu1+_ArQKq96DpheNAxcqz+w+6q!at##*uG7__%!q*Ju)SD%2tr{+eE%Z>>J{NHu zd&o<0-U7F`1M9YyJ=kBgStyCn?;@*Gl~gHTfd~j=S|!XQ)Zeu7RA*Vvq9y3(20;j) z4HWJ`d{yb#3eIASM_NBG-1CU0%H1GA7vX{t`Uvh0Ihzolg$rhG(8&3-fyKt)U0jF4 z+iI|WGz{KPoz9UYwX>kAo%~AX?#`ZU^iYAsG#n`db?t%^{V~fFj0*UfvP?Pe=(-5i z%{dHP;SsIRJ z5#!IFS4b^C8ZmwapYd9NB8~rug!t_oRV8I`t3&7h98pKUiUImiS*7^RxL$0Y^VABy ze_1S|lBifGV}RgzD}iQ(GwBzzl@kU#&+svvvjGT* zOW&G3es&G_^ldOjS6usuVJA9}AN`THlrn7+({qXt7U~u(v-lJnm;v-R!0@1ktRX>oyIDX*>hp9MVEQ}Qq zc}_W-z>e0_`Hs?wE5gK7Z&66<^h&~`XWR3uxvY!YGm%;U(7CLEM4v*A_0g&nq{^?u zVeOE3Fr6)hU78;TrdoIJ#?oJEY=o~oF!>=b8PWAe;<+x`L4}ea&(Ps0pRHieX(RssK z9E%pJU%Z%0_+>5+O0QfY!wy&_XJ-?{CaT{{jSe`U6^?;o8FrI8?mM{D$)k>}uL?M- zzC>E7^%x zwdCU&{V2Dm@cmh+7V2endTdWW9@?nDiwszvjW0M7r*1}Q= zGJTtjceJ+!b_u+rEl_Q#RVz&I1+;Kx+e_fd>hgbZ-qA!mdIhWBbWPKl+Uee}@?@j% z&98Kb6-&iZk^al|N=S+Na+2PJjbZ u!EpT^pF4VLy|>e7JWTKfB1O6Ce3LrMJ7 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%0ARASM_&thHqS*QM) zd`4f#GUn?9R`_SVzCnyCHODHB;|d$D*&?-rL$Uuv7>#Kzfb%S2S{L_kh+?R@SDlBG zDaZe5EG^q&vC> z-mf=ucKh|8{;S`8H_}Z6Q>Tpfm0>7}$JeM^i&Jml;NPD}eAaQA+%PRT`jqW$4`TR| z3m0fQwVP85FdOybry}*AGwRG5wxUxBVolQ(QY)<|HXk|Vt@`B1@mD`1Ve<74$NX#< zQVN?-f}q~@n)X|G+PBRejZkq0aDvjZ%-05Ou^GYpD+B)M?l6UpOVej+g~&LNNK7!= z{!}1Qb=IcLXMjg`@5Z;Tfz^U_Om@QjB(oZ;rUVz-N33^| z>OQD2ZCE}Iuk6!8?5PU+i%TX2z^jOqFCa*? zIw&LEl195``p<6X;;duqA)St=wy=Q5m1~$`sn83H-HWy7^5<;xik_}2-LpS;iH?vQ z?{n4`9_6z&F65^9pKy&s?}9iUNt7=3GY7B7i@|9qK6d47lq{uGe2DemJzG<8)5U&c zUld^_L-V8V-yT+7sua$gZSGDkYhyX-adiknB?b#+)mCwXd9lUb)ZFnPn>0v zzF-KCdj?zX8OA~_4a0_m<)oJc>9CmrL5No5g5hgFe&1!dXc}&nS;FYn_4L~&aQFol z(+%q>lNd9K<%+2sCV)_$QJ~q1aKLP7bt_mRq5&W5WOeiR`rs7_6^OeNrw3fj?oT2$ zYQrw}A&C_Z7Zq=Ezd{)mQW)rZcK_-0#MgiLFMsp*Dn9A9uWEFjwn36U;RY)_!iIpR z*y(M}$GS2NkMhmKd`d6c6*J9K)>yj%a9L*(&_Sj8@}|p}Z2te({eSfL|E#KsZ5wHf z^|+H6$Ap=ExxyA&?LL4-JaTOz#1S4Go;31wnWLJCS0;XNd2}!zItgw6dHYf|@gEK= za7Ogc16Y#ws18TDNQNKgkGxQPQT{+!9yxudOufmR6}{@y?E5QcWWNhNnuepzdQ!BcMMnU{%E8}C)Z_F^AE~P z_ovh;ea`|?+~cDheKFSPCJ28^OZWBhpZwKdeCN|Ju)&u8orrEDd0aa0^tt2)mQT7NI z4Lb+Pzw&s;nX=t85^j8- zM(T~W4Vlt4l?E=(#i2~?;z#Q1O+5j;@3N_dgMjp0AyFV@A}duX!8Jm}o5*{RVsAfD z+OjR=tLKxu{byp&Ndl}h`t_+SWlrwa7Ec~N5On{v|9Fk_)UbDFAm4__$}iZGE&TlJ z22cIWcSbMc>w4nWm4MG~zEDFyK$iV2LQu08I+9!Ml%O4;XpTC|0fBFGcW;M5-oD1u z3nEmBXlvB{^+hH}o-2rgGFCV-!9{!6KEn%D1T)Y|#2@$xJqviEDW2**Bk-{n1j?FA z>p`0l5bdAA#bF6vU%~>Z5<_=+51&QVAc^K2tp5!12Sam4ff)RGxo z9#;G7Up7~IFW?j7Zt%!=nNCp#rNRP65R~N90YMF~W@u*`bvNwo>HhQyed)RRy7zLtIExN6r!m$%3dMXuAW_2bh%XoJO=S1L zuWYFeTiVn+-BWb7 zxwo)xx6&r(64ofQ2nnVkbLzrj{?|+nPS=s%)>I({y#AXfPS&AV}um;=t2mFwRgs21e~XQ)iXz zPF?_foSf<8L9(Vg8Jaeo}p z&!Z0BD3Ml zzUF58OIjyAsMJuzdkj*2gV}5P0rv>e&zsL)2LI0=A&G|}l2;M?(@VCUhkcmYj(b7#O78yeoN^dLJHD$ zx_%)GGEUk0Pl|mvwAW;yvMYXaf;s8)E5IHCF&%T5 z4(sm?oQ=^MjG242cTQ8;F5UO>-20}=$0183j#k+H>6joeVj$cAa`2>l2X?RgL!V); z_uu?%!J5rf_5jlvcSndD>H->k$-k}Elc;q&XZ^2$8*ef zZ&Dv;=qIX98fv>7>8y^c5q^Uhqe&<7z}7|4pl7xDG9S{N7m|b5#FibzJQK z!g2YVRmYW#fTmgWH>{4SpWD*Mze;$F$d06rbK|yOq>i1v-O$H1mn9z=37vl(>e#5w zcJ;n6L8xTSB{hm|x2amH30x>-+I&sGHVsc1P(ulvV*EKM2W-tOsh@kWM?Y4z)oLR| z21Bkx&;Yyg&x#+wgY(b+B$b>J?wUF|uixK@N`~vMu*A2_?tg76xl-2dE03jEtfOZ4 zU%N_Hr?A=t8*AleH7bSk*RGPQF*^CzsAShZ$^rSX39*8~phYDDtmmYRkad@nWgWDo zDyU_s&w3VcqZ-umY%q@FEgG&(PDlE;(2a0H8rk7*FJlFZL!-rM$YBY5`+}CYURrXZ z?8%0w+;~atEstHsh2}>UC#8y-o(88!O(_Lz)?nr0KsMmiroXqFOL96k>PQ1I5k>ih zbc$*ic(Q-?5Hln*U)c4oeT@qC4%CrZTP_l{L9Vw+b(8l-v%U#_8RocHvqx;+!ywRv1q-2$J z4a(zapioc=5jkR!MyNnT(+6u>ucOcVcOnr%bN%(-f26YA0fo!e)`LzOE*-iNlS?Tb zS$M;TdIWVzPQJ}&qBWXCJ~0W!XF_Kq7Dd&cg%D^**t`WXP9|)XD;MtlAvo7he}*oeX>pv12ZF0zrDoMbfxUstB7QM)`7nZZ^T zI1)+i+m;vkh1qim#v4(BaLRrC+lN&=5Dw93W!}~S9EBUo6lQ$xwG>XC$-esd9c$Y2P(p^#4+fiD@xsBlb~eLyIy53N3b!{tWs$PN+eXMYJ+QdtAvzYHf4>N@$4ZJZR1W5ZO zq+`xcNfhDeky$MokMa)1gfyl50Un?TMNDyK$Mh~x5E;wEaVOf50={XRw zHF5txlVmpbcNd%EewWIvzN|I4S)*hYPi-EAM5KVaF`OQzSjQFtKf)`@*2Q8XE_v`F zysEk}!TW?H4MO}66{gS`H|SRCn)6b3SD+Ke51#`q8vWgKZ*k1;;1B6WKvd^ur-!$B zBL1qfcBEZ>lij2YXj;H96S}tqjmON+?}&lCnw}!p>p<_<|MS28&A4Ubm~j0(w=o(ds_-(0XP%WK+^U8wVZy^2uAWF}=ns!l z-OvzdoLIpreraKWCF@04jv8{rHKL>B!=hS8Y5U|YLNse8HTQL`;|+X&4|j^EdtUAS#g#mL7o#O(nkRbVos zq(;PQ9R<+wbXqsbC{oqxCnK2=hF(INNc|w#i%rl=QD>hf*6rzsBwq#_EB6%(Qsyzu z$5SC|;2d9Yal-@<0R9VtsZYpFVd)$d@HKWA@sYq^v(ZcU3#&4TB zRHu0o<)u5*>Iy=3v9c!yTjFIKJ#}E+Zc{X>3{?K^vtLNG_TL^YzVV&g2 z)9l#6m1mGiQD7}87pZ7dRMLhW$D4uVh0_xp)^J#5BnHGnH4X8LAqhnfLs_QGMq(dO zts@wV9}i{g(XS2jNj_da_mDKtkDJLI< z8#zamJ>QZkfm8O|d*|(?6LgykzKTsZc;asvj3}%ZASyA`-ayl~-u(1{8 zhm%<)S{&Cn0aA1p>INu>+)y75uV+bi2OkJ&P+2xm=%%XPtsX?nM+%s%Pe%H!96YjL z#gS7&`jryTVTa%X9hGK^Lz-LSq=-$*NzmprqNdghbYX^q4)t}RRrKJKW+{;bu{T`a z@uYg5fB0~2%f~nNuZ9>KKyHx78b&)C zWj@mMV+WG#><*oh7nF3wi-p>jl3umu6s!^xm339$JgQ}S2~`}Y-oU7ACqHPpj#etx zURG>a!I!;6A)r4pBQ0<@28SbRusuKm{3)c4gPw zVf8GHtHk1Bx7F5khU2s$^al}XzmDC_MsXnuj#p0G^xEpWRB!l9RTYtLgOA79nc~cC zO&ppM$)+aZaebAT!52x(t*aq{pUrcmY+ZAt!Y_o~H#Oc0=T|oM!oeX3*$4l~G zDO?3D%DLny7}3^nR0YGLF4_5em|N$2GYEy>YhRwWbozyX2= zG5{hPo+c{$sRSA4Ysx(toRULVSs)~Nd z8d|bcMkx}`Bwx3KZ|yHM%aT7Rt(8f<@gZhJi# zhSY>m^>pMq3Pt8PJRA!U0Zh!649VChAv5AArXZK{3%mPj@&|jtpceH52wZe8&K}k} zY-C6tR8sR!Rys>vqRE268|JkZ3_T&{u%?ipN12U)a9qZrVH+5GVn$!rmI_)0-MNM5 zG=z|C0ZYX#zF3x#Xf3LQjICD&6t$o%m5ott2<+}S+ht~I zg9QSQYm`X)$?DCs)f7bZ269L?MwO@uf>q{qQ%ZR3da8iz5JE1|!KTCJKcK%rOtUN| zycyj3M3Jw{y-1d*QU@@nH+VE%=j)?HT!mtAVbPH9-rd;~vSpk~eRFdu)73bxS?{aP z6tg77WnE8lZ>~Y`ra5O9kKSXx6idUQ1?T{o+aVj;wd=8pjFQ?O_XR{wait_W(^4QCB5W~g3EAu-3^M2v-Z*Wq{n$1Ah4F{@f%6Mk;`zQ=%jx6c71&7%9{wL6YJDkpOPP zSLK|gWMopQJ;S03+r?5KB69`&uwJR0MUq$DJ%KMrjS@@N&KAzx^(K_c^(NG*py`SJ zt?KDW$}5+9rAB!ql5k2YuOlzsIgXbAz2J7mnNIpTV#h`1Q-)Pgja@8`n~twuZi4SY zLtT#!HdWcxrHeW#6bV_PY)Ia<~8wLI)r%Kody^r)(?HK7V0$~t1Iap^** zv`zp=`}%M@Tyos;^L6!x@mH`$wb8I}xuJrSU^+)jJzm_^>A37((;?$rb!0Z5DE+U$ zA4B}QkCZpx(UP0J%gBghc`@(8*0QV)clf}SHH;2wmDr~6ajnjY9jmxV+=OB|yl~ZH zNZFf|_?oa)8|QoNv2nBd!d?dsFUnUysaD$k>pYCZ2hN27ux$}}f)YS8tIn_ub|H@{S+!P_4yp`{O1cA2Mf zS?2Vz(GAY`Ok+8Yk5nn0nb@CNev}lGq~p)i!QTBjB|ts(`%{}L=X_>~$oW6{I?xSeNL@Ct1J&r1}{{Z?s>hiyo?t< z`h}BzpB+qDxUe&a+s%ph*jx(?17}$Eg6@=0+$QsrzBtF1~7*M*V`TW zeaxy+k-!sXwU;E^9%<)6tPi)ESfI{7@|wm|I1l)3E?!=IJY|X|-lXh7)rpa1Oh2$I zj1d*T&X!Ql)1bH|Qc{R0UQ;|L}&#Tt27*O9B``LOY5Hf<8uR=NH(4Y$Sop z%RY+QG_iK#o!GEolks~k*?}yZhG#1g9$((t8x*sRm}6Mdl^u@V==-sa3Vl)6Bn7U) z@7O#Fu?*#gX9irUl8&^SMtHrN6_xY^dP)AF&G-aXhjAnAsK6(GqXDZkkn7BNiZUS1 z1Y{6WEX{@_#Uq{`UKks48SgNowSTC_Vt&D?dxn+T@$4P;id(W0e|BxjNp)C@B_T?x zq)UJy_l?P_7q~T*VAexZ4u!7iUd{SQVJEPbNQV7C=T6`Dm*N<9cT}BenMP%y1AtH5XgI+uwOh9A4K+Mn z={PdNDd04m8K4Nj>5Mv~d>k(R;fs2eDd%Rdda;u5*ChWOOXnly`(^Q{Gywy6qEng_ z4>p0S<7I1Df6IrXF^LLXS=s0rXOq5nhki18hChI3EahiV2%_9WJGTs#VKhwHIOxm} z#d06GFgl|Dn~TzJXh|AN5$Bw*qRAD#=fddd%sf#w)64cT|DBhUd%f8e9o4gl|HL|{ z3uB$L#lm{qE0SgOi@yGs4@9Os1E_lG#jTANQx(V3Bb7=v22dLd|)k^C20nuV47 ziNS~_w5l$9V+59^BBd~Twj(4-!)2>z-?gMN`veY<%h_KGtmjBYX?3J>HGz7!r&xYcde3ELVh}sTLh%!oQ zAMyO)rJt9Je;@I0?|%Nh$G;EHD%OwxP*(Y3S8K_?<@0%6`L|#auPy)X@NXYC{_Wka zL3*G!o9-#al-;t;+&jR3I8PT`N)`IW5O18GnHGp9S(m8(+CHWx`JsLTn{|# zIFyGUG&Q^?(*k=CFo80Ut|Kp#iu)A(RJW9*blUsGW*318$OlI(O&-wEVr7E5zao>= zg>I&YsPBtW%X~v185kMvE3gH@DX4mRvl6~#uYd{I@Tl>mZ7={Vr91LzWVA9kMOy$O z#gc1-&w4n=Ysp3NBzp1r#IP5J--6$pm1E51#dTA^fC9_2`P`Y&@VlxjV@b22uRz7_ z%>QL0R@}gdWuc}>D3B>CnXs%oCnErt4Y334VzKTKr^m-HXS)#>4)6&GzsVoTF@gA)_A+6P zwP5`UT)%N%M^xr=QJF_#EQHEzRfsqh%W{90IFGzv$9t&C>?WvZKhlAf_z&fq3Dts% zB$W-c!z{1h%F%VL0zxV0c;{+vLS&LXLNW@&WGR(yBLHT9HJi4&L(3PzgR z-sm}(jZ_AlY)7E@xxxvtDJQZKQB+>a^P|8f$66qF-QZgIuMAMR)6g(N@ieeq$$@x5 z-QC&`Q~hZu6l#7afrXp^jzu20PZVFM7S7v_oN!tYO3V(;E}pT3rBj%d&DeylE+q3i zA|G{_4a+63Ez>{QBL|Q5eZ;(q0lm7148+zw1RX)ge9zLRNbJ;Z8GX+gy}?^IolTS% zEu}9Xy-7-@ea}q&qIth)?8^u|={`qU{XuH^w@^8Xd62_td6!ZhP7jF(8E7btD><6Z zra2T1Uxb93`y+%~BsEcQ%n^_fYLE^1H{P>82-l6@vGKA0#+>Wh`bc8ijm|)7*Vp_K zmWXIr1|yqR@A6}@5mRu>AImcONLJj~3mea-G3VSHL(JDYF%!Ym$S>6Boy=)Im=hDt za!Lsy6oFgVB!r94D2iTKOuJWzc<`g>K@ix2j%;NwCw6c|q$IaccAk2>+87mq>rf$G*>c!lg?a+t)2Yon_fcly7sSwE%GCUxG*mpRppef!colNF~`mc@ogF6qe(gOcU2 zU5-PApe%X_e-mM*_=K&kl*@oA!F^zu;urE@>gX~99x!=9>JX>HqNF7K-3TS?|2^d` z=pP^Bf~RyL{ipr&iS+kO`uk}Ur<@5 z4b_4?qsGi#ok)%{BPT?Q4U!+g$RiUzXrVV<*fl8~M9DEXK`Rc4o2$30OYH0Zc43F) zwj@-3w}y6}49if(3-_XGzf^fgy$9T6MSaNC-`uLZtJs9h!kx}yB-uoHYIlZEO?y#6 zg!(?5(5ySh^3Bq{oZcaI~Y`)?Kv|eo>>;lj$?XmlKh3a_A{Hil$n!f2ShR zZs+jTuvHsT<`hE~NGM`p-GC;`X28eIFq;Lv$D9Ye9!zKMv)o2B%Nnv3lXCa?w!#BBCBLyM#~@wf+Lg zDASz0$*8QYK|<9wwKBQh-*fQQlEcFF{1YKg4l94FD}q}qaBeVHJ`Jn_*O*D{IA0X&H?89r$m~m?j{7NSVTv zRLq5e%UUQ01qM0za`*y32n|Mnq3}E$%$?30kZBpTyj1Uvl{q-N2AD_p#hF{NDKgT$ z2A{D~>vj9!u*@>$F;VNv3rac4Dcj-F9H7~+sFedijvFRlOWOWDL}Hgq8`Y$XyXh5C-$tN82ah_y&WS(o}MEr8JUb19A;DmFu0n ztK)ioa4lY*U8zwnS4)0)NpaUSh@;6F>ETJbDph9$fO#>;XmyKfzq4*U5a*TJ9~Mr+ zT!u(8@w;NS8Z)D?i3Ut4&QqgeRtYvj?v39iqfQ!!XHOGIpcRum5n?sLXmo3) zEH+z#px6^-j|56#YBgC9ir3Q6xSkyb9dhD@(#3+%!RQr9$1TIgZ+O`iQc$`^%MB%O-lEmkE!uKE`w)`J|H(>bPOOnAMuP=#7~* zEoXT_fQEZB$N&;kD2Z7Mpa{oR3Y8f&t~Z>mdmP*pAb4ur)S9g>m>=gG53@W&^eS0O z1S1>AIcYpc!k5;*=Xdf<{9anQa5D}RQ44jvZb-1kbV3e=R1zbO!79GTvBdnMwRY}2 zVX@j+&K`(m4A8+y-7`ACu>a!a!rcyE8ei*P!Hx4v&v<9Mh3N&jcuZaN0x-l^-S9#? zW*lYpnPkv2zh7HA5qiBQ_*|ko*Hr^ZvLbM>Kt-ak^F?uv7m3-7(h0dwtshymN)lh9 zK*v7FBr%|be#jysEGp5R6O3w`GE;GNqI?=UD(=m-5Qx$KqU?kMqt8c)m5AP|p}Zk}Z=CEKsJJ^S-ovhwmhMlPy=M zHMVL<1S&h(gp+sTIeY}_RNC{1CYfAOE!h*&qRXUx@ZUq~H0AqQ+Jf%Z(fHFKna^Vz2 zBAkV2MymB50g=gEup{0y%@qt%lq26)WcflIPwejd?be3xPhRv^&>s9M{t`$$?!7m|j1ifY$bbMld zR#@?OwS(imSu$B6kb>#!E5ymr(m2)L_?I)32hqUeU3DE(zS=XwAO{`jlpK)^f3*Hz zody2dxB$q!c|(RB5H1`aq#b9Pzkg3#Hl<9RrvDQ@0p2jNG~`HvRrv^zrPaNtH;4V0 zT=F!?O4BgA!dy4KuHs?5tb4X|rNB^Cf%niv?;4n5C3Q09~- zX|&oX!A6B5|cJ80oUzT-G5lZ_N zoSL{eF6f@~Ai&m>^OI-Y)Ob0XEUxwM`8pn?hhKM}{qpiq4UCx(d-=KK`mC_Hn_!7+nVE{UnVmS91O)13l4{*WbBZvgSl(MZJ_QhC?+EZiAT{KF z+I(v(Uh}3j%Ra(ucg*a?1vkG-J_2cz1RPhiwymXYa`+n0sd7EXbdJwk52Hp;{|4Ee zzeDeKoAw@?^yy;V=Gxj%-aFzDRZCs|!=})G zmX`VVTI1iWajoN@yW9Bzx{l4~d-Sk;zn=BZ{p_t6Kz%=fMExf}Ko83g(8ERsz($J) z=y!Pl&HMH5e7~OM`^(1MM9zREO_B-E2DM99y*_fuBI1mTFgk@6L!9ETt)v8DC6DC9 z!+K-Z1kpM(CYGz^bT&&WNTOCoDT}1Dz({76-0Q~r+L9R~#|6nIvVjFzRxo-wIKuEt z-=M|t;Zq|!3O*kwDe4;{k)>KKN+Y2l*vuH1^6B^S_g0bZBn8vFR$#Q)j!dIklORf! zs~HsyT$~DuwPNoJ33(NG)3sz~YhRFt`Pv?dli=n?ej zAoi;1W`s*|M!Va$QZ7#$*K3a-d{l{@kmt=3kYHr(=IM{PoA%QDv#zxVt=XzKXky2x zb!gzmT7u(BxcEZxyjBDU{Vw>YCXoc8_Z z9N=ZS1gq*=oYtocz6xcNJet^$<;+JgW9<(2{)x?-)vqvRq-g|&E7NB%vEXx&3{ad* z>2fg-lA+na0_rm_yMc8U+C^PgY6Hqc7K$p`3>#MMjWS??Iu{jZtpp-ud{70gI@?5F z2gMz5SYKBknZ_5&Nv*#`FNlqbKhMm$T1hR2g_bkj@`w@!oMy5CR9NVp?pHmSZ1C;0 zt|b&xuv_PMIK<|Mfok!Ea5^~WBZM&g`T8i9S!8q4$}XOrV7Htv5@GFbb*{C+{gyCL zwn<%uCU!O%%^%X2mlw!U#TAFOs1RHF`p^+X#p-Mp!L0G}Y!w9^lNbCNre$n4yVoB(D6P6_lc~X1Ak(69-TF=%Y$U15p=6qF$Mq~Gf zn=D*M3d9>zz(H=z=#C=n;syj?X04v?$cAkKlC)u0=*4OKS9{WkfwESs1A69@u#f8pB zA^Emc8LKx;ijb<}Q3jEf8X+Mg1tW@VsBTZMsvolJ*~Y_tbUn#5uYlSv1|OtYxC#u2_RXK?+rha>_42wi9B- zwnHqdd{)w+c+7z-IeAQ!YX_#ZUs(SVdkkfk-z>VDS zz#tOpX5DZ^nj|;yl_DVQDyK(-P<`Yy$c2uA)GC>m?tzcH>w5~hhhpS0;8=SN>SN>U z(J^}Vga&=I!{DpP$uH@ir-AJ>OX$UyZvwFq9T)vlAEW1F5zD?v zE;kla?6G=p(58lfpojsr(=aN8Qaz4jDVsYpFvrT3r z`is~zOQLf0bY|Mqeqx{$5~SAN;P{wy=acDy)1|c`GpQOdD5i3|Oa~!RF#^=~9C>4k&1$gjg@>g|{?a*wVH!jwG>Ym@Q;TCWzM8IlP zxZ$BPE;*XdK(iN!W_&|-dqZPp?kLM!X{QpeWe`*-6Ss#4KX0IbJmncSRgND3vNkH2 zPZ+D^tD1z9y!$1@{B=GtSzt{k!Il3;fUR}l{~Ya*x?QB4b|o)&2yOI+z1#Y_1$TyV zfBI%ys`8cc1)_E|x`J6y1uU8JDV`K&*}_&uSJ+P~k(_EZr!trX9pqd_mkiddSxhb$ zk12IwQ9J{lfv0ODHg}XfQ|V>=iVyq=+Y(q`J^=;l#VNb(*72r`YDweg+R@ z>p4Lvkqxi~Q^Q3%L8I^8r9M#X^swf$8ng?UV0g=cn(1RO%i##mo^PBFs*fj1X%jcw z-piH(jbWoTYW}te2+GspM96}5NkwHar3dC`GCYc zj#ISVOqXGhyHQ{~_SYa;RQJQ`bnk9r<8t#O&4=*O@^|A2r(@Xq)axnq%SK9F=>bmSK&thoY5L=j2JA<98yE$4MX$j_d zhK_4RdV~9(iiUZ{=+A!?fs+^hxI=y)U-RS6@3rEzPi zS3<7Z7qxv!Xg`N%bCui*p<>eQI-Jego!U*c8aBWHW1U+ic0GNpZv-wGwPj`#b6 z^tJkGnQf77SJ(RXo(b_>>FnEaXb1`Qyq7;HCR4p(MtdGd{kLz{fR9oP;6d?1zps8* z<(Gr;rKUlO-wxFD37h?kTMML^mD3k8fSt|RMWsTs5nC#ON1AS2DaQ`W?~)j=Q8P)v)aFaq zB7U(Kc#p*XA%(;spu7q&F7}~UWkNv)pHhBSGN*<8G0+K|65OuA1z}iFjU%I+TMcR^ zU(9B%pP~C?j;UPNr|oL~i-b*@mTX=Z(MY*xLt|fPn(Lj6jyNE` zw=&ce7SqkUTpxn**?%q#Ol;Pr-w{9JdR-$1b!go`sE|w?5eOsDtaZV;!wqVt<>!?1M@OALa_N6v7~->Q1thy`@#KZnC|d`s%28# zX|Dkr6+gfDdzzK(7c-G8e}jo(sQclCWP*%XA3rfoJ6@z zEK75m#?I2&$UXS`Z@(z`A;ruO^IiNeb}1QMIyRH{I3N>9vwLFog39=E`*vI$4_1!e z0k%9?kKs2_F(#vth{d>MLuzroKs&87s8s^xTJc3|A1tj8Jo{j z%CTy+(L)NZWWcDrltMANWvPoT8eB)L~lDV1@9jlu8~cK0K>7!C`V8->JsW8VzaRNfNLd0otPsD3Vyir_v zGpl8=R2;wBcAro+L!bMV&IKxTQq>9^M$wvCAM}(8iRz`6ciwE)4_?#8vRM7rHNit& z;}e>^B10sckV;;NzDA~%N#u+;fael)>PFr^$|##@f!%}Y)jpuI;T>cWgH{0MY&OZx zVMOrNO22qTT2do{BWRAap|LWJ+GWA!w$qg3ta_DF%~ zGPNT!`wY*BK@s(4PboBGhIEB7(Hj6bl*EEMwsY$$6wMrtxN+3bv>8r#B@&f%8iHgV zpmbxyDQr{dJSH@*Rt5JB{-)w}ndz>&eymrY&?)DgDZDGDSfWtn;G;Jhna#Jygz00y zv|;_C-jn&osZ#M#;=hVusHI)<(e;HTtX^UR6KB$djbtgN>1ca$VS&n}sBmlyx9`%sh^D!x-nK{b`h~F6M5%+>K;oEe|J`fnMCO#d`lzZ7 zG|~*DTqJ}BRog6xXv3O=Q8K#(^ZN)=NKRm229qY$_yd-^j${c+N^ z;4)D)t$FPmy#89-h`|p{@;{hV@c%@=%P--GD3_}>fRO>JRYG$Yzy5$YCFKLMG0G-} z`M^@MnM=5aR;-Qnl!y(DMT82xr^s~agZoL5Pf|dEnNY|r(QFUk^a9bTl;XIJs-M5! ztPa^xNIt(Lc>f3oRU2t58-GztsavO219H>b0jpN}W|npew+jf&kWo5t=mWbtt6uF8GCNN@e zSf|%1p-_Z_q=uEQV_ru-isp=SkNbJ3ib-m_RwEvg6FP!o*oyxXL;}Upho_#Brpmjz~M?mPn3~NHe*02iPCkzUGDM;rIYp7Zr z-cYSCDl=5~>w+QwjIr^`h)H-tJfm&UHg!goIJ(99$(ztO<`8^MOl?>;=mvcW-A%rH zlGKDd!oWr4VDr}g{xOv=$qDrHvL`L0CqV4VC^ptC1qJ!wjW2IoOOd!@E15Wg3($ta z5t~=YSrj0ZdY{LjIg{~8MXQ;!YL~`9Nh9Gb(3uisqwG|0z}(j*S0F5wOez$DjVMky z_tjc3=@fLu@J>J`L_--k)1S~0Y;pys@@XLdhlT(UOCpfaHnCGJNB>@0P*fdhFK|CH zB3k^Ok&OAWQIP{vJ!rg6NHgOxS}&&Z7VtkoB#N12m)I6@vlqCr03;ggdraA7kPU*z zK`O|xJVPui6Hh7jcY7+{Kt?^{S@#aPySBpMxT~@kdM@%mJ=m40(}Q~@d>-g!pAd`@ z%;^u;A}sZW6dEfyfMA$$xDO$F*@CSS7ubi>DcYvJa9;`UY2!H**I2wW4wNpw7hb1w zNFy;pam1{4mD88@P-sF*C2{1U=5I@F6P9mCRrW!}ks~H^RcALFh!Ezp>J&T#%Pi+P zvmofbb}%qG#i@5Wq7{uOWKhZ$;H)d6=G*}Bg0Yw~-y^XmC_t{ggKXHM`d=Hv9d?9@4V)k3U6j$+SW`WlscrGY$W9&oG$^ggVh= zwSU|PHsk*yzBOPke*gb1clQ?I7H zFsq^;#EUrFoEkm~g51bqsr}jG-s0`Y!y!&u`Wc4%#Qw|XPdiuZeW^8BmRJ(UXr7-G zGv9bwzCCbFMM;c)b(=w$!(f7kB~PsU1Cl<68B$_hSOm%BPz##fpcl9mb-G4o?y-tr z@j}koM53w$Sd(=kF|;Q+=|>095~&j zGUar#-!VVp{2hLTrym`N@0+auwCQ4b_SlS1+Ke$9X+U8qrt6pS2o!;4fFkW|084tB zv{NBtJVVe>`?nju`e&FO`to-+k%G3EqP$2UNovP&a%dlVjlI+0P#P&{HgIT6e@aUV zh_FTo-`Ox@mgpDn7c|KzLPUR?k(Z5bDy`x0o!uV4e{WI8sth z8jyo3nUIV5v0S9x_t08K*0iytF9dLrBOi7;{WuA_w|F7kTfKAhH}*r0_KtW2umBXi zS7CJ-dfDqxBzZ!aqPQpI)TrB!Y^dtO7b%QbWPfe0aIub7_GLPSA$;!;bN+c9Y#Z=77ysKSi!#5ys4UUz031Qnz_7%1EPz=AY{p_I1PIrJ zn-bdON>X)*k{};|+?P+&B!ETqkg{aLHa+@$EdrHiDV4z7!jBAy zYQGoxmF?h+I{G+#shlZgoCwkg`?|t`j-JHkE!MG1@|sJ18$fs3Nb}N!7>^G*0q7lI z%z}xk$u2D86bTMkGn9@18Q{t~hF0Yu8hRc|fnJ)^&RXlOsIa&#oQxW3$c`4r4Pg^; zPKcO4!W29S*C*Ky*^HA@4r35gouzwWf85gFQj{{1q(JYa1&_A-N+(O{q=AzqH`0+` zj7au`Hf){+0{Ue-@ta;F2!L_n(t@?RkvoEjXSjS(rD-(@54(+}uvh2@>H-H*7GVcB z3UFjoTs=@_wnJZXT?Ln{sbAiDrXc8CDK2s+T?&m8Q{@<@n`NeubYyqbUlQ@{k}n&$ zhijyb+b^o}o?gcEt3V6>L!+o80H1s630LVZmRvaDl`&1h4vk6>%IKl26o{cpSMXrf zOxWWg zq47}i+q;=4;o=G8yK}AVa%TWHuO%5j2B2q>^IkvmMbAurGWaHy7wWG{iSu!>9{R>t z>7gXg^Hu3VRP9jQB9|koGdKh}WN=o4(E8!=CJ(2|iM5mjO<7$IFOuu3jZ+@p%t=-n zBJCqu*Sn%8Iw4<2|C@3zOT0hDEG~&qW$ID{Wmbo`G)jAN%CJV|4Ma(({TF@RJegRd z$<@@!$@^k)<{_7$LAcy^C+{`gnZ?7ioL)+yMyHu`6m@oeRKKTChh~;Uj^&>!O`{X6 z$>7ot@!iTs5d{GBNBFfcaKvLwtI|xeP)MRNCFHt$74feTg)mt7qjsyphG7_Zz& zG%!3`tc@+RyyMuY*AzWVRxfW=zdW4~ZM-{X$<|4?2C`et|U?SUURIQ!ng+ z`|gmRo%?5$tx>j6HSxmQ=&MH_?5;ZZfBb{rdaf;-`neR!|CJ+t>%n2C{n`OnDiah_ zQ65~@e}vBz`@o5JQZR^DhZx$iuDY;d;Wm`c9c2&HZg_xw8|F2`hrv}qCb#<3 zrS>0**;8Ji#tT4}K#j<9#llMo+T`;`vjo=PeFHN|>I)VJ<-@jKay~=mFXO9CmxrVC zWo(L=sbi~@1lfTC7KrlH92iJ>>yuDUR=hMX2h(eJ8~mGgG^uCF;Q0gb4Tla~trwT4 zyu@i_^9T(}G}G*2jc%+q22=4}YMVHp0UMy^t~t|F%}}WIP8=)xQq{;vbp6}BktYMc zQDXbq{8k^S^aZ2vRx;Q@-?YljP`k-U&){AR~K?X#$F z=Zz$@sBEfK9+FzN2AG&;>0@R>nvab~T+@uLNV2XYw&t#UIjZG^p*JlbR+9gnmz2H1 zper$Z!npIAMz~pKRBj0SKkmMEl{jD?!(Cap->LCgCUI(4mdrS~0T`0;$< z*e$|d_^2232i}f=#1K4GW+JnP3s6MrBj$_nN(3WIy1`Xs#K?I5?9~O55Z}miNk4v$ z{qO7G!ssrG`cK=v~Qcry`GSvpI5ulAqVQXrL z!hoSJ!UXHfSZx;7lO9Pz4j{2T<($)ne8v9;ohH zexU5Y+S)Cat}IxJDKWL_x+kuCvZbpB%F;DkKNVzpX)IU%5Lb}N2C1HxKcpJ@5#5cmtZx<7t(8op5Q_(+9sa;fy{?5&1kZdF=7rx{%%jB4QE08Oz4#(Yx0=(IXh-05 zROpaX>Cz*p*%3Q{m`@rs7{S)W@f2lfLkse3knjDDm6`I}^g?P9yK?&~%0u@?$_l3K;qU);2mqq1)!#w&h18}&$*bB)(x`+27XE9m_JU zVYJdLkF(5|HGZx%bt;45v|s@>em=p^5j@BZe$NRB`=4pi5m71-s587%IhKjGXR87BS%#H>43G*_eTm zGhK^Pi|HQOAcRrVX`)Br4N3_j)!Llxeftla{F`=Td5J40N`X3$9lca)YcLvpJ$<$B z@ZNOS%Tr5OGR1>t!TEQ4cb|VZM%V6y5b3B!Y`|19N~Hq5AxDm2DkVxCyUpg2^M|#M zot70DpkqzFELZ+Ak%V&?$B-RODR>a(AVSuA0A*qSKory(fV2o5&)m$qUZKiV#5_3*8Kp=MZz}thXt>jzfxA?-5 zn9OLHBob^>Ju5MJIVqY(Q4D>*U(Ci+&B}(bNs$i;t=w=y4fIrSCBiA$BpxIsZ7 z9bs-Y*IoT~i7JXPZcm8bfhnOb{yQ1rK&ccm6fK_k^fqMZ60 zNw)QAn0VTs!i(|mnpwfErFq_;;wybkBmK0Is(QTBI|jVUKy?*y+Go0=)!}dlhuK&; zV$Ir3oUx|)|Bm%yX!`%bbesR8e&_m#t*o})=^gR@F1@Cr$o;i4ulg^e+?)3(5bx1z zV#XGhbJRM6)?*1J71=i#92m__X|tC`Q^Yd=1Hm(SCkLiQGK!#Muz7R;TiO5Fn+hzD z{01Zy#)0u2jLA%Oind*=XD z)$7et*DXudZ9JHbnm3JWn(@{3na?b^(b&Gp0&oSEGGaC|$ct(#B~-iG+UV%U?DlA$ z;lgWa!=>5D$F*@3eXWb|x4*iU6C32Wo#NviZ#>^8@^fPeh+2#+L6(e`Vs9-0Gxdv? zpsLSwijRYL?t1A=SaLz4_^Y`X)FZvk@o&yMbzsPsfYt z+%Qd{eB~=S;Xcqyq@2-tXO- zaJ5pzl6VhiSqg*)%*#JN+*cAjrd1%|wt|}f$Lx~#suc8}tT_!*plpJ*oJ_LeJ;}Lp z*YJd*rqQeWa(#2Yvc*0oS^A3BVTokar)7Xq?k^r_w)_3khP$1}#}PGcS-sG&66rW_ zg<`@(B*ta-mnTms9-6#e+xum+B*!xQ?!YH1Ip3jK*5>y#&so~M?6%f>v>sB~Cw|`# z8?+;=G7xxnKps;2xKO1*ZO6z@&eXbk2|z+=s+PGvpD7`DIvotRNHvO$3*>rJ-!q#& z>WRKbd9W3=$|ob%zd6-`9C8+ELy?ozq(%w9jq|%r4=g+wAs!f<(wa_D%3l`@Hs!>W z0V?+)fUZU{7hi888P?6)!h>}z{Ox9_RXaOx&{_ElY2c;CNwJplS%(29xc2&Jdp0lW zgYp~Q@~tL`|Du=J)pi-GW@eyxJO?V+5luE_z??uH+uU1Nmj;YvEro8@sq&6VH#PiE z%uFY1%Rh{%%aU&P>wnq%-FMXn+$s+KtIfc$j>+aH;L;d{NzAOe#(O>oXYIx-)X%n77P_e3a*M%hL%8j zl&ze1S#TninHdGo^0j|hyry6C^@QuqicxMQ5~crKS%um~L%7xv_X7?WwQcRWdy)QB z{9|E}6a%4!I%Bx2L>{Nt?N^_i&*ux{??u?f*KT=?hZ?m-*QYul%_o0Yyy6V5Zq35u zQM6Io%Tdg=oryUFK%);m4R0g6i~UqBeAL0-9(G}d18M9|E^F&*z5A=f$5>yai@zw6 z+}5YE$~?iUI5fh*UO|tmrXU+nnR+>WEH>6deh2$1H@Ua>B4+6oYR~mVk&jtC!Y)8d z5oa+xGQCb+u|{$f!ku^uF_ug62UCp+IJlD68c6i>)~*f_`8uZ!e)ZCmnS~!uRyTjI zFJ=RZ-aK(iPe|#^B%z|J>SA9>@Cbk4k^N1CerqtcVzgP2$zT8Bzx>VLQ@YA+e>qRv zAc>*qm+cy%=VEwwdRz0imZiwc#}iVPLYSu)?W$6qxfG4HgMXP?c``eBzoh9d|NpxG zkN*CjRdu1gjdVimafb-kgt;LfitS{z`+#lo$hDa4l8U(WSI(c_R_vC7fF(ux~p0$s*!Z%02P4^UI@&~e8{dG=FH==7)7Ly zN`q`lmPIQ+Sr_qAZ^fg|y$=@&EMvbsuHQR$$Kl$G&*CfV zoPSVWO1)!}_@mx26rahXBEuBGP~Y+I{+5>V>*GK9tH1b8M(Ao!X`*>#OxxGL_#c1! z=T%z9{5*ez_V~5_SSpa$Cr><1J`<3o0Ma4NjLGoLB_6T`)cm_cKaaWR)BMq~C1eE@ zK_KwV`$eg)bR3kaM|=`-0#Utw!0ZdEh=KuU&oFYnk9!(Fi+lr}wJa5CX~9dWa;Sdy z^}yq7YTs3n+P5Z54IxG(ihA^{ihe}(I%Y+xE$_h%qrUy0PM+rmFgmY4bndQC2%befoozg+ z#eP2hv@n^cw>H(qLVb<=e_f|f8iIRH9zLKeQPS7SUuw$REE@6vwj_(6+aFi`Nnf{( z_`9CCrFf8ZDW%iwN}lZ`hYVM98MMYxoXx%7#}60uf56?)pS5L-EY=?rWbJG#;NUKX zG6jHK3Nc+o(T~+(>d}RlM)b9NLEF^DiD$Z+zK~HvgU2Ce%j4PRRpS>&RHY z2!!|M^^A}Nv6z*0<$rLqQ@e_~VTWUcJq^8{HpZyMQErNRgikddj(#1hAS7=#vOGFj zp#U9PrTib~nWK^gSZI#psW_6g5w`I2r|nrvU{JZDar3L|uI6r4Ags6&ED6?S%LCY% zU`ZZt{j7ahA=QVAwTF*On~$u`Q}<Xw2H>0~f^ZeoBY@)k3^VHqxPWF~Ad8VJu{T>(*oULj|IOzTeLfpFlR>d*6 zh^^`0BbN08)rpvu$-8$Ryv7N@8sromEv+A*qi%MGy@dj%I`D=~)p*wNezp0$CniQ` zeFtEp8H-F0J7G57n4$Cb!`}YlZew6u?SWO-!*Bsd9(KIHIq^pi%$B3}Lhl&X&I85e zW_nBW4>S*W>FsRJ#`4ZgXsOVs^Vhs=@~xLO)|zSEYmdGRKJAtFUWO?&W(lj2&9R%O z3V!MG(=Qm*yVu2jczX$Z+m(#$Z%);8-qqevd)@n;2`XAIHtwDD{@MAkJ4b%`{5SVb zFE3H`{u<5X7a#BUue#ff7fwxHA6+be^F<$a`>{FLF)vQKAS}s+b=Au_xiFwTv_eed~Nabh7B|uZIRpfT7SsP*)NtITK~4(-&t!+{o6+ench6Alii(nL~cG|)B2Fzr|z(P zNY(z5Z!3=%t!?YbKF`pvW#&aU}xRi(BhDURd#kq=|$iWoBp^_oUAD zuU}5<6yhV~OF=J*0aV{mBn+T=hTr~jTQf3d@|SM{++q8@Js8hKrKx~-N?QNO$i6wS z-ZxY$M-72gZ$N0n6crY4b!(YSpn*4Im8{xVzkFX3PJg)AZJzNrjMS5dA}^TwM6}CO z@B4wZwqEw1>7Saa4wlhf zS+GwwQs2^!4CEJ_8V2&RUZrUkyhd>Iq2DpM&{*4k5jcBBKC=8De-!=DrotKThOq=; z!cm088FTt$X-= z?di9)0`usscrJEMQX?U;M)Vy z>1f&#r_#WZm=^i}R^~>f`I2A~s1OfJ4B0mu3fT_P_iu00p zBxsc#LN-ouHdO3WpeBI4PlaeioQ{_WNhELS)yb%j@VAa>!zroW^iUZPc3s+RQ+qQy z9mw`C$3vHeKvrxvrno<(Ga*44O5ab-ZVOMBsQvabRmh7|KWm?How0oqTq zujIwl=+oGeJ_&b+Iy9CuZ#L-`EpX0-O+;wt$(5K&>7>P4!;ZUY4N` z^ae*tguCioH<7D1U>OZmU{-BSPiZ#R2Y}kOHC=vIy}v#fr!uX17&hFu#VRfvHa&w66~>R&v-=U+F#FvBJPFDURj zQAU&u5;8cR`^&#-0N*yp}L08$Io7OJhqaJ@a7bg?{KXdOA8|k*?c?r?b zUDaJw757m^b@e@Y&b_FhE=@)FaVssJ4m-kj*p56AjtDs1c76Jwif4LP88si!qau=yAdCzt-OS+g~{B%yaLpD+Z~| zv?IQ6Kh|D*J^t&zrX+Ue?>|{K<|G@zkx6&U)^3|zIW=cnXtS&e!=lsC<6+4@X3y0* zZpr?4K^}Iy=fi%*3Ys?$sy=A8TZ4yqI*y8GEY|_YF1H1rTS|Q{KJ3_zT4&f;*{Su` zo_YBe#&@#+ws(q|QEJV|j?>5P1rsRgh9DnDl#6=|sk6}?;8(0RCvTeV>*H2?wIZPN z6x0lff)r~f{hem30ixr6`|M%qg z(;uvS?h{UfG+=o#J-2<$LPr4~FGzA+mU2}dwg%|$AwW7>+F*pX29vs>w91Dc-%;=A z;kepKLw?`(qz<>?ctA1}0;ORS%Fo+wt-Ttzsl4cj|K!;TX(z%cpE7bAcrs9)4t(-S z11JAi9r@{}j(pa@b6eoqCHH{`TcT(`9eE~*8@_DW&G%F;N(tXS^{x2?mHocsURLpP zmO|I>&O#Y_<9Hogx+Wg4B)ly5RJ>0U+p|DpJYlu%a1_gd7D^a>WU1uKxl!`)ZWsFW zJ)t^dPuCo3*08kN%Q}M)T@-c&B#TMC)oTur@~P2VemDQ!OS)bU&8(Z}!*97^q9pV^ z`OndlJ>K6PKA<=jd{FVl&&KrZq2+Nrl7P()ILg?K7oH$a56xmR?nU{4V;k9 zY^Fn}Dfo!~s4AP622iUGpioHli9*o;)UC9tG+r1$XI0wHqakKFm6kEp;T_5fhLf#% zN)Rrtq1*3{QX00f@QapgpxAA?Muh?d%JcrIg8}+)xBlVqyb_2gzn>jdlo=OUm!lT7 zD}A~y#`p*RU9EVG|3DejzQzH4BM4ejlj#9f;p*%tV7(tLT=$UI+cUf&_pXmF$FrY% zdQ_A)Ia2EnK8g=^Z$=o%K{?_OuzK>lpmgF&khabej$tBiq6-JmMGSBK`J&y$E>~BH zvxBEEai*QY(qy2LLY0us4QI|I^JsBs<3vbA1>qHD6>R18y9+N5Q7$@1{)^o!Wi;UU+1dg0XjiuA&Z*3Hlm3^N7GvsSJJ_Yu~+H;~Gg zE;r3XtH1)bp`ruGF&#a)XOv=p?@7_X!g$#m2%wkm7k>PzoRVt9Ygz%3&3>SM*?hex zt1?miAg;vY6$Wh7?9-s#s;~mpx5BhzMH~9nLVM@h^XBI*!*L`5BMs?jhOY=eX?($UnZUA>uzg1SCrZ7%-XZLZg!%?5+Fut7 zBV7FO242$SQ(%z~`0Y)1tkM}{)WC#y|C}ZI~KhV4K>a`;%8Az#nRcl#Q zNV9cw95vvC=CI6q_6Yk&GxmKHmD4pLI)Y5?2AzmpCxm^kZjBXLu!_xv8G~C)@!xWE zJ&=>st_Zg`AlS$rQAh#JbHyl4%TI734(OC_w%7ZW)#^PXFKJMV#f(vL*29J2AV)c+ z5|$IRBrVTpo|aMom!HZ=?xJxbuHiw6&n!Oap`960oh6`uqM7@|3qfR(u#^GEbXSWc zecWbG3C}CqHLQeL%5C$IoAQE&kl2g*!LN25LvqQvU*TI=*e_y2;aJLKXyNue36Y)K zsL@KD(X3=Ov!9n%Gcp7UnJTXA{KE`M-OPD4{+Etn^W|fcBHPD0rdE7K;e5DcN_&y( z+|=;2aTh+1uw{5 zj{lhhpg%W0>ynC5&PU~6U^&C_%J=d7={{;3&(cvm8=T+2F>(y#pfqf=XT)e~LHLai z?@%_xWq}$_v(7&pg-KCv`YHt@Lb=^awxkqf7@*=2wrW31V5v@u$w919-j?itlKx3~ zQK(-_i!Ma!(=t}JvT{9_%e#@%>-+WgHu)pFRHU%<5Pg6it~55KcDK@}xECR$r5$IoucZ#d|A__$Q z^4UvUOM@cGM0QKvifdq6wr4CWD=OjB z=WbG_1eH3BiR!3Wo|!;pYYAKwlLbO007Z7>s|)SoxLhGwC^O@hx|f3rXryB*HQ(!* zzmGR#xy0FwD+Y+Ia5257NyEu6*d6w1ZwV6KYC=j^{mJj*ov%>tlL^_?{7gL^U3e7N zeYv3SXHZXPz!b?>wIFQmt5B-8(p<77FU!?ZMVJsS@K2l{46gfh*Z83qc~SAFrg3F) zUM$^+)ny+-tmhI2n2SIBgCBgmi1ip$qj)q3|9~>Oy!b8_@}<#x!Jd}Q3iae0K5Sixeeop!o>j=Dnn+ekIYcz4^?COO ztf?4U}HM|HE?-r!YSJdK=xXg5YqXi;F`P#doWQzKq_8Ik$C-hp>K)`+wxqw^& ze~`*1N*qJ|SXLKO)_?eR$KtiPcIPnmlocq9&@1FtrpxbC{yklS*NYW$WqnsZ^I64g z{GLtq%FsYB@xAoYRF)?}vA$yn>Em~P@zrOGR>!z#fEex+A~f*p#6mVr+)E|lQ5qk| zac=e>yMOZiUoV364MWYJSEnKM*ZN~e?>H+sv!x5G!0*E{4OA?a@3%^8jDsMQsfHD> zZLzYPqzlyW-Gs-hbj>7IIE2!<-w}yHct9*5gUtGTL=}v_lmE<)s}*SnJ(1}T2I+yN zxRO@w7Pg{rDeT=ILH+Twu4rT3ttv9USgV(>CIeAJgj7@=mlJ4}br8QgyaWJB#H#C! z?O^UAw7RxrMY^%|DaVAWr91Vdxx|gqeNN@@@*Vv*y)rUYK8`NmUT%AB5Y=!18L^Ct zR-I!rZc_r;o{Q@5SUusg{iHp;)icN9z@e#>pGomyVbzD%OI855bAF}2$-VzLuybtE z&KO6NmbIwaYNeA0hY7b`aLJsy6WXak|Fp;ooV-J5^~LcLbAeRbJQGX*5B@QEbqn z{IY#Q)EWhJrxspk*^3&Kw>JjO^MDtyt}2TA74&!!>R3@G84gbG)>X51f=Eh#4Ce9M z)>;d6$YSrqteez((!>`{_a#i-Xg4}A24=_96r)N07fwQRG-Z^`4{0BDBCa~s5n!U} zeMMtOCF7!MB_0EO5=-Xd$hr@U>^}QhVD7y#(gmekjJ3~6b43wC{GYHqm8-aDP)Dk? zx6$3HoudcN->ZZD?#e=ad-a_Dgc%x&`uD`1Y0P}E<-yAG)Y5@J9NuwOg+Vb>aTBUv z47>*uJRz7oM2P7nmEUCb3K5-eHe3BZ_Bu*K)PQV-Dy2neA9aFn3mtaiw%C#%#jP>U z8kRF`f&6(`o>YKhjncU7OtD$~m^M%R9InITlXp9f!nk8FlXdezjA#L7>oX9Reypx) ztcVqcN+yW!(lDb#du%+*9RY&Xx^?4CY^mZM(PmaBhgzsTnwS% zkYy)=K*Fjl3r6k~#2S!W+L^X18(Ha!X_rPCW09ysC)H7hX;?c|`%U2)E2aHsndxnS zW?XAq$c`5$f`k3t;$EFrWRH1iwXv~+QWw31fP|Vg&2AvT8ueP8hQEl=s4;Y&h`rm` zx|6VqlX8wiFL2UsS*k1-*YKN6s zu^9d&*JeqX+3~c&e?$uwt_IT=;}S~`{Ftp^*~CpXJVht)Z(TNEvW&&ECF)R?{X|Wy z;`x?J=34bzHB`8}!jdi^d*a%$URS>odRn0WUG1WmOAXfBZJj}W9A~YE2Y@kx7YMVs z3vicCP_@Qmjj)A0-DO7q8|4U{aCAwg1Z{~tnEfCc!p+kH$rnM+PGr(*!80y~E?agx z>xyow$*ovHOhw~zupQP>GkYjhqNLr7F#X)Rb%cve_kgH^S*d%1(-bZ9oTyihimYJZ zX!2<*z_#d;8kroZ(b3Au07T?%AFXyU-@Dox`nliC*xKOEajGyHs>FY@ZTk?SqiodF z7Kz^7X}q?PuHW5qB>m4`_V1ng>-2N|-Z{wNmugT}ep=Z(+5Rj^XXi1bR-Dd?F7A7cz$ zkbXnsn%ytbp1>E6>s`P&$W-pP`t(Gc^Zt119A)DXKZV&VViMQSxB$a7;T#pt$19rJ z{lZsO&6Ww{1Y#6I|1kIqRS%i+GQFx%{~mvqdKZl?1GYPcdj>-(5b{Pji!$up2kfp( zwJKETLIu(OKx1bNEcM8cspk4-j+G^GDQCv+m{YRiI5448Bi+C9nYQO#1Ggs&Vik8C zQlzP`DUSZ{Yor{yI>1X$@qz zaH`q zN}*JE8!nPjp?trEVkH=6Yg&WMa4L}Q(oi0u0B=0L0N-KdK}}A?lHdWNFf@&8s--o2 z!)#kBj_<44iyHH;4JmfxG^=K*i%W>PSD67l5CnF$J4T8xeDKNVIxCGYu`%K3irh5M zzPOG%Va(7^pH-O9jXL-i5rUQO7P@+JI-Z-&{6;fUW69O;02LQwgIVjMfw2=&U8T{e zNBE!BHpXci3>>L;C*eT}Qv{A^K)jH<$Cu~HtU=c(B`E2A<|WNLdRt0)a@>sA^Vw%X z`!FhcV(O=i2gN`*w>S5~gC`rU;h=YR(&vV@JL$PWl7Sx~S6FDI2{Ei94=1OK_oPI) z23AN2p3IVr_$^2nJ)|m}m~-J;AEOa1@EufiRfhWeBWm`s^1!cyRWakJMJ{4*C=+wM zB_=yt!GbbfUDs7fy$6m%AwQ;qOhUeRyh6Aj$inOwj&P9a1iZRY-|Evdqe<1)o_t#T z6dB3+iUk+MWTQxDk)DP94P1If*SR#b|NcQ2B+~`)wzU>hI%-jMSB)lVODbu}#tD~z zP20NQ*qIwCgGje`6mohbNXpF?F%DB1!cw#;md@II|bMpgpDt5#|QMti@^{^)YaL)O(mb} z3guq$MINB5c;%#aJokF^4*wD($4oq886|U)-z6cimT%iVfv{U%dVd|-pWmzwbdQBW29-8DKB`w^=Qy>Jv@s|aYKWs&A_FDs9gxHN5Gx6lRn*V|u z5eHc`E^!BOa{YLSOczj+8tS?ID05Li3oe7d2>wQS?VJ?(uj+@8g@kZ1S&bk^Jjcwe zqswFBQJkzx70ODUkPodS`hQ;CT#O~ykA)NOvX?rBX89OfFf_(xD6g$+)?1Z|*j4{# zc5Yh5$T(Y4T_q8JDn#HXj5rvrFbejJ^9*y=8JuBQxGrp66THpXHAqJ?oLO&G;SRIy z_evXP24f(#sLsZzvUZD?oRXjq$`g~8KMiE5xUeO~65)(;o-G=aLW6M`ZNyJsWH+bL zLam6LS-Qg%5nVwl2JG#&-!YfOGvp#DOb`ZHjLKzl8yz~Y6KmM{h7YnW>Wd+TVav^c zXhB)G7=z0QPBS4Mm=i>d1LxdgaFqET?QT(4>Lm6xgPdo})gh>14n^uDR<4lUXqs8P6Qbm6@XrW2Ju+Di=eu5QP6R@A zlZr-dv8i5&L(GtLTak?mlnZ8B^wQ#hJX#}_OEa%|mnW0>9lX9(`e$RDVv<{rG_&nB z5DB0Jtdxc5KE?B@tyn&#W4mO;1a9keBf4YrTYYr|B|MzDWYMa&c*YvF$iZ%~rXO>K zt5*4ZI@8SJhKF+`jhs99jvk3Ie+{hI0j)(T0k9W^`@v;ncS&bE)T|pq7Yve`{tz4` z#X#zT-#f#i1YIr7-xj#?Nf;0|cqXA`q>l*&%SOlH9*@vcW2)@A!!4RF>_})mWrIeB z49>-gz`8MZ(ZIL=Yc&Y%M zvATT6AF$_S>0sUSzZ(m0RyQh_k}0xuyhEgpL=4BYAVi}skkL(t%CB7F>pU_uEm-)2 zB0!LJV_jnLBiM%VL|)H3j1uJJ%1=#vc8qaZ+DI@lRCmEm7iJm5fc~XY;5fI!k-}O_ zNyu60N(D^`@8H!atOTp!y$~gYqK(=+v;QY~N#A)0-zjVfr@!QF$NjQ_*izXRvS~a} zje4B`(eL_7B-h+Gg&2jn0Yj!^$qfjvBqmvspLhqLFMR*)_OcmbfKv3r5z8D#1O}lC zUkZazPLbtyX7CVBA}M;fX9-obp8c$IxZSeagR3ZXp?3;h=%A@zKUwRY-2n3gML~vT z*3k)k_uk#d1=P9ncOR_pMUrOv<=nk%9;^WevwX4=;PzY`QbpmM`o(L~fr^JPP6G#p z^PiTqsYHfd4pD_xoQjORvf{;THkaBxh;z+k&!TW$)V7Krh%LxsR^Q!u1>LbVpcFMz z>_;2LO562xziG%yVvmz8=v{SBgP3_A|J^^`kis#gqfmYbjt48&(gQ#_xzn?)v(HT( zX$z?OB<;Ng#}6t-JfN`0*1t6VJM#;46c4QvyuB;m5>ZJfEXCYEIHY@&@+<+i{A?u z!+DHWG^;{4x{m3QN4@}^-6lnYO(%cPm&fx6Q+Io?2du*{Y}K+47UftdI2DhpE-_$! zRBDjL^=Bzpf$?c=?ef_}^O`&nEi2ZqLNL}TtWJUI;71!xE)R8%(1YBH`EqB_9c`$% zCGv#@`o;}1u@hC!MlX?K5o8@_bU}Ir>b-(t;E+bt+{M&EO zcpucZ`ujg(d*~fKs!2t6p!ua+uY`;fu-d$TWBqU8kM##r0t~M#(F|UA_il9==82=b zUV6d7TIZo53iVti%h}Z3UYcLh^_paVG}l=jEp*Ny3~SO$U2%sH{{w%34`7N!L1S{$ z>qDd)BP1m?EFkR`Z*VT`PG9BtxeDgC9IKV7R?G&=YD~XWTZ_3@;+2ZSQwKauQPs~x z*1@!cP&%7(%-&}7_IyXZ)2=fxg<=62mdVWX#bcHtm=hjw+E zji;^-SiWRo*cRP#){17Yqa;~s6p#Ta;xj!$3OA8A0eKC;Lf=_j_29FhMa2zEQVBrP z?IT?xTE;sCo!N%&pn2c!)>?y|!O|Oq(=VFUh6K`@advAoP<~qs?%cq0>H%hkjHyzVMS%t z2kv}}`IZTdr(DHyNEOTo%Ic~RoL3GAaBk5#$@r8vn_&{TE_YdB6C?hUq}^tQ zwzG#1YQx@eFnrUkaS4^5fuzzN-tP^|0j1xsHs}4}WI5Qf?ts#dVP}BUzv<~D^v~_t zJA-CDY)4V<2ML0(pNzc2F{@VvW|au39mV5TpQvefaNpiNXJ?z^PLB&_`%L?}OrlgY zu~U1!viz{UER>)1$UL$X+5yK)J_LY++1w_s z7B)FTb6Jw)Tucp`Jtm1w0HS@s-L0cE6*$(?7Fd!Y>S%m`RJ;;Rk{1y{2FkI@u&XX5 z=tw>Iw4unx#a1t{2?IcC>FLSUF>4*w{ zZ*^WPi`PdrAJ}GCdT^jsxb`|=*T?_n&%XH0Z^?IEy&1jTS*9t7&+qa6kH7!dwhgWC zKM-bk!w~S+=1d-H?5diT~N6k}jF%`WClKDJWy$|8r3w;IbV zqKPZ>x!7nek!0`f8lYnkAC58Rw*i=6v6>AhLsOT-ZDy~4{WP-uGy=;NOBptontd+u za8B7?Df$v#7c?Vx>OD9=CGE@&UDEPq-A5J!<_8~{oXgh5weqjtQ0roRL!}FO6;6o3 zTQa0`)J$uwd1a>pga!4w!41T7q(~4@?%vaFj5=nz;j@%)6dT{^q_1trYgCmA#{CH3 zcx*K(N+?sEw16QKw>=n252{5K>Qe zEQ7?l=csec`A))$(u)0vXExLFnJ0MGAz7y2frc!_J>0zp3bVXPM5p(I6#gGzcxR#b5~BDN2+E6(R{9Nd`AXphtSd13ey}wdkc?C>ZtWi<-?T)Tw*D zHj%$8+kXo`j^=xmS6H9fi8ObpMkxyv;_7)}L8jrLSf#rOVQjk^-BT^?tAoj5F~>_2 z$S^7p3v1ym1VkH29y_y)7%L@p=BzHIN0+J%Gco)w<+Jgkxti$|TINLS)Q|>ncW`&A zaLk=Kg&yq}_H$tI7!PM)sLtLx3_luqVa6w+8QZ;O77s1hn>z^&JWxOxw{x~b|$<3o7-X0}dSe66kZ(?ZT*|1?g42G1tlZKI%7Q+5byrw1 zf_(-AqPr_WeXBULn?3%}``P7ZJ02HIqO>|{1f>B_pL=W4hv~%1#b$~Y`h-dyB#Ii* zWEF9RHA?hQbx<~!s@YILCohMKd#!>Z&ac88l*x{7%I>;Rc1}VFD+#KuWF7Hao{1kW zTzFLTjSHN5a$+HRVEObaBv#SDNgQz)#QS(+=-D*-5??G^9aBcYmVjC-2G=lGsptQv zcDMI|fWd{iPacU9s6*u6+Sh?4^tVorQa`xxp!eDA!|YN~msQ3{A4tuz?*whBd?4^M zy)C-Pf+`OAH6?$*`D=ErRyQna6lZBSUwJ3QWkf%4ViZ?*;HO89ko<6|WM&z63o4v2 zxvAprgLT8JJ_qhbJxKPN@~DOg*xsqttr@!CQtt4XsUTt=-mW>?+Ni0$slc7xxZp z77PK2Cw6{Czi0$V*3gEmp=5wQu@PM8s*Z<3;TZq>#A+=EXU|wJmee#*F>kT~at^rL zokmM`-68ZTEEo0GA$}54(z@I6Vn88M;lyBNSVXTjDzkVuD4n4YhteHSC#$5sj18UX zIcx8&{ju12{E{jiy658*74*-Y#gAs;E$R zj{01J0jx$cy~EGmSCF9;f@>DMH0lKmRPK4A7F%P}BkwDNs`0z>q>*>tw|H0BLgY1I8>Cr@KI%zVgopsjm`xk7+} z#GL|vGx@UBGu+P6T#+FI0A9dMqJl8XhbJuEn(}HfRT))m!qC|1h*!364KFBj>x#20 zOiq?DKxTpsLCzgek3t)^pQa>&q+2zL6%ZX>yq53grFVWm5adDls2T{jnawVuM!{Fz z2xFI@f~ZIAlEY|K(GoIaH)(M+SyaFAbGt6tFaJdtH?Ghs%P-B?! z01wh#SM1$pA&8Y(U*e3ia`13XPzny>5nL}p5fUPVjaL?Hhc#B|?6n2lSx!;=#BFn9 z3^O8}3vTj?TcXb<8A_u1xOVW_FBMacZ*7rE-g?y}EPa!h88dqaRTCn$3P&bK={?ba z;8w8jsF}D8X1sH+X&a5tiaYPHpmtTpk7r9r0XekFooD%~Yzwn3XBy0bu!q$x3_2~W z&I@K|nN9ueiYf^Hj3mA-@~U(>O3hoJ^CFJqcVR^sZ9d=<5OFKHfHdV`d9B5Ng6NSoYElZZU=VpU`Y~=aCl~yke zFD1GZR10uCqPQeYWDr*p+(7I}z7&-1$9-4jL8)uaw$Rcl=@s>Ic{HVcRA$Haq2ZS2 zlo~R3Z)Id*0-brn2HaYTMaaZ(uF7~Kf+t_(RmVZK$-K9~b#m>i0_N^~&`PM#E7bwz zFMiaUIz!6?)a4acMdiYWsrMC5FAs78ecqKhY=;sB)klvifDn}^?Rmu`fwqTS8C z6$#@e85!{3DZa^#=#wpib*%jnX6rE4b8j)FsL7MM%D^@dOB zYdaN-aUi9Zonpcw4P;lJEh7?+jX6AgJFJa16pwiJ3M|#K%q`r*y6X`vImII`dmj{q z_oEpG;py+R0=!p2vd4dO@Wn3_Pi-#c`>n`0JTTk=;Brx)lw24(O*fhDVjsLUIIK8P zMh(Ap-tN%)*#SmRc;+?)Jb(NM7oT8fe#|*NQ-ATEf@eF$X&mKz7$GS-Nst!E}Rg$IdYAA60H zs0y&`aOt3ueGDdqRr-mUO1uVBx&3hSD;r^F$^p0ngDm0&dGxz8saY64nx*y~Y9E8_ z%g_ynDO}cD7t!?ro?7PX%*=RRqNIHMu;x<5&Z!OrcqPj@o<9p{st5kAgRX=ux#r@ZVW0*4x z=0|04&ofTwNH0GD;mu3S)MwBXetofGx<6;EU?mPDr}A7eA8Mbg)?4G8+dQ-6;s^QM zM+`LWYpUuv&1_n|%r15N`-fD3jNU{=U7)EIZ6qidA`}!_rhswq%#`4ns$q}`vXRUV z-G?L(4Q*t#Q89!T^`Z;ny2C9fQ%yG!pe|MS!Bg?%9;d3sGrD5)oPubUn(qiD=BOJ6euq~2kF6TM8xmyIx z^6Q3bDMQ}T(AMnOGB zG;=XbJyqK3rRB3Ux^2DntFB5L!#oF>N6j5U95x>`>{7!fxo9Yy4T! zLyXUljnBfbTnlTv&ExyWk>lZdAXZ=lsqS7uITI3oT(g2a1{JPByqrcK>DrZ`Yfu-o zxKTx>FC%s=+OT^kd}>&Jt5pgAwsiT^^F9i-Q!Fc(47sKeiFj1Mx!a?n2(UI6*iFcW z4-JIk&m0yHs$+xUhXTrISlG48zR6c|N#)!sYDrv{a-*QzEzV&SX9Jb1qrkiXCo5SN zxTq{c(y@;2th+#zBwZL!nn|xT9ackD6 zkDvEH|8|jVBwc%A_&iu2N~Ki~wWQ-zfGi8^fOWCvJLdQt%lW}FX#;V2JIC>uGyq)z znnuNm#!@Dgo*jiEO9B$!EN(r4${|Kl;!WW%PdF$QKItBfw6jv!VSt0MC-@w@b#RXs z^oWDkcV-EKu%RvpZ;D`sD7uwdi>JDWgQSH->aoxOHkEkE>s|!E;lESC*Gbt$( zS5gT%!%3$7!?mE?r{VBZ;gQQS>~JS0NSUf8Gh@(J0KDYgQVu`!;7S>^3Su3vzYx6K z$W7+LE8&>!0d_Dpb6i4Z79ykN44)VSvZK-pq~k%zPoOQr3$npCsbzuBCZG&eV=N?T zyy*(N>I`(pvI<=<9|6&~9E&eq*yE?y9iJ($yZ0Zv?kcNMzkP4`;KBvQAOwEJm9WDg zu}|P;>Um(%7A0sQV4Z@iPU+~BmNZ?*cz#6beWrC{G3vgbp7UN_truy4kFjVczOiBOb2^6_cSP3zhV#*tZvMshKm) zC(1EZT^jBtnZYgaS&;mo{`g#WYf!@5x(h-Tu0{D(Zc~vIlG>Et zY7y1L3>#_b5xTm>1OgK@;evi7yB+1uOHm6BLSOLV&DP z?PgRInXV2X+US9V<5$JOQAt^z^MuMeMQnE9n2Q z0tvAT;uEh@NI%%sx^yk>A*C{&Zg?ApQZpx&Vh@#^hb{dPA* zBzA}6PM_Muw`(W2hdZ}dZ&!}_`>1eXYmE>3gL<>Kc5-#NTf2QrYZ(3(kFiXx$^$`q zyq*2??XO?{-gf!iFsR{NL3H(E@S_MB!VNZTd{81|I~CI<|4u2Igi1QyKEFQZ^U|aY zx>@g-1L493ix(t!P`!u_L|cfB?luP@uO^9131Hl}MF4bn6f!F$^*~V1AIQpN55&U7 zA<*Y6<3ge2Bz~?gRyH{Z_B>(h*mom8Atr4v@AS{3!SetzNFHFsJ#{GiCCJB7*`(0f z!XT@IMT4m_t6isgOJE*mE#4t-uqy8ojzJq_^SCo4t;+>NP7(`Ch;W5Uo_@ZtFNFQX z7G$KBA`)`PA7W8M64lC>Ivter#fbI`W*&qP&%@8VR*@|bWi_kA(n~;lwfZ1DAE9&V zP~TpvN#=^B8!b<1L?*=72V7kDnVcPUy+8DF1zAEzm*S6LpONr3vy9s(j&x27N4Pw) zNj}JR9pDtQVh;S!1lfO?QbKL>CB@YoDaLt6JDIlAb?X3YJF^v+RffjF?#}WLi8$7g z1@nlu`{RXoEWeVllJ1CxrwOZ!Qk6Af8PS&&wR(*D7rN|y` zWHsE=3UztylY%@C2Lq1K%8Ar65eK-i0q$?E?lYhbvGK}Rx9ionjN|w6YA#e()BHbQ z3g~?qt*+1Ln0v6tiMT5ovThnsc7Swx=9qvTX^O}{-1p`K8fe?%YZoo?S0Pt{{&B5- zU4XvQ*>q|4ff&}!A8hFk;&G!i%V;Mmil~_q&Ikie@mU>d>Y++q!YXpY-xaJMZFf!qv?BJNGn7RhAr8p#&qvnA= zd!EIE=2|!V^S@%Gv`B0m>Emx7fAKvf0y!q}XN+EkNqo6@V$MvPsqwn&^q9h6u-WH0 z&im4QD)>#pYA^Q|H|eu!<$PPVLTfN>OPPiDW8)UE36kACKf}vuw5Oal}bDm<7QITPpiIWFyO%xeelDfr)hlPMpKUXs?U$ zK_s%xEm?1vQt3%!k%?X0aMBpzUN=jIGGa?>fcX6p@f@2(y0$G}quO=F2P?(Bp{_R3 zdi(OR-XQ=W|DUEC)6PR?B3CSA3N0v*mq{MoE>Q|tfFH{^qY9MUu3C7NFks9S#zk*H z*UZ=?Fy*H5#tsJKpdQpPx;~oAJI#|$f7t2cYF|V;0Dd?1z04x!cVB1S+$E7IB8Oi8;8~DnA%rdJI=Vdkk4o zHi*m=|4B^iie+6WNK9vkpQCAAv8;>iI-F%%+y07aFZcnRZ>71&mmlEOdPhfLQUFg= ztfixDalP7GBAxsjEFoPXENudb9RSE!4G>NC;sqQ0o7(I@iOF6VNbP51v;QO}d+{^0 z*?$s~9Xk)ncH`2H#kAF1DwfR1T*kMx;F~KOE{r#u*U~w}00l9OL z+5b{fX5HGo?%Nh`$?2cdjtU#lvXV5`q((X<^<|!?Nf$er9hPpkRNqRzd>Oml0Zr}t zRUQkzKB^N3GJCE}K!sd^t(NRM4Jy5Cr}Er7dgH8^`oIjM(4y4I{@a`!85>9}RcTLZ z*`P|tB6!1Jmw^W0rS3VqDi40%^TyyT!2%gT`H7hLI002RE1n|tO$smi1X&@@^RiK> zJS()EYu0f^>NP!FmBu53Rn$OF?EJoiN zz3=pw7iFe<6ihKcVnm`X5-r?ncM)6-ILt*sp|}?eZO!&HpBYGDVAV^3J6KmI$-sSL zFX5SzqanoDSgjk<%t}Tz^BEMq#PW&%&Oz__cdB9dl*phwEu={7!zm_jdylg*jInvy z1$ju`Ul`B2U@C)tt@mXhU82t&wxBq2B*4(Z3M`9|J`kw7RmfF{3OX{t0Az_oJQ7K) zyi5Z>53QO>VOR8mb!v_P===;nk)85L+66>McVLVReC3G7*=E8UPK)m;U8A%M(0`H! z8`UV*!%@Aoieh3x3MxV=;?H84*CsEJ!x~PENL;4Q{0QJ!X#rtdgz!rd{IQi#LKPmg z8R9Zrofem&$udib7vi+9p=QibL~1!0IKD=Zb|?d8vS6%2+GkIxFaX!ALLQahDOP5G zDF%Wf+--WsRMIGHYRA#ivC0Y6Qs^ZWy?pF@#jz!mQcTXjm;#MM8J#2z#JrxdA;;W~ zBO_vsL7bV8gk-#|Ha*`idu?Nf)3oA+-B%NyHvtMd%~lql&c=V z9;VBL3uvND7&0JXyHk&Qi;7r)B zE|Mk|pd5q<9URtXL_7YRluo8|i1YsZl}^$*yTih>k1?ELSxL7{lQd()g<{)JJnw2x z-LjnDM~>n0mCZj!4H~Su)wk&uN-^U5tH1G!sr~9{J1O#ISs3 zoLVj6UyA$o_*GNUKn#_pz zm}seLsI0pR7hj3qvIpQker4`p>gk9R6?OD9@6oGWJeu|Nz&=uHah`fz2DK6=)VX(b@1 zLtUob8Veh%3-WgggVR%RK;DV+iwLhziLj|{F)N_grx6Rtcjtjq!t_nZdkLkgescXfl1~$7VUy59XT6A@M=MbG91Vi3 z9?w>7s}QWd6*|PIsp86sv5EM9!!)ccC?!Ut~a z@`bKoiO6Gv8mx@AMszIp|Bo((j!x1}8#8dJ+IQ**U_LQS1o(&3x>e95zA$WA@qTSl z7|eBsJ~ga)v0&#H$*q!uJz;pxApN)sQz&~wa+MH$P7zi<{ZjVndVQo~CpB;YJ{n$} z`ozE8D-^j0Cr(+Kb@GuF9{d?SgjymLqF@Ggw1OvKb-15;ECV9Yt%j+AR$xR^M55(r zbfGb`^??Oj&?$ zrk=>kRHNA#<>jXp%*?#RCovvZ+aoGl?)Xef- z0W1@Xx?>e_ViB;aRl~plz$k<>6Q?6|)m$EiTR9B4B-8K4ZbV5|q)n}0)o4rOJ#h`8 zyKf{_q!7erB!&U+JQ;wR9g7lyYt^%YAH8%(*SIl(F)VZSF^p}nz1NwjwqPq;f|$YR zbcN)j$jM;mvFjgA|J-2arD~;3?-i4DJ5_Q?)icp72P2s+2cgOFrw~@nB6vqu*QE}h zG-Zzc5X z*%(9LB<^gn6^Fs#``)Pzs4{cc1=i@pwkU2*q8bsIhd1qfx3hdn0_VX+z*?uVzx{JU%tQG_lLED>#4w3oh=3LDNcGE~It%l>56wvy729@_|wU{WwK+&z7fS-W(WmQC7EOioGwmT1mf5!$L?mI4Vt%M2T6>V=gP$G%@ec0!P)qjky% zu;>Yb2*=bGX&gr5hN{U)0~x5ADsh{(2 z*b7A4Xp`J30yn;OhYE_sBL3oIo!8(Nz%M{!KnhCffGFAg+pp)#?O)jf2roHDm-zC7MQ>V+4kAMF3a6Iy{&KGMvyl%f=T>kEt+^`S!aWS_V!czi z>ZJ0!kTWSp?RioL&TK@85a>{%(1Y#D2^@@m(_+-?`|krEzq-XlWd7Ch>7xBRC1R$Y z8E->E4vKH3mDmSHNC3sPl!yj1TE&m70*;6|Es=Wx{|Jsq^;{&*X{?D1O3qaFbAUP_ z?93|q;EOq+U{5|6Bl5=?6?!+%;-r8HUQT4WWosOCqdT87&#K;IxFCp;=RKmu_?$t| zP8a7kt&9K)R1jQpmonzs@k1B7OgOqVz+m~DmzJ!(%!Tf)Y{b>&$KU_oKl_c}#t%>( zX%Iv`*TPBVGm>lf__zO$&;Oa7B(d6C)AvSgK*5u6sY}*i+u7~&G9#a9$ZI&WK>Y5w z_W1VqUwx;W9vrCB^>A)71vZ0V`OUREcTMRY$15~zQ`~9hQG5KGfB*CEJpRG>v%m0{ zPRx1_+-ZN2r64f&<3Ic_KL7SV8*>D4fo*+_RbjDI+K<25{^HkvImEo;7V`Bk9{=O3 zSHJRIJ7MS}#^;WU9ree*_Yc1K^%lyC-C*lB`#U9vw1;Gf9Vh{B_YJj;=4hsy zO{*u&si|5l-Pp8e`Gh-RB+)E?RtY)B8!|@!lZIs0m%ARIpWC|N`lnDsVz!65hKPrt zl+9xKvX{%cm2QU)K|bTD0nCu@e5s#K!cIfU9;U7Lpo9VpE_%+Hl4h%``p;Dcz_y3e zu9JLYGc@}^T4l0fT=WMy zC7~-Y7VyQ=`>ox3)V9h$4cB}kNfnYG)ia?(#(S>WZCtSH!!e+$xglX0Vn6lUcYCe- zx`$=zM|ytqV#V6rwSl# zms`hL6;a@@lK2kREfnegaIDfH@pW?zzx zui&ay1!5=vGNT7h#%VBu5`7=P0OWS&a7?EqDw9bu27*!wM%3O7eMz1%NW;iA*vgA% z8>H0~qZepk_U(&LSX6hu3g){=2_51gp*UBL1 zYl(3#49Ln#y;LDgQmY$z_Y^_hT!$l*SO8{|n^M;3D9)N-)zoZ%mm~T$ghnaZ7Jtvr zm24Y58B~z;=mWgDG-7H^)I+(2zNjSu&BHm@r7@rcnC@}T4tN9w^D#&9sY(um2>pKW zDYGVxi+K-Tbr$7<%CmyULue3b3VzqNFvi~zZ5t-|^qMt<*SxKvkj}@?xZ)d#i?B#>1ed+a*yKSW*RNcBj z`nC9F|C}N|lZA3Mzoj%Vmdh0w70%_kQZ$eM?|=U4yRDfIDLYP1KPWz@d$IHZ)rwj# zpS3;vS?ytDA+!F=64E@UB>UiGB`2KQ+>tCj{x5&~2fz8R6GX^}-m_kpE-X)_0$u+P3CiBdZU_{?AwZ+WU~?rO_a{+ z0miCqrfaWl$^*MiC4Je`+S5<#wFb5ACn6Acu58uKjUOWU1Zb|M9UlMmpMUk;-%qDD zYgW40+HLXN^Th`3K%bi@HZRYV^#?aF`j)+*;M#ea2v?Mn@~_U4lyRFLr+3eedw^Cs zTq&Q?ne~kGYFE(bcD6@}A<;{teW0u;orY(g*`YOClMKlVyEMF|w)vbLI^SqDn!}II zbvWpqjh>w=7@9RQaA{n>H*2nA?^62Q99b_Fks6bKx#wfEXWl~DOysuQ^NpE%P9xLS zus2v-rHANqd)`0TYt^xlAgU?H`!CHLZ>KeUUUqm+w;a!G8I&@ojc{wF-yEi%w$IKV z-7b4>pDakppIeS`IBSgO<3?u~xOSh{R_$(o*pCeeHVNByYvVSsrL!z$zyJAnizzqM?$e5Pt6qg%{Gkb?2Wjkn-dkJHnpTX0%oZE9Ycdc5*8pda zj=ttz5#=m?3`1q*m-4%!MJb_C0Kmeb`ds4fkM*J<_)C$iM`J);y7A}-!SlIP=30Z8 z%hI$0azR{nfA8^sYJK*rf5oi^59b&<8tUbA7Lm&UkzePyK1cYbDze~d`x*ArwcsXDXQcjE}iynYc z<%2ICwZdOpP}Yi8%K%U0kb3611*CMMeN_wRWV=pB2rTRzRx=n_qP{CV16JK!590?x zK*DEfzSss|CZ@Tx>UvkUphae>ukpdGY|=tg0r_#Xc54BAgRU5*a|7385z@Eb!}LnK zM31SIl4CFMk0_v@`TW0P+nNnRF)aOo{Vjy8@7~Ux6A2ifAJuR5LgHKsSDfSjJpN-} zy!!Uzf24-4**WHjlwChUbDm_gRl$owOD6wn+VHQgV#?cBg3Pf()4Fs+dy1=(wYDq!7i3fRfesLM_j^Y0XPyku0nmgEpjxy-0h!Y zRlWkwJ@#Z=8Bw&*)eKn(c1^bLnfy&{3AU60MSz1}yqQ`FyAz~3cz5xsFCVnp0(~{Q z=l8AH1YIGIWI%jWkm<~xF1mP6ECc7v1T5F;`6$yMXT;V>@R8Q+R;4?OK2&Z^puX=a zr?iND5gn!i>*NLkRDD>yCKCO(#b0t+N!r_wa0GJ&4W3P~4PBeunLTsT_&uS`6jP5X zw=!a1R=>B(fpCq6pw1M4D*{5k+6kFOa2M2;!-R<)SE*BISvCtexk8W2XB(64@=sG? zOKCwWqt=JQP#8Ix@c$bt+26zVqtFtaoQPggO>w)0i91YI4lulfS@?AQ0O)n{XC*eAkgBBw=RYYG<};;JzYBf zZhWAb^^U^I?PAK(oNJB_PU4~p87dTRx--ZUQJQBIkBb$BLVBAZ@CVc~z_H=|@$MK9 zyh?z4>7%;EOfyq15ltVi#}ox&jMe)H;QXNyfN@f-Aj&N!%q`gK^KATrwgopa;*-!GsK+T?ZzEevkj#~Ia3B}u*3fiT_*_$HJwz;S4h z03I?<_0VZE9M(&o+GsC+S14V(A)-Rgn$8!*funU0nzpD~NT7te2JoX(7LrW zDol?R?H?gxKA7R5Wz~j>Jv3Zb>7BooUb-uc$?ou2B2pIdp^r3b@3Hb1w3Ux{fBgOL zeaF;5M+FsEVcJ+?kKg;FSC}tuC&lO4BqZZ%-HwH6_~X4sGoE}FAdG>`Wn7sjMFW^j zFqpvOiG(dp-o;6~NT?{}Dk=h1BbvM@^VXgZzUKsOvMN&b_<+R+BI@|qBO*V`Kl1Nn zKeH{fvlg^MrY(3Wkvf%Dlmic;VphK}gx>L5{SI8RX^kyN997r{TPWw??uIi3&a}0N zB}twfvSdr1#g~(KRd7pqRn=Kpx(7&b#N>OvD!y20gc`n9Tun3ynYon6Vx)FRcNT$* zHDG`~v8#qd*>EV)qQG;o(|X&-qq%$H&jTfwZw^z$+Go#hYvuCbZncTw`D<$y1Vy40ElVB zEVr==?-t=>xYk4*NqkCpHB~gpvLq4=p&o-Tax%V<{K}A6Yc0s0Xq<4`pw{95jG}c^ zCv&4xCr|gm!Fu;@4;Izx-*=E)R zTKU6KfsbT+IPzQLaJO5xdo%c7Gyk6y-gQ)lx56kTpX;KYDaHIV=qxh5xZ~s|>lRU< zT)-jzya)|h?jKoGA+k&z=bxD|psDXI-X5^`95wx2k(n+M&q_I-^|aCHtqy*l8$Jn= zi2O{DWX1}OGBeRhW$8!1gH5G@K7MbHeuP2eE6w3ean$gExk6CsHXIou@R}ut(hFQL zy;fRZ*|onm7K{?In~Zt6wPd?#=K_637(v&TtS`+=fI|V3;G6-GW;DGp%d?R6qtl3` z&#Fv}#Lh49J(RE(Nm2l<)6F5Cxr`aRUv~ux0bm>$?e+7JGAGzb;Xy71vH4OFR=w=L zWGC4ZKY6L|xwR@B(gRkAqJf|bNB12S7^J$zIvdwHp=iL$iQpIG zw7X4NSfQ&w$mKMeY-_C>kS2indsl}PE<;#z-q|?{9Y-6d;uL&aqb&I1xb}8cR8QUb zyC5mOZ8W}`r$KDjoZAXe8Ld>OzaLc2ec=!Aeu0$Yb{;^N2uFuJ=z^stY;8$0X_VaT z_Zjtqyg-G_YCVJ!zBr0Bjp_S+nKZN}Bj$IPzc}D_)8`;I4KoO%LwnyGHsf*)%Nd0G zPJ0>z=>fVXp-gEr6+iEN=k#Kavbfjf-{HW8$;H8ecK^{q!P36b%Vk#he*JjUvyou6 zz5gJyH@JdI!L)Zecnm^-ZvMUkZ=1?o_#7qTNs}l1wqOwYEcz7YE$a!;1M=2|*bJks zw02#=nuX`wfsx#DZfjRPKgwBT?G(^+5F$I8VsVsd>nzh#6sQ*QxYugXR z&i>xt{r<%^--t64@juUu!ySl-NrxdJzveF$;@O?fg z`xLK@9{jnmRy=IfJF7=?;d~?);pn0uGQHQ9gYKP}gIg)pq0w5Wrf?Rx9WX+cs314~ z)SJWg^B@s{*xNHE49+$;;7~@2wc3r~xFiszr;Xu}RjL!rFT6A$-FR*)g+n+8YQm^a z(#;r_ePJ{->H{^%ri27fOl_wGMLdiLn$`$_D-6e}@Me{kRh_> z0k0E=7a6}JD(sH4UM523V@%F1xh_NvMQs4WyLNCk0&^Z3W5=2nW2x}(U>BN3LF(+v z0=FbRDnjYCt^TNp>caLkXPQ6U>%@M2=`f}l=mjMSn-HuC%U^zuqlrCtV3%}^yL)6=sZnM= z4q;5a%aQ;dwvO%af+7y(@Y%9guPzT|@G~nR)C&{zJDls;>dm1id@u5PuHC=(hqP|I zz0?Xs%hh!p4+|i*8jt_|pMCM&LblNpMO!K`%yPS&sYg|k zO8t_=%L^64^6l1c74!c5b55)ypAuSno*Kf$5QEzH>Gn7bNMHYVtEP}QASzu+x^3<| z)3=GB=-funPBw+PP;xH}tgw-VTYIHh=1XrruXVS2^#pa5& z-nB{4GyqL(JU?D?DiR@E@hl9K#HG-E+B&C^Ln?+uu>>WRH&)8;4C#T?a4!mC7#Pn3 z!*=KeHnBmB|E`6}?ED^A(KOy7=!;2uH`*h{Dh;S*^CM~oxL?lr4@qyNK1mJhMnViG3v0R<{E@V+?c@NTl z(xNcj5KURJdqK8U^cWPsk0r!-Oxmi3E-KAFU|Q|&Ad4!$(W(K9Pc_!4YnO#s_Q2w< z5T=cqrA1T6UN{%say$?itPM!RCuy^_5cBBcL zIeekIkKZW<5QWKwYi;TA$N$@B-zlPnazybnOCm0H35G4R5Vr&%=0Oq(ODy;=Hge)l zR;~Dy73>P!D^nTb8PA zr9!}BL4)4MpeGPPtorJ(z`D0)S+R#okU+IP@awfz;~_|Fhs>e{5UMjKDt5#X0ltu45KF_;QXR&w0+|zrxkk*-wjo^4nlVuXT26X0 zSG@iEfrnYmH@!=HQvYaVlS|Py$g8-+SbM zNZ9INE*_zv`K~&v-35MjZONJ`uhF=@N_W-@<^c&1@Fe`R13vwkWh(upAXJ2A>(N_8 zqk%ayGwYU9g1VI*iGsN}rc78+W1W`eT8C9paFapb)8P}|ug-~1RTy}EyFeJkyGWo= zo}0e#-d)w@(T*%(1TU8Q5~9`8*Fkho$v`gMtX_Fih%4W-oydX$lEDwp245?@qSljk z%+3r;LJB6K3afFKe>hezO9YgCW&rT&`%<%%DM}E9$|QeN_>Q^O;t{b#odOgVh)1o8 zgq4aungaN$*TJWU;7PJv%*m!e4%p$rdh96iv8DBG#5}X(mCew5pXNsrZOMwz85Dto-xRXH9Won*5nSxAhsSXZ!|^ExjiDDpS`oHmUq7E3sx37lDv`K$tq%0y~nN_bV`u$j)uw!dF@q z5>T;^t_J7>Nig%d{em+7!+99P)y9gBfe2ki2HFJav<2b8F=pmmt(JU}2UHPUvkOB{ zQw+znvQgRwkLw!{>=V0c*cm|)zDXp$;@{AT0AI#pjx>-MVT zlxzgNYE&*Z1H5dpYitoOn{s(|{zEH7?sz>Yn%eV{_IRCY>9Jay(&DwHcV;lkWE*&YH#+Or;>f|sVs=`gYeh(!Olq-nERLV9qjx^ z1Sli71pd*35!z%ARlq7mv);d5UCx6}_toDu^WROXzuU-vN3g0<#1I(|Reh57EhVA9 zf=a~rNH*8ECwRl=`BYUc%EUu$K5&PymieHV33xU{7r=ljK|U5|(dzc3Pf;~1pjjr= zpd-Faud6%F!}j_8*amemx=)^~gLUlqWlIiy(Bf63Bw~e~EGfRPsJw8yd|?W+gc?I; z=`3D(+EyXF$l^lyE*T{>t-^mB>Vvl#&X}T^J#8b%aoCErp5FZeF8}@G_zo z_~P|dYga=2kG#K3GvAi2Wm5qsnP+4boNVJH;?#+Ww?7;XtlAUeHE8n)-zv;Q z;(M-Bcyiexbf#NM3U2Zuogt9#5ne>e%tpoy%r2)x?MkZCN>^G9S`i~Mm$ z^1fKBab)y=;sxY`_5XT|GYfOvq29UJwhxNrou;`;9`l8cekm?8{`M~_uTPVh)uvvo zhw6n`w80~?@7nJ*z%k_NwuAZ-FXwVvLp@;Aiy*w!geaK#*2Wc>PNc>)d z@B#9B&DIBM-`DSKhH-@!_d;aE0^4LCMVXB}Sy_TsbPvz#OGtC#^2QnQGJ=w;8=B?F zN3WMR_4|niyRoX@`_kI)&-i`0BIWmkxvdFotQx7bHG>ghysfrYpoq(L#uCvZOD`># zeM2i@D=_r{*OcXqNlCIwXRLzD#l3a0=^Hh^mfN<|x0-CBCc?I8#o%Ob`ksXc1Yy&M zf*{$}=rblT^jgyFHPDG(vSD4QO1arSL-2fmE8owzLv&Q(Xcr*BKuf_pD4$QQ%ScIa z=O?uLwKN)`(W&9>dGidm9s1gwH705`NxhXeKAGiS2; zusqpdpp=q#Xk9E#Vxe|$68oscga{AhsGz3hR>z3R)OTa#%hkHfI`!U*?vyd{v|4ZGV3=mnP&3IReVBsG-k+IVY8+fp_2Hr`f;r8F^YB*Y zmqj6EnTp;Erg?6#x9h|AZv(D=UluIjMvRka`J75#jwTox$se%1DKvB=m5G~!YbY7} z-gZcZJFWswcB#hhXgfqX?8vNz1Zv2iLKpd@GMl3}A5TkIexsQyEuYdm=Cjtx0(1VI zyexQ;Flx6)d)R;Hk#!oSf$i5-6y%CoLT$~5CYR07ugvR$efyq9-HGiQR-c$m-qsu4kT!{$ZMG-XJfa!?Cq!;WJIjr!w4{hP#Q% zQ$>iJgT1+1_ZEoH?ADhqweHrr+e}|Ao7wAM9gSJ4C1IAMA3=%DcNn ztc~#2EJ-ryfZOSvuTEw2es-%-RF?xE>*ux_77kVJEL#p%gt%w~95T`mT(W#@K9f;6T#ES*z&s3W!0aIzBY*=feJ27u!GSAeQ z4*4<{0BX;a#m0=!Sc#y22BD_^nZUWz50b774>Cf1DQf>rkYH2dTY!YMUHaKqT`=#X zYhq|h21?o!R(%#UlKdR$4r(8Y3?n(}Qg7s4T^tjMdZQ}3ai?H!_BjeG3`^;?Zq9tf zi;v~AQC@VdGAYfa%BkKcF@u^MO-!MoPw-18&P^Rsq?B29`k`hSVJV>tzqYZ?9u_Q07h zkpgMv;q#RW1%xwR{PCUNOD|2e77~=$DC_Y%zxe92MJrB8hT<%>ucC-JYLCJS*tQrxIyGmZ zZG=7?YlkAw5*lUscd`f2SJtWm6zduh+0%FOpV|KD_(eUD=??};IkdX8q=CC_rL8Co zuD0I0JtAfNvo2HMY@78GU#!*3R})Lg>I@@JAui{8>1yzBR|ZtZqYng=ME}}kjh9R( z(b^kw_<7?%VXf}C=A+cBY3?h*xZXLR}Ya{B`T|9YyE*egC(Cvhx} z$4m#r_*X1D8Jc?eiK|PBC*>vAONx1ZwR3JX_`2SNss+l{C%-8|*wK!=GmR2-&$5P^ z2-=MWM?Qitmahi2lLk$+amw<3NTJR!_gmrE!d+dO03V=h!C=&fiS}Ubek=@27{n@c zn~MbDF5hCz<7QkF%%L7)`F8tE5hE+wpil!|pe8K27cHU#cjQ_Z&+I+G)+$9~E9Zuy z|CB<<83i3v#gR%m=C15Bw}+HbD1mx-yH+&sGj+(3Iyu4Q$zt4u7W>UoOc#6oHpxsv6UsKwl>W zW8Lx4fIyZ6BtAC3RaYn~StLnB5FZc-i2jHcfNN57Gj20NN@V}%fRFJv`IMAHi3#|W zD~%9EN;)bpc3UBTPaFV)6NRQh_@9C*xn{jkFNB&c6yc}=HC3C13@G!dAu{x2aDai{ zT|myUDue)lyz{4sygt&Y%IFXYjC$O2+2st42^T&VVPe1>) z0*FLBGE&rR6;wp&lBlM@`)iOd6KtPbgLS}H|CZtoYN%=yqq?ZQfRfdq4tJk> z3BQb8>DU=_3BiF_X@h@p#^8K6l{>CI{ttil#dl;ZGi{GdA+O4KQmjp^DQ|}+k$WD? z8ws23G+PWR5p+bfOMZ=1&@;us4ERihw`vv{i1cb(2W5RU*LmpH$!^?{a0sVWl@Lv2 zw6V||9IW=Brg}q)CF~`GC-P|(7Uv7y^H#H4J7@(hpqdy;ETFUTc>VUI)9=ocKFJ>3 zwFh?}I?e6#!F}&+*?(6irc-|t?m4q-L+Q4JC{#g|SC&i`a*Db+NWB*Kl-GKE7h85B zpdi1vwURR}xrp27CYdSRtYoQ-|9c2N9=rhC^00dB){&il#|j%hw2+k@$}A8bFRG(E zyf2;F$9Sb84wUXVViHFpC$i5`m}~(LB%710DlzIpsVp+2qwL|eF}YnKUO+e!`3?|# z?$0ABQd`9W#)wPc&`^u;Ls~-U%W*&fw`sWjkRXcCSo&I+a;4Ye{_PuUkqJ)Mz51Mk zR`BYemdaxsC&2TIGXCT#lQi?JvqD+>;Y%uI@*!wOuTvS=cuORjN_Fa@nKyblGx+Rp^JNt*CZMOzJVT zXG$kNAXPP3XkOooaqIYu-HE4IUO>j+|{rk?c9)Lk*Ojir*;>w&@THuA*r(^|6&j&`r>A8{# zUi`ey_gs$yhvGKyP}wPm+thz3h`L!$0%Ho4L*F`kSy=_q0?VWnl}jTNAj1Kc2|^T2 ztnmu@!SLC#LP3xnhtem(%$_Gle4mngl$fXK+}62V6|Bo)c;n}se-r)3NG zf#O$2QwK?ll`Xr*3}wiKe+5Parq$jOx=le;es)Vwo5djYiqOVe@x99LPOxXG=h?Uu zI9Tl<(v0%9Q67^Ft=*6h1w~U4qRu)+nACa1B5bxIw9%f%2U#F8=KMZv7RD8>2VRX} z;T1{Gne5o=h2k2E&xBQ|)WQB#r4=MWyinGKE#6?}&z4#(D<%;kL2U5619(u$WrY&u z<%c_>f|!gT^h7&el_LPhcyDApeP#j$1vs@LI%GrnGv=-yBtJ9(hbCTxi1()f$ThUg zxdYNjL+DB3a=M2Ur!M>my0SJ5*%8NmD)OS9lLQ25eZOuX34|UWhtv-aL6>@u^JH}Un6YWS20vSdjH;rVEAPV4R4l}knwcsn+1(u2xxaf zYqbJ^2#8OHnfo#`C@LXlprOHpCJ4UO3fy2(VT=G$W!Y8ELC)U>113oCtAiI2x(rYz00OClAdJy-OM4zB5zMgyW-O{dygC_^nlw{QK7&ntXjsvq_}ERuBO3plMftd(^H{p+#JW{FY7n*>IUHgFOTR`?eQM<0fu-bRYL`-!t0J;M=&rtiUIJtb3WNt>_wS}#>tjnBQSpAfvh4}@ z@9apbQf7D_>%Riv*f3dQJvupTI=){v;gs?DOxIOeOHWbG3Gp5(BeyPsZQzVZ;Uaro z#QPktlrx;ysxedejhD`6h+KT2tbRhvun+K@IQ>Z7R|BX=`MVG@ zlD(f576je^!7EMbsd{jI5&s_@UCD-Mw}kJf2_iTjmBj4e7#Qjaz#&ju%rM<%!7a1+ zkN&TFA0h&Z3bjRcBww>FQ?((hN+B%S=k3@b$6&WyOlD5Df97Bbs zGfKcqMQ|NE9)vB!2;<5_l?xvDbOemk%x_k<$e3NUkJ(@>9h6(Jkm*Orbfz71<%7cV zn=O=HTy9Z(Ci?(80CmfKe@6c@P6VtW{=EVM6_-R?TAh8z>>=g$5U)}~G4Ta8G|^Rx z1+x!pEVrf=7P_e(3KZ6am?mlkUm}VPr4}qJKLzO`iz~VMjn270gvKT(g65&iso@}X z@c8fir=NZM2QT?Wa!H6ZELhCzx7g(}=Josmd%XYS@Bg&|vLE_hyzCNEV=iFUwu+v3 zOXd*y80E#mIiYbAGJgUMjTQdc_q;L#SUCs8S2p|Q40-d&T`UcmE?CDM2&EojXQG20 z@TmO$xk``X&#TlUI$Nsr$Rl-7P~@d0MUkth!E~n(-4x5Q|q`tc@Q(`}bdcr^vE;?JRF5mMJrKXBDQz#A}9r z37}}u&mk3{J7+(nr80|(3lQOnr5zJBVNN9&ix;?aw_T=vbguB-0EFzug0FMsOYk@c zjKxmm^p)v%A4@o{UMLTtB1?&U1M?vV%Oa;*)3~HIT8y6jXHqnQL{_k} zvYXd1_>;2EnAAphr$&q7=sx;Q>vm}d_m+7dInwgHIZI@C@3;-qDMxed!V7&n8q4uJ zm;}Cc-b2$2Bo#56ksK=ZxaxJ^JQUMkj_$aRRJUX~Kz~4t#&{5WrYw{Z8*md1MQVbt z8aXFIl;*Ni;Lr|ApAQ=Y)SlzRDaG8MJ0Zq!YuHo^{jFmmuTikDMhVB7@G$y61rKXf zPON#L(?f(7LqziZnlCM}0CHYGrXrV;Frz$EuyKdlo=OlSc+Trb>S0Z+_*|xctfapq zm;q~wlNY&5pc38_$cz*$rTC2;lH7*3yGLa;Wmxj;HYZsh>i)U^xy1yoGNuHsWsw|= z?y`pkQiBHMUIZyFjO@+!Hp&K8St7Npyo7gHwoL=;9}$Has+{w3qgg*GXnwb?no>Y^ z^|y1N!qmsw`yAg=6{{@B2Pm6@;i`Sh^W_6|d;MvE@WnSn!h7;c2tfN@rzS9nV&mKylW_N zz}P~GpKX8=C$o|+8oui&VAxkTR`2K@C)#A1w-p30+!)xH$DT|Oa%-4LNVYR*E^MD2 zExzg7?`oNmVXKgLL$JL28eqi;GY7gZM}|Rx3@{?MrJk3oPrAX<(zCk{>?vzq|Me3{5{}*v%P5mOSJ$M2j{B4UD(?J9j$_Z9l1iy z+SLE&s_1wbbB5*DuySZ`_H|C+b5huqI+_Z^(8d+5S ze{h@+FFXsumOwk`+X^y_jcL0qv}G!KCixMr`}I`czkYb#y+NC%d@4c7o@aYgR7w?Q*O~l`H>a`>|M+V6&TC7iHi8pSIU!U3-AfcWi?5Bc(0kdd)OXV>YiNnOQ6v*g4^b$ zO0Y>@#{(U&7^*xo&8zj1CJ2>SR3F&`ShJTalD^@Fy=m^>chB2^Gq#HvJNEP3upib+ zdqenK?bvF}013I1?w^JKKW`XCYDk3}1DUY<(I2U5P8XcW#dQU6-TD>Kp}b7d3O1d) z$GX$py=!(FowN4p_Mkhb-=%9=!eM$f*PYK4N^LSA6G24ItPlO)l=Vg~g4{)v-x+M( zts^gDjJmW;T$VV30v70>cX?1=9Yk3+Hk@ja+~l!3qp9*BxAXKFw=eXWj@2ujahdg*`W!Ptv`ZQ{P;Kif~4!(>3fBXd%7iB@2RNj=TWkQfwl`A^r zyz-7?K%AZe*Q{5AejWokeryu)Bbh4i03$dR?OB3h(OBBt5z2usKcq25ca^oEi662! z%awAkO7_xXWwJl7-kTdX5Hgzx$>JGZTeD)+P{tKXd!{?6ggwdjtgwZ{KPGP*%QSK% zy?c-n`zM7-v2N&@nfvD}RXtKV;i?J)-1@8OrKwoSOf987Ex7$Fta}#R{&4X44_lvo z*V-Na(>j2(ki$}rqkH@p{?TW@5n3Nqo4yFbs6QST$*XO&0-^GT-$${s{m%CIxgJL@ z6J~D2LdAkig9(gj1yJwmR(~n&@}WCt#A`>GiiRX}_s8ZdlIwg^V{E%6YLEIw?fdd#Y(&HG&B!DxB17x0zj7$>e zKQIuFlYG8w?Y)2dM^ROE>YTov00)JFB=Yyzd+oK?UeE7hPb>I$2uS2D#j0ho3W-33 z#cxTaN{QhyB?k4Ud)8=B^3z*m`z=-G6e{76@Rl2jG^jPe-WtQBUb97F0Kqyi86^nB zJXVH*B7kwAmH^5$1;CN64WzhsEImT*uFcn+*Gl*b*C^>{22+nzMSm*=TeU~6-J1Hd z)DMe>(w=BAeoo!kP4j1i^QI6c@RvtequYx3bOGW;#P3xAR#Z=^@HoFmxZJr+SE@@U zTBDq>trTQ|DlA0eOcK6+-)CjzWfZ4G>g=2jrJDt*h$}Bz>Zg*ukj5^{g-S}Dv%1i% z;0c-Wbg)nEEmW9D6&1`ODHeZ6pp=Z)2w;z7ppbQxm?@9LCT0umJ{&#< zE`?wsXNw#R<=kAoy6J<9Y>fDBH;w$G3zI&%E~)sEmf7X0^r6Bet-YnSD^{;F8O9|y z6FmLE;l#M=gc~hA5|=fdY~J71rLdw4=`Ju|C7)6@xE(+#)iL9N_kp>YlM1c$qiT~1 zA<5~%m9{R98WbP2yk_~5Dc357x8-PvwZkiGlSI9x&Mw7Aw|2q7o|X1wtzBa7PBr)H zBRjj$0^!@Xb_vNtVQ{Onlj%*fy0eQwf4*gFmv7bC#hmn&lvd(f->kJu)#^w!gDCdK zgzxX{LczZBu9SgpKz(XyftIQy4fj(#lLn6$JGOT57g<@@H}C9HC?@77+^4p7i5ciZ zEnZz;rFZb%s?ILoL2H-)uXlDC?zHx1&GvM#9yc(?aqR4}d&=jhz1{}UaK7NU8)9dd zR;`88d9Y|N5*{9o?afttO5z{LS+>Hth{((5b*tJ_ZjZ`gX-5-^%mp5Eo7ysE!EuXC z>s&2JdaMx@QsyOrOktG8$ar}GhZDzPz|VGKu~aNGqC(59dJ?8VaM{w{0dU;W!}W zIfr{0)pq?HwVNI=gr#o?6U=imx~2XyuXlG#MNd?UyakLN!e2 z(HW^ri%?Fkd^Q2rCXm0pj%{isWD@W}T{V-4e!x~0Htbsmpj*8w1+P4->hVW^@Y%1^ z*3)}-tSVCV&F-p$`2;0ADOgKL+R*_e_D^dT>rC-2a=q@0PLlYH3#+`jQah|-b=i$T zCzWR&GtUxCnC-ub*OFT8(evqXW!8fQT|Hzwb??LRS)JG>Rl5Q-G)wzKwM2%XYK2Y@ zX)uUE4N?tfw7C8|En9F<)3W6Ql~tPk&IW*{Pm7K!0jm!UOfUXG#Z^eR3(LTS%Zjak zhqwwQTX7ceN&b8M%YQ%@T*s}BNtYB@tWt?#%CdwAr1+TY9GOsRGelR~kxE!7=;8DT zxhno08gIl>Zf>bW6Z58O_A?k2g=V4v^NkY~EBJ{yAO@d*{Qh!L^W*N<8z2bob1q^MKF z5@mf*0fmho^3azBdZta=>-&@wq7X`T72 zUM87AELUvWm8#pZU})CS3n|QHU%+HA!eYTa3b@4DMoMzi8glTQ02x0cE0TWl%H~%$ z7cV2SLyaT1MDmY`P%Kes+Oo_)hL0YrLkw%*Dok`nk>7H>qZDHqcBP41X7l?gN$f(| zz{6DiCni<%G zG$2Y*m@#n=08-s~=Xyf`8lWCR$FmKDHWHzOgPnd_WBf6Q=9k6MTOJg9nE;PazY@o) z6e!C@QxV3K8U@css}|q{=JMm1jBcUZs2Ibxd|5wH)=LzIxc#ISD$ zWUl%{{9-jx&KmKBBNlIwI{1}ET9(BZOe62|!XN{0)hS!qG^B9VJE_11vOG*wSP!$& zTH3m?q!+8x8~Zt|{lq|o(266qf;v97&Ml#s%6KQ8#wyAo0j|tB^{PO0Md=GOb?916 zCfP}$_$DwFiS>#6SwTitc$fMVt!`6FuaO!KEue zo?h>zp|LH@N4m0nsaB-?rxKH(!f%H3!f~ZhM}ZQ6G~z6l2(2C#-d5LY+tj}#oP4TR zGyFbpF_pV3(_Z)5sMrhGYX|b$DNeK(e#jWW#`{#Y=f7KOvZ4BSXE144(o3Tm7rhS? zYqTOYJY0tcR7h&&`_ug_Szi;Ft=gp}`!4K%oH$t}k7r#gJ{=L_FT9T4FScHe6J*}hF4kJ=@tff#Y#{Y47tq_J`vLb`JYv6$<0~e0n72x68M9oC(=sF%0h-J<67T~UC_G8;-_XlZqYeS z831e_9UR`8d4bXlWeYXH$@!^FJvK2SmYhffzKmX zS$Y8CR=u%)&hl_bk&kXAjRn57%x7xdebzf1w{W>Xge8&Km0DE?y~B=Dk)0}jdYCCU z$ZO<6DbJ3T5y)ArvLGobLF(BqNasSd(nuXqsNEyR?{iuEKKF-M@szrDSpS-6-r099 z8THKPEwl55j3k;}G1b4`)w5-rB^R~$Qn{wq}3w&+wJA(a$zQT z01Np_R2$~@*-G;)OJ)kwm8F}?z2ZYxaAnAF)apF?@v`r#-J5}a$-bKxQOUC#@uy{9F7of>#LK=*uw}ZhjlVnlF17Kn z@2W3M&EW031@M*Gjq8DR9Wz(9RaRP|<`ys4rR-IzYf~zhQ_2dC@@QUgk382L4X@O* zWl?3iN3|%6R!sxi&8FX|;qtb7sgX_EmT zD4Zr##J)nI&}+T)8YSPUU2MJ|VNA&a&HbwE4mV{LS|Gl8Rs*wYkZGXF2&Cr7Bvf8s z1Xq7z9hU$qtX+ynYcReAPKErt46w5=y-S`!&{cz{c}+)Bab+XPIQ*D4J_Y42DXJpB z#s~WNV1%=O-&3dc4cqtt)4|aMn%_tE@ewDR=YTcZ4_o1E=eVSxxw(^#EhY)ni~VOP zBs-m->^J7a>Gg*C!tlZ6Lu+w~DRQm$EB9aSAJzv85@c@LG^Nnrz0JY2e?7R#`uZFY zDd_gr2K0X)sHMxnxPEdzcxZK-H`Wv8V7%Fywr@`MjwaTo=U_4!OqNA)CyLH58 zmmAjg=75LZ=*G@8{5@~)ad>o_(?M+6stJ%tb<#az?&^v|CCq+f9Rwa2+9%XLZ(p_c z8=DM>?{TBH7sDH7zcHjh%r~`WaJ|u5>k((^sXq`SrkrL0`KCj9h3IdfW|3a)wU!zb z@%Pb9yL-LP08=1{2{DM?eT(m`HPgZ5x_#bQKj}7V)=!8DwF@AF+tXG(tl2|*?~rx7 zUgLsb=`o|}=&HTgnVeYrCC#w+Fqj^~GrnZ){nPniF}&vGVToFclf9kmRySXwL7iEz zw-&vyL?EW$H0}#p@z4cDGaf$-7DrP^7uM{WVwFQ4JWi(&Gn%w+j&6osLDP!qCJd^{ z1O_!{!pXEX?OdJgAFfMNGzu(+({{HxfdXkl!@b5PlYrN*3mfrpZ$PEe_F8MI-cCCk z!|Cb$u-mGq8S@?McihI92Xnnw?5P9vs*Q8e?l zzAq6L!*DvAwAP3=+V?FG6JecVXBAmK)9`r@Fw@52QK;BR#KL zwpM(kbAzPgpfoc;0f6iYRjhv)8j0WX zI~YIDR<3FwW79-TXOmrI*;^l~UbXA2c(wRbsa`FMSBn+ZtH7+5rLZ5UUWJL=k#Bhp zFTQa@qjju%nhXkl%R3q!RzeP@C|c+&RgSE+Rk`@XLau|!7roFloaDsFftZ#fR4U3( zNdF9(Qx6jOL~ICKW81E&%T9x~cohHc5A)CNgDgNXJT)}%R8u#LFbVib^d0!F!N9hV z&@BaY++c+uyeyOo(cjtXHo83p?Y>M8#~>iiR-@L<3p%^%jz(3fJ;RFf=;eJqei=yX zHdcQ9_M0MxF!@q?+n`$y6i}@!dsbFE8-6mR5p;FtaP1OxPQ>|Z^r zN_6`p-W@6@al+yUjg5&cB55-VrK%+*LIun88A`;`)~=LMqXaKCO4L?Tf*`z;E?FE} z22-uXol=}vq$lM1~slWEE zWrdvTU{;TVwyxDyk~4@l7OB6XZksBWz{G`^E);HOg(2?|1|%x2aDN!{c1P#6hZp<3 z;P({MwY2@JJ4}_JR`oQ1M`&`z4ZgjmgH_v$+4^==b7)oWaWJTEi*|}^x2A_7eR%|_ z86SQa>$?1U`fr6GYvbEt0fR{+8M4=bySt~}UUm2K*xMOPgocx72WL9Y zcY-XT*uR`1hm6Qd=7@T=QKYP1Z37ja(eWdiw}Gjfv~KK@;2e>y8Ax%t*dBioLP9<| zt4xa(;x^+@sis2G6*G<%>)atvJitn75+D-lV9yp^MC^@-=FS$>5sV8&GsmC0@4ctg(e8--&xa~K zKFq!HE(2&7ZV*dPaTStWf29I4F&X=MKy$1W9quL;ii_&ys8xTtbF<{@==dik77 zJx7@X`89XL;u}^P65;ty3k?fY^m8W@Rd11;qAQ_6hf><86`3tgbupXYPfQ0)Ih9W;{}7brpcV=AE@-v3JaG;`lKY%D67mY)fW$9s2LnWY}&gWv&`kX$JP&TNuLF@VtRYR6(zj4sV z#7>mzMS9NowQn6g=+X*|DKd^}{mP4wW@<0a(*5;0IVsA}oMAH87nQ-=4&r$PWr4cH z*Js-|Y}wwLC{IsyzycE4?Ijkm&0eAx>!z|0)jI3RpiiMr%I8*;U}IyG%M#E(69r>< z^!BLUE(8^sMnqY?>Cx(1T$#O!!NWQq6D@3CjV$RtE}e4Va|FQ4`pWAy;7HLhsiK@! zm4RG>Ax2-sm!tuB_3QjS{4wV~=MP!5F~&+>M7EVZkve4Hr4sw}k|%tT1{6v;fTFQ> zoaOF0pPTiPL^74}OWU~0E4sc2YilyxZjd|ViQsU)U{;D8llC17hXcl`T%>`y=A`~q z3yAY#RIeYFC?AIoMg^rml`?sA{N!tCxn(Mq#n>+om-}*`<997T|6HV3G>Up9_cqzj zCC-0w7SEHSQr7dd{Q2qVL-n(kWYxvpB^(CpNb{Ex3XqqyAr!5+*_&7Ob zSA)EO;2Rusm1QtfILhd`fOptBo`xh8i`@oDCMDpe<*LO}jh8Jiu5ov1?Umf*>OcAN za@+w;lseMeqZ)|N)E&G!KP|GgLxCvCMw=@08swjOPKy^XnHRBK_xIL(6TW&<^Ns7R z51ME}79ASTh$QzcU_;VsXJI}xuYZbg(ArMn_de~9GxGL5v|%Bv=9YOSt=q1NUUzwN zbU&>hFK(LivZy6Lv*{gse*blZ5k3te$*k8}wSZi`BhL+Z)uI;iMiIRra-nQ%57dz_ zr3u(lgciWJ#R&y0=6ACQkr!8uK(4g}&lV+sk1R)-s%e7T|^7uZi-CuHjd7kSQv)S%?NLi?gV znr@TMCF9q}XT)oEFY!`s)-Gx^4xqB*bghX@DFE@01t*?q8`D9lLsjpU5b=-s$Bj@P zK>i!P_!#zPpz1v0OqTMHm+HnT13}kdxpybm7c_e!$?u(I;F1qY362#nWQkI#0b>xS zF^`x^^}UoqAPN~Eb1rt{0D>oSb%QS^AO=(JzN{oqXc&rb*|D0!?G??X9E3=39j#EimH& z_|Rw5KqsD0WG7Ha3!8X$Xt18ai|DkH`4wR*tG!>%jk^+!?b{bo7{OeIOvKMvQ73P5 zRK?sZkH>F+H>92#sGpELQlN!HJ?v+~GzcEy*9#2lFR8KEjHIuJi z(N)3v-^J_u`g?Ohez+tKNc@kd|I<%?r(n)Tq(7xfbJPoKyA?}Yyu|5OS7}~QYW}BL zXp-pw#?Nv(mhvVDnG2(){uF{@}B}@O_ziuteTh6|pu`={P@|HNpMK*tw*xo%Fd_U_Dbq zsxQyB=Vx=n&`^cn48*=#EZ~z>7SFNc*J@sdo~w@T>H#NbN?CrcsHkaM_y^o%6Lfu6 z?2%?&*1Q`Iot@w*TV^RIU)G!a8)#s`dN=HhQ<9plN9U9_g{;N|P4XUX3?tbq#o}_P z;v0jBe1T0B;08F8q~?c?S)MB*NH+!}zf~$hU((i!XfaD&1H=w3c^_1mhL@eGx|^Bb zD~0kEIRL2nBomMqq}uk7(P;Llr&~q@k(4f}nyJ7)R(t0sV)I@tSou#exA1&Re?g{^ ze-|w^WAf>HI%*bwk}WkqqN64*p+C8nnqo>G39*X2;+(E$-)YIY1w%s7 zF7;jDSh<27vtL6JQ;2;G_X{h!R+XNtva~fygGlj-EhQ$ULfaVpaAry-L@eZ9GM0Kk z6@)54XVO&sE5mD4EcI{9RH%R!(|44gy~bMN_}#IJM#77%>h}$UVu#pLE|s0Xzv>*s zwWnq0WT@lXbCUV?*}kQVy#}CerEk3KCYpn6QI#f^MfncS078Um@X9N+Nj{;J%+5lU z`LAQ8KF|U6D4oh`&R7$#%3y@g&1gRI+WA$?#oAX}Ym#jx@2$FVgv#^rW*d-ApIGrL zDLsF_@*J2E89IN$rRUFAo)-c@i6__7(sPkY`JT%E6d8Rj$=QBr?H$&#H4j@ZU#e<* zO>-f*gDtNhFDTOd7*j9Vo@~|T-KlwR?(ArekTdDXUEN+&)lcs@rYQ={&yhkPDZh&L zn&v>EQk=la{zE(BEp&?jF>}85d=YIG-sltCYkK8y5@NyS@UHk(wb$gBUe#T*sN?GY zRkYVcplzum`i(#y#B;7op#PaN@h9G1^O^3N1*5U-)!^h*QkkG=zVr5)&ve&h|Nm;* zYd*8h|2EJvxl1SPa~Bj==*`KN>aD+TuNiBDLwD7H_m%2@(Y8OTy(ZbbSf4q{?Brkn z>QxDI;l8rJRP~kJhBl;=ix3A0jHlsnvozr3p(}hz_B44W1v7-ky_7jgW<&Iq5KqK z!<2uO%A3XsO3ZqO#Z2b|PQLR80u#W~Sp-dogiS$6WG z902L>{l%5;Z^0+AqJrFfoBg}{N}DAEufHB2c5BSu2Sjr-nml5?0)&$xorhi=^*q_& zuvYft_~45l{Kb#|<^T2L-!4i+_L~--D-NDnZ|^NUf41)Yx7iXL&-c$Z5dDP0bHmN^ zvUlJT^4#%MtiJAc;-w=$`v9`QJ7r$Fzks2s1yKCb)akP7J=SuE#Hn|rdeBU=?I}ib zHjpkN2s>wZRo28bl+vgXOXZ!j;lJ2q^y}g4qjwj*f|QPzM|*VCn7uGn+QWYNO)nNt zR5=53iq-Eg-q!(@;$oa1RMSdL=h=23W`ixBsajVSkB#1I{zKLJ&V?#tTT|8lQmTvW zp|?^AYKG|z*Q2TvFRs1N19d%u6ab0gyjN3jZ$#fCP z#9^m_FIC1*s4?G0Q`*~pIO*3y9MUd)QZhfBHa6S)gUvyl;eL~<_Ew!^zV0Qsok{!V zl)Byqoz_CU(`LwLd!xyqOO3ym@-CP{_mKac zQG!eHwLS&m05Yrkl{Gv$?*k6dnGE-i!VI5a0g%nrVetJ~iyju)43{wiHU`tlbhy{Q zYO~bNq=z-iy^Bffyd4U|FV_d>EnYs*$lVWM+zjkc_gba(4#Tk5qiUVH|LJ9#;S+EH zkc6rEuYs{#S;8vlz|O|trZ}wuk8m~I>%=u&r&xURWN&gE3eVx}#zVW?wvlHu>X(3_v{?-q1y&+fLh%^{bzB zM>njkui;IfBJ>?z%D_YPUrPv;X01Iy+olde0Jt^S02A&@OISfaDB#A;7N`b;?&Vx- zlg$vIh#VDR!h^S2@578q8wjK8Ii4`Dgx}klwDx;z!|r7{LtDbb^}+P=egJ@lZNt6O zwc+039G$0_MlO8MPgtXRU20HlON2at*GPGy1_u7m?mw7ZwA55<|;~KUW9Z*Y-rrhkOTo=(g1*oFSDVHrFry(#Nn0R3u4ioXh(jAV_Y#+Q(#;RuHk4Q7~6@RB20 z*Y*RpNdFp3c?dTT(>81`L1wh~S{xj}s!XeExD2HM{>x2^W0`B?5^fCE806mJy(=mJ zn{)@Y)?zjrlxIbu<8Tv_;#Ot+Y!&{7lfkt?qe*M{1cC!_nLYRcNS?|JpFnd6Ib|TM zmvmO>ZxC<536Y}0`ER6z8DOx=8Ui)~^a>4;*1}q!^Y?TB!^Jh6fbBAd)Bw!bdC$Pl zTfp)F{9n$H2~KccqoAyHt^<=!8TkG1{P1B|L_xDZsJGWnYs2X%fDNHsfT5?6R%Xcd z98TGyUI=0;?0NtEI zsmlWJpz9?rZBJ1=5I{R&h7B|tw4C#!l1X7oz-rc!dN%Nr^A_@A=Nd^_Swj8>YU#8V zQIi0jVdntTqcg=OND~JgtDIt+pcm;JXA@~Ddh&pjH zYpo?&Z#^HX?U-(_#wO-K3kMfSSi?Q;og&sV>4??@u22uyrh&_Uw#Te3 z+#a9}^9xVTLk|rDi4x?J)(_q0e2J6K8O$2WYcxJ?P%h7puG>okY@Z*^P&(OFGRb&e zw`i>oyN5`)*+?SSa~4YSlV9#7KU80YT=dKon@k5BN+%d0Ls#QLLE6U3>0d7$QXndU z7lfu11RO{C2yM6r@Ki-mAPKu@w=^w_7q<2;!SFhLs0x%Z3Mu$c*mJ=KyaAXBW%PQn zWJv)`gf0Ybk_)Jb@RC5nI$T6Op}@B$5xjvks-Z@21W5+Gl7OMeQ?2X*wBqT`l*8uU zXAGT>*ZfANqKV70?XWFZ`do+ddExiY0@1Z^IEtz2msp5KZIvuZ_22d$(@6f!ZQ&mQ|4qLL;Zw8xS2i3dTxgIvF*3o3Q)8(2TJ3#mm zkROe8jLg2?Tpr;mjqFakGjtk18Bf6hJDpB;POAfCFesPTokqBBqt!#DyKe9Byqw%Y z#+1~ie}fmlJ>~B4#_6Kn;2_zH=Ql`qwRWSUhvo{(daKrBkf5bG6={9bf#976eYW%K z9y*QT&gpct)A30!TGzv3|D=bmUcC^moi#cX)CIL15qiXR7-`k(?mN?AqjilX>knK% zy*{-8E^R+tQN2a`nseW&c+a%34XJ(Cq zO4fWQ)~L8+kcK^q`w?ANe=Ex+q0b?rI^;M50v^&z%lgO?&dWgD3*5BHf2@pq>jdDf zX1v{i*O|m(m$$%f1y`M?q?WZUh6e_Nfwq%yhm@F*3T3F1@#uTN5fdhudXuFjq#S%K z%*r0H?E6dJ_e<7O8BZajJ7(R8?2dj(d!xftn0Y#O7oWRPfpP!`te_QG4g|K>{OXmk zzJTL+x%TkR(uzH71G8-1zJk$4dq-bg?0;^~ZSzwfU@5Ill&r95H3@oqsfkqsTrT4C zTFcLyz9PZ*mG=K&ZBl)pfJ?&5fT;e((m*ERW&ErR@G5-H&&uc1@Hsy#pI__qf>HBJ z<%?OkfuEJnZ^GyNtbG1De9q6x=j4kSRrp!?T$D0OLPgI1gG<4#t?S?!Er8bKcRXDs zc~iW>nWu~&gkZ_Rh=RxU9fal-orVROOuoIfaJ zN4|&S=U=YPHuzgOZmIGHsN~njq-c;}rVdk%tQFKQ1voul1cW@cA1$`A@6-_4A*{(4 z;yLBB0!rR^@N>Lhg6Ohvt+rj6wj}}Lb!=A?0w7s}H(4`}|KyK<@`FN9ROIGjs4MUl z=|hW;7*JD-7sE=57%DvRU__*=eu1cx#0kKBo8(w`0=hHB1`e5&gT`2Ho>E_4?A?t+ zMa{o<@59jS^_3?*kyR0?|+aZz^f&`u0nP1h~;zx86BB+#5W+IN)_nIuX<+ z`di=o#F_kP0bCfe7t<~4oR>fGzKN97Eih9BI5kBf9z(>Kf0nN>-#6WE_47xPKG07HbeMF z530_Za-q40P}Ao@z=^LyCjnbwC~%tw*d-}SC~W&_5-31V2K`XPHg&!>YR42v6aet- zfi}oP$CRRV79u+F!0~*t0RHJ-C`>)4gs8PdNiBtNsSed*_;X5-?$}krxhlp0K~vQg zpy1$7F=Sw<2vio<-%3)vyiBcuLzbRF!+{kZUS2Y#4`!pvq?b!fTJRvqsLg1BP)EiK zX77@YC_{;doCRVTq+1qiuteP3&V`4tb+`RFjnfX>TDnvNA$aG^c z4Z~y$8f`7jHm!}9q|;dE9a|{XZ-jpG*ZsLB&G6mD_jhJM3>9? zgH;FyuS-bn_O2zwpw&#o@nORN2k~q;XftrmO}TMARlzhce2Ao7)uBK?t9jUu`*dd^ zl8F+rL~SrbN3=#EJkSr~_&`(Dw2VA&Zd8rSwBNR+;b7x=M?9~Yo;NI{NScu0fwb7j zMrf*Cc;KQszIm!Q0Nb<5 z08M8M4_vDbaFPvhR2d+ebE06oUf-^WPYD=m0>~902lX{AuGT3_U6UPQgM4@SM4K9C zYD^Cxo7UL`P&qg%N|f#?ppm)S(%2A6rKv4`LI5<%JxTIl2t=-VqEQ68yZA!3+EFG| zyFgPg+{G1QsZlE>iV1tu(UWSzJ~3oVUpUE1Oy{Qu^-1u-#dA6=v>h5JXGMC5xXB?h zlZ?wmT$=GyRV6>PW%`()ek#zz;NxTi1qz9ofYrHb^zEmkj|0_ga|-w|2#74?tsV~D z>d{37y$_NDqQJWpPKbPsB<17rwoM@=k|gj&d#~~C#X%cvPnIO9Gbn2z>k%^RAm4ih zt|wLvetltjDt{ka{k)D8lEGn++BlQzn8I}GqbOv82y(AurUS`Hj3@ul_LBpK%Eofg z(4l=V;81#(BQRqLXMk>k0Mdxwl_~Tk*GG9C zgor`sM(r?ovGmffUb$ixG|1#{$P;>_qG$s)Ay(L^ol$J$uGU}&`{^ zBXNCDOQkoNhf)-XPQFAPKa8Y*+X0l_W9NtNi4Mc^9`kPM9y@9M9y4P~Ei!r^(@k0i zN4T9_n>n(_!SjTRKbDEz>*>!iG5+(S+`~~f<}{2+4pME92HUt zxa2Hy{sNIHuD^7)7-6W!=F#1(^Xf}k6abM?1We*^CIf<`wC$A{g|ed~Mcs15=Grln z#wTf(C8;p7i}9Jp8ROLX#``>3qPC4!2()r=4`y%K;KU<^hcr+UlgXM!Co|Ot=gjko zLWse|moD4uFAjbG2NCJ^uOA?h>l5i@|KeFNW`uNZQQB$uZ75d+qkEM%!I`8ao!inz zx=xhexG_Yzc6D%Wk85zgy`QHXsc6x6CjD*61<&B(OP`W1KV0f}wQ^m}x(On=H1s3o z%((YuMK~3oF5MVheCdYv@Hr+X(}{%>fW^6t1`3oL^(`+l`+;#f=v(xVcjNSq{@(Z&O;$i_I0QtfGu>-T?k_ zM-fMTCip4}YTsRqt%K;2nzXY!JSXQVd9BDA1X}mH%C#t+S%#$EdLRNv5Cn5hiVOa zUQjeH){cHbdNU>0+hkZrGrK3~gnRg)c9~VWk8TPOX+fe5FF^z8fTa`rZ0(SQC5=VB zwsJ^SGJ(`ZR0Vr#UHV%7-caW+mrGK)CIFi^>#qR*VV4AZzidsePT_|)K$FFK`lz2t ziTvV#6#Sdn{b(K{h$|mZrFVF=5$VLq4Y6wW;t3tFMT7#F`D{j~G45n81tu>vQ>!D6@HH=6-$ut?j^+G=!7N z&4uvJe=EJTa{++RTdEetBbG#Lu&{rby_;ZRwRDgFNApL&_4rT!_$R;dZ_2c~lq>x# zj_&c_{Z~KwU4SSw&3=5K+jMZbINj4-J8v%=Y41aU@VkUwAdO^3&Ks}JIlzd3CW9qd zT3QMN2q1Cf%a;HSQV@cXXbfWp2WZHE#%#WpJo$n?Zt(%MdjNX9P0c<|NN}L-1=(k2 z@EG1h6bq&0#7pl;b|mq*9JrCy7_aEhk&-pUY9q*vuVr{%99-WT8afHzpRCB>zyjS6 zZ+b?(gN&MzB?Y}#8D0JIhAh%R&f^=v{q`RSn;MYAU4#QZey!GF=Cb#=zj z;g$bQ@d!;WwC>oA7_e#+pb)N|%5f*`>$_}%g^(h?)eN8MJ9H?N3h?D801;guHcFhg zQ`4r@zlJhPpc9oXGCp0yR6nEB0mp0QbiE=~^``$YI-jvjtuf6f6ZkcPZfIYa`{z`zIY{>G%l)P)PsgnP4e2Z7%16Nxd&)G({5nJc zluC(o3oXg}bi)s+hP2US2T^+4-F_=IQQdSJq#gp!(PSBD^nKGr7q}k-*fBlk_*UMu z>y>O%IUc}uB35{9g8&+nqbT8Y1bhxE8J2X62KAn6v#*yG87N(pip=s&QcQ9X5Kri8 zy9>T|n;$^tRBBAxr#*a0{hcGI7L}S?B56|-P(hy4b7m6GK(wxcUNScm;&QE0j%T$P zr&+%c*^Kwd;*3vv_iG|NQfp+k*bAI3RGIHyw9o}Y-vw3v>0WXFTKDn zgbFsm)LCI!+{Qyi8i2#9_=H}q^*2$Dyz7Dlksr}t+2@FCN7K*xJ^0P#R!JjY@emkM zhtJoz>+VAIR7bE?r69sl-7+W}^GBJE`4zq=P)xmb0QVOwA8@hWr$PAY2Vm&r4_Ln6 z*W2-3>2h9nYC!GV5asNsHs_Zh{^_Q|VUT0|ze5vdud6ghil@)$tWn=NRd0!x9onW^ z4$tdXFNb(TcYZlkuU}WwpY)M=3Q9}54@WmU!E=ECgh>J=6DD37qe^5y16Wt3x%KP9 zaI$4O&>&HC*VUE*b1)Qsv-LEg^dEt>!1svus5&0_<7L}Qa44Z5DQRO|9GNU{1oMHgYHZJ(O6Z_n2TdMgBO*cN(nL`SCybm%snp1*{;6tMQiVfNUD^ zuERpv0bA;@5Uy(Tuu8#1$yJl6^gE&D_fA+uRA9~SI9iZ(fADl8IWc{8!Un>={Rd}1 z`hoMIFPkYcyxE?T9SdMa4ry*K9=xDuO>Q#SNSZ*r<{iMEv>|I>TnIIzY}8a{X#ARZ z=AicYcmJEue*5un|FzG4eP^iwPMylBHGqvdEJG^oB05Gz2KV#F zFaG<_ehZ|pWm_qc%{#upkMF0{OY{}(TqqV?+%{HMjze#qpm^J6#5(1jVQGuZ%9DVM zn+UfQAlNhdCDJ_*L7A4u_ytX$G!$4Xyl~YdOw*5gtUY5DuM{ho1?*|i-(H`NBU5Rq zwL5K-lx2KAL)*d*Sx|_=mpVg=TJ$sb>?Z?vMZMpa1CJe*Dk>=gcj>QZC3YG0lus*(*PClS@0umBA}N-qRVY~PJu0?L5N^1@bSGt_L6-dep@ zOD)3MJ$_dIdRriAQ2BBD-}vkYs#Mx1@pRX@CoC9e!KUajQOfknlh)>DDIjl30ApcQ~C z`=xSoxsuMU3GmQq>T=svcxxT=>+y!izyH7e{%;kba5Q6gY)KpzXHkmy1HkxA2)3AX z^-;t2)h%`53xJBhH>ho-}Kg~wTO+)Vf%Mda!-^4Neryo zA(Z=xMQs~B{=I+xqu;G~GDMHZ|LhFiR2 zj28jWj9%;Uzx^*h`>Tan=)RegVyq2sE`|7cl^=8d{5t40m3{mYw0|R|5dIM$`QOJS zva^JtvH(MyI$ov&Dkv(>f8sB6E@MccDNBK@O^uwudaTD~5^sKUpj+e^@wusy1F9&iIM!<2TfUIS^)}joZ67eqrWF(tB;W2m)=huHL$Izp<=Ks0D?3_R5cp zKz6f+)&a5G(r`lmnLZ-#Q@Qg&9@_c#jnsC5Isb4zy>{&OF zQuYq^zgo`O4p2?`!y7esltx5B28G@DD$1qE`;Qo7;(Dre@o%^RUcN{+kYFYB`B!Il zlGBKR(>~_cq}UyR2+Y`+i`>+Y@!YIqzv7-mR;+0J>_EQqbt`2FZ^Kex^g(Inu&E@WmZK&zL)C;^ef_Gfa)F7Ny2{M%;Olo6&|wxfFvQ8Xjz6TkVg z7vrzaaD*RVmB&$OJMBFHTXyv3^5FERfuk$&v!F4@R3sd5!Nq)jO36_U#O&syCXj_F zBK9&KgvbBjU;XIU3U0+eYwNCdvXLWi;30YwBQtu z;kC!}KU8$7^drXbR+@@$Xp3Q3_=-(`(83woq#h~1&*DaT(iBs4=X$vo6GCI5gD6KX zE$hFQXdKYQriLW?8uL2(7}EyVxy-psEQs8+{Wh6bZT!{>L-Il;z44!z)9f;+J!yTC zy;im(4@}|_-*Vl?MW(DqZ#h09z^b#LlvqESOEFw9Y=*c|=H)=CNHh2As}UYkI@n75 zjN0|zOfQYWDsfFUZw+qprip)6OZRyHkAL#lerO@Wwu(&R$ROL}U;Brj{dN(SF+MLH zg9@s9$T<(ZX!}LMfWXLtCY2?ACPz*yaUkxauvzhu^Q{{yJalmkxJJJe0%p(pnua91 z7)TkcggTC6@p04O=SVxeR(!9=NgLt≧o{%4yggJWDFD!njxYC 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�e)1&`H~l;%@dEP_6@2 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ͷ?I;P4R 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%0ARZ4Ot1foxSTA)*%oiC>r;=l207aLk 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

  • bdrhDZ_ve{ZK;sr-6ad}aW*U)~J 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%0DxZx;58vOT@M*ygY1P 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 z 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 diff --git a/agents/meshcmd.js b/agents/meshcmd.js index 42532775..618e9ff0 100644 --- a/agents/meshcmd.js +++ b/agents/meshcmd.js @@ -48,10 +48,22 @@ var SMBiosTables = null; var globalDebugFlags = 0; // 1 = IDER Debug const RCSMessageProtocolVersion = 1; // RCS Message Protocol Version. Needs to be less than or equal to RCS server Message Protocol Version -// 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 = "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"; +// MeshCommander for Firmware (GZIP'ed, Base64) v0.7.8 +var Large_IntelAmtWebApp_etag = "zVObfGF4CXPIxvxSUu+3"; +var Large_IntelAmtWebApp = "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"; +var Medium_IntelAmtWebApp_etag = "IeB7H1GRGwkVlI3IGH5z"; +var Medium_IntelAmtWebApp = "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"; +var Small_IntelAmtWebApp_etag = "Ci0RenuglliDcxGQPFS+"; +var Small_IntelAmtWebApp = "H4sIAAAAAAAEAHq/e7+Noou/c0hkgCuA0+rcdhMHwq/CcXohAVwD4W7vve/fAQ2gc4WkFXILx+++kuUCgdRbrdHMN/0Dr9I1u3lp/3qN3jNMK6RlpeMwCO4ZOQK5eVmjBqOopY//rekm/df/6zP/C1FL0DRj6OWCa+Q6nXz3VYqkxIkzuco17vRz6yPJK1AN6nStC3816YJ+4ZT9P/cST/YcakwLoWrQPkGNuaaCd1EZykpwTLkwLhnlt55Clk6oUZl42gCltIYSn0teepXCIp0Q0BBfhEkGDS5mT+nfn//y+zb44ZtSpAbpWIibTJB926lGUsPO757FBlXBxDauKCHIk0KY8AuoKdvHoCiwp16FbIOa5vDUa4A3foOKFk6xoa8wfiF1kgsmVJwxyG+TzPwplVhzEm8rqtH4VCXlvhYyDs4HhoW+npQJyB79LWa3VBvVdV75OTAm1jrmguPlam3cmxAY5ueLW9uUEXktXo1Jm6FwIDgw2rrQTFASCKG8jAMjhgxZS2gjGexNusKk61LfUk7E1s5IJ3+/e5eMAG4p0ZVrhMOOK9uQdgBRmQIxW6TktfPR4wHiDW2oRtLas08wFwrsoLl0nM2dYFZYVTtj76PnQjnJ5vN5cqjC9tr2MJTaTcHWzVMmGOkNQrfVc7nrzkEYXM+Z0FrU8cJIDlXU9gfrvR0s+g4WA3zTPtm+xWI2tOiPZ2QD1KQfoJFUQ8m5dmvVmGCloFyj6i7GHQBIDs8sNRk9KRp67EJBd0gStyinDTmvxmlpF0u56wEF00XiHZ5JJUqFTZPBGJwzG0eMhoAmMsp7tZqZfhkpE2Xb1c2yDLK5uwjfeONpS0OeVjHXZqsryshDQcijngGuEAs0BsWasRwZG03jhdxd4nddulRK7gZkdnhWA+UfARbOF0O4897airiymXvLi8wHRkseG1DjksPGNWHcoTHu+XMU4BxmQhFU13HzGsEo8e58Hnyx+PqLEXeDxnXOjHIE5ZcKCEWuH2rhOadPvTtZQcIi94J7T0919ywHPXLRh+2ZoEITQmB+7f/VZT1sqd++l0fa9xsJOcZcbBXIpL8KzlHUG7Fp1N/HoAc5sFevU5ERBe3g2WOkYevqel7r8FJYU5t9cmRCV1Ebh7WI2hHh9INhpm9i8zur6SpaZsOkGqkQSO+B3XlEDHDOKWpaozqF14nrDmQ5YDi0O18Yy7pTxqXUViRkl+aj4M0sfOeLlf0e513XVUv0DjRqR4z6WltQvH2TrzywX5aacsHD9lQXy9rncs17TOYrlAj2gX761L07vj3Fa8Uedt+mSlqc36b+55UqFtwEwvC79FSPW/0fQSZMYCDG3iaExS1GJi9f9/a8v14/c7u5bpM8pgACLO6AhfvqOiOHbq76m7M71fbncyxUXtmb220fqWKsq7tz0+tcJs8aHNdByros3BaTcHS5dDodZYwQUACYggVfSwD68lw15Tlren2b78LjjoJKKccLtK5Ss1KYxwx8PyJ2r2057jJLRkMKU51UDlJzXyKKVyYjbRzZtG21KoIFn6dEtPjADRwPlIsdPjpXM8doT5DT6cTAIYz2pckcl0fLmzZBQrA5Es09CJ3HQ1+P2zB3fRfI8e2jJ98V7z+o4owScMiay4KTFgCc3xXkfyloqtJ8VqMDyE2ZVItNk5Q7wYLlQLJbd6N7voyABSfZtc38uLs3rf5qF+ZEXOdw9JLjMiUmVGC3b3+xHTwo27lpgEUDI9yeJvI/2en8zj74i/1ChtYhsIoNN+s2qe/QwtRzHw1vUKea9BGkvlj6w3ire02MN+5AetYzVNLp1QRKI4mugogEhpu8isLIE5Y2XBlwrIZ6XLCSeuvMnUAj+iILVsaqd8xwtv5EvZXoNY4z+VfRZi6YIeAj5zR4l87Rw6+5lvS19zq2AC+OnbGcbtjj3VcllxVZUQzusMd3zQSpVP9SqVSlKsmnjE6C0do+crp462cybvTBCURJmWg41raTFoY6iC2Fvv1VnsowyAPXiolOgwcNBvOBvelBA57RrfhPECmIsnIZHbmM4rcG0akegcCfVwQEAo23frZTxCfltJWQCQxK7TgbzJ6JE5x6xf7DnBtFSZRHfmxMj0AaU3oEoUqmR3or22zcaPgvAg59BOcqo83/In4yPovFwk+4oo+4baVAesgT1l/263YRmFPlKAkMN/jBHmVdC9jtiyOKtV7griXNCX5qNoJLLxIewHKaYbW7O6G5DdFsaye4TlO43WbXbQjn7Da7XlO4nWb3by+0SqdntEqnJ7Gc3rNYTjOsttPbBc1tiNZ1dkHrNETrD3ZB6zZEs63OLnC9pnDuLnYCkeo/CLmNYt5XxC1SRgKlkfFoQfdEikfSpR9E+dNej/8BhYNK3t6WWav1E8HkQzsEQSLCk2I/L9IcQogeAkyZpwijPPG8Ff/hrPnvYAj/xcxzI/ZhtyFUbJ62/Dz3g/sFx/qdBVkax6Aa53vnBbI2nRhKy3nLSf6PTcxm/1cr5lvw320Tw+4dVoz9by4ZimtYslefWTyfr/I8TfA02lEmAb+10yimGaZUv1KS2zxUS5VlNPbz6CvVvQdu/t+tw64iFh4/y05b6WK83L0eNKz2lCnhwDHNoQyABOZT5f18JIUZzvm6uQ76Sc1Luo70kq5T7yUB0GkO6Do7IbrNEXudHRCz+X/U9Ku7RCmbudZPhjzn+Ki4OzrOo5z/64Ky+1Ep9fFR0XgsKrppsko45/CkdeXv7fNLpzD6SqLwxCJB7DN2UpS3OSN/HlNsw8QBL+rW1S15JuPmwkfAqJB8FQW1kxYf1CJFJfGkVfyboy3XLG1NTKXLAYlsjR0MPxJiCaGRWimiy7k41SvF9ZqYCnIZDTlfPrL6T2TlIkxZ4UbOSuUwoGLpMFPEmxIwCbUeB/phSz8Blh3vPPWB9vDw8PgIWjXMLoKoPhPvr4RpSMIeCleUr/kCZ6Bg3nGX2usum6RJEEfBw8nf+Xv2vnfse7MnltMFmeV+vmLHR/56WGfbuI4YeEMXaU7JmLIHPlF1pLNloCPG/eFnIa8UUnKWiHtV8Hjq6N6W0T0xevKV65icp3cVQHsbIs4xTzO+fdUhgy0jBmLAJc2/pdkDmdE856tT1ctWfRZgHxnNyGkQcLvKYaBcIlZIAfd3DJe1GgCMVtdHtPIqRHYMNMu2tYugwa0fDMLSGJUbPKUCXrEl/cJEICGI4oG84yhZrvLibrsIJrAzV/SkNeMTIbMgi5Z5S2rmE/ctOCeFoeLG4JisbhnYo7ooPydztnxzPPduVknCCRHl+GhebCbkqg0DNQ093Fgm5drWayuxZo6KDrVgIKcvOgGlelnVNWhIYc67pbZbK54oHJBbP2aUu/Sff3h0+nbvTZ3+O5vc1/r+cB8xUha7fmE8V8kWYvey+3QVh2ROyWoZ+jkND3CMjwjVKeLbB3hswX4/OmKUd/MTRbtwmYdAE0NR7cgPv0Z83NOhz5aPfy3a+UKdXX6YnLdnp23Lsvrdn2M/uVvxvcR7aNK+zVrFo4sk5SA0yzhckqZLmlDek/P1ovlJ61/mfNQDDxwrbxlTn1ES3NPggdzTjHuGlQdblTvhudlQ7G0RD1+pRLeZv6CC1KklLQO7xRGKQTqUi+NLoxso+6H9iKYtyZec0b1diSP3tsZyWUqvWioM070/b5Gxye7gztGZOVuYYbO2P7jlG12+BtbdAtbbArYOBBqjHjJSmvpbeA+28dbdvwYx2IQYboGwt2peDRMagGNt49YxcBOl+sLW+gNxukByxwYgPU4LpHmmsXYcuXqPyEw/a+jZiOYIVSfEfcO3KeUmlVE2ju/29tVTmriNQrR1Xovc4O5hM1jUXi7IbWLKu8QjG+bHizTxzsCX/JzRuzfk9OIDuaFhlOF7rmWa5STNyPtPF+S2EJxEjPDZwxkzXK+M6x0QPkd0GyRPCU2AhET5YU2ccTqvrd7r9BvNToX0/280jKYmwwWoMElzsgRZacjl15UXMbaixC8oCCZXhxUNYvJB4xjFOLHEX/A8ofhL97ZSXkuRXbvDstZZCo7X4yv+Xepff2YzGo22nI/UpwSiQdnY0sthrFyvWTYnIjU7ad2kuZ9Tck5vlUNUmInWvTY/Y/6cxn6WYUivY3HD0Q08BItMssDzHMgXWJVTHXL7kN7dxZRA2kNYkFGakEUaUmD8QJ+WGeXYrYzyTZMU5w7sCdNvidaBB8UpsJJiccdUQEDz3j5qtJLYusvH7cfO0kvz2FeKPAmjnGSFNYaF4yMMyb5LbnXroSctYRtJjPKN7vkBhpL8nqLpM7Fg6a1oQsEXfnAfJbvouXUtmBduAvTTqvEhNfNAS1McWmDXrJ/meDTHpp1cKz4Q90Xl1IptBmWCHA5OdZQmCQ1yKVUy36NwQtj/Du1Jv3/SKn+1UIr1Vu5544gFBSoNNeePngXo+qiPtfPAJ1GGuoFe//OOAz/56jNgBFZHhJM76XUsvKQ+6Vil/2svGN4t+4F8Elp9rluEkDQB5AVNVpv6WKQrRoVGQvkT9Vj2rpbYt1pqPQt+SIU+/Fn2wkV1uvT/BHuEsk0xpVfyvqDhgSlHlSarLxyYK192VixXcS2ODLTXpQo1Fzdd5pF0OZb3OUqqTTY0/TZOv2ntjmj/uKy2uqL1vNrYEY0X1cauN7uPbvPfDF09b2pXW/re1Km2DLypW20ZetOOJrrlTbtak+1Ne1qT4037WpPrTQdaU8ebDrWmLpfT0tpAdltr6/M25/ioWBMlLIHpfx4bPX8S7uLNYXWBx3v6xN04Wgru5DW8MzRAj/Isbp/GeXtM450CCofnL3E4umanrqWI4NqFCCJjnaeP3lvIZclMROOq2HK8o453tfGfIvqNyxA/VQbjrsHKqp72bU8isbxWSWJcPX3cWlcNIz9O75B569/bURLSRzjJWYarnMlk8oZPoM3ufa7W38tLClED+aHX61W+gDgtvoD4w/QFhOHWxvDm1+6t3xhwX6uFKyyZo+R1Tz1/sCzX5dLhX9PpdBOfiFsXYq0L8W7XcLyUr3v1Z1h8eH2olUY3BXOrxFiJ2NOKD91t2QLOFJOKnqF6aTpO2NoDU8gpNEOwK+NETmKIldjrKsPdviY7PEutsTjHAKSynWfqNJT7fWVjhQ68roKPhAwrhc8AwGwKR8Bj558B5mreRxyoC/gM3tJn7Bs3HfQI5Z8ExIfEK6Y5t8X09rbVWKJr5PXrd4rkvL5IozSBiiMpRTPeywy2CYnhHaWk2SJiDOJNrRQbof48Dfy42ihLRHqsP02eygCGOpWouujeu8xPchqSNQnD3lUs5jUsPUscsbwtfrdBw8L3KDVFtV4urFjZn5uvysGvmu+nN6uMho+e4Ai3imsL+hbunl8voiRarBZkQOCbOz/Iacb4GTa/J6slX44DwrFoFviMHhCrPTwgvojnIhH6q7/54cef/vlnf7F88+ve/m/t7fu423wfG+yjWxybZ0VLvYVoS6wkWbqUlduJ9SXjZz9LQJsYIWfpokwECykYWfhPJKNsFXPpEgKPkLmyGBMagr5QJh8iZcQk94DkYEyJH5M0A5oHkillLkYLMzvcrszeazjF3oiD0CT/QB+fUSWfy2NMkzue1bR6LekAgmJ8kSaHe8YkLlkt5jRjV/wQg6lGq1A5gpNRGurO9Tkj6I2L6A6RUmCfFP9CltjL5WnmQa6ziOsQFk2M133JjPL5hgYCIRK/gclCRMYhxgq8oJMc0EKrGkEuzx3F+q+xoQK3kZJ4nfp8MjggI9gjZOqzXHOt0G/3kEBVUB+eyHVktsTJOu8OyDveKNhQlm9QD2QCBaAqtZ6l3Zx+lkLNuLfSEjbol0KRTzR7ElRV7Z/B0xEySYIUPGi9Ra4L+Oj6Ve3pvlwceFWdvlG4rJ35E75k2uL1W7hzqxlCoSyoEhVHSm/GfxIRCskFpPhkJNqFMdSP98NisJoy1Q+Lo0WUT+Fu7MbPqXcOfxLxN4GG+sFJKuQraqDeOE1+yUnxRyF49fLDu+LuM1Nueuq3xrB2a2yVKuh46nXDdZrlchdBd3f7yJ4HlxLaJY6cwtZhfe9sPGkroHVKCwbcB0Gu1AajaZ+fXkoE/XBuvVwBkNmkxQf0oW0JnKF0iZcpXxX46j6joQCrH2hbaz+Bo8gtXthAGvsSFna5a51hZ9jrO8Oudxp/85+YKoh51nbtrCV1x6oxHfs18o3Adl4eUF1nHVE/znnUwurzhf8ojmWuo5zLMOusJ7nO0tsopuSyad4S2O7/pdyz2dm42VEgsDv1AstkGiTUT4RZlMLrhqaQ3UaQWi3w8/WpQ65n77UQBe3QXJXwdMXdXgI1EaBtKmfve+SE/WFLqUaji+v26WSm9joy7H54f3bdvhl11F53XVCdXKsd69h/mSa0Ok8edbMnQdrQXPvVXLbBKdY1G++56CdznjfCDdpAnOR77oYlN6D/zoQ9sAd/AZMzp/515ZzvDE0OhAf4ly+D07i8959nzw+by8h0xm0akrYlHLdfNDZYn24vRg3HhnK3CNyfyQaLbeHMsb9TU3YBbaeW3OIXolQDWSz2xfLxCsA/z8quYWWrrGSQ7b6Aq1PD1alwRc6bV0D4VPf53TSUWwKwtm8mt+TnnV0TPwwhm31+44op91RAx2oMOFvNE5oTPruHZq7CsRtjvfNzyk9VDXGcpjgyqR5fzhpiuY2xeNYCxdqc6mjPOiX3VXJp5/nDCNYrxoEScnV/pqXcsv2AjP8YXeNDTj3vniSCphpXx098x0UBqAOe9NAkb7gGzxx1sEQuBCLwcCvj4pC9RZSscsr2G4L1XgL24cM52WOiFKMB1BY5x/SWL+paxogRu9OxCIp6QARBnBPgzzuHlkUQ5bDGbjqvYzf9l9rNl027cbCyuVpW27vYHjwFsWYtA+yCG8+NO+Ybymiu3UUPh96M5mSepjkpeljV0DDxxU9DXlo8EXMf7FRD6TuNaihy+ZxO+DZK2bW/YtSYcCOVJNLW4O3Z1YyIDkP4RuYzeD1N33Kl1SOolBrMBF7iBpQUBAQo6vDy1bIeColMkxEdZuZTkOEaP9sRL3pZHYyBXAMUFGSJJIQKGjP2eRo8CGt9K+7163A1Ug0TerF6Pxf92/HEFngeTyM14WXQ/SzeLKZ0+TyeRmrCY9D9LB5/SDFP/SysBVPoTEgP2GdGgVvTMiN4+wQZTB3WJrXJQGUeNBckZuAbehv77B4svQ5RIdOgsIcApBli5t/SizSsdRsljcYcmsWrzK1a4+XAmzrGSKLx5a0Ems1si6LhFXeS536tgVUINYj6yqNEAjc1yfx6p6qQaSjK428MKej5BLEEVaA98ImmwvCLAu9wh8BriUKGFj/RtY3GR+NPY+GvtWiNBNdfJoZeF3vhSwy4Bnow0HSQZhz5d0nK8igQRJV4jEpJV5ywoUpc69VVcgYvhYitKQKbHU0D2OyamzuGaV7QMPKJ6H9ZnhaF4b9wK4QNAwzG9GsU0KoS7J2UIMTKU8JHL5f6PaLsHY1vri6q8xFbW/SDUM3XztlJbPzKCE/C2FswdqX0f7uKaLWvI1f0E83mKaOV3q5cQfUxXHXaYhx8ud5o/W5mEwgaSFg374ovKsMI+qKMUWjRCttmfvhaQ/U+XIi60pckNLx50j4d6VSzIbdnes7ow8elW4UbWNqzLfU12Wd/z9qvIPQNCFfva7mr3Ox90xp1tWkMDCBjCm+NcCAy1x/tqUjOvkmrTHxb6s3yDL6oW2ZpngLUIcv9LGefo/y/uXsO9sRxbf8K8X3LWLFgbFNjI/Il027JZLbfe5dl55ONExhaFkibhP3t75wjy5aJU14vW4x0uo6OuuyM7+/tJ7Di7HJBZ262ZHfpbQVXCLEZT9Z1mANsqEv5dGZL7rItCx+IShYjraYcV66k5u2lSiaZAsqq+KvJNIE6NXflwjBytIwv8dMX9fNk826WYPL49i8joNhm9L8j/WZ1q3mQv04O38ZyE4/tiN1tc/IN2BApBqLMrtbvRSl9XKC/zOlRUz2tOREdWlZg0aXLUr5b4iMdUPpFsvrzjx9PRJQTHCGBLqkt67jVjDdEjjZgca/XZU4R5nhGoaUs5daUZfwGd1TgrnjtTqfje+39HQanTK7Xfgj3S+1tGBpj+XRp/eZ/prbR8+UjlnLZqPPf6tE3RtCmLeRstZy/Salt2e93q36rxSU+DcZEPsdJbMRf5DyTz+v0m5rba+tUuR3n/zY7TJGkpihtbEqT1ericjbbE5CwltEXGAytPYF9B9yqk4cDOQxkzvrFZP3rD59O6xcSRi6bkmsybHJ2CzSGuinxTM5sSxFYIhPPtBH1VQLtNk7s19XX59yie3wWy6F9gp5vCsAeAWdFoEXA3y+XRfArJRbubAM4RGNgE2mWyEWZNYRXF8bK0HnRZmkoX8lVJRaWhYwuudLek/f36FghJEs5LfsUAIyoJNzTgyFgEaPoo9VK3jLYYbFRUAIo0BY7wvp19evCcuYSm7v1F5wU/clyEscKKpaDugfJkGP4h8kMljC7Yj9RbZLccpkoqiJKZQEl1VuYFjrOCz2n+tTWRlBsHgs3jHvNfRnGjsMi0FKxNKfRqS52IyELNHCWK4QecbS/rFBrCKWwLcuRrD6n3vx1vf76nIXaiDiMgXmNb77YLEQDyhqJ5d5YTsxKDFsaYW1Lx2+1WX2zVDJsDzLrywhMtms+wn/C26hvJIS9EeUXJCL3CNmm/KKLpZ2zlMUOLGZlNv1OAh82kF/t739lGM20PLWYifnxY4rarOQoAWQubiVtZZ4Ud5+CwZD/FLj8Fxl4/AMkbuLAen29nkN74LNAM9kRj3nCx3zKZ+zOphr66f4eHlCmX/Keo356xqpVQn9Ky3oo6zJS/MQdeEIAEPCXC1VPgww5ZAEiLi7X4wJ0y9/J3BYKnD0blPcFar+/Lyhk2vkI0pGgjBi4ENkDDx8+Phr4aA4R/U5CHW65jErKTApdLN4HBjvPlKhWZf3P0r5b0xcQAoBsuTJ5qBrOHdjnOGEEczGMA0YRPBPoqBBnKZBMriv/eLvED7TgRaJkvUlnKCuYocyALyX5ePLnzeYiJWHhrI5fqLCnh9PA+vbTDz9afHw4BgNuYsThN8GXlxvhtd41kFR9qMnwnay/j+1ZXZ/34lVbPstM3xJPslotVyYTlXWXSqt6iu5ttfq2TuEEgRgn1WoMSqG7xb8PYFt//+Hj0Wnth3enb23LidL6cyyGvVrEwjGV/6fJYtOljtHWJKq9T4UbTnsaFjrOlI0H06GIzCY1Rafgy1L2GOv3uzOM+PfxTi2zu5cY+v27Nz+XGgpVXathZ66jg+UBk0C82VjrHHI8Gfg6PoDEd4EorqsYMig1yCCvEDbiwIJQM2b/LAulYXdPmRMXzIlNc5DcILq7DO7+KYMotQUU6SSxmY3GNEANCKHby1tkqMdFs0XmhkQkDwRtw2xg1f35Wgqor3dQ0+1m/13I1nLwbijc++wuXnv/o9yMoXWvbUqsJwvbcd4xY6VylXXIRi8GYsNIXC6SdSwvEjvBW7bJT9//BUihZCKLKm3ISgxi4XUafqvb9A4aPBE1vwP5RrdzwP+I+R8waM7BzHlPyJDNBnOYbg3vhV0Ixjm7v/f8Lk5S9+2543zThOgcRALmvLZ0uv1+mzlecyi6+5IUK4FROHeABOpVrHTgozumIQPvjIXEfswG74JH713m2DbC3KEziKt2IiQ69/6PuDrm42p8/8e4mvD4t+S3MU9+szHPhgMppv1+c+jY4N8p/MwGgylv7U8djzfg2eKd/SlQDb/x2s4clTAogw3aO9zzudfhvs9b/IB7TQhQ3uSex7029xu8zT2Xey3ue8MBzAqcKRYazBn3+/2GX5OMOoq0VM0QirQa1GrQiFdoBxpDoUAjf8PHIkeOsAEJ7EMwed/2fgOZ1Q6req3iUK2DaSELS4BrPfW4Wk5GtLzO5mcim9lhPtwdwtXMiQIJvRoPsYklDB4WfT4IYiixQEpS//z5QuKt402ywj8JpXjG0J8loal4nCkes7HApGqKSoPVWwWWEztWvyeDI3Xto6+G5t7rDILI77X2b7VWAF8DeI37rRjVfcsZg1UrDVlNHKv3ukgCHOolluUKNq/7Fp8KZamqHSw9mFkfy/Wn6wUcpsHUZ3NrT3G83xNimu0dWJ8/WwC0Le1yS2RTZ+yf7+/16mIXTp18fbKmXxth0F7sxBGvDNvoDqmwXkEovbL6rxwky+udUbky4r7FcBgBESaYygc+LHfca+12axuJyBlvqU7GIi7UXZLVXfKg7mZibw+DYAEy6a+hgCtnh1bv98AKrJ7FV5R7rbKvLT5L63oMDe/wVeVmPlusg9+xjAUpUN5XgWUxNI3PzcqZY+UkLNmtnHlaOfMXVU4ymD+oBIRhJegqK1If6kGSJgy2hTeqKwC7Au30PtYsuUpmdKqPH5FgwcwRU2eOBXCQ36y3lYJTfc2ovpRLqB4cMd5uH86Mb3YXID/UrOLi3wVv7cI6jMfCN6bjr5t6Qo60tCvR3C9dHtzqzsNc1Jl9hsTVx8VssrFBFC0vm32tBgJ/be1R1wwr7B/SZIE9L4oXRvlyIXIcPYTSKhsOpWw5iIakIEY5UVEOAkS8jUtXPzhOMKcUo3f8Gsx5o8ZT2HUFm3AMeU15OK+2fd7wGWPOmSREtd1qNVosVB11Y9fw2BHnksw11pBqq/SzduyPuLfn4YfYLipfLuf00ZXKBRi4qaRvecPO4gSXvWr9VaF4higkX1e+LCH+lcrKl/VyQU6iFNLK0ShlkzFIRRwKvl5HONtOYHkP6YtLhMSrRG4SSIygp6BEcpPEFWXt+iJJRgBCWQCIEH25yHPAO8Iwq6wn5wt8W3F0OZ/fxtLSEVGBiCgruC8sNf+4XE0qo0Sn9LmA+tyc3CyjSrRZyso4ufGxXPC/D+nKSi5Gy3llPmrBinyaAAk2XTJnPV6uNnnqhpJYeAJRggCAIYLNkgRnyRtwtEpliZtni/MPXwyy+RQfJTr1VXIsRD2CyrPVH8djHEtUhCwkv5C8ZCvciEdKqnLbbF+yLb+SfCz5EZeSR5LHko8kf8MTECT5uRyWGtoQ1gW0ljWdMqmpbQUBdPsDgw4z8nI0yTIx/imuM7z9nijSawyhEWG1oBEMKrCwIshYf8AOM/jG9wSuz1BGfatHxjFeN8n+rB/9aUHzHU0I+/VkpDZJ0kx0C3xUw5mtaQyqe1DP109DDI4kP5Yc/3kj+VtKaZrCnuwNTZ7KcbeEG+YT7XeFTbC7H8+CaIs9VLu/s59T2Rk3/rK4kninSlmbtmSLcezLSIDne12/0fT2RIQ6XPaMIAgovOKp5BmCvN4Rdu6Psf8ErfkCv+mWZLbAULaGsmkZcf0fQtImkBq32gxAdKfGXAbj+m15YSPur8KF5w8iCtWiLhHeViVXBoss8JxIIXEBBeN0DEO6AOn6mqC9oyUBji3HXdZQCTDNUJsyIAIkxTMImkwKwlhIwpFI6XRRxiQqO4XS0x55qFJBXP8S2dlQVwf3QCHJiC+mAH0k85gYY6vvMMqEziZxYnuMRwMcIIcs3RaZZuagzVtUlsgdZVAZD+0CBBKvipZxkOeZ+pU2MQ2AtMwOYFBeTgpexrASIq1dykKt9yBQUsF6s+3IBhgHHAjMM47P+NTINhmfCUy0+QqXvvN8gocenhvHhXoyp8YqRMOUylg3TsO5njeMUg0zCGMBCSOCZ47P4X9nxPi5WBTnTkC8MEg9mm/4/fN0je/1FtrTdxbLFvuo8FoUUBcY2RqwtZjeBUAFetsSKZ1rB9Acw9C+ZiwEx55jK4CiYWFh7Smy8cReILsCs3BFu4YA26KJwHZ/34AnM1ljaS84lCql1awzR0Dxt+h0EYWRGORO9Nz+nLwYKRYybIVzYrWfd4xbeRQB72Cex9Yw6sdjas14k8gNolUipyFlvADIcN9R7Xv3LCEwV63ihmQP9yJhftgTRbBI4XtF+J6GF8FCg/tFeD+DF8EIZdhF4cYoLXMqOhcalvuBbrcr4Do0wm2FzSLAZmiv9N4qM1kbgLyIDvFhx/lsHzUwHrPA3GTbxRcENQPdffrYbUVizw3f257HkVRt58b1TzFZwOMCayvIWhDZhw+owQEypS6DEDsW8wJXOzgWSKk3/LMd4wJVR1Pp9RWQFSm6moKC/yH+QONxDvsQ7bkar1pXAecBzjh6e+B9zycC80CuhKiRanBQeQHTTDG1B5gWYPRKpERku1BbP9f/xdh6j+v/5HGRvLNDvnyavLtD/lP0NP3BDv338kl6392hl7sHB8TD3Yfh4HsBjaTUgszR1y4ZfvnLxnYUyIpa/B0DN3G5hfqAAx8tfLR3zG3sCLomQTm7t0PfLDTYXB2mzJEDgWDzsShFFES2ApUbqTtemUEHfGdu9oOaj73DHK9cLqYL2FXQn37FfXjJVBfmY1d8eCzKlyYDWYO+epgbX+qloHzeXK2Ww0EoaFXdyJMUdsyfVsxC1dfuieNqNe9Yj/Uc6AO7y7Zi9E7MB9D7QXyoz2EpIc8TxonP+pzcxAktCSz+gW23+SQFJf+1L/IpCgjQfne5noji/HAEsYtPOzbW7tsQu9qdyesP9be0UFdbbELm0920v/aK4lDIR1kQYl5AsGX9kp5/pr8lIiDL04EHkozLekTo4+XoVkAmR0aITBT2+/SQay0QlNMkRKSxBVKRJzV9DkGuiVT05I2f8fYYDFoC4Tn9JJ2Q/3NnwslnOPjjRBYLD7/58QIOTxl8sBrmKBq5CJQhcQKy3VI1RxykqAqnreHP6uM/Fp+VgT/DQGDx93IwGx7SM7CoQeFtAmDQdVZSV3psLlkdPAhIefjgFkggt3qhZJddJfiQH0pf2B3j8CYiz8V6GusKcV7H7xEjEpYMXiF/XlcfCdU/dJOvdl5f1+LAfyFlFDQKlHHghvGO3nhHb/SMdHUVEcSfS7Ck8TLauQRb3DDDww4VfRHmrdzgGnjEY/Pilrnyjno9ny6g9HI9DPIFozPib87r7/lIGLsr0WsAsTAS8T54xLHRLV5txEIlOu1mix4RwLKPRu83a83dQkKLeUIRj0SqImakcMSVIhaS2/9+COgJhOIGD12ErPp+k+cQxxsKG4B4rNYw4f5QzG3ANADRZiwwhRTZi0zSuPb1/9OtBXfSVbFmNzRdQuBG1W/5YdE36E4PHW1cItMtNFIeUg1V1VKS1wz1Z9KskdDtiVotDlmmIhqKEc9zaEdi5rFyeOSIZq59WqpdF4oneUFIf16A/xTtM/Omrlk19/fFHkIGfjFfK+2BgsYzVOmlZte4zlNuAun0XqTTf5HOXdNMG+aGDZ7f6clD6TR887rgCLr38/qVXXbq0OAed9W/eOxwXv8q1e9t4fZgusOjLtTQtidtR0T1GIRkzY5yhU0SeGcMd0maQiP1fg/lzNkpXjR1kYx2J4DvEArhsqBE6NvJ+WSDYtvPi22VSjiFYw45QhGd50W0WXA9UOBsYVGtntc/2jFP5713WPhpcoscodeB2oqpf/C6Byxse3m2w9JGEoeFwkJZWj2kOnD7RAwUUIss9Dyf4J7fzBFtOPLpsrArUki75Xchf2DmQbHXMAAHDQC0c0DLbQGgYwI6AOgaAA9YfIOigRSNhgFotwDQNAFtALRMALK0TYALgI4J8ADQNQE+AA5MANjRdE1AEwCmls4BAAwtdCR20Faec1uZ52pNcJPnZpRNH7OdLNvA7EGWRQ95bpZtY9bLsuSuTFTrALN5wTzMdjPiJmaLkg+Kkg+Kkg98nT0ArO8dZFkPsr6bZX3Melm2gdmMtwFWYaSOMFLTTuK8/hc6PMBAPBd3UxlY+IkyawuU358Jmc16xIWtMAzfLXijvkFvWz40nDB9uyFezgQMU3r9AqkzYVmIlWA35pdSdFxMUH9HJKpPo+RXST+36ueIZP2d0utI7JE8qX6/KJKJ2jOHMZayc6mI6XmeSpHiDsvyNhYe/MykZlkrfAQSEaG7UwL+XNx6N5fakqG0Hwt42ke3s876bDKb/aDeW/+TS/9YvID8Pok3NvayqR+49gLjpeOCINdop7WbLi8fGAT5LnNp03X572DWVLK6+gSgsPArBBYL0JPQe+9i6eUMKuD74oIQrzHTpWVgdOhIBBLFO2VX4Dkgw4FPr22xt8rp2JXwfK6jw+M4CFnfvz+uuG6j7rpduAKdX5r2TDFFKZQpXixAYeUjmsdYptLPpPuG9KYpHYoimlQMOt8CBHcZjpfXdrpZsn1CUxb6ja3W1DA0+TuqCkEntT7fpcE0J+z5TUcyUh5eCcyEL4gSanRHaQnCF8ULNE/N4rNQqqa7pvW7I84k3uQCMCVJZLkffDV3yG90OB5zpANMNd9vsGwlQTV8VK0+Jiedh/Au78LTQ5md7NEovzXR4n42f2GBjX2Ixz3S929S5Lda+OOmj6e4SBX3/+06vH+bijy4mtShrvAlrx/BEeHIZulEBLs3tGEGkcSRiGOVsiwYm1kw6vORB00pOy9B8j6gi8fFmRGe6zpZqGCbKZ5SCM8ENFBa15B2f2+Edxr3TeZ0tRYpABJ2+9mJIHQugX0lDFJ+JaSWcHXoBld5McG23mN9EHVVm7xl8Ms85PkJJkk+X6TJNuMTKU72FzzT3qX26XX6V+rEsX9yf99u9uDp9ReUXBSHjOwsfIMfXsRvz1RsyzlxLG45C8di3LhmgEFgsdDscKgzeL8nQAEOcXsCxAMAq1KcqFGPRrsFmVVc+jTMLEOOBUdiYJQowLFuLAcBNJjiaDmQQ5SzB3lUQwBByKwLoZs5+QYIiCGZajL7FcXuY77X0yu9Rih7X7HnaOolHkmFVrbdYvHSK8QuTpWv2GOd24Us9nAnj4+CS7nTtS3440set7jkIeGY1MyMcRq5nmxj2dDiYhHuvgJDKOHhTOQ+eHGnR8+7cxnq4eiIKWe54KyJBG85LNltn18B6JQB8V07rq14ICcuY0HyCBATvpHQCozm06YiUMrsAcjkfJzy/N1xymtn4xSUv43YVk/SSyi7+lm1KpWYr47HhJC1lp5FEFB8dVr8Wlw9MPo4vWzJT3Uig3yAiR7/Trj8hv4nqJ6SXLO7op+BJrxB/9yQnx8ocgBU5uOb3MdFGfFDBiQu9zAadCpKlCoLD8t0By7jZVPM1XlkW47tKU77FHd7GPUtNmZox0fl5whQGz6BfZruyygUZmlvJudseMQJAGZBA5jZG0m95cqGokCJxFXJpJYKyk/4wpjJ9a6rVegtoQpORDNcCK9lxPxd7shr8uOHwc1QvLQ6QpByfbgQJ8ILmn0BiuwTAS1VNNSmffhdDw8JvvausrkqgktcDwHTrZ3gTtRNeFMTJxATHwbglJvqYsi/AwKqvJdZ+19pVrxrVnmA+d3dmC9Xe3f6cl/fCC8cLSs3jjguKfL1GAY3nDgJccyo1RWGnql9yr+DBgFGi5u8Camtv5uQJYjXbq683Nr/oFnjZ8yKAf+Umw96j/Qs1zWog397QCsTXi4mfMxT6JUyf5yKD4Pjb0AojfK4Q3jM7l7ovu0D96Xdla7coMSduXNK6/vFPt9eCRxf/pW9N2Fr4+b+hr+KM3efxHMjjBcgxGbgJSwJbQg0JE1bXq5eswVTjE1tCKEp3/35/XQ0Gs14bEj7X57taoNHR9LRfiQdnUWWIW/okBGUl2drl59Pz59Bv2qvd3/m95XeYfziaQqHwwDl2PNh3R6rlVxdw00cqLt4HXsvSnX1RBHqZ83/bLY4oOZe5QhlfUYtAX5pWQzfF59mpZUbYc/nUYgC6v9D3zXDJ1OvFlFQeQpScVB95nnw6BfNyKji6pJ6IlLP1rCP2ChrWkIOgMa6RN2TbJ6fMTOZeJpFlDTYpRAUntB/dF34zPov4wpHvYiAwokuBiRzn/qi+e+8XaJydrS/1FoDnmbxSSZpJOPwVh9U66VGSrmtx6evZtgTSfsfI5nB5gff81vaMxMLp21xahSq7FfnC6IZvKh47lybgzCegTDqZfA5U8QmMdMAsyAsDn5eAYdpWegxiFkP6hQ6xB+ml+IrK5XzJasbYy/cr8FZ5d/62RQzDx/jT0ISXoWumGoFg5TcSStmEFLMgFcv34gxmGsYMd0WEX2O62zJDX8sVwDEjkk/F4iPjf2sWZgiGfpVW6nstl6o7fBqQtt9MIqkjqni1O201Y+w2ICPFwpeoKBZvbyi5KnkAPIL51fwzrfcNhCowHWXO+qIeiJixam7vKy0yU9+SCKYMNaKHzminTSGBeBBd3lVHaWwuJ/w65g29rrLz7M055/Pk5Th4/TynBY7h92VF2r3jxtkXG2pw2P6We6+aKmXQA6lCwkygt6TJQYRE432RTtLZiI7ytCpA6ifMMi0f+iGv1hlFXSvtNCIY20+1ARXBKfuKf3goiBepL9QNUqR8RvYpA0uZFeruXb1A4oSa0dd/UahXo8uNXy1qY4wYz9c6cCKDtArqQ6uKqiDjW51IxluSdgkbktI2kZARwA2+zJql+iv52ofcjRjnQyKs3stfCw/b6q9tv5oqb2O/mirvWX90VF7K/pjWe2t6o8Vtfdcf6yqvTX98VztvdAfa0DY5JdGrXGvNfHV1l8tpT2iSiP4+CRhqTYBq3pU0N82yfMMkidaU1sDi6PVYchGtpbVQXod2tiWDubRba6Qg5LIOgjbtASNtQFitE75gMLnegqD6d9Wphc+i8WwrCJhL2gDNHptvvlUXMd/RFyz/HXhLEra3pKHG2mnDXDSFAJNNxkDFkHTrPmXeO1Qr+TJ4/pTWXgesm5G9qdM93phw3oPRtwoygHUKQRoSJDrRxhkKeyhvOa9pkZxqbDm3MJcRKS1bvklAMsXEBunC5sUWoZmUTDPnl+M6XCyciJVhJq2XLhw67cMEZcRO4+didYVWtSsLETqWlUI4VWFSARHSBdyWXyJch/tQp1gUJlgCOaxxF/MiG+Z+P2S5B9e8vSLvrH09/RpCSImPCiXSN3W8MycTaZAVrbsSYvFDIvV4AveX0FrHfqJYv2tZ1t2k7VsNJ3lqbzmLtadnH5F1hunUbKul59Y1repVlOvhxjg3bh+JQ9h+lUjnLHnL5lEDbjBxEHltQb+G1IPaHL682IMgqBPFWH1kaKU/SNhWe5fkBti3/UQ1ljESvV7eK7lKUVWJZ8pM7kK1lAlAQviyeIhgbjkUeJ2jxSFSyAFJzXo2Rqgvc1Sia1Hldh+XIlTMoAyRmz6zLe4FcXZIkzcz+b3lsNbevTucfDdWWYuX6Jx3TaKtBhYLT5NlmrPZxBPoGYYucEoRuYgDJ0KbehIn7pyBWZbBf3ivkOe5Wu1L6v+NbpSfY9/+/z4gYEwWMTWpQ6Dr2l2y8Xm+akLKv4p7D5BKv33OiQk4t97gIITz3Vt7ylvO39eaDQQ1ha95XPbJjtVR+pNKHU5CNVb+cwlQA8pGnrA86Wu/JFJ+mM53bvQqrwdT4vcH4e+OpYsfu894j+E9gXrzXTyN0j+Jkv+E5Nqa5W9O5AwGvN5jRyvG19C04WNMKT1FF+9NllY6Z50cM+cp1/3fgYKbp2/hHgtahlkxqrwQTjEkrwU/5P6Faf2udl43lhzTTf9bBQs/8AsMReJVhN3kqVowfsfHm+iaMmvYR17hQmwns317zU7vP7DU0itbNZ/+Auv+ajz27q3dfD+NzGyqs2UH8d9VMFTYeT7XcnR8je3w7oNrYKH/hJhGYtIC0jY6v2aacdH0ZMAX4gOHZX2poqDCkuRk5d378MzWnWoe9pMJ7o3Wo9dFXLa18A21Y+uaa8ghqReY4j0aBu/HduQIMSOTGyECfFaN/11A12Hqr/D/43t/YPfYDya5my3PofnA+Z9PzK1QZexY+am8Vx9WGM/KInqqQppKuGBAhpxgAwRu9AZ2S3ddRy6FiZX4zXijf2Rk4fq4v2bo/gqhdWmcJCZnQaY0F06KYQHFzoOtFEmh+Pjz2BHDMsymE16vrZ5p70VTiKjBeftHx3/tn/0ebWMlrnhWc/FvHXECGY4vLred0oirJTYLRGyU06JklrueNq/09nNOHRrzk77ru55GI5PkeL8b+n5j2cK195hVDFg2ghTioELtbkplJ6qKP8MG4YrBx2/zr/jRtR4HzYXVndhzYaTmDF/QoDlUNNdjKo6x6xfjMwQcwzPI/VO/Q5B/YhCQblhSFuZgjmauDG3qajocvMRyTKjUg+lExJVLH/ewLD4h1PZ0ucnqyi8cgqx0NmxtrDq6IpCytOR+CsjctTlGMEqKKnlVbmiKH5DxNXRFv3Tpzd172zU6nh65oJHY6lmXyv++kbk86QPHSP+NRk3SALTwIFQShH1AdwhSEHszEYc3b1eT9yt4AT8hgce8dLQ28Ef8+l4aqnVj0efrms4WPg9zPLaojYG33t9HhnXRnVCJ0jj97KUhfyMX+wjj987oGNduruYiCOKXm4zHg1F1PgGOl71twf7fo+ePsMraE3GJHimaF3AGS20fboZONWxsHIRTupyncro/KoUBeT+jPruv91/71u7Cz3P0V9hx3N5Y+d5giPC+uvQz+6fTVn9wSWSqH7g0eLSu0YFMbfG+nAM9tbPN8wTxPrS+YZnjjAP7mqPStaIsVuuP5jI0RoLBtHJg+lxdm3I+YJXoVOFCXrQ2GZRV3jlcewuW8QluJZ2ruszoHLeSIaRWqEc1B1SK9rOvJBixM0Aq7eA7VPVjgY3Z3AHvng+9BSCh8Pay/Aag3fnnZ4UspCnAouhdU/DPDWK6rHy6IxYA8RV+84A5or48BDB6NVrzAUeXXoxAmLLkUEzKro7ne6ihaEGLY9qyWsr7s1BFT8FHNEu8PKeYKpCdHDSJ7g9BUXqSKq0m5zrom19/qDQnGQyhvP3dzwFUwZ/RHqEwBi9ukGzzYEPnEScOO3cahwNwmuywF992N+Butcbtlhsm/pyJfzdaMIMOFXHwSTCMWmc6s1kG2zOCStjzh36oL81TKr3ar5ejBu4tn8+nwCOKX4sz2L6kFEHfu3O/jNgCenfVnKJv4YTV9NeTOpb2we+p5bLiBhZhWJb+xor4djWOCAl7Ged7Xj7ONhFWz57C2zmvjGly/5k+zy/8ZPYBZF7IHTn7vVhPutiPgTiNBI4M2SzOMh5hO//t67hmzr0dNpE+02rWM8Ivbm9m7+5yZy5DC70jbY1J72diW/OJ9ekgMaDnBowM2/CT4L6w7lNLplSbV+Nmbv9t3K3fJUwd+c0E+zhDLXjUHncwOyT3XyZu3mOYDWYlWNG4U/bj8hhrMKaPDjMflMpzPGt9fJ7l2hiH5RM1cq+ybG0Bzay5J8HcWMb5/oYR0RiI1AJhLly+oRhGde4ZrxsgW5xUae1vRRTC9XT9LDvvIa3fSGOWYKMON6bMZt/HuXtcG4C2yWaxjw2MTf3zOuk8UvgqeecSdn5MRg0DKNTTupPaah9owxkh5xMY/KOtVvAIqwzTmzo9KSE6ZTnjWfi3NR41n3fT2uJpKmJbaosO50PXiMWphaL24Kxv7jgGbeonmqxIfuTFfgq5HQw08YOLmE1RtZSifF8yaIP1kcjHPXubGJvoQA3e/6CZ5wggr4216tSbHoTT6wk0jEg93xf5RiP0wnJtsVm3C0abDa2jGkiEbVrifHUC5cOzL9hbdbrAyE+cxPOIUK+7RTtsYamwLYG8C6oO/Cm3mnSrs9VHbJzDW0rjpyQlt/VMfhQsnQMo4naNGCay8qRxWJAZuraNeP3sDe01ZPLv/56kuhAR11HfpEGlu9Fdk5XxLmrpx9YSRrNIPfU5bwcMtCZv30KzVwKEt4SBCzTyUZUuvtHityLv01a9OYvaOZWBl5vcIKAZntp4gZ5n24z4fDa9GU2BvQrVzNRnurLuUq68ibSb359FFzNhGnExsBw3+zd2jAR8vdpSbNAxVB9ArEUt2/GY3128PqwId5dWuKtZdCA2Yyl2yjFnwnewpdaS+El/JOS+xciUM0VNDjdGlXYT204JmV1g5LHZXNMs9pvGg/RFhbUAA0frN9Yq8wDtPwmgv2ChlSOZ9YgIKVxzu81GRg90yXxTmrN5GWXta7noxj1zB7yJRPHDfZXE9A4/5k+/+aHa7SBJ3JSCY27nvGK8i/fsIZIJc8j39eEMw4HaWbuFJPkbhhv09yfWWv94HOE/S1kcIFeE7Dib6OsKXL1mJB3Xn0hKWZ6dzOsicEUyWGMkoxvhgJ1s6BRXzBtNTt6WWF/p+nhaxKgWsxjfQBtglYtTgcD4ysqaOoQxRAk5LpNojsq4yx1kS62IcGxBgdM3gLK8LSDqqfDaAKfHgumuS2pxzbdgJGygVsJo5dwHGmoUe0SW1CsHZ7SJ1GNL1d0VhalAOJqdDMMs8Nqw2Pl0wVPu+XrtzfMPdpxxgcgRJLJXeWFu1c4kz8JOMYtHtqP+yEIwd6PO2+FQqjaRENqNOtZOzwGiWhWpwNV0JP7usa3IZ10zk1uoT99l2uZy6WXeVn2erpOO/CZLI6NzfbAi6P5rKVh3McGJ6lEquU8ltTZm4bd7CbK+BS2GRDMY71uqbiXd/TyTCKYjvMtHYVLNLxfihvoiU5hj2qOq+fytXVnaDcZM/383MT2u8YsznVDq/nPizdGuaPGR5w435wPL3A3vJaD2RuaItZq+bGPB67Y6NvFf/2FEH+8ZnOx+D9nRONga9uY2va/isYrlBtYazvLcHjQKDa9j9g+BkjpdfVnome27v9PYZzK7GNWTkDTS6xktgO2yBQgYH/y4WpTojBKN1de1wb4jI8ufrCylloBlDmN95SbAn3PaqNB7/G/3nQ+nu+ds0MhlxVG56CP52nOfLIYeSwRyncXnRQzVh9hTmXkP8Jyqg7bTXES5NkhIXQFE2gOCgzh/k52eNHe+k3Jf6LYOfkKRS/wJnK8v6Nv5JPNSbew5H3dCcJeMgVpLAkpzBXmlG7mSb4Ulbe/fXBUy8pC+N3BthuW+Ke1Alj4TED3zgBMFRfqF413l/FVRRT8W/mm3xhbZD2ZTsETDNx929HQ04crMaMP3tbNNYgNmZU3EyApLNMux5FR+0d2fkh5OPeQfZMfA53SbMoP9QgHJDOVlMce5Wom2Fw1jD9/Hl4dBGcCrS3hxRNq3aqcfMFDlLdAPJDcwwJnMoufZDtqmBsQCAvK67MAJDZ3IELluCyIijGFnks0Ia7xJdF0Co9kLmOj6p3L8uxxDCY5qkwlpMhy8ZPAmUFD9a1nvOkD3t8+Usl5KgiE01Uf+zXUvsba200SncblMAymTpH6UU2uoRwf5jITAM8Mzsi/G5EHJjBnsARQGo/E7mGqZqcr12p/03uKvX8IgcvsFmYmH7YoZ06uOisgkQlMqCU0aI3VefRkdNkKeadumJaZZuzDOjO5Z1Vwq8tZFRn0w0pkKO7q8yrrzdOGNc06pwAZ8eZ6li9nHmcQucv6Kg9XYePAmSOu8nyw3twes6t4FFm0edcRS9ZzzxROwVX45WBstFKqUMuSJUWw2YvTw6ULqznvQUd6akamAj5naulJWRGhnOSFiefSiOoUyq1dNam4v5fTCz4gL7XTuPh8yVumFjnY4mFyEeDvw0z6ou3Lg7TCSXsNJ20l4DVWptVa/x6nE0zN70la9kMKWiCtfip4DRQUGlEtV77hA9+PK933wXa0nTdet+sRyI8mv2C6J3I8IvJ9CgxLstBocP6LPoZcaUAySM9CXKD8hvaSKhIJYVBvVicAM3GNMRZXBrf618150T7rbaKF3WK4LaV0JEKP5bwVOUu2eLoDnoGddgfIPelRx6Tz3FOuD9OdyFqpg//Dx1bC74VF9lvWe8Jgs92HZEUGVDCnN5h6itMWzBo69llYYrMVwqbEOf2jiX9FmRoTDGpkPoerRpjSGaO6N7e70NNqF9wldu3jWWVIXzjv5VZpTTWich3m4mUl9lxvQbuOkIY+FKSbvKJ3fyrz02qOHIyYVNT+GWmplLXjeZKP0boqk4Yr1LVXLOIJigB2jQO4pK454y8e3QyS2hBcryglRlWLTBQvyjbCmrFHAfraPJEXwbqulU9fLK8bvz/cHVkty72AUX/0GAVxIxOHoWqN0/SXWupJJHU+QlIBkmmt1Vwy7UAMmr4Z4Rj+KvIRkcaZGMPrqCT+9yqqqGNqRCtW5S0mBggZY1/RzojRrX8d6TXfCvB10uRxZ288+jMdbt5qbb/FT2ggjCfoWnh7OoBvCAOiD5lkrzJervEq/E/lpUx7xnY8XWvx6b3zAaUhtIH1/mgATIGATFbxzU1X3zUjO+7mq/uGW2PdhhfZNy8N+4bdsE35SekF+WYnMDLU+92qCoUv45kB3C8P4PeR7GeIiERKWtEcLd1m/cf34fr1GP+Smk4UrDUJuiLE+ScppMxxq4D1hc4Qmc6Qv7vst/WlaHauVstkI7Wdn3LVpBS5hHJaxji8TEZ7OQMFfZguLOguvAha4J1GvIusreOhRdfxGCM8Pr/mHnARtGmSrTqq4/d4REJHcDp9AYtYTw19oM6q0rFe0TVvRyT2r8GPm8jB2y/V+0pPIgM4x2kLLChgk7Zn3ta1F5SezGp6jS97kM/CnPEaIA7YyYix5D/2aQHIc0s3T13P+A7EESgzZZH82cZUJPamLIGXgm339Q5zu0unwOip2FM48WHAvPZiok0CqgQNsLH3vpn0ZawMFLD2MdAOFuHFOQB59coB96XG6SKg8YXBA97cpwKueJ71EFuRhdPovq9PsXp388z65pWLHOHnqp+t296rgjDlD1q8toEDZAaq3Mc4JQxZ+GC3Qi1srcSYd5c7pd99GQK5kIb3OVE4YyHYFtq97Cht5DxPvH/P4lh5qhjHcIlbRFgZZDfwU/UmkorcQWKz03Xu7p3289W1ruW6YrEdNwX6ogQF1+nL0ta2d6/+BJJ21zscqlou9K6AFgJmnlqVGFdwHnkOkKeFGDI5PcXccPmqMwnHuUajlmoZbMajrdrR8Q+eWpHv/d3d3dpas91ofSFuwtqS4LkE3BQo6G25oI+7R7qc9z/sHy2+217WpWyDp7W4tXvMYuRe58ixvpk+Ir0P4u77TGSCO3/vsDB1GOL9+705TTM7N+QU1J7gB5mRKKqfM2AztmsN3F4YBUkzPv8RSyYJK9HytqE3Zv8QutIiHSFGi+3KYMMBKryuOaJBOJtg4xgMajdiRcC+WWTmlD5jFTaISy8cY4+ILqDhT3pDrOMQFnGqTHMyHXZ3GsyJpuy7wqpIG1s3GD+s/Vifv6Bz2B/hXJ6S9zIiOecBS+67LvXFefBlOC4QcLJoc/odkX7POGeAbof1tEHWqr+gH9cPopPqmpxK/FvGw2rC+O6qEFcTilPz8LgstfwxktP1ZxxAn92iShJ4qTWv+CwXGe6DYpPys0lpWHEq73b0oGa1NQw3vrSg0tw2JbPZPlRM2xDC5Gc9hFVcK08vfqQTvdmfywibWRYVZxlGvh9cR5t9ntd4RHqb3mY4vJwlDqgBanZrVyc31PdFTn3vnZv/OyG973PSyzDP8+7CmXt6L66x4ln90GgnOCv22NphR6ExOHk8pM8moeWSB6ZkSgfNm9FBbAvP2Rz5pRs6Rzi9t1bkRqdifK/KN6QToAm+vBH5/Gqrzrp8tezXssTiD+rQ0S8+tBrrI2Sx8DSE9AC1dYKVqQSd3C5/+uDqnbt201N3OqKgVlvKmOJAtALh6TBFkVVBWKcEew7Y8xLMQljMmnw6PbxNzSnZV2WrrBYVrTHGhfDSKcn7mPG4ZMr3+ZWBhuNEvl7uHx6bxuo0mO/0ezcaS6h/NwHBGBxglY/vNOgALIJwK2ainZSXyUJCUx/X0Z36CWPL66Petz9GVrqkZ3blXraJ87mSYhg54OVdjRWs1elNXc4k0N1KKHPObdGV61Y/55gZSzTvtg56x3jM749HwxGkzjVgO4Rcgnzu7hziH79+0kn5R/87POjt0TxAb3f3SAfkR/5u6xwdwS5/X+lc+ntn5x3/LbZ7Lxnce7m4s3+gwR0Edtr8Wu69OcKP/G3LT0d+lgtt+gVtMo3JmnYMbPhz1ONo9nbw8Sv+UdF2fI7tgaNEHQBd6Pvjw6Peu9Et5P5rMZJPeu907kMde8yAqWCh1F958njR6royt9ujcfr0Gte0tFdr13ZuRjU7UzwFc8RzEh+PBnixc1N35qTe/XI9xnQsZliek+HHmzAppl55BPrLEQ4upVJW57e4Ms/z+Q2vzrQ2M9P582JKnF138MyyyDQ1Nw+2PUxqCeQ57tUfUX78+6moxqTJvPV4/Z/C/oCgexD3NF+nTb6ONg9bKV6ybcVLXmeOOM+HlHEPddVBsc5CznsQgfA6Y5FFo9G1FvSjOAlKauQUztHESLMIILZQuXMzpkj0bIIGFU5YDxOxv0ODTLnASiaDbw6w30X1r1amHIOcpHgLwxs+P9QB3sYgVkAx1zGBTlAZ6XSAzZfyRBy3hptplI6JRQBvdVg5GgPdMX21VdB6EQF31QT8okDovR4J25iXAEYj9I+0hnFsUKHeabHeHtZ7chNf65cWj7Fsqm1OOrM5aak5WxNyW6/DM0ZBvRTv9HIj5mTc1CIuWozvZbr37gOfyn/BvZF3G6/UCI5isf4/pcMEt9Y5g1w5FBeswiClZVpKzXjdXGxsDiqThcka/MN56fuzmROM/xUXtK734T0un3ZI7D1EFMoahV0YR5UoKMOoVKbsLAddFwixsV/yLdzluvSF6yIdpqoG/I+wXuwgX+1BTAhmfX6N4OFAvk9tr+nkJuAr7yD8cn4Jf82TEY3p1LRHZs5lwLUs3TEBWO4Hr//01LF+qO9+JN7tow8SPJ3XI8WTiHRLZYTbEwKjSsnNIGVvLPQrOgG8UgjwvAkjWcIMMTB3GdtZ/rZ60R7DqG/X9j0aGZKOXt8ttZrLayvPV332xEtypbFea8Q6ApJf2B+E7GnAqXoPmzPdnwmVpjB8WlhCkSwhyBZcOwSEQanJnD6dPspJt1bHubOufN5jJLs27/ljVB/wmkbziHlIWmJpSpmCUOegSEU2s5Meacicjhdn1KObYaJVhPVs1FViMjsWZjDcruINb0Ub0CV3RJ9cb8pc8dBevBAVS8o8Mq7n7u+NLYJ/pGd/RWJ+JWKzBUV7fmbC5bygSJx9WOPji1OvKJ6+cfLZTDfxGhGxSmIaoUhj9SmmXaD8iZV3kTQOWsZsApL3YqZFKbhDs7DPhT44qyirHscni1AY+ipzC/KQl+cTTU9gpEHBdwtUZngHYNu6VOnOAupdGg4uJ13tYBj8iKAQ2Ud3OyWfx1UnH7kgy/Gk1TIavbFG9DocJmAfmB4v6vg68X7opuaCwGU7RFmhj68vkf7qsTIOS+B3WxnVZwcuLvby3rDYgr5iQFq5qQ2ONM4n+rduIyjN44SCk/wbnhHdiFMVc8GyuuXOuSjUx1YlmZV+4KR3rSno3pQO6CPGyUEE7PcnUN1IY6tVS6afkkNV+QVnHtdP7G9Q0aXM6aPbdqw0PLxiDZHdJw+qsTmW5Xw+FfUsVy+OM8s5MVcKW0UbWBfaG3hxAm7W06AEY2rvOxKkkyY0vs1nC72f4h2mTi/6GKAf0nGE8/mEmY7PE9/vJSyL6b87nGilSe+J7vULvm7qyEYmG9jqiiXtTzG0O/q5YidhWCRUaS8vHgwjBIOp+bSQy7NRFKnHzOOg6TQ/m0keavC6sX+SAVAFVHC8sEDDqxnQes9tN32Dfote90djjX0QVKXt+JsQadathLrgOERqfawbE9yqjZna6w4W6uMFT0ITz4grsYBiRhVnC2Sx1Qsf5pOyy513LpN5HrsU7UXXaQ4n8WO3+jHSsuabWVd62QsCNuyY0vDplkw6Hlwy5qd+gVNukQhcGNG2J/2pEjyKW1MHoIRzFjpBFD6CrdozDss6TXw7b3XU90PwdvFLt3+eJOkwf3YD+mfCjU0t93VuGUiJwSzwaO/vo2DG23fhWVBeecOs8PejszOczqRGdjU/M0ho33HcPQMV7IlTmq7m1qX5oF8zf6nzfFQP6wdPZv/60l552eajmXxuy1vbUrgx4+H8yxeDai+FQ4wAC67HjQ+T/ToSPfGMX2zSYfxwXSiVb4cqKhI6kRCIsp7TrOR2UxWM41zGJYYuy8+jhzo6c25vXSCe8HCWtG8MmTJ82D5AV5ZMGOAFgUYmqGVgg+AupGBOjsFK56ixtdPBrcKKjF08cfC0TeKveFg0fVEzgjLW3UUuAOtllrfuxazwYHMcRNejEJsuJA8xWAvzrS0Ymqzpjk5+QfcuqRyzBoJqIBKlfJwM/YLHVlA9v44/EMTUpmovQdrQ9PEX+pzPj1KxGLi59HtSyXDzdeOGu99YDVSfPtIXWwLd0lDK7bzkESBPcd/GCPFh9K54ChvNH+IrRFP0r7OmjOCgo41mjZJ56wM8cgx4VclkS2ijMtANiEYUGxHCEvyB/ZiCAuMvHa1OGYQurfZqpslGmHejQIDXl0wJSyytP64t8TXGijSwM6VCKbcoF7f74q9FSoO8JL+nt55TWVF/pyWgjKRVWFCCacEr1NSj2j8s1UbuymJu+17BHhUHV0+CK3S139AUp2FEHWzClnt4sFMnkqkT5VMn8guncBqFDPVXc728LC33/8+wPrUUgXEKFlSsNFcMUu/yoAGe5j2IPiXEfM3bpwlCMbVWlwRPaybOx5P6JJZ1c1w22zaMaN6NZsoCWgXZhJmPPr2wBcFhI7M+x6caJ7jZ7rYUktFNm1p1Y4BG4C1frVRGtH3mpGu3zkYeTRjdvB3iD7/pse06lpQUDUPEdbiJU2y3qYERk0ZMSsfFipaQ1U5jODJ2ynBuPS66dr+J1cpuxycBETMmM63TaWTuOZfhr1pbvLnODsoFIKz8nStH+bBprVP1OUY9shGBrZU1x9YKFphT+Od4SqjD5NMI4kZlHRo84E9wqA3nG4oyKW+LV4Hb4q3W88ydttnrbMQ9vtFiQCZAPBFrANkKX+BF/5m7tD0x1ulBd70e6zw7JVHczWdcj0wJHsOZvsQvymlgZ5ScpeOXWATeM02yntVklXhEttACwMuU54+1Xyst4ynimk4Sx8iqZ0S1P4U4hZoY6nOVIuyhw0tEtlTQS4XrzyiV73vmOPHM75XHr7Uewf2qI8eT9+yXqruyjFPFONxxHPI1EsTmqbHHVRIkz3kQluNSRpMQ84ONCRMHfE3w4Pzy/HqP2/M7nGid2Iixw9EBDeu+G127kQOSEsPoaXBF4TRezzpmYt+bSw7HD7Et/0nz5FUruCf2h+ZYFMr7gEi+Zg136EmvqvmafPSmmh+wV3qzmq8r1pvRfE1lqHn/QhGJZiskz3lQhWCO1jfgtwNec8EiTKV3l62owGX5kAnebkWb9YLXMPasHJb3sMhbHnIqq9jgCx6FjBa2OSd72/O7NMsJaoOMoWJd3ocwWdBU+PXxsZp9tFvZlxc3vfwbNcAn/m3Cb+Rzcr6vQAz0J68b+rvV8Rv2QQll2YTe6ourL56T2mutrBJSzOOtAear6+L038r3cR5ZWy33vKoi5wjiNZA7NieTSJvFCh2bJBEogQoLoKaKqONLUff5Z1AksoaCghCB3MZUEPekXp/+SIae0YKz+siBiSgIv1caioxUWYikMtnLmMLb0yLcVSRlfpusPLgrgmA7+zF9Ek4rQ/PAELeXpbmbT5pdTPdwvhJz0JrO4mLhuWqOPjUSZoIoYaZFDdjqwz0e/qMe32FX4ViG4j3l1tfvaehqEeoqM9hOftgIUy8sm2EK4mVLlUtKF1osEv674ucmBflLTR+b4JoFtAFgp1DdoZA77wyXXfgk6LtqENM1VTVj+0gj2dYn91qmedH3u3KP0baXeDeCyNRjypkygvRQMXaUp2voDnT5FDW/bbWjD+9tISkoGifJzFL2ZJ4onWiGCdZXkkYmU0m2a696CVcXN3cVv6rGVFmnuYhec6Y+2hxM/tqBkRrfZbqu5pnjhHQb5LB52jVzMSPiskSnbdPOKbi0cqty71cv2/15byLw2SQa/vq4kylR9uT+VIa+GowiJ6htysRGASdNxG6mmAfq7Wzt4EJJ2Y0znVazSPCycoVxCK+RAB9QHEa2JQeYfrk6JyYchAfasF5vmOOsNnP5w1TrNuvvMh+JbCZVpkSX0ugmFeTB+dKY6/KqWmrnft6Bb75li1DRoyZFu2JShFWa+tqAUwRbTIimxv7sJO35lH8rLM2LA33CbL3IrVjH7aYbaLmBthvo5IEnSbs1amfENsf+tthp80xn0JFA6NoPCIizleHM3uPCXO3fghxVfQsr6fVbuKu9b2Gu4i0FcAslg4Y4hQbsK9l23XLZaxZcLJp9aKLwHIFQLmjp1iaP8E26jk1XrGEe5dvBru5WjvhhXBrxw8euleWaxVNaLFbi/MpyOwuLBro62kDQy9GoID9f4r0cVdRkZlaS6TscOFdCnVkWFCpGqUhjpoimSlTbhK0pXWgN5CAxYKLWNAQrKAWKVlNb3JpVMoUV4jS3vMt4jInFiIagVxIb76lOs5njn47EPkgDboKDElmLI6pitFhzAxibmi0LiDaRPSUBa/gYOhX+/IpTpEfb0mBReR+xRowC/lJFLbg1HzOnI4j97hiyQdO4JbKmY4lsuVhGOXrFL8Yf/byLtrJmhS62ES0dsX0zgbWGmkwG/cKkHSBo43CIznYlysmbWIz5HpxkFC1aYTzUj7FMeTeiMOPPUiudFzu9UL1P/JiTvOJcNfQd/REEsGOOhuMXEz7wtPoqRGTSL+ga4Z1/yp+Ba0bT1+23Tb65aAdbBXAt45/CA2VtbI4n9oXYebYSRyPdFm6jBWZ0nj8JwNdmsHYZfhFWLs7ZFa9e8g7XXm4SFd97jgwO592sXLywuFA3Psd93Hr3dv/tqy5f5Grv+bZN5Rb8udKiaqHoEKfGLKQZiIbg9eivo4VxbbUqBvZdrEIM7bvYfXd4N398zAM0hsY/RkrrzxPzh7AZh673mshK6q8tuLuEBc11/OkEwuohl7n3IZ6aY9vcYkBh5eDBiZpZ430rdvT0b/2t5gGYASnaQ9AuMFY3SE3wiSq0OmKwgdV1gE80EFVzoNHm/OZ07bmfBKDA5P1JUojU0C85SWef0Z5D0l5OXp6PJtrXnvcgldLJ/J6TUaY1Ez+cO09rUcAgDWXbienh/CZxsXzSTe9x5NVm1DvFkTntatXDB0rXGZJiDosNNAyGat/Nx8AUNgf99EE1T0u9zs+WpWKOQnZJLnzruRichFNINC1/DBKbsIRExN0OwSx5Ez6A4vjwjc3mbEveY/evQsX1TvuYituEpYpz38kI4Ms7Ltf5eKbTa1RxpzM3H2VSo9EEwpY/3kAjwuRZfmQe+UhNrpVH5pIHAG0Jwu/t0Wx3tgkXiVpHfYz93s8FossQyQLkH35DN3HSsiCRuvTUle68bL7bN0a/l2d5d7zLfsrSuiPtb07DLA5w1TLDMUxjaVKNgQKdsRAuaQYqVjPBpVVCUGnOE1SaTQS5q5Ph6bEn1KFcDB6Hn1JtLj7vIH4WFkit2HhXMUkLNKzHbXNnsTICkfh1vKqHeOV17fb2mMLEXutYmgmyCJwx/cgx/YWikb80vo+4QcXt59nmBNgbwtw+d0YF0QcSXR6FQpq3hTQcl0L0oZTaaTqlxrHA2g4s0bDqES0g/GQyt5zMv2tYafgKuS5siuLMKCQaSKLiXCknupRExdlTTjQ2idyZUkhwxwRVC4qRf0pkaQYVkmyZJHbuFWJfSmzV9C32ZRTMWZa9J5hVAVPxXVkS2vNN2SLSL40oCirTPPpQNf+gk0/q93EFq7RcgLBG/6V5o449Z15Ri5xBHACf5FBjV3+5DNpsB2VIPVk1Zprfp1/MyZQv0Xt4sSpZccbJ95cY+myUAfgu1o9dFX0CtGOe3oxRcnYKObbnOgPPtpWHYba9WFrhYqXN/QzTNMElw6su95UcGmtc2padIKU/eLh0Jc2TbxwWJBFJYT5s/1TRFiu5xWTnobVYsfTb0pki5fS7/2AQ1H+VFzf13+m749vddvApJI7qbZePfY+Bdsf6Fy0Y1hSpM4jXF5JWT26oRHGS3ThzM5tjJTnv6J9PpPmXpn+wmiY3lHiGnye7mOYTtm9eRT99K3GrV9+RVcw+wcop2N1iqXpj4xO9XKHxuJ9f7wIcCZhplyqQcZpv+Yg4YIS9TwHwlgBGak2Wfb50A3pI6B5YJdRhtAdTRMQxIyouU4hLGFc8cXLjIdTd0gH7nbDSJg7wRQbWrbPgAcHFjZrgS4LN1swWATQmyGzGCN6ZIG4uCP1pQtlmC9AWQdPba8DN1yz4uMSCK4TNvvrIC5BCuhI6brgaqTl1sw4BgZQgc8eUQ101ogQ74wnHY5r5sLwRTg9rs3JMm7MGlKjLw9lutjVPrd3s4JePv+XBZa7y0BJYHlgCp4eVwOKgEmCHtCXtA9sX7bNDaxkxTwIbWRhpIqkaZ8IfM8r1IivRf/yI8/BVRt5cf2utdpaH/m3o+5lnXF8VJG5YjiEetKQUlqKPq/Z/JhyEddAnoK2k55IpYqZJ6dAwmkHusGYSFRcJXpyUtIBI8urTNI/v3RVIVS0nhsV29bkO5tR8iAODrn5W60lxG0qSuUxIJWp4Di/SucNp9t2JpxdHbXtnaeennZrwyQRGPnkRQO3zxWQMWcUiPH/TEPjpiS1kMXPwTxF8zF09z/B0wbpEwYz8rO+ySbtcSmsrdV+YHyLRwIjDcSKOyyKe1qFGJQLp0WbUfbZuHt9qXy4Hw0mQORMRjyGTBqCTUXjVGI3P4FFkCeO8vNRcWwolE82ob3xrjvUlU+TG+rRt639Qj3XHP8kMLMnl9SdBIR5SYIR6qSW/jS+ThG2Zm148quBv5lGlvYQzmsxtXbRMUjTRqcvGumOu++9WzOKoaQEx12/dhjX4jXXWhYCqVg/J0m/w0xaPUEWfb7hywalzjCvMp6vcL0n2Pt4RU1Iqs8QtWkacq0/Medv/WrGUIXVFOwNczRpp/tSEzLPfDlpm/rebrXxL4toproswaEtqk8rmajsrjambkrrVlIcjkbZv+witSIhxfo9kwgTJjUF8qxS9EZZELY1gkW62I12E3gp1Dyl9VIcMUVL5PPY2I3GmY0ioG56rifApqRDHgcLCc2VwmYxUZeRDPC+RfMpRpaKaroysex3Yq0P/QLX43Or3rPgRFMdH8XkIfBpN7tncntTPktKt/4zkOA9+FyNoNA8o4F9xDzQ7pYPj19iVycHWun9oC+wnxhVzUhCD7Vd1EE7WRRnxKpi1Mzwd5fuKMFEVP/wkwAmRTEMtmqpIeQI+TzbrutpqqiT0y47okUifcHOuar1Wt+UkqpcyBFMoFdnoq3gEHCcmpafa65WVkx79PREtgouEymED/s3796Wx3rjW22/sNAZUW7hMlE7fVJ44nRLR7iWyKnbfuyTmUg+OvohiO7J+7TNNa8SICRijY022qbUa2+u0N9IerKDiSj+qxUF2sFJhkHMaxHBGg356sPLG2zgR1rXsh9+77dMcW7wR2ml2Pb77irZqOXM9aFS1ikPI5dc/ZzbY73Un9KQT4uD3pIH1fo1py0qXlK19YyKH7FtWXVsTiwV4EWjzYJ+1oZFN57vreb3+yQW0gur8QV5hrQ8kA7wlb2YfWdKTAVPLl2RACus+38BPLOxUY/Lv87oHcdC/zw4i8YmnhZ4b/etLD4gRBikbDSXsI+ihEM/rfr2/7xUTozQdzX+FiKCYThmhoCLU77lFlbE5EYFNV8bmVvRe+r6pLrS++N/SFS/riZuZPFdDfKwuVRIMtPHpoNOcGvkzVOlWQ28J1WPx9cwY832JyFc68lUWeXKL+JeIx9ikT4LxX3/dPgkutdb1gHrfCwE1FY0FQTUOUnUZ3BLi8SA+0FYRjceVWx/K0t47fYxkad+FUNl9hs26Lom9JdHcuxXArQW8WkA64ISq9bMH1KaNHofVnAZ6ZFb4vTW/RKaeLXwXztOl9lkatZuNWVT9s4dlbPDXPY1Aae1m3ySvP95Q5CtjHFLV1s8BMR198goeNc7/ZH9Fd9c0MnpeNB/p95yUA0hzQhPfKOAnVD+84vZzNtKuSEwnwXdZK+shRJ1r7RCjlc10z0pUkh2Gfkd38S87y890kBhlRhJgqD7DN2epPplK8hVm4pCmLvuYOYtUQk+sLgM1AxGkUiq+dewgj71F7EBi8X0PMvwSrbPE3eUUziDzWQOUt7P7Zvf9Lkbn27LnGXX50Oz7u/nv3WWi7X72GTDa/3MpgBgGFWOgn6g01nBmg1gEvZipmK0tp0f1zHD6hyvM7UR09McJwdTX9kyVOW4TTyWEdZbVhTFhwIArIUUUlgJRaAf4UPoSSmQZ70Qv0VOmYFfT22yzPPc6fTlKZvVgZHvQwTISLHLFj8jVNGuxIMdliDH7rVbfffdOTMwqUdjVZnbxJ7WEEwba5Oiv/RiQKcvaOxrM5vhmVIPlyv58FxY8cz5KGpwgjaN6g3j/VEWBC2sqQn1zSonUH4lKK1oeLtRb2s/bJjZYbMiBJoCae+H2xR+2WvN7g6voH/SF4VBtohfI5Fcx/Vg+aZY7aWxGhtetj/BehNNAFHjGaEfci2WWyi2qFtZwmRwMUCup4o2em/iycyscJrWUcm9IK4cSVUNvDIzFX8br3FoPWS8FFFEPN2PuDpUycG0KruVuCy5NSUQyX9qNVj0SqqDVrBh09pGrakbUwRS5OFlounYu3X7md3EvnV83K5/HzN9YS6tWfo3FPbcm1It/WE7QKV0GoODd4ScBQW7/upSMIEeWsNV6jCyhQcfRLNQUarjBt9XVnSRuhbeurmxtywn/VpW38vz/EfXOJnPZh4YAv7VykvEfV4pzsVAhp9OWRvF1SrKF5XFZ7FpmI+AxNT3YP9it0RTcVFWffVNVuYE9orzsGLP/SbzaxKg9DlmgMkRACmTO1MNr61yV9FH75bpNI+0X1tugEk1Z7vWZ9C93RTZ+egERiqYVDDtfJL5u6kgbK8/pyUWCMxUPWAbrEtEaBOViqqe0LUuXM5hRzqBQzjOnnKoS7MhulBDNmhdeOeH5Jfe436/Ss6moazBdlnBvGlTHXA0wBIiyNUSVRR44s88n5I6CaRO+EIR+DycNUMOC2YyJ3acATwMax+RigfUVzG+VNkZDIgluEnxna5IyKe46zaRSkIR7w9bk5fkwhO6P0cM1DHW98U1nNZ4BY2K3RtrkaFGuTs+pTs+pjsnLJ3eGe5XVyBMVbLqjP0LZpa3tlekq0hZPoX6bIQFuoV1aTLgPg9ARQmv8DnNG2qZ8lMMXEQRrND8rtdobEbEUwq08TMs9xYWT9XfAfIrR0xPeSUPTjfhpU9HIqYdbv7ABxJOP8LJc9xpnf2q15rLqdGhqtNjxSxl4uYfwRhk2EAlFd62wVuXZ3S3ku/5yrUufn1EmP7m91uVeRY1bLdS0NJquNnkQOuY+kno2ATBaM7u8J7N4fp+rNJhTak+bvBSbOXs2rieskepmSx42sT+HtgiOCxcHibiD40mAcyh/YvxYxgzCacGiMPpfmEDVsZt11iYSZ9Q/me5RhMVaCd/DUQAAnPX1nTPmX0pVRGVE+hSMV46QJAz2h/Qin9BXMwYSglvoA7vIeylO0BWUp7gKQWoqZrLeIPob27KJLe4aYxLd2tmf51cwVsp7YymNNs5KVeMFjwnwz1aO/XeRYWUHk3vBZPy2qJaydiHWNgaXQbB8e1cJdaFdcy8ZEbKPF2in+JkakdUiSklFCmkma5lERhmJvE3wXUEHQ5cO5sZfnOlPnmvkslxL9c8YsLhpgeB9/U2bbAu1TZhuS/1Ge9ld7wD33m305DgctOG2BrMlalym0ia08CjYNQYVc7DPJ6ne0Wb9qPHhU7Cvjho/Ba/xNwmDLwl+r6Lgjr8TyvTxwYnvM67TfcccmWDUR/2C178vfPE4QgVu6muqua6RXadihIICvwbAGhrVwIJplkREtFwjFPtv9w67tQqKuYrGFJMef9je3j0+rkz9Yio1LqeH7yrTPtesihdK+3cJXUGn0LSuxZb00el8KmKXYR6hgaZ1QVOxH3xx2qD+TNRWol4mvVw1PRcfAOvj68cg7P2ZBGlvKwni3sskuLD2qfgEcGO+46ctE1hloM1AZ4VfBrxG8LLPyQBGyqqKfJG6Dlq99upGpG3hIiEkZECbyPGI+AjYy0HaACubp22z3eHRXcEWAJ/WijZKP4Z2NgdoXRygfWmAFu6B6NTjp2vYrNCtqIc26ebk5Dz4+oct0Ngvqde1nZ+PPDxv5p9dq+ucfVi5w1kxDfAc8cPsaAjYFI9JuPmYRN0HbA9Ho+ROeyR2M/mLVDhcai94MMVi1AXo7OWKplugnYk7wWt9zViknTBYg2m1V7srHV/vR3/U1/zMoppYv+xgpMXGi1xOKvCEFtNqt+lLuehvuvNE7Txc7BYlL94UosWwMoG+xCA+xy6tyVB32hZ1k/bf2sVkqGs1wumkfg/o6mwSUloTm3dI6olNS0zJoB6hVVcGY7G56FrlliWWMrEYgUHaVhEdjSB7dWlT+N3qCoDEwVCANxO/15yHnNEu5ZBbAJcSlyVfo8PCU/GHuCKFUJC9MCDLDe7MftB6ql2v6I5KpIkYBd8Y5jk7g60y+cfjg623tCBJWZE8pt11uXaIhUTP+/e5e/+a7MlM2mFS2E/QjtwkVQoL4zYp0yxPp7kCL89J8wIeP+wOIlYoa9oMpet3LYnshUkkdfbhlQkHK18eI6GViL7Qom8v9N/6Xl147a9obxRvxWFY1yq7IF9qLzwJTzf1324ugRrCOUyoNzgMYNtviLfMZmZXsyYFOJLDocNrhFicvNLyLkglIHx0DJ3uKCA1NHWF3xuh84KL99u1pph6Y3bvCmc3Fevkchv7gw+/APo9fXw9mbLehmnF9Jvev8IoDtMWGbUPJ6bRLJ3y/nWInea6aGF7FLn+tr310HA1ihZje6JaG+Gcax92nmne7rONpyDml5Me90p5ivEcXnYBew1uw0x5Xad/t/W2HzZgqeOzdY0OIl+GYHMJ9VZLjz3hmZ78TFUCIZmZKy1HU0zqIQNhSbmwYww1r3vCBuARs8FrEDorzm55vaspGwF+I0zApHbNqoXmnLmWP7FnVdFjbCz+iQdYvtPq2XEhalHGWHXYiM2z/dZ1HSpxq8vrA0z21sZgEzt598Uqg612B+EY4eXnDK+sIZgiCI7dvensZcxTbeiz7+ihoPcrfauHjUjvl2FJKJ1SjdvknRuyETZuGuLjbsHjAb7ODOcYeM/PvXP+5omqg+bbu6NwGdWz0osedJ5pFzo3k2f/sR5w283cBa47LY/+q+pRUfZxcb2VXuiZQRZS8YEtcsSIovz0xQ7Vc2hX5tAuRvJk15iGPa7vKoZ8S9ki44QvR4ZwOF2ZERs7DNpSmzqd63ti+1l3ltuc2yL9cF8VaKbSctWe6VY9K1OPKYfNLu4f/yFu0EJcY4dpof8/A+k8lJrlZSyeRtdZEe8EkBcBuR1t19LvsfCKhnBxUKAn2vTk/cYaCXZrM4lcwvR7pFJXegKkRD92h6eB3QFrhGQDyvXrPIq5q7twV1Jr/oILWFarRUBbLRcBTdVGVRe9ArAFpk+7mG4N+1xFwmXVKpXQatPuyHTKVdWuQACYIwPnToNns96zCJ7JkWcSa8TdmHAHGz0XM4jIleZPyYQ7V2PZWLs4V5kc4pEuyCpZ2Ocw7nrjykg5mCvFcEBO0fLaeikZCPnzjRLsvkcZk6NcAHVncBY4MgE4kUyJjE8crR7XtkiVilzRx/CR0e6RUvfSkC57JqUin3w0Fvlz23k0ScfX2lUX0AHguQtoA7DmAlqn2hwmdMUdw3aQ1uTtuySIlNWFDPfdOKuhkaAsVNC+CsuF69EG13rxC1s3HuN6catpAS0BtCzA1dAMeV5vlrX3Ouo1Tgdm/DASMjbzqzrP/BfvQqxGlSUvWCVk3EwzXv76Os6qsAwWFppISFRoIyGxhbQNJLGQjrS23ZwaIJZay4pl69/Y1mMAqLAzv+lzjXjR1+mKOWYvr5oPjwa1aFa1lYUGJnQnoZaneFmCcVEqE8SuWhk2edaXhsFqE20/07PZ2qLZOisPbVhZ/ZFalIKiIC/r0nK7smB1TEe3bfSTQuqeNf4VfHCNgmmhzbjdtHGuaTAT2bKRZQNhJkHbJnDNgpnIjo10bYGZaNpw41C3VNlsV0e9dcb286qW83ZH116YSCreme3NrERmKI1veNo7v/q8Col/OGwMmsKl/YA3JaY1nYEXEEJMG9+NKD4iMKdZBuA2xfdl7hBrNntahdnTdGcPQ3c2JLb97P7tTiyJSmV4VS3Mppk7jWYmqi3U2Njc3mFqZlAznyJRaUqB4D7Je6k4oRiZx7nzqdiJ5UlT7tCpORPPmzPx3DnjmkWk+KgciHgjvSW19br4FRfU2pelvmd+CmNNOuw8MgfduVPHzJeydb3IbXgQFRuKcN4wBNyGBF6364nUeVWhtC38AzYgJSNQXaBr0K9ctOl/xlQZ6iO42i7fw3XK2Q2R0aE2l9uCcXptdT628mSaI8EHapicb+QJ0adlSKNCgabhqNjY78ZP4nrBs/o5qLXYwsyqTH5BJhj+e6gLh3ghzN9v34zHlNAuLAc6RxCjhNWN8tQFO+D+3iVLHIoZVMmQJLlAHYRBlL3bKi/vQ4rcp+sHYdZPKViwfsyLlaeFag9CHMXNgZHCI7w0ZUfQEV65KFeLC6L2+PN9fMLkcPQnjuMJWNCQ9unCisbC7Bva9KCRNGAbLIGYfNsaEl1PFfPG57NTKhwllTpG82F6PE/CiYp28JX5u1JlLxyBRJdcflUBu9azFyOnvXupaYcdOaSdW0co++KxdSj781KgPko7iMq9DFHeN9rsdJ/nhAVzbxjXIzJZwQaM2Ue9av9UpX5SsdNTrxt/RkCi5SeftLr05A48ZZ9GpeM6u/fktKJT/35XtKXVBddKLhVlW/V8aDnNLbn8clpZWCRREJPMyntVEJXGt9enIob13xZNjzD2jILsMVlri+ABnw21ay2sjV/rHh9RPNXHJsiy5PkXYA6C2NwiPPfz5skHF8CO3Zwp64KqBNeRL7nzSeGpkms0IzQznW6MSTU1p07N27/xJEd7+NOO23xEFwtRFQl5szXy2KpGf3B5bWr5zZ+NLTubyzCB5rCD4HnN0CWLzvMVPspp9cOnmzaAQ+AhDxzSekmJHhJBzey5HR/3uUMqvtWr2Preyqgsl9nOcPIP7jRgiVL+5wGj9loYouWXU7qxbZ5Nli2/1pqxD+ZZu0eyVTcZrd33dswZpgOR8DvMcRzXEFOTdz2uq219+K1wnuZ2Aj2AforFoaXtK05zdtbMpTa/t6zTBBU/lDL3qGAsP9IIi/WLanxHNfRrQxTMkmEuyj4aZxFFKeTZLJemFbpkLeA3SapUEFLu5eqkwUMtyr1AKNZ9VnUnPIJIfcVXxPwaloT/rsd44dAsT08QZVy7ZxtSvqpN2JpwUjs8Lmb1jJ+bZzo3clkE5PntpAnf64ggOf/EU5SR9ySeJUnq9BYLQ/PdzrLHAus6nSk5H7dibjsOo+hI+7qdMdHyE6LnmZPgTeEoGJX8DZGtPRK+qONJN58GN/qYmGtlY1awEwR8TC3vlG7VMdLT/tI8k3tHhFRYVZEW96SxZSaDcLmkfWx6aJpe9NASfAh1Z+wYT0NmLrnL809Z5FAaNnZwTdrCLfcu9oH6kh5saODZ7U1u5HB91rGmx/76i155hhHisjw3V4/IMXJzXIJF+Yg8N6HkGdOtTjEDo7+P6/zRsexQnFWuhQxBeGt7a8fthwrsf0RMW+GlqVCQTKHfQ/G05PfKWryhHNfnO+1SkfrCPq4YrPl7yly0zu7Si+aePaqJSC9/6O8uF2kKONSJkcn4JrrS3DA3vZrJvb4k8aV0rQ25+lWl9Ho07y2Uu5irvdEZJ9Pp/R6T5tSlWkeQLTRDl6OwZOexXWR3CfLwU31quhZZhPn95OgarLhexZ7ZFw7LaxcNQv/ZvIYcS9G1rOz6wfkQtHLiFyip3naE+SukJOvVb28r+/q/paWHtLjnNFTmTamhMgP+1iwfpGdhPH+SO1pA26AZU1M+96b8DpW7vAT1SZOZE393aBK/kZKxvGufz9Nb9InN85i5TL5IbeVFs1noicd3RDaJefMqT2zCSibNydPLTE0EEE569CRYk0lwcyWdN6dFbEzNFlhfq/FtqDTSpA3WHp/jv7BgS828f3C2/81pMYn+Q2bEQ5PgWwbcOkOmJs0neSWq4ZNWJOH0IB1mTMg0wSFOPBlqc8PAUbVYGDDHj7mHg51IRVr+3dkTctH34m7IZFOE0UlsyNZ7iagiT4KAvVLOXkxqUEjF7DK2aTXm/QlnFNdJ7je9+Y0TyDQospgfymM35YKbLL+HeWJvk6R6D3Ij9iPNjXgMV4GdgTNGA78iGx+Hg9QIavvZ/VesFyEZKoapREHuXJQFrEtPefr86dkczmGV2RhEVAAPlo8Qn6J6EzyqfvnyJdeRx/NDBvOUESvIYW1P8Vrib2RuuGsHiKCkFdvvIGybws1k7NJDr3Am+9AXY4eIYbua4VGz8gIxgKyB0hF5lxThteyonyfIIEaUjTeLvmaj9snOQCo9suE1LY6ljhoz2Raer/DrpDnpn5ry5IyYZsUfatFPT5m0ErTDmA7R41q3z6YQGEF5KjAV2DabxACKs6GIRmAumkI0A6VaiFkZphCAhHWix8yR6XnRrpgXreK8aPdqbzCGmBf2dh079Ay8HF1bSkBCmLhFfrFZa57SDI09LN0/0zej4q1Rczl3onrJvd9bkSA4QInhGTPBG1tEB2y9bfoALmDRSIyJJh1bS3VNIGy1aWwzmbppPB31Q0T+pE4E3Qt0jsXlOq904g0VKinAuN6n9yPKvn+B6rvOphX+PW0Mq7lOkhLJHbSIwDLtQt9JZ8nEzMTmRvPx/NO5pnLz7jKe51bzLvLp+776+k2OBpf77UALOJlNU74xqO/1g8/H871zkvZqeks+uDd1B79ju4r37o/mXaGms2m3J5pZnrdsDqEOg7wuu8OEM7z0Zmc0wR4m4RDspJaJ4XXAjEnYMK8/hNDdqKy74/0dSify18BKYtKeOsDG0SgCRZTxNMsB1aXxnaHrb5naAsopcZsbkWywzOzb5xqz/WYqjtEtcE1v0XM8VHyefltwlskzSVK7zbBdmW4Au+WBrnW7B5yYzWeywCoq1imuaLi09WZh9tTXHz5155fssoDu1XEkxtDctYDnCVP4nNUg4ozUWVlZ3djt7S4sZBt/S0f9zmUyryb+3Gr+fmrHKwh2Nee4iUHFRzh1rfYWdvXy2KVDfC9uLWsNmbiVcZZX8b1qvpfx3Tbfcatjv57brzXz5ekl1uaLRFJ7cFT2eTyCPXr+mNkjoogl8nrGBL1pc0RB2Rx4ocP7JD8Xjk0vDCNIAThyPc8T+fo+57vRQ2T7fR0T2RjHMAHmOqIFLOs1zoLH539y+RZMDdGcjLEoZHC9QYCpCPT9kr41fWR7akUNE9VXKXsjMy1UaqNtIQT3I6MATQWv/vmna1juBSUPgiuMgN+YjONcnzH2fQsNYpHrF0kRSvo3WWDJIlP1w/J2wlLleXmEDPUpgyvK+y3iBURLmjNJOtZWXhD6BNH0iR5qOWL+Nr4ZHuuvabG/o7/+kh5yVfQ66nOiSMndm6tVdXTMfZSFmGthHKdX14HVFyS90s3YSYIHlJ90SebhHI/pTbyor+8k5pyHANbwTnJyABJxzsea23NMptsTCzoN5DN/ed9N1J42vfcqCQYjmV2NPqRyGxNMtrRehFmdPpwmcLDJnvKfUtQxQW1eJ+uvstoggNrsJsGr5OR1cprnDZC6ub7L+u0lJybWlYfdTfzTYAq+myy0lECt6mhvJ9hLegfTh5ZXIQ8lNI4XNfpB2AupAUpZhwiA7aCJv5MRtuZrmQ54xdMwEH/yGAZBaD8BPcPaxc84DFr4+SPM8hx+yr6+t7BXoVsZ4nXLwqvxxzQ61iHbtbao/DJEw604r99qYYMlzOR8GPAuBdDtZHGcc2Q935YBrVlOP5zyD2IXeCnHR8B/KMDjwWhC6BtC39dbmInM6jZi5+nTnYYuDa+tvJIWrZDu7uy/W9w+fPt2dxtmjDSWtlgasA2jzuwPdXQdqFS7KuIKEZ2qiFFslkY8ZdGBJi372lJihXbwZmzUhwu7PoY+LCsBi+GuzBwCsXarENZZ/MsB3hBO+kLg6v4ptlybWNtlfHnDBydM7Kz4dPiPauAgrdtiuUtxGEuIjz6JHT9vFP1OrZkgIAmCI8KwkfA+KNQ59ftifs1ArX+8qkb7qExTPdAdggh9YVF9mq69xVSOKNRDFHO42kI93B9woljTibNklm6NsUS5t70Ru5yXWGaX6+PeJUjOYCGoMs0ZnlzyUMkBGBgraAxkmO91VPmMjX15sfWEsgUMOn1rO9fIN3F7T6cq7WOGpk49dfVJtsP1fo/EOq6ua3oSaiMXsdSTJQsV9J44JQs7W1s0fVJYOx03CD06aQDLBjFbCEL1mCX9bncbp+wF5DBTc8HzqYh0FRILhru1HuSRPf8r2zXRj1hM4CpXNX1YeQ7RkNbzLk2Mb+T5skZUZ2xlGZvM1+pUZAyDcp62PonkKddbnQXbWSQrVT3eeqGa+r+W+UWdgZtZexFmLRwTC5uxGzVucWwQmK5bW1fuRUXdcI/UnaVWylV6sZBmieKpBvg90jVnrqScK9nCLaV+gbaxpsBIOhJv1qdIb3WLO23TzoUzVnLMIhbSsN7aXZbfZlP/NmdBz/jXV+3HFbe6LMXl3atKFL/O3bJFJiJlfHzp6J7T0Z0OO7pdmAUSHQbtTm9mQ19UNLQqIVO1n9vRb5Wrx60ffLBMpAWAt7Fqa8t/uuo9qbpb5eWWnrjNqiq3moWU7VkpY6RcqE+Nu/+0vbICbQMoHJXj1hg3NediwccTUWMvZExR4SjW8yguVEr3+FpV7dfcdKsr1elMv7BEnsh6a+t5Ck6Vioqs6VrkyUqrr0CoPgwvhpAWEEu6WmqBj1/hMCGdmqJBCx5P3sAauFTN78k8MyaY0QyKfdrqnwXF6oV262DdGbznxCvsG4+hrse7b3doqX2KtoYiXSfPA9lBjX0lX3oHvTMcJnuWbBwe7b7NBU7i6d3TNFaJpG0W7i2ADlHNragMmzrnSUoy0Lq43q2ltZ8LrS3XVC+bd1gvhfWzOWt1LjeryZCtMuhbF5mF2ccll5c+XfjMUjpTpQi66yjwwijG9GpC1Xd5ZfX52gsP8J8+uY10etbzsj7spbKBE4nuPfTcQXjdb+DFDsn5iYJwAbus+/9movzakikYsgZvvv2w/ebweHfHMzOXON6XD5nCUcBHECpO1ff89lXWXd8jln/rkSJc47h1q0FK1hSyttjKrkDlzq7bScJbBNnAhVuVbzP8wcrE5Edb2kmgr+xtCjXAdxxUbs2rZs9Y66jnL9TzVUXzHJhaM5PLHv58Ra2tqufP1ZpOPnoA+/OOWl1Tqy+Y3Krx3lNoHR1VYkDEGQOqSTYv/X8PcSwUGdnYBPAu2F71tX67McYU/EB3nOY60wm0nslO4+LzJR/faYgU1mjaL0CH8etRKgiP1hPPhHcQ/rgjIYoYERa3RY0Gc01f3geGXULmAZk4ggX8iEnGXfQpEnvo2kQ6IMHRMlqW9RAmiX4keAP5WrJMgAZYqdPpqe2ErJqH0mKoP6ePSzy6ch3picS3QwHldP4e62iib1atoASqMLcXBSKRX5nSWNgqW/Bqt+jsaZPWbqszoeO7pk77nM2OeS7LyKHxuFJENMCCMP0ewZaVXYMIT91p7aU1qr50zaiaT7UD3dO/hFy1WxG9VPwYBkehsf3Es4yeaU+fIklrWXdwBoPDOl4STIjz0JdE6gN+XHBv36URuXPHOpaE6z8B5rPHoJHjddLF80HydpTYIeqNMz7zZeBGn4zp80AskVwK3PC/tin2S15iFXzz0l1h3bB+6fc8PtZZK25cICIxakHsqtxzBg4GiDFRDlhYi0kQ29mICoTXGIqIgk6U8nXCdgqyI5Lgq9bL6cb3IvhZTmlFQJMT7//zFtzYkzhzpVCGivW79OSyoRf7WyY6l5cAXgj1Vr9ZjJYrQ+J3i2DTz0XgZtI9KUJUcprZuEgdF4y5oUmJxNaQi7nqa0ssRhLCRj+cHN4OaTMkHV/TbQV6jX1tuYFovW+kZHD+id0TKUSBKfQaoul0EeAQZVuVuKIqzmV56q5cCxkdOu8nfqbrftt1PRghOMcXEirloOCrU558gwEXlXQOZShKcNcCgWbPTHVXyusvH7LLtRHPB6iIbg7Ob1X6YhlnIkYFw272QmMTogKMqzMy85XlLWhkJsiG5XFIVlEIe8p1Q2UwVKRsOMmIuZiv3Dn0NkFMj1aEm/aRMvatt2zDHsoW3qUc3NwRwZWgPgaHSJ5p+SWadaXB9YTJVZXZ5JyRjTnKM4O9W9mlS5XDdZ8VzX6ZQoj47FS5UC4JcSIt8vVNt6Vedz1x+gVrUFBfCMa8meGAWX7AGqtL/6shyFiil1jeTEcT98/WN+FirPYZtUX6wGs1ml4tNeYoA+/m+tPimre5sb47/JwOMJnFIVn3y+TcOiW7vb1t3Hbojox+1lpLPx+80RLs4WJG0jybK3k4V5Y4/HanblnW2292mCYZZ1Sus9RcWWLJi6npBQrrX2KWrL/W2z1XlFgq4KpRTu/H6swY/4836eFMH2e+3nTxzoYd5V7H07dr2hiSAvrWvBBT03KQu9ZUqICKOSpQ0W4Zoohy7HM6hEUWKIYbIHwx7mNYIZeOe1o4ud7PyPmSl9FpUQUMu66xkWihJaXExck2EM82asiGE+8t95KXvHQk+c1jmLXzjE9bIIvX3f3J5CZN3o8uIPxjhvH64RmAgWm2l3BKmFxngz9JbTYcVyeNUTg5nyzyKcVky2ZOa0miGGq2FhHBf3DEyYfuRXxQtgLrQTzqoYrGTduxScK6Wtd2jNcASjZt/N3yM+XGxWuiWjQSDKzEvz6YKF3I+pJbWl61NClUjoKoXTdjEYLdbwj5uyUXxPjM2Sgluv4zOvNfWQHvAeQefEY65xQMujld8aXZrVx6aGyWivNrgzOSezElWzIxgm+hGahebAZnibmWEq3g6S1tPMvuynwUxYyftddedvFwBGqRsOkSmLWJYB16Rzj88SayFV94XIw4oc2rnpu8qzPn5pFnUFEt4oWVvbQDE83YDu4OeJbXmFCBRxNjiwZWN3iViiB0aYnjeohZi0ZDKY/NZqji1DF1pGA+IzS3v6Ozv1lYqDGZC9c9fTW4I878rPOtW8jSeIQxDSEGekftosKxaSkvAQdc3E8Wbrl8sj3gJcyZbqynXdtyBrLerLE7pzpR9AGZ7u3o+vxTqe6w/V88uJnpkqcG5CUheTmopVsDj8eBuu5Sqd5StpHTB5nmljwTspl+6whn9PbSZvzSANPWe6b3hai8L/hfv30OfRhO/o+fRQOcNqfnkNPypfmDGP2zQZTR+i5yR+uCu7i52T8O4Yula8PKAMG4/j9xrFhriDJRPN/qHGwcvV9tNprNJrRRK2I5usK0mR5ifbm1xiQvpLOTgCezeqjJ7fq4y+X+zKyysb5Ay00xuwsNtXsS3jcvyvfNoa9NUwbD/Hr+22/eFJB3dluJkyF05L1sHjjv04zxK9/MJQ//Vl9bwwXTkCEPyy4h03le/717KfP+83tpT9wsEtk/uJqe5VfTW1xNb9fta9ctrqbh9O3y7OTWXE35Ne9qWpXZ5JyRLfymq2k2LuY6OtU09oy0TlrG8FTjDBIzKmzR9SjTFmH9bLxtUynP7AwXQbhQN5CEEHmwo0kJoYiXCxfVNJHO6sZy0YmmtiGRObEr7ZsJ3LY2gPt/FY37dvq2foZBG1vqdVZBvS5JvYzoPlNf6hkRgV9DbAbi7n0aJUCzRtzUhcP+c3nYuZ9981DzKJz+v6E2Qx1NjXJtyR0EM1LO4jsOS4wojgITfes4vEqv1//fIMztfNO97PZfowr+n0qE8g3JjjnTi/DMGsw11k5Ozk79qV2AUGePYx4NGmaU/EyvW8JA/dmdArQkfzphOVXjfagrOjQVvdegSr6SzJ9Q+++JzOnh/y3NZJoAs8d5ufxt/y2ckk4fIuVqKYk8SbQx6454qUfkl+ifrWZ6PzB1RwH8/s/cRp/9b7ms2fu2bwxP+tu7F86fK8bymUMiPpQp898eySOQjqlB/H+DyG75++PHSWBD+kH8y3VmaLsiZl2PQuXyjc2pyD0cDXPWDJ/76VuLD6/OE759cIx6iKlr2YYsh4f0NeucAvYDgiA4g/h4OOgZJ1ypn0Xrt/revef7dd+PAo2oPhbT0XUyIhPwi/zGzuEBPa1AKM0XURbRFxIfiUrc6yGxl8ul2xwZVgt4DAbHk+OW9hH286G+2Na9g/MYZvhgAaGB5yjgZIZGOLkbUtIAnxTpQExdWwBL7++ll/gIc09BiWiGro/MDe3qSF32xtBYnJ027Dqp/R5HZuw7puv11i1ya+MKmQxKshlmghut3xkbNyeJKzqQuAIXui3DmdXi1NJV6g1R/eGc6jOlU/lhofLN9eF0pfWTpAtH5rye6tLhYRx+eK99bFOCRDIvPtfZLwt6R3mk76vY+t8ILhGIgrBeKsyV45M5fGbncEFqr+z8B3NBC6iKLND9fYYmpbTZ62oRG6vZlDR+RqA3XKdM3TAI7ctB4wsgZyL4dxaEigCQ6aH4Y5PUrq3/SNPwM9Un5848N15s1s/qiQp1xTRcpRTC71qhJc9uNNYAeRBEtq8oVhg1pqnNZtK4xP5R76vqeJXTFkXn6Z8h+FAP8XGGILTTPqMq937XqR2dJdn6uRIhtk3qEo0nkdJNu/T7yBtJXsYwZ04bCAZJgjtJUkXbNrw12rY5COiFqYDCij+NedQ9QxspfzfhwdgGTsZT0jrFE7Kb0ndZaoZv5saf3IKFNhDxnhJcajQ/f2Vm5DybO3oXqjrefbtOOGgcvQgffQQHGI+hHjz2lpJONEOAmey6SEq5sySNXxexheBnA5P6u5CSX/gYhtZlbR24IgEZlShM9rd17RdBezqg/wMOTsHnYR81ilk5mRss6GgxaPeEsxNbVMMAyHrevzGvx8DIdQPI7yDU44J0EhZefZy3/AKH3qF6o/6ExTsUj94MvmaGAboyu4ab/O0OG6hId6jowhBObN7cc33+mXvKhb+KZisI3mjFHSge6On75unTZf27WZd6/zs2ydmJKtW9yoJRhTMfHUSobbLEXKI71AlBFwz0QtfP/wX7PqLkmaWw1O+JxUb0Jih3hDIkgQKcQgX4vQ4pisD5cRzi52XdoDixWU99Z3pIdTKxEnjr0I07K6FnrDqz2IHqJLXL8DRIFSuLtmDmxr6yJS0slNpExoLpAUsIWKjXpOvYogMm/wyDXU9M2eguQxuSxmFYj2WRyKTfT1AW1MPTMYb8zClu/M+L00ReUy8cFQjuyYkD9lnEZe/QIIrx4K1JSC8XdsvW+RBztpQqOCkBUJ61GgMqafRXear7jzm4bYaBPbLRXrHn14cwN+N3w4BBCRgMt/C/mgv8asO5CbeuJvWEobOeOwDZuIBE3CD4WrCl0y3oLkBstWSRphi/YuKnY1YZY63dFOOeM65goKYYv8Z4x8hNMfaFr1zrNMXIFpophk5K8Bbhrs2fUnzbV9aSTxd7JG8V3WyyQGGr829YK15t/luLgzPyT1gpksbVKTIsLtGCVgfCzxsXvQuqTjYsRtkdSj7S/N4gN8oSvDrJQqeA06hLcFkHqNj9ykCkZOUU4WLj8dbFnen2UMtBqoIDAGdJS5bS2xFNM8mEnvgPLNKTM7016HWWrWtZfwbobkKXjm2DFl3OZEfRdgehGNk2rW9FtsLraiWA25MYJPy0+1J+e8y9ps9dredNyWcQeVtntMBzy7mfjM5wEhyh8ifLp758dLKPtnwQH/02mXSrGXRFQ+FoqCaG4BKeMPHo0diOUYfnUocVXQXWMCudAu9Y9ZR+4ulAV/RF2yZz6ouVhxbo4tkZGtrOW1Ebi8m2Y8z4cFA7xMyvvYH/S2N7DQ2c1FLM3AhO/ftp0pCiikjezUcBn2KSt6Yd/tB0Bu7hxIzCaechQ9ueUbf9nd1Fx3Tp/Lp1ynWbi+JRdbsn2lVnEoWBHs/19Tb0KTnG+KQDLz3uWpmPM0FFgQfrURwE5QxHHWBxR+ArSxQ72tzvlnYAGqe4lya4ZlAJBzWkxSZdo0tONsSg3rh4uA4MGl7XompbVOBORBCv//uomhrV8dVo9OnbK+TtSULN9HkwuZ3BtpPNTEX5RrCrJpaUkevz6IJDdjyC6WdIU4doK9z8QHzsooaHg0+fYIK8/v5nXxdKd5dXHMVu+58hfDeFcCYi0xoOqlCgqcWIL9M+89GxM1ZPxLHItNHGfbYKRCWJs5f4C0g77QxpJ0PaKiLd3dqupfRJ2a2F17goXF2TzmBLQdUn2gTkbV/bjUK6c6OL+f9DW/BTojUyzyfWq8+cwpdntGg7HZOK0543GmP62ko6r3KSlZ30fgpRm4Rmuog6W2NrPoiltuE6adTe92GV5W6CxmBi3dWiVDswHLN9mKgYno5M37ejWjQaidvKS5CAEDGyRgwrb3iW4aGaz80VZ4C23C3zc3xzdY0sK7IWJCER6jqi5xD33InD+hhf3oboUe0ZHo2oh7DdloYYTWzdte2jD+zOKy2uMbirpV8wiVgJH1W2yrCOeT7tg1ezaBKaQsEpPdjH36tPX4KTjMHIig4ogpVJBMbnl0stbUhHeI8IeGqulKPNhL9ZpjYzzS/i/GriFHHa44UuOOHvUdDk/U///Y5WV8jLkBOqnIEhzqwjfy5YW8n26X87t8UF4MG/S8gxH+YgBj/g94idcu1yNnl8LzIQmDqM5W7j62ibmoHPdCxPjgxZExGDqu/f2+w9RLGQ2+lCBHVkUdt4U7ygjYlWo0uB9swi/H0GvuPwW/A1HYyjim4QnN9Ftvlu4z8Tr2BNiZVBLUzetzg/RDOq+fHbUFqE78KZtfz5b9cynDEBBO+v0WMHP2n8GNY/+/kUsCX8VC5CUL+XwaKBR2tOsMqkq+cD+y0Ofb4qoDlT34V50x5GIzU885HN8vaLvH5b47d5hZ1e/nWdK3KzzlW1oNiEX6R33JolqjDjIiDoZ4wXlEdUfpdrVA72Jwb/qS37u8pJc7TgcD16fUT9rnuEmb/OasZZWsSVCLaL+lftMylS/Jl00ZVRN1GGkdBtqrgLlGA/dFO1H3fP8gn4smwihltFzmvmEHh+dhDRtBZb3ULYm0pJ03nllK3KlDT3W07ZRkpUB8NZqM+Up2npjil30zhLEnJOfvIPUb0Um3O2dRlx8Q2XY3Ec6S/GTgr666hRZBZVsWacK0aTBJMnLsWF0nP6ZnSE4zPFzj6aC5JH49BnVBke63iPoy14PsbFmj2MaWuCM9L/ZO9KuBPHkfBf6cfeu7yZPvZkTkJIhxxAY5KeO8+HAE+MzfhIoPPy31cllS0JW5YN2Xfu7szEltFXpdKn+6jiA4WyaHcJHvOh+TMm67sDoa1VloILixroWxVabXKaCPK8PsQGGZOAXzfas7tj8sgfHZzHCNlJYR9+SQnOo1hej+Dj0AZiF3JBs+/LmjXQh2946gcBx014BmF0gJ22ye48aZ33JC0UlfL8pg3Ybb+GPTM1tWasNvyxWoO3YNCHagaZhbw8e5g+8/aJrWLN3ZrN8N552Xq9E6n9vS7HwanXFaNgfhWylLuut2ej6pj5ESBI+4DNo1AMDCSFdXDFnvu26jnPFA1kOE1l2B5OVVFwihnzA3MsiQjlebVFT4BZJMU3956iwR/UbhSiawqq8FlgL2lWntuhF8AxdCyJtiqlWsJwC5f45wGWvwzhqn+wCzz74fKawIyTn6xFHhGvgpHaBCDOJdld2ymb+6kA57OsXfFbmh5+jdpkIY0LofFWXgl0k1nb30Qnfpn/LAuIsC0GUp3Yjc6gBQsmXn+zGZ3mRYQ+uV3+U9BVCF4dKfgkC+4PFp45JuG0jMX+J7VjCNUCTB/03WAYpvFuuKUKKA4IQREekB+4o6rs+SCkKu179OuRLvd7B7VFxLn+IKlo1EysOEv6+WSvJL157vocfKum34gP7Uwp5bzcAL1/dZHhJ46hztXhc0d4WhHdPSs7+1Z2S1YmZSsvcyuvCivvZIXNavKLsGU1FTusOWi/rXWB2eCrUUl7DaUK9R9bkeT9nhjWECw50q9ycWwPZbF1WqlluT8Mb0xSLeSnfXI1MyzAiSvnZVJhONgzcLGJGdvtS4ZeBB3g5kUjqmkG84sMOGMHfJYcRRzb/K5VuY2lQsKmUYKNGj5BLSras/B46HM7WengfzsQHisTxMyzhAeqEgJZQiv1h7Y72UA8maCbw7PY2oOkL/ySc+inSLbqB0u4LX61Fhmc1JjpwY+jcM392FT4uwOxfFr1lCxImJCiTecPwlLxEUJ42bjdhLMog2DRahfwaZ3l0hWJQ5KqHsZBdbigfRrnJ7AorBogyoQwVqZNxznJYj9JfXcK6zDoyQPIwwITVgwTkrIDYFjqIKOkd/ylSNWDhl55U6WYCVg1iAlbkrWDge2ukLqCX4+q8kZES4dYsv9Wiyy7VOkMYIU9KNaPKVDFWrJA7WtzVeAeP74YaJpwlKAd+0zsZtpBxuDARJfg7rW9lcYvvXf/eS0GLTuvrRytmGnEx5rzaEy2Eqs/acdFJSE5RN8k6zp6IH0niYKMjXf5r/kYWwyVhk1sL7Q+8+NEyIX5jx8vnHxS8seff2aYp04jLhb+gSgSfxbEO6kx+TRzAt9lo6qQgkG9pXTwB7MraC3igNqAL7nzRCfC3CMVvhk41h8UHm720w/kB4eBg+ZigEfhpTe4g1wIGB4sYB5nUB5nUZQ2lHV6sCz6hQLT/6qA7/VMN4FyV84pmV4OrDevsXbhMqa2D5Q/HY/54OIGaCZYfv7CQodbIVYM3qWmvTvOggCCiZypGFvodWaguVEr1IFrI+TbXfrKZxEE6c+0xVLa+NGqzypy9cJrhT2HIV1IEdBRIUXGJ7V7d+k1m0Pmm1h4z0wh4fUGXgkYiH8dhYuImgf+nEXx2k5pXkG/BMb0Wbrimy97RJ5roaPOYiS36hZjuPvuYNwLnnFO+apa0yY6yh/k6ZKneewvl6wqn2dhSIIrf0HmPuP3cJsy76fQT6Cq58mEdZwwBV2DPEhMX16rKhpVG8B1t/KnQbHBQl/5jbVCLJJmm37oVS/ZgRfytZ9yoiV6/O8Oxb8JN3H04CPbpvkzTMVFnkS5+aECpnYMvTRJjj4VN4cJwRboLLCT1Udix5MspQlJTXkyOVQaZ5lsK951g0kz/LGQcnuoFPr5eniyxYIF4PmjAP9YU1Ga4edX1tS6BODRKXTCppaoFacycnNUGABLdoG5S6VfxLCtg7FvMl8Gmh0OJOh4Art3qK7g7z8K4WySJOHDS5vh9q2E/r0OvWroCqA4UpAgflAZYASxZBB8khZbDNW1BhUnJuRB5dOY74Mb5Vv1KMFYKZ2EMKAAoiE47/44dZaYwq4qdtUjMlcOAFs4xaHF190ncTkrTRjv51TPJkLyrV3oruIorJr+uooeaQ1PM9fdFT9l4lYOimPoNqkwWkMxkJhzf7mqkjO3X0Mbt37Tc+h/37LuEU7zO0Rf7qFRHoV+6tsp8UTb9EKzbm6N5I/EuRm9kJzRXpbdggzPgw0ukrdE2ftg7+nubpNfVsP6Sx1pCuXuLs7PDsd+7/yzk7IXRrrPhnWTOxD4Kg999brz3K3ycjgKN1mVUB/pBzLZ/pINsL9CooCikiV3kr3CxWFXonKH7a2kN83CxsqeqmKOQ/c9irhVLjh7hVfFLvrclD/9Ez+Bd0/6+g5fc0eONOjveZB1CY3RdBXbCekV7hefu6PhcPjv12/fbFUrsYMug8AnoTRxg6H9vRBwaskosCC6ygjYgHVODSHy4J5dk3+OTmW3rC9RlBU9SI9o6mDDfiyxCj6a442SNV08crQUqBnMcnxNCQfy0moK7l0/tnCvzCKqRnf8GqVChyfeOFAxGDQn600AgkUvRmlWhJCTKEJrYaYDOksFfJnEHokBn9UXYBni8d6ABLeHptToAn4WsSFLSV7vT1/iASY88t/+4uLWtxh8+XlxaUH5dq8j9PhSupUBUdrepfx1+x3GFdkISVRuiJAuNTtUsS9rboJXauRXoMwrpQi+ev3l59LN8OoVa1UXrP2pC3yB5WzP4359YQGzprAMbOhYcxckAA39ImBuEQDdeggj3iQUxeJehSwDjhLoDdNEOIy+2DjNowG4tJaWmfQ4K5uyI2kOtdZCndkhLuhsCGFjLJLAMRj2KgBmmqJ+eXstz7X0pw0rL/efn6ED72/e9t7l3e1Iq+Y1FWLzCYFTglUBbM9h4bhVR1pB0WSqBkn0eXGdQ7xgLSstm8nQBljokcujibBN8nD9C19x7UXOkk0rtEkY+KFA46/SomkrsA+ZTxJXoOG7gMtaWMmyHwhek0lRJHOl7UxNy2M1TtyGDcc2vo9aQ05Xu8R37YB5e25edLdGQFh5tJctIC1HCwnEL3UOhE3Yd2GYUlnhUT0U/P9m+CWaYcjSjCrP+2P/+zZ4EBN+AUVgJwkEdb6uUiOPVYrPoyAT8NdtG2ooXHwAoxQzHME4Ret9VlO0OTGzzSbYtaviBzKoBrBcue9UVTTxzNX6pyY45gq93wzGXJUPzdaoq8RPzdEN1fdJ4zw+quIe14mJI2ghorgdkS5lyGq4Eo3eq2poYplIdG5GMVNoZAZpQqBrsxX09LkyRTaQ56JJrh5LnYlGST4nrd1JMtXrJqIeq9sHvZD2K7BGad/XSLNI2LoE3cp4Zaxy8ZlpOYtRzGXHMkCYC87ciGAuNd/pU24oMh/1Mc3l5caYgcdS5Ae9cfIFDjuAFeZDts7Zi+q0SyeqLgnZ9ME1h5Tq1UKXahG1HXGJUZESdX+vM4yIZCavszCBmOnrGjGaEHhptoCWwgtDXAOJvQbZeSyNf6uTgTPG7SizlhEr0UqU+VWXUyKSmTL3RhAzZQIjRhPKbMwW0FImNMQ1UGbuGKI3o0vhjpeGxrt8pPPnjg+LHj+GMD7y3rz5uYdzX52/4IpP1SgHhxULzWYkVBIOMJ9HSXpiJ8Rj6+aiKWevsFiMpyRgUUksTOEZMFxJ5j8Qp4+u3XEUukQ9ANYj5V1nSzhm4qd2UBxmg3My93werqy8WW1YiIR9qiB3FFJL+yGkAUKEJrCbKrki9kIOc2iYustQ2o33WG3IJvqAaV7ElmXrkZL1xMLXp4Osd7NZxrZH+PLaPAJdwH6oQ+W+wZIOwmpbVYcG8k/ZjTQoHw8swGanmq2rsgwhQcwtlw8HlPfyiaLcPwAO/kCZDkkA+yfk0adqgPZ4H6mRIfEQhDuRRdJ9V6BL0JMNZb4wKTuLB2GYTI83sFJcWxsZN9+L2NjjaSaYhB4LGvAMLJ573j9p1ibAMFou8+Vphys2lE1mSBW+SpqdNY0dbcqRT0utsgbgyNb/vEaOvDXpxYZx71WBRnFiwKkvd6OaRFhuTEio39yGxS7v1kivkAjGDTeDm7xnBG5lSsbZWiTmok4wcUeTF8qlrKrKl6uw+XxKzbfdKW0PC8k3xvph2mQXL1b8p2FiZYuFvxVHhi/VjkVx0cjU/tH++Rv82+vcjC/Hk4/ju+FsNpl1ICJ1MP/0utexbv5LVpVsuYrD0H9hnUXmoXbGCHAHDy2bVPI2/v+/aEkOjZO3qDon90qyria0hhibze6nMS4BOjW9rTb7n8b5lBFU92o2BzZ4qMl0OaRsfQfN5rhiFmJUA+QJ3JDGZnP6aZJqJ8i9cQNgQIqeOZx6KDMRQ+7n8uaAJr2yHkHfc08kdM3mwjnHOQSPCbps4iPmB2A03jWb60+jQpiMVol+55LkYGICZN/bmlWBsdh1KikSuv307jxECQFPMiV+V2SD8/Mw5pg8ki7C92tYpywjVJJ28vr+d4yqMO0rQfZ9H4GJ0xeh/ewYP5dHA6A1iRQTdCkQtQ2Qfl6Xx/gfsHv2aRTqtlBsX2jq3nZ9akA/hxI8cgkj0SSzwN/J7/d1V20LuGS5J8FWPfNkrJG50KO8VKlVcxpzegUgmLTyT3BpqfXS3f159ehGHd7jtL+ssAlZdR1C5Fyvlbm3yrh3B/a3jzFZJ+RA4hH+nSGmPDt4BtDEE75bI5XxLLkeKs0B/cNwGOOGHJNKzB8+H/LtPxSR8Ep6MpYtqw4b18GToEptUKgsJECCK7UOklXxTiBJ7ScVx/yLJsG71PDUAJ0IuFXhbb1wx+03E83gVJoRiCTdpCv4CFk5mZu1WMdaPP31Hq1KhNcrH+KKk+jWxJS1t1Y5GsVl5o4kXnvnQH+0+3j+gJP3mfxeRFAJkKo8gIP3khrHDRhK44/Xwldn6EgF0IDJ9DxUUFO7LU9iZyI3VhYk+MnoF+8CR3KQfj3es+nLhcutiiDk1xh5sNnNPPnMnrafbOt5KwNnK/Q6UktBBK6KGgNoo6YPuqrtSNgEgh7rSYmR0i3Wp/qkqckKSFV9X6es9JTBJXxx/eYIwlNx+eRlWXo3CHYlbC7HDwQg6fAg18kPuUf/B0TUmTSHu1lc8x1eUfBdwZeG1dQqmDGBKpHcM8GOpX9sI82zKulRmJNcFyKwfa/5emOIPtdtKNCl3lrj0aTy7rWczt7PrhhWW6MROj5JapK0L9vPkocRVQRh5PuXCfPayHAKKletM0mmW5Dz+/xyNbS3wTtwovVK1Zqj3E8XCct8kgzKSmxvZ/kO5a+vLjPl8hNjOE3z5+1AqibTLnub62Iwffu6Mrz1W7mD0c+oIQpAKY0Ku1+FPDWExvKwkPv/r6bH788q84d1iVYnaqi8l9u57wFlvePoMQkrF8HmLz08pmnkvf2vtetQbBNpwq+C+Rv8kVGJ+3qd4pIocYt1vS+wjrCQ4ChKf/ebwgLmrPhaKkxj2BlWZrT7DQlhaK9Om+GhEmfnFeLYRxxpUbWYh365qQ5wV2joifOkxgTV8yR7R1Cb1eqFGM4WeQEHOoQjq6gBREmvpLfJ2+o9C6QbLWN0isDDb1OdRXoRAFktrHKR6SBZ6gyNGGhQT3zZJoNeFq6HUT7rw8N4Oe4DKrEVUpFqlQZ7s+4noLlKBg3qogDh0mf5e69vgI5jna2SvZz0R4iE+uXkqTXT7zoeEM4IyREUKuGqWgs4ukbA4a6tZRTq5M5rnifMNMMQ0g59jOSJgVF1no4vJq51dXEGFgiNFfKgJYiAqsskLtRrbc2jnECGLSc1X7nlEGdVWPkUbeVqjsOUpjEGcdko6LC2wYj33N3GJeuQX8AnOXj1Mc7bXp7GUeHYwnZ7Tzt5eFZlH63fj6vdAp6gN1Gw0USiIwKpFFqFzgvBKFAKjNS34uRuR1wQWLAyK8Qb2npkdg6YhM6xeCIwmmYBvRW0X7rE5eF4FYthHygEnet/RcHrEGknf5c4ObOelnmX+tJkVpMcXZHjua/DULdF+vN64dBnFI94P5CVF3TOwMBTVBJUmkZeWMvcraNvdMCMKF+hcqhioiddNOE3aqbXy9RaUmm2iX1XkB4hE2WBlS4ekiSz5gliS9Bp9+4gVLgBMhQncZKm71YOLCUTvV6S8/yYMTGL5rfyq2PjVoI/u5Xg4gL9EhVasbg0FnCYZgLfjlPgq1hM+A5b8ZonYRlrwyAfzdPCrMZaTSAwZn5sxZOQJu8A9U6yBCymaqHjytJTFczaBKPbvtpRFi215YNkGoOkcSWqdpbizK4WWGQgebrXronGxfZVShg+Oux43rp7Fq9W1Vp+x1vjSsB8MSl9c8xemDMWp9G2wup23rXGnU7p6w/mnCjsZpVgnopD/p+9PaT5mW69whc3weBMuSOA2CMNJ2aB87Ko106fHdcxLXPxLEvK9Bbz+K0Z3gaPBcJVAPWdGU90y49VqIXZ77REdPX8TQRTbzPo/fmtfBn3L36fOi3i2Z2ThYHpFuPLs7EVcAmVJkHwn/6HPMjAGJ1PDifMmMAnd3/yZEInzeWuKRPzKNTIaD85WP6SthCtCq4QzyF69OGGYJGFqJoUVDVsMSmSDDwWBBFnsfuZoVpUZxfcfsJgMlqn2DKtS2Sz4jDKgjIqrKeZVjMwVJWQLKxlCd5pH1tYa8rm9Nw3H728NUccj78QdIEvz0W9V4krVcbnVXT2troTqBFaV9ThTuBOSiIIeF9BYjwXgi9icRp1xvAwkB+wHJMU1oRx1akqNWEwfqo/XZULLE1SUQjQD6nFApVTJmWe0nZyu+7SFlKXNgQk/0bVbanHoRyJ0ebBOBTjEBqplI79OrEfjMPe2tAVdLZj99YGrnjn2DmHAx6lGS6Pt5E42qSDF3Ks5Es5EFcy8uWNL3/1Je8zFGrO39LSjgeVKj+Ce4x0zrjoOpC7u7viyFskmb6GMEIbKedUScgR2n+5VLET+L3N44cuXm640bP3w2hp5cW7WEts4rWu4ug1QH1qFBepCkMYkXUYpL3RIH17cJooJHieh3oHNlnZ+ftWXii5PhRfmLsEo7vVkAw3/771wufhCSAHPuEwD/6+zTHbRA+3jKvb/4CrzmiXsgUS90jns6+PbHMawulMv8uZcOTNlvNlpN8ki/gdADkXzsOHyOilcOCaLQsSky0P2NXn3r8d2+59z0tYqlmYIXEKXJT4/3s3NP/Y61apTYsrauO1Qf+73L5KEIMJNz5C+letog04deDd5cfnuR5oO2BtFbdnlO+7FXOZ+yW9qn8bqNxUTYj+hJLrVkjeoMuY5e4H0xaS+mk4Nr3+7sGEV8YhvgJRVw365KPWGUud5dSzwxVXyjGY3J/U3gcFRpv+XcqNGHncllJBXy2v2aHkgiiShI8zuKU+cRuFT1OpvK/YPDc8/WQaIQKH2iOcXffWwOPQdyC2PVVf/YWkJpbgpTM186xXde4cqxXMITB92SaJlqhPytM2gRWwh9X0QYs8AnIgB2LzQCpojzfah+YZgRzubVH7Iqws7UufKNtEGQ52a8pORdmuKbsS1DcPpkjdqKmbbAWyDc7cveGA9DY3DX84JIJDiqOavDUYbTdqOOcPBz3QDVzxhAD6ffhnuCbp6eUnF7hPQOEI2Zdo8lI5r5Tbe6XkJccJNCRrAPdbBdO221v4DqeWYV2DIAyGbEy7LVEOLIRR49eP7BdNI/UykGQBc0uZdnHt176GcdmQ8rmi3jBn3uF//7t2a4oxiPRn3tSLfQfMd4wiivXfMzu7yyz9bPX37M7ZbrIAUxGsZi8CUQQQhv1+HmRRWhz8BjAyZg4pJgIA"; + +// MeshCommander LMS (GZIP'ed, Base64) v0.7.8 +var _IntelAmtWebApp_etag = "N8Wf/McOVX3T6idS+oh9"; +var _IntelAmtWebApp = "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"; + +// MeshCommander Local (GZIP'ed, Base64) v0.7.8 +var FullSite_IntelAmtLocalWebApp_etag = "PR80FHg+cPmsp2l3pigx"; +var FullSite_IntelAmtLocalWebApp = "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"; + // Check the server certificate fingerprint function onVerifyServer(clientName, certs) { @@ -705,10 +717,6 @@ function readAmtAuditLogEx2(stack, response, status) { // function startMeshCommander() { - // MeshCommander Local v0.7.5 - var _IntelAmtLocalWebApp_etag = "2yqTVWrrXNG95TGphPSo"; - var _IntelAmtLocalWebApp = "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"; - if (settings.localport == null) { settings.localport = 3000; } // Start the web server @@ -771,8 +779,8 @@ function startMeshCommander() { rsp.writeHead(200, 'OK', { Server: 'JSLMS', 'Cache-Control': 'max-age=0, no-cache', 'X-Frame-Options': 'DENY', 'Content-Type': 'text/html', 'Transfer-Encoding': 'chunked' }); rsp.end(meshcommander); } else { - rsp.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: _IntelAmtLocalWebApp_etag }); - rsp.end(Buffer.from(_IntelAmtLocalWebApp, 'base64')); + rsp.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: FullSite_IntelAmtLocalWebApp_etag }); + rsp.end(Buffer.from(FullSite_IntelAmtLocalWebApp, 'base64')); } break; default: // Unknown request @@ -1369,9 +1377,6 @@ function startLms(func, lmscommander) { } function startMeshCommanderLms() { - // 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); @@ -1421,7 +1426,7 @@ function startMeshCommanderLms() { rsp.end(lmscommander); } else { rsp.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: _IntelAmtWebApp_etag }); - rsp.end(Buffer.from(_IntelAmtWebApp, 'base64')); + rsp.end(Buffer.from(_IntelAmtWebApp, "base64")); } break; default: // Unknown request diff --git a/agents/meshcmd.min.js b/agents/meshcmd.min.js index 42532775..618e9ff0 100644 --- a/agents/meshcmd.min.js +++ b/agents/meshcmd.min.js @@ -48,10 +48,22 @@ var SMBiosTables = null; var globalDebugFlags = 0; // 1 = IDER Debug const RCSMessageProtocolVersion = 1; // RCS Message Protocol Version. Needs to be less than or equal to RCS server Message Protocol Version -// 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 = "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"; +// MeshCommander for Firmware (GZIP'ed, Base64) v0.7.8 +var Large_IntelAmtWebApp_etag = "zVObfGF4CXPIxvxSUu+3"; +var Large_IntelAmtWebApp = "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"; +var Medium_IntelAmtWebApp_etag = "IeB7H1GRGwkVlI3IGH5z"; +var Medium_IntelAmtWebApp = "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"; +var Small_IntelAmtWebApp_etag = "Ci0RenuglliDcxGQPFS+"; +var Small_IntelAmtWebApp = "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"; + +// MeshCommander LMS (GZIP'ed, Base64) v0.7.8 +var _IntelAmtWebApp_etag = "N8Wf/McOVX3T6idS+oh9"; +var _IntelAmtWebApp = "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"; + +// MeshCommander Local (GZIP'ed, Base64) v0.7.8 +var FullSite_IntelAmtLocalWebApp_etag = "PR80FHg+cPmsp2l3pigx"; +var FullSite_IntelAmtLocalWebApp = "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"; + // Check the server certificate fingerprint function onVerifyServer(clientName, certs) { @@ -705,10 +717,6 @@ function readAmtAuditLogEx2(stack, response, status) { // function startMeshCommander() { - // MeshCommander Local v0.7.5 - var _IntelAmtLocalWebApp_etag = "2yqTVWrrXNG95TGphPSo"; - var _IntelAmtLocalWebApp = "H4sIAAAAAAAEAMQ5h3ajOtOvwu/ckpyNN4CNa7znYOwUJ07i1PU9VYAAJQIREC7xyYv9X3uk7xU+yUAMwdldX9/iKo00fTTSiP/+4z+H/9e71G7HV33BoS7+csh/hZDOMew4ENkObUmi+DODQ2B+OXQhBWwi9cvwOUKTztfynVrWiOsDinQMBYN4FHq0Uzrtd6Bpw1KMsoJTOKMHnEfbcEAQQtqJqFVulLJEtXhy+XbuwwTfAy7sWCRwAS2bkEKDIuJlqWLoO8SDHY8wlhh5T0IAcaeE2JSSQBmhDnKBDQ98zxacAFqdkgkoaL0B2zoIYa26j+67l9dT8ezYJh1GaWmILzox54uMNdoumJWzfTKBgYXJtOUg04Re2yJMfAu4CM9bIEAA7wsOxBNIkQH2hRB4YTmEAbLiiSF6ga2mT9sGwSRo6RgYT22d/dgBiTyzNXUQhYxnYCOvTInfEtMOhhZd9QImEO+Wp1B/QpRNjQynbACMSURbHjPP21DE2DMRMDTSgSfulDVwl7ysg4ZFYAHwitEiFo0J5QPTRJ7dEhkY6BAvTBT6GMyZusR4SlSfIs8kUx4jGf3L2bH2GoJTZFIndkRMu+VwhywKJBxmIMyN1H7XX3J8Ba0JChGF5oL1eZwZJAA80GJ1YpwdsWrxqTzGfmBeIkoCUxSl/epIi5XbJcmncRRM43jSCTZzgZB1teLPsnEgiau+TiglbqvGIK+OnOHQ3IRBLc+gVqDP3OcvvoFRLWLkw1PmAlIzLyCDOEVIarsoCJmwPkEehUF2YewAANqvn3lqYvN8EqKlFyw0g2Y7XijJCkmXRrJoa3V/liMkVmpt4fWzHxA7gGGog3XkYrT1FOUiQSYZ8nK2qjJ/MSgm9iI7V9d1oCvxgPThiEB5GhJo0PIoW9UOwuYuMc29HAJsQGhBhmBFGBsQ47VqNJkYqfyplxK92Mi7ZMaIuQB5v4OYpNSK5NJ1yy0Sm42N87yIywAj22sxooylByYfOaEZOyHHL0kBnCEDBiYMVuEmhAQjU9jpilrtSFvDruC4TB8jD4KgbAfARNCju5QIMdN9YUe3TMkyBPHn/cTuAs9Be7H00iJNUBITQWRf/t94Wx7c1N9el8u0Xw59YECWWKYB8Nv5pRAzknMhVpHz61HMkSzgB+9TEQOJi8Lew6DSIrFrYnPpzbDMNvM2z4SJRbkcHENerAFWNiZT+Sib7zQqDbmuF5UK/QACM7dhZ7aIAp1URYpcGCTiZeTaAboBoFTESwY4ppsxY31pRWb7bJqXxY+z8I7W4O9C3s14lSf6mKi8yCGtmzUFgbf4iJch8hebxU9G0iKxC8/aqbmUXCYrB9CHgG/oSSs7tjw9taIA72ZPUzay0tPUtYiPL3vY6avqSD0fXqnnmjyfNXuBiOfyQ3TdODKjyBnNMbl8eHkx7blbO57/Fj1LB5P6p2fN8Y3HgTiAX906VCaTg4OD+YnSVRk1taGeq+zF6Xb53/W8McSDZ0m+HOow1Pvq/LE/1C669+TxlMy1oTNQx2O7dylNp0NNHJwDu9pXG8c9ctWdn41Bt6/dnQ56U8e+7E+nR8RWL4Znj73RVAuGJ5pTmV9rV0MlIs2rkylVcb9RP9Ggqpje6eDqemjfvhzVu6PR4Kw7erbU0fHQqY6PnSnE1+NrtRd2SnuJxeW/1OKDfk+96t0PgTvsTZmRrrIWHL6z4OncO/3kdwMVPHiIXDw8I08fDYzbChi8iA/HN2NgqwODAvHyFIe6dXou3+kQ90azMzW8QeHtY+9UJerltLPStvKXant2eqKe940T+JXWwZrYOchqb7zT/gLA88A4dx+Gp/4U+b91L06P8bhbfVH9xyMw7qqP49HtuOp8Pb55drSH6wq4Of/U9fqN2ana79ugOxv1RkitPmBiQ/tmdH5UvTtRQ1I9dtyB17+5f7quq88jefRk3J3cSeGT9nSvhrBvaKv4oNDtguBt36jzJIC8tNCQxeJJK3eyajBAbG8QUfK2DQITReFycE0GNRp6QypmUIO4fsSaXCQDBakb5YwbeTvPopo/AvF8nheQT8jTXuQ5Z8UXUrUzWyYnkFpHLhD7zj7BZkfhYn1thDxEEcBryyMuzbryiG9VSXlUhIZFYAHwKvCErvFz1dqY/3XZDJkWrgs8ZugDFluET/3se/ave99cRSycckdJTrBAj6/RUBE5ub3lEUVcOVgR03CKm3lPJa6PCx7GS96MV1nZiltlQ26SuBW76qbsttNO2ZCdvJ12tU3ZbaXd4w9GpVxbG5VyLeXFmt/lJW/GqyzXtuFW2ZCbIm/Drboht3pjG27KhtwksboNu9qm7CrbxAnfqRaCYCHMxuJ9S0h3ggwwNACGu8sSTyA+MBCd79ZYh18c5Or28lvVKv4s8OKjeAgSGdjCBNC4zBEEobAFrKk8A47MCk9r+WKkWdto8ndSeRb2vmR4zVZRPG0BSoHhuIxXKzQCgjE3jfx79eKybqxYogxXLFHyT1NMCv8ujwGRvz9SLBnewmPhX+qyRJucy/4czbCuR5QSLzmNVldKsHbhNKpwyPpSP3clVzxUv5ksgBhQNIHvs0ey+FviZyUjVnL8TAelzFAI8WKF1MyPpCVhQ16nQ7oBClyfPO3v76RcQ535rSInefJdlqzIaZZkze9lSazLGzNkja04VjbnWKtuwTHQFx+P51ZJ5tqsIv68rs5hwRvla5wixbSYUXIYHxYyNb1pGvVl2ePxEmLIEHLXv0dN/mYsZuXQASaZttjKFCTuhMDWwa4g7iefzxVhr1286zIMoy28LQCgM3BEYf4uHaOQlpcPxmIlCk9klKRwfbt0430wS/sK77+UEfPfrKWIItfH5eqkV1vVarWdPh1CHs895fghUe7quLEqBmO75yBcYiXTT64bOWjtQ5tkDSo/pwFiQgtEmBavrwvZIRU//6jHavJ37mq52WRL//AgfqZ4SBFlf0MYOloazYcHMfBwedNPvMjDBJidkoEh8CJ/d6/EgInvebB0HIaGobaKhl04gR7d+3JooomAzI4oGBiEYSd+RMKYAh3DBJYUn8nD3swNaXquZ8ZiGBzLFCbLS9lOiSGVhPg2ulOK/9ljUn9FUsqrlB2SuUTSe3IMHbm2sOTfkWq1pPDv1KpCMing/VIiZxKzohAGxg88xF3e7dzcOf07m7XOxuyne6Sp/L+nPgwkXeWQY7N7e9dX1fPjS+uKXj9NGVDrPt4cDS5Y46TH+o9qQ1WvpBs+MGLD1v+ILItEWYE1CS+IAW5D3N2Z4VC4y+r73Lb3V+Ep8aVG3DOMNep/txTuMIxUPJ+thOi/Wqxo4B2YdTKJhnLUnHOUabzA5BWZfXMkXXIpYBjhJ09pioaiH4tzbV9xScwFdDODJqHb9adaJXsYF5O0SROu4fmfAe2e1DGtKLrq3HkiLzSm6KhiKuwuE4Q6I6tMMxtuK4bcc7lHpm/rS9Gg/gKAtecA8tHkRJI6akdtwfRrcQ14IXm35LytfTffWxCu5AaxvzMKw8ojx2gOa4R9RsQkS3Isr74UIk6d+DIDJTA1S0T6zRWm7RgYa7EgUC/itNSKPI8M446kgUve7YpYg6nB6ehbbndLkw3vM0pcOF5dywrFqVqR5PL+nyxd+43muNh6pjz+OO2wnSYnFlJ5aihBLXQaoHCfhU/c7aKP9rjzfA/e1ZmAnoQM9jE3E3jRHRdipyq/xDWSvhZOp8POgMGERo1RuQjfr0mZSxhQVfUosC0ew2Njpxw6soTNNXPquk+18GYZnWe4ZBuLYYJg1AsOK73YmxFPkIp8vUMOVXTzBDryDDJ55zMuZA1sGqYQWkPNQ6zaCTujwtlqQCczkILamUmMV802++te5ORm3tIdXkHro4O+hmk0b84fNL7I2fb9++oclT1n5CnCNBpaKb4/xRNBxwYDQL4I6brGordPwqYOtrRq0UiSldFXLNdeaPCLbkoJ54vcl8BSQAZYSganoGJ7qagYor4fU2yVcfwZhy7oUf4AiXZKPWUtNTrhG8ZTNrAYES7OkwewopNgLwPLwerI5MG+jSZ4vAtQYQkS5nVdza3IOI55q9+hNkh+NZ1S0oB1ET+CDP51wdwamEf9jJimfFtYGZYJGk5bGPntmZJgWD5hsr3h4JuVSEYCO15gGTVsjMhjvKVhgNdhyYRlFtYoG5We2TVgiszxzZktSlb9GvGbTR1jV4yJCB5AmMBX2ClhM4ptdoeVhNboPRbnhNBjba+l7oYdHfsMJCD4U8IVIce5jC30Kg5J2SxxK7+uIrGyEyH/ZnVKqtNRbCeOGmOcU6ClSZYTXm7NGW9jgvy+v4SrM9YB2LBgNIrdCZEDmLLg4oJhAdEC+I/iY8z83ZqN2ZOgMI7grl3XNh1vOCIVVF0vd8KPeORuYbSFERc3X137dEZj3gxFol2JdUQ3KNJ5fNxpbR2ROWF2C6ow0Va3haUyY4nAL92EaFNYKP4wEAXu63zWUUeoGqFkM0IQETbvNXR+gS4njAnSqEdibnPGkOee2k75ieqoR4mw34DPXqMsJY6BEemNaA81tPTGopFMXQK3cSLCbXtQPSnJsghz7ZJLeQtmPDe5NbPMAPGPuBi5kMrbQVt1EvSKGyn1wCQSoycMte+lbqWarwFrwrgL4hx1bHySadqW8zm1V4Y5De++5hhKVRVVm90tGVmXwx+FlLxKebDR/8svnJ5SjW4s/FyVExcW6B3C/Rb97Icx+CLld3oz1XBUg78G2HOAK+M/xxXv/sd5mHLsgdS5q8on/a87PbcKBtvzYg1ONbxvK0d9q9MzYBXTPGgR33GE5XWR1tEPOtMraCXIQnOpgSEgXH1RaDVetLLfeTUzRuzN1Z4bE+MVEV/SnFacKpVLQgEJnnkR394PmSccgUX0MyUKSODHD+yURmE/UKP0RrkO7101tMig+M4xtsXRhqlmQVi+bHA+b76QOcP01smwBac07J+up+E3WLYiFiP8lkhUvaU9oJXv43mtltQCwgy7ZNwkaJ2z5GyNZTr3ifoaHOewaaHoYdR1ZYWiAfPCduMZ+u+MaBS2EN6Oa1KwDd5QCuLiLuNIal3xB3HWQopHc9QlK8iF3hBb2fUOHK6XhDZB3LVctZuGQRj6cNRmG7o21sqNW5qt4gpEy5U5aMRZvUHHG1xcQUmHvSneEPXzCVPEcGyMF6sdsw4PSdMuYFyP3qPIiCNa6Cw4lhcZ0Ows5wthHuT9zbYlLZA0hSchiYiUb/ppH1BebVzVhkQXz2hVxnCCwlq9krRd0wyTR+xx8+ZssM2jsj0hRUl2tJ0llZJRK+j781dzao9NEoqU/PTTAPE5GSUvOdS5OOjgOfzcNAEIAV3U+KBvGEYT8eBv30YScPJPv4z4Bb24SPMjRnO5GfU2JeVw3uuuIaJQLYEXjvXM240VXrcom102dZzba7t4K+XoO5J8E+j0IqPnYOVE1mv8K3PHPCaks9CgONFhsiLzpeoDtt6kvEJkBlMIgH8kA2Y/fp0tXymklqosYsb3581lzyvL5fWmGSLtKUAKoCCP7zJOsyO32CBwZcWqrY9OBsHefBVPOCJs1IwLgX5yVCponf+iavk+V76IyiJf2RY9alRxM77MajjwDbRP2pNx1j4C4PsQuLYHAM3JOyarertoef2c2BBzqOptUEepEtxB3mSsiLXv5GVGg+Nu9WLVXhqceGBrgwsw9WoVytodHOe93j5ba5U5SMXuN+fn3cpuIOZjStdvyPn9Ojlw4VcJlW1041BOVp2bl7XDhwjbaOItOj1T9Pmu4jWitekKhzLQVtiMJoxwf5IsTUorPlguy/NAf6A7mT9+wravy05zjDxiv7JnyoUSseIzS6hiwaBPQqgofgJqQLh495fWKoVu99SvPSduOz3As1V77c/MB1PDVmNa4wJ68ahoeNaswo3p7qeRzoplQaKRJ+ptaavxlyFfRIr994J1ayIhI2X7ezZuABV0cMGsfAoBNoxjHaU2rnb7TkAeUvLJdX60rCMl+Y3eWQEEmsHiFkUHSQ3+Z56RucVmFpJUFbUAeo0VD8wZx7tGbvtJhfZ+MujfsqCvD+o6FeIXb6JFrLHhrrO/GtukYQm5rhcpbD9CJKMhBObz85jlAz/O7ZioPWnLUveTZetaIKaU9axXk/CrEEW/TMjp32x6b2nT1ieQ1XeKJb/t1gCNMZ5mJgnmORqKlv5Sa00GU7oDYTcGYRnvaoWFpPsetEaeq6ktSLghl7++QFyZBQRnW6SfdDlhdUWDTr3X9BaHWlmEMHnjN0+/C038rsxk15XvFCttcUoYfpFk1wf2XCO+B+O85nb7dbI707LsYQc9/mkfFWyRPXFrRYRXadPe5l9FFxdwrGb0HjlhwaJL8Q/my9OE1QCI3kUK/myvSFR4ASH7bY8F9eLDYcvKhT45GcsZR9w4MafLAZDSPBAaBWZasluIWKZ1xvX4JGjma31DSn2k/D6KKL2PQouPbEG5tX0DpLlHiPMrkOgGL2h9wIBUJxfnoP0JnnT6KO0pFvF9U1fs3aay2Dc0hiLQQ0HEfwLwZPCAl8vs2mK/2nPUsfWWogzAuUubGAkK1g/yOeP8pLErbwrrd0+pPPelQJL84ZewfV5bF1cR2IJ7IhNMKfJEUIW/x6tN/94B0s4zK5qJWo6NmpDvArx+oCVNIOJRyUW+hTYtXB0K7+rzqT0GSDlOWX1dIoSXlpoCky2OiVbjMXDUGf5dRl1PNrXFFJJMecfWoLjQtB7vK2jb7opkZ3UmHO4StB+/oCGSiFujNqZX5oGS113ihh5VwEO+O0jI5Ayev48qpAkWgBpsAn60berc/Rm6mb8Ybk8cvr8bXWgYhnsUFjpgAGT+gm0hN2yhAKHHUi7bYgyYQhKXfHLOfAwhhXdOg8PwnDcB/y+vyjyqK4hBJZIHmlSxGMQZO3FiEwg9vzeGJvcq0yq9lhGcZggh87TsxzaP97C9vtuQ+qtwAsh3fHm+7zfiVlVRIOUCJAHYG1GVeegESZQBRGxVBVBGJVzG5YfClyat5PM9KAgCx03ThJzNevXw8o2hWXORkFLzv3Lj7MtvC81CdoamLfP97zQk5XGsc2b+D4VhdYhjWRYt/0BIvaU+HKMHhKyuf7tGbk4/YibBieuOjbEv12Q/WfpLr6tWXVcVQB00TYMggcny1DYPQJYnQREE8X7ijNU2iYOoP8ocGYl11dKR3t5YrpHktm1T86dZsMUfSkIzoE82SONUjV41CWKoVQAh+ZFoRZ3miGalhOsedTLnZNgsMusAzZKF5O4GUlsxO44n+GvYj05AS4mv9wfQWwWKMUhhD6C3D06s9s9IP9y/7IomX6iqbZ7F9vv74PtJjc5RgGu1Su9/20Z23YeiNepBH+qo6E3vOBjEnEvKUfAdAQu+aviiAKMA9Y18h4wKRNs3cxT/qHSLLy1RBJS2M+TaOn0h+F+4cuDlWA+fz+L4pQd8EwSCiiuNPd6p/VB0T94gvcBv0J+qBg5v8taQgvCrCvWPwj3qiq8fJz65XRX4103Th+/ItQKHM5PZzZMQD9YXOj2DWylS8qEgQGF/WUASfsKrBo7Ey9HvJ2FHfF1a+ARHRS3qi5I4DbztKCSyQ2zrf3TSfIHKX0RkVR0PD4rGsWjXdRG8W8fB5N0MSkmS118opLNl6PEUZAlgO7n9fvzuFiFcx3OQHkkEsnMf6cBcgnD+nGi+smV9kNadmNLmL4NoWkIsxCYNQ8EjulUwOXF+IEMKKqeE5sepWxZA7fk2DcOpEwRBXdgylvHwv+UHtAyI4S8k4OyoP0lCwAKRGmibEeu0tfd9MZIEv+/DKTIt1sCJ44kWMkHL6Y48Xvzxp2kSzR3dXhzR1cGDJmcLT3TofYjwDy6ebNMsQlGE4eDQPejTuo2Aud+xcdO8IkdesaqKw5A7lhMOkS7+q0CgQLuKBsn46pcYrJvmppF2Gwksub9vaYsSxS8HuWNZrouiiF+8OPWCoujj/m1B+ABAFYtDWFaA052npWlKkx5nBC7QGqHPN/IEMBOw1hyk0if29GFBJhgDKs82COLfU4GgFVwv+pUxSL7Dp4rUCV81eWH/xmq8fVtcgV0IIJo/tVLsI6pi/9yMrk7ZDcqqv+c3Zx0swmADVAXBvLwZw4j19wMAy9SLOQcj9UHRaRLbBsq7Zj9Pjad47vC0daMVqLJiMY0/QGTySLSb130FCeUpnEQvS6FJdLCpxKhBjccgHARC+6NJlLrsNwovUDLzx6mBopXf3n8zGCSjMd+/jv96aaahZDJXuLqmtgCQJG5LGoFKAKxO7OwQlsBUT88/vy4Kw9YKVpbCHVy+uT1ciSc7Vvh5ky4Z76yesj68nX46kEYL7Ccq3Mchw139SDk/+RFufchMqMwYCzOuzkGP4YXCGKPWzPhRPxD3atmfQAJSrSG+wC3EWqsGBP/5pgrYX3/oYJDCGk2dCTNKW/TDKaCu6zgMaZCa24peWQvH66kHAO6bQHgfHZNC6KvCj6+cM3VTe6IAeKCUtJlIzfFNY+u66jwrK7mO2wYz6FfCMHt30YCmB6Y9hpG1HUPmu9ey6zzpV/7Dd2gTuycJbAZcICQPd4e5vMySwhQFT5H71zfO/L2MK6pxFxEDk+IvfFVBN/+SCX17nNrta3N/eKamVnRVR7S921MufX9eNs9Fd2JIMg9he6SHZIUeaJUxgdyQKImeRLDdTHwDhVGDG9Ov8mZq0KHFaF3+heTeYNievwTs5f0pTzQnqRIokFti3hq8vOmlBKcsASg1Ru9BnZJvUun3kKVOzw8+O76/dHSyRxqeSUZK4OkOZEb6kd8YXvKvhXPWHjRXdyue3ZGNbajK5hFO5SPXHFrp+5EO8q+LFSeD32Qx4bcwWskMQfQ8qpCLHKEfXMmzwrfScwPBYhVtrZGMVjUt6scJ0PCPCvw3l7yhZiZejRtm/lm/MDyQQ7h15vls2nXy9XPGQU+DuP/veUnF1182sj94BahJ9MJBD/0dH75/S1nXd8iLC7Q6rFO0OOabVVXXZYlQnyNAjzQ/f3mv3Pu++2bMYV4g0Ipqa1Jh0w+Q6cnYc83OyyI4ZOeK1r3o4hp0rEZCS78+LmhlM+247gMKgCZHWxAVS//Wy1cjxTXsQrzqukZp9ZRomoCvwbbVP6lb3C+O4v4il46OGoDXZZm1ySS/lq+CAP0XZYlTRRCj2Nb/EdUAtKFOwYjEIriOlAuOlZHJst9JobIjdpxZNC02Yks/uc9NhKD2UpxLZqN6U6JfYb3F4Xa8hvpD5eQXErxhFX7jpIe4MfoRcK2kQ/zbm9VMws+4fce1f3mKN4aOQHonYDWCNZ+Bk3syr+v4eCiKggd0xglAwMuSXbpgL/+bS41JZMeB0O4Wr2hgaJ1xkM6OOk6VlIhN6alH5dVoMeX6FX8Z1czyZOAeChJqClkrLsEwPB39gqbizCegxeJrHrNEqRAqqKXVrQY3lW159G44ncn332cj+3nNton8k69zLr7ZXQiA9QSr/mFeHLeyn+yX5XEcv9fz18ymQxiGw3QwfivXqxzeKQsE9UBbpq8W8UsOwppMhbJtNF2xlSm/IwUNlOvkyS5UphErzF7bCzv/EH3ehRZ6ZwilTAReozlEBYEX2N6U1euJ7PeWpUKfM4N6NNjSBei16VsfxCBIwNRBzuktdbcgOdWGKFZFnede+IcT0Z0vmD+sAD7Ukyf1TcpUazq1do1iWCVTQKXgRWqnCPoMiq0c7pnNLVnlJfIGqr85V1LJArIsILLD8yKCz3JMqfrtVTx5cFp3DNMez8KTENKyqs7JKoS9HrKEEJi7tCZfQ7ZwK2EWTOXiyEboBqslvt6t5AlModTIFeDpEHF3MKSfc3KFgqIP+s+Lnfq2yR4ZiFfSP3xyHx3ypTu0Fqg6TSiMrCnR+lpgS4Ez27joOkdvdOxbDcpAc4bRR+Am4spm4P5Ccwvm8EXv9PsYpJsm+nDh/Tz140uXd1JBBFVIV9lX9hTCvGPb7jmRf8cf4LDi+aLSNMV5xp/rFTeG9nrNIEJe82xUeHLSSFLt6vis3iubirOnIrlNVvDivWHkhKi1bKudkuck9AB/8sHhXtxVWlvfro7s81adoEXEUQ1hH57KzaIpWl3EU1y7C/y+5AdVLxYsMJpBVevxrIVjfSOk+Y5bwi1bp8Zx417HgSZ5XIdqj2RxO/RqIX9YxT0iy5MZAm1hcSOMF9ji7/J0thZNxYDhgLppEBBM1buw86g/byDx4Gyn97Jo7PkuzQnKg43lM4xRf+mRPEDr48bk7F4ICbFnUW/uQetScxy8Fat0scNO3/8IXOXWhPZ/z8Naeid4Osd+GuJQ43TNDWSR5QldXhmnyNB4fcXn9RjvGp42/WQ7AQoHpcgOra6kjMPMGrgkBybgt/JqnI7k1iQPD+pDlDgqZHH5M1TtQgZsxY6UtpUwghG6Ti8YzxghQOqkJ3pCLsQJAzNfAesjy9DdbNCujqCmI0bKsnzsxzLgG4fuXdLuAWLyASx6SdPuaD486r0O/oJntfizDJkf307il3PLkGO64k0cfGA1A94QZgmMjTQSVPQdg9p1XCXrf9ggFvZ5EmV1aCYl15zYlookhjxes+DA69jZ/X4f3oTVFm80KLTOHpdrq4sSxhQ+kqTy4KXLshrHpBAWYDxNCFGbTeHevIwxh/thxsrU3bkmivpLc8/h1Zvjrlef2o0PgtkSG80oyjSMfFB5/7tGSv0YysijYTnDU3sTRZoCFHatL+jpKQScRgGHTPqxU4p/yuOkGaOBLwD1MBOYgCvYHbHtUojZoITxPAzDX0xeUHtMpIvO0MsxCkY2RuhCDzsWrKztPyPUMYQqgqvehL3/1q6/HucMXaC403Hg9XJQb9W4f/LvoUA1+6w+tqfvB42bQagDDCNIsd5sd9hWFQVAJdUHFTdVP6etV2nIH2pjthJLJMCPl1hqliX4B3CdBns+P5NDQnJGPgS9PYi34l+v1NTOmEI5Flj1lxvFJ4Lg9XHzcAshkxds5pb76KjBiSm4fyLZt9c8IOZ+s9UbjDr4sSpd4BqWC/jcpeQGPp0BxvzA4A8otTjLm5cMYoapOCD8XRDXqtZCtDrQrSQz7Ov6ck6caOujV0ssAU8urLt+YpZn8HNAeSbbsmZLoiNWjaYHYigDaygbwMnKjhIGCo8kouXSzqRAyT0Wib3V3UCeHt7L02ojFOCXesHkHX8la3Ejuluhd5VsL4TyU1N2FGuiRoqxLzTL4cF4LTgN0sAo3TDGxM0Wq7RiFfnkKFWap3jN4DjGmQWb1uX3Pu+BME3hz5DHSGzkvIE//oVxh1SamJwsmloCCC6YzjMLAFAc2eLoHiksWbR4tTuKBLLADgeHXpeNvJYLdPM67L/n3D/PEV4DMRHqp3ku9dz4MPbD+s/AOIE7iq7Quddk7OJ9gmWMBiWiN8PFXhZhV8UsCze296vm0z4wT5Gkbr+ZP6ujZH1lU7eIffPQs5lO8czIG+8S1IxTH10gJe3pUVvN82ozNFJQaiOnYuWcDlwVwANFCrmkLD5kdh5+RKeJ57iC0mgi461Xvov1bbr3Ytvkt5EzPtm8IJGOBCKDmiPm7o4QvwCD9HOXYFFb6DIkOQMSU3knhzPdwNQIy/kt4pss2K85kIp7xU561vuRHhFTPubeWT/a9jSCD4gYSC3vWSfvhZjqmKDop0/hfq9RCuo7d8ZYLd0+QoHRjGnmAb1o3629aJmeqkjfWrAkxFpXAVpjP9kZQtpnO78LGXIt22qwwlE8dOYB07QAuBOYLY5o8+dGqqKsuUD75YJcWKBasiHClMUf23/v4HjMxagrinfAvCoEHCbPx/tCOV0crFWBWKN3oO4PWSHHki/6bAvaw1Jxtqq+GQTiEwrX7F9jra39IK1v3CujtcsnU3AWGOc5FgWDatqCj3vUgAwLqrAcoG0wWrs1kGqaF6DNcrBfZp95JUhy3GmbRtwmwrNNE/MwgZfWG3QvEbbbUsow+0UlHWWKmXmGcfnOO+TN8k4KUDtzYOmca4y2rinlKXNtFFQDt3IXHomEt3FQVAEIYFFPHMd22il5NSZGZGpuVQAFBwv4pKWvMgQhc7mCsl4c0yUTNS8zYs0zYHx0Gqs14QqVhmn9z85fNcd9SgiXyruCfu0XQ1+XojUsWulSDTNny5HcqzsAMt2RWOXRGqLFcdard+VCxor1ASJMrEO19MMQSBmkPkNZZOk7RKflLL1iqJQfMlHUXy5a5cnNVsAhp8y3TxHBwuZxiDf6OF1tFxPdRscbF8SzNwndR/6UZQEiSnsM0eEVLyZgAwM7LgsGzKojnZBSMFGWjl4L0CAFOfwJotY0gKu8AdrsHePDrt1H1usWwELB50ww0br4R92eRGKP4G5ws9Ei24yyhxed10HqphPRP9+Y+OELWP5d5A6LPiiY6Xw2k0XsVF2Xt9TOXHeg22kpont6Ap5RrAZgGfTlwru/qcvulO9Anpzc7BQIVqppFcXmp7oZRf7aM4kTMHs3XqubXPJ0qjMzo1NirwnA8TpKhmPZZ/aPN3DchxkLiqldrgFUTGmlXWHV4gWFVz1dA6dyA9fGiGW8RqjCPFOxVcpI6lGmVR1FC8gkn3Ux2O1RMmbNwhBPz6SoKyxJAH3+x8ByZQV/BcgHlSQH0NlHVs0pC9/l6sF+WES5yZSSOswsoMYvcw52Vngn7dcchXg0icVVtyLzjPGq7Krntw9Rhglo1JfuKPp02uHvxOFK6z4Dy/xhT29hJnbcmavvFLMiXzPdn7I2q+eufJKMqGxPzN7UI4AEVsqsTg8Pss64Yq/empu/Z6AQxm+yKAq/L95LRPVs/EQdALdgBLZ2dwiqhmbv5MraXH4Kww2n1s0mbo+9pJ97oLdulkcS0GwpPyoV8kgR10a+iE2nysbLv/k3gLz64FCWLCewaBKQaEY6YF6722BF3jZRSegzPl8qyLZEFcQBXbDMer3VdYTmldbi224iCvurhmRwJ5LqkMjDns+BYSSVOlAQtcNaiw33KzkrK7JOdfrFTN33FmaNUZJWYbRscdjhZp5vrLwzhbRA10yt+VBHEFhjVt6lPbeGGVyejAcyVo6OWQDxpLGYgNqPAizvs5gCRpwIbkuo3F0oa4rf+j2Ge79ydMO+5d2Zqq7I1WPezb5grS++5ZglUPhGURl1V4NcI/CwBSUgSQGpvW4bBB66B9EM+H5Kw2SPJU+0fr8pU0p5ZDuT8TtZ6yQ+cwrzJmKap3dDfWqjYY8MXDadcGw6JmVOV+CkpGRSJXiZZGRTxj7/VFgGLjSXVWwP6a+un9rzGm+NwKmHMh0umMLFBI30DHueVC4dmTJAnCHllp1rfkY+5MJsipSQ25NWWdM/4ak5ptTiKtqgNGmBrpxikCZgULxAkCahOlLf5CmgCJVfeIAWgauyNvtmQrin3wUy4zFiT7N6UUdjJ9wl1Lgh3V1wl/FwXIvr/lZ4ACa8alW/5/aNw8Y96sbfzSqYmqaxPc+qOtcPptgsdzCLm9JOLsO7QlRL1UlWpW4dOF6LKTtkN//Ezs4MdhSaRPGbAwgElqh93pv1lVcc1Awae8AvaKl6KY3xh2YJvkCc0unHUmC9yq7WoJz/2f5c2QOyvudevbrVKaPTJYvmtV/+i1BV538rsPual3bKtEjTT14/YtmcJ255ilD5jdBH13a9yd0EVHVd7QBX2TrBRdrZDhfB6TWPX2fFxE0T9bEKqJLrsrYVGSx/xeBr5yrMxvsgnuRWFF6p8RPnPzqcEQK3h7ASdzlYHlJWPvkNylbQOrhT0Ai6HS218DMb922JtBNXmBb3b8/WKMW0TgZe4Pgfa8yzM7RySJCs1fyDtxdNG0AOZrZPMLBLvPGh+Po1Vkq5Xf+7KxiYE3DsRjfWxtPfXWH/sTWZmf/MTw3jSetgicFZYSU8CPID6cGBFkAZVdcpxAjYtszRZRYlcqrYkR7XHSQIaEAHYuNx62wJ8GNf80DWqVojuE5trFmlo9/MNPLA8iq0+cS23HogQvff7WJY/QOE22jiEeZNWv1qDVD6LUpbP/eFDLe9g4ilMJNjtZhlSK2muH+bq0WYAAhiDF4A6Z72RK8GntEZzpVQ2SIcoBthi7JaJk1Mr3B4YMg50t9P9i7A99NoFYTOAMIEt07JvzFDsqNzDlH8HP0FJvguZL296FRXadU65M1diIQz14oNO+mCRL9uxOhB9RlqL8xAm7J2gUTRzh3DN+DPSW/tvqLNm00V+qMKb09dm9ViL+Bh7DX9eJDTBlhtVPbs3zR+pOfr5c61AO0rGuTYMrMp2InO6nK9D1LBlBqhrIIKWPGFR1XBk1DIAj8THGWgS7qYLtgaKKvbVBiw7SBYe7+1LRXyTp/V9GWHd9YeEHcvyh6AFDj448B7UnMN3I6xBrsYmw39zOGiRYHUVwVJ/EOBCJOU2aOL7k9epFXsF85jii/PprDxWDdBvXT95C9PMo6MgHv/jInSiqsazcmHLzivpHTou/ZG3q3rn2TE9suTLogxa7x1+VNEthPcHmvsT5evlwIVHElc8rkMjx9OA0dMyazQ3R0zGsNEedfoCG/vmIxhcLNnvOuwsm27qMug9HF34hppZfsvDaJU4JQwA2SG/DWPX7X5p/6K+Zfqh8NpvfNjNN/rFwVWtHthXrCEC0rlL5xtBXaJkAwp4ydwDRhgx4YRV9rVauhxFjGPqd9FLVviJp3q+mtwg8x83WvlK71n5GC9wRG43bYfyHrTBcQ4jl1+NRY3a76MYr/rzEb8TAnIfg3svzcekwq40d39WKla1ueSqIk9zz8sNugIjq/8n/Vq64Vao/rUZrhDP7aaiR2R9dGB/YppEjl/WAtSQ/ynbv0+UTHjIvqskb9dckga6KOfXoe8blq6VS2aF31yty6O1JPV0Emyvy5ng1eCT4EisKbvEh4K0byK1S+DMOAcXNHnSBJhPKKYFgb2lzfDa0ddkUaw3eAGH90mfo/UDC+zSDtlSmK/NXavyQePQw9LJyp/tcB8SA69cKikgGTaN6EOnqy446u46MfzW6S+0e/XP135075OZYioRXBM4ErPGMJeahCO87z7cU9et2NpXCCTjiL7CzBBHb3TIQaMpN73mfZQMW7Ne4Cl4o26X9PFcsdU9CxMvDkaV8fL2pn50D3L1nKhRiJV0rSrtISVTQGG07RRR3rx9r9qH4lbxuNhLxCDZ56d626TZ75CbAE2I5Cd31v5ehiSWhXRgDNFiQNeNHXTFXWriVOizQ2nIzI3UtYVs9I8cQMWUpHatT2eKcHwws5O72Fk4kJCzKwfrnQ7vxQtPZjJoBu8wWM9P30uJ7j9MtlhJVLxu+VmGAmErCVNNxz+Z5/xInoVODEvnhw7tSw5wRatoLJNpdCgXtLmnRtUXSUoGAnIrp+t+ZNabsp+rdclPFZDA2tOgb0IwjsFBQ/dOBMOnNAJWKusfhs6nZKyoTMtoQvqA+cUauYJAaNUXDcn+Bunv1d93VcHub51A9dxhHRRolXrRcfr6on55GJNU+3Nds01FhtAemCA7ro6pMnPA9j0S3zp16xt++9sE+ljoO9DDM73J6X2Dycqu1owfxO1OISa8oYvKs8adLAA9aKSHObiKdVst7Ym+LJ5JKTpOj2n1aHzhnc4o5iwKKTSqS3lfdh5N6sGSwYT8BGg0bQjzUu6zN7LZOo3UZ32Y5QCuAO8v3Zl9Gm+B/FrPGnIyta+5Cgk9ysnOflCIjIyAhHopUQur6TW7T1jWKFSpOXfT4h0cYfLa/pwWGnu93FNQOh8N2m8i8iDUbZ6rKZaFVKeC2olIOUgDXX6hVcjkSLHaA+LBe96kwtl3YsiPw9VfT9ba89wTyDM05mVtMByKFvTxnGHUM39HxxyeHvjQ3ErkwCmoTe60C/0dQcam9erfHco6S8PxBbTfHVHthhwCmsWRfi9ldRfvx/3yJngTA4tz/bZCfTK62IhJB5Q2fLwLoB3Ss6PZTGl4R/VtRjfDH2B4FVm6qMYcXDdrcKQ63YuzcHgp+YBpFgOsySdcwSLQTaCF/gTK65KOyk3A93ku8zd/OnE2X2JA11jcBCrJ6UtXPqQYTC2bkc/HdWHT0br7OCq7rj45Tm/dKeqqgZJXCLMj4aFfArS8DPJ/lOegMdpvYWFA/BbYNkDzVMMyhPdUlWO/mUyZUD+JNL381oPhr9BK6RIfsvvhpLvnfn9pwbcQWZ10AkjrqnDPEZzN9w30xNfKVydQrSGO5Sj/LMIfF0YpauYdNIC8ONiVRSzcGCytKJlQNLbQVtPdM7zmyh8iCjtiX0GhHBuyyZp/eDWUlmh7vPU2xFVYLyJQRqTFpAXxdtHh8X+jkByOah3/aRoA0NHW8lmKEdZcGLmoSz6sWKreCmKD1HK+FaZwgLzwEEJn04Y/LRB1Azn7Vg2cDlYHAKeC4WU/VWWYwUQUhyF23dbDrWwGrTLjpxCpfw0cLEwnEb9QPzh5ci3D7ar2MxAiyDNnaGyu9ld7wSC1ILfreHtHeypBJ5R7bLjoiyav6bj+jlilVZ4VIhzFjqwCG3xWLAMa3jiTqtlSiBlK9BN6NHAvoTSCvWT3PHWpuynfZwSJp6S7mOeapLiOVm2r1I67dvsCpW4w55x7kyoerVi65fjPCYGVXa9OqD06XPgHlhpsfCRR28pPaS/MlXTSIuovmTmpUIyL/RbwckWmDKG4gmoQuMcaK+iQJ/0wHjuKVYwao/wC8RiOz44Lr5eVPDX7PVz4OpuWbqGeuIE0KyWak/GWsb+3o1BhlWuaeI2pp7jkdPUMojAGp0h+9gjbHhvwodo4ng/R4Xdo2rrS/aAXrpwQF0JbZtI51pm4O97rK9RF7sx2kKCrqQUJoqrEwLKMIYLGBOKY5jE4kJxpzMW5amq9N/zSJvAaGufhCDBGoJ+XRQuBn/i2Du/Nc4uAe6dFP/YIbfxRk+1Y+NU6eQaHxrrvSSeV3BlnvU9cgs2SuTJXoG3oGhoNujacRj3ziO89Z9X4jlzdPyL9VxXd41gkkKjlpXVZR2uNzveb0WTot16R35u88w99axIu2XPHtVHt1ZyiyoLPwffIuDKYAgRX4jMjJqYVoquq7GwYjmJ+jMAhuXOgdxWoh3k+6V9FrWWMMOFOcONEW5gx9q9puo7JYeGqOWtV46NwaxcqdAuZVl9FYS39ysRyIHlwGAEr7mUpq0EJdK8one6HG0RBnGFiHBl0taTMQFX+4MQZ1L+TSKXDf6ShUbwK0LS/fIQrWn533zA3FanMMslLT1oxoaXh6HZA18f1U2Ifk72sww1Ptytk/1vEOZV9esu8cLDmN9FKvI3mxM7mTsIh66DMvZ+HkNUzFXoN7jWHfDQuHXw87F+Me8U9bxWU2Rz53QcSbjTupVJYkil4qqb7pfgWXpI6JvZuWjzKnlMFwKh2zvkvA5coPZYqz79symRsaas8hp3qxDlYlhmiOq0LPXARSxE9Tsu/hEMEmnlVrFwzoM66Vciu2AoWgxKwuCyFqssgUzsos87i8K5YjCYMxyMEQJErCGvsTv6i7WAwjKGP/1SWYkaTktABJczpVmGeX8b+FPillnIYAWlT7mTyFYPFUv+SArvrL/QOiOypZJb+Kj3xkAbM3KuQK+IHBaX1jP0D99jd2U/vVYYBBxSPGMwM2IqSruLBldYjtneXHDG3RlKyr6la8v0Zj2+d5MvUB7DLWReik6qiF8CJNt93QIuhvmgQLqjwVIFEb2gNBKttDIUG4nCZdQuzIuCagFrlatuzewZivKYR1AHbjxuNZyS9Z3gqgI5ahLw8O64bbLi93LTvqNFtzeWpq1vnIGNae2kat3BBwOyvB6uFWR/kr3xo4OQPfxMGaLsrDnPEXCM/wRXSeFwMIHtulQtYJ1d/l1bLSr8MoM0t1qEhBQyOMMEWGNMC01n3ypd9r1vbRwg/s7Z2biVc5iJOosc7Vv8aiY/duiMOvYmaptisF88MnCNetFVpC9wjkOBIjYW3j97Cww5UQlc3M2asRcogU+uwVCO1f4MnLUFD7X4fHWNdSF/EWK80M9BySmQrPX1i/CJTllj4QVly9B5s94Z1MPdfNmBg/SOkZV7Bdp4l0WQmbZf/EJozIE4vIUFn1/oQ+KRxKTz/pSNaYztZ2eru3WUU7gi1/Q7cRdFEFWvUD+2eP/Q3o6lrF9DzjWl1fMI3imX1YRqIWvn0Wa90PQDcuqQa+G3202yAkVd3tmORbIkJ9MI0Uy3M0fGmRUPNneizUjosK/CC0u0wkX2BVD2sokwrz+Mi99YUUrnXrVwrfdE3ckD11qaAXZVT5sdGEkzOACDS1l63KUSzDhgWT2PmCYEZNZprJ4f3uZZCeclLosu6kcpnXC/mT7xYlI0SGd9tGRNLEF9+8/afcCd0kjrvcQQ0tbDme4FJGHLgQlPSv81sfRV/coz9hHvlj0DZrf4KijZ8MV7ZNYERcI9wLuiXVzPucKQeLaRAaUzqGgYryfALf5nVNfJoYLjiae/qJPjkk4fh3XCYsTW/wS5yP5QhqEMMW6SI2EoL/9CQXqpwXostH9jEFD4H4R+lnDyOL8G/tW/7y9IoSzhhAkWTJ5PG4WGmbs5p7Sf1zn4pMCL1kKJll8reKa0mVqF2J91DuCe55VnQW20HalkaSd65V64a1r+AW0peSfgvDL6yAMwIu0Lgwd1WuQTRAV5dwYKUTToOhsKpVEBs5YrcNulpzIa2agBQE/wpj/U9wKxInBf9aJYtchhth/7PQkN2XVaCb5qnTvpeE5aXl3XB6LVHqx1miDiTkxJZ+gAsuRWWcfXl9NJaB9PiT2FgFkVx7puDVMB10/OUECi8a6em1rX+/llk3kBLGyntqpUCLygdTJx/YCfirAdhW/sF+Jpz0TNOD0mrnoV1KWjXdFiRcP6kLkqbEMt/ZrdkPyl1EGyfGCNdPs/zUqHsgFPvBMNyDjqImgLtlxpodeO6HL8MOb6cO3pMgXktFBm1HPtJB+wd3dV/qmE587KMB/PE6+GsUY5W6FEsM7KA6eBkp+yt4J9tSKQoH0BsOQKKT8rE/xpoKoz2qJVyNy55YbzLwmOgpG81yNOBD17UTiSjSx8K8BX9egf8nE0Xk3Zk7trlFaYgFZJhJThPiJES3xAGdZ4iE0DV2SjguGsriDoFUVyYtK9doYV/C0oxU7AWmh9VPlR1xdt4uRHuti5nk3hQjaD6wCTFUQDFuWCd7nyib3yptCKN/MXrOoGuLD1atM0/8Xek7C3bSv5V7DqvtR+tRxeuppauz5bf7ET10qTvftRJGRxTZF6BBnH79cvBkOIBAHSkuN239UjEQHMgQEwAAaDwREEGX8tbuXjnX28LF+LQ7y5yu+oUdmrsBammKYZDTleDqn8KVG5JRkZJLjEXAu+GlCIVaFEU8A4DkpIUx4egK39BFB606vUh7KHh4c/vIZUHsUgw/+jZF3kUGiAkdgx9AnEACjo0WmcMgphDeIouD8KIxakSUKDfG+/wfTQzLQMFAFRHGR8A8wxBAK04N9aMFgZ3gDw52kaiwgcnAEgiUhaY0htWJZw4mvP2keZlOCVuGyOYvoqmbP1m1ffTEaj4RsppjysxDiS0tIF9Y4+cNluyCb04bQMfngVMRBXK+T7NU3qoCn/NsICB8z/TGUmO0E0OsoZL1VDiVBbstM7DkMiC3MkvQ0W3ttkOiBA+VSsBZYJ222RkFmQRetcwbViIu3XrEgw9yy+A6R5qPV2DOlSJ1QycSGCfxHevwK6TOOQZkeYxKnc08di3Sh5USTB3j6BiJGQEdOc85cuFsDVIg0Kxr+Ssih87uVZQfchdx4XWTNz4ceM7qv6AbgblxUwxMaeDJsByl0YtVWcbBnNpP9YxlUiwUo0CPbMWqt8ozRGb0N90qYs6mGUXOADBx1ETlOHhKpB3qXkPkkfEiJFyWS7V4OwCv85/ZHmPNHPchqS+eMPvrnvlHDqiJ3+UExRn/3wuuBS9acbkiTNSJj5d+QV/ytdr3kZ0Fz+hikCQW8gQhwlUULyZcQIvkdwaNKvtmWuq7Gs3d2cqK2wHbU46xUWx6BwlMCpHdOB7ZbAPV1lnot/3tS17Bs9PhB2OeTZ2/DsCJ5lVCC3ivoDuteqRymCQFfy/2/G4h89OBH0pF59lpTxklpUsW3ZUhlDJb3pqzmfOqTalZ2FXPuJf0c5WI5S2YWAUycwMM1ICs1fZidkRvNifTiPEnIeRnmaGRvkN53rfteJbcvZrGDzXxP6IIRzEiXbz2YICjOaDguSHHVOXhUGmMAqDJrOtc1KV9enlfZVR+pmPFcoJ3rkJV2pVkq0qV+7lOolh41/YMVaby3IfpXRO2ilYj09vv5A1G6J4yHbXQsb2rFDEwcZ9fOaLvYJhxMa9gDx6Y3bjRCK1fElhH6JGJDg2Cioc13JE58wWfGttbtjqQKxrU7t6tj6c0qKPq1KOuWwx8cv6rKXSnQMpLSRAcDVyvmk3tfPNsm4ZllnlBPoZbzWWULEEqOHOby6iZ6hL8vVXuuOq8qvgY+71K5qYUsMPHkPtLE/nT0y0Kiz3M8LxhuqAvPa4DwBeEtXaU7JGWX3fAgokG4bpIskKTzB1Iex2r86flcHdVogHQH4k5+FD35GyWWCb09FaVKHHrZADwX0OYRiI1fpncLroI3XgQA6LsJIA3LsNjZLmeYp79e0DjJugRgLgHc0f0izexj1MEDUdhi1cTgCWKFbsoTmZuBhG/AQOaV84Eb5oxl40gY8QdncgUBvMspoElAFctwGOa53ujO6oAlTIVt7K4r2F0YzchwEaZHkCrNOa9dxkGQxxx1IlCYqoNsGiL31k39PyXHsZysVzGoDs5CeICYXFfUatjFqO0hvdn38jpxk6QOjCKiqL8mufASoyvGkctJCIkobhd14FWm88INxqASKVB+LAgBdNyKZWvjNjs0lV3j35NpfV8orCin4nd/FFPJ4VufmlI+lNbk8O+/fkhlljFdLxQT5qm3CtCBSLCfOZoG0WSw6A7m9VaUNFH6ifr7y5dTdU9bM5tCcLoitioGprZzF4z9KVFD5JJFljJtbzTZyKT+0LOMDEpPJ6elkojRZtVXkDbZeP0J1uNCNS1hTwQ/0S65OsCC/C1HkgIhAoIyAUh7YDl985JTJWTrwk88+0xCeYjIGmOQVkQEmLS57BGk0QhBm6aqLbbVcB9c8ws77a4Vpx/LGRq4lvq2Z7lpyDEtWXmwcNsOg7jwucVyhkqoGVGmjed6YavIkx9h8yk1CsBREcnxbN1fWyioYDseRHI5GcY5fWpwdlaxJs7ExU6Pd1geqfBxQF1ENOc/eyL3388c9Z3xApInp1TdfnJE9fNPVAp6OvpL4B1gzS2PJt4wsomwlVk5smRZxSOaUFOvQz2l4UML4xoV8+TYnPAbKvn/9mpXLhT7uhg6hTHzI6bz2w88Rh3s89Nn6y7+IdN5Sl+8+nF/1Z8d9ritHg1exn9wV/h3lOTTpL7IePgqapJwIzTJOLklh20B5Ts4bjOZHvV/nHOq+BzuKdUx9RkmwpME9WdKMyr0FH7pzc08x7OmUV1SjReavKBR1rc6iUonDeEegpg3f1rcG1Xb0ixwTsviaI1raipGef6oo17ZJ2wGYsmhHSDmTuY55Jls7ZmSShjpAoOubl9sqMbeF2LCN82oRriLyJKIqadCCe9yGW19FKySGOolRCwm7VfLq+lMlMG7D1iZ6da2H2ABSCQsNj1ASWOiVHevIEl+cUIBfWrfVXpqSpibTDtaDbHwGSVRiQlZFnEdrWOrIX732oVHaUREBVlxSq5l9PNNJwc8FzR6btoxKJz6wlZ+IMl3rw9OY+pkZCSrWn/Y8+4B8++1+r36gYOuHCDoWeaqArGChyhYlKzvP6ibKgon6yqHc7AmuoSfUYrOPxkKcS7u5RyYfaMaL+TF2EkkTSMnOVUV01ywazYlLHev1iYgt04cL6udFRhke0NTqBidxklrt6Q3EBs+j6SuGzvfPKk1pWMqKd4CZH6/SBM1nwkhGwD52S8MoK5+cXqdZDqcFTXktsBIkYoRLAtorrM5G3ekBgfriLELylNBEjLgoP+xYd3jeS4v6Jn2g2bGoyV+MtKVhR64eQIRJmpM18EpDzn9TeBFjBSU+liDlWxCqqQ4V2k5aTPJbP7NQn9yDz4YVXVkQac8NaK8Cn56etqyc37QdR0qdwGgSwqC8hNS39JFhqH952phBBz1KFwv89tdRzpH9mYokpLZ5gUT6DUilatWXiaLH4HEkJyyonfAvOAKsOrScKuUCUNOWzzE2YjcM/FDdOIg+S7DTMjzi7ejR6uqiPANtNZoGTkmFb/hviXh8AXYqfpaTDHtlCOaEFcy+JF1TfDGit3vtVBuCoPAkr8Cf+xsJFet46q9BafVkzdFKgpb91ww2bOmC5OVMQAIsfUAelhT2UqUJPV9unv3nxfETS5J5sVjQjDxEcQw7ADhjCWEA+8LWXmtJSaNkCPloEZCiiNo7IEjPk5P2xgKO5AL8lnOcHElScR/15K9e027jDaeVRZ2GqvZWVYPyqLRlaWc7vOw6o4AU+OAo+Nfvrl2gSqPd+1i0ICi0Q550moaUHB0Rbm0n+CAJV09gpZUq6o2pS2Id1LXV7XdXF42++LD0c9GnShycHvYn0IdqB0KI00w5APTGfym164lVBdm7sC1yRM5np9/95/vr/ebYu7BhgEAZTpsRypfEQueIWpjqe/FFre/kL6a+519ymoQ0JMcsiKJmReWQ36KKH3g6ryQOxe6x/9vVmmzbifO4f6pUYsalwLHtgXn/L4/XfzPy6nh/cczyEWNmdfQXx+oJV8ri3X4jw+P6eB1Yv80Mf+OznJpmtGqrymh+Fvl8u3/NK77nHnwrYL49cA+AW/Gx38OpTe5Btf2lt83+UhYf2LDV1A5y5QZTQT2Arcg/tplvP153bi0Hz9xaDv6xtfw73lpW3ae5kavaLJvLCfs2zf2ckiveZDWPkEyk7vVtPjGnsZ9lcmbuQHEL1HUcAkVWQ1Htf1SPcXUFAc5xhAUZpQlZpSF91rYMteUFR1WxxRUTkoDkrbZpwy42wZkXGJQ7Jz+AM3JOLn4sV7Z3MOR90ZCQAvtNBuNdnpl8Rc16F4L8cRz3TBWEzK1qODLVEBzpiF+2AVcCcgO42Tyjin82+6qrnmQd0i7hyb+ddvuIT5rqOU5ZCfCYaDBMWFnsOZwrWrGc5CTZne0T479c+4SpQ5wu/eSOii6AGpSJca/2ipUfLKPk+cP15WxCqG2Uo/9JpxpQ5q/m/KietarnvahelWPWbtOFbXXbLsqOJU0Xu4tyG2vHYBtrB5Qb6TYP9DnRHVo1Z6GN7KFKqK0QWQ/n8zzzE0424+DyUJQ3HgnTnLOEz9o6g8GBxf89dPZ1Dxndv6X5iqomMaF/hczCzc9K0iKpWPM8/NHIWaWfqcjDn2XuVPH2kNWV/h3exr/Ds+T6ob9i/TwtgmXfD+Q7tcrb1bBm+H1rouTyuQwO08PqoyzQI6v0z/107f8Jhmqvclh5mfUN9Lexvsqpj2a1G4uRDNYU+N6cPSKCujj5EXStNGc3XefRZuawpp+iRE2yIem7s/Shke6I9F/WaqorUq/URE8kXquJg+lsGS3y7wxZw+mFraaMpheOmjKeXrhqymR64TVYt6YXg0aSPb0YNpKc6cWokeROL8aNJG96MWkkDTifViMNeLcbaSOe5lTHuUIXysHx6cw4gSfhc7SdsoDAjTirbErNm2aDienoN8/i/nGc989o/FXrAk7+9PgMqKv9dGjVWBjayILwPuGue9MT8EshM7HWUtiu4J06vNuA/xjRB7HoVIG7tvfmKy0VvcqJYmmj57LuaTFsc6uwW302dCdhFeOwDeOoDaPqs6xjHLVhHLfyqHoUq+jGbegmLeg012YF3aQFnWO1oVOdgaWfR93BQ3XKGJjcQDeEAA1iRAcgXfni2ucBjxPnaaz4wk1ncFREw4r7DjdB0UuR795mwfsQ5cEStucM6wVPwhMqCpHPHKAHXMIPBDxBjKqTISDGDHGVqZuBkyKKQ2rgAF05jbQR5kni9v5Tl6IkUXQ1yZdUVhupat6TCX2obrh2YAffrxp6+CS+xL3I0pU4ldPQZ0XSjV7dqql7Q4k+T83IGS+F2HHx0IH/lopzSYkf7u9xjHX5+ElI7ihsjfzwEUhy1kmEdcNygKDiAUZbjtSxcbqqB4/sR0lBkT5eO65oVzS46spgLNMvNChKW16U1KkWybY0T3hN7iXBG79gWN0KdbqoeKiRmAPctkRmOV1v9sICM+WIOFJIbyEAeSp+o5URweY4MMy6ypG6CocPKCvH5DZmSWuhpVsJnQFfCUtnBs+Cj9ouTccgk4yWDjHAF3UHrR5SiZIlzaJc0nGkP6yK23xtVXcH7ikOYb0LJCiIiw2t9PuQA4UrWGQqEFvsUBpYJcesk1l3xCtpZs1whVGvVa+reXXyaLdVGkTHuS07IAq4r3fUk6LAb1QYB+K63r6mWBblt7L96qgF6tZah8SOCDsrP6N+VRC+2t0TR+DCnVFhBeAVyaPAj7V+Jx1uFv4qih+/PwZPsoOfaPyZQvkD5iesz2gWLQhb0zgWK7ijHq4iOfOSJ6yBaVTNsSKligxJW42CskB3nbarUjev1QmP4Oyjn0Ww4GTVcIdZVKYqnUlhxrEsAzfdPQn7kbEZCkazPm4+vgdW3/A1zPw+yvt6xv0yX8WGdNjrGlKZlqiOIWyfhLNLDe2CGa1NMtaF8P9dPZx1YXtx1FMavrlmbfcxx0uM6tp3ZLWtfZ1uj2/1+p2K027D6bbhVO7kKbgcBVeHmgnFUavxUpcx6oLxupaIjzAcDg36g1QKhFQaxHS5S48zYQ8tedML1bXpQpc+JnW+Lct1OXfl18XFhU6fwP8WsRCrkKFr2FDITmxXx2TVtZdOw2s1Eyjn2/v6JRek7ul7IfNxJNZajrOhLKYXVvgF9alY7cYAqHQKW4HDybMtvAquViTvA5V3/Sq6SsjRCSlopZu3ettpqKyPQgdGfuKvqN5q9bgfmwUMnmHhFQZsEHk6PP2lxKRx3M3A2mfsIc3C0kIiPw1xd76exZsS+R+fyaPzO/B4CmvDbEUkr6YOMBq2ci2UuGQbvLLErddutjTj6FUa+LGauLkg07SOHiePlclPCHlDtcn69MfMT8DOXxVhZW4Ri3qNpGKCCD198bsPIheqq3ajqnY7Cjt+NaT19cM3RrX8sIxyqt+x0mZeXC8XceeFRqsccH+8jpJoVazImARLP/MDEY/oIcqXpFivaXZAOC2aBT6jB8TqTw6ILyyg4lTtn/71m3/+w/+88lfrN3/c2/+u3z703R11jLogCd01uANtklb+l5gmd/zooudZk6Hsw53rNWwRdWmg8+m9hIrydlZPMhqQOrAusogmYfxI3u2spLzcv2PdLCg7wOvHH3lXWyNd8fM5RJcpy1+o7j8hKp2Dbg3iySubT7KAG9kWHjT9chbdUZaT1+RdmlA1064yP1zNmsrmLc3mNEuZEdStshFYUUvHRb7k6dIcbRxcXihob9M4m3kTafvhKkq+vqGeOYl6ckZ62flJstg1if6FqEXvnjf9NpK6l13kawShDPZAhtkLU4iqcRiIG7CTiSPtcJcLjEK0iGgcEvEjjmmIxg7sP5tbFQXDSxUZ5eetDJ3lZa/m6fdwwz1hOfVDEA1oCL5wzvLDHrbNezEe/Jh8EEVvEcsuLXUc59ADc0o26meRZg0eJHtPbZAGz9X/ihYa4JH5DFO6VzLqmK97ljS5VKIIVHFWP/lZArN+uRGcpSvp/YJcMLLyH0lGWRFz7hIS+rlP4pQx0WUhrwqvBK0nvZAOKh/5NENHn6zmIsooLocO24U5fInJdAhmCprkGOGiS5T1ZcGwsmAGCH8qDZems9OkWM1pxt4n8aP0IkCRl8TJaRruOhUNz3ATW801+FeJsszl/Oy20r3JIi5D3mgIr2aLw8s0CfUCyNKHZZSFki8EMRoyRDmJQfZQVSIllqcG1OglBlRg2ztJyZ7eXp2PD8gFrBpZrmY6kGkPD8gtBQdbcUekOS3fHn/i4DOu49UcD3IA9iPNHjFfEY7wCyTnSZDCQryrw6AVTTFt1OqmbQnQ7FKrsWKL023o5s2DvBOuHs2LxhqB55rwFZ3O+C+CnlAf0jSGJuoGQ3sIwomNGLkWHqSnIn0LeD9E4LqLQzdYHK2i/ALiUtz6OZ1ewScR3wQSuoGTVPCHXsHTszT5Nif4gYyr1wGm7/Mlzaqje1NXH7F0kd9/XrGykNmQ58mW1vZ+1cmMGm10xtFCSApwxOeWP0/pL9UwIhYRf/YUBTSaRxDI6U+FHz+5IK42TBxPGGVcM+ZxrzGsBtZ0YP1BTfOsqVelIXVw6pO/enJMWVO3CetYU0dJQ88gu5k2mA6apab2H+TIM+kPGFo/Y73V9tpZeizgWJK7Z0uvWyq25Xi8vs0KjyfD6Xh02Kz1aDiejpqJQ94CQ0crO7AdvbHcsTd1dbzOYDh1NBE746kNeJ+S8wwltJ0BuunQIvx+lAmhs4mUCEDcUqoGuXC229oIrs2V6d7NGFlSWXCfv5/p5EuxrXXId9I93bbpxMD2pvX7PzdplsupGfMHHbDDKdwTUu9VVTq0HW40FYHuKroA1F58rEXSrGioBm1reynAyUBKoMmPQttCQpPNYutdmostCWcwFNS6IR1ro58kFFngNSrh+rYNClsqVmfiTYYjZzKYHscP/iNTGDFW2+6utiw9Gnd0IPsljPSB42y/VHedXmPz+ilaRHLjKrek1/4XsR93ndqGvIesdBe5yVLw/dndnhU47l9OLWazy7PdNiCB43WzL0+qDPw2d6VZlKIJajcGBs9noOl3/Onm2CE3s7dqugfpkKxbzmgCh5FQdleuh1/PNYyyyYbH09Prmz5/cK2WO7Y2e40Pby9v+renXj3Xrly5z2/qGc5mSQTWRLXWfNuRPYqiO3bzkTpp7bDLdrfp9FeiNJnT/IHShIyF3WHo6iNg+/LPPBcLnPFfXVW7j9dMGtx93hogtF3et6Jw+hH+FLvjDOaaLgAWZP4KPLdn5Q8FzsRc9wHLVuNzsqMtgO/VGXzbaoazyXCa23+Z4Ta1jczw1JFXRa//jAV2VDmutWOVUMgMjbBwpXguguCwYtW0ZVhKWaWcUgUsVWYKBE/2s8E2/Qw7yoCBhLiAYCbGngS/tHM74gcBXedHPRBmz0x2+LU9KLSHwEG7yIfqCRG8AZCUQJi2ty8ngdZctMMc9Yz59VsahgLa/Cv91QiEIjG2iD28ownNokC0+lPdze6u+4a6EgrK6QZSLxyqbH8Eplr4DgqWpyvBdldn67YjKoy6W3Ww/2Vw/f4wYJ9b+tl4e4qeTgdHnzxpAecAQdFMqnvXhtFtMeqQ/xl9sGF1k9Hqfqsay0FsOnIOJS+7kigpXeAPcR7RtAdgDg/InFeJwQkCowmL4H4knhfAMcEc0ARxEdLwUH9cLXAHbVLwV7lgtF0CzjN3bI4lcDiWX53UyhgVyF032HyjUS/5Gg0OSdZg3t4KNqjsydenO8KGcqpBuq+IjqJlAnXsZ0rKRtJ2ajUWsJc3YvrC6xV4xIQl48r5cZ5tgdjeGrGtIJbvirlb0HC2puEoNCQd/dplZXXpXDm6Q3X5p1Bu14yuxD69vCF+GMKp09OLAyEOTyE/+krys2Ke0Jzwmt/vtmR2x19J+UcOw+0XO1KdfCVVeUx29m62G2XP+krK1Xl0RXsr26jjvshZmWdv6/vClqm4snaWMF47PCBVt96KRlXT7U36ATn7iWsvlFZzjX2eIKyynjl75OM6CkBAEACHJvmObeR0VxGp/CIYElNjxtkhe6soKXLK9nck5m5D7MOHK7LHxOGrSqDbe+GMLngzVzxGjNieZ5GS1QMiCsQ5Afw8c2JZBKl0Hbw73sv0JG+XnnQcfhbeC+1dySndG4p183wH04PHIKZq1rjMgqWydlB0SxnN1dTJZAK7MTJP05xgDlP6nozJdIqxlbY8okVxDL7qpHbk7HZSK1vU8cKTKGXi/p15L46lNoWebpaTy/czIsoqywyFnnA7oydcjp1ElZJPUz6H0PoBJQhDAKiDBdC7ndRloS2rLMqa6V0AWzflu8fiDgfromwo/jQPAoisSyhCBZiZnas0uBfweMGxi5VG0afZAIDSQ2guQNpZECNsKxaw6E4sZADxJAuzmNL1Vixg0Z1YYADxJAtv6eM89bOwm35Vbkvi92VxM2E4iZRbtZNHMFh2kddLbzkkNpbQuYAy83JLF7HPljDcupioim1BvSxMgAsz1Zm/oHB3poukLPM0PSgpwqC1ihuCXHXKGIs8TYoXJFDSTAkPMd/zieDK7+zSSsEnqXYfjkriqHfPM797LqkVe5pwzfaAk6vU7gJe8qF4MoLeN3nUbLUqGb7sqsSamny6UVefnr0++3iG01RjKYMFbv7t3JDrlrk/gTIQL8LpZTwsw7P9uyRleRRgIWWxgnJKC15wVymNfg8pXcItQt2wjsmaWR2TXXOyZ6j5NQ0jn4j87TbNURj+yrsvDD5AcEY/RwFV5TJ+Ybkgp3lK8NG3poRkrniKTa2iUCYiH/nctYUnL10TGVQGtxwyF2gNKseGn4uIqnl2/UBlnjKq5DqynZUIQookEA4eh9iplW9n5zDlYcFOUUhVp579oarLGIWU5lm+GR+aNeuajDOx9cmcM9jy6EJ53h6sVEZhqBFcvcYNwIEP94V/7byOY487vBj8mGblTT/cSUOP0SJjbGgfAznS4TvVwbe5BU3VYcBIWbSlDrbVUYct3b8PvIGMPd1RZ7yXLTjae6R+1l+lSb7sh/7j/m8qgzxa/R4yGIy3loHgaG+ZFtn3K96ZGQ1+UwlE0lzyl9IRKhsTb3zWB0GwPpfEy0hBHbByFlBFEqaBdvyy+wzwFrZDAqFm7OMkRWQegu6MkKm+g9apHBY5PMTCu8oWBlH9Tnkjfo2q6oKBa4qX5MNrwa2CHFvqtXglnjhq6yBOGZXBuiQpz0Dq/dtOMka09r6pOwwaFRsYqGFDKG09bh6/Gkk6XVFoyiie1zQpMEybkqJ7s0twDHIxneUZPOu4ztL8/9j78u62cV3x//0pXN1zUnHEOJLtbJKZ/NI2M+2707SvzdyZc3Jz5miL41tvtZ2mmdTf/QeAIk1KspPM8va7NBYJgCAIAiBIURNkuUVXXc1/hvflvn1zN9SKq5sxHf10E3ZfTEJfCIGbly3gY0HB37srN+E+W7KoQiofZ/XNqLr6RraDZ0UjA90APUrjsZ0UP7BNhd38d4NJmG83I/xyQz9fnA5z/Pni7k0GEMsV/EdEWMzuFBISaJEwl2m8SK/dlN0vDfhT4CKVGASq78h9lhYIsY3wDwMBG2sVYyTSY8cJHRwppx7zhDCpGRDBOJ+9Pn/7oydSA+R1HQhANDQIqeqLyVd5j3dSwF7RE4u+xJDSFVREqhutfgrHMZ+MVj/kcQbvgswW2LiStpu08EQUvoR1sgCh9XoHzLPLvIDVEPllPRXEqKFTovJmbDHSDPb29/fbwd53JSyvjniwVy1v1zLfKTOP7W4UQLv7J7TZKPf1l4c7i5j1TWDTT5UxjdL5BKauMbeKiYx32r0s0Nzk6OhgCy9aTvDfWgq/PESC8ImQTQI6/kgW2l1FI9izqPGkSvPpTNmUsTWb6FtwoOeTk9ksvjPIJltbY7gi/JmAH84k+Rd4ZOeZQAsIB0OS44vkMkyMof44HQ4WFRqtORa7DneM9l4OwYAYUP/28d1ZaxrPwJvQzzl1aHCFlAy003kaT/PXi9EQcQdXriMBHaG5YrrdWU6vJrs7Wzt97tBL0w5blR5RaX9hFfaocGgXOlT4+WZiFz+XZKeTORRHyEwymQzzeGxw8+2bIyO/Og5X/SKhFcb+LeTZcLJwsKtSeNBYzH2uH1IesAv/0pxl72hwUC9QHKdf5WxDOxmDRUTmfBpF9xmwhGMqRMIKRhz3DAoYQSX0SjVGOMApccVgW8VFQhlUAfOxJxzIvDV3jhyvH0/RQjlvcHH/N8fLPCdsOl6VmYvskuOUjfIh5P3K7Uh4amhtI0i7KR5BHFAtLYkKaccbpNX+a8X1z9k/x9SP9mOk1X66uKqNrJNW+/Hi0tICmjjbVMdSkBCPhR/Fve53SRR7HkuhfXn5sqPwUwu//QgCzTpcm39tMGoV3l8/IdobMNsSVWNe51/bMzArJQvzzJjTvhAqjFNK4USqa1EiXMfxIAQZUXi002rt9Fmkeh9HMSDP8R50l0XY8zrj7fhfHS9mNRJBd9cGHlc9chMP3rNjrYWSUgAP85sE+7DdxvKf8GKJlzEYV6Of2EdFaDUsxKccHNVFNUKqZdsTx6yOy3ycQvWvN4urA0P0N+OcdM2V1T99eIO3SYAnwJiEmcOX5VV8LK2gSYK2l8Bzhe1kOElsrZOeSQ8cr+vlRXwp7O7p3o3x+mQkeoG/foJMwYGkmLJLU6zxOJuMDKbfxovrFizggA/6WQCw78yAfjGLsxyPUFGwW3Vh/3Q//JOhv6HdEIeZNedviyoiApXLBnb45SzHdwnwi9t4JEGotqRv4RnP2b1uf+yy+1FrDpuHOd2FnYt2pJ7fo1uWhb4uPEnTG/q+4WSGOq+KX+fAwkygydRlr2A4EAZHYoAGa9Sa5mNcgp/8K/76MgZjCqBQUlzR4VbqLwaX4O94bXlnTXnXHJRPbkyTWQUx2hnHLVQWBlWBEJ/ZbWt6M792i1Jtfvsg7jg7mb8YjOPZnZxl7LN45vO6GnelKZLQJauSItV5QZ+RVZQqFRYfNEcTlGMsbAXUYI2Vrset5G6Ry5dAeAbjlvXSKAMNT+rtTQxeATQdF5nEqWrbVOyKDLUQ2SbmWPRH2YpFIrkyzbHRupwu1EyNenoijiLi3BeiqtPsPhY1WHr1To4V/y9jPP8oZnQLdUnla2mQESaV8HnMVCC8IobTBHmKR4vi/Y+VV7fJM8W7LgHJrHiEHVrYnA3lYW33A2ueyE9xvY3HcZ+iyuZ5nl6PJ5CzuWs6bGur4ZrNVmkbvHf3GKud95u7HHtdVmdDgophUM+/FKK8fzWY5dSBsMSXf6mECJ1YRmuF9UxkELzFm0QWOoyXGr6ogpdGcDH5cXKrXOnlRqnFXht8EhqWeq1LxHaAOvBlMsgwMVXipVXcmwODA2sIyrM5zzYA2ax9+ybJVjAuHPrqEBiXbfLBOJUuQRuc9PoGktaZIx6FYbeG5nNte8UXtLell3Uusee00MNExMPQKKI6PZMAvaSYjPGD8y/5PTqcMFtZ4ygR/pLMcfqw1VAWIy2YrHZ8Lbcp48EeoQ/mZ/EZMIL++TZPJNrWlvHQkllYFlEry80CS722B/FiwVHjIbkBOEeU3yU91ZYlQ0/E0piDJCNf0CorLasNj4WJww3JpS1tHS6CS8aVfIBMIvb8NuNdPyCynSPPAyMHb+zS1aL57HiEkd0QJZHDVIxHc2iFCNM9e0D7wrm9vd2OVy/55qCCIfBXCTFUBM+tFoQPz9L2EiCWbm9DWX+yOKOc93weQ1NuzJ35TZrCo8Pv5/TxkTBZ8hTpwY2gYNhGCI9EYH7xulCM18RcbGlkYqfosMmyDMYoReIGxDRqLYbzLwFdad0Ito3H1UipcA+J6kktkW2l01zI9knhexVpqZj7Pl4vyUjGEPHF7mWkhYBAp1/PIBb4t49tN8YoML4I8J82/tPBf7qXfHs7ga4jgZG4f7+iH15c8tJwhD6HF+HLhQH/Ph4MT4bD09lsMgOYkqKE2DsOWe80L4YaUIyBBwwpBgloCDH0l9AdvEBOJPADb6gTKfzASxNFjCW4J5JFNAwij8zRwXA7pUaFuXQwlnodvdTDp30WWYONBEwvj7zZshV6yQUqiQuDjE95n91XtBjGtCI20AdSL0PgxUAflwZQEifSIUzO7NhGuhlLHbjQYDDrbBCMy636ZVSZKUL3hcK9Z26lF0eirhvfvq3pBlM5IbtSKWylk2vUk1VZdUFdy/iiOhTUD/Kqpnqyij2hYlcZEht6yZ0c/zqcVJNk2CDql8WyRKV8YKcL4zFWtWGex2unpMHpMqrMbHGxZibX9nTdnNdq2cE2aoFEvRL7R6IPY1sW37FbZ6PhfH8ZcGurarhRhlqgSuC+KDfR9Q8qw3ChmbusN/NhdeWr9V53C3CxOdNOw2z6Cv2gUPD1YjH9SFUuC9slQAj07JV2TKJHuZrFJXFixJYcJ6Gzc4vJBCdKRXqchs77dx/PZdorE6kHEbmXwL+vz8/f7wStgAIg5T/Kfpd8PqSSfh1lu676K22i54SOV0HAxfFwRHXSYrI1cGQtizrTXCtwVV+H+3kypRrFUEpPCWM884SDV39MZoPfYpRM2EQCM5BZPiuCh3t1DW4oO8KJ5XBNV6QvCdd0gMO9vGHCgaGwlk2uXugMUz5Ow1JXPZ5q6vRjybyGikhjgZ3BS5CpD+SZqJ/SN3kE97IIw+VKHQHjwiR6ej0MZejtqzpWjhnUL0pw3BGQED/nyUdZ+u796RmqWCWpIRuU6QOZK1BlkedlDBPZIjZzdRmLcL9at4cqDfm+RGZZit3qKe5WLyMz8DMVHkOU2HKpxv7VKoUVsxiSTAL/aQHgyF0lzqGb2U2au+YkUhnWRBETOBIXKTiMS5GCxyhtNjlGHp7fL3GCKmWrMizjpotLk7tEGo4BixqSkCMRcZJWGDR3ZhMPOuql3nPhPPeAw0vvufN8iRwZQgmQoTqbY3rgaiSitMTOAtDAa3VwbwcQ49y2hhN5xY48dJFOhlpCzjU0B0zezh0wAjs7jldGIZWu0IEACmentcxaC2QeEHF2HIYtwYILP+1714rn11+PpyLYoqhuNYm2KLhbzaQtjOjwEf7KJwrrqEgHeZ7rfOcIER87W3PK4mBUKQInBJFD3Q0wcTUY55mRb8tKsFsUS8J8RJxVDN+ajCfgTkRjbBaNpCcTn8xCCubFdEnWvE8jAh/uyj/IxRjkJwN+ixpWl+487gOB4STOLKXEBOIinvWBvLwgmOFi71bFh0gyfCB5eqsCrUvwUGFNfhS8iGo7Hz+9+bqMq24Tj+dUvH8lzqD4rCZyYLVhWwYTXQYQdgXPIFxcpYjbPqCmLRlbGEiqyASn2pgDiixdRvWxoWj89awTzIgT1L1clIb3aBsIMowL9pdLrn6ueKZDdUj132/y2cCStNzCifxeXYQeKfNXH6Enmm3oNbWlnJORSnFrcincKBNEoLQyZktloUdLLrdaTkYLdePgin1t+u+XUdoaiSRKWvKb3yKFgoIa/DLagic0KOo3GhMCwWmuCjEGUr/RCkDAIJwd48ZDTAkP0tyJGqm1okxV0nCum1YmViT6J1IdLWJ7k4fK5hgj4oo0kM+f8nwaDyGYxpO6mj1oH8kXV2OrUiib2dElxbQ5uy96HKvuJqq7merrtIbz/+4epK08SLxyHon2G3nhGrInuIbpGtfQyBDJdkKpmfhJS04jBff+biwlWrj5HMei4kckYGFsTACaSTYdLMkiLDK0g6KJ2ubMaOJmNoR5BAuH4keLboxfzOIUIs7is3ItvDHN+XD66s2H7Zfvzs5OX547rNJcm0WBECutB3SEwFgxbakJRJr6cTJkUftxsH//MmJR53Gwb3CPQvrauOxrM/S1OfrauM7XxhVfCwbGFB5GXG5S9n0NX4hcOT9sIow3+97c8r1xre+Nte99KjtVbmpccW66YkvL7NbMMNPzorpd3sTc5c1YLoPjpLTLWycSBuz5/AFhJZVd3qtqfxSlakeT8i7vJzS2lQWRAlO7qTORmLupUzCI094smnoe+1S/m5pcYMqnURmfT8Wmb7lCNbmMyjWWe0bRbW3huWfbQj+8W8yz6m4xdCQz+mWcR5lG8fqd4uwifvxOMdS61rz+9s2aurCZEIhybyQuCAlCjdkEU/cko5hVfKUnYmL7qTbrw+nLf7iOVyanV94MF+L62E4ZDNQv6Ik1yBGuaxt+NKfvfVdwzVW0z2BSxSDDYD8EQXWP1pBUwnwEyUCR9JFi0HmIZCI2UmvTNsMaGr2g4yWKkLbAdSoTHHLf/i9DDUJ8uZUWZfJ9xRAjl8nUZUtZTF1pU18OH+oKqnou9CHoMjTf3diXQy83CU03y4XxzYLrMt7og2sx5lROc6ovDeIm3EMvBulkFfpGMHTIkV2QIPyJ5HGLhPk90de7ol12/LgR6TJvdcyZIkE9C3S4qwoOmFdHy8JinnyshYQG60mUm2KrxmvhtRaFVq87j+115wm93n9Krxt/ebcrnQ4e2+lgU6cx8ldP7T86zhY5VlBnenJr592ho79d+PfbN3BqUzx7Mz12q0Hj+t512rJ3Zt+s1RNMOs98vyA47ZYKfN8u8H8HQkO1jk+Mt5/Qg71u2TTyUnTrltZjAS9H2h3GSuIlz497132RmdYlJ7dv2JLcCzj83+sznovcc/tewPjnClK/FulzgfRZIvnwf1rC39Jq5ANtop7BAgXHifGXGG115UGEaguf61sgNF/+px3CApJS6J/xX7CSla2NdLW1MaV/U2MTo0//vvQUMG2sQImedRhYCntqTNWP/loL0bjVFtLLtNlQPc098VkVBsjyxkmamIqc/9GJONVA09r6vq7v/ykG6lbD3dbWgwfRY+nUQmSaQqYEmNXHoZ815Ge2Cj8yK3TodDB0aK8Pg9SZpnYn2mxmDh82M2uNP2/vF9iVBbFbl9mZ5wv1MrKruIKUF77Ye4JQvH3aAVJlqxBVrUJkyKIbUEjoPyiLwLfQ2o9CSwDNczcHNoxehaKXyTYCHiDg5nAtKZotrxE2BE0BTi5auFjdIw05eFAoBybS3u5jkBo1AzSSmTkw0ge9NdhbW0/o1AH1aA2lcmxtroN+Gn8aw3188hwr3Tecytv0cOWzedHiOU2ogybE2hUUi7QzkkH1UkapsR42G21TsBvjUSs9O6318FOXfR9Pz165jhevWefFTJ8VxhW2ylqnj9lVVbmCRDTWba/yx26tpvXbqiSFigxsbqvLaZCEHVBtjha7/hPjKd09L2ahJh3jUYc627Xivcr6ZsY6DzOGbdpxxy/CiZMUZoAftDvd3b39g0OnDFPZAVFJEzVg6tx8mTYNGwzZ2vdOGhUMddop0m8mRtW87R/Kxv747uPpK2c1AZdlt1DOKBVbI88EpJbUg4g5GiELT9UxrsbN3npgrFziplzhLAt+zK6V3ZVfcWnbQe3uSFlv3LR8VNLa5GEKoepqEXeYxzPD3VZgGF+3+4K9quSx68O7Pd6QE+ugw/cP+f4eh4A4qma212EHhLy/yw/2+P4+P0Dkaqp7HbYvsTt874DvHRK2yrFZW2p48RvSMUdJ/WwmtIt0x0/YfZGISmqTWX5YVMdFQbDnh/oVjKwl79hSSb6MLFpxk+spHoySx23cgLd5zHcPYMZzeX7fX2FjlkeTsAox9buB5h7Q7PqSpunRg/09k8c0Awn+XhYJ2ebQKBONJ3OoHLi69mK5Ad0HdMQ2O3cQngjXHq2AbXXqrxqou2gAA0lhlXSZOlGe4KcHQRtBO05QP6yWA79gullqnZfa5KX2eKk1/thBoGbbNJh7HSFKzdAx2lJT7P5E4An5v0Jrke4JfoYxavzJypaIXUl5s45g/Hg+wTNoMD6gePUrlISfINm7rUDHaxv42AU+OnslHWvvh5u10oLukGxBxAK9ji3jb99APlT+hwT0xDnS2Q3R7b8W5uUl++xhrSCODdPUwsvBH2TW5w0lxseYImxB/X5sAyb9pymJvkvjgK1NQwZgqbq8jYtbpTqWOPdD1P2/Snr2UJN71yTIJrkWwaOjQ7YdsKqU/zJWaKQUJ/RQMNIIAmTl0QNyYg1Isn5A5KQ5Pghrx6Prgw9YXYbThkpb06sWXC//5d+9cDO65PwHuWv5PXBX6NNu0P4usUju7Ycl3BNRdk7t6HXFdu+jy3kNQi1VHbKjo73amVo7eFVb1i4GTyvGmsEJoPnjp9jVAP5HoVujDb9UgleNT1h05+RpNA8KmgZJ6EBRsK/a2G3z4LBo54+S96vkdSeskd33yYi+Eu1n5RHlZ5bCtBmvmFoZP73WU26zbdozVoLuATFDg3gijFLUmDMUsSduqYEAnr99ewXL5KMzBqUvsbCtCtuycIiFHVXYkYXXhL6n8fdk8RuC9TWwL4u/EN1dAG8UpHcLhBdUs6cZgZ+y4geT9RO9qj6J1O8jUhZxYp2Keg0jUC+pE9OfK+3e75LjrQwPdqhU2IXI6KGZc8CVmVmiuVcO3TbIx4loh8qnVw0kGJOnxSoQ9NSZOJi3FrvuQcDNXRlv/UPtsqkDiy2fy6wDmVd+gL2W1uJZKcIOwsd6fMvYHOz+Lht16IeV2XNCS9I/aRK91oN5XHGur0XFt4b2qCKM7fWCQNvnslXf6yiDDR6qaLN9cOAfga39Lfw+PDXlvBtKCJoICupTmNv+pVOlNAvH4WcrXt1DlVSkpsyqOzTrRiV/aNb12VJGECfHjxr4cONUrbqdzQplKsayAPeN+2tc9SYgbQb+Jrfm7tTQ4uLtNz2WvDLOd9VxZhH2XWPSCPPy2N9Vx754O3v67VvqTY/u2GN0PuGdDnbNL1R6+ggstA6+RJJc/YbbR5BGTSFzhKkmyKNZj4AjZXHshwG/Q3ExVeKmvZ445FP8l4X0FAT0CD2SvcZxfyVPdNyP8J7z8Dee5V/ChA+TOEx5Awx3OOVXs7C/BBIn4jcOsQu4wpT/LKY8dvvMvE0nXp1h/plPxVn081HWGmQ5GKerCWWfkytKWYlqMYt+3hZpdOaJtPbVgqj67gC7r2jjaw5d/1neoimPEPJkKyjeNf6ZVs93DNnUW/gnhVYx2/bug4hewQEYDgmZQAEDjVeFL1P9fKUPkJ+ItEUyjF7DL5BidAZ/QY7RzyJFrAg3Qq4oDV77OgP4RbqzbcqnXgpila/L3au0d9jheNZtfj6BVFfoyweMU+Xj7OuvmNib3CzCzmmXL9Qj1l3n8WyR5PEibENV8XlYfCs5TUPH4YPxxyIFDbCAYTw11DCFJKVcfkgrfBZwrKC8HUDJWSZBaObIn0ZWCzGoRj8ZSkzQS56LWoeJTrp7SE5Tx4a843NMKmIuEC1ImwMYxIu7WF35b7dcAAg+UYNpsKbRwzauPc1GYabJP74VtGLD7TZHfswmggNdr4v2/nT+ATuowqvlrfb82JUuBNOf1kvY6myjYLFLUUN71ZkD/8kCnv3HC3g993+teKdi/ZLE6ml7bw1dxkePpnG4lkZ/3TC3SzS60NOufmp0LIEqyPo2Pte3gcK025CCgu3wNa0+vs2otkV7CA/k3RC39dyRLnXluGInXq4TNoIp/hgfrgFrG2BA7Xqd2AmsGyhyb9bA0S6J0js9Exj/so4ukob6F7X1iEzVP6yp3pXVjd/WatxjJyjj36+n0T18JI3TdTS6D2kUi7INO4Qy3M7Udn5HP9IxhmVU/LTDipWnFT5AaF+rClYukx7JaepnjBvs9C2ekTP3nLPWyl0zz65ZrK3Rblyveai48OeMRVZoWI4cSf31krZRjo1DGIIyfMCLSPi4HBEDNIqusiWaFW+s6b3bzDwIYo2LLVVPqH14+RJ3K07T4jq2WFhETr/CKFqnMfDJHJJn+hC1pMNlJoBYUqt9E97zIoIT9G/p5IY9kOXXOqfyEIDaSXJw31rs+r1YnmM4bod+NIUq6EvAorj+5jrS4tQaVKVR6sBCEmnJ6gMKkVZTS37LtTsHJvMNvbSKjytZh/qJuMYTHu5LSyN7oZ0spRjCP0QaMxhJr9c1qQc8QbaJ+rKSd6kZHrmWmML6KFUKBiOTlDvdXcOZQsIDXfrh6Ait0fQ4OPDDAFiSVqxPMH2sjPnBAbDfMSQDRbY781LsCgv/ckaMVhvqR4WNZX3+W9hXE5R4ba/hdXWfOAVqytirYs1XfWjxLNDcFF/3ld/v/T6PYf1cerW6Ov9K67h6HmOYUmXrdFq+FejgiAyC/ZpGU28KUWX1BIE+XtfxbXxpq+SrfBXc9iEZNROh1/E9ZeFW62VxvzSeWqP4X5NZldwBs4AGYwBqVKAOLair2zXEAr8MR/SqcGDiqgt7nefT5jjYs+BuZ4NFXg9od4NWwjWis5sdxOO47ADauyzyn4kyLSMsOAgO270q81UIm20bhDbf9ML4eIMOux0jtXvIWBj8PtRgH3DbFi7yswm5scIGseiDNKhsenurKFMd4wdFzYGusaObwxXIoQIpCvbly091U6FOa2k2V9KRmI4J8WiM4vawIN6Rb4k9YaIdMJ6W1eOwuvkWplsBmJT/FiNqD6idCQb3UiRtRCPdah8/88NnOtcadKxNlaBOjAo0KEB3S+N7QOPbPnjCEARdBrs1x7hRiUv2tBaCTyvhWACr+QNc3tYZssSNMTDgqdbotuJQKkm3jsO4anRqDHHQ1Yb4Dwc0QdDWMQH2HkhAAuFQBkyad2xRJ9LVNFylyEmyOj3Jixzma37Gf1YUsiWnC71Bg9JP8ohccc+DaFTv9+Zj46DcJ+scKccLKfTR3/R6MMzwLjX1dhSdLaUoayrMajgXHCVCTuepLC++WqEu0qstP5628ItPxa1S4Sd3yiJnMbvJHeXjUUrOVTycG0XgAfStnwnzHEeoKqNYpgauRaLPSAMD8QLGL8HP3ENyuGc+K0VBQVyL+3/gR4Lw4k3cJ0zqIKMEJHF94fw/xzNrL5LLFl7zcCnKpfKDROnFlO6EGJ4hUPkjEcd2tczVX7PQLi7kbBceX4cXdglvXF8qJUqr13U/i+1PFNAR4pTWY2lxk1XrOp6/ux1D1DTNZwu80J5y6iLVb/NB9xlKnj7T4FnTl9lXRbGo+nWTaQ0rdd9uUdXNGKvj1ptCbG9eFRXPe7fhx3wol7P54sh4bKIshLNCcY6AKYOE5/R2VuBH6kGR0sIpNVGSFfJVFRe7B8k8r3LzHC/SAkawOyggOBsLR+Zx+UdXueULWOSrt+ETYDAOYWE3ncApfQ0IDGCdi5UnWYbfFDxyPCJWPHoN6NmqEuBqWkFRwYoRv/eL309QJGogWwYYyszGK0sHXx9YS8mA1L9RFDQHWoM5/XUzxpRZkncYZGrqTemAuzUkjgdpBLzGwHOgD/irRXO4NLqO3NypQy4w16AhRlk1ULq1It2pHa+lahrlUiEI9aub1ipKqK6wNe5vepOFAS8GV1/BiFcm4ZsxolH6yoNp/O0LSuuvFy1MOcztKa2ziKyF5j7vHX8dDZtFQko4Qct3muoqcOHAJzq2D5zjo97p+Es+hCnRBOjxPPw6Hwi6aCfc2YFLlVu3ndZk1t9p+36w88vbHz+m1/ko3laW0dFY2cNYCjjWoHMqn7egfD6Jp4gDkkK07o5/sBNL8QG/CvW2gpqNFlcSL8lHUsw7gfzbAq4KxDXMdXb83R1seTsvpOA0n3tTULWevAgLp+UJSR+nHjeGgq7ikld+HScbrs9Kl0uCDd1YNGCE0AXSsONbLeoES0wk4pZEN6cyp0vCEP+hRvb8AMCosYev5iJ9qcJAFaJC3gENIeYdfpoNay4tjCvXJOmTQZjOicPYvIzdC4jq6dc8/QilKXjdvKrVQ34N2v+Fv+A/qCMGjgPJbPR/q/c0XiiR/UDHBp73FuGb+fwmz84nn/LxvFCTxcMaBgPvt3cgmJkvlHLNc42WTdJ5axLPB/NtvFapQFOaGezIKnzyg22owP/jJ+4Hi7tt+IHfaob5Rgp4BCwWF7R+LECIV5UIxHoqOAdvevR721eXmG4vkNQ2rKivYLcemfjbT0UVNdLbMVozWMszizn8omyoEKsl4KMbL7znvR2zDAHUh6+bSP4vkObfVAPnUIihwg9ojY2GwbpXOd9Z382dhwZnx1awI1RJDBnwWtnmeynmpxglYC8tRmcHsXYyuuDT2Tl6rl4t+gKqDSq/LiIYhfGsD+boC3adHta6OpiXznsIUvGbpyfpJwcnZyKcTeyZ4CEh68jeWWOm6bvIMNN3XuX4StPs7i2uOYgSMNB4tLnXdLSVgH4p89uLQW+h1yMVP2HvqawaIlXiH8RWfvkVEbE8tec1EcWEIeFPh3dA34jgnuq2dmYTGOZ4PBnfjSY3cyve21m14HhTfDv/N5xRyu+8mGR3R7081LLAByXgJkq4ItbnXgJhK8KdTRaDqxLvGNSaEafSIAPa8b6nEt0OcGly4ER2iEGClozuFGEEAJEtb1zz59Kq5k8dfmWORxrxK3or57n2Ij+NN/kRdv90jftpPP9fqHND5jlVjTNksfPYISfR//4Rx6FtyLF9f7OojQ3Y/fXjyB7uqA/f7ACt/x2jiT14B6vaGDt6Ljesj96f7/kt3/c/YlcqtTj+19XxpxW+PlldnCDMRTkmxB3PGFzULMT7Lp8XM3ZGGQW5dFZrwy/yU5dANSkvwL/g96wggBZfVgmLX391oNQuxCyG5ujiC3z3yFEaYtwShzWs9uY6iYP/1i/kY496QvbwyFqvI46pLU9friOFP75cpyTHC+z8H1mxv1it2H8QfvRD74Vasf/geSyuLrpfXPxQrNjx16YVex1ygbkGrRE/acmuhqdYplf6hqKR3ZNdw+dK7zQRGhbskv4gCzCrG1GdquKsR0hE7LlFSY4lTH0tySmb0GsvqTeiZOm0k5MZgnpbuGlWPtlKUkP/kW6v8V/QUj7NSvb6lt3rr7d7pEN9S4eQmiqpda/9Qoce1hGI0/LF02Ogej1AYv+nB+v1IKnoQXPHGJzqWJYGC+ZqzUX0Ns5Txwxo/i+PcOrHa+M48QbJXg/M23xxPclq8qyYkZK2FjNQ/AVN7hc4sVO2utrn4sUlq/gjLDXcLeJQ0RflU16QPYAy9EMoWV0onU8V0IayeP9lNCSuv2iul+X6WkeC3asYoB26zPz/1KrWDDRwpV7xBzhQuPj+9c3Z+5/Oq9GwXHpLIEcC1Vp3GhQ9dqfjm9GfZTFyoFV0BhrE3/+xPv/5f1PTcdTT0lI7CU8WuNPcqRnt52Uz9B7MSY0R+hMGHCk/Yqz/b6xRUL9/mLWu4BMemgDBwNwnY1pT06NxqbUDDfVtPnPDyNqHWczuaGvePOWhd2foonR6Y09hOADfVN+KwhfyhBD94SSJh1Hxfa2cqWo6zhEtHcZcxmJBhNwZJMkHs9zFHHAGyTjWevXuLfE2Y4y+yUWLkGJxlHAHu7gDwI5+u0994EMjKuK64DGEilf9EE9+DPCXd7Ted523g3Q2mU+uFi3YcQSadG1ZPL8bp+JZAD/xfUWocRO65HC5lMLSu2lLPFcTt/r5ojgCM39xdx73cXnlOhLIYfilyGmUwRcX18PGoQHNIhylTJ2QwJBBnkvA76D0spojPKk6wnMtGmY97Uq3JOmLa/O8ybV5Soe6la9lDnWNGIty6ES+oRMIaXQht7rg9/Iq67QbbZYD8opPPjWyPO9+Ogcf6DAhpgXy9j6hT637CFaVjHHV+VYRr02hBJkUn9xSo+aNeFK7v2jttu+tpNN4zcWkSYrXBPWgj+bJN3KXxreCooY+FgMH/KvnuPBlW+NdafUB0s+4QldfOKLKucui214Mnb0VcbHjA2CTcXH4ubjtbmvrpbxD76WIebXajfktozOukpJvvfirP7cKEd5dsUvdP3ZT9zOPqWdYwzh+wkW9bZ9AUk17OrX75QhhCx3YkjJvVe3Z8ecW7SBpX+ZO+Vpgbpx6Az5xwYp96hPbcJJuSJwvWWgyved3FNtGdxEvKTo7lDfKqY9xDdlUY2OdxNX2CIsF3hbuILu608/KnSYqDc1E1yKkz+a9xhi/6PCbRT6a46LAfL54XTlQxuxsgQ3MzCynSmXaIJTYvJbn0KpVksGHqawjwaInDHb/cYOdwjidqMGewuM13lfAAxprFCqXQ3Ytxyt1YahXY52j6/tcfAUWG5rLz8CKOKqWHonP+NHgcjEedoSaYlJSufqmDbQWunG5Un0xvPGZ+lb6XDCqgm/qo/o+lp5+mtwLNEU6BplvizbldU9EotsYCtlIRF+QOoGWYHoPpRnh9m0teBHC0D1ZCRcEC0LL+Wt2/xoYuzi5FPf6e6NS14fH+Dcc0khxVTkPh7z4Im6+pGuRoHOFTL59o8+y53SlPlh4mlc5XLNPf4/dDZ37Lilo4CjyjIYVGQMWpwwEjaVaWLLmjrHie7t9fIgAZGmfhI3p+KYasR6ecr2Z4atYx/ArHg4TMMzYEoHBH91HOkaDHxfsQ9Om9oJk4RkOYU0x/UXer2jkQhOHUbbP6RqHsCAYIKFMazlAGD7VDRsMXWS2lbkUGccusiVAT2cDxnXznlcSxUwvD/ra2iEjjg+TPJXz8AO5Lkq+sz4oEvAkTf/qy38wZ96e/1pE6j9O+r+CLD7k6WSWzd1U2wI5om8y3Ku7GuQz3jn0UbsNfqZ/Cj8y6kETHiUCi6NMUHwILolmylDTIibJhEar46jKvOFN6FVAcVEtg4bpRDFaX8qZUnCDsXUs/pwA+rihI+d4MUkc5g4vri9ZWMTCWCZLVlSWhWuS/v9u9X5ETJeR9O5g9rUPu4d7++3D3aM7unLy/lWOUYg6bxiX7rs8xY3WjzlEPjM8mGPX7xb11Zq9oubd1dU8X9h1+4oqLQyruAe61S85Hquxaw8Zl+yc3YySfGZXBj7gjhcVpCBQ5ep4cKm+Ldukl+ZCiCJwmRcqDXKD08537p2353+XYdCLlb9NxrnsnIt3p5Ay3ImgE7WDo7voDubdSUtTlD7SahGEHwEE8QQrFvHmQj1dRo2T1qt8noqRC2W2/DmWaLlyow2u8C26EKmbrajr1h100MTUCVui1gR6sp1N3k5meTGX2R+a5xc4WXlC81QZDjl/i0LTQY+sz5QGu0Low+HtDjylgHgMp73htP0gw2GJnZDuxxle4OeUL8Nr+TdC7AOKboN9X+IVhJyTPnDYvMXpkk36EK7jgMhPa+FH+83Hjv3Yth8DeHS2Lfw9G2KXIFqtVjOVcTcuFRzvc+vnovWX0kDT6+5zYH0fWG8A77vEOvZMcf0yxqBzjAcOMRajDh62NZjRT5je0HNkj4RIpe1V75szulm5+RGmVTxsvoPp1fzx5KwJLgUpg2DmzRymRzIczK/zrCWbsol82EwCvk4pcZt4kA6XTAvIvhDlGZCezBTZ9hre3rw63Ta+abqZt06VtyqJp/G2RLJ7hvLFgsa712t3mUeaIG8rJh2hK4pRd3ginL+BPqDCG8PhQvEtMJI5jGvL26FvP8PRWWg2zSHCzGANibeEA4dDmEzE0QjVBGqAb8drJJ6DGgC5vDjNW06oabU1LUhKJRCkPkhrLSmfSH2cTiZX+ZOpON9LQMr7PQiuVVhLuVDVY0edpWxOJ8NBegdYXyafcMw+TkZ5cwIrY+jrOF/Aic1PzcUsvroapE33/BdGjcIoTqc4jGH7jxH8UCG4jpDqDY4qzbrqbIRfsn/qR0erLGniTB4jbYIPUdOArp8n9QX6DZtqp62odhTVwKZ6evKymdPx7ma8gCXZdIHWBzwX8D4HiLx5C0mPvHkGcIPi2xv/hI87XGX0BY7BvJnRO4qqd7WNd9d06WU+Qy+Qgl2D3hTC1u9A7JGW4RFYMH4IRDMzBm4y0BOaamqWHTAGarMYYNDePL/Om/O7OXQGNOuumeRN0PV8hv0DTYXx6Uj9PZs0k8lkQckZusYLauQkKVYY476iA/mlTzdTVIHp5BZIkYLObqYLQNmVk4EAiSDxCJKDun2z7mowG93GM2AOX/GETrjxojnMYxhOiBCaL9//hOKc0sGl4V0z/wpahEwwYFl//ET6dzr53AQrEq+8Yh/veNDLBh0fs6l0oxCpZOUIWExxgTnU8S/P5bVpVgw7lzF1njEKXFALZL0MKAog8Tb+BCehi33Jaj3jdYV2MGyGqzXQF3c6gB2xezPFNoLBd7x1KJB+PbnJBouT6fTNK+MeX4p0Cdoupht7xoPFIF7URbJdtoSISFEUXy7wQZHH7CmRhPLA978z67yiyoCCmEvBo0/QAPKq+pbFBbiIa1GOqQ0Y0TDfh9jje9413lCEf6KgjlrS+ns+S3JIZ6NpeTN+NRnFg7G+cjnmQL/U4qHdIkR4HwdZkUWP7Q8XBT40jAToR9Su5cCg5fQGRz9iGre3MzhyAG+XRZ3HIP39H2+br+R7s833MIAGfm505hrjWAzHhR2r5xirD+tj9ejaE11Ae/sSOcNZhjzYIrnGdXNdWQJ7VotirSRM4Vzzay8n2vkaxNOvdQhYDrKWeRpSK4iyT78ucrBudCMKVLqodI16reNIAEN+mYZjEL+oaXYOZnAo54zMaunLfGVUr1r7FeWpgnoF4wW8zy/QzPATFbsXRueEZ0zugXzGWyyKjIhI4Nf06qu4UPtfaE+HeP5avSyQDkY7wU48WmzLrTF4cPjmFyAUEvyrkNqItLmJwXRuNHEZ2Wk5vNZpXfJJ+DXpQCysyweKIKrm16Xtk7eX+fwl4lYz+eYNJWqR811tZtFrVPnxCpFjx0cKCXd4FY5VL7GxWiHXdx1Hsno43k5JyjwhuzezYBqnkgtjhKopwQPg/wZW3mUR5WrxEbNB3DeIR1CNvPw03sSNzQPCrudCYwMeNHItOUgkB9ByRhxApWobB6zSpt0iQDzQEnbIaAkfVUu6HTyyXidpuy2AqmmrkZiipT0M2Vym0+BTbA6rdIO08/SwPCVYTaOlNrUwMyVM1aZusXLQsL5FBPuTWkRya/TXblNmTx+jtohqqO0KA8noi3/BNd+t1NniB9+LgqNUT2ALoGs5a2AIeTLr39C+6/kE4TL2J7Jrnx3Sg1U1Q71ao3js1hgsj5sdxIpy35LS5LlemYrYTXCSQiEWLYkdFtrWUrq/i4LbS90ZsnEIsXaa1RtDz9iEiBDn5XAyRi4J9X6J2HYjdSYD5fbJvcd0fhhz/DMPE65S/WHGiyx96Bs7KkAcMv7hlEMmP+wvi1YatryMplSqJ15tkqN3d5haW5NbBtftxVEF8uWbtxXIoBbyzfuPFcg2QC6jevWyONSvhcCPmKKTra0vE8jj+VBUSfJDPFgtlEES7qDTfpO8Kr4KttrAJ86KNzTf4wKv/mZJnqAWoBwI6G08jvt0pqHYnv91DQnAfN4rIkF18OfJ76YfPRWjt6OPLlXfdvgDfPSMc1qKyhNflz96eiCHUkfduQHm5Xq6t2MdGDPe8Pi9XPVKN3Sga6Md5mE8n2ORc1THhsKq4EsUqSZZFXrHfimlZpDw+B5tX9E/CVkQAH4xmeBBnKtB/8NkWK+gCKK0soLh/p82/gnauJIpCBjzNH+9QpoX2FAmzp0xTMOFTWSmKbm5kX6p6T9d12KpY5tvdVDuufZah/9P3JU/J44s6d/5KxTs9Q7PjMHuk70ECFvbgHgSuOeIDQIjtc02BgIZT3te7P++X1aqIKWCMjIdse9oo8qqL786MlWqkz8X1eTJAHVEKvQsBrzj3SyFKiXNQXLH50/Vg2nxGZdLXaX36kv63BTDGjrYMJMjVOYBoFOfz6rnE3E01FEcovvNY4zRu1dz0ACv4xDH/C25b/PBHW2ixtfUkWw0FIgE81i949Bd6Se/88/bbCp3MaS9IzOKiTslOEkUf4yzn95k+nFFHSNWbafP3X20M06bGrk4jnoRhpsQI9gZcAKaztyyL9d6dZFVJcQxTfjGPcFokLqs2XCqouFUyrVaIJxsOwxzmvUA4HT7YR52CzqKyvc3npdY2w3nSNKVfXYzflCfneN48/DwLEtQDBS26I5i/DjYZHVMFIyOy83TwNLdarNTruvhILKZEjqywGRbA9lC/QFeY8uYDvybmhzEwOexykUSaIWyNR9mpEpsn45oO6w7/Wr3clKNTAU99IczBG0R1C/iFHnszCd3aGHXk0U8T3CUEwAN/d63FcbP9WM0u1vQgaNWByB4HEgNSvQb/aNeQusbZumD2WR09rOYn5Jn3Equ1g3ssThbSZgAe/TznM7ZLi4Kpqu+34MvYkoyhfXlHmMMKORpD9T8briZq162CLLTNpMzexEI2nzqK4iq4CTm+atbPWUFdhyVslOGW3Mz/1qeX6VqopxIEk5kPftD9Vb1twp8JE1GudO5t8CkoPftGI9rAlF5GlBg21bHIFFwNtDCAfpcJ/CWU2LRLFYOmIbs4RweZmpxCBwxLHv+kLIXtmZnu9hdMJkZ55kfkZkDQKZfsfNBB8RavMdwqVQNFNBgx6Jdm5XEaBUjI1YeetTtqLJhvIOMzgqVflus9KlR6bFZ6aus0jHMBlrW/NHaoqccn/L1bWLky9jGgO09xpHtJ9Vz1URB5f/dYjz84rQ3P0Y0y+UoRsX03GEop5PHBE/VzChl9Pfx93QKDFSeRcSJlLPmfo9hccfZvgkkTY3DuSkA0V4wBtJrGqmJctAZ6eNY2bZbvKZPsynZx7Rhnd7vtOFzyQ14cVaOYymGOwwwy37hHc2FVpbG9STFPsKTuTDQq/nweyBLyw3q1ZRMLNDiwPKlhC+2YFX8BCtFR4IU7N2uPZIJT2nRUYEBHm6SRbxc08dFRVSfO7+DmT7ePxQb9NNsvVzQbEkb35OKRjZuSktXiCiPkLcxNLlIE+41WivQCgjK+yHBnX9wHR7Ljz3MzWoRwmIReBKzIpjoR+c4YeXjekHGsX7MAFIqqO5s8XWw1kO49lrdAwECBggY5AKEe8rX43WyWWNAaTYdqFW/vJaXDEQFpvCjWDvFg83s6FKbY7CjEVMTD1TlM8fMF5zuz8kKhAlhPkftO5jMW5PpveEiJLW9GKBzAIVN0qo/suuXhWNlcADHaELGdgwer99uwbAo3iWCvkIy6Nmzi+OQ0n2v1YqtvUrVp79FNZp9PMrUbI5IWTa3GB0pC+4u1aFyPMM6CTFwpHtSNgYFAseoP6h9sOSBx+GSDtw4WJo6mpvhlSiDSrWY+HBR4BPIvcUq340aHeXYPG7LI1gWZsNlZ7ZOTXrWtr43MbeB/c27s06SP+jXsRq2CYDKv/OmM9jc4t2EISlzcQHGM1ph11LZttRQzempG7Oeo3B5Ww6XJjezI0iwewdMF27XkmcbkUpVgtiHk+3FIQbnXsmlmkcBGfHUxM7LMnSG6w35pRBTsd+HmQl4OkmEn8AIEqjHv6XUXiULNXY1+NSKaueZA8d7wOozrFT2IjKzwWRGvqPd7/Ngz4iMT7qL8lQxfPKduQJSstVD0aLvfNbHkg8KTmQDzVKXzk6m6fXOowDE5Ld0kQM88hB63pWIzXWWL21LD1EClPu8RuO00RjS2N4CMSPe8/dvJTkU04NB9sv8QOTdhvxlJWyxt6KHZL1/8NOYljdxmIlAAgmW+rivELVCfzrLNTbYoUXRNwCNZ2MghdeNYpxTtC0McW7H9u7OtqN692et/kf3f0HlhdzI4N3EgWX83pqrSvUgJDI5XM/u7lQfYbhZLJJ5d/YlGc6UvcsNEcitLhnkFStmKHtzHcTj97ZcYSVnmkhBi/fa7W8u9lqyYNnfgejwb1buIs6t7tEM6Vqf2SPbQGrhZAMhchLmBDqjBbavPc3s9mSB4JoXKOAy0L/hIOlGghJ0sLqJvpK+B6uqgXVCtXE3ClOyuAUDHxrB5hGZ5JGCExhaQE+gyvYkK4G/tF7P8xAizS60s9glCELY85rftMN6Pa8CEMpM/yzHZtiNBtGnguMry4RBiIPfpu+yQSRfrFYEHpkVxUtTs+aXUClGhxH58+hoXqPN7LUkKlVOX1alMNkmbeQFf1rCu1zQrogTCsSKyxxPra6b+qv5WTCL3MxBUqKUjascJmAmU3p1wiO0REKLYbVWPZiIkoqyX2ynNo08hL8bN7R0T+z5LAKBRJ9PBvD14QUwW+WSgwUN6MB8NX6BIW8XoDXByn2IR6sPMRKDVT451wC0nmOEZbt0GES2BKjcIpxdeY/xanN6rrv8HV0VNK3p8zaipaIOg4HZAThjcMXCCJm7nt3dm5QqZiWWYHYIlprV5Jy6mA+1j7f4t64+u8QKFuouZ3uRk3jXnXvllKId7XsMh35Obkf+K9lx2u/IZdaZ0QeJ6b74a4LkesLCZqR6uxyztKGS0ygAgzM96qkvMJaPOpa/WG3o+8n3PO/9eb32LS/AIrH5LFmIUXn6rnLFo/zOsGecvcr3z/vWYVlyr4P//0thu+TUH/Ldd9ZPmxfyvQcMLcHWHT6OG5nrd2Mn4WwfYLTvBI6KNkqWMWCR7FTbFVDmcBPvBc7Ex7DZN9SUAwEzfs+BURY0TLCDEDFynMzdOGPOGoUH6zg/yFIRlbQ3MWgUkoMIH0InK8O+z8paHzIltBlpoc9ghTKAiDNOd8lvWbQm63icvTKWa9UDsOjm+FCaTwGN2wBoUmFJHCyUurwqP6WOLprybSGTe9XI2FCSnQM9XLbuk+nXfHGi0DGElh6tgKMfq6PCSjqThVpusEqS2AKOaADWEQHaTtIZSkQ95mnjCBI5RugOShqnCXCsmcqq6QFhwmNLfFDjmNaCq1BLNo1UUL1Nx+vJuQAtenS307KKy6Itlxoa9YN2Q9zgLepVL1uotaoUU1Dc+bQA84w6P5QsQpl0Ozcfv1SQwWI+W7xOoUwKhfz4kr6/bWZJOn2dQp1Wa8yeX2wrk6cku5zP3Flo15hP+mLthXxSn1BWKaONk5dQWMLoLUpPfDcP7p9TDOfPO7Sv8xg/aiQq57F1UlrAM7krrZGTldVZave9/fPwMB447Uc0fBQnjZky+sjstKaFaqLND7m3NmNsVrhTpIQHFalK+06Z2OY1DTU5d2liWRylBdTuIk0l7NLKKanY/aKphL1Y2azYfaGpxuIFLVqs/k+is+sqr8BIZ9VRxtkZik51c3yQ1nJ92HIqJgedqKThyKR2s5EqTKOR8qNNRiewG4ypgM2llAKbrZj43MbLKbDbiVm3disxNZg2UjlQ/NzUy6LbDUTilzQPoeR04+Bx/hdXPcqo5qJHE61sniT26Xk6ZiGJ3fxNiO9BjA9kLfECR4LyLojT2f2PBDedDwtLeB6ObXc7ErqEz0Fsu8MxkU1vY4euWHyNgW53NCa4/U2MWBYPY4PVSezIJe1Qwp/a1vV012Su1rSbi/NtNZNPXH5tP3PYngvyKUlW7nz2lBwsVx2VWsM2NhepAVfCgHWS8iasU9qNWCgwzViI7YZswtlN2YA3jdkObzVnE53NsQy83aINBQWbrhxR2laz1vEshm2BFoms6CWNW6g43bz1XEUJW9BJytuCTmm3BaHAtAUhPmgLldv9eHZjMPDtxmDCW43BRDeNwQ5vNwZTgf0FZ+JbbUHicrMuCS0SWdFL2oJQUTnNGOgAy2tsaWxOUsSlhTa6z6keXjys4GB6ZF49gks/285Na8y8xXT9vNLni4NXtpRER9CHU/Sm/eUCdTzNrduNzeXjK9qbP8OZ3ttjWPjcAnvm3DimXT+E7S9QaLOFkdPj8mgCIcMcwrS59P20m0y+yLBbhBW2O+i17nbiKCeumsq+ujmWNaOcXj1mhcRmhfB8uDVfo9XdehInPLM+XELfq6vEhFKVoinv24JgUD6mKtp8GwjryXYR06rdHO3jKB+C2jc9Djeveem5NHMPr2XJv2Bkg9i/7l/7Lrt2+ge2QMvVaT3Yq5QXMF6j+zNq16yNsuoZBvopiHe4iVcP4QQr2L5uFeqQGhVyMNsyPlTtUohMGri8OZWBK0ciizQ2aHw1xSqgZbReK2+ZDPj694ulkz2UKh/9aMsGbiUqDc1J7MhlXs6mktPfz3J1q3WIqmJjtRfle9OzjceB03GMdFLT+8l2FU3XSbI4tDI9c1n2br0dBkwKQLuNT7pYkC5Vdxc9JWFCNyKl2GaaL54omfrBK1sSpy3Zkiq2rt5wOECxf3sWHSH1rHceYRmc9cA0A4SZ7YE5YoOW7l20F2mEi7Zm3/SxacUjzQWl7dUgIk5L3VM++e//2BOG+6T6n/rB5/7YC8MgrEpwjvRvfz/HPWajVsuLoupZ7WPV7w+9sO92sxRn9Y/VfjAch57b/qV6dkERbtyu3x4PsOU5aHvVs8tdWA8o7pU37nr9q+F19ezNx+rQbXa9ccfvX3nhIAT6mODcG9fvQoLkb1nnVegPfxm3rr3Wp3EHQq9dPXtH/KPRYBCEQ6899qObaHzjhZEf9Ktn7z9W3cGg67fcIZ7HTPLKj0Cf0lY+7GhxeMgR2+7QRU7P88nbgRcpDO9nRIUcRaEe+8Ho6nocDYMQGUN4fQfbd3sUgjJpdgPQNjBEyTR/GXrjoNOJPBK8KQhawahP4W9Z6cALe/4QWUbQOw5CHXohHt9rZfSPR8nHwfBaiT5oEcVnMarvfKfqKgxGAwaPqAwjiJFNFWyQr9dltfaaXqhZ1pHhnvvzuOuDJDUMVBppErl1R8Pr8fCXgYdg5JUevf5Ql7Wu3vrbXYr2dWuQtaf6u12wPxi77XaoGmf9vYge9Fy/n9VA/UO+nWybSOUCuQ+9v428COuu+97PA6+lSvWitoPiBspkL0SmB2Fw4xMOmi7q3x2S/CKvKWj+FxARfinw/B7FFFXs99vezwh6K8DdENTRVBEsstv3hj03+oRA5LXTdaPr8WfYhcdljappeV5bZeCDgO9Jk7s8L0oi/6rvDkehByHyjXwNgsgbu33VcHRpQSgzj/93grDnDhEujX4Q7cKR6SbaCtpFr+f20RZ1o7tE5ltBv4+ykfV9+TYXPAyCMdL9AgGKIEQpX3l9L7NSVC6IXnHNX75nuXBElx+A5YVDv0OtypOiSu2c2mLbj1CzbCKDAIYOUf2coFDKn4Pw09jvsJMbN93IU8JCQwq83rg/orZP0jfneWkzILscEF0lFm0qKxEVLEo1Qvvz3W5OLAr3GmFdT4VeyqYSRaDLsUWrQm67PRWIYmX/hEptdcewtPAXKsBRxGAoXXJ6Y2X2/SsV9h5hI3Z/HAlZ926QtBtcjTth8KunMvUWeR588nXS8Sfvl0iF1zhc15gUiQwjTAWJTFKlqbBLrkCKo2oPbap1rSRvlH+BIGxqQ9dehsRvZTVw0Dtptn4Ak6F2AMF79p4deC6O+UEwwXsCGUaFKN7vzvNlPrgOs2bxTr0DxwgLUH26vt8px9b2h6p9q5C3mQdGcVAdD4I+8EnyvgbOkXKh/QhhY3JKPvSTvX54q15F4+KbFxJ2/pD4RNP/NUuAXHX9prbcsSwNEn8o+Bmy+3PlCaNgFOJNrwJA6doN25/dkJoNQiOtGML61m8GofFqhfxia0UiEWpU6Rs3R52OFyoDj67BS0mVT+iNC/mhdjq8RvUyLtVt2N0VT3bzVvblafaojzsX5k/rs8pviI/LMXFPZHb7O7Yfp6tkSofQxD82+svtXaLYu71+Vld0ZovX5njCtir8SGL8ch63F4+qdBs1fJFPfuYgtkiVgd7TlcXfVnSPwmKK4MnC2SzW4Iht6gSirxT9sTGSwUi3jn+IZ+nXn2DHA/8nv+05MY0IH0zBbH64XSLloTgEiO9+RN7ccvwX9esrkufJ+lDcQfRTnW5QHUVN52vyXGCgDjxV8eiDge9jdRb49YVuKi5iPc3iZLlXZ3/JQl0MsTqBjWqyo69f/VMTnw9/dsKgBwR1iyvahYhIF7E+LeePaDkOjn9VtxM7f1rpFRop6hkXt6b3hJVOHvCPWtaEwnjaJUAlaozsbn51CdefFTraF+QqHr7yNPnqj+lqPnv8U7WBK6Ar94WG2Muan9ohNs92sf3YUOMAABFVkY+CthQ7j/gWavBh4BOAbPPyp/TPhegNdc3wRF66y2E/cDyUkG7RKQ3XNag619m9J85UfjE2Bi3/kCjgQkcdFPXfUO0VA9U5Z8XAqOc0N2kx9JNuWqJ1FKJ4OPMojhMZ5aeH7fJPS8I27/J10kf1zDcK31Oihpo9Ilmcj2OkSf4nmbJglhpJdG7nKnxZvIb4d9yx+8Nm5TypTRq67s2IyoZ0LTdobJWLBNb3sETNrvmxkDtUFZ2LETc6c9xk/XyoYLkxqa9ZaNR2xoHr2UOufRUw8i3cz7XwRkDEGtk9x4DKIKicvjbos30F+WTeiDiLuwpDnuLNPNECRVKbC4t2aDpATU5mhttwY+W+p5Sus14CcTXBEGeG1MQSZRmg00pt7fUMtn+LmKs5Ymoqs+zEEfh2ANAQCcfnvOYgBEWpZYPy45855jL3HD3bCqM4SLaaypTlDVx+qX8zC/2kc0IeJM6y8yzKXT2q2UaWYHsMLGVJDbXR4r/MtkUemrOeXU2uK4Obyp4KTJdfHsk1N8gzN7Y3G/W8bZ1u0sbVegl3I4XeN128uxM3UV2PCH3W5Um0bueTOGnoLbVPdDF7+vsMzndb6LD/XHvxfwrMpiMCe/u8hb7gG8kHPd+Z8kC58oLgr/6iHawBpp6jVsSCCO/unyI3ogeh7otqiSncIQmk6dBGJnUaOR1xhWulGg0xYt9oXKMe1YvOTeGiIVPXxLeYZyOC5wD3hvdE7Dkjax3qqHmhhntHMn0fiKOuZS4GMmyjNVtPN7NHp7lOJl8BlA1eOTTc1uBTo+YORrnUGBfo7V7DvCG14fnDhlIw6jf0nlOHx8g050PhzDbLCTp54DSJwYEOO1ABDXz2OKqkGg1W4nCDkqWJnqReRNFSdyzyUCJGwGioB3404uva1ZBXxJf8q8GtcLOgQVo14oTLL1ABMQ/VRBt4tUWMR+5TPgGKgjEmukbjY9o8hBO2Ah68ETWoK4WHbgrlpYXqM0Zi6jzz2I2sBoTUtyGsHAur+EXMoza69g0ZcplrJzxsU6hzIUQu881EyJDbz8jinCtQdAZ4BAcfcjxigwkojGMgb6ongo7CD/7CUSxSHojhwWmnCU9Lr00efdFVqGOiIs6BIUfTdUUqWa0g0/dSshRaqOmoQ9ZRKnEWfCGDMRVJLy6WXEqJ6stmgjdKoBsuvM49rOEJb8TY2e2NZrpvJYZqgyoY5TbsRhzg8AA3oCuQvGcJn2bliDlzBD2qtB8OxmCOFKl2zpGy0wYdmn+XUXf5r9XsMWXGa3WOSw0BXVPERv9B86KhUX26raP3kecKtHYpYvQmULcmgHwclK067sih846c5QZk8LGAqCmYpJkqlCq/MrOtRnkIFC70s49w3FyvlyJyAaGcs+lzhyejnccl24r2RLu4NFK0WO1vde9Ui0zW5AxRIExrtFKSmilpox+kZHVT1nqeqktZIL0QUp1vBF9yztTFgPrYbngaooCvxNDJ5mwgg5OOlahWEKkjy1hUz0S8SIrDLrIw7shyoFK77O5Df6MlBvhblkjsdxyUg36vfIMG0OWqRB9yIiDFLKids0BA12ocJKGpsd70W45ey+F0JjOInAvlP1NyxCi3oiuOVXjNCOfUkNa9i30e2lFTeSrCOZIXY/ARM6KZIlZ9H47IQgVx9uvinDPK5d4YfG9TFuXN3ighf3qrOGrESPXC/nmd3DXQD1OFxKZdr5N02Br4A0fc7qllyCwt9nD6E5EAeWsvH7BGKB+M7Nx03f4+GOSDDivXJaWDwd0fPL01U1wQqSucWErvf/2qe3zEFfA4WHgXCey01IMjFjUAYX0n7AwMqXiHqoUR1O53L1FS787hJ53t1fOxCq/pcHwH5SV1fvHK9sKCCynAx8ofyYKq/w3paDUdPkFdu2wE12Qw+2cW1JWAi1DEv5DBMv6lEuAYpMlm/iiLnoRvlHB7mnuaeZyt/G1Bzm8zkTG8rHXXQb/JNSnIaoaMmbG0bqacCu3wuqLnkZ2xocEhrZlSAQ/va8iFA6grh4rm4mRXIDjqzNa1E3lDJa0pqTBD+FIVJKwXYRc5EC4eJbhkQZQIL16HN2InhiCMy+zQKxDVpEhogajOIu3mdG9CyS5YpubuF9RS0WNJ4kx4mRdqB3dBDo57aLpFMCREmWtbxNtUNK/M3TMlBhnlwnUXT52hlsQcQw/w6tvd5Kme+anv/+PsOLtT15Hf8yuCzh6udK04kLZvbXS55fXeG8vJkWXHznsUUwL3Af7vOyPJsg3OtldAZTSappmRrSAe6VvNKWZtQsjDAbMxKLButydE5CvIPnDmN2vac3eSRz6uN/AAs5Re8SuvAdZnLASMmO8hHjvEIXNQwzqWaxbgJc124G01cERsvoeeUuo0kPBa29v3Zet4dETt2GK7Q2x73EkoMSKVRonVe9vIs1N6u12qPEH4OfGalLt70FVhC5h2wqRDYjePxBvBVgjzI5jVZJO28tXT+klOsNJChUe42Tz+Xwj6bBxgioaE1De8IyjGEIFoxM0cTezmy4npGOuNwfoPxDoi+MABgFEN8KVpBZ185sq//AAv5Ai3coDqm6++bmE0wARBCwxc8hToQRJ/yOZLQ6RH/GbT1WnTzWnTHTRhqtls/eAUsN8yxVn/qgXwhgVXfUMqVWKWbM9hRSVc+Svzc3q0/9H1y7p8vbuPbl7SEpD5qYHbzWfJNw8PMIoyBsPXcy2v5AdjU4wF4BucQIyCYAjhZnsHYW/Sai/Abitwm22gizFaRGdl1pVL3NZAZNuS0qv0yLk0DtI8f+8n7fOUj6R9WVQeuCnKwedZ8v5+Gt/SyJ3GgaQ8Tfxp7EOzr/TvGlHmP+ngAWB+rC9QowzE92nynrIK1xIWZxMZor/CZlrNw4ozNyJ5n6g3y/RJv2b4cY4/C2Y842b+GKP3EtHhgMxjqXRqWA+NYyGEyxAIphKfhUbG38QiGslxGKPrEKS6LQZwxP79fV5mWngueqg8B2DmlzxmgfL0265GIyucw6kYaIJFXDWpV456dUK9FJ2OAnpm6B5yqRIeo+kNFgEJyIDwRNcuTfUSGBVksAzADXpUDl+Y29mDhSAvvAYW7wV5ERDCPPKK8JkWDpJ5rpjyM7n6Zjuzf8LwF51huOkIMfMf8SrGbx4oub8n6HJJySAKbQ1ymj+cq9FsfDi8WS7lX/7jSn9TbGOHAyXzCN8QHEEPFQTR+STxk+VyvgSgGbxwgrYNZo+wVs4nyQYe+eIdx77vExZIT8TeDCn3cDxYWLk0vcS0V25fehTEYgSCHTWlGI3+v1ohgxLpQAZvzK39r8wF94NL14KdbRfSD7ZB/UJ9opWzLFuWjx4Q3QSBEfV77gmPtdLiZ5QWW6XF/6XSYlBam3riFmXGWpmghRc1ovQOB80sBtN69cJDsLpmkCEHfKqhJncgwXaxtWvyE7wcNzZToWdAwdiV/8MFwDf9pEeO2/7OuBRXoRxE/kT/0P/lTSg9jylPIKyNGb9iJHspq4zihIK3f60TIyTjnjrOLTW9UiQi+5AW0OuE7OZVOTWoYUU64Jt6426X/GCLjeEVe/1QOZpDBRTvjXGC81olOsyN1FhPIBGPauLBBiELKYzk/AcIZ++sVGBkf8y81h474cU19GPw1Sc26VdynfkPk/l8CWOvxpe6ns+39AqebDLGPKAHIU139+729vqWaV6UuD7mQ3qiBP/VMOHMpTijpdjNmm0z6Dh5eJwl3a759uU0HpoiHY1hTBD5On4JRVnB6Dp7XHGH1AgRUHMZVlPFbF/FI0zNDVh1o8GEJ3zHF3wqom7X6feSML4VG38qc/6Z2Ha72xF5SWBR7QutFtCxj3RLbY8mkYd2wD4VU38F+46E9vi0FHmfhVLIGvIwE9J1hht/Bhr6LDY/N9TtfuyvMQjLUTbGpY/fAj/8ZZJPJKD+mBNcihLmAo+rJMAanWSiF2aDEnWYeaKPdCk9nBuaFTOUAJ6M9xm/uMjCZLJKzgGQ+BYE0/yOEGjX0AQlidrvugrYdm+QAXEOFzDCrxjPLsQVM/gifBgfniHnf8C7Es14gT3aT8vKxfnQgaiErG+CzJ6HTg+Hz6B3y/aqKULDryp5BXJCYIXtY6GcBjJWTY3YpgxHLcS0GrWAUQvkNxfbUaW7RW3k2HTn6EL3qcjDichCzV0BHSkzjHbAcD+D/wAKmEkEFvhOZKzopN0udNJUJHwidiyEOlXIi5lrwlN0ZcrNWKUjskrA7M7SdjgLdy1bX+K7YxrznY9Hgagscy/eY6WdjADHGNBXaP+k8hRpNQ84Di7r8Mtn4DNIy0RUA8wREOTziaHmM34mmV2k4jOdw+lfGj3X5bc4utMLF46JiKFwO3Z0xnH7XNbeQo2ts+V8e/6RyT6+xiS9cvJITEXJlErnHYQc1iyvQ1gAC/CiP1CgkqhhgD2uGG/apPL6vFxcLhSOIl6fLG2Tj2vZdLsb3xw8qUojqT1LUSCNC77l78AkMrEv+Gf4scGPt/jxifhGx3o/X87Xc3SaRwkE2NtobGyYfywu/+n/sfrbZfhOOELqHlCgXHgqYljNoYSv/jhMjZnSFOC4EjlYN5jrUAqQjwI3tZzi0YlkWCsDzj8x8w+Mfw2oFKZUznBmpuBmCo5TGMxOhPuHIB2mHqjDk4HkM/g/XwYpzwNVFLDa9vbAUtDy9wVYLniiHxmvGgDG1NAU7DTkaWbCSUw6LuZEwyhAGAEK4OZless0+8cYiIKHhQEhbjIcxo0KgxTJAGIXx3+WkRpCMMpsdJwZjcOdy9RC7NuGqUgPB4keqkajEGJ3ODTi5I7tI9EpYy6qxJRgx2lFRDix5EHJsEPGQRQavwcLrIrYCxsdNuIdBOvFGL3QDoLeA3fI9JRT6BMT37YBny5cuKnqcLZNa36La9pBG3IMcCIsuGmsY3VLfgcJq/MetcpbqJjZcrqrxm38nMH//mQuY6jM+AzMuNNjfAlQfF8wrsdko93YjKl7EOkROClnTmcQD7BGQg2V9UZa0VMWmE1GKNG/g0svWcWEvVnFAUP8EK41iIQG20ISbnwls9EQ0JkWxQqcVmxPbIhn2pUS44dqGZN7GDjBGfGDwhLM6TscyfwHHfU6ZZAGUxQS0o04yVdACTUlvtFixXM6BrxMe8PIjhtSKSIOpHElMAdlgRRxEeH+vebiirBhq2eljev1nvJUZOhKFjTmmisWrNyFCbSGpgIo+I3z6Nsi3Fp3KVq8wBaXH9B7bxePyEJ58idbJTugAaX5GY1ZWAWYurVhhWJkEiM9eAzYJSakYv/Hd09wmifo9IqCURZKSjB7uzd2vLqUk+l8FtsvwuvyYWGdTxcxIiprNYU1TG39WK6lICTUlWUiY1i+zxhBBS/dcojLvd/bpwfYk1Fk6ajt58cEBcf2Uj94+wkOtHygu3E5wjt/R0frZsMuDjQITBEUvuuo7+NycdYL8yob9bzcEJo/rXHPReUoB7kWJcHSPXBBq2nb2MJKaeEeCcSemb45stGDUqsJx4DySqAGwkj4HqwLkD/hkVvDrbk+TvR0XEbgp/XjxH5hwG6oExhojS/25GG3awv+LHkPZg9rLXZFcdzHY3z8+dlUHzpeJ6Jts1QHGNYrQYXYGcN/QsCOJqxXeIWvbenVQfUqPMNJ902EjYG1dS95D0Y8J7stJGpz2H21UW/6YKu6Ks/c2200BtjnJgfrlGB+K7TTsA/IpAulp/go0bvNBirCYR8IFFtoGcf65RDeG4onyyDGmbGE1+eMfPNECCZ0LLXghu7IGjOFIet5jnmdTKUxMR4JafcnzKWhosf1rvgjCYuvLmSJe2RWYAAsnpMvvOnQuL+JVvoFSJkz4YN1SPC2MI+CCM5zEc+V3kvYZ8b2h2UpiR83hHEt8zN8Jn+Ckh5v0CsewoqH8HkekAt/brDRnO+le02OLpiFiDQTTYU/q/+Y7fu3g4q9i2hIG+xmAMICaowEyrxpJDnidS/qKZEEBaRwQ1VbJM3ZTZhwnlf8i71vb2sbVxr/P5+C5vcux2oUiJ0QaIzI01KWw7vdtm8v58bCeXxrkkMAQyhsF/LdfzOS7JFtmQR2u7fnnO4htjQzGo1Go9HFo8K63N1dtUc1D5XhW5EQR6gWZbc/X6JT4xX2upJpt/RUqwoYKKurZIGLOUTdGDgsJaCBblTGnbVQPsD8TflPUDikwQCg7CsSx+FA8x3pV1W/exINafz7PIXdFZiL7JZNeIHJe818SwQ+fuG0fS8U9Mx8ONETQwcjKPMFQwib318D3RGqE0YqTYG088FrAcXJbO80vfpiIdnZEUhEE3QWsaZHa1tzm6P5zLG4CACLA8K99OH4whSvjSkVwtFWCztNYy01lw8s5YQ+C1ddtakcMB7u7OwIl0M6JAWY5JMrEKnnes3BEcKo5nJCKgabykuDshcWlzXwA0tVOYsbJ16DRXmQ3serT1vYKospw0qu239kq+/sbK02vI0N1rJmr2LWcix4vUez4PZXiQUbh78Ig13v0Qx6PWLhN+Pf7b96bN++l73G1oNa+eswsbVYwMu382/IYqteg5avgW0VEOeX8flK2BZbHKxmTTGhLMW/GU9gpQbsKfOtlY8W2XoEVTeIV9np7ATKTHvb22HbrRQBGAi4RFVV2uK2CtZGiX5cKEENed8AbW5N5oN0q7WYctnSZvOY+ymz7e2t4wWFgxTpRXi0GbcMS17vESw13P5Cppbh3Ctw3n0Y513vEZx7vWUYX1w9b5nqdQvV6z2semixH1zBpVrlZ2kLMNX4KlwtI3G3/7P0BXj/DVlfrC2onj9DY0R1W6Qjzb5wQuCStRYaMR7ACJEPALTRFi4unwx+o8oGlqGZRL8+QOsftD0/3BFyFaQtApDQA4ojN7xYkh/gIrY83XAKm6yFCRDHyQK1t1qfoOpzEgQA0osI2EDuZA9DGEYHTijwLc8f5gQHtaQ1uQhPnTts6WqGVMe6Gb6xCjqsL36wXKUXsBOYCrbswNhYSBaXWspeAk3gLNNwk2X7GRjWqqAZSC33IZOvaTC7epA/YM7i3UWVj87TL1WbFOv1NwVOZJmvVrJJ+5Y1EBGeOYkKFels51TM5Q5xnxbTFsUDRKj03jAL9RsfDyB6dQnkykvOWdcPflR6Qp2/XVgWqFcPHrDHMoRHaYkb2iDBSvLQaLNwm8rPN01yV92qWbiO3d+JlOvc7DSZD78RHeFz+2y+nCrkOBaljtfiJF89kHyEht+Mn0AoaqXeGopQ7pOQ3EL5o85p3901OiprBPuw72FVRIT5490dxsbyVc2rW1k8Ffa9LB82jtKhobXRUB8VDzTEoPiuVye5WpJUnHFzfVJr942MUtvEHw3VxFPJw3DNSCJ7ahIYGOwUCscXs14dViisw3FvDZdLaekUn0vTGMYrXGG/JToFFqnJll+EJFq0/Gin8sCFx0YNjSACuwQ7qkY3pg9rCjTAT2AGl35IHR10r6BdPGBKn8qbndRoWheMBNIJa9Py2EKMuIPOq/YinIj5NUoQ61IrhhMhllqNRQRTZI5rFIalS/YMjWi1eGAtbvnFWUupobku28GzoWC9ImbhBApvPKCys6oO1G1k29p3qT6eish4b0cGpF+paaq3nRYqEomc+WPSg7wdRFpoBeuuvVZvS7UYr3AWFSq1kEHGNVcmp9xk0CQoM/zyTr3ZdnWb9rQ13yjszVt37VXRq6vWNkbu75NJuYdyVRAP8j75MKnZiZKEcgkuEltBZtVxGCx2fj4hFM1wcgZhi2A0l0No9lp3/OMW0+EjnKb5JU2lltIwRslkmu81rHsgjSXNoUU34jXF1xoUrR0E6KBVXZJsh8Es6fekCtSz2H1qYbL3yzCpGLiXz+Zn8G+kEGVzlPZMCu2CVVIvCI9tdBnc3Cv/vEK/SG2gtKwqEUkZK+D272fDe2pjxO0/mJMr2O9ekwUqOREn5sG6/MNSCYN3xsP5OlABf26Fyj/gGqgDvTQ2LLXQW3aN/CCbXNuHu8dvqAVcC5sRtWU20artURysFYoxWPOgOGR4S9bEsntW7W+LysYNCvXRRxVyywSkvYoCs90is417ue1693PbK/OAKPdIqvcASdGi6uPbiT/p/JymWsRAd9kmWL5RKxx3l+eYlk0f32ANlNnjG22hR7q+xfLtLbvsyCG2bHPZWVl+T8vO0PI7XVTigzejRlRH2okigg/eg8phiGL95lJtKcokNR5WDK2j2ytm3ysiRh6zS5TD1FS3t1wpZFeWry/1iAdLdpmitix7GFY+Wi5yAsJ/pHRtzDTsAqaKP1zGD9jeIBksv7dRVyx1+V9mUwPL+RNvZ9DA/9vvZCAjD97DGNEqip3a4q0LyzoIt48xD99rIPZoqc618Ue7CxZ6OBkwMSQ1OxX73gFORI3tg7zbL5zukAaFltUbmpz7oZxtB7WraSBQQwSkvuba/XwJkSslNqu2/BquUZa5mmtr6eV2L4jK4m0MLJYMA/UComFVuV9o14Kayty5aFgU9aEbF3YmNbTFCNepHOlaUYBQPsZqUksApel9QNP7fLW5MBNX81+sE63EWEAhwwSlVRErtMorISB7BXCah2/hgkAR1O1bYTGDgBdM12kebu49loybuT2R89hwsnURZltPYX7B7NAZcH2eHdeeK83Li4Eimksd+9XlREj1x/PL6poyj4hqjPqd4p8x/hmJDp+KDpQT+e12xFutEUtFYQ9uxI7D4jt3O9tiCuXHLTFWdIAG42P7EbuUAdlpxmbcGiOjoCwfzmuGfySIa+zZSo6qPtQ6tBeQR5bAL/c5dC2m1ur9iD7PAul5bBF+vi8acY8hoYIXo4bzD9JyNCzDaWn7OqAwQ4A7QW+wUmNC/m0O0ap4yYk47Hu87er/+l2+4fEN+NvjGxt8o883NvnGFt94xvsd3ncNyB49d7jLPd7lgMP7fJNv8WfchUSXux53u9ztcXcDZMrdTe5ucfcZ9zrcAxyPe13u9bi3QcTy/7w+9za5t8W9Z7zb4V2Xd6GQLu/2OMzvu33e3eTdLd59xnsd3nN5z+M94KHHexu81+e9Td7b4r1nfKPDN9wjP+uj/d49nY6rPsLHfCT7xpS0CPpGo9A5puhhj0U1bWRJw9Atz1/svtz7dv+vB//73avvX795+3/v3n/4+Le//+Of/wrCCJzC0Xjyn5Pp6dl5enEJsQmvb3788lPH9bq9jf7m1rPWumhmQTlS0I5fmqaTruJxrN7deGenx/hk9jp47YzZEEsRAtzmX7g46NobUJ53N9rZ6cvKqCJHbNiE4n7Bokar/S5jPKSvyndCZcEiOmITslbzh8sfzsD8UHLIGNmuhrSycUJKZBzCCPIQJuuHx8/b/wraP3Xaz35o/bD+gzhaH/GmjutBRo7HSs9Ay0aGlkUiOSzaYFCfdq97xOPanLQ2Z1yXU2dPI2yRWGpAvwejXgqCqgF1YtWCvTtURw0/rofXCta/G7OScaXB02YeP58lsyhIE0eDvTvAcDIQiEtOQhk1Sh0BzC3haYoaXbkl4hYG9MHtnMP4hD/KS4EnmORZfCJbSYu/JfYt+xyVAVuHg/Nj+FS7sg1vhOmg75EjjA7W4aUoOa3WmMWHaat1VLRIYxL/MG1Hg3juWzw5YY56RYDH8G3fpGO+Yt1X9cAqRMXBPxUujw/HWInKYK9EYH6KneJYT+ClsT3VYztVf6yqb3dNReNhI4UxR0BP6hAsP3ZB/TDSD7/3seC/Y0Fj8WAQVXXmMZ2ibluY+csNKarzkCFQ6sivoSOdQke6Nt2X8lBwTYNEXc6oNmdamxMfnsrOh82J6qPGBYyNo3Oy1u5ha3sqe2pkj/QwMWVGPz3FfootEUi5QfXAlqpZn7jFaRlabDn9kwbbnDsmZ9Z2qcza/IayQaGfQlOlS9jdsba7ZVcRpjwsVTao6AmWDE9aYLSqQPZTigsHmVwytIf9YMX0nlrHmdKmOh3x4rksRiKyy2NkkQfOGz2LNS7O5h832pZ4pc+1tcvwaVo6hNdQsVQEOXmAo+Ecmj6gIVi7vA6gNeUij/B4Ofpz15MZfVz0M+M/BzwPVtgr+UCTMyzHpqaByrPzkNHAGsslbnwYmDXQE72bCmUZP6cYbOzvSZjF1sf7AIPrYDLFyM5rYGp0CdFQWSYM2n5wlZwCJzAcCIO1/33/5vWaqvDkE8TnZDrYWHKl4Dmk1AbGCCAWmlxtURJW3IVC8ReokKxrOhQFA2lOYqFT4RHeMaBsnoIvPPTnvBgn7MFVb6hBX22yqDpjBbBhJlcMnjLZKKaRfKRYUL0s1fxHJf79FPmPcv7hXfIfGfzrNazUn6sIRSqoTKTL8vU5WhWKSEpeej2OoQERM6OO82nlevWMyV1MyBs6lb4XxvZJMS5n7N9I+JSBg2zRUgMZm0/qf4TBYINhAPgDzDCCZvIDuz3K6GihqgBUkg6wqePqxUDPx/AdZJg0ACS6On4hSiQWqlTFeczmc35d0gSVJcHm/KTIUyNnCvN9686NEvxh8yYJm7wJ3XQ2bh4xXw/GwA4fSWyuwqROkVEgm4rocHokIxFBTTUeCh2PxJ1fqWd2S6qFQVeLCquu45nK0OmzOs3F3qFMIi4Jo2DHwihtjoUj65WisTwhietewSuksHodHRwpwfCRCZIbszx+5JOx5niUtTva9swQWG/5P3GmnKI7pgzhRzXw+Thw4owNpBiRyEBZ8KCUgzKC2hVB+JloFDEQ/tqAjxBedbOPl1PLEub6sTO+ukpnQzYAX23dOTwerB7/sH70lA2Gzg/xU+asPWX/sz7yQ7n9dYAxG0VHRuHFyOJOoKyLyJpe2fTbT/g34LNonJwmA4yHy8cQ0weevCOOkdjgqQtP4FDCU+9ozoI1xMFrYKDtEJYHawg43EITq55hVRuZVTFfFe0h4bXQ+24pyEGv1y2jzUw87PNWTDawlYE5YqszsBNS2VAk44ponttqDtbXmy0qiqyK7Hf7UnBKcWREs78FlxPsEJblZktK43ZuxrRdbZYPfweVAMexQBNHwTdFk/EU1tXjoZOqLDP4Zsx4XE7FryrZQEPzzG5JsxaCexZCPDFxeKRTyjFz8rjg4MkhpArxky+bYAx48jRq9p8zO7MPst8X98asUr9raBxQcpUE6ODBZTQeho49w6g2VhrDFwZiHyPvhU5AQ0Teyb4F84M9z9JWAY/UnkZAwh82GYg+tUQ9TRmPCkkpSt2Hcs3ou41O3sKg5FItZexrQBxPPl050AhCJkfD2/nAomVOlEf/xL6ovNRByC8QSr9FqpsGKnGQyinLaXCSvEsgZWara0kakAG1uVW9fY0KUhQhySiOA49vEXDp4whAkQhjyFmeVdOgkQ/adUoVC83GwMkfgRjsmVkVTA3ZsRldO6aCX4GpNAvPr02I8iYw1Ccexodx/k3i0SCcz8kH0rLGi62q/n8gZBxECjAfsKER53kQ+GEGIY/0OvJLMD0VbzaNMPKdPCLpELSyFeL9Bpga5an/r9mKMFUPi9hGNjfd+ulB5mkx2t7DeGZZkX68nfpKRGPwHuJWS15xE+PgLuNuRzKEngQYibH01BDgCcRrhcl6ViS1DiLJLG0p8F1RUgYTnuZSjUc1FbHzKb0IH7pajH323prq6oyy6jhjMZJ86xjbh6Oj3NKNh8FANrTyGSsMleXasAmWzD6PSbDRdqw5SYGTSAs2EiJm2kHF8I9KuihQJ1VM3t1ZhAqQufnGFx1yO8AXJc/qZ2cByTJUpNFdKN+4EGbfkoBLrB86SE5dD2tzW75ZWx8pR0yuwx4eqRsdcNAzXBOm7vOFdNOUxtxwZtoe4zD65VZ0nAedi4UBhotrYFrBkUH1iAKY1zRnzYF6OG8O0u3c6cp6jKaUp+Pi9krLPWIDndPcHu6AEVdSVJS+aeaZ3+RZsbpcjdCgKzaiVhOx5zqxUD+aQ421MWgyEudr+a1P7cxKrWbqL/iCcIaNM/QGIZgSut5j2ORQeT+mpHjYXGsOYhB/ZycYNttNsBX6+yxa2yairQDWX3Dn+dvJj0nspExdVoQ7/d3tMYlQPXzTHXRyk9hyRpCRL4COWCuW1ipPGzFajQQf9rY7Z85Q/BAzXIj8H7fZisG0pcOwlXMTtMcmL/rwmscGBcHh54vWeHvC7Wx2N3vultfbFsGwKGgnWKds7nEQE0d2myv7kxfNgdvpbW1s9u14Ks9AajRXvldYtUVBIR2k/h3ClfNVltwqaeZHBfAqpoO3lpq13SfFKwKabFjAue4B8KAMNqiA9RFM3bBUwi+Uariya/puD6SslcB6j0dY/hqf8ZLn22pFmWqTIqLn6nZkEUrfU1YgH+bhcVNySI1IReV69K2nX6k+KBM8SnMFHJqQnUJgy1YrJPNnuvIN76mz1c4AWyHjabXeuKG2taN20qBeOMipe2zwSaMq3qbCPNgiIZnv7UwpwmZefZCRfkHIqQ6WnRY+SVVB+iM6W5faJPXh3KpjKz1DBEOC1brl9u3ZNp1SWIUyllOhwyOb0oTKshZWgSNjJVSZVtTUIgf9MgdufzkW8A8OZ9X7QxoeDaPTwl6nbLwW/MGBxW920D+YyjkAPONmhc+mYppZRldqvIbSIfFhXIvI+eTX5DzA3PYaABNYLo1b7tCRD+Kay992sjbDaxp3IpzFYQI+qDS5GkdEGRtESpa3MntwzQF+cD1ncyVj1CtyNaWDhMQ4zm6QcpCTzYKHOzqJFwBaLhpJjp0qRwnXPp+pyRBmbWIWomAGFo2p1TYdqDaFyc0EjCfEibwsHVUrhgrnCb+WLY0lJ0qup8K41AcXoePPwHaRRu5+h3MwzOu5iuASjyyykR80dfkp8z++ewWErs9PEjWthndzn0ZtJWhcNk+dayP+MY/zqMtjyEAfQXLedoH3OTNvDCnuH6NWxvhHqyXal8y5xW2Lv8Pt8ckl8jFaKhIzrJzFio9UR01BV19XHZtHlZ1CaaksLWVSs8B0wllaeVWen1WVzXEyo6iN2BzxTC4jNHxmLOmxUc+xrZ6AHEvkmKkM5TjHuL0YwQ8C6Q0juVOErD8x+lKIK6VOCsq3g/1jdRUft5M1jLORYGoqUxNMTSEVZgOjvAtkDo5FWRqkLblK0AYNQ/WZ2+JzB2ppgQe4OI7jUXZ5UlMqSROXomEXI9CXDzK7KtXugJwF15NRAIuuuMQWXMY3wSUGVYWLovH2sS9I3gDpbOcvaxborPBM+e8F5vezSBJQ6lmm7S6Lj9fPhmVsr4KtDDP2TzUoU//ELoI0nMOmU7iIYJZMPy3qMOQYNSg8tjFqBK2eTxl4BtdHsqbOo80dQD+HFdc59nPjXjneZA5rHvFbrOqgiQvm+o779f8E1wHeO51eNefSUoDe46lI6HBmHHtzdsisk391IcPqqvzNr+HQ3QVn00E5Wo0TcQWcXUpQv/ijLtIEFZe/qOI8VM+qRc6KuyQ4ccs4oPQoY+YMLxqjTmfYZ3ie55c3hWr5BPtRtKZZEvlT1r/yBHlPAcu7Nr75xUxzc+gUbMvpdkJuyClLDk+PcJmuUaAB20OXIjClF2L9zkQ1MkE4jGhCE+aPyGXe4bPFAH5p7krLNSVau1Wo1Wut0LBc5mtJjyEwxws8/jNbx5o1OV2jQ5fnmD3n5FFFwD/nvrs/wM+bpOPkUmQPsimzl7VgOjq/BIcX9lwsaUVYZQN2Fbm8wMJBhmozxbiiSLTBg36ekccZPcR0h+zYYep2mLi4wYYXxafqvv6VnCv8aCAsnO/PqctLtRWDzi0hxPwk+TKIeJxEl1/Sq8ETd84q9XqZRL9wzX6DinUKFbtMRmiAL3O+SnULRQh282MKq1W7AexYM5teHIZHIkKiVE8bPRs1VRO1QmahPGzYi9PTH+W+2ERg+TA85yigZ19mQVdLRBFIpqncEKnKFZAcmNJ0XHWwaZMZbiSrd7haBGaOQuVNzvAZGc6DsAMLuj2GRDNrIUpJzmSKRtP5hOuXWMZzDhN9Jxq0cUS2QU0Jyk2BXVeL8HZu3gwbMunxofcHVLJyC1xY6k11VVfUlGbpBcmE+uHuzg7bICFI1p2oWCHttVVWW8HrMxihIB2Q7z/JpK9sZF4CNzC4wSQ3q4i3/5nvPjNrnH2K6JS4VLAFLp/gx1x7uy/QgaBK4hkS8CR3X+xW02FnkRLSIBbWgbqoqjzkT1w254T4+ewBqB2mbzYJcdsgrFEBaMTr5BLmeTempudftH1TpCttXIGAbCuqF9j5J4UEx2wYc6G8qHsd9a40gkyKrSiSBDZnMcUxmz6EfQDKDz6BhfxWFod4tvQS9vCJi5b2vy7jA11GZcjJaVTvfqMMsaTnWKLz53QdVd0sziM+rCnP8ut7kfQWoTZYJKom5BZzHyoHSGXlG7ohOn69fHOW3Cw7EZocqnWQ2Py8gha1Y1zxnVeKwtMb4jCkqBCML/dCm+AhLbDE0qs+DGhxURTeWu5qz3vWe9bf9J5tEFpCa8OHwXoO0b/r8MBAOJpbHXZ1fjRPkhZqVnqVcPBpTBSWdx8oTqo82yhHKPVeKqrsEwX0DDFT+/moCFajCLney/OknyaU7Ame6XwwogqgUYHQzFscG6pMFUa7UbY9ewrLt13kFuy8E+HCDUHkA5AyPWrdnJiTK+eFGsqL0g1dMeWZMeUUMHhRAqy+INRoTZdwdKEWMcXJ71AEcWITQeNryQDGeOsVJFQ9IUo6Oyy+DoqvbcL0g+K+UATCpQ2tMivkjBEzKnQFuVTk7ZS55PgCY2vUVpsa0U6RLfikg5CDPKKDU+IoCqNFRgDd0V/dCFD710Bo5u8zAnQkF3dnYYeCfM8UthGYNeLAwd8o+h9uwuoirwUhZtezs/zS0ObkuikPd+TQkSOL5IQldB6h+xJ9KS6otr8Hc0aVgrfj38S4+Y2SZCmbZPWHs3uPlw41h0VWRVFRaaTIJLLfg5kkVqxmsvFb2MlPoXXhxLST35acpbDGToaPtpO0fFRvGfPmDi5xHWgpoDefr+5dsSFIFRgjE8ki6/uELONDrC3Zz1L9G2Ubuix3NmtJi7aGaupN7Ji6+sMtmqZR5QwOTu6Umpi2WXG/t9jJ05I1SYvWpNjTMZtXjAKhMvMIqVPqm3FlmaazjV+BjkQJcGRVnDy6LVamriKEtGxtbCVR/SwUcViQhmHEVMDtdol/NeLauLSL21oIyMbWtBZu6RhQFUGpCUr5SZRvO9NJo3upjdoWeoxbusKIgwYvSza2krX3sGoXi5PfRxdr/JJ97L4eRRr7R+ljD+5R9kr+cbpY4w/fx84X+x1vfm9+x+NdivOv4FI0FvgUy7sU5z/LpaCU34dvYVi2+8dhxu2d1oT5nRg+QrLXrfGrWDOi/19ngQyZ1Vmo6VToXFxdLpxwfXi3nOFr/O4tH1b360+mHm74iLnlDF9qMXzpV7J3aa29wzC3yXaj0FmTZQ1eYrpxpxVrllqs2SlYs9OyNTtdbM0UnyU2LUjLM654sdsy9ovaotPH2KLTpW3R6UNsUWq3RQ2rPsdFjWOk4FXjZFV8gB9Fp4uM0/7u91/XK7PYoa9tqHTiO9Hd3OxtbXb7nc5cSePeQ0am7QqXtF1qGc+6T2yYMiVRFcZNdCTS2G+MRTOI4wkWH0wxYrMseGgnVoRkg/ukcRWMdFnN/DG7fzFPGLjeFsGrAQQkkB+fgf5JuXaeIIeRdjOew2vb+kSIEkPrWyW5Pv98NYZNe32eeQUAV+LzZCajjpxiGBCZpMjRWDEOZuN7VSevEcG//xzC2UIbgsXYH3a4/HfEywQy+Czs44sJdIBM47VxHeERcRDUXwHrA36/75Sp8EaVCl5fFhVGJdeTd1Mp5P90xGFkTpLrX1zt56LtJuSsSmBejWKIumIdeayymwHxZVmIiqcOHlgIspkdykmcrafQG9nc4hUAMHkFZYNpNw1jqy6PM+gAe5fuPFjy2Ah57kRiXHdejOEXyaWP7UoDLZ4NpxaZFRpkXGmQ2RKimvHDsSn05V6OGBnD37+vdFt0lup9pYqXcVxYU7KZ4lapsPmv4E81vo5DpWV6eneHR+GGUEJa4pfb6p9wS6m0uVSqWsLYYLEUF7iMJt/CUjpV1CpIq8s4/2oeo91F5T/TkWx8JU/S6kg+xJ4UW6hiUy2WI06Wtxxp3d51+si1JjuTZSfhsGPb3jby3QX53oL8ri1/gcQbJPKcGG2lB/hVerH7BPcYu+DouEgGk6zOZ7kJhpb+XLYctj5fhCirReGwsfX7E2joiDzNKN8gx+9968wPQRlent0PVit8lSHd9CmqlcIO9IC+MmL+SBwe2RVWeycIVDz5W5ztn7KsIuW2ncGh4OMR/KG6FgWDKeSNOBZH25RwjqGvojddc/lhzxOX4hxVm/MU4ppM4BRu7TUH5DDHIsx9Mo6rkTDP2EnlMmRwmK53vTv46t3d3u667fQbGdQUA7Ycixj+8ujQlY8uPnry0cPHrnzsZmu8KXxGGfM45ziqcIwgtcwGQGnVBU67GFDNb7djhl+PiAD+wH0o7p0DT20XYBjy6YfSgsAfzJQBWkPJsp5mWqziFXr931eFRlyEokEyi0BMXW8noiAYsSZ+ehgdHQaH0frWnSy+99TZbEffbDGId3zkh7nk4FFLDh+15OAxlxyFayszq/S8YsAV7YhoR0Q7ItrYNuZHDMWqO6FFOJXpUW1Dba2H0Eq9pxFIyO3DT6rnbxHTlxygyEbZMX/yqJPD0XoMEhMu3hoJfxxoz/bom5g9Df0UgjoVJ2rQs4tztVzhnUReEMcy8aWW6liIWM8kIS+8EYsI1cioip9K5ct6DVmMkYgRFPchfJYrfnroPR0dcVmLwyMQBN7gI3FGwgORxL7hNENOAtitVh7uAPH4BfwkRyiJVgJUTrGtL7ADnh66+OTik4dPHj514Qn+HM1HT4U3TwGQZK1Ljltu3hwJFnIcZzwGSD1B6gFST5B6gNQTpB4g9QSp52FJ/sRfojS+6qco3+OxefoexUj0raAP/jCFUP+kX6dQBb/qJyqNh36jgmFB6j+DhXzr/YQojGS2ZsLFhSAiMYDLD9vPxKG6canHt/BWpS4G0ecwdON9SRu9o1xNAm22vA2MRK6H91DeXxfgl7UhXNbJ4akF6fCGP5By7G11/QMD1b82X/b1S4/5P9EjFokl9DT9faRvlP5T8d0Mqari8/ART/gpv5B8AoimcwtG8DhFruCPh3+6+Kfnn4pTuOTq+BTvsjp+9sw/wIOxp/41dAMR+RcigAdcQIJkfyTDNfmJDBHoXxyLC6DVOz4Fsn38C2QAxhkfj44TJrOc6LiRMMzHR0xGqOh4fJzkrN/I6t4AmzdQ3ZsjZOACKgpPwMOIX6hi7i52gFE+EiP5NsI3XwV8i0Qq3AEuVR0Hh/gPyB8dgSk+FviWHsHyD7V/UnGNyHeLOVDio3xNkk/F+KkzavVbLuOnYgTWYirNRAxOwCnGJJIrEN+Mhk4sDg7jnew+sSNZfZWypRPcPiboly2d6fWOjs+ARYTnaavFBn3cS+4pstJNzQGJJpZCRAulbOWFMB6hBJHR0dFxjLbHqHcqfsLhaQQ/Lg6OP+HAdA0/3SN+IyKSyZSkAfYSLP+0PZZyOMWr607aYsxoJeZUCMxnN1hyIzo8OeLw2HKRjZNWV7156s1Tb135BiC0oa/CD3f8/W00yvsslhD7Ct7prrb32RGMt7lgcNZQkAuO3SQWfL/Gd/XsR+ImD2hDenFTjjZIF4m0QSf4mCd8yk/9eOiMlOzGSnaJkt1Uye5UXLMBQOwriH0Fsa8g9hXEgRpGL/gNP+FnfJe/gJ4mnc8Afc8beI6H3YGL7yCXE3j38Bk9UJnnDrr43iUbdSm6PAiE6wfBNs48goCdidHhhVax8eENSQdcj5NcNMfTwxAfkF6rdXnEdwHtJkc7KaCFJtpFAe0FoJ1otMZYQhLehYl3U8ALAS/Mi7sooN2YaCcFtAtxBmq6C+r4wkeHXZxmdVU2yayvsk9GnaWpKlbbj7TIhUIlQicVQmGJ0EWJkIdETgpEwgqRixKRmyIR3chCoRKhiwqhmyKhopxIvU+qMQWaz/fet5stJ5TfHt7dyc+JWDH+A4/9WOQbZMOaeBtOxMM13CkaNGyRRijf1z6+2or09a9luWSs9rLwygIAOYvQqdLrHnQPKJjHsYg4RkcwfUcdwmAMj5NrEfoj5YrEQHtOE37pJwj5V+LJJ8XPnlrSMC8WJeMQiBPnFkN2BFwVVAhKwlGUgxj4CRQth6KBBLoQLRpVChJXQhLWCGzlwlAslfLCOStU4GXy2Ap0HlABXQpVoPGIGnTKNSDXrSSQ6d1drNe5IjmX9SN9Twk8IBEZ8y10bmkVD7w6pY2DW71MNbCyeAPTin/f8CCLyhAnSwJ3wLMAUUECxvaAFaVKJQy3mMJ/VPbgsTqKRjZzlv2Fy1G7Or3A9RgMP5kPzXd3Xq/w2vWMV8bs+/WR/s6t+m13xB5awm0sGhH5o9by9AqG+en3iEX06beMPI3iqHCD5CPV9CreX1zcNUZOMxYz3sYMuRnjbb+eLphKxDjK5laZvdi7OwzRSdEf+4W3LePNfnQCmrB4diIWMiLtofwiicvzwVweluPyVApdflCMMJKt0t6IBE0prXE+iXWW1r/OXCkgJMCEPDiLv0u+2LuRUmbtDedIKkaH2m6+8SNHDhH4qTkvfqeOn8uyLB+HDd4oAURhRABYzXL+JyLwxpJ/buSjgCr4V5d5PoqulI8LVlnsO7CSY9HjB/yan/F9/tN/g348cKUlMFZY8MUvZInGA5dUgj/rUkpwzxKKUk71SCsuv2oAkGAtPZkI+Vd5POp57XwSoyNk/Kjsw6a75q1t9Tprrtvd6D1bc/Ff80g0L2cBeS9NH/p+IUXYEWso9pDiabyBx0jevX9uEg7WbOnCSqWO/AaSn40D10rfmiGsdOoK2MQCEB8M2fO9txKMXjHThlRHbUtKY/TJRe7wV1ih6tCfIXr6PgXH/NMkiZEIvQk7Rl1Ld3TF3r9/3n77/r2Eo1fIbNjRagm6uilgXcreGPYsYSdWW4yni+lu9ezF2LOEnVhtMV1dzIbr2YuxZwk7MV1Md83twR9PaRVYCBhckZh6EgWIMorXz1Q902xRykYEb83tq+KhqTC7B3lGy1BDiDpYv1FHxxA9SVrUwdayY4iWJClqYC0NBC8b2qpoIyIsEPaW3VTCwPjPiIu/wg5lR9cymIxgeHypidCbsGPYSSk5JGfXyfQ8JWqFBGHFqyPYI96en8V7Zcr2HGGn5DesZSjJx5NRMrsiyvRup1ffGlKp9eyN6BUShBXPThD+LwmeBpPp8zi+TGYzpGe+CzuWnZxqbgjkDicVInAhkvg1OOxIspwm7Nh2sqrpwV+7guH9w5dUUjRehR3HTkw1uw7f/FK2BJIrJAg7np2gbOOGVCRw1j5MVIWNV2FFqqPWV3X9DLW7fA9EApQZUiyl2cnWNvSmJDsOpuiMJm+D2ezm/DJGupVEYcWvI7xVbnJDkSzJwkqjVj1lYyU/QkvPYLjQN5kh6XKasKPXKqoczz9dTpKzePol01LzXdjRagm6Ugvk9ZYwzzyQoqU3O7X6fqRHoR83Os92EzjO9wlPyEseS0miFt0+VEMOvCrqMCN/EYyQqHoStfALyKl+n55Es633MPX/HCfxdzltS7K4h9L9BSlLANXXxPWjuA/jXoI9SfByqumpJ3Ef/L3ktC2AJYkkYzF/Efeh3UtV+TLBp2RXGb2ZJl1Kqi+gzi5saM8N22jj7Yu99x6SpTdhR6kl5hnEvnv5raJGr3Zy9U2u9TQNE/Qc3//1OYzGsKEMX0u82+0hbXuOqCVWX5BXKajXoXKsGaKWlN+oLadbKafbhk7xAWL4T5OXagEJ2VwEg2TqSqivZa9SurdE6d4DSu/dU/pGbWN6VLA1+/4yN+4ps6/LvCk1HxVpy11Qor07deUg28CJSnvv5V43L4ASrDQRz+79Z3oZJDMQRU6PXjHTjnYPxZzkM5IBvdaTvIdmL6MJMyWiSa91NHsZzQ141V7e6en5WTYg05vIgQhBrWYkl7CPkCHQm8iBCIF8q8t8zDdeRQ5GKNikalSfXOU45rvIAf1GjrUlObvCG0Yu4fbE6wls2mXIlmSRo1HBasUBFj+Ds8lPwdWEhFJOE4RhoLtl9GD6EZbFiYgtRxB2ua3d7mY39xzOZuCC5K44vQk7Ss6Xp2ccAXz2h1tCX6RzBMMXLslcmmCedlCeX8EaaPgZL8KjXK0q5AW9PYd1wEkRpqcpfES//l2Ca6lqkZtgtEVC5C/fB2mKi62Uq4fdz+HVZZLMYJwFEgEc3DZAVI9HGFwnfz5V4qV8pQiT2QzudrXk4gJVhvxycgl/zy/tNdbqEAazSUScFCFUy0ARdQAe1bYOpLuwlJ7Bc7n11mzpglALhDbM9kHk7FkQSAFBmfLLyTU0+Hca9i309/O4AIZNUm2RtWKKIPACsrW91goJgoCpy+PrsxrZrZXTBKFQ4dmcJHr3St0CWchydda7JJgVVViZc9gGmVzKzoz3DBXyu7JKeiaG+9PncRGgJwHULh10yQqBDV32y8lMaSYQeXteVgyvn4kOelEFtACpl/OmV8Huu1cHZzF24fNifbeWJvasZAoOZFsVjEVnQcfoukvVsOvVWp2GAdWt2JQild7CXtjdWM5GdvuLSW3qCfR3RkczXgUBFmxnX02Pk9kYDCe0UsFoaoUZT8LJ1fOzL28lA/kCbB89Mvi3Cc+uHqGvofdAdbBwehMWcBsRJfbpBESQEaE3YQG3EdHORZy8Vwszkgq9CguCjUwvXy+D8fsqifI9n1KasGDa6Ek9v4JFovdXwWmq+TLfhQXlgXu2/92zxW082rTFN7+Q+dCD8IiD27aNP+G+LVbtt7nbi2L3BrMzV//oRt6dwuKkuP34+uBve7CD9GrQ4c/fvn11sPv8w8Gb14N+j+++ef1h7x8f/v3+7d7uwbcHuxjfgr99d/C35x/2BjC3QSrSRb19/eb1HuC/ePPm1d7z1wOXHwDm/t67gcdfHHx4/+Hdwev9QZe/2f2wl731+OuPr14NNvibg5eDPm+8gXnw7mCTQ4F7714DO1v83R78PON7rz9+v/cOynw5cDt87/sXey9f4rPLP374dguY4u+Qhtvl7/f+7+Pe611grg/PHwbuJrALrDx/8WpPFQts84PnG/rF84DE7oeD7/cGXpfv772GYl4d/GvvpUrq8Rffv82Y72Bt1XGjgnbymI/ZbfWI05jRYWj8qJGr77fH1AkSpq4QB2szPkyO8vsw8YX5YzHSp4hvr4KRbKxByFEZBhGPzrXzkcSDmMuYFzN8vLurcMHBCfmcDMZzdSwTOzV+85xc/g3T1aeNliucg+zL6CxuBp5GCvOoP6uQMMy+0HUcfN/EL/ugK6KcPsHd0C+L96QlQDm7MR2NG5pJ5jcecU+ItxNSCAl9q7M+GPXh/HzlU3KjrvleuTrH01Fga1/uvcPTUdM1mS4I3VfHqqb+XB0KDanWeDZ/FZScX8Bv1+XXInZCWT6hb6vI8glTZOrZgFrEK8/fv15zV2RzADd8CubyCkY4YgcvKN9eabau+dS/NpIlcyd8X8hzZw6wA3buROwjM09OVlenkKr781renVdXLyBZddC1vBOurrrItBxGoATkSwc6MOsOLVCUxXhVoCjGtoLu7szkss1gDFYCUEgnUn4Aed12VMHtxhljrdYZb7ev5xFGpnG+ZbdzlSnO5ojE8A/2nlx3rhn2Kt+Xkg/1x7ceElaXe0rd29X3VjsdNJK3eVUQ0g+B/sn8RHW2XFeliuq4/ljCmakmne1rn9kx+HVbnLUJlhcQkRwySuwXNEbry+vzszZ16UxTlNexAl1iopyEyVVCcXuKGgI0jebOzZaU1YloNoGrjn8GtThrCY+dtKzCCnV/dvsO00c3T4Qhu2u6qFd3TGfKL/g+P2HY6a/Oi12eAmLajmo2RkA6s2x38AiM87EdWPW6zMxhexrSGo7uoGMMxubF7cUIJ+Ga6nQ2y6vzpP1VJFSZujoO5TO69EFxWyfv2kKRvpavzjUvWE8ymec1mWVgzI/z2o20Pd7cEUYkHcqnRLTJWgMTA9YPQR/8+HwltGtBggf8GU/wYOuWfzOeTEGk2yYPuQW8g1Egi2eXpbXx41qR+O12wkyMYk3nMotCBTXoQ3npCn6o6FIo1A3oV07z/ihhzI/yYnudp3IEAKHLD8y522EtI8WVKaQvcfaFm/DAYQ1Nh/VWRlgYY3iCkTBInEoSKM9EjFDkfISS2+QwGDvJnUAR8bEyHQnjQMXNhTpSJcdiXBCe+n6eajE+jI+o6ykH/fLD+ZtJXOltkf/QAVVW2zT2fmTe3x6v90BkIPJW/E2vY96xBZwaho7FxQFjextFIN2EcUvgw+bAiVoCKTnjVgwgAsd/o1bAYISb+9D2wKLFJ8Hz95jFI2qAILvgv8M9hi0BmRsgw2joPut0WtHA2+u2Ih5bMDyN0XZ5asnuZQRHlsx+lplYMreyTJz3YGd1t4PCLWYXIpD9AfoCgp0It+M3WzjtvIBLINv6wTm10Hbzep6gJZ9Dp0iuwIn9FmYN/8R4SOiQpszP0v96/vly5qivNkHeJ0DWKP2EcShXQHF3d1AuPjCAsMn3pOVmJQfW7B5l9/cgqEK/8zRqBXkBQ8kRtq/TCtuNgA3MBAA0LlLzIx0CAD9miH+OTvQUS7GtfS3Nb2vh0X0tnNzbRNYG9LLcC/m5Y4efoUlo/gukRA1Dl8VhewBER/XUlyLP2eBfCP6lHBWUqL9kbfmFnVgYeEkN+dKWTQ15kjfkSesl45o68HPyVABjyDjo7VqBcbfHpIq5e11ler+dngdEHvN5Q9rcs6FTo7zcprwXjBcU5oSxgSJgxS6iFnUrDq5AoT4qa1PQKevXMEEeuUo2AQ6fPMJxQH/o4TSbLZwKFWrCWG5mGNOQCOhkkN+fn0mX36Vsgw6qtGPNURWzZn0/OcM9Dnvm+wR8plhmUjikiEa4gHk70WFwpFNwzABr3WkyDr+YkYuwBbpKYtynjrpAnI0l5WkT559VhrC4nIxwMLe5zlG9N9zGIAACRnYZKyATqHQZ3stDltI54VsKuOtt9hU4Pt2H4PYVxlZ3a6vfUTjq+T4sr6ewPLcH0WG7/Z5CpNedRj0yTmYjkX/ZJOWxcgUz6GkAS54+xCz9cWUyW+l6bVgbn4HvR2IToZ7AR37uFSkKRWE+xieKBATJLHwF1vW2I6bKW55bsjyoQ1RvdZ+13CAqrSjF+DF4vpTsYsk0UQLPIM5fVldp+dhYsyaAOz2vUljwUIuBDwwVtraose4Nh+AJyo/GWn85Wtn7MU3kjBXgViIEXGn+pUVorcZfmnxldH6FySEl/6X5F8bLvC0oAmEUdXxqFQljChKlLw4Lc0SBhRjvd3fWhfcCDLuVK/lAKpazMGCwtLim01kefVyP6D6AnmzH5QngCUuEToTABWvnqToocHf3xOWhTr84gjZwEkGq4VAWJ2ypI2zYal0MLCSz5TXGn6BYayT7wd5mKNmqsFeSrB2wtGwdAkGK9TTbpREWs7CBUDYy7sRaFKR4ihWeR4f525HQOIznac9hzboIhSkAmc3Ix4tUx2hVxbGRUFSkYsZf6DvGua865Prh8Q8/fO7A/9ry99Ono3UcKQDu6stbsDJXpb6cfW+Oc24BitfxR2IEn5JinDRcZ4MB4oezJk1B5WrNNYa03o6fYpipa3YCMCtNH0BPWk1otQG8zG4muGBGfQp2gQKQRWV5boAlwGEU2CGcBdNBUy1/+QVgc90fwZ/DRoSOH21HqOwMIJY8NvnjVVt/DxQBasOCm20gIMpbdfRg0JwXrJxtmZHpGgOaXixSP7reeiUGNiIU5RUHFtUSRtwTjN6l0GAvzs+nSXBmhaS9Cw07uVpRQ4kVXG96aGA9OFghcSOkSPoNqNy9xHG3JKsZeEV2sgcvM3Jq7ZA2ue3wuOdSxHiZzCI4lnh1bsfId2cU0h4cGb8Eg7NyfrlyoCMpwIIloDaquO/2crx3SWCvAe31ZCWcfT6VseBiK7zaDSLo0zCJY+jlb1/+zQqPO0YaFh+tMLiblPM5Da6g66wsJ898/0lhv8dz9CCRGtgPOdiVFaK8daWgpY3BgHgr7+/RxOcbKlcj5e8rzvP3uwcHzIql98I0Dryt4La5FdTcKyMUYy6gUK16QJtqCgve87oog573cX8sxi20jy0HTN8uGWcwgSVrjVCVheLMqMLqN98nw1pZm72uLghf40gMq+Uu32+JgoF3CITHLZePGL9uuSWigAx4Td5kTBtuCGaoxs4ZMn/W2s+Xk1W+3I+DLJ6vLlOvloGaaNkvXxfmgBpz+Znt6ip9bbu6GsOewYqZ4ChZN1uUCKuKrSZbAQ6LRZIlk3s3gFh0rfPS9abNTwxhmp0fkTg6SGpT5sP5X5MfCVZWNi+nUTWEQydZA7RcvHgnP9IFnnWK4pYvLowNxoKqRD1/OM6Q4gRPqny8+rSVIw0Iw9r/7u4IoNTLgK6mMijVAXKchczivlBRewCteYgHAY6ag5x25ouM/8jBHBu/UYgB8BhpBopvfjHzocdV/j97397dxo3s+T8/heOzxyteQjHeDYjm5ji2MnlcX/vcjOdmI1N7KJEjZikykmzLY5vez76/QjUbYKslR3ndmZy81EChUC88GlVoAlTnD3rKADS7+aRGStAE8nsf2QgenTtWaRdqMdi483RnBKPtdGHLvvC2n49nNMIKJ7yoRBBRKACVUFooI5QVygHHE0gKJCUBLKFZ1AuEpEVF6I5yKlURlkCSCiWwPKFrqqiRrwjFEcAkHKoG7oSMqiRPHA9PRweJqKqE1uKjSccCaXlzihkoL7T5eNLXymr10SQd4MgOMdk1n8Ysh35zzuQc50qWu0pWRxt9paP/t14CT45e7qTEyx8wiiig1x9+hTFZnqvJpyjnEwbFDF7wuXgrHoqlWJQXvXj7YLQYwoFHl5jD4aKHGp7TQw/f0sMkOWmgK/+/lmmI01beKF+y8u+0jXU2ent4gnD24VtKzwZngzmwBoQqHo5O6TEbvUUg/hzR/BNxMhjh1MuH6zPsABq9+zAxGRpdczgbgRAc2cPzFrUVHrcgaEND8OQQJH8RMW8L6XZO1v/v7c8WjoydLD6YrSXlFOXU4IRzmnJ6cM45M+rR38FbZHHKo7cfPvAbgH9Pn/6meZxSKdvkPp1sTr96OWrlMw6qtwsTbDactT/jwsTy1XqN+aWOR6cZbHbNdwubvq48fSL0vqG+l04DEOlwsPo6KG8F/y69zisv6t9E1wAp/g5WT7ZgxHwbLR01FkQ6LW2vkPn00y009GXMfW16oxaWt4i053O0cnHmdR9ig9g0HT097XcQ5WCL7A+7jUSfGLyfyz1VGe2CVdGIudqzUhttjFWV6M31nnZem2CU1GJu9nQFZBOq0Jygd4oP1k7rI+L6SPHRUcWKQSwR2H2NFRy9ZunemCZcPls1i7vjOpp73kwPw5bGg9H5MMfvDs7v57kJ/VqKc/o7RqfvskO5a/8Wu/Zvu6x18HYMJukYVPxBSo4HO914LeZ90Y2GspEURIjotmsNZ/kDEixZ4C3Q4aJ4x2ppA5Y1aCqMpfQdXjNlYtNulvymyTHMndsA1uIuXA6WG7+9yLxnm5sRtqCLvDnbw3o4D5fdTpvcZPXxoKP33tsmSm+S3L60I/+Tm/IcOwDXNOcShK70FFKyeXekbtMfnqeBcIQ5EUOAnkrMNT2p19PTfEADnaOB0FI32TQTBq2rIHUVpK+CTHm9Q27jFHbkWW/Fj1N+zPmBF7H6VV2O3h//C/n0AsoeBzLDraLb+huo8gdyN3qFvwHNftOD4W/pZNAqc3p1lblMRyk/xuQx3V5nvr1unbnkdeaCHja19WNebj5GCz/Gcqs8IFIcHTzGmdMYf0tecC5pFbYze/DArelLPF31ETJaDJRTwUmpbRycoZNjHuLFGD69lunQcjqKckafpfDqTsuGHTjsmvEhPQI/lK2ffgxmdHw7r+XUbyUNVsK9XyQOLXeX3aIEF6vKmWh+mih22zC+YZ2euhbJ6FoUzaLI30IU/4tFuXe+XrJf0SmQtlJGyCTDTxMo/Pq26W1kMSY662MV9EdluaU7QX8GS85ZytnBArm32beYjupjy/jxS7wLqt8uZSAOtO7wLxb0Mei1wQsxu13wAob7RG55K9NrD8RlbyWg4mrLWyFhb3ZXtPxV3ZVVy13pyeGqw19Z3eyvrDr9Ff7k+jh9Zb26wV+Z/jx/5Xp3RcztntHBmapyWjaLqhWcl1XjvKyuOC8zcV44L+e0X9/hvMxq52XRLNRBquW8LIqN44NFe0m6YOflDcx284r3DVa8b7pMh3sywIScF/qDFDkv3XhXnJduNJSh7UFOglyH9zItPAg6gvcI79/pxnuZFt7LtPReple9lxW1Qbf3cnndJXeZ9zR7LwV0lr2X1bbz0qXs6kbnZdXhvKyuOi+dkuZWF2/EOzgqXezR8l9gYHzxoKMwLza/6C+uqf/FQFHfudKr3g1Gb8Rlvl7vHTf3O3TGxUf9HTj/lhL2A9p2gbbFld43NgfzWIBkG6DaAN0GmDbANr3jMg/W+tsOnkkXt3d2/vw1ML1MsrNDueF24a0PcUalP+j+Cmn2L+LwPE7B9S8xxVyI1+LbtuvzLVyf7jB66doMe+04M1B20+JxhxaOqlrTWt/1DzkbU9b0D1NOilnCV26M1M4MsGqNZaUmfMqpQFll+4eUMyLxPxtQnWo8mKWE8mOKMrOX9pi9tLfspT1kL+1L9tLe0MMNL+jhh6/pUTU7BYUGO1+Cl19/CTk85KCcUimr6qx2lK1oBXZx+OW9nTeHF31SYEFl6wUtd4FJOWUoq2Kd1amUfx+wuPd4jQ2DxeFjWti/Rkz+ZLBqNiBmiCqK16MLDJI3mKa/FF+OHg7O1lI8TEH6x+LxaCEWsAUtn/NierG1mH68tZh+u7WYfri1mP6Sc45ybvCGc55yfnDBuYpy1eA1ct/ujnqtdbd2vkn8wrU3KLTLa/Dvs/7G5qFSyhunrQxChRitraxVwkgbjTa2QjJqRX5XZUT0KoYK+EI5GWIlYzRCW2dAobJB6FDJyhutUctra4KSQQqjpIvBSiW8rLR2ugIrq30IRE2oqJ2sggmor7xGUksvtFc2AEMaYbQNGvWIVDDOREm0rARM26qywLWQFBXBwAZIoIOoKqkd2EJUbSPEVVpDage5lY9IxuiltzF4ATyrtQxBQwGtggG1KHo6Og2kIAMkgBzKeLKGMd5VsBSSLlgHlZUSSsFKnqxhTNAWxU547w30lQ6yGCKlwFVHW8GSFZIG1oReIASBHNhWUkKsgHowmIIxSAdYVpKJgeKlqYSuDHR0USsSVhoJbhBFu4iCAArGWFd52IUEVNDRBVWhOaQ0EFZaGC4CQ0UZQQyaowKAIKQhpxVO+miDV154F6WXznkRgomxClUlIqiZiOqQX2tqFhVgVpJdS+oXlQWeqaoIVRzqUiMJTVJCbOWETmykdYAaGMBpq63An2ANpLYkk4ccKkBoLS3sbkHMGB2hpI5hfHunkXr6Zdtp1M7f7DYaLXq/pt94eWWb67LDbby82W28/KjbePkL3MYqSoOmTG4j7G6VsbpKbqOSisadtrXbWBkeaOQ3KuNiiEapKOZuT3spqVtrK+Z+z+kAVG+cmFd7ylllXdTafcirVyxaGwfz8tdzMC9/loO5goGvdXV6ycNcwcNcdVn5YNXhYXbiXfUwu9FQNvo9HMxLaoNuB3NxTY9ZdDqYi04H83LbwezS9fJGB/Oyw8G8vK2DuaLVHxzEy24H8xGG0KMHlzc5mI/6q1Gvm8Aj9jBX7W51QR7mIntuF9zcF+hFq497mLWDiVFFTwwhT0+PoUTPihzPFdp80R/e2EzMegVObYBqA3QbYNoA2wa4NsC3AVXT0RZ53F/xVestu39il7X3T+uzauez18r5YRvhtht1XOsP67pCt5/rvPZ+N+91LpbJcz1Pm3avk//6XEwn4pF4Kr4TxxMxmYhn4mginoivxTfi+9KzTb+s/L52bb9h1/YbtPU3cG2/GR/Ibe82TVepQF0taLZTuP5yBER4vrTvkW6Gx0MlP5gdwbhesue7s0RWR3IEkaMyz4xmhEo462WqQKjAWROKphwKtUch1eAqzFS5NteTDVdialTtfQbKactMK6YwZ6ZGMdOai025UOdcylU1z0XiWdG6gBI95YntbEBv48F8sCL+G2OeASrH5NjSY2fZfsdvGZiYJEf+QFLl4YpSVEK+Oh4Ee8MpwC6Q0gn2nFOATSdImgR8xCkAnyJlE+w7TgF2TIguASecJOgzpHwCHhHQJ+ATpKoE/JpTgNWdJzc+tfJTsp9df4cWhOE4G1LWIvsdsnH9FNY0TduhDiGvqYyQUtZyNlAdwl4Todhvusizw6f4Gmpy+KwGvR3tHE0Ov7u3M5kcHk0Y2LS/DuvVgwdEepVDE3Wuopx2/a1+YNcJMRAO4XLn45x2Kcf9oEeRiJ3FvdfrC4phvK7JnI92VvferJ/j1xWHbxpFvx4sB28Hp9zOA25vGhpPEPSYMVwy/IZuMhsta3LzwTk0PBk8vA51XqM+GT0TX4+OMB2MMC1Qo04Emv6pQKN/B0KPBjPxdDSdQIxrKH1XU0LPusBy6Dkm/tfiOdYvr0cLWtuknj9PgZiT62is6p693PTnwWpY93GGQOfFNZWHdZWChEok3qBEMQl+Dl5fT0K1SOhE4jlKNJPg5+DiehI6kehlGibReIQiwzT4OYA1ryViWnLYROM7lFimwc/B0+tJ2BYJl0hMJihyTIOfg+Mb5HAtIp77JRHxTISfg2fX0/AtGlWi8TVKKibBz8GT60lUBYnvd0dKh62QmlO6SfzCkBootMs34Gm95txcuNWwvCa/XmPJ1/mZ7WY5Uxft3MUNAbuocbefBUG2SxACz4aZEy/OWnloxJT3PsYUde6jAhgz5wOKbWyA47YArdIW122ptB218reUStsOqbTtliqXtrnmOGi5dF4hELq4PhB6m19RpAr4qUIZCu0ZL2PlK+vCWBwUgVEvdYiq0g7grSCptzZYEyPBc8RU0158dM4SmRw+BQvldbCVBriIpRrpTDBWeyJfBlajgTDKVUR+K8rqrQcnLwEvQq6a4jPBmGgBz/FX6Gdj9M4S2yIYCyW8Ak3CLiKzxkVJOiYqRZjWSh9U0JAU8CJmG6MyIKQSOMdvvTFBGqMqgMtYrq1iBeV8IHgO7GqPf5RhyxdRXmoBBeJkghzxhfmV9rqqiGkO/2qJQrSBIXARC7bRxSijVACXgeHgQFFpA7v3DoowMaR2WgVlyGJlzBgGikAypFQRQDYxxkpFw1LmaHLlfUVN4AmcA8vaee+iDaldyyizhsFMFR3hFyFnIFjroE6C5/iztt6DTK1XDkZXLhjtuaFyZFp5VKqiISI5Sq1UCIDG1AuKkLWzXoKnIXAZv3ZaB+lscATPwWxqmkC8iGeObFNDgWSFRiZ4DnMrqSy1byB4EfNWWvrKRZX6ahEAhwFkhTZOhs/BcEgmgzfWE5kyMq7IShaYgJdhcicd2sE7olPEzHtKeq0gcAB8O4DuAQR3gudourJGV9pBIsBzaB1wX0kwj4Sf4+zBKdik0iRljrkbBdIarUW65gC8Mt5ocI9k4hyNB570wblIKuXQvKkCdJI6GTLH6Y1RAS1sk8GKoL0JCoIbK4lKEcHXUE0aGxPTIpxvPMqND2mGK2L7ylU0pKQi2YtAv1I05nTUZMgy6l/BABK6e4LnLQBrgeJlsm+xHQAtfazNXm4NVNBLgRtJU+wT6BgjWs2l5s6bBqQthJHgkeBROR+9guUhnwkG8tPAp5raVxBROO9hyUopwo9WgqmXsL11Fu3j0miwSgVvJKFbCfPR4NdpAHoISdKrqKwyaCvLxtQRqimanhWaUlfcWSPNj86nUQ/xZTKN9cgY7SOBPUpU6gXB2fTNlnChstEHQ7gwoQLtikZT8BV0cooYSlWhyZL+HjJQN0viaQ9xaQ7WNGrpPecJrgPkoHkVasoIqRW//ZxUNFpsEFbDACjyCd/DPuCGxo6BUtYn9AD1YQzqwNqCQXRRjeky+vebtcHdvYODYrfByhC1cTwqin0HrTX1PsddMe9AoFCpCvgG8GIvQgGzgrA6En7eldAR2N4pnqzz/kSloSIQIrV93qmwWjkDqS2h5z0LtAOENVpGKNMs+KAJ9UhJhiYUE0ylJL8uvLOoop0U1A2c9D4JbA3aK0JzERSVR140oIG8Nl4KMLRRoeUT/woGkRCC5IqyqlxwSQ0TiS3MLFQF0tJIXpN45CQY0DQfLewSTDKHBobXQRneVqMZKbAieREJZVxlvHXAoLaWlYmwXLIa5IDBaegZGqU0jwLuog/BOG+ECh7CbaQDBR0gL6QAqtXea5XgKmoY3ASB4ipaA5VSowNkyErAR0ND4UjkK60caFm0laUBK30SxoIpOOm0R6qCDkFvqaJTu2jjeLLz0MVGRxNBmrusVd6ilUQP5tPRyZgKHJqigtheBOe80mgPbgBI5qn30wzjlFeKVQnUfNRNqVWUkvwGk/T6JbVEBbJR8hCSvtKhipVHawVqcustYQdvqV8aAR09ta3HUPkg+KDEzpg0n/jVjKR+Ojx754jOSZj328d6pcOX7tS4d/IGKJ06UZwWO6LftYo6GH9yzW7qefEJ7gVHhC4QEbronx9cjOsyzXHx/XKzlc7BPjudHMM12EV49W4fJxL/+49vZhePcJYG6JZ7sEqH7U1Yb3/+t7vKX92E3b/68e5+xy5sCw1ilduwRyjv2oY9hlWOH9AvhY/7+zdsw15j4eGstuImiMstxFQ3sER8dnCMIC3+1FF22cTt9+Fw7Tf7qftX9lMpyJz3U6fUl67upzZnx82b05BBqrWfOi/O0D2Ytze+5ryfegpL3fzB7im2U0+7rHVwOgYTCp7RH6QoXNaJd3U7tRuNt1OJ0Kg379hPPcm7l7QHQ3vP4mSzn3pS7KeelPupJ1f3U/epDbr3U6/bgZ9m3id5P3Xa+XPD/e391C5l92/cT+3ovff2b7ufOhen4kvsp3axl+P6gJqOwvKwmvk19S8HivrOlV715WB0KqZ5c/HL1NwQY978dH+2NXZYilnJE9TR/jP8zYPneGeOtp5e/4HEaZ5w6YyTzzZa7DXrgC3wrt5rkrYQ5DRJUChAwsBafXGJ+qe7OB6ueIkx0fW6ja/GTU+bfsh9bvvnj5+o7R8//vkpcH/Yu+2+qlM676tyfthGuP2+KtX6w+6rQrf/9o+Ct4PHvXb0+P1y6vYI6AQEVkjSQ3AMlHNItI5fcJwtfnbV+oiTE38Os1v/urj8cfGwLLj9T4u7RlXvX39YLad3xWZE1V3mzqeAOvylnsgP7TwleAhurpjAOWO//XjDOdbz5eR4xA9q437HnknxweYxP6b8QNdsrdNn4jQduk3FGEOzfud55gk8G81a/sSMXKHWmO8fjXotEG5C2WxZ1Iftlr7T/3y+Wqx+fAOfavJynh0nOlyVD+jlKkfYyslyQuhOQU/7p53ritOaypVLt1CyOW71dNhdtzxoVQ4X5X1ci/5pceXGAldu8E/FTvO3IZe4eqpY75EbsHEaxFHtNOycNgtRLCWOeEELhOvPd5heA8+sa7FZ5Msk6xyFk3SDQ74oxNnDeV9Mm3zUyJOhLx9syd0nYvPRFmz3UjB5NkVJtC96Jc00U7GOSfjpJv2hMcawMQbOuRac3CtPhm/KJyjHRzNPJsd7rT4/KWzXcOvgMC3Sk2Zay3Xh2c3qDPo888rH+n7kxfPni6fXfvPQXJXfPZQbbhfe9v1Ddf6Y6zrS7NpV3XL63/WLL+RySGbCx2XfpZNHp3TT2tnWcY1Nt7lLsa8P9SfzEz6R8mV5u9WU4zSbIrwnmgDW/cOdF98OXly8WPXvizMY+GiAWeP/4jrgHdgA1wtREZ2PTeMH8Y3yFq3MQdBpVGhl7+jk7F2FwTqha4dwr4IAGYrLfLYzGGDYjY6y1z+pyUP8BjrBoZudSDg9vMAaqD5MMtud7CpBcgkI0bx5YA9yM6EmDpN/8arIiE26PxnNmvmo+WzjbLbkv2nMTTl+1A41YVZNxTyU7+7SP5/v/+Wr/yA1+Ex2BiapxcnwiPrIMR1LSkelj95To+7dfQbYLgHvCm6VvYN6Tz/jf0ong4NxX2RY4oB4am+Gw193TqjFaL54hd72+Edcy7sqmTzigl0uyZxaVUCuoDadLb5a/f3Hks7j/W92CZYpNGh5/QEqGYoLZlDzFeSneBLX4l7YhdPP/NMxwXMEpgiM3gYhEMd60MByrzvpU6WMfXAy7m8bG+Xcd/pDJLeCgt6i4tGP07d4J+NiiFNMkeu1t02H37yFBnUL7//H4872RTeBPq1ukgcxXZ6Cjnr/xct/KzrKzsHD3e/lbty9Mx70a1qfvcCtOwcv/qHV7ot/VLMXL8eDz3Y+20sF6U+/j/I9VJzsvkPdwYv7o4TUb+R7oVLy/gk6x+h+QQxc9iDBFvnDPUDvixPIRtTviyVd3LgcTfHemsGqHIVf9vmQaF5uvSft9/jL2NrKHKne6k0MqhuZM3UL7cEYZPO9fNQvN8XywGBNt7nW5ZJ4A6bH2ZCLEeXZB0A/SZcm4mS51YPFpkOQ8IuDVZ7aYPTB/7iP8HxeWL4brQZq+C5XGgze8Uv5AnXfjZPOqHefjwq+oEBWbYHlAG+e1ejdBxJttESnoQOWZ1jVZuI8Wsg+zTjBoLgoRadJVexD+P0HF1mI/f67coyA8X45RUORpAcvGJse3k+5LdtjUdAe9JiL36UXCaPX7bJe50GdMS6bUZbEeJdvyZQjIG2/Wvpb3sVmZ+bZ/hNaLME8dKVDHZX99M5f57M7meMdZnNn+frlK/gjl1gPvMK9FRPkcDXAHczyOMj9dPopnJJG4nIDhhpG5OkDeYXpnbpavZJrmWVEFaDy3UafPP9m9W+t0N9/uIDEMyzWzl6+Pp1QeanYEVTObEgZMNaf/HJDZqodlnz15sfGgC+JaS/3mNH7+o3CFkzDmWz34cOHwWCVFtw4JP8///cznPJPr8rLYjb9pGmJX6vhYR+c3f4SrYS3dqkUXdNTCEJKwBvgTnjcZbS7NwtxNy9pb+1V/Bk1xnooOxXIDLeKbutSoMof06OAYv9EZ0fwWhV3//1wNp9d4F1y8sNLTJUPN1MoyntXP3nFlY0wwhQzU4k4Jcbt057FjPvdGV99Pdkcj2/2InZ9DUBnn80+OzBS7Gr8N947kMJogQSg0QpPUIJ4K/Bso6GcgVQePeoN+br2dFfsEg+FH3qMduhcMotD8O5pp9OHB264PMTlYyf4gx9EbFCUJxzv3Ha58kDgn/QcnvTvBRdiNNbFVAxEwtEblEAoyldKReNKjNBwISbKGgVGlXfFuFgeHtGPHg6JJyXwWFMNowQKKbfk3DmG0PmDs+H5YGTy0uK/RrhkinYQX6eEHotvKTEefvvJ6L+G3w5Gr7kx/gZGk4Nvx+I5i2zTb4ZCn4CDZLCTIW53Xg5hQPwq5OBvpLm95814PU8Z5VPmMmVCSv/l4G/puTh4nrFPkWmwv0oZxr44eE7P/gdiVXP6AIUJew21jQJkmX/cdJ3pykb6eAP8xFa8uSd096Zj9DduOIu0GlNT5sEwq+8/bjzC4xFedt/u3h3AvcAEMMOi49Hnj9IXIs/PzpqI7nQI75jWvxdvz1591gxTjjI+nnF25xgO1WL2tr/XQni0XVyPjCkH4Ib1szW71se70nwzPEY8mW8Eohcfr8UpgsjhzfSL9GNxjPdRGYD68fUrBBpHMyR/uCS78QQ1BfEPefM2zR6j9DfVSykWaH+VtMUEn0XjqYRmqtFs5z2U2ZsIZrQHMJtnDxu/ZMo9uraZ5E8b03f3H31+d4+NCzknzAPN0UzmG+ZsM+ZOTNl6pQz5VdkWgthdkePoQ39LMbTXz1RM/gqKgfttFOt1aibbmuUXQIsed/JX8x9eoiPQqnk0QYJqpwt/j3bep8h1fWQEd9u997MVM+qUbYrFxv+BdC8FWe0T1f8AwX46vsRCC4YCjO7hpzPC2ioUr1ZC+YHuQdr218nvI52YBoZ0Z9y/Hm71SpTwyQJEdDr7x1MsHw3G/l18QaMtFpb5isrutepfcZnX6WwXVe6A7J2XZDHEGMq7LfvDIpAghRXO+FDJqHST8oLmsvTXSoJG460Nm5QDJrB7Tnmuoqy2TSoI76VNf4HIVaKXTcoieEGMlVBAc5Wvn5XwlZIheLtJOOGDcpW1cpNQQjuP/6tUJxhdPw1VIRXkJqG4CvhtEtVYzIhvEFpa+gNKyldVpdUmoW1KRO03iUqLW9cYixPio2WslIOExmoF1ICUNwrigqKKWmglnbE2IWgXtUwI2siKKil66PQdekIxVDGhWOtiopu4ag2I8gnF+Rh1QnFWWRh6ngTxWhEbn1JoiQ6QlZHSXlukldIp7fx18LHoLVMbSgiXWgG4rawxzlmLHBJINRBva0gIPwVnLE5ZiWBNwnDa6hAIEF2soIVuCkMqjLIp9OJn18Tx/eDLA4Hb31cutEZLHheh0k0nDzb6TQuq6L0MyBml+dwiEsRUUiJtUwp0tWSYlUYzLDoP1S+L9msSmhM+JwozBuVddQPEbiDhCgT8FtumDps02qOE98oCanTOehskskY32XBzKf1inNfm6U85H8Bo7TyPGhoPOZW6WuVDegYp23kcNwIOedQ6pSlDuZBHaAgVBGKA95YBIcg8I9WXIjMkmsozxEEMH7X0UgHiYjDa1BCnA0MqGoh/gRQ8mPJ0QCmtgrZ1x8QDRC3BK6tBkVNeJZl5+NW1rd3UtpJqG0lEkJGb2kZvamuY+avEnidPL0WZVsIhXSGtyvSYToF5kN8a8MF6SnxOoedHRAwV87/t3Jh+Ti3pyAU88NP5Bxf4Mxjwi/7J6Kg8Cf3rrSx+cb/zJC2Yvy4XzF8fjp4Nn+APVsyE8jVQdpU/fLJZdVMZsAgB8A0VDSp56V5S0begoohKdiNKMmpDJoBIdiMKOuEnUnkC1DVR0hJveg5/sLW+Tqcv4G9gBj7IhBggtK7T2lIl2PKZoFMIvnnwKMdLvum/f4Tf0X+284SY6HUyjAcuEebavr/HpYpLKy5VqbSnK/YGgIFtOEdl6fk97jhP6GG8nlKKxFBuvJ5xRqbMScoonzJzzuiUWaZMSOnTlE7VxWyCa06+rglfcooJLzjDhFfINITfcIYJ/yVlmPBXlGbC1BKzCbtr32+a/PODCXrmePT94bMmPZscUqvgVBdevtGycPT5MK/l6KYqOlYouWW0tBaNM4VFK1aJs+Oj/qacFt3t8uOj41z+xdX6x3/P9Z92lP9YlD/6639erf/qIpWbjwlobpSwxxg3y2g+JqS5Ucr6qDFF74Sq8mLzymVAkCmhK+eF985bYbmcXyxNrYzN4KoK2tpct3kBWMIIGwyZE0Sd/zYsdU40FHlJzOR0TtRwydSTpJlnSyGbyWb5GbdMSJ3lZxKJbubJKFlbZpv5sEhXVcj1s6xZEIL1rppnQ45FyK2SXuG7tAqxUtNymdKVdTJAAqP5VRyUaZb5HlDBFYyTVuYKNtTpYDwM0CZKaSNtxgF+yaybPHO3tllElOxkSWxb2kyj0rluIV6mbHSQsiVirsul8ipdm0UuZMrlLbVZunZptnRpr4aZ0ble1rMtbyNHr1Cw02Ad5Y0ZZEsgZpLZlopfkdXatM53WrKvE43Sok6DHC+WFPdEpJWLOoMIIIPcLI6Mb1J5Gc5EdcZtPCrimRdloeDvlE68gs3oWaS2GCHjgmUJD5k90czcMq8SxgJCrJbwqlSZKdW4mXxGyCZw15gybOj3MvNMKevHWmV62RaZEqQt4VwztIwV2CMNJvoglQhG138UOBM0pmcIlanqFXekpb6B+FwpPxk9ompEKVfyTSXFHgJnQ10p8ckwogvusuGoyqxnClmqzK7FrFukLHKLambWbYZMJGuRLdE2U1bjZmWzLuwNaPLijJVViJUXKVFRE1J/iN4p3TjLQATQVJYaOmMCZrX3xocak91Jj0QuKulRMmjprKUK9Mhks7ta11VqKylrXC2DZEKUKpOZe+ZTVmpUI32y3g3bXMjCsVJbCmiXK3SaJOOWJsiC5SpZxixLrtLilHGzuo0Js9y5MEskt+yZcXtcvS0b1d4oXlbNQma8FJuoYyE6CGeV9I4XMCbYlA/KI1+WFGCrInutIBEgFyAa1KUtS5g4Q7QscHMQRnlyemULxyjNgiSqgBTwLJPRRUo2AtRCSsnEGxIZntlnkUqy7SpZXybZ1k3aG3TLuJlapl8bt0N4WcjTtEvvSg0u6LCf7FL4Kh4FCg44ktLEQoIgRxX4KWwkbZEHJnAYM0hvNwkvNjSaqAtAm6TNlLV0ckNON+S4ss0FDY26os8ca9xcQhIy3VIYJGUhQQNqAzaCZx1zohY6J7KkNZkscqaTBXWy5tKCZvUYnPXMoqNqLu1tE8pqZ0JZDIBZFg5cpXBd9KqJBnMUknqEqnwZF8yY3m6BNcQggI+oILfqem03AJ+oeyMtc/I216nJOV2nIpLCqkxim4m3mSaj/X/2vry5jdzo+39+irWqlkV4MDaH1EFzBKm0j+w4l5M93lx+lKfmWpLhKUqizVjKZ39/jQYwmOFQa+VOastFC4Oj0d1oAI1GA6B/LrERGlft6Kt9OWBVzBCiGJfdQfMrcWS4kM8fV4fjnschR1czLK6ssajjTIv/Ehv4PwfTYeDIu3qiK9OPJ/NgyHCeTPQRV5Ke6smEIv8oT6bWv9aVCZTtdWViq5AX/CXZh/6pXk7OXX+a3RzZv9TaslCebJYdAnVmxQ080U3A+tU3xLxYgBx5HZPDY4KzSTdJOiveJbeTTUGX60HArxXsZHp3ekkeuag+nebf91RuA74syFzfeLzxSJh29Hbzb8/e2GbfMH+2Im5d8m4/R9B/Ir5057XKsDtcR5b475Z8n8Jvgc2Feqcu3fkqMtZzmojvVC9edDw/rgXjcXeq3HnV3dqlq/GdkG+bQcsLZdD5uFxzHL1MtBbynXorg+BOmuQbbB3M50U+IXgLEW8D9dvTN+cXwwvvJgiBzvbbeApM3dDmj2FogI1+mpKZAwL2ttS1aRAUMc4VONdhh8VnJUiBDIenNve324V1Mb2/f4YS/BwjlRaGT7ZzP6ugNVecU8hMe0IYn4FMHqSTRbLeImFzfgg4DTWdt2ykE5rqUAw6EycuCMZGZlL4FZljI64adJ/hDrj53whwH+J+nK1MNMAYNmWU86as1KiNUwwawzakmCt3eL0889p4VHXO3h2dedMh2qpnRvMJWXLKmIuYa8Qk4Op74IMD8xf+/T6ExPjM3fJx9HxN3iSmgstiDfHMyd+DfJxvl8svZsvFiByUWyi3cS1CUxujlsa6mjfqlwluGsmKyawzfrmmMwTjsPMmjMTztbw055RLTtiePJcpz79bdXAgqVu+i4kbG9+3MIp/e6reUL8Tn/5xA5CtjwYiGnRQ3534B4w4e4aVB8Pa7QMRTOPLv4f61PoP0p+4BzsVynzH9QxPVaS41H+nVzjT1qxNtaAzUbd1Z07/6TrU30db4lvW4oZJGDMoxKhe6v0BFQs/FOl0cntwRe+/VXWqTgIS4U3Jf5pvX0jr52bR+P3eqcKdZMvl7AZeu9UroZxcYPhIwJox1JEifzOZFSgW7iuFR7JlVR5RTSq83gRA2XI2w1hBMg3oaPiqv7w7NI9KZnejCTpnXo7UrcSOdx4ODWOeiMt0d9K+PCscyUxF9Ip7pq9TS1U/0t6k5abOkLygZZdivxzjQACRjybt7NSfNdcvXbqrn57ZShoH+8Sh6MCnCO/JPSa/ypI9fIDn58WWynA71RO/RRxpLY4QVc64oNBFn3eHLhxEyD4qFsUa6OSqWzbRvGMdW1mS0caNPeMDHD2XH2zn4a8XLLb39+ZzfvM/OiLGQeiciPwmQfz8N3Tgi9idecO4G5Z3MiINMmR8tpuvoKCRWZAAxIXz/DlNY8ZuxOoCTrZ2IsnBCQQ4LLPyNrV4eYiG1frq/9NzOV/WoUt8P1sCOp3JvV1vtbqQdcZC8nncceUcrn+d1wjO/5k+HDljzauZl1/fLW+T1x8ztEyRa/Wo3Z45v/TGDFZbm/FpMJ9sodFTHt6avOc6Yq0ZC3GtcYpPF5OTzsnzTsZOJkJmLoa8T0BvoJBIW7MngjxNKIKSjsCJzqjtOtiJCOj8QD8iEKN2KY+aY/2zkWbVmMqedegkBBj/Rx/j3lEdX9kq3OUeTTe9j+F2dSTcTFqUfSpl4cEFtdxthqlEF2Onb+oMHLqdzAsOmS4y7ErXQYbdB3TvFIOVdy8Li0e/J+g2PBpuNvr+tyndQJe6Qc0OVWpqQsjrul79PL13luJaC8y1G6oRJDG/cK12plKXaCZEn2YR8+740anX0dHneHxxK0aziNCxFpzpY4vi4+13k2zqT5xZpyBH/Gs1YkCShyThjyaBurYd4qK84fDaDm2zji0775jSwg1tW5dok+JW04oZWFB3cqv1snpeU9lzIG6oZPuMnJcxkwWaiJQEOWsYbuW2aZiFst08AJVcjWkxFFfxca3sxtYdxIomxEZNiM2bEPMQcBI624PrrDpE/rCY+DKCpMc0i/v7UgVwWgW3yeOahRASyoFdn2VGCFqN4rW14jUrxWtr22DUsYWLXfGau0ST5JZCs8p4ERfnHvq1tUxhBiXOnUgvNasaE1IE45Q7Z1au7rVKKqvsaZoJaxUJDwKsEPsRpCnK1DpHMTsFZXoZJh52qp57ipsDVb9+hVleuQTXNif/vXLLYbvUzGTkVCXWwTgMRYQDQfTgaqY5s3ali6s/owV7jppz1AwBGIgsaHwcBF6SOc0DVU0UlbhDn79drqfFukJlAsRuitn3580M3VGuSXMDoQnUObNQNQGtoaODEDBUOF9uitcb9ONfoGaS3s6BkfoDmdGS1i/2olivpR/Bd0mh8TS0JM/3g4opCxh6c/tLjux80nCGnwjQ8NNCqw3DhI4GPQyTx4A5uvkoH9OZWjrTCp3eqiH1EefqakuF5BH8QDrmZE3vMCMk9b+4Zcf2p1onftzcIb56pgl8xdXEJ5slUObfxyjR+rtaJUDav8vtV4kZ8dttG3LT0v1983LfXb3IBgKe7Pm6OVe2JpB2dnJzqo5+8Ao0z0jVIihQuzSKNp2MVnwo5HTvXdhOl2nQi5rKpKDFwY1bdOpdZf7hCzoAX4/p7cT0qzGe8BTwj0cfBcNpoc3HLuPcU6/+KkT/znimhBJri7UeaCjg6fcrOnFK8bIgOvzHegsgVIuI6hG9WgSwcRhMPTsFIeMU1YqoBEGCQo67yGjv67XvkLFyCsmV4ydb3VrNZrfF5xsrNj9krNi025sGY8WiqUNsmo0VwKPZAjjGBt1CfJp5Sk8nIIvDJZpOYi25l4RFspmMktvlmqkYk0q01mP4GpYCL5m0Pzci75TGYw6k3QfKj7Ea4k/Ep4dZqb+L2FwunqJI2hE4/nB3o9Wajs8KnxiQnc0mEInfSdgL4sak31OSnjYFqeKrNZrzUYBGu5OtAYoZ5vLoKBz9M2HjQI+a4T++As/Gqllsg6bP/tSYV1T20MzxP319V6y35/xHmwbEExWRHxUR5rhTRcx3XM/wmepIqwbnv3ObhGlruhMaw7y+GRr/0Vz/BSsm/9zboHn2o6fcZEReXYfw9yY/siPZI1fwQSTx0hl8y/Cnj9i+jBB9Qu6aiCJ/zqMTFBggGi6jR+RfLw+RKRpI/YBfTyJNe+x2kUaH4MnN/xUgRQDRA1RJXogDxBxSafzwLtgJISFf4Sg+Avp5tkgaX3QgdgRQA4rsa++2PpUDQlQfgYsACjlACDBGwivtBy31y4ldOUCJ6BAxEbKcSP0QItBDag8ZYPkc4AtF+FAV8hBPAJK+KQMV6UlQeUQ4IpEP8EpyXUQ2ck0doCRQowLISYUiZMWPqgY39OlgeSLpdSaiG5UBFjFvgMwojnrBa4JDvKUsx4hHaWTXPIskIXkEcH2piSCQqAvoEAXIQblQoNdj/3v6RDTyRkiKCAViwgl5DssTxHbJERdIkFMegCAdoIk8NDbx9FieAD/QTA57uOIIsFFes59QwV98HyMLihIKETL28TuUlI6mbUUniCamUvugLDhFokMShaJHIJaai5iARMrYI193/CTkA9yjQwaEQiTRsgD4isQR2ShLj+gi3lFLAhhiwBiSMFDWxw9pA/I0pRaKJAkzft0T5COQSIVcAinwmjgm0XyDAYIojmojksK+1E75kqqiB+cAiVqMRHsA4UIpiDphT5EAjBY+JM4geAhMIwg1ilBDE5e0ozzCxI9jc+YcAEE5wQdp0Ulf30+BMhJVX9Fsl/WU/p+GZf5+4bTcmuG5YcCkOX+PlitiffErJMXc/JrKkXfFh7xWuZx6ThrXLwcUCQbA3H/dPhFyoYf7hRrFAHK2iBdBIEr7fva+oEvDF2ErEoEJjkQb5aGMFmQJvrjtoGA4lZyVP0T7GukMGHwJp/QCEWCHobCFFtLCDvBCvAlNRanjFg9MUtVzrbBK17PIuFvJa/5jX2SRa/lGvpaX9JBUqmrMJhiM2BtMbseHZ2/iNyD40l4Cy8p+dPyLQm/MnNd0TVvQlvuUvH9zFahLXIwZdJL3nTdBX3x5eNXWwR4FRdD5Sz0h0gkxLxYJgsxUjj8xhenaJ7Prc99JOSBozyfM4tdBQBPtoyhZjLxKcfMVrJSNpPSpYVAQDfNpDz4tD4vsHtgRKhyjM4R/Jfmvw9AnphkprmCHGmaesbJbFxr3ukFFBUHveWqXIuGK53sWzdekdNE6oSE5nqo03to7qa4bL7InEmGcn1MX41KIjQenau56bUyWTbwQKBf0op1c4/9jL0zxVyw9JOM7Msl6wbwiy7F5OWEKwovz7I9qWkke0kLTfWaC1vbcJewG5MNrVcBafNz3nkpLrGaYoVqrNLJxOHmf0XtLcY4UHY6uwNodXCtYVXBI0fBiSP/XccX4tZMRggQldnIzrrCaWfSsy6ql3g5Ao3cGci6fFXyJrGHWQCmP/+eD4SD0mmOu37b+LbzueEwkEw1J0Biw5dYa28G0Z4WWq24FmkBccs4VX1PFw06irl2yzPCBwS8JI4TPkBPSB7/E2zUoYf824VkeHsz8sf/yMnPDlx36mu8ZQy4M1OXzCCjimzdaXPZpd5TZa698BC+Lz0QQGZ+CYLXoE/CLnu5h9+MLDuvMc6/DR+wnPdmxDkX+S5eLWe/f6a7VRGqFUl86QrtHNFnwgJtA4A4Wd/MURyZK8T9v6ay0jfdOpxkIQ9519ibSZ2UZV8TshyZ09lQMd6NT4XufVS93zTQTvPTC3lQoV3LMcybpBGE4dp5E6XNH2Hu6cyXIOJxfBat4pXxfoZf2pJyIbSYUgDeMie/bredVicHUYVDIldU5U3a40dKenp2p6IixWjmsPJyuOLOcqSqi2klnDvxHwez5mDwLEOp05qUzz5HwiOkUbXfuty/igq8D7XdFoO8Wpczp8xmycWyNQlfU0Vj4Zy2IxtYOkXSes18SefgYkZy5icjDJiI5OxF56BNZGLp6AyYLqURVjRh72uyogZaZfw/kb9+XtsoLGu+cEZxFOTsPo2FWFh6X2kJOhn8tudrk6c05LvdPy9yRzOLuMwV9iG8F0nO9ymQaKHyUSQMvYeDFH3rxh158z4vvUTxFRogjwE04bTqJ6enQW8votR8dc2ClEuwXbC4nowl5QrZM7EyZAMuhzTy20SRqHHk3V53oFNrf5VchxC+MTN7bnuo9T17cltX/pDIDJ20P4T9Xk+69pDfVJP9i29c1gH/x0i4xppRfW29rwGPIhWPIuqfbWoev+xSGtP3qHd6TnX07nnx/+92yo6mRJrcwVN4pE4Fdhc0kL0hGdhn/1g1w2PP/yFs1w2aHjm6cgpduwkyhL6dXj3vgQQuksu+aH652+wnnncybUhIsl+U7hS42PPjlJFsvb5bf334BKS/Wi+L2i9cfV7PlWk8ILQeBpqh3ybzYgTQFpH4XkN4VtzdZot8r+OFSBdWP2WEPXrEXDeFS76oRv9Ri9w4CV43/jaLoStyb3zADV8sPHbqIQlRTI3XUC2slSHjfhUe9mE+f4Ja6u/idOhzocfAOrfTqTN3p0yG/ff+OxiNKfnVikiO4HR6f7aQfHz2WvvHqh2qGfbTbpp2t7lnyApvOGIQTfgJ5XUA4WebEeUJXYdkveJZUoK6LfUB3MuZ3WaFafs6EJPybYu4qk1pVSUS16Pxu9t2ydsUwFUb87QQKDopTDHcSrqeT1WDcXK9rMAABsXdMa1otnaL0+lHe+aM5VLoU26S2Xztq0LUBN20mEima7e129zT1uJ69+MPrb36F0Zkzk3+Vpi/1FyfrhhZoRg2QV9smApuhmfQdkwkA3Z4qOwrHIuFpE7EkaN24OthY8iGMbsZsmSKp1VpylT23MwMmbvcxDjouq9Y+XK62mRxYg2kn6LAyU2ngqgMWtmwGE5WJT+adrswliU1X2rwidhnPVIIuHgsXEeoIab6DALCCB9rRTOarji643mlojNHN3YfcO9CGLkJL9/rvIN3rv0m6/ZGJRaTZG5CZeMsvvKdxGKbCtQ6nmQ+SEJMZwRsO3mCh79dktJ5KVVxGRTGXUOgVpDx1UWFy7mog/4pkGEZn9Tjd+miuoYHTrdDmrRAa7vPOaY0XHSuVilwdunfUBhzRdxG9I5NnUEZxROQi+ibmyMUcckSPzUBuvfJNkk8+AgfXBR8M4ZYA15mK0hVzRdboMdK0olw4RRmo5ucJHnYjg/mQVNSCxpXR+UGIaZZ1VOinBWl7gIH5tKNBdZUae4zkqrUOPBwH+Rnz9KvzTj1LiPeGyPuf5kmTKRxjvkSXHMsmeC3o3GXGYSO8ERUeByqX4zNlMpPxK7Qf0EeI0Hab1Fdq9jZZbpDFcC4EQadjfDeCr+OK2gR3CNelV+02j7teV9Xk1HsK5S8FqewniZH3Nlf0S7QTY9BuN+CElolFGPJ3tQY3hzRdP8+W0UqXzNAlM5GaoStI/E6ZXZkCSVNeGrZT12eDBB+u11ZRWjei5GgH/DhjcmnEL2sIW3V0qD53QMeQkciu2Fv3Y9xQyZemWWWubANnstANnqOhZWWRnry00iTHpi7sg9gGkyPNq1GFuSMwbGTJGQWrIPLpGWF6yu/HgNbxI9uFAFwDbdUEiDhvwqsrNfZbAVV4vEDQSGiVK3saxCvIDGqkXhvezkyFgurulobq3GNq4Ziay5VjqsW8W21asMKNW2PVykDHuJSJsaV9HGbcJ8uy46v2ChwrZJnFBz0m0OBhTmtTvx9VIN0wDOF4Seke+6r8Qyd/RJqhLOBXKHd8zK3RbgUEHYNvHlRoDxMbsjRkNPTlTrbyMzeugfsEz7CGq81J4bhxfcjBfwJUW+JGm4MZqo0C4ISgUjVPAMlYPaR6Ss55Sg4jhPyiZvIN8qFuoVanApebI9sjxp6G0zQ3a9isWaMxEhNaqdwoegR6FRT4ssYj16fMHLrC39VpoSVw5VIDAABurBYWtohM5Uqi5amNNckl0kYxeUbsqM0TqazpUk7natamfJoywLvFkjC1FGSeCmooMCcwaDyikdVyJiXkM5m61kxk73kG9CMROwU4SEFnYPIGEXLU8iMulyl3JEFHzNCQ7Xa1fKhjpR9Hg2AkHrokVGV2fGAH39XXiBupzsTZpFEc3DKpIgzuuS0rAbE+Wtk9Uys0FaeZ4dwlj9G/KJVN0bAql+a2rpAcW/DEbJdHdrOOEhUldgrlzijNKCi3tjslJAg64cKNkD/trIwk6QmeFgMX54hzK8ILORNy7H8XgpQxi4BOdchAI1EzyMUY/zNYACXSoACNmehrGDydZvMmEgE+Vucuew/DJif1hiB6qvjjNy+v5bXyyyFio9x3T75V6DDyTr0NV8bTlo5TgwHDNAZ0R8CdXBCVqvCWPAtBQ4DpUwUrgJHk8RapIHnXBIZajB+HyTYDp1ATmjAWhpyZv8zkznJnVOBLZaoLw7dXVqnFUDb05j6T4+3V82ngPsDQYCOe80nLMkugZjwyXMpC3kFsV0KcXgqquE59hbDYQTgNw8tY+GkPThCpnnVJeQqpwrDSMKgQPAxvceEGIQhUu42p3wkQa/rbWuGC6nuoznfOGOtrrrTyOTOzkDUDxU6VdQss8+hPJ2lHopovBeJ9mcIC3+mFLWSgpXoq8MdGIq53xJH462IRTTv+lGACgv/aHMnz9EszsQgbiG3dp+m5iQrTYZjWCL2hw04+mbYYSLAqeWUB2Y54TVLX9LEFqnZuDirPNp8mcIk6c4f/tFAbZ6KcZynt8Z5ay5HWUoScKTLtm+fEvf7OMj2LBSpJaTVPsRA9LGvALfTOmRApWwogNmNphqsv2EcFba5WqHPrbDrGKNQpqlS5Q4WV2Yla+MwwgQFg8RjoiEUx0o4HriDy2zVzIhLV8hfNFOMvmjmiukJGjL9C5ogeRxjkuZGWZplsnZhoyCLO0YYZLWAL8olfKc4sx24gXj03oS8TLbqnqzAUmtunbmUJpmaekK8wVI5pNQnAXQLchasobhzEdbJJmsH6PRpP/jSdzRfL1TXevb3bfPi4/fOBXVpnQrceBqsx7BUA3PEh64WyWSAn4Vhm917FYUhVw0HfYU+vwO/gRgvhRLRTiUkPi1wvvwQEQUKSGeyFzPn576fTYDe6z4vhQfegKjYsBn634oGiRSbG3YVz4qAlVTiYoZv6phG+84rI6W5ZLe4mmgZjJ4MIaWbmadIdmE95MWRFJVUZct26XHUkMKqkuns6pYxzdtI9Or8oK7KwqminE3NFViPtBi94PplGfW4XxpjTf9pk0fhj1dRQV6qX+R5bcKkklRbpxDNGU/oj9ujETU8t33pcr/zXyw9QtBqtF5mCIe0MI2dqBmo4QtHmPN36NaSAPlXlDwMYhc15NUZDjTtdo0IgGIn4ssFIv63ErgsX+WSb6wMKfb6RFdkvGtCpD7W81wIRPOsZy3Y5A1e2WmLOvWtSdrnjJxr6Lz534+bi8R2BJgs4tP9yI5OoswkB7SojQpUR0q0A3J6nY71+LZTgMizplTI7qawucrwr9ovlB1cMefxiDqsqM120ADkXef6r77+H33An8opyTSz4rsB+U38sGkz9F38HU//F32TqJyH5Vr3XvuLyRNKBgz6fHpC9Ph0v6JMDPbnEH+oTA0fIh7MEER01ONEu/if0gIAc6FMXUTcyfvMUfiVbEUHTTvYEmP7S8Qv8jiI+AHLc59MSJ1Qr4gcRqqZfHz9ziAFI9QiZ3gl+hBfC+vwD4gGHH/zq44e4kwg/fA8i/BAHOH0g048i/BCOECaS+vh7SD9QeNTHD3+P8X3Sxw/hQR8//AUOh90Iv1fgAX49YgT9+vjhm7iijxUg33GEXx8/hE8QN8DfV4gDDUfdPn6vruRvlPUGevnt+2+NBR/jdnUuG98t9GOhTT3QW7vo4C/e9axa81JHzJakiVVHfqszVQDy+i3Rvh5R1z7hySP9ZAQHrY64v+/RmNw/PrXqLOb/2JtVHaoAKFO37c33NsgMAzH++HrvDLpZ2UfdXJORDxD1ncLVHYsZJtZgRfcp6jOVHVHRNe3tEpgKZ7LYAWXY5RX3S6NMlUFu96XWfQhNz0IQO2+0TqqZ5hyPa/xguh0/yJPNbdTIEX5b1Y23vuvFlqfCCzVDzVsakS5qOzVbzLS1FvL2bkba3+lCwqJ6pnK34fFLM35A35cU449nI9kVQAYoCTLajHcLeQSMRTOAPTskrYYtktK5rzrQ5TT77foEpgKxEEBRaYTIrG+I87sug7lBEh4vt19N2LH5/p6iSNf6MLmhgZDtDDc0S/2i+J4zyT/rglzc6SBsCarOAWj1ZybTr9fLlM72/no9mev5VNSz95CdQTpVryPOEobL/GpGh9KN4Skn30mz6dc+iXMjM4quOekLvSvg3HzowH9OBnh0pXMEeJVRCG2irftF5uQuWTeAOzZV28gaGKl3NZu/tWFZtcgBfwV5zoXzsFMpt5T5lIkNibrJGxSW2quBuAJATn8caiHizFn42dZd8FcTxKQBXOFjRrASAIIDsK3pRgI7pDTbKNFLF6MCQtdosd5pZBHXpDLXPcEttqrAkzz/e25LBH/rtkSwuy3R+kfsS6Cep4Gs70vQ9tB5pSR5CtD42LhX8fi2RDkyVmbS+kKM4bGtMAlZa6QHHFyTBAGHWASaa3JjSK3VeclpfW8YDrlfiCoWvlnU98UAh2L/+8zSHgs/OrTRmE9Sk4dM+o37+F2BXH7p6pBSV8SbB5ZSeA3khH2kqP8xGdQj9XZfbHttGOagkcdGnaVQyBQyAHTyotLFg4bWcaNHJnOvgRiWw4hRcQD3l0/DfO/44K1iGrkQhmnMnCBCSyYgmqm/sT4eJQNy28R5uXeeGvox8+yOcwZsHqYlG4C0T4iTVM7n0YNQubiLZCvbtS9ght5d1aqkbh42wvVlIjPlzCuJ7q9Uwo41rJKmIqvYnb9MSg2AGeZvzOcxGIQSnRTbWP4EIVDO2mRreOOAVbH+Jkkni73mo7v0dp1ktzxZC5nzs78k0Te4GkbrGmZV7t4OeBZ57jopj/3fTEbj245WBt+SGdhcHZroizA/5UtsWPGZhLrOQDrth/FkVlANY2+ByQiRh2Ylmo8Sjo3ZpVMYhYJHj93y5D9TL+8mmJmK4lkQnOY6V6uaTRvByppIRetxZbKrGmpyzGnAJS1THx5MqFt3s1kuGsyNzohlTB377IxuOeCD8K3c9BEpVd398KUvtOMllaplDCOey34IRlNZmAY54I2xEatv/Z6p9Cu2FpuPex9kTYmDLshkNu53+JsdN0MfDD3WTO8V13aux8u1YVvryQCjYzqcUAXIy5fHDL4YC5wBFPspyk1BHOvgwzga1de6pAnrM027cuIsvXQ+G8WrTjHO1u52CgZ0PEWZUSkx+wVZuV/QySsHUnBIWcAeXLPCIhY50/eF1j/uObV0PMvYaKQ70uAsOwfMjgeUZSDjph+EmcyrGwVUaycLHPIDIYZ1tJAhVAPeawMDgY5XQgIGbRUA8dx6z6GOEIsDxOot75YliZK9fEFQSKw07u/zZ4aTwpK5xwxcwBo1828i2xEjNxwgrT5OL5pd1HfKaUkcJrXiycfG4qefVzxZNFvPdxT5RP5E7jWDL9efC+TP+4F8/Hwob5qgOILeLW8/F1Dr9X5IC4Bp9HwEJOn5fZMqUncSRgdp/+Uxb2FOvGkez92Kah8dXesV7BSXkNRoHqNmNi7ZT5ubtn+whllDDesfrqGuRzRzshsnJQ8T3niq9HGLkhu74sRP5zmHN1XDyDt+DsiIdhvvZA6kc3fHMuNjZC1O7R25tAElDYQpFrn4Q4o/tPF9G92j6J7LrkeNDMhlD5YdQfLQuN93a0nBkm3HSPE/y7vFPl7JtLbwJzWz6ojqsueVhfEfUz3cg7d5LPK2ysNIYpCLk0AVD80SyKamJulo9rG0VJfbe3bsHCJUWazR9r5zuqx7kxU7tfqahrNG0Eiy46pcJOvPLIx+Xy0Ngiarzy38plY2yR8dQ5H8aFdxavhjQJDnUSBuIfYIEJfncUh8CO8xON5uaqr3U/eBWhfzZLLIi/VnQiNYP4TYxSL/5nGwMtuDaiuzoN+nMrtq2spt9ruurFnIVkh7sXJmlkaZsHb5uFARKTvR8JD+9Ie4qAp/D4cnx/R9NDyOZ4pCbhe4tjN8UdkZ5uP/ODe3VX15rQp026myps94ThduzqoON8AI6QUrdLw3YbxrKLcE/dtTNY3F/P32yiSzk00mEQUnOkkpQm4xuLl13lsyGaJu+ICRw8gl85g8e6wLmOBV6lv4qGVn6vr8TrkkqInhdXs67Nwpl98of0HE6t91mEHfeouR9e7eFcT+kTtIEQCEYPvFVhV6zL3DmBuLOxrUoelt465WBreirgO+5Qe3FqD47squo1aCKIliZ6KLo9NtLCyrVvKy5NulRO5tqHogcHvuZxkCGfJCupSXqDhmTlIBqgqlHqxTBSjrKp96rfnW6vNgQZkNQ63NOvU3IlK8+9yNu9OqyVaBlJum7ps4USMpqe0IpPf3NI+6LRgr0rwH4u0IJbxYpX7A2NlP0ylG+NMF+/jPVkfqmcfbA2Oe5yU+Ii91ioi2O1L4knrYjVz4/h4JPKJS7dQ4Izc4jgTQ8CG1VkIM/cJeXhT0s45YvuLCw6rwMxQaq5mH1dbHauZjNQPlrqatADt8SDMg5Zf1sqKclxPf2vjjqfGFwErKuT4Sp3CRrPme+dzYEjeGncJ85rLQeWfme+XjOCIcH1j7KpptG04UeNGotl62xGXZurkMkTw6bkuR2hKLDJ0VDzjnx+dnP9fZAWe4rQo5du6ap2nnP9PSl86KmkKaNc3S+32xnGTHCXIlyJKU6a4XMJFplRtm2kglOp3WCfm7wbgm0aH2mdzy0s8q06dBcpUJdzDESUlOXrWJ/w0MrENX6vU6eAE24gBJ9sBlBE5nTRqzJn7WhLKqKvXnndTTVmTqy3NKIln6VSUVxCN8M32oZOaT07xKqm9VqtZO88qs5ikfKZWRvSVzlhxVcVngoYkXdzZaL+9Q1pVRKJNeCWvKi511jzK5fl21l6Yq8kH6mjoBk4VKA0xILke7nZ9i9yJ/jmQyPRh7eMZDPBlbAa6IjTE5/xJAkEs4VFyf9czAnUTfJPWnm3Sh+A8uLLIxL76ajAC4GEGryv6z7nNq/RvcBUwsdAOl/oqriU+90onK/Hfe6USUNV7q9Dfe5dR64mVOqczpsE1BzxI2PDIrXHONyPV67F35mb8sKk/BCsktyk2pBW3a+ITLnKzQ2l6JUHRsQwMO8OMuhXtRr3Av6gVTEY8CVTQ9qme7up74WS7o+L948F/PjuxfLbn5i2KRAZ//W98k/7dMitLzn5kiR3JsyJAbuv4z3hW44rwzVYXcKDzbuFlO8i+60KnHNiyG6LHIABlP0mLmsmwQQw+reGWgtZaf+Bh9D/9J/osUQFkr94VGWZwvLIOGi4Zmi1trNOhaLTBAek0GbxJ/EfdyAPaqNOw9X1RaMuxRj7HOKGeFeYhubd/1/ebbi9ffhr+6eP1r3MuOKxO/MI/LfMEFam/9yrUBpCxExMBgy3WpAoydAtkp5AuE2daeyoN18gExU2WRA1kkhHEROkh8ogJiN8Y0MA4CAfk4+N+PXbiy5cp/zCAYBQf/e9ftdqODIDdvAm/UzhMcnSojhDuzsDEVYhaoZqnzBiuPZIZW9HhETf3ii+/GhQ5ZJs3vbsA4upT/i1skMUyTyFyj3IZJG8e5SuU1XGRrjebOOhuZhrUWjeRaxHn9HWF2TDGwwXyVIaYGc22HY+ZrUAdBXcOiJ4Kc+lVePN6vzPk9iX7V3KdIKqZqVO1H451+NP3hbrOpdJvi0b7ghJ7b2Yr9pkHseeTIGwR/wu1PLbjZkfsNTcnQGly7FuAAYw/6p+fThq48nLqhcINuslFTns9Oe8+nlZYKWj2D8S6+3gvcesOP1AkSO37727YPkI7HqGOsu+LUvZRqu+JYTZvGXshcbh0Zu9RHc28QjmQNywhyWM0RVHOwQsOyWE2RG4JeF8ARBHDkZHijMsQU4bQu/5tm+d948l9U8OrKHbzM2ALhSONSRS6zOUV5c6/GliWpIGFyX8RG1oanKlW1stNTN7JNMZoBIf++uSkZFop29EdQc49AZ3xOlv3DIbnpjNtqRNe6jUk6ICkRaq2UToUvHo0j1SrJ8wkN2k4F8xmSBj9ecvpknZgVDqcU82dcS36iWsyFoBe3/gsVY03b49edUoAnbh2k4fKffwUq3yBqhPODfnPw5mAC8/d54ZKHuQt6d5TyffNWuZypKUUIchunm+c7M39aEvGBt3b9DiMFVdIioZ9jUKmnsdxfq6iLcslH/VLUd7AKEGJU5hpl/HjOv1HugaI4X36qIHCWopjFUQvMbMc7ujybNCaW81Fu31V6/X4bBF8OrsDmB+vpdH1/72oNN6fXIm54BdZvDMe3ynvjhY6dybnXPtd+0yWdgh9mhtpB90Uwz/ncNpPz/RJjC9siaIOwKMfgIChEjmuWsBG4hocCq9b6ZT1D75zpJTrGgLQidsjoGMK03WHi1jFxprblgQXkplPfEMXitvqC4rj4OJxJEq1fLJN8uHmAWr/12bogfj5c+I9fX/jnFrBnwgRdOEoUocovZHbWZd6VutjJ+tgjkol9fZftPY2DM9fiRhfbTlzSMkNeYPPG9B65QdiSiwmsSwujfvf55uVArl22b7P1ZAW/oQM90L/ULDdJMBccUJOGEbC4qL11jO4xgbqNZ7rWmPhrJ6n0oQ+MhxcqDaMY8vMg6P/qtb1uJ4ybmyLIcokCmTuUkMOSnXnOFeOqbzjS5VcgGyW8duxHoTZpdTaidO/qCLRu6dXYcqj45t6oSy6Y572TYXSkQ9Fg2OO46GjYM3G9YZ/jXg37HDUYHnLMyfCIA8fDYw4cDQccOBxGBkB/2NNvMScs4HbcMp/2L019cqx2DGlou/fH9DqM+R1LbLBtDBN533TjjoD0uywf/5+9d29v40byhf/np6C5z3rYK4gRZcfjYbujx5blRO84tteSs9nV6vjpm0kuL5JISY4t83z2t364dAHdaF4U2dnJmc2OxcalUCgUCoVCFfCMF7Xyfa7huHii0BFDXEPbNFhNYabM1B0fAk8ZSkUUWMsWoabH4/7ZjK7jnxB7vXl7+PPB4av9lmeLMpDbkZtpPMl7A4Iz6Jydo6F5VPwq4PYj9R7nly9mt0nNrry8te881NiOjY4qGqUnEuDwIK+OSWxdD28AYyZwL+TTvEC4UEUkmQp8EWPhVQ/l2DY1xcF/BZF6zdaWhhku/qkYbv6C69AaDfUZlrJdxbCxVDNkKH9Oi6ns2mrFENLH0hC/sWKoRY8SKDWvo9o2VK8RIjGWN3JR6upN2yBq6Imp9QPbyia382/+vn/0L93mdbfzvbWREwMNLDJQhdQVIsAWg3BQPMm0E1gfuRSO2w+2TS3tYxbltDDjDwK68I3HW8hiW3CpcnrPpNO7DW5R+PWrMA/2QIfa67HEZYGwYeXRxBZw/UCo1re2xr0S2uOFv1NzKyx+4NXHU2to0urQ1L3so+V8YpCHR4n9pd3hYdAioYRf4/v3u/hD74VSyu49/EJWJLNckdYwi467fefXU5oJ1HnX+BQaz2ZADHT8DA3nQGhrKa7nMxFHNq4bNbIw5tEuN0Pgu08S+80hyicOKTWDmJgOkTELE/p3tCCts4C2uwLaTrQaVrVnRGFKSC2e3qi37I/FPFrZh2SWMCDwN32ay/Comwt3uUHcHWvGcRBSsSjFgEEySbwvTP4EZ/n4DgHtQkKbOHugvpLvWg/za0dU5EKkVqVJLSYXUWoO9M+tQ22gYJZEygHKQFNWyBeK2Ofs+jCWbhNwOKCaecCAdM4eSKOeVsNA9BSAi80A6CfabMIEPQDu+pARVKrra0RQ4cEwQr3CPbCNwoEAWjJ3VU+ADPcG5mXUc8ChHUeoADa+57V9abRBbNunqS2xASgy6s6jGxrzaxpseoOuN+uQyR375zdFGvAQBEDk6CMIICQwSaPA/EZPkVdqBo5EVwmtii5wlcSwg4XIJN9qnAL6v4VP+U6V+4ZISSNjZUlZLG5YrVR6derXxoXWV3s3etdIBfUvutKAd8tpaSdpbx5lJn/i3rQWVHRYSYDjhXpAP5V/aAFxN4LQRaPE3cC3HreeRAg6kRvJFs5JeK3RiwZt54/PzDq0WLGda3yD/ZxXcx4HalGubONCo9PE82k3xEHqMJL/YhDVNzgkivnfYnhnqqS49uwEn+l9VIuZ9nD64awlLuP+/jiez2l5l387714d/nJA1uqXArhS8jG0tqODf3938Gr/QKTEFfS4GU5XeuSgeY1NdO/EC9w8Lb52I4evjg9+PHjrttEVaXxO40bgeRL+oiEvhL9lLvnUsPdSLBqb97UAfJiRCjv8MMxnPJfW7vLrw+drdPf1MGstTms6u35b+8cHx0fHbw9f/bhGm7LBHw3bEDBu9W65xoX9LZnGbVhuc67mLdG485Z/1qBrWlbi/4C2xlNipa/Q8zduA3VoqJ9fEw/1aw1EJnn367QPwMua3eXxv+N2d+vazTU5vkaPDwzsVY3vfsXGa3uenuUfPgzT4dfhtn2GLoXZZ1uYGfXqrpcFhs0i5e76piH7BYrO5DG943Z5RBU9X0SFPtIpSvyCfRyekTLEPrqSRkmN3R2pHRqzp6Qk9Vpzbws8LHVYdDxL+D+clsBjw0pCfY/LpFobg2eHfs2Bu7t+ox1m1jvQJdROJR5X2ILYkltZnII0B1WvfHk5Dw9JkzYnsw75Cs2DJFI/Tqzs07AhzSfKoJEYn6V309H07ONUOyoVbmZFNVgIE4YSWRCFuUJ1gMaOz57D1lXy+xkYN6UqhcrEISKc6MfJs1vUyzpyPNXj0aurgy/Bi8HGNV+9e/kSVVstabteoylWXlEv9rlIEa1sLLLSd8x2yc5lldAL8bzyyjExB4dGmKtA0k4uGmS4VNfl0/71yxf698JTLhOyGP14Qw5f+BPRP8inj4rhJJAl/51K4o9V8sJb8oJsCCgrf0SpY1cAeAzKWTOTR4Djtt4eJ+jr8dlP+W/tijHYY4wNcMxurk1xo4PQM+p4Ji02+NA3E2gUwbcJ22Uym3goHai+gTza2GXIElj0eyOQoL3ATIkLu8S/CyRQTF5eulQljxAtKyECFw59pVzGS1Ev4LbtnAAA7Fteo4bbJaa326VFqOw4uTJ1Mls5Bxe56C8/pLgH6zUZrO/t4C8cNmGzxY3kqYaEqCv/AYjIbYM8KKD4ANd7YPTVyGbRc3VAGbiWloEfqHp4Z5uxLjw5v9tFOE0/DOxDAUEP89gHA1UTTRbwnGQ+LOiX5S79XJ+eif8cwXPEQ+SbaCN0Grlm6FXupakGETUMMJEW/qXRRKQFZf2nFg65VTxbUppFGrM6vFyEqLnnigzOkLGTyUUNP0yiyTbTK3HGbRIGF+64TcKLZeOWFOMmeXSwl7UvrPGT6PUuPCOqkMKWKB7OfiyOu48uKbUifT0HqdLyR7Sb5/BjSER3R0kaskruPHzsuBrkFZcAMVjtEpDfgUtAVuvkUHYWyILEtslmYg5C9HYEzNW9RBD6vYFAX3tkxoUb6l9F3pP8ppw6xHkPf8WF/vNM1qOAD3Gufm638UXlLo40aArRU4VhRZa/FrAvF84h9Jv+aKd8r7MCVax1VXDe+dfW7Mv8fMmIs/NBq4AEGzEZNm3NLGLCBVplsugQpo5zC3tn7Yi83slFDNgnT5zjJFTfT0tzCNTBvT07P4C7+k8SPhajXDlOwc15VJQ/p5hNRfNYnSzokHq8Uqbq6CHYo17RGGjsz0Xcgf1byMTCw2lCa6tKYS+nsePlhDIiV9VMbdfbSaapNans8SRAmK2tAqeg13VQNE2zbx26p3OjnZ7KL3soTtuVekGwZzXTq6B5fZIZn8XerosCN4d0VPSeWsXew6IHvZ3eAxseCQ4LonCHTYHHwKlfoqEOCJF//37x+wI3r+ixVxSXw69P3bvMGHu4W9451qPKAVBAJUAVqtULUbQZiAI2SMGwgHcXdcrdR11kXHgycNAWOwdtKOy08cBqQ5IYlZaQtKjaA0ay58BA/dBZEQ3jQxf3KQA7aAA/Z7WWFSDxnDaqoIPe9wxbXtwcu4d2sgsAv86hHXCjopj4akAuROMc0CTBA6F/g2zIdNtZfmrHwOHieM5CBpF159sD0q/OTSxdwV3A2YhMKV15oXQkmFobwW2F/4xek/aqDmDy1ZRYxJGJ8fGdGMIxM3NK7fqg8/3SDN0HLsEFbIlIuE1d8Z6zjqdOGYmmqsZoPPCgQTUZEW5y6Ukot4JPp2GckDbUEalKicyV7qlkSaVYBJwpVRDKzPV6HOgju9X6jRo8tWssdpWrlsj2AOJ6ILkjxBdGn9gE3PbWsnBEVR609anCnfRm2qOvXi703qTn7k18Sle2B4Xm8kzeu7ofzxEuVZAjkzTWUVBwjupu/9J9/31LdrOajBpBFt2o0K5e+RbzwmsS37vO7nyhFBINVUbSSGikX3FsTS18EN5A1+Gp5cDUdioaIJTV0jaU25PW26f/0RKtVyQF8YcsFy25fpx2cDHQb69hI/D2iVu0YHro62wA/vJuOr86h5dknjVz9pWZp4N8kpOK9ZetbOsvrc5fVESYapT6Nxb32JPZ2X6azIUg6TX88Mmleuob8nQvjdK6IVfXxYDqRzQQ5TH3pKNOkEY3nuZxyp8V2BtLGFQ5aZ/h033AUMYculxI/bCIqgYHZYgdMEL6N4ZpjdYbaN5pKyHgScS7UCYjWZ8sT1AFVBJy7C5q4CNdbMzzlZefyLMkVTa6cOUXF2KkZu+1mb2pyHo5qf4D0vvHInvTm4js33sXAraM3khohHsutFuOs2dqeyhzTWQBZXjW+xhAhaz2spq5nLpzmWutnsso487l1VO54Z3LacBtLp3LG07aVE1aZh3VhKYdTU7cntLzXAmG26PqdsKJO3aS/LxSgZy+yZgESSGtDhYijbrViZRYEynRE8mpyahapFHAzEOqqiB15dqdGjViCmGiqTVtrjFtPs7ic3feeMZkM0N342RVeT4Rw4MjnaHyzVHG+R3H4iw2tLGvbVO3jgPUMQRIxa6TLhIb2dtPA7Gxud0YzGOn3VOpiLCW/YLENs5eeIgKHr5ZCPkKxwCie6humhDPpDIDRmaZ7zWjpVYjMH4DXijhQZdyYP4oYZaNffvxlK5YbRLMrKlBwYrRaT49etXpNpXa3MzO8nkT5dKz6WUME8S06R5YtwJY/nMAnUeZSJWhSfSVlKYuLsWeD24Ls2CYrKziOm9wzXx1TfWrWrW/tCp7SnCNyXo1drnGxcoaBi+rmdHalayW0uWVXE8ArqZlR3VlbivLTAaTrVC/E9Hgj9zK6Fu/J9bvC+v3yPqd4ndp2hyfyUnjJoHv7lDmfUuR54AaYSd8m0r5bSplt6l0vrxSw1/r4lb4vblVrX+/TS0og4WMljJkLRENkepI1BdKot7gPDkDS7we4pTL9jtQl3qQguVdqpbIYgVEiWJziE4LoDx4ASgpY7Hbtg/zF37J/1nhubq19QW/LO+V+3WSvuyhs1pKub41SyWULukRUCxXGB6LFU7x+WfcgXD5kypB7PTSoFonDiVt9iDCnfJE85X4BjS+M6l7Wlw/8s8o08a6YaazOb9Xjo/Qydrw5hFU+XNGl1LHWsKElmq+aXa+Q7BDUwWV0h9MdPqDjT1SVWi0iTRt6iDUzvx8TOdkrWYr+MZ3kjQspjGXRhW35wU+v6TaMJAsUFtlfxhIrsNAiMHLgSCjznlC2fwvUvWNTiMpKcVYO2CyQ0Ft2EDud7zL13Z0rG+lw8YQjsS425b9Lpbrt7XaxZL7IH0sRWNJy3RmRnmX+Wx+2276nVwZhzdoYc6unitpn2d09BSvgc76YSIuZKAyKAKMnh0c7RaUmd/hYHug41jkeY5egzIvaJp+6/Yw2VqicQdcNso+KPaqaRqc9VXpyY105vH48i4ZBp07AswVvesML/XhF14nWRcF1mKcrjqtH7qA4Q9ciwvPtSNpv12KRuO2RK9vDzx1V4KLWWqdhofXdy0mDq81rYuAAKzr293dN0n+5s452gP+7nkZAHkVqDTIPLx+11YFYDBIUDMcmZFzBX7Fgc64w2WSCPJFdP755ctjykgxHSL913jR8fpZ8mSL8zm9W9YqolTZg5hd5riFQPQNZDGOcteo1A/ERN+dYDdSnMOgrVZAbWb01y2jlPlP4mk4/zi8TAdtJy+NaT9hMO19iib0ClOYRdMTnba9/2y/dRo+JfQpQW+QeFO5Pzwf5DN1x0HIsP622+pNot2HdDkYw5Ppt4JHT8MB3oPdkMGp5I3BgUCqn48Bp0OfBEICyFYBIJU0Js+cnrn9xDWaaCZji7ltpmHZ4cY5DPzMIwbhwjzwghnzPWmtJJZ32yne8MSFZWkNP32Cvfpp+yf6o9XtFD+1xp0XrvxIJAV7OB9Is3q/c3Z1SS6sdijFIMrNhrg6H3PPpntJ8UbumCpyNlVMVQelsHVNFBu2frfFl+P69+cvviqynjOllU245omxjR3sLeIb0CdbmyYNfy9ToAqbSnHC+sAj0CBZhArV0FZCNKlthESonyK54+NLR7A33oXpCc8md+UEEunSQruqUH+pWKBZJniWCd8sEzzLhHeWiUH0LRj3pEV9/Q+i3tFPT59OswfbMLrNyMcwf35wpIToN+Tnxl0wNPsVfHVZrA0YG9JkIDae5Yk0jI6I55YqLPyMub7eBccRfWPnz207P2WKvrHzZz47v9mdLjvrHSqDf9xkv42abTQImRnbf19ktBrlfBAy6DjWgSBs9ItpeKknVZ8Gorx/F2ldlM3A3bdba93AXuKk311eHJubicjOFRnriU6fjs/e5BMv5W+kStqi4X77n2+OD543yeP+l6fHB82/H/xnSyRn2ade7o2cC9kbJ58Yt49M3NANaGMyefXSRVBBhl0GXHTgk6XgGAeZQD/4XIOYvN4HmJuDLO2SQxu9cSYHWT9b5+eLJijYfHPwc4h/moM8prFtAh54pKZNOPKkHVUWXB81FAqhPn0KYfJLYHpMkX3/PsOB6OccWcsNALod3sM5F7Ou0WIGSToYQHscXLeaur0D5h+ivPpx+qkIcYxGVcec9qhypi3XCxT2bld0S6KeS82tb9AQx2so+1nUgveYUfLDPnTrun0KgqbGm24CuA2t+GO+7z68m0Z4Z6Abod+mIw9276gNpX+gBayTB88PHugmlnXjsWohW68FuwEN+/GtQfu3Kkl5lvMKSYuRPU/C5pXfN6/gIulSy0yl/PREUrN2JuEiVTZ3utQ1n87nY2kQzHUIrWgM9GX+7R3xOBB9bGzG2LKkWq8a4KerV9VMHRTkHY0Rz+ifI5iNLOnd6Ltzeq2HLVGS5a2FyPIRpl3PCThje3WvGiI8CFz/woVaBFJW+pYvAQkv/T5x41/5N5b+5JymZGxdOijmzWMlombJWH+hQKW6lbPZcj/pGtEKTmC5RmYvKZnIlC9G3SrCOdbyx4KSauoRrwpMMzN7mJnu9Hue189sV2T0IDI2qO3I5h5kM4uttSpD6HLLm1VmYdqDMN2k8tv93e2HO6bu91TVd37cmaW7NdCIxx/uBIsK0EcPDdDG41tBffTQA9Wl8G3AEgQNl8Vu7UzRs3tzkVtmTxa9tv3RU0pkypQ0iaqByVycBRtpzcsE9qQsr8ckr/FHy+sJfmp57dfXIRT1qw2FvA6yaFwRk+5TpJmyCWRRQ4EIs6hGgkRGYO3VbKTarOdlgUiDnv0dqhAzHaoz8jjstjN32+A1I5RVRBmf0NdxRWIS1h1y9wvv8X7Q972ipt6w67uPEF1QgrweVn9P/cYRMfOn25e83r+vXOLxW4V6Kx+M4tLlCT0CNEO4O52+dx+1nYDuCSjDeTSNk2imK2rcr6K0SBAfa/D5SJwxHsNegcR2Ji6CsIHah9HFv3Fc/tV3lJ7VwGDUDyXOWRGzn3ZiQvVfrwhZF14CeOma8NIC3kzBS9D5KFMEMB5rgMcNDL4bBfrB0G6YPYnSMCNIN4c1TR7yrQIfO4m2fdipM05l9HKJnjFMWXapQ8fCc1gwkR6Z/ZUdv5CQ94uOH6qOjwIFIIsjd2y2XNKK4yUtjKmF8ZMsDsegCMC99pduz7gbcCtt/Bp93+1qLPcNb+mHzyfhZHs7+JVeI38sft2ibCAcbL1Wf8VrOAuCb8Wv6o3HY2vsXgeLWXQcTq2kw2Ax7VzOaGaDnlNubFBIhOkiLFk0onIEmdY4Yq1fKBcUywze06BKcF6czWS2BhNaldcw7/XKxT8WxR/uUBA9FkNVsL51xMXsEg4aA/8uo866RPWaeOBG3WPdadpBQNqLNQF2UUx/i6zXhC5FIjFxWmJlX0VjWf+wJ1mENbQtSW2tJSKAIvGY19RpTBJose71oiWzH13sm20nRP5s27u88+L7e8xu4diY3RJtWBmHi8S2vvU7ymtC3fZCAp45rzjU0DXXNxQ64wjFPys8PopH/Mz4juX4JmJcHV9GgUZoHJbwpqareLtHlHT7BGfxaaPK4hw+OKzmZPmc9XUnTx8T3p46/lC3VXRxeijsPgm7G4IxLz7xA4RMScprdxIpo/2hKShTcvqQd+BgguCWkEkh6Z48eRCIqdk0acolp45tSWvU0832LNw91F17y9KwbUG68oZbFod63HS2dm1d77FYXm2RlI9zM5GKiZhC55ZMfngt9emE9el+YMXFLhHJXsFVey6Qipl7LvCHSi73wEBJXP/eAb4SgRjU5LLfRyAag2hguHfgcC9v+Um/3XANHYM3UrICJGqg1SCZcZ72mTHWW2rH0fcanM/Cs3qXHGbm+FHG5fK2xLsh9Y8zWKj5L93ddRboTAkq7CnHteenmeiLLqKxCb2lhXapEDtyJ+2xyGACq9l8lp/sVU+F1LxLUuyiBsFA7aIm2fe8iUImX8fQsl8UP0nbA5FsZQFJTxJgYkSa+li+TTIS4y1KCfrqgkSU65+MtrunWyhe9KPf+Z+z4bRNUHmrnG8eJfDPt6gSfokKH6GTtfkrVMmf9Q2qJPdGCeRzjhXI5Mcks+IFcgQHqGXIDheYpfJzHv8RoQP6SFI78psn8v+KL/u35BX9HTX0DztR1o+yMDZelPsUqUZIlDz5U7+XYbq+A6UDuaN/o/barSxzSE0teAvhaVAX8DS2/5o8J349fn/05mD/8MXhvmpzZ+3rgA1k+E9mnZTb5BurYx12UXar/3q09jUB3Jjojbun+uqmDzxBG9+u457WO/HGeKzwiy5A35oibGFeilM5iuNNUWtxurzpvJQIZlh7VnBXy0DKCDnZSNVTJKcTsPHZufJC4UliMLZz75g5HNgd/WzH2m2s8qW+5mdAfM29zdPh+VCPwXyDnh0vjd+ZuWAXp0aJyAMiNo+1n9huIE/j60zFr0rtcodx201Nb4+Qddd8xYC/AVO5bT2XJulCbvwunmo4TJWVIS9E7EFgP58hOg0W3vkGK2v9UmrDWyxv8G1+fZbGAIQHrtdvvruk+dnY36z8Odt83nJkhw2A2/fy0ewrqAMMuHO9BoM2VnPoQlRBD+fzq3xGW/cj2orG41fqMsWv1hNvczL1Dlp1GEPDXLvPnbn1cWeiQAHl1d3Bg2fs3WhVDT/ZuaWvpEGV+1Hf1431JbdFj7xjDcqeo356x1eXA1p0pSjKnl7Spji5gtS6y/1Fr1XXSi1V7kbDbri4uXIsxs/lA8RKh8RpbQTWCJJjFLwtX01/78B01xqY+nYQlKj0XEczqygjrA7evbhn2CzxN1dJGmvrJNyeRyTefd/q2/om0n85Bt9I9DtIIHqcJ/5XWwT8bX77DfVyRO5oVajfVLvNs7AjW/2dSrp8ql+Y+l9iEG/841jE2QBa2MU5KfQU2/AiHa74JzWUm+61RONEG8xhOpdMgh/KXI4fyvR9+vUN3nFn0v8QyX/leLflT/yvi1T+g9xAH2B5nFRvzAlbj7lRZPxUS17jEDiyXyf6LnG8CgOhfLJG7JI18IMJB9rn78FuexyEiT6UxC/tepZuDZynx3LLqcq0SumLnL2rcvauyjhCx7nk/LYypPH/7qkaeInFB75CJ3NjoYE6/xjyorGpwEDXWsIvKv4wCVERECvmwD8PlhueOeBMAXcG3GIC/DnXS+pYLfeD8b4F9+PC2fk8kv/WLoH+h08a7SS6mWS9IodCowThbSV0T8U8HuvlzkrfPV2Y5xWSziTDSysYZjwl6PrdjygDEJS7iefi+RHNBf81zcZpeixDARgNPOaVBGMCzGkqEIKd9EeUPzLLo+/tMbj7NVW+9MOan+cpblzLEE2lP9ImGpDZffKxmcKFlJsgxLkF+h4HTgM/ooYCoArxrbCTmHyrTCoiGoqiaEFpEUnprTnNr56HSPT1NVOaYJPtrvhs6SszerdQvIgS3yWCYYO68vlJvjXe2nUx/5nfCbw8O2uOz6Z9+qF9MwsUD8ID81jZaG/gxmCOg96ok+h2pjUa0dSJYEC0DJVlx/0XztcBxzta4Y5TR2N6EaVuRzdF4PP2eDvf3rUabnddLFTXn0d2w+JT9JmqdcXTKCvcuNovxKeAKNRqSUk5xUtwTz6FU1ITD7Yi9cyiDKnZ16Eh7ed2lMg0+D9P3W8ETjz6fvfxzg8/PP63z9szOOMTfB+kA7vmTnD//86CrQPtaYUONbToO9h6seWr33382PO2SyIGhtVG4QisFtoPZo7wRCY8CnU72xM5VyY+BjucYu87nOOA2HKQBJO9OTpqFqa+psRhqI571OQDcgi3tLtIqFTfvDzL+MVLnnn5NMOLzDu/Pds3fDyNJnL0Zoz7jpg6fZmKXPM8D8Fke4QhAEoIBGrPSkQ/KKGEF/yaSf7pbCp9wOd0nZXE6HM+O2vG86Z5AtSg9dxmpoGYgs00M42ImUZPpuGImOmTn5kcbEbB/3nufhMPfPLW+1RmnYNg65PFOhNJrPH2roXIRCKi6eAAGJVogFcGJ2f0kPUZ9fRy7u2/HuUyqElQz0Iu0wga3Z0uydjZKJ/JJj6QszbgTqKiK9vjW8ulxPmarCGXEq9c4odq1fNA38Ta0/hz+T/O56yl0kfoZG2opaLKn9SqM5/X23OUduHu177l7cdJ/bO8N/MB8dMr2F6Thf0Gq0QnF4Nox3JTHjwhIhXnMTzSgyCP7JyTwalIdCS/+kv1cxUNm0XUVAfWXuThL/Lww+QZlFCAP1CKv9RNOpanedHhjF9H2PgtfZHLF9C5I+yRTXToP0m4yxREm0fJSf9URYSOo1w9cCYmkYb9hizQx0+fvTxQtuiwJfOPtREbCjZ6MVEVOYMARAbEu+MXj6nM2KjuSjF9d/nhMal/sF+t1cXjb3XfvxrhtW/4n6D6WN2ildqP/pPsNBKDxzV33nwWnpedb5IIjzuHXllrWK7t8iU0FfVMwZ5mRvV1orJP69gRFRvPAM6p9ezEKnJ6qgLM/fgoWlG2OxkYoUAVYYSQfWpvs2ITSFGckTZRw91rIWDCmptRImI/hZyeVpFSneXp+MxgJPtYzPJrWqJIYcAh5luShbQgo54a3X0+jYmIxxKX8aMKG6oCwIKBzoPgRqcjosh6NJoime1yzBlZkNjcNetYvlAHpry+wWXUtmGcZDSEwaI2wEPDDWqHA9lrjMeC2XyklkO9Ri/n5aQzzNS/zDUVlkT2aT0fInspF6KAjwd1dJDuckHH5uHzSn/DjGlahIVmoUtX1sYKspqQHIk8KfTvsNEA7goPo/nQ2AvIZ7kFH17G4yOjpxIx8i8RhQKKLKJHX6kauPL8KhvK7Y7KfoRbHB8hV512ysAmrLQq+8EuZX+PbEQlufkNCf4RFXio6z/tz/KcK6PhBzoLDnbATOWg0V3kpG9fcira6iI11+28no4/6V5Q1o5EI3ey+lYHM++GIwtCbBv6e5l/I5MH3i1qP+ihGohYWzEIzVzc4GUWiP3MulwziefDVMmGeEgKjjXCDH3TlZwI+xTcLOvb038NRF+/fnnw9BXQ9PUaEfpBgOhu2piTZYwxl0azWzZa/5JX0qk05CyxAT8ESbPs79VpAhkpZ/TtqZlFTqdEEtzbQQMnOQUoK+DXexn3dVPN4ZoAuZ3qycc/c75amuTI/fu/owlHL3GoNp1jaqKaRTQpVsBFY3gjsCBpYKKJBL4oZDmxJQhS80k8HNtyA4m0rZzLGc7SAsmzXMLIbEkBwPPx/lNbRmiwSGUZoeEijYWDqJv/YvVEFreeyEzIuXqp6ulYaghMzC9ftKOPncO8eXu2NFp5rODOS+o5Z0BPz4ymjeXkr2ZDQlQhJjuXUZxZZF+nhot2Dt+0Za5omE1Q+foxXvhaw/OWWvA57liGOjcP31w/JJM3/j5qxllGIz/HnUnOsiiyUInEx4ya3OSAhfcsRrZ+yjyaK1YSfYYrBJDfQ081qYZUCWc9nhAp/FhKMXaEXSo1KYml+llY0448NdvgMR/IKNOvpzETbvzYaeZM7nptx1HYPNpLjcLWKA+VUU1YcdMWoNKtKtcnxXO+R0cUai03plBc+XqjziCeW5f+voZOl647ajvfam/nQfN3PeWGvRHTAOdatyVB9+uRoOHSoIrmt3xXmFG486EoDQYf+W0wDLu/+8lSu2GnQ0DvNg/w2ZcDrVOfSdNQtLH2ZWM2K607K9WuS+pJVatZYVT1W5x4R8vbWLPfSWhbKvqFwWlsW4tqrEzjspUpCMcVM1PfY2bq6/PhiXzRvLyLd41Ybh5bp769zekujGINPOPfX2GdUufIOlJ8Vn7yTVzrjbN4hrubnnX2X5F9JD2bTM6mUEsohT+i1v6rFsqgCK6+mX3SZfgLhVDmJZUZn6UxhcSbQvyJUi9R6uiYis0vqXuvZ29mZ9fDaZrr0p7UqHV0jFqvqRKdQcTT4We5SdY13CQUfy1LvysVj8fvpsPLaiXOQNV3qHtAVaVm+1SpRJRkf0atA/VozY+Konhhkd/qLJz+xecivJ7NOpaz8MDvLDxY3z3bBd05fnZ0hy25btGXydyBvS4WnkCEwa1jZDZu1YjxtWmxyicfuqSO9mTn8KWYcGjA70ej4eDhBNythYq2Pv1+1uBxWLdJVgrWbnzpJQRogxzxC4Mav0y2LkLserAMo+Vxqw4K/JTiGniobefmA1ETpcUoHSrA6+Ag94Akmb8VO3CLHdrHPMtJocib7avLNFgTAygE+8eHP5cQqEb38lzVDXZRcTjh+LFNsVT7xzE5bmTrY/vjwauDt09fHv7XwfNbYb37I7eqsW9shv7TD8Tg34jGD25BY0byDyLxwxKJ15y+2lpwl2usFuoa8EL8uLYUIfWFzrMOn7dEY81Ftnsni6zbemeYrU0ONtQtE/CHNvxss5FhmqxJkt07IAm3/nVowvzhEGUNmcAnh2sT5MFKXj1goDa1asbJE0Z89+tOfWNfQQH5g5UPn+LRWEaLX0Cuu+VHRkI2/8LseGhHBMejuxtgBiptTMxDG+8r1ofd8TzJvbpLOrm2Tzymt8VhTVZurMvLaBAszM8YMzKTeD6iJXJzendX05vBf3uSb47GHQsQ3SSLjg2x4Qe86xlg8ym2OQZfhyw/MUt6mJKtsesv76uZgKFaP9dnvpXh/Ayz2iOcno/pxuJhPs7WX6FX9Inhmr/QEO+oOwaiGp+DqqmL/azuWEuez+rNT9wowvTvuOHaVtbD5u6NUTUNFQYqsQIj3sY0vgWh/HsbP2Z87nAnlsPVROPbXHg8N8Tx9vTbvMUOoP4OibsQG7QlsVuPSfw3zbEYr23zW+4PuNVvsFGYz/z7hHXR+d1bBUaAdwprYrG2esG7hbUIAQzCWeft81c87Z7OZYyBE7fCftVwTZDXmvfFebQTnj+JFVfyKeQ5XhnVqSfn7ICrH84pFx8HeLZE5FGmq4xPRV/5Cg/4aY1cZ+6cqh+B6Ksfkcnp6hydwU7DXEBCVcCVQxqONJUr7PWJSkbbtj9z3/FnVnmn8IWivOLSCFU1EJygkQyEPhzv84kg6L3/9rCe3o4XO6jtcWTnI+AGHNqFQ6usQqssykpU0o5RmeMPBYjnOIc8V/TP6YcicnbS1xV1EpMXWSiOHJuw54aw55qw5w5hzx3CqjztDX9e7yke3Jxz2jw6KXPXeZW77ArL3LuLV9POCz4MgkWiqpwX45csVGCgMz34KQQVHBWTk0TJr6eIRgpT6j0VxGavd2O7aPSu5RNqCwR/V3IorSvq6yxEw4oQ391ZBGEKZGLzqMbAfmz7hUhFHARLnkNi1Dk0VL+3gPePzDsY1Hd2C0k7egOLDsrfkfojT7qzqk+KzbRF5SCwIfLuDEBBhUj+q0Di1xKIXDlQZRVS/JOhrEKOt0NVHJnwEkf+dPKcmE7nYT6HH/npbPeZlNrns/cP3h5D96JXBeEg3zDRK61fv9/5W7OUW2Qev313hPcIvfmaMZa8uW0hvPoBVQdF0awgpt9O9aEEH0jnRW6FoEjDu3yJ298b3/vb4Ar36W3Bd/4448iPMIo0KI3xqrfaXYKhld5APynswOE3hZ03exvrvNs+Y0eJjV5rf/Pu2cvDfX6i3X6Ml7PWf71dYbHmS7xWC5JluFX/++1f8/l2RnwFzyQVnmGOcQdBj6YzOCt5xeq/aLi8wlBqOGUjRgEUIvgb87Ucr/LYuGxcC/R2KKJGAeLFcEqb+/MZ7fIZPydkSuFJQp2imasvl4rcvLuUghHgm25j2NJ+u25iL4827ZvzOJfekhdlsfMD0HXHMmz43lHSs+7ddDQ9+0jP3DFl5LzCe72qj+qJ3nCRFVH0WfGYOaRexi9wQgjQ07yYMakaEIJaaDeWpzbCwMfDCR672stoAQVFv+vc7C6+6wfq6SGrRNDLJORkOI1nn2qAW/1FYauEt7smF93ksrqr/uWXNc3fsw4332IffHR8uxUVvqQzhcQmays3q14d/5bLpovynSygPBJLVlIutP6SynSqyCQ/4NtLTi1SrDNAxlChl0TF6/67wvZQ67V2dlpibhkseogv4ZTicygf/18swqSjv1w1toGClGkcPeQboVXXGnXx4nPCkXPZKcTK1N4GAGN+gzLSYu7sYc2Gt22KiTiw6sRZVq2Tt0/i04ALse1L7cNsCJyJjSAnSx1fd1rbVQlZ/liJrS4HdLnWUny5lAdhN5cx5nQHZXd7m7DcNwUmWdG73LghlG4ByandsOFtNw71fRice6V8GNTOtJocpYEPVdmvXPuG+NrncfK1rjPdxjmV22Y45abZ7cFrO/GYTUZtaS25wUTHbRYuuWPA7VtwHbDV+zFiwti83BUTMG4YSMJIxldjUO/ymuDzPMgiO4cCHUUs47Yz+pfq4mMvjbJerKOqMnMphkloUy7fobLA0ENQRO4dq5J1vCqP1Ihgq0ER6+H+Fu7fIRWGb3huKWuCWRvyyLM6TM5prJ1NlVIeOk29MvONUDKd3+k0zzfmjEPkoiQggWyxGNWIPZRzfaUjKadcTxBcdsNKVrlGgNnGipB7nRBjEaXydxuF5XRXl3ZVbuDJECEB6mmOzijD5LDUKUh6PMhhe8HVSi4tFZ0BAtc85PriunQwHGd2yRCZ1eS/zFXVWfkmvMuiPSqiscGS3cg75looPdnT6swOacjSy6t4rItkdp7mlXCRS6UbNNDTIpdRlakzotKAGGgV/PrEzSwe8AX/VrgTGnOVux1Fm57XrK9Gmd5aaI1e7a2vqPJr637f3V1WF/n+umyGq2tqwcT8nZOyILOZhY3cnWnuSIhcv4CburOG9ku+iZYGol9MtD7NOraVW9NqwRc7atNB8Qiu27oJnux4+aA3jpR9jolZDbTMIoe5isvm5357oBR8CmoUQYwWvzEsFHBVpr79LO3PP75oAmLx0riScgQh2gAFkSvBD9qPl2Jfj/jYRhxlT8arMHeQbqzC2ofwGAgXzRne1XTTnxCq9UNy2+G40UtNz+kU80F5VARB6a2JgpArf7YIx+re17p+ibHwQ7SCGRdZZKl6egVp574b62xgYlwcTGRKM67oY8YChxDoyOhSYRzFZsUBIZVx/v79WP4N0kglgJryR9gwIfxZNVARpaqpAatDdBKaiwGOnKDl9Z+4MPgAisDnEWfKoHw8ol1KUbtT3D+p7TP6hA8p6leA7lr6kO62V+OPC6JJ01uyNEKdART1a41PbWtABRvF2Ga0sJSFVY0xMa+9EfKi/nojjgt11Uw1hXKlY6ZFtGm0nAIuKzZ0PCgZhI7PVGLuxS9AG5pVyekh5NM0r9Xc3slr7OUp8dh7nPVZ9MXYHGf1fcdZv3Zw5mA1VPMM/LSJw4nrB01r6YLU65sDr7Hoo32zGeAbifodxwuXR2wctf77N2zm1T2dpXI8SKNgvMULpFvqZHTqGPtK2dF4MbaPq/rMeFgqgTBWVBVpiiBJXik10TwkY/t2BwqBJhFEp1QK1aWtHhMHrvo1YX8RIcqBenvOl3se1qPTW+/106jjhtgB/tz6jsba5IgMR2FRUbc2Xcre4k4VlszR87YLSnBVLjqnAGENwN1/+Nv2hcrZ1c+d5r1QBUOpoNINllKQOROn4h0Msd33aGzz19i5fwIAKhFceJ1irCP/qdEUSRRvDQbwlw+COohudBUgF4D7nONpwF+9vqEHBeprYf5gJeYPb4u5v7pyf9h9MtZSoX5yFla774qwLWOza14SpHnYnFAu7elIpF1+PFOJzY85pZ0jpDvLsc9SO0RH1EkMfrgLDAD8k2wShblZXDNM/EwVNH1xlFeihBQxU5+Vcgx7u5OjWqeMLjJKe/5+KQHdowVlaqxo+J7Wbz+hZbvZp2K8YgsK2BvvQrnm5htRrnv7vSiqb7Yd5Rr1O1KU4WX5bjalfVfGl+V0OC4W0TIzQNiyOWfs7DvHvhGbrmffntr27ek69u3pEvu2LzPyu+hpcXKoWh9rvcAN14PfzLRiVvUVZLSU7j/mzYdZX/1UWtOwPnUM61xrKaGWGtYbnL0urbRKy8TSCQ61KhZwb1ELu1qCTS2FW0Nhq/We3xFtXhx4lSsEvROIOD4R8PkP0PzwnCUX1uHpIlzR7EpHRLXH8rsj6kzpk0il86q/Zx4ka7nhZRoSvAI92wV/rahhkOfLeOQ95q4/V1L2kKQSKSlZBHSMnWPiuoxGUeRe/LjXtspDLeAK6oer3IpUpRbFdk27PTeHAajzbbMa4cO4UyL1VDiXnaq84Mb2NElNz/RNQXI4uk8SZzikJ2JSRbkbUPHdUuE9T8FdUtxBvPK1qrgIkRBrZ/fpBwq416rSfYgq99FDZJZuVaWLEVXug13kli9VpQsSNehHyLavVI0aulW0ad+oGun20Jy5TzXSraAR5zbVqKvhy9ZzzjC9ytGrZdeT8pj4hkQQCk+jncpYMFfWcJ3NaTteToOjt76ZfV34HN+yl1Wg95ZwDDNrILTNFuIzrV5GaqbeoYq7aWdLbiRN+dZHL+20naMsVbIgjxqeGZ4VKOorSNMT3CR6SjapXko/6K//ms/lI4gJtf5kwoirW0LdeSFSfUmoPR9Equ44smeBSM0VoTbzi7S4ITTSUAFT3Q/KHK8BIk1DNAAphVl9yR2dqf+OTne00uIqTSwVPqrpFaEydtrSz3wFL3ztt5EpxxXFjJnKX4TclnGvDxtaY1cVtIr+116f7uZ07uwkLnxj1hZHuX1MZc/cZcIUWyy/7DI1p7A1k91Xr4QTtAXde17t0mW+SZtbyQ5WWsne/H3/6F+6O45Crt16auxlRRVv+Mq6hrP5bC27GYr5zWYNtptxKY/ZDLl/pNWszmjGNHOtZ8CXjWf48NvOVhq+UPeWdi/UvL3Zi+vf3uLFAFxjV8Nr7UL5TYxdlFEXihj1a7P+MDvCP+0IjZWGBNchcaVJYX2LQj2rrG1b+ON3zZtvmn0d5o306m3wrfesUxCnwCpq+CmkKAOKcFEfVfzUcKmAyLwNqMBlv3w5OXU32fVCfokX6M6d+Hz+g3o/erwd7UoN1HI5wt8Hjfsqhkj8+K5ysDTujX7vynpPSeYVDzAHCCr88f57fmH67T35GihYNwGVU19d7Lzr3lcP5a4c/VxfC9fVLZOubskyV7dkI1e3WyoHt9YMfo9asKFOsFIhaPArC3etDWRVpuRPkempVs9LX76sYknBLJnbgTY1jnBmZ2cc4VyMal4RSCEMbuvclpa9qdJTJveazm2Z3ExvgILQXs0p0bi/FHsX8YaNeb/i3dZfifomWPsQ7gNh05rr3Jbazm21Q3LHw8F8sNmoLB8RdnHz9U70RbLSxS31ubhlPhc3G5hw7k7gg4CGx8uUJfFtX3i8q/c0lr9ioLW90hMGYiOgVc+rxHGL+TavTfjXbKdjYlpTSiQeSwDokBWBIEv70LhFJ/haXdWRTIZRv1NeIG1fXBToeCcw2VchkJ1kXTsQnvBOTgnsiKir4qBSWxjv+hEUvkCm5nWznWCrgg2haGvEt0Zyd2MkG/VYMj4Omjs+L8kSpjVHpMXYcH3HXLt05fdtVu58htZLndgndcCG8TI2jDklEGPC/DRANzN685tIfjWcD/IMhnhV3NdFaqAUtekprLfB8VqhBIhtux39km8hEmNeuzyi0M0V1ucbRwbezUS1wOuRq+dr34CsnrEPzEtrt3hMOXReXU2D0ss2sX28l679QGsM539mkVqfgfU7vVk/bsczJU4JwrjwMMDJ7d0/Txkq/ShWoMPqwYzOwZFusV9JHSTdfm/8Ilta69jBgrNeVCzZgDWW78Di270V9U/xwUbN+Ije1XHVbX5PHl8qzBFbCjVgA6+xYg0LdIYN8wBlASwaVIzLZnOQS4aYn6iCp8QF0vamtus3Mo9MpqJvQpZ7XtthbBTPhYizzFp1uHj9W/nqFSLPbU5UJ5B2N1ZJmDSpnzTrG+kdTbIarJ1WSeaWaA4L6u3RXGdC2oVOzYZjqFtNgy9fqDQ2o/qWO/SyV1M7ShaCftQRVN/Iwh1R5MoCEzESllrP0HoWQdSHSbT+7Uhhw6wx2j2t4obQXwotk/5opYtIElgeDKo7HOWykJmBe0VdYl9Ol3dcLmsnJ2M+RsjLSxc2+9FNEmfvrdReixro55L1nsU2tJa4YrtAXRU2HbhVreLvZ/n12SjP7GpW2bcq161CIcPDWW2VA5XrVrlSJrmaKtpg1xK62Ps0tkvqbKvC06vLAfaan1owFmh7g5VPgm44rdzvksLISwov5J+29XGCGBQXYYg+wtrGytdqAn3lTLLPCMUHww803cRU5V7ouO/Bk5Fnf/nly+CHkWePOI44dpGxLi5+kRWan/JLeM/TzGpqgndaQnpc9Kqc0/GMjyjw6PmQEwadngdFQQTvDRaWjXtMJ+JRerJD0jfpFJK2PQpCXYCeOB7RHC7SSWpegI7TiMoAjpqD19G0POGvMeGvo5PrU1YTn4Ow957fv7/z5NrMKmBwbUYgbNCreDfPo6kefWpxkcqLiD4GdHz2nEDWkJntwiD4cIrOL6VtaVIugoUy3yLglnp97wIkcSUgYcMI1I0z3eA6v1w+rDwhdKsYifv30apF7CmIXd8Yyty2qw4HyMGJbox/Kq7BLftHUtpCPKc5w8g+fzLyhi4+VwzxY2Rnnzw/De/9aPRjIvCPxdWi15KiDX8vifwI8bOEYtPAaBbQl/Wca9YPdp/IrO6FVJ3Qw4+h7kcj534Rj+doIEblQuzqW/hZjqiNkeXfSi3onP4SjjJwIDHKDeNSpw8k5aQ4GU4z1JDhQ5flGCH2/dp/2mkefvDlI+mMHGbpn7wIM4K4ldDn078oqB+Gs7n8Na0AmVxRTpKbB7LR1iYcGYgGj4jiMpCmT4639QSqEsUQYl5PhA0RE8zyPJatiscsnk0lRppsd3/odyq5NPprd6FSuXk9PBtT0WwzgoajyKC+R76zY+XXF/ajbC9rj8RE5EFvJJW2HakNqZVRepXeyKRRCWtcbxKfn4/5gA56X56VSb0RmvI0iAZa4dBS3orWnpaySutKP9iravOYw7qHBKZHDiAabaSb31GRWrg5WtV0ShDo20/G4aKP5Wpra7L4OBiOSZ14YkREEBa64wI+kkYnsTfjATJ0fxjRyVl2NSas1F8SkRBOcx3uDd/muHSNd9JOhSqsvVqbqmnvW+jQrtBl+Te6Ie5N1G/tyShGpXufUoNB5e6bHD5c8Xmb1S0OwKffi6BDAojGkH6H5prGtKNRiopfSAeTFQmd3yheu4hdl19hw80FGYzGoHxJHfdReIm2U7biQptcLPBUbxiXLpSbRp6N355WDxELkRQ/gWRu8NJ3XsVi1gHHf5KLpZD8hxv3Ls8AS1XtpPGYzKyz/hXiGeZiB5agaMb3zd0CwCKM263/mX8HYrRECyfhpPpp3ml2vovzOf6l7Q39yeTHJMM//Q/0LxkmkHKeT/DvHL9n85j+xTRqdeY0gy/brWYrEJYbxOhWeNJ/pLMxj1hGhaQdW18pmFlkwnIXHsA9SN1qzobD/tZWafcV44h2Hn/In8X9Qs0YUzF9+bmTfzJ2D2JJVy/uJs8DLQ6TvYG5I7xXhAmf21dWJKfQUMtpZJ3P8t9ew430/v1B+ZrxAb8rnml7StKBZ8PZHLMAv/kdbb4dwhsAvsTxHht3vZNl53vjHM8NRk57VoRUlPJWmK9IZ9xzua2aiCk2VmN2jhcTfYOnedYAK3XZUvXli7qcFHmuce3Ll3tKxbKwcn2ylV/6bhObQOIvuTxkRzSu2CfpdeZMKRgGaPP1iyYtk6R2qddkLFvBBdHv4knq0u/CcA3uQhSHxud+zD73usLJxam4FjNxuPTGdatp54r1Q5FIaXsY3eibNPW7IVdqd3kFf3JVtwjeCY3bMTtiF4VAyEB7jQyUbzsirHqE+9WK4bji4Sjbc/3UB8F1v+bYNcfWRRuyclPVhm/8VZS1rwLVhcIxiHEs+g4wPbUnmApJ+s8e0l8J2OLS+V+VP7pTmx8Gn4nPS8fkwFQrDU6jGJ3PIiHMa+kcgqpEMIvQ3J5LK19bzX2GZUiHHkgGAcjoqtI++lo8WgKykmxJcmkQl4FsRBpZprAXix9p8Yt0TQcFWLyQ5xMqMyMlroz/0kzZ7K46tPQOSZgFLk+8iIdjNeuyXDbT9HGJ4oSrztnVJUkm2852yOhhRfddd5z43GFMK9awKPJZCfUDSORdHBYLQtQYEfkgzmBktdBW4vswWLDoG5mHIUAUMg9jATELk1YMiG1jloooL0kYr5iG8XKpGK+Sii7FlwvEI9VzDAsfzp3o4N5yKHBOEpGjkM490zLmCK8f8YKM4ZHYN/u4bRGb+XYuYikNJzo+bGyHmiRx/zALBC+zvalKZZs5KUOZGqyJUmIvIJojWUo+y1mRoRNJbVdgQrI8PiLMr7I8o6NxwhLyc4ZAJM3db2bDa+qxdmVvz0Ra7P1mPCiKWeNknFcmxuOm24BofpydTfvNc+KGj2ezbK8VOAJypNCAwWuCD8x7gwN72s/YAKaLKQOmFJPRbAHeH06vcgc0tliAfRG9CK9ZJ5as7QwACtIIsMCDymltTxV3xJ5p6myuQXChDAjq4qaiGPgwloLP126omSlcWNNKZ2NuKdrgKxp432qIEdqkCZQGuqxDoXix8IqeOGrUyx7DybJjip3RBcVZIpbvEhSq48X9+/aMmYmLFROFm2ltXUhDWHm+sGqWsXyyzlLlnooxiIP6K3T5nRuR++Y3Av8/QzNfC+Fn1tR0pjmo4kjlDBQLGM2CxXAec5OcFB+n9qNA5pEjzGn3qjm7hpIHplTx0lGwYIUWwMY6uE0M1DkfiQ2lY3R3o4b5JV+UuTaPMPJSbj+BOPa/YTbe6A01hmyvV2u2svylNBveQtQ36DTmdw9Z/jyhBoNX0J4Zkr158evdkgoQjevT2pBXvfho4C1E41pY7UziFPrZ7+5B7SNy1AA/i1hpF3/vmnoudH2WXCiY37Y1dh+9E0anFrgjC7EWDu47gI16LMrjxk2xpwZYf3mz6/eT92LL+vtcQa1v9yge33GjGqa3QTz9Ic2/8987Nd0Zw20fcgvq6csfjaTRi/Lv5uAGszCD1cronbCpgrQQTgOssf5eMWzgeFtgzXkDOh2v9QCsCx1D89kMTZF+t+KF4UpT3O8bnkbRkTN+TbTcBAj7+0jHS44C5bzuv68U8zukEkPVWvXdsLAGtRCeJm7LxPVI/6K3cKtR18lrCTJAVjIE7iRK3fPdxDESU5+H2GivPY1GYkTGC2Mo1qdiMilUfg83i7JKnYhn4hpeplqhHi1TqCFba262dcrgnFnr2sBJNv4TRyFfG4WpdI+VbfLowdyeg+Zzx5WL9wdha3yWxmN57wkONJM9xM1xWs/KJ780WYTIkUe+0BanaBCEbJSn/RIdmc2G+TQbf4IvugRERnVIGHCmAZyRU5pOOo3S9k+OBUduztU/RSm++FM202hnFhpVCHZ3Re6AsfFjfDp2qgeeU0kkTnEHfLG7MyPyjHb8XLbnngHq0qvaQ1kL4EsetzXBMTk0MMnbD4iYfv6qcLjFsU2aQbpO8wyXh6qrTR+AuR3zgBgZ2HWtELu7dotrx+LntdaOiu097gFr2ogNp4VJpikDLuByhsO1vIwX9vx1zQKrJLquWvJx8LPCHphsapaP6VBEnoXo1prZctN8EmXtRG2+obmpOf5R2UV+jHbEldstW9cNjBntyrWgwdu199Hn+fpjtLvjsf+rWGCugi+70oNdf6UHjx9yJXzZlR4+9lZCkDJXckOWGz/SZV3VWoin1lWc0GqiT/eRFbj80T8iV/N87vgl/fx0n4Ppe2TZuVIrxJV0QNQCErJRm+Ovje4ekBZV0nvlvWe0a5nndAFbu3LxlKrL5QNBd4v1uoT5rLgJHq8XTsWVeCA+k+H2YyCu8DAAVWPCXOmnAz+KH/lQQJ8q6oMQmPN/jlMn1FNKg2Jj4qcOiJEW8d1JDkmAW7Qy8j9S7mqOVXSRt38SumGsxoV8/An+tJdnb+TSXV62U3WenEe5dDLIZejqEV1IHPFPcip/TDmEy/Qy0n+/fNndIT6yLzqwfuNxAj6QwXcrzqn1x62wRYNO1MDwEOB23lHfUAbslZPzOU1OPSplhuelp3Q1r1Az+pENTMlD4z8W9D3Lb5+vh/MBDihdS4VJVHET34NDaC8NqyrRhBbBSTTwOcxPgiDs+8RDn+/YUV7aA4+X9sRx0Qakvi/MWDnAoJlZPM3OJpy1S5SawJKoydKAM5ayE44NLlWVcuwJAVlRnENAxhwCokUKD5HTG7EOBsfrNu6G5PSD0+DUp6/kf0D/bRy+HgWe/fyG+587jWpiNHaeTPiOx1G0duuKiU9OHVZKCYZ3lvROUsu3eUpVhPI7mLDh+gJ+FBNyKPDMJgBO/bMpDcz+Ahrzxd5Ib0DCNPJNnzSgjG80zny8tGyI6wPxvwGa/rMsF93GHeDrn5Jjb+jdqfxPwBt+asInFztPpsynm47gNBDfaNBZuXZH/NtTUPQN7cDxmKBmlib6Os+Ps/j87Tzm09y2fazKIUaikRr/2Gzv21CRD31vR8eE+j86DXrfCFv/sfntUB9Ap/KcsiufQNUvkWzKzektKjX+weZAUjsHEvh4b9j7vlpWPoZaecUS5NPaxMeabUtV82Jlm8iRGyVbJKXNSCY+igciF6Soiay8FxHmGfO+SPBR0hhHLs2zKNMbEyC6CQUad7gA3f1swwhsqja9evfyJaC1WuCMjbkss5u7DYCPm+DrXncxdq+7yF1GZyPZ3Q1AYyUSD1z6/6lX11FVsnxEzLgzb+ExkfAWUu3EKf0fK+yh8cfHPejzB458UN9hucDmwQ+o9eeMf1B9q0RAcOwDFhGOeJDuwzrnPEExtVYVARAQsDoOgv5ge+CEQzS+ejyEcfkHkiJTXknqX8kvxAP5RIoF56KGJIqRAUfFsyynFGNmBkoppjgdnZAQevufb44PnmOoOUdamtlIV754cUqGOXJfPPgZ3ozPD96G+A3DcuG622kVzObzKk46yVn2KQDurGXrXexanWi9eXv4y9Pjg+bfD/4TciQBxugQSbCmN8/MU9Wdv1S7A0R0+GQTPoXok+rYII8znERY3tlO+4h2rDTc+Yt8UlvVBU01HvxK9t2NhR95/6gkUapdJs0w8LmSz5M0KY3S8Zk7RkJTdqQ9dSuEEGijl+rlwwHlu7lhwXyDgc+ncuBH4mYS/zYmidfLFwVGvCWoYJWZ8dZY1WOUrG4959Yzan3dVazxz+i9YpEa2kvYMHSy/rSRe43Nl65h7brFC1aSc6BeMso+7OKHXPSc0L36JevbrFieUxekD2qC1/pRokf9hx9I3Yz6W22TcL+LeHl5aQwNb3tHjAMx5u8+fYeJH2zYr5xgEaduZTq64Of4EpbR4bidfyffmXJScDzQ13vM1s/Pv2+JETbP/oYSjrHLrJiyKe4/eDIhTp4GBlbhg0C95hM0W41XwBRoPtMIxHIIiaq+lRG5/AC4O0c/Pe22QLhxbX/ScR5Xe4aOqU6l37pT45pODRhB3Zffzmbqe8QYoL71YTlUDBYiq9wQg/hHhBKYN7UhscZACetn3MdkcA6fONn/YkmOIvol9UK+4bBOByIMght23xf5anyG03Xx+f3ojEqC1tzep0/9U33q3+1lUTHm7sXfuyaLDqe7j9y8B1be7kM376GV92CXVuhlaiUTICMpJabOugq8cc8lILVN33EJ8ZMnD0iGW7yVUt1xdKNf4Zn3bo5fHr3vvt/pkRrwP2ez3gMxGU7pb3chVE6Xcxoqa9dk7ZYrPVgsFuG4c2R8AEwrEe3Jze+OBisqSaT+FmmRB8qJLPBz/NsLM/jd7x882qE0ctiZ5pIYB9MsulEvkvV2hHqxrNcFUm/eviiOsElzGs/fn88+vNc+GTso8exqPFIBhlbB6dlUP1oxSx8SyCyfP+h1RZzPe7uohApaCb4hgZ3HEyqUjM/SkSwVZ6oYnf97gUJ8v4fjxY76KZ1KusVv4LZbfMER5EHxBQ+PhxIFCnGe5XPQ6OecLozKdAM7Qk9rRQAOxCRU00E87efvU4n9+/l5nvZ2d0Q8JoW7t9sVlJtRE6O8t7srGtYdF+9loO0uYZGTWEvymIpLJH4yNRT8QT4en73XN9YXI/FeJlP/1Ajpz12+Qgu4Frmk8NMdTxJTSnZKFZC7DxxY7zN0vPvQKasuTup1vzdYuIAfCRXtmdNQST54CipEN8XPzsv8Oqc58zGeTUn/IvQ/EBHGvV0u8Tyfp7OhdBEm2o7P5vl72sKgVXItmprwxPfm5pAuLhTKqBPp2YxSY0l8HToHIn+QgaYYCF3kjPrwYXz2EcNB5XjAZVH4dj7Y4UErEh+qdmzyPtytvVHt4QPvjWkPH4qG71q0h997rz57+EgMx+O8H4/fF2EGvYd/te88e/hYxGlKHXif5dMhQP1NqF3we3VPyvcFNUxCVyjFnrCCFizneu/RjpAKXXo2fm/8Pv+6I4bUvw+ElRzreZ5ewZ2t99cuZRAu03isgT6msSHmIYymaQ56/21HTMG007xPgyf5nYZqR7K3Yfef1RBqLjepzI/CTpufk9jKbUFxdDUkES6ZCwLdSvRcEColRCq1khROei4Qs1K5qSepNCJknWFG8hIBu67r4P37MqtbyeoGMElkan2y4sZCshGDs8b5u4KRS3s60kzOzvMpwnqJ5ERsOPK5Qlk/HknN6wA5qskX6TDkpk7rNN/mpKleUwotDk01DZoUUg0vSvqZzzotmvlTuFFrsXUzxjTtOZO2I2eqyHh69jxTtlOdogvsxE3Hf4JocR8+4mX3XtwxE4+EA67J4IR8Lq/ToYpXOZU3S7pEgL69GGspsxLnMqfixijq71g9AiQX/dkZJllb9gTOc6ojmoMdrYdtCmpVihI9ktjq+4dSOsI+/iELEj2gCQ/oYK9lvNqOpHSWDfPYahTIxHbWnA/OqGetXlFjX4JfXePuhr8ir2j01bVPacSqpvY7s7SrnN3NtSKUsoIIlchNWQhlfe359DvrFpIHuzSUcy3fh1lv1E5FNxB8eRz5rS/CwV4775j1WwoQC8QuFe/Yy8REKQYWNkGvVH8eoaGamvOoodDArjPbbve3mQ7S3rDzpK8ucckUGFxSnxVFwiDvMP7qtFZZr04yi2TW71MBTYP6nhGsRaDeAg3QgLpZO/fetaf8+CI7k+5XFXAZUhexkEykKcqf3VMJMwXSHbSoMOfOmdKs+BPD68GxUdBaCCI59G+4X72kS+ZVbxVRyu/jMCjNSAgeML87kqdIlnIpJ4ccMzlhOK0W5ZzAWIM8k7UFAatLN5VSBMtqNpzHY1I5SAJnV7A7NR1xQ/OvcWcTsLyKL9SADyxSp9ZKWV46S4ysPT0Vr/jmWonvzTbcZVkaiTVbz+x5V1yR4K0chLJjy4osG6lXZ01Vsqkwh1JAc3VCEO5QHFb0yIWw8OtVvK/L5McddlbXKruTwZ5PwvQ8G5kO9jELvkrYjOORVuo4DNXVSMyxEi9i/jVMPnGmhLJmAgj1dC8usJ+f66LvtezOREoFssLl6K1MdnxyQ7t6dKNw6BlkBLad7Bfvbkw77r5UJLQl1Zs0rqN2jjoVUkwl5NNU7mwUA6s0uRF1Uj4MfyMtZ3jtJCr1qpxK+xJulJPcItU2G/bYcv24niMEfdIuaE4DCX2dxltB8iS5g5GbzZ/+ThestFmKR0VnSyKPQqQy1UoTd8D6+s4yR5I+iWI3ISh9R6UKShhpHvYpv4dTEISEKq5QYVmMKf1VBWxcXiq4Z2FKvWANxMwNLIz82AzNKgYxzPYatA1QanT0o+AcGukrIoS8a9qZV87QVeZh0GNwAy+4rqgXB1IKBKGNX5Q6KjEziqVveq7S9jCKzlS34WtG0dds+4jGrysXNN2P00EOVSWL3DRIkSP13c6LpSQL8qjVKuIXsoqCkJYVg8zlwR/SEs8qnIQEKyMQ2ek2d2IJWCMNE5uYufWZMgGN9a5RNMjlpDBcqFenizlSVViiAnfhVM3oH0kCvi+R8O+G+ROPqbDozr32wGtKzE/FwEzoMnHktYIho6h1+4Eirtbrde1FWO1AUdNcqZzttRPDywjr8U2NpHbJidLK1GBw97oE37ziqTh573nvk0g2nTAQfeg0NvI4tDS71qSo9FYuEpSgFHfHoMg6g2hIvb1oiaUwTlnRRAWzvfaGjVWNl8JpdF/maxWNcttoGCS5pMwOdTADPUxpVgyOkN9OuChRaUaNkgs1FL8SAJUqbksoF+UX2gQpiYQRvhuwzrsMmgoQWF++3EEDPL7kqXCg7am6mYaHMe/fv/NOaaOMbvSOusQs+/xsqjtEjGuMKwl42LuQMF6VhQTGkh+yJbo9mz8Yyh9p/sA2nm0f4oF+SUIMwhSRQDisgxwu7/JhJsiotBhop67CIScPRK48u7z3lg3IdbN4hSU3N5iRTWEJydhXCGu0e7v5eDgHkdKYTLy9/t0Rq2RPh50QkmHFRiO8hxj/ncqU+PLFvmd/byeyPgoZn+/Nep967XyPRafSnWyGkxGK5TW5XECMa94QAZtix+u2SXLIQ/Z8D/tQhYFDcpoT18MMrli9BoooHLxFvjL7OjOUJ2hFWFU2BtKQlQa12jpPU3ij8TVKnaYMqod/2HDOQfN32c2aUxt0tlCUr12rr6vhevvN4unhY598un3HG9+i56krpdjAVlK8kcyBNgGkVxaVUqm3SyZYYLxTq16d7cyIqzy4WS6n+rnjz1gIqPzu+MQ95IJ8sh5wX25cslGjCQ75+dXQUg/baK8pW/mFx0vZHBBl5k7Sdmriv5ftPzDm/WJ35AHononhVQ1o82sU7rpXAju209nZeJzE6ahJ1ybhT0YzJNWuqcwgngaqOy6ajcGC9wxFSF+9fLeF99Ma+WcV959maT1lLQFYBfY71ZTG7QR9lBTznz5uLAEhbWNzOkJIcHxiZ8T6Xa2hzt6FlyLTtkqmhGXsM/q5nLa/yCXWJ2N3N1IBGdYfowCmTNisgzuatqOHJHHZsqFStygV2mLmiF+tL9Y44OWWRxIzNW4dYc+3hreQisrjUnmU241CpsAus2SmVB9wz0UmWq9evzpolWZ3ZSCsN7Wys1z5y08wszHH3Y5oJ7+U0xXunMHeaEt44lmcWY0Opx7m+Kqm/4Ujh+rVKt4w+Rh/58lajF+CxPsfU0CpxneqXZQ8bBYL94SmogjIuHRGfYUq3HxFHJJPz676g6Z2RbnTAfP6uiwWIis2GhiFTiwrWsCEevFYbkmyQI5Rpt4cyjxvDlFW5fHKvdZUPtLfirgYaFNti0D22pn1/lBqfkdFaiAyVbEGhM6FWKjwEc0kXh9rZbgctzu0pbC5QZnOfifwkoqumgjtJsJiHh6Eaem8S/c/Xtp/LlSvRJScVbg38S1IxTKKqivr34bwPZa+xmpTXxivaeqLuahr6ot9pr7lyG9u6oslrnxoErL7jqNjsDxayuD6lbilWmJQ3HSXKG907YYmyx2ZZQbsxvK9TOMy7xF2ytZXdtVuB+vokWXoRug3Z9oBzBKXja+j6qx5WoxxqB5E0UkYvVrhS7+XBrdnRKlaVfgQifqA0ovHmmhg6Jnx0r3PvVd+rdbwqr2m6zvGMtYO80I7VNu5vNAQc0tD5Aq2wva1NUTeLq4aXVxf6ZzCOHs00d9r6YXeuAuTz5qqyinCVkZFV4diuXfFraUJqbVbeltD6TPjYCbHXaoQjqftYlGjxw7q9NiB7GPiYbw+zQtf+r1+UG+pv8NlYKNjnMQzRb7K2Q4v4/29F73/oE92H9XPK3JSPofKnbum3v4yQ/AyG7B7hDGc62mgXyPqpOYT+V5NXzKP19WGpb9II82MltOcw4SOS2RWxNnY+p6OufGxq+Ndn0WNFk/mJvKwYNhBNuv5+xIkjxfyakiuGz+gYMOmUnDp42oIFbd/AHleJDZVogtnjX0MoLxVaJik1TD8oQXAhzPWR4m52AZVBIo0deJqOOUYBow6yMxpawDxW5HVwHPWZjB94RJZ5Lxmq5PXh8UhFhVYOnkDWByXUYalk11Ya2lMgHSoEvkgYDUcjv9QJJdfzqY5Nq/drwbmho+AH57KlKZKWQ3ACTfRDJ7lTfm99px1qiNh3frVWBYAOZCpTSvVhbSOY1eZnU1+E/lrQfRHz2DMrQy2ZayG5wbdAJBOWZdabpAOOkgJTZNA9RsOgNWhEko2WgnlK7hL72MxvxqUcabiLFhRFK1arHgzhFR4knu2RZnW67qCZkJ/OO2t3JUYtbTQRltaJUwXgV+pLySwN/DVOk7LI9s5f4AvjmOFf/YPfPbPSq2pnhMssSJSNxCFZVkkjGvoQJG7lczZY/QLK/Rgq/HQtkRLG2kanxh9//TE6Fun8MKqjU9SRMRN5CqUqfCTYWWs7KnF0R/A0I7PuLGiAdQHhwMgeMNxqFa1K06xKrmq31lusJVkBJJW7++WMaXVG+0WgchBCDd0s+NEbt6/7ytSDa70l9PbIpgFvXuKfiDcPQVnBMI/huS4J83KgyDoeQLTSpaLpxy4ird6SpprLAM+rC0kc10Qqsy3xFVkvKqbSCbUb/OJxMHiIuPMud5N4XVmf8xhpxJyCAOMy6RfvvDE5GnJk2uzXQ236OxquPPtFZhyIKTIgoXjSKUugFmvwwxGWatxpbVhizwrqr6JP43P4szX74RhqeBCcGY1EXTwySqE3Tu7ImXs6IpZtCuuowfiGQmxH6PvxefokXgR/VUcRI/Fc8r/RPlPKf8nyn9F+f9B+VdRlXnFUVRnchO/RM4eTLyLWJrzpjOqYXxxzMWL0XwNP67XJ/5Vhd4gPLkSv4h34kocn4qNfx/R76vaMllcygAifolcRaTxFVrHUB5FvnhPprxt1Wb6V5yKeBy8J+4YCv+5mfg1KpvdRBpjkNJ46ShdCQ9ESl35HyjlSWcqrVX4arPCV5sVvtJlG6sL83+bl/31juFyWR6+Gt72xCGsjYY/55cNyvJ/td5ia8Oo9YXYCA+3bGPN8dsY8PrjN7av//RFmmVR4rrsbyVudEtYtctDs3QtzDA/V32DREt9NtVnS2SCfIOKaDVPDf2yhkbMRWSrhKjIo91/SzpuGNcWktxoMrjzujEmURRVL3BRWffvuyFRdWWRFcqQky2JRSk0LQgbmaRJiR6EFSwhsdS1QY8cpwg3ul/SmvueLG/AvmdpVuVeBlq33qSG00aldD71w1+r9EJRouM0cfiLrRtWKSRMrPGa5YOQYym9R1HeayhWh1GmXMu8j30zx3o3TfNX0kugd7Ijdk4RL0hzqIgdfKnCBnfw+4WGoDIbeoMElOx4x6KUjabqFF3vZO+iuGqRuqKy2nwcuXhbHXu4+7eHf3v0192/fa9C35yCJ13aX3oSox2xtVVJ3zkNepxsFV/wLY0LmnSEXZz15K3eGGD6BUbpIFXvlUriSOdpYvGuRKUHezqfKcKVTZkvX9gu4fNhZSOxtnPf8WEUD6HlhNRrrEQKBrjiohDi21gb4O8OOdfYT1jpsdLhohgZOUz+odGZftrrzGBP//CMoMpYOTz6RtTy2HS/ggtvbzkmpqPfApWw4Q6Fc1YfmCOmyA5AFbEv/J5ADy898XEpglNGWP9ddYD6Tll6WinxFiV7qmjHu8LoPN96ZQaZAS0p3FvSyJK+lV0PBiIWsnPesG19EFcXm99jy6u3jLmArEbsRHlYNyuirGSEdRwznRMbbpXfm4M/ZmNR3IEYuuH65eUqkW87PKd8kURbydajg4f/JqMDjoeT/DP18/WHD+QP3yYy1bgrIHBJX+OXqC+9CHse5nrM63C6CF0bTOR9mDKRxqg9ZZ1Rdy2L0s0zrHLZUaolRWwhdKC+Asg32RhLlc5YyHWTccME9Bu5/NTITP/JSC4nuZtkze6CEmuZoiA3tBkqWwSMnx3C3XDu2F4WpKwpl3gpl5QoV9ziW8MBQl1Lk9jzzbmYRoeIOwVwOQ0zSztXl3YFpSRcUrNQxqaUh2w17esmbWBM6AwsrwGm7j8Yzi6v4vFPZ/NLcx+2v/SoaHrH/dA30vprTeyC0/ZE7ApfQRcPBfKiBmRj2r4gMBPAG9GPC9efaBQsRkXIu7zWQL5hTLsQwiay49zDQTTR5ba6W7tbD7d2H9MffPS3RmG/pv0+j0HJJG7fg6jLqQOVgV2rxJI1WcOpkzVv18eQgxB90fUSdhKo3F2RmmKZpolKzotJ2ucp571ew3IHYRqKLEo9NOzWMl1eSz37qkcqx9TL8FVLvUZeT77cTz7TFJMvryFfGjht+9ddTOu1inXripVnsncrx3YX35is3Mbpoza58rke71lUTsQisLfMHbW34TVZwfKIEX7fM5PhexV/dDKoZNFJZr0/OIgaqCL6JJn7TzIWxn0WY9YDDNlJ/7R4g2H/4O0xnpShe/XhBz8ybzD8SveNN+syj9++O6I3Dvz5qs1J/SMNFglXP9LgICiaVbwE9kBejPB6w8R+vGFkP94wkY83jGofbxht9niDv1O+xxvq5flIP+Wg3ZthJ6lEl18UFrF7XXiGAtq1Fxrm8rV4UF4TroNFtiw8PQjTvWXh1VlvWXR2pmN9ZmvGs2OjVB/OPvuq4exJ9GDLWhyXarz+NY7hUTEW0glIn+LNM4/+WxukzCJsNSZL1D1eDNYtjvVhhSr/8JGWWpkbwpp5rLIpVwNR67jFDVDTM6TtAaieOzEW23AdddAdJs9lyCjOw8VfdE5tmrIgzq2XK7KyZlA3kLq8F9mFNxph433HCqfxbB2ncedQPlBLImPkfn754r9KdVn0ee6NPq+P2xB5bfR5zoGEt4w+H3zN6HMttfO9/wUx570G7gZFOGU71fEvxmXEHVJKzGRybUSTlyt5Pm6o3Pq9arwqbnk65u50rFUKWTO7hWDtajHnLyhyqXNJ16ukk8ZHl2cz1Z85v4sC5s1oFaOzryt5uA3FzzyT5FYiJx+8f4IgRHdO60Vfv5oeYK3qbvGemHYVvKetjSxprDcE2r3GGYPEbARS9WNXePXw+oBYmqE1WCW1SFXut6fCjNJOgUDCCNRHbKnxWI1E1wPWFw30++XxmuJ4aWxOstpJshyp02tUwnlEVg7e2XywDDBnjJgpdbIGlPmI7Hcqw6rifSILznUseFZE3bPm4wiTrCxFEts6ki/TgOSTQvSAWJueUUi2s+0HgXPIqF3NuCvmkgn9r9xDYNT8cTRVVzqj5vuDlLK6IKVM3oLCYIrePYkazpMiQRbhBn3nnkFKOhW5DwlDpR8cGGGQqWusamyaqtfKjOkbqFw/5LUjXNRkTFMemWwnEwYbvsTxd7aPhhZSotPOOX+SFXD1dZe4INEI9oyEdegNtDK0T8QggJ+dOgWaK9QGwWKxMJ6AzpmzoXpCbSdPYlONd++8aJk8egc8jHF1Lnzd2M6sNqjenLKBqK4MbwQYDM8bDz+55XjdYkzZx3RRJBODmUmjqrPrqfYzjGNH6OoDrUQfz9zb6Zlj7FAmVDaycoNe3u3pSuvE3CwFy6E1a4PnKms34422qW/CV3wd8ByAsyZ4Lh421oLPQTlrwefiS9Hn+JplULlUcbC2PhMsFuLNJmy4DkxdY02OrQe7nAc35NzNIr6WN+Fjw8b6UWDrw+caGwWGrQuea6wV47Ucqp8N1+cDrB01VxmWdA1sthVMf3Hee4hUFFX1m45xDG3IuUtF5WBbr+9OufE+753RYlkxUWtjaRo1zO1hg7xpPa7VnOUAk2fNS8pwIhFxQI99MQJQ9P0o0R2a/cQdXc8i0hCO+alUSt+gy/zQnjFTFPaRDFSsXjaTVy6byYMgj25uZRagEcxwR2sLtVvDKaC3c0PKIGxJaJyxCWUBPFdGDdzVwvaN3PRa60v2zpDv+o4aHhMCG42gMvFt4PiaO1/yEaSAeFMpq1kkn8tOJeTkyxf9dR6n2BcVajrdEUEvWokucbWCANXDqFxqAx/oHK3TPInSPZOiL2ft6TdlE+h+mYWlx7KgQqP0wdJeHlVfj0iC3s4TbrO4hlwnyZMzPv0hBpVo6q7iinb9E8hoxDiFD4NUJUU1AmegD/AQFoExCMzPpXI9AIncp7BSUJTHoLqncftAYHkACpY3rQyGHy5hi6ggvPCTKCwNQcg1orRAMfO4ddYOShoVom+vNOGKjGBPyU4NUyVa2b3iZ89XMBBZyeFBXVIT2ldS3vAei81I7qNmvKGyU6nvwSIvXJz3/E72vZrrPvjmSZ6Se755Wr62v6cPFctvPxUuzuxHwqnsgaOfA8lFQ0M95KMj+i0MPVNht9obCJuMvUyY2xpQu/gtLB8JSre+FOGFfflwr3wX8b2uzi9yLNN2LLQZojBZCPdEmCq5CbpJx8ytCvE3lylsryjCnwbKcErbqZ7f/Kh3TDW5WX2WtdUCZvanyKyM4reoBItRbiVNIMBXZqkfQoU+W6RsyLfKVYhvZH7QAhSva8hq9UzYbxAqzWDpS3N6zS49EacmnrypPVXLWwgwyoUSy6NZ0wAhQJ6JXaZD1kXxuqh5PpiHyqTjF6fPcpKeju91n99Y2GQOhX21cdarZd/MHv1ZuTDFlLrEx42+4UVNY22xkB+Aq2Lx4DBQiUDu27v1vn4ooUu/+LIW1Ctf59J3LlppIEXTtx1/+eK16cUBaoHhi3eq+4Y5rZTM+XRNMLU3TfWDhaKf9Ge0sXfWCVygu/Ixx77mjr592hRPcdQET9MhjnUK8M143oz1XYmdln5C9V53ERTvmjik8wL/iYGNZ5iP1A6uOOjDNaYK9EZRmlRxNVzqLbe++zyjGY1uUB47sj9Bk2q1Ql41ycyWsJLSd1YGecNgv/Y9lwTPIuhVDwpyErVaNAmBEoPcCGIglFKkwaWdYUYAeTrcDEkGCSdI/XfGnXvcfJbFo8/PezeLDaPSQ3SGBUNqfom+/RpMSv9wVz2Ppix7n6tfeeWkXw6F7m9+eaN65KTvhDjr2aaDhqNGVRUjJsOoq9nOrmhqh6l4s7je0UggVFC/OnIW8DcbJIfzg8n55Sf5jp0jLvl6UwYILRrcrvEwLg18BvD9D9leGn2/nfUYmCKQ9SR62SU5cR/DdFPYFdmOhdfo1y30sreY36KdFMhX4tL6bkpgzSr+ab246IU1nDIsTgkECQSWTBs94tX4Gq94BQvmk/v3K3xyz2UUjHOfxnlHj3CqxlvkkX1u+iTVlYqXKKJSynbea6dllmPutc7RShUDGBIkpVLpTe+587C4H1mYumBhI+isVZlS7U99lMSo4nvPLWJ+smm+2o2gaNdpLeilethTz3V9XK4aE9X4Os8TKzx5bKGvScei5RxRYggqy9yP3Zok2/bK6/fy6PVJv7iew+hNpyLDipwHOTli0vxI9OLuuagDmbyzljIyP49nrhayoXguv1Nfr/pT23xOycKa8eBj2IrThHpBkPpJvDtNoa/pFsDxCr6UKY2EHxb1qnkpOLiQsliW6m6ziJKVK9XdX9qh+o1dXz2xsBtwQ0aZ+SrKDH8bLwQoKH3bVdysIBUpDVXCXu3lu2vnMgCKNwHcFn2w3gXAiRSUauEPblh7L+vZKGQr7JD2tlbqZEZlZV/wKDXcLVj/No99+++RwtTnUTCDkGFEjF4fBwt22VcnkpH8V9oFixPWWFpagpYZP8sIOz5J4lPiT1kLvyOZEihgHTxRSn+7UaoTBgiVhiJX86x4LEsUWl6YQ/ITXVpHPz3ttkSyxNeCI6vwhFEpoXtqe2Mooe+muLqAP2s4VVnsEVFMyoSXNV4jeGLzKTevedYl5Xnhw2Jl6xHxmYTHnkQu7WznPDs8sLhvMOPAe0YxOcuuxjQt1V99Kd1cjxi04/KFSUk7FaowqbXWs6Ze6UZcJk8T5F8yTgciUb+V3WEqRjZ02EMMBpyeGmQwfOdtnx+pFOUwgJHcl6F3USqZPO1olKLiF9IxwYsE0LW4ERsfoZMFEpi5MiKdafQkZy+EEa1xo1PlcscAFgvRmEVxGJeWi2nUwqV+075FoGQv1Z4cu7Cjmp/AMDdYafNwLGZycfsk9SAhjbRKGwQsVbWTxuNxO571r8ChcwFtII5m7FewOQBwarv1P/PvqGct0cKKMJzlmm+ane/gjEd/MLPpzySjfyieAv+OhvSv3InhE9O6JS3rNOGbrUBY7mijW+FF/5FoaFtwzM9m0o6trxTHMWKAC6tztq2pGeU1Cyd2AP2RshjBmIGwZZXYi3Wunn/Pc/XZbj09ONref7bfEo18b+AJzqWUnk4v3yQRiOF1z1/r8BdPJSRjDZS/N8F2v4wrGvWi1PMhw6j6cSpXYlR9FxNEU7cLnJGZCsUtEZEpySmDDr9HbZUvgHANThvzUrUouCTjE7gBlvF+lNqV2qkOyBZp6cYGuXB5dkB9GWfgu1AC5ocoWft+lL2UB1cHcO9hqvTcdBqRim/e0adpSm55QVgFAcmmpJqTp3+HI7043xDYPk42S68JV7Htqpz790eds6tLIoNDipGmhHPB3kj7SrZz7O84JzIghNGMI87kiFUaJ3Z9HfBQ5uYlqxTm9G3LiPGvlEFtjsf/QQHiwI2yuwJ2cOO0wlBGBkoMUil/xZRhcYxZhkTyRVUPx293txsZbaDph/SRi6MYR7XxJXUyIp6WX5czagXUyLa6xRYo5rad4+B7ADQIs6/CMonnRv7lDJP7GSa3GCaD8dU34KpDuRn2UYBpxrNZTCI/C/cDcRHlmil4BC5+iPp7VgNcpOjLxTbVnXgy+kHQW1rTntU+vdTpWMGnDQ+jhhvJklqZkUemXnhRUaYvXGU6R4oegAkimi+qWijXUisv/uFqcl9RU00z7ATGMfI0lYHpY7Wihs75rGJLehny/X8cHv/0/ukB8eju4/e06LwnPLH3w6VAD/96KuQ1qa1lpVvCfy2Hc5oUd5Kr8UibKfgKi4h25pSuMHtqUjtxPifNWheWtiODvdwIJ+OzdEQF3Guaou6jMFZ5Vkoj5puWOFV7d5ZTMYwOcnRlB2NVLE66oK64u6O+gQqnLYTnQo9eulg5DrvfPyqPw/cP/OPApf9XjcODXc84/CHD0FgyDkqh2PnnvmyzfRl4wmJg3qOVM8LaKpvu3dzq2Met3MY1/vH2caVetsSJ2dS1REtyEH50UE7+xb7v9Ovv1mIaxeSqH+m/kh/0b1qjzmZwRbSS+rn3Lhq/kTXZy6ISrF4Cu5ebqC458EJI90pFyYm/16imUdyIHQ5bFMirkTw+BKCuVmBifobepiJuQhkvSySpIUaVrHXUqKGF5mQPSTw5TJjFn0UGNr6VEFRkZNEnP8NS9gZijoFAuP35bFSyaz6JdncSrLGmwSkTuegTSxYXxZUozSOGa8cqp0diovx103w4bqff9YOtXEz9RbEzCi+eTGi0L2gE2TJ+EYSZ1u/xy2zHtqaOmRpIzKJM6/l8gxOyZ852aTHifeuo2NxsM2+NbAP3IiYr0CSS/4Kxi+Dh/5kn086zYZ+QzPu0cZQlOrN5TJOQP7CzqVJNT55iH3o+wy26Zs+o8bjRNyb0eJqKgb7uxaZqZ9pJhpcvdT++exyISZid0a6mDTpn7aoPbu7uSkfw5qHNctAhLgO8IPw4GI5px9Uh/ovHOC74r4O3rwNswDS0Qf7b8ZkEQaUuz47kbGsDSDjaLi6a0tdRFbVgstBF1R956cm+fpOcAoDFKNiaEIgoLe6LmOj3jNE4syElDwKLUPH5/GqsXkQZCVj8Jgt49ZUIGKs1K45ifoRdgy9Gn9ug4nC4N6M5yj50S5I6bV8OhnMRix04U8Sa+dRQBFa93bp6XU+9/yXrS+MfR8kGmXl1oY/QydpwZUGVP+e6Qh2r1ZMxP+UPJYNaokG/IeO+jdY8PutH+FdrzPilrlucRy1c9KdeK2rqQ+YmeeOeNeUyCe+k5Ix4mEJC7IMZ7eh4sxA65hkYa8AvD345ePn+5ev9vx88j3Z14qvX71X6/k8H+3+PHurkw1fHB2/fvH5J101Fj0tsZKNpcZRi9mlkZxOPhenJ9BRnGln+W2+kLBRTkp3vzs/JPTGe51htdJ2zvvZksBiQF9s8Sk8SBfi0I+GJMSE0ti8GG5uVIjsZn8JCPY778/u+ru5RJiJX8icEduSAvX+/gcwRfA7MqGinEjIMTLN4ljkeE625Tm1BD5fbAJNCsGMDG13fajVPWltxB8swmSo+bbVOm/g2UVql5l7Q6JW9eu9BSo7HaCsJjBPiSWJAnIo0So1EOZGH6yherEVns0l8qdhZieO0tpPl1rmjLwwC6KyvKpVWD3IyIP6kXk6jk5bkbZp8mrvpF/ib/mhFsKV5vKVigBTzTW2Oc0SqxAM7riLR8l5YZ84GLMUaZYZs31wOJzl1YHLeK26aVf4giTCD2UsFvwJWgO3lJAhIEkxpMgSa0JN4lL8865MCVbpa5EYybG9HfOglelSw/5S+JiSMpVDgRbtShKE5JxA6HO1eO+EJURIIQcDTbCfMayZ5HmABitw5np8S5uojSkNE5em4K95KG3KmoxKGGiH/vp2WwnRPl/hSRblnevN/q3mmyTjLmM7FhNXBSLF6mdtq+x4rADSD5mdQMFoEB7yuE+Qc1L+VP+H9++YTnMxf4Gb+UptBZWu/kfV6DhShp0HPBiYAo2cDFBJOz4Eq9ERxUxeirH/7Z2pqDnbGJ6kWVVSTfpvpis/cSJS0UzC2ni643EXLE90+wieV2+BaGEA6AAtdG0XaqSM7AC4qzxzSM8oTJDeyI+DhLwornU83Et1Qtv00AMnABgcots0Fudgy/PtVPvv0SzwbxslYXizTKjBFq+ANUvcrqIxOSuVONcG2u7ikksHIeaGhtGiPltMUUJU5161rWkMW9cz0VtfQDJ//02i9oT49PmNrDT7ChpO3oUKNKn9OhZo6tlyhPv22/kF6oYPWmyO0C0rSdQd+3fr6mmfq1rEZ/Hzg7HJIgvQXlX02g7HHBPYn+nJXEwQFh5Tmm7/vH/3LX5tv7dqd5tOjV51uU80ic6drPPUXbgWioQPx5lEuEj0KRfwpOzKm2ijw9BJmgeF8TrJHB+a+ff7q6SVxTXJF5oen5kqCjioj36oZxmP95on39buOKhJ0LqU5JBDF7a3a77h3Uxyn9a47uFz27PUwo4pUsDhZCwS/IyxzijNEUPwqF6kGhkwcdy8WtpsOz9Vrc/x93dkfxxT99e7V4S8HdG75Ulx35Mnh0cG/v6Oraw8E+eCfrC6OPcuPB28FgmA7Q2WfOsZFc3xndGAbz8SGGCy/Ae8mLganl+hRWdC4b4R31cyUdOyBDQJaN+6ccK8PnyuinQ0zQ7Ayb3QK1tiUhq/evXwJ8K3Wesi/3j8+OD46fnv46kdU86CiOYzAMWflzs1T2PsiICp9ErOIToNE6X1ZO8aJBqvRDGbEcV13R+bG/2YG/cfkT207fHonTCk3yXi7HO6l2MxlLGhBOlLilWxT7LO0bBA6ZZdxxd0RY25C7e+GHp4+bDZlGaFAKjAIub2a1lBNT1CevVl16u2/Jh789fj90ZuDfdyCLrqSWsRsare6FDxvXjPVLX2D3bS9pNpJXqFDxuFOLDA4EFRusk0Mm5yKGKJ5J+WgniCNGrcaYYWGM6hqg+Vv09iCnstJQq1uPoS648k6rWG0SeLgqR0c8hj7SLv1/5FC1BXN7t++32nu7PTk//+XNlJm1XK7O045DK7GA7Stqsx5oNxzAKRDWgnZEnNUGs5fxa/ag2Cv+4AK5yYI8pqEVwokiahoNg961/rUYzz8nGduVoHdALuI/AeEaOdPsr3VpHx3vH98+POBGkNSMQnoO9Uw9mq9NTjgx4NXB2+fvjz8r4PnZUg/Mr4aYsGV30TugvSbL1LHssX01Fmyx6wM3goZ5kDQJnax+ibE2FwnatRNt0KpZki8mC4VhTurO+BvUgsmt8FTHp+BGwB2syhtrNQda5DCa+yetESq2Tc1+TEwtzy2TsXOKREJULC2JrkjXcnEUeaJ2jfHymi9no4/NT/OaKtKmfsMFDLAQq/TUjvyilIKwddqIc+9iclTVJlas6iB56aq2c6TU962KDRXzkPqb3Vs3S7/HI9h8a90WDRVpCpOlQrwTU1M/CVhe5UijeTsGWgjm2iqNvTwzUGNdCvyYqgEtza6eYqEVcU+8u8/87r9p//uW8+eNDCbUm8NHIBIOqcrhzJ1R1ANYFo3bulXGa7bDFJDjlJaOzhpMSb6V1RDqGKjEuV+mwX7E8zij/vxuXxtIWehMtOnWNc0R5u4OaXKBog/csly9GlCozkbpk3KUhLjOh6OYY9F7xxwPIpKK9M3nHqaKT+RyLLjpBXnc3Jel/FVpz1v7t92l+SSw7XJJUpSAkeaAQcihI7iqum9fjmxBBoXNhLUaouUvn3w/OCB1Wa2eZuNNZ9rnBejkUqAoklrI51iLiVxuEi1N1O1GC9+HD/RXrLvl+tQasJQgjpeyYqONxHNroQ3c3iqY0YWC/PUEIyE4plcQ9L5X81faSd+ZlRq/WaHe2znPkOVFG9QYRL/FZb3xHpAKq1/QMqd9Gu8IaUqyAehUvtBqMR+ECqVD0IltQ9CNZLNXoRysVzxKFQSXRdPPCX6GSgtIhyaqlckAovSx2cOnflAU99bo6krAJOWi0ujoCprR+DGa+sm1TjlU/VcmLgh74nxcApPf26Z8XEGmR0rlpmYNXO5BuZU8M2xt1WR2LQsZwMbllOjHWUCh6/Wupk6ypERhFlF2nVyGtfxGSk+8g6+LGo806LjwM5o10glnqe6OtfmdF9t3jxWqh4hkev5xdJyKjpKHHV9oKVUttUyNG1/yi8DV7db4IoANfpMP7Vanuw43uFVVD1v0sL5xiyImm29XS+uzejaF3TNezBjzsbyryw8kz9Ltq/DLJ+iis61WLAHBHRNfMt807+efa4GXb+RGi5mxAomhuS0UcMkoJTZWP+qx0mXZKzMG4WMlyyTRrbO4DSmBoBDNqXildoKl4Octu/UvwWX4pXBYCGUrLCPgR1Ev3xRSFrRoiksy6p9t0kbmdTfvjHEuhUlKqH1SsVd7fj+ePs0b/2X8UcgHKJLc+xOMbpkdCmmn2OUXI9KaQBg2e8BxvbGjID5AaxNCIfrCdwfa7pp4P5dEWfZkUSKJwK/h6UPChAb7Vj6w9TmYnnds5MiquY6VaoyK/gVNFw2nOsGO3xaAfcTp+1Ah+XJ59PlUjyo01nirFgYFOFDSnZfLKN9FWGixH8VafNWpf/ltkFgnmJOyxwOB2eW9AhE1Atw316AObvnSaRthC/5weOHvuTvu7uVZNzc6K6f6xNKX/FfKHqqg03eo9Nq2uhDs4/SuiORL1+UssQTmu38uLJTjPDPhATqxBboE+NMmp5MlLKFm9BWGNexrcSlt2IUyC6r7S0qj7hyrZUcTj+oPA50bdkqXak8cnlLXxinqVTX707z8MOKIqSFMPOJJso0h5fNyRXRGN2K4Ux62RznMSVcfjxrWjNCDlXzX/5mjAHbclcQT7MiQ/dtWw2aVG2M7NHL4428IYQ1D+NtkLmuBHlZ3ej1RaN64GTpNQgA0bofARZFWaWN1FCjl4q6sxhoLaSfS0D2Wu19e8CsJfq6bBpwZ3UJqJKTsOEx750bqrUfGNBRHr3abFEgufSaur2Uu2fOanpVIVaUkffVaShqF/Tu8sNjpkgQuKraZotk45am6DSANgYpQePIXGrkBXZdJd2PC3ne59d50KzEIMrLgjmUDwngcpEUbwfgAtsTHiFKOjX4y+V+Qi3KU6Tl54t7ANZbBmyxSklGFxVuwbKiPBpfmW0H659q+E+RaUR3f/DwkyZZ3ZqN4Svt5kKIx5m2exQW0MszWda8PT2wN7/VZllng57hy+9Ctc+KwqIfGbNCFoR9vvk2vJa/89kvKKlD0PpGE+hbVBNjOapjNaopxSSYkD7rno5xcRIqCy/jcJe7QeB1eFOKysGq0xF3YQubNTDVApXkTVw6jVH4SKUwPLZhgoeIrVVmSLGtlDZpuT7f5Mu8KdbeDFmPxvejdbVxVNO6xyoSsk5yUU9u6CoXq/SMvQvFYKTaVETTaRHH2VNw7tWds3/5osGQGDMAx2BSS2BP2xeQYMvoWym+YJ7vW9NfCcIq7y5ydvWIcqjjasOM0qJFFD86erqNce9u/9J9/30rWKRRIwkHzMbhGKKP+X5g8/tYYTZqD9QuOXVsBuPFQr92YWsFDk9rlitwbMry5rEmMOWnnFbYyfk4h+uptgFhR2TdhO5si9zFlS+Brd3WYAfqs06kQbmdt3hbTGL2cji3wzf9ndp/+9LYrup6gihOnzVuc1NVbtVma9XOUhfSujORhWhUbVCxskHF2gTlNshWKDu6lWuq0x9MFhoL//FGFAchzp6YJGzevCVJuLZDksLLGHrrLQnkpY9SfxwqMQ6urS6OEktjylzPZ21Ok77Soo8XL+wIun6QawZtZyd9zLqYq8+j3Gc129yK0bhLM8a3t5h9dYNZThCY6hv7s4w9swB7DfxH3DWcZoWDusNibOaMPXYYrZkwYn71m7O1Bq5BQV1xDTk4fIqdlPv3B/z6VtVkgBgMHfSZ2kGf0G9OxsUxe6p/0+qIZMXvSC8+ghv5tEux0y8CP/LiKS5Mf4+4SUW2zgH2/fuFUEqt31mgrUDpJufR7o66V3MsrOifcYz/khPUOiHpfUw4XPNgOK47GV7WWSiCEMxYDR2u5DXX4Thlu2Bxq60WqYdfHTuGa75cUy67hJc3LMC4n4yHKrIhWADQxgzCPgpZlOGUoZ48KoLJP1zqIg0xEH0+3FvhykCzEZen9R2vBNVD9hDQ473c7SGPdh+Gg9sC4wVPA2s82L09NPaAcJF7LKFlq6Dd2uMhIxXLHuk0SH1TyPPqem651KbFbSz3onyZ48sgnpOL2hn5AGnR1+zDCWCLAdDZZgL4xl8ozyibgs6hDC7jsiirkwhpuMxfY83eDtDbqI/ouHwNLxCaHuef5CXsfA2p6/yRr3T+yKce54/amcg3iPKr6TULXS4XG3eZy09FwQOD2jaM6B/8DtFfDz0aeAfQJNaoxcoO8LsF/NIuYRty29tdGv/PRqMq5yOOR5WfYSl7g5BUBvKPEZTa2DQqVfbNe8l9Puer7jP5gZnFd92jos52brynP799v/O3P/Die35p2bltKmw9bj2JYKOUR6qtnR2S8hCx1fis3HluI/e9ipFbPvmZmkwxV0mKKjJRI5E4oXd25F31QTiRRgUJNDC9lUi174YW8qYU9g38AkdSGMUWis1pxzAfqH/lrBlZB7PkNHZ1efnJZu0xrg8bRAP5DuA4Gsu/ClILrD7eU7dq9IxKkiZpS0xDmg9vro6P/3P7HSmO2wR7+wWtI9u7vSY1vE1i+b9n/z1tbbVbLJ5xIjraasmMYAs27Qn6g+SBSdZXtvmfSsnaM9HS4KloSp8kt82Pqar80T3BefSwPTNnP+LRw0B8VtekfRif0aB81BT/7tGjYKsbTrfQK+iv2y9JjMyB2meNGjI/hh+9qAGFj3DjMD/OzY+L4gcZkINwvNf+HH1khaT7aLsrPm9Hn/+1+0gkUU4IaVwDYd2knvCNdI3PW1w/EB+tp74SdM6HHqVbxfJ2679/29mx/9cS42B5oaudnZ2uLrZUBW1/ZrQfB6IFjROglV7jxc69tH5H0BRGDc32H7W+gySt1gCHz+YWfas9qiiSyvB/toc/6FULfLQLhA5/JFX+ADPo9339TJLQNCLynWOmbZ/rkiOaIB8wQSZxig+Qkpqq4/PPzOfqszFSfwdUi6XPjDkhtEdv5pT6WFPqYxAOKnetD8xd6xBSEsuBHgkmZLFklulBd0zL2VzIJBNMr8lD0oj3h3QSdZ5Pj45+ssVRLl8yKYTQoJZCA1cSDIwkwI+pQdAUIZzKgz4wnSHcKDt3BKUft7RQXVL9bLhW697OY37xGQXxGFY/Tj/heTzeOOu9ZmsRqD200x6M4UkALPB+tKHRC1pN8hmVIw224SGTvi4SVqQJKUnVV0hHtQQcuQQcgYDmx5T5wBp/+wpMsA4Ps3TnpmUVC0auaEyIGxWISvKlCp0sHw8nQ9rH7OF5E2j833Vudhd0DWjnf86G07ZVIugNJORkOI1nn2qAW0ihMJdw9j5/eafddUxus/WXLS679RfpJW5g/q+8zbfxv1ofJ15ibZw+QidrQ00cVf6cl8NQx2qVcH5o6nv6F/LX97ZU4yvr2I4v/459zXe7JZmucxnPR9QJ/Jm3BA1bEQFZX1g+G0ilNcuOohv11u3NAiJP/saN2udRS/5ucSKkEKVeTXG4y+kpnH7GUSsj5ZRT5VPX6uo8JOpahBp/uM1wcqkhzlHPMEQt+SfP7Jyrqc7z1JqP85zakX9KWR/jUX517q3ldIvTVcca3DONDPWMP3TPGE/OQN98OeqvL4f75snTffPk6K75styucbo7Zgq2HjT+0n0zn1yQR86Xpxrx53EPfbnqhy+PB9Cf6faTM8odRb7qJH6pDqpKnISONdxEhbOTxj1xq6NhN81g7iYyxpxYxlb+ALr6p8bXzdcYl1M1cm4qI+2mG7TdVI14Jdmg7ia7yCtfWddhYDjvDLOInrHCT3n3aBTjD1TPvZZMhcVVxXrih3GZlFmYllGMf9Xn/CqBnIOfmkpQ1LqnwKtHoI3IUUnoOpXfUV9XtIeWp+yq+Mf4HF4sUUN+XtLPM9Lls4jbJ9yzra0wPdFfp7LmIpyy/NcX6FfuAFXprnhOoHCL1sm/zk/xvyZSey2hgYuCRvKXaJnumiLmWy/pWtr3IO1dlOh55MuSJsRaFq/n0k8hikUcmZb1sqFuz5i2b4jyvUTdlhsLNTw9SYEgTBW5WbpSCuAqWPiFIlcpHqzfp8UxidORyisl6vFOJTORd4xTmBOdwg451GEcqzXVISLMqX7lYtJSYHUSQPlLEeDPBHGgSsJSXQMGJ11athfnJ+wClpc2XLHkAq3v61fvBShsT5mUzPj0dyE0lZzMYrVoUwFNmdoCOBYcEOcP+JB6sLUV4Pb+1vv3hiTbdH5EvLfVoh8DMQgWDitpcWk7NvFEG53wx6ks6FRVHS3X5SlbDwn1QsNX4FfOJY7Fh4Zd3IFrhIXMDMQAf6GEuZ1RI+VKKBYSW1HDuy2I97q9mMJ3rKKMRQV7VcJtF4OyrOXtaFnDSLCbVsvHPS9V3BnJdGAuZkgOino1YASXjTSKSjmh5klYEp+klR6rD1v3TcoCNqkIEDgV7RDX1lBjpxeX6PoxHl46OMcySfbaLWrWNQsh1irgAOIQU612phNu9wLhWS3ECvK7uCjw68wqXVSvk/mMtuvzV3me5dgy6ItiXXRug31QWV0dfNUqz2R2J/JOOFPdvLeDnSBlxzqLS4mYF1tn6RWxuyYXX0S7WOyo02m4MZi+sr6grP2xnWQoEpvvjVBp1OISM0RqER1d+Nam+/d9qZoZlQHJJWPMwjAuRj92xaB/MtnCMS7Y1uraViEaoT6hNU3RYCGn2MBVD/Re9MHOE1JRdneeFNW3GabI3OsGtrYw3FVM1O3cNegEYudJXFZkjFOhlTEfDD+oJ2cUiTSpwoxhMvgw45HjQaRU9DwrgJAbVjujzmpDEGgSm5yGDtNhJbRtfroYCJPsQ4QzPfiIQQFSJBAJ6Z41uBkNSy+THkjOE1ykYRhBqfcN2sKSniRQSEONeKJBS9dT5e8+beZ70jH/RKWcmiARqZ+q7rj6qauZNqV62cwn55efmkhtCTQpEqWjKqBBrwBPB4GInFkbPNyFPwxncwQX6bbqW2lzLzRvCG/fNHWKdAc9Y2sNerU4Nrw0mJBbFzF5PX4iI45JzE3sSVkI7FVS8OjDPa5QVortJK4BrlFaZKT+6Ac7WK+Myq66ia3KS1mg1XnehZEyr3oBoNDbK01Thk7R+jd3h0volKIEM2F+ogCf6psr7dGM6K0EOIpy13h5tCQlAEHEESiqQv9iOE+5jn6U/GyaDVGn7EYdRzdqJ0XWNmgIPVuSYTgJfkOBmsuB1Eq00GlqrkWYncS1rq+/JrMuGeq/drRYCuyTIKGr52z9vDB0bmoG/+cd6SAxm8HxFbqZmxrCUWexEI0/oSkcXau9KN08ctLBdepf+er0u2PyZC0mv1mHvbPhHBd4vaKIl+sc94f17nUXhdvHQvm2TstNVTm+0KHy5RwfJlEi+Tkp+Dwp83mR0FHzTgNI1GdYymZW995JgltG2on9WEuBfafcecDi7Hbxi8TeyJ0YqZjiaNQTh7Q35YmROhMjqUyM0S0nxuhOJoak3hJXLfeRW3beSmVq8ePnswy5airhr33GNIJvF+aWPG/CP/0PgHGe4GU61/lL/+2avzJ7NMS/M9IS5d9pH3/mc9tJbJZSSZx40b+Y7Pgznq8605reelaz2LTICNY20Jvx5BKhZu/Hw+kIoWXuqT37acllvXg4IaFVPbycfbpRAaW//eZWLXYLyk2UrWxKfSNKsc+DOufnDM/1OzoXY1pcDZZ1fiVPu30uHAQMM8DuRPF7+9FO0Jnl5+OYmPu7NnwuvuD/Z8F3/QnijsUU+3OeiFMY3miS4BWyzvODtwSOLG74v4NXz5tv3j17ebjf/PvBf8qkFvbwKPgrMIkyQWgxGSSMYJHKI/1RcGO/VzNCYFmjOgxncfamuwvHMdBfkEIFMiuqfxwSG31UokTZQ7Nc+24kl2cQWoHIuVSVZuisk62YV/8pyJ2LFG4S6uHQuD9v3yRxHyFDPbsyexyj+uMjci24yvKM+k11Fvw6TzyfU8/ao5O1K5OT4s6TTcrrsTOuchtUhW4Kt2ZxXiaM64si6TILxKRaDHfAuu4u50FYGQQdIztxYmQbwLe/PqHBIpK4J/X5plP4jWmAtdqOcbnwNVfbzooGSDzPRF9cGDlzb0dz+8fgZqGTuosKlyO8Ft5t+7HxDopFBrs72SKUYUjethCZ8nrLwJOdWBmjVoi3+oIxAU8kcJ5t9cVtXIwGzSSoFg/CeM/y3/LJNxPWq2TIs4MfD19VpMhWvETE0BZsyoDh3l+8vErg38TDWXt35+HjQNiITPl3EI7cGLpWa8vy5+sefP9v8lMtUvDARA0Z2j+8/NShTdSznJrPCxO+NxcODnh56z/zeNb2FuhbBYLtSiNPPyA8pNoGZ/qb4Hy3ha0HO0YeNOSFcvuv7t+f6Wgwua9upeRtezbFixctIYP8eii1CFC4WvZqSpK4VFiWPTrmwvMBKWGvZI2jY1MQRWTJ12WoNKrxdPiZlLoyHq8Xatwuj9QUhgNjuteWD5Vksi/Jir5ksi8ozGWrfeHCsiz6kizrC4qgJPqSrNWXDH0Rsi+HMuIO61TP+kbXTDRMuiczDn67zKeI15u3TzT4JJ4P0315hXFMvn9ws3naI3kjdP50jokJadYS8/l4H5mikU/iof5N25Z9p4YWjjRF+LKU1uIU800a6vK9PNJF899Q7N087gN6PqNowqd0SQKg9XJ1Vu6WWbsXBTajoi79QldwxRrwzob94WU8PjJXEiCN/M/f5udX2RDURilUOpgqLRcqIJIQqVNKW4jcR690PFT5um/4JSmn6QZ5vQ7lwKIjdaFDKpTImmT6XjK+I6eni0ytFba2NIv4vVHvBlJbP1xt17Y1qfdK7zs+k4qy8QNnRVYdmDuZRn0Qscx7RwPzWJ0zpwE8vkQemTK4vzvMSEWMT2Bksq+yzljZXjA2MTd0rAMyeAPaaoVJucmET6XjKJEuuS/tEIhYNp9uRb6XwRPCykJjns6G55fvDTbH2EF28VDwefN/ribnTeLRpvSkbRInYedDEpQ2UJOmUp+b8nFb2inKfUkTvqj/P3ff3t82jiT4vz6Fo77JEBHkENTDEmnEv7TtTGcn6aTtpB/r886PIhnHK0uiKacdT+LvflUAQTwEWXZ3Zu5upycWUCgUCq8CUCgU64eEW/+9XMzFBzRECHHTPK+zpRlQxTQkfL2c4IagmH+aQbj8hBDZtxDA06UIFJ+LbEtyuyyLIgcQ0gLABJM/zXUM8ubY6sJHB7ppzT/NZjdZan3UuOWrecTb0tb5U3UOB1sVKmGDer2ogGiRTcFn2mKyhbvpLTDejbBi8C+C8FZ9iENTRPymJKBgfwl+hKTUoc8iiLUXIBlAAKQIhKsFEtbBz9DSMtQE7I80+6rza8RPapdcRy9pXqiQVR9abxSxWtsTCAcSQFQCVtVOwHpXwAGt6ppTWXMR/wdUn76G6tfzix5BxY6xIjr0qwi+nNcgGUAApAgEMRGM4K8U0iRQBX499da5x9slyOblzRJGKV61fFpuIaD4HcQQDmCMpCAXm4hxnJSo1zgcc0jVhEBHA3K6EBAYWfl1WskI3geJT2hjpCpmi6siFbr1rY/nZx8v4N+VUBHD9FnCcWcOMhGn0PI8l0KojuAcFoNF81qP5xJrttw8dH/t8ZO3kPdY8HssKk4RcIjE4PudIvIcK64ixjZVov5SV5xqQgey4gLyg6y4jLxfSp85InIkKv5cVJzW3P2g6v891p/q+lPv64C/FbCc5VJioSObu7DwcKSk762u5LHZYqeJFvg1R0ugUSK55hpB3LJAeBlnQlc3fNZI+rpA63u62qGVpFiLOtQQAA+CAIvYKOr12SNeD2hhBbGBmjTVr4ka1NiumjFIpu8nYz2nVYzVvgwUrXRbwvnEVHtINyzQKo69Gxr/BJh4Xgpb5t/Vd2p51lxts1sZrNZmhtFTCknNJwncRIsrZLRUqDiUCA1TVFB5U6Mss6AxVH1/5ForyXOfpIJfSL6AKdMQqsEwO1QxiG7xESJRmG/w3V3uUemqDeZkT4ZihXz4OZio+Yfu0Y0WAT41ln3TgFqZtaQx3Hj5swuSSlZGKNwJ47WY0g6Bitb0IiIaSORyikXwBq4BTWd3+KZQDjO5k1zweawyeLmEbLLLCqvLcBBrUwKM4qjaVePRMhmYcD3aFQJFdChkXVInghHuS2yJ1D4qqURoSCs8F5Vi51SiptLsxVIO5SVqHAKwp2uD8aDSa2u0k1J6FcNZUe7Ok7LTkZzPfBxMCT3jKmZMu2knovCvMyP0kp85X2c9A4hGZbW/w0u5N03Y7pnq0S9tovabRD7gtJJKnIQKcAsAdc0OBShdJ2J2rjuQTNUABKUMSaDDLnG2GhXHJumUp7zZQgRnSEqCSSJPrAC7RXYh+9evPfhLfCTUgh+cUahvnVMRmnY4NMyt6DEQNhk/0S3OwmelaPJM5ml4rk5K5e58P2nVKmd22H82Ud4RJrULhDA2XH2wGNCyk+hU3mXttjnHGMgVcNq4m530TuE+fZfbYF7DH9nwRwpug7kCP7Phzxq4DUYowcoDMDyVd7tNNDF4j2IlUSrIt+cZqhVOymbKBhilWAYxyfRiMSHhFapcUIgRBnjzPByLJzSt3YuYOmoXySLfj9VqEYFokOcHvJMCng5EBC9bAsYoZqXYDjAQP38+Bhki099MkWeAWmQHcTOHRY3wDwyBEyQATd7CVoTxu89LK9sw3ueIWs+vQJSHuBbWjsISB5s3coRYGCOFIWfXSvpYpeNhaDWZhSpdTl8rjUHafxy/+bH+8uBKh7FIIUgJAbYLHqReXUIHC7dS+nVKdyVlACmiUJiaHpJDqytBOQqRbLr9Pa5Mh3BwgyxygMku/GU5S+dHYrVyOo/t+CnBE/v70xj5aeyLQ6Mk07oPnbGfzoGYTvdmJwr9ZA7hxKqJ4Pj2UKLh6hiMWGxsW+Tkd/Y+gX/zQ++9xTIKIHbhkb82x+p4fc8qYWof/wzwz9CpYc9fyPu5U4yfOHOo9WNTJgnWWoI3DJorLAKhuvvcm2DRHBgcei8lJIPYL7Ixvuz/GMNWHN7VL3EjfrQAgzjjhNW+lcKtJnGAKon9VFbLdZajSh5TZ6d/LHf3hxijjTN9VOzC+RsfkSt7yAiXv7197tcKnEy6sD6eBroTfR0W+4+Zjx/74UAUSpWS906MIKV3F0wS5dsO9NL2EravdsMX5IuyMmmsFS7wxQd441DOcQlVmWGDUXzOCnEyxOf5t7fMMLXFJfYZd/akUA/VDSFVxxqS1AsmrlFEBYKUGNZfibuG2QckvUZvS4Tj4gJqwSf6aGUslmxdgViMNTWcTTyd6pOAsO9IdFtcY65/wMkPxhroktcloZoUzN6vrkox3rAT0dJqbwUSt0V067t2B4ipamxg3TsRnKZSXMlvB/0D52CbinvsNUpT9O91r/LVrsWyS5R9uDKs0j1nxU1JnN6qs3Ng9P2KxgFmZon39IbOod2mOW8OZui9haJdHp3j8WSKfyqx5a1wf5PLXCXPTyrhmts+qHz33fEvz9+CSkgdQ0pTTdTjfKYH8/RkBpPulM9g1uE+HXLDLrYU/n5CCFh+MWdY+JSUDcGZ9DOAVE6VU/JSeSJon/xX+/RJ++vJf/3vZfu0A04JkFUgeqaIYnFxm4viwFzvDH6gC96XZVHtg7QNCPrMl7jykUDpFSGs2ZXVFF4trhUFknQZFAA19eeN7spLw12ZtcNBMG6k1buTVksTi5AYNoag16hvYLuPWhsklaPH+XqYeCU6lkBo7dnjkmuVaKBat8sIvRZj5hq77YzIxr9uWv3s5PoUqczlwekE41S1d+dSBXagnMuOWcKAdHxXCD3SUUrYoB+N++PhTjQe1KcDZNPYSmJZQJbvSzb2LjvB5gIio4B9QuK/tv8qs4vRqmP4p2kEl7aV6C8HwIhlnripnY3Ea4l21hANSaclap1YvVUCto41jd4nncsk7fBLsPVppv0cnXjOYcqvzJNkKuHsNJnxovbXr86Cs/sPsIt0Ulzg8MrF2Ep5qo5FIZ0arT8jnSZlCswqR7YKQSs8repBzCMN82KdPBxS9S1omDsZyXkmxYBPJdv+bsuvhZUGzZbeFQSqrUF1dLRzl6aji8UWmmMewJ2u4jrKVtGB6M1YibLaQsTiIXeZylGHVTmgPqEg9DtDOsMbQGwUfMPS4e1Y9Fy7E+TdIeng+qEvA6Xf7So5U3qpS4tqCWLCUgCD9ozCv84lofv82vnmLoyn/b0ZlAhNcG3ppGJWJ/0V3cHYaR2YnHErMvKq7rimkLMHCSAZr7kBxcILlEj7UMV9XcNrWpzsn4IYozWlfZKASAV2b1OO6p35XtoJvMsE2NR1ZrJxYhDBu3wtau9kjntSjb4GLwI8ZuAleYdPm/HabABynpore4LDW3TPmVzN5xz9n1OQyjD2YHIDW3wuKMYFMA1N0wDMbQX2pTzcPp9dybuWg2I5tdTjYkpp86UgpQChM1rSS3pN9+WAOOSp2c2TTgcPQ7U/pAMe0hse1l8AOQRqja7zWijeimAldwfVfeAwoiz3VtJ2d0dxCOMY/SahcjKtCuSINN/QYlgKsvRwougwAibhUnhBO766ucCXmmeTACYGU3mDw8dR1IdJQgGKkRHk7sl4hYAexIckDg6fPRs9jvojmYTR3uNoEOmcPSZyAoC00QIgwGrA1JxiwGHmCC1xUtnw2h8v2z18/JjtPINWveT95IazgaFKPhTNuw9KLE9jtDa2RgIIh3s3/JKzuP+MQ0nBJY+gL3tSNiQHu9dgirObNnIJoZ6GpyUfdS9R3ICmtcsvocf3T6A5ysc3p/QAENb2ZDSSI8Zb2pc/1MfYSEm+2Lrp8NIzbK8/4kISDQacl7KayHe3e5MA14eC29u13I53reF92IUK2H3wUGbX1Bzr4OP+kENJf4FSxQLOop3dknxZX9mWVdvbe9XWccCJ4gGLwl35x8UF+u9SptohVg6sxVPE3pvEzIqr0a1+rs9z2BrVRV1H3SyOHoQ/iXsWfhaHSebwkDk8TDaU8bHAi2ZVyEdkqveQDMBUmDQ46ANwBvoD8a1gNPXMzNYszDe2/ScTuQrosgjELe4V7uQvqhFobrlLfKrg+J4ke9I0FUx93Wysm5NEFFhreOwG4wpTZf/4pN/tu+0AkuFefNAJt4rOiMFVTgUbJGkkrcIVnp9Psk4H5hDKXroKD9JaDnvSQCintVAmsY9mLaepL0nKbG+JSn4nduIph/mk+xVfA+nLYGs8fv1qD8fUGY5p1zvo454fyxmFcaiZmAITLS8Xnpk5WVNs5GL5i+3ZaCYbVZA2PKBwSmGj0oviVGOUwao4qSfCh0X2aTkD6aW2+NETAwidcFzM88B7sKT2MUIMzln6uQ6cz2FQLD5DH88+k65Bk4Zkc74bzHdzZ760IzKkk6UoqIsF3YVx0xUkCUkQnSN6gmCOYDlN764tDeV/VhnQKaIfYem3obLfCNG9MKtfsOErV/XsQBgPEfnyLGt6AS9TJ/AvEzBLiwS6bLzv7nOVqG7+ZUyvRXjwx61hJm+TId8eDIqQxB6iB2iSimSHm8kOvBTAFL1McySxs5nEEA7qJxKs7krgEAzzHRp/irp6mhL5jBC/bgkQzJewnR6QFkKRjcYkGTId3VEf0M7wKDRpqgw1Guwi1jh8JpABA+YGSEMWCTiL+jphOOgNRiQZ8RoyHEQjiI+NOBbMegZgDJKqxYYaMggHBHg1ATsAGBkABnkiA6OHGL2eARgOANA3AUMADEwAZhmagBAAOyaAAWBkAiIAjE0A8NEPTUAfAGYpO2MAmJXrAWPjoWy6cNA0XbcP7cTCBrMfYXSnifYwOm6i2EIsbKJDjLImKpqrITUYY1RXjGF01CD3MWpTHtuUxzblcaSiY0iN2LiJMohGYRONMMqaaA+jTd4ecNXSIzanaaNtARGbXlwJG7dgIl2WC09/SrCfo40VZM2qxQWI4t951iTxnyAHWkrgNxTQ31U7gjkFyeJ5YLa44BFE6nsOCKUZ2hyjkM6qopj/goIIqhU2kB+EEOI7IYKuRTKGpGwSwUpDKw3GjQKWhR40/vPo1SF/hEAwcL2eLQAkoxNw/7yYz/DJd6hWa2nHpbYfGo4lKGhkgI1wloKFq2woLFK4p+AMRfRcVub4/J8FyOP5WVPKB/xeyFGKB+yL9EaQmi9eI4dHC2wkvJLRq6ZIn/4+w53isbLBQxQs4u8Srig3gLfFHJdLUPWb0OfZlLe6kFMtp5LMRboEqVOUzy/gUS8HxAL4uQ5IgouNKH4muMT1B3Pj6oO/epETqWCieoHc/+erl9+ryMs56Cm6bIC0Dmy3d6n1EhGi2IR4qwXZZHtZuDDC073Adyb/LhT/a3vOyLjw1SOIqvFDqHdHw5tBpYbcsB9S/7YGcVVIgfphSH86DvR0IdvZp2q5qHgbPmS5aNMNDURiY6TCWuunJV3+i6Z6Wy3QFBb71brSwkVZHL7FROsIy0gRtDWGGW8pNcyZuqTE1cVEJRlnEVVTl9F6o9E+evH9Vhj2tsNwhFokrYEwabmkZNTWAHYamn7VOWkKj5pCIqOQvlMIrLx9USltGivSDfNYKE9aj95dcCOwes2RvmcUHK2UbE3YiVN8JD1dmTl2o35nQmprAI6R5J7j0pabWvuqappsHLStZtQ6EtclFuFpsd3WEhWdBXV4o5lnQ2gpExDaUVg9oztbOrL3pdqtfx+vPiadhlI3inpEHwdx37WWaL3hpSP4L3S2+zt3xHr+y5YBjZo9tB4XfQhJB0q20AIqCQ4vJS0bV2S+FYH4gMEZtbqY2p2kdUz9ZkAqI0TPFGvMEjHDs5bEsC47miqxMOx4RgDOKcsuMONsxcJv9MxH2Z0HfdIZrUyEicKWrldEWiJITrXwCJv576NJp5oY4tpO4IwVEC+p+dS4ThjRCaFsuAtAdY0tvq9R42OPzOGmgFuZQooCW6xJq0szFOFbr0Nqrnbtv//8egsxtuoSthrU7ba+zrXXbhCqQ94w+vUrSLmp2dnIlJ0Ddzyfqgt8fQB2K3UImcshHZ9IgShz2erCyvk7KrlVQV2Gt0AE76nMRgCo4BMaT2GapQcruJ76hLure5aaljpZKXKriMreGD/OPLnVmtcQqa5b0b5MfBJTjrzVsU+zFWCf0PkKcIia+uzJnF46g3Mkm2gHzasx8Azu2Ib9XfjLns1FcK4WJqsf1O0feFcotpYgGragRzJxWTCHvqDGUx9sCYCodQ3LU1tW8YC9pTateBX5RSVxva3N9G5X72/ljaStoOqZUaIJzKnOl8nHzpp8p/253WnSVVHc3D2j3YmM48bHSVGYXK9q4pZKa0+bojQbhKCHLGU4EOIRXHaAf4nV4ta74GbUyeZbPf27wjm9UzkT+pUzslwHpjQzVGzKHr6mtO63qISiqS6hjAQL6syeiAV3RWpnhlcV6btkJp2WrC5Cl/b1hi9d3bnNzeufCZ1qvthQMCZC9loj+aicmcei1S0XG3aqGh0qOEwGu2DmChVe5Qg0QvohYU3xssMI51V3sJc2kAEyKWzhZrQicXDJm22++pW4hjC8hHxVNxQWQZeNh0UAhwYxlUBieXAyZEJeCLpbKMNxrcg41sv00rbV5FEfVzmsP6eCQrx1CXJk64fDXzGiXldKLokhR1gILdPtNqI0aHY+FBLcU+weZIkN75QldTFgTsrhpUaOVAS4rYP3IPUB1Tr/Qd7m2ApGysSM85R+k4Mh1kvRXC8uHknBgCuwXy4AgiK5joYisV6yyAD9xnvHpPXN5ZHSQb+f/61KJ0KN8XJewhAgVAFBpVmDsGuvZFUbnUtxdaROTu43vZPwWZqQtMP7SfoXebRjZh8Zh6602fSl1jKlPMLU7qe9vUEz7u+HjYvgZE1GmvlLqp2vNo0A00o3SL7IhOMs9QG3iwJjQVsmt4nSFjc5VnVuOTbnuyqdL6H5ZoFU/jPagh9MtIbgBAHWqMsAIqpWBN1x+ETXU7pmefvyKRsBndC+7su38yq9FuuxO9ipKJfdH99/24REoj9NZM0dFUl6D6jPeioo3OyhYrFM/Pn4ZI06KvOPvc0EszUEW1rB4B8koak7UOMAhkFq97415xS6bjI9nuk8QJJ0Kn5Io8r1sqfVu/5q+c7RRwXujIkDAA5WRDsE9gW1l7nhIwqF0bH7yQGvotrS7LoL/JE00b6f+rXL1mhzLQ935h6YyJd3Fgz83knm7cfLPiGctFalsFZdyLVe0Crm9oKrcSAF1bO1dfCXtylQj9mY7qfl8hW8u4+jkB6XaVbEvYj+9GlxBYExfX0+/7SM+wMqL9leg7X/ObgPjPtRDXme53G/R9+i5w/Zf3G/T/fRLBkDEgne6ghXHprQQZGdz9KLuD+kb8EvwiLH0DHosD/G/R2Fc/77eV5g/LiYncMNxGIeD8b08PITZBwy+ub4VfHhKh4z+j0QBy8aMooJRzheRAokLAXZcaTQ6sQeraXua3AoglHEvRQVHw+RBdEqDCpxLK5L6uhA0hQtJS7pKNj9iRCwBvQqDAM1WQcTcrjM0hIzwZ0blU/HYnGtRX9YzAR8GNK3MPvelyIyoC2MHcDWT8SH6K9xcY21FHEm4zV2JGOycgjoSUCTvQ/s5SK0A64x0I8eRnbG9AWDQH8npC8iEWD0RU8EIvqiLwI9+mIgAn36YigCA/piRwSG9MVIBHboi7EIjIBgKEJIWtAehRCKRIjRYzzwy0rghaWMS7YRMBTdAg3eoOwoiEYa0ecXDQ3Ww1iTyPr0dXGVNqlMRHVydJs0l2eOg1fLI23jp9b05wzRJnOApiHi7Rn+4lOzTRf5fToRAlprRFN0YGDpSKzp+wi0Q7xlS5+9VRFVv3MmcdDoie6pJpJXAZ3Gxl9qiNBFPvdo0BACqXcdh4c0dKqoaBMk62q2mK6+uruyZKF9rbWrr7W6g8Me7rvW3ns9jEnUjq2rMGlE6/5VdQFDDebu6+WZzSdWIUtzFMNNxMZQo0YOaUYSC8R6LggFQ8sDC1dzOiCkH9ai/hramO7LK0J7VXG9L+BDEGmH467eCb6JmmHGTyWk1SENzUHEIFyFdcps8XuBKSqcXHO5ZLtrnMtNuJEbRR33ExaDNgD5kSBsCVG0WkbdYpl4RhioDTxQgOYUNYbBkF8U6JGtpHYykjcRUNo6KGUFF3wmzhL7IySqFfzMQAO0vNxgXXxMINxXskzYV1NNc2EJGo/9QKrwVdV9GWZBSB1EbAI/KlOoqgznsyjAL0IP5OPWx49dSEBqXy9wa1qmZ/VOfwUEaI270EQNS5cp04TgK2e7u2kNUNb0xqiVTaHG/Voyj6WRSjcwqJEN5DDuakj60PX1Bnb14IufL14szxH9zYd6XQx+Mm+Z6xt/8dWRs+LXLnpdIU8C/478qZV1e/HhA2yDlZoBTQYUnd+ADjvtBNleVpuPvFuUcUiQsu8o4CUstBmkfibj2EsoG2NknhYcyxYViRyL39yxbSzuZVWc38/Mt4jDRLKQaBbAbMIpkd2rxOh+JdqMtfI4lB0oKn97xyo2oObosxQ7mNcF3MDI+OnnoI0PQl6gzUebmiaY6iWmBqke0baR2DX+2prZaGFluaH+qtt5prbxJ51zawDRGZ9bo/Opnyjkm5uD7alfi1Dyn47NliD08l5zqz5N1UodkuBj2A9XvDEjDXKrVk9muMkIcAZ2L3Eadtrl5zbkAoFlZCq6LSvXvM7FMBfTueTJe/pk1h0qkKy1AbtdI8n9tfN8N0a6S4vkQwXknCMj6N4rIRjt8LRuYNxhU0zUIJAJNG1ib0VjGZ8gULzd0vqR0hmk+58pWd7X8A21OvrzSeL5LgeslAYKmrKRJg/XKau6ttQ0hoPYsdQbQKjeW78pi0pMTfxAGoDxMm8J6ucCtpu5QHyHkANQncxF9O+gnsaYiJyXKSoGMB++DkO70MkirfKfz5fnEOctkfYK9rC/CnwM/YYhGCKf0NUl5hLFoHYdBt0n2bQaxXJh9g4hogdlo9W3i9K6S8ehNsJvL8JMi5fUMPZTX5tu8grVyfsSalC3BC67ct8iKrGEzQaQOZfcortDdPAKQVTzFhIH9AJlJfFewcp+wQeIe5ylF9DSEsLCqA+wF+ra4R3WT+K9QA6waSUx1/AwdQ0PEXStk9VkkZF1ln2Y8hpYTE3Avmy3fWw0iZzrRHFLs5JFdMWh7L/VLOfLEm5T0B8kb0noqhKrGYzYk66WKDVV7mixk64qiFKfJskdWVon52sT4gMGKbVan9otT/V805NwW/ihaa5tNIrsIQOgdLFYa68loTKQq9vnEW/cd6kWm1DtyCtV6jGkh2cki4z+rBukAACQlE3e2/MMXSTjSc/ymFG7WpD+xYW2FNyafZbzyREPnU6CqKULhwzLKuOtNh7N43Ok8fS/y+IsmQDPwz5td4TvCvMJbp82r5sJZF/MLxb2AdPoxv36VkLLot1S+G6o20doNDwCrn71X9KIVljRU+y+g8UKHowikoA0l85mTCYs/cKB8AGH0vEQ8drYBV567tmPcx9zllGSoWudoKne7vocyUS9cs58dE8m4mVdhisdN4V5hymjDjTERu9pzdDYX5Q3OJRhbEiHQHEkUdQyZCvTEYUKQfsrhHvC51D/lEjQbxIkIITWamJBlPrqtCyFP8UJZRqZWmx3rCh3x541LExM4F2ncIvGyqpHKBzja8kOI+uO1ofiLOaMo5mvOT1fVgqCiW0MB8+3BmhqQDp2CpMpNHezRGuz9OoslZulvzbLoM5SulmGa7Ps1FlaMzfPaG2esUxJJm4WdkcDsDqTZwzum7tgnNx0Rie0oiX+otgT54z3c3Ev4C40a0000TQTNVINgT+Snens7v7Akby0AhEj55iLmJEkxxR7M4EXRQh1txMVSe5iDOtEGVpyrJYk/Fzog5VdoJvolIsVbcmaHhUfgOrHezcVqiz7xFyf5JLrLk9IZn/T/aC16bP2VaGzr1IbqIm7u0r1dTPQtyWHvdaFd8lm4klTJoFrxgTMc3u0BuRfuofBNvfb6VtfAgiTzPDnkXW4lQld4Vr2MTgSHAx3f/Mo6GuXJkoaSjUfD2kF/0rLbUdI6MwCRCSZwe6okcSMc72pd24DZlThAZEmj9TVjHZ5SdZ4pIZLBOWECC4Oyk57C338QzNDbEaoUYSVR9o96TInjYd4qLx+izDTDeCUjzTOJb2mfCy2TXVN9Heke5yXX7/2xd8djrXh9uZqJpeNbO1Kk/lWmsrNErlZ3JUmqXeqJfmiza6NGYhjVd2Ak6Tl2YwGUg7a7lPvInLnbmDNnobE67eHnY5FgTKauZ5RV2VUADyraQsnFID8fR9YhuBzMeS337+lbLgRY2cjxmgTxphtxIg2c7ph/WB9Ka4dn63CTXH+oL1GC5Ok54CcGP57Vrcsw070JF+/B9GpVPqyyLVb6ksfrXI9LZ2aCJU355d7We2g+fnFxVZ9vAW9WqzANQikwiX6u+K4LJ+hiwotuu1zMXHi4utbZ8TxUuucZtmKDkST95/JyRp4YFMmjg9ctxjXBa6raNG+pvr2auVTLZA18GCFLm2tOM3VxLUigxjhwBV8xvPR2a04ogl9wfdCs8y//Pjmx8M4pK8OX7yLI3r08m8/vItH9PXLg4NXh3EvQnw1NzT2wZtffowZff8WshzvH7159Sru0cNfId6HH5E6wJxCKYHfDeJf4BtlkOP1m/fHh5Bp/93Rq+ev3h0cvopZSN+9eb//Q8xEFrh/Rc0S6kWkJd39bFmiKKqNWdho7FqzsHCozVkgtuO1Z4GcI9eghYVjx6KFsVCZtLBxKG1aIMRsoxbGmLZqAcJDadYCoZ01di0RG5uGLS1t2RJFoWXaAgC23raFjaP7GbdIwxZl1MJsixbWmLNEjS1LfygNWXpDZcXS69HGgqXXN8xXejsygjgj03ClNzasVvqhMFnpDZS9CvD3gkHbRWiqwoCHFz346aOZCmOQNoCfIZqoMLaDBiqMjdA8hbExGqewKITsIfwy+GXwC3RYBL89wyiFDU2LFGabozDbFgXjyhCFjTBYg0faBGVs2p9A2/+8uIAr2tefsCtG7NZaaZydfDOVJwSC8jOGLct5A80Mzw3TZMoz+De9y3PD1PKPMPV4boindzlp2Exh4FJwnTRsJjEknf4ozk+mlp8GeGrkLMv6bQHUXDlroIMxlCDeiMG8ItSTR7W6FIm2YrHHlZoMi7trjd9xTnv9TrPx7OCR2i7Y7tv7F2MIyW2QkbSFZ8FJlwERLMNna5KuGqsEiHuXDcsf5EjLaX0+xVJAOEDF/zR5rLA8+4KY8ScxSNLlCiW6U7E79nJyLdq0J8SFC3FUIcjsbPmtSxE4w4073BaiPIBZsU8BNObRpfyhPhGLsTP0WX+N31Q6QcxzZWaVOflyJ16RFb4jz5Vgjs5AK/sbLXo/Rkr8fk7FhW8wMwFctm1/2AsqtNPoR3QliYPwq3jkyxQNI1gsYdmDzcGI5v4v5pVWXSunbi7RzxvSbwj1sQJPQGu9r5OUfLPeHHRyJcjWed3NxQOCN8JWEgXv0mKfNCqH5msEmOb/JIGZSOjKraYW1rgr9S6SZsXrBVMFlBqHfJHLp7V6yv0j4vgsY4wbKflNy1ozVLkZpIpsFV/qlUpA/5vPsMChIrQJWW2zUwqbnYrmCvRbt1WeMIDlQBAvSLTFSBUzK57HkRX3ctut4p4fy7bRyOMQtU1OAexeBUT3K6Dn1AaPtqU88eIpsdr1tzdeO3BQ+eaY7iPduDoXrhy4LUa/fnVAKH3hDAvuE7OPe1A/FSy5dR7alueg9en1wcgFy3NTVtvrwByAJlUxfxnMQGg9pBQSO1WTBzCcd9s57ETPL/ZmvMui8ImKx1iZoriAPYF4XD/jvScmiChH7iB1z7iX+t5mSSOOdqiDjuCPr/XLGNQKqFWg1dNoMJQh8Tdv4rn4O2viM/xL4geUHv7Z0nH1lRltKnj03cOZoo+oX79KC5C9oJbHZ4QayZyR2IyGcYOGB/GWEBy1CkR+b3t57/sCxswNmaJiyM5N+SMqNprgSZFOsNpISq9uPgNPHyFwtxj1RdtBiA1VaCQDgi6SxcXnwYRdIkrnuWpKbGn65U24pe2HMe+VMU5O7E6fpHHJESjXUsiuo2+Tp37qvOW/mrAfwt55m0HoHbcjf97EwzLMqb9rom1O0AIF4AIKs2UFJtf1xe/rj2H2+h+4k45OSDJZMR52IQEirRgPT+4yHtbsvS8fzhwuM3+GtdY9eUNVycO5k1LvX9t0B29ei5Klisn3JU3N6l7gYdVeY4BZClbs+PFwXftfcJX65qQhfWOXA8637XBfg7bsFlXm9Rs5+/d3NpT1Fq9p/w02/anzisHtesa5YZ0IL24f8Vyal9YD4hGLTZYhq0XU7nqU5ZsoaqskQB48s4wl9Zd1LLC8F2lcjBI64NxCcG9+W1aq/MpOm7YJFtlmQ8p26Jjh/9mwzdFnTA1kIwGPEEgsq81Q6f2bIe+2BA62P9nCSEKS1S8xNpNEAs0cd0l8Kh9IQFVMv7l4IAFcnkwSYm/8MBpSUkkiCFrKSyecCu5o6+Ol/aICnes8vRAY2+XiHM/LuJUlX1YnceuPz2IcPa+P30r62NJtDqWjXTWMoCYBG8Cb8L5swGqghjRfx//L/C+wl6YVv/8B+smktib/lZb8IQf1JuNvyZoK7mVSExT764npUuETe+sr/P9KxRBJLGVMfgrKBgfCv3yOK3oTl7fE1XAF6Dg+WVOGT9mTq0++XhRo6CEw9VoR1lswkcGxKp44ChMCsfusCehVxb4RRVfnDqi2WmG7bu9LpBWJtgZNfMJWHq+5to6fSNUIz+RvYysv4b/V8N8SZ61fWQKljzHJwTrVjKOYyYWeMUc9o8tyJm9m30nOsTXvxoCu2z7PAQ4feywqZUn8kDw4gezRVsFoawUOCIfbAyZZ4O8LLLtWSclP+97ED5mCG8n+BmQZkP0Qs1tyG+7eT6HIuaVOrAfhhu+Z2jMOGhGfyNJBSIg5XXD+//83W1rfbLq4Z6v/oRMGR40N2f4MdfsXTBi3mBss5ttOoZaYQ+TWHMdwb/7vGsabBjAshc3wpGpYikFK1WAUQ5M6Q9E+VimjwMbg8psMrmx1cOX8vnn8gytfGVw5Xi1FUsxseoK/qjpR7/L0+Egm1gP4lrVL1YmwSzY2wAKuN+DW3hrSRJeJ+3pubx1UmijKEpMqBZ/UmOMO4NZ2i7vbXRMBCd2J8L5cTZ6nv5/D/nVRiVdm4hGh+sLobPFPUIqlT8/J3mTb0T+sqiRibBRjQ2/v1X16LLm52ui94A91JC5tVvcpgOPJwO6ulgnSdHTnqLjdKS7wtcrpND6C/miDY163iRHmVxBiw97lm8HVH3qcIygcv5sGTLzLRYOpEqBuadJjQ3q3xwY307fz3+BSxoejRDTY//1XvWCViE+bVu9lrWtDojIIk3JfSoYpkS/Ff8MoKPX8+N67xkzx+pufVz9H7IEcRQ/hyF8F1a5rm7WVWp+cWtfMkTel62V+PSddP/OSwY1tCcqhhzVttp6/aDO+xZ/tpTL1e6mcNF4qJzAX0EvlpPZSOcHi/D4oM/9uka6zJrBr62mWbE1GpOhtDiH3kYR2Qpk+0AllxdP1TiirO94PVa6Xw8pmmucAMXxQput9UOokuOo33qs5lZblsvvj+wcREon+NBEE+31QPqA+66msziB73K+7Jsyol12e+wffZor5GoJZcq83ZvuuD8qJ3fuaAT7xPFnUw1m9nUW66tEshonzWM3LrftwzV/Xf/EreCU7hHU9bMvefSyO05nWNFhfFOw/az4dl3alvnjzV3daKU7hl4c/y09Ma1zlRKPLQMN4DqvfcvHhakvoSObF1dbh5/JiURVVm3O9y0vL8sd01lhTPX19/PJwKzgJu+PTL4zenmyLUEhvydPt4nORBZ4NIkGBJD/v/gLeql8FR8UZFLb9vxgxvlicpP9Wb1CqXOWAxPb2ZltIpuo8CM878u0ZjPqsdhbAcwBcF5OszjaBqPIbkmsXGlkTBOhiLjAsTxAIlVs2tMVVMMPrBsSmRVGmwrVdCrHqKtO+7gR+K191HME412Rcr39LxBZOht0vnliVwl17bR2NmG/U8xGHCUvfhojibauBQHuH/doVXSE8JryAx2P4Gqao6Bx9003xTVSxXQHo+fJ78U11ae+xV7heDnBcSGaOF/jaAbsOpURawdAHCksYFWJRmSrTciwh9hEPkJXvLxaT4GSq3puiDqVBFhvm7z99+CBUjIqVYv5tuLELCBoWCFwOWM3t+gbTrm9ayj+l+Eip8VjAHlXEjgY1urw/8Pq7lAhyyZiTqbynrKGJyuZrUwL1C+mG1paETokm9WG1QTQlJ8HiQx5t0LdvKkbWezizjgRyg6af56bbk5ur4pV8bSq/f5+J799P/La8KXx+nSQr/TupW85NaNp1JYvbg6ntZlS3O7mjPlZVWlZdUEwUUJfirroUUJeUTyTvxjB6ZBQvZaMSkSDxzNfJuMZg3ZbyBQEOJatiiqCmB7PGkieYEzCp66EUcUCi+ByU/lJMjt7tKx+ltYyVLkqpKoamyrhJy0qgY0Rs76Iwx1Q91s8t3SXayYjbI0o9T+XTbxVPOp0MTtSZ83HwTLb/n658a6X2ia+Vb13x7tY1V75zoJ9UhKcUe93Kp9JUI7sLGSEuJMipyoNcoPOd+69NgAxLkyzKXmhWzMbtZEI9i+PqIoc6HN8qZXL4B/rIHmBtYk+U4D+O3/y4LQfX+Yeb4EsqiorbJY62WxyQatI1jtFmtVu0d0U1Q000b5nnVRXeyjCGQ1c4qhV27zvw1xx5RG1jLKg6ZUy3r/4Pe9/e3EaOI/6/PoWjX61Hfc2ebfa71aJcI4+ddeyZbHmyV5fx+VItyXlMbDmRo3jXib/7DyCJfkhQRh753ueyJBIkQRAEQTSaD1vDwdXi0t5Cjs6uAhJ7010ZZM5e76maijvlC0iQDu4g1GlBEJm03VBCssRk3+kD2CRHvk2WMSQHNhkwGsx5gCaiP7iDTIOBSsRTF/ImobjzPMgL7rQ7p9+7U09NxWjum0lpXF1Mxmq7p1ZFS7Z1e4DXtAtr5zEcnmGG9NyBxrBIdnc3wHJAWKpN//DKj3YIg5rf6bYuZIsQ9q+LQOaynRBDQsekhN372+F7Wv/eu1U27BT7ALY+JQkp+6qOVtWPbfXdfx13+/7gFvJ53q0oe0BKc6s65vjU7U9V5t3+KdMTjzljaaqPUppg/qXss25/33WXqZj1pCPapLRKzbv9W+Vb2NRY9f3boWq20Bcfd3cBt9gH+LeROwLnZ3HruveNW/hL1Hijs/3zs1vQycVnG+pd4e3xbu/NYCADx/1QF5j2arVfKkxH0b2F9lu6NBc0xvE5dqP4bMNl8+7/1uRhsJiZgrBMNJby/GxCWEx4XGOpHbhFp+6GqsmloQSrhi+3PAccEP6sw7bfmpmrkrocpuuyZ6Yc/pboEa4oLC32s5IoNOEoyu71hlN8NHr/PWxpxmMZTci6mmoPFBjDFjb6xxEesQb5qkckWTCjS0Nf/72O+zp+8m52MUJRwbihUGUQJG9FEFunVtfXfzujkf7xfQxADH8ghnFMwx/80jH9E+u/ncND/IEYBiCGPxDDOKbhD35hTP919aFcn/SwwN054kql4g1KLlqxKML78LmEz1vk8REEPmNghF+o3e6wRauPcchbvFlWddpuAmp8uVf2mwwY7437wIT2kTSUiuKG42CC/Vx8tr+Udwp5p1W/TyEr5jybUr9j2PT7++9xSgKycA4xEVz43XOQ2vUmB6Q2zclWmt3dCw6ZD6DWcaavwq4qneWD3laOdZvxRm9zuhs7uL1qCUR68bI6K9AC5hYQpH0U0bZ+AmeHc988coFKzUi9nnX70McFdnZxqYKWzut1AWXUAjkIipdqAWmxlXQMKX2c5f3uQMHk0827QwXVvT07Olf4tSf9f8JftzfzYIqFL4OutveLrsISR67bSAEEPq5Uwx/lk0/4LcjjkSvFgfp8DYfr+MVy+ybdvul4fWeK8Xn12qr9hy7uX7rDmchTc0Av/OE+xqCads5RndM1OetJpDWRLZXbr8rd2nL8zNgu9WNdqqLrFmMrdE1runRGT64lbG3bnta1EY66OpHmAxNO86Vyz7p9Y+l0oGygdFnHsHwfbeAezVpmEsNpEOfRxuV/d1+/mpp9WxrHEExs0Kn7riwOarVwoG/7O3Cq0qacXCnnQ6l9T1KBNsV/6aKlBJacHGIxaBb+KOkIBEgDkBqACU1GYrzBS8xGHUmlqC9F1RXITwkBBwwI4HuLlqtuH6k2FN9peudnB+faZsPAnlTmNxte4WY3V2Vg5xkYuNoDSh0onexhcmqBH1TQD+qI3w/9gTLYw3RowL2ZwrLiSke90BcwZLOhqipz+lFVKqJSb0zuyO/nkNgxqXluUy2uLOhLvyorfZsMiG3xPHD6EDZTENDX7qVjLVfABhRJ+QSlxPQWgDDg0Fr3Owd+myIwsxbMHJg6H9wWc7KA5jRDmPDMiBHw0CCGcwfJYbKkId52+zg9tmCXGibvSflVx1sBoJkx1urxfmn2ofnlnz8Bj8yM0JpmvjGNTHqbzCDWjXmozmSeiyAORBCGIggS+GTwieAD8FDCB8JhDB/Mg7AMPomQOX5SEfiYx4cwwKMIPgl8AtEJYgkBRA6FJSKETEkAnxA+scjCOBeRH0ACYk8hcwiZffiVgDUXMoWwzACzFFmeJgCA0lkOHwAmEuISwqnIE5njV4ZfEMW7ffLYh2icQEKc+vAVYzROMSoxFOIXpiYxfkX4BbAoy+ArDyAaIEwmiMpHpAgL8StBWJLiF0ZjjKYas8aiK8KEzEdYjF86S4BfIUUTTVWEXzqLplRXniAZkJD4GX5hSEr8SjCKtADDAkAkoSCiCTE1BF7gL2ZH/IHIokyjElkaYsdo5BCR8JX5yL8UAzF+JcDiPMCvEHICPNUMBzAKhcxCROJDp0nsGEQpsRNg1jloy1DnMYXoP0KGoseQof+Toc42QlQ0LIK1io555sMk7kl0XD+J2nB5X6wYes0HFNxZDxNNge50rcyNHdK0VKIocwiL3Zp28433mJBz+b66VtlW0XZeVoM7FYK/8Pfe4BJs0PPgqIOk6rxnnOJLu8G/VX8PbAEZrkm8Qcur9aS6Bz4O9I104cvp+0+oHGzYaaO1cNyEWDzim8+q8dzONtP6rEFUGDQieRWuV778u7yUJRq5PWdEZRIPGpT5wzoilar7j2Wql0SO2IRysSHldKhoQ0pIctrywMoknlYkOsBMwBD+QQy4oS/JAI9Fk22BJq7R5FugSSs0kb8FmqRC87vEoJPyUTtWVNcsnWWgcKWQqHJx9pQJfFL4hPCJ4BOIND0XE3UGej32RSxFHIg4FHEk4ljEiYhTAWo/DEUSnYspIexkgUCFHoksFhmoeJwHQPWL3IfWn2OzpZQDEm4ZRMNK0M2SoIsP8HqAFtm1vGS7kD0Y/lHGwyw4PqMBA+07r/pBLtXzMNQTHmmwFVIgdrqK9/6h2oxXwf8+Su6+6NSPK5V2a3qaBb75FRP8miopLsxL6nr6dt03de636F+i+RuS3lY3YKjP8OL67C24Q5SCdu8r9QYX4nxVgSNKeKkGkbGrJlRRIi6UDPAQDUiYQhDiiSMgy3cDOAZytnNjbmHHcyrn/f/3nTs/K4dDfE1z7naLcTl5/2YOB5FOPZuhazJcYAbAKk113QIXFnpTuBDCnCXchyIX80uYJ7umsqI7/A5pGvwZax123QkQp6+hHNn2lOR+2u32EeVuefWh6LaeHwc25fLTUsLQJrxZTtixCbPxDSGrfHCYUt6/edJ+7YDZB+P5sOvcN/3dcDDK7GL+lxc/nUDya1huoQ+jVt9F3w0HY2hOZ+xOXGjdeDj4MyYPu/dF7UptCgTjWsOs1uNK4+Re/HpyNFL49fXrF5CuLnL0NTB02lhTgMnf4+nY17NX7wDBu/ISqEIZ0Cm/vvr5+avDk7/98hflCwv56w+nL45+OLFgSeBfXv68b2EBwQ7/dkL5wgp29PMRxCOKj06e7x+rmKIvTg8OflEJRZ8f1xX/Amk//PTq4Ocf61p/Pjj48dWPR/sv6koPTk9/fq482S6G4Oenyquy/fjDix8IWBH300GVsSbwb4cEq6j854PTX46e/0zwpEJ6cHjyw4uDH1VmIHevbj6BxFw1u+/T23c3sPXiU3n56hr2B+ho+bl814jOYCxQjPK+mzWzUgxzYsQvMGrvtNbBK1ov1jHFwHSamxRchvIK+59KQU2waeAVwk2Od7Mq3u3qPOZQdSoAu0bgDNjF1Stqlq7p3rT5zd2rt3r11kqj/w73aL+5MVXgXkwbgiZUlNyoII5NGMDzUiNuxF/BdWiqEQUXDZXFu6Qou41ibkpGIYdh2MgxvZ5ZEt5O5hNV5TKloDX82MAXzcXawbS7a7ZcdzGy8+5mZ3b9acdm/X5n55fT/Z27y3fj73+72RlfgLK+0FHP3jEO4K5TdJr7Uim4MzbvdmixEvY8aMAATzKEpUXvbj6N33266WuvFYbEBc5n1/P3ME1o4I14S7lnEO374j0k4PGpN+KyuFSykUb5EG1f5gVWeiVm4oP4KObiVuyLO3EgDsUzcSx+FReleFOKt6V4V4pTcWK3ksgElFEjjDPTFfSGjMHTWVy5rnNydnUOAEzAXpwNYB+RBr85e+vOzs9dFx4apzr9g5JxIQfqgzZzTvAwww+e5xQfhwDpfVQfaLnCBzIUjtUXuH4yiYRmixSwIqQPnfr+bOK65+q4DixxUEniIYaFYTRMh4ZOPEB8OiAqpuf4JgyoGEw1FVNq5a2SjXYCZbeDASC79RS2GX38lkxParrRz99B8sfgln8CjaBWVNVDRu3p9k0NBr9BPz+7ciEFfs5dRL/CUHisNBwFIi/O5jV7wR278u7f71+U6m2pLop3pXpTAppTJfPWEeKY46iANC+I0wLyfsa8GIG8QZy0Z0nMPRKQ66mwGAWoTHk/U3faOzAtflUTkL+PBeqXQ0gq9vG61Y/FM7Vv+IOiCR7yOBiofXDA61icY2yFT1K3viicL0YAfNP/V97cSkBxcTY7H5zuHX8PcYWRPn4NT/d6x99ff4Cmn70rXQSdC5sHVvpZiNPXefKkuEUSAWsxVQcYhHW51zsHnroFwfrV7d0Nh8O54x6AgBVgNV5eoFP9wIiHLSqLu93bwrmFnKojC0i/3evd7apbT4o7V906feQP9J+VbM/DztWW/RXKuWHyFXatIe4eU4awGAKwPHOeqEPYcWaO0Z+rj07xq6umwGakuaICxr07H3wAbmnRhMi5rm0I1Rv8l1C/Ft77fdeUeGh/HCogp8Dhdniuu+TSdMlH3SG/ehNYi2HfOCDr7kymJFruOKcgpO5+sTxoP9KgxTDZQH69TmJSrZMQE9VaMWmd/cbLj4scfCo+aS0REXrvEjUPNkPrQ2X3SijSn7TXhqxWf0GL7It6Rlf1VKo6ZkKqJrfGRPm2hCs04G4PE7udlx9MCG81NyG7ElyHceZtTHG3mmEmiIhsECxPCiLHqLA5+rRRvC5dFTZzgg0Cx20IpxETpC4xMeqTKklnpCSK0GSPQbuHEMO0P9yEazxv4VYxohknNjXphYHvGABOeQAIsswAzAxH81AURY55hG9qB590AwoEqjzMNyz18pYaBy5sGdtKSksKPt+Y0E05g15gV+bAW7TenbqAOnrd3tkO/GHdeWIqT2lqahCUaVjGAWVigEEbKmMDllkTayg5DDJgoFF2LyxplJCb7LnNLlsES464PGGAYas6wppw5dkGB0TZckoSMYiDIOLI5QjLMgYYcEhlREjzJtI4X0OZDLiWxAlHr2+pkGmLvSnHCj/ies7nKE6TNbRlHOKQ408acPRGPsdfjrCMAwZ+TVcgWylByjE5ClkZ5giOWYJ9n2Uwixby8lwLE1aIOWZGLIMDBppkHL0hO97WDYKcQxxwiCWxJ/BbiFlGBBFHr8/RK0nSVtRPwPOYZRo77LKIpY0DRj4DZQYBSXHGMZmjN2Ors8XbEiyTkJPgMGYlOFrTozE7nvOElWLJaWGOwSHL4IQdouu0WsjxOGG1WsDyN+Wo5ZAG7HCjOWpViJOUFRSu62J20MmAmz9lzgpwwglwsG7+5KdxFhhyPZdGrBpmp7mYE+B1MwGxJ4maUJ+d6XhDgiM3Zsn1I1Z843Wi5nNdF7JqLWVVK8veiGMvq9RCYtoKi3NOhjnEITuO44RTwjkraEHCtWydoAWBz8lwwA4NVv4idtSxZpKMWOA61ZGygw4npA1NYVb+UlYJh5I3hdeJGmsJRDmrhKPNTWGO7WHIKuG1CpcVCk5UkphVwsnGpjCHNIjXqbQo4c1hll6uFXHKKmH/AabwOtURSVZJcELM0hty1aUhq4MD3hTmCctijseSULQ5nz3AFOYIjlmCfZK0Tc1hyQlxyjLY56hgGcxVleTrtFrIjjm2OznEATuQ4+gBpvA6SUskK8RA2samMCeBUcxqYX5GW6c5IslJMTvqYn9jU5htRM5q4Zy4tqk5zEFjyWrhbHNTmGNwuFavJQmXnWU8V1vC8jf0NzaF181RATvksOM2NoW5VsQ5K8ARbwqvNdW4CiN2puOfpSTLYK7n0phVw2SrbWYOc+QG4bamMEduvE7QAj/hzWFWSXBdF+asEmYNXJa965Rayio1tLw3NIVjjlrJym/GmsLrnWpcSxJ2oguCB5jCkpNfdsTl69xDfM+x83XKDjqckLb0ChNhj+8ZZlkRbm4KE3EbeoblQzzDm3qFY45cImwbz3C8zhTezitcjYLH9wwDgq28wmt9anJrz/DWXmGibTPPsHyYZ3hTrzBr1RFl23iGwzWm8FZeYbIhH98zjKK6pVd4rVMt3t4zzEhwvrlXuEnZ43uGN/UKp7wpTMRt4RmOec/wdl5h0mqP7hkGxFt7hXmtJsNH8AwzAiw39woTbRt6huOHeIa39QojYdt5huN1pvB2XmFSa4/uGQah2tIrzKu0ON3eM8yNOfkAU5iI29AznD/IM7ypVzjkTeGassf3DG/nFY6Jtkf3DAN0S68wr9SCdGvPMKOE04d5hZG0TT3D8mGe4U29wuywJcq28QyHa0zhrb3CRNpje4YBurVXmNdrqdzaM8xo4XhzrzARtplnOH6YZ3hTr3DOamGibSvPcLrGM7ydV7gxQB/fM7y1V5gXtTzf3jPMaOF0Y68wUbahZ1g+xDO8qVdY8qYwUbaNZzheZwpv5xWmUfD4nmEgYkuvMBH2+J5hRgmnDzCFibYNPcPxQzzDm3qFucdlmj+38gzn60zh7bzCFc8e3zMMWbf1CvOmGojKuYPHL3YOYR3x4co6YmJ+3DQOg7AJDOIlyyxuW8lpExr5OeVuwWlejFso/Obb0UA20xIq0a40CcnkaVMe2txRq1JJYL+Vl6BZE5rJnOlgk0YC1aoy8COCBwRvWdNJixifIzvgGB5mzNtP6guO6YmMYo7pKcv0OCS4bLWRoO0KoxhneF5cIo7paZJzTI9yjukyCDJSA+2EkGN56NODOcP2PGTZTvJfVnsG/KKsdxPEMqh2ckB4ONZ7OezWNtzRcQdfVY5wJYMLhc7VIWaqN5HktgYdietl/e/NLrzSbLW02zfK1R2RvVYOcTbeDWLoRNjsk2HoXPgicGq0c4N2DIXmV6osxkDI60+qrHeGAkhvxyhpzycAcFcG5bEQ3BpBVWMEYNgEgulIfTNTVf+H+iKoUtNQjKkeWyMAKloAhOQRyGRCYgBSVw0w/CEY0YE/dcVXWLHJiL1qMvl1+htMpyuNsI7GTdom7nmFKe+qnqG93r/aOqDLtAN6HjvAGQxMZbZOV2WFRdyo/aPpFpQdm28wLhw8EgbpqihhSt62LuwwBO725GAwdjxZZ9s32Uw67gQb23o81eidy17ZzGNy7KZVVgLUJWCfP1XeK6FMEOlGuzqS7SZxkPkQ65U2OBhkJmpYE0SOPr/1SJ2FIhKxSEQqMpEL6QsphQyFjPXN4XjolABVFkoRxiIK9UEXuUggdyhyyI/5QmmOlspjEUDeIM5A+v1zPONUJoL/T+v/jsxE/Z/X/4Hf+Jf1v0wAEook1yeoAkiYRqQi16QjCSIEGBAaixwqCRBfCGBoSRaLGHKlCbYWMqK2BXyQGXWXwOlRoLoWGRbR6g9qxGJa05qmPVVnTHPqFrSpDvR/qP8j/R/r/0T/p/o/0/85/icR/J8Xen+y3Tj8anL94R9zfchrd8fCduT3wffJzj6l7Mg8j73Al8HOT+X8/c4PuCV8p9vCo08VwJPKV2+IK1Dsy69fn1hVQlv9mG32xZj0TVHW29cpiApkbMI45Oud6mO9vQ0Po7Db1TsWgsdC0za3sdn5hgHaGocRs3kuDNIkwxTaBkcq0Sc9iIF6FhnXs4hPChYCZjOXhIDe3+XJot3W58f3q1yrOVbv0xYXD+HaBXGN314+1geJy9jBi8j2ehN96rk3dvoQ7OHMEjmuFFE21Bl3MadTMFMT7vSewBmxFF/awW54HwZ7zUg/+HYZ2ECvS1CwP8WGIyHZEPc0x6D3vtl0u/lwdxdC2FFPVAdLE9ye1n9hNkBOCptLjSFktjP6GEKJMCHblVQlJ+Ig2e1ubBy0QXJP9zq0TnOgGU2nXKxKQm8sSqeeZFsZ/jp/17jVibaVPkBIShISs1F3THlpDhU0h4pKWDGnTAbQD2FgZz13/M06aD6dVFPW6nw5ZgYFMuxO95U4ND8HqAit8vNFpnUwxH0R40QSCYnKWYYiEBIiQsbnRafJryarJvaiAnEhPos7sQDt7kmoCL6eLo8zDDXsADzBtGEpfavx04rBUl9FYW6h6JmAkgFIIZ5qjhbbhVN8VhfG8rmDgDaKnqqa8WXf7Eanw3cMkmqnvbFrplqonS9VDfYAZmzRx96FkInjaMhOia002fE4njBOZKyUsbaw/Hpr1BfYG+beNTRhbZniqgdtoIptvVO7/dg312wggahPgQcmYA7OAJHQPCd6pANPp71boDez1sQFGSyZ4/wplM4Xo+q770D7zudwt80OYoMpSJPbLTqWjiCvGYD4IueJWjpfpcK1mL2fwWlwO3BMh74LVZuUF5/eXk+7xTK6fY2rGCmD1M2Kiv8o0Y79VaPqpOPRkNJq2uGJBM68NlpJH+GzWtHUTEYwckYFTWUbdg7hMrzbjWWwl/elNP3UOoOBkw7qOVMam9ezILTrHomNgJWQxmkYRctIqFd1lh1Qh6soluSqQ4Klj4KpxQbn/aoqCQK/TnIDw5SgYkoY1EzhhdgcQEPIWrX0FhYuHvyUt0A+i4UmnkIyqYJBRM9+kdNuQWhaELLduqYFf292tq7DJlwTEOnYkIURnaTc6F7pB9C7rKDRznyDah2F1Rk9PKM7DDF1OdXtmoOhv4VcYWLViNg0Il5uhO5Tohl6wqhsDTVBRywgtlRRI0rVQaaRWm6cV2FupriqMf+AmCzG5n6f3oU5usf8uL2Ruxi2MILq2FsGeKP+wnEc0ZbTb+gUShNNIoStGlAJ025PLYgQCFE7AOpUEabTfeJ3YvidNPkd+FFGT+ymkmU57jQZrIjB+sAmbFQdAwlwigVWd/1lpMrlx3p4pLe0LyCb6xbVNUeAdGRqXZZMasOgUQ0yuF2xq0ZV+13XuTcnuCwGtj3Fo3VDUXVDUXVD3Qyge0TM++ZQqI6+cphOSk0npc1Oivw8WdNJi3reZ/uJDtKqaicA9tbv9lTnj3cVHc21UvF/s94istuqKzO9lFEvWYJ59QswozafKKIZ/DhxGDvVZEym1Xyyc/XuRl/FvzoPo86956k0Z6JZSmAeyXelaJp/0nmIadNp2jZSNi2ZnJ20l3G/7bEWq29wyNqUJp8AWfgfIPvKYYEPIb1Nua1PYn0TpZpnGH79agF0iiE1xpYJTNei98L5ctm0XpIlgz+s+WDya4sVOL5vfuzDBAIDp3qYIBrDtp0IUl3Tn6PoLJP5ZV8jKkh2G8WDCqulkcyUJXN4fAm3We6gQ6ArKiHTBncnaNutYV83netzgNletsL8RNm4tqIM8N9IzpcogJNV5xdEiNEFN4xlTtqxWU9bpKImi/iejCquxBaCFkfDxHC+cDZGgUB8RLRADNKxdYta8hvHMW5qRIBSLenQSFRKrKIyFSKsMc8TX7iRKZPaGo2aIjmD4lokY8fFQ9/2dRAT0JumUzqQJBsJ6GKj565IwyPd9CBLBgYhOCf8gUVR9e6n6+udq3L2D9ujO9fzHUwvZ5OLnZt/XI2vL9lOtm4galVq25Oap3GTPrBUFc4XZtwtNLGhnU9vzg7OTCnXPT8Hru3rxHuNTuZDk1Y4XGYkA7sAA+R5pLB+3EyRD0/VuDcV/qpcY3bbeuZhim1uZpubLTcX0LiWw9BqOicPxda8Cavoc7HxFYXOOVK4MK8/1IX+tVO2eRNyUfENVZhMhp0FHpznIJdMMUcY1tSMUTpLdVK6TJSBUG9QSbehIBr4iqa+X2EaZCGJ0edhM1wbqRZFnjyHPg9do1N1TUF9BbJM11EX8tSNlF+hCw260KBbRpB+C4GUGkOKGPAH2Ws5uBi2O/QP8MCI78LzCmeld0b3WFeQkwPMEElcN7mDODnn5dXz0Oi4AUW1A2dne9evPdDLrIuHGRsG1BggeT1A5OoAgXv1Lubl5Z9/Z4wgj9roq7e7SY0/WMVP+mYNZnZm5aeNvE+FfQMJtNmSDBTNFUGcDWhi+IKWC8hAWZgXcYdqZK9bEy8o8JwC/0KBSUmhsgr9lQLjCvQTBZ5R4JgCv1Lgosr9pgq9rULvqtApBU4o8JICv1WZOq9LdNOe4tdILYzXRBxCqGFpH0HUvnSGNh65i8pf68XQ1kU1xUF7n3u9O48yAMjBpj93ew0QHkjqIB9G5hUBMAJCyGkx1kBEB6wY2XcMwIyR8fscQwBFA5gxMroRuTEiEUWGjCqJQqb00NdX6Uto4zuCYS4LLMZ9OCN0orWyjIfHYAY8c1XvsPmO+qh+PX0sjl2Vid/P4gBbfz27KN3es923pXOOSv1EnRpv/TN8YXxSHHvwhcDrD3YQnziLpqXB3wt+qpWeeO66lU/0ZFfCo+NLpZMKDcA3TceDk7Xt6bSpfemqZ/q9wglyyhAoNIGPypUCufJGc+UdcmWqGb8Bc0wLQXZNE3X7Cr59DGWbZnSc4reyyYk2NSDg/4LE/FYOT5Di30rvRBM3/Ovu7ki/oISpm1dVO2g2vcZ3VyUq3VFbZeGyD3OsL9SJIaXG5d5rYFQJdTh9DI0xVJwMXkJTXgI9YklWfmqYoq9LAUVOUEogox3nQH7nt9LOoDXst9Icd6xel87vonypUb40NsIJBE6Gz71ToAiZc+oUSwha0QayU3EK1BVIXYFtKU4xhLKgsQeDl4XDo2p7ME6hB8XjZwSSwgL5vHEJOXhIdse5v2/c+wjSnUQwy9Hg0DLu9moxdGCoTOD+gXezBdzJp4uulTNUf5x8md9pq+JOs+aL3615Ymo+2Q2DPVuBlP3e4luTv6FHVPQ4SwRNrGvoaPBid/f5YFI6xUt1DKMuLI48EIVj+BoMwuLZrlbexzgoqxlJHRX1BKSeF/XkpADfXuz2XnhHTj/2ekfeC4eSTWaoag8mI7c3Kb3nTh+CXu+5h/WbCUc9K8yEo47pvWL73SOtQ3Bqy42A/r+HDQ/SZM44NyG8qN08MMDcva6+kelPrNY0xh1BWQfY28E40WDTNiNlv0LmFKa9rjJxnbRYSjLx2geqbXZ6wkZi6B1rEFtGUlvDANKIyw13TztXQi+7vimBnJFoXlZoJDKu0qW1A7U7yWaqHzEIsOKAd9VtI7nYb0aIFRYAVeNZxVSyqjmwNQd95jGQTBuSIYw+VIho0PPyw1a2XoD+g+WH7W5G9TEdTadXG8lb1++h5X64Wb8T1of0O1UV2aoi4yGlp4vaz3HnGRC2mioaLrCLKOYtNEfwXbh5TJla86PcwPxgnvk0JtSke72Fp2xYjDCEZrq3cPojAkPd+kYALGNEuPUuzxoYdh1I7QPziHZR5+Xdb7xXzBgpI2fJGTe1TwoN62IkRuB+E0vuN5y62iCw/Jc9e9yMfYjXSZhZygNG3EOPNRpOnGzf2hvEfN+Wv2/fE+6W/9AlpnhFVWGrvgTro1UrnCf3zlMdg4PW/xk23BVTE8XgXWOh32YvZRrNaceo5+7EneNUK3Ga6x/2jMO3X71HcJ5Qpcy6FMRJq1LYdyYETC1H0poju7u2yhZr+Fc3hhm7UYBXi6ZBHjsMMaZtG5GTWXKy/lO1cmkS+fdtnpzyNK9CaucJ/T6tk1q6Hqm622P9Oqp77b/oGL7guP769e5Jc0E7uDvyYWXiBIkJQ7bJE9W6K8pxqoWRMJy5jhf2DWW9irBHQXwrKXBsGCJMCoZweQ4EjXeyyr0YUs69cs3zxMKzOZw+BIwzbkCFCJHbKo0ZlxWHLetBgNSe0y4lbJaqWdRaWt5o05uVY7zvF5+95raAO6/J98aSXFd9/sYAJXnebqB2fHas4tLUxk1UUzOr2/dje0nUx+XptRG8J4PMgHKlSFBkVCUHcQLJBWrBz9pwvWu8jiM52t19WoGeo6PhqVq+46tatvm0vWzzYDZtrER82IJNk6W5kJVgJsKvLa5Wm8LVgtfQJ8Cl1TWR48aayGL56q6xgVTbOHoT0bWRrqDrMkhITLKJYfqYdGoTB5gZJt/ry8XN2+7q1W8wnxIiK21d0cHHFqQRtFoXFwgs3XgGEy2Irt4XFq3eRwZFKgpM9uZ9ZM0u6iFcTB07eVd9soyyeOOqZZgp0ybMqGz7yNios5agSljerO8yfoU4SNC6lcmmGSU8tTu9x79nzC7n/t17xsREzIxkvRfzAsZ74xVsUe4qEzBXAc2I06Wrxk2f10R7vATkDeRAlahGPKVjjgBTtaSU95Dyvkopv74fDGSCyK1aH1MFsjDvl2b27dUM312s1Go9bbqKgqucug1q+pNJh/rM25AYogM1g0eUmacwUsxVGKVovn2zHvHfKLWzTeH/uamV2T2HqelPRlSK9zaAz7MkdTLREgICIpP/6/f/6VKxoaJhRIa0jNFnzbvItlGwcO3+QzVq54+oVH094uPr0CZi8T84uoVKebT6O/9NuMQL3iZjqrlFrblTCLcIzcjG6ponroYBNd0bV5n6kyp4XzTxwZbKqzGYU028lb09E2YxxHBCA6l+iIfRPDFjopio0g7pmXr/TxXUVb2xgTuuBnmymAGwJB2ACb0xxeps72ksTmAsTmgsLgE7FipD6Uc4EgEMkmWilJmg7dE8+TpDvv772J56Y+CmN9yK9/aq0wn8jgtnvCuxdf+myrP3544A3igJQuJWlLf1K3VTdRdqGAxn+jLUEq7KVOPeREwgYHY5l+rMFzLPkzzOszwSYZ6HuczTLBNBnKRxEKUAlUGUhJEMcStblvhxmsgYsso4Cf4/d2fenTbStP3//SkYznlzYNzB3dplh8lxYifj954sYzLbcZz7CJBthjUCm3hivvvzqxYg2ZBJnn25F5C6q6urrrqq1JJpxQSy+zfwQzd2tMuhFztB5ISe7Bv2fB25DlrD0DHGd1yNVi80YRgFaA3gDXMzyHAtCYx2jHKjKAx0qL0QVU7keZ5sP/biyHcD34uUCaM4dsIgCJSno1ibIKDVcZxQB8YxnmJO5KLAYKvnOj72usozOvQj/u8iakwQhoEbK+mN8FgrvPDCMMRE5Tm+MQ7Gy7Zkx+BN4AbKdf3Adb0oRDQwYkrgozX2Xe2Evo8ozcZ3TajiONShq+MA2CKRwBi14/ohPviui9oQOKMI95TRmqPIeD7CYmoYMIUL7EYLPMgGhMXxPFfhq44BklHGxFpGgmwQBb4JHR0oJ4ojTSCcSEWY5YE+GNCHB2gjCNrXxg99tDJ7gCP4IKODkJGK8Lo+IfTEW/jgeyhRQBCRPLBD+SSMDh0wxF6P0IcuWr0IvAy6FT7Hnhu44B2EhlljWGB8Yox6YYFLlBASFoAR18XIOCqM/cglE0O0QhbwdFAlHlNRQtEaaOPFTA5P0eUFxES5gI2XHnwikprYETntuHBL9BuaPGaWQVjiQj9haYT/rjjAEM+DMoKFxvEQrLFKkITFQX6EbGi5i4Fae/QjGZAVgSAgx5GBTx7MF+7AJ2Lh4HmML3hM7AmC2vEQhKQBah030swXRBgL+hqyQ2lgIDgxfnsEDm3gCuwQwNfSCL7EksGwHzQiaC8IeFpcAAKXUIMtjTAF/SFn8NSP+B/2KLgJaHBHaOoEoQZmREnVmPQCIkJGpY0DreKISm4wFuZ5odZiloL7sXbRiq3gjRGRwUWaAu0RCWRx3MB6kIU3Oowlq42UXSyHm1EYB9KI2hiNngt9xCzANZEfIIqTxDwI4a4fYZsYG/kOEQtcy10LoRdjrEcE3ZisJwsJMgQBDBIZ+2l0oTFhNoQOrgTUL2ZUSBpscH1hjqYSxYROrPAdB2mhKVWBHk+FmjhHUAJbGY9SX6OVyAr9HESpSMynQxUKc00UokqTUQSEPAVcAuJQTsn6mEyLiboQNWY2D4UqcFwwhAQwhBzQ+AsjkRXKCk89WgMDsJEhCEQOSQ/qYAT6aWR+m0ZeFKM2EhI4GMj0NGp4K/ECFoyCDbZAgUUsqQSJAlEfei6iMZET/kvyIEYN0qgCWBRAAl/jCvHEa1JEQ1ipsIIA+SGmGh9IYlCATwFYYgZ8Ro8OiTmNsMZgdqDwWdyOHSaIpBkmopVgEnCpu7gkxBKziC4BAAtgCWNDLMRqh5ygvFAfhXYxeRDBPCFrgAoV4zapB/WhCMwNZAJXwgP3Ix9ROgPQhENa6m8EkhDaQIsoohJgkRd6WC/1CXKGProVoNEEUxjFnCSAIVokB+VJa1ecEbxBV0UMc2LcVTuG9HWZPIC7IIQLEiTXkL2uJ/EOoDZqNSSQKGmfCRF1pPQajTE0g6FkhE+dChx6ILSQDCMABixR56PKwb2QcejiC/CoO7DUB3UIhlYKn4QoxhZCiCBEVHJth254IDF0HQ28UI+MBy+CRDr5AKZtNQ245oItUSLJIUeEpIH9oS3WcNOXi6dB0pAJhJ48JkIIoBPAwCCgWAuFQypfjNEaA0hqh0NmF7Y7QlLXCTFCWI7B1DkJnIYOUlVEP4Qn7kZIismxNmKTzxjChKUh9YBxTODDXKqKlHVDrCSGRuGoDREAStpGYKFptYXCB2qHaEpSYSvUBQbQitBqZIFAZctrkuEUWzXJQhqEjIcLklEEXvwkaCH1jwwU0LTACqnIOuqfhElrAUEJVCRygAtyeYPSFFhLC4qKZjxXPbx1hPwOsYb76DIaklL3YZnQDZHIUPUYTxsOIRBFYICIgsVMcCwk9QgQjkEskoC4wFW0CoI6YgIKOgQjA6WUuvAQLRgAvIQQCuQXG6kQKjA+M1IDEEUQX2IXUZ9jFFqSEjxqUawCW/49V4inY2YNKB/Y7IV4IWUfzI1QIlBAHDsRRQVRh2tjhAyiWAVcgY8ogpIfwlzyCvnw/KB468a9Pwwo7lHsHyo27386tK8eBXTqrLDzv1jbV2R9aJbuZCIeJbD2ZtFNR6f88EOW0nW7m/mDfamVajd3vknq/7IQj1zsSwXAnYcd3zJk/YSgX190mu0PBfaL9Y3NvyVUZ0x0vunAf1bPzn/SRJuQbsh9O45Fomy9t09LD+TURA3z+/vSw7eDyfJfkXe5ix6Wj8/0ebNY5dh7zn4zaxq56+wf9In5kLvWZqayJ09o7dRQX+drqCZ2y+yyYWTvcZNmm9Okzrnc5C5/vjbK/xyVDyqLDgvRRQ6C/g7p9fO5D2l+N78jrh0OZy3aJ896I/v98rrXnTbPqu+vtW778mkC+bxof5SvKJTPTts2xf/fSnmHti35HPmf8vaqsuPjwPY7dqD53Upd9LOf7LlVERv5TMyHnxv2NLYy3nJ8Elp1+Wdgu+xntBTL21/aka58pl376dhPa7x23mdWVe5Kd6U5sZ+xd2pFTT0/PbLau6/et610x2oIrRNxp1U9VyW0fk2yE5D6bPb535lW1efXWcYm3sqr42efKm+T6XQ+zrqMcWzv63S+0ePunxlVfZWMkss0aff44eBt5UWaEKW00koHqeUhcp6Ve9HLhvOErp/GnWRQ+WXSTWZpVX3W+9Wj3jRpD1K8M/vV41F+zMTV1WSVt9l4hj6aF+dqx7+vMFdV+fk6GfQuemmWKz0czJPbqajE+BtpReFpKpeOlaJg/8xT1bfjeZrhV6ePH9XzBXJLSJj1pjfFCS42mJBOKXtsyfxHels5OarU3p4c1QWgr8gi+LYlgm4u+I+TytHrVqV1fXHR+5TDI/CPRxe9y+ssEdCAL8Pkyoufj14jYf3F9uEYN+8LLtGq1E6fv3hZzz1/c3GB23yPlk4yGIsen4yms2Qg0s952AVUHWCbrlRsGxvasb9MMeVInoaVhz405SuhPIIQxBulEf7+jdLDbre3JI7Rdv7Wm5/2To6OTyunbITOclo9mBtSmDxmP46nM3l7gAzPI3M0Hia9UeX1sjFn7dGPz99isSlb7BQWLxD08snTjvD5IdlqrRe//VLf6nOhwbfzn7x7I/NKHB7Q5BWXUNjxKtfD0FmaTbLeNLWaWkOCVXl23ZuO0unUKgw3qbZkCqhlIoUQ+DoloZXE23E2q7y+HrbTjDlbb9/URTi2GlszYOxU3v7qkQcZQGGI6HK07f71p0OhobPMisNWC22DXod053dh0uPknr69CeTMzZGzGbB3RNAksF3L5tzTdVvuKII5Yo6XB+eWCGIPafL1OiEFwSlnCKya9mfjSaX2j19f1Sv49rXxTh6bN5PZY4himQm9plINadvObXTDGN+XQjOwSsKykqUpJ+/WmnLEvmJIlJfU40oRvh+TwaxyCOlvll608M0OxLNsZofFq0pMCazYCl9JRt1t+Xl4PRsP18jnI0SFS6RdYnY9mQhP+D3laJQOKiddTM+LKjIS/00Z4O5kvRwnhHIqCOl6nRTDO+Pr0Yp40u9KP05nY0rR0CJDle+QCtLrYUYx+t3txLb6ZZ05Nl2CVLZusVA7pcvb8yzd/ruiRF51ljQuWFeIdvt6UmoKF5nnV7zv6blY29Trxh/ThJme3c7Shz25R7ZhmPw5zn4lZZgJhTT0RkUDEsu3WHWWvxA7tQqmwozrYdpFotS+3Q7WNOfrFdCifCE/or9b9jT3s4OfiuVU6Qd6miLEIq3wPf97hEh3K3B261qqnjSbWzvOuucs2Eradru7+RvUWK4VzbzNYRPfU1BtXUGi3wlMbtQm3JuCEYL30Zf+k5Ht3XE03Q9iUb5TcTz6i9Bs9vv055G6P6+DgUl5KkcM2RbJspDrlIW+7L4r7pejLDHp2ndAd3f5fIKVy99755FNhcFpYwa4RQKUZ+7W6c79KLfuetLe2W4G3ZF0X/1dAAiwFqHRBvj0ONKDfT2pZtYRMRb6q/49FnZ3HQ95nwHWVdhSW5r7yKlDqX6Zb7a4JENU5igegWetz/3BEoysuQMamfxm8nqQ9rplg/vc/9CF2Eb7rrPacF8MvbvjdCm+vDfZWC+fFeLnZ0tZSYNsGaKH03h1ldlINb9NFfddDOji9LcOMAzgeHCdNvsllEe7keL/uyvD6srgnDXl0SMOV+1PV4OX3+WE0GzsKgY5m4PK3i6bFIPcYpC3fRC0uT/EK4asmpuXVJl349Ysq2U45Vyln1Zd8uKwnRLZGhN+vFnL5K6Rfai73vevktkVlBpDr3Vodt36nldflIdNsbxWxjnvgfrDCUuSUl7mM9DS3ZXMXMAd6mLRvQR5fWd+r0IfjzYqNOPND+1VkcTr4viHLdV2YwZ5fLIu3h2STSVfqNKF4sdQhWsNksmuDZoFl+zdqM/1TZnN+lwIEsxCrFSd895tuzTa98q0at+ryttmt+VBOnY2pyvw3zRnS43epn5bla7bV+8nS9X2lxz5a7FghWVDUl9HIJXL59qa1UKjWlWj5rr1LD1/YN7oQQ2vb/Sv3S43642GTZfMZpPjPRy3u9slY749Hwp/++JvaeSqFuPxpFlq5xmRGjYnedYeTL5UCSelwjYpKuGBfjJZFoUd74fVYQ2FSTZN8aM2tGWt1LONbEOqhXNfqgSL9Lr3elFc9NUPvHudVCFHylGtqE7DxnTCs49a9XG13vhz3BvV2KFR39rI5Wj33uyF51u6AGJL+3DJyI0OnceH1uGB/m5dd/+fd1DP1tyFxdlCxL7IbobCvNL1GNLcW0RCpN1yrdm8PpflkcbtdcqsH16uQVkc7Kx/6PJl7uUL+OXg9hq1Hzrrw6dmv2h/Ump/TEeOJdJ807RuQS5vQUgvNuzY7h71uyi9UD6RdfqT9Sot4eloZ/vutPJ6EzB2TWjfoLDlJz+bS6D/LBscN35gxI5onbLv5nDazL/u7h5cvLb+kmqU3PQuk9k4YxvJ3qvWyXHlzDyOz9839ho8Z5rV1v2Na26xDy9TiuzqZoUaPO5cD2lqdOyt23F+c/i6VatezWaT/b29+XzemLuNcXa5Z+I43vt0NRsOeCCaVKWwVdmKMhqMk261hw9c6PaWl5P3e2fvu+8b57uN71vJBcH+G2tUiiHztN3vzU7Tj9eIveDi2bqdztJhXssftt7dsW1HePfX5oD+ve0RAM9miJMhl6Ae/skozt/1hqlszSj/fGx2lY3nPJ1fKF1fqIxL9qSsaYlYacDm38OSp0z3y+lPzLL0Jz+p48HNuJ++af+ZdqQNffsJjcPxTVqTXBR6QJf0aadW3y8MrHWUr8Wc4cavB9ssP9j7POKBDuwobimL+5bu48fre5fkrMpzgt02t4929/O2F/Cn9Vl2+5m1KA/AmKVzd0fhQD2vCLysf+7zsWCFdbll98neh/fT72tP9+W9y+/33re+v0sm1GHGWiZ8Gg7uaKSHj13O6ogfNL6XjMBXTpr8/3p28Tja6+U0SWztrz+VN+M/G4zbNfnbwkUqj0mTc/VZOvdzmQVILtTHwqq+GijenHd1d8c9zaW9axEMPtrNOgdXzb4dZttumt8ZNVcv1V/luA5rH9VZdZ71xBKe9UB29uFc2gd9Km9ffacjnsgTnhfl8cD7kt2bjx6V0vW7NcrC1FO7nlstWHZwstQs+21tSqG8UFv8qzrYcT3g9fCNwTgHuHGVpRdkomwQTGazpHMlKbx3gUYi3pgSiNSmQZIRyr0zdXC+Bygf0ZR0b+2DuubHxtGb18cHfwkZE9txOJWKJ1ztb8iyDe7d+i1kN9SdeX3e/BL1bWEpUR91L58+tH6+n7/gqQl9x5N0VJur6j/bg2TUr9Ytlmh/MOKLHhxManOoqo637ZO6H6eyBkKU6yj+JQRh8e1yI1V2aevkVDQfNT/nXu1/p1X6qcMutt4NJ2ahbrdhdTCAjINSsbS3wQmg7Xw7aqqzdJyDlaLmQJWKxQOyJE0h1qsxhfb4BtNr1Q5U6DM5CnrTiWS27cCSJW7bQV3UD2ywl0WKJdkV5C6l+N64M2N/f75pTbhOf+2WTBPuUXP7S+dackqBvs1rTF9phYy8UuvL2uqKLGWRxawFfkwxYIoBy6fGfVC/rKiJWVw36i95Vjh6Kgu25dwjYvDu+NXbN6eHp3+oTB3XyrwhG8bjWeMynR3Zv4KMs9taleszSa2OHsjmKVoKQyLjJLVrgw3hZBnj36SQZLVSZ5vqTg1YVZjmTrnnYebIvlshyPZ0oJaVSpVqS5ATclz059sQN0jTbtgOygD3z2QFMxw+e3P6TrahPnr0QirE16tj0h7Tdd7gsnRMQbrneDu/FiXnzY+ro0Udi+zYvNrY4WXT2nnTdi8XDxt/Oz15d/L65aKuXtTzj4NyJNbJaxabwc6vydhTY+hGt0DSFEhev3n3zxdvfnl9JLA8RXhfkKnXiznzloWaY9B6H6dQtHxZ2FzFPXq0PmQHfwuivcneUBHlKlh/WMQStWMXAx3qS9K8xMb1gvLLWhjFP+FSJBPozDcRl6pXRlXOV5yS41WMZXRZbm4rXlPTugxD03AsI5sOBznr5vCv4JA9XbGo6LNHzLIUWI78F7quQ8ltXYd+yuu991687UVp1qycMjWjleC15smkL8ktaf9+CZ7BGrDpW2LhHIgFYAEl2FEzw3zv+TBACoB5DfwGGMcvdetHmtc//jH/mQ1TU5DfA8Dnly/FGoN3iVzKORHVe3AU+vGP8flreuT3N/E/Vvy1ifj/Xi0IyP4vEjAipF/327xJ4vqn+bnU3pFiB1TwNTe2RD6ER/Hf/+2v//LrP33/l3dhznAsby+2KaY+f//+IZZP/P07i3l+F7d9vmPxavWBE7IfzwOVhyj9fO4dh37fFep9GzyHHwXAS7Q89RKF8sYzpmmIoDj8bwNFcgOd9zukM0xUYRuXKKz7gfBC71hBXlMdEe94nxv97WlmUUwFfu7D9px/ZFTKa9pOocthKAkbUlHk7ZcPzFa0rbkbp/QSDYCAPlzfzaKQNj5Mn8qqru888z4ZswjYUUqTu+UIrWB8XJ/pEUa+dCl8POsjgbp+ic/wcZfyDOt3m2k4KvRycV5356Ubd35yaTEMFCMzwc/SRijcT8E7jo0uKCFNoOasmt5hNy7ThoKj1PogXUTzOExhE5au7REkwQTVHODd3Q2/HL2hULCaWYA1DofGC1qTi7q5/yNHoZ+lFRoztxxZ8tkYeAqgfCB0F8qg52QXSmBqJqoqmhbUNeykqpXctHiEHFWzXlDIBvLx0Akw6lbNE7xV7xYteIoxK8iAftV2/Oqekz8kb6jgrynl6/+jQo2wcy/wsy9V41vN08auKVbKas+bC8LwYOlyZQsBhlZe+bDKcT4lA4sHAKokEJU+86yPG/B3N7nmF/RRkZbYm9c2pK6jhzboNkz3udCs1fYTDKsSdLQ+3IaJa+o6Imsz32jAngsOrSmufPZ5XUXWNEvpRpXHaws3miQJo/D6VVubxCW6WIXexYlvyfeP5QJkzfl1vDG1GYVjoiSpdcOGtkBXmymMbR/SR54uXfIh+2kxbic3xWT7clLdKExb6j46Pla5yvq/etlVfAOi5ZBy8LMs0Kfwcz/PGBuicTjhs1F3GPdX3qylPK8bN+XKE7HD3PEYe0c3bxoDTFcTT8eqf8+bVx8WN2ypITXZfwNYOHrH11BB9oq+rs+auoapDeTSwZ/A2F9IT4M8U1DNARbjdOtoxGui9FFAPxRjlHFRr5E38wxJ3ywj27wlzpplhwev6UmWjM4DWalGcN4n2FqWKUFNDTZm2GP+Lgyk7zTmBRBGXGz6GCcG+Xra4WI/uiBud96hH5DuEgXYvgIh+5PAeDcESmSLEPSCduRGcsNHgVPgqgNE72fuGj11eD9ttKhmkUXrrjyoFMV3i7bZ7uCC/Xi5nOuDE3jxkA/buPISGSvypR+OClLOMrBfJ86HlGFpOAkD+nl/G5Lc8l7NMBRTjak33wRkBbjq0UzsjNb7FqxNbM4SpVH2i8klhRpjC6i9YfrcXF5e4hCimmwZCZyAmumtRFODZOpWzZxTD/VGu2gLmnM0ZaWFPMXEYeIFxVy71FjF33X7YQcdGQgQMCEl6oUAd6mBbh2oIfjMytZa4NCIiLdcBQQy2jkkqKpJIExmQ/DbFvhZ2lpQzk9YrvWwAezRPxVbsqjDOyNXemK4U3vPMowUaLRLzPKBg7l9m3Q/wD33NwrkiPJg/Wk3HyOb2BYsqLnXYsbjwl1xKrBBYCED6aUTgY26xIFWAYiWLNboPVFFb1asaHWUrPQUF5qeCmtLsBvnkRdPb6ygOAt2Rlc5EJ5muiUrnS68pmMqCJ4HrF0qBPVBJBNdAURmrMS51g7X1M/TJ0ILMMmufJARDkCkSiAPeE3lmcMouwfQW15TgkFN3L3gn6DjZd62CCpmbQMk8wyiBKpquQbpUVW54PP0WA1sjMZJp0Dn5bSdEo0rjzC04N2ifWp/NpjuQPlyQG66VAXMiY8srPpw9lFW7VrXFLxe05AiqrRM1aLC5tL1LqYIfByRdo9HQv7Bqitbka5OMIkRK5iIJlasbmu1sAEnFbp8TFKlmsK45EBUiXblA6ZWfh3uSaT5JtJyLSMfj+JEmK4mPcEUUBlAmjR7vhxFjGBub9oOpwF9rMeULNz5PJFLdbJEKGVwlyOtDDphmlbaAmi1anM5jzJmLajHIRPZQaGjyHW+ibkMbjiI/FUPFkzZNjBRowrs/bZaFL6EcKJvy11qnG6q1iuPMJWy5vbrGTPXfazW3Q2ByNW2aUWrjgCloVkatWrRfq7i37b37/1t3Ei+OPy/XkUbOSOxhxBFUhfbbLX0c2R74t04dixnMnu8+uTTN8saSSSXpGJ7bT2v/akvCugGutEkJSe757azsdhA4V4oFAp1wc3YO1ZGvadGCiyMBlkgQkmvpBlfe0k+Hm8oQThRXEKY5EpmbLn394viY0xBiyZJTvX+QMoxsTjML34P5ovPV0WMy8Z2ckWXyVFWQDIXTZMckNtkTzIa9qefjnTRXq+HckcCEngjn+9bH9Qsf5NV1HzxmjrDnx9p6a8w5vdwX56zGY75O9eYEn9BeAW0MxrI+YfJx/ek+DMfPeCPazwS4zEbH1mS4+cViLLiRd7wY5kcT9Rj8pvJwrye0bMuQn3T4TN7z4RnHgtHxh4o2fk8MEJw1wiuvA7SAPC02kjYZrPFevJPkxfXybmngrd0E0wTqoeveS+L8c3cWCaZv88nWZX4Ypwm49x8bb8kqeSF+cJAgRNlbrntjDyaf9j3nLnS5MCD24xsiGa5ord0+QuUKR3+AcGljcuuWsksc3K5TaO4pl5QEdimbZNQ5fSC8jRLW7aqOCDNejof20/y3xPwB4F9/Aen6BSKVr+2n+UXmGdN4QNH/hW81bhd/th+RkYHag62n1xZyc8/uRm/nH7P9k9a++vXZDZGu79q1AzU29H3pGBFIiVni21gOm7mpDIH++Gn5YbD87rQMifeHPSt2uCfJyXYmeTJZ8fec4CQSTb9uFL5vNPjfplgVBx586hpJF71CqK4Gb91XWrJOH+9Z9kwkAbqQgu5GEpSW5omcwawFCnxmEnNl8o6pXIdMTX6JCYm5G1yDqvIjlA+lgXrbimHxJUmIXnPD9N3i7PeBXRf+NXxnU44i/EjjMybHVX+y+yKhjXvhFHZ5GQMbQ9XGe4DcanWzsBTfqnOCN1i88gXprFfL7AjJmxxFsqUo+ybInAnmVLnYvHr6ffbomun/9zZfRz2iOxBUU3TpZhNxUjh0pxdHSsFSKw3XUfgh6BKhrthWJan8SmJMMzh6AoaT8Ya3kqNfn7WEdmgLyQUSGiKr0BMNOpjTV4Q7ndEjVKKMCTN506dfv7L6aufekoFurOgbijVINMkw2D6zemwenhmL3UEfomwKtscmoF1xtbZexxqmw1T8tn1zVWiqNC7srLrXiP3DIUfmsLvxAkFtnoupKB/zuyC7z/9SM/J38Mm54znck9NJRUX08GuUGvKpFBLN2gyaW4nyu77A1lQqkz5YLCyyFVBFPNOZWCNafoKyVPBR8APyRhuF1G+3AtLu7nhtukv0+zn2mXQTwPg7SYP8+Dus3lwj9k8WDKbGZ3Mv7V1kXdhSMpGUCH5+vXnvxM6PBQq93zSGfQB9UOnMge2ZVuEkLg0/i66mpVRqlqaflEUC4Qd7WSxSYBmcPj1K6WIvwrauGmZA6KLnFQFiWd9pX40iEuAxdVc6c5TbzY0g5ZpFiH+goZGdquymYK2R5lEQ6NUUnWjRH4YKcumGU3I5BpEs+MyhqYCJxXddMHEmG5I1G3+G8dO7uYmZrRK+v5msZiMeX5FdjWZe0p0fvaUMNtanKAQlP1ipWjynDT3cDHp1KaFh11PpIFTu3+lNus5mCBSkhEPGjmYs2PdmU6m6+1BjVz6KpG+8t6OjDrm8wpxod/VYM7kjbJWN7wg8LpDnIXJP9FdUqd5Y/Shjv1jFlEP4BiqUWzDb+rthCMkmk+Q+5t5+htUKa+Sz8ZugFJhGtC08XWMb0KTXXizSU0bhgRbh3zcBnpJt7p5V9DhWnS3xNFW11fsXQHjRGxFkQ8OOJJ65rAFl8Xnm2n8Absbr8i/TGuZ0Aursp/SVw1gCi2tCuI1PiNmUQiAvhAVRV92+A/NCfNouOrAfh7H5ffQp5nTdqr4p1Y6CcXHkprRB8gHqz+xFZl6FyYhGYwsa0nKEM+YqhktfoUKiReSLKB6UGYgSvejYrETOvE5xjjVbV36wl+mQIe3E81QdFpqk0lYhafu1+pAYtIjqdD814vFh47oXWuzfkH0o5aRYsLAnmTxNQP9RpyC+gHN8ahe1T/nk3Gjmmz+O2pwzCInY3vroK5OqiJHDPpDp7ubm05dxGZDOxuUe56iLxoZUUMY8fpoJTKCah3mRss4uWrPSK3lN2FL4poOfa516OOMfrI6O3UsmX1m25y2tYKGoIWPTRqACSrZe7T5j5c//kAUTpuhRKlp19UzH/b7MCifq7sO2ef2+0fmS6OkzV+m0PGfwoHFW2Kx1Wgzo+5HP8Cqc4Q00g1U3qPCL/WzDsCRSzXPSpKUgOaUM5e9S86iXJFrmnAdfKfIcdehVDrF6N/YOQBDmYMuIwt/434o7abY6CwnwuqjyzqYZ8Y8ASkzn3fE8+QC/nEWkwDS3zl7TjFVBqhTtOks368eWBiIvz17K2SN7MsN8Le0NoSRndDyBU0s1Vjd7LJdc8AqQhaQQBFyDxFZjHPGaVDIhPudoJlVQZ/ijlNda/Dp0ESLUGsrsAefPuUXCQ0YwoLQT1b29kEHiVifqLBYxPJVp1i0d+BkciftY+3AKc00NVvMrqgXm5t8j6b7nV1isOuU6FN3TO6bmzFkAbx9Cfnrx3IBmu45l4H2j5xaH1hXcbNtiAUyZfj52TBAUWtOnDmGlZk+GxBeyC3wnNaA1mL40OlFp71iIaSvBhVvf7BXI6U0Y9WiJwu1klT3wW5otqBW9442SnJH8rY3i0xfOzc3PYm9OQn5db1haw4hootXssoA6v9rUUyfXF0oRXi1XbUScUtxHuBuc4AWllvRraztgJvtD25VPtwHF+LH/m+b2T91YtHpb5paVPDtk+tWFrVxIbv2XnP5JHVw8KFhkfmwsWXj2M6nY6X34bg6tRxJrWbGw9FG1iyEAe/17e6UHUjjvnQ6Adp0TPfBofQ10Kg6DEfrdBv2ZvEgdJgBl+H1YyPN7AN7Zr9+tUjW16/2mL5+XUJIWnP8fh3KefKTn+h/4U0y/6YdMv+jtgfXxDbYmhXA5PEGsBJIdlsX+upc5SpXRwCBw9zziXINQLBz9ZxFfOFn4qkip/aoVvWlLcu4/P16cxOylT1eQScHFX/96qahiVAV4Cl9Ozk/p8dzgux4AO2miIXipnbDyJh9KPHtKX5CclmqA1TjDCNjKgLnEh5IXVMFRwycVqeoZJtuAkgNdnM03D9Ko5Sk4BCLnE9EN1WiEP56xGJI/iAJoZU1GNp5w77++qFD/qSFUL/2+Zf1yua+sTkvbBt91fvPc/W8gDxil/AsdK0+rli3qtDC/bh68gFXQ0o7Mdu1RuapoW7Swdj06ZNWVH1e0GNkTHb2kVma8YSs/IjigBNvvlfAth03bCIOHfRXZSuEl4Nne6Ea7+7Qfp3kpAM3qf6KSB0yTzdmACj10Ezh7q5bvuy/ek3H60ZtXNCCucY7GLxooYJHbgWKCbxm7S89J4DaMw3CDbzbY/2eWMIelLAH+/XO2W+OVQFnDhhHBqoOeLljPpzKKj0mLNSnT9rUgcwc8OXVoCeB+SUyXdXpi1lCafjDt0lAaHuYwjGIcau1+vqw0deDx/VROm95XNRJzAr0rshZMwsLQf3EDY3q0KWAOXjlopy6bUn8jmzDvtyeebIYFTe4RX8uG4GhZnTdXXw8Lew/5j38jAXNvz4V5TcoGZ1vc06xqNjvROlBycCSP6ODC/nSOcFgOGxuVqxUABTkqSlp0vd4/8dzZkcI+U74FGWEFH9dZbwgzuSUSRlPuX4JVZRo+Ej1/T3fh1mi4VzySikuhAt8rupul1udRolL6Kzc7nWA8hh1XzPtM2hzs3YsOLjO7bo0xtdwAyKUTpLVNGq2UQt5lTTwN26Yg0Xz/ZCF2JTGXJUSfHeYgA8M1TYCpdZThU/tMvsEopIrurD+fFPMaCd3iLyGZbbuaXnBj2yzx0hf4A1wVG+q05f1B5CNtV5ALNlCo05lvvrzaWcYUrDfnNzbDfr9v6Y7WVf8RUTgITc39ZnA0zXvAM85w5qf/mF1rqkrecc+2TYP9sJjJ+VrTDS0PESYSnRCObe1G3hzM2FSsE0FCCqCDKPRRZ+cB8ZML69efnKye5WXkmByD9QP5b7TaXWm2dRbV24RSUoKw1FjdIPwGH/NedzxgRwwjFHm8MHswhcTfhn9FWpNc4mucE36JHCyRQgS96Ny9ReksUI4cqNe63GrIHox2JONO1qE9H1KH9bS+aZmHpUIbQZEAPWjRLTN9yOUZfpo31f00R6O0NTmpp1FzIYDCYhj2jcjLiK5wiyU5NmeXgNpA6ShTdB89xAtNXWz+FrjCttlxhHbGjdOMHUn/6AHEOfCltGFTQoRoyPop5tnzgK6fR028iD0dNvu0TtG8enVexqPtwQ/DfhLODPgiNy+1OY230M9+rKX7y2S83n5gT45uVNtVlkJmfI9PKBZQCIB3yUkk3Cjv3KsXoH25lpdVkjhvif1j55eELu1CHaCnwh7Dnc498iFGlRQpETXAjQ8MuakyyvbteCc6kQ4+jN7K0JZVd3TFUJZ6Gm5LB1iIMmfd6lSJuSubUZvrac5pG7D2ssjV4a3R73ASsmuE1rE3ic91RvjwaAV8futaK0kFSD//oItpeKUGCVx+i++rRRWQBY6N4TEHukHDwO0sKU3gyXDSPnZoJbPx5qW0FZALq3FVbYEOnYXdQDH5nyIl53HytbG8+wToVs6O9Kgomuq64pyCMfwnzL606qfo35H/NmohDmD9mec3gfNxDkTBBbOI/QC6vgOLUalT3RGfTq0V8Oopn3qdl20+nSmq3Og51Pld+qTJDEafE84z+aNd6FGIl2J6DFnbr/B0HObU6RBVYmAUIxDUnwoEn7tCeiB7HJMXt3Au14R03QewUjVnvJQ1haUg26YhgK0hAWtNf7q0iH2jVwc5PXnN/8b3e6eoeE2PD/eRqsnzp4gPGstnaHaUOk6D58wzcGiInc8nlbcwbKAKlXkCNLL3V2aWqS47++lYNl9rs0az6aJ91k6kaZu97GeXvUy/zOvAXM2VrNmlmrpvaQeXN1DvvmE/iWPyxWej96d0bsiDXahDFi0jzaj50rBZMalP1L85Az+HSnX+GgXJ5IONKtE3TqKUJxSgFlTQoqwDORj6MAM0JehUEgO/OaQD3F8+W4GL9kJ/YkFpomWxIIiY4K9OhSYDxdK32PrgFBKY/Gs6uUUg0CHdGcSBds/RJmSenem75B+pmpS45gqDuzr1ymvIoen4kQC5x+xzpQmF7wP5fIPw/pU2WCXKJt/xAI6xiaLtcPU33iAV+xyAflcmYay6HZvb2l6CwLMaVBaOwieEXPnjd5dauMo8Tr8Ank0EUOr8vBLtcuzaPVTvVWU0WH5sT4+qz/Qy1q+9abvp70undFj1uK4dPKpw3QCG1YAN2godAuY4BI0m91MF+4be4A91wt+URbGeIwHxeiJ8HbJ/uOzzbvnM+jQZKTUhL1/kX/6DdVjbc2biE2IkWfckDCp40gmRAqVAuv+npCGn1aT0mmr1OouZsfuVrPKB/12cM9BVaPDj6SAwUCTDnNNDh2WbZ2xZ6FZrmQySStwXDhclnPdSkMt8Uj5WmV/aSRy01iwcT0/j9jBVAd6NcMUbsbUbuFn9ov3nztf6D2ItKb13X6k/8qKhqa3ag9LEQQCHlPpAksMxM6/j3fOpaahocROaqw61OvHGRwcFeyn14o7At+xJMruCJU/wUUgTvROgUf1eYfkALKgtGl6mb8fwh1HJ5M5Ak4/Q6RUKeYfEnLbDBKjtxlJtPOO+jmdfIQwna7c284O/KuTOwyhOMtnEiWE2icnuwvXGvYnF9MPBRmodkRSzLcpMvD2eXYtZFEVFOQFG53g3vI+ppEKcpz6SEjO7SbvxHu8b4kzhjf+4L5cJ/RSMRK7FAB0dvNxmk0I6u3e7PFHCh296Bd7N+dCmrUZEJZdLUZ5o+2L30djSbfVkXKnB7tPerXqhA045Yu0uHWX6GlxhyXqgEMoM1KK2oUDJ+x9r34R+UUPedDsP/jidzleXYr6bgpdavU/ma+x9vZK0Tj8a9WcL7yR9ebVTFnx9MwCXnJ/eBndBeQkG9H91029tSlmyc/ODbrUhPk7knN1LyZalYY6BXICIfF5ik8jeBDhO5GSCPFc4fk2WTtPZuIs7h/WZRPmxiU+foDXx5H48eL8w+LfiquryUcRpccleWwtGo463DaO8hVtuyKPkqkgJeUHcT3X3yXJbRn639KW+B//49VcvWOJuFHx16/u6VGXzpDQSKCYk9zeHzNBG94Z4gHecexgXP6MIYTOCeORhnxpw7/jpnLgl5pKvUT3RspCsfjlzYvSmtgRlIWsru+FQo4NCYmaHxI5GoqV/WkSwRJ4wdV4jDitZA2UWUBdnPSX4W04+l97pF4oFznC1qlo4IPcaJuGO15bs5oN529/vvr3fW+fzbq9d1Co7barGHvE5LDKbGoUuXpY9xPLpEqJupYRRq6g+OtXNvVQN6r/JzW2qo9cSX3R2BaZWvtj/jMSKMEbb0kJ5B9v8F9dxN3V/mKACaOGGDvDdbbbsVdwOOqHkZ1QErFl/WIDHv6Dbo0a1MFbjFvgPygmXUqxZmNh1BDGY1ME7ERCyIfS3pzWvsHlJoHgNIz83FGkiDgzF0Yg79+DqIv5Uqjs094pN9Qb5RWaLqmZJfNIvmFbZhCkNLdlAjTyTpiNh4AD7vjhkFPBAWkAt/IgiYZHddSi52G1qii/+uBI1Fp6YRusxMjUTEi6tKCLtiFGBOFN89RZ68yJNtqEzM5p5Cw5yLJHep7+sdLztF16Hv0x0vPJ+HmliopBWZqpzkuPr/ov0GzoSyHU1eGxxHtUc3DIbCiuyv4DPyyYX2dozEi2F+BbTuuTuszWfAOz3AVg1r3VdbvSKeaIOkiISJqJbBHdb+0vJuOhbLeECKOsb14iD1tgjjdU3FkY5gc6SYwEwegv+EJAO4NBey9OO49ImoJrR+xftuM+iQX65IlERHYuxyWzvaobbiThMy/xPIaPEs+buszjlIukviKpp0gZFukIYaOyQx0qihmXuPm+1fdtNs8WtaHAjGmkeifEmYQg3o9C5RubixKai8pBjAknlK5FqQ3AqaF5szTft2ljXjfS0kl74s6CCvVgBeNyc3HkWYK75B0kcnR/FXcahCzwYjtGMXc4nbH+qVmJnA/6gocjDEcmwlGuRfI669k8S6YFVPs6HprOwPDkoMH7qJqI+rH4abI5TufTyPj3IlQnbkzwIl16DwjDFAGvaDfDLNn87nhLcG7Idc60q56LPFZqJVRdVxClzNMrdp7h8Oc6PzwSchbPuqro0eECUm7t7GfrQ4F9NhruTT9FSnVrROuXEens/yWMrunB4GI82qU8Gh9hwQg+q6j2KJ3AMeEIKjxbQVaQut40yYgKxH31xR6D6EvIjSleEk2snNylZZ0pz6hxjvKd39TKjEOE0hT4VVnvFnmwVklJ47FLb1u/tbr/qgrCZpHgFelyrii3a5czXjFWlNmjMqGesgf1KdN1MZVlmlpWhzROakycVZ1zLJjquFjw6mZBNRGR/s4Y7MK/kjnwGIhhOk7d3tXdMJUDGVGnFzmFClAoguw63hLdqX50/CrCrtgSnGU8w2y5F289yMDUtKW2xQuzLY649OEiR/qP1n7JrsC+nQ/0JqAAsMlC4fIRb+fDnUVulWYo3h0D+L86VH5wUCsUUnSlKmalElDR+1PZ5epSfsKPEZ1QdCub1WMR6F8Cd4pup/1gFUHO0eA1qAh2jmodVV674qvi/eLoMDWDI+852zBwHw0OqOuiaxG7S6rlcCc11bSf/MduC+ps1vUb52AqbbSvmtgo9CrKAB1V1TcmkoiKrywpNDFbNSypgpBiBV2QomxHjOo05g59x5L+o0Qgd7LsjdM6qMYQOAi/WL1Dy/6HNta+aWLtcB2s3VFEnhYWFJ//FVFCD6vdeIbnXi/3QYe6cxanIU4nnNE8i1uWlzhh4RXODj4QttMJjfsa8xDMJ3hyvcLUnpPFtz5MtoGdI5TQ33AqR4gpCGPJQcSGNeFomBHUjCCU1AvNNUSawUefnDV4/PgvtAY47XSh29U3jeYmLXWW0uXceVo9VXv101JbP+3WlUY7/VEuk+3opfbI9OzOkvziZo7ZM1tntFvOpJl7pNQfCUbf5Xl+1JgqnPJRtZCPFfameub84BrXaJQlGE9z8z7mjq989BECwlCv1lfz3qoZoxQ47e19w1sh8Eh0l3N0vlbCGqpF1GbbKgm4pQlgNCTk6uqZ46MKITtojJl51LTb2pbrnl9IUQr+7jpMzcaOhIi9rnDu0gubm964T7l79B99DMPlK1Ny4rLfHCTz7FQ58+lBCRxGDVC+USxr6m+0waYaC+42EFQehmzmWs/73YTZVD55hp6VMucaATw5eSmkD4ZCdmmQEwKhlgQwj1PUzGfLp7FUP4RGFa0amYF4OtrdyMLbejr2/oqZ+zGZLzTjzlihXsGf4nHZV5vSRUCufqrWM7dEUFGjF9MJh2AZvb/4VOSRJpSPQO5krUGHO2bCw9we83c410sZ/NYp8cZBnXPecojU8NHetOIGVzLVjWnm+xs0cUUol/ZGM9kuidwbWq277Le/JbG8Eb1oyxvxcmobvuYC0x4TXTaebm4Km6H7+rV9xe608OZC9L8TAvj77MzPyj5bF8dlPV3CsfoRJ7RX8hbc2RCCoqh2Z2tROwN/YLu1+/rVcX05N64vs0pnvaat5fBoViuuBzR+sbRbMnxJ09Wm256iOamKOG035ahYGqXKrKFL7fcs5HnUObGN8xt6eCR1t5+Vpd9HhWzRqe+0MCDIa2UK4LoQ6PcM3FVAp3lA3SGe2LyQBMQpu0e5l73qih7VwogsU/cyYYRQB87dOh8MtIkpbJMD4wfOnSitTfgjutQJnauRutVFGrchLa6c0vmmAB7qlIDMBIez2dst2bSiUG0Glfd7ZUZR652CoeGKO4wW2qBrjJa3Y8hb3CzG8gng8RltU3t80Dmm+4vbier1US6b9HDkG3SnT+hr78MlVZRy+v4hOuGsuwhrKkSuLpCv0/p5sNRVyirpF+2fmuMntiSsKbj2Q+kd06C0RiTdOEe9yAtuaQyuy57LPF6XE460+UISt04a1dY+QazCf29fmyAYCZovFdqjzJz5XKxgV5qJzH01OM/jA65LuwLR9Rh/ymEYDR8gf5f+/fq1nhvtVYV3y8Klt2JaJmAA1tl2TgKu+etXeGFpcUCCLNRtiu06y+3SXQ5p7Hm9oXOktKnMQtlyMw5dR3cr30ASvIG00Pgcj7ONVVQKk0Y06tciLI7Fd0kf/xMj8V32GP8TUEUoJadhT4mgcHaZqNPifCDCNYDmDPVmKdRwLaD5kgbhsZvGgfZGZdfeLIMcKsihcM5ie9XSShTUfKAiPGpYI8ZxGfW6lhfpZKxcRRdXsoReLas0djsZpYZxZahYzK06nsyKRGi7a37RjBCAGx/8HNU83RyuNtjGlVHuy1WdfXUpxSFkMgm1iGOt3oumBEcfh4N9OqAi9sUKVXsV3yWYT+k1SVH6+H3CnpWSHC406NwyzYCfwEI3R2ycU9lCRZu/dxZ99dD0Nncn2nibGWoNC5sXP87s1mIhRh03hctKO1GntdMKT5dnN2Pu6dOrc+ZwW58Rlgk29SFck19GzpDqQ+zNFQ2WTqIZg5/p5Uuei9HwlWhVQLNs3H+mK21yU8smN/PY5KZsk5uVHETmt8ltbgJLbwG8nW+6gfDgaQGZBCZiQ8CQxMVh3zQtZzvz0HDDFguo64fxEXN10MBsbJggybJiuoi3Spe0WxByr0ALr82j1eC9bB99Tn1/QsDI6+liDfPGRod99aDbvnzajAN3L3hhMiaeSzaE5tBkDozD7S5Zw2puzFZzxHYk5TKEXzzvCOXJXqzE48LC49yDxwXjcV7icd6Cx0kvY6s8xfQc+2aG0AH8+WhdlHfLMtTiw8XcQfTci+jHQiauX0J/pT5T8V5m8UCyiJGgGaBx/OU3pYuQKEdNo778LbPcrowG8jcIQUdCx6YRtxF8OparpawldUdUCJZOspiknQoglGOWM+ZhZd4YF3J8X45Z5r1VnurGXHrMjLPnIlDwLcGbxbcCWZjGVvi6K3sDWATwKKblhma6zavDvtkAon0ClVAZf8vCPr6EcL7n8QZSnNMhd797KggNVE60qqplxumgY2nHyYXZarO0F7u9Xa603zo2UBjls6GUn5XL7TnUpK8VpxlncgzP4BEvxmnkTZ9347TL5oMeAD4ylVPftkzD9vhrV06fhHrltgA+yNSmpk3pn32ZdW81UVJjEBIfg5B45tKrGdpwJe0EAEo9MYGiJnvs+iiCo+SSia8CBWkfiNjJKpIdLfyU8O4fkv/+WxjZTsy1Hp8yI1zQaZZSjzsiuyYEDDNKh8Lb2ARNcj2g6x/ewmZO4STHC2AM6b9SQ6U4kgjatfD05kpd8EHneOS18ycPxTYVy+ksOU4gg/swM+/5/MTse7mHoskWca6qmOnNdzAwNFI81kzIrrEkpQBZNNdpqwur6O6WfuyHnXTt0XUD99SsKqTit0xjvSBdAZXPJgh0CmK9eBrmBxdGJqzq66TBCY1jpMOEhMLEWbxJYxRfmvUMrP2vjnCiuOyFwJJtpWbqQLLSWLEXLyDbKbU6EztxcBbKzE4YqoTBs92/Jt2McKUf7StPVgOyYkuP83gwOlCs3bB/MDiMM5XyUKUM+o/LlEc65WGZ8jim4vtHCVL3ytR9rkWdkoOQGE9Vbn/f5A80H6kKDsvkg/7wYVXMzKjSDbO2tc/toPHSqqMPoMTXr3v4a5L4p8eF6Tuj10pd0T96PqeIy3PLEAZ49mm2srKUNJWv8ruIbqwHaSqnIs0OMfN3h0rKV1NPXcy4VcEJVNQCUtx78+bVmxE91d5c5cF4slBRCipPG9r6Gght+4M0B3IW4xlFR37wTKncEFQL7V+NAnxHKO+H2DIfwSjhlLoGO6Ph5AM6iaiHLAEmHJFp2ablI7faO9bOU5vN9Z7rhxucGUeY9R2d0UTCwR6jL0cDLO0ZaomDB3UvxsqvoetkWXsNZA+s7yedUD46jG2ngsjlqJSdMLQ9MFNJ68v+Dfl03Q103U102PDd3C6AvbM754aUdsP13rxMYMsoUK5wDt4EBNL1IamYt/iB5ZnQzdcXXk+hBzFl+SpLLTahL5N1wyFmh4mxlsm63VDoqtPFGDJy44SPRqx+GzXO+IHrPMv1hkwHjWHgFcqYj97fisXrYpwjrG2m3VeCPJQen52P3tJQ0ADVtbI72aXQgiX2Dq121ogkims3XdHNOJG+rRPehrW5cfIbC9iBv9pyOCCKcN0K/wgfyGmxG+r7N5pDMkt4kmVEKrPPJWDHOZiQbJxVvls1Nexu92+ITpdcmfCKlIzUZ/RoOhsXCzsOsinRDKBOOWhL12zFFBZnketrVMuxhC/OMupHNbVQy09eI6MeMBlpS+MyE44/9jb91+XBkUXY4rU4k85U86KCIQNJ2kiZ5BmH3vYtrrFCrbg47EPbXYXeM9pFMqt+ptApUBUolqr3/ST/3Hub9LsHz/b+mvbOOfM/J2OK+f2eQBFEyPGlnm5nLYgLlLFBpbUrZPMYRJKJRQyDHj+fpOt32KRawKrywh8z5TNq+Ulv+Soxn7USzIR/WgXHRqZO+0uRC82vhnJbbwXzNO7dBmi0PbdszJ/tHaG7pVC/N8NU3czR/si5TrCHfvpA7DbX7M8uQ3ZZsQbgUzzuu1fBJNRc6LuC1Lvxry55lCvu3UqhV1DsJUpfQu5bybjaDk9fvn1enW3zWEQRPqHVEf3IGvlXRTGNntI/+ifnZ58zkoF3iO2Gb8T3YUS7MdhWgaqjHy5SaGosKB+pc4IJIwPplEf+9gcqE0YvSfeQ0tObeYCA34uI5J/n4wkcvweQJ7J7sM5PL1+E0U/E8SZTGLaC2uumVQN0L84KYoGs7pRpjSbKHLdPnupCF8JTedjS3xc/vXgblnGqIxFaZMS3LqAPDtPwgJyMH9pumo1eVJ8JTvwWc3CqRHWhVE59x7F93HvOv/KQjxax+GUMx5ZjY7R3Byals4hr+PPuHnwGvF5UVZyZEBuEMsBtE1iGJwN6KPv7cJRM4/nh7csfS5l7Lf1BjP65odCkPlgm9HbrcsFyvx/qgB5od6z7M7mZZQWG2SU+Qwavr27Oz4t8G+6R6fPVOKCjkxb6M8U6totgDBt5lxdGa9aqXCGTPEfkhM5CCjxnqlTmFtULocAtIh73IL8GJxsl9PF0cp1wJAyzQpiHxLJM7caiJ7oJylrvaceka3jEnioujsTI1gMLo1r3UHuwGXBTZTfpEMmVmmZCZbjHUFEFMHdXNqN10AgakUuwEm57jPMUxF7I85sLFfly1mmUUxhkZJBc5DUdo8l5dXfuvb5KFkQ/r//2y4unNaNWvh01z3XjDVPA+tIoFDbBpIBcHsM/gRiN9cnFqls9Nvgwjmc9eiX7/QJMGW04jb01j/TUg0A9klAmx3bFJAYmLD8EpkGHNMlpnvfqNSLTV8XJ1QX1vVbHiaojjR+HjYW33Nm+fMb65MtmxAgNsHA+GUH3Mow8+ujxt9QZ+RXtfVMcefXtm1PXBMxRY6ntDuHmi9NX3H67S4SGs0sdtcEkjQLR7QgRWzu6timrjFBJNfb2JDSqvpWIqrr2/6i6tJDPqWopjxNqR64V/4w648FaVZQ72wQVfzZWt3J57dQ3OIvpeOjcpUJdEW/GYSgvnQqH31jhxiCU506Nu2dGB8Xd+P5ztsHM0vbWrCK7BW3WfhCvrqWlt5vDO5XVQWl1abrD3bNllL1/r8NoSpNS0HEnAws+wP1ahNF1mUkrRW9O24h3v/3jk58o77LMe/H02bYpTBnnZQZ1QrD2ZIE0oqzKz5No0EyOQBQ81ysh5IbnvCysyKDDkA9PU2LJ4XnbQI7l16rNzbVBzZzyuXH3YuAtX88urklpJNBBQYR86GC2uSLFlz2K1ZOQXgbfRvESsX9UT8Qkv2tWCVMxmkg3bXeWl19n72o1nYHv3TqcT5NxQLJ/vJq9JXX4nGGCGQfR0cWDi7lSlt/q1ryHcCT0Ag9fqOlIyAEG8mK+/7jfB4ppVCwRBmkBMoOCc6Csrcqo2yOHvSmhRddJ14xoVwRzNVwBE3MfxLGYG7ty8iUG5jOUVY2nxRxTX9VGmERHD9fm5Do1zTkjWHCOkI9XUKjlkoXjTufSpZ7+Iqup6CAMyxn7/ioZXxIWwmcNLROmlwjiQV9equBcg9ByRh2OOIt+SXe7mhhKmtX3MrcF708NopHfbNMN3z7l03ooH0y/fn1wzV+7nh3NJ7GGO+cvL9yqM6IhlTC7bTmUvemL8q4XKGAhp+uVZax8w85wcxhwTrk63MNNMhTVygyTCBsUENYALxAEsTd8vPf44OHw8X4J+uTqY/J57lazXrcQjouYObIxqu232LvEG2qNT1ByvGgnwQ38UUYuupiQBFCaSUOBh68lzC4ROpKKjPKmXzhD8MuNrSfKKUmBpoeFeayY0mMFNVK8m571HGJPU6MSX8xPmIEl+yCoJI12di7AyeNFbudjWtA/8+ziemewQ93YnqNjCX2AoWl0WOg67Z69Kd4XVH1WvE5mNClgbyltjtstlJvUEK/XK2Z8cRJc+Zu4t97flR3EOQ38/NA7j2YyzmkyvADvzql19ROXvzjG+e+7dgeMGf5zurXmp0UZiMxIb0bq+VFulVd3rhi4RLZL13SAhFvSTy1ssXOzmzR5uH6DTts2t+WvUIu9cUrZNYWhOsJwnbJMcIuYHF28sR9hOqL5LqrOAREVXUAzmJkv/X4Fl2A+OYW/LDueV1RcF6RvGh9taswx0lsKuk7IpPAqT+uS1cTlncLEJM0hRhXsP0nrvNAtc+B6PHK9ITXV3V1XDo/YX0rZFrtoMj4W1pjfAfdYBeLDGUbPTGQcdRnM9eESXBMrkiWkNcj6mtCRQYSDtKBEEsbcjBNzRVPP+HHeFUor+cPwSEvzAnNQHe5QoujagsAIgsDIuWyynfkAt9FTErkWOWJ7MA2WwVylBB8pLknw6lSEsu+HI2qrtvgiQNxoBXofYVK3aIqTBm3ypCwWT42HnUj1/+nTn07ZTk0zD8cEo38GRZJ9IN6IoV7TTYCOiIyhTeDJkk+ay+Dt2x/BEpoC9NndKLPFqNbe95+f/nDymmOvVvwgtc7ZQfo5AEAwVxDNu8PTz/TiTBJiqnCVmO3peNlFwdkJYRVX3b2/+t84q4MH+vx3K0EqvhzU5le6WKH3JFrRIWd/JMNHVj1IQjcMcIIifWUk5mYgRfT72+7/A1V7L5+c0DabEZzSAk3YUyKNutwGxOTWazsW5m1SjNTPXO1Cte7vk6zgnYJanM1SWyQMy7BIYOizHlJezH+ZHnMe4cvNVIzKjxzy8zBaOZIm5ae8IOFMIZ1B10MpYwaqWMr2b8Ve/Hrx/AIrZkeELlet2a6ix14MRL3vL1T+u5Y2/Lz7GaNuWXoZizWPPVUTJsONnVU9odiLpw1+nij0hA8a1K4+vd311+l0uQthwemLp0pSNz+ejxyKicN0w1kFQuHmXL5RVeeg3lPaLN5ZfVeSMKhLn7x8HZgO0feblyf2N+dvBk4yvzFQ9W90gh5Hl3TT31xnU0/W4eEg1IuCXD6/78D4IqpTMG9FFLUxQOwMDYZPGaL5eAC7mVODDiUcAeWQ9eJ1ifDcN+LvIU9f0rEw8vWsrOVi/mKqd00no+uC/i3ZowyVdgG06OBvNC66eeC66av9nLPJJwu9Gl4SHagX7LK/FrduCl9LlBMlytZxFGc9LeUgsu/0pkDzWY8lHpzP11+u3M3xL1CujtkAikxmrmUR+qW2PoUULbN1Xyf4XPAX9J8J5g37OrYw/T/kt9+Dmpege187+M4Rx/zq0ZmFAY0rwLhKVoomHTv8P+LGTYsV5f5DMULuoqMC/UVv715kezPBe0Ajt8KKRpa78NcleyODapeJLkxlN4mVHN8kV0a2o/dFMRe+fXOwZEdf84YEVEnBaT6ISIruf3SFd3cypmFmwi+KL9DTpUcCvUk8V/rSS+VWX2b8Mrmkx4knM1J099ZK7U5/P8BgjW88Rh4frI1P/UNTrnpBNSksVgtl9e2rDWhRBtGD4mq04ZtnvQ7lTJetVLOMSs0kb0m6Q/qaU9dKo3u5tCEmOS69K2t0MdFL9Q4qkamCErKldEsTFjqrbeLJkN6CDrI7BNALIb1d99PB21ubUabPdTV/twnQOfs9gc83hmFdI07iSnogczbb9JTZQ5HytqhD2lO5BuAjzMRgYFFl4q2p0urbpdm0Iblq4ywH6sF9J8Q3O0yQA9vG01oQ28thkBohZIr9WwXOFaORQCJ+9PHrOB1lSpdIUVW66/Oln83TPGknCc20pQXjkRO0hwQWwtIVjBxFmQ7lku3Uuqov1csrHK6hpDLagYuJfyuSWSfsIq0j+vSPynlJb+ofKHkQmqhr20MLSMEosc2S/B9IgjZfBvCS750OSJTt7pfRua/ZUEu5gzShXV1b0cc6BiDPaT1greabd2Vz2l9dOmrPPgBaGc+Kxi0B+ZTnJsipRjwv8maRqU/nof2XtydGeEXUYaIB/C/xt5GOzPu8IKVV8JgFj5J1OIPpVZEQlfyYKJdromE6vs7U9CXr4Lehbrzr051FGUkPFcqC1Du5Q1WvUvqzdcaf3OQXcEvT8ZXZdWFfsgFmG/ReuGL5hkZL1buMbNRR0GjmcRI1yz+l08VW+fV2GC34a08wUDhmyO5Z91573XC5dP+6NQTEDNvbbcve8EUUylVxKj1VrRWXUu92x6WE/32qnVLe54E3izLHS5/lw5V9V/t8ZTkOg/fgy4qdLSgnIzdpbp5dlzvAqodaqr0KtwZbYr7ABylczXhWk6sHjbKele1QTQp0h8dhj1oLk8uhaq7IVGE77lpzrmCpYqZKP8rqN9nlE0Y8/yc+keN99kk2xQkeb5WubK5TGjkc4Wt/ZFvLBnLqvgcHHX0Oha6jatyAUvd1m6f17oPFZP+3DPUVHtGtkTIGuSPVKHAvfL8qzpNsBbrDFhcPA0Xs39YmEm9jW5irNfRfYHxXjPMib90c5ZXxR+4THmJ/JzaQZqsssw6al4oONWxYe44MgsMRgosHnFbzlZfQDReaeQgOHJPK+Nr48ci451s5r+2DVQodZVc6jwJaqVl9I3ybugR2zT3Ra57+qZi1GpnugjhaGWfrLR64tOIaxOUwWCXt+oJOtZspnHYU+dYRT1ep9OFuR41r/OXxB+TqeJTSHPC53nmAe6CMfVNVR1Tplip11YsA1iDPFrCrZRN5aCRXgIlrFveo/HDHSlpSwqLmhj4Sohr1vx0h9RjTsrFvVeUJo6UY6F41lkGyYX9JPpRalnd+TAimTr8F4OvXR8gp66q5sPz6tb8sO8Q92IsKLhwQ4O7Ml4sx6EgrzlRyqxSaT5U/zXQ1w9iI3373noZRbX/E/m0U1XdGvGzyIg9mx20r7dtjvo20ZBLDyL+bVE1vnn9vnLH6EMK6lL2Ga+il80bL0kqD6G5frsPdtxsVdnZcvFFazLu72d/j9haWdZm8ba5AMeeayd4hjpvqJyPHmVAb+RbP4O8ALqzwUnejBot3NjoB+GCa98Q6SL/r9OgB9chqnhuhxmpHUJCV7hXSAk3KIDVZ0N4wGeYMCybG9xZbt3RUt0Pq4ci+xK+efTtSnszKaQRu3gNN4kzZ0LZYAco+xIGOPTfcrkAiAVtuFmK6zq4dMeXXeHAga9bqELtVogphTIqrpH4oW8QaDdABbsEgWM1KymcjNvssscADWkdIiL+NJeYBa9cnlLasjSSULH78MzSNtI+SJe0raj+Il4HAbuMF/J/9ZzE+tvSrfhlvvycs+c8iUKshnuNDzTZir40syOd+sEGo5BLd2FWHanKiFmuvbmIcuDNQYo4PkysadcxJuiizumAVDeNul+uEWuGK+b7VGlgl5rL21YY1shMSDM54YPwbUAByFdi06hp+lXUBKmW5/p7MWAtL2J7FHOi6Z3gsbMyj0iSHYmSjxL/MVRzVoiNKMRELsdBFBQ/6V/l0Ubk8Aqc2Nmt3klbuhwFL0txCWWT8LfZlERV/ApofLmYqMpcCih/1kTRFivUfQ3Cbs4EbQEoVSDUO8L9qVuCpqrXUYKCLgSdYDnmgIdmKsw6LHEspFNmi0rui6cy7XTWF43ggL+MMr+LkL+ayp/p4SpONkDYqGiad+4MDf9ZuCO1IQROBXfSJyKRaJfUMa7qyW/rywnmn6jA2aaSzSICh03FMsuUO7ILkHaI77go9eM22jUiCmV1GvJsh7nMCg+2XF1MrKJy+j3U7Jd+R4HmkK+zWzSUQ1gpYgobGaldsHTUyragyohgL+eUz7dmRoOOFpioT8hqPMSMx3M4vzi8WQuY0gDL3NuRd2qgVH06tH2ilrVpY689KYNuMKuG2NjjVxDPlcIrqLSW6ojND7Dv1tCB8RYBHt4VFUBWXJBin8ZDPqq37sjD0JvIcajbnU1HrtE6CHOcrVfnfrCIVyxF+ufthfmsRQyauvm509NMNIDTBCijzWISy8UpjEbtdaap89smmulUq99k7xLI3pthSPtBqVfxS8poZ6pCBYhJHYEXDkXPWuA5xGjsybRPRZ+6pQO6QZRIlSwXwAvG8YMKtFFk6ghXGM/++CqOkG7vwTNhQYgXO+gpbtA814FNBvZzMtCKltxB40eBJpeLIKTrBU4J7VvWxFSQwhsMVrElhSUCufJ4qEs1Ofpnc4lJGWiDGKS5rQtDIlVpBBQM/G82m+UaXezrF3miE3NBV8LdvEejBn+40bz9P0XMG5jQkeQvw+WBBc0LrCruVc1pL5Q4kPtp7/JMStAOYE/i7xAFWRG7up+/ogEjVsRDoPSFkYkWBtDaPw/yxmAL3byvZXGhd0z07YLvLHIHFtw7RTAoRwzlj/7C2+zK2+HDrLUNwp6G/SLmNWssxe4bLuNk8cx4Jc2nSyTEmzw0OriQ4pzY4zRGzl77qvT7EOO9kcnXFcoqSnDcr74etz9zsdMt0lqaNLtoJV+dtxa5XnLU3aV9EW4Gsu9xe/5HyfmO84HQ8nnC8M584T6vt/SmbYl/l1F7p/RJ/682F4ZfyVjkcsn8fXCtb1pgddkSppYs+BDvkZ4KNcJ35sQH4L3AGL5MxIaM+TnVDeA6rgjq57oX8fem1LKhlKZDErUXbV9ytA56LGPKOKpsth5TM43sOB12RG9D7sRljEox8n8yqqNY4y+2RVEx2gajWR22XYFC2tmcRRIGFXToV+Lj9aURebPNibHhk5vK3lct2q9vEIXP01IS98vogVjXqhhyWWberdMOaMVz9aKbU4l3kCd4jTE0PmvK6bmZUi3i1sZSfmlHhpoIp9dA1F/uJVIMciiLFuHDWiSHZnY4aXepuKMeyq6iOIqVcNIAYvUG0nxZXF7Rqn4l9gzO44YgGMf9A3Cn/YMOpJyf/KuTeSDzTt/f9kRqqsF3HeXFqOZv47fsu/YP3XXLvfQcuN4/yO3G5zgGT2GivFJxdYM0myMyTZxYxwOwK2bq+75Ke/X3mDcNjFQ40h+NRjz7e2B8NZF7gKbuJojIvkU+6PkfbSrDgBjFtrPP9F7PuadFZfQBL//ZjzaSB/MKFR1uHychYz5RYc0SJmnU/0nbHbFw87326vppPkmlvMjsn4+Mdul7t7fQf7SQMTRRlhxwSFTsJ6dd+vp7ckAZCWRVqbSImJX8cWUbH9QZzcoaC1lx7Z/rX2DsPd3xzcbjj1IpGrA1gfwZYwNjyTwT/EN++GbN7bkagStU5orm1ju+0TOKObx2F3PgBPvz/D1poD9359ZTZIxic3Hndm96/jtqbefKTszjN2vDvMvzx1+yiDerobq1oiB94fJ1vOFNbqyYubCxmIIr+A9Fwy5Gd+I/x5sFoFBx8vL2+Nkbp/fRroIjUrmFz0FRVxOl/hH+8ijOc/ysxB0+yyyOHU7iTBhYu5jYDd5+hvVcTtGJwInKC6nlnOK0rUoJx9UECZyvqCS62Ha4im0A4y3nSYJdecoSl1pmuqZzJlbt6W+n9lBXJYGTJvLk6aMP93fIxq4bQRqHFzJqmc0vVFX958+N9h+Auf0IB/5cMwtEda/bbrzQGe6NWhbGnF+dEyO6E5k+oj1DozxIUqWkbpnfUNvyEiEzuOiJl7YXcHa5axyVD8QYrFtGdxwC1E3cMSPkvGoPRgflD9hBlrd/vwfDRUjyZnSv3//MaijTZdGI89MupywPvSu9hQ2qBaRj5p8o2mmqB+FKqYmlNMVCOhtpWI4cDbc1xTHSMOx8ECzKKbLx5Ky22snJfGGaT6dNg41g7Zm8IOfDVXwGhihaglce2pWjGo/D395idWI2aADLjgs5Y/AVdgEpsueJWJCQK85lfttpYnDZEGZYXpuqI071574iqbxkZeAs0htHMGal6cc9z8c3Xh6ZeS5tspRazAVZHd9Dx2R36dHy4EutR0CT0jbN9/c2ibvNl66zNS59k0Sv4HYl0ZmT0kaPTDzRY5U0AQPA49qT0/G2gg5TIDD24XF2MC7LbCt7SwRM9BZc5oxp+vrko5lkRQcKKmlq8cdfH0Jxb449znzWGsjiByo0qwMY9KQnUBseVAfxI6A4KmW0OtaxN0gsjvNaJkBL3ysQnV9dkkBjA/lDlPCpzyqTBQZn20+Rfi89IJFr8YXCk+oCXS9sn0MD1CUTAXh8gaTOD7UeFxPiMBS6/9rx6D8ODWT7vimCmfnXmIVwRKlDytpMRKJXF23JX/CWA4pFoNPCKRCsfESstmGrXXMOYJ7PMYT1O8ucyS6bz4COxBcF7zMOI5H8EE0wM4NypPmcL3IM92j7Sa2bnLjPrl/lxoNSTKdG4VJH5k/xNde6gYIVO3UfBCuWWKFgFbQLbcgIHS9WmSjBALVPAsgGNvoYJhJWZAyuHj0EmI9AV4GcOI3kWHJWSo+X3Ie77X01liZWPHIWldRSRhkYR6cWYXDMktBt9ukhPskoNacPWQ2IdJOgfkRrSmOkT0Uw5o4+yxqjQ2kpTuE/oH457PxXG60D1Mj6NnfRSHNyn/xut/GdAaz0aDSCGH/MDM1zPat+lOiXUTu3p8xO9o7oASIFL3gcxZeDPlPKNl4Yod/WkgCXL9KQwD5aeFKtJeRWVxq2KSs5SAvCPV1ryt9CiwLTxR2gwzbrTporSbe5qJxWOdpLer7cgtfsytzgVrILnCR/Jaz/hG3pbvt4jofZ6XzO1NUVIlBAueYsvu+mQKr/OpqmyTV0TxbW6pgL16GyWx7IomR/7tHHoIDgxR0OqpHrHPjt2q+pd6VT07JM1zlpOuSSOwpTJR2AD/Tu7pEb60lUMa5ZxVaz8kP7a+3Lo1m4F57CPG0lRoMJb/M9ePWxnDWAYnsYq+juhPZmzXbeSdnSGNNB6bSfa/DC316sVyGvvYKBdWwd74USpU+Y04xCr5W+DMinR9D4va6w/lvjJHRPepDoyWFPKraHMFNKCNGWts8NXuNQKswGpbBOQOX7zAmhONA+kOlMAo35YrnoTfZo0S3xaKCvagFW7DFxkol32D5FkGBLNbQhRUStkh/3SaZVxX81uulVZWJCe0KI9WXQynpnCNx3oQKB+w6c8PCsNuW1TMeKxE+oTL49k2Q/j2MrfHrZWykvKg3P80hNJbOJmq9qW9Vypn8g/fTqxYrvzNY/TXs9UUBK6pZTJb6/meufYSfp6gTJl6o+n9H6RUyrhu47xW9adVDVXaXTZ/WeRlRGXjQq8c+W1ewoa1arcBHrx+iYljKM2rFJCWllVL14nFzOdRR13LL840TOaSgsK9c8H9vZ3MhwNJKPn9MDVOvqir6VsyBLV1iTptY2nelyKmmuGYv6xWsXcNeUi7hw4wN515VK+LLdsE1MitTv91Zb7NY39ALhsald0L8Y67Y4Psq5ilTvtofv5rrBfQjhCc2NMtOVvUeV61b2d3SAgx5vJRJXmHFgIrQkqm3D/2O8/rtJwGxmTZ9MeUfS0sxI69FX4Yj6/KWYcyReZeNvxVMVg3hr0zl5ZhYZTSosZ5f1GsqBLF6lrpZqEygT6saFcQ2W3F2UI8S+3MinjiLMqsUKOnAP6pSTbyM9KRlTEBJC9Q5pFjBEs+Sx2E0GAy1jdmdUPuAPHzstuoAesmBn0hm/Pzq6E7o8WQoVckeVMmXvfGXjKvLxZkE9B90HmWHDqtnpLol0lRoJdIVcpYddbHenFFNMFvRepPiNw+5iFsPNjESRjWFmOt7lGEUbrdmhzswGmcf0EHqtTx4lgO2hIEtrUjacmA52rHMoJGlQJUYXRAOeW9v5JT9odKoCUngi96+XBKytQqIuXpasz+809+PHlKea3so2tT1HfpjDH/dEAQem3U5k4ro7BMHY90TFQ9Vyjk9c3pA/jMh3X5tTJa3fk2mxdcZz3azz9lsZzPRMdbSf0zRq4DWdimbWiiILBlsFlvDGjnQsJNO9aFwlKbOQcl07pzDBZW3PT6Y5fcZOFaeZIyz1nEMxf6yQ6bzldsPvsXYRcEXpK/6MalymjUwKWcOdxXD8pSyk4EAcjI7BkuS4vMAVFzZWKTbOX6stC4dYKmtjsujmbekRBWDGX5lo55sPUuk+T5WnQPHTqKVw30r5+3eisMS7Nl609NHTzlzHVRvfCIrenO0A94PxzzxjC27wlsIQ9Me1avLmjxUs/A6scC5Cpn0hjmLoEWTEJzTIXSHZLhVHi1/otd3+udH0PDmTiHO/N2cSp2nxVtqcqlfuVGIN1MzNLN/OpUuTstN8cnPfDJi6kNlm/lfXpZvN9KZSLHfr/JJiqRnamXIe98YNL6vY0uQAtShZBPinm2ocBeaA4h6lbMv7sUIpeoOotQKwxOXCHkBYB4SB5PEgoQKcIrWug3g603FCRPvlphECI1zStHDrz1Ui8mp0nJuQ7JfyiUoJfxhBUno74QWpHxWqk4VLS22bajyM+NNRRcYImbtA7Av6JgOncVW39jT7+Rgq87A+2oYCN3q4Wrjgk2TbQS2cNSYpzTczqvLEm2F1B8SGwaMFhorcmnVpzEgEptTh6/cwmV/SVUpXlDkdsAXoAUhujo6hLePRUp5FS3ZHwGXVpqjsD1ZWZn0Qfi38r5nhPmwj2E9tGybMakW40p3OBX0LSV4FQSXobbmG2LFok9BtLOqHdej0a0MvUnJ76VCDlzwKkyZq3QKOUe1RtRc4plZWEOKx+Eg3lnm44XW0iKgEee1NHubSov1NzeN+h8T3HpmG+kZlRMXRY/irH9IcNqaw3DH067vZKwOTELuycfjYJTBQJhNlTY/u4eHR/Etleq0MrNyzpMvs5kd42/bKe5ua3KCO45t+LXFVK5DexdYPsDQvq0vAS2qh55VU6dZgNumZQV4QlD1cXXrxOsIBCa3aj8Q/JFfuVoA/2eIR+vJ0l4zmJOnrvqYz13OfLxcUCRLT2qkIyU62w1JsOhiI8rp/DvrrCEaHuKhhzpDwlHYSns8kU8BhbwyjSqQuDrSkJe7kQX70pPLtUL+uYzcm0GFf6kE5LRtmLnRaizyvU2hJ19423sGqyNy2uSQ9Wevqh+N8t7seKKmdFksNPeZDru7zWuhRbXU/FZglVhMtQelWjB33bocN6Cn7M7Lbr6TmkHBPl8pPdu+uxYmnurKLdP6KHnouxQ3bblFbt+4pbYH01VmfY6K0zbNmipegQn11poxyrJUovFlpUwJuvhQkIwA280iLPjjBILiz/cQ9SFb0pdciCvwH0aZ3KZRZ7EDKC/DMzDYVRpiIbZhYhUj7eAYs3D9o2aW+iiGpc68OQcrAZnsy/vxgTR6ofrzJCeUexp14M5CKlDiwI1QolaSZ3dloellaSum383/fP/vbip+Dk2Zu3L56/OHny9plKBdN0mB13UEslsMu6w4ehbNbx7Kennhok1YDROlX0ZRZik6aWg+gZu4gWYTiijMUkYXKOmWeS70y9rdB4XB55zlFX2cVod2G/EQ66/J/Bxk5qn3wEVuTh6A61Lq/KXiQ+Qv5Mkr4Ozd51VOG5T41tVRJ1nH7fRM93/wh67pLsFlo6+C8k2TxorXPWOonWynyTG2DM4boE2VRfI8rpvfh5R+bn5+u3JFX9p0xbNr7/jFg3c3ci/qzOTu7fV1tq8F/T2fni/r11BRYNLPuTUOH+/dUClMbEbqGMs3N+UW5PNODNldklV2S2uK1+b2P/juglp4hKrrJv+TsYYUdHDX3LUVBtre9IbTBK6WA5n0FIvc0CkY8fSO7ZdJug52zUj/SgRn1h9tsV7b+rhERbeiaZtqhX83SizGvyweC37GYv0EHEjyBM5tesoPPD27evT8nnt65hh2oTd6t3X9V3cnVBh2FLfRt3qvDg6Nk1CayCKt7mt3TvIa17TvIVEgHTvH1LTY+UPiuCp1xPffXs3FzRzybP2xDnguvVaO7yvS243+Ac7s382mcQc8HEnzYZYc0eIn945OaBF+vogrVSUFyFHYvbiubOFBv8YKD0lADm7Wk2rkx/WoEma8DMF2sAZQYmRM+qy0Hmme8//y5wvOQqwJ1Y9zIwaoDvqufX8LY5Kuea0I9jo1OAZl8PhuhMp3Z3kC0rLJvNEkrYSleNjeB4n8uLbPZ5utihv5PcEef3xNIV0S6Pwy81nak08itMZdG6PD1H1CrFc1Dl7O89krVkE4zU7mQLiN8p35LpeZ7QCuSYnnPUaL9t9AL2baw99VF1iXJ/3HujXuWVzPRb6pdUb7NGaAyOmhZSfnFm20wNpa5Yp99RHWmNiS7txWShXj14usM/bLr5DTllQZ0R0o9ZCSZ5N3Z1oPiNWCU/ffaGehpGiXo2WkEE6SFpOQXEu9EK+kcvR8uJ321UqL7QTlz4RUJ4VbI1OBJbtu3dYiFmRM1GAY0hP0zxzpuOWaKXK1Y8OotbYdgCcmMcf8EFcSRIq406BM4N/SUapbkeGqfme+B1tscBE6FcE0OFsITbr8Flip9pwh3U4AqwKhWn4gI/rAGDsGlGxAV8VAOEC3/FZxjIcUmZ8ZYNcfRJAkWvtKYoSihfyHEYsWL/+Hh98ot6a0R31BnHtJLnRW96edGz8t5OXhekRGoF9upAcPMV/z8Ld86vIcCR95ScjG293YdyXCr97odt9GQvdB6326D+ROrbUA6wDtu6IKjeja9fV9NuKti6cgnlWW3IoNChBDp6mPnIT8dXd9t9BFo6fwzT2skZZ/v66Z8/az3rBKzURswn2Q1SegShM+fff36bnCulRaG4eREq+ryI+9HiMDNc7KLbDRHE992CtBVzYoBDrcuGlGoOjNTxzk3PUeo+bVvD9up8+V/x7+wDppT6eRuxL92LqzkW7U7vENsDaGJZ68kKTI3IS44PloYWVr+uL/gu8+tgEZP/oA7pPJayodMDj3pVPeVBnJFJeNPvi+hmXUEixWYzznOlHVoPldzxDeX+jm94oWas4rh0qdZc+sbLUk39laq5WhassASWRuE1SK5IpOGs/sajIydwYeoJXOgo4i5vd7cE9rd797UxE7N6YbSYYJaVLi4heEyCeTFVB0cekPQIwcAcPaWMhZPgYOasq/Tx4uoqSAvTaeWWm1WIA17dq8+9Lcs4GvwDGl215ixcW7rkjnH1Fvo0kKprw6V+e7Re7clPW66TEo+ahaPWKzd2pbc/kIUY++ilNg90cDZ1g40OuCdzUGaGzeckpnPMNzMNY8Oo0vrpT7SvkMttILKmScXq/mdhBLXozrcqV4eRty1GRtOaR7M+a9Gs3xiO+mHXC79EdX5AhaJ6AUcFXvPSs+r65NeJb5QNLb32MPJipMcvjh/OlcatXCTInKzJlIjEnrJXGqYlnAQZ3eEaq0B0jS4L0VqwZFuljDieqmDyc8/0hb6wa+wu1hn362IMeqBCB0s3i3WPGjvG0VH0EoD1p1Bm8RqjlQkHH3PRIIzaR0Is21pjKe2zeO2+rGOpxS77uUOtNCWM8m8lK021Tmtvu3HS2u33ZF5bVHOdYoVcRSPLqqg4tbSsto0v9UGNhOWBc0dF5r67I03RrfqgH1LBiC9Rewu7W9/oIHXZ7N7ThamQenbUqxqQ8b9qkrBc1Cjeoa+M90rLgdR9ZksPhd1qeqo3szUPqobuNWtbpAHpx9FlO7zbZeRdsV2JCq5FCFbuZx2q49utnQo61vMoeVeU7EysiA+S/IduPDyMM2QvO2NjPEb8ZQgw63SMV50SBJ83OuIhLa69MFwgLaErKj9co56N5N1gaUXIX4oF8TCaK0mOkmK4HKoyx/9Mv+GWrDTcoh8MALMMS2DizBS0rmxDSWZoaXLKU8C5+qYhZafEl8T4p0fSr+sOlKb4s9SwCkQIvpZTdUUsPIg4bsNhWT+nU822ZMw/UZas3CfZsQVhqMGxYpMBz14QsyDHK2kiZoO26odJzrbcSahEXtvb7ctSc2pxStVNn4xzX/jH33DRuliwi4s5m7b7xzm0F8sPYabi2yfC8vLhb2tXDuHwY9Xi7OrYJw/itchQi7a5/zBeq0ZpK5eHUVNSV7voGa3mX+FtIJ+cexwUmKylzgn+qryZnFNf2M4iK06SaZJe0Ia6KLA5G/mm2mV57EtKQygNFqWUfYFUY4hporvQdzajKXlaTAk1qZbP4kza/fe9/PnyHd8Gxsee+pv0lo6yxzgVfrGmM3Gt8aucnr/PVmSTNL4DNAKHdDL1zL0gaX/ae0LokAE51udDpfj/2CTK42M8pAvGkjWkw4i5WBjU/UG94CBdYN9CrlsmVs08CXeqeKOsmb34lRiE1LKRqvvW9LeOvFoBq7+EOzLxV9OOxlZN3v7JJJR5b1EWJKrbcb7jd2c1iN6UPHt3EgRJxeotadxZwOTbF3D1NKeetbx/G0+yRgPfsgAbrSuQ3gk70C2n4mZ3lQZ9L8nMkvJvXk7OsZYyDY0viIooR9rNymO4WdH+bz5y7v9SLk2l6dTLCRlWTgico5TVu/VKiWDRDXb030gIvseL92t2R9PMxShyqq6EIH+x1x+TWeGW+/7Fq1M3xfLmFGluxeRNZi3OWd3FcJ0nmFTL9b/r+DRKXfejL5NPF9c314EpOBeyqmXF0VPG66dK3k4WyZUChTvUj2VtrQ2qAgEj5Tc1ylWgVUZbt828Yxz0IdHxbYCEP8K9QYK+BlPd2XLsdtgxvUJxfDfyTkbv/buWMdz96lBWcIbQ1vklfhEC51pyt84xWiZ3GxKEsTghby7ytxO6K3Rm9PY//FB86ihvPEnPnIHKFrVX2+pWqE72m7kUApyEZdq5DJYaS1c7JDCjKT0S4JkwdPRIU2iped5nTGgEvOxrot7rbZW104K6JL+jvC5K0d1QTYgosc9l/Xh2l4aZ3Td71Gk8V1lu+/OyA9w+z88qtxI5u4uQgSV7MvXqZ1c+SigSlf19Vvpf8wY4dcZu/MA6iYhpKoQOlqh9JLAnVTptTQ+qIxuIN+69uuKDDa7gNmfJbBZRv5fAU4A2ho/G5lRVOp3lF6Q3HCN1XJXVPQpGgcrCZRLONcNb01//xI4GQ2XVsmH5puM14I/bNE6ZGFruH/xuLHg8TdfFwEWTxz4nKMUkuFHmhHIr8Vim9qNI61SxYHx3UCk7iCfkgUFNnnbOhBVOqijjy7EFugGddDMJSydGq/HrrPJXZGsYOTdwz5aGIOeuFC09K8cUpStJ1nKITrY0PLFFzpbVA+LZqKgEDxhetDFU7xpVn3mq0/OtV1WuWI/U3e+e+jR/aOrzcaCoxv72VaMYgpupOtdnRPuETHs6zSR1N0TA7oM781B46tCSHKcOnVbW4VbRfPw200Co2nbYpfZhJ/elBx/pcTyTqS3I8sG4wfNcedAyuckX0/4oK7ty64g87O3iEAfDkt49ZMrHcygZtGsw7NUiphyU6gxWB9aJ8tKwAet27tFZLN7and29b2eNFonRZQyInuaT68CsCiJMaf9hHUtMIAy8aepv1FtQbnNmuCfHnQev4resPfpHjkrJ7kG/f9+lM5u4w3tsHt43ZJIzmgVv4XuO5+Deo9Gko200frP5apfuSqs91pZpdsAiEX6c4A0rM+PiN41JdeDgKCXM6IZEAdmmpPd+Nrk+0W59O4yEneH+fqi0l3k3lAoXHrqWhf7OuVTEza3eRtK4o22KNOrZoYGUi0oiv51mNmSLpqRZZn9ZHwCkW3FfJrE7wqYn9xzBGA4To9iZd7vGbXJiu0LOw2hvn10h7z06xN/9h0cx9ePxQ/U16A/p8zjrdkdK4eJ2d0h6iI76RQ6tCGbThEz902fpTXjHLTPPREaYpRRtET6H+FItZ2q3QqHkS0NyO+rL8phQFvq0zkMseKda/+bMlari29q+v5kSytq5PMoki2B8feAc/VE7jEepbOeFELuIz5zKBsLVYFh+SKbu9hu2rsby1yQD19DlNoyOUZD+rtSQNkWc/dO4KaLV+1/FrYgvEJ24QT5UWJDnRBGqeOvZGtw6rjvOKZKoW6RraNl+9S1J6mouPztTV6Bg50joqBlk7jr5xt6mf3pvVxJ9fU1XSpONFukIUHdCXjQMlsIT0WivdSmkOANSN3l3PMY4eI1x/YpgREBWroa6rMcgkzBqLRbZDppu27G3pkPXBym+w8WQY7gxiiW2UQ1xCCXRx/tFCZjWADMXsEl++4dEL5U/E1MHT6goa1myPbFa9gbt4xAxoo07jq+wu51Y3S7c8bmAuQtYkr52AgELHU1aoCXgHTLHiFP/PKmP2DyDcnbff8uwcKK1guX01N0qrWRVC5LXpK5eURgvYHPHapFarSdzcGzeemjj6jLQ99Yds5zomi4fC3lnQt624Vo6wkNaAxe4v0+ursxccIX3WvHmNP+hq842R/WFny9feVZeYOYCr1DUAY6+4CRmBW5eRc6Pb2zkCMqFZyNdCht2Tgwc5XA4ICRczEknix7iqMCX2zNPFhiZmW7Qn4mB/l5wxU6PGPoZnrzGxYICKcM5KQyWR4KWK3jxOnhNS1sgcs+wv7/HqU/eVMm3/hpfvNZ1UZEXr3/fE/JA/ThoKwBeK/7SVw1MPspAOd4QcjASsIcvv4cj8QY326uL6wv63NXwQu4xYFv11JMf8pnRJiScGkj6pkZNYJXR0CS8TOaX/HU6y+xcfDuZr8niVHGfVNtGlUQy1Kr6EsZJYhi3DUqi+IFQSKIGhIZt5AWCct+evH5+lZzPX41Hu9XH+/ej3VtXacZGSZyPbtzKvWh5mA+nNGOtVoKhgDTkJegSI2kHoiE86g8HvAA67cXrH5SfgjmnutXptDPZ6LrZ1hZNaoXxRKas781E8otpbXqkfsN+pN6wbVLjA3deWZ2s0ke9iJYTANeUrVZLb/VE+57R7l8HP6p1jWZB8seqzTgWuq5iSrPLS/spbZ1qmdxDb4N7FC5bHVJQjTeSW+eFmBjSDGy+jux9cSSW1tA/U5fi5SA9/oVJazyMU4mEnGcEv15A3m72lpHgZVKwUZ4G4/xOH08ufG8hScPwKItIRmDQo3E8YNEdTjLMY1LmBSIMYpgBd0UwVaRejMrfOA3crqqwlMeCOypG6scV0S2EfSgQAc95fo/cV6d7vr8b/0j9JQ/xc1bGyBmROJ7qReG+w6Pvd8RB5019Y51H9ZaOrHpUb6ULy4mBnw6ssfkF9hOjiBGfsLtcPBa35DgmUy0wEHv5s8xMypxf5IBkOkI0workJp5IKNd4WudBOQ/rd4pikNi7kV+h0SNXDH4nJF0fN3nQNmpu+HGzcbQ2sHJz01esefreW0XE3/VVkTMYmdcfTZjcZexA4E4er+RvoTXgsIKo7CyEGmOsuFsDHBgQwkpPEUJp/Yjcys++0yiPkvDfdIZAzrU087CfLNCMmwdzhe6GIbrBDh4LRSgHqISvLlpP4CW4N12T1BoCxLVcI1mstXO4XbNz+nLNvdPpVwN6SjQ/40BIm9892n88jOgk4J979DN0N5q1xWTg2WQuwqyLx8Th3gnxgTURsKb9DsP4Qh9/Z5PzVajiQofR3bEkIizZuCua1LEkuiuWRKwQ0694Af9FKgR7sLk57nYRF7msTnTHLuUel5Q7ujP+Df7b8e/2NvUESVmtJeOgnk9VhvtaKspoSE5V8BtuAc321QtwKgpwrJZHMjUOfFpEALRSLCa1RQ2dcLXE4GZ2Ragx740nMx4v4X9LoXhelM8pntbkPhmvhLbyzymtpgXBtZTGK+0jyRBWt2ypBS5cKioJo1Ujt+5/nplj9ST4BEdHl9QUrminD2/Wx+moL5fdFNIzx1e1j5n7jXtZNdPZsgxA7276+WGxmI52duYkrb1O5r38evG+R56ddj6mxTWZk2YX1zuDHfp3myF2hjswDzE0EdfNO5t/lpfGI8fgsaSzqDTY6qb3NpUlfG6uJWIt990wGstWwok5FI42PPhHQJDv+aUMLUgf3i5BN8c3nQ6j7PGoxzhV743wjHmXKhq19GQp4u/aPcH7f2meFH7xTESBiah7u8vZsR1cViq5nqxMhpBxjxs9/HSwmMFYCpcl7yG7cCw4vIOC1WUuUzoEvWt8u4q2RH31gr56AXxX/PagTJBP3NkJ0FTVillAk8vcwhz4vTaNC1GucHK/G2vm8Z6UdDvL9+Hm5t2vuYnrF2XtjX4sAp6xIldcDXt2unvztsCn+X67Ucp8uJpA11MKf3alByGg39ddyzeRLsbV1b1ah7fL8c55hMRDYQ1xSp2RfNm0guPOvRqGq8XKWysPkEpkKXDKNYhB8On6ajwfpbGonW6UPp8kUz7g5jtE0fZ2+o92Ej4xYUSki9IOW34wws/CzoD/9j7Nc3FkncJ3bXVnNrkqdpLxZPz5enIz/9/iEG+abR756jSl7s8GZN2NrXvxAUhvoMbRyk7xofT/MMvBrAusUI+ckrkoRftboxR9tNDFb/SlspG7zlP+eEzwViXkNu7Wx43r3sg1eu8fIs6boyS2Lp37UpGx0dahXhbGknug151R43CnxATPnN2/H4fWYnMtd8b4P4SeOThnLe19+3R4P/K1oQ5tC89chPVfYJgK/T/EaCzCt5OjPxsxGvTrG7nXu2PPrZ97tH2c+AGWqtMsZ1kdf9E0lcw0Nhz5OuN2bkBNKVnz9nN/QxKWWC43JjlYZkzi9O0+FiV3vq9xl1cE+juwvLb6uul32FqSqFLxJ+ASLuCgAnzyZink8AjaP8sgdgFx4EKsc5WBbL7xLrextdZsYhYvpjyPKMvoYKcuRwbHpEO8mnIg/uDNDb1nim9CDiWjpwSuyx7fFsZ398u9GeTsD8eVVzeLFA9+9OKgDDdJIauOJS/GBuINsTMk+VhnYUs5vru63zD6Kb+T/OEzYKmqNYZuaa3Vd4RSYPvxojFfu1yhm7inalpn3vit5742ThauJIvE2RRW+to08tE37QKtXBjsaPPIPwwTWJvzD0aE9wm9cFPU8YB8lWDv1lHBfWlbZym5xI+T83VsvGrHLndVKf3X+6/NvvyjcqQ/zZJ86g6OIPfhubTjaJaa97E//1iplEKDVJKWp8UHBWLUl8oepyxnG9nIlUY87bY+jRf7USqdd1M06RCIstXag2IJCDpaAjXfViu4xBGI3eJFt60xvGY133MNOG+7cpobNkc+RcvMs/BD9rqql2nYtkwbe6OD/9IVKh/K//sWh232zMFvki0vjDKvAs8npbHeu9zysRgT1JjT7FC1RSiLemrRHYTy0q9xgCA10SW9r45jKACL7ngZZBhdEvLQWtKfvZjeEDtFXPa7Rz2ixKLySJpRkbi0sfRZalYmHvCkKTes7wF9W59D93P3LMT/jVQTRXj756K7q8zRjvC3reSsbi906EVtPXUIwbZ8QGllHOMfh0QbVM3e8PHe44OHw8f7R6ntIpu9ZznHr5BL2mR4g7IMfdhCmZdS9eUXu9bTpWEnw+26RhLLb3UNpQ/0pO1mp14b5TjqKywfxz6qV8TCXErAj74nV5NC5nVtIELQmspYso7KWN6iMpa06wF5ioQqOpIfhyEdeP2NHXe0lnJXa8nqLbVj9dOF0x6HL6NLuAlzHVqAajvOQ3LWoiE61PB9AQyUhSenvOCUQ91IPGAleRcST8tNFR/P7UOMROPCwT50lQ8Z80I5W6LblL+bnSnXgzNaEHzQzvWDIo99ZbhUtohLy2ZF/QvbqLsfdokwd520gSdt6EnbDeGHT9lhzxHLq6NOiFD1NrHOF8A1ppM7DdUx6V2vmjKYhO63R3nsWPxbAaWunyZebyXlNuDmQAdsEb3cl41dTyzpxqV8N5b5mU2wHbjV7kkQw1JmdEhpkzmHylnCLU/uOvGpGNJnJmbo3jWpQAdz8o0dXCy25sF4sgCS3ZBMT/gJIVuM1fW5NG5Znv3qEF7hV1tFcN4Y3VsyxoI6HIjGr8ghJwVIOxqZr+mMnyqyIiA9lLSYHW19myiNh/Dni9LKMS5KzylGlMksIhZ6gZWFceXEEJwFE672QQ52oZ/oFRb4pARu2pABpUdysKvAfTl7diGJHVsD2Oeidr6+hjZnY/Zp+cjWmKuLsTtV//tMxmrVibf/wOnyj6bokTcYptHegiUIB/m4sy4/HI/cS5X/yx3EJAzlrrmDGZ+Y0NUcO1BVjXBs6w+QWbu76vhHqU9TyHkVOUICSMPtPZXI765DLjfu0C0nkphFcAnhuGpW/7U9MnKVoJHOEsC1hlGjrhfvhIx6y3C6Ukh2lZ9XC5oclaQ66XblTCbVExCp0eUv9GjeepqZ6zYuWZ/c2zq42/ZycFrsK9TouC94Op/0TjfTJUeuun9nMEIdLJmC9gPedzWtTuK6dGIkQmJ99JZ3LpRsO9TeTU0lSHdcOPRKSMGuP47ewpsA5yGcHLFhY3A2xtqH7XwAyl4yLfGSEDKzDTha+hD67QI0rmoapUjRqN9Go0SlXz80/BoNwbNobFFQOjVbYloQEX+ybfErEVU1o0Y/jj5c5MTosOnB34qFrv/zi7wd+eBVQe367oYyNnDPjeb0u84xnUaAd/+1xBZYZBMxK+5ocl/iiirvTl9be9G+k1zPVobTcx1bGY6nTGXnKqv2HOS5eXXnSyr5Tw5JWRilTRFqpfY5ymnP6u/XJfM8SuTbT5rJUKzJaHCYVklgWUa4x/5lWCWqS5niYEa7BPymXj5Dkls+o/JvvOWzW1JZWkUwIO1qMQNtLeoX4/m9C6Sew2S4jF7eQ4bFBRsyLF7xu8qwXJPTds3se1jkpoT2UbKGHCazzVbDiOYAKS56sbcft6IqV8hmiTL4FLCm5yDiMfvaMM43IgeCsa80DFNfImQYD+Y6BmkAbHTT4ryNw5Y8jHS/3qzs15s1+vVmjX5ttHbsjdMxhGn2bxElgkpBMtsAGk1UkpRON8XLgXsi+OsB6vCh45PS8DqjyswiqrZ7hr7xI8uglagmkZl9Orkgy6U0S3d95sptONneaZ7sdQQ3DOkT3PBmv7fgxvg3cL2tmNSGo5VhhBhnlPZRQ1y8x/Q0fK8IgRhGUFj89eL5BdQE3fBFbp79rXVYkVZPKkOTnckpx5Ew/bQkYx8pNJM2Z6Te2/Tr61d3aLcbegqohPIvFn/ZHQkTvUPI3eHDg0cj44gZs3na59THtVQZnH7aeXKiXPa8SfKLia5uOBKvxjLQYeZUnZTy/r2QB5xDjWVlJkqjL270upcqdFj8ZUAlIJUUErWS6qSq7JTEqtQLiu6oHAf9+vpJ8Pr0X4Xc598vnj17FhBL1Bt8QptIGzLAQ/5wIHQHaL6z2edpa+O/Pnut2n77ry9eb7852VMtn5y8fL395NmpaloZ0lgOfGqrVSF8hX+xMQUb/T65yIO+Y42E6byZdzg+rSnxYvx+0jjE3EwcYVUTpc9XiaMIDzGRk99rQ9fyJAu/FNqU9sPwyBQL+PUPOk6UWvcDUjRdLAyXulgoq+WXMhMZ23W5wIGyb+YspBqzErYJlX3xO3n8tLwvsHvbBD5U9o2H25LldYbv324Wy5vHd4IHv0vkIu/5UHpzM+9RkPoJgq+xE9ZitXU10NOwKDoYRPuFynngOT0lv+JdNmBv3Wbv/F0943Le3YEynOTAB5vjdD6NAiGJm8wyHNFP8usLFaOIh+q77m0x9cKHuezBOGRLhFthKAsT7uAunkDKOLqWnbhrLpUQPuBBMtFLwJ4xGugdsDO8hbktC43cqYvc8JMRN8d8XDgG52Z0FEPCNCCkMCtMqTpR2YWPrLIC/AtdNncf0nQI7sdt7SQvCTpFU/Y+M/gv92WxsB5MZAaarh4LEHFeuRG9UrfwUkCG36LbRkzKHeG461eOhtiBpGOJV/bDeEj1KkyV66NAIbz6aA27ZgNnZTlhB+1O/vam+I+bYr5QcBxPspNPshvgTo9yZp+NXnZHqLl5ZybkbGRGwRdM7fjQtG43SExfR7hHvwHzejtbPp0xx9uUTcof3uJ/Gw20WHq9Se9I3dKzyGerirCR28nVxfl4BNJ+VL/1aNQOGref1NmqnkAMoGEIvoC/nmyXdAm5hM6lfjrnqbSibcLPHqAyN8lfkaH1GID5HUY2r1snOUJmZbCXBjo7VDKtc3odIhEP9+UWQ1EB91ANiKzeda3txSGKfLwVytqulJ4R7NrbgFl2zCH3+9knOCe17eW9EF8a949Wzti1/b/bCB1vALLqCRyjuXHPraVwwbxBdevBbx1r/2VjKWcukajOpQx3GFqc+SmENQzfydN+cDBPdREPFEd1EV0Yv3QZJSHrn3dnre62WP88s3inC+Wdr097jn74nm8u1MlyEd5CSpsNWa6eDfd7DHBAvw/07z36PdS/s+Fu+eth+euR/iUap9KQX1dWbAKiCpjpcppvTQhGpHJ1rgpvvYDrp9ccCt7gyNQd5JsJ7Hz57bepsSKCZs9IzIx1kZC//TYzVlOzi1FLsPjGNTVklVKBxMCkBn1xK5uNXej9hbZweM6nSVYsacm/L0JpUaJRuVzS2vlOlPWR2zVTD/ErVVnfaTAqMUTW6fuoRBiJs2hUYoo0WElJezppgy6cr4k5fP1hlsyLUYlLt8wmlP+0kRx7nzYxRe/JB3CVXnU4icseQsPw0UDuHWWh+tmXu4f88+Hj8uejIQPQP7SHduM4+fp1j/4N6avaHMMwogKUNFQA+w2A3bB8RM7/bBKQOydSHJeLaYfO4Fc0SNvhtB0gtkIop+3W0h5S2sNaWpkSxxuGBNR92P6QzHLEBfXHtRZGyAMsv6EtwVd7GEjApSBy7BQo1jH4B0Ider/j3xdTnUpt8S/EHdXzoGDKCKP89eHznJD66iWh1uyzSnpZEEV/kgGIzVsdQN2fMjxpIEIjbDLjCyNXJjZgQdLTl2+fn7z+hWUVZRDWRlTYIP0c/DIvZlXC958DDCLovH51Sra1ENqH0QuSfnIAVyfmKxqhsYCc1OO8Pn3z5GV0+plMPmaTMdnBByrhJKGDl38+e/qK/sOvvytQ/KP+e/UyIr/L8w/Rs2ev1Qf/4X9PVIldrp3//ZsqpX4/ffoG/20Po+/x+fz77acvXqrkXfp4OsSvvejH14BT/w75zy7/2fMN7jnFbnie4KIRCz02M9JTqpz+eR0BE6Kn9ON/0n+05NPZBXH2WGFapEj14e3pq9fRm8nHYPI+yAh8Hr1RpV+p3FN86P42OgEcep5ck4yFfBsPHg9GwhK/nExmxSbpA+VFFAyDpzcTK6it3Bg8Hi6BPp1cTYJpBT54vLsE+tmnxYwQ2y2wt6TAzzdJ7kLvr1H99YQEXbVWDpYP2Vvm4fKB+ws9ai108dCFJKHr05vkahswgV2GKCZhPH9UJW6l2a8vxnj3oO1vaSO6W9oXol6bR0SpiQejJRx06AyCrLi60oKXuK++cJTzl6NZ1O//RXv33YYQ4WY+eqRUjRp9ixMdd3oIl91ulF91uTxigZLo+t31lSMZ1Fz1nSa/F+xzD78M2I86/KUITAodVwiakqjpIXp7nmDnEXlKFsZLaorozgir1BPwH530LPpcHkxRbjKo4irVBCl1SbYlGTmdvF+gHzrjxVP2rWykra+vkgX6p4Wsz2nIan46X4Q5UAi/6HVFjLLeS/yQ5Kz25j3REXoTmSHR+pQbWkuc0vUvKYhpJJ5Cq36iGk74SX1TNk8C3cBHVaSnpOc5uMpBqQiopud/+4Uu7W4IrVspOBZdOczvKT2d0MzxOJFnDdUZUe6OCGKF/CZbKDGVoFyeBDPOvHWceW2cT+Ywbl8k58h6m5xL8YZDVaEPx2KkNKpPkvH3xfM3vxS5pUndHA5W2juSvxfjfDIbteODOzgzijE6c1XQJAXgA8WoMyYB4lP62VlSlS4CsB7+AQqHvBR04qt0NiLqCDyrbHwBwP+kN4yR+OUtverU1knYkXgdlsN2Axa35rFTcs7GOebmoBVMXVkQckUrZE0XavY8p3IJdigiSppHl/OOiyihVCfb51HtoHuX9TjjzMy2W4dODGUZ5Xw+UYbu82lR5NgulH5yRWmnSCDK8vKH/xSS2aGRwxxRU+Xvs1Vz6zBw7gR7APxzyXkB7QiyRcd8dov2aRTfJ+PL4MckZVqCL/UhN5YRFLOrfvJTj9OL/yxG5SrS+BOcF4vPOwMyJ91/eBBivr4XUoD5CVDrhCppMERYpPLjTKpbpcUSUjYPFR9nzlbOeCu/pmcpi8Lhk3u4fBmaTLO7En4YP8q7nLYNhFWpFu2Uhoibgap2/U0AqmeoX4PWIcCfS++ODRcNardkyV7ScdibQRe8M3i2+9cNhe6qa4Arl1GvY3028WCxK9PQ86rpqJE2jugvjgBqc7PBN2xuosy/zCfj5xCOMDP15HphAIUUH8qfnAuZQHXsv6iOfdFkmVhNgOrTRxzOrlM4jSnmyvesqzagskvzDo9Xz0YtQk6rMp7YKM1ci1fzdyvxT7Ir67N6iicR73MAtkAZnBvPp8mht0WjtJpw5NCtlpcjNRTW1jCCua2up8KGc5wtQS6WOq2Q/BPcBWwKRdB4UWotaUWFbH9nqj08qzosjenmZMKHoyO/84E4UU6BSDrmaPngRF5U9Tk+//4zkS6WiamZBfNZhR1FTBBhzS3t8IQeznpj9dCKn3YYPM6r2+R6UfM3krlYnx3fMJ4Sk9CIR+0Daj5uYb/UUBSz0Xw5lWXSmyK5usZ+rZK0dAGJcNNbpj8vSO6iFucHpemrkxGRK9pw9ixkEVpbwi0dDyJWVvL0KWr0Cc27EwqRIokC/9MRyP6t4EqeZFccb+XcTahowBqVga6o0L4Yg67gooDT9cKf4yEwbe37XiMbY363PSCnwHzkUdDJ64u54pseP34sn16c01sqmgcijvihsme+papiPgLm33o0BOI6PJM0s4quXv/ywfrvtu6bjL56DgZ893TxwPTFjXJSyjmZSXBAwtQpw8f/eriB3pcv5Oj6eSNRjwv7br1KrWn5/OwT1+mmWVVGtZl2KJmvYOO5y5297e2oRCBnUuJC6m/GhWMVdqZ3MVd/O04ePZq5CfE75/MsHNWyzzxUg1ZBr4sHncox+ifcHaRvU+gS6zc0X6sh0mFmLM1limlwEfd+WFUsw6rC2Vu1/jObAPM3Z5FD8wrh6H5JCDDuFV9n8aERY+eG8C5IuE0rRmamZR+luper09LAAWM90cxRYZOkipMwBq/TcynYcSeP62kELf4HOGoVIEz/HBAy5jHN+ulFrm/VyWKSEv7+azEjvnoyR3HKDMPIizyZqut/vJoraigeKDQbQ0e6BbynP48Ho6FSWm4ee1+/PtCvt/AGABii0Q9oQHXarTR+N8bUIlmWl7qgMtBRRWZx3wqkbHanoE4aROQ00PD5OwNAfaQxzVSckdgkGhswKCnr5p7c5AjarVq7jH2wu+HxZVeoibmY0/WcoJVAZobkQTADtBhddjuzruCvuWB/OQEacAvKxJCi7cE6kU2wbpXunSm8TAOP46p4FeDQXuDYPNEwxsdmyoXRsBUmNpyuQ21WLtJRQXil3RWpgreoWCIPirVbFs9o3pWMdMNtrK0dbiFdQx1Pmxvv7vbpN88NdnxpiLX9SZtiGVtkFcBli7X4ctbWW9UGQV42gr5ksfCvSuSYoz0C4UlM428n5+ckIOEeldTG2IdnJMOfjc7pdIqym9mcfqunyaLCkgXK1yYvpO55diRC23wa7n8/jMRI/zyJ2KYtMSNeLvWucSm0oSOXn6Vd5EUAuqPVNBA1ENaf5Ilu/3mpV4TQsfSU1F3/kWv85p2XLz7uvJnWZEhc3RvD9a2tfuNMklVb2zbjusIvdkDlyNW2Wn0KnzZP4Uwq59MPBiN6u29nBnCZ3PB3surf0t51eAaZlHa8J5+h5DIf3ujDTT93+8FrZ+M6QKPmkegt1jgm0akpoRypeOcD3asqZVhq4wCsPMeW9b5x6NX02IZSEUSzK9hLeHa8O3poaWSFXzxLQdw1UOU2dPk+rtu9tDT32Zdlq/buzLM295+XYXPIDh1wFJb8A1VCi8FaY/VXYLxEYXINW/YOYtL6OGURN4cgx83hy0vNd33/mfqDawRsxavqKnNxDhylTavz0kHD+EFzBsMvjhEiD4K1FJRAkYAu8qDyzSzCiE1abzmI1+XxjB5D6bXnYy9dTJIOHAr9dp3vd+h0G4kuSMfn+Rw7XlGPvxVjusteNfRdeDcxHquCY/igytU4aNyq6stQsX+wUKqcJE3Bqnm4s7DjY9mmZ1+/kvbPlFgymjoyp+1Ow0p+lLAB/tQEKEuPV1M+OmpqF9BcbszkpSxkIm+8t8lwtD1Yr/JTV3rBtc9aq11dIRvtN27MuVzRYzjKI8Wo1Q28aZxZVH37QWadT27Ldz/prA1pkxbIfqELdiA5VBt7HNC/eV+Cl7oio4crPAMd2eJd1VY6sTyteokBLAZmn3YR5e8wTm1uviGudVj0wx3d5A6a/zALdmCuoW4gSQtac49z3HKctsqHjCTEdYMAypbDyHt5OWNW6Q8ZOkIg5UoY7W+qK5yhCqWp+vBhTZDsbcDo/w3MxfdO+z3j/Z5V+z0LHXmx0sXYpMuYS5Ut1ThDLxnvGkSZam6eU00ya7u80IJgoG51SJNQR6j3aprwK1iC6tAb5hP+8DoMsBnovFCcRa4cHnWuNvH28Q2w4V5u5qDEB1mN7YlwlBceeUDWZHQ8FtNsI1F4RQXok88YXBvEtAkM0kpgIPQPYZl98hlSxB4bprDRVLU8Qrq3a9uPSBIn3fZyjYV+lzU4NOJ+xiy4AAXJmmKBcNy43W8A0i9sGCtzcBY3mJ4GpWdY7+KvknXolqCWikWhi7/ZIKY5QWPoriyrLNHssjFbk3pwgwsJqQinujCPdaTrWx/LIrqFTFrsSRDo4meYOBE9IcqzN0ClEVOWc0JdHS+N/ePPiavafRyGMgO/ZpHjNMT78s+nZMly+v226KZE2cJefkHahQk91GbMPSCVXRtUo6TNv9eXDwZUJ3RyTY7ftPr72eTjnL3FpvzTHIasRv2g73CfLoz1HKAbBYEDbrkCfbzq2yoUNHv6xd0iASxKYBnmsA9JhEzZkDfrzdWr1jF+N1x6HWvFrs6z6ykZAYlR2n2V/pOm+O1EkwirTEg/lf5RZ0fJRP+9M/v3cOfcepkUIVXQQY3cOVtcMSvyo2fGD4bpVYUFPD4rxjevfhrWsaOM2MFIkWlK7upz2UcQ0eNfUTDE2wrjg0mCqBWYksIlWmylurWVmza1xebayPctaMM4uWKR9EJ/hczRm88emzN+Kb8XV/PfBzgwqn2oRocwM9dVrsb8KZlVzJ+TX+UfJvNFh2Q+M7pflxLnD5Qoa4moIozs5md0IWfQlNYxv5hJX8s4Wr0ZOCW9jbBQ02ppMnVYvMnYzJBlz8h3rmxPn8J9ZYGprfP5DNCzS3jQ2TsIezjjKH9Brcf8TEv4Ca4Bx/V+XyrWIZp/vKDN2UHV0Ezrj9LedQ/N054j4pHNimJMyGFSn86Sj50QZV3dDvdK6siPqBRZUJDQxFpLruy0GOdk/T/v5LtTQKDHyaxIGhr6iwq4k7ZV09HMh8l9dn1D2oua+/jl7fNHgZlVIQXpD1OpIg+enJ68eGG0S/jLYTxQG4sWoZfkjqHRUtxZltsdhH/ZxeI8DvUiNrv6blkFZ7eebj3/RJ2iSh+ZSt/psXSeD/pBHDw7Pem+e/UyxCHPvrUXhZ3XR87f35K2b9ct8m/Egdndef/JO06kOyP09vJkxr18WPXy5E33x+fUNv1Ta4cCVRbfEx5cxh1/OtoZnlk7xoCRahpU2rhNJi/skiGOrZoyhgqbScqu2hiOCWzMQFcpmCVSTEyznD4bSiO7t25/qNLYKHtGltRAS/S37yBKADljnzK6ZAZ1EyiR/VuR0CR3kdYRffpH5bwkCvCBkgdh2Jsrn3jbwwqIS6NbnSX5P0xIZL4M4OXFmIibCxLNSbfrybwDT+rD9Iq45ua04QgTvcWnBbE0Wl+jCRRtWCsColwuiUNluNhv0CRjloffO2adtCZgpSXcdY8ZLIS+NPfQXeXK+j1CnA/iWlJPuRNwlpuXFu2+UZ7ToqxH59AkyeOyUxAhLG6m31+MAUIAM/rzZP6W6F3HVz8c//sG59aDkXkpJ/WZvmhdgDbkGqmmGbULVco5292X1JlpZ17MLwnpmeyDe2YZlU4mvaCrKnS7/FikbxbZU85TSRbddDLVWcLbkefZyQ2/eBJ7c9Kp1+3SNmnN06enbAXQYeb9TffoCxKAcXEVfiHZzJe23F52NVFa7xl4Wcz8bRuoavC2vb3ZIvO3hZyV7TAYt+FZADMr1z3ExeooS7rOfjs3oOF5F5zxvcLh1XTtvHgaWnNqTtnwS9V0Op3GgzJ/bmhYMc4mOf2C1KI1Ew/h1SjAXP3PNz8+I0fDbQUsYAgJEEW1aNRe5ljQkzGjOXRgmcWKswJPgg7Mv/5+rUJjVJ4etLyb5xvrmMT/cvrqp56SUlG2Xrqclo4xIDHUJeklqg7CZ0E7E7RMxGXqcce3Z6Q1PPA53J2OapE9hV28/9z5wlWMxJT9nAhJb7SjwW0YhibNboo7FLu4ebzhdiD+MtXWH6OkZ37eSkFqxMV7Oolzuk3HEKeRjdqbtyevi2Km2VEMxo+1xccmqNon4chbL5W7vFi4RXgCW+v3F9GthLJ11/p3o/KUiBk/YbCOsD6E/HLbXiMhz2RajGPrNeZmdkW4M9/c1D96l79fg/qT2AO+AWnLzSdXRQ+yQfFrkdIgAjQX6PYC5TrrTjsazn9gnbT9r39/KerUAdfnDbf7/GUC5PejdrLKTiSBj9bstM2FZOgn59RZSNEXhaErAj+E/Lkz3A0tZA/9LZc7YfFmskjUrFapM50URvXt/x9ke0cGC0vPkWtlwj4rlMzqx+J3QomWapr1z0lyST9W1H/KULpufxXLxs030vB2Gcap4yO2nzr9qLaxEtdOUBME7D6qdCt924XaJ+YvI77rgppyu8EEJ+mVucd3I2yT98QdabIm5/l05OuAAupRLhG+5QDEOyex6Fr9qX51xb/P/n0slo6xpCuKZedHBHune+jr16+c6Kv161eR2+70/GxDj1quKJpmXMV7EojfpcjXrxt3WFKmgK8wbx17PVtnN04ib0XUiJLwW4r7nUTawbpls1uhL1F+uaalSmDiMfqievZ2ogPNQCw8GdF7ipv894u8QPIt8EIQp01yqsZx6EwgmM62YTABs8ehz7VTJh52zhccZGWTCnETRtCVQw9vLXr9Hk/UbxI0S/JYH3d1hVCWzw3YMUkyR32rgvHkJfgfRTaLeKNe2sk2xf6LRG7OhZhXwr4Ov3h9+htzah43KVSCpNGd9eH97sw2B2H5Yu2vwHm31gvNukADRAg7GJRPb8TB9m0lDEvvmLqKO78DDm8XZsL/VKFjONr4L2hG6bFpPH7Krwf8hB2Zg2g8mbEyHD2uNS6WhJCQXs3oHtvx1yQHz/ZCLUKt3QGzqyKZmeKNusOWa2xbhz170pHStpX78vCQZux3NjnFi4jDkR23Opyt0E5LfXAeCskZxL69wSoxHbcBzqS2tm32BUom/gs9cZCPIKMnIdMPb1/+GAthSVtb62s4+/XX7ms16XmHV72UsMp9o2APAz99ivL+WfDXw6ogvtWxV7ANyjHwEkKbd/Wj3aNEGcrRjm929MWcuWajfNCVac2eTnAUEWURl6AK/1h72qE1Zxxv8YuQSAlnzpUR5za/Dj2d5OfkgJrkPWJLKWBsGdM81N8dUILQyrHiVEn5VfB3VWtQgXDoJ8X4xkI79FexdHUOKT+NmxmsMyv0GLh6/ViwRfoSW6HQ2q9bYUQe8I/rCJd2BeeLURMXrSXyNVBqtpxcwTqtbR7DKHOnMk4rZZHXN4uOWL6xCNc9rT/7ZO0Ub77H+qodre+CrpOxhmi+Cg36az0L7S99FmKxxq5ShnpgXRt+vyg+qmMe70aPZRLih1p6Qo+5MAno3K9P8dl8VPKR0iiFKD9SELujAYXOtMlmel+Bxy0LcTo1w0bdtl5g5Rx8Or363EiuyUofSsHsXqAhAwMK6amnYl6W3F63dijqRZtYK84G+pk28gmz3pOt6TzOH5a/DTsRtYq+NDSrvy8Fz5IcwPyrAelnOKmAm+Av57CaXMz5bpZy794En14srpOp/vZPkblNl9D6W0Nf4R6iTfR74DgWBR3CtTqErKFcLT8MoxYM2sCub1szpgaGq0cKPL/QAZMZP2xKG+o5ckT47TeA/gNXTov2Xa6JyoMbmhBFdGW+ct9VxvAP90uJqHG7iLaJp+0zFPnwdJlE18VUPyzyozYUXTGTUQuOxksxe4kQyovD95E2edG7XbQEbY78IURKRNUrPHdJL+Ev4LIDIVuXCFXhKGiZaH5Lek+sIHMbUHCsvnCUuKbcqEY/ZhMUznfCbrfAcccRWLklBqJWvbROL3yHzeYlNVGDOl7SxFCEo0pC04H+dq3KVNoDrn5Lmqq+tBJCpAyHjaT9QSNJZPvCk/jYHq89tuPOz6cQpPYgoO1L/QEVJ/7apWtn6forHNnQG+Lg8fSTcMqIwf4BpzklxSNKDKU5Z8Nb30ICTXC8eWidjwB2D/bCv5D/uehnhXqlloBFDKU4vU6srx/xxKm/zt556tw52LN0EcBMnDx5qtQQDnbL6/fXr64cktDXRNcwHA6hd/ylP3r37mB/f0CIcyb1r/7ZmRzU0ncP9qxffQd22IAdWr9c2F0HdtB/VP514fZqcI/Lvy7cPsP195G/RgmpoVH2QJXde9gHpP6F9Ic6fVCmc1uPdDqPjn8h/bFO3y3Td3kO+zpDTx1+ccZAZ+he4xdnDHXGQZlxwBm7OuNhmfGQM/Z0Bk+k+sUZ+zrjsdwwOY85R4/7kR43fnHGQ50xKDPUwG8jZyeU6k2sq+ygnRUTzaCZQXpLhd+IwyxMVHrD9UM9rNy99KPs0AW3nY24uE4wHReWrgGIitZMHEAhwaXY8N3z4jo593mb3tzcbbwP6+u0ZiD+r1SJ+Vk/d4Hkfg+VGFuirvVlEqUT88/puQhv3TlX7A6u402X8TWS1vHKs1doWRwvfbyyGm+8SRfF9MkViT5wLPpLhLe1YdxM/9sGgabvMASGDxsLAauf/7YxoPG7jQIlfAvx8UNRXK0cx7LnLH9fAbByHNz6soG4E69eeNWsp3Hz3bebRv4n4jSM7r4OKwHQzOamN9Pfh1IwAUpIL1IziX9OaL6/h+tB9aXk0hZrjDT97vvFxJDfUsblL5VhAPGkl8EFqPA8IPCk7nrDyOaDbXKZS3aYVP14QVpvpdp4sOOP127FoIcF/nT6WdH6F5U4E5pq7SHm9xEUOcmyYkp8ZO/i+lywTfxzVRfL/jpIDy3j/9VdyQgHrr+pJ/OJ7snJU3IRrTuCZKcjW1Fr4G4ndH25PtAOXt6HRvj1V7Ak/rRQrmnrUdj/hmd6YuzrkdhfXF/Db9+icIKlH+kHqUB1xQ1uu9F0i2a8E1qCT0izyrEMdejiNHYkJedGUgJAujuJMKQDbc65c3p00alGCdEKZjiQqWZDtp0IHFWTzEQMHoAjquObCB21y81NBjO44IcKLTsa34hLM+AniwAuVhe0fwprPwUKq65vKCOlldVWND1jcYTOxmt1tr90TPCyOycNtL/sD4Zrd9lYLmP/qH663Vo9OeiVC+Xv1JBcQ96jV/OJ0yvN+m2wrzxWnFtz8jrpiskLo/XG28lcqGY9jIskEuOfWsGJHBCasXasFIiEX+Sg5gwNbcJKKp/HkzFyrSSGuu7xUOLUfKsexZn5LDcEeusQF7OvDOQc4axUC3OmQtU3g6z7eH//h3s0c8e35I27vVnfupSCFVHxkxZUzwMnSt8iKHxjMMpiIvh6Rg0sOEurnAMijMzpi6rdh+QyJ7RKcAoXY5HHUyIdL5MpdG6rbjMeNB5slMHskIjuA9jgqK9H5gvSoT22zilZhgifxx3fEzo60Hw7R7s6ncS4/TCUVgrYw/sN1yLdTn1f9CzzQ9bmpvNJ3YdPAJ2Wkn8HhWy0j46rVR2R8dpwX7ItpFlbPlSOxan6G2g78xdPn22/CfSRB5tJK0opQh16GuoKMmur572dcA5JvnuCubIPtMFpDX/FqR0f9PtSJzyluJT5ZAY/kdUM1Hadbc3PHuOzY0NyfuBqThIikXMRjkqaVsuQl/EY5ywe6GAcIIbQwGN1a+J63d7QvTwesFltoiQA0aNnu4fJTgMqChtJf42HESEU4ZrTQbzeSVoJJxFmCgIrwywTz3gKlnUewAuv6OKY+GujDZpaNc89hEFEU+WY3bY4tdEYc4qe1uikXN7YbRY35yDZISqb458C/5g5HfeYs4sP/sp+kqk3sInd6di4sLMB98id5C92IhR9QloynCFXp/xKPztPk86QEJlYPom/g1BoiDc4QvqyL+065MFfl7RKjYbSbXRz06ltRXGUrqf99UAe+Hrdl+p/vd1QVEbVaZxH6WHeLVTkVT5zsFKdS5nKA5lZpM7KLF/A06qvWa0jSfjXRFqdz3bq+QCg/9lEp0ltKzcXY5haP1AmzABDR64Jy0ojZuP3hF0jZK6npTLuUGtx+CcWI26lTt/to8W4nHLudlR96R04ha9L9hpCHvRJDduBLImukwpdhn/OVSfLelgzUzsa7gjWOYRVsHrij1HAvWDGbhfoOY+u2tyFNAyjNe8JyXEy2pXNccN1cu8DWbjb6+UD0+876bH2rIM+MoE/IfH+sabQuT2lXkicYj5gpPKpUrolZn6NHRPw0f/p07Px7xezyVjNHnmV4OGZzJOLWcItlfDsjOVigctXjnxvhhMj9QtH4XbDciMAtwqZVIyrxIf9kSiTOGWgwTYDC/ZWuoMhjjRH6LOETCMvy66+fH2q3DIk1WiVS+eLgr9rXpTtCjulnPavkLnqSXLmyNKRCQDDfj8BwkF2s4IrPH3yWuV7+3ulT7gGBPuefkJPzRc4oWkoLSBvEA5BddJZAOYELH1NVZyqMU49XmvfJXaUrGgwcHT2UvZ2wKp3P7x9+5pQ69NnXaGQwknWneKAepFHvU8tQWoicfFInFuwm+P4PN5Tinakj+P4kt3cZKtWmBStnoG7QVsBw7Vn5Yfas7K7jZKoZQ+hldWoUzbTVk2v/MVuFebxy+SSLHvZN9i6hcLI3cxJbwXKVpqEkW/P32kGo6WbdSPprdwedm+cbY2yXrR2SpS7/gvARuTx4wlZxC7w4zXJAkk5I6Pft3V/2Kv3pBtB4y4FOLaJVt0zEiVnjaR2nGMysx4vV25i47wxYS8rx209E96ZMKz8LcX/xzVxhWFP+V4JcUK+nM5VGLrM/JJZXLXH3UdVd2+qIk52oxatwfvaRrU0xJoysSnddzvk2HkBaubbNrUtW0ITdBqgdQ4lsYuaPR+h29z0AjXJ3tpbGNrQa8I6khv2dcS3uzuW74ogn1wnF2O6VQ7u2vixmKs7J3uZ6VYesjt2kDP4gRMWuQtyUxtNdJ5jt3cyKYiJWviIIry0NqrDfg0uFIlhRoq99wi5oWskApFfII1u7Et4kHceItazAc64Yw2gTuiL/k8dzXSQ/XGBYPrarVOFzz3UVLOPhx/LyHLR5MCGtsugTmbcLdGPGuC73Hj/ZDOA2Aegt7OuKeicvPjxCc3v7ZLpLXK2dXZWzJnfTG5hjqhu1Z4uL8Kt+82QosFmisy08DTVoZzJ2fDPjgZtTI8Xwj8/DfRT8PefIF3BvWfIHE7+SfIArkIiB7g5U36g1slSR2V5XtSIZDu3Wp2BjWNCCtMui3tKEZJyN1f0jLsacE6sYAoHEHCJOJb9sBxykWQfiERWeXthV+BiTms1B5vbKFfENrAcW5+PQjnoH43Zj1kfTkslt5Iof2TsyBTkNaHAa80tZgZ0d9wxJVvQx40vGVahFm0CPWQKfa8IBrUn1Bnrf1+XPGMwZ0alilugpUkOG2Nw17wjLm1Z7Qbdkqk+eA9jjx52iO3ka8N1eOe0GWYxVsVJAyIjxrhspJ78VO2Vric3lGs41kcJ27V+3hXhMn/vkO+6jbnbUXvB6z6bZ8m0gMe8ThY6HuJ5upOQ/kH/rIUDb4LL1CfayAGUTzBN9sJZZrt20Il4TT7H2sCws7j7Cpedy7RhYdFcX3d5s3CNNVD9rJZgY401cCfYXYJQbe3MIA6vSLATNMtoV51Px/PTm/fvLz41Fgq+XP2O7HPbjz39DBgbONorfdsLwlngk2SCot16WTUB3qIqByXXcITvD05r14aKurlyk3/wEI72tHzpmU3AcGRYEhaXuKUWT5TEjtjh69fBIHZsYA5svWyZx56G4jRiZkQbGsXM2pSsnD6t8j/2tMpDBKzvrqEfkQ+Zmg3adSP6VKRyxOtMl3k/qqlObA+OOmAeQiELDvbooYRYbKeUOrPoFmDdvdIzFf2lntLjoPQulSo4+VhoXQA7Sl0DstpM0QZ64mprvCY1HMT75qlxd0zCNPkuU5tR23/k9PaPTl68eaI0hpS/uCs3e+CdQ0LdeqLmn3xTBk6KGngx5gb80wPZH8rbE8Ts0eDQe9R+udvEDb9t0kSE5towM9r4RsQcNBBz8MciZhMvTxWj+Mdh5vC/HTMHPswc3BszeYLacfO2iDf6Ua74aoo/fQNHKj9evC/wSh7yhK9ScMuHV1RgQQWWTFx/5cTZqGUwFX3kPgVlGx0e0jx017riwfnBLIn7soh38SLOx4y6l+TuvUQm5e0hl/1QFtUn7hY43FDWSuUrBteIK0ZOhainI/wK5brItoAS4DfuZdncltQfMPWJB0nM7MhATeIFq040sXGjM/BX8BbFyL9VnnyW6FsRJPgtZHNTvqXBnNORvqhh2xqYhM7NVqIRKfrfTNfAIjSIetV0s8N7F/ubL4hpV7BqRqlj6DSjoq1G3pYtqac3n4Wad2OgMtKr9N7Rvn7dZiWy8kg1ylZfv/pSH9iwQ9tuY6CMp+3d4+HZQJK4BjWVpjyPKUGOXjrk2NLjEZ9+Qzzk6CMvgyVdqWOXx1WoBOi0ycROGJyp4rThvn4d7h7Sv/2j5OvX/ceHiarn9tb48cey+M/YzU3AVGOXCFjim6MwWjkLHa6Khyo32mpiJZEK64Ts+6bvWJidYrZjRdxo5qwdF3R++GH08iWuE9wDrqd9KKyhVVHmZaNO9bgc7gwFDv1jW2ual9VBE4kMD0I6uvO1jWd2kG9lzI2CVSU8N4o/9C6RWp53nirVh45or0nIL24Fo/S2TlSG4aie0k5QkFk+uN6NoGAztRGOsHl15G0KCy2WjrZuC6JTq3cPwIZhpN1QcgSbTuLZFzKPX4zZOX2nSVqsY3kp3bFrKUlKDhoTdn0ZA8oIZcKxjUqABLdnLT+VYwR58SN0pyAjB7qOwylJ8On6ajyPxYfFYjra2ZkjoHUy71HqfJJMe5PZ+c7H+Q4dZns7/Uc7CRciaYc4umuJnRkZ/+4kpOHzGcYphzu6B0eHzWfA+3cLtc3JeiwrfnnzoqWW/HrxnqtIi+sdpSm7M+C/vU/zvBwaKN0VdGgNYHZxTYCEottcFX2seO8+3LG6c3RoPW7et29lHYG6rfDj69FWd8O9jPhWnm8yECKZOoi5sLpEX56lAOvRikpt9NUtMLRwb/x/Ee79P9wbfjvu5fE7dp5ziR/pMZCIWRSXCTCMSs4P/kU4ujS/5LhRZugrMy7LjOHaFy3ldh0lmBOC3j1MreBu/jO2k8mfHXZHd0IpN1/K+smmpaBtz9tvr6eONNQPpZQClcVzZ0lF8brv98esX7IueEhaMGFkBLOtkVfFM3CWpIYBR1p74DNnybhYaAWDYK5k4L3gxXsEwa5M7y7mUDGfk1Yi0ueFhp/L+kuTsrYKlDVG8JH0ZmF4lCk3rEEyzt3nIfstowROlAey6mlDBSRaMp/ukyk/UbijQi/LObRVG4KclUn4AYNbK/WIEqplGUJACLbhe9Xgu6oT5bffFqHZDYPMsflEu5oFAyD4swqB3F0d/vg6+bStr8oHffo2cY8bUY+XjBTx4Tgk8kowK14y/+tHxL2j9Rc0nVnyAIQQw08Vjwj+n4tZbBYbRFXPgh7xwwNbOMBFTz4gKB5NC7cSH+w6UfXYvR03RUujhQf4Zdf8CFNpB1+iF7LyNattaFRJJwSGbSjNYQTYeySzcNSQODh6OGVxnyoLxYQdyLb2nl6d4w5sjdtSdF9SiPWxmo2Z29ZSshRGaYMyLdu9NW92ayhdCpkuG/JQ9uXA0ThbBtzwBmnbCbYsg3iunBWDftJm06RMBhzZKoDYb8Qu8XpvlMNBKM+xi9dm8jrtNUvRvFYxuX5DKK4A5in1Q81ZbwsLvqy3/XB7V5tAyD7u5roKc5JqOKeNJYj/ZUmTfOA3mwij1qPW0T1eQS7T5Y3jgpgRlBwsb89prqlr1hbMEVp3dlyyJYpu/E5uUaNZkl9MgjHYwHwwAFX6eCW6WVdousS/RbezSkNOeVSsRToV3SVdUdZI/JjfpE+uMCVgeTwko96ZAR1K3R3pBwNqluRgtYoyMYT/cVPMF7ZhYmkdQjmzz4bz7Qg1p+/MRJ6NzFQwonHcvtbeD92198M0PWaWQ6HYmx2xejyitQO7TNNWdmK32QkfZhiPnT5VXGNtclpXi+FIRG40UxcC+6y1YJxq1tS9xKSI35jEQtTic3J3ApauZbZeR5QphQ5f3FGkC8n5IQBPfvKBUYgEcpWm6wYQRxxVytNaPfvXi8UHrb1ucIgLL1OGp7pYtyuLs56u6MWYq1lfC5t1rYniZmX4QWH040V43BwOojyjExkr2Soza71FNwNo1JPWC0/3NkCDtz+eilA2quFxBS+estI6YgJQZzuOxr7cyMIeA754SgfOup05IUnhxXskFtSZlzcL8gpodyaL3SYteJrVZmedCnkdldgOyfjsZL3TGxXPMuTlzeJBy4Uo3vc8+ZjJ4GlD4ErS0kJsUNlA+leXrnHfahxi42nnlkEbB0FJDdKQvs/vF+Di74o7jnXJH1JjdR3K0dE/pk7abH9IRdDeUlMKM3Pt3BkV3+rfKr7UEoLFZnxD9UbQFN8vF/sI+UVJ7l1y1kr+WDBz68Mf+3TxZVc0fa//KK6xqC6i4ovOM2x/dZSDRWUjzZJLTZiwEtm6gCOQ5Uyju6lKta8vtxCKG8G6FKGtGZ+EaZxgZUrqFWOHv0Oa5UylL9PwLHYT1SaL9OJl7sq5+oGmK3dXeuQw2t7DZtw4bFiHsKdqU4eKbEaSfvrTqRKaFJ9QtqFM6Cmhqgv4ue5dPWi0oPBI9JNmIyDHcSRREOS6rgc6ehbKu5IxpUvKzdVomEq0SJgbcLcJwURLEay7zzks11t2WVths70Sa98oGO+2cXJX7xprXpZtmVIT9/Na28aaP5/+puv7arVCyF30QTzttWkfDY/gHwWoHjz/+elPbubu0YvXv+8FWtju5u0h78DkueodFSt7Hw0POF1ZruBhiWuG+/ulRGf5sNFwOZPzaTI+umO/IMP0BRboFIjC2aO5V2bpQRwH/eDr10b6URzsPQo2N4Na+mEc7D8MQ7F8zOuP8gikqeH3a2MdNS0Wj649+YPHgzt0iykjqKDdOd99EuK1ak/iIumrnehUGkbL2l2+Bet6N+w9ivHPFWqUrqXMDNWy2VQCAIwlteyvX8nt7O7+YfmU3AAMwxQ6L6WqSqrUsUWFqzgZhMT/Y5cS04xO8gEl7D3Knwfl5xk/C9lv52cWofRPq33tdgiy9cpSJ9CdxtTJRstyyQRIz+y2rPpw+boCZLkcr9Su13xSQ4THRN6R4C2X1vlrvb+gbskIufISad+dObIk56oUup+wyv0H6SH/Th/kwrf0CNCA4lcjdQ//k08mHkzb0dQfrD6c/owDCA3ejxjzeDxnzhXqrD2EJAil87/8saNP+73d3TsM+ojTgmnjJNpIWhVgebg32dgZfrbqOLp7ryyBT2NF1sL4BKKKPwTjBSl5pNUDFzpQ95ppbU4RchdrHJwRB+0YfwnuZnBlMNgQvmHjlNErAAiTvBo/4QLvj1siMxa3hxtr9gVO9/5AdFnMJnTvMrPqmbQdzFpzBjPM4B3wKaMl/qPwqTwL0jDxWGWkOAWMaO3FU+uyvbvHjwDuJR/wtvCMx+Tgl4Wg9hSVk+Pn7xxJhYfF4wzi8TaSMFoy6NVnZaUYyjyBdq7J27hURkn/OzSk/g9SiXp9k9KzGfEVDjr82bpQFSaLI6V40pmFSu3E6sUoYJnbiALEqXXPiorx7G7cWTlqxG5XmfJVekRIYwpk0qDBxw3WLwysm+pmrafd9HKqGUBVGpRyCb/dYLNlA++l3hRt22+4enut5ra15REtOxdpfTO/O8ft1vznMt3++yIvgru+cG3qLgfrbbL6ORf1IkYYDV3i5C/JuNdAqqk+qdipVhMfwz/oospK4r7hl0LekQi/fvXPQlkyG3vLcRN8/73iOy5dBTxVHQtzPRAjvgVraip0WChmZYT0zWkJQr2QG25PXYiMKxn4K9FX9qbAFOrtIFJ4x07blAGy+M4RQWSyfpmn6j6NUjpYQAIl4cTVqOqJboInsS08769msgYDzHgVljPrbq24QzCbgF7QCyR3yb0UlNhNP9Ye2yldZIoc98J1jeoGg/f/ka+4TtTuoIvZTRFAVH4sXHO3rSNun2gWxpXMyaOhW1TouKKkqIviVKysAYzW0yLH6YQa8gsE9oaWz3vy9oiKbP6KJw6t0fhXGaeJE6OgiVKsglGiIUzTbPfTTlbHjt4zGDgnSxan1Q7tCTxiCNxc2D7DcYqf4U0hdZL61GoYmcim664vlShRPk7po8LlOIm4k1hOEQKNLWww62x2qKtQ5mlSyMyOW+6qafjh9SSjMwTF2hj416YBNaCmKsbaU+HqZ5yqZyCOcgr9jAbRoccmWtEl+kfrtosYwWpv9p6S7JZPv+8/P/3h5DWfh1o/SFv31CHt3CGt5p6JqJjR76H+zQWMWRAXNE67CWzXAXv79sfIHaTW8qlvhOGuFE8/EwpfZAGkzqSHSbsLu8EuDqx31JCsTGdL3BlzPdMQ0xlUTsHxg/6IjrgV8xoPmkXsWmhml01fXM6yLKeP0nbvsC/SP2NfeFeQvcdTj4W0hxhGnLxbS3aR/nlBe2FWaKyvxezyv48O9sqAlzSu97oCuDHMBgferF1kPfRmDZH1yJs1OOPohoN9IY3DUrfWULq4+1iKmga9GR7w1xRk5LWn1cnptG119nrsd+yZ9n68INIyrhDQmibKdfQHlRfgbqdjzYlyHd7tWFNxPKQUC9P8PfDp7bmtVWhonNHzRcO9DpiQHc0WZNBsIlDgcPoVjsoOnrx4WQ+e/eS1r3+MJWaQ0Mcru5jIbGUXG20s7eEGuujsVv9EOhs2oY/MfyVbMlPB61/ecrt8Ces0dr2vXRstCW6gtrx0i3qntl6SlbUNzcD/fPiNJlYfp56O3vVErXVuRZveEa7ZpEseT1BgvFj/FMcr3avp4kVjoD2VCtyiPuVRNnhckql+DLZq2C8TBpwwKBP2ho/3Hh88HD7eR06N1+xrnULdVxCnjH+ag7Uckp1OA7pHx+O19Hj7DT3e2iFXb03ItfrSfgo2K9RjbecKy/wmNkEi4SIGR1Wb/n4A4Z7SABdQLWWjKvP0FbGSUT31b1eT1PrEYlku2qKfJosguSLLH/r99MnT4EK57D5XsCrkUZQX9OCkrigR/aAbChXbsRKLT1NGqsnV1YWyHR9XdZaeyCMR1pSE8UCNi7q6GMusDcOT2HFNu4gzS8OsUkMkFjU/XBi5S96Nd8PEddqo7JTgKJStkXDLhay+vAiSluE2AkONBrj/ia493++oXHdwRkVlUMvpImt41t2nTCPrlsJ3KXOe5Iu5cuDHfljoXvgRcyhG6u8V5eNyyN4e3idAqAHroieVS7ewwbSifnVwtE7p5qaF6WZ+68iPaqA70uBooSUXYfAkhyVVXUU6EKxo/mKqJS6dpIfS+otEP27e0+J9cnNFgQPBHTZytW8sYlEbWaVzImQqgcyjXYnm+feefDAwYprBpA+f7uXnlfn8ofzkhTBGfqLKG5i8wvhkJikP3Tfp0cyCGrZDBd2A56ZcZiqHPlXk9UGmEkryisvzg2pSVeawzNygXCsz2zWR9FsnHbhHcI98cO4CaMjHDUh3MRhsr98EcxeGAflcIzQiwesUeNi4lJmNML+ZQqR4t22waxPhOs5DH7EWWNYLwiK3O+K9RnZn7eg7s+c+ztwZjjNrHuPMma1YjEZCugeTrxcQS9RH8RRu2ELpoEqzLwZXZKNXBjuk2z+DCrLW03Lxv6m7FbHO4jq/pFW+fTEU5jKB47GkdIIcJd0udMUz6IpbJTY36yl3NK6IY1G+HdHQAoWlZlyEohpxci0HQGu0uXsv5icc3i22NzruA4Ma3+EfqZC5f8Ys1smXX2ccjm0uNOZbpmzyEuHIugI4O9FRdqVNyxOgqpNBYS4DDYVgGsYT9fkHSZvSuKNESKj4DSca6QldKznvzXU29eUfHg5Ab/uJw94iJXX4W6RkZcpQp+Rlym6T0x32Gzdy9CAwXQBtcufDL1ly8+8tXJLZWszw0MMMe6cWL0qdbJOmz53dJshwPZlRA/V8AiB9TtwNc54tPqi3vhZa3T9j/oBPfeYO+i53MHC5g4HLATwxp3nJJyccomKO9YZ8Tj9U1ngCDLOlkHqVmhtSkhbEG4uwxgcoxEbterprnMADB7qFE0jpBHD5gIc+KGhy0AS+TOaXS9iF1Bwbf6OZ/5h8lhvtDEO6HsOQ3p9h2CtJsdlpukzjntms8Qtmy/B7MSbF+nhkfzyuPjCC8uOBsxh+LPbt5zvjbhg5SBC7q67jp1nLbJLsNa3S3AU06fZimTR3ZcDt1DkdNNrkLex2MbNlstu0xXMI8aBiNVCvlwcJAYc1sOD8TEnYpEf+eRZyI3UQh89Rpku+Bf0jD1oHgxsn7Vhf3acln+KcuNTea7pNz76naNonyTRJL+gCXEY8c7qu4Ozz2I1932HVCtUlBRowLLp0gqUGtcqsJuB5PJRN8V+9K0JOq5bNwdHvq8m1qb4XyjvD/hFr8Zmiu/uJqodPPnXpRhCGV1MkerJ5vDdTIYfrAGafM/jk218HliL4jYV8tByUxlvQ30GfHdO1jLD3fDLLCqJ/5+PJnM4T5BP2r+7DZAxsysuCRCb7/TV61CxFKyYfO0HjljZ/Onm/2J68f09DWz6xGww60/Owt7xzp1dFQWu1AuqHi5Q2OpRi5cNw+cQi5KDa12tNJ3tCQhnq6toTaeAHy/sCUkbit2ezZF7coTdcKlDF0Mreer1qlNsP1yzI4Yg5Wi1tG0zDuojoFt0g1Z07tanC8aLJ4V2bLEvurtng6388IzS7y9i4xKoRndzMiZEMOBV0VD5+/DiU+87OWlYBy2pZUqzLP6q/E+7LOh3flVPnDFBk3T2NnCL2YQQ7dW1g6pwCLfc/T0Ml/+OORl89CGWJy/36lVAQ4h54YD0Buzy7DopPhKQoAE+25UVL6wc7GHwM0S27K7OTA6P2Fly8D2b6xaAHWL9C08BSaFIy9ap8HpPiGz4tI7fdJS7190rtJo+SeL15kpNPZiPqG2Uc/frkzU8vfvrbSIUhefvhgv2d0T/TIiAuNlEI96Ew/tF4aXpcr5C6l/FANoTNq7BCpoQSblKnfWmXrypd3AizIY0FB/Ik/121rYpxyBcF8AgAy99NvEwE8xDsYZY8qpMQbngISRzd0fNifkkezRCnH5HZtdu4p5zaCSWBEJbQe39yVYN5q5MJyLzHc+j9XR3Mfc7gVbjdMGphnWzOSZVSLBMr2hk8Upqb1UdH/4KSFX46ysIsIXvQjw6OnCOY0qBdQx3MWN7094vi4+YmptXKfeDm0oRZ2dnxqvnfaF2AkZcHdAVZnsL8CMxuFJ/8nhvMcN+CXJz5wnfzvfz7i8n8dUIqrmLlua7AwsguybQB0KuLV7BVHSQ8vErmH1DV6go0cK0HYDbEejxJVVLxf6/1G9wzGGutaF8VyN0SVXV0iNC5+GZ5FYCoivxIAbVJgz+dJLN8eTkDhRJueQXPHgyXV2EBci0bdjXqkF6nGgvQ7QyhNhHGV7SPfkxW1HH66ke7XMmhiXVZOXcKFAO7Tt8Z0NN3MADmRPn+M8jE8oqa8FxXtt9fXvDvxSydzC8Wn3++uSgWptBgzUL8ozDFhmsWO81mRTH+/ioZY9VrQp+9kn9yae2urNGLV1TYTdLKZM5x5odgUnOR57/RbGMPoLNPCyaFP6s1MNsnNJKQMLLKvDl9hvk2wDbOhMeeNFPJCNSYT1TAlIQuwIdDu5BS0hJ8eMgDkmt7Dknu/uEkFy2RZG92fDdxCKkWMcTnafK+wDoF1Qzhp7PXAnfwdkxyDoqZ7WkhUlg+DLHB2s/K3KycLJgBAMLkPlPZeP4ta2hfahbJWScPuamJrM8eIxZO4mxvz5zCDkR5vgDIWi1rPRvw1QJaharEZSWx0HYhfLfAo6qXBV3eX0Arm8fw0DuG58Rif0xmRbn5GPixH9hzoADej30tfXO3Ezf3yNucjYHxBrdjp7U0UMN43cFaantZ3hpuWTe1vSzvIbesSV1aVm8jrDPKuRurpYzeX3GDHvlh6RBjUHc3thcwe9mU0p/+Ap4jRpdrZvhrsM/LeAmJjDYe0A6PW0rCfoULO/yzbVlnlwSd1n2LvcXuyt3f+x6zQhTabkLX7BfrZ36nFDRtHT0Wkbqac3SxeeBk6OvQnif1eBh7Ejv5gdbxewtnbNq4RdRungd1dcDBwJ6L02Kc66xQqoXmL6qCTgfyTkepnMAndA4xeqd9aZRWGJaGTG62L8Y1YXV9WX5T4Cql45n8E76rhCPcVb03XWc1nHG6wpoAGnDjosjhFGrZADYE4Y8aAEhl+T5gxnH/C9dSPMNQ74toq8wx3XkJUPQu1pj/TVhmTfaz8c01q2porHnyO9moQj72dqKVN4RHvZrkY2xumcuE1Nech7+llVWvf3Hm1QqWiIl199oQpFKto97pG+UItYp5lam54aFnWLeESbYqtH+WoVOl9Lfat94JzLOveO+VzaD+ZdsbTWBz3Fh7a9UeRxmVAO8mPnSSvv0wXGvXDP/YXXPfQ+SPoFDzG1g0v7+5YgK1/uH35xKme9Oljl82KUuvxknvxFbMQDcVr0e3C8nSS3p1tHh97w1Awn32e/DAFoPfzvvLxGLpvYw+IFwmvp2/l4mHjV/K5MvEz8uvYvZlUmff2zl7mbgMfBtnLzeSBsu+hJ2XSYNJb2fgGdply5ew7DJxGPEWBl0mJevtYceRy8x2k/+WicNXt/DbMvEx08t5banNt2vvh853O8u8phRLAs4t2cJLo2mHt26BQzyfDWd3PRj4thKS7S3z+DEk/fRodJQ2N0rfux/6LTiPqhtYTa+L6jmK3grpLwzXatiMUk205UQXAznRRTQkurjGCQatBjw+eqbH+Aw+NSX8D2IXymAQavMhEdLXQZSO+xwXro8h6mqW1C9k+k6lr2AN5NjQ+WFYPlyhl8yMTa6KHrF3HYF2NYkfKaVbN/vUxy8D8BV8E3EsPkoadhJqZhlnwdWkqGbuZ7tf37SdbonvfBtSMs63ZcdbyUDIojzgOktOOJjheXogA+voc+anAA+9ethj4obU2GtDpnw0xSflG6q0M/ANdffT6rMcUNVh3vJymCkMsB4QLamgerV6J9Rmpkf9nad/fxrwaw6n4RXeTfiBdux2Tp4NCze9Uqbh9LN3ZSPbgzP9tEh9oC2mtgNpwKAvWdxSHv3d07B7FqzTqVsHbZnFRsarWV7MgLBZGDkGp9XE61X6rVaog7lCxI5s5Pqo+n8+qvzwrqsq+te4qhrumAk/VU3rCf/v81M1gnuQ7O4B+rybk80FSdRxDv3HMj/uR8u3a7VbHdT1gqoIM1J0E/Vv3hUhS/UfWPfgNAy/tJIixICl0/+app07Y+nJhFG7osFA7zvSJzJHN+9Zdz+m8ZChDZQpNbR2OKD7DD3os24K+58ZhvS1z1/ICyOQJ/3ZfDwIo+Zkp9FgUKvgiG4Yzsy2XcTp1FMTKlde2VMfAuwtVfbZED8Z4q+nHOdfT9ga1L5KPVbPCFVW6h8llbsTKBRD8FXXSpG1rvQVBKJXk12SLRVwy/XDWzmALmMYNW3Jn8znk0yFsFF1V6EZlt2i92s6vz6QarwVXF1q9KV0+3QQxx5RQzMWVqaKuuIopaTry4ASiFd8ZZ27nnyveTKxasR/mjnxlCpv4Ew+2no0sIjIslo86MIXcaMYzq+/LcllaHdvbhhKnfzTzXVKrufeczo0a/wZbn3NfNbW9I/5uNM6F9Lb9/xAQ/iN5hqLwZUsXxNIRt1qY1/bUmkOHJAi2SzX0EIOD9sGTYikwzrRMUP7RnFjsvz8ezHOJ7M5nEuXaU+m0yvtQhYZlfI5FOA1DCMg3c3mC6R+jR9FH+c8BUQernua9D/5Z0LUSUirpBkwGzv3pWAHk5y5I6T427O3wkZ/T1nGPCWQrGaeBYnfJ4vsg46kMQG6kD07MSIf+LY27zzoq0NMYWzGygHnk+FAGRDzEzQdorvDoyzKut3wSz4Jkti47YW3q1KizZeQHvx4nWhHy50sVPYuHz9cEFudHKUlcSDr9C/VEvzL6aufegpdYcyaocedj+EX9vZ861mbqHVt0rjMookfLwixMDwVB6h3MVd/OzilEzyKl0/spZ2jcvr6u2ro2Po9EiJChBaScuMPldVhz7lAMp0emx8G9F0BaP7FBRTEmN3w6PR3ZdqZqim8bXQ/3kjj5Nbw6+k7odyR9T4srgU1QN90ZkzG/B3Sp6DGhBh9ub2NXGBqVWXjPycjduGkNo9xU8PIacqpzcmISzi3NrejtwmhFU955etg2EEc1wUxgotcR5KdDdxorhxjdEBBRpWOKZ999cC7evMoM+sFFEyNd6YqlK4cy0uJZ5YGDszivpyq1ClSsSqEit2u6u01ZZ6rzHOT+W5K+deUD/vcB/H469fpg/gyhCkPFjrvxgUaUq2Gchxn8jKeUgoAsuOi+2yeJdMCQXE6iGC4E4juNBzBO+sb3KlUs/8Rbyl3gx0uJHbYE9+UE6ZlwnmX4KjuotvZ8oTjNWFZoS6iscyEEdLeDCX9neq/qExudf+jK8LWmL0hNyYCN3rvU7INIbBcyPLnc6ILhlYKqnSrbEI5Zw+3Ql3XykC+HH3XmrbzkN1byODwgnL0orw7P+vBtwXNafp5UcwR17jmQzChVdtWh6BLYUqPfxnJhxqZiBxAOVzSR4fK4lMU90KgDsq+JaJ7TUiy7KjYsJ+OWg4J3Ezo3ylN97Mfn719RuuyrMq1aqzqUt0kPeE/sMpbe3uosNYJPlxnlv4tz2Gt319cKXciN+O8Z60sx61W9aQuGTkSlRsRuLi1T8GOcE5yEVbITC9KU6CvskXQv99OLNAwwpWgL/NQ0eiAvyzzApQoKRL026kq6twOdWjDakZ3SMh6XyxO2rNvS5bTb0msHpLHzTORvDtglyRnkRA6THs9sCCju8CVVgFlPiALqYXyddmAYGeciSfnlDYndc7ZpFAi712Rnx9fY/D/IyTnhz5nM3qQwQsEC5P7sjlfzz7JQuaOgboPCNPK4fCWY/3clMMR52fk/Ohftu6tQTcPWWnmPAbqfjrmK/p8xYYIOs/evFHEIJR8U6HjL1nUw9fz3a/I6TzAS6iDb1XPPISbsa1hX/khuVqoF4dOspzueKqkBck8c5Uy2+uIW72luUtmsr5+ZXlhemwLHTDxsCuJA+TSiOfJ78WTeQebcZheTVJiCGViDZ3Y5XFt2L4NVo0703FjKCY6bZqPvQlV0DGSM9F15gSBgrpiVEuFM4quZxZ+S6ErjLNKVVrM1H2Fvt5PMuUmq+r1azpT3k7cpWKulss8fLZ7mNle2N8RjOWslvLDM5nFdlpfIjVsv8tk0mm23AO5b1G7HTy2HIvjZEpjyWPFtEDi715wvDXygNbeFThgv2FP6KekY3dOE3jJTODZ8kHf3Td2951Doh17CFk7WSyEFXIIZxYL/4IkIInq1RUPgcZzoyrFL3OUJOM8KGARRrB8SZFBUpFjlY/SuFwovldQE530OOl22txd9x1319e6JVSy3A4smBVJPhlffS4dTMXmR81Zto50woNBxY437HCUdMXKvrHlGgrfsZdlIBGSLuvFUYE+wqW9gjumldZ0dk94MQJ1K/4wucppz/6dk8hX3KIGhiQ7rNxgHYs7XZ0/WMzdOmthjNNjOti5ux7Ae/XZ4hQ8Hb9zvw1mO51+rhPv3Dku+M2dAmI6HbImbWeSLQpQQ9or1+7UohgS1unpyxcvnyGWtGfht+7UVzBRazQYLC4WBCJevIfInCgodZ/4NKI5qoLFxFywx4vSiztIqwqm+LFIgyko8xFYt7p96BZPME5hjL65hZB6JNywy/XbWIiBO97nQWvqUPCAuCVMiztokitvdsGP76Yfbh8snF7eEQfU6c2W1RtvPwxyHNXqbkMtUQe8uMbp+89pcd7IQojpHZLHXPlzCJMvxpRV9hBBzNq5bqafMFdyT0DweAniOhIzXaO8jk/+Rqny5MxCYmGKjwG26ZsioZ0l895kDPC4UWpIeYY6QPHdphhG9Z1AcGQ9mX9/MU7Ij5R24K+fxZmVaxSFgAf8i6rdaHwYDsvtXrSke1HVPa6L9VbxHXm7VQGFt/bFpTaXiJxOLEXa7LhM2dGS3e/j1G16JNQTZGpZLPX+SdEtO4ZByaq8bUqCwk7JSw5IPIyKnO9B9d1Bl5ytbRYiRjmJ7Oa2K2FQl0zpz/DM6eO23ce0RxXPEWm+I3rn/6liI9SDMRj58/ZuWCtAmwBRW+ppV2zSZu9F7pW7e0ZOucWnhWrdX9DdXCE9mZZR8Dw9Hgyop7UFteNTkHDYwogmspWeH6Msbl0EfXdZvgoyj5f0IxKCH7xyUgoxeUZE7p8ILgMZ0DJqxnWM7Tpw8Fh1qGsf/iT0pxQx03feW0x+BFd/ktD1gVaExdn+3OMOepMpBRwj+sDjBQumkhiSDkrIYpa0JfgXOrhZvSLFx5OuQgKieXT4AfQAagtRTkvLb+bl/o9y2rB5c8O6WzOMcg9uJyqu8YejEz55t5+NswmkZaPg/D8vpoc7H1jAGdsw4BughlN0BQDov7J3mMCxCcOIGSbx1Bhg+F1WtWMGRrlmNFC/p8e4yL0qZc6F+rf31wsqViwumFDpOJ7V45F4K5Q1RJXwPykBt0Knjgsd4EERu9gpDmhr61hRW16LsDsA4YCU2irzFE3myee50+4PSP1AGjFu8kskk+YGXReRETmtBwNdj9Q/CcLJ1fVJ87ueX1Ysqy+0YubJT8UGtRnG7JLMFJMDXoUGTOONhuWzWxRSUh9ppl797P3kKplda89a7jsj5xhXGH/EU83H5LIIElVt9RoTOaYo/GCsmiaPctnlq4x1Q7NCeMIhmMfLony83MXjpTa4zc05jRkpR5qr+C5ZmaveNpOY/WXneJLTtiU4WfXjAvd8MobjXpz2TxEQTcFiQpRKR++pxvEwVEQhS2i2eNms9ZZqmUkEISpHHKoeE75Eb0O+4SfZB9F1cN+BLX/wc77KY2Hiq/EJ66XQbOkapREWfqSoqAHd2BVzQBkr3oqeXBWzRflSBK2tJU9C0ht2BK3UHokQCYXF6miDctTisJpVKELu2arHIH1hgTfqiLsBrIsmZAFKnx+3P40+XOR5MT5SNNu9NIHZc7Ffpmu/QNiIHNDLI+KHzIrGY0SUc4VHm+N0Po1E1//2YPYZ7Xnf9OFlxHkruKYBwt+87oCQOu2JVZXzikE/axPNjxfpiqeS3EwafNnjbWOIcG/6iedB31GHJQxPZoWqHFtW7di3BeEgdoqlBMzUhx4oRwrWgLDC4Ygm7G7xNy1KYfRLdFXzVVVdTOdVVa1Eh3zmjyotxqMtEmTStc1OA0RJBY4OpyNDCHRHprFYT19ThWcW1ESCJqp6CKWcFtA473u0Zn7fuzW1ylU9aK38QGNNikI4wgFEfZlUvra2R6I6qhqY+qWhM2chuLXNcLV0C+M9p/SmNUMWTcLkfb3gsf3i0qihPN0MKdCHghtdnrMqZ0486mVHlSlDJNkNkVPIsVLV2d6mG7G9+2/t7eTsVW8URWji5cN9NcbfOFrkg1Sde+ZYKf2+l31JSYAdl8dX5ju7op/r1ZYXMftYdMDm4O5KuKRHfOFzGti/FckMjMK26NoMisp/SUzpB8octOSrDoah2wwg3GZ+AGuFNka+Npiv6oQt+exdFflKe6M6TLUMIGues9U5/pp5zjoP6vCXT2Wdt/xB1tnKl0ip4nvIDXqZgc0jXYwLhYEFMDDhPo3jhNSGSg4wolZilfRufIZzgi4NleIf0h3WcQyX9NQNt8hgdZGXtSLDVUVu7WUzrEu5crm+t28L/Wq+FFoIBwnySVZmIU6ch9+BWRNXnJXIjrcujVUdkxaWiAY8lK2IL4Rsx/ZsBbZnK7A9s7BdbrSje7YM3bMGuvf7Qq6YVtk2rf26P+p9jlyOeVPQQpYk5vjhaFfaxOoVHGxD3peAbeRayoDlFR1u5ho6vKzXtuynVELsH7atnIZRPu78K+jW6YfnlWjAjyz4DivXU7G0LTKuO0elcHOIInUum1EaMI5Msm2YMl9rdLJYa1BUm3XBITIEErE9kNj2skBCQQmywGcf0DYi5kDEX96eVBuCMd4H42wKPwg6oap468/X+wEI7wdw9oQfpDoFuhA7FOsiYET+RSznK4Uh20butUFHRBfz1RVP3+LXgH79gB9D+kGkfwz61bIHZRIvZ6gTZqeJ2ka8F2EmZd7pn30qspfF4sMk/8f1VRXJTlNIFhgLP+8cSmGwVMhkrah6KMB0wQ1vblJ7ATt2GAXKbobVn8h+9eL9ZzwWMVBwweGhkuD9DULPBVgmvMXjvd/jfmP95iU1m/m8cdy5Ky6zNuok2uW9xeoRCU8qrire+gMuA5gz5zJA61LyI2jh2y8AhXsBQAueYzUeNxX7vczv2ogDGYBn6fid/g7Iw8u1WL5ifGvlf75Ul7dR0qs+bhshxhy67GfE785jy8SRM+BFYJue2M7HSnwBYYVHic5hv8MayK/JJY8aS7eW8MnQDWwvV/Tk1qzyxkQBpSOG8vDGYBUbxZ+8p0x1GxOyjV0TnBYw1RmJfy2Kqf4ISwFE5Gx5ZBJGOHMiE59WoB90X/rPXNq+MrX5FD+YrSH47XdCqgx3Qpe8WF3IZhfTxW+zm/Gp+uWLcsAwsD3ER2MS3tyMAy6MW7SnQnBttLUsTQEGgtaZpXHD+MpCt0G//5cgybJiuoh71wXDH9l3bW87eg8ZU0EcgFVTIpSNt8pQ77D6I2tmHll1MxPdCrIp0/OUWj16uru8Wb56OIOpSuaYqLgPH8ZghejArZJFO64MSM+rx9XDRI7GW442of6VDLcNFEZZOZtcAHpqII1OkRndt4Yfik+dZEEajFWRMEQFKTBvftzRQ1M+Gy6u8u9VcsfkhxoT0FMtKYTdVUspD3RfNcbJDHWsy6ovns/YhRgZCFRNq8Kp9BLmKfnurAqhluAa3IRRcdHiZvq7BI/G3rbeZb1PyuYGr0gbfISneBEmrM/onyjl/FjDuSooaY9+zsMMf6DLASQ2v81yut9h5O1enNJOUVcfzu6EJjKNtZkjFTqCy+hJ13fmJP7C3CnMUH8vRgP5W0Zk6uL9RYYq8X1N238kfi3SUxLri1tJ75sOblntxNWa30wbOCXhWsKCPraL9jTXGeu/0s4zxDHGj0YubblFMTVt82TwWE+RX4M9YaVeA57xpwM0x1kLi2nXINihf3SiqTCvepqVxl/PeWts6w9RXasxbM6/d4YHsn9Y68ICwcqUcmYnhNPWRnZt7vkgdlT9nSFqZ2PWo+aLn56/GgUeLYcD2pEu6OkvJyfPTk+90I8b0KQt++qNF/Yh2zoMH0oVETZt9hZe4xtTNHCHz2fW5mbd3tldRVTkJvFE9WX70mjLTu+ON8WM80R/rkt5PKmsnFvkL1ilWtptFTPQRephQTytvYHraPUjHVmmH9x+KfnAAfePlz/+QMy7Nn+PUnPIleyCefI8xOoo1ph8WsJTjv5qP7hKT3k4Zsy5ldC5BbqgjwRg5rK5ig2g9B8SSwuDuVYjUqE17CHZ+vrWRYCOWbNLuVURogLWr4eFgBSczbnQveHHX5qMYpw7etn1wwubyrOAqXJ2zRlYStjAlGF3TWsML+SgzPidyj4DeOkB3oOImF63CLe8qgzad4bim3pnPM6SpVqDS8CNC4E5J2qKA/TxPhwnZdpu98mi0y+Zrqzb4asKWEI1zb8JPE+Z0B4kfyH72OlEHUVRShT+fAazrG0O+vFdlmX2I61+Uh3RY2p0TXzUxXg0VLrZeXrFL856DO8JUDXXEeo5TIRBTqol50mKC9PspqAySFAUvyxkpXWUYaGEfmqoYQklXEikOHCs7kotpgismtP5B5PKUOYwLs7Zbg/yhu8avdzCrBCoCA2ceeEuYYFODeCMlECD7BptGrH4VxGiVWQJmImpvoARKe9CtwgGpncEZITVoOgwo3XIjLuGqIH1XhSBwNyl5+7gDDfM8g5vHbj30mjAQ71MFh96s4SUqK47SGJmKvVwQaUx5VJa28ysHkAcDqqx391ZT91Lk+eexAIJ0W0ZIK8CX6Dcup994rKsDq2Sjjm4zcTY3nOYG7BzgCoYKGASo3Q9QOatnIz6hDjQE6TxFwP3hEyXDtSozuoMOlXs65cHJ/raCEXmbQzzGfTaBJGC77578P2Pr07+9cF33/377N/H39FyK40N9YHZoc+ckZXTsIdUGn7oNLcOK6a9eurKmcHW7138RW9MEC2g+b8/eeM0XriNjz2Nj+3G1WUWafjBaSIa90qbAa0s812ZAOAqm0uwOvCY+ft5SVEv0f8yVVXDv0m8fdkVqElnvrs8M21XYFW+majTX5+8Dv7yl7+oYdLfgMiBAyJunWlxS/3/UKKPNM+0Y02AVf41ifwX1cSDd8SWk7qNvqO8nfzLfDL+3qUaX25tvV27qbEwpnMpNIY1BJJlXmncJ8aaFW4TDFBMRYexLYHP3kHabrGsg/Ashtg9vOUbGTrCvaavC5wkc2p3aKq0phH9KpuvFTGvw7VkdM3u/5hak5f4p+ZSIAkxkKk9EOkMBF3Gv/0zuBjE32qMFUJRCXe0ffmI9Fgv65PwSE+CJCcG4WjcOke0By6gwktODelfg6fxJYSVyJIb+naqPnhCcYsdY3aBSDSVu7RL+QqtYfk35j0HbGZUDxVbyj0gQW4nZ6msCAJXfOQ91ayHQj4DOdfgqKuPa2txeGlbCN4nc3mfzU3wZyW3k9ENr40w8pHgtlneplLSKV9WFFSptSg7JarmQHFHT9OrE/WXJjdbsFdQNXVL4SB8rqt31grwiUHKcnD5A3n0y2J8Q2dFU9q98loUsRr1e7gHSyAIg+byixzeYIAOfEfX6syf9Bzjurm0YpR0L6Nh/eyPKoNcVoNZY+7iZY1S2LX9/pGrLYCp7ITbK6c71IheAeJ4VsBLBxpGq3u9tNPRakzY8AzJEXk3mWlGD5d7al1jdTOgS1qSwT2t6PfwFN6D3vhb4grn5NSvV7x/T70hLSxCfTrEoZLVgGF1jaR26dpRGCMUKjkSkwZf/w1dHvT6YkndRG28tXvq5prfiXQCf5ZQWxVnsZhPIH/CxSe9ohsTC5+8jV0Vye+tNsQ4VCekd4uwfgrxyYSFj9MqUn7Bjx6wZ3+NSxqJAWCT9w/Jf/8NDDrM95KL8byThHcZxVhpEN+29H0ybeu2dxFKDrSGBefLsCCURaWI1CQRbJZybOYCbwe8UX4gfvsKixiOOi5BMkSfTtJk6W3HbeoslEn96oMkvvq4sGiz6nUtTyY+WXbuk0Yp/iEr6PAc0DwcEbkqtrdDVyIiYkU5aTCbm23XrySU97x+bQxoLO0dQ5zxVZUXoayRcWmTcR92ObS0/UHWN4/p2fKbZto4U6hydgaQGbaPOR9Se9qXOJb4ZlGaMqAAQ4TOpSZzLjWZudRoZY9LyGbKROcucgnNefsu4gEDI2zViYuNKTkZXxafpyqC/ZY+ksbKJ978FRnsd7TzJWPd6FZCJK1RbziOBb8RalnJlt0jnoyt6vnwH2p8v6nrS4DftQIqCSXU/ajxvEiaxKotmDjDW3G9Nzyf6NIci3jnPjVbLAVUfSOe6iPqrGIiZ7yQTt/n4ZimuWY+2511O7O4vsrH1JpGNXbXBeFOvbp3szNIebg+GraqfYfLkdxnz7POGL4vpi/kbcY3aUzByv9rFyyM9v19pZwDf07Dv0PZ4Y11e7y6VzmMrhe4sTXAKulfrbktAQMJF155pLAhtYBugSDHxnoupZZVW0wY9v34m8c5hKw3V95BGUmrgAn2tvq9jbIjHL+RsfLvU3dKsxcWtVpIzef2aEAMB7Me3/X7/aawlhw1Loqm8Uy5E6rNQUpDobnTencFFhrXplqG4xsNax7o2Ge48LPt4dHhVZIWV463DwVED3n1CfpEM7RRKO3BaVdg0r17aqr2lK52h5oQQANKuiFVJzKqbsgBMxb0JbJ55EDUl8t0+cEEKD/3Y+l8tp6bmRwsPzXZUnXlRczRHW1CQ6pHnUnc04oFLpzGKJuUr9mMson7ug3JuHPU1fLnIYuSnEXL1ZoVZei7zc1aKWZNCv3WTR05aHaEaX+tdlRuTrOxx1b/sq5Gctl4YUubY0wXk6Sh+RFt1KXPVJlH7WRsqZ3weOrV+8bAWa6KgHNNazDR2vAzegBNBlh7gsVHvlZ8Ku0+LdR1qzeSFSEcuUkDdQxcaj0Omas8pMH+xyGyZ9s2/nz2pp88j0Wi21mB98ciSRIxElmW4ZVk9dNS89XIfWbS377XInTagivTmrB8TXNhOc2F/RNerPiqZQHh0/+m5SUBfMJtqFeuBHs58b5eOcStNNIsgVn17Ts/IRzKEh72hnjtwgOY9doltoTKYqLv8YTDx0CK5wrDZen+uQvq7adjq0pX3W24HGTHODiq/fNSPrilfHZ7gSymPon7EhtCMHOhrSm3LM2nvxPUzZwe+4qrK42rcV99zSF3wFeTHdU37lmSX9zMLdRWBrCPaATCFpSv6mThPwZcahRt7MUr4Jhn6x+urs1RkBd/xf9Bc369Bjpr9Xf+bg2gM3Cdf2Cjx4JJvNIegj7M+lNROrsciZ84FA9vDNjTG5Z3eX0lF6zYUoUt8RAcIOMPipMYPzm25DU275c8GvSTR3wHQR3ToxXN8V7YAHN7rxbopIez3Vs9SPTadVIFt74lpwww11T7VgijLbpl7WVhKP4A+4KPkHNy8C2OlPpJ8BmuFoz6yGd1EASbAejjlEppjZLKZxVUr4P5RfXqejHXpRX05FPvkN3UQQ3KlbJI7PuG661HtCJmCOHS4/Tn046ozs+wx7P6I3XI4OIJ65T+QBVfoXJVWp2Hu+W0sywRDsh1Ie4deeXwv467EO75D5Lnfy/xK5n0flNHmDb1/w7/F5ShahVIgDT98risCutRsvY63DZ7yzhc1MYhEfVrm34WNb6DsnBN+ulWoThYq5o1dn8YVTOj4EbB8qOnmjB31YPfflsE5aM7HaTWZN22zGwxJhZ7w1obMu6/w8qgvLUubn94lW79D8bsY2QZEkd1nHSzy2tUGsc11brwy9LNka1UHXa2XXKHbZd4t53Fm3tULzqrtU9+Kj42tfS5DldLX0XhI1qWEY85U8SLgbWGyLH7oOCrh3pzHwW+yKsqGa28ipr34NoK3kE9ialu+dqujK1blBSE8GlNWzPiyf2SUg2Xblq0Uvde91YD+ZX7pX2vdPzW8pKdcGETNzpF9OG26UKHWFPSGqx3Yn5gBr7SkL1BDjR0p0VOAHQ7bio/bm7Wxd9kHeSdBIev4076NclploaYrk5LNaG8qxZ7KNHgMv1z5Ht10DfwywVxFdGR3KqMjky/QjrnOErpy2qqz5j9jAlbGRcxsX0apG9z04PDEb9UNECR4FWSt9r1oP+XtauDtrZF+2gm//AxdDwdbKwIWu44TsMB0dSlb26jLm5uOD+t00rVSVFlyl2jzKjGRJXoF2K6UtJZ5G2rseRo1VHC3dzkgep03LxtRiTtVepG7gPlb7/BU6G+d+e4gc8ntJqhrS1FrUxUbFARx7jUTN7bFb6DFtXZMRR71fUXn3zRDeJGVFG6vjeKyqH2iSzCkb8WJz6HnpOFrrFZX1hWd+uSMqi2ZrGZfxn8NDHHY1RNoFI2cZbsHavCF2ckgNY/AdSN2XChdzEl5srivvLCEHCCVkkSQFAx2e/bPtPrztE39vvUdRJCtFLczN4X7jxUjvCai3Xs6kfhnTptnujwY68Z93SpPSDQTZnVzT9cvF9QpN/jTpP54JqYIxSSw+lqm0DoA4FoV+L307LpUt2vKbswsj71NjErlNQFmoJE2q+CHUSPwaS1VijkSg1D74GL0MvN4aEBl7lyp7DNABIQ4Mcbw9NiKMK3RWkoFRy5MQs8rXTaHqzTuLboXyqbwJGfszDNjiCeXosZgVs1xwpvqUUMf4ya3N2tpa8X+cIpoHFn+soOWEzyzTxVXCkYBZKmdJraOsPHXCrek9luX/8eyNrq7klxovxSKwclqrpeejFWohmsda2dV5fOGjVysZm0deociVRV/OR6YQC4qapvVc+IXqCynKPQVcNyRwzjFZO36k6wLwWCUfjG5NaEQfmb4UzHucpg34zL8WzsWt2uMrpVbZQt3NnmFsWBG9ZMOHtic9P0kX7VEcxaDeX3tCgXKoT+i5ksW4Wr2V0ss3eBnxaosvHaEx77FtcxM+TFwmxZVoYTmsXJbHZD1GHuLGMvqOJVYLVcG0RvY3BxOXgsH5TDjZDwUJbfWMoy1+ggwmqvr64FjAN953FHA9MwqZv5POzHcaeeCKHE+yt6ptgc0Ltt2u1GJQRW5Q1DgR0mRSuo0aSxkYMb8TzGAw6Jfc5qxRMjJadFH3yjbBzC8Mh9cDrSskaScPIf11/psNXLo9+3pZG844MA8bZkD45q4XmoluvokFwA3xiZrnJTokgUz+rWEVK4DD1Fk6QwqRz6G0+UR4d0IEzG50e1GHcuRQjoeJwDa0S3XJjr5J+T2d85nZgUO+dibOUc7ugWeqZxattBArPyx0IvNJuypEWQ6RXviZGbN54s3PzS06QGA/tVx7JSPi4Dg0oAW4ZqmnE04nNX/rpnS5XbMd5w4B6k5xcdrIOvZrU8qvo/GI/vh7hN/Bdyg99o74zQWxqjDS/O+1W/42214bWBZsz+u/6q4XYorT457YE88Nzr5gLTHq968J3ZDKLboZxBaGMvm1tx+eCCEMwCTgwOH4u/gygTuhoMEmGVPTwWEjxick3dBpCwW9D9dy1TyrtM+cJmJUFvcxwX+lnNOmJoal4QghU9km3cXBUXCAaKYvgxJKuPtUHZId84vkuBMNpgHZQKZHPzEX0yVKkm4dpEsD/lmCKz7R7FlyGHynxH58ruUO49Ont3uT04k9NKNDa2bUzkjBYrlNdupYPuDGYyNuSwO5P0X/caGXTz/uHJQEj8Ge4f8I/dR3uCW+uq69yY/0xva757G7itt2oT5VwcZ6QzId63zM7WfpG/dXPvuQ+4w+oznZBQ4xoplZaVRQdW7V5QDUfvDI96Bb8TLqeMGq0xfxtLIQmGOQnb9N978jU5+Xywq7gho+8TDyQlzfVWK1P7ddZ+l4XiZv+D8/W2CJ5+aaccJvgL7tkv8mIMOSP04sg+jUlA3Oipkj13O57eHg8pJ0rp82Z8eQKXzXGfPpnB+Z5eeKs0VrnFz4o4QG5eP3JYqpP67xEud+hwU2l7UD7Kk9U9yssdWHer+pnfvGqxmesPql0hH0q3J5P6Ojh56Cd03461eNu0Nup4+xVXdyy3X3HZ4fVnimfYa7ZhtHIZX+JMmgRzgsXbA+lMaAOdG7yDW6fhnl2sv2PhYXNz8GKUu6PbwaFoLQpX6F8Uneded5d35J57BOrpqL9evdF3dFuRg/UX1Wwmdi/uk6zU1zZqrG3Ccah97J8tqDwrD0tZrIbFRx7lgwNQGr23tM5jmVoGy3vQj/h6qnPYzrHDXiIo7RyBHy8y1AIfz4MyI7uZ05lhpfO5zsc5DT6PPbzrUOk98TRAzHWRf/qN6qJasiXB0g6cCHpld9Uyf0iIaIW1GFKDIxzelib77qGf+ujAv27p4RGf+WV5N3v3iDmBqnpianJbVV7dnX6gjjWipflnxMj93AkZrpoQWFfcTL3zYXWh88Ozf4R2H1j/+C492f2GnljmI7sDq1s/NULe0fnewKu8Bd2004DxOpuBfdT6OcpccZSG7bRZyhwsZdHGUl4qlnJjVucpL5s85aWk/7oz9aBro3vlkLqWMyxzilrObpkzvvXNNev3+jduP6STdqCLZ7tD/rXm/LnWrbWT4MB/EoA1NnROJSbu8WBamVw6srlGtu2zz8gFLdrmOhlO4q6K6pXhLy1gDm3i3HNDSSgGNbKJYiWKYmXHLDPsQSXrRK9pp2XNwm75tOxdO0Csrm639pwddlvyR/B+fFwu36hcvmjVoWmtZf3sOTPod8sH5NpVuUenVeOah6dztV+LJXKPMjHYHgjZPMgGPgTH+nvPN5enaqK0LUSAkLSG3dVdwMLjJQOdlBeAVuQF0qZA3pT+AnkTdD7xIG92xn5eYSCnkDf9Xxl5kxbkleyaoWRt4ow+MF+Q4ea6WuJ+6Tfmq20eaMYidvDSCjEAhPYhcoctUz5zr1+E38OdfnAOFG2SWUGcwsod0sTW9VEn0aiT+uciObsvW8d4lnBH/q9i7f534+w2/ldk7fw8XBvL187bEDK2sjdwpsNx2IjYcP38MWREhvqLpeQC6MwXNzdXAXK7ACAZKvrIFWa6D6YFVCrLFtx4VL4R6D3cQpVpC68ky5omVjEe+ofLifLmJl+ulWNgGFTjY3eoPnbVxx5YH+XthU+sq+mHJC0WsegPhrt7+wcPHz1+8v3J02fP//bDi3/51x9f/vTq9c9vTt/+8vdf//Fv/1NEzoB1SPsTDJnE28YkjFm2vkxIBJWUAUehk4/5T20GOjFhB53OvMv+sntw5goR1PIni+KNcnfw+iLvmMaMCRm19vAoU9H1SLro1Kd9JOwehGemvbTrHwHWtL3Z6bzRrBrmo6NEje9LiXMAyCln94hu5hj5ki5RdzNvd2ih3OiJFt8kzcdz6m/5wdpq8/L7bXJuKY25XE8ZJU2OXZaMjmO78jiPatXTqWo1EI8NglqbEB/J5sB87eJrqL4e7vJPzthHxl4INz6I+LYnM228EA+i4YFeT4Byc/CPlBmnliZN0qfy/grkP0Y1j2QRjvBjn34oxVL3uf+CJIRvJ+dkNff0Yn75Mpl2HgzspWfY7Goyt5TpnAlP4vqU57E96e5Uh1En2XxEDlPoQRv+T2nuc7s97b+XqNlpOSrsftIN78AnyST7FTS6E26T89VwZ9gV00+iemAnGjPcDXtkdk/N/qCOgO0OkYD3pDdDQrKiGB8Phgej/V12UkKNDA/CnmZK2Ipid1jl7XnyKH13EPb4fPG1lzZaPCBpHHcUo3pazC9F+E7QGaLtMsVZnG2nfgh1JBGA3ZCagnoru0PTCqsP7z90wGkALVU3YYlXsyruqBFTmdJC/TMVEmykTigXdzIa88+6bncyaIWk26x5hKEqeMS+fH6VKUHCUUsfqIeTqyvR3oToL69fOA6HKp0Svp3xvska936ZyoFVjB0Ary7l0FQoxkGjDmorhgCZt0whjBs74zFKhWr9PDdKlUUMmaaV1kNUmb8pEn1FzC9Uy+al3+HeD5M5h1+gWj8WaTKdasWFkf4rc63ShrREfiB4FZ787i1cIQIGAmKMOIaQvFlk6tNyfrWYIPyPDpIhL+aTJsCL01cG4Fb+kMzyj8mM/Pbg0jqZYTOOe9Qxehwknu785iJXerOdBmDv5MXL3074LJmdqgKvSQ+d1rjq+uurZEF09vpvv7x46nqFgyZq0VVTfemJNtYRffrn0o0zFvbmSkKwPbSANhQQT4gX4LIMMrYMgIMquSDRmG43cd7UBqxpNY6N6qAdBHnn38c751J71gxlCl8evX8SUgrmixDORtlHqMCkMULJjMSrfxVyrz8YiSc3iw80zTqAeKAAkfVoJODbbHKzMGkHAP/19OWTnwKynJ9Tl6qc4UhU+ljKPVPww9u3rwOzPgG/YgF0F6DFp6m6gDJUQU98JShg9powUxp4BXNrq47PZuBSK2MnVpjXBg1fvxq7BbghYvaD3gxoEpT682NWgq4db1IX7iHKTw8utcnbmhps/PjxY1nFhELgG+T9fEPMPC0q5SrF3D3pzjrd4o8bKSOhPiGTSUN5PlFWBRInVthju9S+JKpOIc3JBxcQxjB73HmLDJ1PLp7T29GSpxyqPVN3YUeVmTwsIojWbp9wcZZVkdKTMCxT4wS8ye7AXLKHj9VdwWnd767j61dqjNJ1IRTnipipOpCDfunQe4CvofnapY+++RgO8HWUWtEswKL2DY9KIGJKdFQmqgRzqjguzieUGka5iroo6g4T6NxAgWPxXZJmSTGAxspqYJjIKshbK1AJMZia43HmZUqylDl8x4Gu8hRx73OlJPnLmxcgapMxy/DcIHK48BDL8fjxcIR/d2VRJe2ppP1ocJhU6vW5HVRycIZ3Qzu7sLOHZyUufcEpMUoge1Fhr3I5I+n1bFTY0Qbz/MeLsd5fXEwcJn43FWxInF5ZziLgAgmGzJuEGdfzCFYEXQGdJtFogvSK8gskJFcGlTXKJ8d2L0ZpVdSWg35Je9NZgY+nxfvk5opMauspHWgdwOrmNZkyJ+cJh/huJBGYphUDs6LczVfqeDW9Y2Qr/QVmSr1ZewzpCL6ZK6fmsAKIM0uM9zOWnOrr5KEzDU9ZHvyHtZNXEuaBv1Hj80oTUbWPH5WB70MzDZF1DwaCAiPlWO3JsRJI6Eco90Y8DqODvcNLIrSDo8vjLB6MHh/gk27n9J3Q995DfO8/os+cPot4YC6J8NfVTUieUVhLcI3IfFVfNaht0ZKqcHXkYYG+mrHvOrbK8QmCHRvbwR7rZfQ49l9XQH2yk3pj3zmxan8TUiAkGOjaiNCl7GoV8b9T7ps/UeXR9WZg1B+Frz/D/6IOVZ3YcHvxbEwRNlyC4qppDlCUKYUbXT2rxgNOTtVm01Z70hVyXuhADYQY7y7O2EG51YcLieTqbE2q+O22/VGZmDZ7PMHcjOMhd7mTHqdG+VHNrb0EZVR5d+yQbPrctGypGdiqk1JHSw9aZt4mhkw87t+Kso531q4RgD9dVrty3zlj+HRhWtMVVK3N7BrnnfcJCSnDCH3yjJQ6hRuzW0ZZCR4LEDpL99SelJeTWW0nbq0+wSBqvqaCnz59GpTdBbdhEoXUnbUSh0LCVVJ4tPndp+H+9yeRahvHnfH1ZAB181o0oTzSHSkjqg+zoy1r0lEemHeXnnt6O/T1duD2dhgFPxJ5LBWOqR8Vl1eUdul8Ns0dASlsMBM+F+BYlyGMrDQ/LJTUMKmyoN6b9MxDFMmQtD9VPrjK7Zg5HTCxJnn3NEOxINiHFZAyLjn+ADmmTpwUbrV0ozSbpRR2WpXmeGyP46SqLHcqsxarvMZah5MTYko+Crt2wp48cBNIfcNN6Eu+QzqJg74cDF24R8QmewD35KDWwmAoB3seyAM59FRAac5k/TK7ogc5R3AsefXpSCAh8McepAeA7n2gbaovud6sMnDWscCt23DAm8wBR3nJwCrkSTmCQVkoFiFsVFXsAuQ4U5aGZ3EtMe0OJJIMY2PhWLV+jnTSLCB3nlomuYnKOm6kjErezPzQ3NnmZltOj7Yo/VHFFbeyDuDxSiCnM+eFyZ9//5nkuBy8OCWWRoTE89uFGpPAsj//LHDecTPp/vPA5deZCN34WlB3nQouVSG8E4/VOrO3PI+UfZ/1k/MkOXQcjbLslWi+5TuV3+4y1kOvXmaZFXL9Om14O/nT5C0qc/iLP66vYr2u6Z457pLtHiHgtrqUlVeFr1/db/XEt/fosAZGF4WHR7W0W1j4w10GCbwPd3Qk1f8/QOQuo6dzCwA="; - if (settings.localport == null) { settings.localport = 3000; } // Start the web server @@ -771,8 +779,8 @@ function startMeshCommander() { rsp.writeHead(200, 'OK', { Server: 'JSLMS', 'Cache-Control': 'max-age=0, no-cache', 'X-Frame-Options': 'DENY', 'Content-Type': 'text/html', 'Transfer-Encoding': 'chunked' }); rsp.end(meshcommander); } else { - rsp.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: _IntelAmtLocalWebApp_etag }); - rsp.end(Buffer.from(_IntelAmtLocalWebApp, 'base64')); + rsp.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: FullSite_IntelAmtLocalWebApp_etag }); + rsp.end(Buffer.from(FullSite_IntelAmtLocalWebApp, 'base64')); } break; default: // Unknown request @@ -1369,9 +1377,6 @@ function startLms(func, lmscommander) { } function startMeshCommanderLms() { - // 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); @@ -1421,7 +1426,7 @@ function startMeshCommanderLms() { rsp.end(lmscommander); } else { rsp.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: _IntelAmtWebApp_etag }); - rsp.end(Buffer.from(_IntelAmtWebApp, 'base64')); + rsp.end(Buffer.from(_IntelAmtWebApp, "base64")); } break; default: // Unknown request diff --git a/meshctrl.js b/meshctrl.js index 0b5f8f74..5f500963 100644 --- a/meshctrl.js +++ b/meshctrl.js @@ -3,7 +3,7 @@ const crypto = require('crypto'); var settings = {}; const args = require('minimist')(process.argv.slice(2)); -const possibleCommands = ['listusers', 'listdevicegroups', 'serverinfo', 'userinfo', 'adduser', 'removeuser', 'adddevicegroup', 'removedevicegroup', 'broadcast', 'addusertodevicegroup', 'removeuserfromdevicegroup']; +const possibleCommands = ['listusers', 'listdevicegroups', 'listdevices', 'listusersofdevicegroup', 'serverinfo', 'userinfo', 'adduser', 'removeuser', 'adddevicegroup', 'removedevicegroup', 'broadcast', 'addusertodevicegroup', 'removeuserfromdevicegroup', 'sendinviteemail']; //console.log(args); if (args['_'].length == 0) { @@ -11,26 +11,29 @@ if (args['_'].length == 0) { console.log("Information at: https://meshcommander.com/meshcentral"); console.log("No action specified, use MeshCtrl like this:\r\n\r\n meshctrl [action] [arguments]\r\n"); console.log("Supported actions:"); - console.log(" Help [action] - Get help on an action."); - console.log(" ServerInfo - Show server information."); - console.log(" UserInfo - Show user information."); - console.log(" ListUsers - List user accounts."); - console.log(" ListDeviceGroups - List device groups."); - console.log(" AddUser - Create a new user account."); - console.log(" RemoveUser - Delete a user account."); - console.log(" AddDeviceGroup - Create a new device group."); - console.log(" RemoveDeviceGroup - Delete a device group."); - console.log(" AddUserToDeviceGroup - Add a user to a device group."); - console.log(" RemoveUserFromDeviceGroup - Remove a user from a device group."); - console.log(" Broadcast - Display a message to all online users."); + console.log(" Help [action] - Get help on an action."); + console.log(" ServerInfo - Show server information."); + console.log(" UserInfo - Show user information."); + console.log(" ListUsers - List user accounts."); + console.log(" ListDevices - List devices."); + console.log(" ListDeviceGroups - List device groups."); + console.log(" ListUsersOfDeviceGroup - List the users in a device group."); + console.log(" AddUser - Create a new user account."); + console.log(" RemoveUser - Delete a user account."); + console.log(" AddDeviceGroup - Create a new device group."); + console.log(" RemoveDeviceGroup - Delete a device group."); + console.log(" AddUserToDeviceGroup - Add a user to a device group."); + console.log(" RemoveUserFromDeviceGroup - Remove a user from a device group."); + console.log(" SendInviteEmail - Send an agent install invitation email."); + console.log(" Broadcast - Display a message to all online users."); console.log("\r\nSupported login arguments:"); - console.log(" --url [wss://server] - Server url, wss://localhost:443 is default."); - console.log(" --loginuser [username] - Login username, admin is default."); - console.log(" --loginpass [password] - Login password."); - console.log(" --token [number] - 2nd factor authentication token."); - console.log(" --loginkey [hex] - Server login key in hex."); - console.log(" --loginkeyfile [file] - File containing server login key in hex."); - console.log(" --domain [domainid] - Domain id, default is empty."); + console.log(" --url [wss://server] - Server url, wss://localhost:443 is default."); + console.log(" --loginuser [username] - Login username, admin is default."); + console.log(" --loginpass [password] - Login password."); + console.log(" --token [number] - 2nd factor authentication token."); + console.log(" --loginkey [hex] - Server login key in hex."); + console.log(" --loginkeyfile [file] - File containing server login key in hex."); + console.log(" --domain [domainid] - Domain id, default is empty."); return; } else { settings.cmd = args['_'][0].toLowerCase(); @@ -43,6 +46,12 @@ if (args['_'].length == 0) { case 'userinfo': { ok = true; break; } case 'listusers': { ok = true; break; } case 'listdevicegroups': { ok = true; break; } + case 'listdevices': { ok = true; break; } + case 'listusersofdevicegroup': { + if (args.id == null) { console.log("Missing group id, use --id [groupid]"); } + else { ok = true; } + break; + } case 'addusertodevicegroup': { if (args.userid == null) { console.log("Add user to group missing useid, use --userid [userid]"); } else if (args.id == null) { console.log("Add user to group missing group id, use --id [groupid]"); } @@ -81,11 +90,25 @@ if (args['_'].length == 0) { else { ok = true; } break; } + case 'sendinviteemail': { + if (args.id == null) { console.log("Device group identifier id missing, use --id [groupid]"); } + else if (args.email == null) { console.log("Device email is missing, use --email [email]"); } + else { ok = true; } + break; + } case 'help': { if (args['_'].length < 2) { console.log("Get help on an action. Type:\r\n\r\n help [action]\r\n\r\nPossible actions are: " + possibleCommands.join(', ') + '.'); } else { switch (args['_'][1].toLowerCase()) { + case 'sendinviteemail': { + console.log("Send invitation email with instructions on how to install the mesh agent for a specific device group. Example usage:\r\n"); + console.log(" MeshCtrl SendInviteEmail --id devicegroupid --email user@sample.com"); + console.log("\r\nRequired arguments:\r\n"); + console.log(" --id [groupid] - Device group identifier."); + console.log(" --email [email] - Email address."); + break; + } case 'serverinfo': { console.log("Get information on the MeshCentral server, Example usages:\r\n"); console.log(" MeshCtrl ServerInfo --loginuser myaccountname --loginpass mypassword"); @@ -124,6 +147,25 @@ if (args['_'].length == 0) { console.log(" --json - Show result as JSON."); break; } + case 'listdevices': { + console.log("List devices, Example usages:\r\n"); + console.log(" MeshCtrl ListDevices"); + console.log(" MeshCtrl ListDevices -id [groupid] --json"); + console.log("\r\nOptional arguments:\r\n"); + console.log(" --id [groupid] - Filter by device group identifier."); + console.log(" --count - Only return the device count."); + console.log(" --json - Show result as JSON."); + break; + } + case 'listusersofdevicegroup': { + console.log("List users that have permissions for a given device group, Example usage:\r\n"); + console.log(" MeshCtrl ListUserOfDeviceGroup "); + console.log("\r\nRequired arguments:\r\n"); + console.log(" --id [groupid] - Device group identifier."); + console.log("\r\nOptional arguments:\r\n"); + console.log(" --json - Show result as JSON."); + break; + } case 'adduser': { console.log("Add a new user account, Example usages:\r\n"); console.log(" MeshCtrl AddUser --user newaccountname --pass newpassword"); @@ -280,6 +322,15 @@ function serverConnect() { case 'userinfo': { break; } case 'listusers': { ws.send(JSON.stringify({ action: 'users' })); break; } case 'listdevicegroups': { ws.send(JSON.stringify({ action: 'meshes' })); break; } + case 'listusersofdevicegroup': { ws.send(JSON.stringify({ action: 'meshes' })); break; } + case 'listdevices': { + if (args.id) { + ws.send(JSON.stringify({ action: 'nodes', meshid: args.id, responseid: 'meshctrl' })); break; + } else { + ws.send(JSON.stringify({ action: 'meshes' })); + ws.send(JSON.stringify({ action: 'nodes', responseid: 'meshctrl' })); break; + } + } case 'adduser': { var siteadmin = 0; if (args.siteadmin) { siteadmin = 0xFFFFFFFF; } @@ -339,6 +390,11 @@ function serverConnect() { ws.send(JSON.stringify(op)); break; } + case 'sendinviteemail': { + var op = { action: "inviteAgent", meshid: args.id, email: args.email, name: "", os: "0", responseid: 'meshctrl' } + ws.send(JSON.stringify(op)); + break; + } case 'broadcast': { var op = { action: 'userbroadcast', msg: args.msg, responseid: 'meshctrl' }; ws.send(JSON.stringify(op)); @@ -383,6 +439,7 @@ function serverConnect() { case 'deletemesh': // REMOVEDEVICEGROUP case 'addmeshuser': // case 'removemeshuser': // + case 'inviteAgent': case 'userbroadcast': { // BROADCAST if (data.responseid == 'meshctrl') { if (data.meshid) { console.log(data.result, data.meshid); } @@ -410,21 +467,95 @@ function serverConnect() { process.exit(); break; } + case 'nodes': { + if ((settings.cmd == 'listdevices') && (data.responseid == 'meshctrl')) { + if ((data.result != null) && (data.result != 'ok')) { + console.log(data.result); + } else { + if (args.count) { + // Return how many devices are in this group + var nodes = []; + for (var i in data.nodes) { var devicesInMesh = data.nodes[i]; for (var j in devicesInMesh) { nodes.push(devicesInMesh[j]); } } + console.log(nodes.length); + } else if (args.json) { + // Return all devices in JSON format + var nodes = []; + for (var i in data.nodes) { var devicesInMesh = data.nodes[i]; for (var j in devicesInMesh) { nodes.push(devicesInMesh[j]); } } + console.log(JSON.stringify(nodes, ' ', 2)); + } else { + // Display the list of nodes in text format + for (var i in data.nodes) { + var devicesInMesh = data.nodes[i]; + if (settings.xmeshes) { console.log('\r\nDevice group: \"' + settings.xmeshes[i].name + '\"'); } + console.log('id, name, icon, conn, pwr, ip\r\n-----------------------------'); + for (var j in devicesInMesh) { + var n = devicesInMesh[j]; + console.log(n._id.split('/')[2] + ', \"' + n.name + '\", ' + (n.icon ? n.icon : 0) + ', ' + (n.conn ? n.conn : 0) + ', ' + (n.pwr ? n.pwr : 0)); + } + } + } + } + process.exit(); + } + break; + } case 'meshes': { // LISTDEVICEGROUPS - if (args.json) { - console.log(JSON.stringify(data.meshes, ' ', 2)); - } else { - if (args.idexists) { for (var i in data.meshes) { const u = data.meshes[i]; if ((u._id == args.idexists) || (u._id.split('/')[2] == args.idexists)) { console.log('1'); process.exit(); return; } } console.log('0'); process.exit(); return; } - if (args.nameexists) { for (var i in data.meshes) { const u = data.meshes[i]; if (u.name == args.nameexists) { console.log(u._id); process.exit(); return; } } process.exit(); return; } + if (settings.cmd == 'listdevices') { + // Store the list of device groups for later use + settings.xmeshes = {} + for (var i in data.meshes) { settings.xmeshes[data.meshes[i]._id] = data.meshes[i]; } + } else if (settings.cmd == 'listdevicegroups') { + if (args.json) { + console.log(JSON.stringify(data.meshes, ' ', 2)); + } else { + if (args.idexists) { for (var i in data.meshes) { const u = data.meshes[i]; if ((u._id == args.idexists) || (u._id.split('/')[2] == args.idexists)) { console.log('1'); process.exit(); return; } } console.log('0'); process.exit(); return; } + if (args.nameexists) { for (var i in data.meshes) { const u = data.meshes[i]; if (u.name == args.nameexists) { console.log(u._id); process.exit(); return; } } process.exit(); return; } - console.log('id, name\r\n---------------'); + console.log('id, name\r\n---------------'); + for (var i in data.meshes) { + const m = data.meshes[i]; + var t = "\"" + m._id.split('/')[2] + "\", \"" + m.name + "\""; + console.log(t); + } + } + process.exit(); + } else if (settings.cmd == 'listusersofdevicegroup') { for (var i in data.meshes) { const m = data.meshes[i]; - var t = "\"" + m._id.split('/')[2] + "\", \"" + m.name + "\""; - console.log(t); + var mid = m._id.split('/')[2]; + if (mid == args.id) { + if (args.json) { + console.log(JSON.stringify(m.links, ' ', 2)); + } else { + console.log('userid, rights\r\n---------------'); + for (var l in m.links) { + var rights = m.links[l].rights; + var rightsstr = []; + if (rights == 4294967295) { rightsstr = ['FullAdministrator']; } else { + if (rights & 1) { rightsstr.push('EditMesh'); } + if (rights & 2) { rightsstr.push('ManageUsers'); } + if (rights & 4) { rightsstr.push('ManageComputers'); } + if (rights & 8) { rightsstr.push('RemoteControl'); } + if (rights & 16) { rightsstr.push('AgentConsole'); } + if (rights & 32) { rightsstr.push('ServerFiles'); } + if (rights & 64) { rightsstr.push('WakeDevice'); } + if (rights & 128) { rightsstr.push('SetNotes'); } + if (rights & 256) { rightsstr.push('RemoteViewOnly'); } + if (rights & 512) { rightsstr.push('NoTerminal'); } + if (rights & 1024) { rightsstr.push('NoFiles'); } + if (rights & 2048) { rightsstr.push('NoAMT'); } + if (rights & 4096) { rightsstr.push('DesktopLimitedInput'); } + } + console.log(l.split('/')[2] + ', ' + rightsstr.join(', ')); + } + } + process.exit(); + return; + } } + console.log('Group id not found'); + process.exit(); } - process.exit(); break; } case 'close': { diff --git a/meshuser.js b/meshuser.js index c7f0b6cd..3457d85e 100644 --- a/meshuser.js +++ b/meshuser.js @@ -378,16 +378,25 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use } case 'nodes': { - var links = []; - if (command.meshid == null) { - // Request a list of all meshes this user as rights to - for (i in user.links) { links.push(i); } - } else { - // Request list of all nodes for one specific meshid - meshid = command.meshid; - if (common.validateString(meshid, 0, 128) == false) return; - if (meshid.split('/').length == 0) { meshid = 'mesh/' + domain.id + '/' + command.meshid; } - if (user.links[meshid] != null) { links.push(meshid); } + var links = [], err = null; + try { + if (command.meshid == null) { + // Request a list of all meshes this user as rights to + for (i in user.links) { links.push(i); } + } else { + // Request list of all nodes for one specific meshid + meshid = command.meshid; + if (common.validateString(meshid, 0, 128) == false) { err = 'Invalid group id'; } else { + if (meshid.split('/').length == 1) { meshid = 'mesh/' + domain.id + '/' + command.meshid; } + if (user.links[meshid] != null) { links.push(meshid); } else { err = 'Invalid group id'; } + } + } + } catch (ex) { err = 'Validation exception: ' + ex; } + + // Handle any errors + if (err != null) { + if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'nodes', responseid: command.responseid, result: err })); } catch (ex) { } } + break; } // Request a list of all nodes @@ -429,7 +438,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use r[meshid].push(docs[i]); } - try { ws.send(JSON.stringify({ action: 'nodes', nodes: r, tag: command.tag })); } catch (ex) { } + try { ws.send(JSON.stringify({ action: 'nodes', responseid: command.responseid, nodes: r, tag: command.tag })); } catch (ex) { } }); break; } @@ -2222,22 +2231,37 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use } case 'inviteAgent': { - if ((parent.parent.mailserver == null) || (args.lanonly == true)) return; // This operation requires the email server - if ((parent.parent.certificates.CommonName == null) || (parent.parent.certificates.CommonName.indexOf('.') == -1)) return; // Server name must be configured - if (common.validateString(command.meshid, 1, 1024) == false) break; // Check meshid - if ((command.meshid.split('/').length != 3) || (command.meshid.split('/')[1] != domain.id)) return; // Invalid domain, operation only valid for current domain + var err = null, mesh = null; + try + { + if ((parent.parent.mailserver == null) || (args.lanonly == true)) { err = 'Unsupported feature'; } // This operation requires the email server + else if ((parent.parent.certificates.CommonName == null) || (parent.parent.certificates.CommonName.indexOf('.') == -1)) { err = 'Unsupported feature'; } // Server name must be configured + else if (common.validateString(command.meshid, 1, 1024) == false) { err = 'Invalid group identifier'; } // Check meshid + else { + if (command.meshid.split('/').length == 1) { command.meshid = 'mesh/' + domain.id + '/' + command.meshid; } + if ((command.meshid.split('/').length != 3) || (command.meshid.split('/')[1] != domain.id)) { err = 'Invalid group identifier'; } // Invalid domain, operation only valid for current domain + else if (common.validateString(command.email, 4, 1024) == false) { err = 'Invalid email'; } // Check email + else if (command.email.split('@').length != 2) { err = 'Invalid email'; } // Check email + else { + mesh = parent.meshes[command.meshid]; + if (mesh == null) { err = 'Unknown device group'; } // Check if the group exists + else if (mesh.mtype != 2) { err = 'Invalid group type'; } // Check if this is the correct group type + else if (mesh.links[user._id] == null) { err = 'Not allowed'; } // Check if this user has rights to do this + } + } + } catch (ex) { err = 'Validation exception: ' + ex; } - // Get the mesh - mesh = parent.meshes[command.meshid]; - if (mesh) { - if (mesh.mtype != 2) return; // This operation is only allowed for mesh type 2, agent mesh - - // Check if this user has rights to do this - //if (mesh.links[user._id] == null || ((mesh.links[user._id].rights & 4) == 0)) return; - - // Perform email invitation - parent.parent.mailserver.sendAgentInviteMail(domain, user.name, command.email, command.meshid, command.name, command.os, command.msg, command.flags, command.expire); + // Handle any errors + if (err != null) { + if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'inviteAgent', responseid: command.responseid, result: err })); } catch (ex) { } } + break; } + + // Perform email invitation + parent.parent.mailserver.sendAgentInviteMail(domain, user.name, command.email, command.meshid, command.name, command.os, command.msg, command.flags, command.expire); + + // Send a response if needed + if (command.responseid != null) { try { ws.send(JSON.stringify({ action: 'inviteAgent', responseid: command.responseid, result: 'ok' })); } catch (ex) { } } break; } case 'setNotes': diff --git a/package.json b/package.json index 95dfe74b..a7fb3e95 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "meshcentral", - "version": "0.3.7-e", + "version": "0.3.7-f", "keywords": [ "Remote Management", "Intel AMT", diff --git a/public/styles/style.css b/public/styles/style.css index fd44482b..98dfc517 100644 --- a/public/styles/style.css +++ b/public/styles/style.css @@ -156,6 +156,7 @@ body { -ms-grid-column: 1; -ms-grid-row: 2; -ms-grid-row-span: 3; + height: 100%; /* height: calc(100vh - 66px); */ width: 90px; z-index: 1000; diff --git a/views/messenger-min.handlebars b/views/messenger-min.handlebars index 133bcf1d..2ad010dc 100644 --- a/views/messenger-min.handlebars +++ b/views/messenger-min.handlebars @@ -1 +1 @@ - MeshMessenger
    MeshMessenger
    \ No newline at end of file + MeshMessenger
    MeshMessenger
    \ No newline at end of file
  • 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

    WAFIa9NDVM-?wwrtWMrnik{dEdZTx8 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 ttvv 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 diff --git a/agents/MeshCmd64-signed.exe b/agents/MeshCmd64-signed.exe index 28381079c906c9205b9372abafabd346f0834f0f..cf3893d0b07abf6f221fc7ceb247f2663c0dfe26 100644 GIT binary patch delta 668151 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